tweakit 0.2.0 → 0.3.1
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 +4 -1
- package/THIRD-PARTY-NOTICES.md +20 -44
- package/dist/tweaks/bezier-Z5GKRM4D.js +1 -0
- package/dist/tweaks/chunk-36ETNTXF.js +1 -0
- package/dist/tweaks/chunk-AUZVP7BC.js +1 -0
- package/dist/tweaks/chunk-NGLZEK5U.js +1 -0
- package/dist/tweaks/colour-KNV4JMLD.js +1 -0
- package/dist/tweaks/core.js +1 -1
- package/dist/tweaks/gradient-7SU3OS46.js +1 -0
- package/dist/tweaks/heavy-GRI2MMP6.js +1 -0
- package/dist/tweaks/image-DBOIYZDB.js +1 -0
- package/dist/tweaks/interval-2WMOCHYW.js +1 -0
- package/dist/tweaks/monitor-NRXVKYAV.js +2 -0
- package/dist/tweaks/plot-YTKMVUH7.js +2 -0
- package/dist/tweaks/point-OSHHB6KE.js +1 -0
- package/dist/tweaks/spring-NNNUQHGF.js +1 -0
- package/dist/tweaks/tabs-NWHJSEFB.js +1 -0
- package/dist/tweaks.css +1 -1
- package/dist/tweaks.js +4 -3
- package/dist/types/tweaks/core.d.ts +4 -4
- package/dist/types/tweaks/enhance.d.ts +1 -0
- package/dist/types/tweaks/panel.d.ts +2 -0
- package/dist/types/tweaks/standalone.d.ts +3 -0
- package/dist/types/tweaks/types.d.ts +84 -2
- package/package.json +12 -8
- package/dist/tweaks/bezier-4JJDADLM.js +0 -1
- package/dist/tweaks/chunk-K6N3NNAW.js +0 -1
- package/dist/tweaks/chunk-NMISCM24.js +0 -1
- package/dist/tweaks/colour-J2FKMVZA.js +0 -1
- package/dist/tweaks/gradient-MV3DECUF.js +0 -1
- package/dist/tweaks/image-NZPSGN4W.js +0 -1
- package/dist/tweaks/interval-K4JN65W5.js +0 -1
- package/dist/tweaks/monitor-PUIUETKC.js +0 -2
- package/dist/tweaks/plot-IB2Q2LCO.js +0 -2
- package/dist/tweaks/point-UZ77545Q.js +0 -1
- package/dist/tweaks/spring-IJA5GPVX.js +0 -1
- package/dist/tweaks/tabs-IVS2Y3JA.js +0 -1
- package/dist/types/tweaks/controls/bezier.d.ts +0 -1
- package/dist/types/tweaks/controls/colour.d.ts +0 -14
- package/dist/types/tweaks/controls/gradient.d.ts +0 -1
- package/dist/types/tweaks/controls/image.d.ts +0 -1
- package/dist/types/tweaks/controls/interval.d.ts +0 -1
- package/dist/types/tweaks/controls/monitor.d.ts +0 -1
- package/dist/types/tweaks/controls/plot.d.ts +0 -1
- package/dist/types/tweaks/controls/point.d.ts +0 -1
- package/dist/types/tweaks/controls/spring.d.ts +0 -1
- package/dist/types/tweaks/controls/tabs.d.ts +0 -1
- package/dist/types/tweaks/shared.d.ts +0 -82
- package/dist/types/tweaks/single.d.ts +0 -12
- package/dist/types/wide-gamut.d.ts +0 -121
package/dist/tweaks.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
var 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};
|
|
1
|
+
/* tweakit — MIT © Ryan Kiley. Toolbar and control icons from Hugeicons (MIT); see THIRD-PARTY-NOTICES.md in the tweakit package. */
|
|
2
|
+
var qe=t=>t.replace(/([A-Z])/g," $1").replace(/^./,e=>e.toUpperCase()).trim(),T=(t,e,n)=>Math.min(n,Math.max(e,t)),wo=t=>typeof t=="string"&&(/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t.trim())||/^(oklch|oklab|rgba?|hsla?|hwb|lab|lch|color)\(/i.test(t.trim()));var Kt=t=>{let e=String(t),n=/e-(\d+)$/i.exec(e);if(n)return Math.min(20,Number(n[1])+(e.split("e")[0].split(".")[1]||"").length);let o=e.indexOf(".");return o===-1?0:Math.min(20,e.length-o-1)},le=(t,e,n)=>{if(!(n>0))return t;let o=Kt(n),r=Number((+e).toFixed(o)),s=Math.round((t-r)/n);return Number.isFinite(s)?Number((r+s*n).toFixed(o)):t},ye=(t,e,n,o=t)=>{let r=a=>le(a,o,n),s=Number.isFinite(t)?r(t):-1/0,i=Number.isFinite(e)?r(e):1/0;return s<t&&(s=r(s+n)),i>e&&(i=r(i-n)),s>i?[t,t]:[s,i]},ve=(t,e)=>{let n=e-t;return n<=1?.01:n<=10?.1:n<=100?1:10},Ye=(t,e,n,o=0,r=null)=>{let s=+t,i=+e,a=+n;if(Number.isFinite(s)||(s=o),Number.isFinite(i)||(i=r??s+100),i<s){let l=s;s=i,i=l}return(!(a>0)||a>i-s)&&(a=ve(s,i)),{min:s,max:i,step:a}},ce=(t,e,n,o,r,s=null)=>{let i=t.shiftKey?10:1;switch(t.key){case"ArrowRight":case"ArrowUp":return e+n*i;case"ArrowLeft":case"ArrowDown":return e-n*i;case"PageUp":return s!=null?e+s:null;case"PageDown":return s!=null?e-s:null;case"Home":return o;case"End":return r}return null},We=(t,e,n,o,r=0)=>{let s=t.offsetLeft,i=s+t.offsetWidth,a=e.offsetLeft,l=a+e.offsetWidth;return n<i&&n+o>s||n<l+r&&n+o>a-r},Me=t=>t>=0?[0,t<=1?1:t*3||100]:[t>=-1?-1:t*3,0],qt=t=>t==null?void 0:typeof t=="object"?t.value:t,He=t=>{try{return JSON.stringify(t)}catch{return String(t)}},Pn=t=>t==null?"":typeof t=="string"?qe(t):typeof t=="object"?t.label??(t.value!==void 0?String(t.value):He(t)):String(t),h=(t,e,n)=>{let o=document.createElement(t);return e&&(o.className=e),n!=null&&(o.innerHTML=n),o},wt=(t,e)=>{let n=h("button",t,e);return n.type="button",n},st=(t,e,n)=>{let o=h(t,e);return o.textContent=n,t==="button"&&(o.type="button"),o},Nn=t=>["pointerdown","pointermove","pointerup"].forEach(e=>t.addEventListener(e,n=>n.stopPropagation())),Tt=t=>{requestAnimationFrame(t),document.fonts&&document.fonts.ready&&document.fonts.ready.then(t)},At=(t,e,n)=>{let o=t.isConnected;o||requestAnimationFrame(()=>{t.isConnected&&(o=!0)});let r=i=>{if(!t.isConnected){(o||t.closest("[data-tw-destroyed]"))&&s();return}o=!0,n(i)},s=()=>e.forEach(([i,a])=>i.removeEventListener(a,r));return e.forEach(([i,a])=>i.addEventListener(a,r)),s},Fn=()=>requestAnimationFrame(()=>window.dispatchEvent(new Event("tw-reflow"))),Ue=(t,e)=>{t.addEventListener("pointerenter",()=>{t.classList.add("is-hover"),e&&e()}),t.addEventListener("pointerleave",()=>t.classList.remove("is-hover"))},Re=!1;typeof document<"u"&&(document.addEventListener("pointerdown",()=>{Re=!0},!0),document.addEventListener("keydown",()=>{Re=!1},!0));var Rt=t=>{t.addEventListener("focus",()=>t.classList.toggle("tw-focus-quiet",Re)),t.addEventListener("blur",()=>t.classList.remove("tw-focus-quiet"))},_n=(t,e,{width:n,fallbackH:o=300,gap:r=6,align:s="start",prefer:i="below"}={})=>{let a=t.getBoundingClientRect();n==="match"&&(e.style.width=a.width+"px");let l=n==="match"?a.width:e.offsetWidth||n||0,b=s==="end"?a.right-l:s==="center"?a.left+a.width/2-l/2:a.left;e.style.left=Math.max(8,Math.min(b,window.innerWidth-l-8))+"px";let u=e.offsetHeight||o,c=window.innerHeight-a.bottom,f=a.top,y=u+12,E=c>=y,p=f>=y,v=(i==="above"?p||!E&&f>=c:!E&&(p||f>c))?a.top-u-r:a.bottom+r;e.style.top=T(v,r,window.innerHeight-u-r)+"px"},jr=Object.assign(Object.create(null),{accent:"--tw-accent",onAccent:"--tw-on-accent",base:"--tw-base",dropdownBg:"--tw-dropdown-bg",surface:"--tw-surface",surfaceHover:"--tw-surface-hover",surfaceActive:"--tw-surface-active",border:"--tw-border",borderHover:"--tw-border-hover",selection:"--tw-selection",title:"--tw-text-root",section:"--tw-text-section",text:"--tw-text-primary",label:"--tw-text-label",textMuted:"--tw-text-secondary",textFaint:"--tw-text-tertiary",focus:"--tw-text-focus",success:"--tw-success",danger:"--tw-danger",shadow:"--tw-shadow-dropdown",shadowPanel:"--tw-shadow-panel",shadowPanelLifted:"--tw-shadow-panel-lifted",font:"--tw-font-sans",fontMono:"--tw-font-mono",radius:"--tw-radius",density:"--tw-row-height"}),Br=new Set(["radius","density"]),An=t=>(t/=255,t<=.03928?t/12.92:((t+.055)/1.055)**2.4),Vr=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},Xr=t=>{let e=Vr(t);if(!e||e.some(o=>!Number.isFinite(o)))return"#ffffff";let n=.2126*An(e[0])+.7152*An(e[1])+.0722*An(e[2]);return 1.05/(n+.05)>=(n+.05)/.0571?"#ffffff":"#161616"},$n=t=>{if(!t||typeof t!="object")return null;let e={};for(let[n,o]of Object.entries(t)){if(n.startsWith("--")){e[n]=String(o);continue}let r=jr[n];r&&(e[r]=Br.has(n)&&typeof o=="number"?`${o}px`:String(o))}return e["--tw-accent"]&&!e["--tw-on-accent"]&&(e["--tw-on-accent"]=Xr(e["--tw-accent"])),Object.keys(e).length?e:null},Je=(t,e)=>{if(t){if(t._twAppliedVars)for(let n of t._twAppliedVars)t.style.removeProperty(n);if(t._twAppliedVars=e?Object.keys(e):null,e)for(let n in e)t.style.setProperty(n,e[n])}},Rn=(t,e)=>{let n=e?.closest('[data-tw-scheme="light"]')?"light":e?.closest('[data-tw-scheme="dark"]')?"dark":null;n?t.setAttribute("data-tw-scheme",n):t.removeAttribute("data-tw-scheme")},ae=(t,e)=>{Je(t,e?.closest(".tw-panel")?._twTheme),Rn(t,e)},Zt=null,On=null,yo=t=>{Zt&&(!t||t.contains(On))&&Zt()};function Bt(t,e,n,o={}){let r=!1,s=null;n.classList.add("tw-portal"),n.addEventListener("pointerdown",w=>e.closest(".tw-panel")?._twEditPointer?.(w),!0),Nn(n);let i=()=>_n(e,n,{width:o.width,fallbackH:o.fallbackH,gap:o.gap,align:o.align}),a=()=>{if(r){if(!t.isConnected)return p();i(),o.onReflow&&o.onReflow()}},l=w=>{!t.contains(w.target)&&!n.contains(w.target)&&p()},b=w=>{w.key==="Escape"&&r&&(p(),e.focus())},u=w=>{if(!r)return;let v=w.relatedTarget;(v?t.contains(v)||n.contains(v):Re)||(p(),v&&!e.closest(".tw-panel")?.contains(v)&&setTimeout(()=>{!r&&document.activeElement===v&&e.focus()},0))};t.addEventListener("focusout",u),n.addEventListener("focusout",u);let c=()=>n.querySelector('button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [href], [tabindex]:not([tabindex="-1"])'),f=()=>ae(n,t),y=w=>{w.every(v=>v.target===n)||f()},E=()=>{Zt&&Zt!==p&&Zt(),Zt=p,On=e,r=!0,t.classList.add("is-open"),e.setAttribute("aria-expanded","true"),document.body.appendChild(n),ae(n,t),window.addEventListener("tw-retheme",f),typeof MutationObserver=="function"&&(s=new MutationObserver(y),s.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:["data-tw-scheme"]})),i(),requestAnimationFrame(()=>{if(r&&(n.classList.add("is-open"),o.onOpen&&o.onOpen(),i(),!n.contains(document.activeElement))){let w=o.initialFocus&&o.initialFocus()||c();w&&w.focus({focusVisible:!Re})}}),requestAnimationFrame(function w(){if(r){if(!t.isConnected)return p();requestAnimationFrame(w)}}),setTimeout(()=>{r&&document.addEventListener("pointerdown",l,!0)},0),document.addEventListener("keydown",b),window.addEventListener("scroll",a,!0),window.addEventListener("resize",a)},p=()=>{Zt===p&&(Zt=null,On=null),n.contains(document.activeElement)&&e.focus(),r=!1,t.classList.remove("is-open"),n.classList.remove("is-open"),e.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",l,!0),document.removeEventListener("keydown",b),window.removeEventListener("scroll",a,!0),window.removeEventListener("resize",a),window.removeEventListener("tw-retheme",f),s&&(s.disconnect(),s=null),setTimeout(()=>{r||n.remove()},200)};return e.addEventListener("click",()=>{e.disabled||(r?p():E())}),{open:E,close:p,isOpen:()=>r,reflow:a}}var Ze=(t,e)=>{if(t=t.toLowerCase(),t.includes(e))return!0;if(e.length<3)return!1;let n=e.length,o=t.length,r=new Array(o+1).fill(0);for(let s=1;s<=n;s++){let i=[s];for(let a=1;a<=o;a++)i[a]=Math.min(r[a]+1,i[a-1]+1,r[a-1]+(e[s-1]===t[a-1]?0:1));r=i}return Math.min(...r)<=(e.length<6?1:2)},xe=typeof matchMedia=="function"?matchMedia("(prefers-reduced-motion: reduce)"):{matches:!1},De="cubic-bezier(0.22, 1, 0.36, 1)",Hn="cubic-bezier(0.34, 1.2, 0.64, 1)",Gr=(t,e)=>{xe.matches||typeof t.animate!="function"||(t.style.transformOrigin=e>0?"left center":"right center",t.animate([{transform:"scaleX(1)"},{transform:"scaleX(1.18)"},{transform:"scaleX(1)"}],{duration:300,easing:De}))},Dn=(t,e,n)=>{let o=t.querySelector('[data-active="true"]');if(!o)return;let r=o.offsetLeft,s=o.offsetWidth,i=parseFloat(e.style.left);e.style.left=r+"px",e.style.width=s+"px",n&&Number.isFinite(i)&&i!==r&&Gr(e,r>i?1:-1)},Qe=(t,e)=>{t.classList.toggle("is-disabled",e);for(let n of t.children)n.inert=e},Ee=(t,e,n,o)=>{t.classList.toggle("is-collapsed",o),e.setAttribute("aria-expanded",String(!o)),n.inert=o},tn=(t,e)=>{let n=t.findIndex(o=>o.dataset.value===String(e));return n<0&&t.length?0:n},In=(t,e)=>{let n=tn(t,e);t.forEach((o,r)=>{let s=o.dataset.value===String(e);o.dataset.active=String(s),o.setAttribute("aria-checked",String(s)),o.tabIndex=r===n?0:-1})},jn=(t,e,n)=>{let o=st("button",t,Pn(e));return o.setAttribute("role","radio"),o._twVal=qt(e),o.dataset.value=o._twVal,o.addEventListener("click",()=>n(o._twVal)),o},Ie=(t,e,n,o=0)=>{switch(t){case"ArrowRight":return(e+1)%n;case"ArrowLeft":return(e-1+n)%n;case"ArrowDown":return o<0?-1:o?e+o<n?e+o:e:(e+1)%n;case"ArrowUp":return o<0?-1:o?e-o>=0?e-o:e:(e-1+n)%n;case"Home":return 0;case"End":return n-1}return-1};function en(t,e,n,o){let r=h("div","tw-seg");r.setAttribute("role","radiogroup"),o&&r.setAttribute("aria-label",o);let s=h("div","tw-seg-pill");r.append(s);let i=t.map(u=>{let c=jn("tw-seg-btn",u,f=>b(f));return r.append(c),c}),a=u=>Dn(r,s,u),l=()=>{In(i,e),a(!0)},b=(u,c=!0)=>{u!=null&&!i.some(f=>f._twVal===u)||(e=u,l(),c&&n(u))};return r.addEventListener("keydown",u=>{let c=tn(i,e);if(c<0)return;let f=Ie(u.key,c,i.length);f<0||(u.preventDefault(),b(i[f]._twVal),i[f].focus())}),l(),Tt(()=>{a(),r.classList.add("is-ready")}),At(r,[[window,"tw-reflow"]],()=>a()),{el:r,set:u=>b(u,!1),get:()=>e}}var Nt=(t,e="",n=2,o=24)=>`<svg${e?` class="${e}"`:""} viewBox="0 0 ${o} ${o}" fill="none" stroke="currentColor" stroke-width="${n}" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${t}</svg>`,Yt=(t,e)=>({el:t,set:()=>{},get:()=>{},destroy:e}),vo={},at=(t,e)=>{vo[t]=e},Qt=t=>vo[t];var zr="http://www.w3.org/2000/svg",kt=(t,e)=>{let n=document.createElementNS(zr,t);return e&&n.setAttribute("class",e),n},Mo=(t,e)=>getComputedStyle(t).getPropertyValue(e).trim(),nn=t=>{let e=getComputedStyle(t),n=o=>e.getPropertyValue(o).trim();return n("--tw-accent")||n("--tw-text-primary")||"#fff"},xo=t=>{let e=!1;t.addEventListener("pointerdown",n=>{e=n.button===0&&document.activeElement!==t}),t.addEventListener("focus",()=>t.select()),t.addEventListener("mouseup",n=>{e&&(e=!1,n.button===0&&document.activeElement===t&&t.selectionStart===0&&t.selectionEnd===t.value.length&&n.preventDefault())})};function Vt(t,{onDown:e,onMove:n,onEnd:o}={}){let r=null,s=i=>{r===null||i.pointerId!==r||(r=null,o&&o(i))};t.addEventListener("pointerdown",i=>{if(!(i.button!==0||r!==null)){r=i.pointerId;try{t.setPointerCapture(i.pointerId)}catch{}e&&e(i)}}),t.addEventListener("pointermove",i=>{if(i.pointerId===r){if(i.buttons===0)return s(i);n&&n(i)}}),t.addEventListener("pointerup",s),t.addEventListener("pointercancel",s),t.addEventListener("lostpointercapture",s)}var ke=(t,e)=>Vt(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((t.clientX-n.left)/n.width,0,1),T((t.clientY-n.top)/n.height,0,1)]},Eo=(t,e,n=1/0)=>{let o=t.getBoundingClientRect(),r=Math.min(window.devicePixelRatio||1,n);return t.width=o.width*r,t.height=o.height*r,e.setTransform(r,0,0,r,0,0),[o.width,o.height]},te=(t,e)=>{let n=h("div",t),o=wt("tw-trigger");o.setAttribute("aria-expanded","false");let r=h("span","tw-trigger-right");return o.append(st("span","tw-trigger-label",e),r),n.append(o),{root:n,trigger:o,right:r}},Kr=Nt('<path d="M6 4v8M10 4v8"/>',"",1.5,16);function qr(){let t=null,e=0,n=0,o=0;return{show(r,s,i,a){t=h("div","tw-grab-guide tw-portal"),t.innerHTML='<span class="tw-grab-line"></span><span class="tw-grab-dot"></span><span class="tw-grab-arrow"></span><span class="tw-grab-bubble"></span>',e=s,n=r,o=i??r,t.children[1].style.cssText=`left:${r}px;top:${e}px`,ae(t,a),document.body.appendChild(t)},move(r,s){t&&(t.children[0].style.cssText=`left:${Math.min(n,r)}px;top:${e}px;width:${Math.abs(r-n)}px`,t.children[2].style.cssText=`left:${r}px;top:${e}px;transform:translate(-50%,-50%) scaleX(${r>=n?1:-1})`,t.children[3].style.cssText=`left:${o}px;top:${e-16}px`,t.children[3].textContent=s)},hide(){t&&(t.remove(),t=null)}}}function Yr(t,e,n,o,r,s){let i=0,a=0,l=1,b=qr();Vt(t,{onDown:u=>{u.preventDefault(),i=u.clientX,a=o(),l=1,t.classList.add("is-dragging");let c=e.getBoundingClientRect();b.show(u.clientX,c.top+c.height/2,c.left+c.width/2,e),b.move(u.clientX,s())},onMove:u=>{let c=u.shiftKey?10:u.altKey?.1:1;c!==l&&(l=c,i=u.clientX,a=o()),r(a+(u.clientX-i)*n*c),b.move(u.clientX,s())},onEnd:()=>{t.classList.remove("is-dragging"),b.hide()}})}function Dt(t,e){let n=Number.isFinite(+t.step)&&+t.step>0?+t.step:1,o=v=>v==null?NaN:+v,r=o(t.min),s=o(t.max);if(Number.isFinite(r)&&Number.isFinite(s)&&s<r){let v=r;r=s,s=v}let i=Number.isFinite(r)?r:0,a=Kt(n),[l,b]=ye(Number.isFinite(r)?r:-1/0,Number.isFinite(s)?s:1/0,n,i),u=v=>{let P=le(v,i,n);return t.soft?P:T(P,l,b)},c=u(Number.isFinite(+t.value)?+t.value:0),f=h("div",t.row?"tw-row":"tw-field"),y=h("div","tw-num-wrap"),E=h("span","tw-num-grab",Kr);E.setAttribute("aria-hidden","true"),E.title="Drag to adjust";let p=h("input","tw-num");p.type="text",p.inputMode="decimal",p.setAttribute("aria-label",t.label),p.value=c.toFixed(a),Rt(p),y.append(E,p),f.append(st("span",t.row?"tw-row-label":"tw-field-label",t.label),y);let w=(v,P=!0)=>{v=+v,Number.isFinite(v)&&(c=u(v),p.value=c.toFixed(a),P&&e&&e(c))};return p.addEventListener("change",()=>{let v=parseFloat(p.value);w(isNaN(v)?c:v)}),p.addEventListener("keydown",v=>{if(v.key==="Enter")return p.blur();let P=v.key==="ArrowUp"?1:v.key==="ArrowDown"?-1:0;if(!P)return;v.preventDefault();let $=parseFloat(p.value);w((isNaN($)?c:$)+P*n*(v.shiftKey?10:1))}),Yr(E,y,n,()=>c,w,()=>p.value),{el:f,set:v=>w(v,!1),get:()=>c}}at("number",(t,e)=>Dt({...t,row:!0},e));var Wr=180/Math.PI,Xn=Math.PI/180,Xt=(t,e)=>[t[0][0]*e[0]+t[0][1]*e[1]+t[0][2]*e[2],t[1][0]*e[0]+t[1][1]*e[1]+t[1][2]*e[2],t[2][0]*e[0]+t[2][1]*e[1]+t[2][2]*e[2]],Ur=(t,e)=>{let n=[[0,0,0],[0,0,0],[0,0,0]];for(let o=0;o<3;o++)for(let r=0;r<3;r++)n[o][r]=t[o][0]*e[0][r]+t[o][1]*e[1][r]+t[o][2]*e[2][r];return n},gt=t=>Number.isFinite(t)?t:0,Jr=(t,e,n)=>Math.min(n,Math.max(e,t)),on=t=>{let e=Math.abs(t);return e<=.04045?t/12.92:Math.sign(t)*((e+.055)/1.055)**2.4},je=t=>{let e=Math.abs(t);return e<=.0031308?t*12.92:Math.sign(t)*(1.055*e**(1/2.4)-.055)},an=1.09929682680944,Fo=.018053968510807,Zr=t=>{let e=Math.abs(t);return e<Fo*4.5?t/4.5:Math.sign(t)*((e+an-1)/an)**(1/.45)},_o=t=>{let e=Math.abs(t);return e<Fo?t*4.5:Math.sign(t)*(an*e**.45-(an-1))},$o=1/512,Qr=t=>{let e=Math.abs(t);return e<=$o*16?t/16:Math.sign(t)*e**1.8},ts=t=>{let e=Math.abs(t);return e>=$o?Math.sign(t)*e**(1/1.8):16*t},Bn=[[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],rn=[[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],es=[[.4865709486482162,.26566769316909306,.19821728523436247],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],Ro=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],ns=[[.6369580483012914,.14461690358620832,.16888097516417205],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],Ho=[[1.7166511879712674,-.35567078377639233,-.25336628137365974],[-.6666843518324892,1.6164812366349395,.01576854581391113],[.017639857445310783,-.042770613257808524,.9421031212354738]],os=[[.7977604896723027,.13518583717574031,.0313493495815248],[.2880711282292934,.7118432178101014,8565396060525902e-20],[0,0,.8251046025104601]],rs=[[1.3457989731028281,-.25558010007997534,-.05110628506753401],[-.5446224939028347,1.5082327413132781,.02053603239147973],[0,0,1.2119675456389454]],Do=[[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Io=[[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],ss=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],jo=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],is=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],Bo=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],sn=216/24389,Be=24389/27,Te=[.3457/.3585,1,(1-.3457-.3585)/.3585],Ce=(t,e,n)=>Xt(n,[e(t[0]),e(t[1]),e(t[2])]),Se=(t,e,n)=>{let o=Xt(n,t);return[e(o[0]),e(o[1]),e(o[2])]},ko=t=>{let e=Xt(Bo,t);return Xt(jo,[e[0]**3,e[1]**3,e[2]**3])},Lo=t=>{let e=Xt(ss,t);return Xt(is,[Math.cbrt(e[0]),Math.cbrt(e[1]),Math.cbrt(e[2])])};function Co(t){let[e,n,o]=t,r=(e+16)/116,s=n/500+r,i=r-o/200,a=s**3>sn?s**3:(116*s-16)/Be,l=e>Be*sn?r**3:e/Be,b=i**3>sn?i**3:(116*i-16)/Be;return Xt(Io,[a*Te[0],l*Te[1],b*Te[2]])}function So(t){let e=Xt(Do,t),n=i=>i>sn?Math.cbrt(i):(Be*i+16)/116,o=n(e[0]/Te[0]),r=n(e[1]/Te[1]),s=n(e[2]/Te[2]);return[116*r-16,500*(o-r),200*(r-s)]}var ln=t=>{let e=Math.hypot(t[1],t[2]),n=Math.atan2(t[2],t[1])*Wr;return n<0&&(n+=360),[t[0],e,n]},cn=t=>[t[0],t[1]*Math.cos(t[2]*Xn),t[1]*Math.sin(t[2]*Xn)];function Vo(t){let e=((Number.isNaN(t[0])?0:t[0])%360+360)%360,n=t[1]/100,o=t[2]/100,r=s=>{let i=(s+e/30)%12,a=n*Math.min(o,1-o);return o-a*Math.max(-1,Math.min(i-3,9-i,1))};return[r(0),r(8),r(4)]}function Xo(t){let e=Math.max(...t),n=Math.min(...t),o=e-n;if(o<1e-9)return NaN;let r;return e===t[0]?r=(t[1]-t[2])/o+(t[1]<t[2]?6:0):e===t[1]?r=(t[2]-t[0])/o+2:r=(t[0]-t[1])/o+4,r*60}function as(t){let e=Math.max(...t),n=Math.min(...t),o=(n+e)/2,r=Xo(t),s=e===n||o===0||o===1?0:(e-o)/Math.min(o,1-o);return s<0&&(r+=180,s=-s),r>=360&&(r-=360),[r,s*100,o*100]}function ls(t){let e=t[1]/100,n=t[2]/100;if(e+n>=1){let s=e/(e+n);return[s,s,s]}let o=Vo([t[0],100,50]),r=1-e-n;return[o[0]*r+e,o[1]*r+e,o[2]*r+e]}var cs=t=>[Xo(t),Math.min(...t)*100,(1-Math.max(...t))*100];function us(t,e){switch(e){case"srgb":return Ce(t,on,Bn);case"p3":return Ce(t,on,es);case"rec2020":return Ce(t,Zr,ns);case"prophoto-rgb":return Xt(Io,Ce(t,Qr,os));case"oklab":return ko(t);case"oklch":return ko(cn(t));case"lab":return Co(t);case"lch":return Co(cn(t));case"hsl":return Ce(Vo(t),on,Bn);case"hwb":return Ce(ls(t),on,Bn)}}function ds(t,e){switch(e){case"srgb":return Se(t,je,rn);case"p3":return Se(t,je,Ro);case"rec2020":return Se(t,_o,Ho);case"prophoto-rgb":return Se(Xt(Do,t),ts,rs);case"oklab":return Lo(t);case"oklch":return ln(Lo(t));case"lab":return So(t);case"lch":return ln(So(t));case"hsl":return as(Se(t,je,rn));case"hwb":return cs(Se(t,je,rn))}}function Mt(t,e,n){return e===n?[t[0],t[1],t[2]]:e==="oklch"&&n==="oklab"?cn(t):e==="oklab"&&n==="oklch"?ln(t):e==="lch"&&n==="lab"?cn(t):e==="lab"&&n==="lch"?ln(t):ds(us(t,e),n)}var un=75e-6,Go=t=>t.every(e=>e>=-un&&e<=1+un),Gn=(t,e)=>Go(Mt(t,"oklch",e)),Vn=t=>t.map(e=>Math.min(1,Math.max(0,e))),To=(t,e)=>Math.hypot(t[0]-e[0],t[1]-e[1],t[2]-e[2]);function dn(t,e){if(Gn(t,e))return Mt(t,"oklch",e);let n=t[0];if(n>=1)return[1,1,1];if(n<=0)return[0,0,0];if(!Number.isFinite(t[1]))return Vn(Mt([n,0,gt(t[2])],"oklch",e));let o=.02,r=1e-4,s=[t[0],t[1],t[2]],i=0,a=t[1],l=!0,b=Vn(Mt(s,"oklch",e));if(To(Mt(b,e,"oklab"),Mt(t,"oklch","oklab"))<o)return b;for(;a-i>r;){let u=(i+a)/2;s[1]=u;let c=Mt(s,"oklch",e);if(l&&Go(c)){i=u;continue}b=Vn(c);let f=To(Mt(b,e,"oklab"),Mt(s,"oklch","oklab"));if(f<o){if(o-f<r)return b;l=!1,i=u}else a=u}return b}var zo=(t,e)=>{let n=t*Xn,o=Math.cos(n),r=Math.sin(n),s=Bo.map(a=>o*a[1]+r*a[2]),i=Ur(e==="p3"?Ro:e==="rec2020"?Ho:rn,jo);return{d:s,F:i,gam:e==="rec2020"?_o:je}};function pn(t,e){let{d:[n,o,r],F:s,gam:i}=zo(t,e),a=-un,l=1+un;return(b,u)=>{let c=b+u*n,f=b+u*o,y=b+u*r,E=c**3,p=f**3,w=y**3,v=i(s[0][0]*E+s[0][1]*p+s[0][2]*w);if(v<a||v>l)return!1;let P=i(s[1][0]*E+s[1][1]*p+s[1][2]*w);if(P<a||P>l)return!1;let $=i(s[2][0]*E+s[2][1]*p+s[2][2]*w);return $>=a&&$<=l}}function Ko(t,e){let{d:[n,o,r],F:s,gam:i}=zo(t,e);return(a,l,b)=>{let u=a+l*n,c=a+l*o,f=a+l*r,y=u**3,E=c**3,p=f**3;b[0]=i(s[0][0]*y+s[0][1]*E+s[0][2]*p),b[1]=i(s[1][0]*y+s[1][1]*E+s[1][2]*p),b[2]=i(s[2][0]*y+s[2][1]*E+s[2][2]*p)}}function fn(t,e,n=.5){if(!t(e,0))return 0;let o=0;for(let r=0;r<16;r++){let s=(o+n)/2;t(e,s)?o=s:n=s}return o}var ue=t=>Math.round(Math.min(1,Math.max(0,t))*255).toString(16).padStart(2,"0"),ps=t=>`#${ue(t[0])}${ue(t[1])}${ue(t[2])}`,mn=(t,e,n)=>ps(dn([t,e,n],"srgb"));function qo(t){let e=String(t).replace("#","").trim();if(e.length===3&&(e=e.split("").map(o=>o+o).join("")),e.length<6)return[.7,.1,280];let n=[parseInt(e.slice(0,2),16)/255,parseInt(e.slice(2,4),16)/255,parseInt(e.slice(4,6),16)/255];return Mt(n,"srgb","oklch").map(gt)}var bn=["hex","srgb","css","hsl","hwb","oklch","oklab","lch","lab","p3","rec2020"],Yo={hex:"HEX",srgb:"RGB",css:"CSS",hsl:"HSL",hwb:"HWB",oklch:"OKLCH",oklab:"OKLab",lch:"LCH",lab:"Lab",p3:"P3",rec2020:"Rec2020"},Wo=["srgb","css","hsl","hwb","hex"],zn=t=>!Wo.includes(t),Uo=t=>t==="hex"||t==="css"?"srgb":t,fs=Object.assign(Object.create(null),{hex:"srgb",srgb:"srgb",css:"srgb",hsl:"hsl",hwb:"hwb",oklch:"oklch",oklab:"oklab",lch:"lch",lab:"lab",p3:"display-p3",rec2020:"rec2020"}),Jo=t=>fs[t]||"oklch",ms=Object.assign(Object.create(null),{srgb:"srgb",hsl:"hsl",hwb:"hwb",oklch:"oklch",oklab:"oklab",lch:"lch",lab:"lab","display-p3":"p3",rec2020:"rec2020"}),Kn=t=>ms[t]||"oklch",gn=.5,Zo=(t,e,n)=>Object.freeze(["R","G","B"].map(o=>Object.freeze({k:o,min:0,max:t,step:e,scale:n}))),Ao=Zo(255,1,255),Oo=Zo(1,.01,1),Ve={oklch:[{k:"L",min:0,max:100,step:1,scale:100},{k:"C",min:0,max:gn,step:.01,scale:1},{k:"H",min:0,max:360,step:1,scale:1}],oklab:[{k:"L",min:0,max:100,step:1,scale:100},{k:"a",min:-.4,max:.4,step:.01,scale:1},{k:"b",min:-.4,max:.4,step:.01,scale:1}],lch:[{k:"L",min:0,max:100,step:1,scale:1},{k:"C",min:0,max:150,step:1,scale:1},{k:"H",min:0,max:360,step:1,scale:1}],lab:[{k:"L",min:0,max:100,step:1,scale:1},{k:"a",min:-125,max:125,step:1,scale:1},{k:"b",min:-125,max:125,step:1,scale:1}],srgb:Ao,css:Ao,hsl:[{k:"H",min:0,max:360,step:1,scale:1},{k:"S",min:0,max:100,step:1,scale:1},{k:"L",min:0,max:100,step:1,scale:1}],hwb:[{k:"H",min:0,max:360,step:1,scale:1},{k:"W",min:0,max:100,step:1,scale:1},{k:"B",min:0,max:100,step:1,scale:1}],p3:Oo,rec2020:Oo},Po=t=>t>=1?0:t>=.1?1:t>=.01?2:3,Qo=(t,e,n)=>e==="oklch"?[t[0],t[1],t[2]]:Wo.includes(n)?e==="srgb"?dn(t,"srgb"):Mt(dn(t,"srgb"),"srgb",e):Mt(t,"oklch",e);function hn(t,e){let n=Qo(t,Uo(e),e);return Ve[e].map((o,r)=>{let s=gt(n[r])*o.scale;return Jr(Math.abs(s)<.5*o.step?0:s,o.min,o.max)})}function tr(t,e,n,o){let r=Uo(e),s=Qo(t,r,e).map(gt);s[n]=o/Ve[e][n].scale;let i=Mt(s,r,"oklch");return[gt(i[0]),gt(i[1]),gt(i[2])]}function er(t,e){if(!zn(e))return"sRGB";let n=dn(t,"srgb");return Math.max(...n)<.03||Math.min(...n)>.97||Gn(t,"srgb")?"sRGB":Gn(t,"p3")?"P3":"wide"}function qn(t,e){if(e==="hex")return mn(t[0],t[1],t[2]);let n=Ve[e],o=hn(t,e),r=s=>{let i=o[s].toFixed(Po(n[s].step));return n[s].k==="H"&&+i==360?0 .toFixed(Po(n[s].step)):i};return e==="css"?`${r(0)}, ${r(1)}, ${r(2)}`:e==="oklch"||e==="oklab"||e==="lch"||e==="lab"?`${r(0)}% ${r(1)} ${r(2)}`:e==="hsl"||e==="hwb"?`${r(0)} ${r(1)}% ${r(2)}%`:`${r(0)} ${r(1)} ${r(2)}`}var No=(t,e)=>e==="hex"?t:e==="srgb"?`rgb(${t})`:e==="css"?`rgba(${t}, 1)`:e==="hsl"?`hsl(${t})`:e==="hwb"?`hwb(${t})`:e==="p3"?`color(display-p3 ${t})`:e==="rec2020"?`color(rec2020 ${t})`:`${e}(${t})`;function nr(t,e,n){let o=gt(n);if(e==="hex")return mn(t[0],t[1],t[2])+(o<.999?ue(o):"");let r=qn(t,e);if(o>=.999)return No(r,e);let s=+o.toFixed(3);return e==="css"?`rgba(${r}, ${s})`:No(`${r} / ${s}`,e)}var or=(()=>{try{return document.createElement("canvas").getContext("2d",{colorSpace:"display-p3"})?.getContextAttributes?.().colorSpace==="display-p3"}catch{return!1}})(),Yn=or?{colorSpace:"display-p3"}:{},bs=or?"p3":"srgb",wn=(t,e)=>{let n=t.length-1,o=Math.max(0,Math.min(n,e*n)),r=Math.floor(o),s=o-r;return t[r]*(1-s)+t[Math.min(r+1,n)]*s},gs=(t,e)=>{let n=pn(t,e),o=new Float64Array(128);for(let r=0;r<128;r++)o[r]=fn(n,r/127);return o},Qn="repeating-conic-gradient(#6b6b6b 0% 25%, #9a9a9a 0% 50%) 0 0 / 8px 8px",hs=Object.assign(Object.create(null),{srgb:"srgb","display-p3":"p3",rec2020:"rec2020","prophoto-rgb":"prophoto-rgb"}),to=/^(rgba?|hsla?|hwb)\([ \t\n\r\f]*([^)]*?)[ \t\n\r\f]*\)$/i,eo=/^(oklch|oklab|lch|lab|color)\([ \t\n\r\f]*([^)]*?)[ \t\n\r\f]*\)$/i,ws=/^(srgb|srgb-linear|display-p3|a98-rgb|prophoto-rgb|rec2020|xyz|xyz-d50|xyz-d65)$/i,yn=/^#?([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,Wn,rr=()=>Wn===void 0?Wn=document.createElement("canvas").getContext("2d"):Wn,ys=/^(#[0-9a-f]{3,8}|[a-z][a-z-]*(?:\([\w\s.,%+\-\/]*\))?)$/i;function sr(t){if(t=String(t??"").trim(),!ys.test(t))return!1;if(yn.test(t))return!0;if(eo.test(t))return xs(t);if(to.test(t))return ar(t)!==null;let e=rr();return e?["#000","#fff"].some(n=>{e.fillStyle=n;let o=e.fillStyle;return e.fillStyle=t,e.fillStyle!==o}):!0}var no="[+-]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e[+-]?\\d+)?",vs=new RegExp("^"+no+"$","i"),Ms=new RegExp("^"+no+"%$","i"),ir=new RegExp("^("+no+")(deg|grad|rad|turn)$","i"),oo=/[ \t\n\r\f]+/,ro=/^none$/i,Un=t=>t.replace(/^[ \t\n\r\f]+|[ \t\n\r\f]+$/g,""),Jn=t=>!!t&&!oo.test(t),de=t=>ro.test(t)?"none":vs.test(t)?"num":Ms.test(t)?"pct":ir.test(t)?"angle":null,Zn=t=>{let e=ir.exec(t);if(!e)return gt(parseFloat(t));let n=parseFloat(e[1]),o=e[2].toLowerCase();return gt(o==="turn"?n*360:o==="grad"?n*.9:o==="rad"?n*180/Math.PI:n)};function ar(t){let e=to.exec(t);if(!e)return null;let n=e[1].toLowerCase().replace(/a$/,""),o=e[2],r,s,i;if(o.includes(",")){if(n==="hwb")return null;let u=o.split(",").map(Un);if(u.length<3||u.length>4||!u.every(Jn)||(r=u.slice(0,3),s=u[3],i=r.map(de),n==="rgb"?!(i.every(c=>c==="num")||i.every(c=>c==="pct")):!((i[0]==="num"||i[0]==="angle")&&i[1]==="pct"&&i[2]==="pct"))||s!==void 0&&de(s)!=="num"&&de(s)!=="pct")return null}else{let u=o.split("/");if(u.length>2||(r=u[0].split(oo).filter(Boolean),r.length!==3))return null;if(u.length===2){s=Un(u[1]);let c=Jn(s)?de(s):null;if(!c||c==="angle")return null}if(i=r.map(de),n==="rgb"?!i.every(c=>c&&c!=="angle"):!(i[0]&&i[0]!=="pct"&&i[1]&&i[1]!=="angle"&&i[2]&&i[2]!=="angle"))return null}let a=(u,c)=>ro.test(u)?0:/%$/.test(u)?parseFloat(u)/100*c:parseFloat(u),l=s===void 0?1:T(a(s,1),0,1);return[n==="rgb"?Mt([T(a(r[0],255)/255,0,1),T(a(r[1],255)/255,0,1),T(a(r[2],255)/255,0,1)],"srgb","oklch"):Mt([i[0]==="none"?0:Zn(r[0]),T(a(r[1],100),0,100),T(a(r[2],100),0,100)],n,"oklch"),l]}var xs=t=>{let e=eo.exec(t);if(!e)return!1;let n=e[1].toLowerCase(),o=e[2].split("/");if(o.length>2)return!1;let r=o[0].split(oo).filter(Boolean);if(n==="color"&&!ws.test(r.shift()||"")||r.length!==3)return!1;let s=n==="lch"||n==="oklch";if(!r.every((i,a)=>{let l=de(i);return l&&(s&&a===2?l!=="pct":l!=="angle")}))return!1;if(o.length===2){let i=Un(o[1]),a=Jn(i)?de(i):null;if(!a||a==="angle")return!1}return!0};function pe(t){if(t=String(t??"").trim(),yn.test(t)){let a=t.replace("#",""),l=1;a.length===4?(l=parseInt(a[3]+a[3],16)/255,a=a.slice(0,3)):a.length===8&&(l=parseInt(a.slice(6,8),16)/255,a=a.slice(0,6));let[b,u,c]=qo("#"+a);return[b,u,c,l]}let e=eo.exec(t);if(e){let a=e[1].toLowerCase(),[l,b]=e[2].split("/").map(w=>w.trim()),u=l.split(/\s+/).filter(Boolean),c=a;if(a==="color"&&(c=hs[(u[0]||"").toLowerCase()],u=u.slice(1),!c))return[.7,.1,280,1];let f=(w,v=1)=>!w||ro.test(w)?0:gt(parseFloat(w))*(/%$/.test(w)?v:1),y=b?T(f(b,.01),0,1):1,E=a==="lab"?[T(f(u[0]),0,100),f(u[1],1.25),f(u[2],1.25)]:a==="lch"?[T(f(u[0]),0,100),Math.max(0,f(u[1],1.5)),Zn(u[2]||"0")]:a==="color"?[f(u[0],.01),f(u[1],.01),f(u[2],.01)]:a==="oklab"?[T(f(u[0],.01),0,1),f(u[1],.004),f(u[2],.004)]:[T(f(u[0],.01),0,1),Math.max(0,f(u[1],.004)),Zn(u[2]||"0")],p=c==="oklch"?E:Mt(E,c,"oklch");return[gt(p[0]),T(gt(p[1]),0,gn),(gt(p[2])%360+360)%360,y]}if(to.test(t)){let a=ar(t);if(!a)return[0,0,0,1];let[l,b]=a;return[gt(l[0]),T(gt(l[1]),0,gn),(gt(l[2])%360+360)%360,b]}let n=rr();if(!n)return[0,0,0,1];n.fillStyle="#000",n.fillStyle=t;let o=n.fillStyle;if(yn.test(o))return pe(o);let r=o.match(/^rgba?\(([^)]*)\)/i),s=((r?r[1]:"").match(/-?[\d.]+(?:e[+-]?\d+)?/gi)||[0,0,0]).map(Number),i=Mt([s[0]/255,s[1]/255,s[2]/255],"srgb","oklch");return[gt(i[0]),gt(i[1]),gt(i[2]),s[3]!=null?T(gt(s[3]),0,1):1]}function vn(t,e){let[n,o,r,s]=pe(t.value||"#7c5cff"),i=bn.includes(t.mode)?t.mode:"oklch",a=NaN,l=null,b=[],u=NaN,c="",f=()=>nr([n,o,r],i,s),y=h("div","tw-color-body"),E=h("div","tw-wg-area"),p=document.createElement("canvas");p.className="tw-wg-canvas";let w=h("div","tw-wg-thumb");E.append(p,w);let v=h("div","tw-wg-hue"),P=document.createElement("canvas");P.className="tw-wg-hue-canvas";let $=h("div","tw-wg-hue-thumb");v.append(P,$),p.setAttribute("role","img"),p.setAttribute("aria-label","Colour plane: chroma across, lightness up"),P.setAttribute("role","img"),P.setAttribute("aria-label","Hue strip");let N=h("div","tw-wg-alpha"),R=h("div","tw-wg-alpha-grad"),K=h("div","tw-wg-hue-thumb");N.append(R,K),N.tabIndex=0,N.setAttribute("role","slider"),N.setAttribute("aria-label","Alpha"),N.setAttribute("aria-valuemin","0"),N.setAttribute("aria-valuemax","1");let q=h("div","tw-color-mode-row"),Y=h("select","tw-color-mode");Y.setAttribute("aria-label","Color mode"),bn.forEach(j=>{let V=document.createElement("option");V.value=j,V.textContent=Yo[j],Y.append(V)}),Y.value=i;let U=h("span","tw-color-gamut");q.append(Y,U);let A=h("div","tw-color-channels");y.append(E,v,N,q,A);let O=p.getContext("2d",Yn),ot=P.getContext("2d"),tt=document.createElement("canvas"),lt=tt.getContext("2d",Yn),D=null,d=()=>{let j=E.getBoundingClientRect(),V=Math.round(j.width),k=Math.round(j.height);if(V<2)return;let J=window.devicePixelRatio||1,it=zn(i)?"p3":"srgb",rt=gs(r,it);l=rt;let dt=Math.round(V*J),Et=Math.round(k*J),xt=Math.max(1,Math.round(dt/4)),It=Math.max(1,Math.round(Et/4));(tt.width!==xt||tt.height!==It)&&(tt.width=xt,tt.height=It,D=new ImageData(xt,It,Yn));let _t=D.data,re=It>1?1/(It-1):0,Fe=xt>1?1/(xt-1):0,_e=Ko(r,bs),Gt=[0,0,0];for(let $t=0;$t<It;$t++){let be=1-$t*re,se=wn(rt,be);for(let zt=0;zt<xt;zt++){_e(be,zt*Fe*se,Gt);let Ut=($t*xt+zt)*4;_t[Ut]=Math.round(T(Gt[0],0,1)*255),_t[Ut+1]=Math.round(T(Gt[1],0,1)*255),_t[Ut+2]=Math.round(T(Gt[2],0,1)*255),_t[Ut+3]=255}}if(lt.putImageData(D,0,0),p.width=dt,p.height=Et,O.imageSmoothingEnabled=!0,O.drawImage(tt,0,0,dt,Et),it!=="srgb"){let $t=(be,se,zt,Ut)=>{let ge=pn(r,be),jt=[];for(let Pt=0;Pt<=100;Pt++){let Jt=Pt/100,he=wn(rt,Jt);if(he<=0)continue;let ie=fn(ge,Jt,he);ie<=0||jt.push([Math.min(ie/he*dt,dt-zt*J/2),(1-Jt)*Et])}jt.length<2||(O.save(),O.strokeStyle=se,O.lineWidth=zt*J,O.lineJoin=O.lineCap="round",O.setLineDash(Ut.map(Pt=>Pt*J)),O.beginPath(),jt.forEach((Pt,Jt)=>Jt?O.lineTo(Pt[0],Pt[1]):O.moveTo(Pt[0],Pt[1])),O.stroke(),O.restore())};$t("srgb","rgba(255,255,255,0.7)",1.5,[]),$t("p3","rgba(255,255,255,0.4)",1,[3,3])}a=r},S=.7,g=j=>{let V=Mt([S,fn(pn(j,"srgb"),S),j],"oklch","srgb");return`rgb(${T(V[0]*255,0,255)|0},${T(V[1]*255,0,255)|0},${T(V[2]*255,0,255)|0})`},L=0,X=()=>{let j=v.getBoundingClientRect(),V=Math.max(1,Math.round(j.width)),k=Math.max(1,Math.round(j.height));if(!(V<2)&&!(V===L&&P.width===V)){L=V,P.width=V,P.height=k;for(let J=0;J<V;J++)ot.fillStyle=g(J/(V-1)*360),ot.fillRect(J,0,1,k)}},H=()=>{let j=l?wn(l,n):.4,V=J=>`${T(J,0,1)*100}%`,k=(J,it)=>{let rt=T(J,0,1);return`calc(${rt*100}% + ${(.5-rt)*it}px)`};w.style.left=V(j>0?o/j:0),w.style.top=V(1-n),$.style.left=k(r/360,16),K.style.left=k(s,16),N.setAttribute("aria-valuenow",String(+s.toFixed(2))),R.style.background=`linear-gradient(to right, oklch(${n} ${o} ${r} / 0), oklch(${n} ${o} ${r}))`,w.style.background=`oklch(${n} ${o} ${r})`,K.style.background=`linear-gradient(oklch(${n} ${o} ${r} / ${s}), oklch(${n} ${o} ${r} / ${s})), var(--tw-dropdown-bg)`,r!==u&&(c=g(r),u=r),$.style.background=c},F=()=>{if(U.textContent=er([n,o,r],i),i==="hex"){let j=A.querySelector(".tw-color-chan-input");j&&document.activeElement!==j&&(j.value=mn(n,o,r)+(s<.999?ue(s):""))}else{let j=hn([n,o,r],i);b.forEach((V,k)=>{V.el.contains(document.activeElement)||V.set(j[k])})}},W=()=>{X(),d(),H()},C=()=>e(f()),G=j=>{j&&r!==a&&d(),H(),F()},z=j=>{G(j),C()},ct=()=>{if(A.replaceChildren(),b=[],i==="hex"){A.classList.add("tw-color-channels--hex");let j=h("div","tw-color-chan"),V=h("input","tw-color-chan-input");V.type="text",V.spellcheck=!1,V.setAttribute("aria-label","Hex color"),Rt(V),xo(V),V.addEventListener("change",()=>{let k=V.value.trim();yn.test(k)&&([n,o,r,s]=pe(k),z(!0))}),V.addEventListener("blur",F),V.addEventListener("keydown",k=>{k.key==="Enter"&&V.blur()}),j.append(st("span","tw-color-chan-label","HEX"),V),A.append(j)}else{A.classList.remove("tw-color-channels--hex");let j=hn([n,o,r],i);Ve[i].forEach((V,k)=>{let J=Dt({label:V.k,value:j[k],min:V.min,max:V.max,step:V.step},it=>{[n,o,r]=tr([n,o,r],i,k,T(it,V.min,V.max)),z(!0)});J.el.addEventListener("focusout",F),b.push(J),A.append(J.el)})}F()},mt=j=>Le(j,E);ke(E,j=>{let[V,k]=mt(j);n=1-k,o=V*(l?wn(l,n):.4),z(!1)});let Ot=j=>Le(j,v)[0]*360;ke(v,j=>{r=Ot(j),z(!0)});let Ct=j=>Le(j,N)[0];ke(N,j=>{s=Ct(j),z(!1)}),N.addEventListener("keydown",j=>{let V=ce(j,s,.01,0,1);V!=null&&(j.preventDefault(),s=T(V,0,1),z(!1))});let vt=j=>{i=j,Y.value=j,ct(),d(),H()};return Y.addEventListener("change",()=>{vt(Y.value),t.onMode&&t.onMode()}),ct(),{el:y,set:j=>{let V=document.activeElement;V&&y.contains(V)&&V.blur(),[n,o,r,s]=pe(j),G(!0)},get:()=>f(),mode:()=>i,setMode:j=>{j!==i&&bn.includes(j)&&vt(j)},reflow:W,swatchCss:()=>`linear-gradient(oklch(${n} ${o} ${r} / ${s}), oklch(${n} ${o} ${r} / ${s})), ${Qn}`,valueText:()=>qn([n,o,r],i)+(s<.999?i==="hex"?ue(s):` / ${+s.toFixed(2)}`:"")}}function Es(t,e){let{root:n,trigger:o,right:r}=te("tw-color",t.label??"Colour"),s=h("span","tw-trigger-chip tw-color-swatch"),i=h("span","tw-trigger-value");r.append(s,i);let a=h("div","tw-color-pop"),l=()=>{s.style.background=b.swatchCss(),i.textContent=b.valueText()},b=vn({value:t.value,onMode:()=>l()},u=>{l(),e(u)});return a.append(b.el),n.append(a),Bt(n,o,a,{width:240,fallbackH:340,gap:6,onOpen:b.reflow,onReflow:b.reflow}),l(),{el:n,set:u=>{b.set(u),l()},get:()=>b.get()}}var lr=(t,e,n,o)=>o<.999?`oklch(${+t.toFixed(4)} ${+e.toFixed(4)} ${+n.toFixed(2)} / ${+o.toFixed(3)})`:`oklch(${+t.toFixed(4)} ${+e.toFixed(4)} ${+n.toFixed(2)})`;at("color",Es);at("colorpicker",vn);var ks=Nt('<path d="M12 5v14m7-7H5"/>',"",2.5),cr=t=>t&&!Array.isArray(t)&&typeof t.interpolation=="string"?t.interpolation:null;function ur(t){let e=[{color:"oklch(0.72 0.19 25)",pos:0},{color:"oklch(0.72 0.16 280)",pos:1}],n=Array.isArray(t)?t:t&&Array.isArray(t.stops)?t.stops:null,o=(s,i)=>sr(s)?{color:String(s).trim(),pos:T(+i||0,0,1)}:null,r=(n||[]).map(s=>Array.isArray(s)?o(s[0],s[1]):s&&typeof s=="object"?o(s.color,s.pos):null).filter(Boolean);return r.length>=2?r:e}function Ls(t,e){let n=ur(t.value),o=n[0],{root:r,trigger:s,right:i}=te("tw-gradient",t.label??"Gradient"),a=h("span","tw-gradient-count"),l=h("span","tw-trigger-chip tw-gradient-preview");i.append(a,l);let b=h("div","tw-color-pop tw-gradient-pop"),u=h("div","tw-gradient-bar-row"),c=h("div","tw-gradient-bar"),f=h("div","tw-gradient-grad"),y=h("div","tw-gradient-rail");c.append(f,y);let E=wt("tw-gradient-add",ks);E.title="Add a stop after the selected one",E.setAttribute("aria-label","Add a colour stop after the selected one"),u.append(c,E);let p=()=>[...n].sort((g,L)=>g.pos-L.pos),w=()=>p().map(g=>`${g.color} ${(g.pos*100).toFixed(1)}%`).join(", "),v=()=>Jo(Y.mode()),P=()=>`linear-gradient(in ${v()} to right, ${w()})`,$=()=>{let g=P();f.style.background=g,l.style.background=`${g}, ${Qn}`},N=()=>{a.textContent=`${n.length} stop${n.length===1?"":"s"}`},R=()=>({stops:p().map(g=>({color:g.color,pos:+g.pos.toFixed(4)})),interpolation:v()}),K=()=>e(R()),q=g=>[...y.children].find(L=>L._stop===g),Y=vn({value:o.color,mode:Kn(cr(t.value)||"oklch"),onMode:()=>{$(),K()}},g=>{o.color=g,q(o)?.style.setProperty("--stop",g),$(),K()});b.append(u,Y.el),r.append(b);let U=g=>g.setAttribute("aria-label",`Colour stop at ${Math.round(g._stop.pos*100)}%${g._stop===o?", selected":""}`),A=()=>{for(let g of y.children)g.dataset.sel=String(g._stop===o),U(g)},O=()=>{y.replaceChildren();for(let g of n){let L=wt("tw-gradient-stop");L._stop=g,L.style.left=g.pos*100+"%",L.style.setProperty("--stop",g.color),L.dataset.sel=String(g===o),U(L),L.addEventListener("focus",()=>ot(g,!1));let X=!1;Vt(L,{onDown:H=>{H.preventDefault(),H.stopPropagation(),L.focus({focusVisible:!1}),ot(g,!1),X=!1},onMove:H=>{let F=y.getBoundingClientRect();g.pos=T((H.clientX-F.left)/(F.width||1),0,1),L.style.left=g.pos*100+"%",U(L),$(),K(),X=n.length>2&&(H.clientY<F.top-24||H.clientY>F.bottom+24),L.dataset.removing=String(X)},onEnd:()=>{X?D(g):L.dataset.removing="false"}}),L.addEventListener("dblclick",H=>{H.preventDefault(),D(g)}),L.addEventListener("keydown",H=>{let F=H.key==="ArrowLeft"?-1:H.key==="ArrowRight"?1:0;F&&(H.preventDefault(),g.pos=T(g.pos+F*(H.shiftKey?.1:.01),0,1),L.style.left=g.pos*100+"%",U(L),$(),K())}),y.append(L)}},ot=(g,L)=>{g!==o&&(Y.set(g.color),o=g),L?O():A()},tt=g=>{let L=y.getBoundingClientRect();return T((g-L.left)/(L.width||1),0,1)},lt=g=>{let L=p(),X=L[0],H=L[L.length-1];for(let mt=0;mt<L.length-1;mt++)if(g>=L[mt].pos&&g<=L[mt+1].pos){X=L[mt],H=L[mt+1];break}let F=H.pos>X.pos?T((g-X.pos)/(H.pos-X.pos),0,1):0,W=pe(X.color),C=pe(H.color),G=mt=>mt[1]<1e-4,z=C[2]-W[2];z>180?z-=360:z<-180&&(z+=360),(G(W)||G(C))&&(z=0);let ct=(((G(W)&&!G(C)?C[2]:W[2])+z*F)%360+360)%360;return lr(W[0]+(C[0]-W[0])*F,W[1]+(C[1]-W[1])*F,ct,W[3]+(C[3]-W[3])*F)},D=g=>{if(n.length<=2)return;let L=n.indexOf(g);if(L<0)return;n.splice(L,1);let X=o===g?n[Math.max(0,L-1)]:o;$(),ot(X,!0),N(),K(),q(o)?.focus()},d=g=>{let L={color:lt(g),pos:T(g,0,1)};return n.push(L),$(),ot(L,!0),N(),K(),L},S=()=>{let g=p(),L=g.indexOf(o);L<0&&(L=0);let X=L<g.length-1?(g[L].pos+g[L+1].pos)/2:L>0?(g[L-1].pos+g[L].pos)/2:T(g[L].pos+.1,0,1);d(X)};return E.addEventListener("click",g=>{g.stopPropagation(),S()}),c.addEventListener("dblclick",g=>{g.target.closest(".tw-gradient-stop")||(g.preventDefault(),d(tt(g.clientX)))}),b.tabIndex=-1,b.addEventListener("keydown",g=>{(g.key==="Delete"||g.key==="Backspace")&&!g.altKey&&!/^(input|textarea|select)$/i.test(g.target.tagName)&&n.length>2&&(g.preventDefault(),D(o))}),Bt(r,s,b,{width:260,fallbackH:392,gap:6,onOpen:Y.reflow,onReflow:Y.reflow,initialFocus:()=>q(o)}),O(),$(),N(),{el:r,set:g=>{let L=cr(g);L&&Y.setMode(Kn(L));let X=ur(g).sort((H,F)=>H.pos-F.pos);if(X.length===n.length)p().forEach((H,F)=>{H.color=X[F].color,H.pos=X[F].pos;let W=q(H);W&&(W.style.left=H.pos*100+"%",W.style.setProperty("--stop",H.color))});else{let H=o.pos;n=X,o=n.reduce((F,W)=>Math.abs(W.pos-H)<Math.abs(F.pos-H)?W:F,n[0]),O()}$(),N(),Y.set(o.color)},get:()=>R()}}at("gradient",Ls);function Cs(t,e){let n=t.label,o=+(t.value&&t.value[0]),r=+(t.value&&t.value[1]),{min:s,max:i,step:a}=Ye(t.min,t.max,t.step,Number.isFinite(o)?o:0,Number.isFinite(r)?r:1);[s,i]=ye(s,i,a);let l=Kt(a),b=D=>le(D,s,a),u=T(b(Number.isFinite(o)?o:s),s,i),c=T(b(Number.isFinite(r)?r:i),s,i);if(u>c){let D=u;u=c,c=D}let f=h("div","tw-slider-wrap"),y=h("div","tw-slider tw-interval"),E=h("div","tw-slider-fill"),p=h("div","tw-slider-handle"),w=h("div","tw-slider-handle"),v=st("span","tw-slider-label",n),P=h("span","tw-slider-value");y.append(E,p,w,v,P),f.append(y),[["minimum",p],["maximum",w]].forEach(([D,d])=>{d.tabIndex=0,d.setAttribute("role","slider"),d.setAttribute("aria-label",`${n} ${D}`),d.setAttribute("aria-valuemin",String(s)),d.setAttribute("aria-valuemax",String(i))});let $=D=>(D-s)/(i-s||1)*100,N=D=>`clamp(5px, calc(${D}% - 1.5px), calc(100% - 9px))`,R=()=>{let D=$(u),d=$(c);E.style.left=D+"%",E.style.width=Math.max(0,d-D)+"%",p.style.left=N(D),w.style.left=N(d),P.textContent=`${u.toFixed(l)} \u2013 ${c.toFixed(l)}`,p.setAttribute("aria-valuenow",String(u)),w.setAttribute("aria-valuenow",String(c));let S=f.offsetWidth;if(S){v.style.maxWidth=Math.max(0,S-P.offsetWidth-12-8-10)+"px";let g=L=>We(v,P,L/100*S-1.5,3);p.classList.toggle("is-dodge",g($(u))),w.classList.toggle("is-dodge",g($(c)))}};R();let K=()=>e([u,c]),q=D=>{u=T(Math.min(b(D),c),s,i),R()},Y=D=>{c=T(Math.max(b(D),u),s,i),R()},U=null,A=1,O=null,ot=D=>{let d=f.offsetWidth||U.width,S=T((D-U.left)/A/d,0,1);return T(s+S*(i-s),s,i)},tt=D=>{let d=ot(D);O||(O=d<u?"lo":d>c?"hi":Math.abs(d-u)<=Math.abs(d-c)?"lo":"hi"),O==="lo"?q(d):Y(d),K()};Vt(y,{onDown:D=>{D.preventDefault(),U=f.getBoundingClientRect(),A=U.width/(f.offsetWidth||U.width),y.classList.add("is-active","is-dragging"),O=null,tt(D.clientX),(O==="lo"?p:w).focus({focusVisible:!1})},onMove:D=>tt(D.clientX),onEnd:()=>{U=null,O=null,y.classList.remove("is-active","is-dragging")}}),Ue(y,R),Tt(R),At(y,[[window,"resize"],[window,"tw-reflow"]],R);let lt=D=>d=>{let S=D==="lo"?ce(d,u,a,s,c):ce(d,c,a,u,i);S!=null&&(d.preventDefault(),D==="lo"?q(S):Y(S),K())};return p.addEventListener("keydown",lt("lo")),w.addEventListener("keydown",lt("hi")),{el:f,set:D=>{if(Array.isArray(D)){let d=+D[0],S=+D[1];if(!Number.isFinite(d)||!Number.isFinite(S))return;u=T(b(Math.min(d,S)),s,i),c=T(b(Math.max(d,S)),s,i),R()}},get:()=>[u,c]}}at("interval",Cs);var Ss=0;function Ts(t){let e=`tw-tabs-${++Ss}`,n=h("div","tw-tabs"),o=h("div","tw-tabs-bar");o.setAttribute("role","tablist");let r=h("div","tw-tabs-pill");o.append(r);let s=h("div","tw-tabs-pages"),i=[],a=t.pages.map((u,c)=>{let f=st("button","tw-tabs-tab",u.title);f.setAttribute("role","tab"),f.dataset.active=String(c===0),f.setAttribute("aria-selected",String(c===0)),f.tabIndex=c===0?0:-1,f.id=`${e}-tab-${c}`,f.setAttribute("aria-controls",`${e}-page-${c}`);let y=h("div","tw-tabs-page tw-controls");return y.dataset.active=String(c===0),y.setAttribute("role","tabpanel"),y.id=`${e}-page-${c}`,y.setAttribute("aria-labelledby",f.id),i.push(y),s.append(y),f.addEventListener("click",()=>b(c)),o.append(f),f});n.append(o,s);let l=u=>Dn(o,r,u);function b(u){a.forEach((c,f)=>{c.dataset.active=String(f===u),c.setAttribute("aria-selected",String(f===u)),c.tabIndex=f===u?0:-1}),i.forEach((c,f)=>c.dataset.active=String(f===u)),l(!0),requestAnimationFrame(()=>window.dispatchEvent(new Event("tw-reflow")))}return o.addEventListener("keydown",u=>{let c=a.findIndex(y=>y.dataset.active==="true");if(c<0)return;let f=Ie(u.key,c,a.length,-1);f<0||(u.preventDefault(),b(f),a[f].focus())}),Tt(l),{el:n,bodies:i,activate:b,active:()=>a.findIndex(u=>u.dataset.active==="true")}}at("tabs",Ts);var As=t=>String(t).replace(/[\\"]/g,"\\$&").replace(/[\x00-\x1f\x7f]/g,e=>"\\"+e.charCodeAt(0).toString(16)+" ");function Os(t,e){let n=t.value||"",{root:o,trigger:r,right:s}=te("tw-image",t.label);r.removeAttribute("aria-expanded"),r.setAttribute("aria-label",`${t.label}: choose an image`);let i=h("span","tw-image-text"),a=h("span","tw-trigger-chip tw-image-thumb");s.append(i,a);let l=h("input","tw-image-input");l.type="file",l.accept="image/*",o.append(l);let b=()=>{a.dataset.set=n?"true":"false",a.style.backgroundImage=n?`url("${As(n)}")`:"",i.textContent=n?"Replace":"Drop or choose"},u=c=>{if(!c||!c.type.startsWith("image/"))return;let f=new FileReader;f.onload=()=>{n=String(f.result),b(),e(n)},f.readAsDataURL(c)};return r.addEventListener("click",()=>l.click()),l.addEventListener("change",()=>{l.files[0]&&u(l.files[0])}),r.addEventListener("dragover",c=>{c.preventDefault(),r.dataset.over="true"}),r.addEventListener("dragleave",()=>{r.dataset.over="false"}),r.addEventListener("drop",c=>{c.preventDefault(),r.dataset.over="false",c.dataTransfer.files[0]&&u(c.dataTransfer.files[0])}),b(),{el:o,set:c=>{c!=null&&typeof c!="string"||(n=c||"",b())},get:()=>n}}at("image",Os);var Ps=(t,e,n,o,r,s,i)=>{let a=r.length;t.clearRect(0,0,n,o),t.strokeStyle=nn(e),t.lineWidth=1.5,t.lineJoin="round",t.beginPath();let l=!1;for(let b=0;b<a;b++){let u=r[(s+b)%a];if(Number.isNaN(u))continue;let c=b/(a-1)*n,f=o-T(i(u),0,1)*o;l?t.lineTo(c,f):(t.moveTo(c,f),l=!0)}t.stroke()},Ns=t=>{for(let e of["resize","tw-reflow"])window.addEventListener(e,t);return()=>{for(let e of["resize","tw-reflow"])window.removeEventListener(e,t)}};function dr(t,e=!1){let n=typeof t.get=="function"?t.get:()=>t.value,o=Math.max(30,Number.isFinite(+t.interval)?+t.interval:200),r;try{r=n()}catch{}let s=typeof r=="number",i=t.view==="graph"||s&&t.graph!==!1&&t.view!=="text"&&t.rows==null,a=h("div","tw-fps tw-monitor"),l=st("span","tw-fps-val","\u2014");a.append(st("span","tw-fps-label",t.label??"Monitor"),l);let b=0,u=0,c=()=>{},f=!1,y=Number.isFinite(+t.decimals)?Math.min(20,Math.max(0,Math.floor(+t.decimals))):2,E=A=>A==null?"\u2014":typeof A=="number"?Number.isInteger(A)||!Number.isFinite(A)?String(A):A.toFixed(y):typeof A=="object"?He(A):String(A),p=()=>{b&&clearInterval(b),b=0,u&&cancelAnimationFrame(u),u=0,c()},w=A=>{let O=ot=>{if(e&&(u=requestAnimationFrame(O)),!a.isConnected){f&&p();return}f=!0;let tt;try{tt=n(ot)}catch{return}A(tt)};e?u=requestAnimationFrame(O):b=setInterval(O,o)};if(!i&&t.rows){l.remove();let A=Math.max(1,Math.floor(+t.rows)||1),O=h("pre","tw-monitor-buffer");O.style.setProperty("--tw-monitor-rows",A),a.append(O);let ot=[];return w(tt=>{for(ot.push(E(tt));ot.length>A;)ot.shift();O.textContent=ot.join(`
|
|
3
|
+
`)}),Yt(a,p)}if(!i)return w(A=>{l.textContent=E(A)}),Yt(a,p);let v=document.createElement("canvas");v.className="tw-fps-canvas",a.append(v);let P=v.getContext("2d");if(!P)return w(A=>{l.textContent=E(A)}),Yt(a,p);let $=80,N=new Array($).fill(NaN),R=0,K=0,q=0,Y=()=>{[K,q]=Eo(v,P,2)};c=Ns(Y);let U=()=>{if(K||Y(),!K)return;let A=t.min,O=t.max;if(A==null||O==null){let tt=1/0,lt=-1/0;for(let d of N)Number.isFinite(d)&&(d<tt&&(tt=d),d>lt&&(lt=d));tt===1/0?(tt=0,lt=1):tt===lt&&(tt-=.5,lt+=.5);let D=(lt-tt)*.1;A==null&&(A=tt-D),O==null&&(O=lt+D)}let ot=O-A||1;Ps(P,a,K,q,N,R,tt=>(tt-A)/ot)};return w(A=>{if(typeof A!="number"||!Number.isFinite(A)){l.textContent=E(A);return}N[R]=A,R=(R+1)%$,l.textContent=E(A),U()}),Yt(a,p)}var Fs=()=>{let t=0;return e=>{if(!(e>0))return;let n=t?1e3/(e-t):void 0;return t=e,n}},_s=t=>dr({...t,label:t.label??"FPS",get:Fs(),view:"graph",min:0,max:120,decimals:0},!0);at("fpsgraph",_s);at("monitor",t=>dr(t));function $s(t,e,n,o=64){let r=Math.sqrt(t/n),s=e/(2*Math.sqrt(t*n)),i=Math.min(2.2,9/Math.max(s*r,.5)),a=[];for(let l=0;l<o;l++){let b=l/(o-1)*i,u;if(s<1-1e-4){let c=r*Math.sqrt(1-s*s);u=1-Math.exp(-s*r*b)*(Math.cos(c*b)+s*r/c*Math.sin(c*b))}else if(s<=1+1e-4)u=1-Math.exp(-r*b)*(1+r*b);else{let c=Math.sqrt(s*s-1),f=r*(s+c),y=r*(s-c);u=1-(f*Math.exp(-y*b)-y*Math.exp(-f*b))/(f-y)}a.push(u)}return a}function Rs(t,e){let n=(C,G,z)=>Number.isFinite(+C)?Math.max(G,+C):z,o=C=>({stiffness:n(C.stiffness,1,300),damping:n(C.damping,.5,26),mass:n(C.mass,.1,1)}),r=C=>Number.isFinite(+C),a=C=>T(r(C)?+C:.5,.1,1),l=C=>T(r(C)?+C:.2,0,1),b=C=>{let G=(2*Math.PI/C.visualDuration)**2,z=1-C.bounce,ct=1;return{stiffness:G,damping:2*z*Math.sqrt(G*ct),mass:ct}},u=C=>C==="time"||C==="physics"?C:null,c={stiffness:t.stiffness,damping:t.damping,mass:t.mass,visualDuration:t.visualDuration,bounce:t.bounce,...t.value||{}},f=u(c.mode)??u(t.mode)??(r(c.visualDuration)||r(c.bounce)?"time":"physics"),y={visualDuration:a(c.visualDuration),bounce:l(c.bounce)},E=o({stiffness:c.stiffness,damping:c.damping,mass:c.mass}),p=h("div","tw-spring"),w=h("div","tw-spring-viz"),v=document.createElement("canvas");v.className="tw-spring-canvas",w.append(v);let P=h("div","tw-fields"),$=h("div","tw-fields"),N=v.getContext("2d"),R=()=>o(f==="time"?b(y):E),K=()=>{let C=w.getBoundingClientRect(),G=Math.max(1,Math.round(C.width)),z=Math.max(1,Math.round(C.height));if(G<2)return;let ct=window.devicePixelRatio||1;v.width=G*ct,v.height=z*ct,N.setTransform(ct,0,0,ct,0,0),N.clearRect(0,0,G,z);let mt=R(),Ft=$s(mt.stiffness,mt.damping,mt.mass,Math.max(160,Math.round(G*ct))),Ot=Math.max(1.05,...Ft),yt=8,Ct=vt=>yt+vt/(Ft.length-1)*(G-2*yt),ht=vt=>z-yt-vt/Ot*(z-2*yt);N.strokeStyle=Mo(p,"--tw-surface-active")||"rgba(255,255,255,0.1)",N.lineWidth=1,N.beginPath(),N.moveTo(yt,ht(1)),N.lineTo(G-yt,ht(1)),N.stroke(),N.strokeStyle=nn(p),N.lineWidth=1.5,N.lineJoin=N.lineCap="round",N.beginPath(),Ft.forEach((vt,j)=>j?N.lineTo(Ct(j),ht(vt)):N.moveTo(Ct(j),ht(vt))),N.stroke()},q=()=>f==="time"?{...R(),visualDuration:y.visualDuration,bounce:y.bounce}:R(),Y=()=>e(q()),U={};[["stiffness","Stiffness",1],["damping","Damping",.5],["mass","Mass",.1]].forEach(([C,G,z])=>{U[C]=Dt({label:G,value:E[C],step:z,min:z},ct=>{E[C]=ct,K(),Y()}),P.append(U[C].el)});let A=Dt({label:"Duration",value:y.visualDuration,step:.05,min:.1,max:1},C=>{y.visualDuration=a(C),K(),Y()}),O=Dt({label:"Bounce",value:y.bounce,step:.05,min:0,max:1},C=>{y.bounce=l(C),K(),Y()});$.append(A.el,O.el);let ot=()=>{$.style.display=f==="time"?"":"none",P.style.display=f==="physics"?"":"none"},lt=en([{value:"time",label:"Time"},{value:"physics",label:"Physics"}],f,C=>{C!=="time"&&C!=="physics"||C===f||(f=C,ot(),K(),Y())},"Spring mode"),D=h("div","tw-row");D.append(st("span","tw-row-label","Mode"),lt.el),t.label&&p.append(st("div","tw-spring-label",t.label)),p.append(w,D,P,$);let d=1,S=500,g=1,L=40,X=null,H=C=>{if(!X)return;let G=T((C.clientX-X.left)/X.width,0,1),z=T((C.clientY-X.top)/X.height,0,1);f==="time"?(A.set(.1+G*(1-.1)),y.visualDuration=A.get(),O.set(1-z),y.bounce=O.get()):(U.stiffness.set(d+G*(S-d)),E.stiffness=U.stiffness.get(),U.damping.set(g+z*(L-g)),E.damping=U.damping.get()),K(),Y()};Vt(w,{onDown:C=>{C.preventDefault(),X=w.getBoundingClientRect(),w.classList.add("is-dragging"),H(C)},onMove:H,onEnd:()=>{X=null,w.classList.remove("is-dragging")}}),ot(),Tt(K),At(v,[[window,"resize"],[window,"tw-reflow"],[matchMedia("(prefers-color-scheme: dark)"),"change"],[window,"tw-retheme"]],K);let F=null,W=!1;return typeof MutationObserver=="function"&&(F=new MutationObserver(()=>{v.isConnected?(W=!0,K()):W&&(F.disconnect(),F=null)}),F.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:["data-tw-scheme"]})),{el:p,destroy:()=>{F&&(F.disconnect(),F=null)},set:C=>{if(!C||typeof C!="object")return;let G=u(C.mode),z=r(C.visualDuration)||r(C.bounce),ct=r(C.stiffness)||r(C.damping)||r(C.mass);!z&&!ct&&!G||(f=G??(z?"time":"physics"),z&&(r(C.visualDuration)&&(y.visualDuration=a(C.visualDuration)),r(C.bounce)&&(y.bounce=l(C.bounce))),ct&&(E=o({...E,...C})),lt.set(f),A.set(y.visualDuration),O.set(y.bounce),U.stiffness.set(E.stiffness),U.damping.set(E.damping),U.mass.set(E.mass),ot(),K())},get:()=>q()}}at("spring",Rs);function Hs(t,e){let n=[.25,.1,.25,1],o=-.25,r=1.25,s=r-o,i=8,a=d=>d.map((S,g)=>T(S,g%2?o:0,g%2?r:1)),l=Array.isArray(t.value)&&t.value.length===4?t.value.map(Number):n.slice();l.some(d=>!Number.isFinite(d))&&(l=n.slice()),l=a(l);let b=l.slice(),u=h("div","tw-bezier");t.label&&u.append(st("div","tw-bezier-label",t.label));let c=h("div","tw-bezier-graph"),f=kt("svg","tw-bezier-svg");f.setAttribute("preserveAspectRatio","none");let y=kt("line","tw-bezier-guide"),E=kt("line","tw-bezier-guide"),p=kt("line","tw-bezier-diag"),w=kt("line","tw-bezier-ctl"),v=kt("line","tw-bezier-ctl"),P=kt("path","tw-bezier-curve");f.append(y,E,p,w,v,P);let $=wt("tw-bezier-handle");$.setAttribute("aria-label","Control point 1");let N=wt("tw-bezier-handle");N.setAttribute("aria-label","Control point 2"),c.append(f,$,N);let R=h("div","tw-fields tw-bezier-fields");u.append(c,R);let K=0,q=0,Y=d=>i+d*(K-2*i),U=d=>q-i-(d-o)/s*(q-2*i),A=(d,S,g,L,X)=>{d.setAttribute("x1",S),d.setAttribute("y1",g),d.setAttribute("x2",L),d.setAttribute("y2",X)},O=()=>{if($.setAttribute("aria-label",`Control point 1, x ${l[0]}, y ${l[1]}`),N.setAttribute("aria-label",`Control point 2, x ${l[2]}, y ${l[3]}`),K=c.offsetWidth,q=c.offsetHeight,K<2)return;f.setAttribute("viewBox",`0 0 ${K} ${q}`);let[d,S,g,L]=l,X=Y(0),H=U(0),F=Y(1),W=U(1),C=Y(d),G=U(S),z=Y(g),ct=U(L);A(y,i,H,K-i,H),A(E,i,W,K-i,W),A(p,X,H,F,W),A(w,X,H,C,G),A(v,F,W,z,ct),P.setAttribute("d",`M${X},${H} C${C},${G} ${z},${ct} ${F},${W}`),$.style.left=C+"px",$.style.top=G+"px",N.style.left=z+"px",N.style.top=ct+"px"},ot=[{label:"X1",i:0,lo:0,hi:1},{label:"Y1",i:1,lo:o,hi:r},{label:"X2",i:2,lo:0,hi:1},{label:"Y2",i:3,lo:o,hi:r}],tt=ot.map(d=>{let S=Dt({label:d.label,value:l[d.i],step:.01,min:d.lo,max:d.hi},g=>{l[d.i]=g,O(),e(l.slice())});return R.append(S.el),S}),lt=()=>tt.forEach((d,S)=>d.set(l[ot[S].i])),D=(d,S)=>{let g=null,L=0,X=0,H=1;Vt(d,{onDown:F=>{F.preventDefault(),g=c.getBoundingClientRect(),L=c.offsetWidth||g.width,X=c.offsetHeight||g.height,H=g.width/L,d.classList.add("is-dragging"),d.focus({focusVisible:!1})},onMove:F=>{let W=(F.clientX-g.left)/H,C=(F.clientY-g.top)/H,G=T((W-i)/(L-2*i),0,1),z=T(o+(X-i-C)/(X-2*i)*s,o,r);l[S*2]=+G.toFixed(2),l[S*2+1]=+z.toFixed(2),O(),lt(),e(l.slice())},onEnd:()=>{g=null,d.classList.remove("is-dragging")}}),d.addEventListener("keydown",F=>{if(F.key==="Escape")return d.blur();if(F.key==="Home"){F.preventDefault(),l=b.slice(),O(),lt(),e(l.slice());return}let W=F.key==="ArrowRight"?1:F.key==="ArrowLeft"?-1:0,C=F.key==="ArrowUp"?1:F.key==="ArrowDown"?-1:0;if(!W&&!C)return;F.preventDefault();let G=F.shiftKey?.1:.01,z=S*2;W&&(l[z]=+T(l[z]+W*G,0,1).toFixed(2)),C&&(l[z+1]=+T(l[z+1]+C*G,o,r).toFixed(2)),O(),lt(),e(l.slice())})};return D($,0),D(N,1),Tt(O),At(u,[[window,"resize"],[window,"tw-reflow"]],O),{el:u,set:d=>{if(Array.isArray(d)&&d.length===4){let S=d.map(Number);if(S.some(g=>!Number.isFinite(g)))return;l=a(S),O(),lt()}},get:()=>l.slice()}}at("cubicbezier",Hs);function Ds(t,e){let n=t.components,{root:o,trigger:r,right:s}=te("tw-point",t.label??"Point"),i=h("span","tw-trigger-value"),a=h("div","tw-trigger-chip tw-point-preview"),l=h("div","tw-point-preview-dot");a.append(l),s.append(i,a);let b=h("div","tw-color-pop tw-point-pop"),u=h("div","tw-point-body");b.append(u);let c=t.pad!==!1&&n.length>=2,f=d=>{let S=Me(Math.abs(Number.isFinite(+d.value)?+d.value:0))[1],g=d.min??-S,L=d.max??S,X=10**Math.floor(Math.log10((L-g)/200));return{lo:g,hi:L,step:d.step??(X>0&&Number.isFinite(X)?X:1)}},y=n.map(f),E=y[0],p=y[1],w=E?.lo??-1,v=E?.hi??1,P=p?.lo??-1,$=p?.hi??1,N=(d,S,g)=>g>S?T((d-S)/(g-S),0,1):.5,R=null,K=null,q=null;if(c){R=h("div","tw-pad"),K=h("div","tw-pad-thumb");let d=kt("svg","tw-pad-line");d.setAttribute("viewBox","0 0 100 100"),d.setAttribute("preserveAspectRatio","none"),q=kt("line"),d.append(q);let S=N(0,P,$);q.setAttribute("x1",N(0,w,v)*100),q.setAttribute("y1",(t.invertY?S:1-S)*100),R.append(h("div","tw-pad-axis tw-pad-axis-x"),h("div","tw-pad-axis tw-pad-axis-y"),d,K),u.append(R)}let Y=h("div","tw-fields");u.append(Y);let U=()=>{D(),lt()},A=()=>e(ot()),O=n.map((d,S)=>{let g=Dt({label:d.label,value:d.value??0,step:y[S].step,min:d.min,max:d.max},()=>{U(),A()});return Y.append(g.el),g}),ot=()=>Object.fromEntries(n.map((d,S)=>[d.key,O[S].get()])),tt=(d,S)=>(+d).toFixed(Kt(S)),lt=()=>{i.textContent=n.map((d,S)=>tt(O[S].get(),y[S].step)).join(", ")},D=()=>{l.style.left="50%",l.style.top="50%"};if(c){let S=L=>`calc(${(L*100).toFixed(2)}% + ${((.5-L)*5).toFixed(2)}px)`;D=()=>{let L=N(O[0].get(),w,v),X=N(O[1].get(),P,$),H=t.invertY?X:1-X,F=L*100,W=H*100;K.style.left=F+"%",K.style.top=W+"%",l.style.left=S(L),l.style.top=S(H),q.setAttribute("x2",F),q.setAttribute("y2",W),R.setAttribute("aria-description",`${n[0].label??n[0].key} ${tt(O[0].get(),E.step)}, ${n[1].label??n[1].key} ${tt(O[1].get(),p.step)}`)},ke(R,L=>{let[X,H]=Le(L,R),F=t.invertY?H:1-H;O[0].set(w+X*(v-w)),O[1].set(P+F*($-P)),U(),A()}),R.tabIndex=0,R.setAttribute("role","group"),R.setAttribute("aria-label",`${t.label??"Point"} pad: ${n[0].label??n[0].key} and ${n[1].label??n[1].key}`),R.addEventListener("keydown",L=>{if(L.key==="Home"){L.preventDefault(),n.forEach((W,C)=>O[C].set(W.value??0)),U(),A();return}let X=L.key==="ArrowRight"?1:L.key==="ArrowLeft"?-1:0,H=L.key==="ArrowUp"?1:L.key==="ArrowDown"?-1:0;if(!X&&!H)return;L.preventDefault();let F=L.shiftKey?10:1;X&&O[0].set(T(O[0].get()+X*E.step*F,w,v)),H&&O[1].set(T(O[1].get()+(t.invertY?-H:H)*p.step*F,P,$)),U(),A()})}return o.append(b),Bt(o,r,b,{width:216,fallbackH:240,gap:6,onOpen:U}),U(),{el:o,set:d=>{d&&n.forEach((S,g)=>{d[S.key]!=null&&O[g].set(d[S.key])}),U()},get:ot}}at("point",Ds);var Is=Object.assign(Object.create(null),{sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:Math.atan2,sinh:Math.sinh,cosh:Math.cosh,tanh:Math.tanh,sqrt:Math.sqrt,cbrt:Math.cbrt,abs:Math.abs,exp:Math.exp,log:Math.log,ln:Math.log,log10:Math.log10,log2:Math.log2,floor:Math.floor,ceil:Math.ceil,round:Math.round,sign:Math.sign,trunc:Math.trunc,min:Math.min,max:Math.max,pow:Math.pow,hypot:Math.hypot,mod:(t,e)=>t%e,clamp:(t,e,n)=>Math.min(Math.max(t,e),n)}),pr=Object.assign(Object.create(null),{pi:Math.PI,e:Math.E,tau:Math.PI*2,phi:(1+Math.sqrt(5))/2});function so(t){if(typeof t!="string"||!t.trim()||t.length>512)return null;let e=t,n=[],o=/\d*\.?\d+(?:[eE][+-]?\d+)?/y,r=/[A-Za-z_]\w*/y,s=0;for(;s<e.length;){let p=e[s];if(p===" "||p===" "||p===`
|
|
4
|
+
`){s++;continue}if(p>="0"&&p<="9"||p==="."&&e[s+1]>="0"&&e[s+1]<="9"){o.lastIndex=s;let w=o.exec(e);if(!w||w.index!==s)return null;n.push({t:"num",v:parseFloat(w[0])}),s=o.lastIndex;continue}if(p>="A"&&p<="Z"||p>="a"&&p<="z"||p==="_"){r.lastIndex=s;let w=r.exec(e);n.push({t:"id",v:w[0]}),s=r.lastIndex;continue}if(p==="*"&&e[s+1]==="*"){n.push({t:"op",v:"^"}),s+=2;continue}if("+-*/%^".includes(p)){n.push({t:"op",v:p}),s++;continue}if(p==="("){n.push({t:"lp"}),s++;continue}if(p===")"){n.push({t:"rp"}),s++;continue}if(p===","){n.push({t:"comma"}),s++;continue}return null}if(!n.length)return null;let i=0,a=()=>n[i],l=p=>{let w=n[i];return!w||p&&w.t!==p?null:(i++,w)},b=()=>{let p=u();if(!p)return null;for(;a()&&a().t==="op"&&(a().v==="+"||a().v==="-");){let w=l("op").v,v=u();if(!v)return null;let P=p;p=w==="+"?$=>P($)+v($):$=>P($)-v($)}return p},u=()=>{let p=c();if(!p)return null;for(;a()&&a().t==="op"&&(a().v==="*"||a().v==="/"||a().v==="%");){let w=l("op").v,v=c();if(!v)return null;let P=p;p=w==="*"?$=>P($)*v($):w==="/"?$=>P($)/v($):$=>P($)%v($)}return p},c=()=>{if(a()&&a().t==="op"&&(a().v==="-"||a().v==="+")){let p=l("op").v,w=c();return w?p==="-"?v=>-w(v):w:null}return f()},f=()=>{let p=y();if(!p)return null;if(a()&&a().t==="op"&&a().v==="^"){l("op");let w=c();return w?v=>Math.pow(p(v),w(v)):null}return p},y=()=>{let p=a();if(!p)return null;if(p.t==="num")return l("num"),()=>p.v;if(p.t==="lp"){l("lp");let w=b();return!w||!l("rp")?null:w}if(p.t==="id"){l("id");let w=p.v.toLowerCase();if(a()&&a().t==="lp"){let v=Is[w];if(!v)return null;l("lp");let P=[];if(a()&&a().t!=="rp")do{let $=b();if(!$)return null;P.push($)}while(l("comma"));return l("rp")?$=>v(...P.map(N=>N($))):null}if(w==="x")return v=>v;if(w in pr){let v=pr[w];return()=>v}return null}return null},E=b();return E&&i===n.length?E:null}function js(t,e){let n=Number(t.xMin),o=Number(t.xMax);if(Number.isFinite(n)||(n=-10),Number.isFinite(o)||(o=10),o<n){let P=n;n=o,o=P}o===n&&(n-=1,o+=1);let r=Math.max(2,Math.min(4096,t.samples|0||256)),s=Number.isFinite(t.yMin)&&Number.isFinite(t.yMax)&&+t.yMax>+t.yMin,i=t.editable!==!1&&!t.fn,a=t.expr!=null?String(t.expr):"",l=typeof t.fn=="function"?t.fn:so(a),b=h("div","tw-plot");t.label&&b.append(st("div","tw-plot-label",t.label));let u=h("div","tw-plot-graph"),c=kt("svg","tw-plot-svg");c.setAttribute("preserveAspectRatio","none");let f=kt("line","tw-plot-axis"),y=kt("line","tw-plot-axis"),E=kt("path","tw-plot-curve");c.append(f,y,E),u.append(c),b.append(u);let p=null;if(i){let P=h("div","tw-plot-field");p=h("input","tw-plot-input"),p.type="text",p.value=a,p.spellcheck=!1,p.autocapitalize="off",p.autocomplete="off",Rt(p),p.setAttribute("aria-label",`${t.label||"Plot"} \u2014 expression in x`),p.setAttribute("aria-invalid","false"),P.append(st("span","tw-plot-fx","y ="),p),b.append(P)}let w=6,v=()=>{let P=typeof l=="function";b.classList.toggle("is-invalid",i&&!P),p&&p.setAttribute("aria-invalid",i&&!P?"true":"false");let $=u.getBoundingClientRect(),N=$.width,R=$.height;if(N<2)return;c.setAttribute("viewBox",`0 0 ${N} ${R}`);let K=[],q=1/0,Y=-1/0;if(P)for(let d=0;d<r;d++){let S=n+(o-n)*(d/(r-1)),g;try{g=l(S)}catch{g=NaN}K.push(g),Number.isFinite(g)&&(g<q&&(q=g),g>Y&&(Y=g))}let U=t.yMin,A=t.yMax;if(!s)if(!Number.isFinite(q)||q===Y){let d=Number.isFinite(q)?q:0;U=d-1,A=d+1}else{let d=(Y-q)*.12;U=q-d,A=Y+d}let O=d=>w+(d-n)/(o-n)*(N-2*w),ot=d=>R-w-(d-U)/(A-U)*(R-2*w),tt=(d,S,g,L,X,H)=>{d.style.display=H?"":"none",H&&(d.setAttribute("x1",S),d.setAttribute("y1",g),d.setAttribute("x2",L),d.setAttribute("y2",X))};tt(f,w,ot(0),N-w,ot(0),U<=0&&A>=0),tt(y,O(0),w,O(0),R-w,n<=0&&o>=0);let lt="",D=!1;if(P)for(let d=0;d<r;d++){let S=K[d];if(!Number.isFinite(S)){D=!1;continue}let g=O(n+(o-n)*(d/(r-1))),L=T(ot(S),-1e4,1e4);lt+=(D?"L":"M")+g.toFixed(1)+","+L.toFixed(1)+" ",D=!0}E.setAttribute("d",lt)};return i&&p.addEventListener("input",()=>{a=p.value,l=so(a),v(),e(a)}),Tt(v),At(b,[[window,"resize"],[window,"tw-reflow"]],v),{el:b,get:()=>a,set:P=>{P!=null&&(a=String(P),p&&(p.value=a),t.fn||(l=so(a)),v())}}}at("plot",js);var fr=Nt('<path class="tw-copy-back" d="m5.5 16.5-.7-.2q-1.5-.6-2.1-2.1-.2-.7-.2-2.7v-2c0-3.3 0-5 1-6s2.7-1 6-1h2c1.4 0 2 0 2.7.2q1.6.5 2.1 2.1l.2.7"/><path class="tw-copy-front" d="M7.5 14.5c0-3.3 0-5 1-6s2.7-1 6-1 5 0 6 1 1 2.7 1 6 0 5-1 6-2.7 1-6 1-5 0-6-1-1-2.7-1-6"/>',"tw-toolbar-btn__copy"),mr=Nt('<path d="m5 14 3.5 3.5L19 6.5"/>',"tw-toolbar-btn__check",2.4),br=Nt('<path d="M3 12a9 9 0 1 0 9-9 9 9 0 0 0-7.6 4.2M3.3 3l.2 2q0 2.2.6 2.7t2.7.2l2-.2"/>'),gr=Nt('<path d="m17 17 4 4m-2-10a8 8 0 0 0-16 0 8 8 0 0 0 16 0"/>'),io=t=>Nt('<path d="M18 9s-4.4 6-6 6-6-6-6-6"/>',t,2.5),hr=io("tw-chevron"),wr=Nt('<path d="M20.2 13.5q1.8.8 1.8 1.5 0 .8-2.7 2l-5 2.2Q13 20 12 20q-.7 0-2.4-.8l-4.9-2.3Q2 16 2 15t1.8-1.5"/><path class="tw-layer-top" d="M9.6 4.8Q11.3 4 12 4t2.4.8l4.9 2.3Q22 8 22 9c0 .7-.9 1.1-2.7 2l-5 2.2Q13 14 12 14q-.7 0-2.4-.8l-4.9-2.3Q2 10 2 9c0-.7.9-1.1 2.7-2z"/>'),yr=Nt('<path d="M18 6 6 18m12 0L6 6"/>',"",2.2),ao=Nt('<circle cx="12" cy="12" r="10"/><path d="M12 16v-4m-.25-3.75a.25.25 0 0 0 .5 0 .25.25 0 0 0-.5 0"/>');var Xe=(t,e,n)=>{let o=wt("tw-toolbar-btn"+(t?" "+t:""),e);return o.title=n,o.setAttribute("aria-label",n),o},En=(t,e,n)=>{let o=Xe("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${fr}${mr}</span>`,"Copy values");return o.addEventListener("click",async()=>{o.disabled||(await Xs(n())?(Bs(o),ee(`${e} values copied`,t)):ee("Copy failed",t))}),o},kn=t=>{let e=Xe("tw-toolbar-btn--reset",br,"Reset");return e.addEventListener("click",()=>{e.disabled||(lo(e),t())}),e},Bs=t=>{t.classList.add("is-copied"),clearTimeout(t._t),t._t=setTimeout(()=>t.classList.remove("is-copied"),1400)},lo=t=>{let e=t.querySelector("svg");t._spinSettle||(t._spinSettle=()=>{clearTimeout(t._t),t.classList.remove("is-spinning"),e.style.transition="none",e.style.setProperty("--tw-spin","0deg"),e.getBoundingClientRect(),e.style.transition=""},e.addEventListener("transitionend",o=>{o.propertyName==="transform"&&t.classList.contains("is-spinning")&&performance.now()-t._spinT>250&&t._spinSettle()})),t._spinT=performance.now(),e.style.setProperty("--tw-spin",`${(parseFloat(e.style.getPropertyValue("--tw-spin"))||0)-360}deg`),t.classList.add("is-spinning"),clearTimeout(t._t);let n=()=>{e.getAnimations&&e.getAnimations().length?t._t=setTimeout(n,250):t._spinSettle()};t._t=setTimeout(n,600)},Wt=null,vr=0;function ee(t,e){Wt||(Wt=h("div","tw-toast tw-portal"),Wt.setAttribute("role","status")),Wt.isConnected||document.body.appendChild(Wt),Wt.textContent=t,ae(Wt,e),Wt.classList.add("is-open"),clearTimeout(vr),vr=setTimeout(()=>Wt.classList.remove("is-open"),1600)}var Lt=null,Mn=0,xn=null,xr=t=>{t.key==="Escape"&&Ge()},Ge=t=>{t&&xn&&!t.contains(xn)||(clearTimeout(Mn),document.removeEventListener("keydown",xr),Lt&&Lt.classList.remove("is-open"))};function Vs(t,e){Lt||(Lt=h("div","tw-tip tw-portal"),Lt.setAttribute("role","tooltip")),Lt.isConnected||document.body.appendChild(Lt),clearTimeout(Mn),Lt.textContent=e,ae(Lt,t);let n=Lt.classList.contains("is-open");Lt.style.visibility="hidden",Lt.classList.add("is-open"),_n(t,Lt,{align:"center",prefer:"above",gap:8}),Lt.style.visibility="",document.addEventListener("keydown",xr),xn=t,n||requestAnimationFrame(function o(){if(Lt.classList.contains("is-open")){if(!xn.isConnected)return Ge();requestAnimationFrame(o)}})}function Mr(){Lt&&(clearTimeout(Mn),Mn=setTimeout(Ge,80))}var co=".tw-slider-label, .tw-row-label, .tw-select-label, .tw-trigger-label, .tw-radiogrid-label, .tw-field-label, .tw-folder-title, .tw-fps-label, .tw-plot-label";function Ae(t,e){let n=t.querySelector(co)||t;if(n===t&&t.classList.contains("tw-separator"))return;let o=n.closest("button"),r=o?h("span","tw-hint",ao):wt("tw-hint",ao),s=()=>Vs(r,e);if(o){r.setAttribute("aria-hidden","true");let i=o.getAttribute("aria-description");o.setAttribute("aria-description",i?`${i}. ${e}`:e)}else r.setAttribute("aria-label",e),r.addEventListener("focus",s),r.addEventListener("blur",Mr),r.addEventListener("keydown",i=>{(i.key==="Enter"||i.key===" ")&&i.stopPropagation()});r.addEventListener("pointerenter",s),r.addEventListener("pointerleave",Mr),r.addEventListener("pointerdown",i=>i.stopPropagation()),r.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation()}),n.appendChild(r)}async function Xs(t){try{return await navigator.clipboard.writeText(t),!0}catch{}let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.top="-9999px",document.body.appendChild(e),e.focus(),e.select();let n=!1;try{n=document.execCommand("copy")}catch{}return document.body.removeChild(e),n}function me(t,e,n=0){if(Ln(t))return null;let o=zs(t,e,n);return o&&e&&typeof e=="object"&&(typeof e.render=="function"&&(o.render=e.render),e.disabled!=null&&(o.disabled=e.disabled),e.hint!=null&&(o.hint=String(e.hint))),o}var fe=t=>t&&typeof t=="object",ne=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Ln=t=>t==="__proto__"||t==="constructor"||t==="prototype",oe=(t,e)=>t!==e&&!(fe(t)&&fe(e)&&JSON.stringify(t)===JSON.stringify(e)),Cn=(t,e,n)=>{t.set(n),t.set(e)},Er=t=>Array.isArray(t.options)&&{type:"radiogrid",options:t.options,value:t.value??qt(t.options[0]),cols:t.cols},Ar="#7c5cff",kr=(t,...e)=>{let n=(e.length?e:[0]).map(s=>Me(Number.isFinite(+s)?+s:0)),o=t.min??Math.min(...n.map(s=>s[0])),r=t.max??Math.max(...n.map(s=>s[1]));return{min:o,max:r,step:t.step??ve(o,r)}},Lr=(t,e)=>t.label==null?e:String(t.label),Cr={slider:t=>{let e=kr(t,t.value??t.min??0);return{value:t.value??e.min,...e,soft:t.soft}},number:t=>({value:t.value??0,min:t.min,max:t.max,step:t.step??1,soft:t.soft}),checkbox:t=>({value:!!t.value}),radiogrid:Er,segmented:Er,list:t=>Array.isArray(t.options)&&{options:t.options,value:t.value??qt(t.options[0])},color:t=>({value:t.value??Ar}),text:t=>({value:t.value??"",rows:t.rows,placeholder:t.placeholder}),interval:t=>{let e=kr(t,...Array.isArray(t.value)?t.value:[]);return{value:(Array.isArray(t.value)?t.value:[e.min,e.max]).map(Number),...e}},spring:t=>{let e=fe(t.value)?t.value:t,n={stiffness:e.stiffness??300,damping:e.damping??26,mass:e.mass??1};Number.isFinite(+e.visualDuration)&&(n.visualDuration=+e.visualDuration),Number.isFinite(+e.bounce)&&(n.bounce=+e.bounce);let o=t.mode??e.mode;return(o==="time"||o==="physics")&&(n.mode=o),{value:n}},cubicbezier:t=>({value:Array.isArray(t.value)&&t.value.length===4?t.value.map(Number):[.25,.1,.25,1]}),point:t=>{if(!Array.isArray(t.components)||!t.components.length)return!1;let e=new Set,n=t.components.map((o,r)=>{let s=String(o.key??((o.label?String(o.label).toLowerCase():"")||`c${r}`)),i=s,a=2;for(;e.has(i);)i=`${s}-${a++}`;return e.add(i),{...o,key:i}});return{components:n,pad:t.pad,invertY:t.invertY,value:Object.fromEntries(n.map(o=>[o.key,o.value??0]))}},gradient:t=>({value:t.value??t.stops??null}),image:t=>({value:t.value||""}),plot:t=>{let e=t.expr!=null?String(t.expr):typeof t.fn=="function"?"":"sin(x)";return{value:e,expr:e,fn:typeof t.fn=="function"?t.fn:null,xMin:t.xMin??t.min??-10,xMax:t.xMax??t.max??10,yMin:t.yMin,yMax:t.yMax,samples:t.samples,editable:t.editable}},fpsgraph:()=>({}),monitor:t=>({get:t.get,value:t.value,graph:t.graph,view:t.view,min:t.min,max:t.max,interval:t.interval,rows:t.rows,decimals:t.decimals}),buttongroup:t=>({buttons:t.buttons}),separator:()=>({}),tabs:(t,e)=>{if(!t.pages||typeof t.pages!="object"||!Object.keys(t.pages).length)return!1;let n=new Set;return{pages:Object.entries(t.pages).map(([o,r])=>{let s=o.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",i=s,a=2;for(;n.has(i);)i=`${s}-${a++}`;return n.add(i),{key:i,title:o.trim()?o:"Tab",children:Object.entries(r).map(([l,b])=>me(l,b,e+1)).filter(Boolean)}})}}},Gs=Object.assign(Object.create(null),{list:"options",radiogrid:"options",segmented:"options",point:"components",tabs:"pages"});function zs(t,e,n=0){if(n>64)return null;let o=qe(t),r=(s,i,a=o)=>({type:s,key:t,label:a,...i});if(fe(e)&&!Array.isArray(e)&&ne(Cr,e.type)){let s;try{s=Cr[e.type](e,n)}catch(i){return console.error(`[tweaks] malformed "${e.type}" schema value for "${t}" \u2014 control skipped:`,i),null}if(s)return r(String(e.type),s,Lr(e,o));if(ne(e,Gs[e.type]))return console.error(`[tweaks] malformed "${e.type}" schema value for "${t}" \u2014 control skipped`),null}if(Array.isArray(e)&&Array.isArray(e[0])&&e[0].length===2&&typeof e[0][0]=="number"){let s=Number.isFinite(+e[1])?+e[1]:+e[0][0],i=Number.isFinite(+e[2])?+e[2]:+e[0][1];return r("interval",{value:e[0].map(Number),min:s,max:i,step:e[3]??ve(s,i)})}if(Array.isArray(e)&&e.length<=4&&typeof e[0]=="number"){let s=e[0],[i,a]=Me(s),l=e.length>1?e[1]:i,b=e.length>2?e[2]:a;return r("slider",{value:s,min:l,max:b,step:e[3]??ve(l,b)})}if(typeof e=="number"){let[s,i]=Me(e);return r("slider",{value:e,min:s,max:i,step:ve(s,i)})}return typeof e=="boolean"?r("checkbox",{value:e}):Array.isArray(e)?r("list",{options:e,value:qt(e[0])}):fe(e)&&typeof e.action=="function"?r("button",{action:e.action},Lr(e,o)):fe(e)&&Array.isArray(e.options)?r("list",{options:e.options,value:e.value??qt(e.options[0])}):wo(e)?r("color",{value:e}):typeof e=="string"?r("text",{value:e}):fe(e)?r("folder",{children:Object.entries(e).filter(([s,i])=>!(s==="render"&&typeof i=="function")&&!((s==="disabled"||s==="hint")&&i!=null)).map(([s,i])=>me(s,i,n+1)).filter(Boolean)}):null}var Sn=new Set(["button","fpsgraph","monitor","buttongroup","separator"]),Sr={slider:t=>({value:pt(t.value),min:pt(t.min),max:pt(t.max),step:pt(t.step),soft:Tr(t.soft)}),checkbox:t=>t.options?{type:"radiogrid",options:ze(t.options),value:t.value,cols:pt(t.cols)}:{value:t.checked==="true"},radiogrid:t=>({options:ze(t.options),value:t.value,cols:pt(t.cols)}),list:t=>({options:ze(t.options),value:t.value}),color:t=>({value:t.value||Ar}),button:(t,e,n)=>({action:()=>ee(`${n} pressed`,e)}),buttongroup:(t,e)=>({buttons:ze(t.buttons).map(n=>({label:n,action:()=>ee(`${n} pressed`,e)}))}),separator:()=>({}),number:t=>({value:pt(t.value),min:pt(t.min),max:pt(t.max),step:pt(t.step)}),text:t=>({value:t.value??"",placeholder:t.placeholder,rows:pt(t.rows)}),image:t=>({value:t.value}),fpsgraph:t=>({label:t.label??"FPS"}),interval:t=>({value:t.value?t.value.split(",").map(Number):void 0,min:pt(t.min),max:pt(t.max),step:pt(t.step)}),spring:t=>({stiffness:pt(t.stiffness),damping:pt(t.damping),mass:pt(t.mass),visualDuration:pt(t.visualDuration),bounce:pt(t.bounce),mode:t.mode}),cubicbezier:t=>({value:t.value?t.value.split(",").map(Number):void 0}),point:t=>{let e=(t.value||"").split(",").map(n=>parseFloat(n));return{components:ze(t.components||"X,Y").map((n,o)=>({key:n.toLowerCase(),label:n,value:isNaN(e[o])?0:e[o],step:pt(t.step),min:pt(t.min),max:pt(t.max)})),pad:Tr(t.pad),invertY:t.invertY==="true"}},plot:t=>({expr:t.expr,xMin:pt(t.xmin),xMax:pt(t.xmax),yMin:pt(t.ymin),yMax:pt(t.ymax),samples:pt(t.samples),editable:t.editable!=="false"})},pt=t=>{if(t==null||t==="")return;let e=+t;return Number.isFinite(e)?e:void 0},Tr=t=>t==="true"||t==="",ze=t=>(t||"").split(",").map(e=>e.trim()).filter(Boolean),Or=t=>{let e=t.dataset,n=e.tw;if(!ne(Sr,n))return null;let o=e.label??qe(e.key||n),r=Sr[n](e,t,o);return me("v",{type:n,label:o,...r})};var uo={},Tn={},Ks=t=>Qt(t)||!uo[t]?null:Tn[t]||(Tn[t]=uo[t]().catch(e=>{throw delete Tn[t],console.error(`[tweaks] control chunk "${t}" failed to load:`,e),e})),po=(t,e=new Set)=>{for(let n of t)if(n&&(uo[n.type]&&e.add(n.type),n.children&&po(n.children,e),n.pages))for(let o of n.pages)po(o.children,e);return e},Oe=t=>{let e=[...po(t)].map(Ks).filter(Boolean);return e.length?Promise.all(e):null};var qs=3,Pr=32,Nr=200,Fr=8;function Ys(t,e){let n=t.label,{min:o,max:r,step:s}=Ye(t.min,t.max,t.step);t.soft||([o,r]=ye(o,r,s));let i=(r-o)/s<=6,a=Number.isFinite(+t.value)?+t.value:o,l=t.soft&&!i?a:T(a,o,r),b=0,u=Kt(s),c=h("div","tw-slider-wrap"),f=h("div","tw-slider"),y=h("div","tw-slider-hashmarks"),E=h("div","tw-slider-fill"),p=h("div","tw-slider-handle"),w=st("span","tw-slider-label",n),v=h("span","tw-slider-value");f.append(y,E,p,w,v),c.append(f),f.tabIndex=0,f.setAttribute("role","slider"),f.setAttribute("aria-label",n),f.setAttribute("aria-valuemin",String(o)),f.setAttribute("aria-valuemax",String(r));let P=k=>le(k,o,s),$=i?Array.from({length:Math.max(0,Math.round((r-o)/s)-1)},(k,J)=>(J+1)*s/(r-o)*100):[];for(let k of $){let J=h("div","tw-slider-hashmark");J.style.left=k+"%",y.append(J)}let N=()=>{let k=T((l-o)/(r-o||1)*100,0,100),J=b?` + ${b.toFixed(1)}px`:"",it=`${k}%${J}`;E.style.width=b?`calc(${it})`:k+"%",p.style.left=`max(5px, calc(${it} - 9px))`;let rt=P(l),dt=rt.toFixed(u);v.textContent=dt,f.setAttribute("aria-valuenow",String(rt)),f.setAttribute("aria-valuetext",dt);let Et=c.offsetWidth;if(Et){let xt=Math.max(5,k/100*Et+b-9);f.classList.toggle("is-dodge",We(w,v,xt,3))}};N();let R=null,K=1,q=null,Y=!0,U,A=null,O=null,ot=`width 0.34s ${Hn}`,tt=`left 0.34s ${Hn}, opacity 0.15s, transform 0.2s ${De}`,lt=.2,D=k=>{if(!R)return l;let J=c.offsetWidth||R.width,it=T((k-R.left)/K/J,0,1);return T(o+it*(r-o),o,r)},d=k=>{let J=0;k<R.left?J=-Fr*Math.sqrt(Math.min(Math.max(0,R.left-k-Pr)/Nr,1)):k>R.right&&(J=Fr*Math.sqrt(Math.min(Math.max(0,k-R.right-Pr)/Nr,1))),f.style.width=`calc(100% + ${Math.abs(J)}px)`,f.style.transform=J<0?`translateX(${J}px)`:""},S=(k,J=!0)=>{k=+k,Number.isFinite(k)&&(l=i?T(P(k),o,r):t.soft?k:T(k,o,r),N(),J&&e(P(l)))},g=Math.max(1,Math.round((r-o)/s)),L=.2,X=.3,H=520,F=27,W=k=>(k-o)/s,C=0,G=0,z=0,ct=!1,mt=null,Ft=l,Ot=0,yt=()=>{z&&cancelAnimationFrame(z),z=0,Ot=0},Ct=k=>{if(!f.isConnected){yt();return}let J=Ot?Math.min((k-Ot)/1e3,.05):1/60;Ot=k;let it=c.offsetWidth||R&&R.width||1,rt=W(T(Ft,o,r)),dt=T(Math.round(rt+L),0,g),Et=ct?dt+X*T(rt-dt,-.5,.5):dt;if(xe&&xe.matches)C=Et,G=0;else{let xt=J,It=1/240;for(;xt>1e-4;){let _t=Math.min(It,xt);xt-=_t;let re=H*(Et-C)-F*G;G+=re*_t,C+=G*_t,C<0&&(C=0,G=0),C>g&&(C=g,G=0)}}b=(C-dt)*s/(r-o||1)*it,l=T(o+dt*s,o,r),N(),dt!==mt&&(mt=dt,e(P(l))),!ct&&Math.abs(G)<.004&&Math.abs(C-dt)<.004?(C=dt,G=0,b=0,N(),yt(),f.classList.remove("is-active")):z=requestAnimationFrame(Ct)},ht=k=>{C=W(l),G=0,ct=!0,mt=Math.round(W(l)),Ft=D(k),z||(z=requestAnimationFrame(Ct))};f.addEventListener("pointerdown",k=>{if(!v.classList.contains("is-editing")&&!(k.button!==0||q)){k.preventDefault(),f.focus({focusVisible:!1}),O=k.pointerId;try{k.target.setPointerCapture(k.pointerId)}catch{}clearTimeout(U),f.style.transition="",q={x:k.clientX,y:k.clientY},Y=!0,f.classList.add("is-active"),R=c.getBoundingClientRect(),K=R.width/(c.offsetWidth||R.width),i?(E.style.transition="",p.style.transition="",ht(k.clientX)):(E.style.transition=ot,p.style.transition=tt,S(D(k.clientX)))}}),f.addEventListener("pointermove",k=>{if(!(!q||k.pointerId!==O)){if(k.buttons===0){vt();return}if(Y&&Math.hypot(k.clientX-q.x,k.clientY-q.y)>qs&&(Y=!1,f.classList.add("is-dragging"),i||(E.style.transition="",p.style.transition="")),!Y)if(d(k.clientX),i)Ft=D(k.clientX);else{let J;if(k.altKey){A||(A={x:k.clientX,v:l});let it=c.offsetWidth||R.width;J=T(A.v+(k.clientX-A.x)/it*(r-o)*lt,o,r)}else A=null,J=D(k.clientX);S(J)}k.clientX>=R.left&&k.clientX<=R.right&&(f.style.width="",f.style.transform="")}});let vt=k=>{!q||k&&k.pointerId!==O||(i?(ct=!1,f.classList.remove("is-dragging"),z||(z=requestAnimationFrame(Ct))):(U=setTimeout(()=>{E.style.transition="",p.style.transition=""},360),f.classList.remove("is-active","is-dragging")),f.style.transition=`width 0.35s ${De}, transform 0.35s ${De}`,f.style.width="",f.style.transform="",setTimeout(()=>{f.style.transition=""},360),q=null,A=null,O=null)};f.addEventListener("pointerup",vt),f.addEventListener("pointercancel",vt),f.addEventListener("lostpointercapture",vt),Ue(f,N),Tt(N),At(f,[[window,"resize"]],N),f.addEventListener("keydown",k=>{if(k.target!==f||q)return;let J=ce(k,l,s,o,r,(r-o)/10||s*10);J!=null&&(k.preventDefault(),i&&(yt(),b=0,f.classList.remove("is-active")),S(T(J,o,r)))});let j;v.addEventListener("mouseenter",()=>{j=setTimeout(()=>v.classList.add("is-editable"),800)}),v.addEventListener("mouseleave",()=>{clearTimeout(j),v.classList.contains("is-editing")||v.classList.remove("is-editable")}),v.addEventListener("pointerdown",k=>{k.pointerType&&k.pointerType!=="mouse"?(v.classList.add("is-editable"),k.stopPropagation()):v.classList.contains("is-editable")&&k.stopPropagation()});let V=()=>{if(v.classList.contains("is-editing"))return;let k=h("input","tw-slider-input");k.type="text",k.inputMode="decimal",Rt(k),k.value=P(l).toFixed(u),v.classList.add("is-editing"),v.replaceWith(k),k.focus(),k.select();let J=()=>{k.replaceWith(v),v.classList.remove("is-editing","is-editable")},it=()=>{let rt=parseFloat(k.value);isNaN(rt)||S(t.soft?rt:T(rt,o,r)),J()};k.addEventListener("pointerdown",rt=>rt.stopPropagation()),k.addEventListener("blur",it),k.addEventListener("keydown",rt=>{rt.key==="Enter"?(k.removeEventListener("blur",it),f.focus(),it()):rt.key==="Escape"&&(rt.stopPropagation(),k.removeEventListener("blur",it),f.focus(),J())})};return v.addEventListener("click",()=>{v.classList.contains("is-editable")&&V()}),f.addEventListener("keydown",k=>{k.key==="Enter"&&k.target===f&&!q&&(k.preventDefault(),V())}),{el:c,set:k=>S(k,!1),get:()=>P(l)}}function Ws(t,e){let n=h("div","tw-row"),o=en([{value:"off",label:"Off"},{value:"on",label:"On"}],t.value?"on":"off",r=>e(r==="on"),t.label);return n.append(st("span","tw-row-label",t.label),o.el),{el:n,set:r=>o.set(r?"on":"off"),get:()=>o.get()==="on"}}function Us(t,e){let n=t.options||[],o=Math.min(3,Math.max(2,t.cols||(n.length<=3?n.length:n.length===4?2:3))),r=h("div","tw-radiogrid"),s=h("div","tw-radiogrid-grid");s.style.setProperty("--tw-rg-cols",o),s.setAttribute("role","radiogroup"),s.setAttribute("aria-label",t.label);let i=t.value??qt(n[0]),a=n.map(u=>{let c=jn("tw-radiogrid-btn",u,f=>b(f));return s.append(c),c}),l=()=>In(a,i),b=(u,c=!0)=>{u!=null&&!a.some(f=>f._twVal===u)||(i=u,l(),c&&e(u))};return s.addEventListener("keydown",u=>{let c=tn(a,i);if(c<0)return;let f=Ie(u.key,c,a.length,o);f<0||(u.preventDefault(),f!==c&&(b(a[f]._twVal),a[f].focus()))}),l(),r.append(st("span","tw-radiogrid-label",t.label),s),{el:r,set:u=>b(u,!1),get:()=>i}}var Js=io("tw-select-chevron");function Zs(t,e){let n=t.value,o=t.options.map(y=>({value:qt(y),label:Pn(y)})),r=h("div","tw-select"),s=wt("tw-select-trigger");s.setAttribute("aria-haspopup","listbox"),s.setAttribute("aria-expanded","false");let i=h("span","tw-select-right"),a=h("span","tw-select-value");i.append(a),i.insertAdjacentHTML("beforeend",Js),s.append(st("span","tw-select-label",t.label),i);let l=h("div","tw-select-dropdown");l.setAttribute("role","listbox");let b=o.map(y=>{let E=wt("tw-select-option");return E.setAttribute("role","option"),E.textContent=y.label,E.dataset.value=y.value,E.addEventListener("click",()=>{c(y.value),f.close()}),l.append(E),E});r.append(s,l);let u=()=>{a.textContent=(o.find(y=>y.value===n)||{}).label??n,b.forEach(y=>{let E=y.dataset.value===String(n);y.dataset.selected=String(E),y.setAttribute("aria-selected",String(E))})},c=(y,E=!0)=>{y!=null&&!o.some(p=>p.value===y)||(n=y,u(),E&&e(y))},f=Bt(r,s,l,{width:"match",fallbackH:200,gap:4,onOpen:()=>(b.find(y=>y.dataset.value===String(n))||b[0])?.focus()});return s.addEventListener("keydown",y=>{!f.isOpen()&&(y.key==="ArrowDown"||y.key==="ArrowUp")&&(y.preventDefault(),f.open())}),l.addEventListener("keydown",y=>{let E=b.indexOf(document.activeElement),p=E;if(y.key==="ArrowDown")p=E<0?0:Math.min(b.length-1,E+1);else if(y.key==="ArrowUp")p=E<0?b.length-1:Math.max(0,E-1);else if(y.key==="Home")p=0;else if(y.key==="End")p=b.length-1;else return;y.preventDefault(),b[p]?.focus()}),u(),{el:r,set:y=>c(y,!1),get:()=>n}}function Qs(t){let e=st("button","tw-button",t.label);return e.addEventListener("click",()=>t.action&&t.action()),Yt(e)}function ti(t){let e=h("div","tw-row tw-buttongroup");t.label&&e.append(st("span","tw-row-label",t.label));let n=h("div","tw-buttongroup-btns"),o=Array.isArray(t.buttons)?t.buttons.map(r=>[r.label??"Button",r.action]):Object.entries(t.buttons||{});for(let[r,s]of o){let i=st("button","tw-buttongroup-btn",r);i.addEventListener("click",()=>typeof s=="function"&&s()),n.append(i)}return e.append(n),Yt(e)}var ei=()=>Yt(h("div","tw-separator"));function ni(t,e){let n=a=>a==null?"":typeof a=="object"?He(a):String(a),o=n(t.value),r=t.rows>0,s=h("div",r?"tw-row tw-row-multiline":"tw-row"),i=h(r?"textarea":"input",r?"tw-text tw-textarea":"tw-text");return r?i.rows=t.rows:i.type="text",i.value=o,Rt(i),t.placeholder&&(i.placeholder=t.placeholder),i.addEventListener("input",()=>{o=i.value,e(o)}),s.append(st("span","tw-row-label",t.label),i),{el:s,set:a=>{o=n(a),i.value=o},get:()=>o}}function Ke(t){let e=h("div","tw-folder"),n=wt("tw-folder-header");n.setAttribute("aria-expanded","true"),n.append(st("span","tw-folder-title",t.label)),n.insertAdjacentHTML("beforeend",hr);let o=h("div","tw-folder-body"),r=h("div","tw-controls");o.append(r),e.append(n,o);let s=i=>Ee(e,n,o,i);return n.addEventListener("click",()=>s(!e.classList.contains("is-collapsed"))),{el:e,body:r,setCollapsed:s}}function Pe(t,e){let n=Qt(t.type);if(!n)return null;try{return n(t,e)}catch(o){return console.error("[tweaks] control failed to build:",t&&t.type,o),null}}at("slider",Ys);at("checkbox",Ws);at("radiogrid",Us);at("list",Zs);at("button",Qs);at("buttongroup",ti);at("separator",ei);at("text",ni);at("folder",Ke);var Ne=null;function oi(t,e,n={}){let o=Object.entries(e).filter(([m])=>m!=="_last"||(console.warn('[tweaks] "_last" is reserved (the changed-key channel) \u2014 schema entry skipped'),!1)).map(([m,x])=>me(m,x)).filter(Boolean),r={},s=[],i=new Set,a=new Set,l=[],b=!1,u=!1,c=[],f=new Map,y=!1,E=-1,p=m=>{if(!b){if(y){console.warn("[tweaks] call ignored \u2014 the panel could not be built");return}u?m():c.push(m)}},w=null,v=function(m,x){return m==="_last"&&this===r?void 0:x===void 0?null:typeof x=="bigint"?String(x):x},P=!1,$=()=>{let m={};for(let x of s){let M=m;for(let I of x.path.slice(0,-1))M=M[I]||(M[I]={});M[x.key]=x.get()}return JSON.parse(JSON.stringify(m,v))},N=()=>{try{return JSON.parse(JSON.stringify(r,v))}catch(m){return P||(P=!0,console.warn("[tweaks] a value parked on params can't be serialised \u2014 snapshots carry the controls' values only:",m)),$()}},R=n.persist?`tw:${n.persist===!0?t:n.persist}`:null,K=R?`${R}:presets`:null,q=m=>{try{return JSON.parse(localStorage.getItem(m)||"null")}catch{return null}},Y=(m,x)=>{try{localStorage.setItem(m,JSON.stringify(x))}catch{}},U=R?(()=>{let m=0,x=()=>{m=0,Y(R,N())};return l.push(()=>{m&&(clearTimeout(m),x())}),()=>{clearTimeout(m),m=setTimeout(x,150)}})():()=>{},A=()=>{a.forEach(m=>{try{m(r,r._last)}catch(x){console.error("[tweaks] listener threw:",x)}}),b||U()},O=m=>typeof m=="function"||typeof m=="symbol"||typeof m=="bigint",ot=(m,x)=>{if(O(x))throw new TypeError(`a ${typeof x} is not a control value`);m.set(x),m.target[m.key]=m.get()},tt=m=>{Cn(m,m.raw,m.def),m.target[m.key]=m.get()},lt=!1,D=()=>{if(typeof n.onReset=="function"&&!lt){lt=!0;try{return n.onReset()}finally{lt=!1}}for(let m of s)try{tt(m)}catch(x){console.error(`[tweaks] resetting "${m.path.join(".")}" failed \u2014 control skipped:`,x)}r._last=void 0,A()},d=h("div","tw-panel");d.dataset.mode="inline",Nn(d);let S=h("div","tw-header"),g=wt("tw-header-toggle");g.setAttribute("aria-expanded","true"),g.append(st("span","tw-title",t));let L=h("div","tw-toolbar"),X=En(d,t,()=>JSON.stringify(N(),null,2)),H=kn(D),F=null;R&&(F=Xe("",wr,"Presets"),F.setAttribute("aria-haspopup","menu"),F.setAttribute("aria-expanded","false"),L.append(F));let W=!!n.filter&&(n.toolbar!==!1||(console.warn("[tweaks] opts.filter needs the toolbar (its search button lives there) \u2014 ignored alongside toolbar:false"),!1)),C=W?Xe("",gr,"Filter controls"):null,G=W?h("input","tw-search"):null;W&&(G.type="text",G.placeholder="Filter\u2026",G.spellcheck=!1,G.setAttribute("aria-label","Filter controls"),Rt(G),L.append(C)),L.append(X,H),S.append(g),W&&S.append(G),n.toolbar!==!1&&S.append(L);let z=[X,H,F,C].filter(Boolean);for(let m of z)m.disabled=!0;let ct=!1,mt=!1;S.addEventListener("click",m=>{mt&&(mt=!1,m.preventDefault(),m.stopPropagation())},!0),g.addEventListener("click",()=>{Ee(d,g,Ft,!d.classList.contains("is-collapsed")),d.dataset.mode==="floating"&&setTimeout(()=>{d.dataset.mode==="floating"&&d.isConnected&&(Et(),dt())},270)});let Ft=h("div","tw-body"),Ot=h("div","tw-controls");Ft.append(Ot),d.append(S,Ft);let yt=$n(n.theme);Je(d,yt),d._twTheme=yt;let Ct=n.draggable!==!1,ht=8,vt=28,j=()=>({maxX:Math.max(ht,window.innerWidth-d.offsetWidth-ht),maxY:Math.max(ht,window.innerHeight-d.offsetHeight-ht)}),V=R?`${R}:pos`:null,k=(Ct||n.floating)&&V?q(V):null,J=k||(typeof n.floating=="object"?n.floating:null)||{x:16,y:16},it=+J.x||16,rt=+J.y||16,dt=()=>{d.style.left=it+"px",d.style.top=rt+"px"},Et=()=>{let{maxX:m,maxY:x}=j();it=T(it,ht,m),rt=T(rt,ht,x)};(Ct||n.floating)&&(n.floating||k)&&(d.dataset.mode="floating",Et(),dt(),requestAnimationFrame(()=>{!b&&d.dataset.mode==="floating"&&d.isConnected&&(Et(),dt())}));let xt=m=>{tt(m),r._last=m.key,A()},It=(m,x)=>{let M=m.querySelector(".tw-slider-value")||m.querySelector(co)||m;M.classList.add("tw-resettable"),M.title="Double-click or hold to reset";let I=0,nt=0,B=0,et=!1,Z=()=>{I&&(clearTimeout(I),I=0,M.classList.remove("tw-reset-holding"))};M.addEventListener("pointerdown",_=>{_.stopPropagation(),et=!1,!(_.pointerType!=="touch"&&_.pointerType!=="pen")&&(nt=_.clientX,B=_.clientY,M.classList.add("tw-reset-holding"),I=setTimeout(()=>{I=0,M.classList.remove("tw-reset-holding","is-editable"),et=!0,xt(x)},500))}),M.addEventListener("pointermove",_=>{I&&Math.abs(_.clientX-nt)+Math.abs(_.clientY-B)>8&&Z()}),M.addEventListener("pointerup",Z),M.addEventListener("pointercancel",Z),M.addEventListener("pointerleave",Z),M.addEventListener("contextmenu",_=>{et&&_.preventDefault()}),M.addEventListener("click",_=>{et&&(_.preventDefault(),_.stopImmediatePropagation(),et=!1)},!0),M.addEventListener("dblclick",_=>{M===m&&_.target.closest&&_.target.closest("input, textarea")||(_.preventDefault(),_.stopPropagation(),xt(x))}),M.classList.contains("tw-slider-value")&&m.addEventListener("dblclick",_=>{let ut=_.target;!ut.classList||!ut.classList.contains("tw-slider-input")||(_.preventDefault(),_.stopPropagation(),ut.blur(),xt(x))}),m.addEventListener("keydown",_=>{!_.altKey||_.metaKey||_.ctrlKey||_.key!=="Backspace"&&_.key!=="Delete"||(_.preventDefault(),_.stopPropagation(),_.target.classList&&_.target.classList.contains("tw-slider-input")&&_.target.blur(),xt(x))})},_t=[],re=(m,x)=>{x.hint&&Ae(m,x.hint),(x.render||x.disabled!=null)&&_t.push({node:m,m:x})},Fe=[],_e=[],Gt=[],$t=[],be=m=>{typeof m.destroy=="function"&&l.push(m.destroy)},se=(m,x,M,I=[],nt=null)=>{for(let B of x){if(B.type==="tabs"){let _={};i.add(_),M[B.key]=_;let ut=Qt("tabs"),Q=ut&&ut(B);if(!Q)continue;$t.push({path:[...I,B.key],ctrl:Q,pageKeys:B.pages.map(ft=>ft.key)}),B.pages.forEach((ft,St)=>{let Ht={};i.add(Ht),_[ft.key]=Ht,se(Q.bodies[St],ft.children,Ht,[...I,B.key,ft.key])}),re(Q.el,B),m.append(Q.el);continue}if(B.type==="folder"){let _={};i.add(_),M[B.key]=_;let ut=Ke(B);Gt.push({path:[...I,B.key],el:ut.el,setCollapsed:ut.setCollapsed});let Q=W?{el:ut.el,label:B.label,body:ut.body}:null;Q&&_e.push(Q),se(ut.body,B.children,_,[...I,B.key],Q),re(ut.el,B),m.append(ut.el);continue}let et=!Sn.has(B.type),Z=Pe(B,et?_=>{oe(M[B.key],_)&&(M[B.key]=_,r._last=B.key,A())}:()=>{});if(Z){if(be(Z),et){let _=Z.get();ne(M,B.key)&&Z.set(M[B.key]),M[B.key]=Z.get();let ut={target:M,key:B.key,set:Z.set,get:Z.get,raw:B.value,def:_,path:[...I,B.key]};s.push(ut),It(Z.el,ut)}re(Z.el,B),W&&B.type!=="separator"&&Fe.push({el:Z.el,label:B.label,folder:nt}),m.append(Z.el)}}};if(W){let m=M=>{let I=M.trim().toLowerCase(),nt=!1,B=(et,Z)=>{!Z&&et.classList.contains("tw-filter-hidden")&&(nt=!0),et.classList.toggle("tw-filter-hidden",Z)};if(!I)Fe.forEach(et=>B(et.el,!1)),_e.forEach(et=>B(et.el,!1));else{for(let et of Fe){let Z=et.folder&&Ze(et.folder.label,I);B(et.el,!(Ze(et.label,I)||Z))}for(let et of _e.slice().reverse()){let Z=[...et.body.children].some(_=>!_.classList.contains("tw-filter-hidden"));B(et.el,!(Ze(et.label,I)||Z))}}nt&&Fn()},x=()=>{d.classList.remove("is-searching"),G.value="",m("")};C.addEventListener("click",()=>{C.disabled||(d.classList.toggle("is-searching")?(G.focus(),G.select()):x())}),G.addEventListener("input",()=>m(G.value)),G.addEventListener("keydown",M=>{M.key==="Escape"&&(x(),C.focus())})}let zt=(m,x)=>x.reduce((M,I)=>M?.[I],m),Ut=new Set(o.map(m=>m.key)),ge=(m,x=!0)=>{if(!(!m||typeof m!="object")){for(let M of s){let I=zt(m,M.path);if(I!==void 0)try{ot(M,I)}catch(nt){console.error(`[tweaks] restoring "${M.path.join(".")}" failed \u2014 value skipped:`,nt)}}for(let M of Object.keys(m))if(!Ut.has(M)&&M!=="_last"&&ne(r,M)&&!Ln(M)&&!O(m[M]))try{r[M]=m[M]}catch(I){console.error(`[tweaks] restoring "${M}" failed \u2014 value skipped:`,I)}r._last=void 0,x&&A()}},jt=()=>{let m=K?q(K):null;return Object.assign(Object.create(null),m&&typeof m=="object"?m:{})},Pt=m=>{let x=jt();x[m]=N(),Y(K,x)},Jt=m=>{let x=jt();x[m]&&ge(x[m])},he=m=>{let x=jt();delete x[m],Y(K,x)},ie=m=>m.map(x=>String(x).replace(/~/g,"~1").replace(/\./g,"~0")).join("."),Hr=()=>{let m={};if(Gt.length){let x={};for(let M of Gt)x[ie(M.path)]=M.el.classList.contains("is-collapsed");m.folders=x}if($t.length){let x={};for(let M of $t)x[ie(M.path)]=M.pageKeys[M.ctrl.active()]??null;m.tabs=x}return m},Dr=m=>{if(!(!m||typeof m!="object")){if(m.folders)for(let x of Gt){let M=m.folders[ie(x.path)];typeof M=="boolean"&&x.setCollapsed(M)}if(m.tabs)for(let x of $t){let M=x.pageKeys.indexOf(m.tabs[ie(x.path)]);M>=0&&M!==x.ctrl.active()&&x.ctrl.activate(M)}}};if(Ct||n.floating){if(Ct){d.dataset.draggable="true";let Q=h("span","tw-grabber");Q.setAttribute("aria-hidden","true"),S.prepend(Q)}let m=()=>{if(d.dataset.mode==="floating")return;let Q=d.getBoundingClientRect();if(it=Q.left,rt=Q.top,d.parentNode&&(w=h("span","tw-lift-slot"),w.style.width=Q.width+"px",w.style.height=Q.height+"px",w.setAttribute("aria-hidden","true"),d.before(w)),Rn(d,d),document.body.appendChild(d),d.dataset.mode="floating",dt(),w&&typeof MutationObserver=="function"){let ft=new MutationObserver(()=>{w&&!w.isConnected&&(ft.disconnect(),w=null,d.remove())});ft.observe(document.documentElement,{childList:!0,subtree:!0}),l.push(()=>ft.disconnect())}},x=()=>{Ne&&Ne!==d&&(Ne.style.zIndex=""),d.style.zIndex="99991",Ne=d},M=null,I=0,nt=0,B=0,et=0,Z=Q=>{for(let[ft,St]of[["pointermove",_],["pointerup",ut],["pointercancel",ut]])Q?document.addEventListener(ft,St,!0):document.removeEventListener(ft,St,!0)};Ct&&S.addEventListener("pointerdown",Q=>{if(!(Q.button!==0||M!==null||Q.target.closest(".tw-toolbar, input, textarea, select"))&&(M=Q.pointerId,I=Q.clientX,nt=Q.clientY,ct=!1,Z(!0),d.classList.add("is-grabbing"),d.style.transition)){let ft=getComputedStyle(d);it=parseFloat(ft.left)||it,rt=parseFloat(ft.top)||rt,d.style.transition="",dt()}});let _=Q=>{if(Q.pointerId!==M)return;if(Q.buttons===0){ut(Q);return}let ft=Q.clientX-I,St=Q.clientY-nt;if(!ct){if(Math.abs(ft)+Math.abs(St)<4)return;ct=!0,m(),x(),B=it,et=rt;try{S.setPointerCapture(M)}catch{}d.classList.add("is-dragging")}let{maxX:Ht,maxY:bt}=j();it=T(B+ft,ht,Ht),rt=T(et+St,ht,bt),dt()},ut=Q=>{if(Q.pointerId===M){try{S.releasePointerCapture(M)}catch{}if(M=null,Z(!1),mt=ct,mt&&setTimeout(()=>{mt=!1},0),ct){let{maxX:ft,maxY:St}=j();it<=ht+vt?it=ht:it>=ft-vt&&(it=ft),rt<=ht+vt?rt=ht:rt>=St-vt&&(rt=St),xe.matches||(d.style.transition="left 0.32s var(--tw-ease-spring), top 0.32s var(--tw-ease-spring)",setTimeout(()=>{d.style.transition=""},340)),dt(),V&&Y(V,{x:it,y:rt})}d.classList.remove("is-dragging","is-grabbing")}};S.addEventListener("lostpointercapture",ut),l.push(()=>Z(!1))}let Ir=()=>{(Ct||n.floating)&&(d.dataset.mode==="floating"&&(Et(),dt()),l.push(At(d,[[window,"resize"]],()=>{d.dataset.mode==="floating"&&(Et(),dt())})))};if(F){let m=h("div","tw-presets-menu"),x=h("div","tw-presets-save"),M=h("input","tw-presets-input");M.type="text",M.placeholder="Preset name\u2026",M.spellcheck=!1,M.setAttribute("aria-label","New preset name"),Rt(M);let I=st("button","tw-presets-savebtn","Save");x.append(M,I);let nt=h("div","tw-presets-list");m.append(x,nt);let B=()=>{let _=jt(),ut=Object.keys(_);if(nt.replaceChildren(),!ut.length)return nt.append(st("div","tw-presets-empty","No presets yet"));for(let Q of ut){let ft=h("div","tw-presets-row"),St=st("button","tw-presets-load",Q);St.addEventListener("click",()=>{Jt(Q),Z.close(),ee(`Loaded \u201C${Q}\u201D`,d)});let Ht=wt("tw-presets-del",yr);Ht.setAttribute("aria-label",`Delete preset ${Q}`),Ht.addEventListener("click",bt=>{bt.stopPropagation(),he(Q),B()}),ft.append(St,Ht),nt.append(ft)}},et=()=>{let _=M.value.trim();if(!_){M.focus();return}Pt(_),M.value="",B(),ee(`Saved \u201C${_}\u201D`,d)},Z=Bt(F,F,m,{width:208,fallbackH:160,gap:6,align:"end",onOpen:()=>{B(),M.focus()}});I.addEventListener("click",et),M.addEventListener("keydown",_=>{_.key==="Enter"&&et()})}if(n.onEditStart||n.onEditEnd){let m=".tw-slider, .tw-num-grab, .tw-pad, .tw-wg-area, .tw-wg-hue, .tw-wg-alpha, .tw-bezier-handle, .tw-gradient-bar, .tw-gradient-stop",x=!1,M=()=>{document.removeEventListener("pointerup",M,!0),document.removeEventListener("pointercancel",M,!0),x&&(x=!1,n.onEditEnd&&n.onEditEnd())},I=nt=>{x||!nt.target.closest(m)||(x=!0,n.onEditStart&&n.onEditStart(),document.addEventListener("pointerup",M,!0),document.addEventListener("pointercancel",M,!0))};d.addEventListener("pointerdown",I),d._twEditPointer=I,l.push(M)}let $e=n.undo?(()=>{let x=[],M=0,I=!1,nt=0,B=()=>{nt=0;let bt=N();JSON.stringify(bt)!==JSON.stringify(x[M])&&(x=x.slice(0,M+1),x.push(bt),x.length>200&&(x=x.slice(x.length-200)),M=x.length-1)},et=()=>{I||(clearTimeout(nt),nt=setTimeout(B,350))},Z=()=>{nt&&(clearTimeout(nt),B())};a.add(et);let _=bt=>{I=!0,ge(x[bt]),I=!1,M=bt},ut=()=>{Z(),M>0&&_(M-1)},Q=()=>{Z(),M<x.length-1&&_(M+1)},ft=()=>d.matches(":hover")||d.contains(document.activeElement),St=bt=>!!(bt&&bt.matches&&(bt.matches("input, textarea")||bt.isContentEditable)),Ht=bt=>{if(!ft()||!(bt.metaKey||bt.ctrlKey)||St(bt.target))return;let ho=bt.key.toLowerCase();ho==="z"?(bt.preventDefault(),bt.shiftKey?Q():ut()):ho==="y"&&(bt.preventDefault(),Q())};return{undo:ut,redo:Q,arm:()=>{x=[N()],M=0,l.push(At(d,[[document,"keydown"]],Ht))}}})():null,mo=()=>{if(!b){if(E=l.length,se(Ot,o,r),_t.length){let m=new Map;for(let I of s)m.has(I.key)||m.set(I.key,I);let x=I=>{let nt=m.get(I);return nt?nt.target[nt.key]:r[I]},M=()=>{let I=!1;for(let{node:nt,m:B}of _t)try{if(B.render){let et=!B.render(x);!et&&nt.classList.contains("tw-cond-hidden")&&(I=!0),nt.classList.toggle("tw-cond-hidden",et)}if(B.disabled!=null){let et=typeof B.disabled=="function"?B.disabled(x):B.disabled;Qe(nt,!!et)}}catch{}I&&Fn()};a.add(M),M()}if(R&&ge(q(R)),!b){$e?.arm(),Ir(),u=!0;for(let m of c.splice(0)){if(b)break;try{m()}catch(x){console.error("[tweaks] a call queued before ready failed:",x)}}f.clear();for(let m of z)m.disabled=!1}}},bo=(m,x)=>{if(String(m).split(".").some(Ln))return console.warn(`[tweaks] set("${m}") ignored \u2014 reserved key`),!1;let M=String(m).split("."),I;if(M.length>1){let Z=r;for(let _=0;_<M.length-1&&Z;_++)Z=Z[M[_]],i.has(Z)||(Z=null);if(I=Z&&s.find(_=>_.target===Z&&_.key===M[M.length-1]),!I)return console.warn(`[tweaks] set("${m}") \u2014 no control at that path`),!1}else{let Z=s.filter(ut=>ut.key===m),_=Z.find(ut=>ut.target===r);if(!_&&Z.length>1)return console.warn(`[tweaks] set("${m}") is ambiguous \u2014 ${Z.length} controls share that key; use a dotted path (e.g. "${Z[0].path.join(".")}")`),!1;I=_||Z[0]}let nt=I?I.target:r,B=I?I.key:m,et=nt[B];if(I&&O(x))return console.warn(`[tweaks] set("${m}") ignored \u2014 a ${typeof x} is not a control value`),!1;if(I)try{ot(I,x)}catch(Z){return console.error(`[tweaks] set("${m}") failed \u2014 value skipped:`,Z),!1}else{if(i.has(r[m]))return console.warn(`[tweaks] set("${m}") ignored \u2014 it's a folder/tabs group; set its children instead`),!1;r[m]=x}return oe(et,nt[B])?(r._last=B,!0):!1},we={el:d,params:r,on(m){return b?()=>{}:(a.add(m),()=>a.delete(m))},set(m,x){let M=String(m);p(()=>{bo(M,x)&&A()})},setMany(m){if(m==null||typeof m!="object")return;let x=Object.entries(m);p(()=>{let M=!1;for(let[I,nt]of x)try{bo(I,nt)&&(M=!0)}catch(B){console.error(`[tweaks] setMany("${I}") failed \u2014 key skipped:`,B)}M&&A()})},reset(){u&&!b&&lo(H),p(D)},toJSON(){return b?{values:{},ui:{}}:{values:N(),ui:Hr()}},fromJSON(m){if(!m||typeof m!="object")return;let x=m.values&&typeof m.values=="object"?{...m.values}:m.values,M=m.ui&&typeof m.ui=="object"?{...m.ui}:m.ui;p(()=>{x&&ge(x),Dr(M)})},setTheme(m){if(!b){if(yt)for(let x in yt)d.style.removeProperty(x);yt=$n(m),d._twTheme=yt,Je(d,yt),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:m=>b||y||!K||!m?!1:(u||f.set(String(m),"save"),p(()=>Pt(m)),!0),loadPreset:m=>{let x=f.get(String(m));return b||y||x==="delete"||!(x==="save"||jt()[m])?!1:(p(()=>Jt(m)),!0)},deletePreset:m=>{K&&(u||f.set(String(m),"delete"),p(()=>he(m)))},presets:()=>b?[]:Object.keys(jt()),undo:()=>{$e&&p($e.undo)},redo:()=>{$e&&p($e.redo)},destroy(){if(!b){b=!0,yo(d),Ge(d);for(let m of l.splice(0))try{m()}catch{}a.clear(),w&&(w.remove(),w=null),Ne===d&&(Ne=null),d.dataset.twDestroyed="",d.remove()}}},go=Oe(o);if(go){let m=x=>{if(y=!0,c.length=0,E>=0)for(let M of l.splice(E))try{M()}catch{}for(let M of Ot.children)M.dataset.twDestroyed="";throw a.clear(),s.length=0,Ot.replaceChildren(),b||console.warn(`[tweaks] "${t}": the panel could not be built \u2014 ${E>=0?"the build threw":"its lazy controls failed to load"}; the API is inert`),x};we.ready=d.ready=go.then(mo).then(()=>we,m),we.ready.catch(()=>{})}else mo(),we.ready=d.ready=Promise.resolve(we);return we}var ri=(t,e)=>{t.dataset.value=e==null?"":Array.isArray(e)?e.join(","):typeof e=="object"?Object.values(e).join(","):String(e)},si=(t,e,n)=>{ri(t,n),t.dispatchEvent(new CustomEvent("tw:change",{bubbles:!0,detail:{key:e,value:n}}))},fo=(t,e)=>[...typeof t.matches=="function"&&t.matches(e)?[t]:[],...t.querySelectorAll(e)];async function _r(t=document){fo(t,'.tw-panel[data-mode="inline"]:not([data-tw-panel-bound])').forEach(o=>{let r=o.querySelector(":scope > .tw-header"),s=o.querySelector(":scope > .tw-controls");if(!r||!s)return;o.setAttribute("data-tw-panel-bound","");let i=h("div","tw-body");o.insertBefore(i,s),i.append(s);let a=r.querySelector(".tw-header-toggle"),l=r.querySelector(".tw-title");if(!a&&l&&(a=wt("tw-header-toggle"),l.replaceWith(a),a.append(l)),!!a&&(a.setAttribute("aria-expanded","true"),a.addEventListener("click",()=>Ee(o,a,i,!o.classList.contains("is-collapsed"))),!r.querySelector(".tw-toolbar"))){let b=l&&l.textContent||"Panel",u=()=>[...o.querySelectorAll("[data-tw]")].map(E=>E._tw).filter(E=>E&&E.ctrl.get()!==void 0),c=()=>{let E=Object.create(null);for(let p of u()){let w=p.key,v=2;for(;ne(E,w);)w=`${p.key}-${v++}`;E[w]=p.ctrl.get()}return JSON.stringify(E,null,2)},f=()=>{for(let E of u())E.reset()},y=h("div","tw-toolbar");y.append(En(o,b,c),kn(f)),r.append(y)}}),fo(t,'[data-tw="folder"]:not([data-tw-bound])').forEach(o=>{o.setAttribute("data-tw-bound","");let r=Ke({label:o.dataset.label||"Folder"});[...o.children].forEach(s=>r.body.append(s)),o.append(r.el)});let e=fo(t,"[data-tw]:not([data-tw-bound])").map(o=>({host:o,meta:Or(o)})).filter(o=>o.meta);e.forEach(({host:o})=>o.setAttribute("data-tw-bound",""));let n=Oe(e.map(o=>o.meta));n&&await n.catch(()=>{});for(let{host:o,meta:r}of e){let s=o.dataset.key||r.label,i,a=c=>{oe(i,c)&&(i=c,si(o,s,c))},l=Pe(r,a);if(!l)continue;o.closest(".tw-panel, .tw-portal")||o.classList.add("tw-portal"),o.append(l.el),o.dataset.hint&&Ae(l.el,o.dataset.hint);let b=l.get();i=b;let u={...l,set:c=>{l.set(c),a(l.get())}};o._tw={ctrl:u,raw:r.value,def:b,key:s,host:o,reset:()=>{Cn(l,r.value,b),a(l.get())}}}}if(typeof document<"u"){let t=()=>_r(document);document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}var $r=t=>h("div",`${t} tw-standalone tw-portal`),Rr=(t,e,n)=>{let o=Oe(t);if(!o)return e(),Promise.resolve(n);let r=o.then(e).then(()=>n);return r.catch(()=>{}),r};function ii(t,e,n={}){let o=n.key??"value",r=me(o,e);if(!r||r.type==="folder"||r.type==="tabs")throw new TypeError(`[tweaks] mountControl: "${o}" is not a single-control schema value`);n.label!=null&&(r.label=String(n.label));let s=!Sn.has(r.type),i=$r("tw-control");t.append(i);let a=null,l=!1,b=r.value,u,c=!1,f=p=>{oe(b,p)&&(b=p,n.onChange&&n.onChange(p,o))},y=()=>{if(l||(a=Pe(r,s?f:()=>{}),!a))return;r.hint&&Ae(a.el,r.hint);let p=()=>{};try{r.render&&!r.render(p)&&a.el.classList.add("tw-cond-hidden")}catch{}try{(typeof r.disabled=="function"?r.disabled(p):r.disabled)&&Qe(a.el,!0)}catch{}i.append(a.el),s&&(b=a.get(),c&&(a.set(u),f(a.get())))},E={el:i,set:p=>{l||!s||(a?(a.set(p),f(a.get())):(u=p,c=!0))},get:()=>s?a?a.get():c?u:r.value:void 0,destroy:()=>{l=!0,a&&typeof a.destroy=="function"&&a.destroy(),i.dataset.twDestroyed="",i.remove()},ready:null};return E.ready=Rr([r],y,E),E}function ai(t={}){let e=$r("tw-color-picker"),n=null,o=!1,r=t.value,s,i=!1,a=null,l=c=>{oe(r,c)&&(r=c,t.onChange&&t.onChange(c))},b=()=>{if(o)return;let c=Qt("colorpicker");c&&(n=c({value:t.value,mode:t.mode},l),r=n.get(),e.append(n.el),a&&n.setMode(a),i&&(n.set(s),l(n.get())),Tt(n.reflow))},u={el:e,set:c=>{o||(n?(n.set(c),l(n.get())):(s=c,i=!0))},get:()=>n?n.get():i?s:t.value,mode:()=>n?n.mode():a||t.mode||"oklch",setMode:c=>{n?n.setMode(c):a=c},reflow:()=>{n&&n.reflow()},destroy:()=>{o=!0,e.remove()},ready:null};return u.ready=Rr([{type:"color"}],b,u),u}export{ai as createColorPicker,_r as enhance,ii as mountControl,oi as tweaks};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
1
|
+
export { tweaks } from "./panel.js";
|
|
2
|
+
export { enhance } from "./enhance.js";
|
|
3
|
+
export { mountControl, createColorPicker } from "./standalone.js";
|
|
4
|
+
export type * from "./types.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function enhance(root?: Document | Element): Promise<void>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { SchemaValue, MountOptions, MountedControl, ColorPickerOptions, ColorPicker } from "./types.js";
|
|
2
|
+
export declare function mountControl(host: Element, value: SchemaValue, opts?: MountOptions): MountedControl;
|
|
3
|
+
export declare function createColorPicker(opts?: ColorPickerOptions): ColorPicker;
|