tweakit 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/tweaks/bezier-4JJDADLM.js +1 -0
- package/dist/tweaks/chunk-K6N3NNAW.js +1 -0
- package/dist/tweaks/{chunk-EVLD7DUH.js → chunk-NMISCM24.js} +1 -1
- package/dist/tweaks/colour-J2FKMVZA.js +1 -0
- package/dist/tweaks/core.js +1 -1
- package/dist/tweaks/{gradient-YEKTFEP4.js → gradient-MV3DECUF.js} +1 -1
- package/dist/tweaks/image-NZPSGN4W.js +1 -0
- package/dist/tweaks/{interval-7OUK7M7J.js → interval-K4JN65W5.js} +1 -1
- package/dist/tweaks/monitor-PUIUETKC.js +2 -0
- package/dist/tweaks/{plot-X5IZM3QU.js → plot-IB2Q2LCO.js} +1 -1
- package/dist/tweaks/{point-23BHLSGI.js → point-UZ77545Q.js} +1 -1
- package/dist/tweaks/spring-IJA5GPVX.js +1 -0
- package/dist/tweaks/tabs-IVS2Y3JA.js +1 -0
- package/dist/tweaks.css +1 -1
- package/dist/tweaks.css.d.ts +3 -0
- package/dist/tweaks.js +3 -3
- package/dist/types/tweaks/shared.d.ts +6 -1
- package/dist/types/tweaks/types.d.ts +42 -0
- package/package.json +6 -2
- package/dist/tweaks/bezier-ZSQNFANZ.js +0 -1
- package/dist/tweaks/chunk-GJESM23Q.js +0 -1
- package/dist/tweaks/colour-W46T6NIC.js +0 -1
- package/dist/tweaks/image-VKNBVMVK.js +0 -1
- package/dist/tweaks/monitor-CY7CABK6.js +0 -2
- package/dist/tweaks/spring-Z2SKXUVV.js +0 -1
- package/dist/tweaks/tabs-CGHJ2VS2.js +0 -1
package/dist/tweaks.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
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
|
-
`)}),
|
|
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
|
+
var Ae=t=>t.replace(/([A-Z])/g," $1").replace(/^./,e=>e.toUpperCase()).trim(),_=(t,e,n)=>Math.min(n,Math.max(e,t)),Tn=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())),Qt=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},me=(t,e,n)=>n>0?Number((e+Math.round((t-e)/n)*n).toFixed(Qt(n))):t,Vt=(t,e)=>{let n=e-t;return n<=1?.01:n<=10?.1:n<=100?1:10},Ue=t=>t>=0?[0,t<=1?1:t*3||100]:[t>=-1?-1:t*3,0],Gt=t=>t==null?void 0:typeof t=="object"?t.value:t,Je=t=>t==null?"":typeof t=="string"?Ae(t):typeof t=="object"?t.label??String(t.value):String(t),Ns="http://www.w3.org/2000/svg",b=(t,e,n)=>{let s=document.createElement(t);return e&&(s.className=e),n!=null&&(s.innerHTML=n),s},St=(t,e)=>{let n=document.createElementNS(Ns,t);return e&&n.setAttribute("class",e),n},kt=(t,e)=>{let n=b("button",t,e);return n.type="button",n},at=(t,e,n)=>{let s=b(t,e);return s.textContent=n,s},Nn=(t,e)=>getComputedStyle(t).getPropertyValue(e).trim(),ge=t=>{let e=getComputedStyle(t),n=s=>e.getPropertyValue(s).trim();return n("--tw-accent")||n("--tw-text-primary")||"#fff"},Ze=t=>["pointerdown","pointermove","pointerup"].forEach(e=>t.addEventListener(e,n=>n.stopPropagation())),Ft=t=>{requestAnimationFrame(t),document.fonts&&document.fonts.ready&&document.fonts.ready.then(t)},Rt=(t,e,n)=>{let s=r=>{if(!t.isConnected)return o();n(r)},o=()=>e.forEach(([r,a])=>r.removeEventListener(a,s));return e.forEach(([r,a])=>r.addEventListener(a,s)),o},Se=(t,e)=>{t.addEventListener("pointerenter",()=>{t.classList.add("is-hover"),e&&e()}),t.addEventListener("pointerleave",()=>t.classList.remove("is-hover"))},Ke=!1;typeof document<"u"&&(document.addEventListener("pointerdown",()=>{Ke=!0},!0),document.addEventListener("keydown",()=>{Ke=!1},!0));var se=t=>{t.addEventListener("focus",()=>t.classList.toggle("tw-focus-quiet",Ke)),t.addEventListener("blur",()=>t.classList.remove("tw-focus-quiet"))};function oe(t,{onDown:e,onMove:n,onEnd:s}={}){let o=null,r=a=>{o===null||a.pointerId!==o||(o=null,s&&s(a))};t.addEventListener("pointerdown",a=>{if(!(a.button!==0||o!==null)){o=a.pointerId;try{t.setPointerCapture(a.pointerId)}catch{}e&&e(a)}}),t.addEventListener("pointermove",a=>{if(a.pointerId===o){if(a.buttons===0)return r(a);n&&n(a)}}),t.addEventListener("pointerup",r),t.addEventListener("pointercancel",r),t.addEventListener("lostpointercapture",r)}var ae=(t,e)=>oe(t,{onDown:n=>{t.classList.add("is-grabbing"),e(n)},onMove:e,onEnd:()=>t.classList.remove("is-grabbing")}),le=(t,e)=>{let n=e.getBoundingClientRect();return[_((t.clientX-n.left)/n.width,0,1),_((t.clientY-n.top)/n.height,0,1)]},Qe=(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]},tn=(t,e,{width:n,fallbackH:s=300,gap:o=6,align:r="start",prefer:a="below"}={})=>{let l=t.getBoundingClientRect();n==="match"&&(e.style.width=l.width+"px");let d=n==="match"?l.width:e.offsetWidth||n||0,p=r==="end"?l.right-d:r==="center"?l.left+l.width/2-d/2:l.left;e.style.left=Math.max(8,Math.min(p,window.innerWidth-d-8))+"px";let u=e.offsetHeight||s,c=window.innerHeight-l.bottom,i=l.top,g=u+12,m=c>=g,f=i>=g,L=(a==="above"?f||!m&&i>=c:!m&&(f||i>c))?l.top-u-o:l.bottom+o;e.style.top=_(L,o,window.innerHeight-u-o)+"px"},_s={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"},$s=new Set(["radius","density"]),Ve=t=>(t/=255,t<=.03928?t/12.92:((t+.055)/1.055)**2.4),Fs=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},Rs=t=>{let e=Fs(t);if(!e||e.some(s=>!Number.isFinite(s)))return"#ffffff";let n=.2126*Ve(e[0])+.7152*Ve(e[1])+.0722*Ve(e[2]);return 1.05/(n+.05)>=(n+.05)/.0571?"#ffffff":"#161616"},en=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=_s[n];o&&(e[o]=$s.has(n)&&typeof s=="number"?`${s}px`:String(s))}return e["--tw-accent"]&&!e["--tw-on-accent"]&&(e["--tw-on-accent"]=Rs(e["--tw-accent"])),Object.keys(e).length?e:null},Ce=(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])}},nn=(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)=>{Ce(t,e?.closest(".tw-panel")?._twTheme),nn(t,e)},Zt=null,_n=()=>{Zt&&Zt()};function Kt(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),Ze(n);let a=()=>tn(e,n,{width:s.width,fallbackH:s.fallbackH,gap:s.gap,align:s.align}),l=()=>{if(o){if(!t.isConnected)return g();a(),s.onReflow&&s.onReflow()}},d=m=>{!t.contains(m.target)&&!n.contains(m.target)&&g()},p=m=>{m.key==="Escape"&&o&&(g(),e.focus())},u=()=>he(n,t),c=m=>{m.every(f=>f.target===n)||u()},i=()=>{Zt&&Zt!==g&&Zt(),Zt=g,o=!0,t.classList.add("is-open"),e.setAttribute("aria-expanded","true"),document.body.appendChild(n),he(n,t),window.addEventListener("tw-retheme",u),typeof MutationObserver=="function"&&(r=new MutationObserver(c),r.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:["data-tw-scheme"]})),a(),requestAnimationFrame(()=>{n.classList.add("is-open"),s.onOpen&&s.onOpen(),a()}),requestAnimationFrame(function m(){if(o){if(!t.isConnected)return g();requestAnimationFrame(m)}}),setTimeout(()=>document.addEventListener("pointerdown",d,!0),0),document.addEventListener("keydown",p),window.addEventListener("scroll",l,!0),window.addEventListener("resize",l)},g=()=>{Zt===g&&(Zt=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",d,!0),document.removeEventListener("keydown",p),window.removeEventListener("scroll",l,!0),window.removeEventListener("resize",l),window.removeEventListener("tw-retheme",u),r&&(r.disconnect(),r=null),setTimeout(()=>{o||n.remove()},200)};return e.addEventListener("click",()=>o?g():i()),{open:i,close:g,isOpen:()=>o,reflow:l}}var Te=(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 a=[r];for(let l=1;l<=s;l++)a[l]=Math.min(o[l]+1,a[l-1]+1,o[l-1]+(e[r-1]===t[l-1]?0:1));o=a}return Math.min(...o)<=(e.length<6?1:2)},sn=typeof matchMedia=="function"?matchMedia("(prefers-reduced-motion: reduce)"):{matches:!1},Os=(t,e)=>{sn.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)"}))},on=(t,e,n)=>{let s=t.querySelector('[data-active="true"]');if(!s)return;let o=s.offsetLeft,r=s.offsetWidth,a=parseFloat(e.style.left);e.style.left=o+"px",e.style.width=r+"px",n&&Number.isFinite(a)&&a!==o&&Os(e,o>a?1:-1)},rn=(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}),an=(t,e,n)=>{let s=kt(t);return s.setAttribute("role","radio"),s.textContent=Je(e),s.dataset.value=Gt(e),s._twVal=Gt(e),s.addEventListener("click",()=>n(s._twVal)),s},be=(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};function Ne(t,e,n,s){let o=b("div","tw-seg");o.setAttribute("role","radiogroup"),s&&o.setAttribute("aria-label",s);let r=b("div","tw-seg-pill");o.append(r);let a=t.map(u=>{let c=an("tw-seg-btn",u,i=>p(i));return o.append(c),c}),l=u=>on(o,r,u),d=()=>{rn(a,e),l(!0)},p=(u,c=!0)=>{e=u,d(),c&&n(u)};return o.addEventListener("keydown",u=>{let c=a.findIndex(g=>g.dataset.value===String(e));if(c<0)return;let i=be(u.key,c,a.length);i<0||(u.preventDefault(),p(a[i]._twVal),a[i].focus())}),d(),Ft(()=>{l(),o.classList.add("is-ready")}),Rt(o,[[window,"tw-reflow"]],()=>l()),{el:o,set:u=>p(u,!1),get:()=>e}}var te=(t,e)=>{let n=b("div",t),s=kt("tw-trigger");s.setAttribute("aria-expanded","false");let o=b("span","tw-trigger-right");return s.append(at("span","tw-trigger-label",e),o),n.append(s),{root:n,trigger:s,right:o}};function Ps(){let t=null,e=0,n=0,s=0;return{show(o,r,a){t=b("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=a??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 Is(t,e,n,s,o,r){let a=0,l=0,d=null,p=1,u=Ps();t.addEventListener("pointerdown",i=>{if(i.button!==0||d!==null)return;i.preventDefault(),d=i.pointerId,a=i.clientX,l=s(),p=1,t.classList.add("is-dragging");try{t.setPointerCapture(i.pointerId)}catch{}let g=e.getBoundingClientRect();u.show(i.clientX,g.top+g.height/2,g.left+g.width/2),u.move(i.clientX,r())}),t.addEventListener("pointermove",i=>{if(i.pointerId!==d)return;if(i.buttons===0){c(i);return}let g=i.shiftKey?10:i.altKey?.1:1;g!==p&&(p=g,a=i.clientX,l=s()),o(l+(i.clientX-a)*n*g),u.move(i.clientX,r())});let c=i=>{d===null||i.pointerId!==d||(d=null,t.classList.remove("is-dragging"),u.hide())};t.addEventListener("pointerup",c),t.addEventListener("pointercancel",c),t.addEventListener("lostpointercapture",c)}function Bt(t,e){let n=Number.isFinite(+t.step)&&+t.step>0?+t.step:1,s=Qt(n),o=+t.min,r=+t.max;if(Number.isFinite(o)&&Number.isFinite(r)&&r<o){let g=o;o=r,r=g}let a=g=>{let m=me(g,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},l=a(Number.isFinite(+t.value)?+t.value:0),d=b("div",t.row?"tw-row":"tw-field"),p=b("div","tw-num-wrap"),u=b("span","tw-num-grab",Ds);u.setAttribute("aria-hidden","true"),u.title="Drag to adjust";let c=b("input","tw-num");c.type="text",c.inputMode="decimal",c.setAttribute("aria-label",t.label),c.value=l.toFixed(s),se(c),p.append(u,c),d.append(at("span",t.row?"tw-row-label":"tw-field-label",t.label),p);let i=(g,m=!0)=>{g=+g,Number.isFinite(g)&&(l=a(g),c.value=l.toFixed(s),m&&e&&e(l))};return c.addEventListener("change",()=>{let g=parseFloat(c.value);i(isNaN(g)?l:g)}),c.addEventListener("keydown",g=>{g.key==="Enter"&&c.blur()}),Is(u,p,n,()=>l,i,()=>c.value),{el:d,set:g=>i(g,!1),get:()=>l}}var Ds='<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>',Ut=t=>({el:t,set:()=>{},get:()=>{}}),$n={},it=(t,e)=>{$n[t]=e},_e=t=>$n[t];var Bs=180/Math.PI,Re=Math.PI/180,zt=(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]],Hn=(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},Et=t=>t==null||Number.isNaN(t)?0:t,Hs=(t,e,n)=>Math.min(n,Math.max(e,t)),$e=t=>{let e=Math.abs(t);return e<=.04045?t/12.92:Math.sign(t)*((e+.055)/1.055)**2.4},ue=t=>{let e=Math.abs(t);return e<=.0031308?t*12.92:Math.sign(t)*(1.055*e**(1/2.4)-.055)},Oe=1.09929682680944,Xn=.018053968510807,Xs=t=>{let e=Math.abs(t);return e<Xn*4.5?t/4.5:Math.sign(t)*((e+Oe-1)/Oe)**(1/.45)},dn=t=>{let e=Math.abs(t);return e<Xn?t*4.5:Math.sign(t)*(Oe*e**.45-(Oe-1))},jn=1/512,js=t=>{let e=Math.abs(t);return e<=jn*16?t/16:Math.sign(t)*e**1.8},zs=t=>{let e=Math.abs(t);return e>=jn?Math.sign(t)*e**(1/1.8):16*t},ln=[[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],ye=[[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],Ys=[[.4865709486482162,.26566769316909306,.19821728523436247],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],un=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],qs=[[.6369580483012914,.14461690358620832,.16888097516417205],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],pn=[[1.7166511879712674,-.35567078377639233,-.25336628137365974],[-.6666843518324892,1.6164812366349395,.01576854581391113],[.017639857445310783,-.042770613257808524,.9421031212354738]],Ws=[[.7977604896723027,.13518583717574031,.0313493495815248],[.2880711282292934,.7118432178101014,8565396060525902e-20],[0,0,.8251046025104601]],Gs=[[1.3457989731028281,-.25558010007997534,-.05110628506753401],[-.5446224939028347,1.5082327413132781,.02053603239147973],[0,0,1.2119675456389454]],zn=[[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Yn=[[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Vs=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],fn=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],Ks=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],Ot=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],Fe=216/24389,we=24389/27,pe=[.3457/.3585,1,(1-.3457-.3585)/.3585],ce=(t,e,n)=>zt(n,[e(t[0]),e(t[1]),e(t[2])]),de=(t,e,n)=>{let s=zt(n,t);return[e(s[0]),e(s[1]),e(s[2])]},Fn=t=>{let e=zt(Ot,t);return zt(fn,[e[0]**3,e[1]**3,e[2]**3])},Rn=t=>{let e=zt(Vs,t);return zt(Ks,[Math.cbrt(e[0]),Math.cbrt(e[1]),Math.cbrt(e[2])])};function On(t){let[e,n,s]=t,o=(e+16)/116,r=n/500+o,a=o-s/200,l=r**3>Fe?r**3:(116*r-16)/we,d=e>we*Fe?o**3:e/we,p=a**3>Fe?a**3:(116*a-16)/we;return zt(Yn,[l*pe[0],d*pe[1],p*pe[2]])}function Pn(t){let e=zt(zn,t),n=a=>a>Fe?Math.cbrt(a):(we*a+16)/116,s=n(e[0]/pe[0]),o=n(e[1]/pe[1]),r=n(e[2]/pe[2]);return[116*o-16,500*(s-o),200*(o-r)]}var Pe=t=>{let e=Math.hypot(t[1],t[2]),n=Math.atan2(t[2],t[1])*Bs;return n<0&&(n+=360),[t[0],e,n]},Ie=t=>[t[0],t[1]*Math.cos(t[2]*Re),t[1]*Math.sin(t[2]*Re)];function qn(t){let e=((Number.isNaN(t[0])?0:t[0])%360+360)%360,n=t[1]/100,s=t[2]/100,o=r=>{let a=(r+e/30)%12,l=n*Math.min(s,1-s);return s-l*Math.max(-1,Math.min(a-3,9-a,1))};return[o(0),o(8),o(4)]}function Wn(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 Us(t){let e=Math.max(...t),n=Math.min(...t),s=(n+e)/2,o=Wn(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 Js(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=qn([t[0],100,50]),o=1-e-n;return[s[0]*o+e,s[1]*o+e,s[2]*o+e]}var Zs=t=>[Wn(t),Math.min(...t)*100,(1-Math.max(...t))*100];function Qs(t,e){switch(e){case"srgb":return ce(t,$e,ln);case"p3":return ce(t,$e,Ys);case"rec2020":return ce(t,Xs,qs);case"prophoto-rgb":return zt(Yn,ce(t,js,Ws));case"oklab":return Fn(t);case"oklch":return Fn(Ie(t));case"lab":return On(t);case"lch":return On(Ie(t));case"hsl":return ce(qn(t),$e,ln);case"hwb":return ce(Js(t),$e,ln)}}function to(t,e){switch(e){case"srgb":return de(t,ue,ye);case"p3":return de(t,ue,un);case"rec2020":return de(t,dn,pn);case"prophoto-rgb":return de(zt(zn,t),zs,Gs);case"oklab":return Rn(t);case"oklch":return Pe(Rn(t));case"lab":return Pn(t);case"lch":return Pe(Pn(t));case"hsl":return Us(de(t,ue,ye));case"hwb":return Zs(de(t,ue,ye))}}function Lt(t,e,n){return e===n?[t[0],t[1],t[2]]:e==="oklch"&&n==="oklab"?Ie(t):e==="oklab"&&n==="oklch"?Pe(t):e==="lch"&&n==="lab"?Ie(t):e==="lab"&&n==="lch"?Pe(t):to(Qs(t,e),n)}var fe=75e-6;function cn(t,e){return Lt(t,"oklch",e).every(s=>s>=-fe&&s<=1+fe)}var In=t=>t.map(e=>Math.min(1,Math.max(0,e))),Dn=(t,e)=>Math.hypot(t[0]-e[0],t[1]-e[1],t[2]-e[2]);function De(t,e){if(cn(t,e))return Lt(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]],a=0,l=t[1],d=!0,p=In(Lt(r,"oklch",e));if(Dn(Lt(p,e,"oklab"),Lt(t,"oklch","oklab"))<s)return p;for(;l-a>o;){let u=(a+l)/2;r[1]=u;let c=Lt(r,"oklch",e);if(d&&c.every(g=>g>=-fe&&g<=1+fe)){a=u;continue}p=In(c);let i=Dn(Lt(p,e,"oklab"),Lt(r,"oklch","oklab"));if(i<s){if(s-i<o)return p;d=!1,a=u}else l=u}return p}function ve(t,e){let n=t*Re,s=Math.cos(n),o=Math.sin(n),r=s*Ot[0][1]+o*Ot[0][2],a=s*Ot[1][1]+o*Ot[1][2],l=s*Ot[2][1]+o*Ot[2][2],d=Hn(e==="p3"?un:e==="rec2020"?pn:ye,fn),p=e==="rec2020"?dn:ue,u=-fe,c=1+fe;return(i,g)=>{let m=i+g*r,f=i+g*a,w=i+g*l,L=m**3,N=f**3,C=w**3,F=p(d[0][0]*L+d[0][1]*N+d[0][2]*C);if(F<u||F>c)return!1;let j=p(d[1][0]*L+d[1][1]*N+d[1][2]*C);if(j<u||j>c)return!1;let H=p(d[2][0]*L+d[2][1]*N+d[2][2]*C);return H>=u&&H<=c}}function Gn(t,e){let n=t*Re,s=Math.cos(n),o=Math.sin(n),r=s*Ot[0][1]+o*Ot[0][2],a=s*Ot[1][1]+o*Ot[1][2],l=s*Ot[2][1]+o*Ot[2][2],d=Hn(e==="p3"?un:e==="rec2020"?pn:ye,fn),p=e==="rec2020"?dn:ue;return(u,c,i)=>{let g=u+c*r,m=u+c*a,f=u+c*l,w=g**3,L=m**3,N=f**3;i[0]=p(d[0][0]*w+d[0][1]*L+d[0][2]*N),i[1]=p(d[1][0]*w+d[1][1]*L+d[1][2]*N),i[2]=p(d[2][0]*w+d[2][1]*L+d[2][2]*N)}}function xe(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 re=t=>Math.round(Math.min(1,Math.max(0,t))*255).toString(16).padStart(2,"0"),eo=t=>`#${re(t[0])}${re(t[1])}${re(t[2])}`,Be=(t,e,n)=>eo(De([t,e,n],"srgb"));function Vn(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 Lt(n,"srgb","oklch").map(Et)}var He=["hex","srgb","css","hsl","hwb","oklch","oklab","lch","lab","p3","rec2020"],Kn={hex:"HEX",srgb:"RGB",css:"CSS",hsl:"HSL",hwb:"HWB",oklch:"OKLCH",oklab:"OKLab",lch:"LCH",lab:"Lab",p3:"P3",rec2020:"Rec2020"},Un=["srgb","css","hsl","hwb","hex"],hn=t=>!Un.includes(t),Jn=t=>t==="hex"||t==="css"?"srgb":t,no={hex:"srgb",srgb:"srgb",css:"srgb",hsl:"hsl",hwb:"hwb",oklch:"oklch",oklab:"oklab",lch:"lch",lab:"lab",p3:"display-p3",rec2020:"rec2020"},Zn=t=>no[t]||"oklch",so={srgb:"srgb",hsl:"hsl",hwb:"hwb",oklch:"oklch",oklab:"oklab",lch:"lch",lab:"lab","display-p3":"p3",rec2020:"rec2020"},mn=t=>so[t]||"oklch",oo=.5,ke={oklch:[{k:"L",min:0,max:100,step:1,scale:100},{k:"C",min:0,max:oo,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}]},ro=t=>t>=1?0:t>=.1?1:t>=.01?2:3,Qn=(t,e,n)=>e==="oklch"?[t[0],t[1],t[2]]:Un.includes(n)?e==="srgb"?De(t,"srgb"):Lt(De(t,"srgb"),"srgb",e):Lt(t,"oklch",e);function Xe(t,e){let n=Qn(t,Jn(e),e);return ke[e].map((s,o)=>{let r=Et(n[o])*s.scale;return Hs(Math.abs(r)<.5*s.step?0:r,s.min,s.max)})}function ts(t,e,n,s){let o=Jn(e),r=Qn(t,o,e).map(Et);r[n]=s/ke[e][n].scale;let a=Lt(r,o,"oklch");return[Et(a[0]),Et(a[1]),Et(a[2])]}function es(t,e){if(!hn(e))return"sRGB";let n=De(t,"srgb");return Math.max(...n)<.03||Math.min(...n)>.97||cn(t,"srgb")?"sRGB":cn(t,"p3")?"P3":"wide"}function gn(t,e){if(e==="hex")return Be(t[0],t[1],t[2]);let n=ke[e],s=Xe(t,e),o=r=>s[r].toFixed(ro(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 Bn=(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 ns(t,e,n){let s=Et(n);if(e==="hex")return Be(t[0],t[1],t[2])+(s<.999?re(s):"");let o=gn(t,e);if(s>=.999)return Bn(o,e);let r=+s.toFixed(3);return e==="css"?`rgba(${o}, ${r})`:Bn(`${o} / ${r}`,e)}var os=(()=>{try{return document.createElement("canvas").getContext("2d",{colorSpace:"display-p3"})?.getContextAttributes?.().colorSpace==="display-p3"}catch{return!1}})(),bn=os?{colorSpace:"display-p3"}:{},io=os?"p3":"srgb",je=(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},ao=(t,e)=>{let n=ve(t,e),s=new Float64Array(128);for(let o=0;o<128;o++)s[o]=xe(n,o/127);return s},wn="repeating-conic-gradient(#6b6b6b 0% 25%, #9a9a9a 0% 50%) 0 0 / 8px 8px",lo={srgb:"srgb","display-p3":"p3",rec2020:"rec2020","prophoto-rgb":"prophoto-rgb"},ss=t=>{let e=/^([+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?)(deg|grad|rad|turn)$/i.exec(t);if(!e)return Et(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 Yt(t){if(t=String(t??"").trim(),/^#?([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t)){let l=t.replace("#",""),d=1;l.length===4?(d=parseInt(l[3]+l[3],16)/255,l=l.slice(0,3)):l.length===8&&(d=parseInt(l.slice(6,8),16)/255,l=l.slice(0,6));let[p,u,c]=Vn("#"+l);return[p,u,c,d]}let e=t.match(/^(oklch|oklab|lch|lab|color)\(\s*([^)]*?)\s*\)$/i);if(e){let l=e[1].toLowerCase(),[d,p]=e[2].split("/").map(w=>w.trim()),u=d.split(/\s+/).filter(Boolean),c=l;if(l==="color"&&(c=lo[(u[0]||"").toLowerCase()],u=u.slice(1),!c))return[.7,.1,280,1];let i=(w,L=1)=>!w||w==="none"?0:Et(parseFloat(w))*(/%$/.test(w)?L:1),g=p?_(i(p,.01),0,1):1,m=l==="lab"?[_(i(u[0]),0,100),i(u[1],1.25),i(u[2],1.25)]:l==="lch"?[_(i(u[0]),0,100),Math.max(0,i(u[1],1.5)),ss(u[2]||"0")]:l==="color"?[i(u[0],.01),i(u[1],.01),i(u[2],.01)]:l==="oklab"?[_(i(u[0],.01),0,1),i(u[1],.004),i(u[2],.004)]:[_(i(u[0],.01),0,1),Math.max(0,i(u[1],.004)),ss(u[2]||"0")],f=c==="oklch"?m:Lt(m,c,"oklch");return[Et(f[0]),Et(f[1]),(Et(f[2])%360+360)%360,g]}let n=Yt._c2d||(Yt._c2d=document.createElement("canvas").getContext("2d"));n.fillStyle="#000",n.fillStyle=t;let s=n.fillStyle;if(s[0]==="#")return Yt(s);let o=s.match(/^rgba?\(([^)]*)\)/i),r=((o?o[1]:"").match(/-?[\d.]+(?:e[+-]?\d+)?/gi)||[0,0,0]).map(Number),a=Lt([r[0]/255,r[1]/255,r[2]/255],"srgb","oklch");return[Et(a[0]),Et(a[1]),Et(a[2]),r[3]!=null?_(Et(r[3]),0,1):1]}function yn(t,e){let[n,s,o,r]=Yt(t.value||"#7c5cff"),a=He.includes(t.mode)?t.mode:"oklch",l=NaN,d=null,p=[],u=NaN,c="",i=()=>ns([n,s,o],a,r),g=b("div","tw-color-body"),m=b("div","tw-wg-area"),f=document.createElement("canvas");f.className="tw-wg-canvas";let w=b("div","tw-wg-thumb");m.append(f,w);let L=b("div","tw-wg-hue"),N=document.createElement("canvas");N.className="tw-wg-hue-canvas";let C=b("div","tw-wg-hue-thumb");L.append(N,C);let F=b("div","tw-wg-alpha"),j=b("div","tw-wg-alpha-grad"),H=b("div","tw-wg-hue-thumb");F.append(j,H),F.tabIndex=0,F.setAttribute("role","slider"),F.setAttribute("aria-label","Alpha"),F.setAttribute("aria-valuemin","0"),F.setAttribute("aria-valuemax","1");let X=b("div","tw-color-mode-row"),O=b("select","tw-color-mode");O.setAttribute("aria-label","Color mode"),He.forEach(z=>{let W=document.createElement("option");W.value=z,W.textContent=Kn[z],O.append(W)}),O.value=a;let G=b("span","tw-color-gamut");X.append(O,G);let I=b("div","tw-color-channels");g.append(m,L,F,X,I);let Y=f.getContext("2d",bn),lt=N.getContext("2d"),S=document.createElement("canvas"),T=S.getContext("2d",bn),D=null,y=()=>{let z=m.getBoundingClientRect(),W=Math.round(z.width),U=Math.round(z.height);if(W<2)return;let nt=window.devicePixelRatio||1,E=hn(a)?"p3":"srgb",Z=ao(o,E);d=Z;let rt=Math.round(W*nt),gt=Math.round(U*nt),ft=Math.max(1,Math.round(rt/4)),At=Math.max(1,Math.round(gt/4));(S.width!==ft||S.height!==At)&&(S.width=ft,S.height=At,D=new ImageData(ft,At,bn));let $t=D.data,Jt=At>1?1/(At-1):0,Nt=ft>1?1/(ft-1):0,Ht=Gn(o,io),Xt=[0,0,0];for(let It=0;It<At;It++){let qt=1-It*Jt,Wt=je(Z,qt);for(let Dt=0;Dt<ft;Dt++){Ht(qt,Dt*Nt*Wt,Xt);let yt=(It*ft+Dt)*4;$t[yt]=Math.round(_(Xt[0],0,1)*255),$t[yt+1]=Math.round(_(Xt[1],0,1)*255),$t[yt+2]=Math.round(_(Xt[2],0,1)*255),$t[yt+3]=255}}if(T.putImageData(D,0,0),f.width=rt,f.height=gt,Y.imageSmoothingEnabled=!0,Y.drawImage(S,0,0,rt,gt),E!=="srgb"){let It=(qt,Wt,Dt,yt)=>{let Ee=ve(o,qt),A=[];for(let Q=0;Q<=100;Q++){let V=Q/100,st=je(Z,V);if(st<=0)continue;let vt=xe(Ee,V,st);vt<=0||A.push([Math.min(vt/st*rt,rt-Dt*nt/2),(1-V)*gt])}A.length<2||(Y.save(),Y.strokeStyle=Wt,Y.lineWidth=Dt*nt,Y.lineJoin=Y.lineCap="round",Y.setLineDash(yt.map(Q=>Q*nt)),Y.beginPath(),A.forEach((Q,V)=>V?Y.lineTo(Q[0],Q[1]):Y.moveTo(Q[0],Q[1])),Y.stroke(),Y.restore())};It("srgb","rgba(255,255,255,0.7)",1.5,[]),It("p3","rgba(255,255,255,0.4)",1,[3,3])}l=o},h=.7,v=0,$=()=>{let z=L.getBoundingClientRect(),W=Math.max(1,Math.round(z.width)),U=Math.max(1,Math.round(z.height));if(W<2||W===v&&N.width===W)return;v=W,N.width=W,N.height=U;let nt=h;for(let E=0;E<W;E++){let Z=E/(W-1)*360,rt=Lt([nt,xe(ve(Z,"srgb"),nt),Z],"oklch","srgb");lt.fillStyle=`rgb(${_(rt[0]*255,0,255)|0},${_(rt[1]*255,0,255)|0},${_(rt[2]*255,0,255)|0})`,lt.fillRect(E,0,1,U)}},R=()=>{let z=d?je(d,n):.4,W=nt=>`${_(nt,0,1)*100}%`,U=(nt,E)=>{let Z=_(nt,0,1);return`calc(${Z*100}% + ${(.5-Z)*E}px)`};if(w.style.left=W(z>0?s/z:0),w.style.top=W(1-n),C.style.left=U(o/360,16),H.style.left=U(r,16),F.setAttribute("aria-valuenow",String(+r.toFixed(2))),j.style.background=`linear-gradient(to right, oklch(${n} ${s} ${o} / 0), oklch(${n} ${s} ${o}))`,w.style.background=`oklch(${n} ${s} ${o})`,H.style.background=`linear-gradient(oklch(${n} ${s} ${o} / ${r}), oklch(${n} ${s} ${o} / ${r})), var(--tw-dropdown-bg)`,o!==u){let nt=Lt([h,xe(ve(o,"srgb"),h),o],"oklch","srgb");c=`rgb(${_(nt[0]*255,0,255)|0} ${_(nt[1]*255,0,255)|0} ${_(nt[2]*255,0,255)|0})`,u=o}C.style.background=c},k=()=>{if(G.textContent=es([n,s,o],a),a==="hex"){let z=I.querySelector(".tw-color-chan-input");z&&document.activeElement!==z&&(z.value=Be(n,s,o)+(r<.999?re(r):""))}else{let z=Xe([n,s,o],a);p.forEach((W,U)=>{W.el.contains(document.activeElement)||W.set(z[U])})}},B=()=>{$(),y(),R()},q=()=>e(i()),J=z=>{z&&o!==l&&y(),R(),k()},ot=()=>{if(I.replaceChildren(),p=[],a==="hex"){I.classList.add("tw-color-channels--hex");let z=b("div","tw-color-chan"),W=b("input","tw-color-chan-input");W.type="text",W.spellcheck=!1,W.setAttribute("aria-label","Hex color"),se(W),W.addEventListener("change",()=>{let U=W.value.trim();/^#?([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(U)&&([n,s,o,r]=Yt(U),J(!0),q())}),W.addEventListener("keydown",U=>{U.key==="Enter"&&W.blur()}),z.append(at("span","tw-color-chan-label","HEX"),W),I.append(z)}else{I.classList.remove("tw-color-channels--hex");let z=Xe([n,s,o],a);ke[a].forEach((W,U)=>{let nt=Bt({label:W.k,value:z[U],min:W.min,max:W.max,step:W.step},E=>{[n,s,o]=ts([n,s,o],a,U,_(E,W.min,W.max)),J(!0),q()});p.push(nt),I.append(nt.el)})}k()},ct=z=>le(z,m);ae(m,z=>{let[W,U]=ct(z);n=1-U,s=W*(d?je(d,n):.4),R(),k(),q()});let ut=z=>le(z,L)[0]*360;ae(L,z=>{o=ut(z),J(!0),q()});let Tt=z=>le(z,F)[0];return ae(F,z=>{r=Tt(z),R(),k(),q()}),F.addEventListener("keydown",z=>{let W=z.shiftKey?.1:.01,U=r;switch(z.key){case"ArrowRight":case"ArrowUp":U+=W;break;case"ArrowLeft":case"ArrowDown":U-=W;break;case"Home":U=0;break;case"End":U=1;break;default:return}z.preventDefault(),r=_(U,0,1),R(),k(),q()}),O.addEventListener("change",()=>{a=O.value,ot(),y(),R(),t.onMode&&t.onMode()}),ot(),{el:g,set:z=>{let W=document.activeElement;W&&g.contains(W)&&W.blur(),[n,s,o,r]=Yt(z),J(!0)},get:()=>i(),mode:()=>a,setMode:z=>{z===a||!He.includes(z)||(a=z,O.value=z,ot(),y(),R())},reflow:B,swatchCss:()=>`linear-gradient(oklch(${n} ${s} ${o} / ${r}), oklch(${n} ${s} ${o} / ${r})), ${wn}`,valueText:()=>gn([n,s,o],a)+(r<.999?a==="hex"?re(r):` / ${+r.toFixed(2)}`:"")}}function co(t,e){let{root:n,trigger:s,right:o}=te("tw-color",t.label||"Colour"),r=b("span","tw-trigger-chip tw-color-swatch"),a=b("span","tw-trigger-value");o.append(r,a);let l=b("div","tw-color-pop"),d=()=>{r.style.background=p.swatchCss(),a.textContent=p.valueText()},p=yn({value:t.value,onMode:()=>d()},u=>{d(),e(u)});return l.append(p.el),n.append(l),Kt(n,s,l,{width:240,fallbackH:340,gap:6,onOpen:p.reflow,onReflow:p.reflow}),d(),{el:n,set:u=>{p.set(u),d()},get:()=>p.get()}}var rs=(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)})`;it("color",co);var uo='<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>',is=t=>t&&!Array.isArray(t)&&typeof t.interpolation=="string"?t.interpolation:null;function as(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:_(+o[1]||0,0,1)}:o&&typeof o=="object"?{color:String(o.color),pos:_(+o.pos||0,0,1)}:null).filter(Boolean);return s.length>=2?s:e}function po(t,e){let n=as(t.value),s=n[0],{root:o,trigger:r,right:a}=te("tw-gradient",t.label||"Gradient"),l=b("span","tw-gradient-count"),d=b("span","tw-trigger-chip tw-gradient-preview");a.append(l,d);let p=b("div","tw-color-pop tw-gradient-pop"),u=b("div","tw-gradient-bar-row"),c=b("div","tw-gradient-bar"),i=b("div","tw-gradient-grad"),g=b("div","tw-gradient-rail");c.append(i,g);let m=kt("tw-gradient-add",uo);m.title="Add a stop after the selected one",m.setAttribute("aria-label","Add a colour stop after the selected one"),u.append(c,m);let f=()=>[...n].sort((h,v)=>h.pos-v.pos),w=()=>f().map(h=>`${h.color} ${(h.pos*100).toFixed(1)}%`).join(", "),L=()=>Zn(O.mode()),N=()=>`linear-gradient(in ${L()} to right, ${w()})`,C=()=>{let h=N();i.style.background=h,d.style.background=`${h}, ${wn}`},F=()=>{l.textContent=`${n.length} stop${n.length===1?"":"s"}`},j=()=>({stops:f().map(h=>({color:h.color,pos:+h.pos.toFixed(4)})),interpolation:L()}),H=()=>e(j()),X=h=>[...g.children].find(v=>v._stop===h),O=yn({value:s.color,mode:mn(is(t.value)||"oklab"),onMode:()=>{C(),H()}},h=>{s.color=h,X(s)?.style.setProperty("--stop",h),C(),H()});p.append(u,O.el),o.append(p);let G=()=>{for(let h of g.children)h.dataset.sel=String(h._stop===s)},I=()=>{g.replaceChildren();for(let h of n){let v=kt("tw-gradient-stop");v._stop=h,v.style.left=h.pos*100+"%",v.style.setProperty("--stop",h.color),v.dataset.sel=String(h===s),v.setAttribute("aria-label","Colour stop");let $=!1;oe(v,{onDown:R=>{R.preventDefault(),R.stopPropagation(),v.focus({focusVisible:!1}),Y(h,!1),$=!1},onMove:R=>{let k=g.getBoundingClientRect();h.pos=_((R.clientX-k.left)/(k.width||1),0,1),v.style.left=h.pos*100+"%",C(),H(),$=n.length>2&&(R.clientY<k.top-24||R.clientY>k.bottom+24),v.dataset.removing=String($)},onEnd:()=>{$?T(h):v.dataset.removing="false"}}),v.addEventListener("dblclick",R=>{R.preventDefault(),T(h)}),v.addEventListener("keydown",R=>{let k=R.key==="ArrowLeft"?-1:R.key==="ArrowRight"?1:0;k&&(R.preventDefault(),h.pos=_(h.pos+k*(R.shiftKey?.1:.01),0,1),v.style.left=h.pos*100+"%",C(),H())}),g.append(v)}},Y=(h,v)=>{h!==s&&(O.set(h.color),s=h),v?I():G()},lt=h=>{let v=g.getBoundingClientRect();return _((h-v.left)/(v.width||1),0,1)},S=h=>{let v=f(),$=v[0],R=v[v.length-1];for(let pt=0;pt<v.length-1;pt++)if(h>=v[pt].pos&&h<=v[pt+1].pos){$=v[pt],R=v[pt+1];break}let k=R.pos>$.pos?_((h-$.pos)/(R.pos-$.pos),0,1):0,B=Yt($.color),q=Yt(R.color),J=pt=>pt[1]<1e-4,ot=q[2]-B[2];ot>180?ot-=360:ot<-180&&(ot+=360),(J(B)||J(q))&&(ot=0);let ct=(((J(B)&&!J(q)?q[2]:B[2])+ot*k)%360+360)%360;return rs(B[0]+(q[0]-B[0])*k,B[1]+(q[1]-B[1])*k,ct,B[3]+(q[3]-B[3])*k)},T=h=>{if(n.length<=2)return;let v=n.indexOf(h);if(v<0)return;n.splice(v,1);let $=s===h?n[Math.max(0,v-1)]:s;C(),Y($,!0),F(),H(),X(s)?.focus()},D=h=>{let v={color:S(h),pos:_(h,0,1)};return n.push(v),C(),Y(v,!0),F(),H(),v},y=()=>{let h=f(),v=h.indexOf(s);v<0&&(v=0);let $=v<h.length-1?(h[v].pos+h[v+1].pos)/2:v>0?(h[v-1].pos+h[v].pos)/2:_(h[v].pos+.1,0,1);D($)};return m.addEventListener("click",h=>{h.stopPropagation(),y()}),c.addEventListener("dblclick",h=>{h.target.closest(".tw-gradient-stop")||(h.preventDefault(),D(lt(h.clientX)))}),p.tabIndex=-1,p.addEventListener("keydown",h=>{(h.key==="Delete"||h.key==="Backspace")&&!/^(input|textarea|select)$/i.test(h.target.tagName)&&n.length>2&&(h.preventDefault(),T(s))}),Kt(o,r,p,{width:260,fallbackH:392,gap:6,onOpen:()=>O.reflow(),onReflow:()=>O.reflow()}),I(),C(),F(),{el:o,set:h=>{let v=is(h);v&&O.setMode(mn(v));let $=as(h).sort((R,k)=>R.pos-k.pos);if($.length===n.length)f().forEach((R,k)=>{R.color=$[k].color,R.pos=$[k].pos;let B=X(R);B&&(B.style.left=R.pos*100+"%",B.style.setProperty("--stop",R.color))});else{let R=s.pos;n=$,s=n.reduce((k,B)=>Math.abs(B.pos-R)<Math.abs(k.pos-R)?B:k,n[0]),I()}C(),F(),O.set(s.color)},get:()=>j()}}it("gradient",po);function fo(t,e){let n=t.label,s=+t.min,o=+t.max,r=+t.step,a=+(t.value&&t.value[0]),l=+(t.value&&t.value[1]);if(Number.isFinite(s)||(s=Number.isFinite(a)?a:0),Number.isFinite(o)||(o=Number.isFinite(l)?l:1),o<s){let y=s;s=o,o=y}(!(r>0)||r>o-s)&&(r=Vt(s,o));let d=Qt(r),p=y=>me(y,s,r),u=_(p(Number.isFinite(a)?a:s),s,o),c=_(p(Number.isFinite(l)?l:o),s,o);if(u>c){let y=u;u=c,c=y}let i=b("div","tw-slider-wrap"),g=b("div","tw-slider tw-interval"),m=b("div","tw-slider-fill"),f=b("div","tw-slider-handle"),w=b("div","tw-slider-handle"),L=at("span","tw-slider-label",n),N=b("span","tw-slider-value");g.append(m,f,w,L,N),i.append(g),[["minimum",f],["maximum",w]].forEach(([y,h])=>{h.tabIndex=0,h.setAttribute("role","slider"),h.setAttribute("aria-label",`${n} ${y}`),h.setAttribute("aria-valuemin",String(s)),h.setAttribute("aria-valuemax",String(o))});let C=y=>(y-s)/(o-s||1)*100,F=()=>{let y=C(u),h=C(c);m.style.left=y+"%",m.style.width=Math.max(0,h-y)+"%",f.style.left=`clamp(5px, calc(${y}% - 1.5px), calc(100% - 9px))`,w.style.left=`clamp(5px, calc(${h}% - 1.5px), calc(100% - 9px))`,N.textContent=`${u.toFixed(d)} \u2013 ${c.toFixed(d)}`,f.setAttribute("aria-valuenow",String(u)),w.setAttribute("aria-valuenow",String(c));let v=i.offsetWidth;if(v){let $=L.offsetLeft,R=$+L.offsetWidth,k=N.offsetLeft,B=k+N.offsetWidth,q=J=>{let ot=J/100*v,ct=ot-1.5,pt=ot+1.5;return ct<R&&pt>$||ct<B&&pt>k};f.classList.toggle("is-dodge",q(C(u))),w.classList.toggle("is-dodge",q(C(c)))}};F();let j=()=>e([u,c]),H=y=>{u=_(Math.min(p(y),c),s,o),F()},X=y=>{c=_(Math.max(p(y),u),s,o),F()},O=null,G=1,I=null,Y=null,lt=y=>{let h=i.offsetWidth||O.width,v=_((y-O.left)/G/h,0,1);return _(s+v*(o-s),s,o)},S=y=>{let h=lt(y);I||(I=h<u?"lo":h>c?"hi":Math.abs(h-u)<=Math.abs(h-c)?"lo":"hi"),I==="lo"?H(h):X(h),j()};g.addEventListener("pointerdown",y=>{if(!(y.button!==0||O)){y.preventDefault();try{y.target.setPointerCapture(y.pointerId)}catch{}Y=y.pointerId,O=i.getBoundingClientRect(),G=O.width/(i.offsetWidth||O.width),g.classList.add("is-active","is-dragging"),I=null,S(y.clientX),(I==="lo"?f:w).focus({focusVisible:!1})}}),g.addEventListener("pointermove",y=>{if(!(!O||y.pointerId!==Y)){if(y.buttons===0){T();return}S(y.clientX)}});let T=y=>{y&&y.pointerId!==Y||(O=null,I=null,Y=null,g.classList.remove("is-active","is-dragging"))};g.addEventListener("pointerup",T),g.addEventListener("pointercancel",T),g.addEventListener("lostpointercapture",T),Se(g,F),Ft(F),Rt(g,[[window,"resize"],[window,"tw-reflow"]],F);let D=y=>h=>{let v=h.shiftKey?10:1,$=y==="lo"?u:c;switch(h.key){case"ArrowRight":case"ArrowUp":$+=r*v;break;case"ArrowLeft":case"ArrowDown":$-=r*v;break;case"Home":$=y==="lo"?s:u;break;case"End":$=y==="lo"?c:o;break;default:return}h.preventDefault(),y==="lo"?H($):X($),j()};return f.addEventListener("keydown",D("lo")),w.addEventListener("keydown",D("hi")),{el:i,set:y=>{if(Array.isArray(y)){let h=+y[0],v=+y[1];if(!Number.isFinite(h)||!Number.isFinite(v))return;u=_(p(Math.min(h,v)),s,o),c=_(p(Math.max(h,v)),s,o),F()}},get:()=>[u,c]}}it("interval",fo);var ho=0;function mo(t){let e=`tw-tabs-${++ho}`,n=b("div","tw-tabs"),s=b("div","tw-tabs-bar");s.setAttribute("role","tablist");let o=b("div","tw-tabs-pill");s.append(o);let r=b("div","tw-tabs-pages"),a=[],l=t.pages.map((u,c)=>{let i=at("button","tw-tabs-tab",u.title);i.type="button",i.setAttribute("role","tab"),i.dataset.active=String(c===0),i.setAttribute("aria-selected",String(c===0)),i.tabIndex=c===0?0:-1,i.id=`${e}-tab-${c}`,i.setAttribute("aria-controls",`${e}-page-${c}`);let g=b("div","tw-tabs-page tw-controls");return g.dataset.active=String(c===0),g.setAttribute("role","tabpanel"),g.id=`${e}-page-${c}`,g.setAttribute("aria-labelledby",i.id),a.push(g),r.append(g),i.addEventListener("click",()=>p(c)),s.append(i),i});n.append(s,r);let d=u=>on(s,o,u);function p(u){l.forEach((c,i)=>{c.dataset.active=String(i===u),c.setAttribute("aria-selected",String(i===u)),c.tabIndex=i===u?0:-1}),a.forEach((c,i)=>c.dataset.active=String(i===u)),d(!0),requestAnimationFrame(()=>window.dispatchEvent(new Event("tw-reflow")))}return s.addEventListener("keydown",u=>{let c=l.findIndex(g=>g.dataset.active==="true");if(c<0)return;let i=be(u.key,c,l.length,-1);i<0||(u.preventDefault(),p(i),l[i].focus())}),Ft(d),{el:n,bodies:a,activate:p,active:()=>l.findIndex(u=>u.dataset.active==="true")}}it("tabs",mo);function go(t,e){let n=t.value||"",{root:s,trigger:o,right:r}=te("tw-image",t.label);o.removeAttribute("aria-expanded"),o.setAttribute("aria-label",`${t.label}: choose an image`);let a=b("span","tw-image-text"),l=b("span","tw-trigger-chip tw-image-thumb");r.append(a,l);let d=b("input","tw-image-input");d.type="file",d.accept="image/*",s.append(d);let p=()=>{l.dataset.set=n?"true":"false",l.style.backgroundImage=n?`url("${n}")`:"",a.textContent=n?"Replace":"Drop or choose"},u=c=>{if(!c||!c.type.startsWith("image/"))return;let i=new FileReader;i.onload=()=>{n=String(i.result),p(),e(n)},i.readAsDataURL(c)};return o.addEventListener("click",()=>d.click()),d.addEventListener("change",()=>{d.files[0]&&u(d.files[0])}),o.addEventListener("dragover",c=>{c.preventDefault(),o.dataset.over="true"}),o.addEventListener("dragleave",()=>{o.dataset.over="false"}),o.addEventListener("drop",c=>{c.preventDefault(),o.dataset.over="false",c.dataTransfer.files[0]&&u(c.dataTransfer.files[0])}),p(),{el:s,set:c=>{n=c||"",p()},get:()=>n}}it("image",go);function bo(t){let e=b("div","tw-fps"),n=at("span","tw-fps-val","\u2014"),s=document.createElement("canvas");s.className="tw-fps-canvas",e.append(at("span","tw-fps-label",t.label||"FPS"),n,s);let o=s.getContext("2d"),r=80,a=new Array(r).fill(0),l=120,d=0,p=0,u=0,c=0,i=0,g=!1,m=()=>{[c,i]=Qe(s,o,2)},f=()=>{if(c){o.clearRect(0,0,c,i),o.strokeStyle=ge(e),o.lineWidth=1.5,o.lineJoin="round",o.beginPath();for(let L=0;L<r;L++){let N=a[(d+L)%r],C=L/(r-1)*c,F=i-Math.min(N/l,1)*i;L?o.lineTo(C,F):o.moveTo(C,F)}o.stroke()}},w=L=>{if(!s.isConnected){if(g){window.removeEventListener("resize",m),window.removeEventListener("tw-reflow",m),u=0;return}p=0,u=requestAnimationFrame(w);return}if(g||(g=!0,m()),p){let N=1e3/(L-p);a[d]=N,d=(d+1)%r,n.textContent=Math.round(N),f()}p=L,u=requestAnimationFrame(w)};return requestAnimationFrame(()=>{m(),u=requestAnimationFrame(w)}),window.addEventListener("resize",m),window.addEventListener("tw-reflow",m),Ut(e)}function wo(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,a=b("div","tw-fps tw-monitor"),l=at("span","tw-fps-val","\u2014");a.append(at("span","tw-fps-label",t.label||"Monitor"),l);let d=0,p=()=>{},u=!1,c=H=>typeof H=="number"?Number.isInteger(H)?String(H):H.toFixed(t.decimals??2):String(H),i=()=>{d&&clearInterval(d),d=0,window.removeEventListener("resize",p),window.removeEventListener("tw-reflow",p)},g=H=>{d=setInterval(()=>{if(!a.isConnected){u&&i();return}u=!0;let X;try{X=e()}catch{return}H(X)},n)};if(!r&&t.rows){l.remove();let H=Math.max(1,Math.floor(+t.rows)||1),X=b("pre","tw-monitor-buffer");X.style.setProperty("--tw-monitor-rows",H),a.append(X);let O=[];return g(G=>{for(O.push(c(G));O.length>H;)O.shift();X.textContent=O.join(`
|
|
2
|
+
`)}),Ut(a)}if(!r)return g(H=>{l.textContent=c(H)}),Ut(a);let m=document.createElement("canvas");m.className="tw-fps-canvas",a.append(m);let f=m.getContext("2d"),w=80,L=new Array(w).fill(NaN),N=0,C=0,F=0;p=()=>{[C,F]=Qe(m,f,2)};let j=()=>{if(C||p(),!C)return;let H=t.min,X=t.max;if(H==null||X==null){let I=1/0,Y=-1/0;for(let S of L)Number.isNaN(S)||(S<I&&(I=S),S>Y&&(Y=S));I===1/0?(I=0,Y=1):I===Y&&(I-=.5,Y+=.5);let lt=(Y-I)*.1;H==null&&(H=I-lt),X==null&&(X=Y+lt)}let O=X-H||1;f.clearRect(0,0,C,F),f.strokeStyle=ge(a),f.lineWidth=1.5,f.lineJoin="round",f.beginPath();let G=!1;for(let I=0;I<w;I++){let Y=L[(N+I)%w];if(Number.isNaN(Y))continue;let lt=I/(w-1)*C,S=F-_((Y-H)/O,0,1)*F;G?f.lineTo(lt,S):(f.moveTo(lt,S),G=!0)}f.stroke()};return g(H=>{typeof H=="number"&&(L[N]=H,N=(N+1)%w,l.textContent=c(H),j())}),requestAnimationFrame(()=>{p(),j()}),window.addEventListener("resize",p),window.addEventListener("tw-reflow",p),Ut(a)}it("fpsgraph",bo);it("monitor",wo);function yo(t,e,n,s=64){let o=Math.sqrt(t/n),r=e/(2*Math.sqrt(t*n)),a=Math.min(2.2,9/Math.max(r*o,.5)),l=[];for(let d=0;d<s;d++){let p=d/(s-1)*a,u;if(r<1-1e-4){let c=o*Math.sqrt(1-r*r);u=1-Math.exp(-r*o*p)*(Math.cos(c*p)+r*o/c*Math.sin(c*p))}else if(r<=1+1e-4)u=1-Math.exp(-o*p)*(1+o*p);else{let c=Math.sqrt(r*r-1),i=o*(r+c),g=o*(r-c);u=1-(i*Math.exp(-g*p)-g*Math.exp(-i*p))/(i-g)}l.push(u)}return l}function vo(t,e){let n=(k,B,q)=>Number.isFinite(+k)?Math.max(B,+k):q,s=k=>({stiffness:n(k.stiffness,1,300),damping:n(k.damping,.5,26),mass:n(k.mass,.1,1)}),o=k=>Number.isFinite(+k),l=k=>_(o(k)?+k:.5,.1,1),d=k=>_(o(k)?+k:.2,0,1),p=k=>{let B=(2*Math.PI/k.visualDuration)**2,q=1-k.bounce,J=1;return{stiffness:B,damping:2*q*Math.sqrt(B*J),mass:J}},u={stiffness:t.stiffness,damping:t.damping,mass:t.mass,visualDuration:t.visualDuration,bounce:t.bounce,...t.value||{}},c=t.mode==="time"||t.mode==="physics"?t.mode:o(u.visualDuration)||o(u.bounce)?"time":"physics",i={visualDuration:l(u.visualDuration),bounce:d(u.bounce)},g=s({stiffness:u.stiffness,damping:u.damping,mass:u.mass}),m=b("div","tw-spring"),f=b("div","tw-spring-viz"),w=document.createElement("canvas");w.className="tw-spring-canvas",f.append(w);let L=b("div","tw-fields"),N=b("div","tw-fields"),C=w.getContext("2d"),F=()=>s(c==="time"?p(i):g),j=()=>{let k=f.getBoundingClientRect(),B=Math.max(1,Math.round(k.width)),q=Math.max(1,Math.round(k.height));if(B<2)return;let J=window.devicePixelRatio||1;w.width=B*J,w.height=q*J,C.setTransform(J,0,0,J,0,0),C.clearRect(0,0,B,q);let ot=F(),ct=yo(ot.stiffness,ot.damping,ot.mass,Math.max(160,Math.round(B*J))),pt=Math.max(1.05,...ct),ut=8,Pt=Mt=>ut+Mt/(ct.length-1)*(B-2*ut),Tt=Mt=>q-ut-Mt/pt*(q-2*ut);C.strokeStyle=Nn(m,"--tw-surface-active")||"rgba(255,255,255,0.1)",C.lineWidth=1,C.beginPath(),C.moveTo(ut,Tt(1)),C.lineTo(B-ut,Tt(1)),C.stroke(),C.strokeStyle=ge(m),C.lineWidth=1.5,C.lineJoin=C.lineCap="round",C.beginPath(),ct.forEach((Mt,z)=>z?C.lineTo(Pt(z),Tt(Mt)):C.moveTo(Pt(z),Tt(Mt))),C.stroke()},H=()=>c==="time"?{...F(),visualDuration:i.visualDuration,bounce:i.bounce}:F(),X=()=>e(H()),O={};[["stiffness","Stiffness",1],["damping","Damping",.5],["mass","Mass",.1]].forEach(([k,B,q])=>{O[k]=Bt({label:B,value:g[k],step:q,min:q},J=>{g[k]=J,j(),X()}),L.append(O[k].el)});let G=Bt({label:"Duration",value:i.visualDuration,step:.05,min:.1,max:1},k=>{i.visualDuration=l(k),j(),X()}),I=Bt({label:"Bounce",value:i.bounce,step:.05,min:0,max:1},k=>{i.bounce=d(k),j(),X()});N.append(G.el,I.el);let Y=()=>{N.style.display=c==="time"?"":"none",L.style.display=c==="physics"?"":"none"},S=Ne([{value:"time",label:"Time"},{value:"physics",label:"Physics"}],c,k=>{k!=="time"&&k!=="physics"||k===c||(c=k,Y(),j(),X())},"Spring mode"),T=b("div","tw-row");T.append(at("span","tw-row-label","Mode"),S.el),m.append(f,T,L,N);let D=1,y=500,h=1,v=40,$=null,R=k=>{if(!$)return;let B=_((k.clientX-$.left)/$.width,0,1),q=_((k.clientY-$.top)/$.height,0,1);c==="time"?(G.set(.1+B*(1-.1)),i.visualDuration=G.get(),I.set(1-q),i.bounce=I.get()):(O.stiffness.set(D+B*(y-D)),g.stiffness=O.stiffness.get(),O.damping.set(h+q*(v-h)),g.damping=O.damping.get()),j(),X()};return oe(f,{onDown:k=>{k.preventDefault(),$=f.getBoundingClientRect(),f.classList.add("is-dragging"),R(k)},onMove:R,onEnd:()=>{$=null,f.classList.remove("is-dragging")}}),Y(),Ft(j),Rt(w,[[window,"resize"],[window,"tw-reflow"],[matchMedia("(prefers-color-scheme: dark)"),"change"],[window,"tw-retheme"]],j),{el:m,set:k=>{if(!k||typeof k!="object")return;let B=o(k.visualDuration)||o(k.bounce),q=o(k.stiffness)||o(k.damping)||o(k.mass);!B&&!q||(c=B?"time":"physics",B&&(o(k.visualDuration)&&(i.visualDuration=l(k.visualDuration)),o(k.bounce)&&(i.bounce=d(k.bounce))),q&&(g=s({...g,...k})),S.set(c),G.set(i.visualDuration),I.set(i.bounce),O.stiffness.set(g.stiffness),O.damping.set(g.damping),O.mass.set(g.mass),Y(),j())},get:()=>H()}}it("spring",vo);function xo(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,a=r-o,l=8,d=b("div","tw-bezier"),p=b("div","tw-bezier-graph"),u=St("svg","tw-bezier-svg");u.setAttribute("preserveAspectRatio","none");let c=St("line","tw-bezier-guide"),i=St("line","tw-bezier-guide"),g=St("line","tw-bezier-diag"),m=St("line","tw-bezier-ctl"),f=St("line","tw-bezier-ctl"),w=St("path","tw-bezier-curve");u.append(c,i,g,m,f,w);let L=kt("tw-bezier-handle");L.setAttribute("aria-label","Control point 1");let N=kt("tw-bezier-handle");N.setAttribute("aria-label","Control point 2"),p.append(u,L,N);let C=b("div","tw-fields tw-bezier-fields");d.append(p,C);let F=0,j=0,H=T=>l+T*(F-2*l),X=T=>j-l-(T-o)/a*(j-2*l),O=(T,D,y,h,v)=>{T.setAttribute("x1",D),T.setAttribute("y1",y),T.setAttribute("x2",h),T.setAttribute("y2",v)},G=()=>{if(F=p.offsetWidth,j=p.offsetHeight,F<2)return;u.setAttribute("viewBox",`0 0 ${F} ${j}`);let[T,D,y,h]=s,v=H(0),$=X(0),R=H(1),k=X(1),B=H(T),q=X(D),J=H(y),ot=X(h);O(c,l,$,F-l,$),O(i,l,k,F-l,k),O(g,v,$,R,k),O(m,v,$,B,q),O(f,R,k,J,ot),w.setAttribute("d",`M${v},${$} C${B},${q} ${J},${ot} ${R},${k}`),L.style.left=B+"px",L.style.top=q+"px",N.style.left=J+"px",N.style.top=ot+"px"},I=[{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=I.map(T=>{let D=Bt({label:T.label,value:s[T.i],step:.01,min:T.lo,max:T.hi},y=>{s[T.i]=y,G(),e(s.slice())});return C.append(D.el),D}),lt=()=>Y.forEach((T,D)=>T.set(s[I[D].i])),S=(T,D)=>{let y=null,h=0,v=0,$=1;oe(T,{onDown:R=>{R.preventDefault(),y=p.getBoundingClientRect(),h=p.offsetWidth||y.width,v=p.offsetHeight||y.height,$=y.width/h,T.classList.add("is-dragging"),T.focus({focusVisible:!1})},onMove:R=>{let k=(R.clientX-y.left)/$,B=(R.clientY-y.top)/$,q=_((k-l)/(h-2*l),0,1),J=_(o+(v-l-B)/(v-2*l)*a,o,r);s[D*2]=+q.toFixed(2),s[D*2+1]=+J.toFixed(2),G(),lt(),e(s.slice())},onEnd:()=>{y=null,T.classList.remove("is-dragging")}})};return S(L,0),S(N,1),Ft(G),Rt(d,[[window,"resize"],[window,"tw-reflow"]],G),{el:d,set:T=>{if(Array.isArray(T)&&T.length===4){let D=T.map(Number);if(D.some(y=>!Number.isFinite(y)))return;s=D.map((y,h)=>_(y,I[h].lo,I[h].hi)),G(),lt()}},get:()=>s.slice()}}it("cubicbezier",xo);function ko(t,e){let n=t.components,{root:s,trigger:o,right:r}=te("tw-point",t.label||"Point"),a=b("span","tw-trigger-value"),l=b("div","tw-trigger-chip tw-point-preview"),d=b("div","tw-point-preview-dot");l.append(d),r.append(a,l);let p=b("div","tw-color-pop tw-point-pop"),u=b("div","tw-point-body");p.append(u);let c=t.pad!==!1&&n.length>=2,i=n[0],g=n[1],m=i?.min??-1,f=i?.max??1,w=g?.min??-1,L=g?.max??1,N=(T,D,y)=>y>D?_((T-D)/(y-D),0,1):.5,C=null,F=null,j=null;if(c){C=b("div","tw-pad"),F=b("div","tw-pad-thumb");let T=St("svg","tw-pad-line");T.setAttribute("viewBox","0 0 100 100"),T.setAttribute("preserveAspectRatio","none"),j=St("line"),T.append(j);let D=N(0,w,L);j.setAttribute("x1",N(0,m,f)*100),j.setAttribute("y1",(t.invertY?D:1-D)*100),C.append(b("div","tw-pad-axis tw-pad-axis-x"),b("div","tw-pad-axis tw-pad-axis-y"),T,F),u.append(C)}let H=b("div","tw-fields");u.append(H);let X=()=>{S(),lt()},O=()=>e(I()),G=n.map(T=>{let D=Bt({label:T.label,value:T.value??0,step:T.step??1,min:T.min,max:T.max},()=>{X(),O()});return H.append(D.el),D}),I=()=>Object.fromEntries(n.map((T,D)=>[T.key,G[D].get()])),Y=(T,D)=>(+T).toFixed(Qt(D??1)),lt=()=>{a.textContent=n.map((T,D)=>Y(G[D].get(),T.step)).join(", ")},S=()=>{d.style.left="50%",d.style.top="50%"};if(c){let D=h=>`calc(${(h*100).toFixed(2)}% + ${((.5-h)*5).toFixed(2)}px)`;S=()=>{let h=N(G[0].get(),m,f),v=N(G[1].get(),w,L),$=t.invertY?v:1-v,R=h*100,k=$*100;F.style.left=R+"%",F.style.top=k+"%",d.style.left=D(h),d.style.top=D($),j.setAttribute("x2",R),j.setAttribute("y2",k)},ae(C,h=>{let[v,$]=le(h,C),R=t.invertY?$:1-$;G[0].set(m+v*(f-m)),G[1].set(w+R*(L-w)),X(),O()})}return s.append(p),Kt(s,o,p,{width:216,fallbackH:240,gap:6,onOpen:X}),X(),{el:s,set:T=>{T&&n.forEach((D,y)=>{T[D.key]!=null&&G[y].set(T[D.key])}),X()},get:I}}it("point",ko);var Lo=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)}),ls=Object.assign(Object.create(null),{pi:Math.PI,e:Math.E,tau:Math.PI*2,phi:(1+Math.sqrt(5))/2});function vn(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 w=s.exec(e);if(!w||w.index!==r)return null;n.push({t:"num",v:parseFloat(w[0])}),r=s.lastIndex;continue}if(f>="A"&&f<="Z"||f>="a"&&f<="z"||f==="_"){o.lastIndex=r;let w=o.exec(e);n.push({t:"id",v:w[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 a=0,l=()=>n[a],d=f=>{let w=n[a];return!w||f&&w.t!==f?null:(a++,w)},p=()=>{let f=u();if(!f)return null;for(;l()&&l().t==="op"&&(l().v==="+"||l().v==="-");){let w=d("op").v,L=u();if(!L)return null;let N=f;f=w==="+"?C=>N(C)+L(C):C=>N(C)-L(C)}return f},u=()=>{let f=c();if(!f)return null;for(;l()&&l().t==="op"&&(l().v==="*"||l().v==="/"||l().v==="%");){let w=d("op").v,L=c();if(!L)return null;let N=f;f=w==="*"?C=>N(C)*L(C):w==="/"?C=>N(C)/L(C):C=>N(C)%L(C)}return f},c=()=>{if(l()&&l().t==="op"&&(l().v==="-"||l().v==="+")){let f=d("op").v,w=c();return w?f==="-"?L=>-w(L):w:null}return i()},i=()=>{let f=g();if(!f)return null;if(l()&&l().t==="op"&&l().v==="^"){d("op");let w=c();return w?L=>Math.pow(f(L),w(L)):null}return f},g=()=>{let f=l();if(!f)return null;if(f.t==="num")return d("num"),()=>f.v;if(f.t==="lp"){d("lp");let w=p();return!w||!d("rp")?null:w}if(f.t==="id"){d("id");let w=f.v.toLowerCase();if(l()&&l().t==="lp"){let L=Lo[w];if(!L)return null;d("lp");let N=[];if(l()&&l().t!=="rp")do{let C=p();if(!C)return null;N.push(C)}while(d("comma"));return d("rp")?C=>L(...N.map(F=>F(C))):null}if(w==="x")return L=>L;if(w in ls){let L=ls[w];return()=>L}return null}return null},m=p();return m&&a===n.length?m:null}function Eo(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 N=n;n=s,s=N}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,a=t.editable!==!1&&!t.fn,l=t.expr!=null?String(t.expr):"",d=typeof t.fn=="function"?t.fn:vn(l),p=b("div","tw-plot");t.label&&p.append(at("div","tw-plot-label",t.label));let u=b("div","tw-plot-graph"),c=St("svg","tw-plot-svg");c.setAttribute("preserveAspectRatio","none");let i=St("line","tw-plot-axis"),g=St("line","tw-plot-axis"),m=St("path","tw-plot-curve");c.append(i,g,m),u.append(c),p.append(u);let f=null;if(a){let N=b("div","tw-plot-field");f=b("input","tw-plot-input"),f.type="text",f.value=l,f.spellcheck=!1,f.autocapitalize="off",f.autocomplete="off",f.setAttribute("aria-label",`${t.label||"Plot"} \u2014 expression in x`),N.append(b("span","tw-plot-fx","y ="),f),p.append(N)}let w=6,L=()=>{let N=u.getBoundingClientRect(),C=N.width,F=N.height;if(C<2)return;c.setAttribute("viewBox",`0 0 ${C} ${F}`);let j=typeof d=="function",H=[],X=1/0,O=-1/0;if(j)for(let y=0;y<o;y++){let h=n+(s-n)*(y/(o-1)),v;try{v=d(h)}catch{v=NaN}H.push(v),Number.isFinite(v)&&(v<X&&(X=v),v>O&&(O=v))}let G=t.yMin,I=t.yMax;if(!r)if(!Number.isFinite(X)||X===O){let y=Number.isFinite(X)?X:0;G=y-1,I=y+1}else{let y=(O-X)*.12;G=X-y,I=O+y}let Y=y=>w+(y-n)/(s-n)*(C-2*w),lt=y=>F-w-(y-G)/(I-G)*(F-2*w),S=(y,h,v,$,R,k)=>{y.style.display=k?"":"none",k&&(y.setAttribute("x1",h),y.setAttribute("y1",v),y.setAttribute("x2",$),y.setAttribute("y2",R))};S(i,w,lt(0),C-w,lt(0),G<=0&&I>=0),S(g,Y(0),w,Y(0),F-w,n<=0&&s>=0);let T="",D=!1;if(j)for(let y=0;y<o;y++){let h=H[y];if(!Number.isFinite(h)){D=!1;continue}let v=Y(n+(s-n)*(y/(o-1))),$=_(lt(h),-1e4,1e4);T+=(D?"L":"M")+v.toFixed(1)+","+$.toFixed(1)+" ",D=!0}m.setAttribute("d",T),p.classList.toggle("is-invalid",a&&!j)};return a&&f.addEventListener("input",()=>{l=f.value;let N=vn(l);N?d=N:d=null,L(),e(l)}),Ft(L),Rt(p,[[window,"resize"],[window,"tw-reflow"]],L),{el:p,get:()=>l,set:N=>{N!=null&&(l=String(N),f&&(f.value=l),t.fn||(d=vn(l)),L())}}}it("plot",Eo);var xn={},ze={},Mo=t=>_e(t)||!xn[t]?null:ze[t]||(ze[t]=xn[t]().catch(e=>{throw delete ze[t],console.error(`[tweaks] control chunk "${t}" failed to load:`,e),e})),kn=(t,e=new Set)=>{for(let n of t)if(n&&(xn[n.type]&&e.add(n.type),n.children&&kn(n.children,e),n.pages))for(let s of n.pages)kn(s.children,e);return e},xs=t=>{let e=[...kn(t)].map(Mo).filter(Boolean);return e.length?Promise.all(e):null};function qe(t,e,n=0){if(t==="__proto__"||t==="constructor"||t==="prototype")return null;let s=Ao(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 ie=t=>t&&typeof t=="object",En=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),cs=(t,e)=>t!==e&&!(ie(t)&&ie(e)&&JSON.stringify(t)===JSON.stringify(e)),ds=(t,e,n)=>Array.isArray(t.options)&&{type:"radiogrid",key:e,label:n,options:t.options,value:t.value??Gt(t.options[0]),cols:t.cols},us={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??Vt(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:ds,segmented:ds,list:(t,e,n)=>Array.isArray(t.options)&&{type:"list",key:e,label:n,options:t.options,value:t.value??Gt(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??Vt(s,o)}},spring:(t,e,n)=>{let s=ie(t.value)?t.value:t,o={stiffness:s.stiffness??300,damping:s.damping??26,mass:s.mass??1};Number.isFinite(+s.visualDuration)&&(o.visualDuration=+s.visualDuration),Number.isFinite(+s.bounce)&&(o.bounce=+s.bounce);let r=t.mode??s.mode;return{type:"spring",key:e,label:n,value:o,...r==="time"||r==="physics"?{mode:r}:{}}},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,a])=>{let l=r.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",d=l,p=2;for(;o.has(d);)d=`${l}-${p++}`;return o.add(d),{key:d,title:r,children:Object.entries(a).map(([u,c])=>qe(u,c,(s||0)+1)).filter(Boolean)}})}}};function Ao(t,e,n=0){if(n>64)return null;let s=Ae(t);if(ie(e)&&!Array.isArray(e)&&En(us,e.type)){let o;try{o=us[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]??Vt(o,r)}}if(Array.isArray(e)&&e.length<=4&&typeof e[0]=="number"){let o=e[0],[r,a]=Ue(o),l=e.length>1?e[1]:r,d=e.length>2?e[2]:a;return{type:"slider",key:t,label:s,value:o,min:l,max:d,step:e[3]??Vt(l,d)}}if(typeof e=="number"){let[o,r]=Ue(e);return{type:"slider",key:t,label:s,value:e,min:o,max:r,step:Vt(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:Gt(e[0])}:ie(e)&&typeof e.action=="function"?{type:"button",key:t,label:e.label||s,action:e.action}:ie(e)&&Array.isArray(e.options)?{type:"list",key:t,label:s,options:e.options,value:e.value??Gt(e.options[0])}:Tn(e)?{type:"color",key:t,label:s,value:e}:typeof e=="string"?{type:"text",key:t,label:s,value:e}:ie(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])=>qe(o,r,n+1)).filter(Boolean)}:null}var So=3,ps=32,fs=200,hs=8;function Co(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 E=s;s=o,o=E}(!(r>0)||r>o-s)&&(r=Vt(s,o));let a=(o-s)/r<=6,l=Number.isFinite(+t.value)?+t.value:s,d=t.soft&&!a?l:_(l,s,o),p=0,u=Qt(r),c=b("div","tw-slider-wrap"),i=b("div","tw-slider"),g=b("div","tw-slider-hashmarks"),m=b("div","tw-slider-fill"),f=b("div","tw-slider-handle"),w=at("span","tw-slider-label",n),L=b("span","tw-slider-value");i.append(g,m,f,w,L),c.append(i),i.tabIndex=0,i.setAttribute("role","slider"),i.setAttribute("aria-label",n),i.setAttribute("aria-valuemin",String(s)),i.setAttribute("aria-valuemax",String(o));let N=E=>me(E,s,r),C=a?Array.from({length:Math.max(0,Math.round((o-s)/r)-1)},(E,Z)=>(Z+1)*r/(o-s)*100):[];for(let E of C){let Z=b("div","tw-slider-hashmark");Z.style.left=E+"%",g.append(Z)}let F=()=>{let E=_((d-s)/(o-s||1)*100,0,100),Z=p?` + ${p.toFixed(1)}px`:"",rt=`${E}%${Z}`;m.style.width=p?`calc(${rt})`:E+"%",f.style.left=`max(5px, calc(${rt} - 9px))`;let gt=N(d),ft=gt.toFixed(u);L.textContent=ft,i.setAttribute("aria-valuenow",String(gt)),i.setAttribute("aria-valuetext",ft);let At=c.offsetWidth;if(At){let Nt=Math.max(5,E/100*At+p-9),Ht=0,Xt=w.offsetLeft,It=Xt+w.offsetWidth,qt=L.offsetLeft,Wt=qt+L.offsetWidth,Dt=Nt<It&&Nt+3>Xt,yt=Nt<Wt+Ht&&Nt+3>qt-Ht;i.classList.toggle("is-dodge",Dt||yt)}};F();let j=null,H=1,X=null,O=!0,G,I=null,Y=null,lt="width 0.34s cubic-bezier(0.34,1.2,0.64,1)",S="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=E=>{if(!j)return d;let Z=c.offsetWidth||j.width,rt=_((E-j.left)/H/Z,0,1);return _(s+rt*(o-s),s,o)},y=E=>{let Z=0;E<j.left?Z=-hs*Math.sqrt(Math.min(Math.max(0,j.left-E-ps)/fs,1)):E>j.right&&(Z=hs*Math.sqrt(Math.min(Math.max(0,E-j.right-ps)/fs,1))),i.style.width=`calc(100% + ${Math.abs(Z)}px)`,i.style.transform=Z<0?`translateX(${Z}px)`:""},h=(E,Z=!0)=>{E=+E,Number.isFinite(E)&&(d=a?_(N(E),s,o):t.soft?E:_(E,s,o),F(),Z&&e(N(d)))},v=Math.max(1,Math.round((o-s)/r)),$=.2,R=.3,k=520,B=27,q=E=>(E-s)/r,J=0,ot=0,ct=0,pt=!1,ut=null,Pt=d,Tt=0,Mt=()=>{ct&&cancelAnimationFrame(ct),ct=0,Tt=0},z=E=>{if(!i.isConnected){Mt();return}let Z=Tt?Math.min((E-Tt)/1e3,.05):1/60;Tt=E;let rt=c.offsetWidth||j&&j.width||1,gt=q(_(Pt,s,o)),ft=_(Math.round(gt+$),0,v),At=pt?ft+R*_(gt-ft,-.5,.5):ft,$t=Z,Jt=1/240;for(;$t>1e-4;){let Nt=Math.min(Jt,$t);$t-=Nt;let Ht=k*(At-J)-B*ot;ot+=Ht*Nt,J+=ot*Nt,J<0&&(J=0,ot=0),J>v&&(J=v,ot=0)}p=(J-ft)*r/(o-s||1)*rt,d=_(s+ft*r,s,o),F(),ft!==ut&&(ut=ft,e(N(d))),!pt&&Math.abs(ot)<.004&&Math.abs(J-ft)<.004?(J=ft,ot=0,p=0,F(),Mt(),i.classList.remove("is-active")):ct=requestAnimationFrame(z)},W=E=>{J=q(d),ot=0,pt=!0,ut=Math.round(q(d)),Pt=D(E),ct||(ct=requestAnimationFrame(z))};i.addEventListener("pointerdown",E=>{if(!L.classList.contains("is-editing")&&!(E.button!==0||X)){E.preventDefault(),i.focus({focusVisible:!1}),Y=E.pointerId;try{E.target.setPointerCapture(E.pointerId)}catch{}clearTimeout(G),i.style.transition="",X={x:E.clientX,y:E.clientY},O=!0,i.classList.add("is-active"),j=c.getBoundingClientRect(),H=j.width/(c.offsetWidth||j.width),a?(m.style.transition="",f.style.transition="",W(E.clientX)):(m.style.transition=lt,f.style.transition=S,h(D(E.clientX)))}}),i.addEventListener("pointermove",E=>{if(!(!X||E.pointerId!==Y)){if(E.buttons===0){U();return}if(O&&Math.hypot(E.clientX-X.x,E.clientY-X.y)>So&&(O=!1,i.classList.add("is-dragging"),a||(m.style.transition="",f.style.transition="")),!O)if(y(E.clientX),a)Pt=D(E.clientX);else{let Z;if(E.altKey){I||(I={x:E.clientX,v:d});let rt=c.offsetWidth||j.width;Z=_(I.v+(E.clientX-I.x)/rt*(o-s)*T,s,o)}else I=null,Z=D(E.clientX);h(Z)}E.clientX>=j.left&&E.clientX<=j.right&&(i.style.width="",i.style.transform="")}});let U=E=>{!X||E&&E.pointerId!==Y||(a?(pt=!1,i.classList.remove("is-dragging"),ct||(ct=requestAnimationFrame(z))):(G=setTimeout(()=>{m.style.transition="",f.style.transition=""},360),i.classList.remove("is-active","is-dragging")),i.style.transition="width 0.35s cubic-bezier(0.22,1,0.36,1), transform 0.35s cubic-bezier(0.22,1,0.36,1)",i.style.width="",i.style.transform="",setTimeout(()=>{i.style.transition=""},360),X=null,I=null,Y=null)};i.addEventListener("pointerup",U),i.addEventListener("pointercancel",U),i.addEventListener("lostpointercapture",U),Se(i,F),Ft(F),Rt(i,[[window,"resize"]],F),i.addEventListener("keydown",E=>{a&&(Mt(),p=0);let Z=E.shiftKey?10:1,rt=(o-s)/10||r*10,gt=d;switch(E.key){case"ArrowRight":case"ArrowUp":gt=d+r*Z;break;case"ArrowLeft":case"ArrowDown":gt=d-r*Z;break;case"PageUp":gt=d+rt;break;case"PageDown":gt=d-rt;break;case"Home":gt=s;break;case"End":gt=o;break;default:return}E.preventDefault(),h(_(gt,s,o))});let nt;return L.addEventListener("mouseenter",()=>{nt=setTimeout(()=>L.classList.add("is-editable"),800)}),L.addEventListener("mouseleave",()=>{clearTimeout(nt),L.classList.contains("is-editing")||L.classList.remove("is-editable")}),L.addEventListener("pointerdown",E=>{E.pointerType&&E.pointerType!=="mouse"?(L.classList.add("is-editable"),E.stopPropagation()):L.classList.contains("is-editable")&&E.stopPropagation()}),L.addEventListener("click",()=>{if(!L.classList.contains("is-editable"))return;let E=b("input","tw-slider-input");E.type="text",E.inputMode="decimal",E.value=N(d).toFixed(u),L.classList.add("is-editing"),L.replaceWith(E),E.focus(),E.select();let Z=()=>{let rt=parseFloat(E.value);isNaN(rt)||h(t.soft?rt:_(rt,s,o)),E.replaceWith(L),L.classList.remove("is-editing","is-editable")};E.addEventListener("pointerdown",rt=>rt.stopPropagation()),E.addEventListener("blur",Z),E.addEventListener("keydown",rt=>{rt.key==="Enter"?Z():rt.key==="Escape"&&(E.replaceWith(L),L.classList.remove("is-editing","is-editable"))})}),{el:c,set:E=>h(E,!1),get:()=>N(d)}}function To(t,e){let n=b("div","tw-row"),s=Ne([{value:"off",label:"Off"},{value:"on",label:"On"}],t.value?"on":"off",o=>e(o==="on"),t.label);return n.append(at("span","tw-row-label",t.label),s.el),{el:n,set:o=>s.set(o?"on":"off"),get:()=>s.get()==="on"}}function No(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=b("div","tw-radiogrid"),r=b("div","tw-radiogrid-grid");r.style.setProperty("--tw-rg-cols",s),r.setAttribute("role","radiogroup"),r.setAttribute("aria-label",t.label);let a=t.value??Gt(n[0]),l=n.map(u=>{let c=an("tw-radiogrid-btn",u,i=>p(i));return r.append(c),c}),d=()=>rn(l,a),p=(u,c=!0)=>{a=u,d(),c&&e(u)};return r.addEventListener("keydown",u=>{let c=l.findIndex(g=>g.dataset.value===String(a));if(c<0)return;let i=be(u.key,c,l.length,s);i<0||(u.preventDefault(),i!==c&&(p(l[i]._twVal),l[i].focus()))}),d(),o.append(at("span","tw-radiogrid-label",t.label),r),{el:o,set:u=>p(u,!1),get:()=>a}}var _o='<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 $o(t,e){let n=t.value,s=t.options.map(m=>({value:Gt(m),label:Je(m)})),o=b("div","tw-select"),r=kt("tw-select-trigger");r.setAttribute("aria-haspopup","listbox"),r.setAttribute("aria-expanded","false");let a=b("span","tw-select-right"),l=b("span","tw-select-value");a.append(l),a.insertAdjacentHTML("beforeend",_o),r.append(at("span","tw-select-label",t.label),a);let d=b("div","tw-select-dropdown");d.setAttribute("role","listbox");let p=s.map(m=>{let f=kt("tw-select-option");return f.setAttribute("role","option"),f.textContent=m.label,f.dataset.value=m.value,f.addEventListener("click",()=>{c(m.value),i.close()}),d.append(f),f});o.append(r,d);let u=()=>{l.textContent=(s.find(m=>m.value===n)||{}).label??n,p.forEach(m=>{let f=m.dataset.value===String(n);m.dataset.selected=String(f),m.setAttribute("aria-selected",String(f))})},c=(m,f=!0)=>{n=m,u(),f&&e(m)},i=Kt(o,r,d,{width:"match",fallbackH:200,gap:4,onOpen:()=>(p.find(m=>m.dataset.value===String(n))||p[0])?.focus()});r.addEventListener("keydown",m=>{!i.isOpen()&&(m.key==="ArrowDown"||m.key==="ArrowUp")&&(m.preventDefault(),i.open())}),d.addEventListener("keydown",m=>{let f=p.indexOf(document.activeElement),w=f;if(m.key==="ArrowDown")w=f<0?0:Math.min(p.length-1,f+1);else if(m.key==="ArrowUp")w=f<0?p.length-1:Math.max(0,f-1);else if(m.key==="Home")w=0;else if(m.key==="End")w=p.length-1;else return;m.preventDefault(),p[w]?.focus()});let g=m=>{i.isOpen()&&!o.contains(m.relatedTarget)&&!d.contains(m.relatedTarget)&&i.close()};return r.addEventListener("focusout",g),d.addEventListener("focusout",g),u(),{el:o,set:m=>c(m,!1),get:()=>n}}function Fo(t){let e=at("button","tw-button",t.label);return e.type="button",e.addEventListener("click",()=>t.action&&t.action()),Ut(e)}function Ro(t){let e=b("div","tw-row tw-buttongroup");t.label&&e.append(at("span","tw-row-label",t.label));let n=b("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 a=at("button","tw-buttongroup-btn",o);a.type="button",a.addEventListener("click",()=>typeof r=="function"&&r()),n.append(a)}return e.append(n),Ut(e)}var Oo=()=>Ut(b("div","tw-separator"));function Po(t,e){let n=t.value??"",s=t.rows>0,o=b("div",s?"tw-row tw-row-multiline":"tw-row"),r=b(s?"textarea":"input",s?"tw-text tw-textarea":"tw-text");return s?r.rows=t.rows:r.type="text",r.value=n,se(r),t.placeholder&&(r.placeholder=t.placeholder),r.addEventListener("input",()=>{n=r.value,e(n)}),o.append(at("span","tw-row-label",t.label),r),{el:o,set:a=>{n=a==null?"":String(a),r.value=n},get:()=>n}}var Io=(t,e)=>Bt({...t,row:!0},e);function Mn(t){let e=b("div","tw-folder"),n=kt("tw-folder-header");n.setAttribute("aria-expanded","true"),n.append(at("span","tw-folder-title",t.label)),n.insertAdjacentHTML("beforeend",zo);let s=b("div","tw-folder-body"),o=b("div","tw-controls");s.append(o),e.append(n,s);let r=a=>{e.classList.toggle("is-collapsed",a),n.setAttribute("aria-expanded",a?"false":"true"),s.inert=a};return n.addEventListener("click",()=>r(!e.classList.contains("is-collapsed"))),{el:e,body:o,setCollapsed:r}}var Do=new Set(["button","fpsgraph","monitor","buttongroup","separator"]);function Ln(t,e){let n=_e(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 Bo='<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>',Ho='<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>',Xo='<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>',jo='<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>',zo='<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>',Yo='<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>',qo='<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>',ms='<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>',Ye=(t,e,n)=>{let s=kt("tw-toolbar-btn"+(t?" "+t:""),e);return s.title=n,s.setAttribute("aria-label",n),s},ks=()=>Ye("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${Bo}${Ho}</span>`,"Copy values"),Ls=()=>Ye("tw-toolbar-btn--reset",Xo,"Reset"),Es=t=>{t.classList.add("is-copied"),clearTimeout(t._t),t._t=setTimeout(()=>t.classList.remove("is-copied"),1400)},Ms=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)},ee=null,gs=0;function ne(t,e){ee||(ee=b("div","tw-toast tw-portal"),ee.setAttribute("role","status"),document.body.appendChild(ee)),ee.textContent=t,he(ee,e),ee.classList.add("is-open"),clearTimeout(gs),gs=setTimeout(()=>ee.classList.remove("is-open"),1600)}var Ct=null,An=0,bs=null,Sn=t=>{t.key==="Escape"&&Cn()},Cn=()=>{clearTimeout(An),document.removeEventListener("keydown",Sn),Ct&&Ct.classList.remove("is-open")};function Wo(t,e){Ct||(Ct=b("div","tw-tip tw-portal"),Ct.setAttribute("role","tooltip"),document.body.appendChild(Ct)),clearTimeout(An),Ct.textContent=e,he(Ct,t);let n=Ct.classList.contains("is-open");Ct.style.visibility="hidden",Ct.classList.add("is-open"),tn(t,Ct,{align:"center",prefer:"above",gap:8}),Ct.style.visibility="",document.addEventListener("keydown",Sn),bs=t,n||requestAnimationFrame(function s(){if(Ct.classList.contains("is-open")){if(!bs.isConnected)return Cn();requestAnimationFrame(s)}})}function ws(){Ct&&(An=setTimeout(()=>{Ct.classList.remove("is-open"),document.removeEventListener("keydown",Sn)},80))}function As(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?b("span","tw-hint",ms):kt("tw-hint",ms),r=()=>Wo(o,e);if(s){o.setAttribute("aria-hidden","true");let a=s.getAttribute("aria-description");s.setAttribute("aria-description",a?`${a}. ${e}`:e)}else o.setAttribute("aria-label",e),o.addEventListener("focus",r),o.addEventListener("blur",ws),o.addEventListener("keydown",a=>{(a.key==="Enter"||a.key===" ")&&a.stopPropagation()});o.addEventListener("pointerenter",r),o.addEventListener("pointerleave",ws),o.addEventListener("pointerdown",a=>a.stopPropagation()),o.addEventListener("click",a=>{a.preventDefault(),a.stopPropagation()}),n.appendChild(o)}async function Ss(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}it("slider",Co);it("checkbox",To);it("radiogrid",No);it("list",$o);it("button",Fo);it("buttongroup",Ro);it("separator",Oo);it("text",Po);it("number",Io);it("folder",Mn);function Go(t,e,n={}){let s=Object.entries(e).filter(([A])=>A!=="_last"||(console.warn('[tweaks] "_last" is reserved (the changed-key channel) \u2014 schema entry skipped'),!1)).map(([A,Q])=>qe(A,Q)).filter(Boolean),o={},r=[],a=new Set,l=new Set,d=[],p=!1,u=!1,c=[],i=null,g=()=>{},m=()=>({}),f=()=>!1,w=()=>!1,L=()=>{},N=()=>{},C=()=>{},F=Symbol("fromJSON"),j=Symbol("setMany"),H=()=>{let A=JSON.parse(JSON.stringify(o));return delete A._last,{values:A,ui:{}}},X=A=>{c.push([F,A])},O=()=>{l.forEach(A=>{try{A(o,o._last)}catch(Q){console.error("[tweaks] listener threw:",Q)}}),g()},G=n.persist?`tw:${n.persist===!0?t:n.persist}`:null,I=G?`${G}:presets`:null,Y=A=>{try{return JSON.parse(localStorage.getItem(A)||"null")}catch{return null}},lt=(A,Q)=>{try{localStorage.setItem(A,JSON.stringify(Q))}catch{}},S=b("div","tw-panel");S.dataset.mode="inline",Ze(S);let T=b("div","tw-header"),D=kt("tw-header-toggle");D.setAttribute("aria-expanded","true"),D.append(at("span","tw-title",t));let y=b("div","tw-toolbar"),h=ks(),v=Ls(),$=null;G&&($=Ye("",Yo,"Presets"),$.setAttribute("aria-haspopup","menu"),$.setAttribute("aria-expanded","false"),y.append($));let R=!!n.filter,k=R?Ye("",jo,"Filter controls"):null,B=R?b("input","tw-search"):null;R&&(B.type="text",B.placeholder="Filter\u2026",B.spellcheck=!1,B.setAttribute("aria-label","Filter controls"),se(B),y.append(k)),y.append(h,v),T.append(D),R&&T.append(B),n.toolbar!==!1&&T.append(y);for(let A of[h,v,$,k])A&&(A.disabled=!0);let q=!1;D.addEventListener("click",()=>{if(q){q=!1;return}let A=S.classList.toggle("is-collapsed");D.setAttribute("aria-expanded",A?"false":"true"),J.inert=A,S.dataset.mode==="floating"&&setTimeout(()=>{S.dataset.mode==="floating"&&S.isConnected&&(Z(),E())},270)});let J=b("div","tw-body"),ot=b("div","tw-controls");J.append(ot),S.append(T,J);let ct=en(n.theme);Ce(S,ct),S._twTheme=ct;let pt=n.draggable!==!1,ut=8,Pt=28,Tt=()=>({maxX:Math.max(ut,window.innerWidth-S.offsetWidth-ut),maxY:Math.max(ut,window.innerHeight-S.offsetHeight-ut)}),Mt=G?`${G}:pos`:null,z=(pt||n.floating)&&Mt?Y(Mt):null,W=z||(typeof n.floating=="object"?n.floating:null)||{x:16,y:16},U=+W.x||16,nt=+W.y||16,E=()=>{S.style.left=U+"px",S.style.top=nt+"px"},Z=()=>{let{maxX:A,maxY:Q}=Tt();U=_(U,ut,A),nt=_(nt,ut,Q)};(pt||n.floating)&&(n.floating||z)&&(S.dataset.mode="floating",Z(),E(),requestAnimationFrame(()=>{!p&&S.dataset.mode==="floating"&&S.isConnected&&(Z(),E())}));let rt=A=>{A.set(A.def),A.target[A.key]=A.get(),o._last=A.key,O()},gt=(A,Q)=>{let V=A.querySelector(".tw-slider-value")||A.querySelector(".tw-row-label, .tw-select-label, .tw-trigger-label, .tw-radiogrid-label, .tw-field-label")||A;V.classList.add("tw-resettable"),V.title="Double-click or hold to reset";let st=0,vt=0,tt=0,bt=!1,M=()=>{st&&(clearTimeout(st),st=0,V.classList.remove("tw-reset-holding"))};V.addEventListener("pointerdown",x=>{x.stopPropagation(),bt=!1,!(x.pointerType!=="touch"&&x.pointerType!=="pen")&&(vt=x.clientX,tt=x.clientY,V.classList.add("tw-reset-holding"),st=setTimeout(()=>{st=0,V.classList.remove("tw-reset-holding","is-editable"),bt=!0,rt(Q)},500))}),V.addEventListener("pointermove",x=>{st&&Math.abs(x.clientX-vt)+Math.abs(x.clientY-tt)>8&&M()}),V.addEventListener("pointerup",M),V.addEventListener("pointercancel",M),V.addEventListener("pointerleave",M),V.addEventListener("contextmenu",x=>{bt&&x.preventDefault()}),V.addEventListener("click",x=>{bt&&(x.preventDefault(),x.stopImmediatePropagation(),bt=!1)},!0),V.addEventListener("dblclick",x=>{x.preventDefault(),x.stopPropagation(),rt(Q)})},ft=[],At=(A,Q)=>{Q.hint&&As(A,Q.hint),(Q.render||Q.disabled!=null)&&ft.push({node:A,m:Q})},$t=[],Jt=[],Nt=[],Ht=[],Xt=(A,Q,V,st=[],vt=null)=>{for(let tt of Q){if(tt.type==="tabs"){let x={};a.add(x),V[tt.key]=x;let P=_e("tabs"),K=P&&P(tt);if(!K)continue;Ht.push({path:[...st,tt.key],ctrl:K,pageKeys:tt.pages.map(et=>et.key)}),tt.pages.forEach((et,xt)=>{let _t={};a.add(_t),x[et.key]=_t,Xt(K.bodies[xt],et.children,_t,[...st,tt.key,et.key])}),At(K.el,tt),A.append(K.el);continue}if(tt.type==="folder"){let x={};a.add(x),V[tt.key]=x;let P=Mn(tt);Nt.push({path:[...st,tt.key],el:P.el,setCollapsed:P.setCollapsed});let K=R?{el:P.el,label:tt.label,body:P.body}:null;K&&Jt.push(K),Xt(P.body,tt.children,x,[...st,tt.key],K),At(P.el,tt),A.append(P.el);continue}if(Do.has(tt.type)){let x=Ln(tt,()=>{});x&&(R&&tt.type!=="separator"&&$t.push({el:x.el,label:tt.label,folder:vt}),At(x.el,tt),A.append(x.el));continue}let bt=Ln(tt,x=>{cs(V[tt.key],x)&&(V[tt.key]=x,o._last=tt.key,O())});if(!bt)continue;En(V,tt.key)&&bt.set(V[tt.key]),V[tt.key]=bt.get();let M={target:V,key:tt.key,set:bt.set,get:bt.get,def:tt.value,path:[...st,tt.key]};r.push(M),gt(bt.el,M),At(bt.el,tt),R&&$t.push({el:bt.el,label:tt.label,folder:vt}),A.append(bt.el)}},It=()=>{if(p)return;if(Xt(ot,s,o),ft.length){let M=new Map;for(let K of r)M.has(K.key)||M.set(K.key,K);let x=K=>{let et=M.get(K);return et?et.target[et.key]:o[K]},P=()=>{for(let{node:K,m:et}of ft)try{if(et.render&&K.classList.toggle("tw-cond-hidden",!et.render(x)),et.disabled!=null){let xt=typeof et.disabled=="function"?et.disabled(x):et.disabled;K.classList.toggle("is-disabled",!!xt),K.inert=!!xt}}catch{}};l.add(P),P()}if(R){let M=P=>{let K=P.trim().toLowerCase();if(!K){$t.forEach(et=>et.el.classList.remove("tw-filter-hidden")),Jt.forEach(et=>et.el.classList.remove("tw-filter-hidden"));return}for(let et of $t){let xt=et.folder&&Te(et.folder.label,K);et.el.classList.toggle("tw-filter-hidden",!(Te(et.label,K)||xt))}for(let et of Jt.slice().reverse()){let xt=[...et.body.children].some(_t=>!_t.classList.contains("tw-filter-hidden"));et.el.classList.toggle("tw-filter-hidden",!(Te(et.label,K)||xt))}},x=()=>{S.classList.remove("is-searching"),B.value="",M("")};k.addEventListener("click",()=>{S.classList.toggle("is-searching")?(B.focus(),B.select()):x()}),B.addEventListener("input",()=>M(B.value)),B.addEventListener("keydown",P=>{P.key==="Escape"&&(x(),k.focus())})}let A=(M,x)=>x.reduce((P,K)=>P?.[K],M),Q=function(M,x){return M==="_last"&&this===o?void 0:x},V=()=>JSON.parse(JSON.stringify(o,Q)),st=(M,x=!0)=>{if(!(!M||typeof M!="object")){for(let P of r){let K=A(M,P.path);K!==void 0&&(P.set(K),P.target[P.key]=P.get())}o._last=void 0,x&&O()}};if(G){let M;g=()=>{clearTimeout(M),M=setTimeout(()=>lt(G,V()),150)},d.push(()=>clearTimeout(M)),st(Y(G))}m=()=>{let M=I?Y(I):null;return Object.assign(Object.create(null),M&&typeof M=="object"?M:{})},f=M=>{if(!I||!M)return!1;let x=m();return x[M]=V(),lt(I,x),!0},w=M=>{let x=m();return x[M]?(st(x[M]),!0):!1},L=M=>{if(!I)return;let x=m();delete x[M],lt(I,x)};let vt=M=>M.map(x=>String(x).replace(/~/g,"~1").replace(/\./g,"~0")).join("."),tt=()=>{let M={};if(Nt.length){let x={};for(let P of Nt)x[vt(P.path)]=P.el.classList.contains("is-collapsed");M.folders=x}if(Ht.length){let x={};for(let P of Ht)x[vt(P.path)]=P.pageKeys[P.ctrl.active()]??null;M.tabs=x}return M},bt=M=>{if(!(!M||typeof M!="object")){if(M.folders)for(let x of Nt){let P=M.folders[vt(x.path)];typeof P=="boolean"&&x.setCollapsed(P)}if(M.tabs)for(let x of Ht){let P=x.pageKeys.indexOf(M.tabs[vt(x.path)]);P>=0&&P!==x.ctrl.active()&&x.ctrl.activate(P)}}};if(H=()=>({values:V(),ui:tt()}),X=M=>{!M||typeof M!="object"||(M.values&&st(M.values),bt(M.ui))},pt||n.floating){if(pt){S.dataset.draggable="true";let ht=b("span","tw-grabber");ht.setAttribute("aria-hidden","true"),T.prepend(ht)}let M=()=>{if(S.dataset.mode==="floating")return;let ht=S.getBoundingClientRect();U=ht.left,nt=ht.top,S.parentNode&&(i=b("span","tw-lift-slot"),i.style.width=ht.width+"px",i.style.height=ht.height+"px",i.setAttribute("aria-hidden","true"),S.before(i)),nn(S,S),document.body.appendChild(S),S.dataset.mode="floating",E()},x=null,P=0,K=0,et=0,xt=0;T.addEventListener("pointerdown",ht=>{if(!(ht.button!==0||x!==null||ht.target.closest(".tw-toolbar, input, textarea, select")))if(x=ht.pointerId,P=ht.clientX,K=ht.clientY,q=!1,S.classList.add("is-grabbing"),S.style.transition){let wt=getComputedStyle(S);U=parseFloat(wt.left)||U,nt=parseFloat(wt.top)||nt,S.style.transition="",E()}else S.style.transition=""}),T.addEventListener("pointermove",ht=>{if(ht.pointerId!==x)return;let wt=ht.clientX-P,mt=ht.clientY-K;if(!q){if(Math.abs(wt)+Math.abs(mt)<4)return;q=!0,M(),et=U,xt=nt;try{T.setPointerCapture(x)}catch{}S.classList.add("is-dragging")}let{maxX:jt,maxY:Me}=Tt();U=_(et+wt,ut,jt),nt=_(xt+mt,ut,Me),E()});let _t=ht=>{if(ht.pointerId===x){try{T.releasePointerCapture(x)}catch{}if(x=null,q){let{maxX:wt,maxY:mt}=Tt();U<=ut+Pt?U=ut:U>=wt-Pt&&(U=wt),nt<=ut+Pt?nt=ut:nt>=mt-Pt&&(nt=mt),sn.matches||(S.style.transition="left 0.32s var(--tw-ease-spring), top 0.32s var(--tw-ease-spring)",setTimeout(()=>{S.style.transition=""},340)),E(),Mt&<(Mt,{x:U,y:nt})}S.classList.remove("is-dragging","is-grabbing")}};T.addEventListener("pointerup",_t),T.addEventListener("pointercancel",_t),T.addEventListener("lostpointercapture",_t),d.push(Rt(S,[[window,"resize"]],()=>{S.dataset.mode==="floating"&&(Z(),E())}))}if($){let M=b("div","tw-presets-menu"),x=b("div","tw-presets-save"),P=b("input","tw-presets-input");P.type="text",P.placeholder="Preset name\u2026",P.spellcheck=!1,P.setAttribute("aria-label","New preset name"),se(P);let K=at("button","tw-presets-savebtn","Save");K.type="button",x.append(P,K);let et=b("div","tw-presets-list");M.append(x,et);let xt=()=>{let wt=m(),mt=Object.keys(wt);if(et.replaceChildren(),!mt.length)return et.append(at("div","tw-presets-empty","No presets yet"));for(let jt of mt){let Me=b("div","tw-presets-row"),We=at("button","tw-presets-load",jt);We.type="button",We.addEventListener("click",()=>{w(jt),ht.close(),ne(`Loaded \u201C${jt}\u201D`,S)});let Ge=kt("tw-presets-del",qo);Ge.setAttribute("aria-label",`Delete preset ${jt}`),Ge.addEventListener("click",Ts=>{Ts.stopPropagation(),L(jt),xt()}),Me.append(We,Ge),et.append(Me)}},_t=()=>{let wt=P.value.trim();if(!wt){P.focus();return}f(wt),P.value="",xt(),ne(`Saved \u201C${wt}\u201D`,S)},ht=Kt($,$,M,{width:208,fallbackH:160,gap:6,align:"end",onOpen:()=>{xt(),P.focus()}});K.addEventListener("click",_t),P.addEventListener("keydown",wt=>{wt.key==="Enter"&&_t()})}if(h.addEventListener("click",async()=>{await Ss(JSON.stringify(o,Q,2))?(Es(h),ne(`${t} values copied`,S)):ne("Copy failed",S)}),v.addEventListener("click",()=>{if(Ms(v),typeof n.onReset=="function")return n.onReset();r.forEach(M=>{M.set(M.def),M.target[M.key]=M.get()}),o._last=void 0,O()}),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,P=()=>{document.removeEventListener("pointerup",P,!0),document.removeEventListener("pointercancel",P,!0),x&&(x=!1,n.onEditEnd&&n.onEditEnd())},K=et=>{x||!et.target.closest(M)||(x=!0,n.onEditStart&&n.onEditStart(),document.addEventListener("pointerup",P,!0),document.addEventListener("pointercancel",P,!0))};S.addEventListener("pointerdown",K),S._twEditPointer=K,d.push(P)}if(n.undo){let M=[V()],x=0,P=!1,K=0,et=()=>{K=0;let mt=V();JSON.stringify(mt)!==JSON.stringify(M[x])&&(M=M.slice(0,x+1),M.push(mt),x=M.length-1)},xt=()=>{P||(clearTimeout(K),K=setTimeout(et,350))},_t=()=>{K&&(clearTimeout(K),et())};l.add(xt);let ht=mt=>{P=!0,st(M[mt]),P=!1,x=mt};N=()=>{_t(),x>0&&ht(x-1)},C=()=>{_t(),x<M.length-1&&ht(x+1)};let wt=()=>S.matches(":hover")||S.contains(document.activeElement);d.push(Rt(S,[[document,"keydown"]],mt=>{if(!wt()||!(mt.metaKey||mt.ctrlKey))return;let jt=mt.key.toLowerCase();jt==="z"?(mt.preventDefault(),mt.shiftKey?C():N()):jt==="y"&&(mt.preventDefault(),C())}))}u=!0;for(let[M,x]of c.splice(0))M===F?X(x):M===j?yt.setMany(x):yt.set(M,x);for(let M of[h,v,$,k])M&&(M.disabled=!1)},qt=A=>A==="__proto__"||A==="constructor"||A==="prototype",Wt=A=>String(A).split(".").some(qt)?(console.warn(`[tweaks] set("${A}") ignored \u2014 reserved key`),!0):!1,Dt=(A,Q)=>{if(Wt(A))return!1;let V=String(A).split("."),st;if(V.length>1){let M=o;for(let x=0;x<V.length-1&&M;x++)M=M[V[x]],a.has(M)||(M=null);if(st=M&&r.find(x=>x.target===M&&x.key===V[V.length-1]),!st)return console.warn(`[tweaks] set("${A}") \u2014 no control at that path`),!1}else{let M=r.filter(x=>x.key===A);if(M.length>1)return console.warn(`[tweaks] set("${A}") is ambiguous \u2014 ${M.length} controls share that key; use a dotted path (e.g. "${M[0].path.join(".")}")`),!1;st=M[0]}let vt=st?st.target:o,tt=st?st.key:A,bt=vt[tt];if(st)st.set(Q),vt[tt]=st.get();else{if(a.has(o[A]))return console.warn(`[tweaks] set("${A}") ignored \u2014 it's a folder/tabs group; set its children instead`),!1;o[A]=Q}return cs(bt,vt[tt])?(o._last=tt,!0):!1},yt={el:S,params:o,on(A){return p?()=>{}:(l.add(A),()=>l.delete(A))},set(A,Q){if(!p){if(!u)return Wt(A)?void 0:void c.push([String(A),Q]);Dt(A,Q)&&O()}},setMany(A){if(p||A==null||typeof A!="object")return;if(!u){let V={};for(let st of Object.keys(A))Wt(st)||(V[st]=A[st]);c.push([j,V]);return}let Q=!1;for(let V of Object.keys(A))Dt(V,A[V])&&(Q=!0);Q&&O()},reset(){p||v.click()},toJSON(){return p?{values:{},ui:{}}:H()},fromJSON(A){p||X(A)},setTheme(A){if(!p){if(ct)for(let Q in ct)S.style.removeProperty(Q);ct=en(A),S._twTheme=ct,Ce(S,ct),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:A=>!p&&f(A),loadPreset:A=>!p&&w(A),deletePreset:A=>{p||L(A)},presets:()=>p?[]:Object.keys(m()),undo:()=>{p||N()},redo:()=>{p||C()},destroy(){if(!p){p=!0,_n(),Cn();for(let A of d.splice(0))try{A()}catch{}l.clear(),i&&(i.remove(),i=null),S.remove()}}},Ee=xs(s);return Ee?(yt.ready=S.ready=Ee.then(It).then(()=>yt),yt.ready.catch(()=>{})):(It(),yt.ready=S.ready=Promise.resolve(yt)),yt}var ys={slider:t=>({value:dt(t.value),min:dt(t.min)??0,max:dt(t.max)??100,step:dt(t.step),soft:vs(t.soft)}),checkbox:t=>t.options?{type:"radiogrid",options:Le(t.options),value:t.value,cols:dt(t.cols)}:{value:t.checked==="true"},radiogrid:t=>({options:Le(t.options),value:t.value,cols:dt(t.cols)}),list:t=>({options:Le(t.options),value:t.value}),color:t=>({value:t.value||"#7c5cff"}),button:(t,e,n)=>({action:()=>ne(`${n} pressed`,e)}),buttongroup:(t,e)=>({buttons:Le(t.buttons).map(n=>({label:n,action:()=>ne(`${n} pressed`,e)}))}),separator:()=>({}),number:t=>({value:dt(t.value),min:dt(t.min),max:dt(t.max),step:dt(t.step)}),text:t=>({value:t.value??"",placeholder:t.placeholder,rows:dt(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:dt(t.min),max:dt(t.max),step:dt(t.step)}),spring:t=>({stiffness:dt(t.stiffness),damping:dt(t.damping),mass:dt(t.mass),visualDuration:dt(t.visualDuration),bounce:dt(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:Le(t.components||"X,Y").map((n,s)=>({key:n.toLowerCase(),label:n,value:isNaN(e[s])?0:e[s],step:dt(t.step)??1,min:dt(t.min),max:dt(t.max)})),pad:vs(t.pad),invertY:t.invertY==="true"}},plot:t=>({expr:t.expr,xMin:dt(t.xmin),xMax:dt(t.xmax),yMin:dt(t.ymin),yMax:dt(t.ymax),samples:dt(t.samples),editable:t.editable!=="false"})},dt=t=>t==null?void 0:+t,vs=t=>t==="true"||t==="",Le=t=>(t||"").split(",").map(e=>e.trim()).filter(Boolean),Vo=t=>{let e=t.dataset,n=e.tw;if(!En(ys,n))return null;let s=e.label||Ae(e.key||n),o=ys[n](e,t,s),r=qe("v",{type:n,...o});return r&&(r.label=o.label||s),r};async function Cs(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 a=b("div","tw-body");s.insertBefore(a,r),a.append(r);let l=o.querySelector(".tw-header-toggle"),d=o.querySelector(".tw-title");if(!l&&d&&(l=kt("tw-header-toggle"),d.replaceWith(l),l.append(d)),!!l&&(l.setAttribute("aria-expanded","true"),l.addEventListener("click",()=>{let p=s.classList.toggle("is-collapsed");l.setAttribute("aria-expanded",p?"false":"true"),a.inert=p}),!o.querySelector(".tw-toolbar"))){let p=d&&d.textContent||"Panel",u=b("div","tw-toolbar"),c=ks(),i=Ls();u.append(c,i),o.append(u);let g=()=>[...s.querySelectorAll("[data-tw]")].map(m=>m._tw).filter(m=>m&&m.ctrl.get()!==void 0);c.addEventListener("click",async()=>{let m={};for(let w of g())m[w.key]=w.ctrl.get();await Ss(JSON.stringify(m,null,2))?(Es(c),ne(`${p} values copied`,s)):ne("Copy failed",s)}),i.addEventListener("click",()=>{Ms(i);for(let m of g())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=Mn({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:Vo(s)})).filter(s=>s.meta);e.forEach(({host:s})=>s.setAttribute("data-tw-bound",""));let n=xs(e.map(s=>s.meta));n&&await n.catch(()=>{});for(let{host:s,meta:o}of e){let r=Ln(o,a=>s.dataset.value=a);r&&(s.append(r.el),s.dataset.hint&&As(r.el,s.dataset.hint),s._tw={ctrl:r,def:o.value,key:o.label,host:s})}}if(typeof document<"u"){let t=()=>Cs(document);document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}export{Cs as enhance,Go as tweaks};
|
|
@@ -57,6 +57,11 @@ declare const measurePill: (container: any, pill: any, animate?: any) => void;
|
|
|
57
57
|
declare const setRadioActive: (btns: any, value: any) => any;
|
|
58
58
|
declare const radioButton: (cls: any, o: any, onPick: any) => any;
|
|
59
59
|
declare const navIndex: (key: any, i: any, n: any, cols?: number) => any;
|
|
60
|
+
declare function createSegmented(options: any, value: any, onChange: any, ariaLabel: any): {
|
|
61
|
+
el: any;
|
|
62
|
+
set: (v: any) => void;
|
|
63
|
+
get: () => any;
|
|
64
|
+
};
|
|
60
65
|
declare const triggerRow: (cls: string, label: string) => {
|
|
61
66
|
root: any;
|
|
62
67
|
trigger: any;
|
|
@@ -74,4 +79,4 @@ declare const blade: (el: any) => {
|
|
|
74
79
|
};
|
|
75
80
|
export declare const registerControl: (type: any, ctor: any) => void;
|
|
76
81
|
export declare const getControl: (type: any) => any;
|
|
77
|
-
export { titleCase, clamp, isColorStr, stepPrecision, roundToStep, inferStep, defaultRange, optValue, optLabel, el, btn, txt, svgEl, cssVar, accentColor, stopPointerLeak, onReady, onLive, wireHoverClass, dragGesture, boxFrac, fitCanvas, popover, closeActivePopover, resolveTheme, applyThemeVars, carryScheme, carrySkin, fuzzyMatch, setRadioActive, radioButton, navIndex, triggerRow, numField, blade, quietFocus, measurePill, grabSurface, REDUCE_MOTION, };
|
|
82
|
+
export { titleCase, clamp, isColorStr, stepPrecision, roundToStep, inferStep, defaultRange, optValue, optLabel, el, btn, txt, svgEl, cssVar, accentColor, stopPointerLeak, onReady, onLive, wireHoverClass, dragGesture, boxFrac, fitCanvas, popover, closeActivePopover, resolveTheme, applyThemeVars, carryScheme, carrySkin, fuzzyMatch, setRadioActive, radioButton, navIndex, createSegmented, triggerRow, numField, blade, quietFocus, measurePill, grabSurface, REDUCE_MOTION, };
|