tweakit 0.1.0 → 0.3.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/README.md +11 -0
- package/dist/tweaks/bezier-WUBSS72H.js +1 -0
- package/dist/tweaks/chunk-DPJ7YRTN.js +1 -0
- package/dist/tweaks/chunk-GC5PWSSX.js +1 -0
- package/dist/tweaks/colour-ZTCDZ2NN.js +1 -0
- package/dist/tweaks/core.js +1 -1
- package/dist/tweaks/gradient-54DF4XNE.js +1 -0
- package/dist/tweaks/image-IR5QKXT4.js +1 -0
- package/dist/tweaks/interval-KXOP2WEL.js +1 -0
- package/dist/tweaks/monitor-5K5VMRAL.js +2 -0
- package/dist/tweaks/plot-3WWIZG7H.js +2 -0
- package/dist/tweaks/point-RPJKP5YR.js +1 -0
- package/dist/tweaks/spring-TPWZKO7B.js +1 -0
- package/dist/tweaks/tabs-AVAHPF5A.js +1 -0
- package/dist/tweaks.css +1 -1
- package/dist/tweaks.css.d.ts +3 -0
- package/dist/tweaks.js +4 -3
- package/dist/types/tweaks/core.d.ts +4 -4
- package/dist/types/tweaks/enhance.d.ts +1 -0
- package/dist/types/tweaks/panel.d.ts +2 -0
- package/dist/types/tweaks/standalone.d.ts +3 -0
- package/dist/types/tweaks/types.d.ts +126 -2
- package/package.json +16 -8
- package/dist/tweaks/bezier-ZSQNFANZ.js +0 -1
- package/dist/tweaks/chunk-EVLD7DUH.js +0 -1
- package/dist/tweaks/chunk-GJESM23Q.js +0 -1
- package/dist/tweaks/colour-W46T6NIC.js +0 -1
- package/dist/tweaks/gradient-YEKTFEP4.js +0 -1
- package/dist/tweaks/image-VKNBVMVK.js +0 -1
- package/dist/tweaks/interval-7OUK7M7J.js +0 -1
- package/dist/tweaks/monitor-CY7CABK6.js +0 -2
- package/dist/tweaks/plot-X5IZM3QU.js +0 -2
- package/dist/tweaks/point-23BHLSGI.js +0 -1
- package/dist/tweaks/spring-Z2SKXUVV.js +0 -1
- package/dist/tweaks/tabs-CGHJ2VS2.js +0 -1
- package/dist/types/tweaks/controls/bezier.d.ts +0 -1
- package/dist/types/tweaks/controls/colour.d.ts +0 -14
- package/dist/types/tweaks/controls/gradient.d.ts +0 -1
- package/dist/types/tweaks/controls/image.d.ts +0 -1
- package/dist/types/tweaks/controls/interval.d.ts +0 -1
- package/dist/types/tweaks/controls/monitor.d.ts +0 -1
- package/dist/types/tweaks/controls/plot.d.ts +0 -1
- package/dist/types/tweaks/controls/point.d.ts +0 -1
- package/dist/types/tweaks/controls/spring.d.ts +0 -1
- package/dist/types/tweaks/controls/tabs.d.ts +0 -1
- package/dist/types/tweaks/shared.d.ts +0 -77
- package/dist/types/tweaks/single.d.ts +0 -12
- package/dist/types/wide-gamut.d.ts +0 -121
package/dist/tweaks.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
var he=t=>t.replace(/([A-Z])/g," $1").replace(/^./,e=>e.toUpperCase()).trim(),N=(t,e,n)=>Math.min(n,Math.max(e,t)),gn=t=>typeof t=="string"&&(/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t.trim())||/^(oklch|oklab|rgba?|hsla?|hwb|lab|lch|color)\(/i.test(t.trim())),Ht=t=>{let e=String(t),n=/e-(\d+)$/i.exec(e);if(n)return Number(n[1])+(e.split("e")[0].split(".")[1]||"").length;let s=e.indexOf(".");return s===-1?0:e.length-s-1},oe=(t,e,n)=>n>0?Number((e+Math.round((t-e)/n)*n).toFixed(Ht(n))):t,Ot=(t,e)=>{let n=e-t;return n<=1?.01:n<=10?.1:n<=100?1:10},De=t=>t>=0?[0,t<=1?1:t*3||100]:[t>=-1?-1:t*3,0],Pt=t=>t==null?void 0:typeof t=="object"?t.value:t,Be=t=>t==null?"":typeof t=="string"?he(t):typeof t=="object"?t.label??String(t.value):String(t),bs="http://www.w3.org/2000/svg",g=(t,e,n)=>{let s=document.createElement(t);return e&&(s.className=e),n!=null&&(s.innerHTML=n),s},Et=(t,e)=>{let n=document.createElementNS(bs,t);return e&&n.setAttribute("class",e),n},vt=(t,e)=>{let n=g("button",t,e);return n.type="button",n},lt=(t,e,n)=>{let s=g(t,e);return s.textContent=n,s},bn=(t,e)=>getComputedStyle(t).getPropertyValue(e).trim(),re=t=>{let e=getComputedStyle(t),n=s=>e.getPropertyValue(s).trim();return n("--tw-accent")||n("--tw-text-primary")||"#fff"},He=t=>["pointerdown","pointermove","pointerup"].forEach(e=>t.addEventListener(e,n=>n.stopPropagation())),St=t=>{requestAnimationFrame(t),document.fonts&&document.fonts.ready&&document.fonts.ready.then(t)},Tt=(t,e,n)=>{let s=r=>{if(!t.isConnected)return o();n(r)},o=()=>e.forEach(([r,i])=>r.removeEventListener(i,s));return e.forEach(([r,i])=>r.addEventListener(i,s)),o},me=(t,e)=>{t.addEventListener("pointerenter",()=>{t.classList.add("is-hover"),e&&e()}),t.addEventListener("pointerleave",()=>t.classList.remove("is-hover"))},Ie=!1;typeof document<"u"&&(document.addEventListener("pointerdown",()=>{Ie=!0},!0),document.addEventListener("keydown",()=>{Ie=!1},!0));var Wt=t=>{t.addEventListener("focus",()=>t.classList.toggle("tw-focus-quiet",Ie)),t.addEventListener("blur",()=>t.classList.remove("tw-focus-quiet"))};function qt(t,{onDown:e,onMove:n,onEnd:s}={}){let o=null,r=i=>{o===null||i.pointerId!==o||(o=null,s&&s(i))};t.addEventListener("pointerdown",i=>{if(!(i.button!==0||o!==null)){o=i.pointerId;try{t.setPointerCapture(i.pointerId)}catch{}e&&e(i)}}),t.addEventListener("pointermove",i=>{if(i.pointerId===o){if(i.buttons===0)return r(i);n&&n(i)}}),t.addEventListener("pointerup",r),t.addEventListener("pointercancel",r),t.addEventListener("lostpointercapture",r)}var Kt=(t,e)=>qt(t,{onDown:n=>{t.classList.add("is-grabbing"),e(n)},onMove:e,onEnd:()=>t.classList.remove("is-grabbing")}),Ut=(t,e)=>{let n=e.getBoundingClientRect();return[N((t.clientX-n.left)/n.width,0,1),N((t.clientY-n.top)/n.height,0,1)]},Xe=(t,e,n=1/0)=>{let s=t.getBoundingClientRect(),o=Math.min(window.devicePixelRatio||1,n);return t.width=s.width*o,t.height=s.height*o,e.setTransform(o,0,0,o,0,0),[s.width,s.height]},je=(t,e,{width:n,fallbackH:s=300,gap:o=6,align:r="start",prefer:i="below"}={})=>{let a=t.getBoundingClientRect();n==="match"&&(e.style.width=a.width+"px");let u=n==="match"?a.width:e.offsetWidth||n||0,d=r==="end"?a.right-u:r==="center"?a.left+a.width/2-u/2:a.left;e.style.left=Math.max(8,Math.min(d,window.innerWidth-u-8))+"px";let c=e.offsetHeight||s,p=window.innerHeight-a.bottom,l=a.top,b=c+12,m=p>=b,f=l>=b,y=(i==="above"?f||!m&&l>=p:!m&&(f||l>p))?a.top-c-o:a.bottom+o;e.style.top=N(y,o,window.innerHeight-c-o)+"px"},ws={accent:"--tw-accent",onAccent:"--tw-on-accent",base:"--tw-base",dropdownBg:"--tw-dropdown-bg",surface:"--tw-surface",surfaceHover:"--tw-surface-hover",surfaceActive:"--tw-surface-active",border:"--tw-border",borderHover:"--tw-border-hover",selection:"--tw-selection",title:"--tw-text-root",section:"--tw-text-section",text:"--tw-text-primary",label:"--tw-text-label",textMuted:"--tw-text-secondary",textFaint:"--tw-text-tertiary",focus:"--tw-text-focus",success:"--tw-success",danger:"--tw-danger",shadow:"--tw-shadow-dropdown",shadowPanel:"--tw-shadow-panel",shadowPanelLifted:"--tw-shadow-panel-lifted",font:"--tw-font-sans",fontMono:"--tw-font-mono",radius:"--tw-radius",density:"--tw-row-height"},vs=new Set(["radius","density"]),Re=t=>(t/=255,t<=.03928?t/12.92:((t+.055)/1.055)**2.4),ys=t=>{t=String(t).trim();let e=/^#([0-9a-f]{3})$/i.exec(t);if(e)return e[1].split("").map(n=>parseInt(n+n,16));if(e=/^#([0-9a-f]{6})$/i.exec(t),e)return[0,2,4].map(n=>parseInt(e[1].slice(n,n+2),16));if(e=/^rgba?\(([^)]+)\)/i.exec(t),e){let n=e[1].split(/[\s,/]+/).filter(Boolean).map(parseFloat);return[n[0],n[1],n[2]]}return null},xs=t=>{let e=ys(t);if(!e||e.some(s=>!Number.isFinite(s)))return"#ffffff";let n=.2126*Re(e[0])+.7152*Re(e[1])+.0722*Re(e[2]);return 1.05/(n+.05)>=(n+.05)/.0571?"#ffffff":"#161616"},ze=t=>{if(!t||typeof t!="object")return null;let e={};for(let[n,s]of Object.entries(t)){if(n.startsWith("--")){e[n]=String(s);continue}let o=ws[n];o&&(e[o]=vs.has(n)&&typeof s=="number"?`${s}px`:String(s))}return e["--tw-accent"]&&!e["--tw-on-accent"]&&(e["--tw-on-accent"]=xs(e["--tw-accent"])),Object.keys(e).length?e:null},ge=(t,e)=>{if(t){if(t._twAppliedVars)for(let n of t._twAppliedVars)t.style.removeProperty(n);if(t._twAppliedVars=e?Object.keys(e):null,e)for(let n in e)t.style.setProperty(n,e[n])}},Ye=(t,e)=>{let n=e?.closest('[data-tw-scheme="light"]')?"light":e?.closest('[data-tw-scheme="dark"]')?"dark":null;n?t.setAttribute("data-tw-scheme",n):t.removeAttribute("data-tw-scheme")},se=(t,e)=>{ge(t,e?.closest(".tw-panel")?._twTheme),Ye(t,e)},Bt=null,wn=()=>{Bt&&Bt()};function Rt(t,e,n,s={}){let o=!1,r=null;n.classList.add("tw-portal"),n.addEventListener("pointerdown",m=>e.closest(".tw-panel")?._twEditPointer?.(m),!0),He(n);let i=()=>je(e,n,{width:s.width,fallbackH:s.fallbackH,gap:s.gap,align:s.align}),a=()=>{if(o){if(!t.isConnected)return b();i(),s.onReflow&&s.onReflow()}},u=m=>{!t.contains(m.target)&&!n.contains(m.target)&&b()},d=m=>{m.key==="Escape"&&o&&(b(),e.focus())},c=()=>se(n,t),p=m=>{m.every(f=>f.target===n)||c()},l=()=>{Bt&&Bt!==b&&Bt(),Bt=b,o=!0,t.classList.add("is-open"),e.setAttribute("aria-expanded","true"),document.body.appendChild(n),se(n,t),window.addEventListener("tw-retheme",c),typeof MutationObserver=="function"&&(r=new MutationObserver(p),r.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:["data-tw-scheme"]})),i(),requestAnimationFrame(()=>{n.classList.add("is-open"),s.onOpen&&s.onOpen(),i()}),requestAnimationFrame(function m(){if(o){if(!t.isConnected)return b();requestAnimationFrame(m)}}),setTimeout(()=>document.addEventListener("pointerdown",u,!0),0),document.addEventListener("keydown",d),window.addEventListener("scroll",a,!0),window.addEventListener("resize",a)},b=()=>{Bt===b&&(Bt=null),n.contains(document.activeElement)&&e.focus(),o=!1,t.classList.remove("is-open"),n.classList.remove("is-open"),e.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",u,!0),document.removeEventListener("keydown",d),window.removeEventListener("scroll",a,!0),window.removeEventListener("resize",a),window.removeEventListener("tw-retheme",c),r&&(r.disconnect(),r=null),setTimeout(()=>{o||n.remove()},200)};return e.addEventListener("click",()=>o?b():l()),{open:l,close:b,isOpen:()=>o,reflow:a}}var be=(t,e)=>{if(t=t.toLowerCase(),t.includes(e))return!0;if(e.length<3)return!1;let n=e.length,s=t.length,o=new Array(s+1).fill(0);for(let r=1;r<=n;r++){let i=[r];for(let a=1;a<=s;a++)i[a]=Math.min(o[a]+1,i[a-1]+1,o[a-1]+(e[r-1]===t[a-1]?0:1));o=i}return Math.min(...o)<=(e.length<6?1:2)},We=typeof matchMedia=="function"?matchMedia("(prefers-reduced-motion: reduce)"):{matches:!1},ks=(t,e)=>{We.matches||typeof t.animate!="function"||(t.style.transformOrigin=e>0?"left center":"right center",t.animate([{transform:"scaleX(1)"},{transform:"scaleX(1.18)"},{transform:"scaleX(1)"}],{duration:300,easing:"cubic-bezier(0.22, 1, 0.36, 1)"}))},we=(t,e,n)=>{let s=t.querySelector('[data-active="true"]');if(!s)return;let o=s.offsetLeft,r=s.offsetWidth,i=parseFloat(e.style.left);e.style.left=o+"px",e.style.width=r+"px",n&&Number.isFinite(i)&&i!==o&&ks(e,o>i?1:-1)},qe=(t,e)=>t.forEach(n=>{let s=n.dataset.value===String(e);n.dataset.active=String(s),n.setAttribute("aria-checked",String(s)),n.tabIndex=s?0:-1}),Ge=(t,e,n)=>{let s=vt(t);return s.setAttribute("role","radio"),s.textContent=Be(e),s.dataset.value=Pt(e),s._twVal=Pt(e),s.addEventListener("click",()=>n(s._twVal)),s},ie=(t,e,n,s=0)=>{switch(t){case"ArrowRight":return(e+1)%n;case"ArrowLeft":return(e-1+n)%n;case"ArrowDown":return s<0?-1:s?e+s<n?e+s:e:(e+1)%n;case"ArrowUp":return s<0?-1:s?e-s>=0?e-s:e:(e-1+n)%n;case"Home":return 0;case"End":return n-1}return-1},Zt=(t,e)=>{let n=g("div",t),s=vt("tw-trigger");s.setAttribute("aria-expanded","false");let o=g("span","tw-trigger-right");return s.append(lt("span","tw-trigger-label",e),o),n.append(s),{root:n,trigger:s,right:o}};function Ls(){let t=null,e=0,n=0,s=0;return{show(o,r,i){t=g("div","tw-grab-guide tw-portal"),t.innerHTML='<span class="tw-grab-line"></span><span class="tw-grab-dot"></span><span class="tw-grab-arrow"></span><span class="tw-grab-bubble"></span>',e=r,n=o,s=i??o,t.children[1].style.cssText=`left:${o}px;top:${e}px`,document.body.appendChild(t)},move(o,r){t&&(t.children[0].style.cssText=`left:${Math.min(n,o)}px;top:${e}px;width:${Math.abs(o-n)}px`,t.children[2].style.cssText=`left:${o}px;top:${e}px;transform:translate(-50%,-50%) scaleX(${o>=n?1:-1})`,t.children[3].style.cssText=`left:${s}px;top:${e-16}px`,t.children[3].textContent=r)},hide(){t&&(t.remove(),t=null)}}}function Es(t,e,n,s,o,r){let i=0,a=0,u=null,d=1,c=Ls();t.addEventListener("pointerdown",l=>{if(l.button!==0||u!==null)return;l.preventDefault(),u=l.pointerId,i=l.clientX,a=s(),d=1,t.classList.add("is-dragging");try{t.setPointerCapture(l.pointerId)}catch{}let b=e.getBoundingClientRect();c.show(l.clientX,b.top+b.height/2,b.left+b.width/2),c.move(l.clientX,r())}),t.addEventListener("pointermove",l=>{if(l.pointerId!==u)return;if(l.buttons===0){p(l);return}let b=l.shiftKey?10:l.altKey?.1:1;b!==d&&(d=b,i=l.clientX,a=s()),o(a+(l.clientX-i)*n*b),c.move(l.clientX,r())});let p=l=>{u===null||l.pointerId!==u||(u=null,t.classList.remove("is-dragging"),c.hide())};t.addEventListener("pointerup",p),t.addEventListener("pointercancel",p),t.addEventListener("lostpointercapture",p)}function _t(t,e){let n=Number.isFinite(+t.step)&&+t.step>0?+t.step:1,s=Ht(n),o=+t.min,r=+t.max;if(Number.isFinite(o)&&Number.isFinite(r)&&r<o){let b=o;o=r,r=b}let i=b=>{let m=oe(b,Number.isFinite(o)?o:0,n);return t.soft||(Number.isFinite(o)&&(m=Math.max(o,m)),Number.isFinite(r)&&(m=Math.min(r,m))),m},a=i(Number.isFinite(+t.value)?+t.value:0),u=g("div",t.row?"tw-row":"tw-field"),d=g("div","tw-num-wrap"),c=g("span","tw-num-grab",Ms);c.setAttribute("aria-hidden","true"),c.title="Drag to adjust";let p=g("input","tw-num");p.type="text",p.inputMode="decimal",p.setAttribute("aria-label",t.label),p.value=a.toFixed(s),Wt(p),d.append(c,p),u.append(lt("span",t.row?"tw-row-label":"tw-field-label",t.label),d);let l=(b,m=!0)=>{b=+b,Number.isFinite(b)&&(a=i(b),p.value=a.toFixed(s),m&&e&&e(a))};return p.addEventListener("change",()=>{let b=parseFloat(p.value);l(isNaN(b)?a:b)}),p.addEventListener("keydown",b=>{b.key==="Enter"&&p.blur()}),Es(c,d,n,()=>a,l,()=>p.value),{el:u,set:b=>l(b,!1),get:()=>a}}var Ms='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" aria-hidden="true"><path d="M6 4v8M10 4v8"/></svg>',It=t=>({el:t,set:()=>{},get:()=>{}}),vn={},rt=(t,e)=>{vn[t]=e},ve=t=>vn[t];var As=180/Math.PI,ke=Math.PI/180,Nt=(t,e)=>[t[0][0]*e[0]+t[0][1]*e[1]+t[0][2]*e[2],t[1][0]*e[0]+t[1][1]*e[1]+t[1][2]*e[2],t[2][0]*e[0]+t[2][1]*e[1]+t[2][2]*e[2]],Sn=(t,e)=>{let n=[[0,0,0],[0,0,0],[0,0,0]];for(let s=0;s<3;s++)for(let o=0;o<3;o++)n[s][o]=t[s][0]*e[0][o]+t[s][1]*e[1][o]+t[s][2]*e[2][o];return n},Lt=t=>t==null||Number.isNaN(t)?0:t,Ss=(t,e,n)=>Math.min(n,Math.max(e,t)),ye=t=>{let e=Math.abs(t);return e<=.04045?t/12.92:Math.sign(t)*((e+.055)/1.055)**2.4},te=t=>{let e=Math.abs(t);return e<=.0031308?t*12.92:Math.sign(t)*(1.055*e**(1/2.4)-.055)},Le=1.09929682680944,Cn=.018053968510807,Cs=t=>{let e=Math.abs(t);return e<Cn*4.5?t/4.5:Math.sign(t)*((e+Le-1)/Le)**(1/.45)},Ue=t=>{let e=Math.abs(t);return e<Cn?t*4.5:Math.sign(t)*(Le*e**.45-(Le-1))},Tn=1/512,Ts=t=>{let e=Math.abs(t);return e<=Tn*16?t/16:Math.sign(t)*e**1.8},$s=t=>{let e=Math.abs(t);return e>=Tn?Math.sign(t)*e**(1/1.8):16*t},Ve=[[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],le=[[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],_s=[[.4865709486482162,.26566769316909306,.19821728523436247],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],Ze=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],Ns=[[.6369580483012914,.14461690358620832,.16888097516417205],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],Je=[[1.7166511879712674,-.35567078377639233,-.25336628137365974],[-.6666843518324892,1.6164812366349395,.01576854581391113],[.017639857445310783,-.042770613257808524,.9421031212354738]],Fs=[[.7977604896723027,.13518583717574031,.0313493495815248],[.2880711282292934,.7118432178101014,8565396060525902e-20],[0,0,.8251046025104601]],Ps=[[1.3457989731028281,-.25558010007997534,-.05110628506753401],[-.5446224939028347,1.5082327413132781,.02053603239147973],[0,0,1.2119675456389454]],$n=[[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],_n=[[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Os=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],Qe=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],Rs=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],Ct=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],xe=216/24389,ae=24389/27,ee=[.3457/.3585,1,(1-.3457-.3585)/.3585],Jt=(t,e,n)=>Nt(n,[e(t[0]),e(t[1]),e(t[2])]),Qt=(t,e,n)=>{let s=Nt(n,t);return[e(s[0]),e(s[1]),e(s[2])]},yn=t=>{let e=Nt(Ct,t);return Nt(Qe,[e[0]**3,e[1]**3,e[2]**3])},xn=t=>{let e=Nt(Os,t);return Nt(Rs,[Math.cbrt(e[0]),Math.cbrt(e[1]),Math.cbrt(e[2])])};function kn(t){let[e,n,s]=t,o=(e+16)/116,r=n/500+o,i=o-s/200,a=r**3>xe?r**3:(116*r-16)/ae,u=e>ae*xe?o**3:e/ae,d=i**3>xe?i**3:(116*i-16)/ae;return Nt(_n,[a*ee[0],u*ee[1],d*ee[2]])}function Ln(t){let e=Nt($n,t),n=i=>i>xe?Math.cbrt(i):(ae*i+16)/116,s=n(e[0]/ee[0]),o=n(e[1]/ee[1]),r=n(e[2]/ee[2]);return[116*o-16,500*(s-o),200*(o-r)]}var Ee=t=>{let e=Math.hypot(t[1],t[2]),n=Math.atan2(t[2],t[1])*As;return n<0&&(n+=360),[t[0],e,n]},Me=t=>[t[0],t[1]*Math.cos(t[2]*ke),t[1]*Math.sin(t[2]*ke)];function Nn(t){let e=((Number.isNaN(t[0])?0:t[0])%360+360)%360,n=t[1]/100,s=t[2]/100,o=r=>{let i=(r+e/30)%12,a=n*Math.min(s,1-s);return s-a*Math.max(-1,Math.min(i-3,9-i,1))};return[o(0),o(8),o(4)]}function Fn(t){let e=Math.max(...t),n=Math.min(...t),s=e-n;if(s===0)return NaN;let o;return e===t[0]?o=(t[1]-t[2])/s+(t[1]<t[2]?6:0):e===t[1]?o=(t[2]-t[0])/s+2:o=(t[0]-t[1])/s+4,o*60}function Is(t){let e=Math.max(...t),n=Math.min(...t),s=(n+e)/2,o=Fn(t),r=e===n||s===0||s===1?0:(e-s)/Math.min(s,1-s);return r<0&&(o+=180,r=-r),o>=360&&(o-=360),[o,r*100,s*100]}function Ds(t){let e=t[1]/100,n=t[2]/100;if(e+n>=1){let r=e/(e+n);return[r,r,r]}let s=Nn([t[0],100,50]),o=1-e-n;return[s[0]*o+e,s[1]*o+e,s[2]*o+e]}var Bs=t=>[Fn(t),Math.min(...t)*100,(1-Math.max(...t))*100];function Hs(t,e){switch(e){case"srgb":return Jt(t,ye,Ve);case"p3":return Jt(t,ye,_s);case"rec2020":return Jt(t,Cs,Ns);case"prophoto-rgb":return Nt(_n,Jt(t,Ts,Fs));case"oklab":return yn(t);case"oklch":return yn(Me(t));case"lab":return kn(t);case"lch":return kn(Me(t));case"hsl":return Jt(Nn(t),ye,Ve);case"hwb":return Jt(Ds(t),ye,Ve)}}function Xs(t,e){switch(e){case"srgb":return Qt(t,te,le);case"p3":return Qt(t,te,Ze);case"rec2020":return Qt(t,Ue,Je);case"prophoto-rgb":return Qt(Nt($n,t),$s,Ps);case"oklab":return xn(t);case"oklch":return Ee(xn(t));case"lab":return Ln(t);case"lch":return Ee(Ln(t));case"hsl":return Is(Qt(t,te,le));case"hwb":return Bs(Qt(t,te,le))}}function kt(t,e,n){return e===n?[t[0],t[1],t[2]]:e==="oklch"&&n==="oklab"?Me(t):e==="oklab"&&n==="oklch"?Ee(t):e==="lch"&&n==="lab"?Me(t):e==="lab"&&n==="lch"?Ee(t):Xs(Hs(t,e),n)}var ne=75e-6;function Ke(t,e){return kt(t,"oklch",e).every(s=>s>=-ne&&s<=1+ne)}var En=t=>t.map(e=>Math.min(1,Math.max(0,e))),Mn=(t,e)=>Math.hypot(t[0]-e[0],t[1]-e[1],t[2]-e[2]);function Ae(t,e){if(Ke(t,e))return kt(t,"oklch",e);let n=t[0];if(n>=1)return[1,1,1];if(n<=0)return[0,0,0];let s=.02,o=1e-4,r=[t[0],t[1],t[2]],i=0,a=t[1],u=!0,d=En(kt(r,"oklch",e));if(Mn(kt(d,e,"oklab"),kt(t,"oklch","oklab"))<s)return d;for(;a-i>o;){let c=(i+a)/2;r[1]=c;let p=kt(r,"oklch",e);if(u&&p.every(b=>b>=-ne&&b<=1+ne)){i=c;continue}d=En(p);let l=Mn(kt(d,e,"oklab"),kt(r,"oklch","oklab"));if(l<s){if(s-l<o)return d;u=!1,i=c}else a=c}return d}function ce(t,e){let n=t*ke,s=Math.cos(n),o=Math.sin(n),r=s*Ct[0][1]+o*Ct[0][2],i=s*Ct[1][1]+o*Ct[1][2],a=s*Ct[2][1]+o*Ct[2][2],u=Sn(e==="p3"?Ze:e==="rec2020"?Je:le,Qe),d=e==="rec2020"?Ue:te,c=-ne,p=1+ne;return(l,b)=>{let m=l+b*r,f=l+b*i,x=l+b*a,y=m**3,S=f**3,E=x**3,A=d(u[0][0]*y+u[0][1]*S+u[0][2]*E);if(A<c||A>p)return!1;let I=d(u[1][0]*y+u[1][1]*S+u[1][2]*E);if(I<c||I>p)return!1;let P=d(u[2][0]*y+u[2][1]*S+u[2][2]*E);return P>=c&&P<=p}}function Pn(t,e){let n=t*ke,s=Math.cos(n),o=Math.sin(n),r=s*Ct[0][1]+o*Ct[0][2],i=s*Ct[1][1]+o*Ct[1][2],a=s*Ct[2][1]+o*Ct[2][2],u=Sn(e==="p3"?Ze:e==="rec2020"?Je:le,Qe),d=e==="rec2020"?Ue:te;return(c,p,l)=>{let b=c+p*r,m=c+p*i,f=c+p*a,x=b**3,y=m**3,S=f**3;l[0]=d(u[0][0]*x+u[0][1]*y+u[0][2]*S),l[1]=d(u[1][0]*x+u[1][1]*y+u[1][2]*S),l[2]=d(u[2][0]*x+u[2][1]*y+u[2][2]*S)}}function de(t,e,n=.5){if(!t(e,0))return 0;let s=0;for(let o=0;o<16;o++){let r=(s+n)/2;t(e,r)?s=r:n=r}return s}var Gt=t=>Math.round(Math.min(1,Math.max(0,t))*255).toString(16).padStart(2,"0"),js=t=>`#${Gt(t[0])}${Gt(t[1])}${Gt(t[2])}`,Se=(t,e,n)=>js(Ae([t,e,n],"srgb"));function On(t){let e=String(t).replace("#","").trim();if(e.length===3&&(e=e.split("").map(s=>s+s).join("")),e.length<6)return[.7,.1,280];let n=[parseInt(e.slice(0,2),16)/255,parseInt(e.slice(2,4),16)/255,parseInt(e.slice(4,6),16)/255];return kt(n,"srgb","oklch").map(Lt)}var Ce=["hex","srgb","css","hsl","hwb","oklch","oklab","lch","lab","p3","rec2020"],Rn={hex:"HEX",srgb:"RGB",css:"CSS",hsl:"HSL",hwb:"HWB",oklch:"OKLCH",oklab:"OKLab",lch:"LCH",lab:"Lab",p3:"P3",rec2020:"Rec2020"},In=["srgb","css","hsl","hwb","hex"],tn=t=>!In.includes(t),Dn=t=>t==="hex"||t==="css"?"srgb":t,zs={hex:"srgb",srgb:"srgb",css:"srgb",hsl:"hsl",hwb:"hwb",oklch:"oklch",oklab:"oklab",lch:"lch",lab:"lab",p3:"display-p3",rec2020:"rec2020"},Bn=t=>zs[t]||"oklch",Ys={srgb:"srgb",hsl:"hsl",hwb:"hwb",oklch:"oklch",oklab:"oklab",lch:"lch",lab:"lab","display-p3":"p3",rec2020:"rec2020"},en=t=>Ys[t]||"oklch",Ws=.5,ue={oklch:[{k:"L",min:0,max:100,step:1,scale:100},{k:"C",min:0,max:Ws,step:.01,scale:1},{k:"H",min:0,max:360,step:1,scale:1}],oklab:[{k:"L",min:0,max:100,step:1,scale:100},{k:"a",min:-.4,max:.4,step:.01,scale:1},{k:"b",min:-.4,max:.4,step:.01,scale:1}],lch:[{k:"L",min:0,max:100,step:1,scale:1},{k:"C",min:0,max:150,step:1,scale:1},{k:"H",min:0,max:360,step:1,scale:1}],lab:[{k:"L",min:0,max:100,step:1,scale:1},{k:"a",min:-125,max:125,step:1,scale:1},{k:"b",min:-125,max:125,step:1,scale:1}],srgb:[{k:"R",min:0,max:255,step:1,scale:255},{k:"G",min:0,max:255,step:1,scale:255},{k:"B",min:0,max:255,step:1,scale:255}],css:[{k:"R",min:0,max:255,step:1,scale:255},{k:"G",min:0,max:255,step:1,scale:255},{k:"B",min:0,max:255,step:1,scale:255}],hsl:[{k:"H",min:0,max:360,step:1,scale:1},{k:"S",min:0,max:100,step:1,scale:1},{k:"L",min:0,max:100,step:1,scale:1}],hwb:[{k:"H",min:0,max:360,step:1,scale:1},{k:"W",min:0,max:100,step:1,scale:1},{k:"B",min:0,max:100,step:1,scale:1}],p3:[{k:"R",min:0,max:1,step:.01,scale:1},{k:"G",min:0,max:1,step:.01,scale:1},{k:"B",min:0,max:1,step:.01,scale:1}],rec2020:[{k:"R",min:0,max:1,step:.01,scale:1},{k:"G",min:0,max:1,step:.01,scale:1},{k:"B",min:0,max:1,step:.01,scale:1}]},qs=t=>t>=1?0:t>=.1?1:t>=.01?2:3,Hn=(t,e,n)=>e==="oklch"?[t[0],t[1],t[2]]:In.includes(n)?e==="srgb"?Ae(t,"srgb"):kt(Ae(t,"srgb"),"srgb",e):kt(t,"oklch",e);function Te(t,e){let n=Hn(t,Dn(e),e);return ue[e].map((s,o)=>{let r=Lt(n[o])*s.scale;return Ss(Math.abs(r)<.5*s.step?0:r,s.min,s.max)})}function Xn(t,e,n,s){let o=Dn(e),r=Hn(t,o,e).map(Lt);r[n]=s/ue[e][n].scale;let i=kt(r,o,"oklch");return[Lt(i[0]),Lt(i[1]),Lt(i[2])]}function jn(t,e){if(!tn(e))return"sRGB";let n=Ae(t,"srgb");return Math.max(...n)<.03||Math.min(...n)>.97||Ke(t,"srgb")?"sRGB":Ke(t,"p3")?"P3":"wide"}function nn(t,e){if(e==="hex")return Se(t[0],t[1],t[2]);let n=ue[e],s=Te(t,e),o=r=>s[r].toFixed(qs(n[r].step));return e==="css"?`${o(0)}, ${o(1)}, ${o(2)}`:e==="oklch"||e==="oklab"||e==="lch"||e==="lab"?`${o(0)}% ${o(1)} ${o(2)}`:e==="hsl"||e==="hwb"?`${o(0)} ${o(1)}% ${o(2)}%`:`${o(0)} ${o(1)} ${o(2)}`}var An=(t,e)=>e==="hex"?t:e==="srgb"?`rgb(${t})`:e==="css"?`rgba(${t}, 1)`:e==="hsl"?`hsl(${t})`:e==="hwb"?`hwb(${t})`:e==="p3"?`color(display-p3 ${t})`:e==="rec2020"?`color(rec2020 ${t})`:`${e}(${t})`;function zn(t,e,n){let s=Lt(n);if(e==="hex")return Se(t[0],t[1],t[2])+(s<.999?Gt(s):"");let o=nn(t,e);if(s>=.999)return An(o,e);let r=+s.toFixed(3);return e==="css"?`rgba(${o}, ${r})`:An(`${o} / ${r}`,e)}var Wn=(()=>{try{return document.createElement("canvas").getContext("2d",{colorSpace:"display-p3"})?.getContextAttributes?.().colorSpace==="display-p3"}catch{return!1}})(),sn=Wn?{colorSpace:"display-p3"}:{},Gs=Wn?"p3":"srgb",$e=(t,e)=>{let n=t.length-1,s=Math.max(0,Math.min(n,e*n)),o=Math.floor(s),r=s-o;return t[o]*(1-r)+t[Math.min(o+1,n)]*r},Vs=(t,e)=>{let n=ce(t,e),s=new Float64Array(128);for(let o=0;o<128;o++)s[o]=de(n,o/127);return s},on="repeating-conic-gradient(#6b6b6b 0% 25%, #9a9a9a 0% 50%) 0 0 / 8px 8px",Ks={srgb:"srgb","display-p3":"p3",rec2020:"rec2020","prophoto-rgb":"prophoto-rgb"},Yn=t=>{let e=/^([+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?)(deg|grad|rad|turn)$/i.exec(t);if(!e)return Lt(parseFloat(t));let n=parseFloat(e[1]);return e[2].toLowerCase()==="turn"?n*360:e[2].toLowerCase()==="grad"?n*.9:e[2].toLowerCase()==="rad"?n*180/Math.PI:n};function Ft(t){if(t=String(t??"").trim(),/^#?([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t)){let a=t.replace("#",""),u=1;a.length===4?(u=parseInt(a[3]+a[3],16)/255,a=a.slice(0,3)):a.length===8&&(u=parseInt(a.slice(6,8),16)/255,a=a.slice(0,6));let[d,c,p]=On("#"+a);return[d,c,p,u]}let e=t.match(/^(oklch|oklab|lch|lab|color)\(\s*([^)]*?)\s*\)$/i);if(e){let a=e[1].toLowerCase(),[u,d]=e[2].split("/").map(x=>x.trim()),c=u.split(/\s+/).filter(Boolean),p=a;if(a==="color"&&(p=Ks[(c[0]||"").toLowerCase()],c=c.slice(1),!p))return[.7,.1,280,1];let l=(x,y=1)=>!x||x==="none"?0:Lt(parseFloat(x))*(/%$/.test(x)?y:1),b=d?N(l(d,.01),0,1):1,m=a==="lab"?[N(l(c[0]),0,100),l(c[1],1.25),l(c[2],1.25)]:a==="lch"?[N(l(c[0]),0,100),Math.max(0,l(c[1],1.5)),Yn(c[2]||"0")]:a==="color"?[l(c[0],.01),l(c[1],.01),l(c[2],.01)]:a==="oklab"?[N(l(c[0],.01),0,1),l(c[1],.004),l(c[2],.004)]:[N(l(c[0],.01),0,1),Math.max(0,l(c[1],.004)),Yn(c[2]||"0")],f=p==="oklch"?m:kt(m,p,"oklch");return[Lt(f[0]),Lt(f[1]),(Lt(f[2])%360+360)%360,b]}let n=Ft._c2d||(Ft._c2d=document.createElement("canvas").getContext("2d"));n.fillStyle="#000",n.fillStyle=t;let s=n.fillStyle;if(s[0]==="#")return Ft(s);let o=s.match(/^rgba?\(([^)]*)\)/i),r=((o?o[1]:"").match(/-?[\d.]+(?:e[+-]?\d+)?/gi)||[0,0,0]).map(Number),i=kt([r[0]/255,r[1]/255,r[2]/255],"srgb","oklch");return[Lt(i[0]),Lt(i[1]),Lt(i[2]),r[3]!=null?N(Lt(r[3]),0,1):1]}function rn(t,e){let[n,s,o,r]=Ft(t.value||"#7c5cff"),i=Ce.includes(t.mode)?t.mode:"oklch",a=NaN,u=null,d=[],c=NaN,p="",l=()=>zn([n,s,o],i,r),b=g("div","tw-color-body"),m=g("div","tw-wg-area"),f=document.createElement("canvas");f.className="tw-wg-canvas";let x=g("div","tw-wg-thumb");m.append(f,x);let y=g("div","tw-wg-hue"),S=document.createElement("canvas");S.className="tw-wg-hue-canvas";let E=g("div","tw-wg-hue-thumb");y.append(S,E);let A=g("div","tw-wg-alpha"),I=g("div","tw-wg-alpha-grad"),P=g("div","tw-wg-hue-thumb");A.append(I,P),A.tabIndex=0,A.setAttribute("role","slider"),A.setAttribute("aria-label","Alpha"),A.setAttribute("aria-valuemin","0"),A.setAttribute("aria-valuemax","1");let z=g("div","tw-color-mode-row"),j=g("select","tw-color-mode");j.setAttribute("aria-label","Color mode"),Ce.forEach(X=>{let W=document.createElement("option");W.value=X,W.textContent=Rn[X],j.append(W)}),j.value=i;let k=g("span","tw-color-gamut");z.append(j,k);let O=g("div","tw-color-channels");b.append(m,y,A,z,O);let Y=f.getContext("2d",sn),J=S.getContext("2d"),K=document.createElement("canvas"),T=K.getContext("2d",sn),D=null,v=()=>{let X=m.getBoundingClientRect(),W=Math.round(X.width),st=Math.round(X.height);if(W<2)return;let pt=window.devicePixelRatio||1,L=tn(i)?"p3":"srgb",G=Vs(o,L);u=G;let Q=Math.round(W*pt),gt=Math.round(st*pt),ft=Math.max(1,Math.round(Q/4)),At=Math.max(1,Math.round(gt/4));(K.width!==ft||K.height!==At)&&(K.width=ft,K.height=At,D=new ImageData(ft,At,sn));let xt=D.data,Yt=At>1?1/(At-1):0,_=ft>1?1/(ft-1):0,et=Pn(o,Gs),V=[0,0,0];for(let tt=0;tt<At;tt++){let $=1-tt*Yt,M=$e(G,$);for(let R=0;R<ft;R++){et($,R*_*M,V);let F=(tt*ft+R)*4;xt[F]=Math.round(N(V[0],0,1)*255),xt[F+1]=Math.round(N(V[1],0,1)*255),xt[F+2]=Math.round(N(V[2],0,1)*255),xt[F+3]=255}}if(T.putImageData(D,0,0),f.width=Q,f.height=gt,Y.imageSmoothingEnabled=!0,Y.drawImage(K,0,0,Q,gt),L!=="srgb"){let tt=($,M,R,F)=>{let C=ce(o,$),ct=[];for(let at=0;at<=100;at++){let nt=at/100,ht=$e(G,nt);if(ht<=0)continue;let dt=de(C,nt,ht);dt<=0||ct.push([Math.min(dt/ht*Q,Q-R*pt/2),(1-nt)*gt])}ct.length<2||(Y.save(),Y.strokeStyle=M,Y.lineWidth=R*pt,Y.lineJoin=Y.lineCap="round",Y.setLineDash(F.map(at=>at*pt)),Y.beginPath(),ct.forEach((at,nt)=>nt?Y.lineTo(at[0],at[1]):Y.moveTo(at[0],at[1])),Y.stroke(),Y.restore())};tt("srgb","rgba(255,255,255,0.7)",1.5,[]),tt("p3","rgba(255,255,255,0.4)",1,[3,3])}a=o},h=.7,w=0,B=()=>{let X=y.getBoundingClientRect(),W=Math.max(1,Math.round(X.width)),st=Math.max(1,Math.round(X.height));if(W<2||W===w&&S.width===W)return;w=W,S.width=W,S.height=st;let pt=h;for(let L=0;L<W;L++){let G=L/(W-1)*360,Q=kt([pt,de(ce(G,"srgb"),pt),G],"oklch","srgb");J.fillStyle=`rgb(${N(Q[0]*255,0,255)|0},${N(Q[1]*255,0,255)|0},${N(Q[2]*255,0,255)|0})`,J.fillRect(L,0,1,st)}},H=()=>{let X=u?$e(u,n):.4,W=pt=>`${N(pt,0,1)*100}%`,st=(pt,L)=>{let G=N(pt,0,1);return`calc(${G*100}% + ${(.5-G)*L}px)`};if(x.style.left=W(X>0?s/X:0),x.style.top=W(1-n),E.style.left=st(o/360,16),P.style.left=st(r,16),A.setAttribute("aria-valuenow",String(+r.toFixed(2))),I.style.background=`linear-gradient(to right, oklch(${n} ${s} ${o} / 0), oklch(${n} ${s} ${o}))`,x.style.background=`oklch(${n} ${s} ${o})`,P.style.background=`linear-gradient(oklch(${n} ${s} ${o} / ${r}), oklch(${n} ${s} ${o} / ${r})), var(--tw-dropdown-bg)`,o!==c){let pt=kt([h,de(ce(o,"srgb"),h),o],"oklch","srgb");p=`rgb(${N(pt[0]*255,0,255)|0} ${N(pt[1]*255,0,255)|0} ${N(pt[2]*255,0,255)|0})`,c=o}E.style.background=p},q=()=>{if(k.textContent=jn([n,s,o],i),i==="hex"){let X=O.querySelector(".tw-color-chan-input");X&&document.activeElement!==X&&(X.value=Se(n,s,o)+(r<.999?Gt(r):""))}else{let X=Te([n,s,o],i);d.forEach((W,st)=>{W.el.contains(document.activeElement)||W.set(X[st])})}},Z=()=>{B(),v(),H()},ot=()=>e(l()),U=X=>{X&&o!==a&&v(),H(),q()},it=()=>{if(O.replaceChildren(),d=[],i==="hex"){O.classList.add("tw-color-channels--hex");let X=g("div","tw-color-chan"),W=g("input","tw-color-chan-input");W.type="text",W.spellcheck=!1,W.setAttribute("aria-label","Hex color"),Wt(W),W.addEventListener("change",()=>{let st=W.value.trim();/^#?([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(st)&&([n,s,o,r]=Ft(st),U(!0),ot())}),W.addEventListener("keydown",st=>{st.key==="Enter"&&W.blur()}),X.append(lt("span","tw-color-chan-label","HEX"),W),O.append(X)}else{O.classList.remove("tw-color-channels--hex");let X=Te([n,s,o],i);ue[i].forEach((W,st)=>{let pt=_t({label:W.k,value:X[st],min:W.min,max:W.max,step:W.step},L=>{[n,s,o]=Xn([n,s,o],i,st,N(L,W.min,W.max)),U(!0),ot()});d.push(pt),O.append(pt.el)})}q()},wt=X=>Ut(X,m);Kt(m,X=>{let[W,st]=wt(X);n=1-st,s=W*(u?$e(u,n):.4),H(),q(),ot()});let Dt=X=>Ut(X,y)[0]*360;Kt(y,X=>{o=Dt(X),U(!0),ot()});let bt=X=>Ut(X,A)[0];return Kt(A,X=>{r=bt(X),H(),q(),ot()}),A.addEventListener("keydown",X=>{let W=X.shiftKey?.1:.01,st=r;switch(X.key){case"ArrowRight":case"ArrowUp":st+=W;break;case"ArrowLeft":case"ArrowDown":st-=W;break;case"Home":st=0;break;case"End":st=1;break;default:return}X.preventDefault(),r=N(st,0,1),H(),q(),ot()}),j.addEventListener("change",()=>{i=j.value,it(),v(),H(),t.onMode&&t.onMode()}),it(),{el:b,set:X=>{let W=document.activeElement;W&&b.contains(W)&&W.blur(),[n,s,o,r]=Ft(X),U(!0)},get:()=>l(),mode:()=>i,setMode:X=>{X===i||!Ce.includes(X)||(i=X,j.value=X,it(),v(),H())},reflow:Z,swatchCss:()=>`linear-gradient(oklch(${n} ${s} ${o} / ${r}), oklch(${n} ${s} ${o} / ${r})), ${on}`,valueText:()=>nn([n,s,o],i)+(r<.999?i==="hex"?Gt(r):` / ${+r.toFixed(2)}`:"")}}function Us(t,e){let{root:n,trigger:s,right:o}=Zt("tw-color",t.label||"Colour"),r=g("span","tw-trigger-chip tw-color-swatch"),i=g("span","tw-trigger-value");o.append(r,i);let a=g("div","tw-color-pop"),u=()=>{r.style.background=d.swatchCss(),i.textContent=d.valueText()},d=rn({value:t.value,onMode:()=>u()},c=>{u(),e(c)});return a.append(d.el),n.append(a),Rt(n,s,a,{width:240,fallbackH:340,gap:6,onOpen:d.reflow,onReflow:d.reflow}),u(),{el:n,set:c=>{d.set(c),u()},get:()=>d.get()}}var qn=(t,e,n,s)=>s<.999?`oklch(${+t.toFixed(4)} ${+e.toFixed(4)} ${+n.toFixed(2)} / ${+s.toFixed(3)})`:`oklch(${+t.toFixed(4)} ${+e.toFixed(4)} ${+n.toFixed(2)})`;rt("color",Us);var Zs='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" aria-hidden="true"><path d="M12 5v14M5 12h14"/></svg>',Gn=t=>t&&!Array.isArray(t)&&typeof t.interpolation=="string"?t.interpolation:null;function Vn(t){let e=[{color:"oklch(0.72 0.19 25)",pos:0},{color:"oklch(0.72 0.16 280)",pos:1}],s=((Array.isArray(t)?t:t&&Array.isArray(t.stops)?t.stops:null)||[]).map(o=>Array.isArray(o)?{color:String(o[0]),pos:N(+o[1]||0,0,1)}:o&&typeof o=="object"?{color:String(o.color),pos:N(+o.pos||0,0,1)}:null).filter(Boolean);return s.length>=2?s:e}function Js(t,e){let n=Vn(t.value),s=n[0],{root:o,trigger:r,right:i}=Zt("tw-gradient",t.label||"Gradient"),a=g("span","tw-gradient-count"),u=g("span","tw-trigger-chip tw-gradient-preview");i.append(a,u);let d=g("div","tw-color-pop tw-gradient-pop"),c=g("div","tw-gradient-bar-row"),p=g("div","tw-gradient-bar"),l=g("div","tw-gradient-grad"),b=g("div","tw-gradient-rail");p.append(l,b);let m=vt("tw-gradient-add",Zs);m.title="Add a stop after the selected one",m.setAttribute("aria-label","Add a colour stop after the selected one"),c.append(p,m);let f=()=>[...n].sort((h,w)=>h.pos-w.pos),x=()=>f().map(h=>`${h.color} ${(h.pos*100).toFixed(1)}%`).join(", "),y=()=>Bn(j.mode()),S=()=>`linear-gradient(in ${y()} to right, ${x()})`,E=()=>{let h=S();l.style.background=h,u.style.background=`${h}, ${on}`},A=()=>{a.textContent=`${n.length} stop${n.length===1?"":"s"}`},I=()=>({stops:f().map(h=>({color:h.color,pos:+h.pos.toFixed(4)})),interpolation:y()}),P=()=>e(I()),z=h=>[...b.children].find(w=>w._stop===h),j=rn({value:s.color,mode:en(Gn(t.value)||"oklab"),onMode:()=>{E(),P()}},h=>{s.color=h,z(s)?.style.setProperty("--stop",h),E(),P()});d.append(c,j.el),o.append(d);let k=()=>{for(let h of b.children)h.dataset.sel=String(h._stop===s)},O=()=>{b.replaceChildren();for(let h of n){let w=vt("tw-gradient-stop");w._stop=h,w.style.left=h.pos*100+"%",w.style.setProperty("--stop",h.color),w.dataset.sel=String(h===s),w.setAttribute("aria-label","Colour stop");let B=!1;qt(w,{onDown:H=>{H.preventDefault(),H.stopPropagation(),w.focus({focusVisible:!1}),Y(h,!1),B=!1},onMove:H=>{let q=b.getBoundingClientRect();h.pos=N((H.clientX-q.left)/(q.width||1),0,1),w.style.left=h.pos*100+"%",E(),P(),B=n.length>2&&(H.clientY<q.top-24||H.clientY>q.bottom+24),w.dataset.removing=String(B)},onEnd:()=>{B?T(h):w.dataset.removing="false"}}),w.addEventListener("dblclick",H=>{H.preventDefault(),T(h)}),w.addEventListener("keydown",H=>{let q=H.key==="ArrowLeft"?-1:H.key==="ArrowRight"?1:0;q&&(H.preventDefault(),h.pos=N(h.pos+q*(H.shiftKey?.1:.01),0,1),w.style.left=h.pos*100+"%",E(),P())}),b.append(w)}},Y=(h,w)=>{h!==s&&(j.set(h.color),s=h),w?O():k()},J=h=>{let w=b.getBoundingClientRect();return N((h-w.left)/(w.width||1),0,1)},K=h=>{let w=f(),B=w[0],H=w[w.length-1];for(let mt=0;mt<w.length-1;mt++)if(h>=w[mt].pos&&h<=w[mt+1].pos){B=w[mt],H=w[mt+1];break}let q=H.pos>B.pos?N((h-B.pos)/(H.pos-B.pos),0,1):0,Z=Ft(B.color),ot=Ft(H.color),U=mt=>mt[1]<1e-4,it=ot[2]-Z[2];it>180?it-=360:it<-180&&(it+=360),(U(Z)||U(ot))&&(it=0);let wt=(((U(Z)&&!U(ot)?ot[2]:Z[2])+it*q)%360+360)%360;return qn(Z[0]+(ot[0]-Z[0])*q,Z[1]+(ot[1]-Z[1])*q,wt,Z[3]+(ot[3]-Z[3])*q)},T=h=>{if(n.length<=2)return;let w=n.indexOf(h);if(w<0)return;n.splice(w,1);let B=s===h?n[Math.max(0,w-1)]:s;E(),Y(B,!0),A(),P(),z(s)?.focus()},D=h=>{let w={color:K(h),pos:N(h,0,1)};return n.push(w),E(),Y(w,!0),A(),P(),w},v=()=>{let h=f(),w=h.indexOf(s);w<0&&(w=0);let B=w<h.length-1?(h[w].pos+h[w+1].pos)/2:w>0?(h[w-1].pos+h[w].pos)/2:N(h[w].pos+.1,0,1);D(B)};return m.addEventListener("click",h=>{h.stopPropagation(),v()}),p.addEventListener("dblclick",h=>{h.target.closest(".tw-gradient-stop")||(h.preventDefault(),D(J(h.clientX)))}),d.tabIndex=-1,d.addEventListener("keydown",h=>{(h.key==="Delete"||h.key==="Backspace")&&!/^(input|textarea|select)$/i.test(h.target.tagName)&&n.length>2&&(h.preventDefault(),T(s))}),Rt(o,r,d,{width:260,fallbackH:392,gap:6,onOpen:()=>j.reflow(),onReflow:()=>j.reflow()}),O(),E(),A(),{el:o,set:h=>{let w=Gn(h);w&&j.setMode(en(w));let B=Vn(h).sort((H,q)=>H.pos-q.pos);if(B.length===n.length)f().forEach((H,q)=>{H.color=B[q].color,H.pos=B[q].pos;let Z=z(H);Z&&(Z.style.left=H.pos*100+"%",Z.style.setProperty("--stop",H.color))});else{let H=s.pos;n=B,s=n.reduce((q,Z)=>Math.abs(Z.pos-H)<Math.abs(q.pos-H)?Z:q,n[0]),O()}E(),A(),j.set(s.color)},get:()=>I()}}rt("gradient",Js);function Qs(t,e){let n=t.label,s=+t.min,o=+t.max,r=+t.step,i=+(t.value&&t.value[0]),a=+(t.value&&t.value[1]);if(Number.isFinite(s)||(s=Number.isFinite(i)?i:0),Number.isFinite(o)||(o=Number.isFinite(a)?a:1),o<s){let v=s;s=o,o=v}(!(r>0)||r>o-s)&&(r=Ot(s,o));let u=Ht(r),d=v=>oe(v,s,r),c=N(d(Number.isFinite(i)?i:s),s,o),p=N(d(Number.isFinite(a)?a:o),s,o);if(c>p){let v=c;c=p,p=v}let l=g("div","tw-slider-wrap"),b=g("div","tw-slider tw-interval"),m=g("div","tw-slider-fill"),f=g("div","tw-slider-handle"),x=g("div","tw-slider-handle"),y=lt("span","tw-slider-label",n),S=g("span","tw-slider-value");b.append(m,f,x,y,S),l.append(b),[["minimum",f],["maximum",x]].forEach(([v,h])=>{h.tabIndex=0,h.setAttribute("role","slider"),h.setAttribute("aria-label",`${n} ${v}`),h.setAttribute("aria-valuemin",String(s)),h.setAttribute("aria-valuemax",String(o))});let E=v=>(v-s)/(o-s||1)*100,A=()=>{let v=E(c),h=E(p);m.style.left=v+"%",m.style.width=Math.max(0,h-v)+"%",f.style.left=`clamp(5px, calc(${v}% - 1.5px), calc(100% - 9px))`,x.style.left=`clamp(5px, calc(${h}% - 1.5px), calc(100% - 9px))`,S.textContent=`${c.toFixed(u)} \u2013 ${p.toFixed(u)}`,f.setAttribute("aria-valuenow",String(c)),x.setAttribute("aria-valuenow",String(p));let w=l.offsetWidth;if(w){let B=y.offsetLeft,H=B+y.offsetWidth,q=S.offsetLeft,Z=q+S.offsetWidth,ot=U=>{let it=U/100*w,wt=it-1.5,mt=it+1.5;return wt<H&&mt>B||wt<Z&&mt>q};f.classList.toggle("is-dodge",ot(E(c))),x.classList.toggle("is-dodge",ot(E(p)))}};A();let I=()=>e([c,p]),P=v=>{c=N(Math.min(d(v),p),s,o),A()},z=v=>{p=N(Math.max(d(v),c),s,o),A()},j=null,k=1,O=null,Y=null,J=v=>{let h=l.offsetWidth||j.width,w=N((v-j.left)/k/h,0,1);return N(s+w*(o-s),s,o)},K=v=>{let h=J(v);O||(O=h<c?"lo":h>p?"hi":Math.abs(h-c)<=Math.abs(h-p)?"lo":"hi"),O==="lo"?P(h):z(h),I()};b.addEventListener("pointerdown",v=>{if(!(v.button!==0||j)){v.preventDefault();try{v.target.setPointerCapture(v.pointerId)}catch{}Y=v.pointerId,j=l.getBoundingClientRect(),k=j.width/(l.offsetWidth||j.width),b.classList.add("is-active","is-dragging"),O=null,K(v.clientX),(O==="lo"?f:x).focus({focusVisible:!1})}}),b.addEventListener("pointermove",v=>{if(!(!j||v.pointerId!==Y)){if(v.buttons===0){T();return}K(v.clientX)}});let T=v=>{v&&v.pointerId!==Y||(j=null,O=null,Y=null,b.classList.remove("is-active","is-dragging"))};b.addEventListener("pointerup",T),b.addEventListener("pointercancel",T),b.addEventListener("lostpointercapture",T),me(b,A),St(A),Tt(b,[[window,"resize"],[window,"tw-reflow"]],A);let D=v=>h=>{let w=h.shiftKey?10:1,B=v==="lo"?c:p;switch(h.key){case"ArrowRight":case"ArrowUp":B+=r*w;break;case"ArrowLeft":case"ArrowDown":B-=r*w;break;case"Home":B=v==="lo"?s:c;break;case"End":B=v==="lo"?p:o;break;default:return}h.preventDefault(),v==="lo"?P(B):z(B),I()};return f.addEventListener("keydown",D("lo")),x.addEventListener("keydown",D("hi")),{el:l,set:v=>{if(Array.isArray(v)){let h=+v[0],w=+v[1];if(!Number.isFinite(h)||!Number.isFinite(w))return;c=N(d(Math.min(h,w)),s,o),p=N(d(Math.max(h,w)),s,o),A()}},get:()=>[c,p]}}rt("interval",Qs);var to=0;function eo(t){let e=`tw-tabs-${++to}`,n=g("div","tw-tabs"),s=g("div","tw-tabs-bar");s.setAttribute("role","tablist");let o=g("div","tw-tabs-pill");s.append(o);let r=g("div","tw-tabs-pages"),i=[],a=t.pages.map((c,p)=>{let l=lt("button","tw-tabs-tab",c.title);l.type="button",l.setAttribute("role","tab"),l.dataset.active=String(p===0),l.setAttribute("aria-selected",String(p===0)),l.tabIndex=p===0?0:-1,l.id=`${e}-tab-${p}`,l.setAttribute("aria-controls",`${e}-page-${p}`);let b=g("div","tw-tabs-page tw-controls");return b.dataset.active=String(p===0),b.setAttribute("role","tabpanel"),b.id=`${e}-page-${p}`,b.setAttribute("aria-labelledby",l.id),i.push(b),r.append(b),l.addEventListener("click",()=>d(p)),s.append(l),l});n.append(s,r);let u=c=>we(s,o,c);function d(c){a.forEach((p,l)=>{p.dataset.active=String(l===c),p.setAttribute("aria-selected",String(l===c)),p.tabIndex=l===c?0:-1}),i.forEach((p,l)=>p.dataset.active=String(l===c)),u(!0),requestAnimationFrame(()=>window.dispatchEvent(new Event("tw-reflow")))}return s.addEventListener("keydown",c=>{let p=a.findIndex(b=>b.dataset.active==="true");if(p<0)return;let l=ie(c.key,p,a.length,-1);l<0||(c.preventDefault(),d(l),a[l].focus())}),St(u),{el:n,bodies:i}}rt("tabs",eo);function no(t,e){let n=t.value||"",s=g("div","tw-row tw-image-row"),o=vt("tw-image-drop");o.setAttribute("aria-label",`${t.label}: choose an image`);let r=g("span","tw-image-thumb"),i=g("span","tw-image-text");o.append(r,i);let a=g("input","tw-image-input");a.type="file",a.accept="image/*",s.append(lt("span","tw-row-label",t.label),o,a);let u=()=>{o.dataset.set=n?"true":"false",r.style.backgroundImage=n?`url("${n}")`:"",i.textContent=n?"Replace":"Drop or choose"},d=c=>{if(!c||!c.type.startsWith("image/"))return;let p=new FileReader;p.onload=()=>{n=String(p.result),u(),e(n)},p.readAsDataURL(c)};return o.addEventListener("click",()=>a.click()),a.addEventListener("change",()=>{a.files[0]&&d(a.files[0])}),s.addEventListener("dragover",c=>{c.preventDefault(),s.dataset.over="true"}),s.addEventListener("dragleave",()=>{s.dataset.over="false"}),s.addEventListener("drop",c=>{c.preventDefault(),s.dataset.over="false",c.dataTransfer.files[0]&&d(c.dataTransfer.files[0])}),u(),{el:s,set:c=>{n=c||"",u()},get:()=>n}}rt("image",no);function so(t){let e=g("div","tw-fps"),n=lt("span","tw-fps-val","\u2014"),s=document.createElement("canvas");s.className="tw-fps-canvas",e.append(lt("span","tw-fps-label",t.label||"FPS"),n,s);let o=s.getContext("2d"),r=80,i=new Array(r).fill(0),a=120,u=0,d=0,c=0,p=0,l=0,b=!1,m=()=>{[p,l]=Xe(s,o,2)},f=()=>{if(p){o.clearRect(0,0,p,l),o.strokeStyle=re(e),o.lineWidth=1.5,o.lineJoin="round",o.beginPath();for(let y=0;y<r;y++){let S=i[(u+y)%r],E=y/(r-1)*p,A=l-Math.min(S/a,1)*l;y?o.lineTo(E,A):o.moveTo(E,A)}o.stroke()}},x=y=>{if(!s.isConnected){if(b){window.removeEventListener("resize",m),window.removeEventListener("tw-reflow",m),c=0;return}d=0,c=requestAnimationFrame(x);return}if(b||(b=!0,m()),d){let S=1e3/(y-d);i[u]=S,u=(u+1)%r,n.textContent=Math.round(S),f()}d=y,c=requestAnimationFrame(x)};return requestAnimationFrame(()=>{m(),c=requestAnimationFrame(x)}),window.addEventListener("resize",m),window.addEventListener("tw-reflow",m),It(e)}function oo(t){let e=typeof t.get=="function"?t.get:()=>t.value,n=Math.max(30,Number.isFinite(+t.interval)?+t.interval:200),s;try{s=e()}catch{}let o=typeof s=="number",r=t.view==="graph"||o&&t.graph!==!1&&t.view!=="text"&&t.rows==null,i=g("div","tw-fps tw-monitor"),a=lt("span","tw-fps-val","\u2014");i.append(lt("span","tw-fps-label",t.label||"Monitor"),a);let u=0,d=()=>{},c=!1,p=P=>typeof P=="number"?Number.isInteger(P)?String(P):P.toFixed(t.decimals??2):String(P),l=()=>{u&&clearInterval(u),u=0,window.removeEventListener("resize",d),window.removeEventListener("tw-reflow",d)},b=P=>{u=setInterval(()=>{if(!i.isConnected){c&&l();return}c=!0;let z;try{z=e()}catch{return}P(z)},n)};if(!r&&t.rows){a.remove();let P=Math.max(1,Math.floor(+t.rows)||1),z=g("pre","tw-monitor-buffer");z.style.setProperty("--tw-monitor-rows",P),i.append(z);let j=[];return b(k=>{for(j.push(p(k));j.length>P;)j.shift();z.textContent=j.join(`
|
|
2
|
-
`)}),It(i)}if(!r)return b(P=>{a.textContent=p(P)}),It(i);let m=document.createElement("canvas");m.className="tw-fps-canvas",i.append(m);let f=m.getContext("2d"),x=80,y=new Array(x).fill(NaN),S=0,E=0,A=0;d=()=>{[E,A]=Xe(m,f,2)};let I=()=>{if(E||d(),!E)return;let P=t.min,z=t.max;if(P==null||z==null){let O=1/0,Y=-1/0;for(let K of y)Number.isNaN(K)||(K<O&&(O=K),K>Y&&(Y=K));O===1/0?(O=0,Y=1):O===Y&&(O-=.5,Y+=.5);let J=(Y-O)*.1;P==null&&(P=O-J),z==null&&(z=Y+J)}let j=z-P||1;f.clearRect(0,0,E,A),f.strokeStyle=re(i),f.lineWidth=1.5,f.lineJoin="round",f.beginPath();let k=!1;for(let O=0;O<x;O++){let Y=y[(S+O)%x];if(Number.isNaN(Y))continue;let J=O/(x-1)*E,K=A-N((Y-P)/j,0,1)*A;k?f.lineTo(J,K):(f.moveTo(J,K),k=!0)}f.stroke()};return b(P=>{typeof P=="number"&&(y[S]=P,S=(S+1)%x,a.textContent=p(P),I())}),requestAnimationFrame(()=>{d(),I()}),window.addEventListener("resize",d),window.addEventListener("tw-reflow",d),It(i)}rt("fpsgraph",so);rt("monitor",oo);function ro(t,e,n,s=64){let o=Math.sqrt(t/n),r=e/(2*Math.sqrt(t*n)),i=Math.min(2.2,9/Math.max(r*o,.5)),a=[];for(let u=0;u<s;u++){let d=u/(s-1)*i,c;if(r<1-1e-4){let p=o*Math.sqrt(1-r*r);c=1-Math.exp(-r*o*d)*(Math.cos(p*d)+r*o/p*Math.sin(p*d))}else if(r<=1+1e-4)c=1-Math.exp(-o*d)*(1+o*d);else{let p=Math.sqrt(r*r-1),l=o*(r+p),b=o*(r-p);c=1-(l*Math.exp(-b*d)-b*Math.exp(-l*d))/(l-b)}a.push(c)}return a}function io(t,e){let n=(E,A,I)=>Number.isFinite(+E)?Math.max(A,+E):I,s=E=>({stiffness:n(E.stiffness,1,300),damping:n(E.damping,.5,26),mass:n(E.mass,.1,1)}),o=s({stiffness:300,damping:26,mass:1,...t.value||{}}),r=g("div","tw-spring"),i=g("div","tw-spring-viz"),a=document.createElement("canvas");a.className="tw-spring-canvas",i.append(a);let u=g("div","tw-fields");r.append(i,u);let d=a.getContext("2d"),c=()=>{let E=i.getBoundingClientRect(),A=Math.max(1,Math.round(E.width)),I=Math.max(1,Math.round(E.height));if(A<2)return;let P=window.devicePixelRatio||1;a.width=A*P,a.height=I*P,d.setTransform(P,0,0,P,0,0),d.clearRect(0,0,A,I);let z=ro(o.stiffness,o.damping,o.mass,Math.max(160,Math.round(A*P))),j=Math.max(1.05,...z),k=6,O=J=>k+J/(z.length-1)*(A-2*k),Y=J=>I-k-J/j*(I-2*k);d.strokeStyle=bn(r,"--tw-surface-active")||"rgba(255,255,255,0.1)",d.lineWidth=1,d.beginPath(),d.moveTo(k,Y(1)),d.lineTo(A-k,Y(1)),d.stroke(),d.strokeStyle=re(r),d.lineWidth=1.5,d.lineJoin=d.lineCap="round",d.beginPath(),z.forEach((J,K)=>K?d.lineTo(O(K),Y(J)):d.moveTo(O(K),Y(J))),d.stroke()},p=()=>e({...o}),l={};[["stiffness","Stiffness",1],["damping","Damping",.5],["mass","Mass",.1]].forEach(([E,A,I])=>{l[E]=_t({label:A,value:o[E],step:I,min:I},P=>{o[E]=P,c(),p()}),u.append(l[E].el)});let b=1,m=500,f=1,x=40,y=null,S=E=>{if(!y)return;let A=N((E.clientX-y.left)/y.width,0,1),I=N((E.clientY-y.top)/y.height,0,1);o.stiffness=Math.round(b+A*(m-b)),o.damping=Math.round((f+I*(x-f))*10)/10,l.stiffness.set(o.stiffness),l.damping.set(o.damping),c(),p()};return qt(i,{onDown:E=>{E.preventDefault(),y=i.getBoundingClientRect(),i.classList.add("is-dragging"),S(E)},onMove:S,onEnd:()=>{y=null,i.classList.remove("is-dragging")}}),St(c),Tt(a,[[window,"resize"],[window,"tw-reflow"],[matchMedia("(prefers-color-scheme: dark)"),"change"],[window,"tw-retheme"]],c),{el:r,set:E=>{o=s({...o,...E||{}}),Object.keys(l).forEach(A=>l[A].set(o[A])),c()},get:()=>({...o})}}rt("spring",io);function ao(t,e){let n=[.25,.1,.25,1],s=Array.isArray(t.value)&&t.value.length===4?t.value.map(Number):n.slice();s.some(T=>!Number.isFinite(T))&&(s=n.slice());let o=-.25,r=1.25,i=r-o,a=8,u=g("div","tw-bezier"),d=g("div","tw-bezier-graph"),c=Et("svg","tw-bezier-svg");c.setAttribute("preserveAspectRatio","none");let p=Et("line","tw-bezier-guide"),l=Et("line","tw-bezier-guide"),b=Et("line","tw-bezier-diag"),m=Et("line","tw-bezier-ctl"),f=Et("line","tw-bezier-ctl"),x=Et("path","tw-bezier-curve");c.append(p,l,b,m,f,x);let y=vt("tw-bezier-handle");y.setAttribute("aria-label","Control point 1");let S=vt("tw-bezier-handle");S.setAttribute("aria-label","Control point 2"),d.append(c,y,S);let E=g("div","tw-fields tw-bezier-fields");u.append(d,E);let A=0,I=0,P=T=>a+T*(A-2*a),z=T=>I-a-(T-o)/i*(I-2*a),j=(T,D,v,h,w)=>{T.setAttribute("x1",D),T.setAttribute("y1",v),T.setAttribute("x2",h),T.setAttribute("y2",w)},k=()=>{if(A=d.offsetWidth,I=d.offsetHeight,A<2)return;c.setAttribute("viewBox",`0 0 ${A} ${I}`);let[T,D,v,h]=s,w=P(0),B=z(0),H=P(1),q=z(1),Z=P(T),ot=z(D),U=P(v),it=z(h);j(p,a,B,A-a,B),j(l,a,q,A-a,q),j(b,w,B,H,q),j(m,w,B,Z,ot),j(f,H,q,U,it),x.setAttribute("d",`M${w},${B} C${Z},${ot} ${U},${it} ${H},${q}`),y.style.left=Z+"px",y.style.top=ot+"px",S.style.left=U+"px",S.style.top=it+"px"},O=[{label:"X1",i:0,lo:0,hi:1},{label:"Y1",i:1,lo:o,hi:r},{label:"X2",i:2,lo:0,hi:1},{label:"Y2",i:3,lo:o,hi:r}],Y=O.map(T=>{let D=_t({label:T.label,value:s[T.i],step:.01,min:T.lo,max:T.hi},v=>{s[T.i]=v,k(),e(s.slice())});return E.append(D.el),D}),J=()=>Y.forEach((T,D)=>T.set(s[O[D].i])),K=(T,D)=>{let v=null,h=0,w=0,B=1;qt(T,{onDown:H=>{H.preventDefault(),v=d.getBoundingClientRect(),h=d.offsetWidth||v.width,w=d.offsetHeight||v.height,B=v.width/h,T.classList.add("is-dragging"),T.focus({focusVisible:!1})},onMove:H=>{let q=(H.clientX-v.left)/B,Z=(H.clientY-v.top)/B,ot=N((q-a)/(h-2*a),0,1),U=N(o+(w-a-Z)/(w-2*a)*i,o,r);s[D*2]=+ot.toFixed(2),s[D*2+1]=+U.toFixed(2),k(),J(),e(s.slice())},onEnd:()=>{v=null,T.classList.remove("is-dragging")}})};return K(y,0),K(S,1),St(k),Tt(u,[[window,"resize"],[window,"tw-reflow"]],k),{el:u,set:T=>{if(Array.isArray(T)&&T.length===4){let D=T.map(Number);if(D.some(v=>!Number.isFinite(v)))return;s=D.map((v,h)=>N(v,O[h].lo,O[h].hi)),k(),J()}},get:()=>s.slice()}}rt("cubicbezier",ao);function lo(t,e){let n=t.components,{root:s,trigger:o,right:r}=Zt("tw-point",t.label||"Point"),i=g("span","tw-trigger-value"),a=g("div","tw-trigger-chip tw-point-preview"),u=g("div","tw-point-preview-dot");a.append(u),r.append(i,a);let d=g("div","tw-color-pop tw-point-pop"),c=g("div","tw-point-body");d.append(c);let p=t.pad!==!1&&n.length>=2,l=n[0],b=n[1],m=l?.min??-1,f=l?.max??1,x=b?.min??-1,y=b?.max??1,S=(T,D,v)=>v>D?N((T-D)/(v-D),0,1):.5,E=null,A=null,I=null;if(p){E=g("div","tw-pad"),A=g("div","tw-pad-thumb");let T=Et("svg","tw-pad-line");T.setAttribute("viewBox","0 0 100 100"),T.setAttribute("preserveAspectRatio","none"),I=Et("line"),T.append(I);let D=S(0,x,y);I.setAttribute("x1",S(0,m,f)*100),I.setAttribute("y1",(t.invertY?D:1-D)*100),E.append(g("div","tw-pad-axis tw-pad-axis-x"),g("div","tw-pad-axis tw-pad-axis-y"),T,A),c.append(E)}let P=g("div","tw-fields");c.append(P);let z=()=>{K(),J()},j=()=>e(O()),k=n.map(T=>{let D=_t({label:T.label,value:T.value??0,step:T.step??1,min:T.min,max:T.max},()=>{z(),j()});return P.append(D.el),D}),O=()=>Object.fromEntries(n.map((T,D)=>[T.key,k[D].get()])),Y=(T,D)=>(+T).toFixed(Ht(D??1)),J=()=>{i.textContent=n.map((T,D)=>Y(k[D].get(),T.step)).join(", ")},K=()=>{u.style.left="50%",u.style.top="50%"};if(p){let D=h=>`calc(${(h*100).toFixed(2)}% + ${((.5-h)*5).toFixed(2)}px)`;K=()=>{let h=S(k[0].get(),m,f),w=S(k[1].get(),x,y),B=t.invertY?w:1-w,H=h*100,q=B*100;A.style.left=H+"%",A.style.top=q+"%",u.style.left=D(h),u.style.top=D(B),I.setAttribute("x2",H),I.setAttribute("y2",q)},Kt(E,h=>{let[w,B]=Ut(h,E),H=t.invertY?B:1-B;k[0].set(m+w*(f-m)),k[1].set(x+H*(y-x)),z(),j()})}return s.append(d),Rt(s,o,d,{width:216,fallbackH:240,gap:6,onOpen:z}),z(),{el:s,set:T=>{T&&n.forEach((D,v)=>{T[D.key]!=null&&k[v].set(T[D.key])}),z()},get:O}}rt("point",lo);var co=Object.assign(Object.create(null),{sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:Math.atan2,sinh:Math.sinh,cosh:Math.cosh,tanh:Math.tanh,sqrt:Math.sqrt,cbrt:Math.cbrt,abs:Math.abs,exp:Math.exp,log:Math.log,ln:Math.log,log10:Math.log10,log2:Math.log2,floor:Math.floor,ceil:Math.ceil,round:Math.round,sign:Math.sign,trunc:Math.trunc,min:Math.min,max:Math.max,pow:Math.pow,hypot:Math.hypot,mod:(t,e)=>t%e,clamp:(t,e,n)=>Math.min(Math.max(t,e),n)}),Kn=Object.assign(Object.create(null),{pi:Math.PI,e:Math.E,tau:Math.PI*2,phi:(1+Math.sqrt(5))/2});function an(t){if(typeof t!="string"||!t.trim()||t.length>512)return null;let e=t,n=[],s=/\d*\.?\d+(?:[eE][+-]?\d+)?/y,o=/[A-Za-z_]\w*/y,r=0;for(;r<e.length;){let f=e[r];if(f===" "||f===" "||f===`
|
|
3
|
-
`){r++;continue}if(f>="0"&&f<="9"||f==="."&&e[r+1]>="0"&&e[r+1]<="9"){s.lastIndex=r;let x=s.exec(e);if(!x||x.index!==r)return null;n.push({t:"num",v:parseFloat(x[0])}),r=s.lastIndex;continue}if(f>="A"&&f<="Z"||f>="a"&&f<="z"||f==="_"){o.lastIndex=r;let x=o.exec(e);n.push({t:"id",v:x[0]}),r=o.lastIndex;continue}if(f==="*"&&e[r+1]==="*"){n.push({t:"op",v:"^"}),r+=2;continue}if("+-*/%^".includes(f)){n.push({t:"op",v:f}),r++;continue}if(f==="("){n.push({t:"lp"}),r++;continue}if(f===")"){n.push({t:"rp"}),r++;continue}if(f===","){n.push({t:"comma"}),r++;continue}return null}if(!n.length)return null;let i=0,a=()=>n[i],u=f=>{let x=n[i];return!x||f&&x.t!==f?null:(i++,x)},d=()=>{let f=c();if(!f)return null;for(;a()&&a().t==="op"&&(a().v==="+"||a().v==="-");){let x=u("op").v,y=c();if(!y)return null;let S=f;f=x==="+"?E=>S(E)+y(E):E=>S(E)-y(E)}return f},c=()=>{let f=p();if(!f)return null;for(;a()&&a().t==="op"&&(a().v==="*"||a().v==="/"||a().v==="%");){let x=u("op").v,y=p();if(!y)return null;let S=f;f=x==="*"?E=>S(E)*y(E):x==="/"?E=>S(E)/y(E):E=>S(E)%y(E)}return f},p=()=>{if(a()&&a().t==="op"&&(a().v==="-"||a().v==="+")){let f=u("op").v,x=p();return x?f==="-"?y=>-x(y):x:null}return l()},l=()=>{let f=b();if(!f)return null;if(a()&&a().t==="op"&&a().v==="^"){u("op");let x=p();return x?y=>Math.pow(f(y),x(y)):null}return f},b=()=>{let f=a();if(!f)return null;if(f.t==="num")return u("num"),()=>f.v;if(f.t==="lp"){u("lp");let x=d();return!x||!u("rp")?null:x}if(f.t==="id"){u("id");let x=f.v.toLowerCase();if(a()&&a().t==="lp"){let y=co[x];if(!y)return null;u("lp");let S=[];if(a()&&a().t!=="rp")do{let E=d();if(!E)return null;S.push(E)}while(u("comma"));return u("rp")?E=>y(...S.map(A=>A(E))):null}if(x==="x")return y=>y;if(x in Kn){let y=Kn[x];return()=>y}return null}return null},m=d();return m&&i===n.length?m:null}function uo(t,e){let n=Number(t.xMin),s=Number(t.xMax);if(Number.isFinite(n)||(n=-10),Number.isFinite(s)||(s=10),s<n){let S=n;n=s,s=S}s===n&&(n-=1,s+=1);let o=Math.max(2,Math.min(4096,t.samples|0||256)),r=Number.isFinite(t.yMin)&&Number.isFinite(t.yMax)&&+t.yMax>+t.yMin,i=t.editable!==!1&&!t.fn,a=t.expr!=null?String(t.expr):"",u=typeof t.fn=="function"?t.fn:an(a),d=g("div","tw-plot");t.label&&d.append(lt("div","tw-plot-label",t.label));let c=g("div","tw-plot-graph"),p=Et("svg","tw-plot-svg");p.setAttribute("preserveAspectRatio","none");let l=Et("line","tw-plot-axis"),b=Et("line","tw-plot-axis"),m=Et("path","tw-plot-curve");p.append(l,b,m),c.append(p),d.append(c);let f=null;if(i){let S=g("div","tw-plot-field");f=g("input","tw-plot-input"),f.type="text",f.value=a,f.spellcheck=!1,f.autocapitalize="off",f.autocomplete="off",f.setAttribute("aria-label",`${t.label||"Plot"} \u2014 expression in x`),S.append(g("span","tw-plot-fx","y ="),f),d.append(S)}let x=6,y=()=>{let S=c.getBoundingClientRect(),E=S.width,A=S.height;if(E<2)return;p.setAttribute("viewBox",`0 0 ${E} ${A}`);let I=typeof u=="function",P=[],z=1/0,j=-1/0;if(I)for(let v=0;v<o;v++){let h=n+(s-n)*(v/(o-1)),w;try{w=u(h)}catch{w=NaN}P.push(w),Number.isFinite(w)&&(w<z&&(z=w),w>j&&(j=w))}let k=t.yMin,O=t.yMax;if(!r)if(!Number.isFinite(z)||z===j){let v=Number.isFinite(z)?z:0;k=v-1,O=v+1}else{let v=(j-z)*.12;k=z-v,O=j+v}let Y=v=>x+(v-n)/(s-n)*(E-2*x),J=v=>A-x-(v-k)/(O-k)*(A-2*x),K=(v,h,w,B,H,q)=>{v.style.display=q?"":"none",q&&(v.setAttribute("x1",h),v.setAttribute("y1",w),v.setAttribute("x2",B),v.setAttribute("y2",H))};K(l,x,J(0),E-x,J(0),k<=0&&O>=0),K(b,Y(0),x,Y(0),A-x,n<=0&&s>=0);let T="",D=!1;if(I)for(let v=0;v<o;v++){let h=P[v];if(!Number.isFinite(h)){D=!1;continue}let w=Y(n+(s-n)*(v/(o-1))),B=N(J(h),-1e4,1e4);T+=(D?"L":"M")+w.toFixed(1)+","+B.toFixed(1)+" ",D=!0}m.setAttribute("d",T),d.classList.toggle("is-invalid",i&&!I)};return i&&f.addEventListener("input",()=>{a=f.value;let S=an(a);S?u=S:u=null,y(),e(a)}),St(y),Tt(d,[[window,"resize"],[window,"tw-reflow"]],y),{el:d,get:()=>a,set:S=>{S!=null&&(a=String(S),f&&(f.value=a),t.fn||(u=an(a)),y())}}}rt("plot",uo);var ln={},_e={},po=t=>ve(t)||!ln[t]?null:_e[t]||(_e[t]=ln[t]().catch(e=>{throw delete _e[t],console.error(`[tweaks] control chunk "${t}" failed to load:`,e),e})),cn=(t,e=new Set)=>{for(let n of t)if(n&&(ln[n.type]&&e.add(n.type),n.children&&cn(n.children,e),n.pages))for(let s of n.pages)cn(s.children,e);return e},ls=t=>{let e=[...cn(t)].map(po).filter(Boolean);return e.length?Promise.all(e):null};function Fe(t,e,n=0){if(t==="__proto__"||t==="constructor"||t==="prototype")return null;let s=fo(t,e,n);return s&&e&&typeof e=="object"&&(typeof e.render=="function"&&(s.render=e.render),e.disabled!=null&&(s.disabled=e.disabled),e.hint!=null&&(s.hint=String(e.hint))),s}var Vt=t=>t&&typeof t=="object",un=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Un=(t,e)=>t!==e&&!(Vt(t)&&Vt(e)&&JSON.stringify(t)===JSON.stringify(e)),Zn=(t,e,n)=>Array.isArray(t.options)&&{type:"radiogrid",key:e,label:n,options:t.options,value:t.value??Pt(t.options[0]),cols:t.cols},Jn={slider:(t,e,n)=>{let s=t.min??0,o=t.max??1;return{type:"slider",key:e,label:n,value:t.value??s,min:s,max:o,step:t.step??Ot(s,o),soft:t.soft}},number:(t,e,n)=>({type:"number",key:e,label:n,value:t.value??0,min:t.min,max:t.max,step:t.step??1,soft:t.soft}),checkbox:(t,e,n)=>({type:"checkbox",key:e,label:n,value:!!t.value}),radiogrid:Zn,segmented:Zn,list:(t,e,n)=>Array.isArray(t.options)&&{type:"list",key:e,label:n,options:t.options,value:t.value??Pt(t.options[0])},color:(t,e,n)=>({type:"color",key:e,label:t.label||n,value:t.value}),text:(t,e,n)=>({type:"text",key:e,label:n,value:t.value??"",rows:t.rows,placeholder:t.placeholder}),interval:(t,e,n)=>{let s=t.min??0,o=t.max??1;return{type:"interval",key:e,label:n,value:(Array.isArray(t.value)?t.value:[s,o]).map(Number),min:s,max:o,step:t.step??Ot(s,o)}},spring:(t,e,n)=>{let s=Vt(t.value)?t.value:t;return{type:"spring",key:e,label:n,value:{stiffness:s.stiffness??300,damping:s.damping??26,mass:s.mass??1}}},cubicbezier:(t,e,n)=>({type:"cubicbezier",key:e,label:n,value:Array.isArray(t.value)&&t.value.length===4?t.value.map(Number):[.25,.1,.25,1]}),point:(t,e,n)=>Array.isArray(t.components)&&{type:"point",key:e,label:n,components:t.components,pad:t.pad,invertY:t.invertY,value:Object.fromEntries(t.components.map(s=>[s.key,s.value??0]))},gradient:(t,e,n)=>({type:"gradient",key:e,label:n,value:t.value??t.stops??null}),image:(t,e,n)=>({type:"image",key:e,label:n,value:t.value||""}),plot:(t,e,n)=>{let s=t.expr!=null?String(t.expr):typeof t.fn=="function"?"":"sin(x)";return{type:"plot",key:e,label:n,value:s,expr:s,fn:typeof t.fn=="function"?t.fn:null,xMin:t.xMin??t.min??-10,xMax:t.xMax??t.max??10,yMin:t.yMin,yMax:t.yMax,samples:t.samples,editable:t.editable}},fpsgraph:(t,e,n)=>({type:"fpsgraph",key:e,label:t.label||n}),monitor:(t,e,n)=>({type:"monitor",key:e,label:n,get:t.get,value:t.value,graph:t.graph,view:t.view,min:t.min,max:t.max,interval:t.interval,rows:t.rows,decimals:t.decimals}),buttongroup:(t,e,n)=>({type:"buttongroup",key:e,label:n,buttons:t.buttons}),separator:(t,e,n)=>({type:"separator",key:e,label:n}),tabs:(t,e,n,s)=>{if(!t.pages||typeof t.pages!="object")return!1;let o=new Set;return{type:"tabs",key:e,label:n,pages:Object.entries(t.pages).map(([r,i])=>{let a=r.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",u=a,d=2;for(;o.has(u);)u=`${a}-${d++}`;return o.add(u),{key:u,title:r,children:Object.entries(i).map(([c,p])=>Fe(c,p,(s||0)+1)).filter(Boolean)}})}}};function fo(t,e,n=0){if(n>64)return null;let s=he(t);if(Vt(e)&&!Array.isArray(e)&&un(Jn,e.type)){let o;try{o=Jn[e.type](e,t,s,n)}catch(r){return console.error(`[tweaks] malformed "${e.type}" schema value for "${t}" \u2014 control skipped:`,r),null}if(o)return o}if(Array.isArray(e)&&Array.isArray(e[0])&&e[0].length===2&&typeof e[0][0]=="number"){let o=Number.isFinite(+e[1])?+e[1]:+e[0][0],r=Number.isFinite(+e[2])?+e[2]:+e[0][1];return{type:"interval",key:t,label:s,value:e[0].map(Number),min:o,max:r,step:e[3]??Ot(o,r)}}if(Array.isArray(e)&&e.length<=4&&typeof e[0]=="number"){let o=e[0],[r,i]=De(o),a=e.length>1?e[1]:r,u=e.length>2?e[2]:i;return{type:"slider",key:t,label:s,value:o,min:a,max:u,step:e[3]??Ot(a,u)}}if(typeof e=="number"){let[o,r]=De(e);return{type:"slider",key:t,label:s,value:e,min:o,max:r,step:Ot(o,r)}}return typeof e=="boolean"?{type:"checkbox",key:t,label:s,value:e}:Array.isArray(e)?{type:"list",key:t,label:s,options:e,value:Pt(e[0])}:Vt(e)&&typeof e.action=="function"?{type:"button",key:t,label:e.label||s,action:e.action}:Vt(e)&&Array.isArray(e.options)?{type:"list",key:t,label:s,options:e.options,value:e.value??Pt(e.options[0])}:gn(e)?{type:"color",key:t,label:s,value:e}:typeof e=="string"?{type:"text",key:t,label:s,value:e}:Vt(e)?{type:"folder",key:t,label:s,children:Object.entries(e).filter(([o,r])=>!(o==="render"&&typeof r=="function")&&!((o==="disabled"||o==="hint")&&r!=null)).map(([o,r])=>Fe(o,r,n+1)).filter(Boolean)}:null}var ho=3,Qn=32,ts=200,es=8;function mo(t,e){let n=t.label,s=+t.min,o=+t.max,r=+t.step;if(Number.isFinite(s)||(s=0),Number.isFinite(o)||(o=s+100),o<s){let L=s;s=o,o=L}(!(r>0)||r>o-s)&&(r=Ot(s,o));let i=(o-s)/r<=6,a=Number.isFinite(+t.value)?+t.value:s,u=t.soft&&!i?a:N(a,s,o),d=0,c=Ht(r),p=g("div","tw-slider-wrap"),l=g("div","tw-slider"),b=g("div","tw-slider-hashmarks"),m=g("div","tw-slider-fill"),f=g("div","tw-slider-handle"),x=lt("span","tw-slider-label",n),y=g("span","tw-slider-value");l.append(b,m,f,x,y),p.append(l),l.tabIndex=0,l.setAttribute("role","slider"),l.setAttribute("aria-label",n),l.setAttribute("aria-valuemin",String(s)),l.setAttribute("aria-valuemax",String(o));let S=L=>oe(L,s,r),E=i?Array.from({length:Math.max(0,Math.round((o-s)/r)-1)},(L,G)=>(G+1)*r/(o-s)*100):[];for(let L of E){let G=g("div","tw-slider-hashmark");G.style.left=L+"%",b.append(G)}let A=()=>{let L=N((u-s)/(o-s||1)*100,0,100),G=d?` + ${d.toFixed(1)}px`:"",Q=`${L}%${G}`;m.style.width=d?`calc(${Q})`:L+"%",f.style.left=`max(5px, calc(${Q} - 9px))`;let gt=S(u),ft=gt.toFixed(c);y.textContent=ft,l.setAttribute("aria-valuenow",String(gt)),l.setAttribute("aria-valuetext",ft);let At=p.offsetWidth;if(At){let _=Math.max(5,L/100*At+d-9),et=0,V=x.offsetLeft,tt=V+x.offsetWidth,$=y.offsetLeft,M=$+y.offsetWidth,R=_<tt&&_+3>V,F=_<M+et&&_+3>$-et;l.classList.toggle("is-dodge",R||F)}};A();let I=null,P=1,z=null,j=!0,k,O=null,Y=null,J="width 0.34s cubic-bezier(0.34,1.2,0.64,1)",K="left 0.34s cubic-bezier(0.34,1.2,0.64,1), opacity 0.15s, transform 0.2s cubic-bezier(0.22,1,0.36,1)",T=.2,D=L=>{if(!I)return u;let G=p.offsetWidth||I.width,Q=N((L-I.left)/P/G,0,1);return N(s+Q*(o-s),s,o)},v=L=>{let G=0;L<I.left?G=-es*Math.sqrt(Math.min(Math.max(0,I.left-L-Qn)/ts,1)):L>I.right&&(G=es*Math.sqrt(Math.min(Math.max(0,L-I.right-Qn)/ts,1))),l.style.width=`calc(100% + ${Math.abs(G)}px)`,l.style.transform=G<0?`translateX(${G}px)`:""},h=(L,G=!0)=>{L=+L,Number.isFinite(L)&&(u=i?N(S(L),s,o):t.soft?L:N(L,s,o),A(),G&&e(S(u)))},w=Math.max(1,Math.round((o-s)/r)),B=.2,H=.3,q=520,Z=27,ot=L=>(L-s)/r,U=0,it=0,wt=0,mt=!1,Dt=null,zt=u,bt=0,yt=()=>{wt&&cancelAnimationFrame(wt),wt=0,bt=0},X=L=>{if(!l.isConnected){yt();return}let G=bt?Math.min((L-bt)/1e3,.05):1/60;bt=L;let Q=p.offsetWidth||I&&I.width||1,gt=ot(N(zt,s,o)),ft=N(Math.round(gt+B),0,w),At=mt?ft+H*N(gt-ft,-.5,.5):ft,xt=G,Yt=1/240;for(;xt>1e-4;){let _=Math.min(Yt,xt);xt-=_;let et=q*(At-U)-Z*it;it+=et*_,U+=it*_,U<0&&(U=0,it=0),U>w&&(U=w,it=0)}d=(U-ft)*r/(o-s||1)*Q,u=N(s+ft*r,s,o),A(),ft!==Dt&&(Dt=ft,e(S(u))),!mt&&Math.abs(it)<.004&&Math.abs(U-ft)<.004?(U=ft,it=0,d=0,A(),yt(),l.classList.remove("is-active")):wt=requestAnimationFrame(X)},W=L=>{U=ot(u),it=0,mt=!0,Dt=Math.round(ot(u)),zt=D(L),wt||(wt=requestAnimationFrame(X))};l.addEventListener("pointerdown",L=>{if(!y.classList.contains("is-editing")&&!(L.button!==0||z)){L.preventDefault(),l.focus({focusVisible:!1}),Y=L.pointerId;try{L.target.setPointerCapture(L.pointerId)}catch{}clearTimeout(k),l.style.transition="",z={x:L.clientX,y:L.clientY},j=!0,l.classList.add("is-active"),I=p.getBoundingClientRect(),P=I.width/(p.offsetWidth||I.width),i?(m.style.transition="",f.style.transition="",W(L.clientX)):(m.style.transition=J,f.style.transition=K,h(D(L.clientX)))}}),l.addEventListener("pointermove",L=>{if(!(!z||L.pointerId!==Y)){if(L.buttons===0){st();return}if(j&&Math.hypot(L.clientX-z.x,L.clientY-z.y)>ho&&(j=!1,l.classList.add("is-dragging"),i||(m.style.transition="",f.style.transition="")),!j)if(v(L.clientX),i)zt=D(L.clientX);else{let G;if(L.altKey){O||(O={x:L.clientX,v:u});let Q=p.offsetWidth||I.width;G=N(O.v+(L.clientX-O.x)/Q*(o-s)*T,s,o)}else O=null,G=D(L.clientX);h(G)}L.clientX>=I.left&&L.clientX<=I.right&&(l.style.width="",l.style.transform="")}});let st=L=>{!z||L&&L.pointerId!==Y||(i?(mt=!1,l.classList.remove("is-dragging"),wt||(wt=requestAnimationFrame(X))):(k=setTimeout(()=>{m.style.transition="",f.style.transition=""},360),l.classList.remove("is-active","is-dragging")),l.style.transition="width 0.35s cubic-bezier(0.22,1,0.36,1), transform 0.35s cubic-bezier(0.22,1,0.36,1)",l.style.width="",l.style.transform="",setTimeout(()=>{l.style.transition=""},360),z=null,O=null,Y=null)};l.addEventListener("pointerup",st),l.addEventListener("pointercancel",st),l.addEventListener("lostpointercapture",st),me(l,A),St(A),Tt(l,[[window,"resize"]],A),l.addEventListener("keydown",L=>{i&&(yt(),d=0);let G=L.shiftKey?10:1,Q=(o-s)/10||r*10,gt=u;switch(L.key){case"ArrowRight":case"ArrowUp":gt=u+r*G;break;case"ArrowLeft":case"ArrowDown":gt=u-r*G;break;case"PageUp":gt=u+Q;break;case"PageDown":gt=u-Q;break;case"Home":gt=s;break;case"End":gt=o;break;default:return}L.preventDefault(),h(N(gt,s,o))});let pt;return y.addEventListener("mouseenter",()=>{pt=setTimeout(()=>y.classList.add("is-editable"),800)}),y.addEventListener("mouseleave",()=>{clearTimeout(pt),y.classList.contains("is-editing")||y.classList.remove("is-editable")}),y.addEventListener("pointerdown",L=>{L.pointerType&&L.pointerType!=="mouse"?(y.classList.add("is-editable"),L.stopPropagation()):y.classList.contains("is-editable")&&L.stopPropagation()}),y.addEventListener("click",()=>{if(!y.classList.contains("is-editable"))return;let L=g("input","tw-slider-input");L.type="text",L.inputMode="decimal",L.value=S(u).toFixed(c),y.classList.add("is-editing"),y.replaceWith(L),L.focus(),L.select();let G=()=>{let Q=parseFloat(L.value);isNaN(Q)||h(t.soft?Q:N(Q,s,o)),L.replaceWith(y),y.classList.remove("is-editing","is-editable")};L.addEventListener("pointerdown",Q=>Q.stopPropagation()),L.addEventListener("blur",G),L.addEventListener("keydown",Q=>{Q.key==="Enter"?G():Q.key==="Escape"&&(L.replaceWith(y),y.classList.remove("is-editing","is-editable"))})}),{el:p,set:L=>h(L,!1),get:()=>S(u)}}function go(t,e,n,s){let o=g("div","tw-seg");o.setAttribute("role","radiogroup"),s&&o.setAttribute("aria-label",s);let r=g("div","tw-seg-pill");o.append(r);let i=t.map(c=>{let p=Ge("tw-seg-btn",c,l=>d(l));return o.append(p),p}),a=c=>we(o,r,c),u=()=>{qe(i,e),a(!0)},d=(c,p=!0)=>{e=c,u(),p&&n(c)};return o.addEventListener("keydown",c=>{let p=i.findIndex(b=>b.dataset.value===String(e));if(p<0)return;let l=ie(c.key,p,i.length);l<0||(c.preventDefault(),d(i[l]._twVal),i[l].focus())}),u(),St(()=>{a(),o.classList.add("is-ready")}),{el:o,set:c=>d(c,!1),get:()=>e}}function bo(t,e){let n=g("div","tw-row"),s=go([{value:"off",label:"Off"},{value:"on",label:"On"}],t.value?"on":"off",o=>e(o==="on"),t.label);return n.append(lt("span","tw-row-label",t.label),s.el),{el:n,set:o=>s.set(o?"on":"off"),get:()=>s.get()==="on"}}function wo(t,e){let n=t.options||[],s=Math.min(3,Math.max(2,t.cols||(n.length<=3?n.length:n.length===4?2:3))),o=g("div","tw-radiogrid"),r=g("div","tw-radiogrid-grid");r.style.setProperty("--tw-rg-cols",s),r.setAttribute("role","radiogroup"),r.setAttribute("aria-label",t.label);let i=t.value??Pt(n[0]),a=n.map(c=>{let p=Ge("tw-radiogrid-btn",c,l=>d(l));return r.append(p),p}),u=()=>qe(a,i),d=(c,p=!0)=>{i=c,u(),p&&e(c)};return r.addEventListener("keydown",c=>{let p=a.findIndex(b=>b.dataset.value===String(i));if(p<0)return;let l=ie(c.key,p,a.length,s);l<0||(c.preventDefault(),l!==p&&(d(a[l]._twVal),a[l].focus()))}),u(),o.append(lt("span","tw-radiogrid-label",t.label),r),{el:o,set:c=>d(c,!1),get:()=>i}}var vo='<svg class="tw-select-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>';function yo(t,e){let n=t.value,s=t.options.map(m=>({value:Pt(m),label:Be(m)})),o=g("div","tw-select"),r=vt("tw-select-trigger");r.setAttribute("aria-haspopup","listbox"),r.setAttribute("aria-expanded","false");let i=g("span","tw-select-right"),a=g("span","tw-select-value");i.append(a),i.insertAdjacentHTML("beforeend",vo),r.append(lt("span","tw-select-label",t.label),i);let u=g("div","tw-select-dropdown");u.setAttribute("role","listbox");let d=s.map(m=>{let f=vt("tw-select-option");return f.setAttribute("role","option"),f.textContent=m.label,f.dataset.value=m.value,f.addEventListener("click",()=>{p(m.value),l.close()}),u.append(f),f});o.append(r,u);let c=()=>{a.textContent=(s.find(m=>m.value===n)||{}).label??n,d.forEach(m=>{let f=m.dataset.value===String(n);m.dataset.selected=String(f),m.setAttribute("aria-selected",String(f))})},p=(m,f=!0)=>{n=m,c(),f&&e(m)},l=Rt(o,r,u,{width:"match",fallbackH:200,gap:4,onOpen:()=>(d.find(m=>m.dataset.value===String(n))||d[0])?.focus()});r.addEventListener("keydown",m=>{!l.isOpen()&&(m.key==="ArrowDown"||m.key==="ArrowUp")&&(m.preventDefault(),l.open())}),u.addEventListener("keydown",m=>{let f=d.indexOf(document.activeElement),x=f;if(m.key==="ArrowDown")x=f<0?0:Math.min(d.length-1,f+1);else if(m.key==="ArrowUp")x=f<0?d.length-1:Math.max(0,f-1);else if(m.key==="Home")x=0;else if(m.key==="End")x=d.length-1;else return;m.preventDefault(),d[x]?.focus()});let b=m=>{l.isOpen()&&!o.contains(m.relatedTarget)&&!u.contains(m.relatedTarget)&&l.close()};return r.addEventListener("focusout",b),u.addEventListener("focusout",b),c(),{el:o,set:m=>p(m,!1),get:()=>n}}function xo(t){let e=lt("button","tw-button",t.label);return e.type="button",e.addEventListener("click",()=>t.action&&t.action()),It(e)}function ko(t){let e=g("div","tw-row tw-buttongroup");t.label&&e.append(lt("span","tw-row-label",t.label));let n=g("div","tw-buttongroup-btns"),s=Array.isArray(t.buttons)?t.buttons.map(o=>[o.label,o.action]):Object.entries(t.buttons||{});for(let[o,r]of s){let i=lt("button","tw-buttongroup-btn",o);i.type="button",i.addEventListener("click",()=>typeof r=="function"&&r()),n.append(i)}return e.append(n),It(e)}var Lo=()=>It(g("div","tw-separator"));function Eo(t,e){let n=t.value??"",s=t.rows>0,o=g("div",s?"tw-row tw-row-multiline":"tw-row"),r=g(s?"textarea":"input",s?"tw-text tw-textarea":"tw-text");return s?r.rows=t.rows:r.type="text",r.value=n,Wt(r),t.placeholder&&(r.placeholder=t.placeholder),r.addEventListener("input",()=>{n=r.value,e(n)}),o.append(lt("span","tw-row-label",t.label),r),{el:o,set:i=>{n=i==null?"":String(i),r.value=n},get:()=>n}}var Mo=(t,e)=>_t({...t,row:!0},e);function pn(t){let e=g("div","tw-folder"),n=vt("tw-folder-header");n.setAttribute("aria-expanded","true"),n.append(lt("span","tw-folder-title",t.label)),n.insertAdjacentHTML("beforeend",_o);let s=g("div","tw-folder-body"),o=g("div","tw-controls");return s.append(o),e.append(n,s),n.addEventListener("click",()=>{let r=e.classList.toggle("is-collapsed");n.setAttribute("aria-expanded",r?"false":"true")}),{el:e,body:o}}var Ao=new Set(["button","fpsgraph","monitor","buttongroup","separator"]);function dn(t,e){let n=ve(t.type);if(!n)return null;try{return n(t,e)}catch(s){return console.error("[tweaks] control failed to build:",t&&t.type,s),null}}var So='<svg class="tw-toolbar-btn__copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>',Co='<svg class="tw-toolbar-btn__check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>',To='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8M3 3v5h5"/></svg>',$o='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/></svg>',_o='<svg class="tw-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>',No='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m12 2 9 5-9 5-9-5 9-5Z"/><path d="m3 12 9 5 9-5"/><path d="m3 17 9 5 9-5"/></svg>',Fo='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18M6 6l12 12"/></svg>',ns='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>',Ne=(t,e,n)=>{let s=vt("tw-toolbar-btn"+(t?" "+t:""),e);return s.title=n,s.setAttribute("aria-label",n),s},cs=()=>Ne("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${So}${Co}</span>`,"Copy values"),ds=()=>Ne("tw-toolbar-btn--reset",To,"Reset"),us=t=>{t.classList.add("is-copied"),clearTimeout(t._t),t._t=setTimeout(()=>t.classList.remove("is-copied"),1400)},ps=t=>{let e=t.querySelector("svg");t._spinSettle||(t._spinSettle=()=>{clearTimeout(t._t),t.classList.remove("is-spinning"),e.style.transition="none",e.style.setProperty("--tw-spin","0deg"),e.getBoundingClientRect(),e.style.transition=""},e.addEventListener("transitionend",s=>{s.propertyName==="transform"&&t.classList.contains("is-spinning")&&performance.now()-t._spinT>250&&t._spinSettle()})),t._spinT=performance.now(),e.style.setProperty("--tw-spin",`${(parseFloat(e.style.getPropertyValue("--tw-spin"))||0)-360}deg`),t.classList.add("is-spinning"),clearTimeout(t._t);let n=()=>{e.getAnimations&&e.getAnimations().length?t._t=setTimeout(n,250):t._spinSettle()};t._t=setTimeout(n,600)},Xt=null,ss=0;function jt(t,e){Xt||(Xt=g("div","tw-toast tw-portal"),Xt.setAttribute("role","status"),document.body.appendChild(Xt)),Xt.textContent=t,se(Xt,e),Xt.classList.add("is-open"),clearTimeout(ss),ss=setTimeout(()=>Xt.classList.remove("is-open"),1600)}var Mt=null,fn=0,os=null,hn=t=>{t.key==="Escape"&&mn()},mn=()=>{clearTimeout(fn),document.removeEventListener("keydown",hn),Mt&&Mt.classList.remove("is-open")};function Po(t,e){Mt||(Mt=g("div","tw-tip tw-portal"),Mt.setAttribute("role","tooltip"),document.body.appendChild(Mt)),clearTimeout(fn),Mt.textContent=e,se(Mt,t);let n=Mt.classList.contains("is-open");Mt.style.visibility="hidden",Mt.classList.add("is-open"),je(t,Mt,{align:"center",prefer:"above",gap:8}),Mt.style.visibility="",document.addEventListener("keydown",hn),os=t,n||requestAnimationFrame(function s(){if(Mt.classList.contains("is-open")){if(!os.isConnected)return mn();requestAnimationFrame(s)}})}function rs(){Mt&&(fn=setTimeout(()=>{Mt.classList.remove("is-open"),document.removeEventListener("keydown",hn)},80))}function fs(t,e){let n=t.querySelector(".tw-slider-label, .tw-row-label, .tw-select-label, .tw-trigger-label, .tw-radiogrid-label, .tw-field-label, .tw-folder-title, .tw-fps-label, .tw-plot-label")||t,s=n.closest("button"),o=s?g("span","tw-hint",ns):vt("tw-hint",ns),r=()=>Po(o,e);if(s){o.setAttribute("aria-hidden","true");let i=s.getAttribute("aria-description");s.setAttribute("aria-description",i?`${i}. ${e}`:e)}else o.setAttribute("aria-label",e),o.addEventListener("focus",r),o.addEventListener("blur",rs),o.addEventListener("keydown",i=>{(i.key==="Enter"||i.key===" ")&&i.stopPropagation()});o.addEventListener("pointerenter",r),o.addEventListener("pointerleave",rs),o.addEventListener("pointerdown",i=>i.stopPropagation()),o.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation()}),n.appendChild(o)}async function hs(t){try{return await navigator.clipboard.writeText(t),!0}catch{}let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.top="-9999px",document.body.appendChild(e),e.focus(),e.select();let n=!1;try{n=document.execCommand("copy")}catch{}return document.body.removeChild(e),n}rt("slider",mo);rt("checkbox",bo);rt("radiogrid",wo);rt("list",yo);rt("button",xo);rt("buttongroup",ko);rt("separator",Lo);rt("text",Eo);rt("number",Mo);rt("folder",pn);function Oo(t,e,n={}){let s=Object.entries(e).filter(([_])=>_!=="_last"||(console.warn('[tweaks] "_last" is reserved (the changed-key channel) \u2014 schema entry skipped'),!1)).map(([_,et])=>Fe(_,et)).filter(Boolean),o={},r=[],i=new Set,a=new Set,u=[],d=!1,c=!1,p=[],l=null,b=()=>{},m=()=>({}),f=()=>!1,x=()=>!1,y=()=>{},S=()=>{},E=()=>{},A=()=>{a.forEach(_=>{try{_(o,o._last)}catch(et){console.error("[tweaks] listener threw:",et)}}),b()},I=n.persist?`tw:${n.persist===!0?t:n.persist}`:null,P=I?`${I}:presets`:null,z=_=>{try{return JSON.parse(localStorage.getItem(_)||"null")}catch{return null}},j=(_,et)=>{try{localStorage.setItem(_,JSON.stringify(et))}catch{}},k=g("div","tw-panel");k.dataset.mode="inline",He(k);let O=g("div","tw-header"),Y=vt("tw-header-toggle");Y.setAttribute("aria-expanded","true"),Y.append(lt("span","tw-title",t));let J=g("div","tw-toolbar"),K=cs(),T=ds(),D=null;I&&(D=Ne("",No,"Presets"),D.setAttribute("aria-haspopup","menu"),D.setAttribute("aria-expanded","false"),J.append(D));let v=!!n.filter,h=v?Ne("",$o,"Filter controls"):null,w=v?g("input","tw-search"):null;v&&(w.type="text",w.placeholder="Filter\u2026",w.spellcheck=!1,w.setAttribute("aria-label","Filter controls"),Wt(w),J.append(h)),J.append(K,T),O.append(Y),v&&O.append(w),n.toolbar!==!1&&O.append(J);for(let _ of[K,T,D,h])_&&(_.disabled=!0);let B=!1;Y.addEventListener("click",()=>{if(B){B=!1;return}let _=k.classList.toggle("is-collapsed");Y.setAttribute("aria-expanded",_?"false":"true"),k.dataset.mode==="floating"&&setTimeout(()=>{k.dataset.mode==="floating"&&k.isConnected&&(W(),X())},270)});let H=g("div","tw-body"),q=g("div","tw-controls");H.append(q),k.append(O,H);let Z=ze(n.theme);ge(k,Z),k._twTheme=Z;let ot=n.draggable!==!1,U=8,it=28,wt=()=>({maxX:Math.max(U,window.innerWidth-k.offsetWidth-U),maxY:Math.max(U,window.innerHeight-k.offsetHeight-U)}),mt=I?`${I}:pos`:null,Dt=(ot||n.floating)&&mt?z(mt):null,zt=Dt||(typeof n.floating=="object"?n.floating:null)||{x:16,y:16},bt=+zt.x||16,yt=+zt.y||16,X=()=>{k.style.left=bt+"px",k.style.top=yt+"px"},W=()=>{let{maxX:_,maxY:et}=wt();bt=N(bt,U,_),yt=N(yt,U,et)};(ot||n.floating)&&(n.floating||Dt)&&(k.dataset.mode="floating",W(),X(),requestAnimationFrame(()=>{!d&&k.dataset.mode==="floating"&&k.isConnected&&(W(),X())}));let st=_=>{_.set(_.def),_.target[_.key]=_.get(),o._last=_.key,A()},pt=(_,et)=>{let V=_.querySelector(".tw-slider-value")||_.querySelector(".tw-row-label, .tw-select-label, .tw-trigger-label, .tw-radiogrid-label, .tw-field-label")||_;V.classList.add("tw-resettable"),V.title="Double-click or hold to reset";let tt=0,$=0,M=0,R=!1,F=()=>{tt&&(clearTimeout(tt),tt=0,V.classList.remove("tw-reset-holding"))};V.addEventListener("pointerdown",C=>{C.stopPropagation(),R=!1,!(C.pointerType!=="touch"&&C.pointerType!=="pen")&&($=C.clientX,M=C.clientY,V.classList.add("tw-reset-holding"),tt=setTimeout(()=>{tt=0,V.classList.remove("tw-reset-holding","is-editable"),R=!0,st(et)},500))}),V.addEventListener("pointermove",C=>{tt&&Math.abs(C.clientX-$)+Math.abs(C.clientY-M)>8&&F()}),V.addEventListener("pointerup",F),V.addEventListener("pointercancel",F),V.addEventListener("pointerleave",F),V.addEventListener("contextmenu",C=>{R&&C.preventDefault()}),V.addEventListener("click",C=>{R&&(C.preventDefault(),C.stopImmediatePropagation(),R=!1)},!0),V.addEventListener("dblclick",C=>{C.preventDefault(),C.stopPropagation(),st(et)})},L=[],G=(_,et)=>{et.hint&&fs(_,et.hint),(et.render||et.disabled!=null)&&L.push({node:_,m:et})},Q=[],gt=[],ft=(_,et,V,tt=[],$=null)=>{for(let M of et){if(M.type==="tabs"){let C={};i.add(C),V[M.key]=C;let ct=ve("tabs"),at=ct&&ct(M);if(!at)continue;M.pages.forEach((nt,ht)=>{let dt={};i.add(dt),C[nt.key]=dt,ft(at.bodies[ht],nt.children,dt,[...tt,M.key,nt.key])}),G(at.el,M),_.append(at.el);continue}if(M.type==="folder"){let C={};i.add(C),V[M.key]=C;let ct=pn(M),at=v?{el:ct.el,label:M.label,body:ct.body}:null;at&>.push(at),ft(ct.body,M.children,C,[...tt,M.key],at),G(ct.el,M),_.append(ct.el);continue}if(Ao.has(M.type)){let C=dn(M,()=>{});C&&(v&&M.type!=="separator"&&Q.push({el:C.el,label:M.label,folder:$}),G(C.el,M),_.append(C.el));continue}let R=dn(M,C=>{Un(V[M.key],C)&&(V[M.key]=C,o._last=M.key,A())});if(!R)continue;un(V,M.key)&&R.set(V[M.key]),V[M.key]=R.get();let F={target:V,key:M.key,set:R.set,get:R.get,def:M.value,path:[...tt,M.key]};r.push(F),pt(R.el,F),G(R.el,M),v&&Q.push({el:R.el,label:M.label,folder:$}),_.append(R.el)}},At=()=>{if(d)return;if(ft(q,s,o),L.length){let $=new Map;for(let F of r)$.has(F.key)||$.set(F.key,F);let M=F=>{let C=$.get(F);return C?C.target[C.key]:o[F]},R=()=>{for(let{node:F,m:C}of L)try{if(C.render&&F.classList.toggle("tw-cond-hidden",!C.render(M)),C.disabled!=null){let ct=typeof C.disabled=="function"?C.disabled(M):C.disabled;F.classList.toggle("is-disabled",!!ct),F.inert=!!ct}}catch{}};a.add(R),R()}if(v){let $=R=>{let F=R.trim().toLowerCase();if(!F){Q.forEach(C=>C.el.classList.remove("tw-filter-hidden")),gt.forEach(C=>C.el.classList.remove("tw-filter-hidden"));return}for(let C of Q){let ct=C.folder&&be(C.folder.label,F);C.el.classList.toggle("tw-filter-hidden",!(be(C.label,F)||ct))}for(let C of gt.slice().reverse()){let ct=[...C.body.children].some(at=>!at.classList.contains("tw-filter-hidden"));C.el.classList.toggle("tw-filter-hidden",!(be(C.label,F)||ct))}},M=()=>{k.classList.remove("is-searching"),w.value="",$("")};h.addEventListener("click",()=>{k.classList.toggle("is-searching")?(w.focus(),w.select()):M()}),w.addEventListener("input",()=>$(w.value)),w.addEventListener("keydown",R=>{R.key==="Escape"&&(M(),h.focus())})}let _=($,M)=>M.reduce((R,F)=>R?.[F],$),et=function($,M){return $==="_last"&&this===o?void 0:M},V=()=>JSON.parse(JSON.stringify(o,et)),tt=($,M=!0)=>{if(!(!$||typeof $!="object")){for(let R of r){let F=_($,R.path);F!==void 0&&(R.set(F),R.target[R.key]=R.get())}o._last=void 0,M&&A()}};if(I){let $;b=()=>{clearTimeout($),$=setTimeout(()=>j(I,V()),150)},u.push(()=>clearTimeout($)),tt(z(I))}if(m=()=>{let $=P?z(P):null;return Object.assign(Object.create(null),$&&typeof $=="object"?$:{})},f=$=>{if(!P||!$)return!1;let M=m();return M[$]=V(),j(P,M),!0},x=$=>{let M=m();return M[$]?(tt(M[$]),!0):!1},y=$=>{if(!P)return;let M=m();delete M[$],j(P,M)},ot||n.floating){if(ot){k.dataset.draggable="true";let nt=g("span","tw-grabber");nt.setAttribute("aria-hidden","true"),O.prepend(nt)}let $=()=>{if(k.dataset.mode==="floating")return;let nt=k.getBoundingClientRect();bt=nt.left,yt=nt.top,k.parentNode&&(l=g("span","tw-lift-slot"),l.style.width=nt.width+"px",l.style.height=nt.height+"px",l.setAttribute("aria-hidden","true"),k.before(l)),Ye(k,k),document.body.appendChild(k),k.dataset.mode="floating",X()},M=null,R=0,F=0,C=0,ct=0;O.addEventListener("pointerdown",nt=>{if(!(nt.button!==0||M!==null||nt.target.closest(".tw-toolbar, input, textarea, select")))if(M=nt.pointerId,R=nt.clientX,F=nt.clientY,B=!1,k.classList.add("is-grabbing"),k.style.transition){let ht=getComputedStyle(k);bt=parseFloat(ht.left)||bt,yt=parseFloat(ht.top)||yt,k.style.transition="",X()}else k.style.transition=""}),O.addEventListener("pointermove",nt=>{if(nt.pointerId!==M)return;let ht=nt.clientX-R,dt=nt.clientY-F;if(!B){if(Math.abs(ht)+Math.abs(dt)<4)return;B=!0,$(),C=bt,ct=yt;try{O.setPointerCapture(M)}catch{}k.classList.add("is-dragging")}let{maxX:$t,maxY:fe}=wt();bt=N(C+ht,U,$t),yt=N(ct+dt,U,fe),X()});let at=nt=>{if(nt.pointerId===M){try{O.releasePointerCapture(M)}catch{}if(M=null,B){let{maxX:ht,maxY:dt}=wt();bt<=U+it?bt=U:bt>=ht-it&&(bt=ht),yt<=U+it?yt=U:yt>=dt-it&&(yt=dt),We.matches||(k.style.transition="left 0.32s var(--tw-ease-spring), top 0.32s var(--tw-ease-spring)",setTimeout(()=>{k.style.transition=""},340)),X(),mt&&j(mt,{x:bt,y:yt})}k.classList.remove("is-dragging","is-grabbing")}};O.addEventListener("pointerup",at),O.addEventListener("pointercancel",at),O.addEventListener("lostpointercapture",at),u.push(Tt(k,[[window,"resize"]],()=>{k.dataset.mode==="floating"&&(W(),X())}))}if(D){let $=g("div","tw-presets-menu"),M=g("div","tw-presets-save"),R=g("input","tw-presets-input");R.type="text",R.placeholder="Preset name\u2026",R.spellcheck=!1,R.setAttribute("aria-label","New preset name"),Wt(R);let F=lt("button","tw-presets-savebtn","Save");F.type="button",M.append(R,F);let C=g("div","tw-presets-list");$.append(M,C);let ct=()=>{let ht=m(),dt=Object.keys(ht);if(C.replaceChildren(),!dt.length)return C.append(lt("div","tw-presets-empty","No presets yet"));for(let $t of dt){let fe=g("div","tw-presets-row"),Pe=lt("button","tw-presets-load",$t);Pe.type="button",Pe.addEventListener("click",()=>{x($t),nt.close(),jt(`Loaded \u201C${$t}\u201D`,k)});let Oe=vt("tw-presets-del",Fo);Oe.setAttribute("aria-label",`Delete preset ${$t}`),Oe.addEventListener("click",gs=>{gs.stopPropagation(),y($t),ct()}),fe.append(Pe,Oe),C.append(fe)}},at=()=>{let ht=R.value.trim();if(!ht){R.focus();return}f(ht),R.value="",ct(),jt(`Saved \u201C${ht}\u201D`,k)},nt=Rt(D,D,$,{width:208,fallbackH:160,gap:6,align:"end",onOpen:()=>{ct(),R.focus()}});F.addEventListener("click",at),R.addEventListener("keydown",ht=>{ht.key==="Enter"&&at()})}if(K.addEventListener("click",async()=>{await hs(JSON.stringify(o,et,2))?(us(K),jt(`${t} values copied`,k)):jt("Copy failed",k)}),T.addEventListener("click",()=>{if(ps(T),typeof n.onReset=="function")return n.onReset();r.forEach($=>{$.set($.def),$.target[$.key]=$.get()}),o._last=void 0,A()}),n.onEditStart||n.onEditEnd){let $=".tw-slider, .tw-num-grab, .tw-pad, .tw-wg-area, .tw-wg-hue, .tw-wg-alpha, .tw-bezier-handle, .tw-gradient-bar, .tw-gradient-stop",M=!1,R=()=>{document.removeEventListener("pointerup",R,!0),document.removeEventListener("pointercancel",R,!0),M&&(M=!1,n.onEditEnd&&n.onEditEnd())},F=C=>{M||!C.target.closest($)||(M=!0,n.onEditStart&&n.onEditStart(),document.addEventListener("pointerup",R,!0),document.addEventListener("pointercancel",R,!0))};k.addEventListener("pointerdown",F),k._twEditPointer=F,u.push(R)}if(n.undo){let $=[V()],M=0,R=!1,F=0,C=()=>{F=0;let dt=V();JSON.stringify(dt)!==JSON.stringify($[M])&&($=$.slice(0,M+1),$.push(dt),M=$.length-1)},ct=()=>{R||(clearTimeout(F),F=setTimeout(C,350))},at=()=>{F&&(clearTimeout(F),C())};a.add(ct);let nt=dt=>{R=!0,tt($[dt]),R=!1,M=dt};S=()=>{at(),M>0&&nt(M-1)},E=()=>{at(),M<$.length-1&&nt(M+1)};let ht=()=>k.matches(":hover")||k.contains(document.activeElement);u.push(Tt(k,[[document,"keydown"]],dt=>{if(!ht()||!(dt.metaKey||dt.ctrlKey))return;let $t=dt.key.toLowerCase();$t==="z"?(dt.preventDefault(),dt.shiftKey?E():S()):$t==="y"&&(dt.preventDefault(),E())}))}c=!0;for(let[$,M]of p.splice(0))xt.set($,M);for(let $ of[K,T,D,h])$&&($.disabled=!1)},xt={el:k,params:o,on(_){return d?()=>{}:(a.add(_),()=>a.delete(_))},set(_,et){if(d)return;let V=String(_).split(".");if(V.some(F=>F==="__proto__"||F==="constructor"||F==="prototype"))return console.warn(`[tweaks] set("${_}") ignored \u2014 reserved key`);if(!c)return void p.push([String(_),et]);let tt;if(V.length>1){let F=o;for(let C=0;C<V.length-1&&F;C++)F=F[V[C]],i.has(F)||(F=null);if(tt=F&&r.find(C=>C.target===F&&C.key===V[V.length-1]),!tt)return console.warn(`[tweaks] set("${_}") \u2014 no control at that path`)}else{let F=r.filter(C=>C.key===_);if(F.length>1)return console.warn(`[tweaks] set("${_}") is ambiguous \u2014 ${F.length} controls share that key; use a dotted path (e.g. "${F[0].path.join(".")}")`);tt=F[0]}let $=tt?tt.target:o,M=tt?tt.key:_,R=$[M];if(tt)tt.set(et),$[M]=tt.get();else{if(i.has(o[_]))return console.warn(`[tweaks] set("${_}") ignored \u2014 it's a folder/tabs group; set its children instead`);o[_]=et}Un(R,$[M])&&(o._last=M,A())},reset(){d||T.click()},setTheme(_){if(!d){if(Z)for(let et in Z)k.style.removeProperty(et);Z=ze(_),k._twTheme=Z,ge(k,Z),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:_=>!d&&f(_),loadPreset:_=>!d&&x(_),deletePreset:_=>{d||y(_)},presets:()=>d?[]:Object.keys(m()),undo:()=>{d||S()},redo:()=>{d||E()},destroy(){if(!d){d=!0,wn(),mn();for(let _ of u.splice(0))try{_()}catch{}a.clear(),l&&(l.remove(),l=null),k.remove()}}},Yt=ls(s);return Yt?(xt.ready=k.ready=Yt.then(At).then(()=>xt),xt.ready.catch(()=>{})):(At(),xt.ready=k.ready=Promise.resolve(xt)),xt}var is={slider:t=>({value:ut(t.value),min:ut(t.min)??0,max:ut(t.max)??100,step:ut(t.step),soft:as(t.soft)}),checkbox:t=>t.options?{type:"radiogrid",options:pe(t.options),value:t.value,cols:ut(t.cols)}:{value:t.checked==="true"},radiogrid:t=>({options:pe(t.options),value:t.value,cols:ut(t.cols)}),list:t=>({options:pe(t.options),value:t.value}),color:t=>({value:t.value||"#7c5cff"}),button:(t,e,n)=>({action:()=>jt(`${n} pressed`,e)}),buttongroup:(t,e)=>({buttons:pe(t.buttons).map(n=>({label:n,action:()=>jt(`${n} pressed`,e)}))}),separator:()=>({}),number:t=>({value:ut(t.value),min:ut(t.min),max:ut(t.max),step:ut(t.step)}),text:t=>({value:t.value??"",placeholder:t.placeholder,rows:ut(t.rows)}),image:t=>({value:t.value}),fpsgraph:t=>({label:t.label||"FPS"}),interval:t=>({value:t.value?t.value.split(",").map(Number):void 0,min:ut(t.min),max:ut(t.max),step:ut(t.step)}),spring:t=>({stiffness:ut(t.stiffness),damping:ut(t.damping),mass:ut(t.mass)}),cubicbezier:t=>({value:t.value?t.value.split(",").map(Number):void 0}),point:t=>{let e=(t.value||"").split(",").map(n=>parseFloat(n));return{components:pe(t.components||"X,Y").map((n,s)=>({key:n.toLowerCase(),label:n,value:isNaN(e[s])?0:e[s],step:ut(t.step)??1,min:ut(t.min),max:ut(t.max)})),pad:as(t.pad),invertY:t.invertY==="true"}},plot:t=>({expr:t.expr,xMin:ut(t.xmin),xMax:ut(t.xmax),yMin:ut(t.ymin),yMax:ut(t.ymax),samples:ut(t.samples),editable:t.editable!=="false"})},ut=t=>t==null?void 0:+t,as=t=>t==="true"||t==="",pe=t=>(t||"").split(",").map(e=>e.trim()).filter(Boolean),Ro=t=>{let e=t.dataset,n=e.tw;if(!un(is,n))return null;let s=e.label||he(e.key||n),o=is[n](e,t,s),r=Fe("v",{type:n,...o});return r&&(r.label=o.label||s),r};async function ms(t=document){t.querySelectorAll('.tw-panel[data-mode="inline"]:not([data-tw-panel-bound])').forEach(s=>{let o=s.querySelector(":scope > .tw-header"),r=s.querySelector(":scope > .tw-controls");if(!o||!r)return;s.setAttribute("data-tw-panel-bound","");let i=g("div","tw-body");s.insertBefore(i,r),i.append(r);let a=o.querySelector(".tw-header-toggle"),u=o.querySelector(".tw-title");if(!a&&u&&(a=vt("tw-header-toggle"),u.replaceWith(a),a.append(u)),!!a&&(a.setAttribute("aria-expanded","true"),a.addEventListener("click",()=>{let d=s.classList.toggle("is-collapsed");a.setAttribute("aria-expanded",d?"false":"true")}),!o.querySelector(".tw-toolbar"))){let d=u&&u.textContent||"Panel",c=g("div","tw-toolbar"),p=cs(),l=ds();c.append(p,l),o.append(c);let b=()=>[...s.querySelectorAll("[data-tw]")].map(m=>m._tw).filter(m=>m&&m.ctrl.get()!==void 0);p.addEventListener("click",async()=>{let m={};for(let x of b())m[x.key]=x.ctrl.get();await hs(JSON.stringify(m,null,2))?(us(p),jt(`${d} values copied`,s)):jt("Copy failed",s)}),l.addEventListener("click",()=>{ps(l);for(let m of b())m.ctrl.set(m.def),m.host.dataset.value=m.ctrl.get()})}}),t.querySelectorAll('[data-tw="folder"]:not([data-tw-bound])').forEach(s=>{s.setAttribute("data-tw-bound","");let o=pn({label:s.dataset.label||"Folder"});[...s.children].forEach(r=>o.body.append(r)),s.append(o.el)});let e=[...t.querySelectorAll("[data-tw]:not([data-tw-bound])")].map(s=>({host:s,meta:Ro(s)})).filter(s=>s.meta);e.forEach(({host:s})=>s.setAttribute("data-tw-bound",""));let n=ls(e.map(s=>s.meta));n&&await n.catch(()=>{});for(let{host:s,meta:o}of e){let r=dn(o,i=>s.dataset.value=i);r&&(s.append(r.el),s.dataset.hint&&fs(r.el,s.dataset.hint),s._tw={ctrl:r,def:o.value,key:o.label,host:s})}}if(typeof document<"u"){let t=()=>ms(document);document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}export{ms as enhance,Oo as tweaks};
|
|
1
|
+
/* tweakit — MIT © Ryan Kiley. Toolbar and control icons from Lucide (ISC) and Feather (MIT); see THIRD-PARTY-NOTICES.md in the tweakit package. */
|
|
2
|
+
var qe=t=>t.replace(/([A-Z])/g," $1").replace(/^./,e=>e.toUpperCase()).trim(),T=(t,e,n)=>Math.min(n,Math.max(e,t)),wo=t=>typeof t=="string"&&(/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t.trim())||/^(oklch|oklab|rgba?|hsla?|hwb|lab|lch|color)\(/i.test(t.trim()));var Zt=t=>{let e=String(t),n=/e-(\d+)$/i.exec(e);if(n)return Math.min(20,Number(n[1])+(e.split("e")[0].split(".")[1]||"").length);let o=e.indexOf(".");return o===-1?0:Math.min(20,e.length-o-1)},we=(t,e,n)=>{if(!(n>0))return t;let o=Zt(n),r=Number((+e).toFixed(o)),s=Math.round((t-r)/n);return Number.isFinite(s)?Number((r+s*n).toFixed(o)):t},Re=(t,e,n,o=t)=>{let r=a=>we(a,o,n),s=Number.isFinite(t)?r(t):-1/0,i=Number.isFinite(e)?r(e):1/0;return s<t&&(s=r(s+n)),i>e&&(i=r(i-n)),s>i?[t,t]:[s,i]},ye=(t,e)=>{let n=e-t;return n<=1?.01:n<=10?.1:n<=100?1:10},Ye=(t,e,n,o=0,r=null)=>{let s=+t,i=+e,a=+n;if(Number.isFinite(s)||(s=o),Number.isFinite(i)||(i=r??s+100),i<s){let l=s;s=i,i=l}return(!(a>0)||a>i-s)&&(a=ye(s,i)),{min:s,max:i,step:a}},ae=(t,e,n,o,r,s=null)=>{let i=t.shiftKey?10:1;switch(t.key){case"ArrowRight":case"ArrowUp":return e+n*i;case"ArrowLeft":case"ArrowDown":return e-n*i;case"PageUp":return s!=null?e+s:null;case"PageDown":return s!=null?e-s:null;case"Home":return o;case"End":return r}return null},We=(t,e,n,o,r=0)=>{let s=t.offsetLeft,i=s+t.offsetWidth,a=e.offsetLeft,l=a+e.offsetWidth;return n<i&&n+o>s||n<l+r&&n+o>a-r},ve=t=>t>=0?[0,t<=1?1:t*3||100]:[t>=-1?-1:t*3,0],Kt=t=>t==null?void 0:typeof t=="object"?t.value:t,He=t=>{try{return JSON.stringify(t)}catch{return String(t)}},Pn=t=>t==null?"":typeof t=="string"?qe(t):typeof t=="object"?t.label??(t.value!==void 0?String(t.value):He(t)):String(t),jr="http://www.w3.org/2000/svg",h=(t,e,n)=>{let o=document.createElement(t);return e&&(o.className=e),n!=null&&(o.innerHTML=n),o},kt=(t,e)=>{let n=document.createElementNS(jr,t);return e&&n.setAttribute("class",e),n},vt=(t,e)=>{let n=h("button",t,e);return n.type="button",n},st=(t,e,n)=>{let o=h(t,e);return o.textContent=n,t==="button"&&(o.type="button"),o},yo=(t,e)=>getComputedStyle(t).getPropertyValue(e).trim(),Ue=t=>{let e=getComputedStyle(t),n=o=>e.getPropertyValue(o).trim();return n("--tw-accent")||n("--tw-text-primary")||"#fff"},Nn=t=>["pointerdown","pointermove","pointerup"].forEach(e=>t.addEventListener(e,n=>n.stopPropagation())),Tt=t=>{requestAnimationFrame(t),document.fonts&&document.fonts.ready&&document.fonts.ready.then(t)},At=(t,e,n)=>{let o=t.isConnected;o||requestAnimationFrame(()=>{t.isConnected&&(o=!0)});let r=i=>{if(!t.isConnected){(o||t.closest("[data-tw-destroyed]"))&&s();return}o=!0,n(i)},s=()=>e.forEach(([i,a])=>i.removeEventListener(a,r));return e.forEach(([i,a])=>i.addEventListener(a,r)),s},Fn=()=>requestAnimationFrame(()=>window.dispatchEvent(new Event("tw-reflow"))),Je=(t,e)=>{t.addEventListener("pointerenter",()=>{t.classList.add("is-hover"),e&&e()}),t.addEventListener("pointerleave",()=>t.classList.remove("is-hover"))},$e=!1;typeof document<"u"&&(document.addEventListener("pointerdown",()=>{$e=!0},!0),document.addEventListener("keydown",()=>{$e=!1},!0));var Dt=t=>{t.addEventListener("focus",()=>t.classList.toggle("tw-focus-quiet",$e)),t.addEventListener("blur",()=>t.classList.remove("tw-focus-quiet"))},vo=t=>{let e=!1;t.addEventListener("pointerdown",n=>{e=n.button===0&&document.activeElement!==t}),t.addEventListener("focus",()=>t.select()),t.addEventListener("mouseup",n=>{e&&(e=!1,n.button===0&&document.activeElement===t&&t.selectionStart===0&&t.selectionEnd===t.value.length&&n.preventDefault())})};function Bt(t,{onDown:e,onMove:n,onEnd:o}={}){let r=null,s=i=>{r===null||i.pointerId!==r||(r=null,o&&o(i))};t.addEventListener("pointerdown",i=>{if(!(i.button!==0||r!==null)){r=i.pointerId;try{t.setPointerCapture(i.pointerId)}catch{}e&&e(i)}}),t.addEventListener("pointermove",i=>{if(i.pointerId===r){if(i.buttons===0)return s(i);n&&n(i)}}),t.addEventListener("pointerup",s),t.addEventListener("pointercancel",s),t.addEventListener("lostpointercapture",s)}var Me=(t,e)=>Bt(t,{onDown:n=>{t.classList.add("is-grabbing"),e(n)},onMove:e,onEnd:()=>t.classList.remove("is-grabbing")}),xe=(t,e)=>{let n=e.getBoundingClientRect();return[T((t.clientX-n.left)/n.width,0,1),T((t.clientY-n.top)/n.height,0,1)]},Mo=(t,e,n=1/0)=>{let o=t.getBoundingClientRect(),r=Math.min(window.devicePixelRatio||1,n);return t.width=o.width*r,t.height=o.height*r,e.setTransform(r,0,0,r,0,0),[o.width,o.height]},_n=(t,e,{width:n,fallbackH:o=300,gap:r=6,align:s="start",prefer:i="below"}={})=>{let a=t.getBoundingClientRect();n==="match"&&(e.style.width=a.width+"px");let l=n==="match"?a.width:e.offsetWidth||n||0,b=s==="end"?a.right-l:s==="center"?a.left+a.width/2-l/2:a.left;e.style.left=Math.max(8,Math.min(b,window.innerWidth-l-8))+"px";let u=e.offsetHeight||o,c=window.innerHeight-a.bottom,f=a.top,y=u+12,E=c>=y,p=f>=y,v=(i==="above"?p||!E&&f>=c:!E&&(p||f>c))?a.top-u-r:a.bottom+r;e.style.top=T(v,r,window.innerHeight-u-r)+"px"},Br=Object.assign(Object.create(null),{accent:"--tw-accent",onAccent:"--tw-on-accent",base:"--tw-base",dropdownBg:"--tw-dropdown-bg",surface:"--tw-surface",surfaceHover:"--tw-surface-hover",surfaceActive:"--tw-surface-active",border:"--tw-border",borderHover:"--tw-border-hover",selection:"--tw-selection",title:"--tw-text-root",section:"--tw-text-section",text:"--tw-text-primary",label:"--tw-text-label",textMuted:"--tw-text-secondary",textFaint:"--tw-text-tertiary",focus:"--tw-text-focus",success:"--tw-success",danger:"--tw-danger",shadow:"--tw-shadow-dropdown",shadowPanel:"--tw-shadow-panel",shadowPanelLifted:"--tw-shadow-panel-lifted",font:"--tw-font-sans",fontMono:"--tw-font-mono",radius:"--tw-radius",density:"--tw-row-height"}),Vr=new Set(["radius","density"]),An=t=>(t/=255,t<=.03928?t/12.92:((t+.055)/1.055)**2.4),Xr=t=>{t=String(t).trim();let e=/^#([0-9a-f]{3})$/i.exec(t);if(e)return e[1].split("").map(n=>parseInt(n+n,16));if(e=/^#([0-9a-f]{6})$/i.exec(t),e)return[0,2,4].map(n=>parseInt(e[1].slice(n,n+2),16));if(e=/^rgba?\(([^)]+)\)/i.exec(t),e){let n=e[1].split(/[\s,/]+/).filter(Boolean).map(parseFloat);return[n[0],n[1],n[2]]}return null},Gr=t=>{let e=Xr(t);if(!e||e.some(o=>!Number.isFinite(o)))return"#ffffff";let n=.2126*An(e[0])+.7152*An(e[1])+.0722*An(e[2]);return 1.05/(n+.05)>=(n+.05)/.0571?"#ffffff":"#161616"},$n=t=>{if(!t||typeof t!="object")return null;let e={};for(let[n,o]of Object.entries(t)){if(n.startsWith("--")){e[n]=String(o);continue}let r=Br[n];r&&(e[r]=Vr.has(n)&&typeof o=="number"?`${o}px`:String(o))}return e["--tw-accent"]&&!e["--tw-on-accent"]&&(e["--tw-on-accent"]=Gr(e["--tw-accent"])),Object.keys(e).length?e:null},Ze=(t,e)=>{if(t){if(t._twAppliedVars)for(let n of t._twAppliedVars)t.style.removeProperty(n);if(t._twAppliedVars=e?Object.keys(e):null,e)for(let n in e)t.style.setProperty(n,e[n])}},Rn=(t,e)=>{let n=e?.closest('[data-tw-scheme="light"]')?"light":e?.closest('[data-tw-scheme="dark"]')?"dark":null;n?t.setAttribute("data-tw-scheme",n):t.removeAttribute("data-tw-scheme")},he=(t,e)=>{Ze(t,e?.closest(".tw-panel")?._twTheme),Rn(t,e)},Jt=null,On=null,xo=t=>{Jt&&(!t||t.contains(On))&&Jt()};function Vt(t,e,n,o={}){let r=!1,s=null;n.classList.add("tw-portal"),n.addEventListener("pointerdown",w=>e.closest(".tw-panel")?._twEditPointer?.(w),!0),Nn(n);let i=()=>_n(e,n,{width:o.width,fallbackH:o.fallbackH,gap:o.gap,align:o.align}),a=()=>{if(r){if(!t.isConnected)return p();i(),o.onReflow&&o.onReflow()}},l=w=>{!t.contains(w.target)&&!n.contains(w.target)&&p()},b=w=>{w.key==="Escape"&&r&&(p(),e.focus())},u=w=>{if(!r)return;let v=w.relatedTarget;(v?t.contains(v)||n.contains(v):$e)||(p(),v&&!e.closest(".tw-panel")?.contains(v)&&setTimeout(()=>{!r&&document.activeElement===v&&e.focus()},0))};t.addEventListener("focusout",u),n.addEventListener("focusout",u);let c=()=>n.querySelector('button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [href], [tabindex]:not([tabindex="-1"])'),f=()=>he(n,t),y=w=>{w.every(v=>v.target===n)||f()},E=()=>{Jt&&Jt!==p&&Jt(),Jt=p,On=e,r=!0,t.classList.add("is-open"),e.setAttribute("aria-expanded","true"),document.body.appendChild(n),he(n,t),window.addEventListener("tw-retheme",f),typeof MutationObserver=="function"&&(s=new MutationObserver(y),s.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:["data-tw-scheme"]})),i(),requestAnimationFrame(()=>{if(r&&(n.classList.add("is-open"),o.onOpen&&o.onOpen(),i(),!n.contains(document.activeElement))){let w=o.initialFocus&&o.initialFocus()||c();w&&w.focus({focusVisible:!$e})}}),requestAnimationFrame(function w(){if(r){if(!t.isConnected)return p();requestAnimationFrame(w)}}),setTimeout(()=>{r&&document.addEventListener("pointerdown",l,!0)},0),document.addEventListener("keydown",b),window.addEventListener("scroll",a,!0),window.addEventListener("resize",a)},p=()=>{Jt===p&&(Jt=null,On=null),n.contains(document.activeElement)&&e.focus(),r=!1,t.classList.remove("is-open"),n.classList.remove("is-open"),e.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",l,!0),document.removeEventListener("keydown",b),window.removeEventListener("scroll",a,!0),window.removeEventListener("resize",a),window.removeEventListener("tw-retheme",f),s&&(s.disconnect(),s=null),setTimeout(()=>{r||n.remove()},200)};return e.addEventListener("click",()=>{e.disabled||(r?p():E())}),{open:E,close:p,isOpen:()=>r,reflow:a}}var Qe=(t,e)=>{if(t=t.toLowerCase(),t.includes(e))return!0;if(e.length<3)return!1;let n=e.length,o=t.length,r=new Array(o+1).fill(0);for(let s=1;s<=n;s++){let i=[s];for(let a=1;a<=o;a++)i[a]=Math.min(r[a]+1,i[a-1]+1,r[a-1]+(e[s-1]===t[a-1]?0:1));r=i}return Math.min(...r)<=(e.length<6?1:2)},Ee=typeof matchMedia=="function"?matchMedia("(prefers-reduced-motion: reduce)"):{matches:!1},De="cubic-bezier(0.22, 1, 0.36, 1)",Hn="cubic-bezier(0.34, 1.2, 0.64, 1)",zr=(t,e)=>{Ee.matches||typeof t.animate!="function"||(t.style.transformOrigin=e>0?"left center":"right center",t.animate([{transform:"scaleX(1)"},{transform:"scaleX(1.18)"},{transform:"scaleX(1)"}],{duration:300,easing:De}))},Dn=(t,e,n)=>{let o=t.querySelector('[data-active="true"]');if(!o)return;let r=o.offsetLeft,s=o.offsetWidth,i=parseFloat(e.style.left);e.style.left=r+"px",e.style.width=s+"px",n&&Number.isFinite(i)&&i!==r&&zr(e,r>i?1:-1)},tn=(t,e)=>{t.classList.toggle("is-disabled",e);for(let n of t.children)n.inert=e},ke=(t,e,n,o)=>{t.classList.toggle("is-collapsed",o),e.setAttribute("aria-expanded",String(!o)),n.inert=o},en=(t,e)=>{let n=t.findIndex(o=>o.dataset.value===String(e));return n<0&&t.length?0:n},In=(t,e)=>{let n=en(t,e);t.forEach((o,r)=>{let s=o.dataset.value===String(e);o.dataset.active=String(s),o.setAttribute("aria-checked",String(s)),o.tabIndex=r===n?0:-1})},jn=(t,e,n)=>{let o=st("button",t,Pn(e));return o.setAttribute("role","radio"),o._twVal=Kt(e),o.dataset.value=o._twVal,o.addEventListener("click",()=>n(o._twVal)),o},Ie=(t,e,n,o=0)=>{switch(t){case"ArrowRight":return(e+1)%n;case"ArrowLeft":return(e-1+n)%n;case"ArrowDown":return o<0?-1:o?e+o<n?e+o:e:(e+1)%n;case"ArrowUp":return o<0?-1:o?e-o>=0?e-o:e:(e-1+n)%n;case"Home":return 0;case"End":return n-1}return-1};function nn(t,e,n,o){let r=h("div","tw-seg");r.setAttribute("role","radiogroup"),o&&r.setAttribute("aria-label",o);let s=h("div","tw-seg-pill");r.append(s);let i=t.map(u=>{let c=jn("tw-seg-btn",u,f=>b(f));return r.append(c),c}),a=u=>Dn(r,s,u),l=()=>{In(i,e),a(!0)},b=(u,c=!0)=>{u!=null&&!i.some(f=>f._twVal===u)||(e=u,l(),c&&n(u))};return r.addEventListener("keydown",u=>{let c=en(i,e);if(c<0)return;let f=Ie(u.key,c,i.length);f<0||(u.preventDefault(),b(i[f]._twVal),i[f].focus())}),l(),Tt(()=>{a(),r.classList.add("is-ready")}),At(r,[[window,"tw-reflow"]],()=>a()),{el:r,set:u=>b(u,!1),get:()=>e}}var Qt=(t,e)=>{let n=h("div",t),o=vt("tw-trigger");o.setAttribute("aria-expanded","false");let r=h("span","tw-trigger-right");return o.append(st("span","tw-trigger-label",e),r),n.append(o),{root:n,trigger:o,right:r}};function Kr(){let t=null,e=0,n=0,o=0;return{show(r,s,i,a){t=h("div","tw-grab-guide tw-portal"),t.innerHTML='<span class="tw-grab-line"></span><span class="tw-grab-dot"></span><span class="tw-grab-arrow"></span><span class="tw-grab-bubble"></span>',e=s,n=r,o=i??r,t.children[1].style.cssText=`left:${r}px;top:${e}px`,he(t,a),document.body.appendChild(t)},move(r,s){t&&(t.children[0].style.cssText=`left:${Math.min(n,r)}px;top:${e}px;width:${Math.abs(r-n)}px`,t.children[2].style.cssText=`left:${r}px;top:${e}px;transform:translate(-50%,-50%) scaleX(${r>=n?1:-1})`,t.children[3].style.cssText=`left:${o}px;top:${e-16}px`,t.children[3].textContent=s)},hide(){t&&(t.remove(),t=null)}}}function qr(t,e,n,o,r,s){let i=0,a=0,l=1,b=Kr();Bt(t,{onDown:u=>{u.preventDefault(),i=u.clientX,a=o(),l=1,t.classList.add("is-dragging");let c=e.getBoundingClientRect();b.show(u.clientX,c.top+c.height/2,c.left+c.width/2,e),b.move(u.clientX,s())},onMove:u=>{let c=u.shiftKey?10:u.altKey?.1:1;c!==l&&(l=c,i=u.clientX,a=o()),r(a+(u.clientX-i)*n*c),b.move(u.clientX,s())},onEnd:()=>{t.classList.remove("is-dragging"),b.hide()}})}function $t(t,e){let n=Number.isFinite(+t.step)&&+t.step>0?+t.step:1,o=v=>v==null?NaN:+v,r=o(t.min),s=o(t.max);if(Number.isFinite(r)&&Number.isFinite(s)&&s<r){let v=r;r=s,s=v}let i=Number.isFinite(r)?r:0,a=Zt(n),[l,b]=Re(Number.isFinite(r)?r:-1/0,Number.isFinite(s)?s:1/0,n,i),u=v=>{let P=we(v,i,n);return t.soft?P:T(P,l,b)},c=u(Number.isFinite(+t.value)?+t.value:0),f=h("div",t.row?"tw-row":"tw-field"),y=h("div","tw-num-wrap"),E=h("span","tw-num-grab",Yr);E.setAttribute("aria-hidden","true"),E.title="Drag to adjust";let p=h("input","tw-num");p.type="text",p.inputMode="decimal",p.setAttribute("aria-label",t.label),p.value=c.toFixed(a),Dt(p),y.append(E,p),f.append(st("span",t.row?"tw-row-label":"tw-field-label",t.label),y);let w=(v,P=!0)=>{v=+v,Number.isFinite(v)&&(c=u(v),p.value=c.toFixed(a),P&&e&&e(c))};return p.addEventListener("change",()=>{let v=parseFloat(p.value);w(isNaN(v)?c:v)}),p.addEventListener("keydown",v=>{if(v.key==="Enter")return p.blur();let P=v.key==="ArrowUp"?1:v.key==="ArrowDown"?-1:0;if(!P)return;v.preventDefault();let $=parseFloat(p.value);w((isNaN($)?c:$)+P*n*(v.shiftKey?10:1))}),qr(E,y,n,()=>c,w,()=>p.value),{el:f,set:v=>w(v,!1),get:()=>c}}var Rt=(t,e="",n=2,o=24)=>`<svg${e?` class="${e}"`:""} viewBox="0 0 ${o} ${o}" fill="none" stroke="currentColor" stroke-width="${n}" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${t}</svg>`,Yr=Rt('<path d="M6 4v8M10 4v8"/>',"",1.5,16),qt=(t,e)=>({el:t,set:()=>{},get:()=>{},destroy:e}),Eo={},ct=(t,e)=>{Eo[t]=e},te=t=>Eo[t];var Wr=180/Math.PI,Xn=Math.PI/180,Xt=(t,e)=>[t[0][0]*e[0]+t[0][1]*e[1]+t[0][2]*e[2],t[1][0]*e[0]+t[1][1]*e[1]+t[1][2]*e[2],t[2][0]*e[0]+t[2][1]*e[1]+t[2][2]*e[2]],Ur=(t,e)=>{let n=[[0,0,0],[0,0,0],[0,0,0]];for(let o=0;o<3;o++)for(let r=0;r<3;r++)n[o][r]=t[o][0]*e[0][r]+t[o][1]*e[1][r]+t[o][2]*e[2][r];return n},gt=t=>Number.isFinite(t)?t:0,Jr=(t,e,n)=>Math.min(n,Math.max(e,t)),on=t=>{let e=Math.abs(t);return e<=.04045?t/12.92:Math.sign(t)*((e+.055)/1.055)**2.4},je=t=>{let e=Math.abs(t);return e<=.0031308?t*12.92:Math.sign(t)*(1.055*e**(1/2.4)-.055)},an=1.09929682680944,Fo=.018053968510807,Zr=t=>{let e=Math.abs(t);return e<Fo*4.5?t/4.5:Math.sign(t)*((e+an-1)/an)**(1/.45)},_o=t=>{let e=Math.abs(t);return e<Fo?t*4.5:Math.sign(t)*(an*e**.45-(an-1))},$o=1/512,Qr=t=>{let e=Math.abs(t);return e<=$o*16?t/16:Math.sign(t)*e**1.8},ts=t=>{let e=Math.abs(t);return e>=$o?Math.sign(t)*e**(1/1.8):16*t},Bn=[[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],rn=[[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],es=[[.4865709486482162,.26566769316909306,.19821728523436247],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],Ro=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],ns=[[.6369580483012914,.14461690358620832,.16888097516417205],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],Ho=[[1.7166511879712674,-.35567078377639233,-.25336628137365974],[-.6666843518324892,1.6164812366349395,.01576854581391113],[.017639857445310783,-.042770613257808524,.9421031212354738]],os=[[.7977604896723027,.13518583717574031,.0313493495815248],[.2880711282292934,.7118432178101014,8565396060525902e-20],[0,0,.8251046025104601]],rs=[[1.3457989731028281,-.25558010007997534,-.05110628506753401],[-.5446224939028347,1.5082327413132781,.02053603239147973],[0,0,1.2119675456389454]],Do=[[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Io=[[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],ss=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],jo=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],is=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],Bo=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],sn=216/24389,Be=24389/27,Se=[.3457/.3585,1,(1-.3457-.3585)/.3585],Le=(t,e,n)=>Xt(n,[e(t[0]),e(t[1]),e(t[2])]),Ce=(t,e,n)=>{let o=Xt(n,t);return[e(o[0]),e(o[1]),e(o[2])]},ko=t=>{let e=Xt(Bo,t);return Xt(jo,[e[0]**3,e[1]**3,e[2]**3])},Lo=t=>{let e=Xt(ss,t);return Xt(is,[Math.cbrt(e[0]),Math.cbrt(e[1]),Math.cbrt(e[2])])};function Co(t){let[e,n,o]=t,r=(e+16)/116,s=n/500+r,i=r-o/200,a=s**3>sn?s**3:(116*s-16)/Be,l=e>Be*sn?r**3:e/Be,b=i**3>sn?i**3:(116*i-16)/Be;return Xt(Io,[a*Se[0],l*Se[1],b*Se[2]])}function So(t){let e=Xt(Do,t),n=i=>i>sn?Math.cbrt(i):(Be*i+16)/116,o=n(e[0]/Se[0]),r=n(e[1]/Se[1]),s=n(e[2]/Se[2]);return[116*r-16,500*(o-r),200*(r-s)]}var ln=t=>{let e=Math.hypot(t[1],t[2]),n=Math.atan2(t[2],t[1])*Wr;return n<0&&(n+=360),[t[0],e,n]},cn=t=>[t[0],t[1]*Math.cos(t[2]*Xn),t[1]*Math.sin(t[2]*Xn)];function Vo(t){let e=((Number.isNaN(t[0])?0:t[0])%360+360)%360,n=t[1]/100,o=t[2]/100,r=s=>{let i=(s+e/30)%12,a=n*Math.min(o,1-o);return o-a*Math.max(-1,Math.min(i-3,9-i,1))};return[r(0),r(8),r(4)]}function Xo(t){let e=Math.max(...t),n=Math.min(...t),o=e-n;if(o<1e-9)return NaN;let r;return e===t[0]?r=(t[1]-t[2])/o+(t[1]<t[2]?6:0):e===t[1]?r=(t[2]-t[0])/o+2:r=(t[0]-t[1])/o+4,r*60}function as(t){let e=Math.max(...t),n=Math.min(...t),o=(n+e)/2,r=Xo(t),s=e===n||o===0||o===1?0:(e-o)/Math.min(o,1-o);return s<0&&(r+=180,s=-s),r>=360&&(r-=360),[r,s*100,o*100]}function ls(t){let e=t[1]/100,n=t[2]/100;if(e+n>=1){let s=e/(e+n);return[s,s,s]}let o=Vo([t[0],100,50]),r=1-e-n;return[o[0]*r+e,o[1]*r+e,o[2]*r+e]}var cs=t=>[Xo(t),Math.min(...t)*100,(1-Math.max(...t))*100];function us(t,e){switch(e){case"srgb":return Le(t,on,Bn);case"p3":return Le(t,on,es);case"rec2020":return Le(t,Zr,ns);case"prophoto-rgb":return Xt(Io,Le(t,Qr,os));case"oklab":return ko(t);case"oklch":return ko(cn(t));case"lab":return Co(t);case"lch":return Co(cn(t));case"hsl":return Le(Vo(t),on,Bn);case"hwb":return Le(ls(t),on,Bn)}}function ds(t,e){switch(e){case"srgb":return Ce(t,je,rn);case"p3":return Ce(t,je,Ro);case"rec2020":return Ce(t,_o,Ho);case"prophoto-rgb":return Ce(Xt(Do,t),ts,rs);case"oklab":return Lo(t);case"oklch":return ln(Lo(t));case"lab":return So(t);case"lch":return ln(So(t));case"hsl":return as(Ce(t,je,rn));case"hwb":return cs(Ce(t,je,rn))}}function Mt(t,e,n){return e===n?[t[0],t[1],t[2]]:e==="oklch"&&n==="oklab"?cn(t):e==="oklab"&&n==="oklch"?ln(t):e==="lch"&&n==="lab"?cn(t):e==="lab"&&n==="lch"?ln(t):ds(us(t,e),n)}var un=75e-6,Go=t=>t.every(e=>e>=-un&&e<=1+un),Gn=(t,e)=>Go(Mt(t,"oklch",e)),Vn=t=>t.map(e=>Math.min(1,Math.max(0,e))),To=(t,e)=>Math.hypot(t[0]-e[0],t[1]-e[1],t[2]-e[2]);function dn(t,e){if(Gn(t,e))return Mt(t,"oklch",e);let n=t[0];if(n>=1)return[1,1,1];if(n<=0)return[0,0,0];if(!Number.isFinite(t[1]))return Vn(Mt([n,0,gt(t[2])],"oklch",e));let o=.02,r=1e-4,s=[t[0],t[1],t[2]],i=0,a=t[1],l=!0,b=Vn(Mt(s,"oklch",e));if(To(Mt(b,e,"oklab"),Mt(t,"oklch","oklab"))<o)return b;for(;a-i>r;){let u=(i+a)/2;s[1]=u;let c=Mt(s,"oklch",e);if(l&&Go(c)){i=u;continue}b=Vn(c);let f=To(Mt(b,e,"oklab"),Mt(s,"oklch","oklab"));if(f<o){if(o-f<r)return b;l=!1,i=u}else a=u}return b}var zo=(t,e)=>{let n=t*Xn,o=Math.cos(n),r=Math.sin(n),s=Bo.map(a=>o*a[1]+r*a[2]),i=Ur(e==="p3"?Ro:e==="rec2020"?Ho:rn,jo);return{d:s,F:i,gam:e==="rec2020"?_o:je}};function pn(t,e){let{d:[n,o,r],F:s,gam:i}=zo(t,e),a=-un,l=1+un;return(b,u)=>{let c=b+u*n,f=b+u*o,y=b+u*r,E=c**3,p=f**3,w=y**3,v=i(s[0][0]*E+s[0][1]*p+s[0][2]*w);if(v<a||v>l)return!1;let P=i(s[1][0]*E+s[1][1]*p+s[1][2]*w);if(P<a||P>l)return!1;let $=i(s[2][0]*E+s[2][1]*p+s[2][2]*w);return $>=a&&$<=l}}function Ko(t,e){let{d:[n,o,r],F:s,gam:i}=zo(t,e);return(a,l,b)=>{let u=a+l*n,c=a+l*o,f=a+l*r,y=u**3,E=c**3,p=f**3;b[0]=i(s[0][0]*y+s[0][1]*E+s[0][2]*p),b[1]=i(s[1][0]*y+s[1][1]*E+s[1][2]*p),b[2]=i(s[2][0]*y+s[2][1]*E+s[2][2]*p)}}function fn(t,e,n=.5){if(!t(e,0))return 0;let o=0;for(let r=0;r<16;r++){let s=(o+n)/2;t(e,s)?o=s:n=s}return o}var le=t=>Math.round(Math.min(1,Math.max(0,t))*255).toString(16).padStart(2,"0"),ps=t=>`#${le(t[0])}${le(t[1])}${le(t[2])}`,mn=(t,e,n)=>ps(dn([t,e,n],"srgb"));function qo(t){let e=String(t).replace("#","").trim();if(e.length===3&&(e=e.split("").map(o=>o+o).join("")),e.length<6)return[.7,.1,280];let n=[parseInt(e.slice(0,2),16)/255,parseInt(e.slice(2,4),16)/255,parseInt(e.slice(4,6),16)/255];return Mt(n,"srgb","oklch").map(gt)}var bn=["hex","srgb","css","hsl","hwb","oklch","oklab","lch","lab","p3","rec2020"],Yo={hex:"HEX",srgb:"RGB",css:"CSS",hsl:"HSL",hwb:"HWB",oklch:"OKLCH",oklab:"OKLab",lch:"LCH",lab:"Lab",p3:"P3",rec2020:"Rec2020"},Wo=["srgb","css","hsl","hwb","hex"],zn=t=>!Wo.includes(t),Uo=t=>t==="hex"||t==="css"?"srgb":t,fs=Object.assign(Object.create(null),{hex:"srgb",srgb:"srgb",css:"srgb",hsl:"hsl",hwb:"hwb",oklch:"oklch",oklab:"oklab",lch:"lch",lab:"lab",p3:"display-p3",rec2020:"rec2020"}),Jo=t=>fs[t]||"oklch",ms=Object.assign(Object.create(null),{srgb:"srgb",hsl:"hsl",hwb:"hwb",oklch:"oklch",oklab:"oklab",lch:"lch",lab:"lab","display-p3":"p3",rec2020:"rec2020"}),Kn=t=>ms[t]||"oklch",gn=.5,Zo=(t,e,n)=>Object.freeze(["R","G","B"].map(o=>Object.freeze({k:o,min:0,max:t,step:e,scale:n}))),Ao=Zo(255,1,255),Oo=Zo(1,.01,1),Ve={oklch:[{k:"L",min:0,max:100,step:1,scale:100},{k:"C",min:0,max:gn,step:.01,scale:1},{k:"H",min:0,max:360,step:1,scale:1}],oklab:[{k:"L",min:0,max:100,step:1,scale:100},{k:"a",min:-.4,max:.4,step:.01,scale:1},{k:"b",min:-.4,max:.4,step:.01,scale:1}],lch:[{k:"L",min:0,max:100,step:1,scale:1},{k:"C",min:0,max:150,step:1,scale:1},{k:"H",min:0,max:360,step:1,scale:1}],lab:[{k:"L",min:0,max:100,step:1,scale:1},{k:"a",min:-125,max:125,step:1,scale:1},{k:"b",min:-125,max:125,step:1,scale:1}],srgb:Ao,css:Ao,hsl:[{k:"H",min:0,max:360,step:1,scale:1},{k:"S",min:0,max:100,step:1,scale:1},{k:"L",min:0,max:100,step:1,scale:1}],hwb:[{k:"H",min:0,max:360,step:1,scale:1},{k:"W",min:0,max:100,step:1,scale:1},{k:"B",min:0,max:100,step:1,scale:1}],p3:Oo,rec2020:Oo},Po=t=>t>=1?0:t>=.1?1:t>=.01?2:3,Qo=(t,e,n)=>e==="oklch"?[t[0],t[1],t[2]]:Wo.includes(n)?e==="srgb"?dn(t,"srgb"):Mt(dn(t,"srgb"),"srgb",e):Mt(t,"oklch",e);function hn(t,e){let n=Qo(t,Uo(e),e);return Ve[e].map((o,r)=>{let s=gt(n[r])*o.scale;return Jr(Math.abs(s)<.5*o.step?0:s,o.min,o.max)})}function tr(t,e,n,o){let r=Uo(e),s=Qo(t,r,e).map(gt);s[n]=o/Ve[e][n].scale;let i=Mt(s,r,"oklch");return[gt(i[0]),gt(i[1]),gt(i[2])]}function er(t,e){if(!zn(e))return"sRGB";let n=dn(t,"srgb");return Math.max(...n)<.03||Math.min(...n)>.97||Gn(t,"srgb")?"sRGB":Gn(t,"p3")?"P3":"wide"}function qn(t,e){if(e==="hex")return mn(t[0],t[1],t[2]);let n=Ve[e],o=hn(t,e),r=s=>{let i=o[s].toFixed(Po(n[s].step));return n[s].k==="H"&&+i==360?0 .toFixed(Po(n[s].step)):i};return e==="css"?`${r(0)}, ${r(1)}, ${r(2)}`:e==="oklch"||e==="oklab"||e==="lch"||e==="lab"?`${r(0)}% ${r(1)} ${r(2)}`:e==="hsl"||e==="hwb"?`${r(0)} ${r(1)}% ${r(2)}%`:`${r(0)} ${r(1)} ${r(2)}`}var No=(t,e)=>e==="hex"?t:e==="srgb"?`rgb(${t})`:e==="css"?`rgba(${t}, 1)`:e==="hsl"?`hsl(${t})`:e==="hwb"?`hwb(${t})`:e==="p3"?`color(display-p3 ${t})`:e==="rec2020"?`color(rec2020 ${t})`:`${e}(${t})`;function nr(t,e,n){let o=gt(n);if(e==="hex")return mn(t[0],t[1],t[2])+(o<.999?le(o):"");let r=qn(t,e);if(o>=.999)return No(r,e);let s=+o.toFixed(3);return e==="css"?`rgba(${r}, ${s})`:No(`${r} / ${s}`,e)}var or=(()=>{try{return document.createElement("canvas").getContext("2d",{colorSpace:"display-p3"})?.getContextAttributes?.().colorSpace==="display-p3"}catch{return!1}})(),Yn=or?{colorSpace:"display-p3"}:{},bs=or?"p3":"srgb",wn=(t,e)=>{let n=t.length-1,o=Math.max(0,Math.min(n,e*n)),r=Math.floor(o),s=o-r;return t[r]*(1-s)+t[Math.min(r+1,n)]*s},gs=(t,e)=>{let n=pn(t,e),o=new Float64Array(128);for(let r=0;r<128;r++)o[r]=fn(n,r/127);return o},Qn="repeating-conic-gradient(#6b6b6b 0% 25%, #9a9a9a 0% 50%) 0 0 / 8px 8px",hs=Object.assign(Object.create(null),{srgb:"srgb","display-p3":"p3",rec2020:"rec2020","prophoto-rgb":"prophoto-rgb"}),to=/^(rgba?|hsla?|hwb)\([ \t\n\r\f]*([^)]*?)[ \t\n\r\f]*\)$/i,eo=/^(oklch|oklab|lch|lab|color)\([ \t\n\r\f]*([^)]*?)[ \t\n\r\f]*\)$/i,ws=/^(srgb|srgb-linear|display-p3|a98-rgb|prophoto-rgb|rec2020|xyz|xyz-d50|xyz-d65)$/i,yn=/^#?([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,Wn,rr=()=>Wn===void 0?Wn=document.createElement("canvas").getContext("2d"):Wn,ys=/^(#[0-9a-f]{3,8}|[a-z][a-z-]*(?:\([\w\s.,%+\-\/]*\))?)$/i;function sr(t){if(t=String(t??"").trim(),!ys.test(t))return!1;if(yn.test(t))return!0;if(eo.test(t))return xs(t);if(to.test(t))return ar(t)!==null;let e=rr();return e?["#000","#fff"].some(n=>{e.fillStyle=n;let o=e.fillStyle;return e.fillStyle=t,e.fillStyle!==o}):!0}var no="[+-]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e[+-]?\\d+)?",vs=new RegExp("^"+no+"$","i"),Ms=new RegExp("^"+no+"%$","i"),ir=new RegExp("^("+no+")(deg|grad|rad|turn)$","i"),oo=/[ \t\n\r\f]+/,ro=/^none$/i,Un=t=>t.replace(/^[ \t\n\r\f]+|[ \t\n\r\f]+$/g,""),Jn=t=>!!t&&!oo.test(t),ce=t=>ro.test(t)?"none":vs.test(t)?"num":Ms.test(t)?"pct":ir.test(t)?"angle":null,Zn=t=>{let e=ir.exec(t);if(!e)return gt(parseFloat(t));let n=parseFloat(e[1]),o=e[2].toLowerCase();return gt(o==="turn"?n*360:o==="grad"?n*.9:o==="rad"?n*180/Math.PI:n)};function ar(t){let e=to.exec(t);if(!e)return null;let n=e[1].toLowerCase().replace(/a$/,""),o=e[2],r,s,i;if(o.includes(",")){if(n==="hwb")return null;let u=o.split(",").map(Un);if(u.length<3||u.length>4||!u.every(Jn)||(r=u.slice(0,3),s=u[3],i=r.map(ce),n==="rgb"?!(i.every(c=>c==="num")||i.every(c=>c==="pct")):!((i[0]==="num"||i[0]==="angle")&&i[1]==="pct"&&i[2]==="pct"))||s!==void 0&&ce(s)!=="num"&&ce(s)!=="pct")return null}else{let u=o.split("/");if(u.length>2||(r=u[0].split(oo).filter(Boolean),r.length!==3))return null;if(u.length===2){s=Un(u[1]);let c=Jn(s)?ce(s):null;if(!c||c==="angle")return null}if(i=r.map(ce),n==="rgb"?!i.every(c=>c&&c!=="angle"):!(i[0]&&i[0]!=="pct"&&i[1]&&i[1]!=="angle"&&i[2]&&i[2]!=="angle"))return null}let a=(u,c)=>ro.test(u)?0:/%$/.test(u)?parseFloat(u)/100*c:parseFloat(u),l=s===void 0?1:T(a(s,1),0,1);return[n==="rgb"?Mt([T(a(r[0],255)/255,0,1),T(a(r[1],255)/255,0,1),T(a(r[2],255)/255,0,1)],"srgb","oklch"):Mt([i[0]==="none"?0:Zn(r[0]),T(a(r[1],100),0,100),T(a(r[2],100),0,100)],n,"oklch"),l]}var xs=t=>{let e=eo.exec(t);if(!e)return!1;let n=e[1].toLowerCase(),o=e[2].split("/");if(o.length>2)return!1;let r=o[0].split(oo).filter(Boolean);if(n==="color"&&!ws.test(r.shift()||"")||r.length!==3)return!1;let s=n==="lch"||n==="oklch";if(!r.every((i,a)=>{let l=ce(i);return l&&(s&&a===2?l!=="pct":l!=="angle")}))return!1;if(o.length===2){let i=Un(o[1]),a=Jn(i)?ce(i):null;if(!a||a==="angle")return!1}return!0};function ue(t){if(t=String(t??"").trim(),yn.test(t)){let a=t.replace("#",""),l=1;a.length===4?(l=parseInt(a[3]+a[3],16)/255,a=a.slice(0,3)):a.length===8&&(l=parseInt(a.slice(6,8),16)/255,a=a.slice(0,6));let[b,u,c]=qo("#"+a);return[b,u,c,l]}let e=eo.exec(t);if(e){let a=e[1].toLowerCase(),[l,b]=e[2].split("/").map(w=>w.trim()),u=l.split(/\s+/).filter(Boolean),c=a;if(a==="color"&&(c=hs[(u[0]||"").toLowerCase()],u=u.slice(1),!c))return[.7,.1,280,1];let f=(w,v=1)=>!w||ro.test(w)?0:gt(parseFloat(w))*(/%$/.test(w)?v:1),y=b?T(f(b,.01),0,1):1,E=a==="lab"?[T(f(u[0]),0,100),f(u[1],1.25),f(u[2],1.25)]:a==="lch"?[T(f(u[0]),0,100),Math.max(0,f(u[1],1.5)),Zn(u[2]||"0")]:a==="color"?[f(u[0],.01),f(u[1],.01),f(u[2],.01)]:a==="oklab"?[T(f(u[0],.01),0,1),f(u[1],.004),f(u[2],.004)]:[T(f(u[0],.01),0,1),Math.max(0,f(u[1],.004)),Zn(u[2]||"0")],p=c==="oklch"?E:Mt(E,c,"oklch");return[gt(p[0]),T(gt(p[1]),0,gn),(gt(p[2])%360+360)%360,y]}if(to.test(t)){let a=ar(t);if(!a)return[0,0,0,1];let[l,b]=a;return[gt(l[0]),T(gt(l[1]),0,gn),(gt(l[2])%360+360)%360,b]}let n=rr();if(!n)return[0,0,0,1];n.fillStyle="#000",n.fillStyle=t;let o=n.fillStyle;if(yn.test(o))return ue(o);let r=o.match(/^rgba?\(([^)]*)\)/i),s=((r?r[1]:"").match(/-?[\d.]+(?:e[+-]?\d+)?/gi)||[0,0,0]).map(Number),i=Mt([s[0]/255,s[1]/255,s[2]/255],"srgb","oklch");return[gt(i[0]),gt(i[1]),gt(i[2]),s[3]!=null?T(gt(s[3]),0,1):1]}function vn(t,e){let[n,o,r,s]=ue(t.value||"#7c5cff"),i=bn.includes(t.mode)?t.mode:"oklch",a=NaN,l=null,b=[],u=NaN,c="",f=()=>nr([n,o,r],i,s),y=h("div","tw-color-body"),E=h("div","tw-wg-area"),p=document.createElement("canvas");p.className="tw-wg-canvas";let w=h("div","tw-wg-thumb");E.append(p,w);let v=h("div","tw-wg-hue"),P=document.createElement("canvas");P.className="tw-wg-hue-canvas";let $=h("div","tw-wg-hue-thumb");v.append(P,$),p.setAttribute("role","img"),p.setAttribute("aria-label","Colour plane: chroma across, lightness up"),P.setAttribute("role","img"),P.setAttribute("aria-label","Hue strip");let N=h("div","tw-wg-alpha"),R=h("div","tw-wg-alpha-grad"),K=h("div","tw-wg-hue-thumb");N.append(R,K),N.tabIndex=0,N.setAttribute("role","slider"),N.setAttribute("aria-label","Alpha"),N.setAttribute("aria-valuemin","0"),N.setAttribute("aria-valuemax","1");let q=h("div","tw-color-mode-row"),Y=h("select","tw-color-mode");Y.setAttribute("aria-label","Color mode"),bn.forEach(j=>{let V=document.createElement("option");V.value=j,V.textContent=Yo[j],Y.append(V)}),Y.value=i;let U=h("span","tw-color-gamut");q.append(Y,U);let A=h("div","tw-color-channels");y.append(E,v,N,q,A);let O=p.getContext("2d",Yn),ot=P.getContext("2d"),tt=document.createElement("canvas"),at=tt.getContext("2d",Yn),D=null,d=()=>{let j=E.getBoundingClientRect(),V=Math.round(j.width),k=Math.round(j.height);if(V<2)return;let J=window.devicePixelRatio||1,it=zn(i)?"p3":"srgb",rt=gs(r,it);l=rt;let dt=Math.round(V*J),Et=Math.round(k*J),xt=Math.max(1,Math.round(dt/4)),It=Math.max(1,Math.round(Et/4));(tt.width!==xt||tt.height!==It)&&(tt.width=xt,tt.height=It,D=new ImageData(xt,It,Yn));let Ft=D.data,re=It>1?1/(It-1):0,Ne=xt>1?1/(xt-1):0,Fe=Ko(r,bs),Gt=[0,0,0];for(let _t=0;_t<It;_t++){let fe=1-_t*re,se=wn(rt,fe);for(let zt=0;zt<xt;zt++){Fe(fe,zt*Ne*se,Gt);let Wt=(_t*xt+zt)*4;Ft[Wt]=Math.round(T(Gt[0],0,1)*255),Ft[Wt+1]=Math.round(T(Gt[1],0,1)*255),Ft[Wt+2]=Math.round(T(Gt[2],0,1)*255),Ft[Wt+3]=255}}if(at.putImageData(D,0,0),p.width=dt,p.height=Et,O.imageSmoothingEnabled=!0,O.drawImage(tt,0,0,dt,Et),it!=="srgb"){let _t=(fe,se,zt,Wt)=>{let me=pn(r,fe),jt=[];for(let Pt=0;Pt<=100;Pt++){let Ut=Pt/100,be=wn(rt,Ut);if(be<=0)continue;let ie=fn(me,Ut,be);ie<=0||jt.push([Math.min(ie/be*dt,dt-zt*J/2),(1-Ut)*Et])}jt.length<2||(O.save(),O.strokeStyle=se,O.lineWidth=zt*J,O.lineJoin=O.lineCap="round",O.setLineDash(Wt.map(Pt=>Pt*J)),O.beginPath(),jt.forEach((Pt,Ut)=>Ut?O.lineTo(Pt[0],Pt[1]):O.moveTo(Pt[0],Pt[1])),O.stroke(),O.restore())};_t("srgb","rgba(255,255,255,0.7)",1.5,[]),_t("p3","rgba(255,255,255,0.4)",1,[3,3])}a=r},S=.7,g=j=>{let V=Mt([S,fn(pn(j,"srgb"),S),j],"oklch","srgb");return`rgb(${T(V[0]*255,0,255)|0},${T(V[1]*255,0,255)|0},${T(V[2]*255,0,255)|0})`},L=0,X=()=>{let j=v.getBoundingClientRect(),V=Math.max(1,Math.round(j.width)),k=Math.max(1,Math.round(j.height));if(!(V<2)&&!(V===L&&P.width===V)){L=V,P.width=V,P.height=k;for(let J=0;J<V;J++)ot.fillStyle=g(J/(V-1)*360),ot.fillRect(J,0,1,k)}},H=()=>{let j=l?wn(l,n):.4,V=J=>`${T(J,0,1)*100}%`,k=(J,it)=>{let rt=T(J,0,1);return`calc(${rt*100}% + ${(.5-rt)*it}px)`};w.style.left=V(j>0?o/j:0),w.style.top=V(1-n),$.style.left=k(r/360,16),K.style.left=k(s,16),N.setAttribute("aria-valuenow",String(+s.toFixed(2))),R.style.background=`linear-gradient(to right, oklch(${n} ${o} ${r} / 0), oklch(${n} ${o} ${r}))`,w.style.background=`oklch(${n} ${o} ${r})`,K.style.background=`linear-gradient(oklch(${n} ${o} ${r} / ${s}), oklch(${n} ${o} ${r} / ${s})), var(--tw-dropdown-bg)`,r!==u&&(c=g(r),u=r),$.style.background=c},F=()=>{if(U.textContent=er([n,o,r],i),i==="hex"){let j=A.querySelector(".tw-color-chan-input");j&&document.activeElement!==j&&(j.value=mn(n,o,r)+(s<.999?le(s):""))}else{let j=hn([n,o,r],i);b.forEach((V,k)=>{V.el.contains(document.activeElement)||V.set(j[k])})}},W=()=>{X(),d(),H()},C=()=>e(f()),G=j=>{j&&r!==a&&d(),H(),F()},z=j=>{G(j),C()},lt=()=>{if(A.replaceChildren(),b=[],i==="hex"){A.classList.add("tw-color-channels--hex");let j=h("div","tw-color-chan"),V=h("input","tw-color-chan-input");V.type="text",V.spellcheck=!1,V.setAttribute("aria-label","Hex color"),Dt(V),vo(V),V.addEventListener("change",()=>{let k=V.value.trim();yn.test(k)&&([n,o,r,s]=ue(k),z(!0))}),V.addEventListener("blur",F),V.addEventListener("keydown",k=>{k.key==="Enter"&&V.blur()}),j.append(st("span","tw-color-chan-label","HEX"),V),A.append(j)}else{A.classList.remove("tw-color-channels--hex");let j=hn([n,o,r],i);Ve[i].forEach((V,k)=>{let J=$t({label:V.k,value:j[k],min:V.min,max:V.max,step:V.step},it=>{[n,o,r]=tr([n,o,r],i,k,T(it,V.min,V.max)),z(!0)});J.el.addEventListener("focusout",F),b.push(J),A.append(J.el)})}F()},mt=j=>xe(j,E);Me(E,j=>{let[V,k]=mt(j);n=1-k,o=V*(l?wn(l,n):.4),z(!1)});let Ot=j=>xe(j,v)[0]*360;Me(v,j=>{r=Ot(j),z(!0)});let Ct=j=>xe(j,N)[0];Me(N,j=>{s=Ct(j),z(!1)}),N.addEventListener("keydown",j=>{let V=ae(j,s,.01,0,1);V!=null&&(j.preventDefault(),s=T(V,0,1),z(!1))});let yt=j=>{i=j,Y.value=j,lt(),d(),H()};return Y.addEventListener("change",()=>{yt(Y.value),t.onMode&&t.onMode()}),lt(),{el:y,set:j=>{let V=document.activeElement;V&&y.contains(V)&&V.blur(),[n,o,r,s]=ue(j),G(!0)},get:()=>f(),mode:()=>i,setMode:j=>{j!==i&&bn.includes(j)&&yt(j)},reflow:W,swatchCss:()=>`linear-gradient(oklch(${n} ${o} ${r} / ${s}), oklch(${n} ${o} ${r} / ${s})), ${Qn}`,valueText:()=>qn([n,o,r],i)+(s<.999?i==="hex"?le(s):` / ${+s.toFixed(2)}`:"")}}function Es(t,e){let{root:n,trigger:o,right:r}=Qt("tw-color",t.label??"Colour"),s=h("span","tw-trigger-chip tw-color-swatch"),i=h("span","tw-trigger-value");r.append(s,i);let a=h("div","tw-color-pop"),l=()=>{s.style.background=b.swatchCss(),i.textContent=b.valueText()},b=vn({value:t.value,onMode:()=>l()},u=>{l(),e(u)});return a.append(b.el),n.append(a),Vt(n,o,a,{width:240,fallbackH:340,gap:6,onOpen:b.reflow,onReflow:b.reflow}),l(),{el:n,set:u=>{b.set(u),l()},get:()=>b.get()}}var lr=(t,e,n,o)=>o<.999?`oklch(${+t.toFixed(4)} ${+e.toFixed(4)} ${+n.toFixed(2)} / ${+o.toFixed(3)})`:`oklch(${+t.toFixed(4)} ${+e.toFixed(4)} ${+n.toFixed(2)})`;ct("color",Es);ct("colorpicker",vn);var ks=Rt('<path d="M12 5v14M5 12h14"/>',"",2.5),cr=t=>t&&!Array.isArray(t)&&typeof t.interpolation=="string"?t.interpolation:null;function ur(t){let e=[{color:"oklch(0.72 0.19 25)",pos:0},{color:"oklch(0.72 0.16 280)",pos:1}],n=Array.isArray(t)?t:t&&Array.isArray(t.stops)?t.stops:null,o=(s,i)=>sr(s)?{color:String(s).trim(),pos:T(+i||0,0,1)}:null,r=(n||[]).map(s=>Array.isArray(s)?o(s[0],s[1]):s&&typeof s=="object"?o(s.color,s.pos):null).filter(Boolean);return r.length>=2?r:e}function Ls(t,e){let n=ur(t.value),o=n[0],{root:r,trigger:s,right:i}=Qt("tw-gradient",t.label??"Gradient"),a=h("span","tw-gradient-count"),l=h("span","tw-trigger-chip tw-gradient-preview");i.append(a,l);let b=h("div","tw-color-pop tw-gradient-pop"),u=h("div","tw-gradient-bar-row"),c=h("div","tw-gradient-bar"),f=h("div","tw-gradient-grad"),y=h("div","tw-gradient-rail");c.append(f,y);let E=vt("tw-gradient-add",ks);E.title="Add a stop after the selected one",E.setAttribute("aria-label","Add a colour stop after the selected one"),u.append(c,E);let p=()=>[...n].sort((g,L)=>g.pos-L.pos),w=()=>p().map(g=>`${g.color} ${(g.pos*100).toFixed(1)}%`).join(", "),v=()=>Jo(Y.mode()),P=()=>`linear-gradient(in ${v()} to right, ${w()})`,$=()=>{let g=P();f.style.background=g,l.style.background=`${g}, ${Qn}`},N=()=>{a.textContent=`${n.length} stop${n.length===1?"":"s"}`},R=()=>({stops:p().map(g=>({color:g.color,pos:+g.pos.toFixed(4)})),interpolation:v()}),K=()=>e(R()),q=g=>[...y.children].find(L=>L._stop===g),Y=vn({value:o.color,mode:Kn(cr(t.value)||"oklch"),onMode:()=>{$(),K()}},g=>{o.color=g,q(o)?.style.setProperty("--stop",g),$(),K()});b.append(u,Y.el),r.append(b);let U=g=>g.setAttribute("aria-label",`Colour stop at ${Math.round(g._stop.pos*100)}%${g._stop===o?", selected":""}`),A=()=>{for(let g of y.children)g.dataset.sel=String(g._stop===o),U(g)},O=()=>{y.replaceChildren();for(let g of n){let L=vt("tw-gradient-stop");L._stop=g,L.style.left=g.pos*100+"%",L.style.setProperty("--stop",g.color),L.dataset.sel=String(g===o),U(L),L.addEventListener("focus",()=>ot(g,!1));let X=!1;Bt(L,{onDown:H=>{H.preventDefault(),H.stopPropagation(),L.focus({focusVisible:!1}),ot(g,!1),X=!1},onMove:H=>{let F=y.getBoundingClientRect();g.pos=T((H.clientX-F.left)/(F.width||1),0,1),L.style.left=g.pos*100+"%",U(L),$(),K(),X=n.length>2&&(H.clientY<F.top-24||H.clientY>F.bottom+24),L.dataset.removing=String(X)},onEnd:()=>{X?D(g):L.dataset.removing="false"}}),L.addEventListener("dblclick",H=>{H.preventDefault(),D(g)}),L.addEventListener("keydown",H=>{let F=H.key==="ArrowLeft"?-1:H.key==="ArrowRight"?1:0;F&&(H.preventDefault(),g.pos=T(g.pos+F*(H.shiftKey?.1:.01),0,1),L.style.left=g.pos*100+"%",U(L),$(),K())}),y.append(L)}},ot=(g,L)=>{g!==o&&(Y.set(g.color),o=g),L?O():A()},tt=g=>{let L=y.getBoundingClientRect();return T((g-L.left)/(L.width||1),0,1)},at=g=>{let L=p(),X=L[0],H=L[L.length-1];for(let mt=0;mt<L.length-1;mt++)if(g>=L[mt].pos&&g<=L[mt+1].pos){X=L[mt],H=L[mt+1];break}let F=H.pos>X.pos?T((g-X.pos)/(H.pos-X.pos),0,1):0,W=ue(X.color),C=ue(H.color),G=mt=>mt[1]<1e-4,z=C[2]-W[2];z>180?z-=360:z<-180&&(z+=360),(G(W)||G(C))&&(z=0);let lt=(((G(W)&&!G(C)?C[2]:W[2])+z*F)%360+360)%360;return lr(W[0]+(C[0]-W[0])*F,W[1]+(C[1]-W[1])*F,lt,W[3]+(C[3]-W[3])*F)},D=g=>{if(n.length<=2)return;let L=n.indexOf(g);if(L<0)return;n.splice(L,1);let X=o===g?n[Math.max(0,L-1)]:o;$(),ot(X,!0),N(),K(),q(o)?.focus()},d=g=>{let L={color:at(g),pos:T(g,0,1)};return n.push(L),$(),ot(L,!0),N(),K(),L},S=()=>{let g=p(),L=g.indexOf(o);L<0&&(L=0);let X=L<g.length-1?(g[L].pos+g[L+1].pos)/2:L>0?(g[L-1].pos+g[L].pos)/2:T(g[L].pos+.1,0,1);d(X)};return E.addEventListener("click",g=>{g.stopPropagation(),S()}),c.addEventListener("dblclick",g=>{g.target.closest(".tw-gradient-stop")||(g.preventDefault(),d(tt(g.clientX)))}),b.tabIndex=-1,b.addEventListener("keydown",g=>{(g.key==="Delete"||g.key==="Backspace")&&!g.altKey&&!/^(input|textarea|select)$/i.test(g.target.tagName)&&n.length>2&&(g.preventDefault(),D(o))}),Vt(r,s,b,{width:260,fallbackH:392,gap:6,onOpen:Y.reflow,onReflow:Y.reflow,initialFocus:()=>q(o)}),O(),$(),N(),{el:r,set:g=>{let L=cr(g);L&&Y.setMode(Kn(L));let X=ur(g).sort((H,F)=>H.pos-F.pos);if(X.length===n.length)p().forEach((H,F)=>{H.color=X[F].color,H.pos=X[F].pos;let W=q(H);W&&(W.style.left=H.pos*100+"%",W.style.setProperty("--stop",H.color))});else{let H=o.pos;n=X,o=n.reduce((F,W)=>Math.abs(W.pos-H)<Math.abs(F.pos-H)?W:F,n[0]),O()}$(),N(),Y.set(o.color)},get:()=>R()}}ct("gradient",Ls);function Cs(t,e){let n=t.label,o=+(t.value&&t.value[0]),r=+(t.value&&t.value[1]),{min:s,max:i,step:a}=Ye(t.min,t.max,t.step,Number.isFinite(o)?o:0,Number.isFinite(r)?r:1);[s,i]=Re(s,i,a);let l=Zt(a),b=D=>we(D,s,a),u=T(b(Number.isFinite(o)?o:s),s,i),c=T(b(Number.isFinite(r)?r:i),s,i);if(u>c){let D=u;u=c,c=D}let f=h("div","tw-slider-wrap"),y=h("div","tw-slider tw-interval"),E=h("div","tw-slider-fill"),p=h("div","tw-slider-handle"),w=h("div","tw-slider-handle"),v=st("span","tw-slider-label",n),P=h("span","tw-slider-value");y.append(E,p,w,v,P),f.append(y),[["minimum",p],["maximum",w]].forEach(([D,d])=>{d.tabIndex=0,d.setAttribute("role","slider"),d.setAttribute("aria-label",`${n} ${D}`),d.setAttribute("aria-valuemin",String(s)),d.setAttribute("aria-valuemax",String(i))});let $=D=>(D-s)/(i-s||1)*100,N=D=>`clamp(5px, calc(${D}% - 1.5px), calc(100% - 9px))`,R=()=>{let D=$(u),d=$(c);E.style.left=D+"%",E.style.width=Math.max(0,d-D)+"%",p.style.left=N(D),w.style.left=N(d),P.textContent=`${u.toFixed(l)} \u2013 ${c.toFixed(l)}`,p.setAttribute("aria-valuenow",String(u)),w.setAttribute("aria-valuenow",String(c));let S=f.offsetWidth;if(S){v.style.maxWidth=Math.max(0,S-P.offsetWidth-12-8-10)+"px";let g=L=>We(v,P,L/100*S-1.5,3);p.classList.toggle("is-dodge",g($(u))),w.classList.toggle("is-dodge",g($(c)))}};R();let K=()=>e([u,c]),q=D=>{u=T(Math.min(b(D),c),s,i),R()},Y=D=>{c=T(Math.max(b(D),u),s,i),R()},U=null,A=1,O=null,ot=D=>{let d=f.offsetWidth||U.width,S=T((D-U.left)/A/d,0,1);return T(s+S*(i-s),s,i)},tt=D=>{let d=ot(D);O||(O=d<u?"lo":d>c?"hi":Math.abs(d-u)<=Math.abs(d-c)?"lo":"hi"),O==="lo"?q(d):Y(d),K()};Bt(y,{onDown:D=>{D.preventDefault(),U=f.getBoundingClientRect(),A=U.width/(f.offsetWidth||U.width),y.classList.add("is-active","is-dragging"),O=null,tt(D.clientX),(O==="lo"?p:w).focus({focusVisible:!1})},onMove:D=>tt(D.clientX),onEnd:()=>{U=null,O=null,y.classList.remove("is-active","is-dragging")}}),Je(y,R),Tt(R),At(y,[[window,"resize"],[window,"tw-reflow"]],R);let at=D=>d=>{let S=D==="lo"?ae(d,u,a,s,c):ae(d,c,a,u,i);S!=null&&(d.preventDefault(),D==="lo"?q(S):Y(S),K())};return p.addEventListener("keydown",at("lo")),w.addEventListener("keydown",at("hi")),{el:f,set:D=>{if(Array.isArray(D)){let d=+D[0],S=+D[1];if(!Number.isFinite(d)||!Number.isFinite(S))return;u=T(b(Math.min(d,S)),s,i),c=T(b(Math.max(d,S)),s,i),R()}},get:()=>[u,c]}}ct("interval",Cs);var Ss=0;function Ts(t){let e=`tw-tabs-${++Ss}`,n=h("div","tw-tabs"),o=h("div","tw-tabs-bar");o.setAttribute("role","tablist");let r=h("div","tw-tabs-pill");o.append(r);let s=h("div","tw-tabs-pages"),i=[],a=t.pages.map((u,c)=>{let f=st("button","tw-tabs-tab",u.title);f.setAttribute("role","tab"),f.dataset.active=String(c===0),f.setAttribute("aria-selected",String(c===0)),f.tabIndex=c===0?0:-1,f.id=`${e}-tab-${c}`,f.setAttribute("aria-controls",`${e}-page-${c}`);let y=h("div","tw-tabs-page tw-controls");return y.dataset.active=String(c===0),y.setAttribute("role","tabpanel"),y.id=`${e}-page-${c}`,y.setAttribute("aria-labelledby",f.id),i.push(y),s.append(y),f.addEventListener("click",()=>b(c)),o.append(f),f});n.append(o,s);let l=u=>Dn(o,r,u);function b(u){a.forEach((c,f)=>{c.dataset.active=String(f===u),c.setAttribute("aria-selected",String(f===u)),c.tabIndex=f===u?0:-1}),i.forEach((c,f)=>c.dataset.active=String(f===u)),l(!0),requestAnimationFrame(()=>window.dispatchEvent(new Event("tw-reflow")))}return o.addEventListener("keydown",u=>{let c=a.findIndex(y=>y.dataset.active==="true");if(c<0)return;let f=Ie(u.key,c,a.length,-1);f<0||(u.preventDefault(),b(f),a[f].focus())}),Tt(l),{el:n,bodies:i,activate:b,active:()=>a.findIndex(u=>u.dataset.active==="true")}}ct("tabs",Ts);var As=t=>String(t).replace(/[\\"]/g,"\\$&").replace(/[\x00-\x1f\x7f]/g,e=>"\\"+e.charCodeAt(0).toString(16)+" ");function Os(t,e){let n=t.value||"",{root:o,trigger:r,right:s}=Qt("tw-image",t.label);r.removeAttribute("aria-expanded"),r.setAttribute("aria-label",`${t.label}: choose an image`);let i=h("span","tw-image-text"),a=h("span","tw-trigger-chip tw-image-thumb");s.append(i,a);let l=h("input","tw-image-input");l.type="file",l.accept="image/*",o.append(l);let b=()=>{a.dataset.set=n?"true":"false",a.style.backgroundImage=n?`url("${As(n)}")`:"",i.textContent=n?"Replace":"Drop or choose"},u=c=>{if(!c||!c.type.startsWith("image/"))return;let f=new FileReader;f.onload=()=>{n=String(f.result),b(),e(n)},f.readAsDataURL(c)};return r.addEventListener("click",()=>l.click()),l.addEventListener("change",()=>{l.files[0]&&u(l.files[0])}),r.addEventListener("dragover",c=>{c.preventDefault(),r.dataset.over="true"}),r.addEventListener("dragleave",()=>{r.dataset.over="false"}),r.addEventListener("drop",c=>{c.preventDefault(),r.dataset.over="false",c.dataTransfer.files[0]&&u(c.dataTransfer.files[0])}),b(),{el:o,set:c=>{c!=null&&typeof c!="string"||(n=c||"",b())},get:()=>n}}ct("image",Os);var Ps=(t,e,n,o,r,s,i)=>{let a=r.length;t.clearRect(0,0,n,o),t.strokeStyle=Ue(e),t.lineWidth=1.5,t.lineJoin="round",t.beginPath();let l=!1;for(let b=0;b<a;b++){let u=r[(s+b)%a];if(Number.isNaN(u))continue;let c=b/(a-1)*n,f=o-T(i(u),0,1)*o;l?t.lineTo(c,f):(t.moveTo(c,f),l=!0)}t.stroke()},Ns=t=>{for(let e of["resize","tw-reflow"])window.addEventListener(e,t);return()=>{for(let e of["resize","tw-reflow"])window.removeEventListener(e,t)}};function dr(t,e=!1){let n=typeof t.get=="function"?t.get:()=>t.value,o=Math.max(30,Number.isFinite(+t.interval)?+t.interval:200),r;try{r=n()}catch{}let s=typeof r=="number",i=t.view==="graph"||s&&t.graph!==!1&&t.view!=="text"&&t.rows==null,a=h("div","tw-fps tw-monitor"),l=st("span","tw-fps-val","\u2014");a.append(st("span","tw-fps-label",t.label??"Monitor"),l);let b=0,u=0,c=()=>{},f=!1,y=Number.isFinite(+t.decimals)?Math.min(20,Math.max(0,Math.floor(+t.decimals))):2,E=A=>A==null?"\u2014":typeof A=="number"?Number.isInteger(A)||!Number.isFinite(A)?String(A):A.toFixed(y):typeof A=="object"?He(A):String(A),p=()=>{b&&clearInterval(b),b=0,u&&cancelAnimationFrame(u),u=0,c()},w=A=>{let O=ot=>{if(e&&(u=requestAnimationFrame(O)),!a.isConnected){f&&p();return}f=!0;let tt;try{tt=n(ot)}catch{return}A(tt)};e?u=requestAnimationFrame(O):b=setInterval(O,o)};if(!i&&t.rows){l.remove();let A=Math.max(1,Math.floor(+t.rows)||1),O=h("pre","tw-monitor-buffer");O.style.setProperty("--tw-monitor-rows",A),a.append(O);let ot=[];return w(tt=>{for(ot.push(E(tt));ot.length>A;)ot.shift();O.textContent=ot.join(`
|
|
3
|
+
`)}),qt(a,p)}if(!i)return w(A=>{l.textContent=E(A)}),qt(a,p);let v=document.createElement("canvas");v.className="tw-fps-canvas",a.append(v);let P=v.getContext("2d");if(!P)return w(A=>{l.textContent=E(A)}),qt(a,p);let $=80,N=new Array($).fill(NaN),R=0,K=0,q=0,Y=()=>{[K,q]=Mo(v,P,2)};c=Ns(Y);let U=()=>{if(K||Y(),!K)return;let A=t.min,O=t.max;if(A==null||O==null){let tt=1/0,at=-1/0;for(let d of N)Number.isFinite(d)&&(d<tt&&(tt=d),d>at&&(at=d));tt===1/0?(tt=0,at=1):tt===at&&(tt-=.5,at+=.5);let D=(at-tt)*.1;A==null&&(A=tt-D),O==null&&(O=at+D)}let ot=O-A||1;Ps(P,a,K,q,N,R,tt=>(tt-A)/ot)};return w(A=>{if(typeof A!="number"||!Number.isFinite(A)){l.textContent=E(A);return}N[R]=A,R=(R+1)%$,l.textContent=E(A),U()}),qt(a,p)}var Fs=()=>{let t=0;return e=>{if(!(e>0))return;let n=t?1e3/(e-t):void 0;return t=e,n}},_s=t=>dr({...t,label:t.label??"FPS",get:Fs(),view:"graph",min:0,max:120,decimals:0},!0);ct("fpsgraph",_s);ct("monitor",t=>dr(t));function $s(t,e,n,o=64){let r=Math.sqrt(t/n),s=e/(2*Math.sqrt(t*n)),i=Math.min(2.2,9/Math.max(s*r,.5)),a=[];for(let l=0;l<o;l++){let b=l/(o-1)*i,u;if(s<1-1e-4){let c=r*Math.sqrt(1-s*s);u=1-Math.exp(-s*r*b)*(Math.cos(c*b)+s*r/c*Math.sin(c*b))}else if(s<=1+1e-4)u=1-Math.exp(-r*b)*(1+r*b);else{let c=Math.sqrt(s*s-1),f=r*(s+c),y=r*(s-c);u=1-(f*Math.exp(-y*b)-y*Math.exp(-f*b))/(f-y)}a.push(u)}return a}function Rs(t,e){let n=(C,G,z)=>Number.isFinite(+C)?Math.max(G,+C):z,o=C=>({stiffness:n(C.stiffness,1,300),damping:n(C.damping,.5,26),mass:n(C.mass,.1,1)}),r=C=>Number.isFinite(+C),a=C=>T(r(C)?+C:.5,.1,1),l=C=>T(r(C)?+C:.2,0,1),b=C=>{let G=(2*Math.PI/C.visualDuration)**2,z=1-C.bounce,lt=1;return{stiffness:G,damping:2*z*Math.sqrt(G*lt),mass:lt}},u=C=>C==="time"||C==="physics"?C:null,c={stiffness:t.stiffness,damping:t.damping,mass:t.mass,visualDuration:t.visualDuration,bounce:t.bounce,...t.value||{}},f=u(c.mode)??u(t.mode)??(r(c.visualDuration)||r(c.bounce)?"time":"physics"),y={visualDuration:a(c.visualDuration),bounce:l(c.bounce)},E=o({stiffness:c.stiffness,damping:c.damping,mass:c.mass}),p=h("div","tw-spring"),w=h("div","tw-spring-viz"),v=document.createElement("canvas");v.className="tw-spring-canvas",w.append(v);let P=h("div","tw-fields"),$=h("div","tw-fields"),N=v.getContext("2d"),R=()=>o(f==="time"?b(y):E),K=()=>{let C=w.getBoundingClientRect(),G=Math.max(1,Math.round(C.width)),z=Math.max(1,Math.round(C.height));if(G<2)return;let lt=window.devicePixelRatio||1;v.width=G*lt,v.height=z*lt,N.setTransform(lt,0,0,lt,0,0),N.clearRect(0,0,G,z);let mt=R(),Nt=$s(mt.stiffness,mt.damping,mt.mass,Math.max(160,Math.round(G*lt))),Ot=Math.max(1.05,...Nt),wt=8,Ct=yt=>wt+yt/(Nt.length-1)*(G-2*wt),ht=yt=>z-wt-yt/Ot*(z-2*wt);N.strokeStyle=yo(p,"--tw-surface-active")||"rgba(255,255,255,0.1)",N.lineWidth=1,N.beginPath(),N.moveTo(wt,ht(1)),N.lineTo(G-wt,ht(1)),N.stroke(),N.strokeStyle=Ue(p),N.lineWidth=1.5,N.lineJoin=N.lineCap="round",N.beginPath(),Nt.forEach((yt,j)=>j?N.lineTo(Ct(j),ht(yt)):N.moveTo(Ct(j),ht(yt))),N.stroke()},q=()=>f==="time"?{...R(),visualDuration:y.visualDuration,bounce:y.bounce}:R(),Y=()=>e(q()),U={};[["stiffness","Stiffness",1],["damping","Damping",.5],["mass","Mass",.1]].forEach(([C,G,z])=>{U[C]=$t({label:G,value:E[C],step:z,min:z},lt=>{E[C]=lt,K(),Y()}),P.append(U[C].el)});let A=$t({label:"Duration",value:y.visualDuration,step:.05,min:.1,max:1},C=>{y.visualDuration=a(C),K(),Y()}),O=$t({label:"Bounce",value:y.bounce,step:.05,min:0,max:1},C=>{y.bounce=l(C),K(),Y()});$.append(A.el,O.el);let ot=()=>{$.style.display=f==="time"?"":"none",P.style.display=f==="physics"?"":"none"},at=nn([{value:"time",label:"Time"},{value:"physics",label:"Physics"}],f,C=>{C!=="time"&&C!=="physics"||C===f||(f=C,ot(),K(),Y())},"Spring mode"),D=h("div","tw-row");D.append(st("span","tw-row-label","Mode"),at.el),t.label&&p.append(st("div","tw-spring-label",t.label)),p.append(w,D,P,$);let d=1,S=500,g=1,L=40,X=null,H=C=>{if(!X)return;let G=T((C.clientX-X.left)/X.width,0,1),z=T((C.clientY-X.top)/X.height,0,1);f==="time"?(A.set(.1+G*(1-.1)),y.visualDuration=A.get(),O.set(1-z),y.bounce=O.get()):(U.stiffness.set(d+G*(S-d)),E.stiffness=U.stiffness.get(),U.damping.set(g+z*(L-g)),E.damping=U.damping.get()),K(),Y()};Bt(w,{onDown:C=>{C.preventDefault(),X=w.getBoundingClientRect(),w.classList.add("is-dragging"),H(C)},onMove:H,onEnd:()=>{X=null,w.classList.remove("is-dragging")}}),ot(),Tt(K),At(v,[[window,"resize"],[window,"tw-reflow"],[matchMedia("(prefers-color-scheme: dark)"),"change"],[window,"tw-retheme"]],K);let F=null,W=!1;return typeof MutationObserver=="function"&&(F=new MutationObserver(()=>{v.isConnected?(W=!0,K()):W&&(F.disconnect(),F=null)}),F.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:["data-tw-scheme"]})),{el:p,destroy:()=>{F&&(F.disconnect(),F=null)},set:C=>{if(!C||typeof C!="object")return;let G=u(C.mode),z=r(C.visualDuration)||r(C.bounce),lt=r(C.stiffness)||r(C.damping)||r(C.mass);!z&&!lt&&!G||(f=G??(z?"time":"physics"),z&&(r(C.visualDuration)&&(y.visualDuration=a(C.visualDuration)),r(C.bounce)&&(y.bounce=l(C.bounce))),lt&&(E=o({...E,...C})),at.set(f),A.set(y.visualDuration),O.set(y.bounce),U.stiffness.set(E.stiffness),U.damping.set(E.damping),U.mass.set(E.mass),ot(),K())},get:()=>q()}}ct("spring",Rs);function Hs(t,e){let n=[.25,.1,.25,1],o=-.25,r=1.25,s=r-o,i=8,a=d=>d.map((S,g)=>T(S,g%2?o:0,g%2?r:1)),l=Array.isArray(t.value)&&t.value.length===4?t.value.map(Number):n.slice();l.some(d=>!Number.isFinite(d))&&(l=n.slice()),l=a(l);let b=l.slice(),u=h("div","tw-bezier");t.label&&u.append(st("div","tw-bezier-label",t.label));let c=h("div","tw-bezier-graph"),f=kt("svg","tw-bezier-svg");f.setAttribute("preserveAspectRatio","none");let y=kt("line","tw-bezier-guide"),E=kt("line","tw-bezier-guide"),p=kt("line","tw-bezier-diag"),w=kt("line","tw-bezier-ctl"),v=kt("line","tw-bezier-ctl"),P=kt("path","tw-bezier-curve");f.append(y,E,p,w,v,P);let $=vt("tw-bezier-handle");$.setAttribute("aria-label","Control point 1");let N=vt("tw-bezier-handle");N.setAttribute("aria-label","Control point 2"),c.append(f,$,N);let R=h("div","tw-fields tw-bezier-fields");u.append(c,R);let K=0,q=0,Y=d=>i+d*(K-2*i),U=d=>q-i-(d-o)/s*(q-2*i),A=(d,S,g,L,X)=>{d.setAttribute("x1",S),d.setAttribute("y1",g),d.setAttribute("x2",L),d.setAttribute("y2",X)},O=()=>{if($.setAttribute("aria-label",`Control point 1, x ${l[0]}, y ${l[1]}`),N.setAttribute("aria-label",`Control point 2, x ${l[2]}, y ${l[3]}`),K=c.offsetWidth,q=c.offsetHeight,K<2)return;f.setAttribute("viewBox",`0 0 ${K} ${q}`);let[d,S,g,L]=l,X=Y(0),H=U(0),F=Y(1),W=U(1),C=Y(d),G=U(S),z=Y(g),lt=U(L);A(y,i,H,K-i,H),A(E,i,W,K-i,W),A(p,X,H,F,W),A(w,X,H,C,G),A(v,F,W,z,lt),P.setAttribute("d",`M${X},${H} C${C},${G} ${z},${lt} ${F},${W}`),$.style.left=C+"px",$.style.top=G+"px",N.style.left=z+"px",N.style.top=lt+"px"},ot=[{label:"X1",i:0,lo:0,hi:1},{label:"Y1",i:1,lo:o,hi:r},{label:"X2",i:2,lo:0,hi:1},{label:"Y2",i:3,lo:o,hi:r}],tt=ot.map(d=>{let S=$t({label:d.label,value:l[d.i],step:.01,min:d.lo,max:d.hi},g=>{l[d.i]=g,O(),e(l.slice())});return R.append(S.el),S}),at=()=>tt.forEach((d,S)=>d.set(l[ot[S].i])),D=(d,S)=>{let g=null,L=0,X=0,H=1;Bt(d,{onDown:F=>{F.preventDefault(),g=c.getBoundingClientRect(),L=c.offsetWidth||g.width,X=c.offsetHeight||g.height,H=g.width/L,d.classList.add("is-dragging"),d.focus({focusVisible:!1})},onMove:F=>{let W=(F.clientX-g.left)/H,C=(F.clientY-g.top)/H,G=T((W-i)/(L-2*i),0,1),z=T(o+(X-i-C)/(X-2*i)*s,o,r);l[S*2]=+G.toFixed(2),l[S*2+1]=+z.toFixed(2),O(),at(),e(l.slice())},onEnd:()=>{g=null,d.classList.remove("is-dragging")}}),d.addEventListener("keydown",F=>{if(F.key==="Escape")return d.blur();if(F.key==="Home"){F.preventDefault(),l=b.slice(),O(),at(),e(l.slice());return}let W=F.key==="ArrowRight"?1:F.key==="ArrowLeft"?-1:0,C=F.key==="ArrowUp"?1:F.key==="ArrowDown"?-1:0;if(!W&&!C)return;F.preventDefault();let G=F.shiftKey?.1:.01,z=S*2;W&&(l[z]=+T(l[z]+W*G,0,1).toFixed(2)),C&&(l[z+1]=+T(l[z+1]+C*G,o,r).toFixed(2)),O(),at(),e(l.slice())})};return D($,0),D(N,1),Tt(O),At(u,[[window,"resize"],[window,"tw-reflow"]],O),{el:u,set:d=>{if(Array.isArray(d)&&d.length===4){let S=d.map(Number);if(S.some(g=>!Number.isFinite(g)))return;l=a(S),O(),at()}},get:()=>l.slice()}}ct("cubicbezier",Hs);function Ds(t,e){let n=t.components,{root:o,trigger:r,right:s}=Qt("tw-point",t.label??"Point"),i=h("span","tw-trigger-value"),a=h("div","tw-trigger-chip tw-point-preview"),l=h("div","tw-point-preview-dot");a.append(l),s.append(i,a);let b=h("div","tw-color-pop tw-point-pop"),u=h("div","tw-point-body");b.append(u);let c=t.pad!==!1&&n.length>=2,f=d=>{let S=ve(Math.abs(Number.isFinite(+d.value)?+d.value:0))[1],g=d.min??-S,L=d.max??S,X=10**Math.floor(Math.log10((L-g)/200));return{lo:g,hi:L,step:d.step??(X>0&&Number.isFinite(X)?X:1)}},y=n.map(f),E=y[0],p=y[1],w=E?.lo??-1,v=E?.hi??1,P=p?.lo??-1,$=p?.hi??1,N=(d,S,g)=>g>S?T((d-S)/(g-S),0,1):.5,R=null,K=null,q=null;if(c){R=h("div","tw-pad"),K=h("div","tw-pad-thumb");let d=kt("svg","tw-pad-line");d.setAttribute("viewBox","0 0 100 100"),d.setAttribute("preserveAspectRatio","none"),q=kt("line"),d.append(q);let S=N(0,P,$);q.setAttribute("x1",N(0,w,v)*100),q.setAttribute("y1",(t.invertY?S:1-S)*100),R.append(h("div","tw-pad-axis tw-pad-axis-x"),h("div","tw-pad-axis tw-pad-axis-y"),d,K),u.append(R)}let Y=h("div","tw-fields");u.append(Y);let U=()=>{D(),at()},A=()=>e(ot()),O=n.map((d,S)=>{let g=$t({label:d.label,value:d.value??0,step:y[S].step,min:d.min,max:d.max},()=>{U(),A()});return Y.append(g.el),g}),ot=()=>Object.fromEntries(n.map((d,S)=>[d.key,O[S].get()])),tt=(d,S)=>(+d).toFixed(Zt(S)),at=()=>{i.textContent=n.map((d,S)=>tt(O[S].get(),y[S].step)).join(", ")},D=()=>{l.style.left="50%",l.style.top="50%"};if(c){let S=L=>`calc(${(L*100).toFixed(2)}% + ${((.5-L)*5).toFixed(2)}px)`;D=()=>{let L=N(O[0].get(),w,v),X=N(O[1].get(),P,$),H=t.invertY?X:1-X,F=L*100,W=H*100;K.style.left=F+"%",K.style.top=W+"%",l.style.left=S(L),l.style.top=S(H),q.setAttribute("x2",F),q.setAttribute("y2",W),R.setAttribute("aria-description",`${n[0].label??n[0].key} ${tt(O[0].get(),E.step)}, ${n[1].label??n[1].key} ${tt(O[1].get(),p.step)}`)},Me(R,L=>{let[X,H]=xe(L,R),F=t.invertY?H:1-H;O[0].set(w+X*(v-w)),O[1].set(P+F*($-P)),U(),A()}),R.tabIndex=0,R.setAttribute("role","group"),R.setAttribute("aria-label",`${t.label??"Point"} pad: ${n[0].label??n[0].key} and ${n[1].label??n[1].key}`),R.addEventListener("keydown",L=>{if(L.key==="Home"){L.preventDefault(),n.forEach((W,C)=>O[C].set(W.value??0)),U(),A();return}let X=L.key==="ArrowRight"?1:L.key==="ArrowLeft"?-1:0,H=L.key==="ArrowUp"?1:L.key==="ArrowDown"?-1:0;if(!X&&!H)return;L.preventDefault();let F=L.shiftKey?10:1;X&&O[0].set(T(O[0].get()+X*E.step*F,w,v)),H&&O[1].set(T(O[1].get()+(t.invertY?-H:H)*p.step*F,P,$)),U(),A()})}return o.append(b),Vt(o,r,b,{width:216,fallbackH:240,gap:6,onOpen:U}),U(),{el:o,set:d=>{d&&n.forEach((S,g)=>{d[S.key]!=null&&O[g].set(d[S.key])}),U()},get:ot}}ct("point",Ds);var Is=Object.assign(Object.create(null),{sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:Math.atan2,sinh:Math.sinh,cosh:Math.cosh,tanh:Math.tanh,sqrt:Math.sqrt,cbrt:Math.cbrt,abs:Math.abs,exp:Math.exp,log:Math.log,ln:Math.log,log10:Math.log10,log2:Math.log2,floor:Math.floor,ceil:Math.ceil,round:Math.round,sign:Math.sign,trunc:Math.trunc,min:Math.min,max:Math.max,pow:Math.pow,hypot:Math.hypot,mod:(t,e)=>t%e,clamp:(t,e,n)=>Math.min(Math.max(t,e),n)}),pr=Object.assign(Object.create(null),{pi:Math.PI,e:Math.E,tau:Math.PI*2,phi:(1+Math.sqrt(5))/2});function so(t){if(typeof t!="string"||!t.trim()||t.length>512)return null;let e=t,n=[],o=/\d*\.?\d+(?:[eE][+-]?\d+)?/y,r=/[A-Za-z_]\w*/y,s=0;for(;s<e.length;){let p=e[s];if(p===" "||p===" "||p===`
|
|
4
|
+
`){s++;continue}if(p>="0"&&p<="9"||p==="."&&e[s+1]>="0"&&e[s+1]<="9"){o.lastIndex=s;let w=o.exec(e);if(!w||w.index!==s)return null;n.push({t:"num",v:parseFloat(w[0])}),s=o.lastIndex;continue}if(p>="A"&&p<="Z"||p>="a"&&p<="z"||p==="_"){r.lastIndex=s;let w=r.exec(e);n.push({t:"id",v:w[0]}),s=r.lastIndex;continue}if(p==="*"&&e[s+1]==="*"){n.push({t:"op",v:"^"}),s+=2;continue}if("+-*/%^".includes(p)){n.push({t:"op",v:p}),s++;continue}if(p==="("){n.push({t:"lp"}),s++;continue}if(p===")"){n.push({t:"rp"}),s++;continue}if(p===","){n.push({t:"comma"}),s++;continue}return null}if(!n.length)return null;let i=0,a=()=>n[i],l=p=>{let w=n[i];return!w||p&&w.t!==p?null:(i++,w)},b=()=>{let p=u();if(!p)return null;for(;a()&&a().t==="op"&&(a().v==="+"||a().v==="-");){let w=l("op").v,v=u();if(!v)return null;let P=p;p=w==="+"?$=>P($)+v($):$=>P($)-v($)}return p},u=()=>{let p=c();if(!p)return null;for(;a()&&a().t==="op"&&(a().v==="*"||a().v==="/"||a().v==="%");){let w=l("op").v,v=c();if(!v)return null;let P=p;p=w==="*"?$=>P($)*v($):w==="/"?$=>P($)/v($):$=>P($)%v($)}return p},c=()=>{if(a()&&a().t==="op"&&(a().v==="-"||a().v==="+")){let p=l("op").v,w=c();return w?p==="-"?v=>-w(v):w:null}return f()},f=()=>{let p=y();if(!p)return null;if(a()&&a().t==="op"&&a().v==="^"){l("op");let w=c();return w?v=>Math.pow(p(v),w(v)):null}return p},y=()=>{let p=a();if(!p)return null;if(p.t==="num")return l("num"),()=>p.v;if(p.t==="lp"){l("lp");let w=b();return!w||!l("rp")?null:w}if(p.t==="id"){l("id");let w=p.v.toLowerCase();if(a()&&a().t==="lp"){let v=Is[w];if(!v)return null;l("lp");let P=[];if(a()&&a().t!=="rp")do{let $=b();if(!$)return null;P.push($)}while(l("comma"));return l("rp")?$=>v(...P.map(N=>N($))):null}if(w==="x")return v=>v;if(w in pr){let v=pr[w];return()=>v}return null}return null},E=b();return E&&i===n.length?E:null}function js(t,e){let n=Number(t.xMin),o=Number(t.xMax);if(Number.isFinite(n)||(n=-10),Number.isFinite(o)||(o=10),o<n){let P=n;n=o,o=P}o===n&&(n-=1,o+=1);let r=Math.max(2,Math.min(4096,t.samples|0||256)),s=Number.isFinite(t.yMin)&&Number.isFinite(t.yMax)&&+t.yMax>+t.yMin,i=t.editable!==!1&&!t.fn,a=t.expr!=null?String(t.expr):"",l=typeof t.fn=="function"?t.fn:so(a),b=h("div","tw-plot");t.label&&b.append(st("div","tw-plot-label",t.label));let u=h("div","tw-plot-graph"),c=kt("svg","tw-plot-svg");c.setAttribute("preserveAspectRatio","none");let f=kt("line","tw-plot-axis"),y=kt("line","tw-plot-axis"),E=kt("path","tw-plot-curve");c.append(f,y,E),u.append(c),b.append(u);let p=null;if(i){let P=h("div","tw-plot-field");p=h("input","tw-plot-input"),p.type="text",p.value=a,p.spellcheck=!1,p.autocapitalize="off",p.autocomplete="off",Dt(p),p.setAttribute("aria-label",`${t.label||"Plot"} \u2014 expression in x`),p.setAttribute("aria-invalid","false"),P.append(st("span","tw-plot-fx","y ="),p),b.append(P)}let w=6,v=()=>{let P=typeof l=="function";b.classList.toggle("is-invalid",i&&!P),p&&p.setAttribute("aria-invalid",i&&!P?"true":"false");let $=u.getBoundingClientRect(),N=$.width,R=$.height;if(N<2)return;c.setAttribute("viewBox",`0 0 ${N} ${R}`);let K=[],q=1/0,Y=-1/0;if(P)for(let d=0;d<r;d++){let S=n+(o-n)*(d/(r-1)),g;try{g=l(S)}catch{g=NaN}K.push(g),Number.isFinite(g)&&(g<q&&(q=g),g>Y&&(Y=g))}let U=t.yMin,A=t.yMax;if(!s)if(!Number.isFinite(q)||q===Y){let d=Number.isFinite(q)?q:0;U=d-1,A=d+1}else{let d=(Y-q)*.12;U=q-d,A=Y+d}let O=d=>w+(d-n)/(o-n)*(N-2*w),ot=d=>R-w-(d-U)/(A-U)*(R-2*w),tt=(d,S,g,L,X,H)=>{d.style.display=H?"":"none",H&&(d.setAttribute("x1",S),d.setAttribute("y1",g),d.setAttribute("x2",L),d.setAttribute("y2",X))};tt(f,w,ot(0),N-w,ot(0),U<=0&&A>=0),tt(y,O(0),w,O(0),R-w,n<=0&&o>=0);let at="",D=!1;if(P)for(let d=0;d<r;d++){let S=K[d];if(!Number.isFinite(S)){D=!1;continue}let g=O(n+(o-n)*(d/(r-1))),L=T(ot(S),-1e4,1e4);at+=(D?"L":"M")+g.toFixed(1)+","+L.toFixed(1)+" ",D=!0}E.setAttribute("d",at)};return i&&p.addEventListener("input",()=>{a=p.value,l=so(a),v(),e(a)}),Tt(v),At(b,[[window,"resize"],[window,"tw-reflow"]],v),{el:b,get:()=>a,set:P=>{P!=null&&(a=String(P),p&&(p.value=a),t.fn||(l=so(a)),v())}}}ct("plot",js);var fr=Rt('<rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>',"tw-toolbar-btn__copy"),mr=Rt('<path d="M20 6 9 17l-5-5"/>',"tw-toolbar-btn__check",2.4),br=Rt('<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8M3 3v5h5"/>'),gr=Rt('<circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/>'),io=t=>Rt('<path d="m6 9 6 6 6-6"/>',t,2.5),hr=io("tw-chevron"),wr=Rt('<path d="m12 2 9 5-9 5-9-5 9-5Z"/><path d="m3 12 9 5 9-5"/><path d="m3 17 9 5 9-5"/>'),yr=Rt('<path d="M18 6 6 18M6 6l12 12"/>',"",2.2),ao=Rt('<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>');var Xe=(t,e,n)=>{let o=vt("tw-toolbar-btn"+(t?" "+t:""),e);return o.title=n,o.setAttribute("aria-label",n),o},En=(t,e,n)=>{let o=Xe("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${fr}${mr}</span>`,"Copy values");return o.addEventListener("click",async()=>{o.disabled||(await Xs(n())?(Bs(o),ee(`${e} values copied`,t)):ee("Copy failed",t))}),o},kn=t=>{let e=Xe("tw-toolbar-btn--reset",br,"Reset");return e.addEventListener("click",()=>{e.disabled||(lo(e),t())}),e},Bs=t=>{t.classList.add("is-copied"),clearTimeout(t._t),t._t=setTimeout(()=>t.classList.remove("is-copied"),1400)},lo=t=>{let e=t.querySelector("svg");t._spinSettle||(t._spinSettle=()=>{clearTimeout(t._t),t.classList.remove("is-spinning"),e.style.transition="none",e.style.setProperty("--tw-spin","0deg"),e.getBoundingClientRect(),e.style.transition=""},e.addEventListener("transitionend",o=>{o.propertyName==="transform"&&t.classList.contains("is-spinning")&&performance.now()-t._spinT>250&&t._spinSettle()})),t._spinT=performance.now(),e.style.setProperty("--tw-spin",`${(parseFloat(e.style.getPropertyValue("--tw-spin"))||0)-360}deg`),t.classList.add("is-spinning"),clearTimeout(t._t);let n=()=>{e.getAnimations&&e.getAnimations().length?t._t=setTimeout(n,250):t._spinSettle()};t._t=setTimeout(n,600)},Yt=null,vr=0;function ee(t,e){Yt||(Yt=h("div","tw-toast tw-portal"),Yt.setAttribute("role","status")),Yt.isConnected||document.body.appendChild(Yt),Yt.textContent=t,he(Yt,e),Yt.classList.add("is-open"),clearTimeout(vr),vr=setTimeout(()=>Yt.classList.remove("is-open"),1600)}var Lt=null,Mn=0,xn=null,xr=t=>{t.key==="Escape"&&Ge()},Ge=t=>{t&&xn&&!t.contains(xn)||(clearTimeout(Mn),document.removeEventListener("keydown",xr),Lt&&Lt.classList.remove("is-open"))};function Vs(t,e){Lt||(Lt=h("div","tw-tip tw-portal"),Lt.setAttribute("role","tooltip")),Lt.isConnected||document.body.appendChild(Lt),clearTimeout(Mn),Lt.textContent=e,he(Lt,t);let n=Lt.classList.contains("is-open");Lt.style.visibility="hidden",Lt.classList.add("is-open"),_n(t,Lt,{align:"center",prefer:"above",gap:8}),Lt.style.visibility="",document.addEventListener("keydown",xr),xn=t,n||requestAnimationFrame(function o(){if(Lt.classList.contains("is-open")){if(!xn.isConnected)return Ge();requestAnimationFrame(o)}})}function Mr(){Lt&&(clearTimeout(Mn),Mn=setTimeout(Ge,80))}var co=".tw-slider-label, .tw-row-label, .tw-select-label, .tw-trigger-label, .tw-radiogrid-label, .tw-field-label, .tw-folder-title, .tw-fps-label, .tw-plot-label";function Te(t,e){let n=t.querySelector(co)||t;if(n===t&&t.classList.contains("tw-separator"))return;let o=n.closest("button"),r=o?h("span","tw-hint",ao):vt("tw-hint",ao),s=()=>Vs(r,e);if(o){r.setAttribute("aria-hidden","true");let i=o.getAttribute("aria-description");o.setAttribute("aria-description",i?`${i}. ${e}`:e)}else r.setAttribute("aria-label",e),r.addEventListener("focus",s),r.addEventListener("blur",Mr),r.addEventListener("keydown",i=>{(i.key==="Enter"||i.key===" ")&&i.stopPropagation()});r.addEventListener("pointerenter",s),r.addEventListener("pointerleave",Mr),r.addEventListener("pointerdown",i=>i.stopPropagation()),r.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation()}),n.appendChild(r)}async function Xs(t){try{return await navigator.clipboard.writeText(t),!0}catch{}let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.top="-9999px",document.body.appendChild(e),e.focus(),e.select();let n=!1;try{n=document.execCommand("copy")}catch{}return document.body.removeChild(e),n}function pe(t,e,n=0){if(Ln(t))return null;let o=zs(t,e,n);return o&&e&&typeof e=="object"&&(typeof e.render=="function"&&(o.render=e.render),e.disabled!=null&&(o.disabled=e.disabled),e.hint!=null&&(o.hint=String(e.hint))),o}var de=t=>t&&typeof t=="object",ne=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Ln=t=>t==="__proto__"||t==="constructor"||t==="prototype",oe=(t,e)=>t!==e&&!(de(t)&&de(e)&&JSON.stringify(t)===JSON.stringify(e)),Cn=(t,e,n)=>{t.set(n),t.set(e)},Er=t=>Array.isArray(t.options)&&{type:"radiogrid",options:t.options,value:t.value??Kt(t.options[0]),cols:t.cols},Ar="#7c5cff",kr=(t,...e)=>{let n=(e.length?e:[0]).map(s=>ve(Number.isFinite(+s)?+s:0)),o=t.min??Math.min(...n.map(s=>s[0])),r=t.max??Math.max(...n.map(s=>s[1]));return{min:o,max:r,step:t.step??ye(o,r)}},Lr=(t,e)=>t.label==null?e:String(t.label),Cr={slider:t=>{let e=kr(t,t.value??t.min??0);return{value:t.value??e.min,...e,soft:t.soft}},number:t=>({value:t.value??0,min:t.min,max:t.max,step:t.step??1,soft:t.soft}),checkbox:t=>({value:!!t.value}),radiogrid:Er,segmented:Er,list:t=>Array.isArray(t.options)&&{options:t.options,value:t.value??Kt(t.options[0])},color:t=>({value:t.value??Ar}),text:t=>({value:t.value??"",rows:t.rows,placeholder:t.placeholder}),interval:t=>{let e=kr(t,...Array.isArray(t.value)?t.value:[]);return{value:(Array.isArray(t.value)?t.value:[e.min,e.max]).map(Number),...e}},spring:t=>{let e=de(t.value)?t.value:t,n={stiffness:e.stiffness??300,damping:e.damping??26,mass:e.mass??1};Number.isFinite(+e.visualDuration)&&(n.visualDuration=+e.visualDuration),Number.isFinite(+e.bounce)&&(n.bounce=+e.bounce);let o=t.mode??e.mode;return(o==="time"||o==="physics")&&(n.mode=o),{value:n}},cubicbezier:t=>({value:Array.isArray(t.value)&&t.value.length===4?t.value.map(Number):[.25,.1,.25,1]}),point:t=>{if(!Array.isArray(t.components)||!t.components.length)return!1;let e=new Set,n=t.components.map((o,r)=>{let s=String(o.key??((o.label?String(o.label).toLowerCase():"")||`c${r}`)),i=s,a=2;for(;e.has(i);)i=`${s}-${a++}`;return e.add(i),{...o,key:i}});return{components:n,pad:t.pad,invertY:t.invertY,value:Object.fromEntries(n.map(o=>[o.key,o.value??0]))}},gradient:t=>({value:t.value??t.stops??null}),image:t=>({value:t.value||""}),plot:t=>{let e=t.expr!=null?String(t.expr):typeof t.fn=="function"?"":"sin(x)";return{value:e,expr:e,fn:typeof t.fn=="function"?t.fn:null,xMin:t.xMin??t.min??-10,xMax:t.xMax??t.max??10,yMin:t.yMin,yMax:t.yMax,samples:t.samples,editable:t.editable}},fpsgraph:()=>({}),monitor:t=>({get:t.get,value:t.value,graph:t.graph,view:t.view,min:t.min,max:t.max,interval:t.interval,rows:t.rows,decimals:t.decimals}),buttongroup:t=>({buttons:t.buttons}),separator:()=>({}),tabs:(t,e)=>{if(!t.pages||typeof t.pages!="object"||!Object.keys(t.pages).length)return!1;let n=new Set;return{pages:Object.entries(t.pages).map(([o,r])=>{let s=o.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",i=s,a=2;for(;n.has(i);)i=`${s}-${a++}`;return n.add(i),{key:i,title:o.trim()?o:"Tab",children:Object.entries(r).map(([l,b])=>pe(l,b,e+1)).filter(Boolean)}})}}},Gs=Object.assign(Object.create(null),{list:"options",radiogrid:"options",segmented:"options",point:"components",tabs:"pages"});function zs(t,e,n=0){if(n>64)return null;let o=qe(t),r=(s,i,a=o)=>({type:s,key:t,label:a,...i});if(de(e)&&!Array.isArray(e)&&ne(Cr,e.type)){let s;try{s=Cr[e.type](e,n)}catch(i){return console.error(`[tweaks] malformed "${e.type}" schema value for "${t}" \u2014 control skipped:`,i),null}if(s)return r(String(e.type),s,Lr(e,o));if(ne(e,Gs[e.type]))return console.error(`[tweaks] malformed "${e.type}" schema value for "${t}" \u2014 control skipped`),null}if(Array.isArray(e)&&Array.isArray(e[0])&&e[0].length===2&&typeof e[0][0]=="number"){let s=Number.isFinite(+e[1])?+e[1]:+e[0][0],i=Number.isFinite(+e[2])?+e[2]:+e[0][1];return r("interval",{value:e[0].map(Number),min:s,max:i,step:e[3]??ye(s,i)})}if(Array.isArray(e)&&e.length<=4&&typeof e[0]=="number"){let s=e[0],[i,a]=ve(s),l=e.length>1?e[1]:i,b=e.length>2?e[2]:a;return r("slider",{value:s,min:l,max:b,step:e[3]??ye(l,b)})}if(typeof e=="number"){let[s,i]=ve(e);return r("slider",{value:e,min:s,max:i,step:ye(s,i)})}return typeof e=="boolean"?r("checkbox",{value:e}):Array.isArray(e)?r("list",{options:e,value:Kt(e[0])}):de(e)&&typeof e.action=="function"?r("button",{action:e.action},Lr(e,o)):de(e)&&Array.isArray(e.options)?r("list",{options:e.options,value:e.value??Kt(e.options[0])}):wo(e)?r("color",{value:e}):typeof e=="string"?r("text",{value:e}):de(e)?r("folder",{children:Object.entries(e).filter(([s,i])=>!(s==="render"&&typeof i=="function")&&!((s==="disabled"||s==="hint")&&i!=null)).map(([s,i])=>pe(s,i,n+1)).filter(Boolean)}):null}var Sn=new Set(["button","fpsgraph","monitor","buttongroup","separator"]),Sr={slider:t=>({value:pt(t.value),min:pt(t.min),max:pt(t.max),step:pt(t.step),soft:Tr(t.soft)}),checkbox:t=>t.options?{type:"radiogrid",options:ze(t.options),value:t.value,cols:pt(t.cols)}:{value:t.checked==="true"},radiogrid:t=>({options:ze(t.options),value:t.value,cols:pt(t.cols)}),list:t=>({options:ze(t.options),value:t.value}),color:t=>({value:t.value||Ar}),button:(t,e,n)=>({action:()=>ee(`${n} pressed`,e)}),buttongroup:(t,e)=>({buttons:ze(t.buttons).map(n=>({label:n,action:()=>ee(`${n} pressed`,e)}))}),separator:()=>({}),number:t=>({value:pt(t.value),min:pt(t.min),max:pt(t.max),step:pt(t.step)}),text:t=>({value:t.value??"",placeholder:t.placeholder,rows:pt(t.rows)}),image:t=>({value:t.value}),fpsgraph:t=>({label:t.label??"FPS"}),interval:t=>({value:t.value?t.value.split(",").map(Number):void 0,min:pt(t.min),max:pt(t.max),step:pt(t.step)}),spring:t=>({stiffness:pt(t.stiffness),damping:pt(t.damping),mass:pt(t.mass),visualDuration:pt(t.visualDuration),bounce:pt(t.bounce),mode:t.mode}),cubicbezier:t=>({value:t.value?t.value.split(",").map(Number):void 0}),point:t=>{let e=(t.value||"").split(",").map(n=>parseFloat(n));return{components:ze(t.components||"X,Y").map((n,o)=>({key:n.toLowerCase(),label:n,value:isNaN(e[o])?0:e[o],step:pt(t.step),min:pt(t.min),max:pt(t.max)})),pad:Tr(t.pad),invertY:t.invertY==="true"}},plot:t=>({expr:t.expr,xMin:pt(t.xmin),xMax:pt(t.xmax),yMin:pt(t.ymin),yMax:pt(t.ymax),samples:pt(t.samples),editable:t.editable!=="false"})},pt=t=>{if(t==null||t==="")return;let e=+t;return Number.isFinite(e)?e:void 0},Tr=t=>t==="true"||t==="",ze=t=>(t||"").split(",").map(e=>e.trim()).filter(Boolean),Or=t=>{let e=t.dataset,n=e.tw;if(!ne(Sr,n))return null;let o=e.label??qe(e.key||n),r=Sr[n](e,t,o);return pe("v",{type:n,label:o,...r})};var uo={},Tn={},Ks=t=>te(t)||!uo[t]?null:Tn[t]||(Tn[t]=uo[t]().catch(e=>{throw delete Tn[t],console.error(`[tweaks] control chunk "${t}" failed to load:`,e),e})),po=(t,e=new Set)=>{for(let n of t)if(n&&(uo[n.type]&&e.add(n.type),n.children&&po(n.children,e),n.pages))for(let o of n.pages)po(o.children,e);return e},Ae=t=>{let e=[...po(t)].map(Ks).filter(Boolean);return e.length?Promise.all(e):null};var qs=3,Pr=32,Nr=200,Fr=8;function Ys(t,e){let n=t.label,{min:o,max:r,step:s}=Ye(t.min,t.max,t.step);t.soft||([o,r]=Re(o,r,s));let i=(r-o)/s<=6,a=Number.isFinite(+t.value)?+t.value:o,l=t.soft&&!i?a:T(a,o,r),b=0,u=Zt(s),c=h("div","tw-slider-wrap"),f=h("div","tw-slider"),y=h("div","tw-slider-hashmarks"),E=h("div","tw-slider-fill"),p=h("div","tw-slider-handle"),w=st("span","tw-slider-label",n),v=h("span","tw-slider-value");f.append(y,E,p,w,v),c.append(f),f.tabIndex=0,f.setAttribute("role","slider"),f.setAttribute("aria-label",n),f.setAttribute("aria-valuemin",String(o)),f.setAttribute("aria-valuemax",String(r));let P=k=>we(k,o,s),$=i?Array.from({length:Math.max(0,Math.round((r-o)/s)-1)},(k,J)=>(J+1)*s/(r-o)*100):[];for(let k of $){let J=h("div","tw-slider-hashmark");J.style.left=k+"%",y.append(J)}let N=()=>{let k=T((l-o)/(r-o||1)*100,0,100),J=b?` + ${b.toFixed(1)}px`:"",it=`${k}%${J}`;E.style.width=b?`calc(${it})`:k+"%",p.style.left=`max(5px, calc(${it} - 9px))`;let rt=P(l),dt=rt.toFixed(u);v.textContent=dt,f.setAttribute("aria-valuenow",String(rt)),f.setAttribute("aria-valuetext",dt);let Et=c.offsetWidth;if(Et){let xt=Math.max(5,k/100*Et+b-9);f.classList.toggle("is-dodge",We(w,v,xt,3))}};N();let R=null,K=1,q=null,Y=!0,U,A=null,O=null,ot=`width 0.34s ${Hn}`,tt=`left 0.34s ${Hn}, opacity 0.15s, transform 0.2s ${De}`,at=.2,D=k=>{if(!R)return l;let J=c.offsetWidth||R.width,it=T((k-R.left)/K/J,0,1);return T(o+it*(r-o),o,r)},d=k=>{let J=0;k<R.left?J=-Fr*Math.sqrt(Math.min(Math.max(0,R.left-k-Pr)/Nr,1)):k>R.right&&(J=Fr*Math.sqrt(Math.min(Math.max(0,k-R.right-Pr)/Nr,1))),f.style.width=`calc(100% + ${Math.abs(J)}px)`,f.style.transform=J<0?`translateX(${J}px)`:""},S=(k,J=!0)=>{k=+k,Number.isFinite(k)&&(l=i?T(P(k),o,r):t.soft?k:T(k,o,r),N(),J&&e(P(l)))},g=Math.max(1,Math.round((r-o)/s)),L=.2,X=.3,H=520,F=27,W=k=>(k-o)/s,C=0,G=0,z=0,lt=!1,mt=null,Nt=l,Ot=0,wt=()=>{z&&cancelAnimationFrame(z),z=0,Ot=0},Ct=k=>{if(!f.isConnected){wt();return}let J=Ot?Math.min((k-Ot)/1e3,.05):1/60;Ot=k;let it=c.offsetWidth||R&&R.width||1,rt=W(T(Nt,o,r)),dt=T(Math.round(rt+L),0,g),Et=lt?dt+X*T(rt-dt,-.5,.5):dt;if(Ee&&Ee.matches)C=Et,G=0;else{let xt=J,It=1/240;for(;xt>1e-4;){let Ft=Math.min(It,xt);xt-=Ft;let re=H*(Et-C)-F*G;G+=re*Ft,C+=G*Ft,C<0&&(C=0,G=0),C>g&&(C=g,G=0)}}b=(C-dt)*s/(r-o||1)*it,l=T(o+dt*s,o,r),N(),dt!==mt&&(mt=dt,e(P(l))),!lt&&Math.abs(G)<.004&&Math.abs(C-dt)<.004?(C=dt,G=0,b=0,N(),wt(),f.classList.remove("is-active")):z=requestAnimationFrame(Ct)},ht=k=>{C=W(l),G=0,lt=!0,mt=Math.round(W(l)),Nt=D(k),z||(z=requestAnimationFrame(Ct))};f.addEventListener("pointerdown",k=>{if(!v.classList.contains("is-editing")&&!(k.button!==0||q)){k.preventDefault(),f.focus({focusVisible:!1}),O=k.pointerId;try{k.target.setPointerCapture(k.pointerId)}catch{}clearTimeout(U),f.style.transition="",q={x:k.clientX,y:k.clientY},Y=!0,f.classList.add("is-active"),R=c.getBoundingClientRect(),K=R.width/(c.offsetWidth||R.width),i?(E.style.transition="",p.style.transition="",ht(k.clientX)):(E.style.transition=ot,p.style.transition=tt,S(D(k.clientX)))}}),f.addEventListener("pointermove",k=>{if(!(!q||k.pointerId!==O)){if(k.buttons===0){yt();return}if(Y&&Math.hypot(k.clientX-q.x,k.clientY-q.y)>qs&&(Y=!1,f.classList.add("is-dragging"),i||(E.style.transition="",p.style.transition="")),!Y)if(d(k.clientX),i)Nt=D(k.clientX);else{let J;if(k.altKey){A||(A={x:k.clientX,v:l});let it=c.offsetWidth||R.width;J=T(A.v+(k.clientX-A.x)/it*(r-o)*at,o,r)}else A=null,J=D(k.clientX);S(J)}k.clientX>=R.left&&k.clientX<=R.right&&(f.style.width="",f.style.transform="")}});let yt=k=>{!q||k&&k.pointerId!==O||(i?(lt=!1,f.classList.remove("is-dragging"),z||(z=requestAnimationFrame(Ct))):(U=setTimeout(()=>{E.style.transition="",p.style.transition=""},360),f.classList.remove("is-active","is-dragging")),f.style.transition=`width 0.35s ${De}, transform 0.35s ${De}`,f.style.width="",f.style.transform="",setTimeout(()=>{f.style.transition=""},360),q=null,A=null,O=null)};f.addEventListener("pointerup",yt),f.addEventListener("pointercancel",yt),f.addEventListener("lostpointercapture",yt),Je(f,N),Tt(N),At(f,[[window,"resize"]],N),f.addEventListener("keydown",k=>{if(k.target!==f||q)return;let J=ae(k,l,s,o,r,(r-o)/10||s*10);J!=null&&(k.preventDefault(),i&&(wt(),b=0,f.classList.remove("is-active")),S(T(J,o,r)))});let j;v.addEventListener("mouseenter",()=>{j=setTimeout(()=>v.classList.add("is-editable"),800)}),v.addEventListener("mouseleave",()=>{clearTimeout(j),v.classList.contains("is-editing")||v.classList.remove("is-editable")}),v.addEventListener("pointerdown",k=>{k.pointerType&&k.pointerType!=="mouse"?(v.classList.add("is-editable"),k.stopPropagation()):v.classList.contains("is-editable")&&k.stopPropagation()});let V=()=>{if(v.classList.contains("is-editing"))return;let k=h("input","tw-slider-input");k.type="text",k.inputMode="decimal",Dt(k),k.value=P(l).toFixed(u),v.classList.add("is-editing"),v.replaceWith(k),k.focus(),k.select();let J=()=>{k.replaceWith(v),v.classList.remove("is-editing","is-editable")},it=()=>{let rt=parseFloat(k.value);isNaN(rt)||S(t.soft?rt:T(rt,o,r)),J()};k.addEventListener("pointerdown",rt=>rt.stopPropagation()),k.addEventListener("blur",it),k.addEventListener("keydown",rt=>{rt.key==="Enter"?(k.removeEventListener("blur",it),f.focus(),it()):rt.key==="Escape"&&(rt.stopPropagation(),k.removeEventListener("blur",it),f.focus(),J())})};return v.addEventListener("click",()=>{v.classList.contains("is-editable")&&V()}),f.addEventListener("keydown",k=>{k.key==="Enter"&&k.target===f&&!q&&(k.preventDefault(),V())}),{el:c,set:k=>S(k,!1),get:()=>P(l)}}function Ws(t,e){let n=h("div","tw-row"),o=nn([{value:"off",label:"Off"},{value:"on",label:"On"}],t.value?"on":"off",r=>e(r==="on"),t.label);return n.append(st("span","tw-row-label",t.label),o.el),{el:n,set:r=>o.set(r?"on":"off"),get:()=>o.get()==="on"}}function Us(t,e){let n=t.options||[],o=Math.min(3,Math.max(2,t.cols||(n.length<=3?n.length:n.length===4?2:3))),r=h("div","tw-radiogrid"),s=h("div","tw-radiogrid-grid");s.style.setProperty("--tw-rg-cols",o),s.setAttribute("role","radiogroup"),s.setAttribute("aria-label",t.label);let i=t.value??Kt(n[0]),a=n.map(u=>{let c=jn("tw-radiogrid-btn",u,f=>b(f));return s.append(c),c}),l=()=>In(a,i),b=(u,c=!0)=>{u!=null&&!a.some(f=>f._twVal===u)||(i=u,l(),c&&e(u))};return s.addEventListener("keydown",u=>{let c=en(a,i);if(c<0)return;let f=Ie(u.key,c,a.length,o);f<0||(u.preventDefault(),f!==c&&(b(a[f]._twVal),a[f].focus()))}),l(),r.append(st("span","tw-radiogrid-label",t.label),s),{el:r,set:u=>b(u,!1),get:()=>i}}var Js=io("tw-select-chevron");function Zs(t,e){let n=t.value,o=t.options.map(y=>({value:Kt(y),label:Pn(y)})),r=h("div","tw-select"),s=vt("tw-select-trigger");s.setAttribute("aria-haspopup","listbox"),s.setAttribute("aria-expanded","false");let i=h("span","tw-select-right"),a=h("span","tw-select-value");i.append(a),i.insertAdjacentHTML("beforeend",Js),s.append(st("span","tw-select-label",t.label),i);let l=h("div","tw-select-dropdown");l.setAttribute("role","listbox");let b=o.map(y=>{let E=vt("tw-select-option");return E.setAttribute("role","option"),E.textContent=y.label,E.dataset.value=y.value,E.addEventListener("click",()=>{c(y.value),f.close()}),l.append(E),E});r.append(s,l);let u=()=>{a.textContent=(o.find(y=>y.value===n)||{}).label??n,b.forEach(y=>{let E=y.dataset.value===String(n);y.dataset.selected=String(E),y.setAttribute("aria-selected",String(E))})},c=(y,E=!0)=>{y!=null&&!o.some(p=>p.value===y)||(n=y,u(),E&&e(y))},f=Vt(r,s,l,{width:"match",fallbackH:200,gap:4,onOpen:()=>(b.find(y=>y.dataset.value===String(n))||b[0])?.focus()});return s.addEventListener("keydown",y=>{!f.isOpen()&&(y.key==="ArrowDown"||y.key==="ArrowUp")&&(y.preventDefault(),f.open())}),l.addEventListener("keydown",y=>{let E=b.indexOf(document.activeElement),p=E;if(y.key==="ArrowDown")p=E<0?0:Math.min(b.length-1,E+1);else if(y.key==="ArrowUp")p=E<0?b.length-1:Math.max(0,E-1);else if(y.key==="Home")p=0;else if(y.key==="End")p=b.length-1;else return;y.preventDefault(),b[p]?.focus()}),u(),{el:r,set:y=>c(y,!1),get:()=>n}}function Qs(t){let e=st("button","tw-button",t.label);return e.addEventListener("click",()=>t.action&&t.action()),qt(e)}function ti(t){let e=h("div","tw-row tw-buttongroup");t.label&&e.append(st("span","tw-row-label",t.label));let n=h("div","tw-buttongroup-btns"),o=Array.isArray(t.buttons)?t.buttons.map(r=>[r.label??"Button",r.action]):Object.entries(t.buttons||{});for(let[r,s]of o){let i=st("button","tw-buttongroup-btn",r);i.addEventListener("click",()=>typeof s=="function"&&s()),n.append(i)}return e.append(n),qt(e)}var ei=()=>qt(h("div","tw-separator"));function ni(t,e){let n=a=>a==null?"":typeof a=="object"?He(a):String(a),o=n(t.value),r=t.rows>0,s=h("div",r?"tw-row tw-row-multiline":"tw-row"),i=h(r?"textarea":"input",r?"tw-text tw-textarea":"tw-text");return r?i.rows=t.rows:i.type="text",i.value=o,Dt(i),t.placeholder&&(i.placeholder=t.placeholder),i.addEventListener("input",()=>{o=i.value,e(o)}),s.append(st("span","tw-row-label",t.label),i),{el:s,set:a=>{o=n(a),i.value=o},get:()=>o}}var oi=(t,e)=>$t({...t,row:!0},e);function Ke(t){let e=h("div","tw-folder"),n=vt("tw-folder-header");n.setAttribute("aria-expanded","true"),n.append(st("span","tw-folder-title",t.label)),n.insertAdjacentHTML("beforeend",hr);let o=h("div","tw-folder-body"),r=h("div","tw-controls");o.append(r),e.append(n,o);let s=i=>ke(e,n,o,i);return n.addEventListener("click",()=>s(!e.classList.contains("is-collapsed"))),{el:e,body:r,setCollapsed:s}}function Oe(t,e){let n=te(t.type);if(!n)return null;try{return n(t,e)}catch(o){return console.error("[tweaks] control failed to build:",t&&t.type,o),null}}ct("slider",Ys);ct("checkbox",Ws);ct("radiogrid",Us);ct("list",Zs);ct("button",Qs);ct("buttongroup",ti);ct("separator",ei);ct("text",ni);ct("number",oi);ct("folder",Ke);var Pe=null;function ri(t,e,n={}){let o=Object.entries(e).filter(([m])=>m!=="_last"||(console.warn('[tweaks] "_last" is reserved (the changed-key channel) \u2014 schema entry skipped'),!1)).map(([m,x])=>pe(m,x)).filter(Boolean),r={},s=[],i=new Set,a=new Set,l=[],b=!1,u=!1,c=[],f=new Map,y=!1,E=-1,p=m=>{if(!b){if(y){console.warn("[tweaks] call ignored \u2014 the panel could not be built");return}u?m():c.push(m)}},w=null,v=function(m,x){return m==="_last"&&this===r?void 0:x===void 0?null:typeof x=="bigint"?String(x):x},P=!1,$=()=>{let m={};for(let x of s){let M=m;for(let I of x.path.slice(0,-1))M=M[I]||(M[I]={});M[x.key]=x.get()}return JSON.parse(JSON.stringify(m,v))},N=()=>{try{return JSON.parse(JSON.stringify(r,v))}catch(m){return P||(P=!0,console.warn("[tweaks] a value parked on params can't be serialised \u2014 snapshots carry the controls' values only:",m)),$()}},R=n.persist?`tw:${n.persist===!0?t:n.persist}`:null,K=R?`${R}:presets`:null,q=m=>{try{return JSON.parse(localStorage.getItem(m)||"null")}catch{return null}},Y=(m,x)=>{try{localStorage.setItem(m,JSON.stringify(x))}catch{}},U=R?(()=>{let m=0,x=()=>{m=0,Y(R,N())};return l.push(()=>{m&&(clearTimeout(m),x())}),()=>{clearTimeout(m),m=setTimeout(x,150)}})():()=>{},A=()=>{a.forEach(m=>{try{m(r,r._last)}catch(x){console.error("[tweaks] listener threw:",x)}}),b||U()},O=m=>typeof m=="function"||typeof m=="symbol"||typeof m=="bigint",ot=(m,x)=>{if(O(x))throw new TypeError(`a ${typeof x} is not a control value`);m.set(x),m.target[m.key]=m.get()},tt=m=>{Cn(m,m.raw,m.def),m.target[m.key]=m.get()},at=!1,D=()=>{if(typeof n.onReset=="function"&&!at){at=!0;try{return n.onReset()}finally{at=!1}}for(let m of s)try{tt(m)}catch(x){console.error(`[tweaks] resetting "${m.path.join(".")}" failed \u2014 control skipped:`,x)}r._last=void 0,A()},d=h("div","tw-panel");d.dataset.mode="inline",Nn(d);let S=h("div","tw-header"),g=vt("tw-header-toggle");g.setAttribute("aria-expanded","true"),g.append(st("span","tw-title",t));let L=h("div","tw-toolbar"),X=En(d,t,()=>JSON.stringify(N(),null,2)),H=kn(D),F=null;R&&(F=Xe("",wr,"Presets"),F.setAttribute("aria-haspopup","menu"),F.setAttribute("aria-expanded","false"),L.append(F));let W=!!n.filter&&(n.toolbar!==!1||(console.warn("[tweaks] opts.filter needs the toolbar (its search button lives there) \u2014 ignored alongside toolbar:false"),!1)),C=W?Xe("",gr,"Filter controls"):null,G=W?h("input","tw-search"):null;W&&(G.type="text",G.placeholder="Filter\u2026",G.spellcheck=!1,G.setAttribute("aria-label","Filter controls"),Dt(G),L.append(C)),L.append(X,H),S.append(g),W&&S.append(G),n.toolbar!==!1&&S.append(L);let z=[X,H,F,C].filter(Boolean);for(let m of z)m.disabled=!0;let lt=!1,mt=!1;S.addEventListener("click",m=>{mt&&(mt=!1,m.preventDefault(),m.stopPropagation())},!0),g.addEventListener("click",()=>{ke(d,g,Nt,!d.classList.contains("is-collapsed")),d.dataset.mode==="floating"&&setTimeout(()=>{d.dataset.mode==="floating"&&d.isConnected&&(Et(),dt())},270)});let Nt=h("div","tw-body"),Ot=h("div","tw-controls");Nt.append(Ot),d.append(S,Nt);let wt=$n(n.theme);Ze(d,wt),d._twTheme=wt;let Ct=n.draggable!==!1,ht=8,yt=28,j=()=>({maxX:Math.max(ht,window.innerWidth-d.offsetWidth-ht),maxY:Math.max(ht,window.innerHeight-d.offsetHeight-ht)}),V=R?`${R}:pos`:null,k=(Ct||n.floating)&&V?q(V):null,J=k||(typeof n.floating=="object"?n.floating:null)||{x:16,y:16},it=+J.x||16,rt=+J.y||16,dt=()=>{d.style.left=it+"px",d.style.top=rt+"px"},Et=()=>{let{maxX:m,maxY:x}=j();it=T(it,ht,m),rt=T(rt,ht,x)};(Ct||n.floating)&&(n.floating||k)&&(d.dataset.mode="floating",Et(),dt(),requestAnimationFrame(()=>{!b&&d.dataset.mode==="floating"&&d.isConnected&&(Et(),dt())}));let xt=m=>{tt(m),r._last=m.key,A()},It=(m,x)=>{let M=m.querySelector(".tw-slider-value")||m.querySelector(co)||m;M.classList.add("tw-resettable"),M.title="Double-click or hold to reset";let I=0,nt=0,B=0,et=!1,Z=()=>{I&&(clearTimeout(I),I=0,M.classList.remove("tw-reset-holding"))};M.addEventListener("pointerdown",_=>{_.stopPropagation(),et=!1,!(_.pointerType!=="touch"&&_.pointerType!=="pen")&&(nt=_.clientX,B=_.clientY,M.classList.add("tw-reset-holding"),I=setTimeout(()=>{I=0,M.classList.remove("tw-reset-holding","is-editable"),et=!0,xt(x)},500))}),M.addEventListener("pointermove",_=>{I&&Math.abs(_.clientX-nt)+Math.abs(_.clientY-B)>8&&Z()}),M.addEventListener("pointerup",Z),M.addEventListener("pointercancel",Z),M.addEventListener("pointerleave",Z),M.addEventListener("contextmenu",_=>{et&&_.preventDefault()}),M.addEventListener("click",_=>{et&&(_.preventDefault(),_.stopImmediatePropagation(),et=!1)},!0),M.addEventListener("dblclick",_=>{M===m&&_.target.closest&&_.target.closest("input, textarea")||(_.preventDefault(),_.stopPropagation(),xt(x))}),M.classList.contains("tw-slider-value")&&m.addEventListener("dblclick",_=>{let ut=_.target;!ut.classList||!ut.classList.contains("tw-slider-input")||(_.preventDefault(),_.stopPropagation(),ut.blur(),xt(x))}),m.addEventListener("keydown",_=>{!_.altKey||_.metaKey||_.ctrlKey||_.key!=="Backspace"&&_.key!=="Delete"||(_.preventDefault(),_.stopPropagation(),_.target.classList&&_.target.classList.contains("tw-slider-input")&&_.target.blur(),xt(x))})},Ft=[],re=(m,x)=>{x.hint&&Te(m,x.hint),(x.render||x.disabled!=null)&&Ft.push({node:m,m:x})},Ne=[],Fe=[],Gt=[],_t=[],fe=m=>{typeof m.destroy=="function"&&l.push(m.destroy)},se=(m,x,M,I=[],nt=null)=>{for(let B of x){if(B.type==="tabs"){let _={};i.add(_),M[B.key]=_;let ut=te("tabs"),Q=ut&&ut(B);if(!Q)continue;_t.push({path:[...I,B.key],ctrl:Q,pageKeys:B.pages.map(ft=>ft.key)}),B.pages.forEach((ft,St)=>{let Ht={};i.add(Ht),_[ft.key]=Ht,se(Q.bodies[St],ft.children,Ht,[...I,B.key,ft.key])}),re(Q.el,B),m.append(Q.el);continue}if(B.type==="folder"){let _={};i.add(_),M[B.key]=_;let ut=Ke(B);Gt.push({path:[...I,B.key],el:ut.el,setCollapsed:ut.setCollapsed});let Q=W?{el:ut.el,label:B.label,body:ut.body}:null;Q&&Fe.push(Q),se(ut.body,B.children,_,[...I,B.key],Q),re(ut.el,B),m.append(ut.el);continue}let et=!Sn.has(B.type),Z=Oe(B,et?_=>{oe(M[B.key],_)&&(M[B.key]=_,r._last=B.key,A())}:()=>{});if(Z){if(fe(Z),et){let _=Z.get();ne(M,B.key)&&Z.set(M[B.key]),M[B.key]=Z.get();let ut={target:M,key:B.key,set:Z.set,get:Z.get,raw:B.value,def:_,path:[...I,B.key]};s.push(ut),It(Z.el,ut)}re(Z.el,B),W&&B.type!=="separator"&&Ne.push({el:Z.el,label:B.label,folder:nt}),m.append(Z.el)}}};if(W){let m=M=>{let I=M.trim().toLowerCase(),nt=!1,B=(et,Z)=>{!Z&&et.classList.contains("tw-filter-hidden")&&(nt=!0),et.classList.toggle("tw-filter-hidden",Z)};if(!I)Ne.forEach(et=>B(et.el,!1)),Fe.forEach(et=>B(et.el,!1));else{for(let et of Ne){let Z=et.folder&&Qe(et.folder.label,I);B(et.el,!(Qe(et.label,I)||Z))}for(let et of Fe.slice().reverse()){let Z=[...et.body.children].some(_=>!_.classList.contains("tw-filter-hidden"));B(et.el,!(Qe(et.label,I)||Z))}}nt&&Fn()},x=()=>{d.classList.remove("is-searching"),G.value="",m("")};C.addEventListener("click",()=>{C.disabled||(d.classList.toggle("is-searching")?(G.focus(),G.select()):x())}),G.addEventListener("input",()=>m(G.value)),G.addEventListener("keydown",M=>{M.key==="Escape"&&(x(),C.focus())})}let zt=(m,x)=>x.reduce((M,I)=>M?.[I],m),Wt=new Set(o.map(m=>m.key)),me=(m,x=!0)=>{if(!(!m||typeof m!="object")){for(let M of s){let I=zt(m,M.path);if(I!==void 0)try{ot(M,I)}catch(nt){console.error(`[tweaks] restoring "${M.path.join(".")}" failed \u2014 value skipped:`,nt)}}for(let M of Object.keys(m))if(!Wt.has(M)&&M!=="_last"&&ne(r,M)&&!Ln(M)&&!O(m[M]))try{r[M]=m[M]}catch(I){console.error(`[tweaks] restoring "${M}" failed \u2014 value skipped:`,I)}r._last=void 0,x&&A()}},jt=()=>{let m=K?q(K):null;return Object.assign(Object.create(null),m&&typeof m=="object"?m:{})},Pt=m=>{let x=jt();x[m]=N(),Y(K,x)},Ut=m=>{let x=jt();x[m]&&me(x[m])},be=m=>{let x=jt();delete x[m],Y(K,x)},ie=m=>m.map(x=>String(x).replace(/~/g,"~1").replace(/\./g,"~0")).join("."),Hr=()=>{let m={};if(Gt.length){let x={};for(let M of Gt)x[ie(M.path)]=M.el.classList.contains("is-collapsed");m.folders=x}if(_t.length){let x={};for(let M of _t)x[ie(M.path)]=M.pageKeys[M.ctrl.active()]??null;m.tabs=x}return m},Dr=m=>{if(!(!m||typeof m!="object")){if(m.folders)for(let x of Gt){let M=m.folders[ie(x.path)];typeof M=="boolean"&&x.setCollapsed(M)}if(m.tabs)for(let x of _t){let M=x.pageKeys.indexOf(m.tabs[ie(x.path)]);M>=0&&M!==x.ctrl.active()&&x.ctrl.activate(M)}}};if(Ct||n.floating){if(Ct){d.dataset.draggable="true";let Q=h("span","tw-grabber");Q.setAttribute("aria-hidden","true"),S.prepend(Q)}let m=()=>{if(d.dataset.mode==="floating")return;let Q=d.getBoundingClientRect();if(it=Q.left,rt=Q.top,d.parentNode&&(w=h("span","tw-lift-slot"),w.style.width=Q.width+"px",w.style.height=Q.height+"px",w.setAttribute("aria-hidden","true"),d.before(w)),Rn(d,d),document.body.appendChild(d),d.dataset.mode="floating",dt(),w&&typeof MutationObserver=="function"){let ft=new MutationObserver(()=>{w&&!w.isConnected&&(ft.disconnect(),w=null,d.remove())});ft.observe(document.documentElement,{childList:!0,subtree:!0}),l.push(()=>ft.disconnect())}},x=()=>{Pe&&Pe!==d&&(Pe.style.zIndex=""),d.style.zIndex="99991",Pe=d},M=null,I=0,nt=0,B=0,et=0,Z=Q=>{for(let[ft,St]of[["pointermove",_],["pointerup",ut],["pointercancel",ut]])Q?document.addEventListener(ft,St,!0):document.removeEventListener(ft,St,!0)};Ct&&S.addEventListener("pointerdown",Q=>{if(!(Q.button!==0||M!==null||Q.target.closest(".tw-toolbar, input, textarea, select"))&&(M=Q.pointerId,I=Q.clientX,nt=Q.clientY,lt=!1,Z(!0),d.classList.add("is-grabbing"),d.style.transition)){let ft=getComputedStyle(d);it=parseFloat(ft.left)||it,rt=parseFloat(ft.top)||rt,d.style.transition="",dt()}});let _=Q=>{if(Q.pointerId!==M)return;if(Q.buttons===0){ut(Q);return}let ft=Q.clientX-I,St=Q.clientY-nt;if(!lt){if(Math.abs(ft)+Math.abs(St)<4)return;lt=!0,m(),x(),B=it,et=rt;try{S.setPointerCapture(M)}catch{}d.classList.add("is-dragging")}let{maxX:Ht,maxY:bt}=j();it=T(B+ft,ht,Ht),rt=T(et+St,ht,bt),dt()},ut=Q=>{if(Q.pointerId===M){try{S.releasePointerCapture(M)}catch{}if(M=null,Z(!1),mt=lt,mt&&setTimeout(()=>{mt=!1},0),lt){let{maxX:ft,maxY:St}=j();it<=ht+yt?it=ht:it>=ft-yt&&(it=ft),rt<=ht+yt?rt=ht:rt>=St-yt&&(rt=St),Ee.matches||(d.style.transition="left 0.32s var(--tw-ease-spring), top 0.32s var(--tw-ease-spring)",setTimeout(()=>{d.style.transition=""},340)),dt(),V&&Y(V,{x:it,y:rt})}d.classList.remove("is-dragging","is-grabbing")}};S.addEventListener("lostpointercapture",ut),l.push(()=>Z(!1))}let Ir=()=>{(Ct||n.floating)&&(d.dataset.mode==="floating"&&(Et(),dt()),l.push(At(d,[[window,"resize"]],()=>{d.dataset.mode==="floating"&&(Et(),dt())})))};if(F){let m=h("div","tw-presets-menu"),x=h("div","tw-presets-save"),M=h("input","tw-presets-input");M.type="text",M.placeholder="Preset name\u2026",M.spellcheck=!1,M.setAttribute("aria-label","New preset name"),Dt(M);let I=st("button","tw-presets-savebtn","Save");x.append(M,I);let nt=h("div","tw-presets-list");m.append(x,nt);let B=()=>{let _=jt(),ut=Object.keys(_);if(nt.replaceChildren(),!ut.length)return nt.append(st("div","tw-presets-empty","No presets yet"));for(let Q of ut){let ft=h("div","tw-presets-row"),St=st("button","tw-presets-load",Q);St.addEventListener("click",()=>{Ut(Q),Z.close(),ee(`Loaded \u201C${Q}\u201D`,d)});let Ht=vt("tw-presets-del",yr);Ht.setAttribute("aria-label",`Delete preset ${Q}`),Ht.addEventListener("click",bt=>{bt.stopPropagation(),be(Q),B()}),ft.append(St,Ht),nt.append(ft)}},et=()=>{let _=M.value.trim();if(!_){M.focus();return}Pt(_),M.value="",B(),ee(`Saved \u201C${_}\u201D`,d)},Z=Vt(F,F,m,{width:208,fallbackH:160,gap:6,align:"end",onOpen:()=>{B(),M.focus()}});I.addEventListener("click",et),M.addEventListener("keydown",_=>{_.key==="Enter"&&et()})}if(n.onEditStart||n.onEditEnd){let m=".tw-slider, .tw-num-grab, .tw-pad, .tw-wg-area, .tw-wg-hue, .tw-wg-alpha, .tw-bezier-handle, .tw-gradient-bar, .tw-gradient-stop",x=!1,M=()=>{document.removeEventListener("pointerup",M,!0),document.removeEventListener("pointercancel",M,!0),x&&(x=!1,n.onEditEnd&&n.onEditEnd())},I=nt=>{x||!nt.target.closest(m)||(x=!0,n.onEditStart&&n.onEditStart(),document.addEventListener("pointerup",M,!0),document.addEventListener("pointercancel",M,!0))};d.addEventListener("pointerdown",I),d._twEditPointer=I,l.push(M)}let _e=n.undo?(()=>{let x=[],M=0,I=!1,nt=0,B=()=>{nt=0;let bt=N();JSON.stringify(bt)!==JSON.stringify(x[M])&&(x=x.slice(0,M+1),x.push(bt),x.length>200&&(x=x.slice(x.length-200)),M=x.length-1)},et=()=>{I||(clearTimeout(nt),nt=setTimeout(B,350))},Z=()=>{nt&&(clearTimeout(nt),B())};a.add(et);let _=bt=>{I=!0,me(x[bt]),I=!1,M=bt},ut=()=>{Z(),M>0&&_(M-1)},Q=()=>{Z(),M<x.length-1&&_(M+1)},ft=()=>d.matches(":hover")||d.contains(document.activeElement),St=bt=>!!(bt&&bt.matches&&(bt.matches("input, textarea")||bt.isContentEditable)),Ht=bt=>{if(!ft()||!(bt.metaKey||bt.ctrlKey)||St(bt.target))return;let ho=bt.key.toLowerCase();ho==="z"?(bt.preventDefault(),bt.shiftKey?Q():ut()):ho==="y"&&(bt.preventDefault(),Q())};return{undo:ut,redo:Q,arm:()=>{x=[N()],M=0,l.push(At(d,[[document,"keydown"]],Ht))}}})():null,mo=()=>{if(!b){if(E=l.length,se(Ot,o,r),Ft.length){let m=new Map;for(let I of s)m.has(I.key)||m.set(I.key,I);let x=I=>{let nt=m.get(I);return nt?nt.target[nt.key]:r[I]},M=()=>{let I=!1;for(let{node:nt,m:B}of Ft)try{if(B.render){let et=!B.render(x);!et&&nt.classList.contains("tw-cond-hidden")&&(I=!0),nt.classList.toggle("tw-cond-hidden",et)}if(B.disabled!=null){let et=typeof B.disabled=="function"?B.disabled(x):B.disabled;tn(nt,!!et)}}catch{}I&&Fn()};a.add(M),M()}if(R&&me(q(R)),!b){_e?.arm(),Ir(),u=!0;for(let m of c.splice(0)){if(b)break;try{m()}catch(x){console.error("[tweaks] a call queued before ready failed:",x)}}f.clear();for(let m of z)m.disabled=!1}}},bo=(m,x)=>{if(String(m).split(".").some(Ln))return console.warn(`[tweaks] set("${m}") ignored \u2014 reserved key`),!1;let M=String(m).split("."),I;if(M.length>1){let Z=r;for(let _=0;_<M.length-1&&Z;_++)Z=Z[M[_]],i.has(Z)||(Z=null);if(I=Z&&s.find(_=>_.target===Z&&_.key===M[M.length-1]),!I)return console.warn(`[tweaks] set("${m}") \u2014 no control at that path`),!1}else{let Z=s.filter(ut=>ut.key===m),_=Z.find(ut=>ut.target===r);if(!_&&Z.length>1)return console.warn(`[tweaks] set("${m}") is ambiguous \u2014 ${Z.length} controls share that key; use a dotted path (e.g. "${Z[0].path.join(".")}")`),!1;I=_||Z[0]}let nt=I?I.target:r,B=I?I.key:m,et=nt[B];if(I&&O(x))return console.warn(`[tweaks] set("${m}") ignored \u2014 a ${typeof x} is not a control value`),!1;if(I)try{ot(I,x)}catch(Z){return console.error(`[tweaks] set("${m}") failed \u2014 value skipped:`,Z),!1}else{if(i.has(r[m]))return console.warn(`[tweaks] set("${m}") ignored \u2014 it's a folder/tabs group; set its children instead`),!1;r[m]=x}return oe(et,nt[B])?(r._last=B,!0):!1},ge={el:d,params:r,on(m){return b?()=>{}:(a.add(m),()=>a.delete(m))},set(m,x){let M=String(m);p(()=>{bo(M,x)&&A()})},setMany(m){if(m==null||typeof m!="object")return;let x=Object.entries(m);p(()=>{let M=!1;for(let[I,nt]of x)try{bo(I,nt)&&(M=!0)}catch(B){console.error(`[tweaks] setMany("${I}") failed \u2014 key skipped:`,B)}M&&A()})},reset(){u&&!b&&lo(H),p(D)},toJSON(){return b?{values:{},ui:{}}:{values:N(),ui:Hr()}},fromJSON(m){if(!m||typeof m!="object")return;let x=m.values&&typeof m.values=="object"?{...m.values}:m.values,M=m.ui&&typeof m.ui=="object"?{...m.ui}:m.ui;p(()=>{x&&me(x),Dr(M)})},setTheme(m){if(!b){if(wt)for(let x in wt)d.style.removeProperty(x);wt=$n(m),d._twTheme=wt,Ze(d,wt),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:m=>b||y||!K||!m?!1:(u||f.set(String(m),"save"),p(()=>Pt(m)),!0),loadPreset:m=>{let x=f.get(String(m));return b||y||x==="delete"||!(x==="save"||jt()[m])?!1:(p(()=>Ut(m)),!0)},deletePreset:m=>{K&&(u||f.set(String(m),"delete"),p(()=>be(m)))},presets:()=>b?[]:Object.keys(jt()),undo:()=>{_e&&p(_e.undo)},redo:()=>{_e&&p(_e.redo)},destroy(){if(!b){b=!0,xo(d),Ge(d);for(let m of l.splice(0))try{m()}catch{}a.clear(),w&&(w.remove(),w=null),Pe===d&&(Pe=null),d.dataset.twDestroyed="",d.remove()}}},go=Ae(o);if(go){let m=x=>{if(y=!0,c.length=0,E>=0)for(let M of l.splice(E))try{M()}catch{}for(let M of Ot.children)M.dataset.twDestroyed="";throw a.clear(),s.length=0,Ot.replaceChildren(),b||console.warn(`[tweaks] "${t}": the panel could not be built \u2014 ${E>=0?"the build threw":"its lazy controls failed to load"}; the API is inert`),x};ge.ready=d.ready=go.then(mo).then(()=>ge,m),ge.ready.catch(()=>{})}else mo(),ge.ready=d.ready=Promise.resolve(ge);return ge}var si=(t,e)=>{t.dataset.value=e==null?"":Array.isArray(e)?e.join(","):typeof e=="object"?Object.values(e).join(","):String(e)},ii=(t,e,n)=>{si(t,n),t.dispatchEvent(new CustomEvent("tw:change",{bubbles:!0,detail:{key:e,value:n}}))},fo=(t,e)=>[...typeof t.matches=="function"&&t.matches(e)?[t]:[],...t.querySelectorAll(e)];async function _r(t=document){fo(t,'.tw-panel[data-mode="inline"]:not([data-tw-panel-bound])').forEach(o=>{let r=o.querySelector(":scope > .tw-header"),s=o.querySelector(":scope > .tw-controls");if(!r||!s)return;o.setAttribute("data-tw-panel-bound","");let i=h("div","tw-body");o.insertBefore(i,s),i.append(s);let a=r.querySelector(".tw-header-toggle"),l=r.querySelector(".tw-title");if(!a&&l&&(a=vt("tw-header-toggle"),l.replaceWith(a),a.append(l)),!!a&&(a.setAttribute("aria-expanded","true"),a.addEventListener("click",()=>ke(o,a,i,!o.classList.contains("is-collapsed"))),!r.querySelector(".tw-toolbar"))){let b=l&&l.textContent||"Panel",u=()=>[...o.querySelectorAll("[data-tw]")].map(E=>E._tw).filter(E=>E&&E.ctrl.get()!==void 0),c=()=>{let E=Object.create(null);for(let p of u()){let w=p.key,v=2;for(;ne(E,w);)w=`${p.key}-${v++}`;E[w]=p.ctrl.get()}return JSON.stringify(E,null,2)},f=()=>{for(let E of u())E.reset()},y=h("div","tw-toolbar");y.append(En(o,b,c),kn(f)),r.append(y)}}),fo(t,'[data-tw="folder"]:not([data-tw-bound])').forEach(o=>{o.setAttribute("data-tw-bound","");let r=Ke({label:o.dataset.label||"Folder"});[...o.children].forEach(s=>r.body.append(s)),o.append(r.el)});let e=fo(t,"[data-tw]:not([data-tw-bound])").map(o=>({host:o,meta:Or(o)})).filter(o=>o.meta);e.forEach(({host:o})=>o.setAttribute("data-tw-bound",""));let n=Ae(e.map(o=>o.meta));n&&await n.catch(()=>{});for(let{host:o,meta:r}of e){let s=o.dataset.key||r.label,i,a=c=>{oe(i,c)&&(i=c,ii(o,s,c))},l=Oe(r,a);if(!l)continue;o.closest(".tw-panel, .tw-portal")||o.classList.add("tw-portal"),o.append(l.el),o.dataset.hint&&Te(l.el,o.dataset.hint);let b=l.get();i=b;let u={...l,set:c=>{l.set(c),a(l.get())}};o._tw={ctrl:u,raw:r.value,def:b,key:s,host:o,reset:()=>{Cn(l,r.value,b),a(l.get())}}}}if(typeof document<"u"){let t=()=>_r(document);document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}var $r=t=>h("div",`${t} tw-standalone tw-portal`),Rr=(t,e,n)=>{let o=Ae(t);if(!o)return e(),Promise.resolve(n);let r=o.then(e).then(()=>n);return r.catch(()=>{}),r};function ai(t,e,n={}){let o=n.key??"value",r=pe(o,e);if(!r||r.type==="folder"||r.type==="tabs")throw new TypeError(`[tweaks] mountControl: "${o}" is not a single-control schema value`);n.label!=null&&(r.label=String(n.label));let s=!Sn.has(r.type),i=$r("tw-control");t.append(i);let a=null,l=!1,b=r.value,u,c=!1,f=p=>{oe(b,p)&&(b=p,n.onChange&&n.onChange(p,o))},y=()=>{if(l||(a=Oe(r,s?f:()=>{}),!a))return;r.hint&&Te(a.el,r.hint);let p=()=>{};try{r.render&&!r.render(p)&&a.el.classList.add("tw-cond-hidden")}catch{}try{(typeof r.disabled=="function"?r.disabled(p):r.disabled)&&tn(a.el,!0)}catch{}i.append(a.el),s&&(b=a.get(),c&&(a.set(u),f(a.get())))},E={el:i,set:p=>{l||!s||(a?(a.set(p),f(a.get())):(u=p,c=!0))},get:()=>s?a?a.get():c?u:r.value:void 0,destroy:()=>{l=!0,a&&typeof a.destroy=="function"&&a.destroy(),i.dataset.twDestroyed="",i.remove()},ready:null};return E.ready=Rr([r],y,E),E}function li(t={}){let e=$r("tw-color-picker"),n=null,o=!1,r=t.value,s,i=!1,a=null,l=c=>{oe(r,c)&&(r=c,t.onChange&&t.onChange(c))},b=()=>{if(o)return;let c=te("colorpicker");c&&(n=c({value:t.value,mode:t.mode},l),r=n.get(),e.append(n.el),a&&n.setMode(a),i&&(n.set(s),l(n.get())),Tt(n.reflow))},u={el:e,set:c=>{o||(n?(n.set(c),l(n.get())):(s=c,i=!0))},get:()=>n?n.get():i?s:t.value,mode:()=>n?n.mode():a||t.mode||"oklch",setMode:c=>{n?n.setMode(c):a=c},reflow:()=>{n&&n.reflow()},destroy:()=>{o=!0,e.remove()},ready:null};return u.ready=Rr([{type:"color"}],b,u),u}export{li as createColorPicker,_r as enhance,ai as mountControl,ri as tweaks};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
1
|
+
export { tweaks } from "./panel.js";
|
|
2
|
+
export { enhance } from "./enhance.js";
|
|
3
|
+
export { mountControl, createColorPicker } from "./standalone.js";
|
|
4
|
+
export type * from "./types.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function enhance(root?: Document | Element): Promise<void>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { SchemaValue, MountOptions, MountedControl, ColorPickerOptions, ColorPicker } from "./types.js";
|
|
2
|
+
export declare function mountControl(host: Element, value: SchemaValue, opts?: MountOptions): MountedControl;
|
|
3
|
+
export declare function createColorPicker(opts?: ColorPickerOptions): ColorPicker;
|