@fiddle-digital/string-tune 1.1.54 → 1.2.0

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 CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var _e=Object.defineProperty;var Dr=Object.getOwnPropertyDescriptor;var kr=Object.getOwnPropertyNames;var Ar=Object.prototype.hasOwnProperty;var Ir=(u,e)=>{for(var t in e)_e(u,t,{get:e[t],enumerable:!0})},Rr=(u,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of kr(e))!Ar.call(u,i)&&i!==t&&_e(u,i,{get:()=>e[i],enumerable:!(r=Dr(e,i))||r.enumerable});return u};var Fr=u=>Rr(_e({},"__esModule",{value:!0}),u);var di={};Ir(di,{CursorReactiveModule:()=>ct,DOMBatcher:()=>at,GridAdapter:()=>Ne,ScrollController:()=>$,StringAnchor:()=>oe,StringCursor:()=>Kt,StringData:()=>ht,StringDelayLerpTracker:()=>fe,StringFPSTracker:()=>ve,StringForm:()=>we,StringGlide:()=>ae,StringImpulse:()=>Qt,StringLazy:()=>re,StringLerp:()=>le,StringLerpTracker:()=>be,StringLoading:()=>ie,StringMagnetic:()=>te,StringMasonry:()=>Jt,StringModule:()=>M,StringObject:()=>ot,StringParallax:()=>ce,StringPositionTracker:()=>ye,StringProgress:()=>dt,StringProgressPart:()=>Re,StringRandom:()=>Fe,StringResponsive:()=>se,StringScrollContainer:()=>Ie,StringScrollbar:()=>pe,StringScroller:()=>Ae,StringSequence:()=>Ee,StringSplit:()=>ge,StringSpotlight:()=>ee,StringTune:()=>Ge,StringVideoAutoplay:()=>xe,buildDevtoolsThemeBlock:()=>Ot,default:()=>Ge,ensureStringDevtoolsSharedStyles:()=>Oe,frameDOM:()=>_,resolveDevtoolsIcon:()=>Lr,styleTxn:()=>x});module.exports=Fr(di);var kt=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 st=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={}}};var At=class{constructor(e){this.data=e;this.modules=[];this.uiModules=[];this.allModules=[]}register(e){if(e.type===1?this.modules.push(e):e.type===2&&this.uiModules.push(e),e.cssProperties&&e.cssProperties.length>0&&typeof window.CSS<"u"&&"registerProperty"in window.CSS)for(let t=0;t<e.cssProperties.length;t++)try{window.CSS.registerProperty(e.cssProperties[t])}catch{}e.onSubscribe(),this.rebuildAllModules()}find(e){for(let t=0;t<this.modules.length;t++){let r=this.modules[t];if(r instanceof e)return r}}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.modules.length>0&&this.callLifecycleStrict(this.modules,e,t,r),this.uiModules.length>0&&this.callLifecycleStrict(this.uiModules,e,t,r)}callLifecycleStrict(e,t,r,i){let n=e.length;switch(t){case"onFrame":case"onMutate":case"onScrollMeasure":case"onMouseMoveMeasure":case"onScroll":for(let s=0;s<n;s++){let o=e[s];o&&o[t](this.data)}break;case"onDOMMutate":for(let s=0;s<n;s++){let o=e[s];o&&o[t](r,i)}break;case"onMouseMove":case"onWheel":for(let s=0;s<n;s++){let o=e[s];o&&o[t](r)}break;default:for(let s=0;s<n;s++){let o=e[s];o&&o[t]()}break}}rebuildAllModules(){this.allModules.length=0;for(let e=0;e<this.modules.length;e++)this.allModules.push(this.modules[e]);for(let e=0;e<this.uiModules.length;e++)this.allModules.push(this.uiModules[e])}};var It=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 ot=class{constructor(e,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 st;this.htmlElement=t,this.id=e,this.eventProgressName=this.getScopedEventName("object:progress")}getScopedEventName(e,t){if(t==null){let s=this.eventNameCache.get(e);if(s)return s;let o=`${e}:${this.id}`;return this.eventNameCache.set(e,o),o}let r=this.eventNameSuffixCache.get(e);r||(r=new Map,this.eventNameSuffixCache.set(e,r));let i=r.get(t);if(i)return i;let n=`${e}:${this.id}:${t}`;return r.set(t,n),n}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)})}setInviewAutoBlocked(e){this.setProperty("inview-auto-blocked",e)}isInviewAutoBlocked(){return this.getProperty("inview-auto-blocked")===!0}syncInviewClass(){if(this.isInviewAutoBlocked()){this.htmlElement.classList.remove("-inview");return}if(this.getProperty("is-inview")===!0){this.htmlElement.classList.add("-inview");return}this.getProperty("repeat")&&this.htmlElement.classList.remove("-inview")}show(){this.isInviewAutoBlocked()||this.htmlElement.classList.add("-inview")}hide(){if(this.isInviewAutoBlocked()){this.htmlElement.classList.remove("-inview");return}this.getProperty("repeat")&&this.htmlElement.classList.remove("-inview")}connect(e){return this.modules.includes(e)?!1:(this.modules.push(e),!0)}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 at=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 Rt=class{constructor(){this.desktop={rebuild:{width:!0,height:!0,scrollHeight:!0}};this.mobile={rebuild:{width:!0,height:!0,scrollHeight:!0}}}};var M=class{constructor(e){this.cssProperties=[];this.objectMapOnPage=new Map;this.objectsOnPage=[];this.objectMap=new Map;this.objects=[];this.htmlKey="";this._type=1;this.permissions=new Rt;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.elementContainer.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 c=typeof a=="function"?a(r,t,n):a,d=i[s]??i[`string-${s}`]??i[`data-string-${s}`],p=this.tools.domAttribute.process({element:r,key:s,fallback:d??this.settings[s]??c}),h=this.parseAttribute(p,o,{element:r,boundingRect:n,viewportHeight:this.data.viewport.windowHeight,baseRem:this.data.viewport.baseRem});l&&(h=l(h)),t.setProperty(s,h)}this.cacheLayoutSnapshot(t,r)}cacheLayoutSnapshot(e,t){let r=this.data.scroll.container??document.body??document.documentElement,i=this.data.scroll.elementContainer??document.documentElement,n=this.tools.transformNullify.process({element:t}),s=window.getComputedStyle(t),o=this.getOffsetSize(t,s),a=0,l=0,c=n.width,d=n.height;if((!Number.isFinite(c)||c<=0)&&(c=o.width),(!Number.isFinite(d)||d<=0)&&(d=o.height),Number.isFinite(n.left)&&Number.isFinite(n.top)&&n.width>0&&n.height>0)if(r===document.body||r===document.documentElement)a=n.left+i.scrollLeft,l=n.top+i.scrollTop;else{let p=r.getBoundingClientRect();a=n.left-p.left+r.scrollLeft,l=n.top-p.top+r.scrollTop}else{let p=this.getOffsetChainPosition(t);if(r===document.body||r===document.documentElement)a=p.left,l=p.top;else{let h=this.getOffsetChainPosition(r);a=p.left-h.left+r.scrollLeft,l=p.top-h.top+r.scrollTop}}e.setProperty("layout-doc-left",a),e.setProperty("layout-doc-top",l),e.setProperty("layout-width",c),e.setProperty("layout-height",d),e.setProperty("layout-border-radius",s.borderRadius||"0px")}getOffsetSize(e,t){let r=parseFloat(t.width),i=parseFloat(t.height);return{width:e.offsetWidth||e.clientWidth||(Number.isFinite(r)?r:0),height:e.offsetHeight||e.clientHeight||(Number.isFinite(i)?i:0)}}getOffsetChainPosition(e){let t=0,r=0,i=e;for(;i;)t+=i.offsetLeft||0,r+=i.offsetTop||0,i=i.offsetParent;return{left:t,top:r}}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"),c=e.getProperty("exit-vp"),d=0,p=0,h=0,v=0;o==="top"&&a==="top"||o==="left"&&a==="left"?(h=-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"?(h=-t-i+1,d=r+i-n):(o==="bottom"&&a==="bottom"||o==="right"&&a==="right")&&(h=-i+1,d=r-t+i-n),l==="top"&&c==="top"||l==="left"&&c==="left"?(v=-i+1,p=r+s):l==="top"&&c==="bottom"||l==="left"&&c==="right"?(v=-t-i+1,p=r-t+s):l==="bottom"&&c==="top"||l==="right"&&c==="left"?p=r+i+s:(l==="bottom"&&c==="bottom"||l==="right"&&c==="right")&&(v=-t+1,p=r-t+i+s),e.setProperty("start-bias",h),e.setProperty("end-bias",v),e.setProperty("start-position",d-this.data.scroll.topPosition),e.setProperty("end-position",p-this.data.scroll.topPosition),e.setProperty("difference-position",p-d);let m=e.getProperty("inview-top")??0,g=e.getProperty("inview-bottom")??0;e.setProperty("inview-start-position",e.getProperty("start-position")+m),e.setProperty("inview-end-position",e.getProperty("end-position")+g)}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))}applyVarToElement(e,t,r){e.getProperty("self-disable")!==!0&&this.tools.styleTxn.setVar(e.htmlElement,t,r)}applyPropToElement(e,t,r){e.getProperty("self-disable")!==!0&&this.tools.styleTxn.setProp(e.htmlElement,t,r)}applyVarToConnects(e,t,r){for(let i of e.mirrorObjects)this.tools.styleTxn.setVar(i.htmlElement,t,r)}applyPropToConnects(e,t,r){for(let i of e.mirrorObjects)this.tools.styleTxn.setProp(i.htmlElement,t,r)}getObjectEventName(e,t,r){return e.getScopedEventName(t,r)}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 Ft=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.connectableModulesBuffer=[];this.mirrors=new Map;this.mirrorId=1;this.globalId=1;this.domBatcher=new at;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(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 ot(t,e);e.setAttribute(r,i.id);let n=e.getAttribute("string")??e.getAttribute("data-string");n&&(i.keys=this.splitPipeAndTrim(n)),e.setAttribute("string-inited",""),this.objects.set(i.id,i);let s=this.getAllAttributes(e),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,e,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 M&&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:e,attributes:s,globalId:this.globalId,windowSize:this.data.viewport.windowHeight};this.domBatcher.batchModuleInitialization(c),this.domBatcher.scheduleWrite(()=>{this.initObservers(i,e),this.checkInviewForObject(i)})}else{for(let c=0;c<a.length;c++){let d=a[c];d.initializeObject(this.globalId,i,e,s),d.calculatePositions(i,this.data.viewport.windowHeight),d.connectObject(i),d.addObject(i.id,i)}this.initObservers(i,e),this.checkInviewForObject(i)}if(this.connectQueue.length>0){let c=0;for(let d=0;d<this.connectQueue.length;d++){let p=this.connectQueue[d];if(p.id===i.id){this.attachMirrorToObject(i,p.element);continue}this.connectQueue[c++]=p}this.connectQueue.length=c}a.length=0,this.inviewIndexDirty=!0}setDOMBatcherEnabled(e){this.domBatcherEnabled=e,e||this.domBatcher.flushSync()}setIntersectionObserverEnabled(e){if(this.intersectionObserverEnabled!==e){this.intersectionObserverEnabled=e;for(let t of this.objects.values())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);let n=e.querySelectorAll("[string-id],[data-string-id]");for(let s=0;s<n.length;s++)r(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 M&&c.canConnect(n)&&(c.initializeObject(this.globalId,n,s,o),c.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){let r=this.splitPipeAndTrim(e);for(let i=0;i<r.length;i++){let n=r[i];this.connectQueue.some(s=>s.id===n&&s.element===t)||this.connectQueue.push({id:n,element:t})}}linkMirror(e,t){let r=this.splitPipeAndTrim(e);for(let i=0;i<r.length;i++){let n=r[i],s=this.objects.get(n);s?this.attachMirrorToObject(s,t):this.enqueueConnection(n,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 It(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?this.splitPipeAndTrim(t):[]}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={},r=e.attributes;for(let i=0;i<r.length;i++){let n=r[i];t[n.name]=n.value}return 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=h=>{h.forEach(v=>{this.events.emit(e.getScopedEventName("object:activate"),v.isIntersecting),v.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",c=s!=null?s===!0:l,d=this.data.scroll.container===document.body||c?null:this.data.scroll.container,p=new IntersectionObserver(n,{root:d,rootMargin:`${i+this.data.viewport.windowHeight}px 0px ${r+this.data.viewport.windowHeight}px 0px`,threshold:0});p.observe(t),e.setProperty("observer-progress",p)}observeDOM(){this.domObserver?.disconnect();let e=new MutationObserver(t=>{let r=!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 p=0;p<c.length;p++){let h=c[p];this.isFixed(h)||this.handleRemoved(h)}let d=l.querySelectorAll("[string-copy-from],[data-string-copy-from]");for(let p=0;p<d.length;p++)this.detachMirrorByElement(d[p])}for(let o=0;o<n.addedNodes.length;o++){let a=n.addedNodes[o];if(a.nodeType!==Node.ELEMENT_NODE)continue;s=!0;let l=a;if(this.isFixed(l))continue;l.hasAttribute("string")&&!l.hasAttribute("string-inited")&&this.add(l);let c=l.querySelectorAll("[string]:not([string-inited]),[data-string]:not([string-inited])");for(let h=0;h<c.length;h++)this.add(c[h]);let d=l.getAttribute("string-copy-from")??l.getAttribute("data-string-copy-from");d&&this.linkMirror(d,l);let p=l.querySelectorAll("[string-copy-from],[data-string-copy-from]");for(let h=0;h<p.length;h++){let v=p[h],m=v.getAttribute("string-copy-from")??v.getAttribute("data-string-copy-from");m&&this.linkMirror(m,v)}}s&&(this.modules.onDOMMutate(n.addedNodes,n.removedNodes),r=!0)}}if(r){let i=this.modules.all;for(let n=0;n<i.length;n++)i[n].onDOMRebuild();this.events.emit("dom:changed",null)}});e.observe(document.body,{childList:!0,subtree:!0}),this.domObserver=e}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){for(let t of this.objects.values()){if(!t.htmlElement||!t.htmlElement.isConnected)continue;let r=null,i=this.modules.all;for(let n=0;n<i.length;n++){let s=i[n],o=!1;e.isDesktop?(s.permissions.desktop.rebuild.scrollHeight&&e.scrollHeightChanged&&(o=!0),s.permissions.desktop.rebuild.width&&e.widthChanged&&(o=!0),s.permissions.desktop.rebuild.height&&e.heightChanged&&(o=!0)):(s.permissions.mobile.rebuild.scrollHeight&&e.scrollHeightChanged&&(o=!0),s.permissions.mobile.rebuild.width&&e.widthChanged&&(o=!0),s.permissions.mobile.rebuild.height&&e.heightChanged&&(o=!0)),(o||e.isForceRebuild)&&s.canConnect(t)&&(r==null&&(r=this.getAllAttributes(t.htmlElement)),s.initializeObject(this.globalId,t,t.htmlElement,r),s.calculatePositions(t,this.data.viewport.windowHeight),s.connectObject(t))}}this.inviewIndexDirty=!0}isFixed(e){return e.hasAttribute("string-fixed")}checkInview(){let e=this.data.scroll.transformedCurrent;this.updateInviewWindow(e);for(let t of this.inviewActive)this.checkInviewForObject(t)}checkInviewForObject(e){let t=this.data.scroll.transformedCurrent;if(!this.intersectionObserverEnabled){let c=e.getProperty("start-position"),d=e.getProperty("end-position");if(c!=null&&d!=null){let p=Math.min(c,d),h=Math.max(c,d),v=e.getProperty("is-active")??!1,m=t>=p&&t<=h;m!==v&&(e.setProperty("is-active",m),this.events.emit(e.getScopedEventName("object:activate"),m),m?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 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&&(e.setProperty("is-inview",a),this.events.emit(e.getScopedEventName("object:inview"),{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=[];for(let r of this.objects.values()){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}splitPipeAndTrim(e){let t=e.split("|"),r=[];for(let i=0;i<t.length;i++){let n=t[i].trim();n.length>0&&r.push(n)}return r}destroy(){this.domObserver?.disconnect(),this.domObserver=null,this.domBatcher.clear()}};var et={SCROLL_FORWARD:"-scroll-forward",SCROLL_BACKWARD:"-scroll-backward",SCROLLING_FORWARD:"-scrolling-forward",SCROLLING_BACKWARD:"-scrolling-backward"};var $=class{constructor(e){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=e}set scrollDirection(e){this._scrollDirection=e,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(e){}onScroll(e){}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(e){if(this.isLastBottomScrollDirection=e,this.isBottomScrollDirection===null){this.isBottomScrollDirection=e;return}this.context.data.scroll.isScrollingDown=e,this.onChangeDirection(),this.context.events.emit("scroll:direction:change",this.context.data.scroll.isScrollingDown),this.context.settings["global-class"]&&this.lastAppliedDirection!==e&&(document.documentElement.classList.toggle(et.SCROLLING_FORWARD,e),document.documentElement.classList.toggle(et.SCROLLING_BACKWARD,!e),document.documentElement.classList.toggle(et.SCROLL_FORWARD,e),document.documentElement.classList.toggle(et.SCROLL_BACKWARD,!e),this.lastAppliedDirection=e)}clearScrollingClasses(){document.documentElement.classList.remove(et.SCROLLING_BACKWARD,et.SCROLLING_FORWARD)}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,t){}};var Ht=class extends ${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 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,r!==this.previousScrollTop&&(this.updateScrollDirection(r>this.previousScrollTop),this.previousScrollTop=r),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 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,this.lastScrollEventTime=performance.now()}}deactivate(){super.deactivate(),this.isScrolling=!1,this.lastScrollEventTime=0,this.previousScrollTop=this.context.data.scroll.current}scrollTo(t,r){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:r?"auto":"smooth"}):this.context.data.scroll.scrollContainer?.scrollTo({left:t,top:0,behavior:r?"auto":"smooth"})}};var Nt=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)}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 Vt=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.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 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)}deactivate(){super.deactivate(),this.isScrollbarManipulation=!1,this.scrollForce=0,this.wheelImpulse=0,this.previousCurrent=this.context.data.scroll.current}scrollTo(t,r){if(r){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,r,i,n,s,o,a){let l=i*s,c=Math.min(Math.max(0,r+l),o),d=i-l,p=(c-t)*n,h=p>0?Math.ceil(t+p):Math.floor(t+p);a.current=h,a.target=c,a.delta=d,a.lerped=p,a.scrollForce=l,a.absVelocity=Math.abs(p)}};var _t=class{constructor(e){this.context=e;this.modes=new Map;this.boundEvents=null;this.scrollMarks=[];this.registerMode("smooth",new Vt(e)),this.registerMode("default",new Ht(e)),this.registerMode("disable",new Nt(e)),this.updateResponsiveMode()}registerMode(e,t){let r=this.context.data.scroll.mode===e,i=this.modes.get(e);i&&(r&&i.deactivate(),i.destroy()),t.name||(t.name=String(e)),this.modes.set(e,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)),r&&t.activate()}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}if(this.context.data.scroll.mode===e){this.get().activate();return}this.get().deactivate(),this.context.data.scroll.mode=e,this.get().activate()}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.boundEvents=e,this.modes.forEach(t=>{t.onScrollStart=e.onScrollStart,t.onScrollStop=e.onScrollStop,t.onChangeDirection=e.onDirectionChange})}addScrollMark(e){this.scrollMarks.push(e),this.modes.forEach(t=>{t.addScrollMark(e)})}removeScrollMark(e){this.scrollMarks=this.scrollMarks.filter(t=>t.id!==e),this.modes.forEach(t=>{t.removeScrollMark(e)})}destroy(){this.modes.forEach(e=>{e.deactivate(),e.destroy()})}};var Wt=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 Bt=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 $t=class{constructor(){this.fpsTracker=!1;this.positionTracker=!1;this.suppressMasonryResize=!1}};var jt=class{constructor(){this.now=0;this.previous=0;this.delta=0;this.elapsed=0}};var Ut=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 ht=class{constructor(){this.scroll=new Bt;this.viewport=new Ut;this.cursor=new Wt;this.render=new zt;this.time=new jt;this.system=new $t}};var mt=class{process({element:e}){return e.getBoundingClientRect()}};var gt=class{process({element:e,key:t,fallback:r=null}){return e.getAttribute(`string-${t}`)??e.getAttribute(`data-string-${t}`)??r}};var ft=class{process({record:e,name:t,fallback:r=null}){return e[t]??e[`data-${t}`]??r}};var rt=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,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 vt=class{constructor(e=new rt){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 bt=class{process({from:e,to:t,progress:r}){return(t-e)*r}};var yt=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,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*r: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 St=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 G={left:0,center:.5,right:1},X={top:0,center:.5,bottom:1},xt=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 G&&!(a in X)?{x:l,y:.5}:a in X&&!(a in G)?{x:.5,y:l}:{x:l,y:l}}let[i,n]=r,s=i in X&&!(i in G),o=n in G&&!(n in X);return s||o?{x:this.parseValue(n,"horizontal"),y:this.parseValue(i,"vertical")}:{x:this.parseValue(i,"horizontal"),y:this.parseValue(n,"vertical")}}parseValue(e,t){if(t==="horizontal"&&e in G)return G[e];if(t==="vertical"&&e in X)return X[e];if(e in G)return G[e];if(e in X)return X[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 Et=class{process({value:e}){let t=e.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 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(p=>p.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(e,t,r){e=e/360,t=parseFloat(t.toString())/100,r=parseFloat(r.toString())/100;let i=(c,d,p)=>(p<0&&(p+=1),p>1&&(p-=1),p<1/6?c+(d-c)*6*p:p<1/2?d:p<2/3?c+(d-c)*(2/3-p)*6:c),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 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: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,c=1-a-l;function d(m){return((o*m+s)*m+n)*m}function p(m){return((c*m+l)*m+a)*m}function h(m){return(3*o*m+2*s)*m+n}function v(m,g=1e-5){let b,y,f=m,S,E,T;for(T=0;T<8;T++){if(S=d(f)-m,Math.abs(S)<g)return f;if(E=h(f),Math.abs(E)<1e-6)break;f=f-S/E}for(b=0,y=1,f=m;b<y;){if(S=d(f)-m,Math.abs(S)<g)return f;S>0?y=f:b=f,f=(y+b)/2}return f}return function(m){return p(v(m))}}};var wt=class{process({distance:e,radius:t,strength:r}){if(e>=t)return 0;let i=(t-e)/t;return r*i}};var Tt=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 Ct=class{process({from:e,to:t,progress:r}){return{x:(t.x-e.x)*r,y:(t.y-e.y)*r}}};var Pt=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 qt=class{process({attributeValue:e}){let t={line:[],word:[],char:[],charLine:[],charWord:[],wordLine:[],fit:!1};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(h=>h.trim()).filter(h=>h.length>0),p=this.parseParamsArray(d);switch(l){case"line":t.line.push(p);break;case"word":t.word.push(p);break;case"char":t.char.push(p);break;case"charLine":t.charLine.push(p);break;case"charWord":t.charWord.push(p);break;case"wordLine":t.wordLine.push(p);break;case"fit":t.fit=!0;break;default:console.warn(`SplitOptionsParserTool: Unrecognized option type "${l}" in part "${n}"`);break}}else console.warn(`SplitOptionsParserTool: Could not parse part format "${n}"`)}),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 Lt=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(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 Yt=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 c of e){var s=null,o=null,a=!0,l=!0;r=="input"&&(o=this.inputValidators[c.key],!o)||r=="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(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 We=class{constructor(){this.pendingVars=new Map;this.pendingProps=new Map;this.isOpen=!1}canUseTypedOM(e){return"attributeStyleMap"in e&&typeof CSS<"u"&&typeof CSS.number=="function"&&typeof CSS.px=="function"}writeVar(e,t,r){let i=e.style;if(this.canUseTypedOM(e)&&typeof r=="number"&&Number.isFinite(r))try{e.attributeStyleMap.set(t,CSS.number(r));return}catch{}i.setProperty(t,String(r))}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)}setVar(e,t,r){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set custom properties.");return}let i=this.pendingVars.get(e)??{};i[t]!==r&&(i[t]=r,this.pendingVars.set(e,i))}setVarDirect(e,t,r){this.writeVar(e,t,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)}setProp(e,t,r){if(!this.isOpen){console.warn("StyleTxn: call begin() first to set standard properties.");return}let i=this.pendingProps.get(e)??{};i[t]!==r&&(i[t]=r,this.pendingProps.set(e,i))}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)for(let[r,i]of Object.entries(t))this.writeVar(e,r,i);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 We;var Gt=class{constructor(){this.domAttribute=new gt;this.recordAttribute=new ft;this.transformNullify=new rt;this.boundingClientRect=new mt;this.relativePosition=new vt(this.transformNullify);this.unitParser=new yt;this.lerp=new bt;this.adaptiveLerp=new St;this.originParser=new xt;this.colorParser=new Et;this.validation=new Yt;this.easingFunction=new Mt;this.magneticPull=new wt;this.lerpColor=new Tt;this.lerpVector=new Ct;this.transformScaleParser=new Pt;this.optionsParser=new qt;this.ruleParser=new Lt;this.styleTxn=x}};function Xt(){let u=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 u||e||t}var tr=new WeakMap,V=5e-4,lt="default",ze="[string-cursor],[data-string-cursor]",er="[string-cursor-content],[data-string-cursor-content]",Be=1/240,z=(u,e)=>{let t=Math.pow(10,e);return Math.round(u*t)/t};function Hr(u){let e=tr.get(u);return e||(e={prevX:Number.NaN,prevY:Number.NaN},tr.set(u,e)),e}var Kt=class extends M{constructor(t){super(t);this.cursorPrev={x:Number.NaN,y:Number.NaN,stepX:Number.NaN,stepY:Number.NaN};this.cursorPortals=new Map;this.hoveredObjects=new Set;this.globalListenersBound=!1;this.boundBeforeUnload=()=>this.cleanupHoverTargets();this.boundPageHide=()=>this.cleanupHoverTargets();this.boundVisibilityChange=()=>{document.hidden&&this.cleanupHoverTargets()};this.enabled=!0;this.lastFrameTime=0;this.htmlKey="cursor",this.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"]??lt},{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-float",type:"number",fallback:2},{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<Be&&(i=Be);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),p=this.getObjectDimensions(o),{halfWidth:h,halfHeight:v,width:m,height:g}=p;if(a&&!l){let{cx:b,cy:y}=this.centers.getCenter(o),f=n-(b-h),S=s-(y-v),E=o.getProperty("mouse-pixel-x")??0,T=o.getProperty("mouse-pixel-y")??0,k=E-f,I=T-S;if(k*k+I*I>1e-4){let A=o.getProperty("is-mouse-move")??!1,O=o.getProperty("cursor-enter")??"snap",L=o.getProperty("alignment")??"center";if(!A){if(o.setProperty("is-mouse-move",!0),O==="snap")o.setProperty("mouse-pixel-x",f),o.setProperty("mouse-pixel-y",S),o.setProperty("mouse-x",f),o.setProperty("mouse-y",S),E=f,T=S;else{let Y=o.getProperty("mouse-x")??0,nt=o.getProperty("mouse-y")??0;E=this.reverseOffset(L,Y,m),T=this.reverseOffset(L,nt,g),o.setProperty("mouse-pixel-x",E),o.setProperty("mouse-pixel-y",T)}this.events.emit(this.getObjectEventName(o,"cursor:start"),null)}let H=this.tools.lerp.process({from:E,to:f,progress:d}),w=this.tools.lerp.process({from:T,to:S,progress:d}),D=E+H,F=T+w,R=Math.abs(D-E)>V||Math.abs(F-T)>V;o.setProperty("mouse-pixel-x",D),o.setProperty("mouse-pixel-y",F);let N=this.calculateOffset(L,D,m),W=this.calculateOffset(L,F,g);o.setProperty("mouse-x",N),o.setProperty("mouse-y",W),this.setMouseCoordinates(o,N,W,D,F)&&this.events.emit(this.getObjectEventName(o,"cursor:move"),{x:N,y:W}),R&&this.events.emit(this.getObjectEventName(o,"cursor:pixel"),{x:D,y:F})}else{o.setProperty("mouse-pixel-x",f),o.setProperty("mouse-pixel-y",S),o.getProperty("is-mouse-move")&&(o.setProperty("is-mouse-move",!1),this.events.emit(this.getObjectEventName(o,"cursor:end"),null));let A=o.getProperty("alignment")??"center",O=this.calculateOffset(A,f,m),L=this.calculateOffset(A,S,g);this.setMouseCoordinates(o,O,L,f,S)}}else{if(o.getProperty("cursor-leave-hold")??!1){o.getProperty("is-mouse-move")&&(o.setProperty("is-mouse-move",!1),this.events.emit(this.getObjectEventName(o,"cursor:end"),null));return}if((o.getProperty("cursor-leave")??"smooth")==="snap"){o.setProperty("is-mouse-move",!1),o.setProperty("mouse-x",0),o.setProperty("mouse-y",0),o.setProperty("mouse-pixel-x",0),o.setProperty("mouse-pixel-y",0),this.setMouseCoordinates(o,0,0,0,0);return}let f=o.getProperty("mouse-x")??0,S=o.getProperty("mouse-y")??0;if(f!==0||S!==0){o.setProperty("is-mouse-move",!1);let E=this.calculateOffset("center",h,m),T=this.calculateOffset("center",v,g),k=f+this.tools.lerp.process({from:f,to:E,progress:d}),I=S+this.tools.lerp.process({from:S,to:T,progress:d});o.setProperty("mouse-x",k),o.setProperty("mouse-y",I),Math.abs(k)<.001&&Math.abs(I)<.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,k,I)}}}),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)>V||Math.abs(c-d.y)>V||Math.abs(o-d.stepX)>V||Math.abs(a-d.stepY)>V)&&(this.events.emit("cursor",{stepX:o,stepY:a,x:l,y:c}),this.cursorPrev={x:l,y:c,stepX:o,stepY:a});let h=this.data.cursor.targetX,v=this.data.cursor.targetY;this.cursorPortals.forEach(m=>{m.forEach(g=>{this.updatePortalPosition(g,h,v,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(ze).forEach(r=>{if(!(r instanceof HTMLElement))return;let i=this.resolvePortalId(r),n=this.resolvePortalLerp(r),s=r.matches(er)?r:r.querySelector(er),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},c=this.cursorPortals.get(i);c?c.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 lt}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(ze)||r.querySelector(ze)))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:lt,o=this.cursorPortals.get(s);o&&o.forEach(a=>i.push(a))}),i.length===0){let n=this.cursorPortals.get(lt)??this.cursorPortals.values().next().value;n&&n.length>0&&n.forEach(s=>i.push(s))}return i}extractPortalIds(t){if(!t)return[lt];let r=t.getProperty("cursor-target");return typeof r!="string"||r.trim().length===0?[lt]: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,c=this.getFrameAdjustedLerp(l,n),d=(r-o)*c,p=(i-a)*c,h=n>1e-4?n:1/60,v=d/(h*60),m=p/(h*60);if(Math.abs(d)<V&&Math.abs(p)<V)return;let g=o+d,b=a+p;this.writePortalVars(t.element,{"--x":z(g,2),"--y":z(b,2),"--x-lerp":z(v,3),"--y-lerp":z(m,3)}),s.x=g,s.y=b,s.stepX=d,s.stepY=p}handleRemovedNodes(t){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(r=>{r.htmlElement.isConnected||this.onElementRemovedFromDOM(r)})}cleanupHoverTargets(){this.hoveredObjects.size!==0&&Array.from(this.hoveredObjects).forEach(t=>this.safariNavigationCleanup(t))}bindGlobalLifecycleListeners(){this.globalListenersBound||(window.addEventListener("beforeunload",this.boundBeforeUnload),window.addEventListener("pagehide",this.boundPageHide),document.addEventListener("visibilitychange",this.boundVisibilityChange),this.globalListenersBound=!0)}unbindGlobalLifecycleListeners(){this.globalListenersBound&&(window.removeEventListener("beforeunload",this.boundBeforeUnload),window.removeEventListener("pagehide",this.boundPageHide),document.removeEventListener("visibilitychange",this.boundVisibilityChange),this.globalListenersBound=!1)}setMouseCoordinates(t,r,i,n,s){if(t.getProperty("cursor-target-style-disable"))return!1;let o=Hr(t),a=t.getProperty("cursor-float")??2,l=Math.pow(10,a),c=Math.abs(r)<V&&Number.isFinite(o.prevX)&&Math.abs(o.prevX)<V?o.prevX:Math.round(r*l)/l,d=Math.abs(i)<V&&Number.isFinite(o.prevY)&&Math.abs(o.prevY)<V?o.prevY:Math.round(i*l)/l;if(Number.isFinite(o.prevX)&&Math.abs(c-o.prevX)<=V&&Number.isFinite(o.prevY)&&Math.abs(d-o.prevY)<=V)return!1;o.prevX=c,o.prevY=d;let p=t.getProperty("__cursor-vars"),h={"--x":z(c,a),"--y":z(d,a)};if(p&&p.size>0){let m=Number.isFinite(n)?n:t.getProperty("mouse-pixel-x"),g=Number.isFinite(s)?s:t.getProperty("mouse-pixel-y"),b=t.getProperty("__prev-x-px"),y=t.getProperty("__prev-y-px"),f=Number.isFinite(b)?m-b:0,S=Number.isFinite(y)?g-y:0;t.setProperty("__prev-x-px",m),t.setProperty("__prev-y-px",g);let E=f===0&&S===0?0:Math.atan2(S,f),T=E*180/Math.PI;p.has("xpx")&&(h["--x-px"]=z(m,2)),p.has("ypx")&&(h["--y-px"]=z(g,2)),p.has("dx")&&(h["--dx"]=z(f,3)),p.has("dy")&&(h["--dy"]=z(S,3)),p.has("angle")&&(h["--angle"]=z(E,4)),p.has("angle-deg")&&(h["--angle-deg"]=z(T,2))}let v=()=>{this.applyToElementAndConnects(t,m=>{x.setVars(m,h)})};return x.isOpen?v():x.run(v),!0}writePortalVars(t,r){if(x.isOpen){x.setVars(t,r);return}x.run(()=>{x.setVars(t,r)})}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,Be)*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 v=r/2,m=i/2;return{width:r,height:i,halfWidth:v,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,p=c>0?c*2:s,h=d>0?d*2:o;return t.setProperty("cached-width",p),t.setProperty("cached-height",h),{width:p,height:h,halfWidth:c,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)}}reverseOffset(t,r,i){switch(t){case"start":return r*i;case"end":return r*i+i;case"center":default:return r*(i/2)+i/2}}removeObject(t){if(!this.enabled)return super.removeObject(t);let r=this.objectMapOnPage.get(t);r&&this.centers.detach(r),super.removeObject(t)}destroy(){this.unbindGlobalLifecycleListeners(),this.hoveredObjects.clear(),super.destroy()}};var Qt=class extends M{constructor(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 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 p=a.width||1,h=Math.max(0,Math.min(1,(this.data.cursor.targetX-a.left)/p));this.events.emit(this.getObjectEventName(o,"object:impulse","side"),{value:h})}let c=o.getProperty("position-strength")||0;if(c!==0){let p=o.getProperty("continuous-push")??!0,h=o.getProperty("__push-latch")===!0;if(p||!h){let v=o.getProperty("velocity-x")||0,m=o.getProperty("velocity-y")||0;v+=r*c,m+=i*c,o.setProperty("velocity-x",v),o.setProperty("velocity-y",m),p||o.setProperty("__push-latch",!0)}}let d=o.getProperty("rotation-strength")??.75;if(d!==0){let p=o.getProperty("continuous-push")??!0,h=o.getProperty("__rotate-latch")===!0;if(p||!h){let{centerX:v,centerY:m}=this.getRotationOriginFromRect(o,a),g=n-v,b=s-m,y=g*i-b*r,f=o.getProperty("ang-vel-deg")||0;f+=y*d*.02,o.setProperty("ang-vel-deg",f),p||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,c=s.getProperty("velocity-y")||0,d=s.getProperty("position-tension")??.05,p=s.getProperty("position-friction")??.15,h=s.getProperty("position-max-velocity")??120,v=s.getProperty("max-offset")??220;l-=d*o,c-=d*a;let m=1-p;l*=m,c*=m,l>h?l=h:l<-h&&(l=-h),c>h?c=h:c<-h&&(c=-h),o+=l,a+=c,o>v?o=v:o<-v&&(o=-v),a>v?a=v:a<-v&&(a=-v);let g=s.getProperty("angle-deg")||0,b=s.getProperty("ang-vel-deg")||0,y=s.getProperty("rotation-tension")??.06,f=s.getProperty("rotation-friction")??.18,S=s.getProperty("rotation-max-angular-velocity")??6,E=s.getProperty("rotation-max-angle")??18;b-=y*g,b*=1-f,b>S?b=S:b<-S&&(b=-S),g+=b,g>E?(g=E,b*=.35):g<-E&&(g=-E,b*=.35);let T=s.getProperty("sleep-epsilon")??.01,k=l*l+c*c<T*T&&o*o+a*a<T*T,I=Math.abs(b)<T&&Math.abs(g)<T;k?(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)),I?(g||b)&&(s.setProperty("angle-deg",0),s.setProperty("ang-vel-deg",0),g=b=0):(s.setProperty("angle-deg",g),s.setProperty("ang-vel-deg",b));let C=s.getProperty("position-update-threshold")??.1,A=s.getProperty("rotation-update-threshold")??.15,O=s.getProperty("__prev-css-x")||0,L=s.getProperty("__prev-css-y")||0,H=s.getProperty("__prev-css-rot")||0,w=Math.round(o*10)/10,D=Math.round(a*10)/10,F=Math.round(g*10)/10,R=Math.abs(w-O)>C||Math.abs(D-L)>C,N=Math.abs(F-H)>A;(R||N)&&(s.setProperty("__next-css-x",w),s.setProperty("__next-css-y",D),s.setProperty("__next-css-rot",F)),s.setProperty("__needs-position-update",R),s.setProperty("__needs-rotation-update",N)}}onMutate(){for(let t=0;t<this.objects.length;t++){let r=this.objects[t],i=r.getProperty("__needs-position-update")===!0,n=r.getProperty("__needs-rotation-update")===!0;if(!i&&!n)continue;let s=r.getProperty("__next-css-x")||0,o=r.getProperty("__next-css-y")||0,a=r.getProperty("__next-css-rot")||0;this.applyToElementAndConnects(r,l=>{i&&(x.setVar(l,"--push-x",s),x.setVar(l,"--push-y",o)),n&&x.setVar(l,"--push-rotation",a)}),i&&(r.setProperty("__prev-css-x",s),r.setProperty("__prev-css-y",o),this.events.emit(this.getObjectEventName(r,"object:impulse","move"),{x:s,y:o})),n&&(r.setProperty("__prev-css-rot",a),this.events.emit(this.getObjectEventName(r,"object:impulse","rotate"),{rotation:a})),r.setProperty("__needs-position-update",!1),r.setProperty("__needs-rotation-update",!1)}}};var $e=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)}flush(){if(!this.scheduled)return;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}},_=new $e;var Nr=20,U={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 rr(u){if(!u)return U.DEFAULT_DURATION;let e=parseFloat(u);return isNaN(e)?U.DEFAULT_DURATION:e}function Zt(u,e){let t=[...u].sort((i,n)=>n.breakpoint-i.breakpoint),r=t.find(i=>e>=i.breakpoint);return r?r.value:t[t.length-1]?.value}var Jt=class extends M{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||U.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(U.MANUAL_COLS_KEY,Number(s.cols)),s.gap!==void 0&&t.setProperty(U.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),c=n.startHeight+(n.targetHeight-n.startHeight)*l;x.setProps(i.htmlElement,{height:`${c}px`}),a<1?s++:n.isAnimatingHeight=!1}n.items.forEach((o,a)=>{if(!o.isMoving)return;let l=r-o.startTime,c=l*o.invPosDur,d=c>1?1:c,p=o.posEase(d);o.cx=o.sx+o.dx*p,o.cy=o.sy+o.dy*p;let h=l*o.invSizeDur,v=h>1?1:h,m=o.sizeEase(v);o.cw=o.sw+o.dw*m,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||v<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,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(r),p=parseFloat(d.paddingLeft)||0,h=parseFloat(d.paddingRight)||0,v=l.width-p-h;if(v<=0)return;let{columns:m,gap:g}=this.getGridSettings(t),b=(v-g*(m-1))/m;m===c.lastLayoutColumns&&g===c.lastLayoutGap&&Math.abs(b-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},Nr))},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(p=>{if(p.nodeType===1){let h=p;this.cleanupImgListeners(l,h),l.items.delete(h),c=!0}}),d.addedNodes.length&&d.addedNodes.forEach(p=>{p.nodeType===1&&(this.attachImgLoaders(t,l,p),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:r.offsetHeight,targetHeight:r.offsetHeight,heightStartTime:0,heightDuration:U.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=U.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,_.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),c=parseFloat(l.paddingLeft)||0,d=parseFloat(l.paddingRight)||0,p=parseFloat(l.paddingTop)||0,h=a.width-c-d;if(h<=0)return;let{columns:v,gap:m}=this.getGridSettings(t),g=(h-m*(v-1))/v,y=(t.getProperty("masonry-mode")||"auto")==="auto"&&i&&!r.isResizing&&n!=="window-resize"&&n!=="resize-observer",f=v===r.lastLayoutColumns&&m===r.lastLayoutGap&&Math.abs(g-r.lastLayoutColumnWidth)<=.5,S=0;o.forEach(w=>{let D=r.childIds.get(w);D||(D=r.nextChildId++,r.childIds.set(w,D)),S=S*31+D>>>0}),r.lastLayoutColumns=v,r.lastLayoutGap=m,r.lastLayoutColumnWidth=g,r.lastChildrenHash=S;let E=new Map;i&&o.forEach(w=>{let D=r.items.get(w);D&&E.set(w,D.cw)}),x.begin(),o.forEach(w=>{x.setProps(w,{position:"absolute",top:"0",left:"0",width:`${g}px`})}),x.commit();let T=o.map(w=>w.offsetHeight),k=0;T.forEach(w=>k=k*31+Math.round(w*2)>>>0),r.lastHeightsHash=k,i&&E.size>0&&x.run(()=>{E.forEach((w,D)=>{x.setProps(D,{width:`${w}px`})})});let I=new Array(v).fill(0),C=performance.now(),A=!1,O=0;o.forEach((w,D)=>{let F=T[D],R=0,N=I[0];for(let q=1;q<v;q++)I[q]<N&&(N=I[q],R=q);let W=R*(g+m)+c,j=N+p,Y=g;I[R]=N+F+m;let nt=rr(w.getAttribute("string-masonry-position-time")),Dt=rr(w.getAttribute("string-masonry-size-time")),Xe=nt>0?1/nt:1e3,Ke=Dt>0?1/Dt:1e3,Qe=this.parseEasing(w.getAttribute("string-masonry-position-easing")),Ze=this.parseEasing(w.getAttribute("string-masonry-size-easing")),P=r.items.get(w);if(P)Math.abs(P.tx-W)+Math.abs(P.ty-j)+Math.abs(P.tw-Y)>.5&&(P.sx=P.cx,P.sy=P.cy,P.sw=P.cw,P.tx=W,P.ty=j,P.tw=Y,P.dx=P.tx-P.sx,P.dy=P.ty-P.sy,P.dw=P.tw-P.sw,P.posEase=Qe,P.invPosDur=Xe,P.sizeEase=Ze,P.invSizeDur=Ke,P.startTime=C,P.isMoving=!0,A=!0,O=Math.max(O,nt,Dt));else{let q=W,Je=i?j+30:j;P={sx:q,sy:Je,sw:Y,tx:W,ty:j,tw:Y,dx:0,dy:0,dw:0,cx:q,cy:Je,cw:Y,startTime:C,posEase:Qe,invPosDur:Xe,sizeEase:Ze,invSizeDur:Ke,isMoving:i},r.items.set(w,P),i?(P.dx=P.tx-P.sx,P.dy=P.ty-P.sy,P.dw=P.tw-P.sw,A=!0,O=Math.max(O,nt,Dt)):x.run(()=>{x.setProps(w,{transform:`translate3d(${W}px, ${j}px, 0)`,width:`${Y}px`,willChange:"auto"})})}});let L=Math.max(...I);if(Math.abs(r.targetHeight-L)>1)if(i){let w=s.getBoundingClientRect(),D=this.data.viewport.windowHeight;var H=!1;if(w.bottom>=-100&&w.bottom<=D+100){let F=w.top+L-D;if(Math.abs(F)>1&&L<s.offsetHeight){let R=w.top+this.data.scroll.current+L-D;this.events.emit("scrollTo",R),H=!0}}L>=r.targetHeight?(y?(r.startHeight=s.offsetHeight,r.heightStartTime=C,r.heightDuration=U.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=y,r.targetHeight=L,H||x.run(()=>{x.setProps(t.htmlElement,{height:`${L}px`}),requestAnimationFrame(()=>{this.events.emit("resize",!0)})})),A=!0}else r.targetHeight=L,r.pendingHeight=void 0,x.run(()=>{x.setProps(t.htmlElement,{height:`${L}px`})});A&&(r.isAnimating||this.events.emit("masonry:shuffle:start",{object:t}),r.isAnimating=!0,O>0&&(r.expectedEndTime=C+O+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))},O+50)))}getGridSettings(t){let r=this.data.viewport.windowWidth;if((t.getProperty("masonry-mode")||"auto")==="manual"){let o=t.getProperty(U.MANUAL_COLS_KEY),a=t.getProperty(U.MANUAL_GAP_KEY),l=t.getProperty("masonry-cols")||[],c=t.getProperty("masonry-gap")||[];return{columns:Math.max(1,Math.round(o??Zt(l,r)??2)),gap:Math.max(0,a??Zt(c,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(Zt(n,r)??2)),gap:Math.max(0,Zt(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 te=class extends M{constructor(e){super(e),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(e,t,r,i){super.initializeObject(e,t,r,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(e){for(let t=0;t<this.objects.length;t++){let r=this.objects[t],n=r.htmlElement.getBoundingClientRect(),s=n.left+n.width/2,o=n.top+n.height/2,a=e.clientX-s,l=e.clientY-o,c=Math.sqrt(a**2+l**2),d=r.getProperty("radius")??0,p=r.getProperty("strength")??0,h=this.tools.magneticPull.process({distance:c,radius:d,strength:p});r.magneticTargetX=a*h,r.magneticTargetY=l*h,h>0&&(r.isMagneting=!0)}}onFrame(e){for(let t=0;t<this.objects.length;t++){let r=this.objects[t];if(r.isMagneting){let i=r.magneticX,n=r.magneticY,s=r.getProperty("magnetic-lerp")??.1,o=r.magneticTargetX,a=r.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,r.magneticX=r.magneticTargetX),c>-.01&&c<.01&&(c=0,r.magneticY=r.magneticTargetY),i+=l,n+=c,r.magneticX=i,r.magneticY=n,r.eventMagneticName&&this.events.emit(r.eventMagneticName,{x:i,y:n}),r.setProperty("__next-magnetic-x",i),r.setProperty("__next-magnetic-y",n),r.setProperty("__needs-magnetic-update",!0),r.magneticTargetX===i&&r.magneticTargetY===n&&(r.isMagneting=!1)}}}onMutate(){for(let e=0;e<this.objects.length;e++){let t=this.objects[e];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=>{x.setVar(s,"--magnetic-x",i),x.setVar(s,"--magnetic-y",n)}),t.setProperty("__needs-magnetic-update",!1)}}};var ct=class extends M{constructor(t){super(t);this.nearOnly=!0;this.useAllObjects=!1;this.maxDistanceMultiplier=1;this.updateThreshold=.1;this.enabled=!0;this.scrollUpdateScheduled=!1;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:c}=this.centers.getCenter(a),d=i-l,p=n-c,h=d*d+p*p;if(this.nearOnly){if(h>this.data.viewport.windowWidth*this.data.viewport.windowWidth&&!this.hover.isActive(a))continue}else if(o!==null&&h>o)continue;a.setProperty("dx",d),a.setProperty("dy",p),a.setProperty("dist",Math.sqrt(h))}}scheduleCursorUpdate(){!this.enabled||this.scrollUpdateScheduled||(this.scrollUpdateScheduled=!0,_.measure(()=>{this.refreshPointerState(),_.mutate(()=>{this.scrollUpdateScheduled=!1,x.run(()=>{this.onCursorScrollUpdate()})})}))}onCursorScrollUpdate(){}};var je=Math.PI*2,Vr=180/Math.PI,nr=u=>u<0?0:u>1?1:u,_r=(u,e)=>{let t=(e-u)%je;return t>Math.PI&&(t-=je),t<-Math.PI&&(t+=je),u+t},Wr={computeStep(u,e,t,r,i,n,s,o,a,l,c,d,p,h,v,m,g){let b=a;(m===1||t>r)&&(b=Math.atan2(e,u));let y=i>0?Math.min(t,i):t,f=s,S=o;if(h===1)f=b,S=y;else{let I=_r(s,b),C=nr(n);f+=(I-f)*C,S+=(y-S)*C}let E=f*Vr-90,T=v===1||Number.isNaN(l)||Math.abs(E-l)>d,k=v===1||Number.isNaN(c)||Math.abs(S-c)>p;g.angle=f,g.dist=S,g.tAngle=b,g.tDist=y,g.degRaw=E,g.cssDeg=Math.round(E*10)/10,g.cssDist=Math.round(S*10)/10,g.angleChanged=T?1:0,g.distChanged=k?1:0}},zr={bypassDeadzone:!0},Br={forceImmediate:!0,forceEmit:!0,bypassDeadzone:!0},ir=new WeakMap,$r=u=>{let e=ir.get(u);return e||(e={angle:0,dist:0,tAngle:0,tDist:0,prevDeg:NaN,prevDist:NaN},ir.set(u,e)),e},ee=class extends ct{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:r=>nr(this.tools.adaptiveLerp.process({value:r,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,r,i,n){super.initializeObject(t,r,i,n),r.setProperty("spotlight-angle-rad",0),r.setProperty("spotlight-distance",0),r.setProperty("spotlight-angle-rad-target",0),r.setProperty("spotlight-distance-target",0),_.measure(()=>{this.refreshPointerState(r,!0),_.mutate(()=>{x.run(()=>{this.updateSpotlightState(r,Br)})})})}onMutate(t){if(this.enabled){super.onMutate(t);let r=this.getCursorTargets(!1),i=r.length>0?r:this.getCursorTargets(!0);for(let n=0;n<i.length;n++){let s=i[n];this.updateSpotlightState(s)}}}onCursorScrollUpdate(){let t=this.getCursorTargets(!1),r=t.length>0?t:this.getCursorTargets(!0);for(let i=0;i<r.length;i++){let n=r[i];this.updateSpotlightState(n,zr)}}updateSpotlightState(t,r={}){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=$r(t);Wr.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,r.forceImmediate===!0?1:0,r.forceEmit===!0?1:0,r.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,r,i){let n=()=>{this.applyToElementAndConnects(t,s=>{x.setVar(s,"--spotlight-angle",r),x.setVar(s,"--spotlight-distance",i)})};if(x.isOpen){n();return}x.run(n)}};var sr="-aspect-ready";function jr(u){if(!u)return!1;let e=u.toLowerCase();return!!(e.endsWith(".svg")||e.startsWith("data:image/svg"))}function or(u){let e=new DataView(u);return u.byteLength<28?{width:0,height:0}:e.getUint32(0)!==2303741511||e.getUint32(4)!==218765834?{width:0,height:0}:e.getUint32(8)!==13||e.getUint32(12)!==1229472850?{width:0,height:0}:{width:e.getUint32(16,!1),height:e.getUint32(20,!1)}}function ar(u){let e=new DataView(u);if(e.getUint16(0)!==65496)return{width:0,height:0};let t=2;for(;t+9<u.byteLength;){let r=e.getUint16(t);if(t+=2,r===65498||r===65497)break;let i=e.getUint16(t);if(i<2||t+i>u.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 lr(u){let e=new DataView(u);if(u.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<=u.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<=u.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<=u.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),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 cr(u,e){let t=(e||"").toLowerCase();if(t.includes("png"))return or(u);if(t.includes("jpeg")||t.includes("jpg"))return ar(u);if(t.includes("webp"))return lr(u);let r=or(u);return r.width||(r=ar(u),r.width)||(r=lr(u),r.width)?r:{width:0,height:0}}async function Ur(u,e,t){let r=await fetch(u,{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,c=0,d=[],p=null,h=!1;for(;;){let{done:g,value:b}=await n.read();if(g)break;if(!b)continue;let y=b.buffer.slice(b.byteOffset,b.byteOffset+b.byteLength);if(d.push(y),!p&&l<s){let f=Math.min(b.byteLength,s-l);if(f>0&&(a.set(b.subarray(0,f),l),l+=f),l-c>=o){let S=l===a.byteLength?a:a.slice(0,l),E=cr(S.buffer,i);E.width&&E.height&&(p=E,!h&&t&&(t(p),h=!0)),c=l}}}if(!p){let g=await new Response(new Blob(d)).arrayBuffer(),b=cr(g,i);b.width&&b.height&&(p=b,!h&&t&&(t(p),h=!0))}let v=new Blob(d,{type:i||"application/octet-stream"}),m=URL.createObjectURL(v);return{dims:p,blobUrl:m,contentType:i}}var re=class extends M{constructor(t){super(t);this.isStartLoaded=!1;this.loadingCount=0;this.imageStates=new WeakMap;this.htmlKey="lazy"}onInit(){document.querySelectorAll("img[string-lazy], img[data-string-lazy]").forEach(r=>this.ensureState(r)),this.isStartLoaded=!0}onObjectConnected(t){let r=t.htmlElement;if(!(r instanceof HTMLImageElement))return;r.getAttribute("src")||r.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(r);!i.aspectReady&&!i.aspectLoading&&this.prepareAspectRatio(r);let n=o=>{this.handleInView(r,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(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(jr(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 Ur(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(sr),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(sr),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 ie=class extends M{constructor(t){super(t);this.loadingTimeout=0;this._type=2,this.loadingTimeout=this.settings.timeout}onInit(){setTimeout(()=>{document.documentElement.classList.add("-loaded")},this.loadingTimeout)}};var ne=class extends M{constructor(e){super(e),this.htmlKey=""}canConnect(e){return e.keys[0]==null}};var ut=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}},se=class extends M{constructor(t){super(t);this.queries={0:new ut({max:359}),1:new ut({min:360,max:1023}),2:new ut({min:1024,max:1365}),3:new ut({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 oe=class extends M{constructor(e){super(e),this.htmlKey="anchor",this.attributesToMap=[...this.attributesToMap,{key:"anchor",type:"tuple",fallback:this.settings.anchor,transform:t=>{let[r,i]=t,n=this.tools.originParser.process({value:r}),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 qr=.05,Yr=.01,ur=1,Gr=-1,Xr=1,ae=class extends M{constructor(t){super(t);this.previousLerp=0;this.displacement=0;this.acceleration=0;this.velocityMultiplier=.00125;this.isInitialScroll=!0;this.baseVelocityMultiplier=.00125;this.reducedVelocityMultiplier=this.baseVelocityMultiplier/20;this.negativeVelocityMultiplier=-1e-4;this.maxDisplacementValue=0;this.setupItem=t=>{let r=-this.data.scroll.displacement*this.maxDisplacementValue*t.glide;t.eventGlideName&&this.events.emit(t.eventGlideName,r);let i=`translate3d(0, ${r}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,r,i,n){super.initializeObject(t,r,i,n),r.glide=r.getProperty("glide")??0,r.eventGlideName=this.getObjectEventName(r,"object:glide"),r.setProperty("__next-glide",0),r.setProperty("__next-glide-transform","translate3d(0, 0px, 0)"),r.setProperty("__needs-glide-var-update",!1),r.setProperty("__needs-glide-transform-update",!1)}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(){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 r=this.objects[t];r.setProperty("__next-glide-transform","translate3d(0, 0px, 0)"),r.setProperty("__needs-glide-transform-update",!0),r.setProperty("__next-glide",0),r.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 r=0;r<this.objects.length;r++){let i=this.objects[r];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(ur,this.acceleration+qr),this.displacement=Math.max(Yr,Math.min(ur,this.displacement+this.velocityMultiplier)),this.data.scroll.displacement=Math.min(Xr,Math.max(Gr,this.data.scroll.lerped*this.displacement*this.acceleration));let r=this.data.scroll.displacement;for(let i=0;i<this.objects.length;i++){let n=this.objects[i];n.setProperty("__next-glide",r),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 r=this.objects[t],i=r.getProperty("__needs-glide-var-update")===!0,n=r.getProperty("__needs-glide-transform-update")===!0;if(!(!i&&!n)){if(i){let s=r.getProperty("__next-glide")??this.data.scroll.displacement;this.applyVarToElement(r,"--glide",s),this.applyVarToConnects(r,"--glide",s),r.setProperty("__needs-glide-var-update",!1)}if(n){let s=r.getProperty("__next-glide-transform")??"translate3d(0, 0px, 0)";this.applyPropToElement(r,"transform",s),r.setProperty("__needs-glide-transform-update",!1)}}}}flushPendingGlideStyles(){if(x.isOpen){this.applyPendingGlideStyles();return}x.run(()=>{this.applyPendingGlideStyles()})}};var le=class extends M{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,x.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 r=t.scroll.lerped;for(let i=0;i<this.objects.length;i++)this.recomputeLerp(this.objects[i],r)}recomputeLerp(t,r){t.lerp!==r&&(t.lerp=r,this.updateObjectLerp(t))}onMutate(){x.run(()=>{let t=this.objects.length;for(let r=0;r<t;r++)this.updateObjectLerp(this.objects[r])})}updateObjectLerp(t,r=!1){let i=t.lerp,n=t.getProperty("lerp-applied");if(!r&&n===i)return;t.setProperty("lerp-applied",i);let s=i?.toString()??"0";t.eventLerpName&&this.events.emit(t.eventLerpName,i),x.run(()=>{this.applyVarToElement(t,"--lerp",s),this.applyVarToConnects(t,"--lerp",s)})}onObjectDisconnected(t){super.onObjectDisconnected(t);let r=n=>{n.style.removeProperty("--lerp")};r(t.htmlElement);let i=t.mirrorObjects;for(let n=0;n<i.length;n++)r(i[n].htmlElement)}};var dr="__string-dev-progress-override",pr={computeRawProgress(u,e,t){if(t===0)return 0;let r=(u-e)/t;return r<=0?0:r>=1?1:r},computeRawProgressBatch(u,e,t,r,i){for(let n=0;n<i;n++){let s=t[n];if(s===0){r[n]=0;continue}let o=(u-e[n])/s;o<=0?r[n]=0:o>=1?r[n]=1:r[n]=o}}},dt=class extends M{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,r,i,n){super.initializeObject(t,r,i,n)}sanitizeRawProgress(t){if(!Number.isFinite(t)||t<=0)return 0;if(t>=1)return 1;let r=1e-4;return t>1-r?t=1:t<r&&(t=0),t}resolveRawProgress(t,r,i,n){let s=t.getProperty(dr);return s!=null?this.sanitizeRawProgress(s):pr.computeRawProgress(r,i,n)}applyRawProgress(t,r){let i=this.sanitizeRawProgress(r);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 r=t.getProperty("start-position")??t.startPosition,i=t.getProperty("difference-position")??t.differencePosition;t.startPosition=r,t.differencePosition=i;let n=this.resolveRawProgress(t,this.data.scroll.transformedCurrent,r,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,r){super.calculatePositions(t,r),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 r=this.objects.length;if(r!==0){this.ensureBatchCapacity(r);for(let i=0;i<r;i++){let n=this.objects[i],s=n.getProperty("start-position")??n.startPosition,o=n.getProperty("difference-position")??n.differencePosition;n.startPosition=s,n.differencePosition=o,this.batchStarts[i]=s,this.batchDiffs[i]=o}pr.computeRawProgressBatch(this.data.scroll.transformedCurrent,this.batchStarts,this.batchDiffs,this.batchOut,r);for(let i=0;i<r;i++){let n=this.objects[i],s=n.getProperty(dr),o=s!=null?this.sanitizeRawProgress(s):this.batchOut[i];this.applyRawProgress(n,o)}}}onMutate(){x.run(()=>{let t=this.objects.length;for(let r=0;r<t;r++)this.updateObjectProgress(this.objects[r])})}updateObjectProgress(t){let r=t.progress;if(t.getProperty("progress-applied")===r)return;let n=t.getProperty("key");t.setProperty("progress-applied",r);let s=t.progressRaw??r,o=t.getProperty("easing");t.eventProgressName&&this.events.emit(t.eventProgressName,r),n&&this.applyVarToElement(t,n,r);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 r=t.getProperty("key");if(!r)return;let i=s=>{s.style.removeProperty(r)};i(t.htmlElement);let n=t.mirrorObjects;for(let s=0;s<n.length;s++)i(n[s].htmlElement)}};var ce=class extends dt{constructor(t){super(t);this.updateScheduledTransform=!1;this.calculateDesktopParallax=t=>{let r=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+r*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,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.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 r=0;r<this.objects.length;r++){let i=this.objects[r];i.transformValue=this.calculateParallaxForObject(i)}}onMutate(){x.run(()=>{for(let t=0;t<this.objects.length;t++){let r=this.objects[t],i=r.transformValue;i&&(this.applyPropToElement(r,"transform",i.transform),this.applyPropToConnects(r,"transform",i.transform))}})}};var ue=class{constructor(e,t,r,i){this.isDragging=!1;this.startY=0;this.startScrollPosition=0;this.data=e,this.scrollbar=t,this.thumb=r,this.onScrollTo=i}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,this.onScrollTo(r),this.updateThumb()}};var de=class{constructor(e,t,r,i){this.isDragging=!1;this.startCoordinate=0;this.startScrollPosition=0;this.data=e,this.scrollbar=t,this.thumb=r,this.onScrollTo=i}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,this.onScrollTo(n),this.updateThumb()}};var pe=class extends M{constructor(t){super(t);this.isDragging=!1;this.scrollMode="smooth";this.mouseUpEventBind=this.mouseUpEvent.bind(this),this.mouseDownEventBind=this.mouseDownEvent.bind(this),this.mouseMoveEventBind=this.mouseMoveEvent.bind(this),this.requestScrollTo=r=>{this.events.emit("scrollTo",{position:r,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=`
1
+ "use strict";var pi=Object.defineProperty;var Xn=Object.getOwnPropertyDescriptor;var qn=Object.getOwnPropertyNames;var Kn=Object.prototype.hasOwnProperty;var Zn=(u,r)=>{for(var t in r)pi(u,t,{get:r[t],enumerable:!0})},Qn=(u,r,t,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of qn(r))!Kn.call(u,i)&&i!==t&&pi(u,i,{get:()=>r[i],enumerable:!(e=Xn(r,i))||e.enumerable});return u};var Jn=u=>Qn(pi({},"__esModule",{value:!0}),u);var Yo={};Zn(Yo,{CursorReactiveModule:()=>It,DOMBatcher:()=>Dt,GridAdapter:()=>z,ScrollController:()=>et,StringAnchor:()=>nr,StringCursor:()=>Xe,StringData:()=>Xt,StringDelayLerpTracker:()=>fr,StringDevIconRegistry:()=>ce,StringDevInview:()=>xe,StringDevLayout:()=>Se,StringDevModule:()=>Z,StringDevOverlayRegistry:()=>Wt,StringDevProgress:()=>Ce,StringDevRulers:()=>we,StringFPSTracker:()=>vr,StringForm:()=>Mr,StringGlide:()=>sr,StringImpulse:()=>qe,StringLazy:()=>tr,StringLerp:()=>or,StringLerpTracker:()=>br,StringLoading:()=>er,StringMagnetic:()=>Qe,StringMasonry:()=>Ze,StringModule:()=>C,StringObject:()=>kt,StringParallax:()=>ar,StringPositionTracker:()=>yr,StringProgress:()=>Ht,StringProgressPart:()=>Ir,StringRandom:()=>Rr,StringResponsive:()=>ir,StringScrollContainer:()=>Or,StringScrollbar:()=>cr,StringScroller:()=>Dr,StringSequence:()=>Er,StringSplit:()=>mr,StringSpotlight:()=>Je,StringTune:()=>Hi,StringVideoAutoplay:()=>Lr,buildDevtoolsThemeBlock:()=>Pr,default:()=>Hi,ensureStringDevtoolsSharedStyles:()=>Vt,frameDOM:()=>U,resolveDevtoolsIcon:()=>F,styleTxn:()=>E});module.exports=Jn(Yo);var Ae=class{constructor(r=.1,t){this.SETTLE_THRESHOLD_SQ=.01;this.lastMouseX=0;this.lastMouseY=0;this.lastMouseTime=0;this._lerpStepXArgs={from:0,to:0,progress:0};this._lerpStepYArgs={from:0,to:0,progress: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){let t=this.context.data.cursor;t.targetX=r.clientX,t.targetY=r.clientY;let e=performance.now(),i=Math.max(1,e-this.lastMouseTime);t.velocityX=(r.clientX-this.lastMouseX)/i,t.velocityY=(r.clientY-this.lastMouseY)/i,this.lastMouseX=r.clientX,this.lastMouseY=r.clientY,this.lastMouseTime=e}onFrame(){let r=this.context.data.cursor,t=r.targetX,e=r.targetY,i=r.smoothedX,n=r.smoothedY;this._lerpStepXArgs.from=i,this._lerpStepXArgs.to=t,this._lerpStepXArgs.progress=this.smoothingFactor,this._lerpStepYArgs.from=n,this._lerpStepYArgs.to=e,this._lerpStepYArgs.progress=this.smoothingFactor;let s=this.context.tools.lerp.process(this._lerpStepXArgs),o=this.context.tools.lerp.process(this._lerpStepYArgs);s*s+o*o<this.SETTLE_THRESHOLD_SQ?(r.smoothedX=t,r.smoothedY=e,r.stepX=0,r.stepY=0):(r.smoothedX+=s,r.smoothedY+=o,r.stepX=s,r.stepY=o)}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})}};var At=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 ke=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.allModules.length;t++){let e=this.allModules[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 De=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 kt=class{constructor(r,t){this.id="";this.keys=[];this.tokens=[];this.mirrors=new Map;this._cachedMirrorObjects=[];this._cachedConnects=[];this._mirrorsDirty=!1;this.properties=new Map;this.modules=[];this.events=new At;this.eventNameCache=new Map;this.eventNameSuffixCache=new Map;this.htmlElement=t,this.id=r}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)})}setInviewAutoBlocked(r){this.setProperty("inview-auto-blocked",r)}isInviewAutoBlocked(){return this.getProperty("inview-auto-blocked")===!0}setInviewManualActive(r){this.setProperty("inview-manual-active",r)}isInviewManualActive(){return this.getProperty("inview-manual-active")===!0}syncInviewClass(){if(this.isInviewAutoBlocked()){this.htmlElement.classList.remove("-inview");return}if(this.isInviewManualActive()){this.htmlElement.classList.add("-inview");return}if(this.getProperty("is-inview")===!0){this.htmlElement.classList.add("-inview");return}this.getProperty("repeat")&&this.htmlElement.classList.remove("-inview")}show(){this.isInviewAutoBlocked()||this.htmlElement.classList.add("-inview")}hide(){if(this.isInviewAutoBlocked()){this.htmlElement.classList.remove("-inview");return}if(this.isInviewManualActive())return;this.getProperty("repeat")&&this.htmlElement.classList.remove("-inview")}connect(r){return this.modules.includes(r)?!1:(this.modules.push(r),!0)}disconnect(r){let t=this.modules.indexOf(r);return t===-1?!1:(this.modules.splice(t,1),!0)}isConnectedTo(r){return this.modules.includes(r)}setTokens(r){this.tokens=r,this.keys=r.map(t=>t.key)}getToken(r){for(let t=0;t<this.tokens.length;t++)if(this.tokens[t].key===r)return this.tokens[t];return null}updateMirrorsCache(){if(this._mirrorsDirty){this._cachedMirrorObjects=Array.from(this.mirrors.values());let r=this._cachedMirrorObjects.length;this._cachedConnects=new Array(r);for(let t=0;t<r;t++)this._cachedConnects[t]=this._cachedMirrorObjects[t].htmlElement;this._mirrorsDirty=!1}}addMirror(r){this.mirrors.has(r.id)||(this.mirrors.set(r.id,r),this._mirrorsDirty=!0)}removeMirror(r){this.mirrors.delete(r)&&(this._mirrorsDirty=!0)}get mirrorObjects(){return this.updateMirrorsCache(),this._cachedMirrorObjects}get connects(){return this.updateMirrorsCache(),this._cachedConnects}};var Dt=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 Oe=class{constructor(){this.desktop={rebuild:{width:!0,height:!0,scrollHeight:!0}};this.mobile={rebuild:{width:!0,height:!0,scrollHeight:!0}}}};var ts=Object.freeze({}),C=class{constructor(r){this.cssProperties=[];this.objectMapOnPage=new Map;this.allObjectMapOnPage=new Map;this.objectsOnPage=[];this.allObjectsOnPage=[];this.objectMap=new Map;this.allObjectMap=new Map;this.objects=[];this.allObjects=[];this.htmlKey="";this.defaultModeScope="all";this._type=1;this.permissions=new Oe;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:"offset-enter",type:"dimension",fallback:this.settings["offset-enter"]},{key:"offset-exit",type:"dimension",fallback:this.settings["offset-exit"]},{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.transformedCurrent}},{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}get key(){return this.htmlKey}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 d=typeof a=="function"?a(e,t,n):a,c=i[s]??i[`string-${s}`]??i[`data-string-${s}`],p=this.tools.domAttribute.process({element:e,key:s,fallback:c??this.settings[s]??d}),g=this.parseAttribute(p,o,{element:e,boundingRect:n,viewportHeight:this.data.viewport.windowHeight,baseRem:this.data.viewport.baseRem});l&&(g=l(g)),t.setProperty(s,g)}this.cacheLayoutSnapshot(t,e)}cacheLayoutSnapshot(r,t){let e=this.data.scroll.container??document.body??document.documentElement,i=this.data.scroll.elementContainer??document.documentElement,n=this.tools.transformNullify.process({element:t}),s=window.getComputedStyle(t),o=this.getOffsetSize(t,s),a=0,l=0,d=n.width,c=n.height;if((!Number.isFinite(d)||d<=0)&&(d=o.width),(!Number.isFinite(c)||c<=0)&&(c=o.height),Number.isFinite(n.left)&&Number.isFinite(n.top)&&n.width>0&&n.height>0)if(e===document.body||e===document.documentElement)a=n.left+i.scrollLeft,l=n.top+i.scrollTop;else{let p=e.getBoundingClientRect();a=n.left-p.left+e.scrollLeft,l=n.top-p.top+e.scrollTop}else{let p=this.getOffsetChainPosition(t);if(e===document.body||e===document.documentElement)a=p.left,l=p.top;else{let g=this.getOffsetChainPosition(e);a=p.left-g.left+e.scrollLeft,l=p.top-g.top+e.scrollTop}}r.setProperty("layout-doc-left",a),r.setProperty("layout-doc-top",l),r.setProperty("layout-width",d),r.setProperty("layout-height",c),r.setProperty("layout-border-radius",s.borderRadius||"0px")}getOffsetSize(r,t){let e=parseFloat(t.width),i=parseFloat(t.height);return{width:r.offsetWidth||r.clientWidth||(Number.isFinite(e)?e:0),height:r.offsetHeight||r.clientHeight||(Number.isFinite(i)?i:0)}}getOffsetChainPosition(r){let t=0,e=0,i=r;for(;i;)t+=i.offsetLeft||0,e+=i.offsetTop||0,i=i.offsetParent;return{left:t,top:e}}calculatePositions(r,t){let e=r.getProperty("start"),i=r.getProperty("size"),n=r.getProperty("offset-enter")??r.getProperty("offset-bottom"),s=r.getProperty("offset-exit")??r.getProperty("offset-top"),o=r.getProperty("enter-el"),a=r.getProperty("enter-vp"),l=r.getProperty("exit-el"),d=r.getProperty("exit-vp"),c=-0,p=-0,g=-0,h=-0;o==="top"&&a==="top"||o==="left"&&a==="left"?(g=-t+1,c=e-n):o==="top"&&a==="bottom"||o==="left"&&a==="right"?c=e-t-n:o==="bottom"&&a==="top"||o==="right"&&a==="left"?(g=-t-i+1,c=e+i-n):(o==="bottom"&&a==="bottom"||o==="right"&&a==="right")&&(g=-i+1,c=e-t+i-n),l==="top"&&d==="top"||l==="left"&&d==="left"?(h=-i+1,p=e+s):l==="top"&&d==="bottom"||l==="left"&&d==="right"?(h=-t-i+1,p=e-t+s):l==="bottom"&&d==="top"||l==="right"&&d==="left"?p=e+i+s:(l==="bottom"&&d==="bottom"||l==="right"&&d==="right")&&(h=-t+1,p=e-t+i+s),r.setProperty("start-bias",g),r.setProperty("end-bias",h),r.setProperty("start-position",c-this.data.scroll.topPosition),r.setProperty("end-position",p-this.data.scroll.topPosition),r.setProperty("difference-position",p-c);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=ts){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 typeof r=="string"?+r||parseFloat(r):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)}isTokenEnabledInCurrentMode(r){let t=this.data.scroll.mode;return r.modeSpec.kind==="all"?!0:r.modeSpec.kind==="include"?r.modeSpec.values.includes(t):this.defaultModeScope==="all"?!0:this.defaultModeScope.includes(t)}isObjectEnabledInCurrentMode(r){let t=r.getToken(this.htmlKey);return t?this.isTokenEnabledInCurrentMode(t):!1}disconnectObject(r){r.disconnect(this)}connectObject(r){r.connect(this)&&this.onObjectConnected(r)}enterObject(r,t){this.allObjectMap.has(r)||(this.allObjectMap.set(r,t),this.allObjects.push(t)),this.isObjectEnabledInCurrentMode(t)&&!this.objectMap.has(r)&&(this.objectMap.set(r,t),this.objects.push(t))}fastRemoveFromArray(r,t){if(t===-1)return;let e=r.length-1;t!==e&&(r[t]=r[e]),r.pop()}exitObject(r){let t=this.objectMap.get(r);if(t){this.objectMap.delete(r);let n=this.objects.indexOf(t);this.fastRemoveFromArray(this.objects,n)}let e=this.allObjectMap.get(r);if(!e)return;this.allObjectMap.delete(r);let i=this.allObjects.indexOf(e);this.fastRemoveFromArray(this.allObjects,i)}addObject(r,t){this.allObjectMapOnPage.has(r)||(this.allObjectMapOnPage.set(r,t),this.allObjectsOnPage.push(t)),this.isObjectEnabledInCurrentMode(t)&&!this.objectMapOnPage.has(r)&&(this.objectMapOnPage.set(r,t),this.objectsOnPage.push(t))}removeObject(r){let t=this.objectMapOnPage.get(r);if(t){this.objectMapOnPage.delete(r);let n=this.objectsOnPage.indexOf(t);this.fastRemoveFromArray(this.objectsOnPage,n)}let e=this.allObjectMapOnPage.get(r);if(!e)return;this.allObjectMapOnPage.delete(r);let i=this.allObjectsOnPage.indexOf(e);this.fastRemoveFromArray(this.allObjectsOnPage,i),this.exitObject(r),this.onObjectDisconnected(e)}onObjectConnected(r){}onObjectDisconnected(r){}get respectSelfDisable(){return!0}isPrimaryElementEnabled(r){return!this.respectSelfDisable||r.getProperty("self-disable")!==!0}applyToElementAndConnects(r,t,e=t){this.isPrimaryElementEnabled(r)&&t(r.htmlElement),r.mirrorObjects.forEach(i=>e(i.htmlElement,i))}applyVarToElement(r,t,e){this.isPrimaryElementEnabled(r)&&this.tools.styleTxn.setVar(r.htmlElement,t,e)}applyPropToElement(r,t,e){this.isPrimaryElementEnabled(r)&&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)}clearManagedStyles(r){let t=i=>{for(let s=0;s<this.cssProperties.length;s++)i.style.removeProperty(this.cssProperties[s].name);let n=r.getProperty("key");typeof n=="string"&&n.length>0&&i.style.removeProperty(n)};t(r.htmlElement);let e=r.mirrorObjects;for(let i=0;i<e.length;i++)t(e[i].htmlElement)}onObjectModeActivated(r){}onObjectModeDeactivated(r){this.clearManagedStyles(r)}rebuildActiveObjectsForCurrentMode(){let r=new Map(this.objectMapOnPage);this.objectMapOnPage=new Map,this.objectsOnPage=[];for(let t=0;t<this.allObjectsOnPage.length;t++){let e=this.allObjectsOnPage[t];this.isObjectEnabledInCurrentMode(e)&&(this.objectMapOnPage.set(e.id,e),this.objectsOnPage.push(e))}this.objectMap=new Map,this.objects=[];for(let t=0;t<this.allObjects.length;t++){let e=this.allObjects[t];this.isObjectEnabledInCurrentMode(e)&&(this.objectMap.set(e.id,e),this.objects.push(e))}r.forEach((t,e)=>{this.objectMapOnPage.has(e)||this.onObjectModeDeactivated(t)}),this.objectMapOnPage.forEach((t,e)=>{r.has(e)||this.onObjectModeActivated(t)})}destroy(){this.objects=[],this.allObjects=[],this.objectMap=new Map,this.allObjectMap=new Map,this.objectsOnPage=[],this.allObjectsOnPage=[],this.objectMapOnPage=new Map,this.allObjectMapOnPage=new Map}onInit(){}onSubscribe(){}onUnsubscribe(){}onFrame(r){}onMutate(r){}onScrollMeasure(r){}onMouseMoveMeasure(r){}onResize(){}onResizeWidth(){}onScroll(r){}onDirectionChange(){}onScrollStart(){}onScrollStop(){}onScrollDirectionChange(){}onAxisChange(){}onDeviceChange(){}onScrollConfigChange(){this.rebuildActiveObjectsForCurrentMode()}onSettingsChange(){}onDOMRebuild(){}onMouseMove(r){}onWheel(r){}onDOMMutate(r,t){}};var Ie=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 Dt;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 kt(t,r);r.setAttribute(e,i.id);let n=r.getAttribute("string")??r.getAttribute("data-string");n&&i.setTokens(this.parseStringTokens(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 p=o[c];"setupCoreProperties"in p&&typeof p.setupCoreProperties=="function"&&p.setupCoreProperties(i,r,s)}let a=this.connectableModulesBuffer;a.length=0;let l=this.modules.all,d=null;for(let c=0;c<l.length;c++){let p=l[c];p instanceof C&&p.key===""&&(d=p),p instanceof C&&p.canConnect(i)&&a.push(p)}if(a.length===0&&d&&(i.setProperty("inview-fallback",!0),a.push(d)),this.domBatcherEnabled&&a.length>0){let c=new Array(a.length);for(let p=0;p<a.length;p++)c[p]={module:a[p],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 p=a[c];p.initializeObject(this.globalId,i,r,s),p.calculatePositions(i,this.data.viewport.windowHeight),p.connectObject(i),p.addObject(i.id,i)}this.initObservers(i,r),this.checkInviewForObject(i)}if(this.connectQueue.length>0){let c=0;for(let p=0;p<this.connectQueue.length;p++){let g=this.connectQueue[p];if(g.id===i.id){this.attachMirrorToObject(i,g.element);continue}this.connectQueue[c++]=g}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)}}attachModule(r){this.objects.forEach(t=>{if(!r.canConnect(t))return;let e=t.htmlElement,i=this.getAllAttributes(e);r.initializeObject(this.globalId,t,e,i),r.calculatePositions(t,this.data.viewport.windowHeight),r.connectObject(t),r.addObject(t.id,t),t.getProperty("active")===!0&&r.enterObject(t.id,t)})}refreshModuleConnectionsForCurrentMode(){let r=this.modules.all;for(let t of this.objects.values()){let e=t.htmlElement;if(!e||!e.isConnected)continue;let i=null;for(let n=0;n<r.length;n++){let s=r[n];if(!(s instanceof C)||!t.keys.includes(s.key))continue;let o=s.canConnect(t),a=t.isConnectedTo(s);if(o&&!a){i==null&&(i=this.getAllAttributes(e)),s.initializeObject(this.globalId,t,e,i),s.calculatePositions(t,this.data.viewport.windowHeight),s.connectObject(t),s.addObject(t.id,t),t.getProperty("active")===!0&&s.enterObject(t.id,t);continue}!o&&a&&(s.exitObject(t.id),s.removeObject(t.id),s.disconnectObject(t))}}}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 d=a[l];d instanceof C&&d.canConnect(n)&&(d.initializeObject(this.globalId,n,s,o),d.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 d of e){let c=this.mirrors.get(d);if(c&&c.parentObject===r)return c}let i=`string-mirror-${this.mirrorId++}`,n=new De(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");s&&s.trim().length>0&&(n.setEasing(this.tools.easingFunction.process({easing:s})),n.setProperty("easing",s));let o=r.getProperty("key"),a=r.getProperty("progress-raw"),l=r.getProperty("progress-value");if(typeof a=="number"){let d=r.getProperty("easing")??void 0,c=n.applyProgress(a,d);n.setProperty("progress",c),o&&this.tools.styleTxn.setVar(n.htmlElement,o,c)}else typeof l=="number"&&(n.setProperty("progress",l),o&&this.tools.styleTxn.setVar(n.htmlElement,o,l));return 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-exit")??r.getProperty("offset-top")??0,i=r.getProperty("offset-enter")??r.getProperty("offset-bottom")??0;r.getProperty("observer-progress")?.disconnect();let n=g=>{g.forEach(h=>{this.events.emit(r.getScopedEventName("object:activate"),h.isIntersecting),h.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",d=s!=null?s===!0:l,c=this.data.scroll.container===document.body||d?null:this.data.scroll.container,p=new IntersectionObserver(n,{root:c,rootMargin:`${i+this.data.viewport.windowHeight}px 0px ${e+this.data.viewport.windowHeight}px 0px`,threshold:0});p.observe(t),r.setProperty("observer-progress",p)}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 d=l.querySelectorAll("[string],[data-string]");for(let p=0;p<d.length;p++){let g=d[p];this.isFixed(g)||this.handleRemoved(g)}let c=l.querySelectorAll("[string-copy-from],[data-string-copy-from]");for(let p=0;p<c.length;p++)this.detachMirrorByElement(c[p])}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 d=l.querySelectorAll("[string]:not([string-inited]),[data-string]:not([string-inited])");for(let g=0;g<d.length;g++)this.add(d[g]);let c=l.getAttribute("string-copy-from")??l.getAttribute("data-string-copy-from");c&&this.linkMirror(c,l);let p=l.querySelectorAll("[string-copy-from],[data-string-copy-from]");for(let g=0;g<p.length;g++){let h=p[g],m=h.getAttribute("string-copy-from")??h.getAttribute("data-string-copy-from");m&&this.linkMirror(m,h)}}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 d=r.getProperty("start-position"),c=r.getProperty("end-position");if(d!=null&&c!=null){let p=Math.min(d,c),g=Math.max(d,c),h=r.getProperty("is-active")??!1,m=t>=p&&t<=g;m!==h&&(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 d=Math.abs(t-s),c=Math.abs(o-t);l=d<=c?"enter-top":"enter-bottom"}else n&&!a&&(l=t<s?"exit-top":"exit-bottom");a!==n&&(r.setProperty("is-inview",a),r.setInviewAutoBlocked(!1),r.setInviewManualActive(!1),a?r.show():r.hide(),this.events.emit(r.getScopedEventName("object:inview"),{inView:a,direction:l}))}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}parseStringTokens(r){let t=this.splitTopLevelPipe(r),e=[];for(let i=0;i<t.length;i++){let n=t[i].trim();if(n.length===0)continue;let s=n.match(/^([^\[\]]+?)(?:\[([^\]]*)\])?$/);if(!s){e.push({raw:n,key:n,modeSpec:{kind:"default",values:[]}});continue}let o=s[1].trim(),a=s[2];if(!o)continue;if(a==null){e.push({raw:n,key:o,modeSpec:{kind:"default",values:[]}});continue}let l=a.trim();if(l.length===0){e.push({raw:n,key:o,modeSpec:{kind:"all",values:[]}});continue}let d=this.splitTopLevelPipe(l).map(c=>c.trim()).filter(c=>c.length>0);e.push({raw:n,key:o,modeSpec:d.length>0?{kind:"include",values:d}:{kind:"all",values:[]}})}return e}splitTopLevelPipe(r){let t=[],e="",i=0;for(let n=0;n<r.length;n++){let s=r[n];if(s==="["){i++,e+=s;continue}if(s==="]"){i=Math.max(0,i-1),e+=s;continue}if(s==="|"&&i===0){t.push(e),e="";continue}e+=s}return e.length>0&&t.push(e),t}destroy(){this.domObserver?.disconnect(),this.domObserver=null,this.domBatcher.clear()}};var K={SCROLL_FORWARD:"-scroll-forward",SCROLL_BACKWARD:"-scroll-backward",SCROLLING_FORWARD:"-scrolling-forward",SCROLLING_BACKWARD:"-scrolling-backward"};var et=class{constructor(r){this.name="";this.isProg=!1;this.isParallaxEnabled=!1;this._isVertical=!0;this._scrollDirState=-1;this._lastAppliedDirState=-1;this.isLastBottomScrollDirection=!0;this.scrollTriggerRules=[];this.isActive=!1;this.onChangeDirection=()=>{};this.onScrollStart=()=>{};this.onScrollStop=()=>{};this.document=document,this.context=r}set scrollDirection(r){this._isVertical=r==="vertical"}onCalcUpdate(){if(!this.isActive)return;let r=this.context.data.scroll.scrollContainer,t=this.context.data.scroll.current;r&&(this._isVertical?r.scrollTo(0,t):r.scrollTo(t,0)),this._isVertical&&this.triggerScrollRules()}onFrame(){}onWheel(r){}onScroll(r){}onTouchStart(r){}onTouchMove(r){}onTouchEnd(r){}disableScrollEvents(){}enableScrollEvents(){}activate(){this.isActive||(this.isActive=!0,this.enableScrollEvents())}deactivate(){if(!this.isActive)return;this.isActive=!1,this.disableScrollEvents(),this.isProg=!1;let r=this.context.data.scroll;r.target=r.current,r.delta=0,r.lerped=0,r.displacement=0,this.clearScrollingClasses(),this._scrollDirState=-1,this._lastAppliedDirState=-1,this.onScrollStop()}destroy(){}updateScrollDirection(r){this.isLastBottomScrollDirection=r;let t=r?1:0;if(this._scrollDirState===-1){this._scrollDirState=t;return}if(this._scrollDirState=t,this.context.data.scroll.isScrollingDown=r,this.onChangeDirection(),this.context.events.emit("scroll:direction:change",r),this.context.settings["global-class"]&&this._lastAppliedDirState!==t){let e=document.documentElement.classList;r?(e.remove(K.SCROLLING_BACKWARD,K.SCROLL_BACKWARD),e.add(K.SCROLLING_FORWARD,K.SCROLL_FORWARD)):(e.remove(K.SCROLLING_FORWARD,K.SCROLL_FORWARD),e.add(K.SCROLLING_BACKWARD,K.SCROLL_BACKWARD)),this._lastAppliedDirState=t}}clearScrollingClasses(){document.documentElement.classList.remove(K.SCROLLING_BACKWARD,K.SCROLLING_FORWARD,K.SCROLL_BACKWARD,K.SCROLL_FORWARD)}triggerScrollRules(){let r=this.scrollTriggerRules,t=r.length,e=this.context.data.scroll.current,i=this.isLastBottomScrollDirection;for(let n=0;n<t;n++){let s=r[n],a=(s.direction==="any"||i&&s.direction==="forward"||!i&&s.direction==="backward")&&e>=s.offset;a&&!s.isActive?(s.isActive=!0,s.onEnter?.(),s.toggleClass&&s.toggleClass.target.classList.add(s.toggleClass.className)):!a&&s.isActive&&(s.isActive=!1,s.onLeave?.(),s.toggleClass&&s.toggleClass.target.classList.remove(s.toggleClass.className))}}addScrollMark(r){this.scrollTriggerRules.push(r)}removeScrollMark(r){let t=this.scrollTriggerRules;for(let e=0;e<t.length;e++)if(t[e].id===r){t.splice(e,1);break}}scrollTo(r,t){}};var Re=class extends et{constructor(t){super(t);this.name="default";this.previousScrollTop=0;this.previousScrollTime=0;this.isScrolling=!1;this.lastScrollEventTime=0;this.nativeVelocity=0;this.nativeVelocityTarget=0;this.scrollStopDelay=120;this.nativeVelocityFollow=.2;this.nativeVelocityDecay=.84;this.nativeVelocityBoost=2;this.nativeVelocityDeadzone=.25}onFrame(){let t=0;if(this.context.data.scroll.delta!==0){let i=this.context.data.scroll.delta*this.context.data.scroll.speedAccelerate;this.context.data.scroll.delta-=i,t=i,Math.abs(t)<.1&&(this.context.data.scroll.delta=0,t=0)}let e=performance.now();this.nativeVelocityTarget*=this.nativeVelocityDecay,Math.abs(this.nativeVelocityTarget)<this.nativeVelocityDeadzone&&(this.nativeVelocityTarget=0),this.nativeVelocity+=(this.nativeVelocityTarget-this.nativeVelocity)*this.nativeVelocityFollow,Math.abs(this.nativeVelocity)<this.nativeVelocityDeadzone&&(this.nativeVelocity=0),Math.abs(this.nativeVelocity)>Math.abs(t)&&(t=this.nativeVelocity),this.context.data.scroll.lerped=t,this.isScrolling&&!(this.context.data.scroll.delta!==0||this.nativeVelocityTarget!==0||this.nativeVelocity!==0)&&e-this.lastScrollEventTime>this.scrollStopDelay&&(this.isScrolling=!1,this.onScrollStop(),this.clearScrollingClasses())}onScroll(t){let e=performance.now(),i=this.context.data.scroll.elementContainer.scrollTop,n=i-this.previousScrollTop;if(this.context.data.scroll.current=i,this.context.data.scroll.target=i,this.context.data.scroll.transformedCurrent=i*this.context.data.viewport.transformScale,n!==0){this.updateScrollDirection(n>0);let s=this.previousScrollTime===0?16.6667:e-this.previousScrollTime,o=n*(16.6667/Math.max(8,s))*this.nativeVelocityBoost;this.nativeVelocityTarget=o,this.previousScrollTop=i,this.previousScrollTime=e}this.triggerScrollRules(),this.lastScrollEventTime=e,this.isScrolling||(this.isScrolling=!0,this.onScrollStart())}onWheel(t){t.deltaY!==0&&(this.context.data.scroll.delta===0&&!this.isScrolling&&(this.isScrolling=!0,this.onScrollStart()),this.context.data.scroll.delta+=t.deltaY,this.lastScrollEventTime=performance.now())}deactivate(){super.deactivate(),this.isScrolling=!1,this.lastScrollEventTime=0,this.previousScrollTop=this.context.data.scroll.current,this.previousScrollTime=0,this.nativeVelocity=0,this.nativeVelocityTarget=0}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.nativeVelocity=0,this.nativeVelocityTarget=0,this.previousScrollTop=t,this.previousScrollTime=0,this.triggerScrollRules(),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 He=class extends et{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 Be=class extends et{constructor(t){super(t);this.name="smooth";this.scrollForce=0;this.wheelImpulse=0;this.previousCurrent=0;this.velocityThreshold=.01;this.stepResult={current:.1,target:.1,delta:.1,lerped:.1,scrollForce:.1,absVelocity:.1};this.stepResult.current=0,this.stepResult.target=0,this.stepResult.delta=0,this.stepResult.lerped=0,this.stepResult.scrollForce=0,this.stepResult.absVelocity=0}stopScroll(){let t=this.context.data.scroll;t.lerped=0,t.delta=0,t.target=t.current,this.isProg=!1,this.onCalcUpdate(),this.clearScrollingClasses(),this._scrollDirState=-1,this._lastAppliedDirState=-1}onFrame(){let t=this.context.data.scroll;if(t.delta!==0){this.computeStep(t.current,t.target,t.delta,t.speed,t.speedAccelerate,t.bottomPosition,this.stepResult),this.scrollForce=this.stepResult.scrollForce,t.target=this.stepResult.target,t.delta=this.stepResult.delta,t.lerped=this.stepResult.lerped,t.current=this.stepResult.current;let e=this.context.data.viewport.transformScale;t.transformedCurrent=e!==1?t.current*e:t.current,this.updateScrollDirection(t.lerped>0),this.stepResult.absVelocity<this.velocityThreshold?(t.current=Math.round(t.target),this.previousCurrent=t.current,this.onCalcUpdate(),this.stopScroll(),this.onScrollStop()):(this.isProg=!0,this.previousCurrent!==t.current&&(this.previousCurrent=t.current,this.onCalcUpdate()))}}onWheel(t){if(t.deltaY!==0&&t.preventDefault(),this.wheelImpulse=t.deltaY,this.wheelImpulse===0)return;let e=this.context.data.scroll;e.delta===0&&this.onScrollStart();let i=this.wheelImpulse<0,n=e.target===0&&i,s=e.target===e.bottomPosition&&!i;!n&&!s&&(e.delta+=this.wheelImpulse)}onScroll(t){if(!this.isProg){let e=this.context.data.scroll,i=e.elementContainer.scrollTop,n=i-e.current;e.current=i,e.target=i,e.delta=0,e.lerped=n,e.displacement=0;let s=this.context.data.viewport.transformScale;e.transformedCurrent=s!==1?i*s:i,this.scrollForce=0,this.wheelImpulse=0,this.isProg=!1,this.previousCurrent=i,n!==0&&(this.updateScrollDirection(n>0),this.triggerScrollRules())}}deactivate(){super.deactivate(),this.scrollForce=0,this.wheelImpulse=0,this.previousCurrent=this.context.data.scroll.current}scrollTo(t,e){let i=this.context.data.scroll;if(e){i.current=t,i.target=t,i.delta=0,i.lerped=0;let n=this.context.data.viewport.transformScale;i.transformedCurrent=n!==1?t*n:t,this.onCalcUpdate();return}i.target=t,i.delta=1}computeStep(t,e,i,n,s,o,a){let l=i*s,d=Math.min(Math.max(0,e+l),o),c=(d-t)*n,p=i-l,g=t+c;a.current=g,a.target=d,a.delta=p,a.lerped=c,a.scrollForce=l,a.absVelocity=Math.abs(c)}};var _e=class{constructor(r){this.context=r;this.modes=new Map;this.boundEvents=null;this.scrollMarks=[];this.registerMode("smooth",new Be(r)),this.registerMode("default",new Re(r)),this.registerMode("disable",new He(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.get().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(),this.boundEvents?.onModeChange()}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)}onTouchStart(r){this.get().onTouchStart(r)}onTouchMove(r){this.get().onTouchMove(r)}onTouchEnd(r){this.get().onTouchEnd(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 Fe=class{constructor(){this.targetX=0;this.targetY=0;this.smoothedX=0;this.smoothedY=0;this.stepX=0;this.stepY=0;this.velocityX=0;this.velocityY=0}};var Ve=class{constructor(){this.threeInstance=null}};var We=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="default";this.modeDesktop="smooth";this.speed=.1;this.speedAccelerate=.25}};var Ne=class{constructor(){this.fpsTracker=!1;this.positionTracker=!1;this.suppressMasonryResize=!1}};var ze=class{constructor(){this.now=0;this.previous=0;this.delta=0;this.elapsed=0}};var Ge=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 Xt=class{constructor(){this.scroll=new We;this.viewport=new Ge;this.cursor=new Fe;this.render=new Ve;this.time=new ze;this.system=new Ne}};var qt=class{process({element:r}){return r.getBoundingClientRect()}};var Kt=class{process({element:r,key:t,fallback:e=null}){return r.getAttribute(`string-${t}`)??r.getAttribute(`data-string-${t}`)??e}};var Zt=class{process({record:r,name:t,fallback:e=null}){return r[t]??r[`data-${t}`]??e}};var Mt=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,d]=i,c=n*a-s*o;return{width:t.width/(n||1),height:t.height/(a||1),left:(t.left*a-t.top*o+o*d-l*a)/c,top:(-t.left*s+t.top*n+l*s-n*d)/c}}return t}};var Qt=class{constructor(r=new Mt){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 Jt=class{process({from:r,to:t,progress:e}){return(t-r)*e}};var te=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,d=!1;l.startsWith("-")&&(d=!0,l=l.slice(1));let c=0;l==="selfHeight"?c=t.offsetHeight:l.endsWith("px")?c=parseFloat(l):l.endsWith("%")?c=parseFloat(l)/100*e:l.endsWith("rem")?c=parseFloat(l)*i:l.endsWith("sh")?c=parseFloat(l)*n.height/100:c=parseFloat(l),o+=d?-c:c}return o}};var ee=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 gt={left:0,center:.5,right:1},ht={top:0,center:.5,bottom:1},re=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 gt&&!(a in ht)?{x:l,y:.5}:a in ht&&!(a in gt)?{x:.5,y:l}:{x:l,y:l}}let[i,n]=e,s=i in ht&&!(i in gt),o=n in gt&&!(n in ht);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 gt)return gt[r];if(t==="vertical"&&r in ht)return ht[r];if(r in gt)return gt[r];if(r in ht)return ht[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 ie=class{process({value:r}){let t=r.trim().toLowerCase();if(t.startsWith("#")){let n=t.slice(1);n.length===3&&(n=n.split("").map(d=>d+d).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(p=>p.trim()),[l,d,c]=this.hslToRgb(parseFloat(n),parseFloat(s),parseFloat(o));return{r:l,g:d,b:c,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=(d,c,p)=>(p<0&&(p+=1),p>1&&(p-=1),p<1/6?d+(c-d)*6*p:p<1/2?c:p<2/3?d+(c-d)*(2/3-p)*6:d),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 ne=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,d=1-a-l;function c(m){return((o*m+s)*m+n)*m}function p(m){return((d*m+l)*m+a)*m}function g(m){return(3*o*m+2*s)*m+n}function h(m,f=1e-5){let v,y,b=m,S,L,M;for(M=0;M<8;M++){if(S=c(b)-m,Math.abs(S)<f)return b;if(L=g(b),Math.abs(L)<1e-6)break;b=b-S/L}for(v=0,y=1,b=m;v<y;){if(S=c(b)-m,Math.abs(S)<f)return b;S>0?y=b:v=b,b=(y+v)/2}return b}return function(m){return p(h(m))}}};var se=class{process({distance:r,radius:t,strength:e}){if(r>=t)return 0;let i=(t-r)/t;return e*i}};var oe=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 ae=class{process({from:r,to:t,progress:e}){return{x:(t.x-r.x)*e,y:(t.y-r.y)*e}}};var le=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 $e=class{process({attributeValue:r}){let t={line:[],word:[],char:[],charLine:[],charWord:[],wordLine:[],fit:!1,trimInlineGaps:!1};return r&&r.split("|").forEach(i=>{let n=i.trim();if(!n)return;let s=n.match(/^([\w-]+)(\[(.*?)\])?$/);if(s){let o=this.toCamelCase(s[1]),l=(s[3]||"").split(";").map(c=>c.trim()).filter(c=>c.length>0),d=this.parseParamsArray(l);switch(o){case"line":t.line.push(d);break;case"word":t.word.push(d);break;case"char":t.char.push(d);break;case"charLine":t.charLine.push(d);break;case"charWord":t.charWord.push(d);break;case"wordLine":t.wordLine.push(d);break;case"fit":t.fit=!0;break;case"trimInlineGaps":t.trimInlineGaps=!0;break;default:console.warn(`SplitOptionsParserTool: Unrecognized option type "${o}" 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*\)/);if(i){let n=parseInt(i[1],10),s=parseInt(i[2],10);t.random={min:Math.min(n,s),max:Math.max(n,s)}}}else["start","center","end"].includes(e)&&(t.align=e)}),t}};var de=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(d=>d.trim())}:{key:a}}let o=n.indexOf(":");if(o!==-1){let a=n.slice(0,o).trim(),l=n.slice(o+1).trim(),d=l?l.split(",").map(c=>c.trim()):void 0;return{key:a,params:d}}return{key:n}})}};var Ue=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 d of r){var s=null,o=null,a=!0,l=!0;e=="input"&&(o=this.inputValidators[d.key],!o)||e=="beforeinput"&&(s=this.beforeInputValidators[d.key],!s)||(o&&(a=o(t,d.params,i)),s&&(l=s(t,d.params,i)),l||n.push(this.getErrorMessage(d.key,d.params)),a||n.push(this.getErrorMessage(d.key,d.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 gi=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}},E=new gi;var je=class{constructor(){this.domAttribute=new Kt;this.recordAttribute=new Zt;this.transformNullify=new Mt;this.boundingClientRect=new qt;this.relativePosition=new Qt(this.transformNullify);this.unitParser=new te;this.lerp=new Jt;this.adaptiveLerp=new ee;this.originParser=new re;this.colorParser=new ie;this.validation=new Ue;this.easingFunction=new ne;this.magneticPull=new se;this.lerpColor=new oe;this.lerpVector=new ae;this.transformScaleParser=new le;this.optionsParser=new $e;this.ruleParser=new de;this.styleTxn=E}};function Ye(){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 Ni=new WeakMap,$=5e-4,Ot="default",hi="[string-cursor],[data-string-cursor]",zi="[string-cursor-content],[data-string-cursor-content]",mi=1/240,Q=(u,r)=>{let t=Math.pow(10,r);return Math.round(u*t)/t};function es(u){let r=Ni.get(u);return r||(r={prevX:Number.NaN,prevY:Number.NaN},Ni.set(u,r)),r}var Xe=class extends C{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"]??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:e=>this.tools.adaptiveLerp.process({value:e,inMin:.1,inMax:1,outMin:.05,outMax:.65})},{key:"cursor-float",type:"number",fallback:2},{key:"cursor-vars",type:"string",fallback:""}],Ye()&&(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<mi&&(i=mi);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"),d=o.getProperty("lerp")??.15,c=this.getFrameAdjustedLerp(d,i),p=this.getObjectDimensions(o),{halfWidth:g,halfHeight:h,width:m,height:f}=p;if(a&&!l){let{cx:v,cy:y}=this.centers.getCenter(o),b=n-(v-g),S=s-(y-h),L=o.getProperty("mouse-pixel-x")??0,M=o.getProperty("mouse-pixel-y")??0,x=L-b,I=M-S;if(x*x+I*I>1e-4){let R=o.getProperty("is-mouse-move")??!1,k=o.getProperty("cursor-enter")??"snap",A=o.getProperty("alignment")??"center";if(!R){if(o.setProperty("is-mouse-move",!0),k==="snap")o.setProperty("mouse-pixel-x",b),o.setProperty("mouse-pixel-y",S),o.setProperty("mouse-x",b),o.setProperty("mouse-y",S),L=b,M=S;else{let N=o.getProperty("mouse-x")??0,X=o.getProperty("mouse-y")??0;L=this.reverseOffset(A,N,m),M=this.reverseOffset(A,X,f),o.setProperty("mouse-pixel-x",L),o.setProperty("mouse-pixel-y",M)}this.events.emit(this.getObjectEventName(o,"cursor:start"),null)}let V=this.tools.lerp.process({from:L,to:b,progress:c}),D=this.tools.lerp.process({from:M,to:S,progress:c}),T=L+V,P=M+D,H=Math.abs(T-L)>$||Math.abs(P-M)>$;o.setProperty("mouse-pixel-x",T),o.setProperty("mouse-pixel-y",P);let B=this.calculateOffset(A,T,m),W=this.calculateOffset(A,P,f);o.setProperty("mouse-x",B),o.setProperty("mouse-y",W),this.setMouseCoordinates(o,B,W,T,P)&&this.events.emit(this.getObjectEventName(o,"cursor:move"),{x:B,y:W}),H&&this.events.emit(this.getObjectEventName(o,"cursor:pixel"),{x:T,y:P})}else{o.setProperty("mouse-pixel-x",b),o.setProperty("mouse-pixel-y",S),o.getProperty("is-mouse-move")&&(o.setProperty("is-mouse-move",!1),this.events.emit(this.getObjectEventName(o,"cursor:end"),null));let R=o.getProperty("alignment")??"center",k=this.calculateOffset(R,b,m),A=this.calculateOffset(R,S,f);this.setMouseCoordinates(o,k,A,b,S)}}else{if(o.getProperty("cursor-leave-hold")??!1){o.getProperty("is-mouse-move")&&(o.setProperty("is-mouse-move",!1),this.events.emit(this.getObjectEventName(o,"cursor:end"),null));return}if((o.getProperty("cursor-leave")??"smooth")==="snap"){o.setProperty("is-mouse-move",!1),o.setProperty("mouse-x",0),o.setProperty("mouse-y",0),o.setProperty("mouse-pixel-x",0),o.setProperty("mouse-pixel-y",0),this.setMouseCoordinates(o,0,0,0,0);return}let b=o.getProperty("mouse-x")??0,S=o.getProperty("mouse-y")??0;if(b!==0||S!==0){o.setProperty("is-mouse-move",!1);let L=this.calculateOffset("center",g,m),M=this.calculateOffset("center",h,f),x=b+this.tools.lerp.process({from:b,to:L,progress:c}),I=S+this.tools.lerp.process({from:S,to:M,progress:c});o.setProperty("mouse-x",x),o.setProperty("mouse-y",I),Math.abs(x)<.001&&Math.abs(I)<.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,x,I)}}}),this.cursorPortals.size>0){let{stepX:o,stepY:a,smoothedX:l,smoothedY:d}=this.data.cursor,c=this.cursorPrev;(!Number.isFinite(c.x)||Math.abs(l-c.x)>$||Math.abs(d-c.y)>$||Math.abs(o-c.stepX)>$||Math.abs(a-c.stepY)>$)&&(this.events.emit("cursor",{stepX:o,stepY:a,x:l,y:d}),this.cursorPrev={x:l,y:d,stepX:o,stepY:a});let g=this.data.cursor.targetX,h=this.data.cursor.targetY;this.cursorPortals.forEach(m=>{m.forEach(f=>{this.updatePortalPosition(f,g,h,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(hi).forEach(e=>{if(!(e instanceof HTMLElement))return;let i=this.resolvePortalId(e),n=this.resolvePortalLerp(e),s=e.matches(zi)?e:e.querySelector(zi),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},d=this.cursorPortals.get(i);d?d.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 Ot}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(hi)||e.querySelector(hi)))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: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 e=t.getProperty("cursor-target");return typeof e!="string"||e.trim().length===0?[Ot]: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,d=this.getFrameAdjustedLerp(l,n),c=(e-o)*d,p=(i-a)*d,g=n>1e-4?n:1/60,h=c/(g*60),m=p/(g*60);if(Math.abs(c)<$&&Math.abs(p)<$)return;let f=o+c,v=a+p;this.writePortalVars(t.element,{"--x":Q(f,2),"--y":Q(v,2),"--x-lerp":Q(h,3),"--y-lerp":Q(m,3)}),s.x=f,s.y=v,s.stepX=c,s.stepY=p}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=es(t),a=t.getProperty("cursor-float")??2,l=Math.pow(10,a),d=Math.abs(e)<$&&Number.isFinite(o.prevX)&&Math.abs(o.prevX)<$?o.prevX:Math.round(e*l)/l,c=Math.abs(i)<$&&Number.isFinite(o.prevY)&&Math.abs(o.prevY)<$?o.prevY:Math.round(i*l)/l;if(Number.isFinite(o.prevX)&&Math.abs(d-o.prevX)<=$&&Number.isFinite(o.prevY)&&Math.abs(c-o.prevY)<=$)return!1;o.prevX=d,o.prevY=c;let p=t.getProperty("__cursor-vars"),g={"--x":Q(d,a),"--y":Q(c,a)};if(p&&p.size>0){let m=Number.isFinite(n)?n:t.getProperty("mouse-pixel-x"),f=Number.isFinite(s)?s:t.getProperty("mouse-pixel-y"),v=t.getProperty("__prev-x-px"),y=t.getProperty("__prev-y-px"),b=Number.isFinite(v)?m-v:0,S=Number.isFinite(y)?f-y:0;t.setProperty("__prev-x-px",m),t.setProperty("__prev-y-px",f);let L=b===0&&S===0?0:Math.atan2(S,b),M=L*180/Math.PI;p.has("xpx")&&(g["--x-px"]=Q(m,2)),p.has("ypx")&&(g["--y-px"]=Q(f,2)),p.has("dx")&&(g["--dx"]=Q(b,3)),p.has("dy")&&(g["--dy"]=Q(S,3)),p.has("angle")&&(g["--angle"]=Q(L,4)),p.has("angle-deg")&&(g["--angle-deg"]=Q(M,2))}let h=()=>{this.applyToElementAndConnects(t,m=>{E.setVars(m,g)})};return E.isOpen?h():E.run(h),!0}writePortalVars(t,e){if(E.isOpen){E.setVars(t,e);return}E.run(()=>{E.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,mi)*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 h=e/2,m=i/2;return{width:e,height:i,halfWidth:h,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"),d=typeof a=="number"&&Number.isFinite(a)?a:s/2,c=typeof l=="number"&&Number.isFinite(l)?l:o/2,p=d>0?d*2:s,g=c>0?c*2:o;return t.setProperty("cached-width",p),t.setProperty("cached-height",g),{width:p,height:g,halfWidth:d,halfHeight:c}}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)}}reverseOffset(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 qe=class extends C{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 p=a.width||1,g=Math.max(0,Math.min(1,(this.data.cursor.targetX-a.left)/p));this.events.emit(this.getObjectEventName(o,"object:impulse","side"),{value:g})}let d=o.getProperty("position-strength")||0;if(d!==0){let p=o.getProperty("continuous-push")??!0,g=o.getProperty("__push-latch")===!0;if(p||!g){let h=o.getProperty("velocity-x")||0,m=o.getProperty("velocity-y")||0;h+=e*d,m+=i*d,o.setProperty("velocity-x",h),o.setProperty("velocity-y",m),p||o.setProperty("__push-latch",!0)}}let c=o.getProperty("rotation-strength")??.75;if(c!==0){let p=o.getProperty("continuous-push")??!0,g=o.getProperty("__rotate-latch")===!0;if(p||!g){let{centerX:h,centerY:m}=this.getRotationOriginFromRect(o,a),f=n-h,v=s-m,y=f*i-v*e,b=o.getProperty("ang-vel-deg")||0;b+=y*c*.02,o.setProperty("ang-vel-deg",b),p||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,d=s.getProperty("velocity-y")||0,c=s.getProperty("position-tension")??.05,p=s.getProperty("position-friction")??.15,g=s.getProperty("position-max-velocity")??120,h=s.getProperty("max-offset")??220;l-=c*o,d-=c*a;let m=1-p;l*=m,d*=m,l>g?l=g:l<-g&&(l=-g),d>g?d=g:d<-g&&(d=-g),o+=l,a+=d,o>h?o=h:o<-h&&(o=-h),a>h?a=h:a<-h&&(a=-h);let f=s.getProperty("angle-deg")||0,v=s.getProperty("ang-vel-deg")||0,y=s.getProperty("rotation-tension")??.06,b=s.getProperty("rotation-friction")??.18,S=s.getProperty("rotation-max-angular-velocity")??6,L=s.getProperty("rotation-max-angle")??18;v-=y*f,v*=1-b,v>S?v=S:v<-S&&(v=-S),f+=v,f>L?(f=L,v*=.35):f<-L&&(f=-L,v*=.35);let M=s.getProperty("sleep-epsilon")??.01,x=l*l+d*d<M*M&&o*o+a*a<M*M,I=Math.abs(v)<M&&Math.abs(f)<M;x?(l||d||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=d=0):(s.setProperty("offset-x",o),s.setProperty("offset-y",a),s.setProperty("velocity-x",l),s.setProperty("velocity-y",d)),I?(f||v)&&(s.setProperty("angle-deg",0),s.setProperty("ang-vel-deg",0),f=v=0):(s.setProperty("angle-deg",f),s.setProperty("ang-vel-deg",v));let w=s.getProperty("position-update-threshold")??.1,R=s.getProperty("rotation-update-threshold")??.15,k=s.getProperty("__prev-css-x")||0,A=s.getProperty("__prev-css-y")||0,V=s.getProperty("__prev-css-rot")||0,D=Math.round(o*10)/10,T=Math.round(a*10)/10,P=Math.round(f*10)/10,H=Math.abs(D-k)>w||Math.abs(T-A)>w,B=Math.abs(P-V)>R;(H||B)&&(s.setProperty("__next-css-x",D),s.setProperty("__next-css-y",T),s.setProperty("__next-css-rot",P)),s.setProperty("__needs-position-update",H),s.setProperty("__needs-rotation-update",B)}}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&&(E.setVar(l,"--push-x",s),E.setVar(l,"--push-y",o)),n&&E.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 fi=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}},U=new fi;var rs=20,nt={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 Gi(u){if(!u)return nt.DEFAULT_DURATION;let r=parseFloat(u);return isNaN(r)?nt.DEFAULT_DURATION:r}function Ke(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 Ze=class extends C{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||nt.DEFAULT_EASING})}onObjectConnected(t){super.onObjectConnected(t);let e=t.htmlElement;E.begin(),E.setProps(e,{position:"relative",boxSizing:"border-box"}),E.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(nt.MANUAL_COLS_KEY,Number(s.cols)),s.gap!==void 0&&t.setProperty(nt.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;E.run(()=>{if(n.isAnimatingHeight){let o=e-n.heightStartTime,a=Math.min(1,o/n.heightDuration),l=n.heightEase(a),d=n.startHeight+(n.targetHeight-n.startHeight)*l;E.setProps(i.htmlElement,{height:`${d}px`}),a<1?s++:n.isAnimatingHeight=!1}n.items.forEach((o,a)=>{if(!o.isMoving)return;let l=e-o.startTime,d=l*o.invPosDur,c=d>1?1:d,p=o.posEase(c);o.cx=o.sx+o.dx*p,o.cy=o.sy+o.dy*p;let g=l*o.invSizeDur,h=g>1?1:g,m=o.sizeEase(h);o.cw=o.sw+o.dw*m,E.setProps(a,{transform:`translate3d(${o.cx}px, ${o.cy}px, 0)`,...Math.abs(o.dw)>.05?{width:`${o.cw}px`}:{},willChange:"transform, width"}),c<1||h<1?s++:(o.isMoving=!1,E.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,d=this.states.get(t);if(!d||Math.abs(l.width-d.lastObservedWidth)<=.5&&Math.abs(l.height-d.lastObservedHeight)<=.5)return;d.lastObservedWidth=l.width,d.lastObservedHeight=l.height;let c=getComputedStyle(e),p=parseFloat(c.paddingLeft)||0,g=parseFloat(c.paddingRight)||0,h=l.width-p-g;if(h<=0)return;let{columns:m,gap:f}=this.getGridSettings(t),v=(h-f*(m-1))/m;m===d.lastLayoutColumns&&f===d.lastLayoutGap&&Math.abs(v-d.lastLayoutColumnWidth)<=.5||(d.resizeDebounceId&&window.clearTimeout(d.resizeDebounceId),d.resizeDebounceId=window.setTimeout(()=>{d.isResizing=!0,this.scheduleLayout(t,!0,"resize-observer"),d.isResizing=!1},rs))},s=a=>{let l=this.states.get(t);if(!l)return;let d=!1;for(let c of a)c.removedNodes.length&&c.removedNodes.forEach(p=>{if(p.nodeType===1){let g=p;this.cleanupImgListeners(l,g),l.items.delete(g),d=!0}}),c.addedNodes.length&&c.addedNodes.forEach(p=>{p.nodeType===1&&(this.attachImgLoaders(t,l,p),d=!0)});d&&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:nt.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=nt.DEFAULT_DURATION,e.heightEase=this.parseEasing(null),e.isAnimatingHeight=!0,e.isAnimating=!0;return}E.run(()=>{E.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,U.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),d=parseFloat(l.paddingLeft)||0,c=parseFloat(l.paddingRight)||0,p=parseFloat(l.paddingTop)||0,g=a.width-d-c;if(g<=0)return;let{columns:h,gap:m}=this.getGridSettings(t),f=(g-m*(h-1))/h,y=(t.getProperty("masonry-mode")||"auto")==="auto"&&i&&!e.isResizing&&n!=="window-resize"&&n!=="resize-observer",b=h===e.lastLayoutColumns&&m===e.lastLayoutGap&&Math.abs(f-e.lastLayoutColumnWidth)<=.5,S=0;o.forEach(D=>{let T=e.childIds.get(D);T||(T=e.nextChildId++,e.childIds.set(D,T)),S=S*31+T>>>0}),e.lastLayoutColumns=h,e.lastLayoutGap=m,e.lastLayoutColumnWidth=f,e.lastChildrenHash=S;let L=new Map;i&&o.forEach(D=>{let T=e.items.get(D);T&&L.set(D,T.cw)}),E.begin(),o.forEach(D=>{E.setProps(D,{position:"absolute",top:"0",left:"0",width:`${f}px`})}),E.commit();let M=o.map(D=>D.offsetHeight),x=0;M.forEach(D=>x=x*31+Math.round(D*2)>>>0),e.lastHeightsHash=x,i&&L.size>0&&E.run(()=>{L.forEach((D,T)=>{E.setProps(T,{width:`${D}px`})})});let I=new Array(h).fill(0),w=performance.now(),R=!1,k=0;o.forEach((D,T)=>{let P=M[T],H=0,B=I[0];for(let q=1;q<h;q++)I[q]<B&&(B=I[q],H=q);let W=H*(f+m)+d,G=B+p,N=f;I[H]=B+P+m;let X=Gi(D.getAttribute("string-masonry-position-time")),ot=Gi(D.getAttribute("string-masonry-size-time")),wt=X>0?1/X:1e3,at=ot>0?1/ot:1e3,ut=this.parseEasing(D.getAttribute("string-masonry-position-easing")),Pt=this.parseEasing(D.getAttribute("string-masonry-size-easing")),O=e.items.get(D);if(O)Math.abs(O.tx-W)+Math.abs(O.ty-G)+Math.abs(O.tw-N)>.5&&(O.sx=O.cx,O.sy=O.cy,O.sw=O.cw,O.tx=W,O.ty=G,O.tw=N,O.dx=O.tx-O.sx,O.dy=O.ty-O.sy,O.dw=O.tw-O.sw,O.posEase=ut,O.invPosDur=wt,O.sizeEase=Pt,O.invSizeDur=at,O.startTime=w,O.isMoving=!0,R=!0,k=Math.max(k,X,ot));else{let q=W,pt=i?G+30:G;O={sx:q,sy:pt,sw:N,tx:W,ty:G,tw:N,dx:0,dy:0,dw:0,cx:q,cy:pt,cw:N,startTime:w,posEase:ut,invPosDur:wt,sizeEase:Pt,invSizeDur:at,isMoving:i},e.items.set(D,O),i?(O.dx=O.tx-O.sx,O.dy=O.ty-O.sy,O.dw=O.tw-O.sw,R=!0,k=Math.max(k,X,ot)):E.run(()=>{E.setProps(D,{transform:`translate3d(${W}px, ${G}px, 0)`,width:`${N}px`,willChange:"auto"})})}});let A=Math.max(...I);if(Math.abs(e.targetHeight-A)>1)if(i){let D=s.getBoundingClientRect(),T=this.data.viewport.windowHeight;var V=!1;if(D.bottom>=-100&&D.bottom<=T+100){let P=D.top+A-T;if(Math.abs(P)>1&&A<s.offsetHeight){let H=D.top+this.data.scroll.current+A-T;this.events.emit("scrollTo",H),V=!0}}A>=e.targetHeight?(y?(e.startHeight=s.offsetHeight,e.heightStartTime=w,e.heightDuration=nt.DEFAULT_DURATION,e.heightEase=this.parseEasing(null),e.isAnimatingHeight=!0):E.run(()=>{E.setProps(t.htmlElement,{height:`${A}px`}),requestAnimationFrame(()=>{this.events.emit("resize",!0)})}),e.targetHeight=A,e.pendingHeight=void 0):(e.pendingHeight=A,e.pendingHeightAnimate=y,e.targetHeight=A,V||E.run(()=>{E.setProps(t.htmlElement,{height:`${A}px`}),requestAnimationFrame(()=>{this.events.emit("resize",!0)})})),R=!0}else e.targetHeight=A,e.pendingHeight=void 0,E.run(()=>{E.setProps(t.htmlElement,{height:`${A}px`})});R&&(e.isAnimating||this.events.emit("masonry:shuffle:start",{object:t}),e.isAnimating=!0,k>0&&(e.expectedEndTime=w+k+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))},k+50)))}getGridSettings(t){let e=this.data.viewport.windowWidth;if((t.getProperty("masonry-mode")||"auto")==="manual"){let o=t.getProperty(nt.MANUAL_COLS_KEY),a=t.getProperty(nt.MANUAL_GAP_KEY),l=t.getProperty("masonry-cols")||[],d=t.getProperty("masonry-gap")||[];return{columns:Math.max(1,Math.round(o??Ke(l,e)??2)),gap:Math.max(0,a??Ke(d,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(Ke(n,e)??2)),gap:Math.max(0,Ke(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 Qe=class extends C{constructor(r){super(r),this.htmlKey="magnetic",this._type=2,this.cssProperties=[{name:"--magnetic-x",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--magnetic-y",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--magnetic-target-x",syntax:"<number>",initialValue:"0",inherits:!0},{name:"--magnetic-target-y",syntax:"<number>",initialValue:"0",inherits:!0}],this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1,this.permissions.mobile.rebuild.scrollHeight=!1,this.attributesToMap=[...this.attributesToMap,{key:"strength",type:"number",fallback:this.settings.strength},{key:"radius",type:"number",fallback:this.settings.radius}]}initializeObject(r,t,e,i){super.initializeObject(r,t,e,i),t.setProperty("magnetic-active",!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("magnetic-lerp",.1),t.setProperty("event-magnetic-name",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,d=Math.sqrt(a**2+l**2),c=e.getProperty("radius")??0,p=e.getProperty("strength")??0,g=this.tools.magneticPull.process({distance:d,radius:c,strength:p});e.setProperty("magnetic-target-x",a*g),e.setProperty("magnetic-target-y",l*g),g>0&&e.setProperty("magnetic-active",!0)}}onFrame(r){for(let t=0;t<this.objects.length;t++){let e=this.objects[t];if(e.getProperty("magnetic-active")===!0){let i=e.getProperty("magnetic-x")??0,n=e.getProperty("magnetic-y")??0,s=e.getProperty("magnetic-lerp")??.1,o=e.getProperty("magnetic-target-x")??0,a=e.getProperty("magnetic-target-y")??0,l=this.tools.lerp.process({from:i,to:o,progress:s}),d=this.tools.lerp.process({from:n,to:a,progress:s});l>-.01&&l<.01&&(l=0,e.setProperty("magnetic-x",o)),d>-.01&&d<.01&&(d=0,e.setProperty("magnetic-y",a)),i+=l,n+=d,e.setProperty("magnetic-x",i),e.setProperty("magnetic-y",n);let c=e.getProperty("event-magnetic-name");c&&this.events.emit(c,{x:i,y:n}),e.setProperty("__next-magnetic-x",i),e.setProperty("__next-magnetic-y",n),e.setProperty("__needs-magnetic-update",!0),o===i&&a===n&&e.setProperty("magnetic-active",!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.getProperty("magnetic-x")??0,n=t.getProperty("__next-magnetic-y")??t.getProperty("magnetic-y")??0;this.applyToElementAndConnects(t,s=>{E.setVar(s,"--magnetic-x",i),E.setVar(s,"--magnetic-y",n)}),t.setProperty("__needs-magnetic-update",!1)}}};var It=class extends C{constructor(t){super(t);this.nearOnly=!0;this.useAllObjects=!1;this.maxDistanceMultiplier=1;this.updateThreshold=.1;this.enabled=!0;this.scrollUpdateScheduled=!1;Ye()&&(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:d}=this.centers.getCenter(a),c=i-l,p=n-d,g=c*c+p*p;if(this.nearOnly){if(g>this.data.viewport.windowWidth*this.data.viewport.windowWidth&&!this.hover.isActive(a))continue}else if(o!==null&&g>o)continue;a.setProperty("dx",c),a.setProperty("dy",p),a.setProperty("dist",Math.sqrt(g))}}scheduleCursorUpdate(){!this.enabled||this.scrollUpdateScheduled||(this.scrollUpdateScheduled=!0,U.measure(()=>{this.refreshPointerState(),U.mutate(()=>{this.scrollUpdateScheduled=!1,E.run(()=>{this.onCursorScrollUpdate()})})}))}onCursorScrollUpdate(){}};var vi=Math.PI*2,is=180/Math.PI,Ui=u=>u<0?0:u>1?1:u,ns=(u,r)=>{let t=(r-u)%vi;return t>Math.PI&&(t-=vi),t<-Math.PI&&(t+=vi),u+t},ss={computeStep(u,r,t,e,i,n,s,o,a,l,d,c,p,g,h,m,f){let v=a;(m===1||t>e)&&(v=Math.atan2(r,u));let y=i>0?Math.min(t,i):t,b=s,S=o;if(g===1)b=v,S=y;else{let I=ns(s,v),w=Ui(n);b+=(I-b)*w,S+=(y-S)*w}let L=b*is-90,M=h===1||Number.isNaN(l)||Math.abs(L-l)>c,x=h===1||Number.isNaN(d)||Math.abs(S-d)>p;f.angle=b,f.dist=S,f.tAngle=v,f.tDist=y,f.degRaw=L,f.cssDeg=Math.round(L*10)/10,f.cssDist=Math.round(S*10)/10,f.angleChanged=M?1:0,f.distChanged=x?1:0}},os={bypassDeadzone:!0},as={forceImmediate:!0,forceEmit:!0,bypassDeadzone:!0},$i=new WeakMap,ls=u=>{let r=$i.get(u);return r||(r={angle:0,dist:0,tAngle:0,tDist:0,prevDeg:NaN,prevDist:NaN},$i.set(u,r)),r},Je=class extends It{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=>Ui(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),U.measure(()=>{this.refreshPointerState(e,!0),U.mutate(()=>{E.run(()=>{this.updateSpotlightState(e,as)})})})}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,os)}}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=ls(t);ss.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=>{E.setVar(s,"--spotlight-angle",e),E.setVar(s,"--spotlight-distance",i)})};if(E.isOpen){n();return}E.run(n)}};var ji="-aspect-ready";function ds(u){if(!u)return!1;let r=u.toLowerCase();return!!(r.endsWith(".svg")||r.startsWith("data:image/svg"))}function Yi(u){let r=new DataView(u);return u.byteLength<28?{width:0,height:0}:r.getUint32(0)!==2303741511||r.getUint32(4)!==218765834?{width:0,height:0}:r.getUint32(8)!==13||r.getUint32(12)!==1229472850?{width:0,height:0}:{width:r.getUint32(16,!1),height:r.getUint32(20,!1)}}function Xi(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 qi(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),d=1+((o&63)<<8|s),c=1+((l&15)<<10|a<<2|(o&192)>>6);return{width:d,height:c}}t=n+i+(i&1)}return{width:0,height:0}}function Ki(u,r){let t=(r||"").toLowerCase();if(t.includes("png"))return Yi(u);if(t.includes("jpeg")||t.includes("jpg"))return Xi(u);if(t.includes("webp"))return qi(u);let e=Yi(u);return e.width||(e=Xi(u),e.width)||(e=qi(u),e.width)?e:{width:0,height:0}}async function cs(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,d=0,c=[],p=null,g=!1;for(;;){let{done:f,value:v}=await n.read();if(f)break;if(!v)continue;let y=v.buffer.slice(v.byteOffset,v.byteOffset+v.byteLength);if(c.push(y),!p&&l<s){let b=Math.min(v.byteLength,s-l);if(b>0&&(a.set(v.subarray(0,b),l),l+=b),l-d>=o){let S=l===a.byteLength?a:a.slice(0,l),L=Ki(S.buffer,i);L.width&&L.height&&(p=L,!g&&t&&(t(p),g=!0)),d=l}}}if(!p){let f=await new Response(new Blob(c)).arrayBuffer(),v=Ki(f,i);v.width&&v.height&&(p=v,!g&&t&&(t(p),g=!0))}let h=new Blob(c,{type:i||"application/octet-stream"}),m=URL.createObjectURL(h);return{dims:p,blobUrl:m,contentType:i}}var tr=class extends C{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(ds(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 cs(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(ji),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(ji),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 er=class extends C{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 rr=class extends C{constructor(r){super(r),this.htmlKey=""}canConnect(r){return r.keys[0]==null||r.getProperty("inview-fallback")===!0}};var Rt=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}},ir=class extends C{constructor(t){super(t);this.queries={0:new Rt({max:359}),1:new Rt({min:360,max:1023}),2:new Rt({min:1024,max:1365}),3:new Rt({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 nr=class extends C{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 us=.05,ps=.01,Zi=1,gs=-1,hs=1,sr=class extends C{constructor(t){super(t);this.defaultModeScope=["smooth"];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=t.getProperty("glide-value")??0,i=-this.data.scroll.displacement*this.maxDisplacementValue*e,n=t.getProperty("event-glide-name");n&&this.events.emit(n,i);let s=`translate3d(0, ${i}px, 0)`;t.setProperty("__next-glide-transform",s),t.setProperty("__needs-glide-transform-update",!0)};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.setProperty("glide-value",e.getProperty("glide")??0),e.setProperty("event-glide-name",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)}updateTransforms(){for(let t=0;t<this.objects.length;t++)this.setupItem(this.objects[t])}resetObjectStyles(t){for(let e=0;e<t.length;e++){let i=t[e];i.setProperty("__next-glide-transform","translate3d(0, 0px, 0)"),i.setProperty("__needs-glide-transform-update",!0),i.setProperty("__next-glide",0),i.setProperty("__needs-glide-var-update",!0)}}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(){this.maxDisplacementValue=this.data.viewport.windowHeight*.1}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,this.resetObjectStyles(this.objects),this.flushPendingGlideStyles()}onFrame(t){this.calcExpanderFactor(this.data.scroll.isScrollingDown===!1),this.acceleration=Math.min(Zi,this.acceleration+us),this.displacement=Math.max(ps,Math.min(Zi,this.displacement+this.velocityMultiplier)),this.data.scroll.displacement=Math.min(hs,Math.max(gs,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.updateTransforms()}onObjectModeDeactivated(t){super.onObjectModeDeactivated(t),this.resetObjectStyles([t]),E.run(()=>{this.applyPendingGlideStylesForObject(t)})}onMutate(){this.applyPendingGlideStyles()}applyPendingGlideStylesForObject(t){let e=t.getProperty("__next-glide")??0,i=t.getProperty("__next-glide-transform")??"translate3d(0, 0px, 0)";this.applyVarToElement(t,"--glide",e),this.applyVarToConnects(t,"--glide",e),this.applyPropToElement(t,"transform",i),t.setProperty("__needs-glide-var-update",!1),t.setProperty("__needs-glide-transform-update",!1)}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(E.isOpen){this.applyPendingGlideStyles();return}E.run(()=>{this.applyPendingGlideStyles()})}};var or=class extends C{constructor(t){super(t);this.hasInitializedCSS=!1;this.defaultModeScope=["smooth"];this.htmlKey="lerp",this.cssProperties=[{name:"--lerp",syntax:"<number>",initialValue:"0",inherits:!0}],this.attributesToMap=[]}onObjectConnected(t){super.onObjectConnected(t),t.setProperty("lerp-value",0),t.setProperty("lerp-applied",0),t.setProperty("event-lerp-name",this.getObjectEventName(t,"object:lerp"))}onResize(){super.onResize(),!this.hasInitializedCSS&&this.objectsOnPage.length>0&&(this.hasInitializedCSS=!0,E.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.getProperty("lerp-value")??0)!==e&&(t.setProperty("lerp-value",e),this.updateObjectLerp(t))}onMutate(){E.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.getProperty("lerp-value")??0,n=t.getProperty("lerp-applied");if(!e&&n===i)return;t.setProperty("lerp-applied",i);let s=i?.toString()??"0",o=t.getProperty("event-lerp-name");o&&this.events.emit(o,i),E.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 xt="__string-dev-progress-override",Qi={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}}},Ht=class extends C{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}resolveRawProgress(t,e,i,n){let s=t.getProperty(xt);return s!=null?this.sanitizeRawProgress(s):Qi.computeRawProgress(e,i,n)}applyRawProgress(t,e){let i=this.sanitizeRawProgress(e);if((t.getProperty("progress-raw")??0)===i)return;t.setProperty("progress-raw",i);let s=t.getProperty("easing"),o=typeof s=="function"?s(i):i;t.setProperty("progress-value",o)}recomputeProgress(t){let e=t.getProperty("start-position")??t.getProperty("progress-start-position")??0,i=t.getProperty("difference-position")??t.getProperty("progress-difference-position")??0;t.setProperty("progress-start-position",e),t.setProperty("progress-difference-position",i);let n=this.resolveRawProgress(t,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.setProperty("progress-start-position",t.getProperty("start-position")??t.getProperty("progress-start-position")??0),t.setProperty("progress-difference-position",t.getProperty("difference-position")??t.getProperty("progress-difference-position")??0),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.getProperty("progress-start-position")??0,o=n.getProperty("difference-position")??n.getProperty("progress-difference-position")??0;n.setProperty("progress-start-position",s),n.setProperty("progress-difference-position",o),this.batchStarts[i]=s,this.batchDiffs[i]=o}Qi.computeRawProgressBatch(this.data.scroll.transformedCurrent,this.batchStarts,this.batchDiffs,this.batchOut,e);for(let i=0;i<e;i++){let n=this.objects[i],s=n.getProperty(xt),o=s!=null?this.sanitizeRawProgress(s):this.batchOut[i];this.applyRawProgress(n,o)}}}onMutate(){E.run(()=>{let t=this.objects.length;for(let e=0;e<t;e++)this.updateObjectProgress(this.objects[e])})}updateObjectProgress(t){let e=t.getProperty("progress-value")??0;if(t.getProperty("progress-applied")===e)return;let n=t.getProperty("key");t.setProperty("progress-applied",e);let s=t.getProperty("progress-raw")??e,o=t.getProperty("easing"),a=t.getProperty("event-progress-name")??t.getScopedEventName("object:progress");t.setProperty("event-progress-name",a),a&&this.events.emit(a,e),n&&this.applyVarToElement(t,n,e);for(let l=0;l<t.mirrorObjects.length;l++){let d=t.mirrorObjects[l],c=d.applyProgress(s,typeof o=="function"?o:void 0);d.setProperty("progress",c),n&&this.tools.styleTxn.setVar(d.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 ar=class extends Ht{constructor(t){super(t);this.defaultModeScope=["smooth"];this.updateScheduledTransform=!1;this.calculateParallax=t=>{let e=t.getProperty("progress-value")??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+e*a*s);return this.events.emit(this.getObjectEventName(t,"object:parallax"),l),{transform:`translate3d(0, ${l}px, 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.calculateParallax}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.setProperty("parallax-transform-value",this.calculateParallaxForObject(t))}onScroll(t){super.onScroll(t)}onScrollMeasure(t){super.onScrollMeasure(t);for(let e=0;e<this.objects.length;e++){let i=this.objects[e];i.setProperty("parallax-transform-value",this.calculateParallaxForObject(i))}}onMutate(){E.run(()=>{for(let t=0;t<this.objects.length;t++){let e=this.objects[t],i=e.getProperty("progress-value")??0;e.getProperty("parallax-progress-applied")!==i&&(e.setProperty("parallax-transform-value",this.calculateParallaxForObject(e)),e.setProperty("parallax-progress-applied",i));let s=e.getProperty("parallax-transform-value");s&&(this.applyPropToElement(e,"transform",s.transform),this.applyPropToConnects(e,"transform",s.transform))}})}};var lr=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 dr=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 cr=class extends C{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,622 +16,2029 @@
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 ue(this.data,this.scrollbar,this.thumb,this.requestScrollTo),this.scrollbarStateVertical=new de(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 it={BEFORE_ELEMENT:"-before-element",AFTER_ELEMENT:"-after-element"};function Kr(u){if(!u||!Array.isArray(u.chars)||u.chars.length===0)return[];let e=u.chars[0].splitClass??[];if(e.length===0)return[];for(let t of u.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 Qr(u){return u.chars[0]?.token?.meta?.wrappers??[]}function hr(u,e,t){let r=document.createDocumentFragment(),i=0,n=B(e,"line")||B(e,"charLine")||B(e,"wordLine"),s=B(e,"char")||B(e,"charLine")||B(e,"charWord"),o=0;u.forEach(p=>o+=p.words.length),o--;let a=0;u.forEach(p=>p.words.forEach(h=>a+=h.chars.length));let l=u.length,c=o+1,d=new Map;return u.forEach((p,h)=>{let v=h===u.length-1,m=r,g=[];n&&(m=document.createElement("span"),m.setAttribute("aria-hidden","true"),m.classList.add("-s-line"),p.isBeforeElement&&m.classList.add(it.BEFORE_ELEMENT),p.isAfterElement&&m.classList.add(it.AFTER_ELEMENT),m.style.setProperty("--line-index",String(p.lineIndex)),m.style.setProperty("--word-total",String(p.words.length)),p.fitFontSize!==void 0&&m.style.setProperty("--fit-font-size",String(p.fitFontSize)),Ue(m,p.calculatedValues,e));let b=[],y=m;if(p.words.forEach((f,S)=>{n&&(o=p.words.length-1);let E=S===o,T=Qr(f),k=0;for(;k<b.length&&k<T.length&&b[k].info.id===T[k].id;)k++;for(;b.length>k;)b.pop();y=b.length>0?b[b.length-1].element:m;for(let w=k;w<T.length;w++){let D=T[w],F=document.createElement(D.tag);for(let[R,N]of D.attributes)F.setAttribute(R,N);y.appendChild(F),b.push({info:D,element:F}),y=F}if(f.chars.length===1&&f.chars[0].token.type==="element"){let w=f.chars[0].token.node.cloneNode(!0);y.appendChild(w);return}let C=f.chars.map(w=>w.char).join("");C&&g.push(C);let A=B(e,"word")||B(e,"charWord")||B(e,"wordLine"),O=A?document.createElement("span"):y,L=Kr(f);if(A&&(O.setAttribute("aria-hidden","true"),O.classList.add("-s-word"),f.isBeforeElement&&O.classList.add(it.BEFORE_ELEMENT),f.isAfterElement&&O.classList.add(it.AFTER_ELEMENT),O.style.setProperty("--word-index",String(f.wordIndexGlobal)),O.style.setProperty("--char-total",String(f.chars.length)),O.setAttribute("data-split-content",C),Ue(O,f.calculatedValues,e),L.length&&O.classList.add(...L)),s)f.chars.forEach((w,D)=>{if(w.char===" "||w.char===" ")return;let F=document.createElement("span");F.setAttribute("aria-hidden","true");let R=F;R.classList.add("-s-char"),w.isBeforeElement&&R.classList.add(it.BEFORE_ELEMENT),w.isAfterElement&&R.classList.add(it.AFTER_ELEMENT),R.textContent=w.char,R.setAttribute("data-split-content",w.char),R.style.setProperty("--char-index",String(i++));let N=f.chars[D+1];if(N){let j=t.getKerning(w.char,N.char);Math.abs(j)>.01&&(R.style.setProperty("--kerning",`${j.toFixed(2)}px`),R.style.marginRight="var(--kerning)")}Ue(R,w.calculatedValues,e);let W=w.splitClass??[];W.length&&!L.length&&R.classList.add(...W),O.appendChild(F)});else{let w=document.createTextNode(C);O.appendChild(w)}A&&y.appendChild(O);let H=p.words[S+1]?.noSpaceBefore;n?E?v||m.appendChild(document.createElement("br")):H||O.appendChild(document.createTextNode("\xA0")):!E&&!H&&O.appendChild(document.createTextNode("\xA0"))}),n){let f=g.join(" ");m.setAttribute("data-split-content",f),r.appendChild(m)}}),s&&d.set("--char-global-total",String(a)),(B(e,"word")||B(e,"charWord")||B(e,"wordLine"))&&d.set("--word-global-total",String(c)),n&&d.set("--line-global-total",String(l)),{fragment:r,extraProps:d}}function Ue(u,e,t){if(e)for(let r of e){if(!Zr(r.type,r.align,t))continue;let i=Jr(r.type,r.align);u.style.setProperty(i,String(r.value))}}function Zr(u,e,t){let r=t[u]??[];return Array.isArray(r)&&r.some(i=>e.startsWith("random")?i.align.startsWith("random"):i.align===e)}function Jr(u,e){let t=e.startsWith("random")?"random":e;return`--${u}-${t}`}function B(u,e){return Array.isArray(u[e])&&u[e].length>0}var ti=new Set(["img","video","audio","canvas","iframe","object","svg","input","textarea","select","button","area","base","col","embed","hr","link","meta","param","source","track","wbr","picture","table"]);function ei(u){let e=[];for(let t=0;t<u.attributes.length;t++){let r=u.attributes[t];e.push([r.name,r.value])}return e}var pt=0;function mr(u){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(c=>r(c,l));return}if(o==="br"){t({type:"br",id:`br_${pt++}`,node:s,tagName:"br"},n);return}if(!ti.has(o)&&s.childNodes.length>0){let a={id:`wrapper_${pt++}`,tag:o,attributes:ei(s)},l=n?.wrappers??[],c={...n||{},wrappers:[...l,a]};s.childNodes.forEach(d=>r(d,c));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 u.forEach(i=>r(i)),e}var he=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 ri(u,e){return!u?.length&&!e?.length?!0:!u||!e||u.length!==e.length?!1:u.every((t,r)=>t.id===e[r].id)}function ii(u){let e=[],t=[];for(let r of u)r.type==="br"?(t.length&&e.push(t),e.push([r]),t=[]):t.push(r);return t.length&&e.push(t),e}function gr(u,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,r.style.textTransform=i.textTransform;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=ii(u),l=!1,c=!1,d=!1,p;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 v=[],m=[];h.forEach(g=>{switch(g.type){case"text":{let b=g.content,y=/^\s/.test(b),f=/\s$/.test(b),S=g.meta?.wrappers??[],E=b.trim().split(/\s+/).filter(T=>T.length>0);E.forEach((T,k)=>{let I=document.createElement("span");if(I.style.display="inline-block",S.length>0){let O=I;for(let L of S){let H=document.createElement(L.tag);for(let[w,D]of L.attributes)H.setAttribute(w,D);O.appendChild(H),O=H}O.textContent=T}else I.textContent=T;r.appendChild(I),(k<E.length-1||f)&&r.appendChild(document.createTextNode(" "));let C=k===0&&!y&&!c&&d,A=k>0||ri(p,S);v.push(I),m.push({token:{type:"text",id:"",node:g.node,content:T,meta:{...g.meta||{},joinPrev:C&&A,noSpaceBefore:C&&!A}},wordIndex:v.length-1,hadLeadingSpace:y,hadTrailingSpace:f})}),c=f,d=!0,p=S;break}case"element":{let b=g.node.cloneNode(!0),y=document.createElement("span");y.style.display="inline-block",y.appendChild(b),r.appendChild(y),v.push(y),m.push({token:g,wordIndex:v.length-1}),l=!0,d=!1,c=!1;break}case"space":c=!0;break;case"other":d=!1,c=!1;break}}),r.offsetHeight,m.forEach((g,b)=>{if(g.wordIndex!==void 0){let f=v[g.wordIndex].getBoundingClientRect(),S;if(g.token.type==="text"){let T=t.measureWord(g.token.content);S=new DOMRect(f.x,f.y,T,f.height)}else S=f;let E={token:g.token,rect:S,browserWidth:f.width};if(l&&g.token.type==="text"&&(l=!1,E.token.meta={...E.token.meta||{},isAfterElement:!0}),o.push(E),g.token.type==="element"){let T=o[o.length-2];T?.token.type==="text"&&(T.token.meta={...T.token.meta||{},isBeforeElement:!0})}}})}return e.removeChild(r),o}var fr=5;function vr(u,e,t){let r=[],i=null,n=0,s=0,o=0,a=0;return u.forEach(l=>{let c=l.token,d=c.meta?.isBeforeElement??!1,p=c.meta?.isAfterElement??!1;if(c.type==="br"){i=null;return}if(c.type==="text"){let h=c.content,v=c.meta?.splitClass??[],m=!!c.meta?.joinPrev,g=[],b=0;for(let C=0;C<h.length;C++){let A=h[C],O=C>0?h[C-1]:null,L=t.getCharWidth(A),H=O?t.getKerning(O,A):0;b+=H;let w=new DOMRect(l.rect.left+b,l.rect.top,L,l.rect.height),D={char:A,rect:w,token:c,charIndexInWord:C,charIndexInLine:0,charIndexGlobal:s++};v.length&&(D.splitClass=v),g.push(D),b+=L}if(g.length>0){let C=g[g.length-1];d&&(C.isBeforeElement=!0),p&&(C.isAfterElement=!0)}let y=Math.round(l.rect.top),f=Math.round(n);if((!i||Math.abs(y-f)>fr)&&(n=y,i={words:[],rect:l.rect,lineIndex:r.length},a=0,r.push(i)),!i)return;let E=l.rect.left+(l.browserWidth??l.rect.width);if(m&&i.words.length>0){let C=i.words[i.words.length-1],A=i.words.reduce((L,H)=>L+H.chars.length,0),O=C.chars.length;g.forEach((L,H)=>{L.charIndexInLine=A+H,L.charIndexInWord=O+H}),C.chars.push(...g),C.rect=me([C.rect,l.rect]),i.rect=me(i.words.map(L=>L.rect)),a=Math.max(a,E),i.fitWidth=a-i.rect.left,i.browserWordWidthSum=(i.browserWordWidthSum??0)+(l.browserWidth??l.rect.width),d&&(C.isBeforeElement=!0),p&&(C.isAfterElement=!0);return}let T=i.words.length,k=i.words.reduce((C,A)=>C+A.chars.length,0);g.forEach((C,A)=>C.charIndexInLine=k+A);let I={chars:g,rect:l.rect,wordIndexGlobal:o++,wordIndexInLine:T,isBeforeElement:d,isAfterElement:p,noSpaceBefore:!!c.meta?.noSpaceBefore};i.words.push(I),i.rect=me(i.words.map(C=>C.rect)),a=Math.max(a,E),i.fitWidth=a-i.rect.left,i.browserWordWidthSum=(i.browserWordWidthSum??0)+(l.browserWidth??l.rect.width),d&&(i.isBeforeElement=!0),p&&(i.isAfterElement=!0);return}if(c.type==="element"){let h=l.rect,v=Math.round(h.top),m=Math.round(n);if((!i||Math.abs(v-m)>fr)&&(n=v,i={words:[],rect:h,lineIndex:r.length},a=0,r.push(i)),!i)return;let b=i.words.length,y=i.words.reduce((E,T)=>E+T.chars.length,0),S={chars:[{char:"[E]",rect:h,token:c,charIndexInWord:0,charIndexInLine:y,charIndexGlobal:s++}],rect:h,wordIndexGlobal:o++,wordIndexInLine:b,isBeforeElement:!1,isAfterElement:!1};i.words.push(S),i.rect=me(i.words.map(E=>E.rect)),a=Math.max(a,l.rect.left+(l.browserWidth??l.rect.width)),i.fitWidth=a-i.rect.left,i.browserWordWidthSum=(i.browserWordWidthSum??0)+(l.browserWidth??l.rect.width)}}),r}function me(u){if(u.length===0)return new DOMRect(0,0,0,0);let e=Math.min(...u.map(n=>n.left)),t=Math.min(...u.map(n=>n.top)),r=Math.max(...u.map(n=>n.right)),i=Math.max(...u.map(n=>n.bottom));return new DOMRect(e,t,r-e,i-t)}var ge=class extends M{constructor(e){super(e),this.htmlKey="split",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1}onInit(){let e=()=>{this.objectsOnPage.forEach(t=>{this.onObjectConnected(t)})};document.fonts.ready.then(e),document.fonts.addEventListener("loadingdone",e)}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,p)=>{t.style.setProperty(p,d)});let c=t.getAttribute("string-split-restore-after");c&&!isNaN(Number(c))&&setTimeout(()=>{t.innerHTML=i,t.classList.add("-restored")},Number(c))}split(e,t){let r=new he(e),i=document.createDocumentFragment();e.childNodes.forEach(d=>i.appendChild(d.cloneNode(!0)));let n=mr(i.childNodes),s=gr(n,e,r),o=vr(s,e,r),a=t.fit?this.getFitContext(o,e):null,l=a?this.applyFit(o,t,a):new Map;this.applyCalculatedValues(o,t);let c=hr(o,t,r);return l.forEach((d,p)=>c.extraProps.set(p,d)),a&&this.refineFitFontSize(e,c.fragment,c.extraProps,o,t,a),{fragment:i,result:c.fragment,extraProps:c.extraProps}}getFitContext(e,t){let r=window.getComputedStyle(t),i=parseFloat(r.fontSize);if(!i)return null;let n=t.clientWidth-(parseFloat(r.paddingLeft)||0)-(parseFloat(r.paddingRight)||0);if(n<=0)return null;let s=0;for(let l of e){let c=l.fitWidth??l.rect.width;c>s&&(s=c)}if(s<=0)return null;let o=n;if(Math.abs(n-s)<2&&t.parentElement){let l=window.getComputedStyle(t.parentElement),c=t.parentElement.clientWidth-(parseFloat(l.paddingLeft)||0)-(parseFloat(l.paddingRight)||0);c>n&&(o=c)}let a=parseFloat(r.lineHeight)||0;return{currentFontSize:i,contentWidth:o,lineHeightPx:a}}applyFit(e,t,r){let i=new Map,{currentFontSize:n,contentWidth:s}=r,o=(t.line?.length??0)>0||(t.wordLine?.length??0)>0||(t.charLine?.length??0)>0,a=(t.char?.length??0)>0||(t.charLine?.length??0)>0||(t.charWord?.length??0)>0;if(o)for(let l of e){let c=l.fitWidth??l.rect.width;c>0&&(l.fitFontSize=this.computeFitFontSize(n,s,c,a?l.browserWordWidthSum:void 0))}else{let l=e.reduce((p,h)=>(h.fitWidth??h.rect.width)>(p.fitWidth??p.rect.width)?h:p,e[0]),c=l.fitWidth??l.rect.width,d=this.computeFitFontSize(n,s,c,a?l.browserWordWidthSum:void 0);i.set("--fit-font-size",String(Math.floor(d)))}return i}refineFitFontSize(e,t,r,i,n,s){let o=(n.line?.length??0)>0||(n.wordLine?.length??0)>0||(n.charLine?.length??0)>0,a=(n.char?.length??0)>0||(n.charLine?.length??0)>0||(n.charWord?.length??0)>0,l=e.innerHTML;try{if(e.innerHTML="",e.appendChild(t.cloneNode(!0)),o){let c=Array.from(e.querySelectorAll(".-s-line")),d=Array.from(t.querySelectorAll(".-s-line"));c.forEach((p,h)=>{let v=d[h];if(!v)return;let m=parseFloat(v.style.getPropertyValue("--fit-font-size"));if(!m)return;let g=this.solveRenderedFitFontSize(p,s.currentFontSize,m,s.contentWidth,a);g&&(i[h].fitFontSize=g,v.style.setProperty("--fit-font-size",String(Math.floor(g))))})}else{let c=parseFloat(r.get("--fit-font-size")??"");if(!c)return;let d=this.solveRenderedFitFontSize(e,s.currentFontSize,c,s.contentWidth,a);if(!d)return;let p=Math.floor(d);r.set("--fit-font-size",String(p));let{lineHeightPx:h,currentFontSize:v,contentWidth:m}=s;if(h>0&&v>0){let g=h*(p/v);g>0&&(r.set("--fit-scale-y",String(window.innerHeight/g)),r.set("--fit-aspect-ratio",String(m/g)))}}}finally{e.innerHTML=l}}solveRenderedFitFontSize(e,t,r,i,n){if(!Number.isFinite(t)||!Number.isFinite(r)||t<=0||r<=0)return null;let s=this.measureScopeAtFontSize(e,n,t);if(s<=0)return null;if(Math.abs(i-s)<.01)return t;let o=Math.abs(r-t)<.01?s:this.measureScopeAtFontSize(e,n,r);if(o<=0)return t*(i/s);let a=(o-s)/(r-t);if(!Number.isFinite(a)||Math.abs(a)<1e-4)return t*(i/s);let l=t+(i-s)/a;return!Number.isFinite(l)||l<=0?null:l}measureScopeAtFontSize(e,t,r){if(t){let s=Array.from(e.querySelectorAll(".-s-char")),o=s.map(l=>l.style.fontSize);s.forEach(l=>{l.style.fontSize=`${r}px`}),e.offsetWidth;let a=this.measureCharScopeWidth(e);return s.forEach((l,c)=>{l.style.fontSize=o[c]}),a}let i=e.style.fontSize;e.style.fontSize=`${r}px`,e.offsetWidth;let n=this.measureContentWidth(e);return e.style.fontSize=i,n}measureCharScopeWidth(e){let t=0;Array.from(e.querySelectorAll(".-s-char")).forEach(o=>{let a=o.getBoundingClientRect(),l=window.getComputedStyle(o);t+=a.width+(parseFloat(l.marginLeft)||0)+(parseFloat(l.marginRight)||0)});let i=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),n=i.nextNode();for(;n;){let o=n.parentElement,a=!!o?.closest(".-s-char"),l=!!o&&!o.classList.contains("-s-char")&&!o.classList.contains("-s-word")&&!o.classList.contains("-s-line")&&!o.querySelector(".-s-char, .-s-word, .-s-line");if(!a&&!l&&n.textContent?.length){let c=document.createRange();c.selectNodeContents(n),t+=c.getBoundingClientRect().width}n=i.nextNode()}return Array.from(e.querySelectorAll("*")).filter(o=>{let a=o;return!a.classList.contains("-s-char")&&!a.classList.contains("-s-word")&&!a.classList.contains("-s-line")&&!a.querySelector(".-s-char, .-s-word, .-s-line")}).forEach(o=>{t+=o.getBoundingClientRect().width}),t}measureContentWidth(e){if(!e.childNodes.length)return e.getBoundingClientRect().width;let t=document.createRange();return t.selectNodeContents(e),t.getBoundingClientRect().width}computeFitFontSize(e,t,r,i){let n=i!==void 0?r-i:0,s=r-n;return s<=0?e*(t/r):e*(t-n)/s}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=>{t.word&&(a.calculatedValues=t.word.map(c=>({type:"word",align:c.align,value:this.computeValue(c,a.wordIndexGlobal,i)}))),t.wordLine&&(a.calculatedValues??(a.calculatedValues=[]),a.calculatedValues.push(...t.wordLine.map(c=>({type:"wordLine",align:c.align,value:this.computeValue(c,a.wordIndexInLine,s.words.length)}))));let l=r(s);a.chars.forEach(c=>{let d=[];t.char&&d.push(...t.char.map(p=>({type:"char",align:p.align,value:this.computeValue(p,c.charIndexGlobal,n)}))),t.charWord&&d.push(...t.charWord.map(p=>({type:"charWord",align:p.align,value:this.computeValue(p,c.charIndexInWord,a.chars.length)}))),t.charLine&&d.push(...t.charLine.map(p=>({type:"charLine",align:p.align,value:this.computeValue(p,c.charIndexInLine,l)}))),c.calculatedValues=d})})})}escapeAttribute(e){return e.replace(/src="(https?:\/\/[^"\s]+)"/g,"src=$1")}};var fe=class extends M{constructor(t){super(t);this.history=[];this.maxPoints=0;this.height=0;this.value=0;this.target=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let r=Math.abs(t.scroll.displacement);this.value=r,this.history.push(r),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,r=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,r,i),t.strokeStyle="red",t.lineWidth=2,t.beginPath(),this.history.forEach((n,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 K="data-fps",ve=class extends M{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(K,r);this.displayElement&&this.displayElement.setAttribute(K,r),this.events.emit("fps",t)}scanElements(){this.fpsElements.clear(),document.querySelectorAll(`[${K}]`).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(K)&&(r=!0),s.querySelector(`[${K}]`)&&(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(K,"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=`
20
- [${K}]::before {
21
- content: 'FPS: ' attr(${K});
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 lr(this.data,this.scrollbar,this.thumb,this.requestScrollTo),this.scrollbarStateVertical=new dr(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 Ct={BEFORE_ELEMENT:"-before-element",AFTER_ELEMENT:"-after-element"};function ms(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 yi(u){return u.chars[0]?.token?.meta?.wrappers??[]}function fs(u,r,t){if(t.trimInlineGaps!==!0||!r)return!1;let e=yi(u),i=yi(r);if(e.length===0||i.length===0)return!1;if(e.length!==i.length)return!0;for(let n=0;n<e.length;n++)if(e[n].id!==i[n].id)return!0;return!1}function Ji(u,r,t){let e=document.createDocumentFragment(),i=J(r,"line")||J(r,"charLine")||J(r,"wordLine"),n=0,s=J(r,"char")||J(r,"charLine")||J(r,"charWord"),o=0;u.forEach(p=>o+=p.words.length);let a=0;u.forEach(p=>p.words.forEach(g=>a+=g.chars.length));let l=u.length,d=o,c=new Map;return u.forEach((p,g)=>{let h=g===u.length-1,m=e,f=[];i&&(m=document.createElement("span"),m.setAttribute("aria-hidden","true"),m.classList.add("-s-line"),p.isBeforeElement&&m.classList.add(Ct.BEFORE_ELEMENT),p.isAfterElement&&m.classList.add(Ct.AFTER_ELEMENT),m.style.setProperty("--line-index",String(p.lineIndex)),m.style.setProperty("--word-total",String(p.words.length)),p.fitFontSize!==void 0&&m.style.setProperty("--fit-font-size",String(p.fitFontSize)),bi(m,p.calculatedValues,r));let v=[],y=m;if(p.words.forEach((b,S)=>{let L=S===p.words.length-1,M=yi(b),x=0;for(;x<v.length&&x<M.length&&v[x].info.id===M[x].id;)x++;for(;v.length>x;)v.pop();y=v.length>0?v[v.length-1].element:m;for(let T=x;T<M.length;T++){let P=M[T],H=document.createElement(P.tag);for(let[B,W]of P.attributes)H.setAttribute(B,W);y.appendChild(H),v.push({info:P,element:H}),y=H}if(b.chars.length===1&&b.chars[0].token.type==="element"){let T=b.chars[0].token.node.cloneNode(!0);y.appendChild(T);return}let w=b.chars.map(T=>T.char).join("");w&&f.push(w);let R=J(r,"word")||J(r,"charWord")||J(r,"wordLine"),k=R?document.createElement("span"):y,A=ms(b);if(R&&(k.setAttribute("aria-hidden","true"),k.classList.add("-s-word"),b.isBeforeElement&&k.classList.add(Ct.BEFORE_ELEMENT),b.isAfterElement&&k.classList.add(Ct.AFTER_ELEMENT),k.style.setProperty("--word-index",String(b.wordIndexGlobal)),k.style.setProperty("--char-total",String(b.chars.length)),k.setAttribute("data-split-content",w),bi(k,b.calculatedValues,r),A.length&&k.classList.add(...A)),s)b.chars.forEach((T,P)=>{if(T.char===" "||T.char===" ")return;let H=document.createElement("span");H.setAttribute("aria-hidden","true");let B=H;B.classList.add("-s-char"),T.isBeforeElement&&B.classList.add(Ct.BEFORE_ELEMENT),T.isAfterElement&&B.classList.add(Ct.AFTER_ELEMENT),B.textContent=T.char,B.setAttribute("data-split-content",T.char),B.style.setProperty("--char-index",String(n++));let W=b.chars[P+1];if(W){let N=t.getKerning(T.char,W.char);Math.abs(N)>.01&&(B.style.setProperty("--kerning",`${N.toFixed(2)}px`),B.style.marginRight="var(--kerning)")}bi(B,T.calculatedValues,r);let G=T.splitClass??[];G.length&&!A.length&&B.classList.add(...G),k.appendChild(H)});else{let T=document.createTextNode(w);k.appendChild(T)}R&&y.appendChild(k);let V=p.words[S+1],D=V?.noSpaceBefore||fs(b,V,r);i?L?h||m.appendChild(document.createElement("br")):D||k.appendChild(document.createTextNode("\xA0")):!L&&!D&&k.appendChild(document.createTextNode("\xA0"))}),i){let b=f.join(" ");m.setAttribute("data-split-content",b),e.appendChild(m)}}),i&&c.set("--line-global-total",String(l)),s&&c.set("--char-global-total",String(a)),(J(r,"word")||J(r,"charWord")||J(r,"wordLine"))&&c.set("--word-global-total",String(d)),{fragment:e,extraProps:c}}function bi(u,r,t){if(r)for(let e of r){if(!vs(e.type,e.align,t))continue;let i=bs(e.type,e.align);u.style.setProperty(i,String(e.value))}}function vs(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 bs(u,r){let t=r.startsWith("random")?"random":r;return`--${u}-${t}`}function J(u,r){return Array.isArray(u[r])&&u[r].length>0}var ys=new Set(["img","video","audio","canvas","iframe","object","svg","input","textarea","select","button","area","base","col","embed","hr","link","meta","param","source","track","wbr","picture","table"]);function Ss(u){let r=[];for(let t=0;t<u.attributes.length;t++){let e=u.attributes[t];r.push([e.name,e.value])}return r}var Bt=0;function tn(u){Bt=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(d=>e(d,l));return}if(o==="br"){t({type:"br",id:`br_${Bt++}`,node:s,tagName:"br"},n);return}if(!ys.has(o)&&s.childNodes.length>0){let a={id:`wrapper_${Bt++}`,tag:o,attributes:Ss(s)},l=n?.wrappers??[],d={...n||{},wrappers:[...l,a]};s.childNodes.forEach(c=>e(c,d));return}t({type:"element",id:`el_${Bt++}`,node:s,tagName:o},n);return}if(i.nodeType===Node.TEXT_NODE){let s=i.nodeValue??"",o=`text_${Bt++}`;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_${Bt++}`,node:i},n)};return u.forEach(i=>e(i)),r}var ur=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 Ls(u,r){let t=r.contentWidth,e=u.cloneNode(!0);e.removeAttribute("string"),e.removeAttribute("data-string"),e.removeAttribute("string-split"),e.removeAttribute("data-string-split"),e.removeAttribute("string-id"),e.removeAttribute("data-string-id"),e.removeAttribute("string-inited"),e.classList.remove("-splitted","-inview","-restored"),e.innerHTML=u.getAttribute("string-split-original-html")??u.innerHTML,e.style.setProperty("position","absolute","important"),e.style.setProperty("visibility","hidden","important"),e.style.setProperty("pointer-events","none","important"),e.style.setProperty("left","0","important"),e.style.setProperty("top","0","important"),e.style.setProperty("display","block","important"),e.style.setProperty("width",`${t}px`,"important"),e.style.setProperty("min-width",`${t}px`,"important"),e.style.setProperty("max-width",`${t}px`,"important"),e.style.setProperty("padding","0","important"),e.style.setProperty("border","0","important"),e.style.setProperty("margin","0","important"),e.style.setProperty("transform","none","important"),e.style.setProperty("scale","1","important"),(u.parentElement??document.body).appendChild(e);let n=new Map,s=document.createTreeWalker(u,NodeFilter.SHOW_ALL),o=document.createTreeWalker(e,NodeFilter.SHOW_ALL),a=s.currentNode,l=o.currentNode;for(n.set(a,l);(a=s.nextNode())&&(l=o.nextNode());)n.set(a,l);return{resolveNode(d){return n.get(d)??d},cleanup(){e.remove()}}}var pr=class{constructor(){this.id="flex"}supports(r,t){return t.display==="flex"||t.display==="inline-flex"}createSource(r,t){return Ls(r,t)}};function Es(){return{resolveNode(u){return u},cleanup(){}}}var gr=class{constructor(){this.id="inline-flow"}supports(r,t){return t.display!=="flex"&&t.display!=="inline-flex"}createSource(r,t){return Es()}};var Si=[new pr,new gr];function ws(u){let r=window.getComputedStyle(u),t=u.getBoundingClientRect(),e=parseFloat(r.borderLeftWidth)||0,i=parseFloat(r.borderRightWidth)||0,n=parseFloat(r.paddingLeft)||0,s=parseFloat(r.paddingRight)||0;return Math.max(0,t.width-e-i-n-s)}function Ms(u){let r=u.parentElement;for(;r;){let t=window.getComputedStyle(r),e=t.display;if(!(e==="inline"||e==="inline-block"||e==="ruby")){let n=r.getBoundingClientRect(),s=parseFloat(t.borderLeftWidth)||0,o=parseFloat(t.borderRightWidth)||0,a=parseFloat(t.paddingLeft)||0,l=parseFloat(t.paddingRight)||0;return Math.max(0,n.width-s-o-a-l)}r=r.parentElement}return 0}function en(u){let r=window.getComputedStyle(u),t=ws(u),e=Ms(u),i=r.display==="inline"||r.display==="inline-flex"||r.display==="inline-grid",n=t;return(i&&e>t+1&&!u.style.width||n<=0)&&(n=e),{display:r.display,contentWidth:n,ownContentWidth:t,blockContainerContentWidth:e}}function rn(u,r){return Si.find(t=>t.supports(u,r))??Si[Si.length-1]}function xs(u,r){return!u?.length&&!r?.length?!0:!u||!r||u.length!==r.length?!1:u.every((t,e)=>t.id===r[e].id)}function on(u,r,t,e){let i=document.createRange(),n=[],s=!1,o=!1,a=!1,l;try{for(let d=0;d<u.length;d++){let c=u[d];switch(c.type){case"br":{n.push({token:c,rect:new DOMRect(0,0,0,0)}),o=!0,a=!1,l=void 0,s=!1;break}case"space":o=!Cs(u,d,e);break;case"other":a=!1,o=!1;break;case"text":{let p=c.content,g=/^\s/.test(p),h=/\s$/.test(p),m=c.meta?.wrappers??[],f=/\S+/g,v,y=0;for(;(v=f.exec(p))!==null;){let b=v[0],S=new DOMRect(0,0,0,0),L=r.resolveNode(c.node);try{i.setStart(L,v.index),i.setEnd(L,v.index+b.length),S=i.getBoundingClientRect()}catch{}let M=y===0&&!g&&!o&&a,x=y>0||xs(l,m),I=t.measureWord(b),w=new DOMRect(S.x,S.y,I,S.height),R={...c.meta||{},joinPrev:M&&x,noSpaceBefore:M&&!x};s&&y===0&&(R.isAfterElement=!0,s=!1),n.push({token:{type:"text",id:"",node:c.node,content:b,meta:R},rect:w,browserWidth:S.width}),y++}y>0&&(o=h,a=!0,l=m);break}case"element":{let p=r.resolveNode(c.node).getBoundingClientRect();n.push({token:c,rect:p,browserWidth:p.width});let g=n[n.length-2];g?.token.type==="text"&&(g.token.meta={...g.token.meta||{},isBeforeElement:!0}),s=!0,a=!1,o=!1;break}}}}finally{i.detach?.(),r.cleanup()}return n}function Cs(u,r,t){if(t.trimInlineGaps!==!0)return!1;let e=u[r];if(e?.type!=="space"||!/[\n\r\t]/.test(e.content)&&e.content.length<=1)return!1;let i=Ts(u,r-1),n=Ps(u,r+1);if(!i||!n||!nn(i)||!nn(n))return!1;let s=sn(i),o=sn(n);return s.length===0||o.length===0?!1:s.join("|")!==o.join("|")}function Ts(u,r){for(let t=r;t>=0;t--){let e=u[t];if(!(e.type==="space"||e.type==="other"))return e}return null}function Ps(u,r){for(let t=r;t<u.length;t++){let e=u[t];if(!(e.type==="space"||e.type==="other"))return e}return null}function nn(u){return u.type==="text"||u.type==="element"}function sn(u){return(u.meta?.wrappers??[]).map(t=>t.id)}function an(u,r,t,e){let i=en(r),s=rn(r,i).createSource(r,i);return on(u,s,t,e)}var ln=5;function dn(u,r,t){let e=[],i=null,n=0,s=0,o=0,a=0;return u.forEach(l=>{let d=l.token,c=d.meta?.isBeforeElement??!1,p=d.meta?.isAfterElement??!1;if(d.type==="br"){i=null;return}if(d.type==="text"){let g=d.content,h=d.meta?.splitClass??[],m=!!d.meta?.joinPrev,f=[],v=0;for(let w=0;w<g.length;w++){let R=g[w],k=w>0?g[w-1]:null,A=t.getCharWidth(R),V=k?t.getKerning(k,R):0;v+=V;let D=new DOMRect(l.rect.left+v,l.rect.top,A,l.rect.height),T={char:R,rect:D,token:d,charIndexInWord:w,charIndexInLine:0,charIndexGlobal:s++};h.length&&(T.splitClass=h),f.push(T),v+=A}if(f.length>0){let w=f[f.length-1];c&&(w.isBeforeElement=!0),p&&(w.isAfterElement=!0)}let y=Math.round(l.rect.top),b=Math.round(n);if((!i||Math.abs(y-b)>ln)&&(n=y,i={words:[],rect:l.rect,lineIndex:e.length},a=0,e.push(i)),!i)return;let L=l.rect.left+(l.browserWidth??l.rect.width);if(m&&i.words.length>0){let w=i.words[i.words.length-1],R=i.words.reduce((A,V)=>A+V.chars.length,0),k=w.chars.length;f.forEach((A,V)=>{A.charIndexInLine=R+V,A.charIndexInWord=k+V}),w.chars.push(...f),w.rect=hr([w.rect,l.rect]),i.rect=hr(i.words.map(A=>A.rect)),a=Math.max(a,L),i.fitWidth=a-i.rect.left,i.browserWordWidthSum=(i.browserWordWidthSum??0)+(l.browserWidth??l.rect.width),c&&(w.isBeforeElement=!0),p&&(w.isAfterElement=!0);return}let M=i.words.length,x=i.words.reduce((w,R)=>w+R.chars.length,0);f.forEach((w,R)=>w.charIndexInLine=x+R);let I={chars:f,rect:l.rect,wordIndexGlobal:o++,wordIndexInLine:M,isBeforeElement:c,isAfterElement:p,noSpaceBefore:!!d.meta?.noSpaceBefore};i.words.push(I),i.rect=hr(i.words.map(w=>w.rect)),a=Math.max(a,L),i.fitWidth=a-i.rect.left,i.browserWordWidthSum=(i.browserWordWidthSum??0)+(l.browserWidth??l.rect.width),c&&(i.isBeforeElement=!0),p&&(i.isAfterElement=!0);return}if(d.type==="element"){let g=l.rect,h=Math.round(g.top),m=Math.round(n);if((!i||Math.abs(h-m)>ln)&&(n=h,i={words:[],rect:g,lineIndex:e.length},a=0,e.push(i)),!i)return;let v=i.words.length,y=i.words.reduce((L,M)=>L+M.chars.length,0),S={chars:[{char:"[E]",rect:g,token:d,charIndexInWord:0,charIndexInLine:y,charIndexGlobal:s++}],rect:g,wordIndexGlobal:o++,wordIndexInLine:v,isBeforeElement:!1,isAfterElement:!1};i.words.push(S),i.rect=hr(i.words.map(L=>L.rect)),a=Math.max(a,l.rect.left+(l.browserWidth??l.rect.width)),i.fitWidth=a-i.rect.left,i.browserWordWidthSum=(i.browserWordWidthSum??0)+(l.browserWidth??l.rect.width)}}),e}function hr(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 mr=class extends C{constructor(t){super(t);this.lastSplitWidth=new WeakMap;this.htmlKey="split",this.permissions.mobile.rebuild.height=!1,this.permissions.mobile.rebuild.width=!1}onInit(){let t=()=>{this.objectsOnPage.forEach(e=>{let i=e.htmlElement;if(!i)return;let n=this.getSplitOptions(i);this.needsForcedRebuildOnFontLoad(n)&&this.lastSplitWidth.delete(i),this.onObjectConnected(e)})};document.fonts.ready.then(t),document.fonts.addEventListener("loadingdone",t)}onObjectDisconnected(t){t.htmlElement&&this.lastSplitWidth.delete(t.htmlElement)}onResizeWidth(){this.objectsOnPage.forEach(t=>{let e=t.htmlElement;if(!e)return;let i=this.getSplitOptions(e);this.needsWidthRebuild(i)&&this.onObjectConnected(t)})}onObjectConnected(t){let e=t.htmlElement;if(!e)return;let i=this.isDebugEnabled(e),n=e.classList.contains("-splitted"),s=e.getAttribute("string-split-original-html"),o=e.getAttribute("string-split-original");s===null&&o!==null&&n&&(s=o,o=this.extractTextContent(s),e.setAttribute("string-split-original-html",s),e.setAttribute("string-split-original",o)),(!n||s===null||o===null)&&(s=this.escapeAttribute(e.innerHTML),o=e.textContent??"",e.setAttribute("string-split-original-html",s),e.setAttribute("string-split-original",o)),n&&e.classList.remove("-splitted");let a=window.getComputedStyle(e),l=this.getElementContentWidth(e,a);i&&this.logConnectionStart(e,{isAlreadySplit:n,currentContentWidth:l,lastWidth:this.lastSplitWidth.get(e),originalHtml:s,originalText:o});let d=this.lastSplitWidth.get(e);if(n&&d!==void 0&&Math.abs(l-d)<1){n&&e.classList.add("-splitted");return}this.lastSplitWidth.set(e,l);try{t.htmlElement.innerHTML=s;let c=e.getAttribute("string-split")??e.getAttribute("data-string-split")??"",p=this.tools.optionsParser.process({attributeValue:c}),{fragment:g,result:h,extraProps:m}=this.split(e,p,i);t.setProperty("nodes",g.childNodes),e.setAttribute("aria-label",o),e.innerHTML="",e.appendChild(h),this.applyFlexLineBreaks(e,p),e.classList.add("-splitted"),m.forEach((v,y)=>{e.style.setProperty(y,v)}),i&&this.logRenderedState(e,p,m);let f=e.getAttribute("string-split-restore-after");f&&!isNaN(Number(f))&&setTimeout(()=>{e.innerHTML=s,e.classList.add("-restored")},Number(f))}finally{e.classList.contains("-splitted")||e.classList.add("-splitted")}}extractTextContent(t){let e=document.createElement("div");return e.innerHTML=t,e.textContent??""}getSplitOptions(t){let e=t.getAttribute("string-split")??t.getAttribute("data-string-split")??"";return this.tools.optionsParser.process({attributeValue:e})}hasLineDrivenSplit(t){return(t.line?.length??0)>0||(t.wordLine?.length??0)>0||(t.charLine?.length??0)>0}needsWidthRebuild(t){return this.hasLineDrivenSplit(t)||t.fit===!0}needsForcedRebuildOnFontLoad(t){return this.needsWidthRebuild(t)}getDebugStoreKey(t){let e=t.getAttribute("string-debug-save")??t.getAttribute("data-string-debug-save")??"";return e?e==="true"||e==="1"?this.getDebugLabel(t):e:null}writeDebugRecord(t,e,i){let n=this.getDebugStoreKey(t);if(!n)return;let s=window,o=s.__stringSplitDebug??(s.__stringSplitDebug={}),a=o[n]??{label:this.getDebugLabel(t),timestamp:Date.now()};a.timestamp=Date.now(),a[e]=i,o[n]=a}isDebugEnabled(t){let e=t.getAttribute("string-debug")??t.getAttribute("data-string-debug")??"";return e?e===""||e==="true"||e==="1"||e.includes("split")||e==="all":!1}getDebugLabel(t){return t.getAttribute("string-id")??t.id??t.className??t.tagName.toLowerCase()}logConnectionStart(t,e){let i=window.getComputedStyle(t),n=this.captureBaselineSnapshot(t,i),s={text:e.originalText,html:e.originalHtml,baseline:n,flags:{isAlreadySplit:e.isAlreadySplit,display:i.display,whiteSpace:i.whiteSpace,position:i.position},widths:{currentContentWidth:e.currentContentWidth,lastWidth:e.lastWidth,rectWidth:t.getBoundingClientRect().width,clientWidth:t.clientWidth,parentContentWidth:this.getBlockContainerContentWidth(t)}};this.writeDebugRecord(t,"connect",s),console.groupCollapsed(`[StringSplit] connect ${this.getDebugLabel(t)}`),console.log("text",s.text),console.log("html",s.html),console.log("baseline",s.baseline),console.log("flags",s.flags),console.log("widths",s.widths),console.groupEnd()}captureBaselineSnapshot(t,e){let i=t.getBoundingClientRect(),n=parseFloat(e.lineHeight);return{rectWidth:Number(i.width.toFixed(2)),rectHeight:Number(i.height.toFixed(2)),fontSize:Number(parseFloat(e.fontSize).toFixed(2)),lineHeight:Number.isFinite(n)?Number(n.toFixed(2)):e.lineHeight,estimatedLineCount:Number.isFinite(n)&&n>0?Number((i.height/n).toFixed(2)):null}}logSplitAnalysis(t,e,i,n){let s={tokens:e.map(o=>({type:o.type,text:this.getTokenDebugText(o),wrappers:o.meta?.wrappers?.map(a=>a.tag)??[]})),measured:i.map(o=>({type:o.token.type,text:this.getTokenDebugText(o.token),left:Number(o.rect.left.toFixed(2)),top:Number(o.rect.top.toFixed(2)),width:Number(o.rect.width.toFixed(2)),browserWidth:Number((o.browserWidth??o.rect.width).toFixed(2))})),layoutLines:n.map(o=>({index:o.lineIndex,text:o.words.map(a=>a.chars.map(l=>l.char).join("")).join(" "),wordCount:o.words.length,rect:{left:Number(o.rect.left.toFixed(2)),top:Number(o.rect.top.toFixed(2)),width:Number(o.rect.width.toFixed(2)),height:Number(o.rect.height.toFixed(2))},fitWidth:Number((o.fitWidth??o.rect.width).toFixed(2))}))};this.writeDebugRecord(t,"measure",s),console.groupCollapsed(`[StringSplit] measure ${this.getDebugLabel(t)}`),console.log("tokens",s.tokens),console.log("measured",s.measured),console.log("layoutLines",s.layoutLines),console.groupEnd()}getTokenDebugText(t){return"content"in t?t.content:"tagName"in t?t.tagName:"#other"}logRenderedState(t,e,i){let n=window.getComputedStyle(t),s=Array.from(t.querySelectorAll(".-s-line")),o={mode:{attr:t.getAttribute("string-split")??t.getAttribute("data-string-split"),line:e.line?.length??0,wordLine:e.wordLine?.length??0,charLine:e.charLine?.length??0},root:{display:n.display,flexWrap:n.flexWrap,rectWidth:Number(t.getBoundingClientRect().width.toFixed(2)),rectHeight:Number(t.getBoundingClientRect().height.toFixed(2)),childCount:t.children.length,extraProps:Object.fromEntries(i.entries())},children:Array.from(t.children).map(a=>{let l=a,d=l.getBoundingClientRect();return{tag:l.tagName.toLowerCase(),className:l.className,text:l.textContent?.replace(/\s+/g," ").trim(),width:Number(d.width.toFixed(2)),height:Number(d.height.toFixed(2))}}),lineNodes:s.map((a,l)=>{let d=a.getBoundingClientRect(),c=window.getComputedStyle(a);return{index:l,text:a.getAttribute("data-split-content"),top:Number(d.top.toFixed(2)),left:Number(d.left.toFixed(2)),width:Number(d.width.toFixed(2)),height:Number(d.height.toFixed(2)),display:c.display,lineHeight:c.lineHeight,scale:c.scale,transform:c.transform}})};this.writeDebugRecord(t,"rendered",o),console.groupCollapsed(`[StringSplit] rendered ${this.getDebugLabel(t)}`),console.log("mode",o.mode),console.log("root",o.root),console.log("children",o.children),console.log("lineNodes",o.lineNodes),console.groupEnd()}applyFlexLineBreaks(t,e){if(!((e.line?.length??0)>0||(e.wordLine?.length??0)>0||(e.charLine?.length??0)>0))return;let n=window.getComputedStyle(t).display;if(n!=="flex"&&n!=="inline-flex")return;let s=Array.from(t.children).filter(o=>o.classList.contains("-s-line"));if(!(s.length<2))for(let o=0;o<s.length-1;o++){let a=document.createElement("span");a.setAttribute("aria-hidden","true"),a.classList.add("-s-line-break"),a.style.flexBasis="100%",a.style.width="0",a.style.height="0",a.style.overflow="hidden",a.style.pointerEvents="none",s[o].after(a)}}getBlockContainerContentWidth(t){let e=t.parentElement;for(;e;){let i=window.getComputedStyle(e),n=i.display;if(!(n==="inline"||n==="inline-block"||n==="ruby")){let o=e.getBoundingClientRect().width||e.clientWidth;return Math.max(0,o-(parseFloat(i.paddingLeft)||0)-(parseFloat(i.paddingRight)||0))}e=e.parentElement}return 0}getElementContentWidth(t,e=window.getComputedStyle(t)){let i=(parseFloat(e.paddingLeft)||0)+(parseFloat(e.paddingRight)||0),n=t.clientWidth||t.getBoundingClientRect().width,s=this.getBlockContainerContentWidth(t);return s>n+1&&!t.style.width&&(e.display==="inline"||e.display==="inline-flex"||e.display==="inline-grid")?Math.max(0,s-i):n>0?Math.max(0,n-i):Math.max(0,s-i)}split(t,e,i=!1){let n=new ur(t),s=document.createDocumentFragment();t.childNodes.forEach(g=>s.appendChild(g.cloneNode(!0)));let o=tn(t.childNodes),a=an(o,t,n,e),l=dn(a,t,n);i&&this.logSplitAnalysis(t,o,a,l);let d=e.fit?this.getFitContext(l,t):null,c=d?this.applyFit(l,e,d):new Map;this.applyCalculatedValues(l,e);let p=Ji(l,e,n);return c.forEach((g,h)=>p.extraProps.set(h,g)),d&&this.refineFitFontSize(t,p.fragment,p.extraProps,l,e,d),{fragment:s,result:p.fragment,extraProps:p.extraProps}}getFitContext(t,e){let i=window.getComputedStyle(e),n=parseFloat(i.fontSize);if(!n)return null;let s=this.getElementContentWidth(e,i);if(s<=0)return null;let o=0;for(let d of t){let c=d.fitWidth??d.rect.width;c>o&&(o=c)}if(o<=0)return null;let a=s;if(Math.abs(s-o)<2&&e.parentElement){let d=window.getComputedStyle(e.parentElement),c=e.parentElement.clientWidth-(parseFloat(d.paddingLeft)||0)-(parseFloat(d.paddingRight)||0);c>s&&(a=c)}let l=parseFloat(i.lineHeight)||0;return{currentFontSize:n,contentWidth:a,lineHeightPx:l}}applyFit(t,e,i){let n=new Map,{currentFontSize:s,contentWidth:o}=i,a=(e.line?.length??0)>0||(e.wordLine?.length??0)>0||(e.charLine?.length??0)>0,l=(e.char?.length??0)>0||(e.charLine?.length??0)>0||(e.charWord?.length??0)>0;if(a)for(let d of t){let c=d.fitWidth??d.rect.width;c>0&&(d.fitFontSize=this.computeFitFontSize(s,o,c,l?d.browserWordWidthSum:void 0))}else{let d=t.reduce((g,h)=>(h.fitWidth??h.rect.width)>(g.fitWidth??g.rect.width)?h:g,t[0]),c=d.fitWidth??d.rect.width,p=this.computeFitFontSize(s,o,c,l?d.browserWordWidthSum:void 0);n.set("--fit-font-size",String(Math.floor(p)))}return n}refineFitFontSize(t,e,i,n,s,o){let a=(s.line?.length??0)>0||(s.wordLine?.length??0)>0||(s.charLine?.length??0)>0,l=(s.char?.length??0)>0||(s.charLine?.length??0)>0||(s.charWord?.length??0)>0,d=t.innerHTML;try{if(t.innerHTML="",t.appendChild(e.cloneNode(!0)),a){let c=Array.from(t.querySelectorAll(".-s-line")),p=Array.from(e.querySelectorAll(".-s-line"));c.forEach((g,h)=>{let m=p[h];if(!m)return;let f=parseFloat(m.style.getPropertyValue("--fit-font-size"));if(!f)return;let v=this.solveRenderedFitFontSize(g,o.currentFontSize,f,o.contentWidth,l);v&&(n[h].fitFontSize=v,m.style.setProperty("--fit-font-size",String(Math.floor(v))))})}else{let c=parseFloat(i.get("--fit-font-size")??"");if(!c)return;let p=this.solveRenderedFitFontSize(t,o.currentFontSize,c,o.contentWidth,l);if(!p)return;let g=Math.floor(p);i.set("--fit-font-size",String(g));let{lineHeightPx:h,currentFontSize:m,contentWidth:f}=o;if(h>0&&m>0){let v=h*(g/m);v>0&&(i.set("--fit-scale-y",String(window.innerHeight/v)),i.set("--fit-aspect-ratio",String(f/v)))}}}finally{t.innerHTML=d}}solveRenderedFitFontSize(t,e,i,n,s){if(!Number.isFinite(e)||!Number.isFinite(i)||e<=0||i<=0)return null;let o=this.measureScopeAtFontSize(t,s,e);if(o<=0)return null;if(Math.abs(n-o)<.01)return e;let a=Math.abs(i-e)<.01?o:this.measureScopeAtFontSize(t,s,i);if(a<=0)return e*(n/o);let l=(a-o)/(i-e);if(!Number.isFinite(l)||Math.abs(l)<1e-4)return e*(n/o);let d=e+(n-o)/l;return!Number.isFinite(d)||d<=0?null:d}measureScopeAtFontSize(t,e,i){if(e){let o=Array.from(t.querySelectorAll(".-s-char")),a=o.map(d=>d.style.fontSize);o.forEach(d=>{d.style.fontSize=`${i}px`}),t.offsetWidth;let l=this.measureCharScopeWidth(t);return o.forEach((d,c)=>{d.style.fontSize=a[c]}),l}let n=t.style.fontSize;t.style.fontSize=`${i}px`,t.offsetWidth;let s=this.measureContentWidth(t);return t.style.fontSize=n,s}measureCharScopeWidth(t){let e=0;Array.from(t.querySelectorAll(".-s-char")).forEach(a=>{let l=a.getBoundingClientRect(),d=window.getComputedStyle(a);e+=l.width+(parseFloat(d.marginLeft)||0)+(parseFloat(d.marginRight)||0)});let n=document.createTreeWalker(t,NodeFilter.SHOW_TEXT),s=n.nextNode();for(;s;){let a=s.parentElement,l=!!a?.closest(".-s-char"),d=!!a&&!a.classList.contains("-s-char")&&!a.classList.contains("-s-word")&&!a.classList.contains("-s-line")&&!a.querySelector(".-s-char, .-s-word, .-s-line");if(!l&&!d&&s.textContent?.length){let c=document.createRange();c.selectNodeContents(s),e+=c.getBoundingClientRect().width}s=n.nextNode()}return Array.from(t.querySelectorAll("*")).filter(a=>{let l=a;return!l.classList.contains("-s-char")&&!l.classList.contains("-s-word")&&!l.classList.contains("-s-line")&&!l.querySelector(".-s-char, .-s-word, .-s-line")}).forEach(a=>{e+=a.getBoundingClientRect().width}),e}measureContentWidth(t){if(!t.childNodes.length)return t.getBoundingClientRect().width;let e=document.createRange();return e.selectNodeContents(t),e.getBoundingClientRect().width}computeFitFontSize(t,e,i,n){let s=n!==void 0?i-n:0,o=i-s;return o<=0?t*(e/i):t*(e-s)/o}computeValue(t,e,i){if(t.align.startsWith("random")){let n=t.random?.min??0,s=t.random?.max??i-1;return Math.floor(Math.random()*(s-n+1))+n}switch(t.align){case"start":return e;case"end":return i-e-1;case"center":{let n=Math.floor((i-1)/2);return Math.abs(e-n)}default:return e}}applyCalculatedValues(t,e){let i=o=>o.words.reduce((a,l)=>a+l.chars.length,0),n=t.reduce((o,a)=>o+a.words.length,0),s=t.reduce((o,a)=>o+a.words.reduce((l,d)=>l+d.chars.length,0),0);t.forEach((o,a)=>{e.line&&(o.calculatedValues=e.line.map(l=>({type:"line",align:l.align,value:this.computeValue(l,a,t.length)}))),o.words.forEach(l=>{e.word&&(l.calculatedValues=e.word.map(c=>({type:"word",align:c.align,value:this.computeValue(c,l.wordIndexGlobal,n)}))),e.wordLine&&(l.calculatedValues??(l.calculatedValues=[]),l.calculatedValues.push(...e.wordLine.map(c=>({type:"wordLine",align:c.align,value:this.computeValue(c,l.wordIndexInLine,o.words.length)}))));let d=i(o);l.chars.forEach(c=>{let p=[];e.char&&p.push(...e.char.map(g=>({type:"char",align:g.align,value:this.computeValue(g,c.charIndexGlobal,s)}))),e.charWord&&p.push(...e.charWord.map(g=>({type:"charWord",align:g.align,value:this.computeValue(g,c.charIndexInWord,l.chars.length)}))),e.charLine&&p.push(...e.charLine.map(g=>({type:"charLine",align:g.align,value:this.computeValue(g,c.charIndexInLine,d)}))),c.calculatedValues=p})})})}escapeAttribute(t){return t.replace(/src="(https?:\/\/[^"\s]+)"/g,"src=$1")}};var fr=class extends C{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 mt="data-fps",vr=class extends C{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(mt,e);this.displayElement&&this.displayElement.setAttribute(mt,e),this.events.emit("fps",t)}scanElements(){this.fpsElements.clear(),document.querySelectorAll(`[${mt}]`).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(mt)&&(e=!0),s.querySelector(`[${mt}]`)&&(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(mt,"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
+ [${mt}]::before {
21
+ content: 'FPS: ' attr(${mt});
22
22
  }
23
- `,document.head.appendChild(i)}this.displayElement=t}};var be=class extends M{constructor(t){super(t);this.history=[];this.maxPoints=0;this.canvasHeight=0;this.currentValue=0;this.targetValue=0;this._type=2}onInit(){this.initCanvas(),this.maxPoints=this.canvas.width}onScroll(t){let r=Math.abs(t.scroll.displacement);this.currentValue=r,this.history.push(r),this.history.length>this.maxPoints&&this.history.shift(),this.draw()}draw(){let t=this.context,r=this.canvas.width,i=this.canvas.height;t.clearRect(0,0,r,i),t.strokeStyle="#007bff",t.lineWidth=2,t.beginPath(),this.history.forEach((n,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 Q="data-val",Z="data-val-pct",J="data-dir",ye=class extends M{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 r=t.scroll.current,i=t.scroll.target,n=t.viewport.contentHeight,s=t.viewport.windowHeight,o=Math.round(r),a=Math.max(1,n-s),l=Math.round(r/a*100),c;if(r!==i?c=r<i?"\u2193":"\u2191":r!==this.previousCurrent?c=r>this.previousCurrent?"\u2193":"\u2191":c=this.lastDir||"\u2022",this.previousCurrent=r,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 p of this.valElements)p.isConnected&&p.setAttribute(Q,d);this.displayElement&&this.displayElement.setAttribute(Q,d)}if(l!==this.lastValPct){this.lastValPct=l;let d=String(l);for(let p of this.valPctElements)p.isConnected&&p.setAttribute(Z,d);this.displayElement&&this.displayElement.setAttribute(Z,d)}this.setDirection(c),this.events.emit("scroll-position",{val:o,valPct:l,direction:c})}setDirection(t){if(t!==this.lastDir){this.lastDir=t;for(let r of this.dirElements)r.isConnected&&r.setAttribute(J,t);this.displayElement&&this.displayElement.setAttribute(J,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(`[${Q}]`).forEach(t=>{t!==this.displayElement&&this.valElements.add(t)}),document.querySelectorAll(`[${Z}]`).forEach(t=>{t!==this.displayElement&&this.valPctElements.add(t)}),document.querySelectorAll(`[${J}]`).forEach(t=>{t!==this.displayElement&&this.dirElements.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;this.hasTrackingAttr(s)&&(r=!0),s.querySelector(`[${Q}],[${Z}],[${J}]`)&&(r=!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)}}r&&this.scanElements()}),this.observer.observe(document.body,{childList:!0,subtree:!0})}hasTrackingAttr(t){return t.hasAttribute(Q)||t.hasAttribute(Z)||t.hasAttribute(J)}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(J,"\u2022"),t.setAttribute(Q,"0"),t.setAttribute(Z,"0"),document.body.appendChild(t);let r="string-position-tracker-style";if(!document.getElementById(r)){let i=document.createElement("style");i.id=r,i.innerHTML=`
24
- [${J}][${Q}][${Z}]::before {
25
- content: attr(${J}) ' | ' attr(${Q}) 'px (' attr(${Z}) '%)';
23
+ `,document.head.appendChild(i)}this.displayElement=t}};var br=class extends C{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 ft="data-val",vt="data-val-pct",bt="data-dir",yr=class extends C{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),d;if(e!==i?d=e<i?"\u2193":"\u2191":e!==this.previousCurrent?d=e>this.previousCurrent?"\u2193":"\u2191":d=this.lastDir||"\u2022",this.previousCurrent=e,this.idleTimeout&&clearTimeout(this.idleTimeout),d!=="\u2022"&&(this.idleTimeout=setTimeout(()=>{this.setDirection("\u2022")},150)),o!==this.lastVal){this.lastVal=o;let c=String(o);for(let p of this.valElements)p.isConnected&&p.setAttribute(ft,c);this.displayElement&&this.displayElement.setAttribute(ft,c)}if(l!==this.lastValPct){this.lastValPct=l;let c=String(l);for(let p of this.valPctElements)p.isConnected&&p.setAttribute(vt,c);this.displayElement&&this.displayElement.setAttribute(vt,c)}this.setDirection(d),this.events.emit("scroll-position",{val:o,valPct:l,direction:d})}setDirection(t){if(t!==this.lastDir){this.lastDir=t;for(let e of this.dirElements)e.isConnected&&e.setAttribute(bt,t);this.displayElement&&this.displayElement.setAttribute(bt,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(`[${ft}]`).forEach(t=>{t!==this.displayElement&&this.valElements.add(t)}),document.querySelectorAll(`[${vt}]`).forEach(t=>{t!==this.displayElement&&this.valPctElements.add(t)}),document.querySelectorAll(`[${bt}]`).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(`[${ft}],[${vt}],[${bt}]`)&&(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(ft)||t.hasAttribute(vt)||t.hasAttribute(bt)}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(bt,"\u2022"),t.setAttribute(ft,"0"),t.setAttribute(vt,"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
+ [${bt}][${ft}][${vt}]::before {
25
+ content: attr(${bt}) ' | ' attr(${ft}) 'px (' attr(${vt}) '%)';
26
26
  }
27
- `,document.head.appendChild(i)}this.displayElement=t}};function br(u,e){let t=null;return function(...r){let i=this;t&&clearTimeout(t),t=setTimeout(()=>{u.apply(i,r),t=null},e)}}var Se=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 xe=class extends M{constructor(e){super(e),this.htmlKey="autoplay",this.attributesToMap=[...this.attributesToMap,{key:"src",type:"string",fallback:""}]}onObjectConnected(e){e.setProperty("onEnterEvent",this.onEnterObject.bind(this)),e.events.on("enter",e.getProperty("onEnterEvent")),e.setProperty("onLeaveEvent",this.onLeaveObject.bind(this)),e.events.on("leave",e.getProperty("onLeaveEvent"));let t=e.htmlElement,r=this.tools.domAttribute.process({element:t,key:"string-started",fallback:null})!==null;t.tagName.toLowerCase()==="video"&&!r&&(t.setAttribute("string-started",""),t.muted=!0,t.setAttribute("muted","muted"),t.setAttribute("playsinline",""),t.setAttribute("loop",""),t.setAttribute("autoplay",""),t.src=e.getProperty("src"),t.load(),t.addEventListener("canplay",()=>{}))}onEnterObject(e){let t=e.htmlElement;this.tryPlay(t)}onLeaveObject(e){e.htmlElement.pause()}tryPlay(e){e.play().catch(t=>console.warn("[StringVideoAutoplay] Autoplay failed:",t))}};var qe=(i=>(i.ACTIVE="-active",i.ENTERING="-entering",i.LEAVING="-leaving",i.DISABLED="-disabled",i))(qe||{}),yr={PROGRESS:"--sequence-progress",DIRECTION:"--sequence-direction"};var Me=class Me extends M{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 c={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,c),this.emitTransitionStart(t,c)}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"),c=typeof l=="function"?l(i):i;o!==r&&(s.classList.remove(...Me.ALL_STATES),s.classList.add(r),t.setProperty("_state",r)),a!==n&&(t.setProperty("_direction",n),x.run(()=>x.setVars(s,{[yr.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)}};Me.ALL_STATES=Object.values(qe);var Ee=Me;var tt=class tt extends M{constructor(e){super(e),this.htmlKey="form"}initializeObject(e,t,r,i){super.initializeObject(e,t,r,i);let n=t.getProperty("form-events")??[];n.forEach(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,p={},h=new Set;for(let v of o){let m=v.field;if(!m.isConnected||!this.shouldValidateField(m))continue;if(this.isRadioField(m)){if(h.has(v.key))continue;h.add(v.key)}let{key:g,rules:b,needsContext:y}=v,f=this.getFieldValue(m);p[g]=f,a[g]=f;let{valid:S,errors:E}=this.tools.validation.process({rules:b,value:f,context:this.buildContext(y,g,a)});this.applyValidationState(s,m,g,S,E,"submit"),S||(d=!1)}if(d)this.events.emit(`form:submit:${t.id}`,p);else{let v=new Set,m=o.find(g=>{let b=g.field;if(!b.isConnected||!this.shouldValidateField(b))return!1;if(this.isRadioField(b)){if(v.has(g.key))return!1;v.add(g.key)}let{key:y,rules:f,needsContext:S}=g,E=this.getFieldValue(b);a[y]=E;let{valid:T}=this.tools.validation.process({rules:f,value:E,context:this.buildContext(S,y,a)});return!T});m?.field&&typeof m.field.focus=="function"&&m.field.focus(),this.events.emit(`form:invalid:${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(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}:${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(m=>m.field===e))return;let o=this.registerFieldIndex(e,s??r.length),a=this.getInputKey(e,o),l=this.getFieldRules(e),c=this.supportsBeforeInputValidation(l),d=this.requiresContext(l),p=this.getInputEventType(e),h={field:e,key:a,rules:l,supportsRealtime:c,needsContext:d,inputEventType:p,inputHandler:()=>{}},v=m=>{let g=m.currentTarget||m.target;if(!g||!g.isConnected||!this.shouldValidateField(g))return;let b=this.getFieldValue(g);i[h.key]=b;let y=this.buildContext(h.needsContext,h.key,i),{valid:f,errors:S}=this.tools.validation.process({rules:h.rules,value:b,context:y});this.applyValidationState(t,g,h.key,f,S,"live")};if(h.inputHandler=v,e.addEventListener(p,v),n.push({eventElement:e,eventType:p,eventCallback:v}),c&&(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)){let m=g=>{let b=g;if(b.isComposing||b.inputType?.startsWith("insertComposition"))return;let y=g.currentTarget||g.target;if(!y||!(y instanceof HTMLInputElement||y instanceof HTMLTextAreaElement)||!y.isConnected)return;let f=y.selectionStart??0,S=y.selectionEnd??0,E=y.value;switch(b.inputType){case"deleteContentBackward":E=f===S&&f>0?y.value.slice(0,f-1)+y.value.slice(S):y.value.slice(0,f)+y.value.slice(S);break;case"deleteContentForward":E=f===S&&f<y.value.length?y.value.slice(0,f)+y.value.slice(f+1):y.value.slice(0,f)+y.value.slice(S);break;case"insertFromPaste":case"insertFromDrop":case"insertReplacementText":E=y.value.slice(0,f)+(b.data||"")+y.value.slice(S);break;default:typeof b.data=="string"&&(E=y.value.slice(0,f)+b.data+y.value.slice(S))}let{errors:T}=this.tools.validation.process({rules:h.rules,value:E,type:"beforeinput",context:this.buildContext(h.needsContext,h.key,i,{applied:!0,value:E})});T.length>0&&g.cancelable&&g.preventDefault()};h.beforeInputHandler=m,e.addEventListener("beforeinput",m),n.push({eventElement:e,eventType:"beforeinput",eventCallback:m})}e.classList.add("-inited"),r.push(h),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=>tt.beforeInputRuleKeys.has(t.key))}requiresContext(e){return e.some(t=>tt.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 tt.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"}};tt.beforeInputRuleKeys=new Set(["number","integer","email","phone","letters","lettersSpaces","lettersNumbers","alpha","alpha_num","alpha_dash","digits","url","pattern"]),tt.crossFieldRuleKeys=new Set(["same","different","after","before"]),tt.serviceAttributePrefixes=["error","group"];var we=tt;var Te=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 Ce=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 Pe=`
28
- <svg viewBox="0 0 22 24" aria-hidden="true">
29
- <path
30
- d="M4.17 10.42L3.08 1.53C2.95.45 3.87-.46 4.94-.33l7.31.91 7.81-.74"
31
- transform="matrix(0.707107 0.707107 -0.707107 0.707107 8.37011 3.33333)"
32
- fill="none"
33
- stroke="currentColor"
34
- stroke-width="1.6"
35
- stroke-linejoin="bevel"
36
- />
37
- <path
38
- d="M0 2.5L3.3333333 0"
39
- transform="matrix(-4.37114e-08 -1 1 -4.37114e-08 15.0368 6.25)"
40
- fill="none"
41
- stroke="currentColor"
42
- stroke-width="0.6"
43
- stroke-miterlimit="10"
44
- />
45
- <path
46
- d="M0 2.5L3.3333333 0"
47
- transform="matrix(-4.37114e-08 -1 1 -4.37114e-08 17.5368 5)"
48
- fill="none"
49
- stroke="currentColor"
50
- stroke-width="0.6"
51
- stroke-miterlimit="10"
52
- />
53
- </svg>`,Sr=`
54
- <svg viewBox="0 0 20 20" aria-hidden="true">
55
- <path
56
- d="M6.4 0h3.2c2.24021 0 3.36031 0 4.21596.43597a4 4 0 0 1 1.74806 1.74807C16 3.03969 16 4.15979 16 6.4v3.2c0 2.24021 0 3.36031-.43598 4.21596a4 4 0 0 1-1.74806 1.74806C12.96031 16 11.84021 16 9.6 16H6.4c-2.24021 0-3.36031 0-4.21596-.43598a4 4 0 0 1-1.74807-1.74806C0 12.96031 0 11.84021 0 9.6V6.4c0-2.24021 0-3.36031.43597-4.21596A4 4 0 0 1 2.18404.43597C3.03969 0 4.15979 0 6.4 0Z"
57
- transform="translate(2 2)"
58
- fill="none"
59
- stroke="currentColor"
60
- stroke-width="1.5"
61
- stroke-miterlimit="10"
62
- fill-rule="evenodd"
63
- />
64
- <path d="M0.5 0L0.5 20" transform="translate(5.5 0)" fill="none" stroke="currentColor" stroke-width="1" stroke-dasharray="1 1" />
65
- <path d="M0.5 0L0.5 20" transform="translate(9.5 0)" fill="none" stroke="currentColor" stroke-width="1" stroke-dasharray="1 1" />
66
- <path d="M0.5 0L0.5 20" transform="translate(13.5 0)" fill="none" stroke="currentColor" stroke-width="1" stroke-dasharray="1 1" />
67
- </svg>`,xr=`
68
- <svg viewBox="0 0 20 20" aria-hidden="true">
69
- <path
70
- d="M10.36197.32698A4 4 0 0 1 11.67302 1.63803c.2394.46984.25416.75823.4174 1.06004a4 4 0 0 0 1.21135 1.2114c.30177.16324.59023.17804 1.0602.41751A4 4 0 0 1 15.67302 5.63803C16 6.27976 16 7.11984 16 8.8v2.4c0 1.68016 0 2.52024-.32698 3.16197a4 4 0 0 1-1.31105 1.31105C13.72024 16 12.88016 16 11.2 16H8.8c-1.68016 0-2.52024 0-3.16197-.32698a4 4 0 0 1-1.31105-1.31105c-.23941-.46987-.25415-.75828-.41748-1.06022a4 4 0 0 0-1.2114-1.2113c-.30182-.16326-.59021-.17803-1.06007-.41743A4 4 0 0 1 .32698 10.36197C0 9.72024 0 8.88016 0 7.2V4.8c0-1.68016 0-2.52024.32698-3.16197A4 4 0 0 1 1.63803.32698C2.27976 0 3.11984 0 4.8 0h2.4C8.88016 0 9.72024 0 10.36197.32698Z"
71
- transform="translate(2 2)"
72
- fill="none"
73
- stroke="currentColor"
74
- stroke-width="1.5"
75
- stroke-miterlimit="10"
76
- fill-rule="evenodd"
77
- />
78
- <path
79
- d="M4.8 0h2.4C8.88016 0 9.72024 0 10.36197.32698A4 4 0 0 1 11.67302 1.63803C12 2.27976 12 3.11984 12 4.8v2.4c0 1.68016 0 2.52024-.32698 3.16197a4 4 0 0 1-1.31105 1.31105C9.72024 12 8.88016 12 7.2 12H4.8c-1.68016 0-2.52024 0-3.16197-.32698A4 4 0 0 1 .32698 10.36197C0 9.72024 0 8.88016 0 7.2V4.8c0-1.68016 0-2.52024.32698-3.16197A4 4 0 0 1 1.63803.32698C2.27976 0 3.11984 0 4.8 0Z"
80
- transform="translate(2 2)"
81
- fill="none"
82
- stroke="currentColor"
83
- stroke-width="1.3"
84
- fill-rule="evenodd"
85
- />
86
- <path
87
- d="M4.8 0h2.4C8.88016 0 9.72024 0 10.36197.32698A4 4 0 0 1 11.67302 1.63803C12 2.27976 12 3.11984 12 4.8v2.4c0 1.68016 0 2.52024-.32698 3.16197a4 4 0 0 1-1.31105 1.31105C9.72024 12 8.88016 12 7.2 12H4.8c-1.68016 0-2.52024 0-3.16197-.32698A4 4 0 0 1 .32698 10.36197C0 9.72024 0 8.88016 0 7.2V4.8c0-1.68016 0-2.52024.32698-3.16197A4 4 0 0 1 1.63803.32698C2.27976 0 3.11984 0 4.8 0Z"
88
- transform="translate(6 6)"
89
- fill="none"
90
- stroke="currentColor"
91
- stroke-width="1.3"
92
- fill-rule="evenodd"
93
- />
94
- <circle cx="10" cy="10" r="2" fill="currentColor" />
95
- </svg>`,Er=`
96
- <svg viewBox="0 0 20 20" aria-hidden="true">
97
- <path
98
- d="M5 3v9.4c0 .56005 0 .84008-.109 1.05399a2 2 0 0 1-.43702.56201 2 2 0 0 1-.56202.437c-.21391.109-.49394.109-1.05398.109H3c-.93188 0-1.39782 0-1.76537-.15224a3 3 0 0 1-1.01664-.93978C0 13.14553 0 12.58547 0 11.46537V3.2c0-1.1201 0-1.68016.21799-2.10798A3 3 0 0 1 1.09202.21799C1.51984 0 2.0799 0 3.2 0h7.6c1.1201 0 1.68016 0 2.10798.21799a3 3 0 0 1 .93978 1.01664C14 1.60218 14 2.06812 14 3v.4c0 .56005 0 .84008-.109 1.05399a2 2 0 0 1-.43701.56202c-.21392.109-.49395.109-1.05399.109H7"
99
- transform="translate(3 3)"
100
- fill="none"
101
- stroke="currentColor"
102
- stroke-width="1.5"
103
- stroke-miterlimit="10"
104
- fill-rule="evenodd"
105
- />
106
- <path d="M2 0.5H0" transform="translate(6 7.5)" fill="none" stroke="currentColor" stroke-width="1" />
107
- <path d="M2 0.5H0" transform="translate(6 12.5)" fill="none" stroke="currentColor" stroke-width="1" />
108
- <path d="M0.5 2V0" transform="translate(12.5 6)" fill="none" stroke="currentColor" stroke-width="1" />
109
- </svg>`,Mr=`
110
- <svg viewBox="0 0 20 20" aria-hidden="true">
111
- <path d="M4 7.5H16" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" />
112
- <path d="M4 12.5H16" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" />
113
- <path d="M10 2.5V17.5" fill="none" stroke="currentColor" stroke-width="1" stroke-dasharray="1.4 1.4" />
114
- <path d="M7.5 4.5L10 2L12.5 4.5" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />
115
- <path d="M7.5 15.5L10 18L12.5 15.5" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />
116
- </svg>`,wr=`
117
- <svg viewBox="0 0 16 16" aria-hidden="true">
118
- <path d="M5 3.5H11" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" />
119
- <path d="M5 12.5H11" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" />
120
- <path d="M8 1.5V14.5" fill="none" stroke="currentColor" stroke-width="1" stroke-dasharray="1.2 1.2" />
121
- <path d="M6.2 5.2L8 3.4L9.8 5.2" fill="none" stroke="currentColor" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round" />
122
- <path d="M6.2 10.8L8 12.6L9.8 10.8" fill="none" stroke="currentColor" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round" />
123
- </svg>`,Tr=`
124
- <svg viewBox="0 0 20 20" aria-hidden="true">
125
- <path
126
- d="M6.4 0h3.2c2.24021 0 3.36031 0 4.21596.43597a4 4 0 0 1 1.74806 1.74807C16 3.03969 16 4.15979 16 6.4v3.2c0 2.24021 0 3.36031-.43598 4.21596a4 4 0 0 1-1.74806 1.74806C12.96031 16 11.84021 16 9.6 16H6.4c-2.24021 0-3.36031 0-4.21596-.43598a4 4 0 0 1-1.74807-1.74806C0 12.96031 0 11.84021 0 9.6V6.4c0-2.24021 0-3.36031.43597-4.21596A4 4 0 0 1 2.18404.43597C3.03969 0 4.15979 0 6.4 0Z"
127
- transform="translate(2 2)"
128
- fill="none"
129
- stroke="currentColor"
130
- stroke-width="1.5"
131
- stroke-miterlimit="10"
132
- fill-rule="evenodd"
133
- />
134
- <path
135
- d="M0 6.5L2.9 4.2L5.3 5.8L8.6 2.1"
136
- transform="translate(5.6 7)"
137
- fill="none"
138
- stroke="currentColor"
139
- stroke-width="1.3"
140
- stroke-linecap="round"
141
- stroke-linejoin="round"
142
- />
143
- <path
144
- d="M0 0.5H9.5"
145
- transform="translate(5.25 13.25)"
146
- fill="none"
147
- stroke="currentColor"
148
- stroke-width="1.1"
149
- stroke-linecap="round"
150
- />
151
- </svg>`,Le=`
152
- <svg viewBox="0 0 12 12" aria-hidden="true">
153
- <path
154
- d="M2.25 7.5L6 4.25L9.75 7.5"
155
- fill="none"
156
- stroke="currentColor"
157
- stroke-width="1.5"
158
- stroke-linecap="round"
159
- stroke-linejoin="round"
160
- />
161
- </svg>`;var ni={"--string-dev-panel-bg":"#ffffff","--string-dev-panel-border":"1px solid #e0e0e0","--string-dev-panel-radius":"16px","--string-dev-panel-shadow":"0 16px 24px rgba(0, 0, 0, 0.1)","--string-dev-panel-backdrop":"blur(12px)","--string-dev-panel-padding":"4px","--string-dev-panel-font-family":'-apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',"--string-dev-panel-font-size":"12px","--string-dev-panel-text":"#111111","--string-dev-panel-muted":"rgba(17, 17, 17, 0.6)","--string-dev-panel-subtle":"rgba(17, 17, 17, 0.72)","--string-dev-panel-divider":"rgba(17, 17, 17, 0.08)","--string-dev-header-font-size":"10px","--string-dev-header-font-weight":"500","--string-dev-header-letter-spacing":"0","--string-dev-header-padding":"8px 8px 8px","--string-dev-header-margin-bottom":"4px","--string-dev-accent":"#FF4F36","--string-dev-accent-soft":"rgba(255, 79, 54, 0.12)","--string-dev-accent-soft-hover":"rgba(255, 79, 54, 0.18)","--string-dev-focus-color":"rgba(255, 79, 54, 0.68)","--string-dev-focus-shadow":"0 0 0 2px rgba(255, 79, 54, 0.18)","--string-dev-field-bg":"rgba(221, 221, 221, 0.4)","--string-dev-field-border":"rgba(255, 255, 255, 0.96)","--string-dev-field-radius":"8px","--string-dev-input-height":"32px","--string-dev-button-height":"32px","--string-dev-chip-size":"24px","--string-dev-icon-button-size":"20px","--string-dev-icon-button-radius":"8px","--string-dev-chip-active-bg":"rgba(221, 221, 221, 0.54)","--string-dev-chip-muted":"rgba(17, 17, 17, 0.22)","--string-dev-chip-resolved":"rgba(17, 17, 17, 0.78)","--string-dev-icon-button-hover-bg":"rgba(17, 17, 17, 0.08)"};function si(u,e){return u.trim().split(`
162
- `).map(t=>`${e}${t}`).join(`
163
- `)}function Ot(u,e={}){let t=Array.isArray(u)?u.join(`,
164
- `):u,r={...ni,...e},i=Object.entries(r).map(([n,s])=>`${n}: ${s};`).join(`
165
- `);return`${t} {
166
- ${si(i," ")}
167
- }`}function Oe(){if(typeof document>"u")return null;let u="string-devtools-shared-styles",e=document.getElementById(u);if(e instanceof HTMLStyleElement)return e;let t=document.createElement("style");return t.id=u,t.textContent=`
168
- ${Ot("[data-string-devtools-theme]")}
169
-
170
- [data-string-devtools-panel],
171
- [data-string-devtools-button],
172
- [data-string-devtools-icon-button],
173
- [data-string-devtools-chip],
174
- [data-string-devtools-text-input] {
175
- box-sizing: border-box;
176
- font-family: var(--string-dev-panel-font-family);
177
- }
27
+ `,document.head.appendChild(i)}this.displayElement=t}};function cn(u,r){let t=null;return function(...e){let i=this;t&&clearTimeout(t),t=setTimeout(()=>{u.apply(i,e),t=null},r)}}var Sr=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 Lr=class extends C{constructor(r){super(r),this.htmlKey="autoplay",this.attributesToMap=[...this.attributesToMap,{key:"src",type:"string",fallback:""}]}onObjectConnected(r){r.setProperty("onEnterEvent",this.onEnterObject.bind(this)),r.events.on("enter",r.getProperty("onEnterEvent")),r.setProperty("onLeaveEvent",this.onLeaveObject.bind(this)),r.events.on("leave",r.getProperty("onLeaveEvent"));let 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 Li=(i=>(i.ACTIVE="-active",i.ENTERING="-entering",i.LEAVING="-leaving",i.DISABLED="-disabled",i))(Li||{}),un={PROGRESS:"--sequence-progress",DIRECTION:"--sequence-direction"};var wr=class wr extends C{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 d={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,d),this.emitTransitionStart(t,d)}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"),d=typeof l=="function"?l(i):i;o!==e&&(s.classList.remove(...wr.ALL_STATES),s.classList.add(e),t.setProperty("_state",e)),a!==n&&(t.setProperty("_direction",n),E.run(()=>E.setVars(s,{[un.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)}};wr.ALL_STATES=Object.values(Li);var Er=wr;var yt=class yt extends C{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(d=>{d.eventElement.removeEventListener(d.eventType,d.eventCallback)}),n.length=0,t.setProperty("form-events",n),super.onObjectConnected(t);let s=t.htmlElement,o=[],a={};this.getInteractiveFields(s).forEach((d,c)=>this.registerField(d,s,o,a,n,c));let l=d=>{d.preventDefault();let c=!0,p={},g=new Set;for(let h of o){let m=h.field;if(!m.isConnected||!this.shouldValidateField(m))continue;if(this.isRadioField(m)){if(g.has(h.key))continue;g.add(h.key)}let{key:f,rules:v,needsContext:y}=h,b=this.getFieldValue(m);p[f]=b,a[f]=b;let{valid:S,errors:L}=this.tools.validation.process({rules:v,value:b,context:this.buildContext(y,f,a)});this.applyValidationState(s,m,f,S,L,"submit"),S||(c=!1)}if(c)this.events.emit(`form:submit:${t.id}`,p);else{let h=new Set,m=o.find(f=>{let v=f.field;if(!v.isConnected||!this.shouldValidateField(v))return!1;if(this.isRadioField(v)){if(h.has(f.key))return!1;h.add(f.key)}let{key:y,rules:b,needsContext:S}=f,L=this.getFieldValue(v);a[y]=L;let{valid:M}=this.tools.validation.process({rules:b,value:L,context:this.buildContext(S,y,a)});return!M});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(d=>{let c=document.createElement("span");c.textContent=d,o.appendChild(c)})),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),d=this.supportsBeforeInputValidation(l),c=this.requiresContext(l),p=this.getInputEventType(r),g={field:r,key:a,rules:l,supportsRealtime:d,needsContext:c,inputEventType:p,inputHandler:()=>{}},h=m=>{let f=m.currentTarget||m.target;if(!f||!f.isConnected||!this.shouldValidateField(f))return;let v=this.getFieldValue(f);i[g.key]=v;let y=this.buildContext(g.needsContext,g.key,i),{valid:b,errors:S}=this.tools.validation.process({rules:g.rules,value:v,context:y});this.applyValidationState(t,f,g.key,b,S,"live")};if(g.inputHandler=h,r.addEventListener(p,h),n.push({eventElement:r,eventType:p,eventCallback:h}),d&&(r instanceof HTMLInputElement||r instanceof HTMLTextAreaElement)){let m=f=>{let v=f;if(v.isComposing||v.inputType?.startsWith("insertComposition"))return;let y=f.currentTarget||f.target;if(!y||!(y instanceof HTMLInputElement||y instanceof HTMLTextAreaElement)||!y.isConnected)return;let b=y.selectionStart??0,S=y.selectionEnd??0,L=y.value;switch(v.inputType){case"deleteContentBackward":L=b===S&&b>0?y.value.slice(0,b-1)+y.value.slice(S):y.value.slice(0,b)+y.value.slice(S);break;case"deleteContentForward":L=b===S&&b<y.value.length?y.value.slice(0,b)+y.value.slice(b+1):y.value.slice(0,b)+y.value.slice(S);break;case"insertFromPaste":case"insertFromDrop":case"insertReplacementText":L=y.value.slice(0,b)+(v.data||"")+y.value.slice(S);break;default:typeof v.data=="string"&&(L=y.value.slice(0,b)+v.data+y.value.slice(S))}let{errors:M}=this.tools.validation.process({rules:g.rules,value:L,type:"beforeinput",context:this.buildContext(g.needsContext,g.key,i,{applied:!0,value:L})});M.length>0&&f.cancelable&&f.preventDefault()};g.beforeInputHandler=m,r.addEventListener("beforeinput",m),n.push({eventElement:r,eventType:"beforeinput",eventCallback:m})}r.classList.add("-inited"),e.push(g),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=>yt.beforeInputRuleKeys.has(t.key))}requiresContext(r){return r.some(t=>yt.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 yt.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"}};yt.beforeInputRuleKeys=new Set(["number","integer","email","phone","letters","lettersSpaces","lettersNumbers","alpha","alpha_num","alpha_dash","digits","url","pattern"]),yt.crossFieldRuleKeys=new Set(["same","different","after","before"]),yt.serviceAttributePrefixes=["error","group"];var Mr=yt;var xr=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 Cr=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 pn=[{id:"icon-20_logo",viewBox:"0 0 20 20",content:'<path fill="currentColor" id="Combined-Shape" d="M9.443,4.529L13.911,10.273L19.885,15.217L18.865,16.45L12.823,11.45L12.702,11.324L8.181,5.511C7.834,5.066 7.161,5.065 6.814,5.51L1.297,12.564L0.036,11.578L5.553,4.524C6.543,3.259 8.458,3.261 9.443,4.529ZM14.407,2.737L16.907,6.07L16.427,6.43L13.927,3.097L14.407,2.737ZM16.907,1.487L19.407,4.82L18.927,5.18L16.427,1.847L16.907,1.487Z"/>'},{id:"icon-20_layout",viewBox:"0 0 20 20",content:'<path fill="currentColor" d="M8.4,1.25L11.6,1.25C14.024,1.25 15.231,1.296 16.156,1.768C17.05,2.223 17.777,2.95 18.232,3.844C18.704,4.769 18.75,5.976 18.75,8.4L18.75,11.6C18.75,14.024 18.704,15.231 18.232,16.156C17.777,17.05 17.05,17.777 16.156,18.232C15.231,18.704 14.024,18.75 11.6,18.75L8.4,18.75C5.976,18.75 4.769,18.704 3.844,18.232C2.95,17.777 2.223,17.05 1.768,16.156C1.296,15.231 1.25,14.024 1.25,11.6L1.25,8.4C1.25,5.976 1.296,4.769 1.768,3.844C2.223,2.95 2.95,2.223 3.844,1.768C4.769,1.296 5.976,1.25 8.4,1.25ZM8.4,2.75C6.343,2.75 5.31,2.704 4.525,3.104C3.913,3.416 3.416,3.913 3.104,4.525C2.704,5.31 2.75,6.343 2.75,8.4L2.75,11.6C2.75,13.657 2.704,14.69 3.104,15.475C3.416,16.087 3.913,16.584 4.525,16.896C5.31,17.296 6.343,17.25 8.4,17.25L11.6,17.25C13.657,17.25 14.69,17.296 15.475,16.896C16.087,16.584 16.584,16.087 16.896,15.475C17.296,14.69 17.25,13.657 17.25,11.6L17.25,8.4C17.25,6.343 17.296,5.31 16.896,4.525C16.584,3.913 16.087,3.416 15.475,3.104C14.69,2.704 13.657,2.75 11.6,2.75L8.4,2.75ZM6.5,8.5L5.5,8.5L5.5,7.5L6.5,7.5L6.5,8.5ZM14.5,10.5L13.5,10.5L13.5,9.5L14.5,9.5L14.5,10.5ZM14.5,6.5L13.5,6.5L13.5,5.5L14.5,5.5L14.5,6.5ZM14.5,8.5L13.5,8.5L13.5,7.5L14.5,7.5L14.5,8.5ZM6.5,10.5L5.5,10.5L5.5,9.5L6.5,9.5L6.5,10.5ZM6.5,4.5L5.5,4.5L5.5,3.5L6.5,3.5L6.5,4.5ZM6.5,6.5L5.5,6.5L5.5,5.5L6.5,5.5L6.5,6.5ZM6.5,14.5L5.5,14.5L5.5,13.5L6.5,13.5L6.5,14.5ZM6.5,12.5L5.5,12.5L5.5,11.5L6.5,11.5L6.5,12.5ZM14.5,16.5L13.5,16.5L13.5,15.5L14.5,15.5L14.5,16.5ZM6.5,16.5L5.5,16.5L5.5,15.5L6.5,15.5L6.5,16.5ZM14.5,4.5L13.5,4.5L13.5,3.5L14.5,3.5L14.5,4.5ZM14.5,12.5L13.5,12.5L13.5,11.5L14.5,11.5L14.5,12.5ZM14.5,14.5L13.5,14.5L13.5,13.5L14.5,13.5L14.5,14.5ZM10.5,14.5L9.5,14.5L9.5,13.5L10.5,13.5L10.5,14.5ZM10.5,6.5L9.5,6.5L9.5,5.5L10.5,5.5L10.5,6.5ZM10.5,16.5L9.5,16.5L9.5,15.5L10.5,15.5L10.5,16.5ZM10.5,4.5L9.5,4.5L9.5,3.5L10.5,3.5L10.5,4.5ZM10.5,8.5L9.5,8.5L9.5,7.5L10.5,7.5L10.5,8.5ZM10.5,10.5L9.5,10.5L9.5,9.5L10.5,9.5L10.5,10.5ZM10.5,12.5L9.5,12.5L9.5,11.5L10.5,11.5L10.5,12.5ZM6.5,20L5.5,20L5.5,19.5L6.5,19.5L6.5,20ZM6.5,0.5L5.5,0.5L5.5,0L6.5,0L6.5,0.5ZM14.5,20L13.5,20L13.5,19.5L14.5,19.5L14.5,20ZM14.5,0.5L13.5,0.5L13.5,0L14.5,0L14.5,0.5ZM10.5,20L9.5,20L9.5,19.5L10.5,19.5L10.5,20ZM10.5,0.5L9.5,0.5L9.5,0L10.5,0L10.5,0.5Z"/>'},{id:"icon-20_intersection",viewBox:"0 0 20 20",content:'<path fill="currentColor" d="M12.702,1.659C13.408,2.018 13.982,2.592 14.341,3.298C14.577,3.76 14.589,4.044 14.75,4.341C14.958,4.726 15.274,5.042 15.659,5.25C15.956,5.41 16.24,5.423 16.702,5.659C17.408,6.018 17.982,6.592 18.341,7.298C18.704,8.009 18.75,8.936 18.75,10.8L18.75,13.2C18.75,15.064 18.704,15.991 18.341,16.702C17.982,17.408 17.408,17.982 16.702,18.341C15.991,18.704 15.064,18.75 13.2,18.75L10.8,18.75C8.936,18.75 8.009,18.704 7.298,18.341C6.592,17.982 6.018,17.408 5.659,16.702C5.423,16.24 5.411,15.956 5.25,15.659C5.042,15.274 4.726,14.958 4.341,14.75C4.044,14.589 3.76,14.577 3.298,14.341C2.592,13.982 2.018,13.408 1.659,12.702C1.296,11.991 1.25,11.064 1.25,9.2L1.25,6.8C1.25,4.936 1.296,4.009 1.659,3.298C2.018,2.592 2.592,2.018 3.298,1.659C4.009,1.296 4.936,1.25 6.8,1.25L9.2,1.25C11.064,1.25 11.991,1.296 12.702,1.659ZM13.715,5.502C13.61,5.36 13.515,5.211 13.431,5.055C13.265,4.748 13.248,4.456 13.005,3.979C12.789,3.555 12.445,3.211 12.021,2.995C11.45,2.704 10.697,2.75 9.2,2.75L6.8,2.75C5.303,2.75 4.55,2.704 3.979,2.995C3.555,3.211 3.211,3.555 2.995,3.979C2.704,4.55 2.75,5.303 2.75,6.8L2.75,9.2C2.75,10.697 2.704,11.45 2.995,12.021C3.211,12.445 3.555,12.789 3.979,13.005C4.456,13.248 4.748,13.265 5.055,13.431C5.275,13.55 5.481,13.69 5.672,13.848C5.562,13.658 5.5,13.438 5.5,13.203L5.5,10.8C5.5,8.997 5.531,8.1 5.881,7.411C6.217,6.752 6.752,6.217 7.411,5.881C8.1,5.531 8.997,5.5 10.8,5.5L13.2,5.5L13.626,5.5C13.658,5.5 13.687,5.501 13.715,5.502ZM6.152,14.328C6.31,14.519 6.45,14.725 6.569,14.945C6.735,15.252 6.752,15.544 6.995,16.021C7.211,16.445 7.555,16.789 7.979,17.005C8.55,17.296 9.303,17.25 10.8,17.25L13.2,17.25C14.697,17.25 15.45,17.296 16.021,17.005C16.445,16.789 16.789,16.445 17.005,16.021C17.296,15.45 17.25,14.697 17.25,13.2L17.25,10.8C17.25,9.303 17.296,8.55 17.005,7.979C16.789,7.555 16.445,7.211 16.021,6.995C15.544,6.752 15.252,6.735 14.945,6.569C14.789,6.485 14.641,6.39 14.5,6.286L14.5,6.8L14.5,9.2C14.5,11.003 14.469,11.9 14.119,12.589C13.783,13.248 13.248,13.783 12.589,14.119C11.9,14.469 11.003,14.5 9.2,14.5L6.797,14.5C6.562,14.5 6.342,14.438 6.152,14.328ZM13.5,6.5L13.2,6.5L10.8,6.5C9.242,6.5 8.46,6.469 7.865,6.772C7.395,7.012 7.012,7.395 6.772,7.865C6.469,8.46 6.5,9.242 6.5,10.8L6.5,13.203C6.5,13.367 6.633,13.5 6.797,13.5L9.2,13.5C10.758,13.5 11.54,13.531 12.135,13.228C12.605,12.988 12.988,12.605 13.228,12.135C13.531,11.54 13.5,10.758 13.5,9.2L13.5,6.8L13.5,6.5ZM10,8C11.104,8 12,8.896 12,10C12,11.104 11.104,12 10,12C8.896,12 8,11.104 8,10C8,8.896 8.896,8 10,8Z"/>'},{id:"icon-20_progress",viewBox:"0 0 20 20",content:'<path fill="currentColor" d="M11.6,2.5L11.6,1.5L12.402,1.501L12.398,2.501L11.6,2.5ZM11.6,2.5L11.4,2.5L11.4,1.5L11.598,1.5L11.6,2.5ZM2.5,11.378L2.501,12.376L1.501,12.379L1.5,11.378L2.5,11.378ZM6.105,18.243C4.791,18.574 3.416,18.75 2,18.75L2,17.25C2.393,17.25 2.783,17.235 3.169,17.206L3.683,16.624C3.879,16.796 4.094,16.948 4.326,17.074C10.886,16.07 16.07,10.886 17.074,4.326C16.951,4.1 16.804,3.89 16.636,3.698L17.203,3.203C17.234,2.806 17.25,2.405 17.25,2L18.75,2C18.75,3.424 18.572,4.807 18.238,6.128L18.469,6.116C18.484,6.421 18.492,6.758 18.496,7.136L17.946,7.141C16.296,12.264 12.245,16.31 7.119,17.953L7.113,18.496C6.735,18.492 6.398,18.484 6.093,18.468L6.105,18.243ZM9.4,1.5L9.4,2.5L8.363,2.5L8.363,1.5L9.4,1.5ZM2.5,9.378L1.5,9.378L1.5,8.378L2.5,8.378L2.5,9.378ZM14.348,2.568L14.448,1.573C14.864,1.615 15.216,1.681 15.53,1.781L15.227,2.734C14.972,2.653 14.685,2.602 14.348,2.568ZM17.5,9.141L18.5,9.141L18.5,10.141L17.5,10.141L17.5,9.141ZM17.5,12.14L18.5,12.141C18.499,12.509 18.497,12.843 18.492,13.149L17.492,13.132C17.498,12.831 17.499,12.502 17.5,12.14ZM17.326,15.012L18.298,15.246C18.227,15.539 18.133,15.8 18.01,16.043C17.964,16.133 17.915,16.221 17.864,16.307L17.005,15.794C17.045,15.727 17.083,15.659 17.119,15.589C17.208,15.413 17.275,15.224 17.326,15.012ZM15.777,17.015L16.285,17.877C16.206,17.923 16.125,17.968 16.043,18.01C15.794,18.137 15.525,18.233 15.221,18.304L14.993,17.33C15.213,17.279 15.408,17.211 15.589,17.119C15.653,17.086 15.716,17.051 15.777,17.015ZM13.11,17.493L13.127,18.493C12.821,18.498 12.486,18.499 12.119,18.5L12.118,17.5C12.48,17.499 12.809,17.498 13.11,17.493ZM10.119,17.5L10.119,18.5L9.119,18.5L9.119,17.5L10.119,17.5ZM2.728,15.209L1.773,15.506C1.676,15.192 1.611,14.84 1.57,14.425L2.565,14.327C2.599,14.665 2.649,14.953 2.728,15.209ZM2.52,6.396L1.521,6.36C1.535,5.966 1.56,5.622 1.6,5.316L2.591,5.447C2.555,5.725 2.533,6.038 2.52,6.396ZM3.232,3.858L2.441,3.246C2.671,2.949 2.937,2.682 3.233,2.451L3.848,3.24C3.618,3.419 3.411,3.627 3.232,3.858ZM5.433,2.593L5.3,1.602C5.606,1.561 5.95,1.536 6.345,1.521L6.382,2.52C6.024,2.534 5.711,2.556 5.433,2.593Z"/>'},{id:"icon-20_ruler",viewBox:"0 0 20 20",content:'<path fill="currentColor" d="M6,17.75C4.915,17.75 4.376,17.718 3.948,17.541C3.343,17.29 2.847,16.832 2.55,16.248C2.296,15.75 2.25,15.104 2.25,13.8L2.25,6.2C2.25,4.896 2.296,4.25 2.55,3.752C2.813,3.234 3.234,2.813 3.752,2.55C4.25,2.296 4.896,2.25 6.2,2.25L13.8,2.25C15.104,2.25 15.75,2.296 16.248,2.55C16.832,2.847 17.29,3.343 17.541,3.948C17.718,4.376 17.75,4.915 17.75,6L17.75,6.4C17.75,7.144 17.704,7.51 17.559,7.794C17.391,8.124 17.124,8.391 16.794,8.559C16.51,8.704 16.144,8.75 15.4,8.75L10,8.75L10,7.25L12.5,7.25L12.5,6L13.5,6L13.5,7.25L15.4,7.25C15.61,7.25 15.777,7.25 15.916,7.244C16.002,7.24 16.064,7.248 16.113,7.223C16.161,7.199 16.199,7.161 16.223,7.113C16.248,7.064 16.244,6.916 16.244,6.916C16.244,6.916 16.25,5.61 16.25,5.4C16.25,5.4 16.243,4.735 16.155,4.522C16.041,4.247 15.833,4.021 15.567,3.886C15.21,3.704 14.737,3.75 13.8,3.75L6.2,3.75C5.263,3.75 4.79,3.704 4.433,3.886C4.197,4.006 4.006,4.197 3.886,4.433C3.704,4.79 3.75,5.263 3.75,6.2L3.75,13.8C3.75,14.737 3.704,15.21 3.886,15.567C4.021,15.833 4.247,16.041 4.522,16.155C4.829,16.282 5.221,16.25 6,16.25L6,17.75ZM6,17.75L6.006,16.25L6.399,16.25C6.609,16.25 6.777,16.25 6.916,16.244C7.002,16.24 7.064,16.248 7.113,16.223C7.161,16.199 7.199,16.161 7.223,16.113C7.248,16.064 7.24,16.002 7.244,15.916C7.25,15.777 7.25,15.61 7.25,15.4L7.25,13.5L6,13.5L6,12.5L7.25,12.5L7.25,8.5L6,8.5L6,7.5L7.25,7.5L7.25,6L8.75,6L8.75,15.4C8.75,16.144 8.704,16.51 8.559,16.794C8.391,17.124 8.124,17.391 7.794,17.559C7.51,17.704 7.144,17.75 6.4,17.75L6,17.75Z"/>'},{id:"icon-16_noplus",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M2.38,0.675L7.499,6.647L7.5,1L8.5,1L8.5,7.5L15,7.5L15,8.5L9.085,8.498L14.38,14.675L13.62,15.325L1.62,1.325L2.38,0.675ZM7.5,10.119L8.5,11.286L8.5,15L7.5,15L7.5,10.119ZM5.254,7.499L6.111,8.499L1,8.5L1,7.5L5.254,7.499Z" />'},{id:"icon-16_nooffset",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M12.067,11.976L14.38,14.675L13.62,15.325L1.62,1.325L2.38,0.675L5.23,4L10.8,4C11.92,4 12.48,4 12.908,4.218C13.284,4.41 13.59,4.716 13.782,5.092C14,5.52 14,6.08 14,7.2L14,8.8C14,9.92 14,10.48 13.782,10.908C13.59,11.284 13.284,11.59 12.908,11.782C12.684,11.896 12.424,11.95 12.067,11.976ZM2.681,4.497L9.111,11.999L5.2,12C4.08,12 3.52,12 3.092,11.782C2.716,11.59 2.41,11.284 2.218,10.908C2,10.48 2,9.92 2,8.8L2,7.2C2,6.08 2,5.52 2.218,5.092C2.334,4.865 2.491,4.663 2.681,4.497ZM12.646,0.646L13.354,1.354L11,3.707L8.646,1.354L9.354,0.646L11,2.293L12.646,0.646ZM7.354,14.646L6.646,15.354L5,13.707L3.354,15.354L2.646,14.646L5,12.293L7.354,14.646Z"/>'},{id:"icon-16_settings",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M8.208,1.177C8.363,1.209 8.524,1.303 8.846,1.489L13.216,4.011C13.538,4.197 13.699,4.291 13.805,4.408C13.899,4.512 13.97,4.635 14.013,4.768C14.062,4.919 14.062,5.105 14.062,5.477L14.062,10.523C14.062,10.895 14.062,11.081 14.013,11.232C13.97,11.365 13.899,11.488 13.805,11.592C13.699,11.709 13.538,11.803 13.216,11.989L8.846,14.511C8.524,14.697 8.363,14.791 8.208,14.823C8.071,14.853 7.929,14.853 7.792,14.823C7.637,14.791 7.476,14.697 7.154,14.511L2.784,11.989C2.462,11.803 2.301,11.709 2.195,11.592C2.101,11.488 2.03,11.365 1.987,11.232C1.938,11.081 1.938,10.895 1.938,10.523L1.938,5.477C1.938,5.105 1.938,4.919 1.987,4.768C2.03,4.635 2.101,4.512 2.195,4.408C2.301,4.291 2.462,4.197 2.784,4.011L7.154,1.489C7.476,1.303 7.637,1.209 7.792,1.177C7.929,1.147 8.071,1.147 8.208,1.177ZM8,5C6.343,5 5,6.343 5,8C5,9.657 6.343,11 8,11C9.657,11 11,9.657 11,8C11,6.343 9.657,5 8,5Z"/>'},{id:"icon-16_options",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M9,7L9,9L7,9L7,7L9,7ZM9,3L9,5L7,5L7,3L9,3ZM9,11L9,13L7,13L7,11L9,11Z"/>'},{id:"icon-16_grab",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M10,4L12,4L12,6L10,6L10,4ZM10,10L12,10L12,12L10,12L10,10ZM7,4L9,4L9,6L7,6L7,4ZM7,10L9,10L9,12L7,12L7,10ZM7,13L9,13L9,15L7,15L7,13ZM4,4L6,4L6,6L4,6L4,4ZM7,1L9,1L9,3L7,3L7,1ZM4,10L6,10L6,12L4,12L4,10Z"/>'},{id:"icon-16_eye",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M8,3C10.692,3 13.2,4.46 15.526,7.381C15.815,7.744 15.815,8.256 15.526,8.619C13.2,11.54 10.692,13 8,13C5.308,13 2.8,11.54 0.474,8.619C0.185,8.256 0.185,7.744 0.474,7.381C2.8,4.46 5.308,3 8,3ZM8,5C6.343,5 5,6.343 5,8C5,9.657 6.343,11 8,11C9.657,11 11,9.657 11,8C11,6.343 9.657,5 8,5Z"/>'},{id:"icon-16_offset",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M5.2,4L10.8,4C11.92,4 12.48,4 12.908,4.218C13.284,4.41 13.59,4.716 13.782,5.092C14,5.52 14,6.08 14,7.2L14,8.8C14,9.92 14,10.48 13.782,10.908C13.59,11.284 13.284,11.59 12.908,11.782C12.48,12 11.92,12 10.8,12L5.2,12C4.08,12 3.52,12 3.092,11.782C2.716,11.59 2.41,11.284 2.218,10.908C2,10.48 2,9.92 2,8.8L2,7.2C2,6.08 2,5.52 2.218,5.092C2.41,4.716 2.716,4.41 3.092,4.218C3.52,4 4.08,4 5.2,4ZM12.646,0.646L13.354,1.354L11,3.707L8.646,1.354L9.354,0.646L11,2.293L12.646,0.646ZM7.354,14.646L6.646,15.354L5,13.707L3.354,15.354L2.646,14.646L5,12.293L7.354,14.646Z"/>'},{id:"icon-16_play-l",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M11.293,3.281C11.769,2.923 12.007,2.745 12.266,2.75C12.491,2.755 12.702,2.86 12.841,3.038C13,3.241 13,3.539 13,4.134L13,11.866C13,12.461 13,12.759 12.841,12.962C12.702,13.14 12.491,13.245 12.266,13.25C12.007,13.255 11.769,13.077 11.293,12.719L6.225,8.919C5.827,8.621 5.629,8.471 5.551,8.272C5.483,8.097 5.483,7.903 5.551,7.728C5.629,7.529 5.827,7.379 6.225,7.081L11.293,3.281ZM2.8,3L4.2,3C4.48,3 4.62,3 4.727,3.054C4.821,3.102 4.898,3.179 4.946,3.273C5,3.38 5,3.52 5,3.8L5,12.2C5,12.48 5,12.62 4.946,12.727C4.898,12.821 4.821,12.898 4.727,12.946C4.62,13 4.48,13 4.2,13L2.8,13C2.52,13 2.38,13 2.273,12.946C2.179,12.898 2.102,12.821 2.054,12.727C2,12.62 2,12.48 2,12.2L2,3.8C2,3.52 2,3.38 2.054,3.273C2.102,3.179 2.179,3.102 2.273,3.054C2.38,3 2.52,3 2.8,3Z"/>'},{id:"icon-16_play-r",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M4.707,3.281L9.775,7.081C10.173,7.379 10.371,7.529 10.449,7.728C10.517,7.903 10.517,8.097 10.449,8.272C10.371,8.471 10.173,8.621 9.775,8.919L4.707,12.719C4.231,13.077 3.993,13.255 3.734,13.25C3.509,13.245 3.298,13.14 3.159,12.962C3,12.759 3,12.461 3,11.866L3,4.134C3,3.539 3,3.241 3.159,3.038C3.298,2.86 3.509,2.755 3.734,2.75C3.993,2.745 4.231,2.923 4.707,3.281ZM11.8,3L13.2,3C13.48,3 13.62,3 13.727,3.054C13.821,3.102 13.898,3.179 13.946,3.273C14,3.38 14,3.52 14,3.8L14,12.2C14,12.48 14,12.62 13.946,12.727C13.898,12.821 13.821,12.898 13.727,12.946C13.62,13 13.48,13 13.2,13L11.8,13C11.52,13 11.38,13 11.273,12.946C11.179,12.898 11.102,12.821 11.054,12.727C11,12.62 11,12.48 11,12.2L11,3.8C11,3.52 11,3.38 11.054,3.273C11.102,3.179 11.179,3.102 11.273,3.054C11.38,3 11.52,3 11.8,3Z"/>'},{id:"icon-16_plus",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M7.5,8.5L1,8.5L1,7.5L7.5,7.5L7.5,1L8.5,1L8.5,7.5L15,7.5L15,8.5L8.5,8.5L8.5,15L7.5,15L7.5,8.5Z"/>'},{id:"icon-16_minus",viewBox:"0 0 16 16",content:'<rect x="3" y="7.5" width="10" height="1"/>'},{id:"icon-16_close",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M7.293,8L1.646,2.354L2.354,1.646L8,7.293L13.646,1.646L14.354,2.354L8.707,8L14.354,13.646L13.646,14.354L8,8.707L2.354,14.354L1.646,13.646L7.293,8Z"/>'},{id:"icon-16_layout-columns",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M7,3L9,3L9,13L7,13L7,3ZM3,3L5,3L5,13L3,13L3,3ZM11,3L13,3L13,13L11,13L11,3Z"/>'},{id:"icon-16_layout-rows",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M13,3L13,5L3,5L3,3L13,3ZM13,7L13,9L3,9L3,7L13,7ZM13,11L13,13L3,13L3,11L13,11Z"/>'},{id:"icon-16_layout-center",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M12.673,11.362C12.385,11.926 11.926,12.385 11.362,12.673C10.76,12.98 9.983,12.999 8.501,13L8.5,8.5L13,8.501C12.999,9.983 12.98,10.76 12.673,11.362ZM3,8.501L7.5,8.5L7.5,13C6.017,12.999 5.24,12.98 4.638,12.673C4.074,12.385 3.615,11.926 3.327,11.362C3.02,10.76 3.001,9.983 3,8.501ZM11.362,3.327C11.926,3.615 12.385,4.074 12.673,4.638C12.98,5.24 12.999,6.017 13,7.5L8.5,7.5L8.501,3C9.983,3.001 10.76,3.02 11.362,3.327ZM7.5,3L7.5,7.5L3,7.5C3.001,6.017 3.02,5.24 3.327,4.638C3.615,4.074 4.074,3.615 4.638,3.327C5.24,3.02 6.017,3.001 7.5,3Z"/>'},{id:"icon-16_layout-golden",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M8.488,3L8.5,3L8.501,13C8.404,13 8.304,13 8.2,13L7.8,13C6.12,13 5.28,13 4.638,12.673C4.074,12.385 3.615,11.926 3.327,11.362C3,10.72 3,9.88 3,8.2L3,7.8C3,6.12 3,5.28 3.327,4.638C3.615,4.074 4.074,3.615 4.638,3.327C5.28,3 6.12,3 7.8,3L8.2,3L8.488,3ZM12.673,11.362C12.385,11.926 11.926,12.385 11.362,12.673C10.913,12.902 10.366,12.971 9.501,12.991L9.5,9.5L12.991,9.501C12.971,10.366 12.902,10.913 12.673,11.362ZM11.362,3.327C11.926,3.615 12.385,4.074 12.673,4.638C13,5.28 13,6.12 13,7.8L13,8.2C13,8.304 13,8.404 13,8.501L9.5,8.5L9.501,3.009C10.366,3.029 10.913,3.098 11.362,3.327Z"/>'},{id:"icon-16_layout-thirds",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M6.5,10.5L9.5,10.5L9.501,12.991C9.131,13 8.703,13 8.2,13L7.8,13C7.297,13 6.869,13 6.5,12.991L6.5,10.5ZM3.077,10.502L5.5,10.5L5.499,12.923C5.159,12.876 4.884,12.798 4.638,12.673C4.074,12.385 3.615,11.926 3.327,11.362C3.202,11.116 3.125,10.841 3.077,10.502ZM12.673,11.362C12.385,11.926 11.926,12.385 11.362,12.673C11.116,12.798 10.841,12.875 10.502,12.923L10.5,10.5L12.923,10.502C12.875,10.841 12.798,11.116 12.673,11.362ZM13,7.8L13,8.2C13,8.703 13,9.131 12.991,9.501L10.5,9.5L10.5,6.5L12.991,6.5C13,6.869 13,7.297 13,7.8ZM3.009,6.5L5.5,6.5L5.5,9.5L3.009,9.501C3,9.131 3,8.703 3,8.2L3,7.8C3,7.297 3,6.869 3.009,6.5ZM6.5,6.5L9.5,6.5L9.5,9.5L6.5,9.5L6.5,6.5ZM11.362,3.327C11.926,3.615 12.385,4.074 12.673,4.638C12.798,4.884 12.876,5.159 12.923,5.499L10.5,5.5L10.502,3.077C10.841,3.125 11.116,3.202 11.362,3.327ZM5.499,3.077L5.5,5.5L3.077,5.499C3.124,5.159 3.202,4.884 3.327,4.638C3.615,4.074 4.074,3.615 4.638,3.327C4.884,3.202 5.159,3.124 5.499,3.077ZM9.501,3.009L9.5,5.5L6.5,5.5L6.5,3.009C6.869,3 7.297,3 7.8,3L8.2,3C8.703,3 9.131,3 9.501,3.009Z"/>'},{id:"icon-16_layout-dots",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M11,3L13,3L13,5L11,5L11,3ZM11,7L13,7L13,9L11,9L11,7ZM11,11L13,11L13,13L11,13L11,11ZM7,3L9,3L9,5L7,5L7,3ZM7,7L9,7L9,9L7,9L7,7ZM7,11L9,11L9,13L7,13L7,11ZM3,3L5,3L5,5L3,5L3,3ZM3,7L5,7L5,9L3,9L3,7ZM3,11L5,11L5,13L3,13L3,11Z"/>'},{id:"icon-16_export",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M8.5,5C9.983,5.001 10.76,5.02 11.362,5.327C12.12,5.713 12.678,6.402 12.898,7.224C13,7.605 13,8.07 13,9C13,9.93 13,10.395 12.898,10.776C12.678,11.598 12.12,12.287 11.362,12.673C10.72,13 9.88,13 8.2,13L7.8,13C6.12,13 5.28,13 4.638,12.673C3.88,12.287 3.322,11.598 3.102,10.776C3,10.395 3,9.93 3,9C3,8.07 3,7.605 3.102,7.224C3.322,6.402 3.88,5.713 4.638,5.327C5.24,5.02 6.017,5.001 7.5,5L7.5,10L8.5,10L8.5,5ZM7.5,5L7.5,3.207L6.354,4.354L5.646,3.646L8,1.293L10.354,3.646L9.646,4.354L8.5,3.207L8.5,5L7.5,5Z"/>'},{id:"icon-16_import",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M8.5,5C9.983,5.001 10.76,5.02 11.362,5.327C12.12,5.713 12.678,6.402 12.898,7.224C13,7.605 13,8.07 13,9C13,9.93 13,10.395 12.898,10.776C12.678,11.598 12.12,12.287 11.362,12.673C10.72,13 9.88,13 8.2,13L7.8,13C6.12,13 5.28,13 4.638,12.673C3.88,12.287 3.322,11.598 3.102,10.776C3,10.395 3,9.93 3,9C3,8.07 3,7.605 3.102,7.224C3.322,6.402 3.88,5.713 4.638,5.327C5.24,5.02 6.017,5.001 7.5,5L7.5,8.793L6.354,7.646L5.646,8.354L8,10.707L10.354,8.354L9.646,7.646L8.5,8.793L8.5,5ZM7.5,5L7.5,2L8.5,2L8.5,5L7.5,5Z"/>'},{id:"icon-16_break",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M10.475,11.182L11.182,10.475L14.01,13.303L13.303,14.01L10.475,11.182ZM11.437,9.197L11.634,8.217L15.169,8.924L14.973,9.905L11.437,9.197ZM8.217,11.634L9.197,11.437L9.905,14.973L8.924,15.169L8.217,11.634ZM5.525,4.818L4.818,5.525L1.99,2.697L2.697,1.99L5.525,4.818ZM7.783,4.366L6.803,4.563L6.095,1.027L7.076,0.831L7.783,4.366ZM4.563,6.803L4.366,7.783L0.831,7.076L1.027,6.095L4.563,6.803Z"/>'},{id:"icon-16_offset-marker-down",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M8.5,3L7.5,3L7.5,10.793L5.354,8.646L4.646,9.354L8,12.707L11.354,9.354L10.646,8.646L8.5,10.793L8.5,3Z"/>'},{id:"icon-16_offset-marker-up",viewBox:"0 0 16 16",content:'<path fill="currentColor" d="M7.5,13L8.5,13L8.5,5.207L10.646,7.354L11.354,6.646L8,3.293L4.646,6.646L5.354,7.354L7.5,5.207L7.5,13Z"/>'},{id:"icon-12_chevrone-up",viewBox:"0 0 12 12",content:'<path fill="currentColor" d="M3.277,7.416L2.723,6.584L6,4.399L9.277,6.584L8.723,7.416L6,5.601L3.277,7.416Z"/>'},{id:"icon-12_chevrone-down",viewBox:"0 0 12 12",content:'<path fill="currentColor" d="M8.723,4.584L9.277,5.416L6,7.601L2.723,5.416L3.277,4.584L6,6.399L8.723,4.584Z"/>'},{id:"icon-12_arrow-up",viewBox:"0 0 12 12",content:'<path fill="currentColor" d="M5.5,3.934L3.277,5.416L2.723,4.584L6,2.399L9.277,4.584L8.723,5.416L6.5,3.934L6.5,10L5.5,10L5.5,3.934Z"/>'},{id:"icon-12_arrow-down",viewBox:"0 0 12 12",content:'<path fill="currentColor" d="M6.5,8.066L8.723,6.584L9.277,7.416L6,9.601L2.723,7.416L3.277,6.584L5.5,8.066L5.5,2L6.5,2L6.5,8.066Z"/>'}];var Tr=class Tr{constructor(){this.spriteRoot=null;for(let r of pn)this.register(r)}static getInstance(){return this.instance||(this.instance=new Tr),this.instance}register(r){let t=this.ensureSprite();if(t.querySelector(`#${r.id}`))return;let e=document.createElementNS("http://www.w3.org/2000/svg","symbol");e.id=r.id,e.setAttribute("viewBox",r.viewBox),e.innerHTML=r.content,t.appendChild(e)}resolve(r,t,...e){let i=`icon-${r}_${t}`,n=e.map(s=>` data-stdg-icon-${s}`).join("");return`<svg data-stdg-icon-${r}${n}><use href="#${i}"></use></svg>`}ensureSprite(){if(this.spriteRoot)return this.spriteRoot;let r=document.createElementNS("http://www.w3.org/2000/svg","svg");return r.setAttribute("data-string-devtools-icon-sprite",""),r.setAttribute("aria-hidden","true"),r.style.cssText="display:none;position:absolute;width:0;height:0;overflow:hidden",(document.body??document.documentElement).prepend(r),this.spriteRoot=r,r}};Tr.instance=null;var ce=Tr;function F(u,r,...t){return ce.getInstance().resolve(u,r,...t)}function _t(u){let r=document.createElement("div");return r.setAttribute("data-stdg",""),r.setAttribute("data-stdg-badge",""),u&&r.setAttribute("data-target-id",u),r.setAttribute("data-visible","false"),r.setAttribute("data-string-devtools-theme",""),r}function ue(u){let r=document.createElement("div");if(r.setAttribute("data-stdg",""),r.setAttribute("data-stdg-panel",""),r.setAttribute("data-open","false"),u)for(let[t,e]of Object.entries(u))r.setAttribute(t,e);return r.addEventListener("pointerdown",t=>t.stopPropagation()),r}function pe(){let u=document.createElement("div");return u.setAttribute("data-stdg-panel-header",""),u}function ge(u){let r=document.createElement("div");if(r.setAttribute("data-stdg-panel-content",""),u)for(let[t,e]of Object.entries(u))r.setAttribute(t,e);return r}function rt(u){let{icon:r,size:t=16,label:e,modifiers:i=[],attrs:n}=u,s=document.createElement("button");s.type="button",s.setAttribute("data-stdg-button",""),s.setAttribute(`data-stdg-button-icon-${t}`,"");for(let o of i)s.setAttribute(`data-stdg-button-${o}`,"");if(s.setAttribute("aria-label",e),s.setAttribute("title",e),s.innerHTML=F(t,r),n)for(let[o,a]of Object.entries(n))s.setAttribute(o,a);return s}function Ei(u,r){let t=document.createElement("button");if(t.type="button",t.setAttribute("data-stdg-button",""),t.setAttribute("data-string-grid-list-delete",""),t.setAttribute("aria-label",u),t.setAttribute("title",u),t.innerHTML=F(16,"minus"),r)for(let[e,i]of Object.entries(r))t.setAttribute(e,i);return t}function Ft(u){let{icon:r,size:t=16,label:e,withLabel:i=!1,attrs:n}=u,s=document.createElement("button");if(s.type="button",s.setAttribute("data-stdg-button",""),s.setAttribute("data-stdg-button-toggle",""),s.setAttribute("data-stdg-panel-button",""),s.setAttribute(`data-stdg-panel-button-icon-${t}`,""),s.setAttribute("aria-label",e),s.setAttribute("title",e),s.innerHTML=i?`${F(t,r)}<span>${e}</span>`:F(t,r),n)for(let[o,a]of Object.entries(n))s.setAttribute(o,a);return s}var gn=`
178
28
 
179
- [data-string-devtools-panel] {
180
- position: relative;
181
- background: var(--string-dev-panel-bg);
182
- backdrop-filter: var(--string-dev-panel-backdrop);
183
- border: var(--string-dev-panel-border);
184
- border-radius: var(--string-dev-panel-radius);
185
- padding: var(--string-dev-panel-padding);
186
- font-size: var(--string-dev-panel-font-size);
187
- color: var(--string-dev-panel-text);
188
- box-shadow: var(--string-dev-panel-shadow);
189
- }
29
+ [data-string-devtools-overlay-badge][data-module-enabled="false"] {
30
+ display: none;
31
+ }
190
32
 
191
- [data-string-devtools-panel-header] {
192
- display: grid;
193
- grid-template-columns: 16px minmax(0, 1fr) 16px;
194
- align-items: center;
195
- column-gap: 8px;
196
- padding: var(--string-dev-header-padding);
197
- margin-bottom: var(--string-dev-header-margin-bottom);
198
- }
33
+ [data-string-devtools-overlay-badge][data-visible="false"] {
34
+ display: none;
35
+ }
199
36
 
200
- [data-string-devtools-panel-title] {
201
- display: block;
202
- grid-column: 2;
203
- justify-self: center;
204
- min-width: 0;
205
- font-size: var(--string-dev-header-font-size);
206
- font-weight: var(--string-dev-header-font-weight);
207
- color: var(--string-dev-panel-text);
208
- letter-spacing: var(--string-dev-header-letter-spacing);
209
- line-height: 1.2;
210
- text-align: center;
211
- }
37
+ [data-stdg] {
38
+ --string-dg-font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans',
39
+ 'Helvetica Neue', sans-serif;
40
+ --string-dg-font-size: 12px;
41
+ --string-dg-font-size-s: 10px;
42
+ --string-dg-font-size-xs: 8px;
43
+ --string-dg-font-normal: 400;
44
+ --string-dg-font-medium: 500;
45
+ --string-dg-font-bold: 600;
212
46
 
213
- [data-string-devtools-panel-icon] {
214
- width: 16px;
215
- height: 16px;
216
- display: inline-flex;
217
- align-items: center;
218
- justify-content: center;
219
- color: var(--string-dev-panel-text);
220
- }
47
+ --string-dg-color-blue: #3687ff;
48
+ --string-dg-color-amber: #b45100;
49
+ --string-dg-color-green: #00823c;
50
+ --string-dg-color-teal: #00788c;
51
+ --string-dg-color-red: #f45524;
52
+ --string-dg-color-black: #111111;
53
+ --string-dg-color-white: #ffffff;
54
+ --string-dg-color-cloud-white: rgba(249, 249, 249, 0.8);
55
+ --string-dg-color-middle-white: rgba(249, 249, 249, 0.4);
56
+ --string-dg-color-hairline: rgba(220, 220, 220, 0.5);
57
+ --string-dg-color-offset: rgba(127, 127, 127, 0.8);
58
+ --string-dg-color-grey-1: #eeeeee;
59
+ --string-dg-color-grey-2: #dddddd;
60
+ --string-dg-color-grey-3: #cccccc;
61
+ --string-dg-color-grey-4: #bbbbbb;
62
+ --string-dg-color-grey-5: #aaaaaa;
63
+ --string-dg-color-grey-6: #888888;
221
64
 
222
- [data-string-devtools-panel-icon] svg {
223
- width: 16px;
224
- height: 16px;
225
- }
65
+ /* dock */
66
+ --string-dg-dock-radius: 16px;
67
+ --string-dg-dock-padding: 3px 4px;
68
+ --string-dg-dock-shadow: 0 16px 32px rgba(0, 0, 0, 0.08);
226
69
 
227
- [data-string-devtools-icon-button] {
228
- width: var(--string-dev-icon-button-size);
229
- height: var(--string-dev-icon-button-size);
230
- padding: 0;
231
- border: 0;
232
- border-radius: var(--string-dev-icon-button-radius);
233
- background: transparent;
234
- color: var(--string-dev-panel-muted);
235
- display: inline-flex;
236
- align-items: center;
237
- justify-content: center;
238
- appearance: none;
239
- cursor: pointer;
240
- transition:
241
- background 0.15s ease,
242
- color 0.15s ease,
243
- opacity 0.15s ease,
244
- box-shadow 0.15s ease;
245
- }
70
+ /* badge */
71
+ --string-dg-badge-radius: 12px;
72
+ --string-dg-badge-padding: 1px;
73
+ --string-dg-badge-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
246
74
 
247
- [data-string-devtools-icon-button] svg {
248
- width: 16px;
249
- height: 16px;
250
- }
75
+ /* panel */
76
+ --string-dg-panel-radius: 18px;
77
+ --string-dg-panel-padding: 0px;
78
+ --string-dg-panel-shadow: 0 0 1px rgba(0, 0, 0, 0.4), 0 16px 32px rgba(0, 0, 0, 0.08);
79
+ --string-dg-panel-header-padding: 5px;
80
+ --string-dg-panel-responsive-margin: 0 5px 8px 5px;
81
+ --string-dg-panel-conent-margin: 0 5px 8px 5px;
82
+ --string-dg-panel-hr-margin: 16px 0;
251
83
 
252
- [data-string-devtools-icon-button]:hover,
253
- [data-string-devtools-icon-button]:focus-visible {
254
- background: var(--string-dev-icon-button-hover-bg);
255
- color: var(--string-dev-panel-text);
256
- outline: none;
257
- }
84
+ /* buttons | inputs | etc */
85
+ --string-dg-min-height: 34px;
258
86
 
259
- [data-string-devtools-button] {
260
- min-height: var(--string-dev-button-height);
261
- width: auto;
262
- padding: 0 8px;
263
- border: 1px solid var(--string-dev-field-border);
264
- border-radius: var(--string-dev-field-radius);
265
- background: var(--string-dev-field-bg);
266
- color: var(--string-dev-panel-text);
267
- font-size: var(--string-dev-panel-font-size);
268
- font-weight: 500;
269
- display: inline-flex;
270
- align-items: center;
271
- justify-content: center;
272
- gap: 8px;
273
- appearance: none;
274
- cursor: pointer;
275
- transition:
276
- background 0.15s ease,
277
- color 0.15s ease,
278
- border-color 0.15s ease,
279
- box-shadow 0.15s ease;
280
- }
87
+ /* input */
88
+ --string-dg-input: 4px 0;
89
+ --string-dg-input-container-negative-margin: -8px;
90
+ --string-dg-input-range-padding: 6px 8px;
91
+ --string-dg-panel-range-width: 2px;
92
+ --string-dg-input-range-webkit-margin: 4px;
281
93
 
282
- [data-string-devtools-button][data-full-width="true"] {
283
- width: 100%;
284
- }
94
+ /* toggle */
95
+ --string-dg-toggle-gap: 8px;
96
+ --string-dg-toggle-knob: 12px;
97
+ --string-dg-toggle-padding: 1px;
98
+ --string-dg-toggle-radius: 12px;
99
+ --string-dg-toggle-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
285
100
 
286
- [data-string-devtools-button]:hover,
287
- [data-string-devtools-button]:focus-visible {
288
- background: color-mix(in srgb, var(--string-dev-field-bg) 78%, #ffffff 22%);
289
- border-color: color-mix(in srgb, var(--string-dev-field-border) 72%, var(--string-dev-panel-text) 28%);
290
- outline: none;
291
- }
101
+ /* button */
102
+ /* button | icon-20 */
103
+ --string-dg-button-icon-20-background: rgba(255, 255, 255, 0.25);
104
+ --string-dg-button-icon-20-radius: 12px;
105
+ --string-dg-button-icon-20-padding: 6px;
106
+ /* button | icon-16 */
107
+ --string-dg-button-icon-16-background: rgba(255, 255, 255, 0.25);
108
+ --string-dg-button-icon-16-radius: 10px;
109
+ --string-dg-button-icon-16-padding: 5px;
110
+ /* button | icon-12 */
111
+ --string-dg-button-icon-12-background: rgba(255, 255, 255, 0.25);
112
+ --string-dg-button-icon-12-radius: 5px;
113
+ --string-dg-button-icon-12-margin: 1px;
114
+
115
+ /* panel button */
116
+ --string-dg-panel-button-radius: 8px;
117
+ --string-dg-panel-button-padding-1: 8px;
118
+ --string-dg-panel-button-padding-2: 8px 12px 8px 5px;
119
+ --string-dg-panel-button-gap: 8px;
120
+
121
+ /* panel field */
122
+ --string-dg-panel-field-slider-gap: 4px;
123
+
124
+ --string-dg-panel-field-padding: 0 0 0 8px;
125
+ --string-dg-panel-field-input-padding: 8px 0;
126
+ --string-dg-panel-field-icon-left: 5px;
127
+ --string-dg-panel-field-label-left: 8px;
128
+
129
+ /* panel breakpoints */
130
+ --string-dg-panel-breakpoints-margin: 16px 0 24px;
131
+ --string-dg-panel-breakpoint-marker-width: 2px;
132
+ --string-dg-panel-breakpoint-marker-padding: 4px 8px 0px;
133
+ --string-dg-panel-breakpoint-marker-margin: -4px -16px 0px;
134
+ --string-dg-panel-breakpoints-span-pos-cor: 4px;
135
+
136
+ /* panel-item */
137
+ --string-dg-panel-list-item-radius: 8px;
138
+ --string-dg-panel-list-item-padding: 8px 5px 8px 5px;
139
+ --string-dg-panel-list-item-grabbing: -8px -5px -8px -5px;
140
+ --string-dg-panel-list-item-delete-margin: -4px 0;
141
+
142
+ /* offsets */
143
+ --string-dg-offsets-dasharray: 2px 8px;
144
+
145
+ font-family: var(--string-dg-font-family);
146
+ font-size: var(--string-dg-font-size);
147
+ line-height: 1;
148
+ color: var(--string-dg-color-black);
149
+ box-sizing: content-box;
150
+ box-shadow: none;
151
+ background: none;
152
+ border: none;
153
+ border-radius: 0;
154
+ }
155
+
156
+ /* input */
157
+
158
+
159
+ [data-stdg-input], [data-stdg-input]:focus, [data-stdg-input]:hover {
160
+ box-shadow: none !important;
161
+ background-color: none;
162
+ background-image: none;
163
+ outline: none;
164
+ border: none;
165
+ color: none;
166
+ -webkit-box-shadow: none !important;
167
+ }
168
+
169
+ input[type=number] {
170
+ -moz-appearance:textfield; /* Firefox */
171
+ }
172
+
173
+
174
+ [data-stdg-input][type='color'] {
175
+ display: flex;
176
+ justify-content: center;
177
+
178
+ }
179
+
180
+ input[type="color" i]::-webkit-color-swatch-wrapper {
181
+ padding: 0;
182
+ height: 50%;
183
+ width: 50%;
184
+ aspect-ratio: 1/1;
185
+ border-radius: 50%;
186
+ overflow: hidden;
187
+ border: 1px solid var(--string-dg-color-white);
188
+ }
189
+
190
+ input[type="color" i]::-webkit-color-swatch{
191
+ border: none;
192
+ }
193
+
194
+ [data-stdg-input][type='color']::-moz-color-swatch {
195
+ padding: 0;
196
+ height: 50%;
197
+ width: 50%;
198
+ aspect-ratio: 1/1;
199
+ border-radius: 50%;
200
+ overflow: hidden;
201
+ border: 1px solid var(--string-dg-color-white);
202
+ }
203
+ [data-stdg-input][type='number'] {
204
+ font-variant-numeric: tabular-nums;
205
+ }
206
+ [data-stdg-select],
207
+ [data-stdg-select]::-webkit-outer-spin-button,
208
+ [data-stdg-select]::-webkit-inner-spin-button,
209
+ [data-stdg-input][type='number']::-webkit-outer-spin-button,
210
+ [data-stdg-input][type='number']::-webkit-inner-spin-button {
211
+ -moz-appearance: textfield;
212
+ -webkit-appearance: none;
213
+ margin: 0;
214
+ }
215
+ [data-stdg-input][type="range"] {
216
+ -webkit-appearance: none;
217
+ appearance: none;
218
+ align-items: stretch;
219
+ width: 100%;
220
+ display: inline-block;
221
+ background: transparent;
222
+ background-image: linear-gradient(
223
+ to right,
224
+ var(--string-dg-color-grey-2) var(--string-progress-slider-fill),
225
+ transparent var(--string-progress-slider-fill)
226
+ );
227
+ border-radius: var(--string-dg-panel-button-radius);
228
+ }
229
+ [data-stdg-input][type="range"]::-moz-range-track {
230
+ display: none;
231
+ }
232
+ [data-stdg-input][type="range"]::-moz-range-thumb {
233
+ appearance: none;
234
+ width: 0;
235
+ height: 100%;
236
+ border: none;
237
+ padding: var(--string-dg-input-range-padding);
238
+ background: none;
239
+ background-image:
240
+ linear-gradient(0deg, var(--string-dg-color-black))
241
+ ;
242
+ background-repeat: no-repeat;
243
+ background-size: var(--string-dg-panel-breakpoint-marker-width) 100%;
244
+ background-position: center center;
245
+ cursor: col-resize;
246
+ }
247
+ [data-stdg-input][type="range"]::-webkit-slider-container {
248
+ margin-top: calc(-1.5 * var(--string-dg-input-range-webkit-margin));
249
+ height: calc(100% + var(--string-dg-input-range-webkit-margin) * 3);
250
+
251
+ margin-left: var(--string-dg-input-container-negative-margin);
252
+ margin-right: var(--string-dg-input-container-negative-margin);
253
+ }
254
+ [data-stdg-input][type="range"]::-webkit-slider-runnable-track {
255
+ height: 100%;
256
+ }
257
+ [data-stdg-input][type="range"]::-webkit-slider-thumb {
258
+ -webkit-appearance: none;
259
+ width: 0;
260
+ height: 100%;
261
+ padding: var(--string-dg-input-range-padding);
262
+ background-image:
263
+ linear-gradient(0deg, var(--string-dg-color-black))
264
+ ;
265
+ background-repeat: no-repeat;
266
+ background-size: var(--string-dg-panel-range-width) 100%;
267
+ background-position: center center;
268
+ cursor: col-resize;
269
+
270
+ opacity: 0;
271
+ transition: opacity 0.15s ease-out;
272
+ }
273
+ [data-stdg-input][type="range"]:hover::-webkit-slider-thumb,
274
+ [data-stdg-input][type="range"]:active::-webkit-slider-thumb {
275
+ opacity: 1;
276
+ transition: opacity 0.3s ease-in-out;
277
+ }
278
+
279
+ [data-stdg-select],
280
+ [data-stdg-input],
281
+ [data-stdg-textarea] {
282
+ display: block;
283
+ width: 100%;
284
+ box-sizing: content-box;
285
+ background-color: transparent;
286
+ padding: var(--string-dg-input);
287
+ margin: 0;
288
+ border-radius: 0;
289
+ border: none;
290
+ box-shadow: none;
291
+ text-align: center;
292
+ text-align-last: center;
293
+ cursor: default;
294
+
295
+ font-family: var(--string-dg-font-family);
296
+ font-size: var(--string-dg-font-size-s);
297
+ font-weight: var(--string-dg-font-bold);
298
+ }
299
+ [data-stdg-select]:focus,
300
+ [data-stdg-input]:focus,
301
+ [data-stdg-textarea]:focus {
302
+ outline: none;
303
+ box-shadow: none;
304
+ }
305
+
306
+ /* toggle */
307
+ [data-stdg-toggle] {
308
+ border-radius: var(--string-dg-toggle-radius);
309
+ background: var(--string-dg-color-grey-3);
310
+ padding: var(--string-dg-toggle-padding) calc(var(--string-dg-toggle-gap) + var(--string-dg-toggle-padding))
311
+ var(--string-dg-toggle-padding) var(--string-dg-toggle-padding);
312
+ display: inline-flex;
313
+ position: relative;
314
+ }
315
+ [data-stdg-toggle-input] {
316
+ display: none;
317
+ }
318
+ [data-stdg-toggle-knob] {
319
+ width: var(--string-dg-toggle-knob);
320
+ height: var(--string-dg-toggle-knob);
321
+ border-radius: var(--string-dg-toggle-radius);
322
+ background: var(--string-dg-color-white);
323
+ box-shadow: var(--string-dg-toggle-shadow);
324
+ margin-left: auto;
325
+ }
326
+ [data-stdg-toggle][data-checked='true'] {
327
+ background-color: var(--string-dg-color-blue);
328
+ }
329
+ [data-checked='false'] [data-stdg-toggle-knob] {
330
+ translate: var(--string-dg-toggle-gap) 0;
331
+ }
332
+
333
+ /* button */
334
+
335
+ [data-stdg-panel-content] > [data-stdg-panel-breakpoints],
336
+ [data-stdg-panel-field-slider] > [data-stdg-panel-field],
337
+ [data-stdg-panel-content] > [data-stdg-panel-field],
338
+ [data-stdg-panel-content] > [data-stdg-button] {
339
+ min-height: var(--string-dg-min-height);
340
+ }
341
+
342
+ [data-stdg-panel-breakpoints],
343
+ [data-stdg-panel-field],
344
+ [data-stdg-button] {
345
+ display: flex;
346
+ box-shadow: none;
347
+ background: none;
348
+ border-radius: 0;
349
+ margin: 0;
350
+ padding: 0;
351
+ cursor: default;
352
+ box-sizing: border-box;
353
+ border: 1px solid transparent;
354
+ font-family: var(--string-dg-font-family);
355
+ font-size: var(--string-dg-font-size);
356
+ font-weight: var(--string-dg-font-medium);
357
+ color: var(--string-dg-color-black);
358
+ }
359
+ [data-stdg-panel-field][data-disabled="true"]{
360
+ display: none;
361
+ }
362
+ [data-stdg-dock-list] > [data-stdg-button] {
363
+ display: block;
364
+ }
365
+ [data-stdg-panel-breakpoints] > *,
366
+ [data-stdg-panel-field] > *,
367
+ [data-stdg-button] > * {
368
+ grid-area: 1/1;
369
+ flex-shrink: 0;
370
+ }
371
+ [data-stdg-panel-breakpoints] span,
372
+ [data-stdg-panel-field] span,
373
+ [data-stdg-button] span {
374
+ pointer-events: none;
375
+ -webkit-user-select: none;
376
+ user-select: none;
377
+ }
378
+ /* button | icon-20 */
379
+ [data-stdg-holder-icon-20] {
380
+ padding: var(--string-dg-button-icon-20-padding);
381
+ }
382
+ [data-stdg-button-icon-20] {
383
+ background-color: var(--string-dg-button-icon-20-background);
384
+ padding: var(--string-dg-button-icon-20-padding);
385
+ border-radius: var(--string-dg-button-icon-20-radius);
386
+ }
387
+ [data-stdg-icon-20] {
388
+ width: 20px;
389
+ aspect-ratio: 1/1;
390
+ color: var(--string-dg-color-black);
391
+ }
392
+ /* button | icon-16 */
393
+ [data-stdg-holder-icon-16] {
394
+ padding: var(--string-dg-button-icon-16-padding);
395
+ }
396
+ [data-stdg-button-icon-16] {
397
+ background-color: var(--string-dg-button-icon-16-background);
398
+ padding: var(--string-dg-button-icon-16-padding);
399
+ border-radius: var(--string-dg-button-icon-16-radius);
400
+ }
401
+ [data-stdg-icon-16] {
402
+ width: 16px;
403
+ aspect-ratio: 1/1;
404
+ color: var(--string-dg-color-black);
405
+ }
406
+ /* button | icon-12 */
407
+ [data-stdg-holder-icon-12] {
408
+ }
409
+ [data-stdg-button-icon-12] {
410
+ background-color: var(--string-dg-button-icon-12-background);
411
+ border-radius: var(--string-dg-button-icon-12-radius);
412
+ margin: var(--string-dg-button-icon-12-margin);
413
+ }
414
+ [data-stdg-icon-12] {
415
+ width: 12px;
416
+ aspect-ratio: 1/1;
417
+ color: var(--string-dg-color-black);
418
+ }
419
+ /* button | icon-second */
420
+ [data-stdg-icon-second] {
421
+ color: var(--string-dg-color-grey-4);
422
+ }
423
+ /* button | hover */
424
+ [data-stdg-button-hover] {
425
+ display: grid;
426
+ place-items: center;
427
+ }
428
+ [data-stdg-button-hover] svg:last-child {
429
+ visibility: hidden;
430
+ }
431
+ [data-stdg-button-hover]:hover svg:first-child {
432
+ visibility: hidden;
433
+ }
434
+ [data-stdg-button-hover]:hover svg:last-child {
435
+ visibility: visible;
436
+ }
437
+ [data-stdg-dock] [data-stdg-button-hover] svg:last-child {
438
+ transform: rotate(-90deg);
439
+ }
440
+ [data-stdg-dock] [data-stdg-button-hover][data-collapsed='true'] svg:last-child {
441
+ transform: rotate(90deg);
442
+ }
443
+
444
+ /* button | data-active */
445
+ [data-active='false'] [data-stdg-icon-12],
446
+ [data-active='false'] [data-stdg-icon-16],
447
+ [data-active='false'] [data-stdg-icon-20] {
448
+ color: var(--string-dg-color-grey-5);
449
+ }
450
+ /* button | toggle */
451
+ [data-stdg-button-toggle][data-active='false'] [data-stdg-icon-12]:not([data-stdg-icon-second]),
452
+ [data-stdg-button-toggle][data-active='false'] [data-stdg-icon-16]:not([data-stdg-icon-second]),
453
+ [data-stdg-button-toggle][data-active='false'] [data-stdg-icon-20]:not([data-stdg-icon-second]) {
454
+ color: var(--string-dg-color-black);
455
+ }
456
+ [data-stdg-button-toggle][data-active='true'] {
457
+ background-color: var(--string-dg-color-grey-2);
458
+ }
459
+
460
+ [data-stdg-button-toggle][data-active='true'] [data-stdg-icon-12]:not([data-stdg-icon-second]),
461
+ [data-stdg-button-toggle][data-active='true'] [data-stdg-icon-16]:not([data-stdg-icon-second]),
462
+ [data-stdg-button-toggle][data-active='true'] [data-stdg-icon-20]:not([data-stdg-icon-second]) {
463
+
464
+ }
465
+
466
+ [data-stdg-panel-breakpoints]:hover:not([data-stdg-panel-breakpoint-marker]):not([data-string-grid-list-delete]),
467
+ [data-stdg-panel-field]:hover:not([data-stdg-panel-breakpoint-marker]):not([data-string-grid-list-delete]),
468
+ [data-stdg-button]:hover:not([data-stdg-panel-breakpoint-marker]):not([data-string-grid-list-delete]) {
469
+ border: 1px solid var(--string-dg-color-cloud-white);
470
+ background-color: var(--string-dg-color-grey-1);
471
+ }
472
+ [data-stdg-button]:active:not(:has([data-stdg-toggle]:active)):not([data-stdg-panel-breakpoint-marker]) {
473
+ border: 1px solid var(--string-dg-color-cloud-white);
474
+ background-color: var(--string-dg-color-grey-3);
475
+ }
476
+
477
+ /* panel button */
478
+ [data-stdg-panel-button] {
479
+ box-sizing: border-box;
480
+ border: 1px solid var(--string-dg-color-white);
481
+ background-color: var(--string-dg-color-grey-1);
482
+
483
+ border-radius: var(--string-dg-panel-button-radius);
484
+ display: flex;
485
+ justify-content: flex-start;
486
+ align-items: center;
487
+ gap: var(--string-dg-panel-button-gap);
488
+ }
489
+ [data-stdg-panel-button]:has(svg):has(span) {
490
+ width: 100%;
491
+ padding: var(--string-dg-panel-button-padding-2);
492
+ }
493
+ [data-stdg-panel-button]:not(:has(svg):has(span)) {
494
+ background-color: var(--string-dg-color-white);
495
+ padding: var(--string-dg-panel-button-padding-1);
496
+ }
497
+
498
+ [data-stdg-panel-button]:not(:has(svg):has(span)) span {
499
+ font-size: var(--string-dg-font-size-s);
500
+ font-weight: var(--string-dg-font-bold);
501
+ width: 16px;
502
+ aspect-ratio: 1/1;
503
+ display: grid;
504
+ place-items: center;
505
+ }
506
+ [data-stdg-panel-button][data-active='true']:not(:has(svg):has(span)) span {
507
+ }
508
+
509
+ [data-string-grid-list-delete] {
510
+ background-color: var(--string-dg-color-white);
511
+ border-radius: 50%;
512
+ }
513
+
514
+
515
+ /* panel list-item */
516
+ [data-stdg-panel-list-item] {
517
+ border: 1px solid var(--string-dg-color-white);
518
+ background-color: var(--string-dg-color-grey-1);
519
+
520
+ border-radius: var(--string-dg-panel-list-item-radius);
521
+ display: flex;
522
+ justify-content: flex-start;
523
+ align-items: center;
524
+ gap: var(--string-dg-panel-button-gap);
525
+
526
+ padding: var(--string-dg-panel-list-item-padding);
527
+ }
528
+ [data-stdg-panel-list-item] [data-stdg-icon-second] {
529
+ padding: var(--string-dg-panel-list-item-padding);
530
+ margin: var(--string-dg-panel-list-item-grabbing);
531
+ }
532
+ [data-stdg-panel-list-item] [data-stdg-icon-second]:active {
533
+ cursor: grabbing;
534
+ }
535
+ [data-stdg-panel-list-item] > span {
536
+ margin-right: auto;
537
+ }
538
+ [data-stdg-panel-list-item] [data-stdg-toggle] {
539
+ }
540
+ [data-stdg-panel-list-item] [data-string-grid-list-delete] {
541
+ margin: var(--string-dg-panel-list-item-delete-margin);
542
+ }
543
+ [data-stdg-panel-list-item][data-dragging="true"] {
544
+ opacity: 0.4;
545
+ cursor: grabbing;
546
+ }
547
+ [data-stdg-panel-list-item][data-drag-over="before"] {
548
+ box-shadow: 0 -2px 0 var(--string-dg-color-black);
549
+ }
550
+ [data-stdg-panel-list-item][data-drag-over="after"] {
551
+ box-shadow: 0 2px 0 var(--string-dg-color-black);
552
+ }
553
+
554
+ [data-stdg-panel-list-item]:has([data-checked='false']) > [data-stdg-icon-16] {
555
+ color: var(--string-dg-color-grey-4) !important;
556
+ }
557
+ [data-stdg-panel-list-item]:has([data-checked='false']) > span {
558
+ color: var(--string-dg-color-grey-6);
559
+ }
560
+
561
+ /* panel field */
562
+ [data-stdg-panel-field] {
563
+ box-sizing: border-box;
564
+ border: 1px solid var(--string-dg-color-white);
565
+ background-color: var(--string-dg-color-grey-1);
566
+
567
+ border-radius: var(--string-dg-panel-button-radius);
568
+ padding: var(--string-dg-panel-field-padding);
569
+ position: relative;
570
+ display: flex;
571
+ justify-content: space-between;
572
+ align-items: center;
573
+ gap: var(--string-dg-panel-button-gap);
574
+ }
575
+ [data-stdg-panel-field]:has(> [data-stdg-field-input-disable]) {
576
+ padding: 0;
577
+ gap: 0;
578
+ }
579
+
580
+ [data-stdg-panel-field]:has(> [data-stdg-toggle]:last-child) {
581
+ padding-right: 8px;
582
+ }
583
+
584
+ [data-stdg-panel-field] span {
585
+ }
586
+
587
+ [data-stdg-field-input] {
588
+ width: 50%;
589
+ display: flex;
590
+ align-items: center;
591
+ }
592
+ [data-stdg-field-input] > * {
593
+ flex: 1;
594
+ }
595
+ [data-stdg-field-value] {
596
+ display: flex;
597
+ align-items: center;
598
+ min-width: 0;
599
+ }
600
+ [data-stdg-field-value] [data-stdg-input] {
601
+ flex: 1;
602
+ min-width: 0;
603
+ }
604
+ [data-stdg-field-suffix] {
605
+ flex: 0 0 auto;
606
+ padding: var(--string-dg-panel-field-input-padding);
607
+ color: var(--string-dg-color-grey-6);
608
+ font-size: var(--string-dg-font-size-s);
609
+ font-weight: var(--string-dg-font-bold);
610
+ background-image: linear-gradient(0deg, var(--string-dg-color-grey-3));
611
+ background-repeat: no-repeat;
612
+ background-size: 1px 80%;
613
+ background-position: left center;
614
+ }
615
+ [data-stdg-field-input] [data-stdg-select],
616
+ [data-stdg-field-input] [data-stdg-input] {
617
+ padding: var(--string-dg-panel-field-input-padding);
618
+ background-image: linear-gradient(0deg, var(--string-dg-color-grey-3));
619
+ background-repeat: no-repeat;
620
+ background-size: 1px 80%;
621
+ background-position: left center;
622
+ }
623
+ [data-stdg-field-input] [data-stdg-input][type='color'] {
624
+ flex: 0 0 33.3333%;
625
+ height: 100%;
626
+ }
627
+ [data-stdg-field-input] [data-stdg-stepper] {
628
+ flex: 0 0 33.3333%;
629
+ display: flex;
630
+ flex-wrap: wrap;
631
+ justify-content: stretch;
632
+ align-items: stretch;
633
+ background-image: linear-gradient(0deg, var(--string-dg-color-grey-3)), linear-gradient(0deg, var(--string-dg-color-grey-3));
634
+ background-repeat: no-repeat, no-repeat;
635
+ background-size:
636
+ 1px 80%,
637
+ 90% 1px;
638
+ background-position:
639
+ left center,
640
+ left center;
641
+ }
642
+ [data-stdg-field-input] [data-stdg-stepper] button {
643
+ width: 100%;
644
+ display: grid;
645
+ place-items: center;
646
+ }
647
+
648
+ /* svg + input + px */
649
+ [data-stdg-panel-field] > span > [data-stdg-icon-16] {
650
+ position: absolute;
651
+ top: 8px;
652
+ left: var(--string-dg-panel-field-icon-left);
653
+ pointer-events: none;
654
+ }
655
+ [data-stdg-panel-field] > [data-stdg-icon-16] {
656
+ position: absolute;
657
+ left: var(--string-dg-panel-field-icon-left);
658
+ pointer-events: none;
659
+ }
660
+ [data-stdg-panel-field] > input {
661
+ align-self: stretch;
662
+ flex: 1;
663
+ }
664
+ [data-stdg-panel-field]:has(> [data-stdg-icon-16]) > input {
665
+ padding-left: var(--string-dg-panel-field-icon-left);
666
+ }
667
+ [data-stdg-field-input-disable] {
668
+ flex: 0 0 16%;
669
+ min-width: calc(var(--string-dg-font-size) * 3);
670
+ text-align: center;
671
+ color: var(--string-dg-color-grey-6);
672
+ padding: var(--string-dg-panel-field-input-padding);
673
+ background-image: linear-gradient(0deg, var(--string-dg-color-grey-3));
674
+ background-repeat: no-repeat;
675
+ background-size: 1px 80%;
676
+ background-position: left center;
677
+ }
678
+
679
+ /* slider wrapper */
680
+ [data-stdg-panel-field-slider-row] {
681
+ display: flex;
682
+ gap: var(--string-dg-panel-field-slider-gap);
683
+ }
684
+ [data-stdg-panel-field-slider-row] [data-stdg-panel-field] {
685
+ flex: 0 0 20%;
686
+ }
687
+ [data-stdg-panel-field-slider-row] [data-stdg-panel-field-slider] {
688
+ flex: 1;
689
+ padding: 0;
690
+ position: relative;
691
+ display: flex;
692
+ justify-content: center;
693
+ align-items: center;
694
+ }
695
+ [data-stdg-panel-field-slider] label {
696
+ position: absolute;
697
+ left: var(--string-dg-panel-field-label-left);
698
+ color: var(--string-dg-color-grey-6);
699
+ pointer-events: none;
700
+ }
701
+ [data-stdg-panel-field-slider] input {
702
+ grid-area: 1/1;
703
+ justify-self: stretch;
704
+ min-width: 0;
705
+ width: 100%;
706
+ }
707
+
708
+ /* panel responsive */
709
+ [data-stdg-panel-breakpoints] {
710
+ box-sizing: border-box;
711
+ border: 1px solid var(--string-dg-color-white);
712
+ background-color: var(--string-dg-color-grey-1);
713
+
714
+ border-radius: var(--string-dg-panel-button-radius);
715
+
716
+ margin: var(--string-dg-panel-breakpoints-margin);
717
+
718
+ position: relative;
719
+ display: flex;
720
+ justify-content: space-between;
721
+ align-items: stretch;
722
+ gap: var(--string-dg-panel-button-gap);
723
+
724
+ font-size: var(--string-dg-font-size-s);
725
+ font-weight: var(--string-dg-font-bold);
726
+ }
727
+ [data-stdg-panel-breakpoints]:before {
728
+ content: '0';
729
+ font-size: var(--string-dg-font-size-xs);
730
+ color: var(--string-dg-color-grey-3);
731
+ position: absolute;
732
+ bottom: calc(100% + var(--string-dg-font-size-xs) / 2 + var(--string-dg-panel-breakpoints-span-pos-cor));
733
+ }
734
+ [data-stdg-panel-breakpoint-value] {
735
+ flex: 1;
736
+ display: grid;
737
+ place-items: center;
738
+ text-align: center;
739
+ }
740
+ [data-stdg-panel-breakpoint-value] > * {
741
+ grid-area: 1/1;
742
+ }
743
+ [data-stdg-panel-breakpoint-value] [data-string-grid-list-delete] {
744
+ visibility: hidden;
745
+ }
746
+ [data-stdg-panel-breakpoint-value]:hover [data-string-grid-list-delete] {
747
+ visibility: visible;
748
+ }
749
+
750
+ [data-stdg-panel-breakpoint-marker] {
751
+ align-self: stretch;
752
+ position: relative;
753
+ display: flex;
754
+ justify-content: center;
755
+ padding: var(--string-dg-panel-breakpoint-marker-padding);
756
+ margin: var(--string-dg-panel-breakpoint-marker-margin);
757
+ background-image: linear-gradient(0deg, var(--string-dg-color-black));
758
+ background-repeat: no-repeat;
759
+ background-size: var(--string-dg-panel-breakpoint-marker-width) 100%;
760
+ background-position: center center;
761
+ }
762
+ [data-stdg-panel-breakpoint-marker]::before,
763
+ [data-stdg-panel-breakpoint-marker]::after {
764
+ content: '';
765
+ position: absolute;
766
+ top: 100%;
767
+ width: 100%;
768
+ padding-bottom: 100%;
769
+ }
770
+ [data-stdg-panel-breakpoint-marker]::after {
771
+ border-radius: 50%;
772
+ background-color: var(--string-dg-color-black);
773
+ transform-origin: 50% 0%;
774
+ scale: 0.5;
775
+ }
776
+ [data-stdg-panel-breakpoint-marker] span {
777
+ font-size: var(--string-dg-font-size-xs);
778
+ color: var(--string-dg-color-grey-6);
779
+ position: absolute;
780
+ bottom: calc(100% + var(--string-dg-font-size-xs) / 2);
781
+ }
782
+ [data-stdg-panel-breakpoint-marker]:hover span {
783
+ color: var(--string-dg-color-black);
784
+ }
785
+ [data-stdg-panel-breakpoint-marker][data-active='true']::after {
786
+ scale: 1;
787
+ }
788
+ [data-stdg-panel-breakpoints] [data-stdg-panel-breakpoint-value]:first-child {
789
+ border-radius: var(--string-dg-panel-button-radius);
790
+ border-top-right-radius: 0;
791
+ border-bottom-right-radius: 0;
792
+ }
793
+ [data-stdg-panel-breakpoints] [data-stdg-panel-breakpoint-value]:last-child {
794
+ border-radius: var(--string-dg-panel-button-radius);
795
+ border-top-left-radius: 0;
796
+ border-bottom-left-radius: 0;
797
+ }
798
+ [data-stdg-panel-breakpoint-value]:has(+ [data-active='true']),
799
+ [data-stdg-panel-breakpoint-marker][data-active='true'] + div {
800
+ background-color: var(--string-dg-color-grey-3);
801
+ }
802
+
803
+ /* dock */
804
+ [data-stdg-dock] {
805
+ position: fixed;
806
+ z-index: 10035;
807
+ bottom: 24px;
808
+ left: 124px;
809
+
810
+ display: flex;
811
+ flex-direction: row;
812
+ align-items: center;
813
+
814
+ background-color: var(--string-dg-color-cloud-white);
815
+ padding: var(--string-dg-dock-padding);
816
+ border: 1px solid var(--string-dg-color-middle-white);
817
+ border-radius: var(--string-dg-dock-radius);
818
+ box-shadow: var(--string-dg-dock-shadow);
819
+
820
+ backdrop-filter: blur(4px);
821
+ }
822
+ [data-stdg-dock-list] {
823
+ display: flex;
824
+ flex-direction: row;
825
+ align-items: center;
826
+ gap: 0;
827
+ overflow: visible;
828
+ }
829
+ [data-stdg-dock-tools] {
830
+ position: relative;
831
+ display: flex;
832
+ flex-direction: row;
833
+ align-items: center;
834
+ overflow: visible;
835
+ opacity: 1;
836
+ transition:
837
+ max-width 0.22s ease,
838
+ opacity 0.16s ease;
839
+ }
840
+ [data-stdg-dock][data-collapsed="true"] [data-stdg-dock-tools] {
841
+ overflow: hidden;
842
+ }
843
+ [data-stdg-dock-fps-separator] {
844
+ display: block;
845
+ }
846
+ [data-stdg-dock] > [data-stdg-button] {
847
+ align-self: center;
848
+ }
849
+ [data-string-defguides-doc-fps] {
850
+ display: grid;
851
+ place-items: center;
852
+ aspect-ratio: 1/1;
853
+ padding: var(--string-dg-button-icon-20-padding);
854
+ }
855
+ [data-string-defguides-doc-fps] span {
856
+ grid-area: 1/1;
857
+ width: 20px;
858
+ text-align: center;
859
+ vertical-align: middle;
860
+ cursor: default;
861
+ }
862
+ [data-stdg-horizontal-line] {
863
+ align-self: stretch;
864
+ display: block;
865
+ width: 0px;
866
+ margin: 0 4px;
867
+ border-right: 1px solid var(--string-dg-color-hairline);
868
+ }
869
+
870
+ /* dock sub-badges */
871
+ [data-stdg-dock-slot] {
872
+ position: relative;
873
+ display: flex;
874
+ align-items: center;
875
+ overflow: visible;
876
+ }
877
+ [data-stdg-dock-slot][data-has-sub-badges]::after {
878
+ content: "";
879
+ position: absolute;
880
+ left: -4px;
881
+ right: -4px;
882
+ bottom: 100%;
883
+ height: 8px;
884
+ pointer-events: auto;
885
+ }
886
+ [data-stdg-dock-sub-badges] {
887
+ position: fixed;
888
+ display: flex;
889
+ flex-direction: row;
890
+ gap: 4px;
891
+ white-space: nowrap;
892
+ padding: var(--string-dg-badge-padding);
893
+ background-color: var(--string-dg-color-cloud-white);
894
+ border: 1px solid var(--string-dg-color-middle-white);
895
+ border-radius: var(--string-dg-badge-radius);
896
+ box-shadow: var(--string-dg-badge-shadow);
897
+ backdrop-filter: blur(4px);
898
+ opacity: 0;
899
+ pointer-events: none;
900
+ z-index: 10034;
901
+ -webkit-touch-callout: none;
902
+ -webkit-user-select: none;
903
+ user-select: none;
904
+ touch-action: manipulation;
905
+ transform: translate(-50%, calc(100% + 16px));
906
+ transition: transform .3s, opacity .3s;
907
+ }
908
+ [data-stdg-dock-sub-badge] {
909
+ position: relative;
910
+ }
911
+ [data-stdg-dock-sub-badge][data-parent-active="false"] [data-stdg-icon-12],
912
+ [data-stdg-dock-sub-badge][data-parent-active="false"] [data-stdg-icon-16],
913
+ [data-stdg-dock-sub-badge][data-parent-active="false"] [data-stdg-icon-20] {
914
+ color: var(--string-dg-color-grey-5);
915
+ }
916
+ [data-stdg-dock-sub-badge]::before {
917
+ content: "";
918
+ position: absolute;
919
+ inset: -6px;
920
+ }
921
+ [data-stdg-dock-sub-badges][data-open="true"] {
922
+ opacity: 1;
923
+ transform: translate(-50%, 0);
924
+ pointer-events: auto;
925
+ }
926
+
927
+ @media (max-width: 1024px), (pointer: coarse) {
928
+ [data-stdg-dock] [data-stdg-button-hover] svg:last-child {
929
+ transform: rotate(0deg);
930
+ }
931
+
932
+ [data-stdg-dock] [data-stdg-button-hover][data-collapsed='true'] svg:last-child {
933
+ transform: rotate(180deg);
934
+ }
935
+
936
+ [data-stdg-dock] {
937
+ top: 50%;
938
+ bottom: auto;
939
+ left: max(12px, env(safe-area-inset-left, 0px) + 12px);
940
+ transform: translateY(-50%);
941
+ max-height: calc(100vh - 24px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
942
+ flex-direction: column;
943
+ -webkit-touch-callout: none;
944
+ -webkit-user-select: none;
945
+ user-select: none;
946
+ touch-action: manipulation;
947
+ }
948
+
949
+ [data-stdg-dock-list] {
950
+ flex-direction: column;
951
+ }
952
+
953
+ [data-stdg-dock-tools] {
954
+ flex-direction: column;
955
+ transition:
956
+ max-height 0.22s ease,
957
+ opacity 0.16s ease;
958
+ }
959
+
960
+ [data-stdg-dock][data-collapsed="true"] [data-stdg-dock-tools] {
961
+ overflow: hidden;
962
+ }
963
+
964
+ [data-stdg-horizontal-line] {
965
+ width: auto;
966
+ height: 0px;
967
+ margin: 4px 0;
968
+ border-right: none;
969
+ border-top: 1px solid var(--string-dg-color-hairline);
970
+ }
971
+
972
+ [data-stdg-dock-slot][data-has-sub-badges]::after {
973
+ left: 100%;
974
+ right: auto;
975
+ top: -4px;
976
+ bottom: -4px;
977
+ width: 8px;
978
+ height: auto;
979
+ }
980
+
981
+ [data-stdg-dock-sub-badges] {
982
+ flex-direction: column;
983
+ transform: translate(8px, -50%);
984
+ }
985
+
986
+ [data-stdg-dock-sub-badges][data-open="true"] {
987
+ transform: translate(0, -50%);
988
+ }
989
+
990
+ /* compact: panel width shrinks to fit narrow viewports */
991
+ [data-stdg-panel] {
992
+ width: min(280px, calc(100vw - 32px));
993
+ max-width: calc(100vw - 32px);
994
+ }
995
+
996
+ [data-stdg-badge][data-mobile-sheet="true"] > [data-stdg-panel] {
997
+ right: auto;
998
+ height: auto;
999
+ overflow: hidden auto;
1000
+ overscroll-behavior: contain;
1001
+ }
1002
+
1003
+ [data-stdg-badge][data-mobile-sheet="true"] > [data-stdg-panel] > [data-stdg-panel] {
1004
+ position: static;
1005
+ display: none;
1006
+ inset: auto;
1007
+ width: 100%;
1008
+ max-width: 100%;
1009
+ height: auto;
1010
+ overflow: hidden auto;
1011
+ overscroll-behavior: contain;
1012
+ box-shadow: none;
1013
+ transform: none;
1014
+ }
1015
+
1016
+ [data-stdg-badge][data-mobile-sheet="true"] > [data-stdg-panel]:has(> [data-stdg-panel][data-open="true"]) > :not([data-stdg-panel]) {
1017
+ display: none;
1018
+ }
1019
+
1020
+ [data-stdg-badge][data-mobile-sheet="true"] > [data-stdg-panel] > [data-stdg-panel][data-open="true"] {
1021
+ display: block;
1022
+ }
1023
+
1024
+ /* panel detached to body as fixed element in mobile mode */
1025
+ [data-stdg-panel][data-mobile-sheet="true"] {
1026
+ z-index: 10045;
1027
+ overflow: hidden auto;
1028
+ overscroll-behavior: contain;
1029
+ }
1030
+
1031
+ [data-stdg-panel][data-mobile-sheet="true"] > [data-stdg-panel] {
1032
+ position: static;
1033
+ display: none;
1034
+ inset: auto;
1035
+ width: 100%;
1036
+ max-width: 100%;
1037
+ height: auto;
1038
+ overflow: hidden auto;
1039
+ overscroll-behavior: contain;
1040
+ box-shadow: none;
1041
+ transform: none;
1042
+ }
1043
+
1044
+ [data-stdg-panel][data-mobile-sheet="true"]:has(> [data-stdg-panel][data-open="true"]) > :not([data-stdg-panel]) {
1045
+ display: none;
1046
+ }
1047
+
1048
+ [data-stdg-panel][data-mobile-sheet="true"] > [data-stdg-panel][data-open="true"] {
1049
+ display: block;
1050
+ }
1051
+
1052
+ /* compact: progress floating panel */
1053
+ [data-stdg-progress] {
1054
+ bottom: max(16px, env(safe-area-inset-bottom, 0px) + 16px);
1055
+ max-height: calc(100vh - 32px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
1056
+ }
1057
+ }
1058
+
1059
+ /* badge */
1060
+ [data-stdg-badge] {
1061
+ position: absolute;
1062
+ z-index: 10030;
1063
+ top: 0;
1064
+ left: 0;
1065
+ width: auto;
1066
+ padding-bottom: auto;
1067
+
1068
+ display: flex;
1069
+ pointer-events: auto;
1070
+
1071
+ background-color: var(--string-dg-color-cloud-white);
1072
+ padding: var(--string-dg-badge-padding);
1073
+ border: 1px solid var(--string-dg-color-middle-white);
1074
+ border-radius: var(--string-dg-badge-radius);
1075
+ box-shadow: var(--string-dg-badge-shadow);
1076
+ }
1077
+
1078
+ [data-dragging-active] [data-stdg-badge]:not([data-dragging]) {
1079
+ opacity: 0;
1080
+ pointer-events: none;
1081
+ }
1082
+
1083
+ [data-stdg-badge][data-test-progress] {
1084
+ left: 62px;
1085
+ }
1086
+ [data-stdg-badge][data-test-layout] {
1087
+ position: fixed;
1088
+ top: 200px;
1089
+ left: auto;
1090
+ right: 100px;
1091
+ }
1092
+ [data-stdg-badge][data-visible="false"] {
1093
+ display: none;
1094
+ }
1095
+
1096
+ [data-stdg-button]:has([data-stdg-badge-label]) {
1097
+ flex-direction: column;
1098
+ align-items: center;
1099
+ }
1100
+ [data-stdg-button]:has([data-stdg-badge-label]) svg {
1101
+ transform: translateY(-25%);
1102
+ }
1103
+ [data-stdg-button]:has([data-stdg-badge-label]) > :not([data-stdg-badge-label]) {
1104
+ grid-area: unset;
1105
+ }
1106
+ [data-stdg-badge-label] {
1107
+ grid-area: unset;
1108
+ font-size: var(--string-dg-font-size-xs);
1109
+ line-height: 0;
1110
+ text-align: center;
1111
+ color: var(--string-dg-color-black);
1112
+ pointer-events: none;
1113
+ user-select: none;
1114
+ // margin-bottom: -0.4em;
1115
+ white-space: nowrap;
1116
+ font-weight: var(--string-dg-font-bold);
1117
+ width: 0;
1118
+ display: flex;
1119
+ justify-content: center;
1120
+ }
1121
+
1122
+ /* panel */
1123
+ [data-stdg-panel] {
1124
+ position: absolute;
1125
+
1126
+ width: 220px;
1127
+ background-color: var(--string-dg-color-white);
1128
+ padding: var(--string-dg-panel-padding);
1129
+ border-radius: var(--string-dg-panel-radius);
1130
+ box-shadow: var(--string-dg-panel-shadow);
1131
+ }
1132
+ [data-stdg-panel][data-open="false"] {
1133
+ opacity: 0;
1134
+ pointer-events: none;
1135
+ transform: translateY(4px);
1136
+ transition: opacity 0.15s ease, transform 0.15s ease;
1137
+ }
1138
+ [data-stdg-panel][data-open="true"] {
1139
+ z-index: 10045;
1140
+ opacity: 1;
1141
+ pointer-events: auto;
1142
+ transform: translateY(0);
1143
+ transition: opacity 0.15s ease, transform 0.15s ease;
1144
+ }
1145
+ [data-stdg-panel][data-test-panel-1] {
1146
+ top: 0px;
1147
+ right: calc(100% + 20px);
1148
+ }
1149
+ [data-stdg-panel][data-test-panel-2] {
1150
+ top: 0;
1151
+ right: calc(100% + 20px + 220px + 80px);
1152
+ }
1153
+ [data-stdg-panel][data-test-panel-3] {
1154
+ top: 0;
1155
+ right: calc(100% + 20px);
1156
+ }
1157
+
1158
+ [data-stdg-panel][data-test-panel-4] {
1159
+ top: 0;
1160
+ right: calc(100% + 20px + 220px + 80px + 220px + 20px + 220px + 80px);
1161
+ }
1162
+ [data-stdg-panel][data-test-panel-5] {
1163
+ top: 0;
1164
+ right: calc(100% + 20px);
1165
+ }
1166
+ [data-stdg-panel][data-test-panel-6] {
1167
+ top: calc(400px);
1168
+ right: calc(100% + 20px);
1169
+ }
1170
+ [data-stdg-panel][data-test-panel-7] {
1171
+ top: calc(36px);
1172
+ right: calc(100% + 20px);
1173
+ }
1174
+
1175
+ /* progress */
1176
+ [data-stdg-progress] {
1177
+ position: fixed;
1178
+ z-index: 999;
1179
+ bottom: 62px;
1180
+ left: calc((100vw + env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px)) / 2);
1181
+ translate: -50% 0;
1182
+
1183
+ width: min(
1184
+ 440px,
1185
+ calc(100vw - 24px - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px))
1186
+ );
1187
+ max-height: calc(100vh - 86px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
1188
+ overflow: hidden auto;
1189
+ overscroll-behavior: contain;
1190
+ }
1191
+
1192
+ [data-stdg-panel-hr] {
1193
+ display: block;
1194
+ margin: var(--string-dg-panel-hr-margin);
1195
+ border-bottom: 1px solid var(--string-dg-color-grey-1);
1196
+ }
1197
+ /* header */
1198
+ [data-stdg-panel-header] {
1199
+ display: grid;
1200
+ place-items: center;
1201
+ padding: var(--string-dg-panel-header-padding);
1202
+ }
1203
+ [data-stdg-panel-header] > * {
1204
+ grid-area: 1/1;
1205
+ }
1206
+ [data-stdg-button-left] {
1207
+ justify-self: start;
1208
+ }
1209
+ [data-stdg-button-right] {
1210
+ justify-self: end;
1211
+ }
1212
+ [data-stdg-panel-header] span {
1213
+ font-size: var(--string-dg-font-size-s);
1214
+ font-weight: var(--string-dg-font-bold);
1215
+ }
1216
+ [data-stdg-panel-header] nav {
1217
+ display: flex;
1218
+ }
1219
+
1220
+ /* responsive */
1221
+ [data-stdg-panel-responsive] {
1222
+ display: grid;
1223
+ place-items: center;
1224
+ padding: var(--string-dg-panel-responsive-margin);
1225
+ }
1226
+ [data-stdg-panel-responsive] > * {
1227
+ grid-area: 1/1;
1228
+ }
1229
+ [data-stdg-panel-list] {
1230
+ display: flex;
1231
+ flex-direction: row;
1232
+ }
292
1233
 
293
- [data-string-devtools-button]:focus-visible {
294
- box-shadow: var(--string-dev-focus-shadow);
1234
+ /* content */
1235
+ [data-stdg-panel-content] {
1236
+ margin: var(--string-dg-panel-conent-margin);
1237
+ }
1238
+ [data-stdg-panel-content-50] {
1239
+ display: flex;
1240
+ flex-wrap: wrap;
1241
+ }
1242
+ [data-stdg-panel-content-50] > * {
1243
+ width: 50% !important;
1244
+ }
1245
+
1246
+ /* list-item */
1247
+
1248
+ /* offsets */
1249
+ [data-stdg-offsets-item] {
1250
+ position: absolute;
1251
+ z-index: 999;
1252
+ top: 600px;
1253
+ left: 260px;
1254
+
1255
+ width: 400px;
1256
+ height: 400px;
1257
+ fill: none;
1258
+ overflow: visible;
1259
+ }
1260
+ [data-stdg-offsets-item] [data-stdg-offsets-item-border] {
1261
+ stroke-width: 1px;
1262
+ stroke: var(--string-dg-color-offset);
1263
+ stroke-dasharray: var(--string-dg-offsets-dasharray);
1264
+ }
1265
+ [data-stdg-offsets-item-offset] {
1266
+ }
1267
+ [data-stdg-offsets-item-offset-arrow-bg] {
1268
+ color: var(--string-dg-color-white);
1269
+ }
1270
+ [data-stdg-offsets-item-offset-arrow] {
1271
+ color: var(--string-dg-color-black);
1272
+ }
1273
+
1274
+ `;var As={"--string-dev-panel-bg":"#ffffff","--string-dev-panel-border":"1px solid #e0e0e0","--string-dev-panel-radius":"16px","--string-dev-panel-shadow":"0 16px 24px rgba(0, 0, 0, 0.1)","--string-dev-panel-backdrop":"blur(12px)","--string-dev-panel-padding":"4px","--string-dev-panel-font-family":'-apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',"--string-dev-panel-font-size":"12px","--string-dev-panel-text":"#111111","--string-dev-panel-muted":"rgba(17, 17, 17, 0.6)","--string-dev-panel-subtle":"rgba(17, 17, 17, 0.72)","--string-dev-panel-divider":"rgba(17, 17, 17, 0.08)","--string-dev-header-font-size":"10px","--string-dev-header-font-weight":"500","--string-dev-header-letter-spacing":"0","--string-dev-header-padding":"8px 8px 8px","--string-dev-header-margin-bottom":"4px","--string-dev-accent":"#FF4F36","--string-dev-accent-soft":"rgba(255, 79, 54, 0.12)","--string-dev-accent-soft-hover":"rgba(255, 79, 54, 0.18)","--string-dev-focus-color":"rgba(255, 79, 54, 0.68)","--string-dev-focus-shadow":"0 0 0 2px rgba(255, 79, 54, 0.18)","--string-dev-field-bg":"rgba(221, 221, 221, 0.4)","--string-dev-field-border":"rgba(255, 255, 255, 0.96)","--string-dev-field-radius":"8px","--string-dev-input-height":"32px","--string-dev-button-height":"32px","--string-dev-chip-size":"24px","--string-dev-icon-button-size":"20px","--string-dev-icon-button-radius":"8px","--string-dev-chip-active-bg":"rgba(221, 221, 221, 0.54)","--string-dev-chip-muted":"rgba(17, 17, 17, 0.22)","--string-dev-chip-resolved":"rgba(17, 17, 17, 0.78)","--string-dev-icon-button-hover-bg":"rgba(17, 17, 17, 0.08)"};function ks(u,r){return u.trim().split(`
1275
+ `).map(t=>`${r}${t}`).join(`
1276
+ `)}function Pr(u,r={}){let t=Array.isArray(u)?u.join(`,
1277
+ `):u,e={...As,...r},i=Object.entries(e).map(([n,s])=>`${n}: ${s};`).join(`
1278
+ `);return`${t} {
1279
+ ${ks(i," ")}
1280
+ }`}function Vt(){if(typeof document>"u")return null;let u="string-devtools-shared-styles",r=document.getElementById(u);if(r instanceof HTMLStyleElement)return r;let t=document.createElement("style");return t.id=u,t.textContent=gn,document.head.appendChild(t),t}function Ds(){return typeof window<"u"&&typeof window.matchMedia=="function"}function Os(){return Ds()?window.matchMedia("(pointer: coarse)").matches||window.matchMedia("(any-pointer: coarse)").matches:!1}function lt(u=typeof window<"u"?window.innerWidth:1024){let r=Os(),t=u<=1024||r;return{coarsePointer:r,compact:t}}var wi="";function Is(u){let r=(u??"").trim();return r?encodeURIComponent(r):""}function Mi(u){wi=Is(u)}function st(u){return wi?`${u}::${wi}`:u}var Rs="string-devtools:dock",Hs=600,hn=12,Bs="[data-stdg-dock]",_s="[data-stdg-dock-sub-badges]";function mn(u){if(!u)return"";let r=[];return u.ctrlKey&&r.push("Ctrl"),u.altKey&&r.push("Alt"),u.shiftKey&&r.push("Shift"),u.metaKey&&r.push("Meta"),r.push(u.key.length===1?u.key.toUpperCase():u.key),r.join("+")}var Ar=class{constructor(){this.entries=new Map;this.collapsed=!1;this.suppressPersist=!1;Vt(),this.cleanupExistingDockArtifacts(),this.preferences=this.loadPreferences(),this.onResizeBind=()=>{window.requestAnimationFrame(()=>this.handleViewportChange())},this.onKeydownBind=t=>{let e=t.target;e&&(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement||e.isContentEditable)||t.shiftKey&&!t.ctrlKey&&!t.altKey&&!t.metaKey&&t.code==="KeyS"&&(t.preventDefault(),this.setCollapsed(!this.collapsed))},window.addEventListener("keydown",this.onKeydownBind),window.addEventListener("resize",this.onResizeBind),this.root=document.createElement("div"),this.root.setAttribute("data-stdg",""),this.root.setAttribute("data-stdg-dock",""),this.root.setAttribute("data-collapsed",this.preferences.collapsed?"true":"false"),this.mainButton=this.createMainButton(),this.itemsWrap=document.createElement("div"),this.itemsWrap.setAttribute("data-stdg-dock-list",""),this.toolsWrap=document.createElement("div"),this.toolsWrap.setAttribute("data-stdg-dock-tools",""),this.fpsSeparator=this.createSeparator(),this.fpsSeparator.setAttribute("data-stdg-dock-fps-separator",""),this.fpsElement=document.createElement("div"),this.fpsElement.setAttribute("data-string-defguides-doc-fps",""),this.fpsElement.title="Current FPS";let r=document.createElement("span");r.textContent="0",this.fpsElement.appendChild(r),this.root.appendChild(this.mainButton),this.itemsWrap.appendChild(this.toolsWrap),this.itemsWrap.appendChild(this.fpsSeparator),this.itemsWrap.appendChild(this.fpsElement),this.root.appendChild(this.itemsWrap),(document.body??document.documentElement).appendChild(this.root),this.setCollapsed(this.preferences.collapsed,!1)}add(r){if(this.entries.has(r.id))return;this.applyStoredActiveState(r);let t=document.createElement("button");t.type="button",t.setAttribute("data-stdg",""),t.setAttribute("data-stdg-button",""),t.setAttribute("data-stdg-button-icon-20",""),t.setAttribute("data-devguides-id",r.id);let e=mn(r.hotkey),i=e?`${r.label} (${e})`:r.label;t.setAttribute("aria-label",i),t.innerHTML=F(20,r.icon),t.title=i,t.addEventListener("click",()=>{let d=!r.getState().active;if(r.setActive(d),!r.subscribe){let c=r.getState();this.renderButton(t,r.label,r.hotkey,c),this.persistActiveState(r.id,c.active)}});let n=document.createElement("div");n.setAttribute("data-stdg",""),n.setAttribute("data-stdg-dock-slot",""),n.setAttribute("data-devguides-slot",r.id),n.appendChild(t);let s=null;r.subBadges&&r.subBadges.length>0&&(n.setAttribute("data-has-sub-badges",""),s=this.createSubBadgeGroup(r));let o=[];s&&o.push(...this.attachSubBadges(n,s));let a=r.subscribe?r.subscribe(d=>{this.renderButton(t,r.label,r.hotkey,d),this.syncSubBadgeState(n,s,d.active),this.persistActiveState(r.id,d.active)}):null;this.entries.set(r.id,{definition:r,button:t,slot:n,subBadges:s,unsubscribe:a,cleanup:o}),this.toolsWrap.appendChild(n),this.sortButtons();let l=r.getState();this.renderButton(t,r.label,r.hotkey,l),this.syncSubBadgeState(n,s,l.active),this.persistActiveState(r.id,l.active)}attachSubBadges(r,t){let e=[];(document.body??document.documentElement).appendChild(t);let i=!1,n=null,s=null,o=0,a=0,l=!1,d=P=>{i!==P&&(i=P,t.setAttribute("data-open",P?"true":"false"),P&&this.positionSubBadges(r,t))},c=()=>lt(window.innerWidth).compact,p=()=>{n!==null&&(window.clearTimeout(n),n=null),s=null},g=()=>{p(),l&&window.setTimeout(()=>{l=!1},0)},h=()=>{window.setTimeout(()=>{r.matches(":hover")||t.matches(":hover")||d(!1)},60)},m=()=>{c()||d(!0)};r.addEventListener("pointerenter",m),e.push(()=>r.removeEventListener("pointerenter",m));let f=()=>{c()||h()};r.addEventListener("pointerleave",f),e.push(()=>r.removeEventListener("pointerleave",f));let v=()=>{c()||d(!0)};t.addEventListener("pointerenter",v),e.push(()=>t.removeEventListener("pointerenter",v));let y=()=>{c()||h()};t.addEventListener("pointerleave",y),e.push(()=>t.removeEventListener("pointerleave",y));let b=()=>d(!1);t.addEventListener("string-devtools-sub-badge-action",b),e.push(()=>t.removeEventListener("string-devtools-sub-badge-action",b));let S=P=>{c()&&(P.target instanceof HTMLElement&&P.target.closest("[data-stdg-dock-sub-badge]")||(p(),s=P.pointerId,o=P.clientX,a=P.clientY,n=window.setTimeout(()=>{n=null,l=!0,d(!0)},Hs)))};r.addEventListener("pointerdown",S),e.push(()=>r.removeEventListener("pointerdown",S));let L=P=>{if(!c()||n===null||P.pointerId!==s)return;let H=Math.abs(P.clientX-o),B=Math.abs(P.clientY-a);(H>hn||B>hn)&&p()};r.addEventListener("pointermove",L),e.push(()=>r.removeEventListener("pointermove",L)),r.addEventListener("pointerup",g),e.push(()=>r.removeEventListener("pointerup",g)),r.addEventListener("pointercancel",g),e.push(()=>r.removeEventListener("pointercancel",g));let M=()=>{c()&&p()};r.addEventListener("pointerleave",M),e.push(()=>r.removeEventListener("pointerleave",M));let x=P=>{!c()||!l||P.preventDefault()};r.addEventListener("contextmenu",x),e.push(()=>r.removeEventListener("contextmenu",x));let I=P=>{c()&&P.preventDefault()};r.addEventListener("selectstart",I),e.push(()=>r.removeEventListener("selectstart",I));let w=P=>{!c()||!l||(l=!1,P.preventDefault(),P.stopImmediatePropagation())};r.addEventListener("click",w,!0),e.push(()=>r.removeEventListener("click",w,!0)),t.addEventListener("pointerdown",g),e.push(()=>t.removeEventListener("pointerdown",g)),t.addEventListener("pointercancel",g),e.push(()=>t.removeEventListener("pointercancel",g));let R=P=>{c()&&P.preventDefault()};t.addEventListener("contextmenu",R),e.push(()=>t.removeEventListener("contextmenu",R));let k=P=>{c()&&P.preventDefault()};t.addEventListener("selectstart",k),e.push(()=>t.removeEventListener("selectstart",k));let A=()=>{l=!1};t.addEventListener("click",A),e.push(()=>t.removeEventListener("click",A));let V=P=>{if(!i)return;let H=P.target;H instanceof Node&&(r.contains(H)||t.contains(H)||d(!1))};document.addEventListener("pointerdown",V),e.push(()=>document.removeEventListener("pointerdown",V));let D=new MutationObserver(()=>{t.querySelector('[data-active="true"]')||h()});D.observe(t,{subtree:!0,attributes:!0,attributeFilter:["data-active"]}),e.push(()=>D.disconnect());let T=()=>{i&&this.positionSubBadges(r,t)};return window.addEventListener("resize",T),window.addEventListener("scroll",T,!0),e.push(()=>window.removeEventListener("resize",T)),e.push(()=>window.removeEventListener("scroll",T,!0)),t.setAttribute("data-open","false"),e.push(()=>t.remove()),e}positionSubBadges(r,t){let e=r.getBoundingClientRect();lt(window.innerWidth).compact?(t.style.left=`${Math.round(e.right+8)}px`,t.style.top=`${Math.round(e.top+e.height/2)}px`,t.style.bottom=""):(t.style.left=`${Math.round(e.left+e.width/2)}px`,t.style.top="",t.style.bottom=`${Math.round(window.innerHeight-e.top+8)}px`)}createSubBadgeGroup(r){let t=document.createElement("div");t.setAttribute("data-stdg",""),t.setAttribute("data-stdg-dock-sub-badges",""),t.setAttribute("data-parent-active","false");for(let e of r.subBadges??[]){let i={"data-stdg":"","data-stdg-dock-sub-badge":"","data-sub-badge-id":e.id,"data-active":"false","data-parent-active":"false"};if(e.selectorAttribute&&(i[e.selectorAttribute]=""),e.attributes)for(let[s,o]of Object.entries(e.attributes))o==null||o===!1||(i[s]=o===!0?"":String(o));let n=rt({icon:e.icon,size:16,label:e.label,modifiers:["toggle"],attrs:i});n.addEventListener("pointerdown",s=>{s.stopPropagation()}),n.addEventListener("click",s=>{s.stopPropagation(),r.getState().active||r.setActive(!0),e.onClick(n),n.setAttribute("data-active","false"),n.dispatchEvent(new CustomEvent("string-devtools-sub-badge-action",{bubbles:!0}))}),t.appendChild(n)}return t}remove(r){let t=this.entries.get(r);if(t){t.unsubscribe?.();for(let e of t.cleanup)e();t.slot.remove(),this.entries.delete(r)}}destroy(){window.removeEventListener("keydown",this.onKeydownBind),window.removeEventListener("resize",this.onResizeBind);for(let r of this.entries.values()){r.unsubscribe?.();for(let t of r.cleanup)t();r.slot.remove()}this.entries.clear(),this.root.remove()}cleanupExistingDockArtifacts(){document.querySelectorAll(Bs).forEach(r=>r.remove()),document.querySelectorAll(_s).forEach(r=>r.remove())}setFPS(r){let t=this.fpsElement.querySelector("span");t&&(t.textContent=String(Math.max(0,Math.round(r))))}sortButtons(){let r=Array.from(this.entries.values()).sort((e,i)=>{let n=e.definition.order??0,s=i.definition.order??0;return n!==s?n-s:e.definition.label.localeCompare(i.definition.label)});this.toolsWrap.innerHTML="",this.toolsWrap.appendChild(this.createSeparator());let t;for(let e of r){let i=e.definition.group;t!==void 0&&i!==t&&this.toolsWrap.appendChild(this.createSeparator()),t=i,this.toolsWrap.appendChild(e.slot)}this.fpsSeparator.style.display=r.length>0?"block":"none",this.syncCollapsedLayout()}createSeparator(){let r=document.createElement("span");return r.setAttribute("data-stdg-horizontal-line",""),r}createMainButton(){let r=document.createElement("button");return r.type="button",r.setAttribute("data-stdg",""),r.setAttribute("data-stdg-button",""),r.setAttribute("data-stdg-button-hover",""),r.setAttribute("data-stdg-button-icon-20",""),r.setAttribute("data-collapsed",this.preferences.collapsed?"true":"false"),r.setAttribute("aria-label","Toggle Dev Guides"),r.innerHTML=`
1281
+ ${F(20,"logo")}
1282
+ ${F(12,"chevrone-up")}
1283
+ `,r.addEventListener("click",()=>{this.setCollapsed(!this.collapsed)}),r}setCollapsed(r,t=!0){if(this.collapsed=r,this.root.setAttribute("data-collapsed",r?"true":"false"),this.mainButton.setAttribute("data-collapsed",r?"true":"false"),this.mainButton.setAttribute("aria-label",r?"Expand developer tools":"Collapse developer tools"),r){this.suppressPersist=!0;for(let e of this.entries.values())e.definition.getState().active&&e.definition.setActive(!1);this.suppressPersist=!1}else{this.suppressPersist=!0;for(let e of this.entries.values())this.preferences.active[e.definition.id]===!0&&e.definition.setActive(!0);this.suppressPersist=!1}t&&(this.preferences.collapsed=r,this.savePreferences()),this.syncCollapsedLayout()}syncCollapsedLayout(){let r=lt(window.innerWidth).compact,t=r?this.toolsWrap.scrollHeight:this.toolsWrap.scrollWidth;this.toolsWrap.style.maxHeight=r?this.collapsed?"0px":`${t}px`:"",this.toolsWrap.style.maxWidth=r?"":this.collapsed?"0px":`${t}px`,this.toolsWrap.style.opacity=this.collapsed?"0":"1",this.toolsWrap.style.pointerEvents=this.collapsed?"none":"auto"}handleViewportChange(){this.syncCollapsedLayout();for(let r of this.entries.values())r.subBadges&&r.subBadges.getAttribute("data-open")==="true"&&this.positionSubBadges(r.slot,r.subBadges)}renderButton(r,t,e,i){let n=mn(e),s=n?`${t} (${n})`:t;r.setAttribute("data-active",i.active?"true":"false"),r.setAttribute("aria-label",`${s}: ${i.active?"On":"Off"}`),r.title=`${s}: ${i.active?"On":"Off"}`}syncSubBadgeState(r,t,e){let i=e?"true":"false";if(r.setAttribute("data-active",i),!!t){t.setAttribute("data-parent-active",i);for(let n of t.querySelectorAll("[data-stdg-dock-sub-badge]"))n.setAttribute("data-parent-active",i),n.setAttribute("aria-disabled",e?"false":"true")}}applyStoredActiveState(r){let t=this.preferences.active[r.id];if(typeof t!="boolean")return;let e=this.collapsed?!1:t;e!==r.getState().active&&r.setActive(e)}persistActiveState(r,t){this.suppressPersist||this.collapsed||(this.preferences.active[r]=t,this.savePreferences())}loadPreferences(){try{let r=localStorage.getItem(this.dockStorageKey);if(!r)return{collapsed:!1,active:{}};let t=JSON.parse(r);return{collapsed:t.collapsed===!0,active:t.active&&typeof t.active=="object"?t.active:{}}}catch{return{collapsed:!1,active:{}}}}savePreferences(){try{localStorage.setItem(this.dockStorageKey,JSON.stringify(this.preferences))}catch{}}get dockStorageKey(){return st(Rs)}};var kr=class{constructor(){this.definitions=new Map;this.dock=null}register(r){!r||this.definitions.has(r.id)||(this.definitions.set(r.id,r),this.dock||(this.dock=new Ar),this.dock.add(r))}setFPS(r){this.dock?.setFPS(r)}destroy(){this.definitions.clear(),this.dock?.destroy(),this.dock=null}};var Dr=class extends C{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 Or=class extends C{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 fn(u){let r=u.match(/([^[]+)\[([\d.]+)-([\d.]+)\]/);return r?{id:r[1],start:parseFloat(r[2]),end:parseFloat(r[3])}:null}function Fs(u,r,t,e,i){return e+(i-e)*(u-r)/(t-r)}var Ir=class extends C{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=fn(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=Fs(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 Vs=(u,r)=>{let t=Math.min(u,r),e=Math.max(u,r);return t+Math.random()*(e-t)},Ws=(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},Ns=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]},Rr=class extends C{constructor(r){super(r),this.htmlKey="random",this.attributesToMap.push({key:"random-number",type:"json",fallback:"[0,1]"}),this.attributesToMap.push({key:"random-type",type:"string",fallback:"int"})}onObjectConnected(r){let t=r.htmlElement,e=Ns(r.getProperty("random-number")),n=String(r.getProperty("random-type")??"float").toLowerCase()==="int"?Ws(e[0],e[1]):Vs(e[0],e[1]);E.run(()=>{E.setVars(t,{"--random":n})})}};var Hr=class{constructor(r,t){this.id=r;this.zIndex=t;this.screenRoot=null;this.world=null;this.screen=null;this.worldHost=null;this.hostPositionWasPatched=!1;this.hostPositionInlineValue=null}ensure(r){if(this.screenRoot?.isConnected)return r&&this.attachWorldToHost(r),this.screenRoot;let t=document.querySelector(`[data-string-dev-viewport-layer="${this.id}"]`);if(t)return this.screenRoot=t,this.screen=t.querySelector(`[data-string-dev-viewport-screen="${this.id}"]`),r&&this.attachWorldToHost(r),t;let e=document.createElement("div");e.setAttribute("data-string-dev-viewport-layer",this.id),e.setAttribute("data-string-devtools-theme",""),e.style.position="fixed",e.style.inset="0",e.style.zIndex=String(this.zIndex),e.style.pointerEvents="none",e.style.overflow="hidden";let i=document.createElement("div");return i.setAttribute("data-string-dev-viewport-screen",this.id),i.style.position="absolute",i.style.inset="0",i.style.pointerEvents="none",i.style.overflow="hidden",e.appendChild(i),(document.body??document.documentElement).appendChild(e),this.screenRoot=e,this.screen=i,this.attachWorldToHost(r??document.body??document.documentElement),e}getElement(){return this.screenRoot?.isConnected?this.screenRoot:null}getWorldElement(r){return this.ensure(r),this.world}getScreenElement(){return this.ensure(),this.screen}destroy(){this.restoreHostPosition(),this.screenRoot?.remove(),this.screenRoot=null,this.world?.remove(),this.world=null,this.screen=null,this.worldHost=null}attachWorldToHost(r){if(this.worldHost===r&&this.world?.isConnected)return;if(this.restoreHostPosition(),this.worldHost=r,!this.world){let e=document.createElement("div");e.setAttribute("data-string-dev-viewport-world",this.id),e.setAttribute("data-string-devtools-theme",""),e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.width="1px",e.style.height="1px",e.style.pointerEvents="none",e.style.overflow="visible",e.style.zIndex=String(this.zIndex),this.world=e}r!==document.body&&r!==document.documentElement&&window.getComputedStyle(r).position==="static"&&(this.hostPositionWasPatched=!0,this.hostPositionInlineValue=r.style.position||null,r.style.position="relative"),r.appendChild(this.world)}restoreHostPosition(){this.world&&this.world.remove(),this.worldHost&&this.hostPositionWasPatched&&(this.hostPositionInlineValue==null||this.hostPositionInlineValue===""?this.worldHost.style.removeProperty("position"):this.worldHost.style.position=this.hostPositionInlineValue),this.hostPositionWasPatched=!1,this.hostPositionInlineValue=null}};var Br=class Br{constructor(){this.layers=new Map}static getInstance(){return this.instance||(this.instance=new Br),this.instance}acquire(r,t){let e=this.layers.get(r);if(e){if(e.zIndex!==t)throw new Error(`Shared devtools layer "${r}" already exists with z-index ${e.zIndex}, requested ${t}.`);return e.refs+=1,e.layer}let i=new Hr(r,t);return this.layers.set(r,{layer:i,refs:1,zIndex:t}),i}release(r){let t=this.layers.get(r);t&&(t.refs-=1,!(t.refs>0)&&(t.layer.destroy(),this.layers.delete(r)))}};Br.instance=null;var Wt=Br;var Z=class extends C{constructor(t){super(t);this.overlayRegistry=Wt.getInstance();this.acquiredViewportLayers=new Map;this.devtoolListeners=new Set;this.hotkeyHandler=null;this.devtoolConfig=null;this._type=2,Vt();let e=this.constructor.devtool;e&&(this.configureDevtool(e),this.bindDevtoolHotkey(e.hotkey));let i=e?.styles,n=(typeof i=="function"?i():i)??this.getStyles();n&&this.ensureStyle(`${this.getStyleScopeId(n)}-styles`,n)}get respectSelfDisable(){return!1}get connectsConfig(){return this.constructor.devtool?.connects}canConnect(t){let e=this.connectsConfig;return e?!!(e.global===!0||t.keys.includes("dev-inspect")||e.keys?.some(i=>t.keys.includes(i))||e.attributes?.some(i=>t.htmlElement.hasAttribute(i))):super.canConnect(t)}getStyleScopeId(t){let e=this.htmlKey||this.constructor.devtool?.connects?.keys?.[0];if(e)return e;let i=0;for(let n=0;n<t.length;n+=1)i=i*31+t.charCodeAt(n)>>>0;return`string-dev-${i.toString(16)}`}getStyles(){return null}getDevtoolDefinition(){if(!this.devtoolConfig)return null;let t=this.devtoolConfig,e=this.getDevtoolSubBadges();return{id:t.id,label:t.label,icon:t.icon,order:t.order,group:t.group,hotkey:t.hotkey,subBadges:e.length>0?e:void 0,getState:()=>({active:this.getDevtoolActiveState()}),setActive:i=>{this.setDevtoolActiveState(i)},subscribe:i=>(this.devtoolListeners.add(i),i({active:this.getDevtoolActiveState()}),()=>{this.devtoolListeners.delete(i)})}}getDevtoolSubBadges(){return[]}configureDevtool(t){this.devtoolConfig=t}bindDevtoolHotkey(t){typeof window>"u"||!t||(this.hotkeyHandler=e=>{let i=e.target;i&&(i instanceof HTMLInputElement||i instanceof HTMLTextAreaElement||i instanceof HTMLSelectElement||i.isContentEditable)||e.key.toLowerCase()!==t.key.toLowerCase()||e.shiftKey!==(t.shiftKey??!1)||e.ctrlKey!==(t.ctrlKey??!1)||e.altKey!==(t.altKey??!1)||e.metaKey!==(t.metaKey??!1)||(e.preventDefault(),this.setDevtoolActiveState(!this.getDevtoolActiveState()))},window.addEventListener("keydown",this.hotkeyHandler))}emitDevtoolState(t=this.getDevtoolActiveState()){let e={active:t};for(let i of this.devtoolListeners)i(e)}acquireViewportLayer(t,e){let i=this.acquiredViewportLayers.get(t);if(i)return i;let n=this.overlayRegistry.acquire(t,e);return this.acquiredViewportLayers.set(t,n),n}releaseViewportLayer(t){this.acquiredViewportLayers.has(t)&&(this.overlayRegistry.release(t),this.acquiredViewportLayers.delete(t))}ensureStyle(t,e){let i=document.getElementById(t);if(i instanceof HTMLStyleElement)return i;let n=document.createElement("style");return n.id=t,n.textContent=e,document.head.appendChild(n),n}getWorldHost(){return this.data.scroll.container??document.body??document.documentElement}getDevtoolActiveState(){return!1}setDevtoolActiveState(t){}destroy(){this.hotkeyHandler&&(window.removeEventListener("keydown",this.hotkeyHandler),this.hotkeyHandler=null),this.devtoolListeners.clear();for(let t of this.acquiredViewportLayers.keys())this.overlayRegistry.release(t);this.acquiredViewportLayers.clear(),super.destroy()}};Z.devtool=null;var xi=["S","M","L","XL"];var zs=[1280,1024,768,0];function vn(u,r){let t=r-1-u;return xi[t]??"S"}var bn=0;function _r(){return`grid-${Date.now()}-${bn++}`}function Fr(){return`layout-${Date.now()}-${bn++}`}function Vr(u=2){let r=Math.max(2,Math.min(4,u)),t=[];for(let e=0;e<r;e++){let i=vn(e,r),n=e===r-1?0:zs[e]??0;t.push({id:Fr(),label:i,minWidth:n,instances:[]})}return t}function he(u){return Number.isFinite(u)?Math.max(0,Math.round(u)):0}function Nt(u){let r=u.length;for(let t=0;t<r;t++)u[t].label=vn(t,r)}var Gs="string-grid:";function Ci(u){return st(Gs+u)}function $s(u){if(!u||typeof u!="object")return 0;if(Array.isArray(u))return u.length;let r=u,t=Array.isArray(r.layouts)?r.layouts:[],e=0;for(let i of t){if(!i||typeof i!="object")continue;let n=i,s=Array.isArray(n.instances)?n.instances:Array.isArray(n.grids)?n.grids:[];e+=s.length}return e}var Wr=class{constructor(){this.adapterRegistry=new Map;this.elementStates=new Map}registerAdapter(r){this.adapterRegistry.set(r.type,r)}getAdapter(r){return this.adapterRegistry.get(r)}getAdapterRegistry(){return this.adapterRegistry}getLayouts(r){return this.getOrInitState(r).layouts}getLayoutCount(r){return this.getOrInitState(r).layouts.length}getSelectedLayoutId(r){return this.getOrInitState(r).selectedLayoutId}getPanelTitle(r){return this.getOrInitState(r).panelTitle?.trim()||"Layout"}getSelectedLayoutLabel(r){let t=this.getOrInitState(r);return this.findSelectedLayout(t)?.label??"S"}getResolvedLayoutId(r,t){let e=this.getOrInitState(r);return this.findResolvedLayout(e,t)?.id??e.layouts[e.layouts.length-1].id}getSelectedInstances(r){let t=this.getOrInitState(r);return this.findSelectedLayout(t)?.instances??[]}getResolvedInstances(r,t){let e=this.getOrInitState(r);return this.findResolvedLayout(e,t)?.instances??[]}addLayout(r){let t=this.getOrInitState(r);if(t.layouts.length>=4)return null;let e=t.layouts[0],i=e?Math.min(1920,e.minWidth+256):1280,n={id:Fr(),label:"XL",minWidth:i,instances:[]};return t.layouts.unshift(n),this.sortLayouts(t),Nt(t.layouts),this.ensureMinWidthConstraints(t),t.layouts.some(s=>s.id===t.selectedLayoutId)||(t.selectedLayoutId=t.layouts[0].id),this.save(r),n}removeLayout(r,t){let e=this.getOrInitState(r);if(e.layouts.length<=2)return!1;let i=e.layouts.findIndex(n=>n.id===t);return i===-1?!1:(e.layouts.splice(i,1),Nt(e.layouts),this.ensureMinWidthConstraints(e),e.layouts.some(n=>n.id===e.selectedLayoutId)||(e.selectedLayoutId=e.layouts[e.layouts.length-1].id),this.save(r),!0)}selectLayout(r,t,e=!0){let i=this.getOrInitState(r);i.layouts.some(n=>n.id===t)&&(i.selectedLayoutId=t,e&&this.save(r))}updateLayoutMinWidth(r,t,e,i=!0){let n=this.getOrInitState(r),s=n.layouts.find(o=>o.id===t);s&&(s.minWidth=he(e),this.sortLayouts(n),Nt(n.layouts),this.ensureMinWidthConstraints(n),i&&this.save(r))}replaceLayouts(r,t,e){let i=this.normalizeLayouts(t),n={elementId:r,layouts:i,selectedLayoutId:e};this.ensureValidSelection(n),this.elementStates.set(r,n),this.save(r)}getInstances(r){return this.getSelectedInstances(r)}addInstance(r,t){let e=this.adapterRegistry.get(t);if(!e)return null;let i=this.findSelectedLayout(this.getOrInitState(r));if(!i)return null;let n={id:_r(),type:t,visible:!0,settings:{...e.getDefaults()}};return i.instances.push(n),this.save(r),n}removeInstance(r,t){let e=this.findSelectedLayout(this.getOrInitState(r));e&&(e.instances=e.instances.filter(i=>i.id!==t),this.save(r))}reorderInstance(r,t,e,i){let n=this.findSelectedLayout(this.getOrInitState(r));if(!n||t===e)return;let s=n.instances.findIndex(c=>c.id===t),o=n.instances.findIndex(c=>c.id===e);if(s===-1||o===-1)return;let[a]=n.instances.splice(s,1),l=n.instances.findIndex(c=>c.id===e),d=i==="before"?l:l+1;n.instances.splice(d,0,a),this.save(r)}moveInstanceToEnd(r,t){let e=this.findSelectedLayout(this.getOrInitState(r));if(!e)return;let i=e.instances.findIndex(s=>s.id===t);if(i===-1||i===e.instances.length-1)return;let[n]=e.instances.splice(i,1);e.instances.push(n),this.save(r)}toggleVisibility(r,t){let e=this.findInstance(r,t);e&&(e.visible=!e.visible,this.save(r))}renameInstance(r,t,e){let i=this.findInstance(r,t);i&&(i.name=e.trim()||void 0,this.save(r))}renamePanelTitle(r,t){let e=this.getOrInitState(r);e.panelTitle=t.trim()||"Layout",this.save(r)}updateSetting(r,t,e,i){let n=this.findInstance(r,t);n&&(n.settings[e]=i,this.save(r))}findInstance(r,t){return this.getSelectedInstances(r).find(e=>e.id===t)}save(r){let t=this.elementStates.get(r);if(t)try{let e={layouts:t.layouts,selectedLayoutId:t.selectedLayoutId,panelTitle:t.panelTitle??"Layout"},i=Ci(r);localStorage.setItem(i,JSON.stringify(e))}catch(e){console.warn("[StringDevLayout:storage] save failed",{elementId:r,storageSlot:Ci(r),error:e})}}load(r,t=[]){try{let e=[r,...t],i=[];for(let p of e){let g=Ci(p),h=localStorage.getItem(g);if(h)try{let m=JSON.parse(h);i.push({elementId:p,storageSlot:g,raw:h,parsed:m,gridCount:$s(m)})}catch(m){console.warn("[StringDevLayout:storage] candidate parse failed",{elementId:r,candidateId:p,storageSlot:g,error:m})}}let n=i[0]??null;for(let p of i)(!n||p.gridCount>n.gridCount)&&(n=p);if(!n)return;let s=n.parsed,o=n.elementId;if(Array.isArray(s)){let p=s.filter(h=>this.adapterRegistry.has(h.type));for(let h of p){let m=this.adapterRegistry.get(h.type);m&&(h.settings={...m.getDefaults(),...h.settings})}let g=Vr(2);g[g.length-1].instances=p,this.elementStates.set(r,{elementId:r,layouts:g,selectedLayoutId:g[0].id,panelTitle:"Layout"}),o!==r&&this.save(r);return}let a=Array.isArray(s?.layouts)?s.layouts:null;if(!a)return;let l=this.normalizeLayouts(a);if(l.length===0)return;let d=typeof s?.selectedLayoutId=="string"?s.selectedLayoutId:l[0].id,c={elementId:r,layouts:l,selectedLayoutId:d,panelTitle:typeof s?.panelTitle=="string"&&s.panelTitle.trim().length>0?s.panelTitle.trim():"Layout"};this.ensureValidSelection(c),this.elementStates.set(r,c),o!==r&&this.save(r)}catch{}}clear(){this.elementStates.clear()}getOrInitState(r){let t=this.elementStates.get(r);if(!t){let e=Vr(2);t={elementId:r,layouts:e,selectedLayoutId:e[0].id,panelTitle:"Layout"},this.elementStates.set(r,t)}return this.sortLayouts(t),this.ensureValidSelection(t),t}normalizeLayouts(r){let i=r.filter(n=>n&&typeof n=="object"&&typeof n.id=="string").map(n=>{let s=Array.isArray(n.instances)?n.instances:Array.isArray(n.grids)?n.grids:[];return{id:n.id,label:n.label??"S",minWidth:he(typeof n.minWidth=="number"?n.minWidth:0),instances:s.filter(o=>this.adapterRegistry.has(o.type)).map(o=>{let a=this.adapterRegistry.get(o.type);return a?{...o,visible:o.visible!==!1,settings:{...a.getDefaults(),...o.settings}}:o})}}).slice(0,4);for(;i.length<2;)i.push({id:Fr(),label:"S",minWidth:0,instances:[]});return this.sortLayoutsArr(i),Nt(i),this.ensureMinWidthConstraintsArr(i),i}sortLayouts(r){this.sortLayoutsArr(r.layouts)}sortLayoutsArr(r){r.sort((t,e)=>e.minWidth-t.minWidth)}ensureValidSelection(r){r.layouts.length<2&&(r.layouts=Vr(2)),r.layouts.length>4&&(r.layouts=r.layouts.slice(0,4),Nt(r.layouts)),r.layouts.some(t=>t.id===r.selectedLayoutId)||(r.selectedLayoutId=r.layouts[r.layouts.length-1].id)}ensureMinWidthConstraints(r){this.ensureMinWidthConstraintsArr(r.layouts)}ensureMinWidthConstraintsArr(r){if(r.length!==0){r[r.length-1].minWidth=0;for(let t=r.length-2;t>=0;t--){let e=r[t+1].minWidth;r[t].minWidth<=e&&(r[t].minWidth=e+1)}}}findSelectedLayout(r){return r.layouts.find(t=>t.id===r.selectedLayoutId)}findResolvedLayout(r,t){for(let e of r.layouts)if(t>=e.minWidth)return e;return r.layouts[r.layouts.length-1]}};var Us="http://www.w3.org/2000/svg",fe=class{constructor(r,t,e){this.enabled=!0;this.target=r,this.onResize=e,this.svg=document.createElementNS(Us,"svg"),this.svg.setAttribute("data-string-grid-overlay",""),this.svg.style.position="absolute",this.svg.style.pointerEvents="none",this.svg.style.transformOrigin="top left",t.appendChild(this.svg),this.syncViewBox(),this.resizeObserver=new ResizeObserver(()=>{this.syncViewBox(),this.onResize?.()}),this.resizeObserver.observe(this.target)}getElement(){return this.svg}setPosition(r,t,e,i){this.svg.style.width=`${e}px`,this.svg.style.height=`${i}px`,this.svg.style.transform=`translate3d(${Math.round(r)}px, ${Math.round(t)}px, 0)`}render(r,t){if(this.clearAll(),!this.enabled)return;let{width:e,height:i}=this.getDimensions();for(let n of[...r].reverse()){let s=t.get(n.type);if(s&&n.visible){s.render(this.svg,e,i,{...n.settings,__instanceId:n.id});let o=this.svg.querySelector(`[data-grid-id="${n.id}"]`);o&&(o.setAttribute("data-grid-type",n.type),o.setAttribute("data-grid-visible","true"))}}}setEnabled(r){this.enabled=r,this.svg.style.display=r?"":"none",r||this.clearAll()}clearAll(){let r=this.svg.querySelectorAll("[data-grid-id]");for(let t=r.length-1;t>=0;t--)r[t].remove()}clearInstance(r,t){t.clear(this.svg,r)}syncViewBox(){let{width:r,height:t}=this.getDimensions();this.svg.setAttribute("viewBox",`0 0 ${r} ${t}`)}getDimensions(){return{width:this.target.offsetWidth,height:this.target.offsetHeight}}destroy(){this.resizeObserver.disconnect(),this.svg.remove()}ensurePositioned(){getComputedStyle(this.target).position==="static"&&(this.target.style.position="relative")}};var tt=class{constructor(r,t,e,i){this.root=null;this.key=r,this.label=t,this.value=e,this.onChange=i}setDisabled(r){this.root&&this.root.setAttribute("data-disabled",r?"true":"false")}getValue(){return this.value}destroy(){this.root?.remove(),this.root=null}emit(r){this.value=r,this.onChange(this.key,r)}createLabel(){let r=document.createElement("label");return r.textContent=this.label,r.setAttribute("data-stdg-label",""),r}createRow(){let r=document.createElement("div");return r.setAttribute("data-stdg-panel-field",""),r}};var js=320,Ys=60,yn=6,Nr=class extends tt{constructor(t,e,i,n,s=0,o=100,a=1){super(t,e,i,n);this.input=null;this.stepperButtons=[];this.min=s,this.max=o,this.step=a}build(){let t=this.createRow();return t.appendChild(this.createLabel()),t.appendChild(this.createControls()),this.root=t,t}setValue(t){this.value=t,this.input&&(this.input.value=this.formatValue(t))}setDisabled(t){super.setDisabled(t),this.input&&(this.input.disabled=t);for(let e of this.stepperButtons)e.disabled=t}createControls(){let t=document.createElement("div");t.setAttribute("data-stdg-field-input","");let e=document.createElement("div");return e.setAttribute("data-stdg-stepper",""),e.appendChild(this.createStepperButton("up",1)),e.appendChild(this.createStepperButton("down",-1)),t.appendChild(this.createInput()),t.appendChild(e),t}createInput(){let t=document.createElement("input");return t.type="text",t.inputMode="text",t.setAttribute("enterkeyhint","done"),t.autocomplete="off",t.spellcheck=!1,t.value=this.formatValue(this.value),t.setAttribute("data-stdg-input",""),t.addEventListener("focus",()=>{t.select()}),t.addEventListener("blur",()=>{this.commitValue(t.value)}),t.addEventListener("keydown",e=>{if(e.key==="Enter"){t.blur();return}if(e.key==="Escape"){t.value=this.formatValue(this.value),t.blur();return}e.key!=="ArrowUp"&&e.key!=="ArrowDown"||(e.preventDefault(),this.applyDelta(e.key==="ArrowUp"?1:-1,e))}),t.addEventListener("wheel",e=>{document.activeElement===t&&(e.preventDefault(),this.applyDelta(e.deltaY<0?1:-1,e))}),t.addEventListener("mousedown",e=>{e.button===1&&this.startMiddleDrag(e,t)}),t.addEventListener("auxclick",e=>{e.button===1&&e.preventDefault()}),this.input=t,t}createStepperButton(t,e){let i=document.createElement("button");i.type="button",i.setAttribute("data-stdg-button",""),i.setAttribute("data-stdg-button-icon-12",""),i.setAttribute("data-direction",t),i.innerHTML=F(12,t==="up"?"chevrone-up":"chevrone-down");let n=0,s=0,o=!1,a=()=>{window.clearTimeout(n),window.clearInterval(s),document.removeEventListener("pointerup",a),document.removeEventListener("pointercancel",a)};return i.addEventListener("pointerdown",l=>{l.button===0&&(n=window.setTimeout(()=>{o=!0,this.applyDelta(e),s=window.setInterval(()=>{this.applyDelta(e)},Ys)},js),document.addEventListener("pointerup",a),document.addEventListener("pointercancel",a))}),i.addEventListener("click",l=>{if(o){o=!1,l.preventDefault();return}this.applyDelta(e),this.input?.focus(),this.input?.select()}),this.stepperButtons.push(i),i}startMiddleDrag(t,e){t.preventDefault();let i=t.clientX,n=0,s=document.body.style.cursor,o=document.body.style.userSelect;document.body.style.cursor="ew-resize",document.body.style.userSelect="none";let a=()=>{document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",a),document.body.style.cursor=s,document.body.style.userSelect=o},l=d=>{let c=d.clientX-i;for(i=d.clientX,n+=c;Math.abs(n)>=yn;){let p=n>0?1:-1;this.applyDelta(p,d),n-=yn*p}};e.focus(),e.select(),document.addEventListener("mousemove",l),document.addEventListener("mouseup",a)}commitValue(t){let e=parseFloat(t.replace(",","."));if(isNaN(e)){this.input&&(this.input.value=this.formatValue(this.value));return}let i=this.normalizeValue(e);this.input&&(this.input.value=this.formatValue(i)),this.emit(i)}applyDelta(t,e){let i=e?.shiftKey?10:e?.altKey?.1:1,n=this.normalizeValue(this.value+t*this.step*i);this.input&&(this.input.value=this.formatValue(n)),this.emit(n)}normalizeValue(t){let e=Math.round(t/this.step)*this.step,i=this.getPrecision(this.step);return Number(e.toFixed(i))}getPrecision(t){return String(t).split(".")[1]?.length??0}formatValue(t){let e=this.getPrecision(this.step);return e>0?t.toFixed(e):String(t)}};var Xs=320,qs=60,Sn=6,zt=class zt extends tt{constructor(t,e,i,n,s=0,o=100,a=1,l=1,d,c,p,g){super(t,e,i,n);this.valueInput=null;this.unitSelect=null;this.stepperButtons=[];this.min=s,this.max=o,this.step=a,this.displayMultiplier=l,this.displayStep=d,this.suffix=c,this.units=p,this.currentUnit=g}build(){let t=this.createRow();return t.appendChild(this.createLabel()),t.appendChild(this.createControls()),this.root=t,t}setValue(t){this.value=t,this.valueInput&&(this.valueInput.value=this.formatValue(t))}setDisabled(t){super.setDisabled(t),this.valueInput&&(this.valueInput.disabled=t),this.unitSelect&&(this.unitSelect.disabled=t);for(let e of this.stepperButtons)e.disabled=t}createControls(){let t=document.createElement("div");t.setAttribute("data-stdg-field-input","");let e=document.createElement("div");if(e.setAttribute("data-stdg-field-value",""),e.appendChild(this.createInput()),this.suffix){let n=document.createElement("span");n.setAttribute("data-stdg-field-suffix",""),n.textContent=this.suffix,e.appendChild(n)}if(t.appendChild(e),this.units&&this.units.length>0){let n=document.createElement("select");n.setAttribute("data-stdg-select","");for(let s of this.units){let o=document.createElement("option");o.value=s.value,o.textContent=s.label,n.appendChild(o)}n.value=this.currentUnit||this.units[0].value,n.addEventListener("change",()=>{this.currentUnit=n.value,this.valueInput&&(this.valueInput.value=this.formatValue(this.value)),this.onChange(this.key+"Unit",n.value)}),this.unitSelect=n,t.appendChild(n)}let i=document.createElement("div");return i.setAttribute("data-stdg-stepper",""),i.appendChild(this.createStepperButton("up",1)),i.appendChild(this.createStepperButton("down",-1)),t.appendChild(i),t}createInput(){let t=document.createElement("input");return t.type="text",t.inputMode="text",t.setAttribute("enterkeyhint","done"),t.autocomplete="off",t.spellcheck=!1,t.value=this.formatValue(this.value),t.setAttribute("data-stdg-input",""),t.addEventListener("focus",()=>{t.select()}),t.addEventListener("blur",()=>{this.commitInputValue(t)}),t.addEventListener("keydown",e=>{e.key==="Enter"?t.blur():e.key==="Escape"?(t.value=this.formatValue(this.value),t.blur()):(e.key==="ArrowUp"||e.key==="ArrowDown")&&(e.preventDefault(),this.applyDelta(e.key==="ArrowUp"?1:-1,e,t))}),t.addEventListener("wheel",e=>{document.activeElement===t&&(e.preventDefault(),this.applyDelta(e.deltaY<0?1:-1,e,t))}),t.addEventListener("mousedown",e=>{e.button===1&&this.startMiddleDrag(e,t)}),t.addEventListener("auxclick",e=>{e.button===1&&e.preventDefault()}),this.valueInput=t,t}createStepperButton(t,e){let i=document.createElement("button");i.type="button",i.setAttribute("data-stdg-button",""),i.setAttribute("data-stdg-button-icon-12",""),i.setAttribute("data-direction",t),i.innerHTML=F(12,t==="up"?"chevrone-up":"chevrone-down");let n=0,s=0,o=!1,a=()=>{window.clearTimeout(n),window.clearInterval(s),document.removeEventListener("pointerup",a),document.removeEventListener("pointercancel",a)};return i.addEventListener("pointerdown",l=>{l.button===0&&(n=window.setTimeout(()=>{o=!0,this.valueInput&&(this.applyDelta(e,void 0,this.valueInput),s=window.setInterval(()=>{this.valueInput&&this.applyDelta(e,void 0,this.valueInput)},qs))},Xs),document.addEventListener("pointerup",a),document.addEventListener("pointercancel",a))}),i.addEventListener("click",l=>{if(o){o=!1,l.preventDefault();return}this.valueInput&&(this.applyDelta(e,void 0,this.valueInput),this.valueInput.focus(),this.valueInput.select())}),this.stepperButtons.push(i),i}startMiddleDrag(t,e){t.preventDefault();let i=t.clientX,n=0,s=document.body.style.cursor,o=document.body.style.userSelect;document.body.style.cursor="ew-resize",document.body.style.userSelect="none";let a=()=>{document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",a),document.body.style.cursor=s,document.body.style.userSelect=o},l=d=>{let c=d.clientX-i;for(i=d.clientX,n+=c;Math.abs(n)>=Sn;){let p=n>0?1:-1;this.applyDelta(p,d,e),n-=Sn*p}};e.focus(),e.select(),document.addEventListener("mousemove",l),document.addEventListener("mouseup",a)}commitInputValue(t){let e=parseFloat(t.value.replace(",","."));if(isNaN(e)){t.value=this.formatValue(this.value);return}let i=this.normalizeDisplayValue(e);t.value=this.formatValue(i),this.emit(i)}applyDelta(t,e,i){let n=e?.shiftKey?10:e?.altKey?.1:1,s=this.modelToDisplay(this.value)+t*this.getDisplayStep()*n,o=this.normalizeDisplayValue(s);i.value=this.formatValue(o),this.emit(o)}normalizeValue(t){let e=Math.min(this.max,Math.max(this.min,t));if(zt.DECIMAL_UNITS.has(this.currentUnit??""))return Number(e.toFixed(2));let i=Math.round(e/this.step)*this.step,n=this.getPrecision(this.step);return Number(i.toFixed(n))}normalizeDisplayValue(t){let e=this.modelToDisplay(this.min),i=this.modelToDisplay(this.max),n=Math.min(i,Math.max(e,t)),s=this.getDisplayPrecision();if(zt.DECIMAL_UNITS.has(this.currentUnit??"")){let d=Number(n.toFixed(s));return this.normalizeValue(this.displayToModel(d))}let o=this.getDisplayStep(),a=Math.round(n/o)*o,l=Number(a.toFixed(s));return this.normalizeValue(this.displayToModel(l))}getPrecision(t){return String(t).split(".")[1]?.length??0}formatValue(t){let e=this.modelToDisplay(t),i=this.getDisplayPrecision();return i>0?e.toFixed(i):String(e)}modelToDisplay(t){let e=this.getDisplayPrecision();return Number((t*this.displayMultiplier).toFixed(e))}displayToModel(t){return t/this.displayMultiplier}getDisplayStep(){return this.displayStep??this.step*this.displayMultiplier}getDisplayPrecision(){if(zt.DECIMAL_UNITS.has(this.currentUnit??""))return 2;let t=this.getDisplayStep();return t<1?Math.max(2,this.getPrecision(t)):0}};zt.DECIMAL_UNITS=new Set(["rem","em"]);var zr=zt;var Gr=class extends tt{constructor(){super(...arguments);this.colorInput=null;this.hexLabel=null}build(){let t=this.createRow();return t.appendChild(this.createLabel()),t.appendChild(this.createControl()),this.root=t,t}setValue(t){this.value=t,this.colorInput&&(this.colorInput.value=t),this.hexLabel&&(this.hexLabel.value=t)}setDisabled(t){super.setDisabled(t),this.colorInput&&(this.colorInput.disabled=t),this.hexLabel&&(this.hexLabel.disabled=t)}createControl(){let t=document.createElement("div");t.setAttribute("data-stdg-field-input","");let e=document.createElement("input");e.type="color",e.value=this.value,e.setAttribute("data-stdg-input",""),e.setAttribute("data-stdg-input-color","");let i=document.createElement("input");return i.type="text",i.inputMode="text",i.value=this.value,i.setAttribute("data-stdg-input",""),e.addEventListener("input",()=>{i.value=e.value,this.emit(e.value)}),i.addEventListener("change",()=>{let n=i.value.trim();e.value=n,this.emit(n)}),this.colorInput=e,this.hexLabel=i,t.appendChild(e),t.appendChild(i),t}};var $r=class extends tt{constructor(t,e,i,n,s){super(t,e,i,n);this.select=null;this.stepperButtons=[];this.options=s}build(){let t=this.createRow();return t.appendChild(this.createLabel()),t.appendChild(this.createControl()),this.root=t,t}setValue(t){this.value=t,this.select&&(this.select.value=t)}setDisabled(t){super.setDisabled(t),this.select&&(this.select.disabled=t);for(let e of this.stepperButtons)e.disabled=t}createControl(){let t=document.createElement("div");t.setAttribute("data-stdg-field-input","");let e=document.createElement("select");e.setAttribute("data-stdg-select","");for(let n of this.options){let s=document.createElement("option");s.value=n.value,s.textContent=n.label,n.value===this.value&&(s.selected=!0),e.appendChild(s)}e.addEventListener("change",()=>{this.emit(e.value)}),this.select=e;let i=document.createElement("div");return i.setAttribute("data-stdg-stepper",""),i.appendChild(this.createStepperButton("up",-1)),i.appendChild(this.createStepperButton("down",1)),t.appendChild(e),t.appendChild(i),t}createStepperButton(t,e){let i=document.createElement("button");return i.type="button",i.setAttribute("data-stdg-button",""),i.setAttribute("data-stdg-button-icon-12",""),i.setAttribute("data-direction",t),i.innerHTML=F(12,t==="up"?"chevrone-up":"chevrone-down"),i.addEventListener("click",()=>{if(!this.select)return;let n=this.select.options.length;if(n===0)return;let o=((this.select.selectedIndex+e)%n+n)%n;this.select.selectedIndex=o,this.emit(this.select.value)}),this.stepperButtons.push(i),i}};var Ur=class extends tt{constructor(){super(...arguments);this.checkbox=null;this.toggle=null}build(){let t=this.createRow();t.appendChild(this.createLabel());let e=document.createElement("label");e.setAttribute("data-stdg-toggle",""),e.setAttribute("data-checked",String(this.value));let i=document.createElement("input");i.type="checkbox",i.checked=this.value,i.setAttribute("data-stdg-toggle-input",""),this.checkbox=i,this.toggle=e;let n=document.createElement("span");return n.setAttribute("data-stdg-toggle-knob",""),i.addEventListener("change",()=>{let s=i.checked;this.value=s,e.setAttribute("data-checked",String(s)),this.emit(s)}),e.appendChild(i),e.appendChild(n),t.appendChild(e),this.root=t,t}setValue(t){this.value=t,this.checkbox&&(this.checkbox.checked=t),this.toggle?.setAttribute("data-checked",String(t))}setDisabled(t){super.setDisabled(t),this.checkbox&&(this.checkbox.disabled=t),this.toggle?.setAttribute("aria-disabled",t?"true":"false")}};var jr=class{constructor(){this.fields=[];this.fieldEntries=[];this.values={}}build(r,t,e){this.destroy(),this.values={...t};let i=(o,a)=>{this.values[o]=a,this.syncDisabledStates(),e(o,a)},n=document.createDocumentFragment(),s=document.createElement("div");s.setAttribute("data-stdg-panel-content",""),n.appendChild(s);for(let o of r){if(o.type==="divider"){s=document.createElement("div"),s.setAttribute("data-stdg-panel-content",""),n.appendChild(s);continue}let a=this.createField(o,t,i);a&&(this.fields.push(a),this.fieldEntries.push({descriptor:o,field:a}),s.appendChild(a.build()))}return this.syncDisabledStates(),n}updateValues(r){this.values={...this.values,...r};for(let t of this.fields){let e=t.key;e&&e in r&&t.setValue(r[e])}this.syncDisabledStates()}destroy(){for(let r of this.fields)r.destroy();this.fields=[],this.fieldEntries=[],this.values={}}createField(r,t,e){switch(r.type){case"number":return new Nr(r.key,r.label,t[r.key]??r.default,e,r.min,r.max,r.step);case"range":return new zr(r.key,r.label,t[r.key]??r.default,e,r.min,r.max,r.step,r.displayMultiplier,r.displayStep,r.suffix,r.units,t[r.key+"Unit"]??r.defaultUnit);case"color":return new Gr(r.key,r.label,t[r.key]??r.default,e);case"select":return new $r(r.key,r.label,t[r.key]??r.default,e,r.options);case"toggle":return new Ur(r.key,r.label,t[r.key]??r.default,e);default:return null}}syncDisabledStates(){for(let r of this.fieldEntries){let t=r.descriptor.disabledWhen,e=!!t&&this.values[t.key]===t.equals;r.field.setDisabled(e)}}};var Ti=12,Ks=360,Zs=560,ve=class{constructor(r,t,e,i){this.detailTitle=null;this.detailIcon=null;this.detailBuilder=null;this.instances=[];this.layouts=[];this.panelTitleValue="Layout";this.selectedLayoutId="";this.resolvedLayoutId="";this.selectedInstanceId=null;this.selectedBreakpointLayoutId=null;this.isOpen=!1;this.panelInBody=!1;this.isAddPanelOpen=!1;this.isLayoutSettingsOpen=!1;this.enabled=!0;this.target=r,this.adapterRegistry=t,this.onAdd=e.onAdd,this.onRemove=e.onRemove,this.onToggle=e.onToggle,this.onSettingChange=e.onSettingChange,this.onReorder=e.onReorder,this.onMoveToEnd=e.onMoveToEnd,this.onSelectLayout=e.onSelectLayout,this.onUpdateLayoutMinWidth=e.onUpdateLayoutMinWidth,this.onAddLayout=e.onAddLayout,this.onRemoveLayout=e.onRemoveLayout,this.onExport=e.onExport,this.onImport=e.onImport,this.onRenameInstance=e.onRenameInstance,this.onRenamePanelTitle=e.onRenamePanelTitle,this.onHUDOpen=e.onHUDOpen,this.onHUDClose=e.onHUDClose,this.onLayoutPanelOpen=e.onLayoutPanelOpen,this.onLayoutPanelClose=e.onLayoutPanelClose,this.onDocumentPointerDownBind=this.onDocumentPointerDown.bind(this),this.onViewportChangeBind=()=>this.syncPanelPlacement(),this.hudRoot=this.createHudRoot(),this.trigger=this.createTrigger(),this.panel=this.createMainPanel(),this.addPanel=this.createAddPanel(),this.layoutPanel=this.createLayoutPanel(),this.detailPanel=this.createDetailPanel(),i?.attachTrigger!==!1&&this.hudRoot.appendChild(this.trigger),this.panel.appendChild(this.addPanel),this.panel.appendChild(this.layoutPanel),this.panel.appendChild(this.detailPanel),this.hudRoot.appendChild(this.panel),document.addEventListener("pointerdown",this.onDocumentPointerDownBind),window.addEventListener("resize",this.onViewportChangeBind),window.visualViewport?.addEventListener("resize",this.onViewportChangeBind),window.visualViewport?.addEventListener("scroll",this.onViewportChangeBind)}refresh(r,t,e,i,n){this.instances=[...r],this.layouts=[...t],this.panelTitleValue=e.trim()||"Layout",this.selectedLayoutId=i,this.resolvedLayoutId=n,this.selectedInstanceId&&!r.some(s=>s.id===this.selectedInstanceId)&&this.clearSelection(),this.selectedBreakpointLayoutId&&!this.layouts.some(s=>s.id===this.selectedBreakpointLayoutId)&&(this.selectedBreakpointLayoutId=null),this.layoutTitle.value=this.panelTitleValue,this.renderLayoutChips(),this.renderLayoutSettings(),this.renderList(),this.renderDetailPanel()}destroy(){this.detailBuilder?.destroy(),document.removeEventListener("pointerdown",this.onDocumentPointerDownBind),window.removeEventListener("resize",this.onViewportChangeBind),window.visualViewport?.removeEventListener("resize",this.onViewportChangeBind),window.visualViewport?.removeEventListener("scroll",this.onViewportChangeBind),this.panelInBody&&this.panel.remove(),this.hudRoot.remove()}getTriggerElement(){return this.trigger}getHudElement(){return this.hudRoot}setTargetId(r){this.hudRoot.setAttribute("data-target-id",r),this.trigger.setAttribute("data-target-id",r),this.panel.setAttribute("data-target-id",r),this.addPanel.setAttribute("data-target-id",r),this.layoutPanel.setAttribute("data-target-id",r),this.detailPanel.setAttribute("data-target-id",r)}setAnchorPosition(r,t,e="top-left"){this.hudRoot.setAttribute("data-visible","true");let i=e==="top-right"?" translate(-100%, 0%)":"";this.hudRoot.style.transform=`translate3d(${Math.round(r)}px, ${Math.round(t)}px, 0)${i}`,this.syncPanelPlacement()}setAnchorVisible(r){this.hudRoot.setAttribute("data-visible",r?"true":"false")}isHUDOpen(){return this.isOpen}isLayoutSettingsPanelOpen(){return this.isLayoutSettingsOpen}setEnabled(r){this.enabled=r,r||this.hide(),this.hudRoot.style.display=r?"":"none"}isEnabled(){return this.enabled}createHudRoot(){return _t()}createTrigger(){let r=rt({icon:"settings",label:"Open layout guides",modifiers:["toggle"],attrs:{"data-devguides-id":"layout","data-open":"false","data-state":"visible","data-active":"false","aria-expanded":"false"}});return r.addEventListener("click",t=>{t.stopPropagation(),this.toggle()}),r}createMainPanel(){let r=ue(),t=pe();this.layoutTitle=document.createElement("input"),this.layoutTitle.setAttribute("data-stdg-input",""),this.layoutTitle.setAttribute("data-stdg-panel-title",""),this.layoutTitle.type="text",this.layoutTitle.value=this.panelTitleValue,this.layoutTitle.addEventListener("blur",()=>{let n=this.layoutTitle.value.trim()||"Layout";n!==this.panelTitleValue&&(this.panelTitleValue=n,this.onRenamePanelTitle(n)),this.layoutTitle.value=n}),this.layoutTitle.addEventListener("keydown",n=>{n.stopPropagation(),n.key==="Enter"&&this.layoutTitle.blur(),n.key==="Escape"&&(this.layoutTitle.value=this.panelTitleValue.trim()||"Layout",this.layoutTitle.blur())}),this.layoutTitle.addEventListener("click",n=>{n.stopPropagation(),this.startLayoutTitleRename()}),this.layoutSettingsToggle=rt({icon:"options",label:"Layout Settings",modifiers:["toggle","left"],attrs:{"data-active":"false"}}),this.layoutSettingsToggle.addEventListener("click",n=>{n.stopPropagation(),this.isLayoutSettingsOpen?this.closeLayoutPanel():this.openLayoutPanel()});let e=rt({icon:"close",label:"Close layout guides",modifiers:["right"]});e.addEventListener("click",n=>{n.stopPropagation(),this.hide()}),this.headerAddButton=rt({icon:"plus",label:"Add Layout Guide",modifiers:["toggle","left"],attrs:{"data-active":"false"}}),this.headerAddButton.addEventListener("click",n=>{n.stopPropagation(),this.openAddPanel()}),t.appendChild(this.layoutTitle),t.appendChild(this.headerAddButton),t.appendChild(e);let i=document.createElement("div");return i.setAttribute("data-stdg-panel-responsive",""),this.layoutChipTabs=document.createElement("div"),this.layoutChipTabs.setAttribute("data-stdg-panel-list",""),i.appendChild(this.layoutSettingsToggle),i.appendChild(this.layoutChipTabs),this.listContainer=ge({"data-string-grid-list":""}),this.addGuideButton=Ft({icon:"plus",label:"Add Layout Guide",withLabel:!0,attrs:{"data-active":"false"}}),this.addGuideButton.addEventListener("click",n=>{n.stopPropagation(),this.openAddPanel()}),this.listContainer.appendChild(this.addGuideButton),r.appendChild(t),r.appendChild(i),r.appendChild(this.listContainer),r}createAddPanel(){let r=ue({"data-panel":"add"}),t=pe(),e=rt({icon:"close",label:"Close panel",modifiers:["right"]});return e.addEventListener("click",i=>{i.stopPropagation(),this.closeAddPanel()}),t.appendChild(e),this.addGridList=ge({"data-string-grid-add-grid-list":"","data-stdg-panel-content-50":""}),this.renderAddPanelList(),r.appendChild(t),r.appendChild(this.addGridList),r}renderAddPanelList(){if(this.addGridList.innerHTML="",this.adapterRegistry.size===0){let r=document.createElement("div");r.setAttribute("data-string-grid-add-grid-empty",""),r.textContent="No layout guides available",this.addGridList.appendChild(r);return}for(let[,r]of this.adapterRegistry){let t=Ft({icon:"",label:r.label,withLabel:!0});t.innerHTML=`${r.icon.replace("<svg","<svg data-stdg-icon-16")}<span>${r.label}</span>`,t.addEventListener("click",e=>{e.stopPropagation(),this.onAdd(r.type),this.closeAddPanel()}),this.addGridList.appendChild(t)}}createLayoutPanel(){let r=ue({"data-panel":"layout"}),t=pe();this.layoutAddButton=rt({icon:"plus",label:"Add Layout Guide",modifiers:["toggle","left"],attrs:{"data-active":"false"}}),this.layoutAddButton.addEventListener("click",o=>{o.stopPropagation(),this.onAddLayout()});let e=rt({icon:"close",label:"Close panel",modifiers:["right"]});e.addEventListener("click",o=>{o.stopPropagation(),this.closeLayoutPanel()}),t.appendChild(this.layoutAddButton),t.appendChild(e),this.layoutSettingsList=ge(),this.layoutIOActions=ge({"data-stdg-panel-content-50":""});let i=Ft({icon:"export",label:"Export",withLabel:!0,attrs:{"data-io":"export"}});i.addEventListener("click",o=>{o.stopPropagation(),this.onExport()});let n=Ft({icon:"import",label:"Import",withLabel:!0,attrs:{"data-io":"import"}});n.addEventListener("click",o=>{o.stopPropagation(),this.onImport()}),this.layoutIOActions.appendChild(i),this.layoutIOActions.appendChild(n);let s=document.createElement("span");return s.setAttribute("data-stdg-panel-hr",""),r.appendChild(t),r.appendChild(this.layoutSettingsList),r.appendChild(s),r.appendChild(this.layoutIOActions),r}createDetailPanel(){let r=ue({"data-panel":"detail"}),t=pe();this.detailIcon=document.createElement("span"),this.detailIcon.setAttribute("data-stdg-holder-icon-16",""),this.detailIcon.setAttribute("data-stdg-button-left",""),this.detailTitle=document.createElement("span"),this.detailTitle.addEventListener("click",i=>{i.stopPropagation(),this.startDetailRename()});let e=rt({icon:"close",label:"Close detail panel",modifiers:["right"]});return e.addEventListener("click",i=>{i.stopPropagation(),this.closeDetailPanel()}),t.appendChild(this.detailIcon),t.appendChild(this.detailTitle),t.appendChild(e),this.detailContent=document.createElement("div"),this.detailContent.setAttribute("data-string-dev-detail-body",""),r.appendChild(t),r.appendChild(this.detailContent),r}renderLayoutChips(){this.layoutChipTabs.innerHTML="";let r=t=>{this.selectedLayoutId=t,this.renderLayoutChips(),this.renderLayoutSettings()};[...this.layouts].reverse().forEach(t=>{let e=Ft({icon:"",label:`Select ${t.label} layout`});e.innerHTML=`<span>${t.label}</span>`,e.setAttribute("data-active",String(t.id===this.selectedLayoutId)),e.setAttribute("data-resolved",String(t.id===this.resolvedLayoutId)),e.setAttribute("data-mode",t.label),e.addEventListener("click",i=>{i.stopPropagation(),r(t.id),this.onSelectLayout(t.id)}),this.layoutChipTabs.appendChild(e)}),this.layoutSettingsToggle.setAttribute("data-active",String(this.isLayoutSettingsOpen))}renderLayoutSettings(){this.layoutSettingsList.innerHTML="",this.layoutAddButton.style.display=this.layouts.length>=4?"none":"";let{breakpointsRow:r,inputField:t}=this.createBreakpointWidget();this.layoutSettingsList.appendChild(r),this.layoutSettingsList.appendChild(t)}createBreakpointWidget(){let r=[...this.layouts].reverse(),t=r.length>2,e=document.createElement("div");e.setAttribute("data-stdg-panel-breakpoints","");let i=document.createElement("div");i.setAttribute("data-stdg-panel-field","");let n=`st-dg-break-${Date.now()}`,s=document.createElement("span");s.innerHTML=F(16,"break","second");let o=document.createElement("input");o.id=n,o.type="number",o.inputMode="numeric",o.step="1",o.min="1",o.setAttribute("data-stdg-input","");let a=document.createElement("label");a.htmlFor=n,a.setAttribute("data-stdg-field-input-disable",""),a.textContent="px",i.appendChild(s),i.appendChild(o),i.appendChild(a);let l=null,d=null,c=0,p=(m,f,v,y=!1)=>{d?.setAttribute("data-active","false"),l=m,d=v,c=f,this.selectedBreakpointLayoutId=m,v.setAttribute("data-active","true"),o.value=String(f),y&&(o.focus(),o.select())},g=()=>{if(!l||!o.isConnected)return;let m=Number.parseInt(o.value,10);if(Number.isFinite(m)&&m>=0){if(m===c)return;c=m,this.onUpdateLayoutMinWidth(l,m)}else o.value=String(c)};o.addEventListener("keydown",m=>{if(m.stopPropagation(),m.key==="Enter"){g();return}m.key==="Escape"&&(o.value=String(c),o.blur())}),o.addEventListener("blur",()=>requestAnimationFrame(g)),o.addEventListener("click",m=>m.stopPropagation());let h=null;if(r.forEach((m,f)=>{let v=document.createElement("div");v.setAttribute("data-stdg-panel-breakpoint-value","");let y=document.createElement("span");if(y.textContent=m.label,v.appendChild(y),t&&f>=2){let b=Ei(`Remove ${m.label} layout`);b.addEventListener("pointerdown",S=>S.stopPropagation()),b.addEventListener("click",S=>{S.preventDefault(),S.stopPropagation(),this.layouts.length>2&&this.onRemoveLayout(m.id)}),v.appendChild(b)}if(e.appendChild(v),f<r.length-1){let b=r[f+1],S=document.createElement("button");S.type="button",S.setAttribute("data-stdg-button",""),S.setAttribute("data-stdg-panel-breakpoint-marker",""),S.setAttribute("data-active","false"),S.setAttribute("aria-label",`Edit ${b.label} breakpoint`);let L=document.createElement("span");L.textContent=String(b.minWidth),S.appendChild(L),S.addEventListener("click",M=>{M.stopPropagation(),p(b.id,b.minWidth,S,!0)}),e.appendChild(S),(this.selectedBreakpointLayoutId===b.id||h===null&&this.selectedBreakpointLayoutId===null)&&(h={layoutId:b.id,value:b.minWidth,el:S})}}),h!==null){let m=h;p(m.layoutId,m.value,m.el)}return{breakpointsRow:e,inputField:i}}syncChipRowStates(){this.layoutChipTabs.querySelectorAll("[data-stdg-panel-button][data-mode]").forEach(t=>{let e=t.getAttribute("data-mode"),i=this.layouts.find(n=>n.label===e);i&&(t.setAttribute("data-active",String(i.id===this.selectedLayoutId)),t.setAttribute("data-resolved",String(i.id===this.resolvedLayoutId)))})}renderList(){for(;this.addGuideButton.nextSibling;)this.listContainer.removeChild(this.addGuideButton.nextSibling);for(let t of this.instances){let e=this.adapterRegistry.get(t.type);if(!e)continue;let i=document.createElement("div");i.setAttribute("data-stdg-panel-list-item",""),i.setAttribute("data-stdg-button",""),i.setAttribute("data-stdg-button-toggle",""),i.setAttribute("data-active",String(t.id===this.selectedInstanceId)),i.innerHTML=`${F(16,"grab","second")}${e.icon.replace("<svg","<svg data-stdg-icon-16")}<span>${t.name?.trim()||e.label}</span>`;let n=this.createToggle(t.visible,()=>this.onToggle(t.id)),s=Ei(`Remove ${t.name?.trim()||"instance"}`);s.addEventListener("click",o=>{o.stopPropagation(),this.selectedInstanceId===t.id&&this.closeDetailPanel(),this.onRemove(t.id)}),i.appendChild(n),i.appendChild(s),i.addEventListener("click",()=>{this.selectedInstanceId===t.id?this.closeDetailPanel():this.selectInstance(t.id)}),i.setAttribute("draggable","true"),i.addEventListener("dragstart",o=>{o.stopPropagation(),o.dataTransfer?.setData("text/plain",t.id),i.setAttribute("data-dragging","true")}),i.addEventListener("dragend",()=>{i.removeAttribute("data-dragging"),this.listContainer.querySelectorAll("[data-drag-over]").forEach(o=>o.removeAttribute("data-drag-over"))}),i.addEventListener("dragover",o=>{o.preventDefault(),o.stopPropagation();let a=i.getBoundingClientRect(),l=o.clientY<a.top+a.height/2?"before":"after";this.listContainer.querySelectorAll("[data-drag-over]").forEach(d=>d.removeAttribute("data-drag-over")),i.setAttribute("data-drag-over",l)}),i.addEventListener("dragleave",o=>{i.contains(o.relatedTarget)||i.removeAttribute("data-drag-over")}),i.addEventListener("drop",o=>{o.preventDefault(),o.stopPropagation();let a=o.dataTransfer?.getData("text/plain");if(i.removeAttribute("data-drag-over"),!a||a===t.id)return;let l=i.getBoundingClientRect(),d=o.clientY<l.top+l.height/2?"before":"after";this.onReorder(a,t.id,d)}),this.listContainer.appendChild(i)}this.addGuideButton.setAttribute("data-empty",String(this.instances.length===0));let r=this.instances.length>0;this.addGuideButton.style.display=r?"none":"",this.headerAddButton.style.display=r?"":"none"}renderDetailPanel(){if(!this.selectedInstanceId){this.hideDetailPanelUI();return}let r=this.instances.find(i=>i.id===this.selectedInstanceId);if(!r){this.clearSelection();return}let t=this.adapterRegistry.get(r.type);if(!t){this.clearSelection();return}this.detailIcon&&(this.detailIcon.innerHTML=t.icon.replace("<svg","<svg data-stdg-icon-16 data-stdg-icon-second")),this.detailTitle&&(this.detailTitle.textContent=r.name?.trim()||t.label),this.detailBuilder?.destroy(),this.detailBuilder=new jr;let e=this.detailBuilder.build(t.getUISchema(),r.settings,(i,n)=>this.onSettingChange(r.id,i,n));for(;this.detailContent.firstChild;)this.detailContent.removeChild(this.detailContent.firstChild);this.detailContent.appendChild(e),this.detailPanel.setAttribute("data-open","true"),this.alignDetailPanel(),this.syncPanelPlacement()}createToggle(r,t){let e=document.createElement("label");e.setAttribute("data-stdg-toggle",""),e.setAttribute("data-checked",String(r));let i=document.createElement("input");i.type="checkbox",i.checked=r,i.setAttribute("data-stdg-toggle-input",""),i.addEventListener("change",s=>{s.stopPropagation(),t()});let n=document.createElement("span");return n.setAttribute("data-stdg-toggle-knob",""),e.addEventListener("click",s=>s.stopPropagation()),e.appendChild(i),e.appendChild(n),e}startDetailRename(){if(!this.selectedInstanceId||!this.detailTitle)return;let r=this.instances.find(o=>o.id===this.selectedInstanceId);if(!r)return;let t=this.adapterRegistry.get(r.type);if(!t)return;let e=r.name?.trim()||t.label,i=this.detailTitle.parentElement;if(!i)return;let n=document.createElement("input");n.setAttribute("data-stdg-input",""),n.type="text",n.value=e;let s=()=>{let o=n.value.trim();o!==e&&this.onRenameInstance(r.id,o),i.contains(n)&&i.replaceChild(this.detailTitle,n)};n.addEventListener("blur",s),n.addEventListener("keydown",o=>{o.key==="Enter"&&n.blur(),o.key==="Escape"&&(n.value=e,n.blur())}),n.addEventListener("click",o=>o.stopPropagation()),n.addEventListener("pointerdown",o=>o.stopPropagation()),i.replaceChild(n,this.detailTitle),n.focus(),n.select()}startLayoutTitleRename(){this.layoutTitle.select()}openAddPanel(){this.isAddPanelOpen=!0,this.closeLayoutPanel(),this.clearSelection(),this.renderAddPanelList(),this.addPanel.setAttribute("data-open","true"),this.syncPanelPlacement()}closeAddPanel(){this.isAddPanelOpen=!1,this.addPanel.setAttribute("data-open","false"),this.syncPanelPlacement()}openLayoutPanel(){this.isLayoutSettingsOpen=!0,this.closeAddPanel(),this.clearSelection(),this.layoutPanel.setAttribute("data-open","true"),this.renderLayoutChips(),this.alignLayoutPanel(),this.syncPanelPlacement(),this.onLayoutPanelOpen()}closeLayoutPanel(){this.isLayoutSettingsOpen=!1,this.layoutPanel.setAttribute("data-open","false"),this.renderLayoutChips(),this.syncPanelPlacement(),this.onLayoutPanelClose()}alignLayoutPanel(){if(this.isMobilePanelMode()){this.layoutPanel.style.removeProperty("top");return}if(this.hudRoot.getAttribute("data-target-id")==="__global__"){this.layoutPanel.style.removeProperty("top");return}let r=this.layoutSettingsToggle.getBoundingClientRect(),t=this.panel.getBoundingClientRect();this.layoutPanel.style.top=`${r.top-t.top}px`}selectInstance(r){this.selectedInstanceId=r,this.closeLayoutPanel(),this.closeAddPanel(),this.renderList(),this.renderDetailPanel()}closeDetailPanel(){this.clearSelection(),this.renderList()}clearSelection(){this.selectedInstanceId=null,this.hideDetailPanelUI()}hideDetailPanelUI(){let r=this.detailBuilder;this.detailBuilder=null,this.detailPanel.setAttribute("data-open","false"),this.syncPanelPlacement(),window.setTimeout(()=>{this.detailPanel.getAttribute("data-open")==="false"&&(r?.destroy(),this.detailContent.innerHTML="",this.detailPanel.style.removeProperty("top"))},220)}alignDetailPanel(){if(this.isMobilePanelMode()){this.detailPanel.style.removeProperty("top");return}if(this.hudRoot.getAttribute("data-target-id")==="__global__"){this.detailPanel.style.removeProperty("top");return}let r=this.listContainer.querySelector('[data-stdg-panel-list-item][data-active="true"]');if(!r)return;let t=r.getBoundingClientRect(),e=this.panel.getBoundingClientRect();this.detailPanel.style.top=`${t.top-e.top}px`}show(){this.isOpen=!0,this.panel.setAttribute("data-open","true"),this.trigger.setAttribute("data-active","true"),this.trigger.setAttribute("aria-expanded","true"),this.syncPanelPlacement(),this.onHUDOpen()}hide(){this.isOpen=!1,this.panel.setAttribute("data-open","false"),this.closeAddPanel(),this.closeDetailPanel(),this.closeLayoutPanel(),this.trigger.setAttribute("data-active","false"),this.trigger.setAttribute("aria-expanded","false"),this.syncPanelPlacement(),this.onHUDClose()}toggle(){this.enabled&&(this.isOpen?this.hide():this.show())}isMobilePanelMode(){return typeof window>"u"?!1:window.matchMedia("(max-width: 1024px), (pointer: coarse)").matches}syncPanelPlacement(){if(!this.isMobilePanelMode()){this.panelInBody&&(this.panel.removeAttribute("data-mobile-sheet"),this.panel.style.removeProperty("position"),this.panel.style.removeProperty("bottom"),this.hudRoot.appendChild(this.panel),this.panelInBody=!1),this.hudRoot.setAttribute("data-mobile-sheet","false"),this.panel.style.removeProperty("left"),this.panel.style.removeProperty("top"),this.panel.style.removeProperty("width"),this.panel.style.removeProperty("height"),this.panel.style.removeProperty("max-height");return}if(!this.isOpen)return;this.panelInBody||((document.body??document.documentElement).appendChild(this.panel),this.panelInBody=!0);let t=window.visualViewport,e=t?.width??window.innerWidth,i=t?.height??window.innerHeight,n=Math.max(220,e-Ti*2),s=Math.max(120,i-Ti*2),o=Math.min(Ks,n),a=Math.min(Zs,s),l=Math.round((t?.offsetLeft??0)+(e-o)/2);this.hudRoot.setAttribute("data-mobile-sheet","true"),this.panel.setAttribute("data-mobile-sheet","true"),this.panel.style.position="fixed",this.panel.style.left=`${l}px`,this.panel.style.bottom=`${Ti}px`,this.panel.style.removeProperty("top"),this.panel.style.width=`${Math.round(o)}px`,this.panel.style.maxHeight=`${Math.round(a)}px`,this.panel.style.removeProperty("height"),this.addPanel.style.removeProperty("top"),this.layoutPanel.style.removeProperty("top"),this.detailPanel.style.removeProperty("top")}onDocumentPointerDown(r){if(!this.isOpen)return;let t=r.target;t instanceof Node&&(this.panel.contains(t)||this.trigger.contains(t)||this.addPanel.contains(t)||this.layoutPanel.contains(t)||this.detailPanel.contains(t)||this.hide())}};var St=class{static serialize(r,t){return{v:this.VERSION,source:"StringDevLayout",selectedLayout:t,layouts:r.map(e=>({id:e.id,label:e.label,minWidth:e.minWidth,grids:e.instances.map(i=>({id:i.id,type:i.type,visible:i.visible,...i.name!==void 0?{name:i.name}:{},settings:{...i.settings}}))}))}}static deserialize(r,t){if(!r||typeof r!="object")return null;let e=r,i=e.v,n=e.source;if(n!=="StringDevLayout"&&n!=="StringGrid"||i!==1&&i!==2||!Array.isArray(e.layouts))return null;let s=e.layouts.filter(l=>!!l&&typeof l=="object"&&typeof l.id=="string").map((l,d)=>({id:l.id,label:xi.includes(l.label)?l.label:"S",minWidth:this.resolveImportedMinWidth(l.minWidth,d),instances:(Array.isArray(l.grids)?l.grids:[]).filter(c=>!!c&&typeof c=="object"&&typeof c.type=="string"&&t.has(c.type)).map(c=>{let p=c.type,g=t.get(p);return{id:typeof c.id=="string"?c.id:_r(),type:p,visible:c.visible!==!1,...typeof c.name=="string"&&c.name?{name:c.name}:{},settings:{...g.getDefaults(),...c.settings&&typeof c.settings=="object"&&!Array.isArray(c.settings)?c.settings:{}}}})}));if(s.length===0)return null;s.sort((l,d)=>d.minWidth-l.minWidth);let o=typeof e.selectedLayout=="string"?e.selectedLayout:typeof e.activeLayout=="string"?e.activeLayout:s[0].id,a=s.some(l=>l.id===o)?o:s[0].id;return{layouts:s,selectedLayoutId:a}}static toFile(r,t){let e=JSON.stringify(t,null,2),i=new Blob([e],{type:"application/json"}),n=URL.createObjectURL(i),s=document.createElement("a");s.href=n,s.download=r,s.click(),URL.revokeObjectURL(n)}static fromFile(){return new Promise((r,t)=>{let e=document.createElement("input");e.type="file",e.accept=".json,application/json";let i=()=>e.remove();e.addEventListener("change",()=>{let n=e.files?.[0];if(!n){i(),t(new Error("No file selected"));return}let s=new FileReader;s.onload=()=>{i();try{r(JSON.parse(s.result))}catch{t(new Error("Invalid JSON"))}},s.onerror=()=>{i(),t(new Error("File read error"))},s.readAsText(n)}),e.addEventListener("cancel",()=>{i(),t(new Error("Cancelled"))}),document.body.appendChild(e),e.click()})}static resolveImportedMinWidth(r,t){return typeof r=="number"&&Number.isFinite(r)?he(r):[1280,1024,768,0][t]??Math.max(0,1280-t*256)}};St.VERSION=2;var Yr="http://www.w3.org/2000/svg",z=class{clear(r,t){let e=r.querySelector(`[data-grid-id="${t}"]`);e&&e.remove()}getGroup(r,t){let e=r.querySelector(`[data-grid-id="${t}"]`);return e||(e=document.createElementNS(Yr,"g"),e.setAttribute("data-grid-id",t),r.appendChild(e)),e}createLine(r,t,e,i,n,s,o=1){let a=document.createElementNS(Yr,"line");return a.setAttribute("data-string-grid-shape","line"),a.setAttribute("x1",String(r)),a.setAttribute("y1",String(t)),a.setAttribute("x2",String(e)),a.setAttribute("y2",String(i)),a.setAttribute("stroke",n),a.setAttribute("stroke-opacity",String(s)),a.setAttribute("stroke-width",String(o)),a}createRect(r,t,e,i,n,s){let o=document.createElementNS(Yr,"rect");return o.setAttribute("data-string-grid-shape","rect"),o.setAttribute("x",String(r)),o.setAttribute("y",String(t)),o.setAttribute("width",String(e)),o.setAttribute("height",String(i)),o.setAttribute("fill",n),o.setAttribute("fill-opacity",String(s)),o}resolveUnit(r,t,e,i){let n=parseFloat(getComputedStyle(document.documentElement).fontSize)||16,s=i instanceof Element&&parseFloat(getComputedStyle(i).fontSize)||n;switch(t){case"%":return r/100*e;case"vw":return r/100*window.innerWidth;case"vh":return r/100*window.innerHeight;case"em":return r*s;case"rem":return r*n;default:return r}}createPath(r,t,e,i=1,n="none"){let s=document.createElementNS(Yr,"path");return s.setAttribute("data-string-grid-shape","path"),s.setAttribute("d",r),s.setAttribute("stroke",t),s.setAttribute("stroke-opacity",String(e)),s.setAttribute("stroke-width",String(i)),s.setAttribute("fill",n),s}};var be=class be extends z{constructor(){super(...arguments);this.type="columns";this.label="Columns";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="7" y="3" width="2" height="10" fill="currentColor"/><rect x="3" y="3" width="2" height="10" fill="currentColor"/><rect x="11" y="3" width="2" height="10" fill="currentColor"/></svg>'}getDefaults(){return{count:12,gap:20,gapUnit:"px",margin:0,marginUnit:"px",color:"#4a90e2",opacity:.15,showLines:!1}}getUISchema(){return[{type:"number",key:"count",label:"Columns",default:12,min:1,max:48,step:1},{type:"range",key:"gap",label:"Gap",default:20,min:0,max:100,step:1,units:be.UNIT_OPTIONS,defaultUnit:"px"},{type:"range",key:"margin",label:"Margin",default:0,min:0,max:100,step:1,units:be.UNIT_OPTIONS,defaultUnit:"px"},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#4a90e2"},{type:"range",key:"opacity",label:"Opacity",default:.15,min:0,max:1,step:.01,displayMultiplier:100,displayStep:10},{type:"toggle",key:"showLines",label:"Lines only",default:!1}]}render(t,e,i,n){let s=this.getGroup(t,n.__instanceId),{count:o,gap:a,gapUnit:l,margin:d,marginUnit:c,color:p,opacity:g,showLines:h}=n,m=t.parentElement,f=this.resolveUnit(a,l||"px",e,m),v=this.resolveUnit(d,c||"px",e,m),y=e-v*2,b=(o-1)*f,S=(y-b)/o;if(!(S<=0))for(let L=0;L<o;L++){let M=v+L*(S+f);h?(s.appendChild(this.createLine(M,0,M,i,p,g)),s.appendChild(this.createLine(M+S,0,M+S,i,p,g))):s.appendChild(this.createRect(M,0,S,i,p,g))}}};be.UNIT_OPTIONS=[{value:"px",label:"px"},{value:"%",label:"%"},{value:"vw",label:"vw"},{value:"vh",label:"vh"},{value:"em",label:"em"},{value:"rem",label:"rem"}];var Xr=be;var Gt=class Gt extends z{constructor(){super(...arguments);this.type="rows";this.label="Rows";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="3" width="10" height="2" fill="currentColor"/><rect x="3" y="7" width="10" height="2" fill="currentColor"/><rect x="3" y="11" width="10" height="2" fill="currentColor"/></svg>'}getDefaults(){return{mode:"count",count:8,size:24,sizeUnit:"px",gap:0,gapUnit:"px",margin:0,marginUnit:"px",color:"#e2784a",opacity:.2,style:"line"}}getUISchema(){return[{type:"select",key:"mode",label:"Mode",default:"count",options:[{value:"count",label:"By count"},{value:"size",label:"By size"}]},{type:"number",key:"count",label:"Rows",default:8,min:1,max:48,step:1,disabledWhen:{key:"mode",equals:"size"}},{type:"range",key:"size",label:"Size",default:24,min:0,max:1200,step:1,units:Gt.UNIT_OPTIONS,defaultUnit:"px",disabledWhen:{key:"mode",equals:"count"}},{type:"range",key:"gap",label:"Gap",default:0,min:0,max:100,step:1,units:Gt.UNIT_OPTIONS,defaultUnit:"px"},{type:"range",key:"margin",label:"Margin",default:0,min:0,max:100,step:1,units:Gt.UNIT_OPTIONS,defaultUnit:"px"},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#e2784a"},{type:"range",key:"opacity",label:"Opacity",default:.2,min:0,max:1,step:.01,displayMultiplier:100,displayStep:10},{type:"select",key:"style",label:"Style",default:"line",options:[{value:"line",label:"Lines"},{value:"fill",label:"Fill"}]}]}render(t,e,i,n){let s=this.getGroup(t,n.__instanceId),{mode:o,count:a,size:l,sizeUnit:d,gap:c,gapUnit:p,margin:g,marginUnit:h,color:m,opacity:f,style:v}=n,y=t.parentElement,b=this.resolveUnit(c,p||"px",i,y),S=this.resolveUnit(g,h||"px",i,y),L=i-S*2;if(!(L<=0))if(o==="count")this.renderByCount(s,e,L,S,a,b,m,f,v);else{let M=this.resolveUnit(l,d||"px",i,y);if(M<=0)return;this.renderBySize(s,e,L,S,M,b,m,f,v)}}renderByCount(t,e,i,n,s,o,a,l,d){if(d==="fill"){let c=(i-(s-1)*o)/s;if(c<=0)return;for(let p=0;p<s;p++){let g=n+p*(c+o);t.appendChild(this.createRect(0,g,e,c,a,l))}}else{if(s===1){let p=n+i/2;t.appendChild(this.createLine(0,p,e,p,a,l));return}let c=i/(s-1);for(let p=0;p<s;p++){let g=n+p*c;t.appendChild(this.createLine(0,g,e,g,a,l))}}}renderBySize(t,e,i,n,s,o,a,l,d){if(d==="fill"){let c=s+o;for(let p=0;p<i;p+=c){let g=Math.min(s,i-p);t.appendChild(this.createRect(0,n+p,e,g,a,l))}}else for(let c=0;c<=i;c+=s)t.appendChild(this.createLine(0,n+c,e,n+c,a,l))}};Gt.UNIT_OPTIONS=[{value:"px",label:"px"},{value:"%",label:"%"},{value:"vh",label:"vh"},{value:"vw",label:"vw"},{value:"em",label:"em"},{value:"rem",label:"rem"}];var qr=Gt;var Kr=class extends z{constructor(){super(...arguments);this.type="center";this.label="Center";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="3" width="10" height="10" rx="3" fill="currentColor"/><path d="M8 2V14" stroke="white"/><path d="M2 8H14" stroke="white"/></svg>'}getDefaults(){return{showVertical:!0,showHorizontal:!0,color:"#50e24a",opacity:.5,dashed:!0}}getUISchema(){return[{type:"toggle",key:"showVertical",label:"Vertical",default:!0},{type:"toggle",key:"showHorizontal",label:"Horizontal",default:!0},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#50e24a"},{type:"range",key:"opacity",label:"Opacity",default:.5,min:0,max:1,step:.01,displayMultiplier:100,displayStep:10},{type:"toggle",key:"dashed",label:"Dashed",default:!0}]}render(t,e,i,n){let s=this.getGroup(t,n.__instanceId),{showVertical:o,showHorizontal:a,color:l,opacity:d,dashed:c}=n,p=c?"6 3":"none";if(o){let g=this.createLine(e/2,0,e/2,i,l,d);c&&g.setAttribute("stroke-dasharray",p),s.appendChild(g)}if(a){let g=this.createLine(0,i/2,e,i/2,l,d);c&&g.setAttribute("stroke-dasharray",p),s.appendChild(g)}}};var Zr=class extends z{constructor(){super(...arguments);this.type="rule-of-thirds";this.label="3\xD73";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="6" y="6" width="4" height="4" fill="currentColor"/><path d="M6 3.6C6 3.03995 6 2.75992 6.10899 2.54601C6.20487 2.35785 6.35785 2.20487 6.54601 2.10899C6.75992 2 7.03995 2 7.6 2H8.4C8.96005 2 9.24008 2 9.45399 2.10899C9.64215 2.20487 9.79513 2.35785 9.89101 2.54601C10 2.75992 10 3.03995 10 3.6V5H6V3.6Z" fill="currentColor"/><path d="M6 11H10V12.4C10 12.9601 10 13.2401 9.89101 13.454C9.79513 13.6422 9.64215 13.7951 9.45399 13.891C9.24008 14 8.96005 14 8.4 14H7.6C7.03995 14 6.75992 14 6.54601 13.891C6.35785 13.7951 6.20487 13.6422 6.10899 13.454C6 13.2401 6 12.9601 6 12.4V11Z" fill="currentColor"/><path d="M2 7.6C2 7.03995 2 6.75992 2.10899 6.54601C2.20487 6.35785 2.35785 6.20487 2.54601 6.10899C2.75992 6 3.03995 6 3.6 6H5V10H3.6C3.03995 10 2.75992 10 2.54601 9.89101C2.35785 9.79513 2.20487 9.64215 2.10899 9.45399C2 9.24008 2 8.96005 2 8.4V7.6Z" fill="currentColor"/><path d="M11 6H12.4C12.9601 6 13.2401 6 13.454 6.10899C13.6422 6.20487 13.7951 6.35785 13.891 6.54601C14 6.75992 14 7.03995 14 7.6V8.4C14 8.96005 14 9.24008 13.891 9.45399C13.7951 9.64215 13.6422 9.79513 13.454 9.89101C13.2401 10 12.9601 10 12.4 10H11V6Z" fill="currentColor"/></svg>'}getDefaults(){return{color:"#e2e24a",opacity:.4,showIntersections:!0}}getUISchema(){return[{type:"color",key:"color",label:"Color",default:"#e2e24a"},{type:"range",key:"opacity",label:"Opacity",default:.4,min:0,max:1,step:.01,displayMultiplier:100,displayStep:10},{type:"toggle",key:"showIntersections",label:"Show points",default:!0}]}render(t,e,i,n){let s=this.getGroup(t,n.__instanceId),{color:o,opacity:a,showIntersections:l}=n,d=e/3,c=i/3;if(s.appendChild(this.createLine(d,0,d,i,o,a)),s.appendChild(this.createLine(d*2,0,d*2,i,o,a)),s.appendChild(this.createLine(0,c,e,c,o,a)),s.appendChild(this.createLine(0,c*2,e,c*2,o,a)),l){let p=[[d,c],[d*2,c],[d,c*2],[d*2,c*2]];for(let[g,h]of p){let m=document.createElementNS("http://www.w3.org/2000/svg","circle");m.setAttribute("cx",String(g)),m.setAttribute("cy",String(h)),m.setAttribute("r","3"),m.setAttribute("fill",o),m.setAttribute("fill-opacity",String(a*1.5)),s.appendChild(m)}}}};var Pi=1.6180339887,Qr=class extends z{constructor(){super(...arguments);this.type="golden-rectangle";this.label="Golden";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="3" width="10" height="10" rx="3" fill="currentColor"/><path d="M9 13V3" stroke="white"/><path d="M13 9H9" stroke="white"/></svg>'}getDefaults(){return{depth:8,showSpiral:!0,color:"#e2a44a",opacity:.4}}getUISchema(){return[{type:"number",key:"depth",label:"Depth",default:8,min:2,max:14,step:1},{type:"toggle",key:"showSpiral",label:"Show spiral",default:!0},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#e2a44a"},{type:"range",key:"opacity",label:"Opacity",default:.4,min:0,max:1,step:.01,displayMultiplier:100,displayStep:10}]}render(t,e,i,n){let s=this.getGroup(t,n.__instanceId),{depth:o,showSpiral:a,color:l,opacity:d}=n,c,p;e/i>=Pi?(p=i,c=p*Pi):(c=e,p=c/Pi);let g=(e-c)/2,h=(i-p)/2;if(c<e-1||p<i-1){let L=this.createPath(`M ${g} ${h} L ${g+c} ${h} L ${g+c} ${h+p} L ${g} ${h+p} Z`,l,d*.3,1);L.setAttribute("stroke-dasharray","6 4"),s.appendChild(L)}let m=g,f=h,v=c,y=p,b="",S=!0;for(let L=0;L<o&&!(v<1||y<1);L++){let M=L%4,x=Math.min(v,y),I,w;switch(M){case 0:{I=m+v-x,w=f,v-x>.5&&s.appendChild(this.createLine(I,f,I,f+y,l,d)),a&&(S&&(b=`M ${I+x} ${w}`,S=!1),b+=` A ${x} ${x} 0 0 1 ${I} ${w+x}`),v-=x;break}case 1:{I=m,w=f+y-x,y-x>.5&&s.appendChild(this.createLine(m,w,m+v,w,l,d)),a&&(S&&(b=`M ${I+x} ${w+x}`,S=!1),b+=` A ${x} ${x} 0 0 1 ${I} ${w}`),y-=x;break}case 2:{I=m,w=f,v-x>.5&&s.appendChild(this.createLine(m+x,f,m+x,f+y,l,d)),a&&(S&&(b=`M ${I} ${w+x}`,S=!1),b+=` A ${x} ${x} 0 0 1 ${I+x} ${w}`),m+=x,v-=x;break}case 3:{I=m,w=f,y-x>.5&&s.appendChild(this.createLine(m,f+x,m+v,f+x,l,d)),a&&(S&&(b=`M ${I} ${w}`,S=!1),b+=` A ${x} ${x} 0 0 1 ${I+x} ${w+x}`),f+=x,y-=x;break}}}a&&b&&s.appendChild(this.createPath(b,l,d*.8,1.5))}};var Ai="http://www.w3.org/2000/svg",Lt=class Lt extends z{constructor(){super(...arguments);this.type="dot-grid";this.label="Dots";this.icon='<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="11" y="3" width="2" height="2" fill="currentColor"/><rect x="11" y="7" width="2" height="2" fill="currentColor"/><rect x="11" y="11" width="2" height="2" fill="currentColor"/><rect x="7" y="3" width="2" height="2" fill="currentColor"/><rect x="7" y="7" width="2" height="2" fill="currentColor"/><rect x="7" y="11" width="2" height="2" fill="currentColor"/><rect x="3" y="3" width="2" height="2" fill="currentColor"/><rect x="3" y="7" width="2" height="2" fill="currentColor"/><rect x="3" y="11" width="2" height="2" fill="currentColor"/></svg>'}getDefaults(){return{step:16,stepUnit:"px",dotSize:1.5,shape:"dot",color:"#a0a0a0",opacity:.4}}getUISchema(){return[{type:"range",key:"step",label:"Step",default:16,min:0,max:100,step:1,units:Lt.UNIT_OPTIONS,defaultUnit:"px"},{type:"range",key:"dotSize",label:"Size",default:1.5,min:.5,max:6,step:.5},{type:"select",key:"shape",label:"Shape",default:"dot",options:[{value:"dot",label:"Dot \u25CF"},{value:"cross",label:"Cross +"}]},{type:"divider"},{type:"color",key:"color",label:"Color",default:"#a0a0a0"},{type:"range",key:"opacity",label:"Opacity",default:.4,min:0,max:1,step:.01,displayMultiplier:100,displayStep:10}]}render(t,e,i,n){let s=this.getGroup(t,n.__instanceId),{step:o,stepUnit:a,dotSize:l,shape:d,color:c,opacity:p}=n,g=this.resolveUnit(o,a||"px",Math.min(e,i),t.parentElement),h=this.getSafeStep(e,i,g,d);if(h<2)return;let m=this.getPatternId(n.__instanceId),f=this.getDefs(t),v=document.createElementNS(Ai,"pattern");v.setAttribute("id",m),v.setAttribute("data-string-grid-pattern-for",n.__instanceId),v.setAttribute("patternUnits","userSpaceOnUse"),v.setAttribute("width",String(h)),v.setAttribute("height",String(h)),v.setAttribute("x",String(h/2)),v.setAttribute("y",String(h/2));let y=h/2;if(d==="cross")v.appendChild(this.createLine(y-l*2,y,y+l*2,y,c,p,.8)),v.appendChild(this.createLine(y,y-l*2,y,y+l*2,c,p,.8));else{let S=document.createElementNS(Ai,"circle");S.setAttribute("cx",String(y)),S.setAttribute("cy",String(y)),S.setAttribute("r",String(l)),S.setAttribute("fill",c),S.setAttribute("fill-opacity",String(p)),v.appendChild(S)}f.appendChild(v);let b=this.createRect(0,0,e,i,`url(#${m})`,1);b.setAttribute("fill-opacity","1"),s.appendChild(b)}clear(t,e){super.clear(t,e),t.querySelector(`[data-string-grid-pattern-for="${e}"]`)?.remove()}getDefs(t){let e=t.querySelector("defs");return e||(e=document.createElementNS(Ai,"defs"),t.insertBefore(e,t.firstChild)),e}getPatternId(t){return`string-grid-dot-pattern-${t.replace(/[^a-zA-Z0-9_-]/g,"-")}`}getSafeStep(t,e,i,n){let o=Math.max(i,2),a=n==="cross"?Lt.MAX_CROSS_CELLS:Lt.MAX_DOT_CELLS;return Math.floor(t/o)*Math.floor(e/o)<=a?o:Math.max(o,Math.sqrt(t*e/a))}};Lt.MAX_DOT_CELLS=12e4,Lt.MAX_CROSS_CELLS=8e4,Lt.UNIT_OPTIONS=[{value:"px",label:"px"},{value:"%",label:"%"},{value:"vw",label:"vw"},{value:"vh",label:"vh"},{value:"em",label:"em"},{value:"rem",label:"rem"}];var Jr=Lt;var ti="string-devtools-overlay-layout:change";var ki=class{constructor(){this.entries=new Map}register(r,t,e=1){this.entries.set(r,{order:t,badgeCount:e})}unregister(r){this.entries.delete(r)}resolveAnchor(r,t,e){let i=this.getSorted(),n=i.findIndex(o=>o.id===r),s=0;for(let o=0;o<n;o+=1)s+=i[o].badgeCount;return{docX:t+0+s*31,docY:e+0}}resolveCollisionOffset(r,t,e,i){let n=[],s=r.parentElement;for(;s;){let l=s.getAttribute("string-id")??s.getAttribute("data-string-id");if(l){let d=i(l);d&&n.push(d)}s=s.parentElement}let o=0,a=!0;for(;a;){a=!1;for(let l of n)if(Math.abs(l.docX-t)<50&&Math.abs(l.docY-(e+o))<31){o+=33,a=!0;break}}return o}emitLayoutChange(){window.dispatchEvent(new CustomEvent(ti))}getSorted(){let r=[];for(let[t,e]of this.entries)r.push({id:t,...e});return r.sort((t,e)=>t.order!==e.order?t.order-e.order:t.id.localeCompare(e.id)),r}},it=new ki;function Ln(){return`
1284
+ ${Pr(["[data-string-grid-root]","[data-stdg-badge]"])}
1285
+
1286
+ [data-string-grid-root],
1287
+ [data-stdg-badge] {
1288
+ --string-grid-stack-offset: 0px;
1289
+ --string-grid-panel-offset-top: 0px;
1290
+ --string-grid-trigger-gap: 8px;
1291
+ --string-grid-side-panel-gap: 8px;
295
1292
  }
296
1293
 
297
- [data-string-devtools-text-input] {
298
- min-height: var(--string-dev-input-height);
1294
+ [data-string-grid-overlay] {
1295
+ position: absolute;
1296
+ inset: 0;
299
1297
  width: 100%;
300
- padding: 0 10px;
301
- border: 1px solid var(--string-dev-field-border);
302
- border-radius: var(--string-dev-field-radius);
303
- background: var(--string-dev-field-bg);
304
- color: var(--string-dev-panel-text);
305
- font-size: var(--string-dev-panel-font-size);
306
- font-weight: 500;
307
- outline: none;
308
- appearance: none;
1298
+ height: 100%;
1299
+ pointer-events: none;
1300
+ overflow: hidden;
309
1301
  }
310
1302
 
311
- [data-string-devtools-text-input]:focus {
312
- border-color: var(--string-dev-focus-color);
313
- box-shadow: var(--string-dev-focus-shadow);
1303
+ [data-string-grid-list] {
1304
+ display: flex;
1305
+ flex-direction: column;
1306
+ gap: 0;
314
1307
  }
315
1308
 
316
- [data-string-devtools-chip] {
317
- width: var(--string-dev-chip-size);
318
- height: var(--string-dev-chip-size);
319
- padding: 0;
320
- border: 0;
321
- border-radius: var(--string-dev-field-radius);
322
- background: transparent;
323
- color: var(--string-dev-chip-muted);
324
- display: inline-flex;
325
- align-items: center;
326
- justify-content: center;
327
- appearance: none;
328
- cursor: pointer;
329
- transition: background 0.15s ease, color 0.15s ease;
1309
+ [data-stdg-badge] > [data-stdg-panel] {
1310
+ top: var(--string-grid-panel-offset-top);
1311
+ right: calc(100% + var(--string-grid-trigger-gap));
330
1312
  }
331
1313
 
332
- [data-string-devtools-chip] svg {
333
- width: 18px;
334
- height: 18px;
1314
+ [data-string-grid-global-hud][data-stdg-badge] {
1315
+ background: none;
1316
+ border: none;
1317
+ box-shadow: none;
1318
+ padding: 0;
1319
+ width: 0;
1320
+ min-width: 0;
1321
+ overflow: visible;
335
1322
  }
336
1323
 
337
- [data-string-devtools-chip]:hover,
338
- [data-string-devtools-chip]:focus-visible {
339
- background: var(--string-dev-icon-button-hover-bg);
340
- color: var(--string-dev-panel-text);
341
- outline: none;
1324
+ [data-string-grid-global-hud][data-stdg-badge] > [data-stdg-panel] {
1325
+ top: auto;
1326
+ bottom: 0;
1327
+ left: var(--string-grid-trigger-gap);
1328
+ right: auto;
342
1329
  }
343
1330
 
344
- [data-string-devtools-chip][data-selected="true"],
345
- [data-string-devtools-chip][data-open="true"],
346
- [data-string-devtools-chip][data-active="true"] {
347
- background: var(--string-dev-chip-active-bg);
348
- color: var(--string-dev-accent);
1331
+ [data-string-grid-global-hud][data-stdg-badge] [data-stdg-panel] > [data-stdg-panel] {
1332
+ top: auto;
1333
+ bottom: 0;
1334
+ left: calc(100% + var(--string-grid-side-panel-gap));
1335
+ right: auto;
349
1336
  }
350
1337
 
351
- [data-string-devtools-chip][data-selected="false"][data-resolved="true"] {
352
- color: var(--string-dev-chip-resolved);
353
- }
1338
+
354
1339
 
355
- /* Standardized Overlay HUD System */
356
- [data-string-devtools-overlay-chrome] {
357
- position: absolute;
1340
+ [data-stdg-panel] > [data-stdg-panel] {
358
1341
  top: 0;
359
- left: 0;
360
- width: 28px;
361
- height: 28px;
362
- pointer-events: none;
363
- overflow: visible;
364
- z-index: 10010;
365
- will-change: transform;
1342
+ right: calc(100% + var(--string-grid-side-panel-gap));
366
1343
  }
367
1344
 
368
- [data-string-devtools-overlay-chrome][hidden],
369
- [data-string-devtools-overlay-badge][hidden] {
370
- display: none !important;
371
- }
1345
+ @media (max-width: 1024px), (pointer: coarse) {
1346
+ [data-stdg-badge] > [data-stdg-panel],
1347
+ [data-string-grid-global-hud][data-stdg-badge] > [data-stdg-panel] {
1348
+ top: 0;
1349
+ right: auto;
1350
+ bottom: auto;
1351
+ left: 100%;
1352
+ margin-left: var(--string-grid-trigger-gap);
1353
+ }
372
1354
 
373
- [data-string-devtools-overlay-badge] {
374
- position: absolute;
375
- top: 0;
376
- left: 0;
377
- width: 28px;
378
- height: 28px;
379
- padding: 0;
380
- border: 1px solid rgba(255, 255, 255, 0.92);
381
- border-radius: 6px;
382
- background: rgba(255, 255, 255, 0.85);
383
- color: var(--string-dev-panel-text);
384
- backdrop-filter: blur(4px);
385
- -webkit-backdrop-filter: blur(4px);
386
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
387
- display: flex;
388
- align-items: center;
389
- justify-content: center;
390
- cursor: pointer;
391
- pointer-events: auto;
392
- transition: background 0.15s ease, opacity 0.2s ease, box-shadow 0.15s ease, color 0.15s ease;
393
- will-change: transform;
1355
+ [data-stdg-panel] > [data-stdg-panel],
1356
+ [data-string-grid-global-hud][data-stdg-badge] [data-stdg-panel] > [data-stdg-panel] {
1357
+ top: calc(100% + var(--string-grid-side-panel-gap));
1358
+ right: auto;
1359
+ bottom: auto;
1360
+ left: 0;
1361
+ }
394
1362
  }
1363
+ `}var ye="data-string-grid-storage-key",En=/^string-\d+$/,_="__global__";function Di(u,r){let t=u.getAttribute(ye)?.trim();if(t)return t;let e=u.getAttribute("data-string-id")?.trim()||u.getAttribute("string-id")?.trim()||"";if(e&&!En.test(e)){let s=`string:${window.location.pathname}#${e}`;return u.setAttribute(ye,s),s}let i=u.id.trim();if(i){let s=`dom:${window.location.pathname}#${i}`;return u.setAttribute(ye,s),s}let n=`path:${window.location.pathname}:${Js(u)}`;return u.setAttribute(ye,n),n}function Qs(u,r,t){let e=window.location.pathname,i=u.id.trim(),n=u.getAttribute("data-string-id")?.trim()||u.getAttribute("string-id")?.trim()||"",s=[i?`dom:${e}#${i}`:"",n&&!En.test(n)?`string:${e}#${n}`:"",i,n,r.id.trim()].filter(Boolean);return s.filter((o,a)=>o!==t&&s.indexOf(o)===a)}function Js(u){let r=[],t=u;for(;t&&t!==document.body&&t!==document.documentElement;){let e=t.parentElement,i=t.tagName.toLowerCase(),n=1;if(e){let s=t.previousElementSibling;for(;s;)s.tagName===t.tagName&&(n+=1),s=s.previousElementSibling}if(r.unshift(`${i}:nth-of-type(${n})`),e?.id){r.unshift(`#${e.id}`);break}t=e}return r.join(">")}function to(u){let r=0,t=u.parentElement;for(;t;)t.hasAttribute("data-string-grid-root")&&(r+=1),t=t.parentElement;return r}var Se=class extends Z{constructor(t){super(t);this.gridManager=new Wr;this.overlays=new Map;this.huds=new Map;this.elementMap=new Map;this.triggerEntries=new Map;this.triggerMeasurements=new Map;this.enabled=!0;this.needsMeasure=!1;this.hasPendingMutate=!1;this.globalHost=null;this.globalOverlay=null;this.globalHUD=null;this.globalSubBadge=null;this.attributesToMap=[],this.overlayLayer=this.acquireViewportLayer("devtools-grid-overlay",10010),this.viewportLayer=this.acquireViewportLayer("devtools-hud",10040),this.registerBuiltInAdapters(),this.registerExternalAdapters()}onInit(){this.ensureTriggerLayer(),this.ensureGlobalGrid()}getDevtoolSubBadges(){return[{id:"global-settings",icon:"settings",label:"Open global grid settings",selectorAttribute:"data-string-grid-global-toggle",onClick:t=>this.toggleGlobalPanel(t)}]}onObjectConnected(t){let e=t.htmlElement,i=Di(e,t),n=Qs(e,t,i);e.setAttribute("data-string-grid-root","");let s=to(e);e.setAttribute("data-string-grid-depth",String(s)),e.style.setProperty("--string-grid-stack-offset","0px"),this.elementMap.set(i,e),this.gridManager.load(i,n);let o=this.overlayLayer.getWorldElement(this.getWorldHost()),a=new fe(e,o,()=>{this.enabled&&(this.renderElement(i),this.scheduleTriggerSync())});this.overlays.set(i,a);let l=new ve(e,this.gridManager.getAdapterRegistry(),{onAdd:d=>this.handleAdd(i,d),onRemove:d=>this.handleRemove(i,d),onToggle:d=>this.handleToggle(i,d),onSettingChange:(d,c,p)=>this.handleSettingChange(i,d,c,p),onReorder:(d,c,p)=>this.handleReorder(i,d,c,p),onMoveToEnd:d=>this.handleMoveToEnd(i,d),onSelectLayout:d=>this.handleSelectLayout(i,d),onUpdateLayoutMinWidth:(d,c)=>this.handleUpdateLayoutMinWidth(i,d,c),onAddLayout:()=>this.handleAddLayout(i),onRemoveLayout:d=>this.handleRemoveLayout(i,d),onExport:()=>this.handleExport(i),onImport:()=>this.handleImport(i),onRenameInstance:(d,c)=>this.handleRenameInstance(i,d,c),onRenamePanelTitle:d=>this.handleRenamePanelTitle(i,d),onHUDOpen:()=>this.handleHUDOpen(i),onHUDClose:()=>this.handleHUDClose(i),onLayoutPanelOpen:()=>this.handleLayoutPanelOpen(i),onLayoutPanelClose:()=>this.handleLayoutPanelClose(i)});this.huds.set(i,l),l.setTargetId(i),this.ensureTriggerLayer(),this.viewportLayer.getWorldElement(this.getWorldHost()).appendChild(l.getHudElement()),this.triggerEntries.set(i,{object:t,hud:l,depth:s}),this.renderElement(i),this.refreshHUD(i),a.setEnabled(this.enabled),l.setEnabled(this.enabled),requestAnimationFrame(()=>this.scheduleTriggerSync())}onObjectDisconnected(t){let e=t.htmlElement,i=Di(e,t);this.destroyElement(i)}onResize(){for(let[t,e]of this.overlays)e.syncViewBox(),this.renderElement(t),this.refreshHUD(t);this.syncGlobalHostSize(),this.globalOverlay?.syncViewBox(),this.renderGlobal(),this.refreshGlobalHUD(),this.scheduleTriggerSync()}onScroll(){this.enabled&&(this.needsMeasure=!0)}onScrollMeasure(){if(!(!this.enabled||!this.needsMeasure)){this.collectTriggerMeasurements(),this.needsMeasure=!1;for(let[t,e]of this.triggerEntries)this.applyTriggerMeasurement(e,this.triggerMeasurements.get(t));this.hasPendingMutate=!1}}onMutate(){if(!(!this.enabled||!this.hasPendingMutate)){for(let[t,e]of this.triggerEntries)this.applyTriggerMeasurement(e,this.triggerMeasurements.get(t));this.hasPendingMutate=!1}}onDOMRebuild(){this.enabled&&this.scheduleTriggerSync()}destroy(){for(let[t]of this.overlays)this.destroyElement(t);this.destroyGlobalGrid(),this.gridManager.clear(),super.destroy()}setEnabled(t){if(this.enabled!==t){this.enabled=t;for(let e of this.overlays.values())e.setEnabled(t);for(let e of this.huds.values())e.setEnabled(t);if(this.globalOverlay?.setEnabled(t),this.globalHUD?.setEnabled(t),t||this.globalHUD?.hide(),this.applyTriggerLayerState(),t){for(let e of this.overlays.keys())this.renderElement(e);this.renderGlobal(),this.scheduleTriggerSync()}else this.hasPendingMutate=!1;this.emitDevtoolState()}}isEnabled(){return this.enabled}getDevtoolActiveState(){return this.enabled}setDevtoolActiveState(t){this.setEnabled(t)}handleAdd(t,e){this.gridManager.addInstance(t,e),this.renderElement(t),this.refreshHUD(t)}handleRemove(t,e){let i=this.gridManager.findInstance(t,e);if(i){let n=this.gridManager.getAdapter(i.type),s=this.overlays.get(t);n&&s&&s.clearInstance(e,n)}this.gridManager.removeInstance(t,e),this.refreshHUD(t)}handleToggle(t,e){this.gridManager.toggleVisibility(t,e),this.renderElement(t),this.refreshHUD(t)}handleSettingChange(t,e,i,n){this.gridManager.updateSetting(t,e,i,n),this.renderElement(t)}handleReorder(t,e,i,n){this.gridManager.reorderInstance(t,e,i,n),this.renderElement(t),this.refreshHUD(t)}handleMoveToEnd(t,e){this.gridManager.moveInstanceToEnd(t,e),this.renderElement(t),this.refreshHUD(t)}handleSelectLayout(t,e){this.gridManager.selectLayout(t,e),this.renderElement(t),this.refreshHUD(t)}handleUpdateLayoutMinWidth(t,e,i){this.gridManager.updateLayoutMinWidth(t,e,i),this.syncSelectedLayoutToViewport(t),this.renderElement(t),this.refreshHUD(t)}handleAddLayout(t){this.gridManager.addLayout(t),this.syncSelectedLayoutToViewport(t),this.renderElement(t),this.refreshHUD(t)}handleRemoveLayout(t,e){this.gridManager.removeLayout(t,e),this.syncSelectedLayoutToViewport(t),this.renderElement(t),this.refreshHUD(t)}handleRenameInstance(t,e,i){this.gridManager.renameInstance(t,e,i),this.refreshHUD(t)}handleRenamePanelTitle(t,e){this.gridManager.renamePanelTitle(t,e),this.refreshHUD(t)}handleHUDOpen(t){this.syncToResolved(t),this.renderElement(t),this.refreshHUD(t)}handleHUDClose(t){this.syncToResolved(t),this.renderElement(t),this.refreshHUD(t)}handleLayoutPanelOpen(t){this.renderElement(t),this.refreshHUD(t)}handleLayoutPanelClose(t){this.renderElement(t),this.refreshHUD(t)}handleExport(t){let e=this.gridManager.getLayouts(t),i=this.gridManager.getSelectedLayoutId(t),n=St.serialize(e,i),s=t.replace(/[^a-z0-9]/gi,"-").toLowerCase()||"element";St.toFile(`string-grid-${s}.json`,n)}handleImport(t){St.fromFile().then(e=>{let i=St.deserialize(e,this.gridManager.getAdapterRegistry());i&&(this.gridManager.replaceLayouts(t,i.layouts,i.selectedLayoutId),this.syncSelectedLayoutToViewport(t),this.renderElement(t),this.refreshHUD(t))}).catch(()=>{})}renderElement(t){if(t===_){this.renderGlobal();return}let e=this.overlays.get(t);if(!e)return;let i=this.huds.get(t),n=this.data.viewport.windowWidth||window.innerWidth,s=i?.isHUDOpen()?this.gridManager.getSelectedInstances(t):this.gridManager.getResolvedInstances(t,n);e.render(s,this.gridManager.getAdapterRegistry())}syncToResolved(t){this.syncSelectedLayoutToViewport(t)}syncSelectedLayoutToViewport(t){let e=this.data.viewport.windowWidth||window.innerWidth,i=this.gridManager.getResolvedLayoutId(t,e);this.gridManager.getSelectedLayoutId(t)!==i&&this.gridManager.selectLayout(t,i,!1)}refreshHUD(t){if(t===_){this.refreshGlobalHUD();return}let e=this.huds.get(t);if(!e)return;let i=this.data.viewport.windowWidth||window.innerWidth,n=this.gridManager.getResolvedLayoutId(t,i);e.isHUDOpen()||this.gridManager.getSelectedLayoutId(t)!==n&&this.gridManager.selectLayout(t,n,!1);let s=this.gridManager.getSelectedLayoutId(t),o=this.gridManager.getSelectedInstances(t),a=this.gridManager.getLayouts(t),l=this.gridManager.getPanelTitle(t);e.refresh(o,a,l,s,n)}ensureGlobalGrid(){if(this.globalOverlay&&this.globalHUD)return;let t=this.overlayLayer.getScreenElement(),e=document.createElement("div");e.setAttribute("data-string-grid-global-root",""),e.style.position="absolute",e.style.inset="0",e.style.pointerEvents="none",t.appendChild(e),this.globalHost=e,this.syncGlobalHostSize(),this.gridManager.load(_);let i=new fe(e,t,()=>{this.enabled&&this.renderGlobal()});this.globalOverlay=i,i.setEnabled(this.enabled),i.setPosition(0,0,e.clientWidth,e.clientHeight);let n=new ve(e,this.gridManager.getAdapterRegistry(),{onAdd:a=>this.handleAdd(_,a),onRemove:a=>this.handleRemove(_,a),onToggle:a=>this.handleToggle(_,a),onSettingChange:(a,l,d)=>this.handleSettingChange(_,a,l,d),onReorder:(a,l,d)=>this.handleReorder(_,a,l,d),onMoveToEnd:a=>this.handleMoveToEnd(_,a),onSelectLayout:a=>this.handleSelectLayout(_,a),onUpdateLayoutMinWidth:(a,l)=>this.handleUpdateLayoutMinWidth(_,a,l),onAddLayout:()=>this.handleAddLayout(_),onRemoveLayout:a=>this.handleRemoveLayout(_,a),onExport:()=>this.handleExport(_),onImport:()=>this.handleImport(_),onRenameInstance:(a,l)=>this.handleRenameInstance(_,a,l),onRenamePanelTitle:a=>this.handleRenamePanelTitle(_,a),onHUDOpen:()=>{this.syncToResolved(_),this.renderGlobal(),this.refreshGlobalHUD(),this.syncGlobalSubBadgeState()},onHUDClose:()=>{this.syncToResolved(_),this.renderGlobal(),this.refreshGlobalHUD(),this.syncGlobalSubBadgeState()},onLayoutPanelOpen:()=>this.refreshGlobalHUD(),onLayoutPanelClose:()=>this.refreshGlobalHUD()},{attachTrigger:!1});this.globalHUD=n,n.setTargetId(_),n.setEnabled(this.enabled);let s=this.viewportLayer.getScreenElement(),o=n.getHudElement();o.setAttribute("data-string-grid-global-hud",""),o.style.position="absolute",o.style.left="24px",o.style.bottom="96px",o.style.pointerEvents="auto",s.appendChild(o),n.setAnchorVisible(!0),this.renderGlobal(),this.refreshGlobalHUD()}syncGlobalHostSize(){let t=this.globalHost;if(!t)return;let e=this.data.viewport.windowWidth||window.innerWidth,i=this.data.viewport.windowHeight||window.innerHeight;t.style.width=`${e}px`,t.style.height=`${i}px`,this.globalOverlay?.setPosition(0,0,e,i)}renderGlobal(){let t=this.globalOverlay;if(!t)return;let e=this.globalHUD,i=this.data.viewport.windowWidth||window.innerWidth,n=e?.isHUDOpen()?this.gridManager.getSelectedInstances(_):this.gridManager.getResolvedInstances(_,i);t.render(n,this.gridManager.getAdapterRegistry())}refreshGlobalHUD(){let t=this.globalHUD;if(!t)return;let e=this.data.viewport.windowWidth||window.innerWidth,i=this.gridManager.getResolvedLayoutId(_,e);t.isHUDOpen()||this.gridManager.getSelectedLayoutId(_)!==i&&this.gridManager.selectLayout(_,i,!1);let n=this.gridManager.getSelectedLayoutId(_),s=this.gridManager.getSelectedInstances(_),o=this.gridManager.getLayouts(_),a=this.gridManager.getPanelTitle(_);t.refresh(s,o,a,n,i)}toggleGlobalPanel(t){this.ensureGlobalGrid(),t&&(this.globalSubBadge=t),this.positionGlobalHudAtAnchor(t),this.globalHUD?.toggle(),this.syncGlobalSubBadgeState()}syncGlobalSubBadgeState(){if(!this.globalSubBadge)return;let t=this.globalHUD?.isHUDOpen()??!1;this.globalSubBadge.setAttribute("data-active",t?"true":"false"),this.globalSubBadge.setAttribute("aria-expanded",t?"true":"false")}positionGlobalHudAtAnchor(t){if(!t||!this.globalHUD)return;let e=this.globalHUD.getHudElement(),i=this.viewportLayer.getScreenElement(),n=t.getBoundingClientRect(),s=i.getBoundingClientRect();e.style.left=`${Math.round(n.right-s.left)}px`,e.style.top=`${Math.round(n.top-s.top+28)}px`,e.style.bottom="auto",e.style.transform=""}destroyGlobalGrid(){this.globalOverlay?.destroy(),this.globalOverlay=null,this.globalHUD?.destroy(),this.globalHUD=null,this.globalHost?.remove(),this.globalHost=null}destroyElement(t){this.overlays.get(t)?.destroy(),this.overlays.delete(t),this.huds.get(t)?.destroy(),this.huds.delete(t),this.triggerEntries.delete(t),this.triggerMeasurements.delete(t),this.elementMap.get(t)?.removeAttribute("data-string-grid-root"),this.elementMap.get(t)?.removeAttribute("data-string-grid-depth"),this.elementMap.get(t)?.removeAttribute(ye),this.elementMap.get(t)?.style.removeProperty("--string-grid-stack-offset"),this.elementMap.delete(t)}ensureTriggerLayer(){this.viewportLayer.ensure(this.getWorldHost()).setAttribute("data-string-grid-trigger-layer","")}applyTriggerLayerState(){}scheduleTriggerSync(){this.ensureTriggerLayer(),this.needsMeasure=!0,this.collectTriggerMeasurements(),this.needsMeasure=!1;for(let[t,e]of this.triggerEntries)this.applyTriggerMeasurement(e,this.triggerMeasurements.get(t));this.hasPendingMutate=!1}collectTriggerMeasurements(){for(let[t,e]of this.triggerEntries)this.triggerMeasurements.set(t,this.measureTrigger(e))}measureTrigger(t){let i=t.object.htmlElement;if(!this.enabled||!i||!i.isConnected)return{visible:!1,docX:0,docY:0,stackOffsetY:0};let n=this.getViewportScrollLeft(),s=this.getViewportScrollTop(),o=i.getBoundingClientRect(),a=o.width||i.offsetWidth||i.clientWidth||0,l=o.height||i.offsetHeight||i.clientHeight||0,d=o.left+n,c=o.top+s;if(a<=0||l<=0)return{visible:!1,docX:0,docY:0,stackOffsetY:0};let p=this.data.viewport.windowHeight||window.innerHeight,g=this.data.viewport.windowWidth||window.innerWidth,h=o.left,m=o.top;if(m+l<0||m>p||h+a<0||h>g)return{visible:!1,docX:0,docY:0,stackOffsetY:0};let v=d+a,y=c,b=this.resolveTriggerStackOffset(t,v,y);return{visible:!0,docX:v,docY:y+b,stackOffsetY:b,elementDocX:d,elementDocY:c,width:a,height:l}}applyTriggerMeasurement(t,e){if(!e||!e.visible){t.hud.setAnchorVisible(!1),t.object.htmlElement.style.setProperty("--string-grid-stack-offset","0px");return}t.hud.setAnchorVisible(!0),t.object.htmlElement.style.setProperty("--string-grid-stack-offset",`${e.stackOffsetY}px`),t.hud.setAnchorPosition(e.docX,e.docY,"top-right");let i=this.overlays.get(Di(t.object.htmlElement,t.object));i&&e.elementDocX!=null&&e.elementDocY!=null&&e.width!=null&&e.height!=null&&i.setPosition(e.elementDocX,e.elementDocY,e.width,e.height)}getWorldHost(){return this.data.scroll.container??document.body??document.documentElement}getObjectDocY(t){let e=t.getProperty("start"),i=t.getProperty("size");return e!=null&&i!=null&&i>0?e:t.getProperty("layout-doc-top")??0}getViewportScrollLeft(){return this.data.scroll.elementContainer?.scrollLeft??0}getViewportScrollTop(){return this.data.scroll.elementContainer?.scrollTop??0}resolveTriggerStackOffset(t,e,i){return it.resolveCollisionOffset(t.object.htmlElement,e,i,n=>{let s=this.objectManager.all.get(n);if(!s)return null;let o=s.getProperty("layout-width")??s.htmlElement.offsetWidth??s.htmlElement.clientWidth??0;return{docX:(s.getProperty("layout-doc-left")??0)+o,docY:this.getObjectDocY(s)}})}registerBuiltInAdapters(){let t=[new Xr,new qr,new Kr,new Qr,new Zr,new Jr];for(let e of t)this.gridManager.registerAdapter(e)}registerExternalAdapters(){let t=this.settings.adapters;if(t)for(let e of t)this.gridManager.registerAdapter(e)}};Se.devtool={id:"layout",label:"Layout",icon:"layout",order:20,group:1,hotkey:{key:"L",shiftKey:!0},styles:Ln,connects:{global:!1,keys:["layout"]}};var wn=`
1364
+ /* \u2500\u2500 Ruler bars \u2500\u2500 */
1365
+ [data-string-rulers-top],
1366
+ [data-string-rulers-left] {
1367
+ position: absolute;
1368
+ z-index: 3;
1369
+ display: block;
1370
+ cursor: crosshair;
1371
+ image-rendering: pixelated;
1372
+ transition: opacity 0.15s ease;
1373
+ }
395
1374
 
396
- [data-string-devtools-overlay-badge]:hover,
397
- [data-string-devtools-overlay-badge]:focus-visible {
398
- background: rgba(255, 255, 255, 1);
399
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
400
- outline: none;
401
- }
1375
+ [data-string-rulers-top] {
1376
+ top: 0; left: 0;
1377
+ width: 100%; height: 20px;
1378
+ pointer-events: auto;
1379
+ }
402
1380
 
403
- [data-string-devtools-overlay-badge]:focus-visible {
404
- border-color: var(--string-dev-focus-color);
405
- }
1381
+ [data-string-rulers-left] {
1382
+ top: 0; left: 0;
1383
+ width: 20px; height: 100%;
1384
+ pointer-events: auto;
1385
+ }
1386
+
1387
+ /* \u2500\u2500 Corner mode toggle \u2500\u2500 */
1388
+ [data-string-rulers-corner] {
1389
+ position: absolute;
1390
+ top: 0; left: 0;
1391
+ width: 20px; height: 20px;
1392
+ z-index: 4;
1393
+ background: var(--string-dg-color-cloud-white);
1394
+ border: 1px solid var(--string-dg-color-middle-white);
1395
+ border-radius: var(--string-dg-panel-button-radius);
1396
+ box-sizing: border-box;
1397
+ display: flex;
1398
+ align-items: center;
1399
+ justify-content: center;
1400
+ pointer-events: auto;
1401
+ cursor: pointer;
1402
+ transition: opacity 0.15s ease, background 0.15s ease;
1403
+ }
1404
+
1405
+ [data-string-rulers-corner]:hover {
1406
+ background: var(--string-dg-color-grey-1);
1407
+ }
1408
+
1409
+ [data-string-rulers-corner][data-mode="center"] {
1410
+ background: var(--string-dg-color-grey-2);
1411
+ }
1412
+ [data-string-rulers-corner][data-mode="center"]:hover {
1413
+ background: var(--string-dg-color-grey-3);
1414
+ }
406
1415
 
407
- [data-string-devtools-overlay-badge][data-active="false"] {
408
- background: rgba(236, 236, 236, 0.5);
409
- border-color: rgba(236, 236, 236, 0.65);
1416
+ [data-string-rulers-corner] > span {
1417
+ font: 10px "JetBrains Mono", monospace;
1418
+ color: var(--string-dg-color-grey-6, #888888);
1419
+ white-space: nowrap;
1420
+ line-height: 1;
1421
+ pointer-events: none;
1422
+ user-select: none;
1423
+ }
1424
+
1425
+ [data-string-rulers-corner][data-mode="center"] > span {
1426
+ color: var(--string-dg-color-blue, #3B82F6);
1427
+ }
1428
+
1429
+ @media (max-width: 1024px) {
1430
+ [data-string-rulers-top] {
1431
+ height: 12px;
410
1432
  }
411
1433
 
412
- [data-string-devtools-overlay-badge] svg {
413
- width: 16px;
414
- height: 16px;
415
- display: block;
1434
+ [data-string-rulers-left] {
1435
+ width: 12px;
416
1436
  }
417
1437
 
418
- [data-string-devtools-overlay-panel] {
419
- position: absolute;
420
- top: 0;
421
- left: calc(100% + 8px);
422
- width: 208px;
423
- opacity: 0;
424
- transform: translateY(4px);
425
- pointer-events: none;
426
- transition: opacity 0.2s ease, transform 0.2s ease;
427
- z-index: 10;
1438
+ [data-string-rulers-corner] {
1439
+ width: 12px;
1440
+ height: 12px;
1441
+ border-radius: 6px;
428
1442
  }
429
1443
 
430
- [data-string-devtools-overlay-panel][data-open="true"] {
431
- opacity: 1;
432
- transform: translateY(0);
433
- pointer-events: auto;
1444
+ [data-string-rulers-corner] > span {
1445
+ font-size: 8px;
434
1446
  }
435
- `,document.head.appendChild(t),t}var Cr="string-devtools:dock",De=class{constructor(){this.entries=new Map;this.collapsed=!1;Oe(),this.preferences=this.loadPreferences(),this.injectStyles(),this.root=document.createElement("div"),this.root.setAttribute("data-string-devtools-dock",""),this.root.setAttribute("data-string-devtools-theme",""),this.root.setAttribute("data-collapsed",this.preferences.collapsed?"true":"false"),this.mainButton=this.createMainButton(),this.itemsWrap=document.createElement("div"),this.itemsWrap.setAttribute("data-string-devtools-items",""),this.fpsElement=document.createElement("div"),this.fpsElement.setAttribute("data-string-devtools-fps",""),this.fpsElement.title="Current FPS",this.fpsElement.textContent="0",this.root.appendChild(this.mainButton),this.itemsWrap.appendChild(this.fpsElement),this.root.appendChild(this.itemsWrap),(document.body??document.documentElement).appendChild(this.root),this.setCollapsed(this.preferences.collapsed,!1)}add(e){if(this.entries.has(e.id))return;this.applyStoredActiveState(e);let t=document.createElement("button");t.type="button",t.setAttribute("data-string-devtools-item",""),t.setAttribute("data-string-devtools-icon-button",""),t.setAttribute("data-devtool-id",e.id),t.setAttribute("aria-label",e.label),t.innerHTML=e.icon,t.title=e.label,t.addEventListener("click",()=>{let n=!e.getState().active;if(e.setActive(n),!e.subscribe){let s=e.getState();this.renderButton(t,e.label,s),this.persistActiveState(e.id,s.active)}});let r=e.subscribe?e.subscribe(n=>{this.renderButton(t,e.label,n),this.persistActiveState(e.id,n.active)}):null;this.entries.set(e.id,{definition:e,button:t,unsubscribe:r}),this.itemsWrap.appendChild(t),this.sortButtons();let i=e.getState();this.renderButton(t,e.label,i),this.persistActiveState(e.id,i.active)}remove(e){let t=this.entries.get(e);t&&(t.unsubscribe?.(),t.button.remove(),this.entries.delete(e))}destroy(){for(let e of this.entries.values())e.unsubscribe?.(),e.button.remove();this.entries.clear(),this.root.remove()}setFPS(e){this.fpsElement.textContent=String(Math.max(0,Math.round(e)))}sortButtons(){let e=Array.from(this.entries.values()).sort((t,r)=>{let i=t.definition.order??0,n=r.definition.order??0;return i!==n?i-n:t.definition.label.localeCompare(r.definition.label)});for(let t of e)this.itemsWrap.appendChild(t.button);this.itemsWrap.appendChild(this.fpsElement)}createMainButton(){let e=document.createElement("button");return e.type="button",e.setAttribute("data-string-devtools-main",""),e.setAttribute("data-string-devtools-icon-button",""),e.setAttribute("aria-label","Collapse developer tools"),e.innerHTML=`
436
- <span data-string-devtools-main-icon="">${Pe}</span>
437
- <span data-string-devtools-main-chevron="">${Le}</span>
438
- `,e.addEventListener("click",()=>{this.setCollapsed(!this.collapsed)}),e}setCollapsed(e,t=!0){this.collapsed=e,this.root.setAttribute("data-collapsed",e?"true":"false"),this.mainButton.setAttribute("aria-label",e?"Expand developer tools":"Collapse developer tools"),t&&(this.preferences.collapsed=e,this.savePreferences())}renderButton(e,t,r){e.setAttribute("data-active",r.active?"true":"false"),e.title=`${t}: ${r.active?"On":"Off"}`}applyStoredActiveState(e){let t=this.preferences.active[e.id];typeof t!="boolean"||t===e.getState().active||e.setActive(t)}persistActiveState(e,t){this.preferences.active[e]=t,this.savePreferences()}loadPreferences(){try{let e=localStorage.getItem(Cr);if(!e)return{collapsed:!1,active:{}};let t=JSON.parse(e);return{collapsed:t.collapsed===!0,active:t.active&&typeof t.active=="object"?t.active:{}}}catch{return{collapsed:!1,active:{}}}}savePreferences(){try{localStorage.setItem(Cr,JSON.stringify(this.preferences))}catch{}}injectStyles(){let e="string-devtools-dock-styles";if(document.getElementById(e))return;let t=document.createElement("style");t.id=e,t.textContent=`
439
- ${Ot("[data-string-devtools-dock]")}
440
-
441
- [data-string-devtools-dock] {
442
- font-family: var(--string-dev-panel-font-family);
443
- --string-devtools-dock-width: 40px;
444
- --string-devtools-main-size: 30px;
445
- --string-devtools-top-padding: 5px;
446
- --string-devtools-bottom-padding: 5px;
447
- position: fixed;
448
- left: 24px;
449
- top: calc(50% - (var(--string-devtools-top-padding) + (var(--string-devtools-main-size) / 2)));
450
- z-index: 10030;
451
- display: flex;
452
- flex-direction: column;
453
- align-items: center;
454
- width: var(--string-devtools-dock-width);
455
- min-height: 40px;
456
- padding: var(--string-devtools-top-padding) 0 var(--string-devtools-bottom-padding);
457
- box-shadow: 0 0 0 1px rgba(255, 255, 255, 1) , 0 12px 16px 0 rgba(0, 0, 0, 0.05);
458
- border-radius: 16px;
459
- background-color: rgba(255, 255, 255, 1.0);
460
-
461
- opacity: 0.5;
462
-
463
- transition:
464
- opacity 0.3s ease,
465
- box-shadow 0.3s ease;
466
- }
1447
+ }
467
1448
 
468
- [data-string-devtools-dock]:hover {
469
- opacity: 1
470
- }
1449
+ /* \u2500\u2500 Layout grid canvas \u2500\u2500 */
1450
+ [data-string-rulers-grid] {
1451
+ position: absolute;
1452
+ top: 0; left: 0;
1453
+ z-index: 1;
1454
+ pointer-events: none;
1455
+ image-rendering: pixelated;
1456
+ transition: opacity 0.15s ease;
1457
+ }
471
1458
 
472
- [data-string-devtools-main] {
473
- width: var(--string-devtools-main-size);
474
- height: var(--string-devtools-main-size);
475
- padding: 0;
476
- border: 0;
477
- background: transparent;
478
- color: #101214;
479
- display: inline-flex;
480
- align-items: center;
481
- justify-content: center;
482
- position: relative;
483
- cursor: pointer;
484
- }
1459
+ /* \u2500\u2500 Lines layer \u2500\u2500 */
1460
+ [data-string-rulers-lines] {
1461
+ position: absolute;
1462
+ top: 0;
1463
+ left: 0;
1464
+ pointer-events: none;
1465
+ z-index: 2;
1466
+ overflow: hidden;
1467
+ }
485
1468
 
486
- [data-string-devtools-main] svg {
487
- width: 22px;
488
- height: 24px;
489
- }
1469
+ /* \u2500\u2500 Guide lines \u2500\u2500 */
1470
+ [data-string-rulers-line] {
1471
+ position: absolute;
1472
+ pointer-events: auto;
1473
+ opacity: var(--string-rulers-line-opacity, 1);
1474
+ }
490
1475
 
491
- [data-string-devtools-main-icon],
492
- [data-string-devtools-main-chevron] {
493
- position: absolute;
494
- inset: 0;
495
- display: inline-flex;
496
- align-items: center;
497
- justify-content: center;
498
- transition: opacity 0.16s ease, transform 0.16s ease, color 0.16s ease;
499
- }
1476
+ [data-string-rulers-line][data-axis="horizontal"] {
1477
+ border-top: 1px solid var(--string-rulers-line-color, rgba(0, 120, 255, 0.4));
1478
+ height: 0;
1479
+ cursor: row-resize;
1480
+ }
500
1481
 
501
- [data-string-devtools-main-icon] {
502
- opacity: 1;
503
- transform: scale(1);
504
- }
1482
+ [data-string-rulers-line][data-axis="vertical"] {
1483
+ border-left: 1px solid var(--string-rulers-line-color, rgba(0, 120, 255, 0.4));
1484
+ width: 0;
1485
+ cursor: col-resize;
1486
+ }
505
1487
 
506
- [data-string-devtools-main-chevron] {
507
- opacity: 0;
508
- color: #ff5b4d;
509
- transform: scale(0.8) translateY(1px);
510
- }
1488
+ /* \u2500\u2500 Expanded hit area via ::before \u2500\u2500
1489
+ Adds 5px grab zone above/below horizontal lines,
1490
+ and 5px left/right of vertical lines \u2014 no change to visuals. */
1491
+ [data-string-rulers-line][data-axis="horizontal"]::before {
1492
+ content: '';
1493
+ display: block;
1494
+ position: absolute;
1495
+ left: 0; right: 0;
1496
+ top: -5px;
1497
+ height: 11px;
1498
+ }
511
1499
 
512
- [data-string-devtools-main-chevron] svg {
513
- width: 12px;
514
- height: 12px;
515
- }
1500
+ [data-string-rulers-line][data-axis="vertical"]::before {
1501
+ content: '';
1502
+ display: block;
1503
+ position: absolute;
1504
+ top: 0; bottom: 0;
1505
+ left: -5px;
1506
+ width: 11px;
1507
+ }
516
1508
 
517
- [data-string-devtools-dock]:not([data-collapsed="true"]) [data-string-devtools-main]:hover [data-string-devtools-main-icon] {
518
- opacity: 0;
519
- transform: scale(0.82);
520
- }
1509
+ [data-string-rulers-line]:hover {
1510
+ border-color: rgba(255, 60, 60, 0.5);
1511
+ }
521
1512
 
522
- [data-string-devtools-dock]:not([data-collapsed="true"]) [data-string-devtools-main]:hover [data-string-devtools-main-chevron] {
523
- opacity: 1;
524
- transform: scale(1);
525
- }
1513
+ /* \u2500\u2500 Coordinate label \u2500\u2500 */
1514
+ [data-string-rulers-label] {
1515
+ position: absolute;
1516
+ top: 2px; left: 24px;
1517
+ padding: 2px 2px;
1518
+ background-color: var(--string-dg-color-blue);
1519
+ color: var(--string-dg-color-white);
1520
+ font-size: var(--string-dg-font-size-xs);
1521
+ font-weight: var(--string-dg-font-medium);
1522
+ line-height: 1;
1523
+ letter-spacing: 0.04em;
1524
+ text-transform: uppercase;
1525
+ box-sizing: border-box;
1526
+ pointer-events: none;
1527
+ white-space: nowrap;
1528
+ }
526
1529
 
527
- [data-string-devtools-dock][data-collapsed="true"] [data-string-devtools-main-chevron] {
528
- transform: rotate(180deg) scale(0.8) translateY(-1px);
529
- }
1530
+ [data-string-rulers-line][data-axis="vertical"] [data-string-rulers-label] {
1531
+ top: 24px; left: 2px;
1532
+ writing-mode: vertical-lr;
1533
+ }
530
1534
 
531
- [data-string-devtools-dock][data-collapsed="true"] [data-string-devtools-main]:hover [data-string-devtools-main-icon] {
532
- opacity: 0;
533
- transform: scale(0.82);
534
- }
1535
+ /* \u2500\u2500 Snap: ELEMENT (amber) \u2500\u2500 */
1536
+ [data-string-rulers-line][data-snapping="element"][data-axis="horizontal"] {
1537
+ border-top-color: rgba(220, 120, 0, 0.5);
1538
+ }
1539
+ [data-string-rulers-line][data-snapping="element"][data-axis="vertical"] {
1540
+ border-left-color: rgba(220, 120, 0, 0.5);
1541
+ }
1542
+ [data-string-rulers-line][data-snapping="element"] [data-string-rulers-label] {
1543
+ background-color: var(--string-dg-color-amber, rgba(180, 80, 0, 0.95));
1544
+ color: var(--string-dg-color-white);
1545
+ }
535
1546
 
536
- [data-string-devtools-dock][data-collapsed="true"] [data-string-devtools-main]:hover [data-string-devtools-main-chevron] {
537
- opacity: 1;
538
- transform: rotate(180deg) scale(1);
539
- }
1547
+ /* \u2500\u2500 Snap: GRID (green) \u2500\u2500 */
1548
+ [data-string-rulers-line][data-snapping="grid"][data-axis="horizontal"] {
1549
+ border-top-color: rgba(0, 170, 80, 0.5);
1550
+ }
1551
+ [data-string-rulers-line][data-snapping="grid"][data-axis="vertical"] {
1552
+ border-left-color: rgba(0, 170, 80, 0.5);
1553
+ }
1554
+ [data-string-rulers-line][data-snapping="grid"] [data-string-rulers-label] {
1555
+ background-color: var(--string-dg-color-green, rgba(0, 130, 60, 0.95));
1556
+ color: var(--string-dg-color-white);
1557
+ }
540
1558
 
541
- [data-string-devtools-items] {
542
- width: 100%;
543
- display: flex;
544
- flex-direction: column;
545
- align-items: center;
546
- overflow: hidden;
547
- max-height: 160px;
548
- opacity: 1;
549
- transform: translateY(0);
550
- transition:
551
- margin-top 0.22s ease,
552
- max-height 0.22s ease,
553
- opacity 0.16s ease,
554
- transform 0.22s ease;
555
- }
1559
+ /* \u2500\u2500 Snap: GUIDE GAP (cyan) \u2500\u2500 */
1560
+ [data-string-rulers-line][data-snapping="guide"][data-axis="horizontal"] {
1561
+ border-top-color: rgba(0, 150, 170, 0.5);
1562
+ }
1563
+ [data-string-rulers-line][data-snapping="guide"][data-axis="vertical"] {
1564
+ border-left-color: rgba(0, 150, 170, 0.5);
1565
+ }
1566
+ [data-string-rulers-line][data-snapping="guide"] [data-string-rulers-label] {
1567
+ background-color: var(--string-dg-color-teal, rgba(0, 120, 140, 0.95));
1568
+ color: var(--string-dg-color-white);
1569
+ }
556
1570
 
557
- [data-string-devtools-dock][data-collapsed="true"] [data-string-devtools-items] {
558
- margin-top: 0;
559
- max-height: 0;
560
- opacity: 0;
561
- transform: translateY(-6px);
562
- pointer-events: none;
563
- }
1571
+ /* \u2500\u2500 Snap: COLUMN (magenta) \u2500\u2500 */
1572
+ [data-string-rulers-line][data-snapping="column"][data-axis="horizontal"] {
1573
+ border-top-color: rgba(200, 0, 100, 0.5);
1574
+ }
1575
+ [data-string-rulers-line][data-snapping="column"][data-axis="vertical"] {
1576
+ border-left-color: rgba(200, 0, 100, 0.5);
1577
+ }
1578
+ [data-string-rulers-line][data-snapping="column"] [data-string-rulers-label] {
1579
+ background-color: var(--string-dg-color-crimson, rgba(160, 0, 80, 0.95));
1580
+ color: var(--string-dg-color-white);
1581
+ }
564
1582
 
565
- [data-string-devtools-item] {
566
- width: 30px;
567
- height: 30px;
568
- padding: 0;
569
- display: inline-flex;
570
- align-items: center;
571
- justify-content: center;
572
-
573
- background-color: #ffffff;
574
- border-radius: 8px;
575
- border: 1px solid transparent;
576
-
577
- color: rgba(17, 17, 17, 0.25);
578
- cursor: pointer;
579
- transition:
580
- transform 0.15s ease,
581
- background 0.15s ease,
582
- color 0.15s ease,
583
- border-color 0.15s ease,
584
- box-shadow 0.15s ease;
585
- }
1583
+ /* \u2500\u2500 Guide-gap references \u2500\u2500 */
1584
+ [data-string-rulers-line][data-string-rulers-guide-ref][data-axis="horizontal"] {
1585
+ border-top-color: rgba(0, 150, 170, 0.35);
1586
+ }
1587
+ [data-string-rulers-line][data-string-rulers-guide-ref][data-axis="vertical"] {
1588
+ border-left-color: rgba(0, 150, 170, 0.35);
1589
+ }
586
1590
 
587
- [data-string-devtools-item] svg {
588
- width: 20px;
589
- height: 20px;
590
- }
1591
+ [data-string-rulers-gap-indicator] {
1592
+
1593
+ position: absolute;
1594
+ pointer-events: none;
1595
+ z-index: 4;
1596
+ }
591
1597
 
592
- [data-string-devtools-item]:hover {
593
-
594
- }
1598
+ [data-string-rulers-gap-indicator][data-axis="vertical"] {
1599
+ border-top: 1px dashed rgba(0, 150, 170, 0.5);
1600
+ }
595
1601
 
596
- [data-string-devtools-item][data-active="true"] {
597
- border: 1px solid rgba(255, 255, 255, 1);
598
- background-color: rgba(221, 221, 221, 0.4);
599
- color: #111111;
600
-
601
- }
1602
+ [data-string-rulers-gap-indicator][data-axis="horizontal"] {
1603
+ border-left: 1px dashed rgba(0, 150, 170, 0.5);
1604
+ }
602
1605
 
603
- [data-string-devtools-item][data-active="true"]:hover {
604
- background: rgba(17, 17, 17, 0.1);
605
- }
1606
+ [data-string-rulers-gap-indicator-label] {
1607
+ position: absolute;
1608
+ font-size: var(--string-dg-font-size-s);
1609
+ font-weight: var(--string-dg-font-medium);
1610
+ color: var(--string-dg-color-white);
1611
+ background: var(--string-dg-color-teal, rgba(0, 120, 140, 0.95));
1612
+ padding: 2px 4px;
1613
+ white-space: nowrap;
1614
+ line-height: 1;
1615
+ letter-spacing: 0.04em;
1616
+ text-transform: uppercase;
1617
+ box-sizing: border-box;
1618
+ }
606
1619
 
607
- [data-string-devtools-fps] {
608
- display: inline-flex;
609
- align-items: center;
610
- justify-content: center;
611
-
612
- width: 30px;
613
- height: 30px;
1620
+ [data-string-rulers-gap-indicator][data-axis="vertical"] [data-string-rulers-gap-indicator-label] {
1621
+ left: 50%;
1622
+ top: 50%;
1623
+ transform: translate(-50%, -50%);
1624
+ }
614
1625
 
615
- color: #111111;
616
- font-size: 16px;
617
- }
1626
+ [data-string-rulers-gap-indicator][data-axis="horizontal"] [data-string-rulers-gap-indicator-label] {
1627
+ left: 50%;
1628
+ top: 50%;
1629
+ transform: translate(-50%, -50%);
1630
+ }
618
1631
 
619
- @media (max-width: 768px) {
620
- [data-string-devtools-dock] {
621
- --string-devtools-dock-width: 66px;
622
- --string-devtools-top-padding: 10px;
623
- --string-devtools-bottom-padding: 12px;
624
- left: 12px;
625
- }
1632
+ /* \u2500\u2500 Snap target element highlight \u2500\u2500 */
1633
+ [data-string-rulers-snap-target] {
1634
+ outline: 1px dashed rgba(220, 120, 0, 0.3) !important;
1635
+ outline-offset: 0px;
1636
+ }
626
1637
 
627
- [data-string-devtools-item] {
628
- width: 44px;
629
- height: 44px;
630
- }
1638
+ /* \u2500\u2500 Ghost (preview during drag from ruler) \u2500\u2500 */
1639
+ [data-string-rulers-ghost] {
1640
+ color: var(--string-dg-color-white);
1641
+ font-size: var(--string-dg-font-size-xs);
1642
+ font-weight: var(--string-dg-font-medium);
1643
+ position: absolute;
1644
+ pointer-events: none;
1645
+ opacity: calc(var(--string-rulers-line-opacity, 1) * 0.45);
1646
+ }
631
1647
 
632
- [data-string-devtools-fps] {
633
- font-size: 20px;
634
- }
635
- }
636
- `,document.head.appendChild(t)}};var ke=class{constructor(){this.definitions=new Map;this.dock=null}register(e){!e||this.definitions.has(e.id)||(this.definitions.set(e.id,e),this.dock||(this.dock=new De),this.dock.add(e))}setFPS(e){this.dock?.setFPS(e)}destroy(){this.definitions.clear(),this.dock?.destroy(),this.dock=null}};var Ae=class extends M{constructor(e){super(e),this.htmlKey="scroller"}onObjectConnected(e){let t=e.getProperty("scroller-inited");if(t==null||t==""){e.setProperty("scroller-inited","inited");let r=i=>{this.events.emit("wheel",i)};e.setProperty("scroller-wheel-event",r),e.htmlElement.addEventListener("wheel",r)}}onObjectDisconnected(e){e.setProperty("scroller-inited",""),e.htmlElement.removeEventListener("wheel",e.getProperty("scroller-wheel-event"))}};var Ie=class extends M{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 r=t.htmlElement;getComputedStyle(r).overflowY==="visible"&&(r.style.overflowY="auto");let i={current:r.scrollTop,target:r.scrollTop,maxScroll:r.scrollHeight-r.clientHeight,velocity:0,lerp:t.getProperty("lerp")||.1,isDragging:!1,isActive:!1};this.states.set(r,i),r.addEventListener("wheel",n=>this.handleWheel(n,r,i),{passive:!1}),r.addEventListener("scroll",n=>this.onNativeScroll(n,r,i),{passive:!0}),this.measure(r,i)}onObjectDisconnected(t){this.states.delete(t.htmlElement)}onFrame(t){for(let r of this.objectsOnPage){let i=r.htmlElement,n=this.states.get(i);n&&n.isActive&&!n.isDragging&&this.updateScroll(i,n)}}onResize(){for(let t of this.objectsOnPage){let r=t.htmlElement,i=this.states.get(r);i&&this.measure(r,i)}}measure(t,r){r.maxScroll=t.scrollHeight-t.clientHeight}handleWheel(t,r,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,r,i){i.isActive||(i.current=r.scrollTop,i.target=r.scrollTop)}updateScroll(t,r){let i=r.target-r.current;Math.abs(i)<.1?(r.current=r.target,r.isActive=!1):r.current+=i*r.lerp,t.scrollTop=r.current}};function Pr(u){let e=u.match(/([^[]+)\[([\d.]+)-([\d.]+)\]/);return e?{id:e[1],start:parseFloat(e[2]),end:parseFloat(e[3])}:null}function oi(u,e,t,r,i){return r+(i-r)*(u-e)/(t-e)}var Re=class extends M{constructor(e){super(e),this.htmlKey="progress-part",this.attributesToMap=[...this.attributesToMap,{key:"part-of",type:"string",fallback:""}]}onObjectConnected(e){let t=e.getProperty("part-of"),r=Pr(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=oi(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(this.getObjectEventName(e,"object:progress-slice"),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 ai=(u,e)=>{let t=Math.min(u,e),r=Math.max(u,e);return t+Math.random()*(r-t)},li=(u,e)=>{let t=Math.ceil(Math.min(u,e)),r=Math.floor(Math.max(u,e));return r<t?t:Math.floor(Math.random()*(r-t+1))+t},ci=u=>{if(Array.isArray(u)&&u.length>=2){let e=Number(u[0]),t=Number(u[1]);if(Number.isFinite(e)&&Number.isFinite(t))return[e,t]}return typeof u=="number"&&Number.isFinite(u)?[0,u]:[0,1]},Fe=class extends M{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=ci(e.getProperty("random-number")),n=String(e.getProperty("random-type")??"float").toLowerCase()==="int"?li(r[0],r[1]):ai(r[0],r[1]);x.run(()=>{x.setVars(t,{"--random":n})})}};var He="http://www.w3.org/2000/svg",Ne=class{clear(e,t){let r=e.querySelector(`[data-grid-id="${t}"]`);r&&r.remove()}getGroup(e,t){let r=e.querySelector(`[data-grid-id="${t}"]`);return r||(r=document.createElementNS(He,"g"),r.setAttribute("data-grid-id",t),e.appendChild(r)),r}createLine(e,t,r,i,n,s,o=1){let a=document.createElementNS(He,"line");return a.setAttribute("data-string-grid-shape","line"),a.setAttribute("x1",String(e)),a.setAttribute("y1",String(t)),a.setAttribute("x2",String(r)),a.setAttribute("y2",String(i)),a.setAttribute("stroke",n),a.setAttribute("stroke-opacity",String(s)),a.setAttribute("stroke-width",String(o)),a}createRect(e,t,r,i,n,s){let o=document.createElementNS(He,"rect");return o.setAttribute("data-string-grid-shape","rect"),o.setAttribute("x",String(e)),o.setAttribute("y",String(t)),o.setAttribute("width",String(r)),o.setAttribute("height",String(i)),o.setAttribute("fill",n),o.setAttribute("fill-opacity",String(s)),o}resolveUnit(e,t,r,i){let n=parseFloat(getComputedStyle(document.documentElement).fontSize)||16,s=i instanceof Element&&parseFloat(getComputedStyle(i).fontSize)||n;switch(t){case"%":return e/100*r;case"vw":return e/100*window.innerWidth;case"vh":return e/100*window.innerHeight;case"em":return e*s;case"rem":return e*n;default:return e}}createPath(e,t,r,i=1,n="none"){let s=document.createElementNS(He,"path");return s.setAttribute("data-string-grid-shape","path"),s.setAttribute("d",e),s.setAttribute("stroke",t),s.setAttribute("stroke-opacity",String(r)),s.setAttribute("stroke-width",String(i)),s.setAttribute("fill",n),s}};var Ve=class Ve{constructor(){this.icons=new Map;this.register("main",Pe),this.register("grid",Sr),this.register("inview",xr),this.register("rulers",Er),this.register("offsets",Mr),this.register("offsets-badge",wr),this.register("progress",Tr),this.register("chevron",Le)}static getInstance(){return this.instance||(this.instance=new Ve),this.instance}register(e,t){this.icons.set(e,t)}get(e){return this.icons.get(e)??null}resolve(e){return this.icons.get(e)??e}};Ve.instance=null;var Ye=Ve;function Lr(u){return Ye.getInstance().resolve(u)}function Or(u){return typeof u=="object"&&u!==null&&"getDevtoolDefinition"in u&&typeof u.getDevtoolDefinition=="function"}function ui(){return"ontouchstart"in window||navigator.maxTouchPoints>0}var Ge=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 Se;this.devtoolsFpsLastSampleTime=0;this.devtoolsFpsFrameCount=0;this.observerContainerResize=null;this.canRebuild=!0;this.debouncedResize=br(()=>{this.queueResize(!1)},30);this.root=document.body,this.window=window,this.tools=new Gt,this.data=new ht,this.eventManager=new st,this.moduleManager=new At(this.data),this.objectManager=new Ft(this.data,this.moduleManager,this.eventManager,this.tools),this.centers=new Te,this.hoverManager=new Ce,this.devtools=new ke,this.context={events:this.eventManager,data:this.data,tools:this.tools,settings:{},centers:this.centers,hover:this.hoverManager,objectManager:this.objectManager},this.cursorController=new kt(1,this.context),this.scrollManager=new _t(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(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.updateDevtoolsFPS(e)}),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.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(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 u.i||(u.i=new u),u.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),Or(i)&&this.devtools.register(i.getDevtoolDefinition())}registerScrollMode(e,t){let r;if(typeof t=="function"&&t.prototype instanceof $){let i=t;r=new i(this.context)}else r=t(this.context);r.name||(r.name=e),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),this.observeContainerMutations(),this.use(ne);let t=window.getComputedStyle(document.documentElement).fontSize,r=parseFloat(t);this.context.data.viewport.baseRem=r,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.queueResize(!0)}onDOMChanged(){this.queueResize(!1),this.debouncedResize()}observeContainerMutations(){this.observerContainerMutation?.disconnect();let e=this.context.data.scroll.container;e&&(this.observerContainerMutation=new MutationObserver(t=>{for(let r=0;r<t.length;r++){let i=t[r];if(i.type==="attributes"&&(i.attributeName==="style"||i.attributeName==="class")){this.queueResize(!1),this.debouncedResize();break}}}),this.observerContainerMutation.observe(e,{attributes:!0,attributeFilter:["style","class"]}))}queueResize(e=!1){e&&(this.pendingResizeForce=!0),this.pendingResizeRaf==null&&(this.pendingResizeRaf=requestAnimationFrame(()=>{this.pendingResizeRaf=null;let t=this.pendingResizeForce;this.pendingResizeForce=!1,this.onResize(t)}))}onMouseMoveEvent(e){this.cursorController.onMouseMove(e),this.moduleManager.onMouseMove(e),_.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),_.measure(()=>{this.moduleManager.onScrollMeasure()}),this.lastScrollEmitted=this.data.scroll.current),_.mutate(()=>{x.begin(),this.moduleManager.onMutate(),x.commit()}),this.eventManager.emit("update",null),_.flush()}updateDevtoolsFPS(e){this.devtoolsFpsLastSampleTime===0&&(this.devtoolsFpsLastSampleTime=e),this.devtoolsFpsFrameCount+=1;let t=e-this.devtoolsFpsLastSampleTime;if(t<1e3)return;let r=this.devtoolsFpsFrameCount*1e3/t;this.devtools.setFPS(r),this.devtoolsFpsFrameCount=0,this.devtoolsFpsLastSampleTime=e}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=t.tagName==="BODY"?0: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 c=ui(),d=i>1024,p=this.prevWidth!==i,h=this.prevHeight!==n,v=Math.abs(this.prevHeight-n),m=this.context.data.viewport.contentHeight!==s,g=p||!c&&h||c&&v>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 b=window.getComputedStyle(document.documentElement).fontSize,y=parseFloat(b);if(this.context.data.viewport.baseRem=y*l,r.bottomPosition=this.context.data.viewport.contentHeight-n,(p||typeof e=="boolean"&&e)&&this.moduleManager.onResizeWidth(),g||typeof e=="boolean"&&e){let f=this.context.data.scroll.elementContainer.scrollTop;f>0&&(this.context.data.scroll.current=f,this.context.data.scroll.target=f),this.moduleManager.onResize(),this.scrollManager&&this.scrollManager.updateResponsiveMode(),this.onSettingsChange({isDesktop:d,widthChanged:p,heightChanged:h,scrollHeightChanged:m,isForceRebuild:e===!0}),this.objectManager.invalidateInviewIndex(),this.moduleManager.onScroll(),this.moduleManager.onScrollMeasure(),this.moduleManager.onFrame()}this.objectManager.checkInview()}invalidateCenter(e){this.objectManager.all.get(e)&&this.centers.invalidate(e)}scrollTo(e){let t=this.resolveScrollToValue(e);t!=null&&this.scrollManager.get().scrollTo(t.position,t.immediate)}resolveScrollToValue(e){if(typeof e=="number")return{position:e,immediate:!1};if(typeof e=="string"||e instanceof HTMLElement){let s=this.resolveElementScrollPosition(e);return s==null?null:{position:s,immediate:!1}}let t=e.immediate===!0,r=e.offset??0;if("position"in e)return{position:e.position+r,immediate:t};let i="selector"in e?e.selector:e.element,n=this.resolveElementScrollPosition(i);return n==null?null:{position:n+r,immediate:t}}resolveElementScrollPosition(e){let t=typeof e=="string"?document.querySelector(e):e;if(!(t instanceof HTMLElement))return null;let r=this.data.scroll.container??document.body??document.documentElement,i=this.data.scroll.elementContainer??document.documentElement,n=this.tools.transformNullify.process({element:t});if(r===document.body||r===document.documentElement)return n.top+i.scrollTop;let s=r.getBoundingClientRect();return n.top-s.top+r.scrollTop}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(),this.devtools.destroy()}};0&&(module.exports={CursorReactiveModule,DOMBatcher,GridAdapter,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,buildDevtoolsThemeBlock,ensureStringDevtoolsSharedStyles,frameDOM,resolveDevtoolsIcon,styleTxn});
1648
+ [data-string-rulers-ghost][data-axis="horizontal"] {
1649
+ border-top: 1px dashed var(--string-rulers-line-color, rgba(0, 120, 255, 0.4));
1650
+ height: 0;
1651
+ }
1652
+
1653
+ [data-string-rulers-ghost][data-axis="vertical"] {
1654
+ border-left: 1px dashed var(--string-rulers-line-color, rgba(0, 120, 255, 0.4));
1655
+ width: 0;
1656
+ }
1657
+
1658
+ /* Ghost snap: ELEMENT (amber) */
1659
+ [data-string-rulers-ghost][data-snapping="element"][data-axis="horizontal"] {
1660
+ border-top-style: solid;
1661
+ border-top-color: rgba(220, 120, 0, 0.5);
1662
+ opacity: 0.55;
1663
+ }
1664
+ [data-string-rulers-ghost][data-snapping="element"][data-axis="vertical"] {
1665
+ border-left-style: solid;
1666
+ border-left-color: rgba(220, 120, 0, 0.5);
1667
+ opacity: 0.55;
1668
+ }
1669
+
1670
+ /* Ghost snap: GRID (green) */
1671
+ [data-string-rulers-ghost][data-snapping="grid"][data-axis="horizontal"] {
1672
+ border-top-style: solid;
1673
+ border-top-color: rgba(0, 170, 80, 0.5);
1674
+ opacity: 0.55;
1675
+ }
1676
+ [data-string-rulers-ghost][data-snapping="grid"][data-axis="vertical"] {
1677
+ border-left-style: solid;
1678
+ border-left-color: rgba(0, 170, 80, 0.5);
1679
+ opacity: 0.55;
1680
+ }
1681
+
1682
+ /* Ghost snap: COLUMN (magenta) */
1683
+ [data-string-rulers-ghost][data-snapping="column"][data-axis="horizontal"] {
1684
+ border-top-style: solid;
1685
+ border-top-color: rgba(200, 0, 100, 0.5);
1686
+ opacity: 0.55;
1687
+ }
1688
+ [data-string-rulers-ghost][data-snapping="column"][data-axis="vertical"] {
1689
+ border-left-style: solid;
1690
+ border-left-color: rgba(200, 0, 100, 0.5);
1691
+ opacity: 0.55;
1692
+ }
1693
+
1694
+ /* Ghost snap: GUIDE GAP (cyan) */
1695
+ [data-string-rulers-ghost][data-snapping="guide"][data-axis="horizontal"] {
1696
+ border-top-style: solid;
1697
+ border-top-color: rgba(0, 150, 170, 0.5);
1698
+ opacity: 0.55;
1699
+ }
1700
+ [data-string-rulers-ghost][data-snapping="guide"][data-axis="vertical"] {
1701
+ border-left-style: solid;
1702
+ border-left-color: rgba(0, 150, 170, 0.5);
1703
+ opacity: 0.55;
1704
+ }
1705
+
1706
+ /* \u2500\u2500 Ghost coordinate label \u2500\u2500 */
1707
+ [data-string-rulers-ghost-label] {
1708
+ position: absolute;
1709
+ font-size: var(--string-dg-font-size-xs);
1710
+ font-weight: var(--string-dg-font-medium);
1711
+ color: var(--string-dg-color-white);
1712
+ background: var(--string-dg-color-blue);
1713
+ padding: 2px 4px;
1714
+ pointer-events: none;
1715
+ white-space: nowrap;
1716
+ line-height: 1;
1717
+ letter-spacing: 0.04em;
1718
+ text-transform: uppercase;
1719
+ box-sizing: border-box;
1720
+ }
1721
+
1722
+ [data-string-rulers-ghost][data-snapping="element"] [data-string-rulers-ghost-label] {
1723
+ background-color: var(--string-dg-color-amber, rgba(180, 80, 0, 0.95));
1724
+ color: var(--string-dg-color-white);
1725
+ }
1726
+ [data-string-rulers-ghost][data-snapping="grid"] [data-string-rulers-ghost-label] {
1727
+ background-color: var(--string-dg-color-green, rgba(0, 130, 60, 0.95));
1728
+ color: var(--string-dg-color-white);
1729
+ }
1730
+ [data-string-rulers-ghost][data-snapping="guide"] [data-string-rulers-ghost-label] {
1731
+ background-color: var(--string-dg-color-teal, rgba(0, 120, 140, 0.95));
1732
+ color: var(--string-dg-color-white);
1733
+ }
1734
+ [data-string-rulers-ghost][data-snapping="column"] [data-string-rulers-ghost-label] {
1735
+ background-color: var(--string-dg-color-crimson, rgba(160, 0, 80, 0.95));
1736
+ color: var(--string-dg-color-white);
1737
+ }
1738
+
1739
+ [data-axis="horizontal"] [data-string-rulers-ghost-label] {
1740
+ top: 3px; left: 24px;
1741
+ }
1742
+ [data-axis="vertical"] [data-string-rulers-ghost-label] {
1743
+ left: 3px; top: 24px;
1744
+ }
1745
+
1746
+ /* \u2500\u2500 Fixed guide lines (center cross, etc.) \u2500\u2500 */
1747
+ [data-string-rulers-fixed-line] {
1748
+ position: absolute;
1749
+ pointer-events: none;
1750
+ }
1751
+
1752
+ [data-string-rulers-fixed-line][data-axis="horizontal"] {
1753
+ border-top: 1px dashed rgba(100, 100, 100, 0.18);
1754
+ height: 0;
1755
+ }
1756
+
1757
+ [data-string-rulers-fixed-line][data-axis="vertical"] {
1758
+ border-left: 1px dashed rgba(100, 100, 100, 0.18);
1759
+ width: 0;
1760
+ }
1761
+
1762
+ /* \u2500\u2500 Hidden state \u2500\u2500 */
1763
+ [data-string-rulers-hidden] [data-string-rulers-grid],
1764
+ [data-string-rulers-hidden] [data-string-rulers-top],
1765
+ [data-string-rulers-hidden] [data-string-rulers-left],
1766
+ [data-string-rulers-hidden] [data-string-rulers-corner],
1767
+ [data-string-rulers-hidden] [data-string-rulers-lines],
1768
+ [data-string-rulers-hidden] [data-string-rulers-line],
1769
+ [data-string-rulers-hidden] [data-string-rulers-fixed-line],
1770
+ [data-string-rulers-hidden] [data-string-rulers-gap-indicator],
1771
+ [data-string-rulers-hidden] [data-string-rulers-ghost] {
1772
+ opacity: 0;
1773
+ visibility: hidden;
1774
+ pointer-events: none;
1775
+ }
1776
+ `;var eo=0;function Mn(){return`ruler-${Date.now()}-${eo++}`}var xn="string-rulers:",ei=class{constructor(){this.elementStates=new Map}stateKey(r,t="default"){return`${r}:${t}`}storageKey(r,t="default"){return st(xn+r+":"+t)}legacyStorageKey(r){return st(xn+r)}getLines(r,t="default"){return this.elementStates.get(this.stateKey(r,t))?.lines??[]}addLine(r,t,e,i,n="default",s,o){let a={id:Mn(),axis:t,position:e,targetLabel:i,targetSelector:s,targetEdge:o},l=this.stateKey(r,n),d=this.elementStates.get(l);return d||(d={elementId:r,lines:[]},this.elementStates.set(l,d)),d.lines.push(a),this.save(r,n),a}moveLine(r,t,e,i,n="default"){let s=this.findLine(r,t,n);s&&(s.position=e,s.targetLabel=i)}removeLine(r,t,e="default"){let i=this.elementStates.get(this.stateKey(r,e));i&&(i.lines=i.lines.filter(n=>n.id!==t),this.save(r,e))}removeAllLines(r,t="default"){this.elementStates.delete(this.stateKey(r,t));try{localStorage.removeItem(this.storageKey(r,t)),t==="default"&&localStorage.removeItem(this.legacyStorageKey(r))}catch{}}findLine(r,t,e="default"){return this.elementStates.get(this.stateKey(r,e))?.lines.find(i=>i.id===t)}save(r,t="default"){let e=this.elementStates.get(this.stateKey(r,t));if(e)try{let i=JSON.stringify(e.lines);localStorage.setItem(this.storageKey(r,t),i),t==="default"&&localStorage.setItem(this.legacyStorageKey(r),i)}catch{}}load(r,t="default"){let e=this.stateKey(r,t);try{let i=localStorage.getItem(this.storageKey(r,t));if(!i&&t==="default"&&(i=localStorage.getItem(this.legacyStorageKey(r))),!i)return;let n=JSON.parse(i);if(!Array.isArray(n))return;this.elementStates.set(e,{elementId:r,lines:n})}catch{}}clearElement(r){for(let[t]of this.elementStates)t.startsWith(r+":")&&this.elementStates.delete(t)}clearAll(){this.elementStates.clear()}};var ri=class{constructor(r){this.candidates=[];this.opts=r}buildCandidates(r,t,e,i=window.innerWidth,n=window.innerHeight,s=[],o,a){this.candidates=[],this.candidates.push({position:0,type:"document-origin"}),r==="horizontal"?(this.candidates.push({position:e,type:"viewport-edge"}),this.candidates.push({position:e+n,type:"viewport-edge"})):(this.candidates.push({position:t,type:"viewport-edge"}),this.candidates.push({position:t+i,type:"viewport-edge"})),this.opts.snapToElements&&this.opts.snapSelector&&document.querySelectorAll(this.opts.snapSelector).forEach(l=>{let d=l.getBoundingClientRect();d.width===0&&d.height===0||(r==="horizontal"?(this.candidates.push({position:d.top+e,type:"element-top",el:l}),this.candidates.push({position:d.bottom+e,type:"element-bottom",el:l}),this.candidates.push({position:(d.top+d.bottom)/2+e,type:"element-center-y",el:l})):(this.candidates.push({position:d.left+t,type:"element-left",el:l}),this.candidates.push({position:d.right+t,type:"element-right",el:l}),this.candidates.push({position:(d.left+d.right)/2+t,type:"element-center-x",el:l})))}),this._addLayoutGridCandidates(r,t,e,i,n),this._addGuideGapCandidates(r,s,o),a&&this.candidates.push(...a)}findSnap(r){let t=this.opts.threshold,e=null;for(let i of this.candidates){let n=Math.abs(i.position-r);n<t&&(t=n,e=i)}if(this.opts.snapStep>1){let i=Math.round(r/this.opts.snapStep)*this.opts.snapStep;if(Math.abs(i-r)<t)return{position:i,type:"grid-step"}}return e?{position:e.position,type:e.type,el:e.el,gap:e.gap,referenceLineIds:e.referenceLineIds,label:e.label}:null}snapToStep(r){return this.opts.snapStep<=1?r:Math.round(r/this.opts.snapStep)*this.opts.snapStep}_addLayoutGridCandidates(r,t,e,i,n){if(!this.opts.layoutGrids?.length)return;let s=i,o=n;for(let a of this.opts.layoutGrids){if(a.type==="columns"&&r==="vertical"){let{count:l,marginLeft:d=0,marginRight:c=0,gap:p=0}=a,g=s-d-c;if(g<=0||l<=0)continue;let h=(g-(l-1)*p)/l;this.candidates.push({position:d+t,type:"grid-column-edge"}),this.candidates.push({position:s-c+t,type:"grid-column-edge"});for(let m=0;m<l;m++){let f=d+m*(h+p),v=f+h,y=(f+v)/2;m>0&&this.candidates.push({position:f+t,type:"grid-column-edge"}),m<l-1&&this.candidates.push({position:v+t,type:"grid-column-edge"}),this.candidates.push({position:y+t,type:"grid-column-center"})}}if(a.type==="rows"&&r==="horizontal"){let{height:l,gap:d=0}=a,c=l+d;if(c<=0||l<=0)continue;let p=Math.max(0,e-200),g=e+o+200,h=Math.floor(p/c)*c;for(let m=h;m<g;m+=c)this.candidates.push({position:m,type:"grid-row-edge"}),d>0&&this.candidates.push({position:m+l,type:"grid-row-edge"})}}}_addGuideGapCandidates(r,t,e){let i=t.filter(n=>n.axis===r&&n.id!==e).slice().sort((n,s)=>n.position-s.position);if(!(i.length<2))for(let n=0;n<i.length;n++){let s=i[n],o=n>0?i[n-1]:null,a=n<i.length-1?i[n+1]:null;if(o){let l=s.position-o.position;l>0&&this.candidates.push({position:s.position+l,type:"guide-gap",gap:l,referenceLineIds:[o.id,s.id]})}if(a){let l=a.position-s.position;l>0&&this.candidates.push({position:s.position-l,type:"guide-gap",gap:l,referenceLineIds:[s.id,a.id]})}}}};var Oi=class{constructor(){this.id="default";this.cornerLabel="\u2197"}formatPosition(r){return r}getFixedLines(){return[]}},Ii=class{constructor(){this.id="center";this.cornerLabel="+"}formatPosition(r,t,e,i){let n=i+e/2;return r-n}getFixedLines(r,t,e,i){return[{axis:"horizontal",position:i+t/2},{axis:"vertical",position:e+r/2}]}},$t={default:new Oi,center:new Ii},ii=["default","center"];function Le(u,r){let t=u.currentTarget,e=u.clientX,i=u.clientY,n=u.pointerId,s=r.threshold??0,o=s===0,a=!1;try{t&&"setPointerCapture"in t&&t.setPointerCapture(n)}catch{}let l=()=>{if(!a){a=!0,document.removeEventListener("pointermove",d),document.removeEventListener("pointerup",c),document.removeEventListener("pointercancel",p),document.removeEventListener("keydown",g);try{t&&"releasePointerCapture"in t&&t.releasePointerCapture(n)}catch{}}},d=h=>{if(h.pointerId!==n)return;let m=h.clientX-e,f=h.clientY-i;if(!o){if(Math.abs(m)<s&&Math.abs(f)<s)return;o=!0}r.onMove(h,{dx:m,dy:f})},c=h=>{h.pointerId===n&&(l(),o&&r.onEnd?.(h))},p=h=>{h.pointerId===n&&(l(),r.onCancel?.())},g=h=>{h.key==="Escape"&&(l(),r.onCancel?.())};return document.addEventListener("pointermove",d),document.addEventListener("pointerup",c),document.addEventListener("pointercancel",p),document.addEventListener("keydown",g),l}var Ut=0,ni=0,jt=0,j=null,si=new Map;function ro(){let u=document.documentElement,r=document.body;return{htmlOverflow:u.style.overflow,htmlOverscrollBehavior:u.style.overscrollBehavior,htmlTouchAction:u.style.touchAction,htmlUserSelect:u.style.userSelect,htmlWebkitUserSelect:u.style.webkitUserSelect,bodyOverflow:r.style.overflow,bodyOverscrollBehavior:r.style.overscrollBehavior,bodyTouchAction:r.style.touchAction,bodyUserSelect:r.style.userSelect,bodyWebkitUserSelect:r.style.webkitUserSelect}}function io(){j||(j=ro())}function no(u){return!u||u===window||u===document?null:u}function Cn(u){u.cancelable&&u.preventDefault()}function so(u){let r=si.get(u);r?r.count+=1:si.set(u,{target:u,overflow:u.style.overflow,overscrollBehavior:u.style.overscrollBehavior,touchAction:u.style.touchAction,count:1}),u.style.overflow="hidden",u.style.overscrollBehavior="none",u.style.touchAction="none"}function oo(u){let r=si.get(u);r&&(r.count-=1,!(r.count>0)&&(u.style.overflow=r.overflow,u.style.overscrollBehavior=r.overscrollBehavior,u.style.touchAction=r.touchAction,si.delete(u)))}function ao(u){let r=document.documentElement,t=document.body;jt>0&&(r.style.userSelect="none",r.style.webkitUserSelect="none",t.style.userSelect="none",t.style.webkitUserSelect="none"),Ut>0&&(r.style.overscrollBehavior="none",r.style.touchAction="none",t.style.overscrollBehavior="none",t.style.touchAction="none",u?so(u):(ni+=1,r.style.overflow="hidden",t.style.overflow="hidden"),window.addEventListener("touchmove",Cn,{passive:!1}))}function lo(u){if(!j)return;let r=document.documentElement,t=document.body;u?oo(u):ni>0&&(ni-=1),ni===0&&(r.style.overflow=j.htmlOverflow,t.style.overflow=j.bodyOverflow),Ut===0&&(r.style.overscrollBehavior=j.htmlOverscrollBehavior,r.style.touchAction=j.htmlTouchAction,t.style.overscrollBehavior=j.bodyOverscrollBehavior,t.style.touchAction=j.bodyTouchAction,window.removeEventListener("touchmove",Cn)),jt===0&&(r.style.userSelect=j.htmlUserSelect,r.style.webkitUserSelect=j.htmlWebkitUserSelect,t.style.userSelect=j.bodyUserSelect,t.style.webkitUserSelect=j.bodyWebkitUserSelect),Ut===0&&jt===0&&(j=null)}function Tn(u={}){let r=u.scroll===!0,t=u.selection===!0,e=r?no(u.scrollTarget):null;if(!r&&!t)return()=>{};io(),r&&(Ut+=1),t&&(jt+=1),ao(e);let i=!1;return()=>{i||(i=!0,r&&(Ut=Math.max(0,Ut-1)),t&&(jt=Math.max(0,jt-1)),lo(e))}}var co=20,uo=12,Pn="#E3E3E3",An=.85,kn="#000000",Dn=.25,po="#313131",go=10,ho=`${go}px "JetBrains Mono", monospace`,mo=4,fo=-2,vo=8,bo=4,yo=5,So=2,Lo="rgba(255, 56, 96, 0.50)",Eo="rgba(255, 56, 96, 0.22)",wo="rgba(255, 56, 96, 0.05)",Mo="rgba(255, 56, 96, 0.45)",xo=8,Co=`${xo}px "JetBrains Mono", monospace`,On="rgba(0, 120, 255, 0.50)",To="rgba(0, 120, 255, 0.22)",Po="rgba(0, 120, 255, 0.05)";function oi(u,r,t,e,i,n,s){u.save(),u.globalAlpha=t,u.fillStyle=r,u.fillRect(e,i,n,s),u.restore()}function ai(u,r="x",t=window.innerWidth,e=window.innerHeight){let i=u.trim().match(/^(-?[\d.]+)\s*(px|rem|%|vw|vh)?$/);if(!i)return 0;let n=parseFloat(i[1]);switch(i[2]||"px"){case"px":return n;case"rem":return n*parseFloat(getComputedStyle(document.documentElement).fontSize);case"%":return r==="y"?n/100*e:n/100*t;case"vw":return n/100*t;case"vh":return n/100*e;default:return n}}var Ao={snapStep:0,snapToElements:!0,snapThreshold:8,snapSelector:"[string],[data-string]"},ko="rgba(255, 0, 80, 0.08)",Do="rgba(0, 120, 255, 0.06)",li=class{constructor(r,t={},e,i){this.lineEls=new Map;this.fixedLineEls=new Map;this.currentMode=$t.default;this.visible=!1;this.viewportWidth=window.innerWidth;this.viewportHeight=window.innerHeight;this.contentWidth=document.documentElement.scrollWidth;this.contentHeight=document.documentElement.scrollHeight;this.viewportOffsetX=0;this.viewportOffsetY=0;this.scrollX=0;this.scrollY=0;this.renderedScrollX=-1;this.renderedScrollY=-1;this.currentLines=[];this._snapHighlightEl=null;this._guideReferenceLineIds=null;this._guideReferenceAxis=null;this._guideReferenceGap=null;this.dragInteractionReleases=new Set;this.callbacks=r,this.options={...Ao,...t},this.host=e??null,this.viewportLayer=i,this.snapEngine=new ri({threshold:this.options.snapThreshold,snapStep:this.options.snapStep,snapToElements:this.options.snapToElements,snapSelector:this.options.snapSelector,layoutGrids:this.options.layoutGrids}),this.gridCanvas=this.createCanvas("grid"),this.topCanvas=this.createCanvas("top"),this.leftCanvas=this.createCanvas("left"),this.linesLayer=this.createLinesLayer(),this.gapIndicatorEl=this.createGapIndicator(),this.gapIndicatorLabelEl=document.createElement("span"),this.gapIndicatorLabelEl.setAttribute("data-string-rulers-gap-indicator-label",""),this.gapIndicatorLabelEl.setAttribute("data-stdg",""),this.gapIndicatorEl.appendChild(this.gapIndicatorLabelEl),this.cornerEl=document.createElement("div"),this.cornerEl.setAttribute("data-string-rulers-corner",""),this.cornerEl.setAttribute("data-mode",this.currentMode.id),this.cornerLabelEl=document.createElement("span"),this.cornerLabelEl.textContent=this.currentMode.cornerLabel,this.cornerEl.appendChild(this.cornerLabelEl),this.cornerEl.addEventListener("click",()=>this.callbacks.onModeToggle());let n=this.viewportLayer.getScreenElement(),s=this.viewportLayer.getWorldElement(e);s.appendChild(this.gridCanvas),s.appendChild(this.linesLayer),this.linesLayer.appendChild(this.gapIndicatorEl),n.appendChild(this.topCanvas),n.appendChild(this.leftCanvas),n.appendChild(this.cornerEl),document.body.setAttribute("data-string-rulers-hidden",""),this.resizeObserver=new ResizeObserver(()=>{this.visible&&this.redraw()}),this.resizeObserver.observe(document.documentElement),this.bindRulerDrag(this.topCanvas,"horizontal"),this.bindRulerDrag(this.leftCanvas,"vertical")}refresh(r){this.currentLines=r,this.redraw()}updateScroll(r,t,e,i,n,s){let o=this.viewportWidth!==e||this.viewportHeight!==i||this.contentWidth!==n||this.contentHeight!==s;if(this.scrollX=r,this.scrollY=t,this.viewportWidth=e,this.viewportHeight=i,this.contentWidth=n,this.contentHeight=s,this.syncScreenChromePosition(),!this.visible)return;let a=Math.round(r),l=Math.round(t);(o||a!==this.renderedScrollX||l!==this.renderedScrollY)&&(this.renderedScrollX=a,this.renderedScrollY=l,o&&this.syncWorldDimensions(),this.drawTopRuler(this.viewportWidth),this.drawLeftRuler(this.viewportHeight),o&&this.drawGrid(this.contentWidth,this.contentHeight)),this.updateLineLabels(),this._positionGuideReferenceIndicator(),(this.fixedLineEls.size>0||this.currentMode.id!=="default")&&this.syncFixedLines()}setVisible(r){this.visible=r,r?(document.body.removeAttribute("data-string-rulers-hidden"),this.redraw()):document.body.setAttribute("data-string-rulers-hidden","")}setMode(r){this.currentMode=r,this.cornerEl.setAttribute("data-mode",r.id),this.cornerLabelEl.textContent=r.cornerLabel,this.redraw()}destroy(){this.releaseAllDragInteractionLocks(),this._setSnapHighlight(null),this._setGuideReference(null,null,null),this.resizeObserver.disconnect(),this.gridCanvas.remove(),this.topCanvas.remove(),this.leftCanvas.remove(),this.cornerEl.remove(),this.linesLayer.remove(),document.body.removeAttribute("data-string-rulers-hidden"),this.lineEls.clear();for(let[,r]of this.fixedLineEls)r.remove();this.fixedLineEls.clear()}redraw(){this.renderedScrollX=Math.round(this.scrollX),this.renderedScrollY=Math.round(this.scrollY),this.syncScreenChromePosition(),this.syncWorldDimensions(),this.drawTopRuler(this.viewportWidth),this.drawLeftRuler(this.viewportHeight),this.drawGrid(this.contentWidth,this.contentHeight),this.syncLineEls(this.currentLines),this.syncFixedLines(),this._positionGuideReferenceIndicator()}updateLineLabels(){for(let r of this.currentLines){let t=this.lineEls.get(r.id);t&&this.updateLineLabel(r,t.labelEl)}}createCanvas(r){let t=document.createElement("canvas");return t.setAttribute(`data-string-rulers-${r}`,""),t}createLinesLayer(){let r=document.createElement("div");return r.setAttribute("data-string-rulers-lines",""),r}createGapIndicator(){let r=document.createElement("div");return r.setAttribute("data-string-rulers-gap-indicator",""),r.setAttribute("hidden",""),r}syncWorldDimensions(){this.linesLayer.style.width=`${this.contentWidth}px`,this.linesLayer.style.height=`${this.contentHeight}px`,this.gridCanvas.style.width=`${this.contentWidth}px`,this.gridCanvas.style.height=`${this.contentHeight}px`}drawGrid(r,t){let e=this.options.layoutGrids,i=this.gridCanvas;if((i.width!==r||i.height!==t)&&(i.width=r,i.height=t,i.style.width=`${r}px`,i.style.height=`${t}px`),!e?.length)return;let n=i.getContext("2d");n.clearRect(0,0,r,t);for(let s of e)s.type==="columns"&&this._drawColumnsGrid(n,this.viewportWidth,t,s),s.type==="rows"&&this._drawRowsGrid(n,this.viewportWidth,t,s)}_drawColumnsGrid(r,t,e,i){let{count:n,marginLeft:s=0,marginRight:o=0,gap:a=0}=i,l=t-s-o;if(l<=0||n<=0)return;let d=(l-(n-1)*a)/n;r.fillStyle=i.color??ko;for(let c=0;c<n;c++){let p=s+c*(d+a);r.fillRect(p,0,d,e)}}_drawRowsGrid(r,t,e,i){let{height:n,gap:s=0}=i,o=n+s;if(!(o<=0||n<=0)){r.fillStyle=i.color??Do;for(let a=0;a<e;a+=o)r.fillRect(0,a,t,n)}}drawTopRuler(r){let t=this.getRulerThickness(),e=this.topCanvas;(e.width!==r||e.height!==t)&&(e.width=r,e.height=t);let i=e.getContext("2d");i.clearRect(0,0,r,t),oi(i,Pn,An,0,0,r,t),oi(i,kn,Dn,0,t-1,r,1),this._drawColumnMarkers(i,r,t),this.drawTicks(i,r,t,"top",this.scrollX)}drawLeftRuler(r){let t=this.getRulerThickness(),e=this.leftCanvas;(e.width!==t||e.height!==r)&&(e.width=t,e.height=r);let i=e.getContext("2d");i.clearRect(0,0,t,r),oi(i,Pn,An,0,0,t,r),oi(i,kn,Dn,t-1,0,1,r),this._drawRowMarkers(i,t,r),this.drawTicks(i,r,t,"left",this.scrollY)}drawTicks(r,t,e,i,n){let{tick:s,label:o}=this.pickStep(t),a=i==="top"?"vertical":"horizontal",l=i==="top",d=this.isCompactMobileRuler(),c=!d,p=Math.round(e/2),g=Math.min(e,d?yo:vo),h=Math.min(e,d?So:bo);r.fillStyle=po,r.font=ho;let m=Math.ceil(n/s)*s,f=m-n;if(l){r.textAlign="center",r.textBaseline="top";for(let v=0;f+v*s<=t;v++){let y=Math.round(f+v*s),b=m+v*s,S=this.currentMode.formatPosition(b,a,t,n),L=Math.round(S)%o===0,M=L?g:h,x=d?0:e-M;r.fillRect(y,x,1,M),c&&L&&y>4&&r.fillText(String(Math.round(S)),y,mo)}}else{r.textAlign="center",r.textBaseline="middle";for(let v=0;f+v*s<=t;v++){let y=Math.round(f+v*s),b=m+v*s,S=this.currentMode.formatPosition(b,a,t,n),L=Math.round(S)%o===0,M=L?g:h,x=d?0:e-M;r.fillRect(x,y,M,1),c&&L&&y>4&&(r.save(),r.translate(p,y),r.rotate(-Math.PI/2),r.fillText(String(Math.round(S)),0,fo),r.restore())}}}pickStep(r){return r<300?{tick:5,label:25}:r<800?{tick:10,label:50}:r<1800?{tick:25,label:100}:{tick:50,label:500}}_resolveColumnLayout(){let r=this.options.columnLayout;if(!r||r.columns<=0)return null;let t=ai(r.margin,"x",this.viewportWidth,this.viewportHeight),e=ai(r.gap,"x",this.viewportWidth,this.viewportHeight),n=this.viewportWidth-2*t;if(n<=0)return null;let s=(n-(r.columns-1)*e)/r.columns;return s<=0?null:{columns:r.columns,marginPx:t,gapPx:e,colWidth:s}}_drawColumnMarkers(r,t,e){let i=this._resolveColumnLayout();if(!i)return;let{columns:n,marginPx:s,gapPx:o,colWidth:a}=i;r.fillStyle=wo;for(let l=0;l<n;l++){let d=s+l*(a+o);r.fillRect(d,0,a,e)}r.fillStyle=Lo;for(let l=0;l<n;l++){let d=s+l*(a+o),c=d+a;r.fillRect(Math.round(d),0,1,e),r.fillRect(Math.round(c),0,1,e)}r.fillStyle=Eo;for(let l=0;l<n;l++){let c=s+l*(a+o)+a/2;r.fillRect(Math.round(c),Math.round(e*.6),1,Math.round(e*.4))}if(!this.isCompactMobileRuler()&&a>16){r.fillStyle=Mo,r.font=Co,r.textAlign="center",r.textBaseline="middle";for(let l=0;l<n;l++){let c=s+l*(a+o)+a/2;r.fillText(String(l+1),Math.round(c),Math.round(e/2))}}}_buildColumnCandidates(r){if(r!=="vertical")return[];let t=this._resolveColumnLayout();if(!t)return[];let{columns:e,marginPx:i,gapPx:n,colWidth:s}=t,o=[];for(let a=0;a<e;a++){let l=i+a*(s+n),d=l+s,c=(l+d)/2,p=a+1;o.push({position:l+this.scrollX,type:"grid-column-edge",label:`c${p}`}),o.push({position:d+this.scrollX,type:"grid-column-edge",label:`c${p}\u25C2`}),o.push({position:c+this.scrollX,type:"grid-column-center",label:`c${p}\u2299`})}return o}_resolveRowLayout(){let r=this.options.rowLayout;if(!r)return null;let t=ai(r.size,"y",this.viewportWidth,this.viewportHeight),e=ai(r.gap,"y",this.viewportWidth,this.viewportHeight);return t<=0?null:{sizePx:t,gapPx:e,period:t+e}}_drawRowMarkers(r,t,e){let i=this._resolveRowLayout();if(!i)return;let{sizePx:n,gapPx:s,period:o}=i,a=Math.floor(this.scrollY/o)*o,l=this.scrollY+e+o;for(let d=a;d<l;d+=o){let c=Math.round(d-this.scrollY),p=Math.round(d+n-this.scrollY),g=Math.max(0,c),h=Math.min(e,p);if(h>g&&(r.fillStyle=Po,r.fillRect(0,g,t,h-g)),c>=0&&c<=e&&(r.fillStyle=On,r.fillRect(0,c,t,1)),s>0&&p>=0&&p<=e&&(r.fillStyle=On,r.fillRect(0,p,t,1)),n>4){let m=Math.round(d+n/2-this.scrollY);m>=0&&m<=e&&(r.fillStyle=To,r.fillRect(0,m,Math.round(t*.45),1))}}}_buildRowCandidates(r){if(r!=="horizontal")return[];let t=this._resolveRowLayout();if(!t)return[];let{sizePx:e,gapPx:i,period:n}=t,s=this.viewportHeight,o=Math.max(0,this.scrollY-200),a=this.scrollY+s+200,l=Math.floor(o/n)*n,d=[];for(let c=l;c<a;c+=n){let p=Math.round(c/n)+1;d.push({position:c,type:"grid-row-edge",label:`r${p}`}),d.push({position:c+e/2,type:"grid-row-edge",label:`r${p}\u2299`}),i>0&&d.push({position:c+e,type:"grid-row-edge",label:`r${p}\u25C2`})}return d}syncFixedLines(){let r=this.currentMode.getFixedLines(this.viewportWidth,this.viewportHeight,this.scrollX,this.scrollY),t=new Set;for(let e of r){let i=`fixed-${e.axis}`;t.add(i);let n=this.fixedLineEls.get(i);n||(n=document.createElement("div"),n.setAttribute("data-string-rulers-fixed-line",""),n.setAttribute("data-axis",e.axis),this.linesLayer.appendChild(n),this.fixedLineEls.set(i,n)),e.axis==="horizontal"?(n.style.top=`${e.position}px`,n.style.left="0",n.style.width=`${this.contentWidth}px`):(n.style.left=`${e.position}px`,n.style.top="0",n.style.height=`${this.contentHeight}px`)}for(let[e,i]of this.fixedLineEls)t.has(e)||(i.remove(),this.fixedLineEls.delete(e))}syncLineEls(r){for(let[t]of this.lineEls)r.some(e=>e.id===t)||(this.lineEls.get(t).el.remove(),this.lineEls.delete(t));for(let t of r)this.lineEls.has(t.id)||this.createLineEl(t),this.positionLineEl(t)}createLineEl(r){let t=document.createElement("div");t.setAttribute("data-string-rulers-line",r.id),t.setAttribute("data-axis",r.axis),t.setAttribute("data-stdg","");let e=document.createElement("span");e.setAttribute("data-string-rulers-label",""),t.appendChild(e),this.linesLayer.appendChild(t),this.lineEls.set(r.id,{el:t,labelEl:e}),t.addEventListener("pointerdown",i=>{if(i.stopPropagation(),i.button===1){i.preventDefault(),this.callbacks.onLineRemoved(r.id);return}this.startLineDrag(i,r)})}positionLineEl(r){let t=this.lineEls.get(r.id);if(!t)return;let{el:e,labelEl:i}=t;r.axis==="horizontal"?(e.style.top=`${r.position}px`,e.style.left="0",e.style.width=`${this.contentWidth}px`):(e.style.left=`${r.position}px`,e.style.top="0",e.style.height=`${this.contentHeight}px`),this.updateLineLabel(r,i)}updateLineLabel(r,t){let e=r.axis==="horizontal"?this.viewportHeight:this.viewportWidth,i=r.axis==="horizontal"?this.scrollY:this.scrollX,n=this.currentMode.formatPosition(r.position,r.axis,e,i),s=String(Math.round(n)),o=r.targetLabel?`${s} ${r.targetLabel}`:s;t.textContent!==o&&(t.textContent=o)}_setGuideReference(r,t,e){if(this._guideReferenceLineIds)for(let i of this._guideReferenceLineIds)this.lineEls.get(i)?.el.removeAttribute("data-string-rulers-guide-ref");if(this._guideReferenceAxis=r,this._guideReferenceLineIds=t,this._guideReferenceGap=e,t)for(let i of t)this.lineEls.get(i)?.el.setAttribute("data-string-rulers-guide-ref","");this._positionGuideReferenceIndicator()}_positionGuideReferenceIndicator(){let r=this._guideReferenceLineIds,t=this._guideReferenceAxis,e=this._guideReferenceGap;if(!r||!t||e==null){this.gapIndicatorEl.setAttribute("hidden",""),this.gapIndicatorEl.removeAttribute("data-axis");return}let i=r.map(o=>this.currentLines.find(a=>a.id===o)).filter(o=>!!o);if(i.length!==2){this.gapIndicatorEl.setAttribute("hidden",""),this.gapIndicatorEl.removeAttribute("data-axis");return}let n=Math.min(i[0].position,i[1].position),s=Math.max(i[0].position,i[1].position);if(this.gapIndicatorEl.removeAttribute("hidden"),this.gapIndicatorEl.setAttribute("data-axis",t),this.gapIndicatorLabelEl.textContent=`${Math.round(e)}px`,t==="vertical"){let o=Math.round(this.scrollY+Math.max(this.getRulerThickness()+32,this.viewportHeight/2));this.gapIndicatorEl.style.left=`${n}px`,this.gapIndicatorEl.style.top=`${o}px`,this.gapIndicatorEl.style.width=`${Math.max(0,s-n)}px`,this.gapIndicatorEl.style.height="0"}else{let o=Math.round(this.scrollX+Math.max(this.getRulerThickness()+32,this.viewportWidth/2));this.gapIndicatorEl.style.left=`${o}px`,this.gapIndicatorEl.style.top=`${n}px`,this.gapIndicatorEl.style.width="0",this.gapIndicatorEl.style.height=`${Math.max(0,s-n)}px`}}_setSnapHighlight(r){this._snapHighlightEl!==r&&(this._snapHighlightEl?.removeAttribute("data-string-rulers-snap-target"),this._snapHighlightEl=r,r?.setAttribute("data-string-rulers-snap-target",""))}_snapCategory(r){return r==="guide-gap"?"guide":r==="grid-column-edge"||r==="grid-column-center"?"column":r==="grid-step"||r.startsWith("grid-")?"grid":"element"}_snapLabel(r,t,e){let i=r.position??t,n=this.getViewportSizeForAxis(e),s=e==="horizontal"?this.scrollY:this.scrollX,o=String(Math.round(this.currentMode.formatPosition(i,e,n,s)));return r.type==="guide-gap"&&typeof r.gap=="number"?`${o} ${Math.round(r.gap)}px`:r.label?`${o} ${r.label}`:r.el?`${o} ${this._elementLabel(r.el)}`:o}_elementLabel(r){if(r.id)return`#${r.id}`;let t=r.classList[0];if(t)return`.${t}`;let e=r.getAttribute("string")??r.getAttribute("data-string");return e?`[${e}]`:r.tagName.toLowerCase()}_elementSelector(r){if(r.id)return`#${CSS.escape(r.id)}`;let t=r.getAttribute("string");if(t)return`[string="${CSS.escape(t)}"]`;let e=r.getAttribute("data-string");return e?`[data-string="${CSS.escape(e)}"]`:r.classList[0]?`.${CSS.escape(r.classList[0])}`:null}_resolveBinding(r){if(!r)return{};if(r.el){let t;switch(r.type){case"element-top":t="top";break;case"element-bottom":t="bottom";break;case"element-center-y":t="center-y";break;case"element-left":t="left";break;case"element-right":t="right";break;case"element-center-x":t="center-x";break}return{targetLabel:this._elementLabel(r.el),targetSelector:this._elementSelector(r.el)??void 0,targetEdge:t}}if((r.type==="grid-column-edge"||r.type==="grid-column-center")&&r.label){let t=r.label.match(/^c(\d+)(◂|⊙)?$/);if(t){let e=parseInt(t[1],10)-1,i=t[2]==="\u25C2"?"col-right":t[2]==="\u2299"?"col-center":"col-left";return{targetLabel:r.label,targetSelector:`__col:${e}`,targetEdge:i}}}return r.label?{targetLabel:r.label}:{}}recalculateBindings(r){for(let t of r){if(!t.targetSelector||!t.targetEdge)continue;if(t.targetSelector.startsWith("__col:")){let n=parseInt(t.targetSelector.slice(6),10),s=this._resolveColumnLayout();if(!s||n<0||n>=s.columns)continue;let o=s.marginPx+n*(s.colWidth+s.gapPx),a=o+s.colWidth;switch(t.targetEdge){case"col-left":t.position=o+this.scrollX;break;case"col-right":t.position=a+this.scrollX;break;case"col-center":t.position=(o+a)/2+this.scrollX;break}continue}let e=document.querySelector(t.targetSelector);if(!e)continue;let i=e.getBoundingClientRect();switch(t.targetEdge){case"top":t.position=i.top+this.scrollY;break;case"bottom":t.position=i.bottom+this.scrollY;break;case"center-y":t.position=(i.top+i.bottom)/2+this.scrollY;break;case"left":t.position=i.left+this.scrollX;break;case"right":t.position=i.right+this.scrollX;break;case"center-x":t.position=(i.left+i.right)/2+this.scrollX;break}}}bindRulerDrag(r,t){r.addEventListener("pointerdown",e=>{e.preventDefault(),this.startRulerDrag(e,t)})}startRulerDrag(r,t){let e=this.acquireDragInteractionLock(),i=document.createElement("div");i.setAttribute("data-string-rulers-ghost",""),i.setAttribute("data-axis",t);let n=document.createElement("span");n.setAttribute("data-string-rulers-ghost-label",""),n.setAttribute("data-stdg",""),i.appendChild(n),this.linesLayer.appendChild(i),this.snapEngine.buildCandidates(t,this.scrollX,this.scrollY,this.viewportWidth,this.viewportHeight,this.currentLines,void 0,[...this._buildColumnCandidates(t),...this._buildRowCandidates(t)]);let s=l=>{let d=this.resolveDocPositionFromPointer(t,l),c=l.shiftKey?null:this.snapEngine.findSnap(d),p=c?c.position:l.shiftKey?d:this.snapEngine.snapToStep(d);if(t==="horizontal"?(i.style.top=`${p}px`,i.style.left="0",i.style.width=`${this.contentWidth}px`):(i.style.left=`${p}px`,i.style.top="0",i.style.height=`${this.contentHeight}px`),c)i.setAttribute("data-snapping",this._snapCategory(c.type)),this._setSnapHighlight(c.el??null),this._setGuideReference(c.type==="guide-gap"?t:null,c.type==="guide-gap"?c.referenceLineIds??null:null,c.type==="guide-gap"?c.gap??null:null),n.textContent=this._snapLabel(c,p,t);else{i.removeAttribute("data-snapping"),this._setSnapHighlight(null),this._setGuideReference(null,null,null);let g=this.getViewportSizeForAxis(t),h=t==="horizontal"?this.scrollY:this.scrollX;n.textContent=String(Math.round(this.currentMode.formatPosition(p,t,g,h)))}},o=()=>{e(),i.remove(),this._setSnapHighlight(null),this._setGuideReference(null,null,null)};Le(r,{onMove:s,onEnd:l=>{o();let d=this.resolveViewportPointerPos(t,l);if(d>this.getRulerThickness()){let c=t==="horizontal"?d+this.scrollY:d+this.scrollX,p=l.shiftKey?null:this.snapEngine.findSnap(c),g=p?p.position:l.shiftKey?c:this.snapEngine.snapToStep(c),h=this._resolveBinding(p);this.callbacks.onLineCreated(t,g,h.targetLabel,h.targetSelector,h.targetEdge)}},onCancel:o})}startLineDrag(r,t){let e=this.acquireDragInteractionLock(),{el:i}=this.lineEls.get(t.id),n=t.axis==="horizontal"?r.clientY:r.clientX,s=t.position;this.snapEngine.buildCandidates(t.axis,this.scrollX,this.scrollY,this.viewportWidth,this.viewportHeight,this.currentLines,t.id,[...this._buildColumnCandidates(t.axis),...this._buildRowCandidates(t.axis)]);let o=d=>{let c=t.axis==="horizontal"?d.clientY-n:d.clientX-n,p=Math.max(0,s+c),g=d.shiftKey?null:this.snapEngine.findSnap(p),h=g?g.position:d.shiftKey?p:this.snapEngine.snapToStep(p);g?(i.setAttribute("data-snapping",this._snapCategory(g.type)),this._setSnapHighlight(g.el??null),this._setGuideReference(g.type==="guide-gap"?t.axis:null,g.type==="guide-gap"?g.referenceLineIds??null:null,g.type==="guide-gap"?g.gap??null:null)):(i.removeAttribute("data-snapping"),this._setSnapHighlight(null),this._setGuideReference(null,null,null)),this.callbacks.onLineMoved(t.id,h,g?.el?this._elementLabel(g.el):g?.label);let m=this.lineEls.get(t.id);if(m)if(g)m.labelEl.textContent=this._snapLabel(g,h,t.axis);else{let f=this.getViewportSizeForAxis(t.axis),v=t.axis==="horizontal"?this.scrollY:this.scrollX;m.labelEl.textContent=String(Math.round(this.currentMode.formatPosition(h,t.axis,f,v)))}},a=()=>{e(),i.removeAttribute("data-snapping"),this._setSnapHighlight(null),this._setGuideReference(null,null,null)};Le(r,{onMove:o,onEnd:d=>{a();let c=t.axis==="horizontal"?d.clientY-n:d.clientX-n,p=Math.max(0,s+c),g=d.shiftKey?null:this.snapEngine.findSnap(p),h=g?g.position:d.shiftKey?p:this.snapEngine.snapToStep(p);if((t.axis==="horizontal"?h-this.scrollY:h-this.scrollX)<=this.getRulerThickness())this.callbacks.onLineRemoved(t.id);else{let f=this._resolveBinding(g);this.callbacks.onDragCommit(t.id,h,f.targetLabel,f.targetSelector,f.targetEdge)}},onCancel:a})}syncScreenChromePosition(){let r=this.host,t=this.getRulerThickness(),e=this.viewportWidth,i=this.viewportHeight;if(!r||r===document.body||r===document.documentElement)this.viewportOffsetX=0,this.viewportOffsetY=0;else{let n=r.getBoundingClientRect();this.viewportOffsetX=Math.round(n.left),this.viewportOffsetY=Math.round(n.top),e=Math.max(0,Math.round(n.width)),i=Math.max(0,Math.round(n.height))}this.topCanvas.style.left=`${this.viewportOffsetX}px`,this.topCanvas.style.top=`${this.viewportOffsetY}px`,this.topCanvas.style.width=`${e}px`,this.topCanvas.style.height=`${t}px`,this.leftCanvas.style.left=`${this.viewportOffsetX}px`,this.leftCanvas.style.top=`${this.viewportOffsetY}px`,this.leftCanvas.style.width=`${t}px`,this.leftCanvas.style.height=`${i}px`,this.cornerEl.style.left=`${this.viewportOffsetX}px`,this.cornerEl.style.top=`${this.viewportOffsetY}px`,this.cornerEl.style.width=`${t}px`,this.cornerEl.style.height=`${t}px`}isCompactMobileRuler(){return lt(this.viewportWidth).compact}getRulerThickness(){return this.isCompactMobileRuler()?uo:co}getViewportSizeForAxis(r){return r==="horizontal"?this.viewportHeight:this.viewportWidth}resolveViewportPointerPos(r,t){let e=r==="horizontal"?t.clientY:t.clientX,i=r==="horizontal"?this.viewportOffsetY:this.viewportOffsetX;return e-i}resolveDocPositionFromPointer(r,t){let e=this.resolveViewportPointerPos(r,t);return r==="horizontal"?e+this.scrollY:e+this.scrollX}acquireDragInteractionLock(){let r=Tn({selection:!0,scroll:this.isCompactMobileRuler(),scrollTarget:this.options.scrollTarget}),t=()=>{r(),this.dragInteractionReleases.delete(t)};return this.dragInteractionReleases.add(t),t}releaseAllDragInteractionLocks(){for(let r of Array.from(this.dragInteractionReleases))r()}};var Oo="stdg",Tt=class{constructor(r){this.baseStorageKey=`${Oo}:${r.moduleId}:${r.name}`,this.defaultValue=r.default,this.validate=r.validate,this.legacyKeys=r.legacyKeys??[]}read(){let r=this.readRaw(this.storageKey);if(r!==void 0)return r;for(let t of this.legacyKeys){let e=st(t),i=this.readRaw(e);if(i!==void 0)return this.write(i),this.clearRaw(e),i}return this.defaultValue}write(r){try{localStorage.setItem(this.storageKey,JSON.stringify(r))}catch{}}clear(){this.clearRaw(this.storageKey)}get storageKey(){return st(this.baseStorageKey)}readRaw(r){let t;try{t=localStorage.getItem(r)}catch{return}if(t==null)return;let e;try{e=JSON.parse(t)}catch{return}if(this.validate){let i=this.validate(e);return i??void 0}return e}clearRaw(r){try{localStorage.removeItem(r)}catch{}}};var Ee="__string-rulers-global__",Io=[],we=class extends Z{constructor(t){super(t);this.manager=new ei;this.overlay=null;this.visible=!1;this.dockDisabled=!1;this.currentModeId="default";this.modeStore=new Tt({moduleId:"rulers",name:"mode",default:"default",validate:t=>typeof t=="string"&&t in $t?t:null,legacyKeys:["string-rulers:mode"]});this._kbHandlers=[];this._elHandlers=[];this._evHandlers=[];this.attributesToMap=[],this.viewportLayer=this.acquireViewportLayer("devtools-rulers",10020)}onInit(){this.applyStyleSettings(),this.mountOverlay()}onSettingsChange(){this.applyStyleSettings()}onSubscribe(){let t=this.settings.triggers,e=Array.isArray(t)?t:Io;this._bindTriggers(e)}onUnsubscribe(){this._unbindTriggers()}onFrame(t){!this.visible||!this.overlay||this.pushScrollToOverlay(t)}onResize(){if(!this.overlay)return;this.syncOverlayMetrics();let t=this.manager.getLines(Ee,this.currentModeId);this.overlay.recalculateBindings(t),this.manager.save(Ee,this.currentModeId),this.overlay.refresh(t)}destroy(){this._unbindTriggers(),this.overlay?.destroy(),this.overlay=null,this.manager.clearAll(),this.clearStyleSettings(),super.destroy()}toggle(){this.setVisible(!this.visible)}show(){this.setVisible(!0)}hide(){this.setVisible(!1)}clear(){this.manager.removeAllLines(Ee,this.currentModeId),this.overlay?.refresh([])}isVisible(){return this.visible}getDevtoolActiveState(){return this.visible}setDevtoolActiveState(t){this.setDockActive(t)}getDevtoolSubBadges(){return[{id:"clear-rulers",icon:"noplus",label:"Clear guides",selectorAttribute:"data-string-rulers-clear-all",onClick:()=>this.clear()}]}_bindTriggers(t){for(let e of t)if(e.type==="keyboard"){let i=n=>{n.key===e.key&&n.shiftKey===(e.shiftKey??!1)&&n.ctrlKey===(e.ctrlKey??!1)&&n.altKey===(e.altKey??!1)&&n.metaKey===(e.metaKey??!1)&&(n.preventDefault(),this._applyAction(e.action))};window.addEventListener("keydown",i),this._kbHandlers.push(i)}else if(e.type==="element"){let i=e.event??"click";for(let n of Array.from(document.querySelectorAll(e.selector))){let s=()=>this._applyAction(e.action);n.addEventListener(i,s),this._elHandlers.push({el:n,event:i,fn:s})}}else if(e.type==="event"){let i=()=>this._applyAction(e.action);this.events.on(e.name,i),this._evHandlers.push({name:e.name,fn:i})}}_unbindTriggers(){for(let t of this._kbHandlers)window.removeEventListener("keydown",t);this._kbHandlers=[];for(let{el:t,event:e,fn:i}of this._elHandlers)t.removeEventListener(e,i);this._elHandlers=[];for(let{name:t,fn:e}of this._evHandlers)this.events.off(t,e);this._evHandlers=[]}_applyAction(t="toggle"){this.dockDisabled||(t==="show"?this.show():t==="hide"?this.hide():this.toggle())}setVisible(t){t&&this.dockDisabled||this.visible!==t&&(this.visible=t,this.overlay?.setVisible(t),it.emitLayoutChange(),this.emitDevtoolState())}setDockActive(t){this.dockDisabled=!t,this.setVisible(t)}mountOverlay(){if(this.overlay)return;let t=Ee;this.currentModeId=this.modeStore.read(),this.manager.load(t,this.currentModeId);let e=this.settings,i=typeof e["rulers-snap"]=="number"?e["rulers-snap"]:0,n=typeof e["rulers-snap-elements"]=="boolean"?e["rulers-snap-elements"]:!0,s=typeof e["rulers-snap-threshold"]=="number"?e["rulers-snap-threshold"]:8,o=typeof e["rulers-snap-selector"]=="string"?e["rulers-snap-selector"]:"[string],[data-string]",a=this._resolveGrids(e.grid),l=typeof e["rulers-columns"]=="number"?e["rulers-columns"]:0,d=typeof e["rulers-margin"]=="string"?e["rulers-margin"]:"0px",c=typeof e["rulers-gap"]=="string"?e["rulers-gap"]:"0px",p=l>0?{columns:l,margin:d,gap:c}:void 0,g=typeof e["rulers-rows"]=="string"?e["rulers-rows"]:"",h=typeof e["rulers-rows-gap"]=="string"?e["rulers-rows-gap"]:"0px",m=g?{size:g,gap:h}:void 0;this.overlay=new li({onLineCreated:(f,v,y,b,S)=>{this.manager.addLine(t,f,v,y,this.currentModeId,b,S),this.overlay.refresh(this.manager.getLines(t,this.currentModeId))},onLineMoved:(f,v,y)=>{this.manager.moveLine(t,f,v,y,this.currentModeId),this.overlay.refresh(this.manager.getLines(t,this.currentModeId))},onLineRemoved:f=>{this.manager.removeLine(t,f,this.currentModeId),this.overlay.refresh(this.manager.getLines(t,this.currentModeId))},onDragCommit:(f,v,y,b,S)=>{this.manager.moveLine(t,f,v,y,this.currentModeId);let L=this.manager.findLine(t,f,this.currentModeId);L&&(L.targetSelector=b,L.targetEdge=S),this.manager.save(t,this.currentModeId),this.overlay.refresh(this.manager.getLines(t,this.currentModeId))},onModeToggle:()=>this.cycleMode()},{snapStep:i,snapToElements:n,snapThreshold:s,snapSelector:o,layoutGrids:a,columnLayout:p,rowLayout:m,scrollTarget:this.data.scroll.elementContainer},this.data.scroll.container,this.viewportLayer),this.syncOverlayMetrics(),this.overlay.setMode($t[this.currentModeId]),this.overlay.setVisible(this.visible),this.overlay.refresh(this.manager.getLines(t,this.currentModeId))}cycleMode(){let e=(ii.indexOf(this.currentModeId)+1)%ii.length;this.switchMode(ii[e])}switchMode(t){let e=Ee;this.manager.save(e,this.currentModeId),this.currentModeId=t,this.manager.load(e,t),this.overlay?.setMode($t[t]),this.overlay?.refresh(this.manager.getLines(e,t)),this.modeStore.write(t)}applyStyleSettings(){let t=this.settings,e=typeof t["rulers-color"]=="string"?t["rulers-color"]:"rgba(0, 120, 255, 0.75)",i=typeof t["rulers-opacity"]=="number"?t["rulers-opacity"]:1,n=Math.max(0,Math.min(1,i));document.documentElement.style.setProperty("--string-rulers-line-color",e),document.documentElement.style.setProperty("--string-rulers-line-opacity",String(n))}clearStyleSettings(){document.documentElement.style.removeProperty("--string-rulers-line-color"),document.documentElement.style.removeProperty("--string-rulers-line-opacity")}_resolveGrids(t){if(t){if(Array.isArray(t))return t;if(typeof t=="object")return[t]}}syncOverlayMetrics(){this.overlay&&this.pushScrollToOverlay(this.data)}pushScrollToOverlay(t){if(!this.overlay)return;let e=t.scroll.elementContainer,i=t.scroll.direction==="horizontal",n=i?e.scrollLeft:0,s=i?0:e.scrollTop;this.overlay.updateScroll(n,s,t.viewport.windowWidth,t.viewport.windowHeight,t.viewport.contentWidth,t.viewport.contentHeight)}};we.devtool={id:"rulers",label:"Rulers",icon:"ruler",order:10,group:1,hotkey:{key:"R",shiftKey:!0},styles:wn,connects:{global:!1,keys:["rulers"]}};var Ro=20,Ho=20,Bo=24,_o=24,Fo="data-string-rulers-hidden",Vo="[data-string-rulers-left]",Wo="[data-string-rulers-top]",No={top:"start",left:"start",start:"start",bottom:"end",right:"end",end:"end"};function di(u){return u?No[u.toLowerCase()]??"start":"start"}var Yt=class extends Z{constructor(t){super(t);this.entries=new Map;this.measurements=new Map;this.enabled=!1;this.needsMeasure=!1;this.hasPendingMutate=!1;this._rafId=null;this._pendingSingleIds=new Set;this.onOverlayLayoutChangeBind=()=>{this.enabled&&this.scheduleSync()};this.enabled=this.defaultEnabled}get viewportLayer(){return this._viewportLayer||(this._viewportLayer=this.acquireViewportLayer(this.layerName,this.layerZIndex)),this._viewportLayer}get badgeLayer(){return this._badgeLayer||(this._badgeLayer=this.acquireViewportLayer("devtools-badges",10030)),this._badgeLayer}get hudLayer(){return this._hudLayer||(this._hudLayer=this.acquireViewportLayer("devtools-hud",10040)),this._hudLayer}get _overlayConfig(){return this.constructor.devtool?.overlay}get overlayId(){return this._overlayConfig?.overlayId??null}get overlayBadgeCount(){return 1}get layerName(){return this._overlayConfig?.layerName??""}get layerZIndex(){return this._overlayConfig?.zIndex??10011}get layerAttribute(){return this._overlayConfig?.layerAttribute??""}get defaultEnabled(){return this._overlayConfig?.defaultEnabled??!1}onInit(){this.ensureLayer(),this.applyEnabledState(),window.addEventListener(ti,this.onOverlayLayoutChangeBind)}onObjectConnected(t){this.ensureLayer();let e=this.createOverlayEntry(t);e&&(this.entries.set(t.id,e),this.syncSlotRegistration(),this.scheduleSync())}onObjectDisconnected(t){let e=this.entries.get(t.id);e&&(this.destroyOverlayEntry(e),this.entries.delete(t.id),this.measurements.delete(t.id),this.syncSlotRegistration())}setEnabled(t){this.enabled!==t&&(this.enabled=t,t&&this.measurements.clear(),this.applyEnabledState(),this.onEnabledChange(t),this.scheduleFullSync(),this.emitDevtoolState())}isEnabled(){return this.enabled}getDevtoolActiveState(){return this.enabled}setDevtoolActiveState(t){this.setEnabled(t)}onEnabledChange(t){}onScroll(){this.enabled&&(this.needsMeasure=!0)}onScrollMeasure(){!this.enabled||!this.needsMeasure||(this.collectMeasurements(),this.needsMeasure=!1,this.flushMeasurements(),this.hasPendingMutate=!1)}onMutate(){!this.enabled||!this.hasPendingMutate||(this.flushMeasurements(),this.hasPendingMutate=!1)}onResize(){this.enabled&&this.scheduleSync()}onDOMRebuild(){this.enabled&&this.scheduleSync()}scheduleFullSync(){this.ensureLayer(),this._pendingSingleIds.clear(),this._rafId!==null&&(cancelAnimationFrame(this._rafId),this._rafId=null),this.needsMeasure=!0,this.collectMeasurements(),this.needsMeasure=!1,this.flushMeasurements(),this.hasPendingMutate=!1}scheduleSync(){this.enabled&&(this._pendingSingleIds.clear(),this._rafId===null&&(this._rafId=requestAnimationFrame(()=>{this._rafId=null,this.enabled&&(this.ensureLayer(),this.collectMeasurements(),this.flushMeasurements())})))}scheduleSingleSync(t){if(!this.enabled)return;let e=t.object?.id??t.targetId;if(!e){this.scheduleSync();return}this._pendingSingleIds.add(e),this._rafId===null&&(this._rafId=requestAnimationFrame(()=>{if(this._rafId=null,!this.enabled)return;this.ensureLayer();let i=this._pendingSingleIds;this._pendingSingleIds=new Set;let n=[];for(let s of i){let o=this.entries.get(s);if(!o)continue;let a=this.computeBaseMetrics(o),l=this.measureEntry(o,a);this.measurements.set(s,l),n.push(o)}E.run(()=>{for(let s of n){let o=s.object?.id??s.targetId;o&&this.applyMeasurement(s,this.measurements.get(o))}})}))}collectMeasurements(){this.ensureLayer();for(let[t,e]of this.entries){let i=this.computeBaseMetrics(e);this.measurements.set(t,this.measureEntry(e,i))}}flushMeasurements(){E.run(()=>{for(let[t,e]of this.entries)this.applyMeasurement(e,this.measurements.get(t))})}ensureLayer(){let t=this.viewportLayer.ensure(this.getWorldHost());return this.layerAttribute&&t.setAttribute(this.layerAttribute,""),t}applyEnabledState(){let t=this.viewportLayer.getElement();t&&(t.setAttribute("data-enabled",this.enabled?"true":"false"),this.layerAttribute&&(this.enabled?t.setAttribute(this.layerAttribute,""):t.removeAttribute(this.layerAttribute)),this.syncSlotRegistration())}syncSlotRegistration(){if(!this.overlayId)return;this.enabled&&this.entries.size>0?it.register(this.overlayId,this.devtoolConfig?.order??0,this.overlayBadgeCount):it.unregister(this.overlayId),it.emitLayoutChange()}resolveOverlayTargetId(t){return t.htmlElement.id||t.id}resolveOverlayObjectDepth(t){let e=0,i=t.parentElement;for(;i;)(i.hasAttribute("string-id")||i.hasAttribute("data-string-id"))&&(e+=1),i=i.parentElement;return e}createOverlayBadge(t){let e=document.createElement("button");return e.type="button",e.setAttribute("data-stdg-button",""),e.setAttribute("data-stdg-button-icon-16",""),e.setAttribute("data-string-devtools-overlay-badge",""),e.setAttribute("data-target-id",t.targetId),t.selectorAttribute&&e.setAttribute(t.selectorAttribute,""),t.depth!=null&&e.setAttribute("data-depth",String(t.depth)),this.applyOverlayBadgeState(e,{attributes:t.attributes}),e}applyOverlayBadgeState(t,e){if(e.visible!=null&&t.setAttribute("data-visible",e.visible?"true":"false"),e.active!=null&&t.setAttribute("data-active",e.active?"true":"false"),e.disabled!=null&&t instanceof HTMLButtonElement&&(t.disabled=e.disabled),e.title!=null&&(t.title=e.title),e.html!=null){let i=t.querySelector("[data-stdg-badge-label]");t.innerHTML=e.html,i&&t.appendChild(i)}if(e.label!==void 0){let i=t.querySelector("[data-stdg-badge-label]");e.label===null||e.label===""?i?.remove():(i||(i=document.createElement("span"),i.setAttribute("data-stdg-badge-label",""),t.appendChild(i)),i.textContent!==e.label&&(i.textContent=e.label))}if(e.attributes)for(let[i,n]of Object.entries(e.attributes)){if(n==null){t.removeAttribute(i);continue}if(typeof n=="boolean"){t.setAttribute(i,n?"true":"false");continue}t.setAttribute(i,String(n))}}applyOverlayBadgePosition(t,e){if(!e){t.setAttribute("data-visible","false");return}t.setAttribute("data-visible",e.visible?"true":"false"),e.visible&&E.setProps(t,{transform:`translate3d(${Math.round(e.docX)}px, ${Math.round(e.docY)}px, 0)${e.translate?` ${e.translate}`:""}`})}getOverlayTargetLabel(t){let e=t.htmlElement,i=e.getAttribute("id")?.trim();if(i)return`#${i}`;let n=e.getAttribute("class")?.trim();if(n){let o=n.split(/\s+/).filter(Boolean).map(a=>`.${a}`).join("");if(o)return o}let s=e.getAttribute("string-id")?.trim()||e.getAttribute("data-string-id")?.trim();return s||t.id||"<unnamed>"}getViewportAnchorOffset(t,e){return t==="end"?e.viewportPrimarySize:0}getOverlayAnchorAdjustment(t,e,i){return{docX:0,docY:0}}resolveRulerPanelOffset(t,e){if(typeof document>"u")return{x:0,y:0};if(document.body.hasAttribute(Fo))return{x:0,y:0};let i=this.getViewportScrollLeft(),n=this.getViewportScrollTop(),s=document.querySelector(Vo)&&t-i<Ro?Bo:0,o=document.querySelector(Wo)&&e-n<Ho?_o:0;return{x:s,y:o}}computeBaseMetrics(t){let e=t.object,i=e.htmlElement;if(!this.enabled||!i||!i.isConnected)return this.getHiddenMetrics();let n=this.resolveOverlayObjectGeometry(e,i),{contentX:s,contentY:o,width:a,height:l}=n;if(a<=0||l<=0)return this.getHiddenMetrics();let d=this.data.viewport.windowHeight||window.innerHeight,c=this.data.viewport.windowWidth||window.innerWidth,p=this.getViewportScrollLeft(),g=this.getViewportScrollTop(),h=s-p,m=o-g,f=m+l<0||m>d||h+a<0||h>c;if(f)return this.getHiddenMetrics();let v=s,y=o,b=0;if(this.overlayId){let w=new Map,R=A=>{if(!this.overlayId)return null;if(!this.entries.get(A.id)||this.measurements.get(A.id)?.visible===!1)return w.set(A.id,null),null;let T=w.get(A.id);if(T!==void 0)return T;let P=A.htmlElement;if(!P)return w.set(A.id,null),null;let H=this.resolveOverlayObjectGeometry(A,P),B=H.contentX,W=H.contentY,G=H.width,N=H.height,X=it.resolveAnchor(this.overlayId,B,W),ot=this.getOverlayAnchorAdjustment(A,X,{contentX:B,contentY:W,width:G,height:N}),wt=this.resolveRulerPanelOffset(B,W),at=X.docX+ot.docX+wt.x,ut=X.docY+ot.docY+wt.y,Pt=it.resolveCollisionOffset(P,at,ut,q=>{let pt=this.objectManager.all.get(q);if(!pt)return null;let Te=R(pt)?.effective;return Te||{docX:at,docY:this.resolveOverlayObjectGeometry(pt).contentY}}),O={base:{docX:at,docY:ut},effective:{docX:at,docY:ut+Pt}};return w.set(A.id,O),O},k=R(e);k&&(v=k.base.docX,y=k.base.docY,b=k.effective.docY-k.base.docY)}let S=this.data.scroll.direction==="horizontal"?"x":"y";return{visible:!0,contentX:s,contentY:o,width:a,height:l,isOffscreen:f,baseAnchorX:v,baseAnchorY:y,collisionOffset:b,axis:S,primarySize:S==="y"?l:a,crossSize:S==="y"?a:l,primaryContentOffset:S==="y"?o:s,viewportPrimarySize:S==="y"?d:c}}getHiddenMetrics(){return{visible:!1,contentX:0,contentY:0,width:0,height:0,isOffscreen:!0,baseAnchorX:0,baseAnchorY:0,collisionOffset:0,axis:this.data.scroll.direction==="horizontal"?"x":"y",primarySize:0,crossSize:0,primaryContentOffset:0,viewportPrimarySize:0}}getObjectDocY(t){let e=t.getProperty("start"),i=t.getProperty("size");return e!=null&&i!=null&&i>0?e:t.getProperty("layout-doc-top")??0}resolveOverlayObjectGeometry(t,e=t.htmlElement){let i=e.getBoundingClientRect(),n=this.resolveLiveElementMetrics(e,i),s=n.width||(t.getProperty("layout-width")??(t.getProperty("half-width")??0)*2)||e.offsetWidth||e.clientWidth||0,o=t.getProperty("size"),a=n.height||(t.getProperty("layout-height")??(t.getProperty("half-height")??0)*2)||e.offsetHeight||e.clientHeight||0;return{contentX:n.docLeft??t.getProperty("layout-doc-left")??0,contentY:n.docTop??this.getObjectDocY(t),width:s,height:o!=null&&o>0?o:a}}getViewportScrollLeft(){return this.data.scroll.elementContainer?.scrollLeft??0}getViewportScrollTop(){return this.data.scroll.elementContainer?.scrollTop??0}resolveLiveElementMetrics(t,e){let i=e.width||t.offsetWidth||t.clientWidth||0,n=e.height||t.offsetHeight||t.clientHeight||0,s=this.getWorldHost(),o=this.data.scroll.elementContainer;if(!(i>0)||!(n>0))return{width:i,height:n};if(s===document.body||s===document.documentElement)return{docLeft:e.left+(o?.scrollLeft??window.scrollX??0),docTop:e.top+(o?.scrollTop??window.scrollY??0),width:i,height:n};let a=s.getBoundingClientRect();return{docLeft:e.left-a.left+s.scrollLeft,docTop:e.top-a.top+s.scrollTop,width:i,height:n}}destroy(){this.overlayId&&it.unregister(this.overlayId),window.removeEventListener(ti,this.onOverlayLayoutChangeBind);for(let t of this.entries.values())this.destroyOverlayEntry(t);this.entries.clear(),this.measurements.clear(),super.destroy()}};var zo=31,ci=class extends Yt{get badgeAttribute(){return this.constructor.devtool?.overlay?.badgeAttribute??""}createOverlayEntry(r){let t=this.resolveOverlayTargetId(r),e=this.resolveBadgeDepth(r),i=[],n={object:r,targetId:t,badge:document.createElement("button"),depth:e,extra:void 0,cleanup:i,badges:new Map,groups:new Map},s=this.getBadgeDescriptors(r,t,e),o=this.badgeLayer.getWorldElement(this.getWorldHost());for(let d of s){let c=this.createOverlayBadge({targetId:t,selectorAttribute:d.selectorAttribute,depth:d.depth??e,attributes:{"data-badge-id":d.id,...d.attributes}}),p={id:d.id,descriptor:d,element:c};c.setAttribute("data-visible","false");let g=h=>{h.stopPropagation(),h.preventDefault(),this.onBadgeClick(n,h,p)};if(c.addEventListener("click",g),i.push(()=>c.removeEventListener("click",g)),n.badges.set(d.id,p),d.group){let h=n.groups.get(d.group);h||(h=_t(t),n.groups.set(d.group,h),o.appendChild(h)),h.appendChild(c)}else o.appendChild(c)}let a=n.badges.values().next().value;if(!a)throw new Error(`${this.constructor.name} must define at least one badge descriptor.`);n.badge=a.element,n.extra=this.createBadgeExtra(r,n.badge,t,e);let l=this.bindBadge(n);return l&&i.push(...l),this.applyBadgeEnabledState(n),this.renderBadge(n),n}destroyOverlayEntry(r){for(let t of r.cleanup)t();this.destroyBadgeExtra(r);for(let t of r.groups.values())t.remove();for(let t of r.badges.values())t.descriptor.group||t.element.remove()}measureEntry(r,t){let e={};if(!t.visible){for(let s of r.badges.values())e[s.id]={visible:!1,docX:0,docY:0};return{visible:!1,badges:e}}let i=new Map,n=new Set;for(let s of r.badges.values()){let o=s.descriptor.slot??"top-left";i.has(o)||i.set(o,[]);let a=i.get(o);if(s.descriptor.group){let l=s.descriptor.group;n.has(l)||(n.add(l),a.push({kind:"group",groupId:l,badges:[]})),a.find(c=>c.kind==="group"&&c.groupId===l)?.badges.push(s)}else a.push({kind:"badge",badge:s})}for(let[s,o]of i)for(let a=0;a<o.length;a+=1){let l=o[a],d=l.kind==="badge"?l.badge:l.badges[0],c=this.resolveBadgeSlotConfig(d.descriptor),p=zo+(c.gap??0),g=c.offsetX??0,h=c.offsetY??0,m=this.resolveBadgePosition(t,s,a,p,g,h);if(l.kind==="badge")e[l.badge.id]=m;else for(let f of l.badges)e[f.id]=m}return{visible:!0,badges:e}}applyMeasurement(r,t){let e=new Set;for(let i of r.badges.values()){let n=i.descriptor.group;if(!n||e.has(n))continue;e.add(n);let s=r.groups.get(n);s&&this.applyOverlayBadgePosition(s,t?.badges[i.id])}for(let i of r.badges.values())if(i.descriptor.group){let n=t?.badges[i.id];i.element.setAttribute("data-visible",n?.visible?"true":"false")}else this.applyOverlayBadgePosition(i.element,t?.badges[i.id]);this.afterBadgeMeasurement(r,t)}onEnabledChange(r){for(let t of this.entries.values())this.applyBadgeEnabledState(t),this.renderBadge(t)}createBadgeExtra(r,t,e,i){}destroyBadgeExtra(r){}bindBadge(r){}resolveBadgeDepth(r){return this.resolveOverlayObjectDepth(r.htmlElement)}getBadgeSlotConfig(){return{}}getBadgeDescriptors(r,t,e){return[{id:"primary",slot:"top-left",selectorAttribute:this.badgeAttribute,attributes:this.getInitialBadgeAttributes(r,t,e)}]}getInitialBadgeAttributes(r,t,e){}applyBadgeEnabledState(r){for(let t of r.badges.values())this.applyOverlayBadgeState(t.element,{disabled:!this.enabled,attributes:{"data-module-enabled":this.enabled}});for(let t of r.groups.values())t.setAttribute("data-module-enabled",this.enabled?"true":"false")}renderBadge(r){for(let t of r.badges.values())this.applyOverlayBadgeState(t.element,this.getBadgeState(r,t))}afterBadgeMeasurement(r,t){}resolveBadgeSlotConfig(r){let t=r.slot??"top-left",e=this.getBadgeSlotConfig()[t]??{};return{gap:r.gap??e.gap??0,offsetX:r.offsetX??e.offsetX??0,offsetY:r.offsetY??e.offsetY??0}}resolveBadgePosition(r,t,e,i,n,s){let o=r.baseAnchorX-r.contentX,a=r.baseAnchorY-r.contentY+r.collisionOffset,l=r.contentX+o,d=r.contentX+r.width+o,c=r.contentY+a,p=r.contentY+r.height+a;switch(t){case"top-right":return{visible:!0,docX:d-e*i+n,docY:c+s,translate:"translate(-100%, 0%)"};case"bottom-right":return{visible:!0,docX:d-e*i+n,docY:p+s,translate:"translate(-100%, -100%)"};case"bottom-left":return{visible:!0,docX:l+e*i+n,docY:p+s,translate:"translate(0%, -100%)"};case"top-left":default:return{visible:!0,docX:l+e*i+n,docY:c+s,translate:"translate(0%, 0%)"}}}};var In=`
1777
+ [data-string-inview-layer] {
1778
+
1779
+ }
1780
+
1781
+ [data-string-offset-outline] {
1782
+ position: absolute;
1783
+ top: 0;
1784
+ left: 0;
1785
+ pointer-events: none;
1786
+ box-sizing: border-box;
1787
+ // --string-inview-enter-line: rgb(125, 125, 125);
1788
+ // border: 1px dashed var(--string-inview-enter-line);
1789
+ background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%23333' stroke-width='1' stroke-dasharray='2%2c 8' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e");
1790
+ will-change: transform, width, height;
1791
+ }
1792
+
1793
+ [data-string-offset-outline][data-visible="false"] {
1794
+ display: none;
1795
+ }
1796
+
1797
+ [data-string-offset-outline][data-inview="true"] {
1798
+ border-color: var(--string-inview-enter-line);
1799
+ }
1800
+
1801
+ [data-string-offset-connector] {
1802
+ position: absolute;
1803
+ top: 0;
1804
+ left: 0;
1805
+ pointer-events: auto;
1806
+ will-change: transform, width, height;
1807
+ cursor: col-resize;
1808
+ user-select: none;
1809
+ touch-action: none;
1810
+ }
1811
+
1812
+ [data-string-offset-connector][data-pointer="coarse"] {
1813
+ width: 22px !important;
1814
+ margin-left: -4px;
1815
+ }
1816
+
1817
+ [data-string-offset-connector]::before {
1818
+ content: "";
1819
+ position: absolute;
1820
+ top: 0;
1821
+ bottom: 0;
1822
+ left: 50%;
1823
+ width: 1px;
1824
+ pointer-events: none;
1825
+ background-repeat: repeat-y;
1826
+ background-position: center top;
1827
+ background-size: 1px 10px;
1828
+ }
1829
+
1830
+ [data-string-offset-connector][data-visible="false"] {
1831
+ display: none;
1832
+ }
1833
+
1834
+ [data-string-offset-connector="enter"] {
1835
+ color: var(--string-dg-color-blue);
1836
+ }
1837
+
1838
+ [data-string-offset-connector="enter"]::before {
1839
+ background-image: url("data:image/svg+xml,%3csvg width='1' height='10' viewBox='0 0 1 10' xmlns='http://www.w3.org/2000/svg'%3e%3cline x1='0.5' y1='0' x2='0.5' y2='10' stroke='%231f7dff' stroke-width='1' stroke-dasharray='2%2c4' stroke-linecap='square'/%3e%3c/svg%3e");
1840
+ }
1841
+
1842
+ [data-string-offset-connector="exit"] {
1843
+ color: var(--string-dg-color-red);
1844
+ }
1845
+
1846
+ [data-string-offset-connector="exit"]::before {
1847
+ background-image: url("data:image/svg+xml,%3csvg width='1' height='10' viewBox='0 0 1 10' xmlns='http://www.w3.org/2000/svg'%3e%3cline x1='0.5' y1='0' x2='0.5' y2='10' stroke='%23e63f3f' stroke-width='1' stroke-dasharray='2%2c4' stroke-linecap='square'/%3e%3c/svg%3e");
1848
+ }
1849
+
1850
+ [data-string-offset-edge-marker] {
1851
+ position: absolute;
1852
+ top: 0;
1853
+ left: 0;
1854
+ display: inline-flex;
1855
+ align-items: center;
1856
+ gap: 4px;
1857
+ pointer-events: auto;
1858
+ z-index: 1;
1859
+ padding: 2px 4px;
1860
+ border-radius: 0;
1861
+ font-size: 8px;
1862
+ line-height: 1;
1863
+ font-weight: 500;
1864
+ letter-spacing: 0.04em;
1865
+ text-transform: uppercase;
1866
+ white-space: nowrap;
1867
+ will-change: transform;
1868
+ box-shadow: none;
1869
+ cursor: col-resize;
1870
+ user-select: none;
1871
+ touch-action: none;
1872
+
1873
+ }
1874
+
1875
+ [data-string-offset-edge-marker][data-pointer="coarse"]::before {
1876
+ content: "";
1877
+ position: absolute;
1878
+ inset: -10px;
1879
+ }
1880
+
1881
+ [data-string-offset-edge-marker-label] {
1882
+ display: inline-flex;
1883
+ align-items: center;
1884
+ justify-content: center;
1885
+ min-height: 8px;
1886
+ }
1887
+
1888
+ [data-string-offset-edge-marker]::after {
1889
+ content: "";
1890
+ display: inline-block;
1891
+ width: 9px;
1892
+ height: 5px;
1893
+ border: 1px solid white;
1894
+ border-radius: 2px;
1895
+ }
1896
+
1897
+ [data-string-offset-edge-marker][data-viewport-anchor="top"]::after {
1898
+ border-top-width: 3px;
1899
+ }
1900
+ [data-string-offset-edge-marker][data-viewport-anchor="bottom"]::after {
1901
+ border-bottom-width: 3px;
1902
+ }
1903
+
1904
+ [data-string-offset-edge-marker][data-visible="false"] {
1905
+ display: none;
1906
+ }
1907
+
1908
+ [data-string-offset-edge-marker="enter"] {
1909
+ color: var(--string-dg-color-white);
1910
+ background: var(--string-dg-color-blue);
1911
+ padding-right: 10px;
1912
+ clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 100%, 0 100%);
1913
+ }
1914
+
1915
+ [data-string-offset-edge-marker="enter"][data-flip-y="true"] {
1916
+ clip-path: polygon(0 0, 100% 0, calc(100% - 10px) 100%, 0 100%);
1917
+ }
1918
+
1919
+ [data-string-offset-edge-marker="exit"] {
1920
+ color: var(--string-dg-color-white);
1921
+ background: var(--string-dg-color-red);
1922
+ padding-left: 10px;
1923
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 10px 100%);
1924
+ }
1925
+
1926
+ [data-string-offset-edge-marker="exit"][data-flip-y="true"] {
1927
+ clip-path: polygon(10px 0, 100% 0, 100% 100%, 0 100%);
1928
+ }
1929
+
1930
+ [data-string-offset-edge-marker][data-compact="true"] {
1931
+ gap: 3px;
1932
+ padding-top: 1px;
1933
+ padding-bottom: 1px;
1934
+ font-size: 7px;
1935
+ }
1936
+
1937
+ [data-string-offset-edge-marker][data-compact="true"]::after {
1938
+ width: 7px;
1939
+ height: 4px;
1940
+ }
1941
+
1942
+ [data-string-offset-edge-marker="enter"][data-compact="true"] {
1943
+ padding-right: 7px;
1944
+ clip-path: polygon(0 0, calc(100% - 7px) 0, 100% 100%, 0 100%);
1945
+ }
1946
+
1947
+ [data-string-offset-edge-marker="enter"][data-compact="true"][data-flip-y="true"] {
1948
+ clip-path: polygon(0 0, 100% 0, calc(100% - 7px) 100%, 0 100%);
1949
+ }
1950
+
1951
+ [data-string-offset-edge-marker="exit"][data-compact="true"] {
1952
+ padding-left: 7px;
1953
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 7px 100%);
1954
+ }
1955
+
1956
+ [data-string-offset-edge-marker="exit"][data-compact="true"][data-flip-y="true"] {
1957
+ clip-path: polygon(7px 0, 100% 0, 100% 100%, 0 100%);
1958
+ }
1959
+ `;var Et=1,Rn=4,Hn=4,Go=64,$o=16,ui=14;function Me(u,r){return`translate3d(${Math.round(u)}px, ${Math.round(r)}px, 0)`}function Ri(u){return Math.min(100,Math.max(0,u))}function Bn(u,r,t){return Math.min(t,Math.max(r,u))}var Uo={outlineDocX:0,outlineDocY:0,outlineWidth:0,outlineHeight:0,enterConnectorDocX:0,enterConnectorDocY:0,enterConnectorWidth:0,enterConnectorHeight:0,exitConnectorDocX:0,exitConnectorDocY:0,exitConnectorWidth:0,exitConnectorHeight:0,enterMarkerDocX:0,enterMarkerDocY:0,enterMarkerFlippedY:!1,exitMarkerDocX:0,exitMarkerDocY:0,exitMarkerFlippedY:!1},xe=class extends ci{constructor(){super(...arguments);this.entryEnabled=new Map;this.markerSizeCache=new WeakMap;this.disabledStore=new Tt({moduleId:"inview",name:"disabled-targets",default:[],validate:t=>Array.isArray(t)?t.filter(e=>typeof e=="string"):null,legacyKeys:["string-devtools:inview"]});this.markerStore=new Tt({moduleId:"inview",name:"marker-offsets",default:{},validate:t=>{if(!t||typeof t!="object")return null;let e={};for(let[i,n]of Object.entries(t)){if(!n||typeof n!="object")continue;let s={},o=n;o.enter&&typeof o.enter.xPercent=="number"&&(s.enter={xPercent:o.enter.xPercent}),o.exit&&typeof o.exit.xPercent=="number"&&(s.exit={xPercent:o.exit.xPercent}),(s.enter||s.exit)&&(e[i]=s)}return e},legacyKeys:["string-devtools:inview-marker-offsets"]});this.disabledTargetIds=new Set(this.disabledStore.read());this.markerOffsets=new Map(Object.entries(this.markerStore.read()));this.stableCoarseViewportWidth=0;this.stableCoarseViewportHeight=0}get overlayBadgeCount(){return 2}getDevtoolSubBadges(){return[{id:"hide-all-offsets",icon:"nooffset",label:"Hide all inview offsets",selectorAttribute:"data-string-inview-hide-all-offsets",onClick:()=>this.disableAllOffsets()}]}getBadgeDescriptors(t,e,i){return[{id:"inview-toggle",slot:"top-left",group:"main",selectorAttribute:"data-string-inview-toggle"},{id:"offsets",slot:"top-left",group:"main",selectorAttribute:"data-string-offsets-badge",attributes:{"data-string-inview-tool":"offsets"}}]}createBadgeExtra(t,e,i,n){let s=!this.disabledTargetIds.has(i);this.entryEnabled.set(t.id,s);let o=document.createElement("div");o.setAttribute("data-string-offset-outline",""),o.setAttribute("data-target-id",i),o.setAttribute("data-visible","false");let a=document.createElement("div");a.setAttribute("data-string-offset-connector","enter"),a.setAttribute("data-stdg",""),a.setAttribute("data-target-id",i),a.setAttribute("data-visible","false");let l=document.createElement("div");l.setAttribute("data-string-offset-connector","exit"),l.setAttribute("data-stdg",""),l.setAttribute("data-target-id",i),l.setAttribute("data-visible","false");let d=document.createElement("div");d.setAttribute("data-string-offset-edge-marker","enter"),d.setAttribute("data-stdg",""),d.setAttribute("data-target-id",i),d.setAttribute("data-visible","false");let c=document.createElement("span");c.setAttribute("data-string-offset-edge-marker-label",""),d.append(c);let p=document.createElement("div");p.setAttribute("data-string-offset-edge-marker","exit"),p.setAttribute("data-stdg",""),p.setAttribute("data-target-id",i),p.setAttribute("data-visible","false");let g=document.createElement("span");g.setAttribute("data-string-offset-edge-marker-label",""),p.append(g);let h=this.viewportLayer.getWorldElement(this.getWorldHost());h.appendChild(o),h.appendChild(a),h.appendChild(l),h.appendChild(d),h.appendChild(p);let m={outline:o,enterConnector:a,exitConnector:l,enterMarker:d,exitMarker:p,enterMarkerLabel:c,exitMarkerLabel:g};return this.syncCompactModeForExtra(m),m}destroyBadgeExtra(t){t.extra.outline.remove(),t.extra.enterConnector.remove(),t.extra.exitConnector.remove(),t.extra.enterMarker.remove(),t.extra.exitMarker.remove(),this.entryEnabled.delete(t.object.id)}bindBadge(t){let e=()=>{this.renderBadge(t),this.scheduleSingleSync(t)},i=this.bindMarkerDrag(t,"enter",[t.extra.enterMarker,t.extra.enterConnector]),n=this.bindMarkerDrag(t,"exit",[t.extra.exitMarker,t.extra.exitConnector]);return this.events.on(t.object.getScopedEventName("object:inview"),e),[i,n,()=>this.events.off(t.object.getScopedEventName("object:inview"),e)]}measureEntry(t,e){let i=super.measureEntry(t,e).badges,n=t.object,s=this.isEntryEnabled(n.id),o=e.visible?null:this.resolveLiveStickyGeometry(n.htmlElement),a=e.visible||o!=null,l=o?o.contentX:e.visible?e.contentX:n.getProperty("layout-doc-left")??0,d=o?o.contentY:e.visible?e.contentY:this.getObjectDocY(n),c=o?o.width:e.visible?e.width:n.getProperty("layout-width")??(n.getProperty("half-width")??0)*2,p=o?o.height:e.visible?e.height:n.getProperty("layout-height")??(n.getProperty("half-height")??0)*2;if(c<=0||p<=0)return this.hiddenMeasurement(n,i);let g=this.getViewportScrollTop(),h=this.getStableViewportHeight(),m=n.getProperty("enter-vp")??"bottom",f=n.getProperty("exit-vp")??"top",v=n.getProperty("enter-el")??"top",y=n.getProperty("exit-el")??"bottom",b=n.getProperty("inview-start-position"),S=n.getProperty("inview-end-position"),L=v==="bottom"?d+p:d,M=y==="top"?d:d+p,x=di(m)==="end"?h:0,I=di(f)==="end"?h:0,w=b!=null?b+x:L,R=S!=null?S+I:M,k=this.measureMarkerSize(t.extra.enterMarker),A=this.measureMarkerSize(t.extra.exitMarker),V=k.width,D=k.height,T=A.width,P=A.height,H=this.getMarkerOffset(t.targetId,"enter"),B=this.getMarkerOffset(t.targetId,"exit"),W=this.clampMarkerPercentInViewport(l,c,H?.xPercent??100,"enter",V),G=this.clampMarkerPercentInViewport(l,c,B?.xPercent??0,"exit",T),N=l+c*(W/100),X=l+c*(G/100),ot=N+Et,wt=Math.min(L,w),at=ui,ut=Math.abs(w-L),Pt=X,O=Math.min(M,R),q=ui,pt=Math.abs(R-M),Te=N+Et,Nn=X,Pe=this.data.viewport.contentHeight||this.data.viewport.windowHeight||window.innerHeight,Bi=w-D<0,_i=R<0,Fi=w>Pe,Vi=R+P>Pe,zn=Bi||Fi,Gn=_i||Vi,$n=Fi?Pe:w+(Bi?D:0),Un=Vi?Pe-P:R+(_i?P:0),jn=w-g>=-D&&w-g<=h,Yn=R-g>=-P&&R-g<=h,Wi=this.enabled&&s&&(jn||Yn);return!a&&!Wi?this.hiddenMeasurement(n,i):{visible:a,badges:i,overlayVisible:this.enabled&&s,badgeVisible:this.enabled,markersVisible:Wi,inview:n.getProperty("is-inview")===!0,outlineDocX:l,outlineDocY:d,outlineWidth:c,outlineHeight:p,enterConnectorDocX:ot,enterConnectorDocY:wt,enterConnectorWidth:at,enterConnectorHeight:ut,exitConnectorDocX:Pt,exitConnectorDocY:O,exitConnectorWidth:q,exitConnectorHeight:pt,enterMarkerDocX:Te,enterMarkerDocY:$n,enterMarkerFlippedY:zn,exitMarkerDocX:Nn,exitMarkerDocY:Un,exitMarkerFlippedY:Gn}}afterBadgeMeasurement(t,e){this.syncCompactMode(t);let i=t.object,n=i.getProperty("enter-vp")??"bottom",s=i.getProperty("exit-vp")??"top";this.syncMarkerContent(t,"enter",this.getViewportMarkerLabel(n)),this.syncMarkerContent(t,"exit",this.getViewportMarkerLabel(s));let{outline:o,enterConnector:a,exitConnector:l,enterMarker:d,exitMarker:c}=t.extra,p=!!e?.visible&&!!e.overlayVisible,g=!!e?.markersVisible&&!!e.overlayVisible;o.setAttribute("data-visible",p?"true":"false");let h=e;if(h&&p&&(o.setAttribute("data-inview",h.inview?"true":"false"),E.setProps(o,{transform:Me(h.outlineDocX,h.outlineDocY),width:`${Math.max(0,h.outlineWidth)}px`,height:`${Math.max(0,h.outlineHeight)}px`})),!g){for(let f of[a,l,d,c])f.setAttribute("data-visible","false");return}if(!h)return;let m=h.inview?"true":"false";for(let f of[a,l,d,c])f.setAttribute("data-visible","true"),f.setAttribute("data-inview",m);d.setAttribute("data-flip-y",h.enterMarkerFlippedY?"true":"false"),c.setAttribute("data-flip-y",h.exitMarkerFlippedY?"true":"false"),E.setProps(a,{transform:Me(h.enterConnectorDocX-h.enterConnectorWidth/2,h.enterConnectorDocY),width:`${Math.max(0,h.enterConnectorWidth)}px`,height:`${Math.max(0,h.enterConnectorHeight)}px`}),E.setProps(l,{transform:Me(h.exitConnectorDocX-h.exitConnectorWidth/2,h.exitConnectorDocY),width:`${Math.max(0,h.exitConnectorWidth)}px`,height:`${Math.max(0,h.exitConnectorHeight)}px`}),E.setProps(d,{transform:`${Me(h.enterMarkerDocX,h.enterMarkerDocY)} translate(-100%, -100%)`}),E.setProps(c,{transform:Me(h.exitMarkerDocX,h.exitMarkerDocY)})}onBadgeClick(t,e,i){if(i.id==="inview-toggle"){this.toggleInview(t.object),this.renderBadge(t),this.scheduleSingleSync(t);return}i.id==="offsets"&&(this.setEntryEnabled(t.object.id,!this.isEntryEnabled(t.object.id)),this.renderBadge(t),this.scheduleFullSync())}getBadgeState(t,e){if(e?.id==="offsets"){let n=this.isEntryEnabled(t.object.id);return{active:n,title:n?"Hide offsets for this element":"Show offsets for this element",html:F(16,"offset")}}let i=this.getInviewBadgeState(t.object);return{active:i.active,title:i.title,html:i.html,attributes:{"data-inview":i.inview,"data-blocked":i.blocked}}}hiddenMeasurement(t,e){let i={};for(let[n,s]of Object.entries(e))i[n]={...s,visible:!1};return{visible:!1,badges:i,overlayVisible:this.enabled&&this.isEntryEnabled(t.id),badgeVisible:this.enabled,markersVisible:!1,inview:t.getProperty("is-inview")===!0,...Uo}}getInviewBadgeState(t){let e=t.getProperty("is-inview")===!0,i=t.isInviewAutoBlocked();return{active:this.isInviewBadgeActive(t),blocked:i,inview:e,title:i?"Enable automatic -inview":"Disable automatic -inview",html:F(16,"eye")}}toggleInview(t){if(this.isInviewBadgeActive(t)){t.setInviewManualActive(!1),t.setInviewAutoBlocked(!0),t.htmlElement.classList.remove("-inview");return}t.setInviewAutoBlocked(!1),t.setInviewManualActive(!0),t.syncInviewClass()}isInviewBadgeActive(t){return t.isInviewAutoBlocked()?!1:t.isInviewManualActive()||t.getProperty("is-inview")===!0?!0:t.getProperty("repeat")===!0?!1:t.htmlElement.classList.contains("-inview")}isEntryEnabled(t){return this.entryEnabled.get(t)!==!1}setEntryEnabled(t,e){this.entryEnabled.set(t,e);let i=this.entries.get(t);if(i){let n=i.targetId;e?this.disabledTargetIds.delete(n):this.disabledTargetIds.add(n),this.disabledStore.write([...this.disabledTargetIds])}this.enabled&&(i?this.scheduleSingleSync(i):this.scheduleSync())}disableAllOffsets(){let t=!1;for(let e of this.entries.values())this.entryEnabled.get(e.object.id)!==!1&&(this.entryEnabled.set(e.object.id,!1),this.disabledTargetIds.add(e.targetId),this.renderBadge(e),t=!0);t&&(this.disabledStore.write([...this.disabledTargetIds]),this.enabled&&this.scheduleSync())}bindMarkerDrag(t,e,i){let n=s=>{s.preventDefault(),s.stopPropagation();let o=t.object.htmlElement;if(!o?.isConnected)return;let a=o.getBoundingClientRect();if(a.width<=0)return;let l=e==="enter"?t.extra.enterMarker.getBoundingClientRect().width:t.extra.exitMarker.getBoundingClientRect().width,d=this.getMarkerOffset(t.targetId,e),c=this.clampMarkerPercentInViewport(a.left+this.getViewportScrollLeft(),a.width,d?.xPercent??(e==="enter"?100:0),e,l),p=a.left+a.width*(c/100),g=s.clientX-p,h=this.badgeLayer.getWorldElement(this.getWorldHost()),m=Array.from(h.querySelectorAll(`[data-stdg-badge][data-target-id="${t.targetId}"]`));for(let f of m)f.setAttribute("data-dragging","");h.setAttribute("data-dragging-active",""),Le(s,{onMove:f=>{let v=o.getBoundingClientRect();if(v.width<=0)return;let y=f.clientX-g,b=this.clampMarkerPercentInClientViewport(v,y,e,l);this.setMarkerOffset(t.targetId,e,{xPercent:b}),this.scheduleSingleSync(t)},onEnd:()=>{for(let f of m)f.removeAttribute("data-dragging");h.removeAttribute("data-dragging-active")}})};for(let s of i)s.addEventListener("pointerdown",n);return()=>{for(let s of i)s.removeEventListener("pointerdown",n)}}getMarkerOffset(t,e){return this.markerOffsets.get(t)?.[e]??null}setMarkerOffset(t,e,i){let n=this.markerOffsets.get(t)??{};n[e]=i,this.markerOffsets.set(t,n),this.markerStore.write(Object.fromEntries(this.markerOffsets.entries()))}syncMarkerContent(t,e,i){let n=e==="enter"?t.extra.enterMarker:t.extra.exitMarker,s=e==="enter"?t.extra.enterMarkerLabel:t.extra.exitMarkerLabel,o=this.getOverlayTargetLabel(t.object);s.textContent!==o&&(s.textContent=o),this.setAttributeIfChanged(n,"data-viewport-anchor",i);let a=`${o} -> viewport ${i}`;n.title!==a&&(n.title=a)}getViewportMarkerLabel(t){return di(t)==="end"?"bottom":"top"}measureMarkerSize(t){let e=t.getBoundingClientRect();if(e.width>0&&e.height>0){let i={width:e.width,height:e.height};return this.markerSizeCache.set(t,i),i}return this.markerSizeCache.get(t)??{width:Go,height:$o}}resolveLiveStickyGeometry(t){if(!t?.isConnected||window.getComputedStyle(t).position!=="sticky")return null;let e=t.getBoundingClientRect(),i=this.resolveLiveElementMetrics(t,e),n=i.width,s=i.height;if(n<=0||s<=0)return null;let o=this.data.viewport.windowWidth||window.innerWidth,a=this.data.viewport.windowHeight||window.innerHeight;return!(e.bottom>=0&&e.top<=a&&e.right>=0&&e.left<=o)||i.docLeft==null||i.docTop==null?null:{contentX:i.docLeft,contentY:i.docTop,width:n,height:s}}clampMarkerPercentInViewport(t,e,i,n,s){if(e<=0)return n==="enter"?100:0;let o=t+e*(Ri(i)/100),a=this.getViewportScrollLeft(),l=this.data.viewport.windowWidth||window.innerWidth,d=Rn+Hn,c=a+d,p=a+l-d,g=ui/2,h=n==="enter"?Math.max(c+s-Et,c+g-Et):c+g,m=n==="enter"?p-g-Et:Math.min(p-s,p-g),f=Math.max(t,h),v=Math.min(t+e,m),y=Bn(o,f,Math.max(f,v));return Ri((y-t)/e*100)}clampMarkerPercentInClientViewport(t,e,i,n){if(t.width<=0)return i==="enter"?100:0;let s=this.data.viewport.windowWidth||window.innerWidth,o=Rn+Hn,a=ui/2,l=i==="enter"?Math.max(o+n-Et,o+a-Et):o+a,d=i==="enter"?s-o-a-Et:Math.min(s-o-n,s-o-a),c=Math.max(t.left,l),p=Math.min(t.right,d),g=Bn(e,c,Math.max(c,p));return Ri((g-t.left)/t.width*100)}syncCompactMode(t){this.syncCompactModeForExtra(t.extra)}syncCompactModeForExtra(t){let e=this.data.viewport.windowWidth||window.innerWidth,i=lt(e),n=i.compact?"true":"false",s=i.coarsePointer?"coarse":"fine";for(let o of[t.outline,t.enterConnector,t.exitConnector,t.enterMarker,t.exitMarker])this.setAttributeIfChanged(o,"data-compact",n),this.setAttributeIfChanged(o,"data-pointer",s)}setAttributeIfChanged(t,e,i){t.getAttribute(e)!==i&&t.setAttribute(e,i)}getStableViewportHeight(){let t=this.data.viewport.windowWidth||window.innerWidth,e=this.data.viewport.windowHeight||window.innerHeight;return lt(t).coarsePointer?Math.abs(this.stableCoarseViewportWidth-t)>1?(this.stableCoarseViewportWidth=t,this.stableCoarseViewportHeight=e,e):(this.stableCoarseViewportWidth=t,this.stableCoarseViewportHeight=Math.max(this.stableCoarseViewportHeight,e),this.stableCoarseViewportHeight):(this.stableCoarseViewportWidth=t,this.stableCoarseViewportHeight=e,e)}};xe.devtool={id:"inview",label:"Inview",icon:"intersection",order:25,group:2,hotkey:{key:"I",shiftKey:!0},styles:In,overlay:{layerName:"devtools-inview",zIndex:10011,layerAttribute:"data-string-inview-layer",overlayId:"inview",defaultEnabled:!0},connects:{global:!0}};function _n(u,r,t={}){let e=i=>{let n=i.target;if(n instanceof Node&&!u.contains(n)){for(let s of t.ignore??[])if(s&&s.contains(n))return;r(i)}};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)}var Fn="";function ct(u){if(!Number.isFinite(u)||u<=0)return 0;if(u>=1)return 1;let r=1e-4;return u>1-r?1:u<r?0:u}function Vn(u){let r=ct(u)*100;return`${Math.round(r*10)/10}%`}var Ce=class extends Yt{constructor(t){super(t);this.openTargetLabel=null;this.panelRoot=null;this.panelTitle=null;this.panelSlider=null;this.panelValue=null;this.panelEasedValue=null;this.panelPlayForwardButton=null;this.panelPlayBackwardButton=null;this.autoplayRaf=null;this.autoplayDirection=1;this.autoplayProgress=0;this.onPanelSliderInputBind=()=>{this.onPanelSliderInput()};this.unbindOutsideClick=null;this.attributesToMap=[...this.attributesToMap,{key:"easing",type:"easing",fallback:this.settings.easing}]}onInit(){super.onInit(),this.ensurePanel()}destroy(){this.unbindOutsideClick?.(),this.unbindOutsideClick=null,this.panelSlider?.removeEventListener("input",this.onPanelSliderInputBind),this.stopAutoplay(),this.panelRoot?.remove(),this.panelRoot=null,this.panelTitle=null,this.panelSlider=null,this.panelValue=null,this.panelEasedValue=null,this.panelPlayForwardButton=null,this.panelPlayBackwardButton=null,this.clearAllProgressOverrides(),this.openTargetLabel=null,super.destroy()}createOverlayEntry(t){let e=this.resolveOverlayTargetId(t),i=_t(e);i.setAttribute("data-string-devtools-overlay-hud","");let n=this.createOverlayBadge({targetId:e,selectorAttribute:"data-string-progress-badge",attributes:{"data-stdg-button-toggle":"","data-active":"false","aria-label":`Open progress controller for ${e}`}});this.applyOverlayBadgeState(n,{html:F(16,"play-r")});let s=o=>{if(o.stopPropagation(),o.preventDefault(),this.openTargetLabel===e){this.closePanel(e);return}this.openPanel(e)};return n.addEventListener("click",s),i.appendChild(n),this.badgeLayer.getWorldElement(this.getWorldHost()).appendChild(i),this.applyEntryEnabledState(i),{object:t,hud:i,badge:n,onBadgeClick:s}}destroyOverlayEntry(t){let e=this.resolveOverlayTargetId(t.object);this.openTargetLabel===e&&(this.clearEntryProgressOverride(t.object),this.closePanel(e)),t.badge.removeEventListener("click",t.onBadgeClick),t.hud.remove()}measureEntry(t,e){let i=t.object,n=this.resolveOverlayTargetId(i),s=this.data.scroll.transformedCurrent,o=i.getProperty("key")||"--progress",{startPosition:a,differencePosition:l}=this.getEntryRange(i),d=i.getProperty("end-position")??a+l,c=this.resolveEntryRawProgress(i,s),p=this.resolveEasedProgress(i,c);return{visible:e.visible,docX:e.visible?e.baseAnchorX:0,docY:e.visible?e.baseAnchorY+e.collisionOffset:0,targetId:n,progress:p,rawProgress:c,startPosition:a,endPosition:d,currentScroll:s,key:o}}applyMeasurement(t,e){let i=this.resolveOverlayTargetId(t.object);if(!e||!e.visible){t.hud.setAttribute("data-visible","false"),this.openTargetLabel===i&&this.renderPanel();return}t.hud.setAttribute("data-visible","true"),E.setProps(t.hud,{transform:`translate3d(${Math.round(e.docX)}px, ${Math.round(e.docY)}px, 0)`}),t.badge.title=`${this.getOverlayTargetLabel(t.object)}: ${Vn(e.progress)}`,this.applyOverlayBadgeState(t.badge,{label:e.progress.toFixed(2)}),this.openTargetLabel===e.targetId&&this.renderPanel()}onEnabledChange(t){for(let e of this.entries.values())this.applyEntryEnabledState(e.hud);t||(this.closeAllPanels(),this.clearAllProgressOverrides()),this.panelRoot&&(this.panelRoot.style.display=t?"":"none")}applyEntryEnabledState(t){t.style.display=this.enabled?"":"none"}openPanel(t){this.ensurePanel(),this.closeAllPanels(),this.openTargetLabel=t;let e=this.findEntryByTargetLabel(t);e&&e.badge.setAttribute("data-active","true"),this.panelRoot&&(this.unbindOutsideClick=_n(this.panelRoot,()=>this.closeAllPanels(),{ignore:this.collectEntryHuds()})),this.renderPanel()}closePanel(t){this.stopAutoplay();let e=this.findEntryByTargetLabel(t);e&&(e.badge.setAttribute("data-active","false"),this.clearEntryProgressOverride(e.object)),this.openTargetLabel===t&&(this.openTargetLabel=null),this.renderPanel()}closeAllPanels(){this.stopAutoplay();for(let t of this.entries.values())t.badge.setAttribute("data-active","false"),this.clearEntryProgressOverride(t.object);this.openTargetLabel=null,this.unbindOutsideClick?.(),this.unbindOutsideClick=null,this.renderPanel()}collectEntryHuds(){let t=[];for(let e of this.entries.values())t.push(e.hud);return t}startAutoplay(t){this.stopAutoplay(),this.autoplayDirection=t,this.autoplayProgress=t===1?0:1;let e=1200,i=null,n=s=>{if(i===null){i=s,this.autoplayRaf=requestAnimationFrame(n);return}let o=(s-i)/e;i=s,this.autoplayProgress+=o*this.autoplayDirection;let a=this.openTargetLabel?this.findEntryByTargetLabel(this.openTargetLabel):null;if(this.autoplayProgress>=1){this.autoplayProgress=1,a&&this.setEntryProgressOverride(a.object,1),this.stopAutoplay();return}if(this.autoplayProgress<=0){this.autoplayProgress=0,a&&this.setEntryProgressOverride(a.object,0),this.stopAutoplay();return}a&&this.setEntryProgressOverride(a.object,this.autoplayProgress),this.autoplayRaf=requestAnimationFrame(n)};this.autoplayRaf=requestAnimationFrame(n),this.syncPlayButtonState()}stopAutoplay(){this.autoplayRaf!==null&&(cancelAnimationFrame(this.autoplayRaf),this.autoplayRaf=null),this.syncPlayButtonState()}syncPlayButtonState(){let t=this.autoplayRaf!==null,e=t&&this.autoplayDirection===1,i=t&&this.autoplayDirection===-1;this.panelPlayForwardButton?.setAttribute("data-active",String(e)),this.panelPlayBackwardButton?.setAttribute("data-active",String(i))}getEntryRange(t){let e=t.getProperty("start-position")??t.getProperty("progress-start-position")??0,i=t.getProperty("difference-position")??t.getProperty("progress-difference-position")??0;return{startPosition:e,differencePosition:i}}resolveEntryRawProgress(t,e){let i=t.getProperty(xt);if(i!=null)return ct(i);let{startPosition:n,differencePosition:s}=this.getEntryRange(t);return ct(s===0?0:(e-n)/s)}resolveEasedProgress(t,e){let i=t.getProperty("easing");return typeof i=="function"?ct(i(e)):e}setEntryProgressOverride(t,e){t.setProperty(xt,ct(e)),this.applyObjectProgress(t,e);let i=this.entries.get(t.id);i?this.scheduleSingleSync(i):this.scheduleSync()}clearEntryProgressOverride(t){if(t.getProperty(xt)==null)return;t.setProperty(xt,null);let e=this.resolveEntryRawProgress(t,this.data.scroll.transformedCurrent);this.applyObjectProgress(t,e);let i=this.entries.get(t.id);i?this.scheduleSingleSync(i):this.scheduleSync()}clearAllProgressOverrides(){for(let t of this.entries.values())this.clearEntryProgressOverride(t.object)}applyObjectProgress(t,e){let i=ct(e),n=t.getProperty("easing"),s=this.resolveEasedProgress(t,i),o=t.getProperty("key");t.setProperty("progress-raw",i),t.setProperty("progress-value",s),t.setProperty("progress-applied",s);let a=t.getProperty("event-progress-name")??t.getScopedEventName("object:progress");t.setProperty("event-progress-name",a),a&&this.events.emit(a,s),this.tools.styleTxn.run(()=>{o&&this.tools.styleTxn.setVar(t.htmlElement,o,s);for(let l of t.mirrorObjects){let d=l.applyProgress(i,typeof n=="function"?n:void 0);l.setProperty("progress",d),o&&this.tools.styleTxn.setVar(l.htmlElement,o,d)}})}ensurePanel(){if(this.panelRoot)return;let t=document.createElement("div");t.setAttribute("data-string-progress-panel",""),t.setAttribute("data-stdg",""),t.setAttribute("data-stdg-panel",""),t.setAttribute("data-stdg-progress",""),t.setAttribute("data-string-devtools-theme",""),t.setAttribute("data-open","false"),t.setAttribute("data-target-id",""),t.setAttribute("hidden",""),t.addEventListener("pointerdown",i=>i.stopPropagation()),t.innerHTML=`
1960
+ <div data-stdg-panel-header>
1961
+ <span data-string-progress-dock-title>Element ID</span>
1962
+ <nav data-stdg-button-left data-string-progress-dock-play-group>
1963
+ <button
1964
+ type="button"
1965
+ data-stdg-button
1966
+ data-stdg-button-toggle
1967
+ data-stdg-button-icon-16
1968
+ data-string-progress-dock-play-backward
1969
+ aria-label="Play backward 100\u21920"
1970
+ title="Play backward 100\u21920"
1971
+ data-active="false"
1972
+ >
1973
+ ${F(16,"play-l")}
1974
+ </button>
1975
+ <button
1976
+ type="button"
1977
+ data-stdg-button
1978
+ data-stdg-button-toggle
1979
+ data-stdg-button-icon-16
1980
+ data-string-progress-dock-play-forward
1981
+ aria-label="Play forward 0\u2192100"
1982
+ title="Play forward 0\u2192100"
1983
+ data-active="false"
1984
+ >
1985
+ ${F(16,"play-r")}
1986
+ </button>
1987
+ </nav>
1988
+ <button
1989
+ type="button"
1990
+ data-stdg-button
1991
+ data-stdg-button-right
1992
+ data-stdg-button-icon-16
1993
+ data-string-progress-dock-close
1994
+ aria-label="Close progress controller"
1995
+ title="Close progress controller"
1996
+ >
1997
+ ${F(16,"close")}
1998
+ </button>
1999
+ </div>
2000
+ <div data-stdg-panel-content>
2001
+ <div data-stdg-panel-field-slider-row>
2002
+ <div
2003
+ data-stdg-panel-field
2004
+ data-stdg-panel-field-slider
2005
+ data-string-progress-field
2006
+ >
2007
+ <label for="string-dev-progress-slider">Progress</label>
2008
+ <input
2009
+ id="string-dev-progress-slider"
2010
+ type="range"
2011
+ min="0"
2012
+ max="1000"
2013
+ step="1"
2014
+ value="0"
2015
+ aria-label="Preview progress"
2016
+ data-stdg-input
2017
+ data-string-progress-slider
2018
+ style="--string-progress-slider-fill: 0%;"
2019
+ />
2020
+ </div>
2021
+ <div data-stdg-panel-field data-string-progress-value-card>
2022
+ <input
2023
+ id="string-dev-progress-value"
2024
+ type="number"
2025
+ min="0"
2026
+ max="100"
2027
+ step="1"
2028
+ inputmode="numeric"
2029
+ value="0"
2030
+ aria-label="Progress value"
2031
+ data-stdg-input
2032
+ data-string-progress-value-number
2033
+ />
2034
+ <label
2035
+ for="string-dev-progress-value"
2036
+ data-stdg-field-input-disable
2037
+ data-string-progress-value-unit
2038
+ >%</label>
2039
+ </div>
2040
+ </div>
2041
+ <span data-field="eased" hidden>0%</span>
2042
+ </div>
2043
+ `,this.panelRoot=t,this.panelTitle=t.querySelector("[data-string-progress-dock-title]"),this.panelSlider=t.querySelector("[data-string-progress-slider]"),this.panelValue=t.querySelector("[data-string-progress-value-number]"),this.panelEasedValue=t.querySelector('[data-field="eased"]'),this.panelPlayForwardButton=t.querySelector("[data-string-progress-dock-play-forward]"),this.panelPlayForwardButton.addEventListener("click",i=>{i.stopPropagation(),this.autoplayRaf!==null&&this.autoplayDirection===1?this.stopAutoplay():this.startAutoplay(1)}),this.panelPlayBackwardButton=t.querySelector("[data-string-progress-dock-play-backward]"),this.panelPlayBackwardButton.addEventListener("click",i=>{i.stopPropagation(),this.autoplayRaf!==null&&this.autoplayDirection===-1?this.stopAutoplay():this.startAutoplay(-1)}),t.querySelector("[data-string-progress-dock-close]").addEventListener("click",i=>{i.stopPropagation(),this.openTargetLabel&&this.closePanel(this.openTargetLabel)}),this.panelSlider.addEventListener("input",this.onPanelSliderInputBind),this.panelValue.addEventListener("input",()=>{if(!this.openTargetLabel||!this.panelValue)return;let i=this.findEntryByTargetLabel(this.openTargetLabel);if(!i)return;let n=Math.max(0,Math.min(100,Number(this.panelValue.value)));if(!Number.isFinite(n))return;this.stopAutoplay();let s=n/100;this.autoplayProgress=s,this.setEntryProgressOverride(i.object,s)}),this.panelValue.addEventListener("keydown",i=>{i.key==="Enter"&&i.target.blur()}),this.hudLayer.getWorldElement(this.getWorldHost()).appendChild(t)}onPanelSliderInput(){if(!this.openTargetLabel||!this.panelSlider)return;let t=this.findEntryByTargetLabel(this.openTargetLabel);if(!t)return;this.stopAutoplay();let e=ct(Number(this.panelSlider.value)/1e3);this.autoplayProgress=e,this.setEntryProgressOverride(t.object,e)}renderPanel(){if(!this.panelRoot||!this.panelTitle||!this.panelSlider||!this.panelValue||!this.panelEasedValue)return;let t=this.openTargetLabel?this.findEntryByTargetLabel(this.openTargetLabel):null;if(!this.enabled||!t){this.panelRoot.setAttribute("hidden",""),this.panelRoot.setAttribute("data-open","false"),this.panelRoot.setAttribute("data-target-id","");return}let e=this.resolveOverlayTargetId(t.object),i=this.getOverlayTargetLabel(t.object),n=this.measurements.get(t.object.id),s=n?ct(n.progress):0,o=n?ct(n.rawProgress):0;this.panelRoot.removeAttribute("hidden"),this.panelRoot.setAttribute("data-open","true"),this.panelRoot.setAttribute("data-target-id",e),this.panelTitle.textContent=i,this.panelSlider.setAttribute("aria-label",`Preview progress for ${i}`),E.setVarDirect(this.panelSlider,"--string-progress-slider-fill",`${Math.round(o*1e3)/10}%`);let a=String(Math.round(o*1e3));this.panelSlider.value!==a&&(this.panelSlider.value=a);let l=String(Math.round(s*100));document.activeElement!==this.panelValue&&(this.panelValue.value=l),this.panelEasedValue.textContent=Vn(s)}findEntryByTargetLabel(t){for(let e of this.entries.values())if(this.resolveOverlayTargetId(e.object)===t)return e;return null}};Ce.devtool={id:"progress",label:"Progress",icon:"progress",order:35,group:2,hotkey:{key:"P",shiftKey:!0},styles:Fn,overlay:{layerName:"devtools-progress",zIndex:10012,layerAttribute:"data-string-progress-layer",overlayId:"progress"},connects:{keys:["progress"]}};function Wn(u){return typeof u=="object"&&u!==null&&"getDevtoolDefinition"in u&&typeof u.getDevtoolDefinition=="function"}function jo(){return"ontouchstart"in window||navigator.maxTouchPoints>0}var Y=class Y{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 Sr;this.devtoolsFpsLastSampleTime=0;this.devtoolsFpsFrameCount=0;this.observerContainerResize=null;this.devtoolsAccessToken="";this.devtoolsAccessState="unknown";this.devtoolsAccessRequestId=0;this.pendingDevtoolUses=[];this.hasStarted=!1;this.devtoolsAccessLastMessage="none";this.canRebuild=!0;this.debouncedResize=cn(()=>{this.queueResize(!1)},30);this.cleanupExistingDevtoolsArtifacts(),this.root=document.body,this.window=window,this.tools=new je,this.data=new Xt,this.eventManager=new At,this.moduleManager=new ke(this.data),this.objectManager=new Ie(this.data,this.moduleManager,this.eventManager,this.tools),this.centers=new xr,this.hoverManager=new Cr,this.devtools=new kr,this.context={events:this.eventManager,data:this.data,tools:this.tools,settings:{},centers:this.centers,hover:this.hoverManager,objectManager:this.objectManager},this.cursorController=new Ae(1,this.context),this.scrollManager=new _e(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.onScrollConfigChangeBind=this.onScrollConfigChange.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,onModeChange:this.onScrollConfigChangeBind}),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.updateDevtoolsFPS(r)}),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 accessDevtoolToken(r){let t=r.trim();if(!(t===this.devtoolsAccessToken&&(this.devtoolsAccessState==="granted"||this.devtoolsAccessState==="pending"))){if(this.devtoolsAccessToken=t,t.length===0){this.devtoolsAccessState="unknown";return}this.validateDevtoolsAccess(t)}}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 Y.i||(Y.i=new Y),Y.i}reuse(r){return this.moduleManager.find(r)}use(r,t=null){this.moduleManager.find(r)||this.shouldDeferDevtoolModule(r,t)||this.instantiateModule(r,t)}cleanupExistingDevtoolsArtifacts(){for(let r of Y.DEVTOOLS_ARTIFACT_SELECTORS)document.querySelectorAll(r).forEach(t=>t.remove())}instantiateModule(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),Wn(i)&&this.devtools.register(i.getDevtoolDefinition()),this.hasStarted&&(this.objectManager.attachModule(i),i.onInit(),i.onResize(),i.onScroll(this.data),i.onFrame(this.data))}shouldDeferDevtoolModule(r,t){return!(r===Z||r.prototype instanceof Z)||this.devtoolsAccessState==="granted"?!1:(this.pendingDevtoolUses.push({objectClass:r,settings:t}),this.devtoolsAccessToken.length>0&&this.devtoolsAccessState!=="pending"&&this.validateDevtoolsAccess(this.devtoolsAccessToken),!0)}async validateDevtoolsAccess(r){let t=++this.devtoolsAccessRequestId;this.devtoolsAccessState="pending";try{let e=await fetch(`${Y.DEVTOOLS_ACCESS_URL}?token=${encodeURIComponent(r)}`),i=await this.resolveDevtoolsAccessResponse(e);if(t!==this.devtoolsAccessRequestId||r!==this.devtoolsAccessToken)return;if(this.devtoolsAccessState=i?"granted":"denied",!i){this.logDevtoolsAccess("denied"),this.pendingDevtoolUses=[];return}this.logDevtoolsAccess("granted");let n=[...this.pendingDevtoolUses];this.pendingDevtoolUses=[],n.forEach(({objectClass:s,settings:o})=>{this.instantiateModule(s,o)})}catch{if(t!==this.devtoolsAccessRequestId||r!==this.devtoolsAccessToken||this.devtoolsAccessState==="granted")return;this.devtoolsAccessState="denied",this.logDevtoolsAccess("error"),this.pendingDevtoolUses=[]}}logDevtoolsAccess(r){if(this.devtoolsAccessLastMessage!==r){if(this.devtoolsAccessLastMessage=r,r==="granted"){console.info(`${Y.DEVTOOLS_LOG_PREFIX} Access granted. Devtools modules are enabled.`);return}if(r==="denied"){console.warn(`${Y.DEVTOOLS_LOG_PREFIX} Access denied. Devtools modules were not enabled. Check accessDevtoolToken.`);return}console.warn(`${Y.DEVTOOLS_LOG_PREFIX} Access check failed. Devtools modules were not enabled.`)}}async resolveDevtoolsAccessResponse(r){if(!r.ok)return!1;if((r.headers.get("content-type")?.toLowerCase()??"").includes("application/json")){let i=await r.json();return typeof i=="boolean"?i:i&&typeof i=="object"&&"allowed"in i?i.allowed===!0:!1}return(await r.text()).trim().toLowerCase()==="true"}registerScrollMode(r,t){let e;if(typeof t=="function"&&t.prototype instanceof et){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){if(this.hasStarted)return;this.hasStarted=!0,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(rr);let t=window.getComputedStyle(document.documentElement).fontSize,e=parseFloat(t);this.context.data.viewport.baseRem=e,document.documentElement.classList.add("-string"),this.syncDebugScrollState(),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},typeof r.storageToken=="string"?Mi(r.storageToken):typeof r["storage-token"]=="string"&&Mi(r["storage-token"]),typeof r.accessDevtoolToken=="string"&&(this.accessDevtoolToken=r.accessDevtoolToken),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),U.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()}onScrollConfigChange(){this.moduleManager.onScrollConfigChange(),this.syncDebugScrollState(),this.moduleManager.onScroll(),this.moduleManager.onScrollMeasure(),this.moduleManager.onFrame(),E.run(()=>{this.moduleManager.onMutate()})}syncDebugScrollState(){let r=document.documentElement,t=window.innerWidth<1024;r.setAttribute("data-string-scroll-mode",String(this.data.scroll.mode)),r.setAttribute("data-string-scroll-device",t?"mobile":"desktop")}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),U.measure(()=>{this.moduleManager.onScrollMeasure()}),this.lastScrollEmitted=this.data.scroll.current),U.mutate(()=>{E.begin(),this.moduleManager.onMutate(),E.commit()}),this.eventManager.emit("update",null),U.flush()}updateDevtoolsFPS(r){this.devtoolsFpsLastSampleTime===0&&(this.devtoolsFpsLastSampleTime=r),this.devtoolsFpsFrameCount+=1;let t=r-this.devtoolsFpsLastSampleTime;if(t<1e3)return;let e=this.devtoolsFpsFrameCount*1e3/t;this.devtools.setFPS(e),this.devtoolsFpsFrameCount=0,this.devtoolsFpsLastSampleTime=r}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=document.documentElement.clientWidth||window.innerWidth||a.width,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 d=jo(),c=i>1024,p=this.prevWidth!==i,g=this.prevHeight!==n,h=Math.abs(this.prevHeight-n),m=this.context.data.viewport.contentHeight!==s,f=p||!d&&g||d&&h>150||m;this.context.data.scroll.topPosition=Math.floor(o),this.context.data.viewport.contentWidth=i,this.context.data.viewport.contentHeight=s,this.prevWidth=i,this.prevHeight=n,this.context.data.viewport.windowWidth=i,this.context.data.viewport.windowHeight=n;let v=window.getComputedStyle(document.documentElement).fontSize,y=parseFloat(v);if(this.context.data.viewport.baseRem=y*l,this.syncDebugScrollState(),e.bottomPosition=this.context.data.viewport.contentHeight-n,(p||typeof r=="boolean"&&r)&&this.moduleManager.onResizeWidth(),f||typeof r=="boolean"&&r){let b=this.context.data.scroll.elementContainer.scrollTop;b>0&&(this.context.data.scroll.current=b,this.context.data.scroll.target=b),this.moduleManager.onResize(),this.scrollManager&&this.scrollManager.updateResponsiveMode(),this.onSettingsChange({isDesktop:c,widthChanged:p,heightChanged:g,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){let t=this.resolveScrollToValue(r);t!=null&&this.scrollManager.get().scrollTo(t.position,t.immediate)}resolveScrollToValue(r){if(typeof r=="number")return{position:r,immediate:!1};if(typeof r=="string"||r instanceof HTMLElement){let s=this.resolveElementScrollPosition(r);return s==null?null:{position:s,immediate:!1}}let t=r.immediate===!0,e=r.offset??0;if("position"in r)return{position:r.position+e,immediate:t};let i="selector"in r?r.selector:r.element,n=this.resolveElementScrollPosition(i);return n==null?null:{position:n+e,immediate:t}}resolveElementScrollPosition(r){let t=typeof r=="string"?document.querySelector(r):r;if(!(t instanceof HTMLElement))return null;let e=this.data.scroll.container??document.body??document.documentElement,i=this.data.scroll.elementContainer??document.documentElement,n=this.tools.transformNullify.process({element:t});if(e===document.body||e===document.documentElement)return n.top+i.scrollTop;let s=e.getBoundingClientRect();return n.top-s.top+e.scrollTop}destroy(){this.hasStarted=!1,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(),this.devtools.destroy()}};Y.DEVTOOLS_ACCESS_URL="https://access.fiddle.digital/",Y.DEVTOOLS_LOG_PREFIX="[StringTune Devtools]",Y.DEVTOOLS_ARTIFACT_SELECTORS=["[data-string-dev-viewport-layer]","[data-string-dev-viewport-world]","[data-stdg-dock]","[data-stdg-dock-sub-badges]"];var Hi=Y;0&&(module.exports={CursorReactiveModule,DOMBatcher,GridAdapter,ScrollController,StringAnchor,StringCursor,StringData,StringDelayLerpTracker,StringDevIconRegistry,StringDevInview,StringDevLayout,StringDevModule,StringDevOverlayRegistry,StringDevProgress,StringDevRulers,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,buildDevtoolsThemeBlock,ensureStringDevtoolsSharedStyles,frameDOM,resolveDevtoolsIcon,styleTxn});
637
2044
  //# sourceMappingURL=index.cjs.map