tweakit 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/tweaks/bezier-WUBSS72H.js +1 -0
- package/dist/tweaks/chunk-DPJ7YRTN.js +1 -0
- package/dist/tweaks/chunk-GC5PWSSX.js +1 -0
- package/dist/tweaks/colour-ZTCDZ2NN.js +1 -0
- package/dist/tweaks/core.js +1 -1
- package/dist/tweaks/gradient-54DF4XNE.js +1 -0
- package/dist/tweaks/image-IR5QKXT4.js +1 -0
- package/dist/tweaks/interval-KXOP2WEL.js +1 -0
- package/dist/tweaks/monitor-5K5VMRAL.js +2 -0
- package/dist/tweaks/plot-3WWIZG7H.js +2 -0
- package/dist/tweaks/point-RPJKP5YR.js +1 -0
- package/dist/tweaks/spring-TPWZKO7B.js +1 -0
- package/dist/tweaks/tabs-AVAHPF5A.js +1 -0
- package/dist/tweaks.css +1 -1
- package/dist/tweaks.css.d.ts +3 -0
- package/dist/tweaks.js +4 -3
- package/dist/types/tweaks/core.d.ts +4 -4
- package/dist/types/tweaks/enhance.d.ts +1 -0
- package/dist/types/tweaks/panel.d.ts +2 -0
- package/dist/types/tweaks/standalone.d.ts +3 -0
- package/dist/types/tweaks/types.d.ts +126 -2
- package/package.json +16 -8
- package/dist/tweaks/bezier-ZSQNFANZ.js +0 -1
- package/dist/tweaks/chunk-EVLD7DUH.js +0 -1
- package/dist/tweaks/chunk-GJESM23Q.js +0 -1
- package/dist/tweaks/colour-W46T6NIC.js +0 -1
- package/dist/tweaks/gradient-YEKTFEP4.js +0 -1
- package/dist/tweaks/image-VKNBVMVK.js +0 -1
- package/dist/tweaks/interval-7OUK7M7J.js +0 -1
- package/dist/tweaks/monitor-CY7CABK6.js +0 -2
- package/dist/tweaks/plot-X5IZM3QU.js +0 -2
- package/dist/tweaks/point-23BHLSGI.js +0 -1
- package/dist/tweaks/spring-Z2SKXUVV.js +0 -1
- package/dist/tweaks/tabs-CGHJ2VS2.js +0 -1
- package/dist/types/tweaks/controls/bezier.d.ts +0 -1
- package/dist/types/tweaks/controls/colour.d.ts +0 -14
- package/dist/types/tweaks/controls/gradient.d.ts +0 -1
- package/dist/types/tweaks/controls/image.d.ts +0 -1
- package/dist/types/tweaks/controls/interval.d.ts +0 -1
- package/dist/types/tweaks/controls/monitor.d.ts +0 -1
- package/dist/types/tweaks/controls/plot.d.ts +0 -1
- package/dist/types/tweaks/controls/point.d.ts +0 -1
- package/dist/types/tweaks/controls/spring.d.ts +0 -1
- package/dist/types/tweaks/controls/tabs.d.ts +0 -1
- package/dist/types/tweaks/shared.d.ts +0 -77
- package/dist/types/tweaks/single.d.ts +0 -12
- package/dist/types/wide-gamut.d.ts +0 -121
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Tweakit
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/tweakit)
|
|
4
|
+
|
|
3
5
|
A dependency-free, code-split, real-time **parameter panel**. Hand it a plain schema and
|
|
4
6
|
it builds a live control for each value — sliders, toggles, dropdowns, a wide-gamut OKLCH
|
|
5
7
|
color picker, gradient and cubic-bézier editors, a spring tuner, monitors, a 2D point pad,
|
|
@@ -7,6 +9,12 @@ and more.
|
|
|
7
9
|
|
|
8
10
|
**[Docs & live examples →](https://ryankiley.github.io/tweakit/)**
|
|
9
11
|
|
|
12
|
+
## Install
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
npm install tweakit
|
|
16
|
+
```
|
|
17
|
+
|
|
10
18
|
## Use
|
|
11
19
|
|
|
12
20
|
```js
|
|
@@ -35,6 +43,9 @@ npm run build
|
|
|
35
43
|
npm test
|
|
36
44
|
```
|
|
37
45
|
|
|
46
|
+
CI runs Node 22. The build works on Node 20+, but the test suite runs under jsdom, which
|
|
47
|
+
needs Node 22.22, 24.15 or newer.
|
|
48
|
+
|
|
38
49
|
Contributions welcome — see [CONTRIBUTING.md](CONTRIBUTING.md); report security issues per
|
|
39
50
|
[SECURITY.md](SECURITY.md).
|
|
40
51
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as q,Z as J,aa as Q,b as A,o as M,p as d,q as N,r as I,v as K,w as U}from"./chunk-GC5PWSSX.js";function ee(v,$){let R=[.25,.1,.25,1],b=-.25,w=1.25,H=w-b,o=8,Y=e=>e.map((n,i)=>A(n,i%2?b:0,i%2?w:1)),t=Array.isArray(v.value)&&v.value.length===4?v.value.map(Number):R.slice();t.some(e=>!Number.isFinite(e))&&(t=R.slice()),t=Y(t);let Z=t.slice(),E=M("div","tw-bezier");v.label&&E.append(I("div","tw-bezier-label",v.label));let f=M("div","tw-bezier-graph"),k=d("svg","tw-bezier-svg");k.setAttribute("preserveAspectRatio","none");let G=d("line","tw-bezier-guide"),P=d("line","tw-bezier-guide"),X=d("line","tw-bezier-diag"),j=d("line","tw-bezier-ctl"),O=d("line","tw-bezier-ctl"),S=d("path","tw-bezier-curve");k.append(G,P,X,j,O,S);let g=N("tw-bezier-handle");g.setAttribute("aria-label","Control point 1");let x=N("tw-bezier-handle");x.setAttribute("aria-label","Control point 2"),f.append(k,g,x);let W=M("div","tw-fields tw-bezier-fields");E.append(f,W);let h=0,C=0,F=e=>o+e*(h-2*o),D=e=>C-o-(e-b)/H*(C-2*o),z=(e,n,i,m,a)=>{e.setAttribute("x1",n),e.setAttribute("y1",i),e.setAttribute("x2",m),e.setAttribute("y2",a)},y=()=>{if(g.setAttribute("aria-label",`Control point 1, x ${t[0]}, y ${t[1]}`),x.setAttribute("aria-label",`Control point 2, x ${t[2]}, y ${t[3]}`),h=f.offsetWidth,C=f.offsetHeight,h<2)return;k.setAttribute("viewBox",`0 0 ${h} ${C}`);let[e,n,i,m]=t,a=F(0),c=D(0),r=F(1),l=D(1),u=F(e),p=D(n),s=F(i),B=D(m);z(G,o,c,h-o,c),z(P,o,l,h-o,l),z(X,a,c,r,l),z(j,a,c,u,p),z(O,r,l,s,B),S.setAttribute("d",`M${a},${c} C${u},${p} ${s},${B} ${r},${l}`),g.style.left=u+"px",g.style.top=p+"px",x.style.left=s+"px",x.style.top=B+"px"},T=[{label:"X1",i:0,lo:0,hi:1},{label:"Y1",i:1,lo:b,hi:w},{label:"X2",i:2,lo:0,hi:1},{label:"Y2",i:3,lo:b,hi:w}],_=T.map(e=>{let n=J({label:e.label,value:t[e.i],step:.01,min:e.lo,max:e.hi},i=>{t[e.i]=i,y(),$(t.slice())});return W.append(n.el),n}),L=()=>_.forEach((e,n)=>e.set(t[T[n].i])),V=(e,n)=>{let i=null,m=0,a=0,c=1;q(e,{onDown:r=>{r.preventDefault(),i=f.getBoundingClientRect(),m=f.offsetWidth||i.width,a=f.offsetHeight||i.height,c=i.width/m,e.classList.add("is-dragging"),e.focus({focusVisible:!1})},onMove:r=>{let l=(r.clientX-i.left)/c,u=(r.clientY-i.top)/c,p=A((l-o)/(m-2*o),0,1),s=A(b+(a-o-u)/(a-2*o)*H,b,w);t[n*2]=+p.toFixed(2),t[n*2+1]=+s.toFixed(2),y(),L(),$(t.slice())},onEnd:()=>{i=null,e.classList.remove("is-dragging")}}),e.addEventListener("keydown",r=>{if(r.key==="Escape")return e.blur();if(r.key==="Home"){r.preventDefault(),t=Z.slice(),y(),L(),$(t.slice());return}let l=r.key==="ArrowRight"?1:r.key==="ArrowLeft"?-1:0,u=r.key==="ArrowUp"?1:r.key==="ArrowDown"?-1:0;if(!l&&!u)return;r.preventDefault();let p=r.shiftKey?.1:.01,s=n*2;l&&(t[s]=+A(t[s]+l*p,0,1).toFixed(2)),u&&(t[s+1]=+A(t[s+1]+u*p,b,w).toFixed(2)),y(),L(),$(t.slice())})};return V(g,0),V(x,1),K(y),U(E,[[window,"resize"],[window,"tw-reflow"]],y),{el:E,set:e=>{if(Array.isArray(e)&&e.length===4){let n=e.map(Number);if(n.some(i=>!Number.isFinite(i)))return;t=Y(n),y(),L()}},get:()=>t.slice()}}Q("cubicbezier",ee);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as ct,C as oe,D as se,L as lt,Y as it,Z as ut,aa as Le,b as m,i as ot,o as w,r as st,z as at}from"./chunk-GC5PWSSX.js";var sn=180/Math.PI,Re=Math.PI/180,L=(e,t)=>[e[0][0]*t[0]+e[0][1]*t[1]+e[0][2]*t[2],e[1][0]*t[0]+e[1][1]*t[1]+e[1][2]*t[2],e[2][0]*t[0]+e[2][1]*t[1]+e[2][2]*t[2]],an=(e,t)=>{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]=e[o][0]*t[0][r]+e[o][1]*t[1][r]+e[o][2]*t[2][r];return n},d=e=>Number.isFinite(e)?e:0,cn=(e,t,n)=>Math.min(n,Math.max(t,e)),ae=e=>{let t=Math.abs(e);return t<=.04045?e/12.92:Math.sign(e)*((t+.055)/1.055)**2.4},U=e=>{let t=Math.abs(e);return t<=.0031308?e*12.92:Math.sign(e)*(1.055*t**(1/2.4)-.055)},ie=1.09929682680944,kt=.018053968510807,ln=e=>{let t=Math.abs(e);return t<kt*4.5?e/4.5:Math.sign(e)*((t+ie-1)/ie)**(1/.45)},wt=e=>{let t=Math.abs(e);return t<kt?e*4.5:Math.sign(e)*(ie*t**.45-(ie-1))},Ct=1/512,un=e=>{let t=Math.abs(e);return t<=Ct*16?e/16:Math.sign(e)*t**1.8},hn=e=>{let t=Math.abs(e);return t>=Ct?Math.sign(e)*t**(1/1.8):16*e},Oe=[[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],ce=[[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],pn=[[.4865709486482162,.26566769316909306,.19821728523436247],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],vt=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],bn=[[.6369580483012914,.14461690358620832,.16888097516417205],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],yt=[[1.7166511879712674,-.35567078377639233,-.25336628137365974],[-.6666843518324892,1.6164812366349395,.01576854581391113],[.017639857445310783,-.042770613257808524,.9421031212354738]],mn=[[.7977604896723027,.13518583717574031,.0313493495815248],[.2880711282292934,.7118432178101014,8565396060525902e-20],[0,0,.8251046025104601]],gn=[[1.3457989731028281,-.25558010007997534,-.05110628506753401],[-.5446224939028347,1.5082327413132781,.02053603239147973],[0,0,1.2119675456389454]],$t=[[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],Et=[[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],dn=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],_t=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],fn=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],St=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],le=216/24389,q=24389/27,Z=[.3457/.3585,1,(1-.3457-.3585)/.3585],K=(e,t,n)=>L(n,[t(e[0]),t(e[1]),t(e[2])]),Y=(e,t,n)=>{let o=L(n,e);return[t(o[0]),t(o[1]),t(o[2])]},ht=e=>{let t=L(St,e);return L(_t,[t[0]**3,t[1]**3,t[2]**3])},pt=e=>{let t=L(dn,e);return L(fn,[Math.cbrt(t[0]),Math.cbrt(t[1]),Math.cbrt(t[2])])};function bt(e){let[t,n,o]=e,r=(t+16)/116,s=n/500+r,a=r-o/200,c=s**3>le?s**3:(116*s-16)/q,h=t>q*le?r**3:t/q,p=a**3>le?a**3:(116*a-16)/q;return L(Et,[c*Z[0],h*Z[1],p*Z[2]])}function mt(e){let t=L($t,e),n=a=>a>le?Math.cbrt(a):(q*a+16)/116,o=n(t[0]/Z[0]),r=n(t[1]/Z[1]),s=n(t[2]/Z[2]);return[116*r-16,500*(o-r),200*(r-s)]}var ue=e=>{let t=Math.hypot(e[1],e[2]),n=Math.atan2(e[2],e[1])*sn;return n<0&&(n+=360),[e[0],t,n]},he=e=>[e[0],e[1]*Math.cos(e[2]*Re),e[1]*Math.sin(e[2]*Re)];function Vt(e){let t=((Number.isNaN(e[0])?0:e[0])%360+360)%360,n=e[1]/100,o=e[2]/100,r=s=>{let a=(s+t/30)%12,c=n*Math.min(o,1-o);return o-c*Math.max(-1,Math.min(a-3,9-a,1))};return[r(0),r(8),r(4)]}function Lt(e){let t=Math.max(...e),n=Math.min(...e),o=t-n;if(o<1e-9)return NaN;let r;return t===e[0]?r=(e[1]-e[2])/o+(e[1]<e[2]?6:0):t===e[1]?r=(e[2]-e[0])/o+2:r=(e[0]-e[1])/o+4,r*60}function Mn(e){let t=Math.max(...e),n=Math.min(...e),o=(n+t)/2,r=Lt(e),s=t===n||o===0||o===1?0:(t-o)/Math.min(o,1-o);return s<0&&(r+=180,s=-s),r>=360&&(r-=360),[r,s*100,o*100]}function xn(e){let t=e[1]/100,n=e[2]/100;if(t+n>=1){let s=t/(t+n);return[s,s,s]}let o=Vt([e[0],100,50]),r=1-t-n;return[o[0]*r+t,o[1]*r+t,o[2]*r+t]}var kn=e=>[Lt(e),Math.min(...e)*100,(1-Math.max(...e))*100];function wn(e,t){switch(t){case"srgb":return K(e,ae,Oe);case"p3":return K(e,ae,pn);case"rec2020":return K(e,ln,bn);case"prophoto-rgb":return L(Et,K(e,un,mn));case"oklab":return ht(e);case"oklch":return ht(he(e));case"lab":return bt(e);case"lch":return bt(he(e));case"hsl":return K(Vt(e),ae,Oe);case"hwb":return K(xn(e),ae,Oe)}}function Cn(e,t){switch(t){case"srgb":return Y(e,U,ce);case"p3":return Y(e,U,vt);case"rec2020":return Y(e,wt,yt);case"prophoto-rgb":return Y(L($t,e),hn,gn);case"oklab":return pt(e);case"oklch":return ue(pt(e));case"lab":return mt(e);case"lch":return ue(mt(e));case"hsl":return Mn(Y(e,U,ce));case"hwb":return kn(Y(e,U,ce))}}function x(e,t,n){return t===n?[e[0],e[1],e[2]]:t==="oklch"&&n==="oklab"?he(e):t==="oklab"&&n==="oklch"?ue(e):t==="lch"&&n==="lab"?he(e):t==="lab"&&n==="lch"?ue(e):Cn(wn(e,t),n)}var pe=75e-6,Ot=e=>e.every(t=>t>=-pe&&t<=1+pe),Ae=(e,t)=>Ot(x(e,"oklch",t)),Te=e=>e.map(t=>Math.min(1,Math.max(0,t))),gt=(e,t)=>Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2]);function be(e,t){if(Ae(e,t))return x(e,"oklch",t);let n=e[0];if(n>=1)return[1,1,1];if(n<=0)return[0,0,0];if(!Number.isFinite(e[1]))return Te(x([n,0,d(e[2])],"oklch",t));let o=.02,r=1e-4,s=[e[0],e[1],e[2]],a=0,c=e[1],h=!0,p=Te(x(s,"oklch",t));if(gt(x(p,t,"oklab"),x(e,"oklch","oklab"))<o)return p;for(;c-a>r;){let l=(a+c)/2;s[1]=l;let b=x(s,"oklch",t);if(h&&Ot(b)){a=l;continue}p=Te(b);let g=gt(x(p,t,"oklab"),x(s,"oklch","oklab"));if(g<o){if(o-g<r)return p;h=!1,a=l}else c=l}return p}var Tt=(e,t)=>{let n=e*Re,o=Math.cos(n),r=Math.sin(n),s=St.map(c=>o*c[1]+r*c[2]),a=an(t==="p3"?vt:t==="rec2020"?yt:ce,_t);return{d:s,F:a,gam:t==="rec2020"?wt:U}};function me(e,t){let{d:[n,o,r],F:s,gam:a}=Tt(e,t),c=-pe,h=1+pe;return(p,l)=>{let b=p+l*n,g=p+l*o,$=p+l*r,C=b**3,f=g**3,v=$**3,S=a(s[0][0]*C+s[0][1]*f+s[0][2]*v);if(S<c||S>h)return!1;let E=a(s[1][0]*C+s[1][1]*f+s[1][2]*v);if(E<c||E>h)return!1;let G=a(s[2][0]*C+s[2][1]*f+s[2][2]*v);return G>=c&&G<=h}}function Rt(e,t){let{d:[n,o,r],F:s,gam:a}=Tt(e,t);return(c,h,p)=>{let l=c+h*n,b=c+h*o,g=c+h*r,$=l**3,C=b**3,f=g**3;p[0]=a(s[0][0]*$+s[0][1]*C+s[0][2]*f),p[1]=a(s[1][0]*$+s[1][1]*C+s[1][2]*f),p[2]=a(s[2][0]*$+s[2][1]*C+s[2][2]*f)}}function ge(e,t,n=.5){if(!e(t,0))return 0;let o=0;for(let r=0;r<16;r++){let s=(o+n)/2;e(t,s)?o=s:n=s}return o}var F=e=>Math.round(Math.min(1,Math.max(0,e))*255).toString(16).padStart(2,"0"),vn=e=>`#${F(e[0])}${F(e[1])}${F(e[2])}`,de=(e,t,n)=>vn(be([e,t,n],"srgb"));function At(e){let t=String(e).replace("#","").trim();if(t.length===3&&(t=t.split("").map(o=>o+o).join("")),t.length<6)return[.7,.1,280];let n=[parseInt(t.slice(0,2),16)/255,parseInt(t.slice(2,4),16)/255,parseInt(t.slice(4,6),16)/255];return x(n,"srgb","oklch").map(d)}var fe=["hex","srgb","css","hsl","hwb","oklch","oklab","lch","lab","p3","rec2020"],Nt={hex:"HEX",srgb:"RGB",css:"CSS",hsl:"HSL",hwb:"HWB",oklch:"OKLCH",oklab:"OKLab",lch:"LCH",lab:"Lab",p3:"P3",rec2020:"Rec2020"},Ft=["srgb","css","hsl","hwb","hex"],Ne=e=>!Ft.includes(e),Ht=e=>e==="hex"||e==="css"?"srgb":e,yn=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"}),In=e=>yn[e]||"oklch",$n=Object.assign(Object.create(null),{srgb:"srgb",hsl:"hsl",hwb:"hwb",oklch:"oklch",oklab:"oklab",lch:"lch",lab:"lab","display-p3":"p3",rec2020:"rec2020"}),Bn=e=>$n[e]||"oklch",Me=.5,Gt=(e,t,n)=>Object.freeze(["R","G","B"].map(o=>Object.freeze({k:o,min:0,max:e,step:t,scale:n}))),dt=Gt(255,1,255),ft=Gt(1,.01,1),J={oklch:[{k:"L",min:0,max:100,step:1,scale:100},{k:"C",min:0,max:Me,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:dt,css:dt,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:ft,rec2020:ft},Mt=e=>e>=1?0:e>=.1?1:e>=.01?2:3,It=(e,t,n)=>t==="oklch"?[e[0],e[1],e[2]]:Ft.includes(n)?t==="srgb"?be(e,"srgb"):x(be(e,"srgb"),"srgb",t):x(e,"oklch",t);function xe(e,t){let n=It(e,Ht(t),t);return J[t].map((o,r)=>{let s=d(n[r])*o.scale;return cn(Math.abs(s)<.5*o.step?0:s,o.min,o.max)})}function Bt(e,t,n,o){let r=Ht(t),s=It(e,r,t).map(d);s[n]=o/J[t][n].scale;let a=x(s,r,"oklch");return[d(a[0]),d(a[1]),d(a[2])]}function Pt(e,t){if(!Ne(t))return"sRGB";let n=be(e,"srgb");return Math.max(...n)<.03||Math.min(...n)>.97||Ae(e,"srgb")?"sRGB":Ae(e,"p3")?"P3":"wide"}function Fe(e,t){if(t==="hex")return de(e[0],e[1],e[2]);let n=J[t],o=xe(e,t),r=s=>{let a=o[s].toFixed(Mt(n[s].step));return n[s].k==="H"&&+a==360?0 .toFixed(Mt(n[s].step)):a};return t==="css"?`${r(0)}, ${r(1)}, ${r(2)}`:t==="oklch"||t==="oklab"||t==="lch"||t==="lab"?`${r(0)}% ${r(1)} ${r(2)}`:t==="hsl"||t==="hwb"?`${r(0)} ${r(1)}% ${r(2)}%`:`${r(0)} ${r(1)} ${r(2)}`}var xt=(e,t)=>t==="hex"?e:t==="srgb"?`rgb(${e})`:t==="css"?`rgba(${e}, 1)`:t==="hsl"?`hsl(${e})`:t==="hwb"?`hwb(${e})`:t==="p3"?`color(display-p3 ${e})`:t==="rec2020"?`color(rec2020 ${e})`:`${t}(${e})`;function Dt(e,t,n){let o=d(n);if(t==="hex")return de(e[0],e[1],e[2])+(o<.999?F(o):"");let r=Fe(e,t);if(o>=.999)return xt(r,t);let s=+o.toFixed(3);return t==="css"?`rgba(${r}, ${s})`:xt(`${r} / ${s}`,t)}var Xt=(()=>{try{return document.createElement("canvas").getContext("2d",{colorSpace:"display-p3"})?.getContextAttributes?.().colorSpace==="display-p3"}catch{return!1}})(),He=Xt?{colorSpace:"display-p3"}:{},En=Xt?"p3":"srgb",ke=(e,t)=>{let n=e.length-1,o=Math.max(0,Math.min(n,t*n)),r=Math.floor(o),s=o-r;return e[r]*(1-s)+e[Math.min(r+1,n)]*s},_n=(e,t)=>{let n=me(e,t),o=new Float64Array(128);for(let r=0;r<128;r++)o[r]=ge(n,r/127);return o},Sn="repeating-conic-gradient(#6b6b6b 0% 25%, #9a9a9a 0% 50%) 0 0 / 8px 8px",Vn=Object.assign(Object.create(null),{srgb:"srgb","display-p3":"p3",rec2020:"rec2020","prophoto-rgb":"prophoto-rgb"}),De=/^(rgba?|hsla?|hwb)\([ \t\n\r\f]*([^)]*?)[ \t\n\r\f]*\)$/i,Xe=/^(oklch|oklab|lch|lab|color)\([ \t\n\r\f]*([^)]*?)[ \t\n\r\f]*\)$/i,Ln=/^(srgb|srgb-linear|display-p3|a98-rgb|prophoto-rgb|rec2020|xyz|xyz-d50|xyz-d65)$/i,Ce=/^#?([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,Ge,jt=()=>Ge===void 0?Ge=document.createElement("canvas").getContext("2d"):Ge,On=/^(#[0-9a-f]{3,8}|[a-z][a-z-]*(?:\([\w\s.,%+\-\/]*\))?)$/i;function jn(e){if(e=String(e??"").trim(),!On.test(e))return!1;if(Ce.test(e))return!0;if(Xe.test(e))return An(e);if(De.test(e))return Yt(e)!==null;let t=jt();return t?["#000","#fff"].some(n=>{t.fillStyle=n;let o=t.fillStyle;return t.fillStyle=e,t.fillStyle!==o}):!0}var je="[+-]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e[+-]?\\d+)?",Tn=new RegExp("^"+je+"$","i"),Rn=new RegExp("^"+je+"%$","i"),Kt=new RegExp("^("+je+")(deg|grad|rad|turn)$","i"),Ke=/[ \t\n\r\f]+/,Ye=/^none$/i,Ie=e=>e.replace(/^[ \t\n\r\f]+|[ \t\n\r\f]+$/g,""),Be=e=>!!e&&!Ke.test(e),H=e=>Ye.test(e)?"none":Tn.test(e)?"num":Rn.test(e)?"pct":Kt.test(e)?"angle":null,Pe=e=>{let t=Kt.exec(e);if(!t)return d(parseFloat(e));let n=parseFloat(t[1]),o=t[2].toLowerCase();return d(o==="turn"?n*360:o==="grad"?n*.9:o==="rad"?n*180/Math.PI:n)};function Yt(e){let t=De.exec(e);if(!t)return null;let n=t[1].toLowerCase().replace(/a$/,""),o=t[2],r,s,a;if(o.includes(",")){if(n==="hwb")return null;let l=o.split(",").map(Ie);if(l.length<3||l.length>4||!l.every(Be)||(r=l.slice(0,3),s=l[3],a=r.map(H),n==="rgb"?!(a.every(b=>b==="num")||a.every(b=>b==="pct")):!((a[0]==="num"||a[0]==="angle")&&a[1]==="pct"&&a[2]==="pct"))||s!==void 0&&H(s)!=="num"&&H(s)!=="pct")return null}else{let l=o.split("/");if(l.length>2||(r=l[0].split(Ke).filter(Boolean),r.length!==3))return null;if(l.length===2){s=Ie(l[1]);let b=Be(s)?H(s):null;if(!b||b==="angle")return null}if(a=r.map(H),n==="rgb"?!a.every(b=>b&&b!=="angle"):!(a[0]&&a[0]!=="pct"&&a[1]&&a[1]!=="angle"&&a[2]&&a[2]!=="angle"))return null}let c=(l,b)=>Ye.test(l)?0:/%$/.test(l)?parseFloat(l)/100*b:parseFloat(l),h=s===void 0?1:m(c(s,1),0,1);return[n==="rgb"?x([m(c(r[0],255)/255,0,1),m(c(r[1],255)/255,0,1),m(c(r[2],255)/255,0,1)],"srgb","oklch"):x([a[0]==="none"?0:Pe(r[0]),m(c(r[1],100),0,100),m(c(r[2],100),0,100)],n,"oklch"),h]}var An=e=>{let t=Xe.exec(e);if(!t)return!1;let n=t[1].toLowerCase(),o=t[2].split("/");if(o.length>2)return!1;let r=o[0].split(Ke).filter(Boolean);if(n==="color"&&!Ln.test(r.shift()||"")||r.length!==3)return!1;let s=n==="lch"||n==="oklch";if(!r.every((a,c)=>{let h=H(a);return h&&(s&&c===2?h!=="pct":h!=="angle")}))return!1;if(o.length===2){let a=Ie(o[1]),c=Be(a)?H(a):null;if(!c||c==="angle")return!1}return!0};function we(e){if(e=String(e??"").trim(),Ce.test(e)){let c=e.replace("#",""),h=1;c.length===4?(h=parseInt(c[3]+c[3],16)/255,c=c.slice(0,3)):c.length===8&&(h=parseInt(c.slice(6,8),16)/255,c=c.slice(0,6));let[p,l,b]=At("#"+c);return[p,l,b,h]}let t=Xe.exec(e);if(t){let c=t[1].toLowerCase(),[h,p]=t[2].split("/").map(v=>v.trim()),l=h.split(/\s+/).filter(Boolean),b=c;if(c==="color"&&(b=Vn[(l[0]||"").toLowerCase()],l=l.slice(1),!b))return[.7,.1,280,1];let g=(v,S=1)=>!v||Ye.test(v)?0:d(parseFloat(v))*(/%$/.test(v)?S:1),$=p?m(g(p,.01),0,1):1,C=c==="lab"?[m(g(l[0]),0,100),g(l[1],1.25),g(l[2],1.25)]:c==="lch"?[m(g(l[0]),0,100),Math.max(0,g(l[1],1.5)),Pe(l[2]||"0")]:c==="color"?[g(l[0],.01),g(l[1],.01),g(l[2],.01)]:c==="oklab"?[m(g(l[0],.01),0,1),g(l[1],.004),g(l[2],.004)]:[m(g(l[0],.01),0,1),Math.max(0,g(l[1],.004)),Pe(l[2]||"0")],f=b==="oklch"?C:x(C,b,"oklch");return[d(f[0]),m(d(f[1]),0,Me),(d(f[2])%360+360)%360,$]}if(De.test(e)){let c=Yt(e);if(!c)return[0,0,0,1];let[h,p]=c;return[d(h[0]),m(d(h[1]),0,Me),(d(h[2])%360+360)%360,p]}let n=jt();if(!n)return[0,0,0,1];n.fillStyle="#000",n.fillStyle=e;let o=n.fillStyle;if(Ce.test(o))return we(o);let r=o.match(/^rgba?\(([^)]*)\)/i),s=((r?r[1]:"").match(/-?[\d.]+(?:e[+-]?\d+)?/gi)||[0,0,0]).map(Number),a=x([s[0]/255,s[1]/255,s[2]/255],"srgb","oklch");return[d(a[0]),d(a[1]),d(a[2]),s[3]!=null?m(d(s[3]),0,1):1]}function Zt(e,t){let[n,o,r,s]=we(e.value||"#7c5cff"),a=fe.includes(e.mode)?e.mode:"oklch",c=NaN,h=null,p=[],l=NaN,b="",g=()=>Dt([n,o,r],a,s),$=w("div","tw-color-body"),C=w("div","tw-wg-area"),f=document.createElement("canvas");f.className="tw-wg-canvas";let v=w("div","tw-wg-thumb");C.append(f,v);let S=w("div","tw-wg-hue"),E=document.createElement("canvas");E.className="tw-wg-hue-canvas";let G=w("div","tw-wg-hue-thumb");S.append(E,G),f.setAttribute("role","img"),f.setAttribute("aria-label","Colour plane: chroma across, lightness up"),E.setAttribute("role","img"),E.setAttribute("aria-label","Hue strip");let _=w("div","tw-wg-alpha"),Ze=w("div","tw-wg-alpha-grad"),ve=w("div","tw-wg-hue-thumb");_.append(Ze,ve),_.tabIndex=0,_.setAttribute("role","slider"),_.setAttribute("aria-label","Alpha"),_.setAttribute("aria-valuemin","0"),_.setAttribute("aria-valuemax","1");let ze=w("div","tw-color-mode-row"),O=w("select","tw-color-mode");O.setAttribute("aria-label","Color mode"),fe.forEach(i=>{let u=document.createElement("option");u.value=i,u.textContent=Nt[i],O.append(u)}),O.value=a;let We=w("span","tw-color-gamut");ze.append(O,We);let T=w("div","tw-color-channels");$.append(C,S,_,ze,T);let y=f.getContext("2d",He),Ue=E.getContext("2d"),I=document.createElement("canvas"),zt=I.getContext("2d",He),ye=null,$e=()=>{let i=C.getBoundingClientRect(),u=Math.round(i.width),M=Math.round(i.height);if(u<2)return;let k=window.devicePixelRatio||1,P=Ne(a)?"p3":"srgb",D=_n(r,P);h=D;let z=Math.round(u*k),ee=Math.round(M*k),R=Math.max(1,Math.round(z/4)),X=Math.max(1,Math.round(ee/4));(I.width!==R||I.height!==X)&&(I.width=R,I.height=X,ye=new ImageData(R,X,He));let te=ye.data,tn=X>1?1/(X-1):0,nn=R>1?1/(R-1):0,rn=Rt(r,En),ne=[0,0,0];for(let A=0;A<X;A++){let re=1-A*tn,_e=ke(D,re);for(let N=0;N<R;N++){rn(re,N*nn*_e,ne);let j=(A*R+N)*4;te[j]=Math.round(m(ne[0],0,1)*255),te[j+1]=Math.round(m(ne[1],0,1)*255),te[j+2]=Math.round(m(ne[2],0,1)*255),te[j+3]=255}}if(zt.putImageData(ye,0,0),f.width=z,f.height=ee,y.imageSmoothingEnabled=!0,y.drawImage(I,0,0,z,ee),P!=="srgb"){let A=(re,_e,N,j)=>{let on=me(r,re),Se=[];for(let V=0;V<=100;V++){let W=V/100,Ve=ke(D,W);if(Ve<=0)continue;let rt=ge(on,W,Ve);rt<=0||Se.push([Math.min(rt/Ve*z,z-N*k/2),(1-W)*ee])}Se.length<2||(y.save(),y.strokeStyle=_e,y.lineWidth=N*k,y.lineJoin=y.lineCap="round",y.setLineDash(j.map(V=>V*k)),y.beginPath(),Se.forEach((V,W)=>W?y.lineTo(V[0],V[1]):y.moveTo(V[0],V[1])),y.stroke(),y.restore())};A("srgb","rgba(255,255,255,0.7)",1.5,[]),A("p3","rgba(255,255,255,0.4)",1,[3,3])}c=r},qe=.7,Je=i=>{let u=x([qe,ge(me(i,"srgb"),qe),i],"oklch","srgb");return`rgb(${m(u[0]*255,0,255)|0},${m(u[1]*255,0,255)|0},${m(u[2]*255,0,255)|0})`},Qe=0,Wt=()=>{let i=S.getBoundingClientRect(),u=Math.max(1,Math.round(i.width)),M=Math.max(1,Math.round(i.height));if(!(u<2)&&!(u===Qe&&E.width===u)){Qe=u,E.width=u,E.height=M;for(let k=0;k<u;k++)Ue.fillStyle=Je(k/(u-1)*360),Ue.fillRect(k,0,1,M)}},Ee=()=>{let i=h?ke(h,n):.4,u=k=>`${m(k,0,1)*100}%`,M=(k,P)=>{let D=m(k,0,1);return`calc(${D*100}% + ${(.5-D)*P}px)`};v.style.left=u(i>0?o/i:0),v.style.top=u(1-n),G.style.left=M(r/360,16),ve.style.left=M(s,16),_.setAttribute("aria-valuenow",String(+s.toFixed(2))),Ze.style.background=`linear-gradient(to right, oklch(${n} ${o} ${r} / 0), oklch(${n} ${o} ${r}))`,v.style.background=`oklch(${n} ${o} ${r})`,ve.style.background=`linear-gradient(oklch(${n} ${o} ${r} / ${s}), oklch(${n} ${o} ${r} / ${s})), var(--tw-dropdown-bg)`,r!==l&&(b=Je(r),l=r),G.style.background=b},Q=()=>{if(We.textContent=Pt([n,o,r],a),a==="hex"){let i=T.querySelector(".tw-color-chan-input");i&&document.activeElement!==i&&(i.value=de(n,o,r)+(s<.999?F(s):""))}else{let i=xe([n,o,r],a);p.forEach((u,M)=>{u.el.contains(document.activeElement)||u.set(i[M])})}},Ut=()=>{Wt(),$e(),Ee()},qt=()=>t(g()),et=i=>{i&&r!==c&&$e(),Ee(),Q()},B=i=>{et(i),qt()},tt=()=>{if(T.replaceChildren(),p=[],a==="hex"){T.classList.add("tw-color-channels--hex");let i=w("div","tw-color-chan"),u=w("input","tw-color-chan-input");u.type="text",u.spellcheck=!1,u.setAttribute("aria-label","Hex color"),at(u),ct(u),u.addEventListener("change",()=>{let M=u.value.trim();Ce.test(M)&&([n,o,r,s]=we(M),B(!0))}),u.addEventListener("blur",Q),u.addEventListener("keydown",M=>{M.key==="Enter"&&u.blur()}),i.append(st("span","tw-color-chan-label","HEX"),u),T.append(i)}else{T.classList.remove("tw-color-channels--hex");let i=xe([n,o,r],a);J[a].forEach((u,M)=>{let k=ut({label:u.k,value:i[M],min:u.min,max:u.max,step:u.step},P=>{[n,o,r]=Bt([n,o,r],a,M,m(P,u.min,u.max)),B(!0)});k.el.addEventListener("focusout",Q),p.push(k),T.append(k.el)})}Q()},Jt=i=>se(i,C);oe(C,i=>{let[u,M]=Jt(i);n=1-M,o=u*(h?ke(h,n):.4),B(!1)});let Qt=i=>se(i,S)[0]*360;oe(S,i=>{r=Qt(i),B(!0)});let en=i=>se(i,_)[0];oe(_,i=>{s=en(i),B(!1)}),_.addEventListener("keydown",i=>{let u=ot(i,s,.01,0,1);u!=null&&(i.preventDefault(),s=m(u,0,1),B(!1))});let nt=i=>{a=i,O.value=i,tt(),$e(),Ee()};return O.addEventListener("change",()=>{nt(O.value),e.onMode&&e.onMode()}),tt(),{el:$,set:i=>{let u=document.activeElement;u&&$.contains(u)&&u.blur(),[n,o,r,s]=we(i),et(!0)},get:()=>g(),mode:()=>a,setMode:i=>{i!==a&&fe.includes(i)&&nt(i)},reflow:Ut,swatchCss:()=>`linear-gradient(oklch(${n} ${o} ${r} / ${s}), oklch(${n} ${o} ${r} / ${s})), ${Sn}`,valueText:()=>Fe([n,o,r],a)+(s<.999?a==="hex"?F(s):` / ${+s.toFixed(2)}`:"")}}function Nn(e,t){let{root:n,trigger:o,right:r}=it("tw-color",e.label??"Colour"),s=w("span","tw-trigger-chip tw-color-swatch"),a=w("span","tw-trigger-value");r.append(s,a);let c=w("div","tw-color-pop"),h=()=>{s.style.background=p.swatchCss(),a.textContent=p.valueText()},p=Zt({value:e.value,onMode:()=>h()},l=>{h(),t(l)});return c.append(p.el),n.append(c),lt(n,o,c,{width:240,fallbackH:340,gap:6,onOpen:p.reflow,onReflow:p.reflow}),h(),{el:n,set:l=>{p.set(l),h()},get:()=>p.get()}}var Kn=(e,t,n,o)=>o<.999?`oklch(${+e.toFixed(4)} ${+t.toFixed(4)} ${+n.toFixed(2)} / ${+o.toFixed(3)})`:`oklch(${+e.toFixed(4)} ${+t.toFixed(4)} ${+n.toFixed(2)})`;Le("color",Nn);Le("colorpicker",Zt);export{In as a,Bn as b,Sn as c,jn as d,we as e,Zt as f,Kn as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var P=e=>e.replace(/([A-Z])/g," $1").replace(/^./,t=>t.toUpperCase()).trim(),L=(e,t,n)=>Math.min(n,Math.max(t,e)),ue=e=>typeof e=="string"&&(/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(e.trim())||/^(oklch|oklab|rgba?|hsla?|hwb|lab|lch|color)\(/i.test(e.trim()));var k=e=>{let t=String(e),n=/e-(\d+)$/i.exec(t);if(n)return Math.min(20,Number(n[1])+(t.split("e")[0].split(".")[1]||"").length);let r=t.indexOf(".");return r===-1?0:Math.min(20,t.length-r-1)},H=(e,t,n)=>{if(!(n>0))return e;let r=k(n),i=Number((+t).toFixed(r)),o=Math.round((e-i)/n);return Number.isFinite(o)?Number((i+o*n).toFixed(r)):e},O=(e,t,n,r=e)=>{let i=a=>H(a,r,n),o=Number.isFinite(e)?i(e):-1/0,s=Number.isFinite(t)?i(t):1/0;return o<e&&(o=i(o+n)),s>t&&(s=i(s-n)),o>s?[e,e]:[o,s]},R=(e,t)=>{let n=t-e;return n<=1?.01:n<=10?.1:n<=100?1:10},ce=(e,t,n,r=0,i=null)=>{let o=+e,s=+t,a=+n;if(Number.isFinite(o)||(o=r),Number.isFinite(s)||(s=i??o+100),s<o){let f=o;o=s,s=f}return(!(a>0)||a>s-o)&&(a=R(o,s)),{min:o,max:s,step:a}},de=(e,t,n,r,i,o=null)=>{let s=e.shiftKey?10:1;switch(e.key){case"ArrowRight":case"ArrowUp":return t+n*s;case"ArrowLeft":case"ArrowDown":return t-n*s;case"PageUp":return o!=null?t+o:null;case"PageDown":return o!=null?t-o:null;case"Home":return r;case"End":return i}return null},me=(e,t,n,r,i=0)=>{let o=e.offsetLeft,s=o+e.offsetWidth,a=t.offsetLeft,f=a+t.offsetWidth;return n<s&&n+r>o||n<f+i&&n+r>a-i},fe=e=>e>=0?[0,e<=1?1:e*3||100]:[e>=-1?-1:e*3,0],I=e=>e==null?void 0:typeof e=="object"?e.value:e,V=e=>{try{return JSON.stringify(e)}catch{return String(e)}},_=e=>e==null?"":typeof e=="string"?P(e):typeof e=="object"?e.label??(e.value!==void 0?String(e.value):V(e)):String(e),B="http://www.w3.org/2000/svg",g=(e,t,n)=>{let r=document.createElement(e);return t&&(r.className=t),n!=null&&(r.innerHTML=n),r},we=(e,t)=>{let n=document.createElementNS(B,e);return t&&n.setAttribute("class",t),n},$=(e,t)=>{let n=g("button",e,t);return n.type="button",n},C=(e,t,n)=>{let r=g(e,t);return r.textContent=n,e==="button"&&(r.type="button"),r},be=(e,t)=>getComputedStyle(e).getPropertyValue(t).trim(),ge=e=>{let t=getComputedStyle(e),n=r=>t.getPropertyValue(r).trim();return n("--tw-accent")||n("--tw-text-primary")||"#fff"},D=e=>["pointerdown","pointermove","pointerup"].forEach(t=>e.addEventListener(t,n=>n.stopPropagation())),X=e=>{requestAnimationFrame(e),document.fonts&&document.fonts.ready&&document.fonts.ready.then(e)},K=(e,t,n)=>{let r=e.isConnected;r||requestAnimationFrame(()=>{e.isConnected&&(r=!0)});let i=s=>{if(!e.isConnected){(r||e.closest("[data-tw-destroyed]"))&&o();return}r=!0,n(s)},o=()=>t.forEach(([s,a])=>s.removeEventListener(a,i));return t.forEach(([s,a])=>s.addEventListener(a,i)),o},ve=()=>requestAnimationFrame(()=>window.dispatchEvent(new Event("tw-reflow"))),pe=(e,t)=>{e.addEventListener("pointerenter",()=>{e.classList.add("is-hover"),t&&t()}),e.addEventListener("pointerleave",()=>e.classList.remove("is-hover"))},y=!1;typeof document<"u"&&(document.addEventListener("pointerdown",()=>{y=!0},!0),document.addEventListener("keydown",()=>{y=!1},!0));var j=e=>{e.addEventListener("focus",()=>e.classList.toggle("tw-focus-quiet",y)),e.addEventListener("blur",()=>e.classList.remove("tw-focus-quiet"))},he=e=>{let t=!1;e.addEventListener("pointerdown",n=>{t=n.button===0&&document.activeElement!==e}),e.addEventListener("focus",()=>e.select()),e.addEventListener("mouseup",n=>{t&&(t=!1,n.button===0&&document.activeElement===e&&e.selectionStart===0&&e.selectionEnd===e.value.length&&n.preventDefault())})};function F(e,{onDown:t,onMove:n,onEnd:r}={}){let i=null,o=s=>{i===null||s.pointerId!==i||(i=null,r&&r(s))};e.addEventListener("pointerdown",s=>{if(!(s.button!==0||i!==null)){i=s.pointerId;try{e.setPointerCapture(s.pointerId)}catch{}t&&t(s)}}),e.addEventListener("pointermove",s=>{if(s.pointerId===i){if(s.buttons===0)return o(s);n&&n(s)}}),e.addEventListener("pointerup",o),e.addEventListener("pointercancel",o),e.addEventListener("lostpointercapture",o)}var Ee=(e,t)=>F(e,{onDown:n=>{e.classList.add("is-grabbing"),t(n)},onMove:t,onEnd:()=>e.classList.remove("is-grabbing")}),ye=(e,t)=>{let n=t.getBoundingClientRect();return[L((e.clientX-n.left)/n.width,0,1),L((e.clientY-n.top)/n.height,0,1)]},Le=(e,t,n=1/0)=>{let r=e.getBoundingClientRect(),i=Math.min(window.devicePixelRatio||1,n);return e.width=r.width*i,e.height=r.height*i,t.setTransform(i,0,0,i,0,0),[r.width,r.height]},G=(e,t,{width:n,fallbackH:r=300,gap:i=6,align:o="start",prefer:s="below"}={})=>{let a=e.getBoundingClientRect();n==="match"&&(t.style.width=a.width+"px");let f=n==="match"?a.width:t.offsetWidth||n||0,b=o==="end"?a.right-f:o==="center"?a.left+a.width/2-f/2:a.left;t.style.left=Math.max(8,Math.min(b,window.innerWidth-f-8))+"px";let l=t.offsetHeight||r,c=window.innerHeight-a.bottom,w=a.top,p=l+12,v=c>=p,d=w>=p,u=(s==="above"?d||!v&&w>=c:!v&&(d||w>c))?a.top-l-i:a.bottom+i;t.style.top=L(u,i,window.innerHeight-l-i)+"px"},q=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"}),z=new Set(["radius","density"]),M=e=>(e/=255,e<=.03928?e/12.92:((e+.055)/1.055)**2.4),U=e=>{e=String(e).trim();let t=/^#([0-9a-f]{3})$/i.exec(e);if(t)return t[1].split("").map(n=>parseInt(n+n,16));if(t=/^#([0-9a-f]{6})$/i.exec(e),t)return[0,2,4].map(n=>parseInt(t[1].slice(n,n+2),16));if(t=/^rgba?\(([^)]+)\)/i.exec(e),t){let n=t[1].split(/[\s,/]+/).filter(Boolean).map(parseFloat);return[n[0],n[1],n[2]]}return null},W=e=>{let t=U(e);if(!t||t.some(r=>!Number.isFinite(r)))return"#ffffff";let n=.2126*M(t[0])+.7152*M(t[1])+.0722*M(t[2]);return 1.05/(n+.05)>=(n+.05)/.0571?"#ffffff":"#161616"},Me=e=>{if(!e||typeof e!="object")return null;let t={};for(let[n,r]of Object.entries(e)){if(n.startsWith("--")){t[n]=String(r);continue}let i=q[n];i&&(t[i]=z.has(n)&&typeof r=="number"?`${r}px`:String(r))}return t["--tw-accent"]&&!t["--tw-on-accent"]&&(t["--tw-on-accent"]=W(t["--tw-accent"])),Object.keys(t).length?t:null},Y=(e,t)=>{if(e){if(e._twAppliedVars)for(let n of e._twAppliedVars)e.style.removeProperty(n);if(e._twAppliedVars=t?Object.keys(t):null,t)for(let n in t)e.style.setProperty(n,t[n])}},J=(e,t)=>{let n=t?.closest('[data-tw-scheme="light"]')?"light":t?.closest('[data-tw-scheme="dark"]')?"dark":null;n?e.setAttribute("data-tw-scheme",n):e.removeAttribute("data-tw-scheme")},T=(e,t)=>{Y(e,t?.closest(".tw-panel")?._twTheme),J(e,t)},h=null,x=null,Te=e=>{h&&(!e||e.contains(x))&&h()};function xe(e,t,n,r={}){let i=!1,o=null;n.classList.add("tw-portal"),n.addEventListener("pointerdown",m=>t.closest(".tw-panel")?._twEditPointer?.(m),!0),D(n);let s=()=>G(t,n,{width:r.width,fallbackH:r.fallbackH,gap:r.gap,align:r.align}),a=()=>{if(i){if(!e.isConnected)return d();s(),r.onReflow&&r.onReflow()}},f=m=>{!e.contains(m.target)&&!n.contains(m.target)&&d()},b=m=>{m.key==="Escape"&&i&&(d(),t.focus())},l=m=>{if(!i)return;let u=m.relatedTarget;(u?e.contains(u)||n.contains(u):y)||(d(),u&&!t.closest(".tw-panel")?.contains(u)&&setTimeout(()=>{!i&&document.activeElement===u&&t.focus()},0))};e.addEventListener("focusout",l),n.addEventListener("focusout",l);let c=()=>n.querySelector('button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [href], [tabindex]:not([tabindex="-1"])'),w=()=>T(n,e),p=m=>{m.every(u=>u.target===n)||w()},v=()=>{h&&h!==d&&h(),h=d,x=t,i=!0,e.classList.add("is-open"),t.setAttribute("aria-expanded","true"),document.body.appendChild(n),T(n,e),window.addEventListener("tw-retheme",w),typeof MutationObserver=="function"&&(o=new MutationObserver(p),o.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:["data-tw-scheme"]})),s(),requestAnimationFrame(()=>{if(i&&(n.classList.add("is-open"),r.onOpen&&r.onOpen(),s(),!n.contains(document.activeElement))){let m=r.initialFocus&&r.initialFocus()||c();m&&m.focus({focusVisible:!y})}}),requestAnimationFrame(function m(){if(i){if(!e.isConnected)return d();requestAnimationFrame(m)}}),setTimeout(()=>{i&&document.addEventListener("pointerdown",f,!0)},0),document.addEventListener("keydown",b),window.addEventListener("scroll",a,!0),window.addEventListener("resize",a)},d=()=>{h===d&&(h=null,x=null),n.contains(document.activeElement)&&t.focus(),i=!1,e.classList.remove("is-open"),n.classList.remove("is-open"),t.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",f,!0),document.removeEventListener("keydown",b),window.removeEventListener("scroll",a,!0),window.removeEventListener("resize",a),window.removeEventListener("tw-retheme",w),o&&(o.disconnect(),o=null),setTimeout(()=>{i||n.remove()},200)};return t.addEventListener("click",()=>{t.disabled||(i?d():v())}),{open:v,close:d,isOpen:()=>i,reflow:a}}var Ce=(e,t)=>{if(e=e.toLowerCase(),e.includes(t))return!0;if(t.length<3)return!1;let n=t.length,r=e.length,i=new Array(r+1).fill(0);for(let o=1;o<=n;o++){let s=[o];for(let a=1;a<=r;a++)s[a]=Math.min(i[a]+1,s[a-1]+1,i[a-1]+(t[o-1]===e[a-1]?0:1));i=s}return Math.min(...i)<=(t.length<6?1:2)},Z=typeof matchMedia=="function"?matchMedia("(prefers-reduced-motion: reduce)"):{matches:!1},Q="cubic-bezier(0.22, 1, 0.36, 1)",Ae="cubic-bezier(0.34, 1.2, 0.64, 1)",ee=(e,t)=>{Z.matches||typeof e.animate!="function"||(e.style.transformOrigin=t>0?"left center":"right center",e.animate([{transform:"scaleX(1)"},{transform:"scaleX(1.18)"},{transform:"scaleX(1)"}],{duration:300,easing:Q}))},te=(e,t,n)=>{let r=e.querySelector('[data-active="true"]');if(!r)return;let i=r.offsetLeft,o=r.offsetWidth,s=parseFloat(t.style.left);t.style.left=i+"px",t.style.width=o+"px",n&&Number.isFinite(s)&&s!==i&&ee(t,i>s?1:-1)},ke=(e,t)=>{e.classList.toggle("is-disabled",t);for(let n of e.children)n.inert=t},He=(e,t,n,r)=>{e.classList.toggle("is-collapsed",r),t.setAttribute("aria-expanded",String(!r)),n.inert=r},S=(e,t)=>{let n=e.findIndex(r=>r.dataset.value===String(t));return n<0&&e.length?0:n},ne=(e,t)=>{let n=S(e,t);e.forEach((r,i)=>{let o=r.dataset.value===String(t);r.dataset.active=String(o),r.setAttribute("aria-checked",String(o)),r.tabIndex=i===n?0:-1})},re=(e,t,n)=>{let r=C("button",e,_(t));return r.setAttribute("role","radio"),r._twVal=I(t),r.dataset.value=r._twVal,r.addEventListener("click",()=>n(r._twVal)),r},ie=(e,t,n,r=0)=>{switch(e){case"ArrowRight":return(t+1)%n;case"ArrowLeft":return(t-1+n)%n;case"ArrowDown":return r<0?-1:r?t+r<n?t+r:t:(t+1)%n;case"ArrowUp":return r<0?-1:r?t-r>=0?t-r:t:(t-1+n)%n;case"Home":return 0;case"End":return n-1}return-1};function Fe(e,t,n,r){let i=g("div","tw-seg");i.setAttribute("role","radiogroup"),r&&i.setAttribute("aria-label",r);let o=g("div","tw-seg-pill");i.append(o);let s=e.map(l=>{let c=re("tw-seg-btn",l,w=>b(w));return i.append(c),c}),a=l=>te(i,o,l),f=()=>{ne(s,t),a(!0)},b=(l,c=!0)=>{l!=null&&!s.some(w=>w._twVal===l)||(t=l,f(),c&&n(l))};return i.addEventListener("keydown",l=>{let c=S(s,t);if(c<0)return;let w=ie(l.key,c,s.length);w<0||(l.preventDefault(),b(s[w]._twVal),s[w].focus())}),f(),X(()=>{a(),i.classList.add("is-ready")}),K(i,[[window,"tw-reflow"]],()=>a()),{el:i,set:l=>b(l,!1),get:()=>t}}var Se=(e,t)=>{let n=g("div",e),r=$("tw-trigger");r.setAttribute("aria-expanded","false");let i=g("span","tw-trigger-right");return r.append(C("span","tw-trigger-label",t),i),n.append(r),{root:n,trigger:r,right:i}};function oe(){let e=null,t=0,n=0,r=0;return{show(i,o,s,a){e=g("div","tw-grab-guide tw-portal"),e.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>',t=o,n=i,r=s??i,e.children[1].style.cssText=`left:${i}px;top:${t}px`,T(e,a),document.body.appendChild(e)},move(i,o){e&&(e.children[0].style.cssText=`left:${Math.min(n,i)}px;top:${t}px;width:${Math.abs(i-n)}px`,e.children[2].style.cssText=`left:${i}px;top:${t}px;transform:translate(-50%,-50%) scaleX(${i>=n?1:-1})`,e.children[3].style.cssText=`left:${r}px;top:${t-16}px`,e.children[3].textContent=o)},hide(){e&&(e.remove(),e=null)}}}function se(e,t,n,r,i,o){let s=0,a=0,f=1,b=oe();F(e,{onDown:l=>{l.preventDefault(),s=l.clientX,a=r(),f=1,e.classList.add("is-dragging");let c=t.getBoundingClientRect();b.show(l.clientX,c.top+c.height/2,c.left+c.width/2,t),b.move(l.clientX,o())},onMove:l=>{let c=l.shiftKey?10:l.altKey?.1:1;c!==f&&(f=c,s=l.clientX,a=r()),i(a+(l.clientX-s)*n*c),b.move(l.clientX,o())},onEnd:()=>{e.classList.remove("is-dragging"),b.hide()}})}function Ne(e,t){let n=Number.isFinite(+e.step)&&+e.step>0?+e.step:1,r=u=>u==null?NaN:+u,i=r(e.min),o=r(e.max);if(Number.isFinite(i)&&Number.isFinite(o)&&o<i){let u=i;i=o,o=u}let s=Number.isFinite(i)?i:0,a=k(n),[f,b]=O(Number.isFinite(i)?i:-1/0,Number.isFinite(o)?o:1/0,n,s),l=u=>{let E=H(u,s,n);return e.soft?E:L(E,f,b)},c=l(Number.isFinite(+e.value)?+e.value:0),w=g("div",e.row?"tw-row":"tw-field"),p=g("div","tw-num-wrap"),v=g("span","tw-num-grab",le);v.setAttribute("aria-hidden","true"),v.title="Drag to adjust";let d=g("input","tw-num");d.type="text",d.inputMode="decimal",d.setAttribute("aria-label",e.label),d.value=c.toFixed(a),j(d),p.append(v,d),w.append(C("span",e.row?"tw-row-label":"tw-field-label",e.label),p);let m=(u,E=!0)=>{u=+u,Number.isFinite(u)&&(c=l(u),d.value=c.toFixed(a),E&&t&&t(c))};return d.addEventListener("change",()=>{let u=parseFloat(d.value);m(isNaN(u)?c:u)}),d.addEventListener("keydown",u=>{if(u.key==="Enter")return d.blur();let E=u.key==="ArrowUp"?1:u.key==="ArrowDown"?-1:0;if(!E)return;u.preventDefault();let A=parseFloat(d.value);m((isNaN(A)?c:A)+E*n*(u.shiftKey?10:1))}),se(v,p,n,()=>c,m,()=>d.value),{el:w,set:u=>m(u,!1),get:()=>c}}var ae=(e,t="",n=2,r=24)=>`<svg${t?` class="${t}"`:""} viewBox="0 0 ${r} ${r}" fill="none" stroke="currentColor" stroke-width="${n}" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`,le=ae('<path d="M6 4v8M10 4v8"/>',"",1.5,16),Pe=(e,t)=>({el:e,set:()=>{},get:()=>{},destroy:t}),N={},Oe=(e,t)=>{N[e]=t},Re=e=>N[e];export{P as a,L as b,ue as c,k as d,H as e,O as f,R as g,ce as h,de as i,me as j,fe as k,I as l,V as m,_ as n,g as o,we as p,$ as q,C as r,be as s,ge as t,D as u,X as v,K as w,ve as x,pe as y,j as z,he as A,F as B,Ee as C,ye as D,Le as E,G as F,Me as G,Y as H,J as I,T as J,Te as K,xe as L,Ce as M,Z as N,Q as O,Ae as P,te as Q,ke as R,He as S,S as T,ne as U,re as V,ie as W,Fe as X,Se as Y,Ne as Z,ae as _,Pe as $,Oe as aa,Re as ba};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as a,d as b,e as c,f as d,g as e}from"./chunk-DPJ7YRTN.js";import"./chunk-GC5PWSSX.js";export{a as CHECKER,d as createPickerBody,b as isColor,e as oklchStr,c as parseColor};
|
package/dist/tweaks/core.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as Jt,B as he,C as Gt,D as ge,E as Ut,F as jt,G as ye,H as we,I as Zt,J as Qt,K as te,M as ve,N as Bt,O as st,P as Dt,a as Wt,b as $,c as ce,d as de,e as pe,f as xt,g as zt,h as kt,i as ue,j as w,l as ut,m as J,p as fe,q as Vt,r as It,s as me,t as Rt,y as be,z as Kt}from"./chunk-GJESM23Q.js";var ee={interval:()=>import("./interval-7OUK7M7J.js"),color:()=>import("./colour-W46T6NIC.js"),gradient:()=>import("./gradient-YEKTFEP4.js"),tabs:()=>import("./tabs-CGHJ2VS2.js"),image:()=>import("./image-VKNBVMVK.js"),fpsgraph:()=>import("./monitor-CY7CABK6.js"),monitor:()=>import("./monitor-CY7CABK6.js"),spring:()=>import("./spring-Z2SKXUVV.js"),cubicbezier:()=>import("./bezier-ZSQNFANZ.js"),point:()=>import("./point-23BHLSGI.js"),plot:()=>import("./plot-X5IZM3QU.js")},$t={},qe=t=>Dt(t)||!ee[t]?null:$t[t]||($t[t]=ee[t]().catch(e=>{throw delete $t[t],console.error(`[tweaks] control chunk "${t}" failed to load:`,e),e})),ne=(t,e=new Set)=>{for(let s of t)if(s&&(ee[s.type]&&e.add(s.type),s.children&&ne(s.children,e),s.pages))for(let n of s.pages)ne(n.children,e);return e},Ne=t=>{let e=[...ne(t)].map(qe).filter(Boolean);return e.length?Promise.all(e):null};function Ht(t,e,s=0){if(t==="__proto__"||t==="constructor"||t==="prototype")return null;let n=He(t,e,s);return n&&e&&typeof e=="object"&&(typeof e.render=="function"&&(n.render=e.render),e.disabled!=null&&(n.disabled=e.disabled),e.hint!=null&&(n.hint=String(e.hint))),n}var Lt=t=>t&&typeof t=="object",re=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),xe=(t,e)=>t!==e&&!(Lt(t)&&Lt(e)&&JSON.stringify(t)===JSON.stringify(e)),ke=(t,e,s)=>Array.isArray(t.options)&&{type:"radiogrid",key:e,label:s,options:t.options,value:t.value??kt(t.options[0]),cols:t.cols},Le={slider:(t,e,s)=>{let n=t.min??0,r=t.max??1;return{type:"slider",key:e,label:s,value:t.value??n,min:n,max:r,step:t.step??xt(n,r),soft:t.soft}},number:(t,e,s)=>({type:"number",key:e,label:s,value:t.value??0,min:t.min,max:t.max,step:t.step??1,soft:t.soft}),checkbox:(t,e,s)=>({type:"checkbox",key:e,label:s,value:!!t.value}),radiogrid:ke,segmented:ke,list:(t,e,s)=>Array.isArray(t.options)&&{type:"list",key:e,label:s,options:t.options,value:t.value??kt(t.options[0])},color:(t,e,s)=>({type:"color",key:e,label:t.label||s,value:t.value}),text:(t,e,s)=>({type:"text",key:e,label:s,value:t.value??"",rows:t.rows,placeholder:t.placeholder}),interval:(t,e,s)=>{let n=t.min??0,r=t.max??1;return{type:"interval",key:e,label:s,value:(Array.isArray(t.value)?t.value:[n,r]).map(Number),min:n,max:r,step:t.step??xt(n,r)}},spring:(t,e,s)=>{let n=Lt(t.value)?t.value:t;return{type:"spring",key:e,label:s,value:{stiffness:n.stiffness??300,damping:n.damping??26,mass:n.mass??1}}},cubicbezier:(t,e,s)=>({type:"cubicbezier",key:e,label:s,value:Array.isArray(t.value)&&t.value.length===4?t.value.map(Number):[.25,.1,.25,1]}),point:(t,e,s)=>Array.isArray(t.components)&&{type:"point",key:e,label:s,components:t.components,pad:t.pad,invertY:t.invertY,value:Object.fromEntries(t.components.map(n=>[n.key,n.value??0]))},gradient:(t,e,s)=>({type:"gradient",key:e,label:s,value:t.value??t.stops??null}),image:(t,e,s)=>({type:"image",key:e,label:s,value:t.value||""}),plot:(t,e,s)=>{let n=t.expr!=null?String(t.expr):typeof t.fn=="function"?"":"sin(x)";return{type:"plot",key:e,label:s,value:n,expr:n,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,s)=>({type:"fpsgraph",key:e,label:t.label||s}),monitor:(t,e,s)=>({type:"monitor",key:e,label:s,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,s)=>({type:"buttongroup",key:e,label:s,buttons:t.buttons}),separator:(t,e,s)=>({type:"separator",key:e,label:s}),tabs:(t,e,s,n)=>{if(!t.pages||typeof t.pages!="object")return!1;let r=new Set;return{type:"tabs",key:e,label:s,pages:Object.entries(t.pages).map(([o,b])=>{let k=o.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",g=k,y=2;for(;r.has(g);)g=`${k}-${y++}`;return r.add(g),{key:g,title:o,children:Object.entries(b).map(([L,v])=>Ht(L,v,(n||0)+1)).filter(Boolean)}})}}};function He(t,e,s=0){if(s>64)return null;let n=Wt(t);if(Lt(e)&&!Array.isArray(e)&&re(Le,e.type)){let r;try{r=Le[e.type](e,t,n,s)}catch(o){return console.error(`[tweaks] malformed "${e.type}" schema value for "${t}" \u2014 control skipped:`,o),null}if(r)return r}if(Array.isArray(e)&&Array.isArray(e[0])&&e[0].length===2&&typeof e[0][0]=="number"){let r=Number.isFinite(+e[1])?+e[1]:+e[0][0],o=Number.isFinite(+e[2])?+e[2]:+e[0][1];return{type:"interval",key:t,label:n,value:e[0].map(Number),min:r,max:o,step:e[3]??xt(r,o)}}if(Array.isArray(e)&&e.length<=4&&typeof e[0]=="number"){let r=e[0],[o,b]=zt(r),k=e.length>1?e[1]:o,g=e.length>2?e[2]:b;return{type:"slider",key:t,label:n,value:r,min:k,max:g,step:e[3]??xt(k,g)}}if(typeof e=="number"){let[r,o]=zt(e);return{type:"slider",key:t,label:n,value:e,min:r,max:o,step:xt(r,o)}}return typeof e=="boolean"?{type:"checkbox",key:t,label:n,value:e}:Array.isArray(e)?{type:"list",key:t,label:n,options:e,value:kt(e[0])}:Lt(e)&&typeof e.action=="function"?{type:"button",key:t,label:e.label||n,action:e.action}:Lt(e)&&Array.isArray(e.options)?{type:"list",key:t,label:n,options:e.options,value:e.value??kt(e.options[0])}:ce(e)?{type:"color",key:t,label:n,value:e}:typeof e=="string"?{type:"text",key:t,label:n,value:e}:Lt(e)?{type:"folder",key:t,label:n,children:Object.entries(e).filter(([r,o])=>!(r==="render"&&typeof o=="function")&&!((r==="disabled"||r==="hint")&&o!=null)).map(([r,o])=>Ht(r,o,s+1)).filter(Boolean)}:null}var Xe=3,Ee=32,Ae=200,Se=8;function Ye(t,e){let s=t.label,n=+t.min,r=+t.max,o=+t.step;if(Number.isFinite(n)||(n=0),Number.isFinite(r)||(r=n+100),r<n){let a=n;n=r,r=a}(!(o>0)||o>r-n)&&(o=xt(n,r));let b=(r-n)/o<=6,k=Number.isFinite(+t.value)?+t.value:n,g=t.soft&&!b?k:$(k,n,r),y=0,L=de(o),v=w("div","tw-slider-wrap"),p=w("div","tw-slider"),V=w("div","tw-slider-hashmarks"),m=w("div","tw-slider-fill"),S=w("div","tw-slider-handle"),X=J("span","tw-slider-label",s),M=w("span","tw-slider-value");p.append(V,m,S,X,M),v.append(p),p.tabIndex=0,p.setAttribute("role","slider"),p.setAttribute("aria-label",s),p.setAttribute("aria-valuemin",String(n)),p.setAttribute("aria-valuemax",String(r));let rt=a=>pe(a,n,o),Et=b?Array.from({length:Math.max(0,Math.round((r-n)/o)-1)},(a,E)=>(E+1)*o/(r-n)*100):[];for(let a of Et){let E=w("div","tw-slider-hashmark");E.style.left=a+"%",V.append(E)}let G=()=>{let a=$((g-n)/(r-n||1)*100,0,100),E=y?` + ${y.toFixed(1)}px`:"",_=`${a}%${E}`;m.style.width=y?`calc(${_})`:a+"%",S.style.left=`max(5px, calc(${_} - 9px))`;let H=rt(g),W=H.toFixed(L);M.textContent=W,p.setAttribute("aria-valuenow",String(H)),p.setAttribute("aria-valuetext",W);let vt=v.offsetWidth;if(vt){let c=Math.max(5,a/100*vt+y-9),A=0,x=X.offsetLeft,T=x+X.offsetWidth,d=M.offsetLeft,i=d+M.offsetWidth,f=c<T&&c+3>x,u=c<i+A&&c+3>d-A;p.classList.toggle("is-dodge",f||u)}};G();let N=null,lt=1,et=null,ct=!0,h,B=null,ot=null,At="width 0.34s cubic-bezier(0.34,1.2,0.64,1)",yt="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)",ft=.2,K=a=>{if(!N)return g;let E=v.offsetWidth||N.width,_=$((a-N.left)/lt/E,0,1);return $(n+_*(r-n),n,r)},it=a=>{let E=0;a<N.left?E=-Se*Math.sqrt(Math.min(Math.max(0,N.left-a-Ee)/Ae,1)):a>N.right&&(E=Se*Math.sqrt(Math.min(Math.max(0,a-N.right-Ee)/Ae,1))),p.style.width=`calc(100% + ${Math.abs(E)}px)`,p.style.transform=E<0?`translateX(${E}px)`:""},nt=(a,E=!0)=>{a=+a,Number.isFinite(a)&&(g=b?$(rt(a),n,r):t.soft?a:$(a,n,r),G(),E&&e(rt(g)))},Y=Math.max(1,Math.round((r-n)/o)),mt=.2,Ot=.3,Pt=520,dt=27,bt=a=>(a-n)/o,I=0,U=0,Z=0,pt=!1,St=null,Ct=g,D=0,q=()=>{Z&&cancelAnimationFrame(Z),Z=0,D=0},Q=a=>{if(!p.isConnected){q();return}let E=D?Math.min((a-D)/1e3,.05):1/60;D=a;let _=v.offsetWidth||N&&N.width||1,H=bt($(Ct,n,r)),W=$(Math.round(H+mt),0,Y),vt=pt?W+Ot*$(H-W,-.5,.5):W,tt=E,Mt=1/240;for(;tt>1e-4;){let c=Math.min(Mt,tt);tt-=c;let A=Pt*(vt-I)-dt*U;U+=A*c,I+=U*c,I<0&&(I=0,U=0),I>Y&&(I=Y,U=0)}y=(I-W)*o/(r-n||1)*_,g=$(n+W*o,n,r),G(),W!==St&&(St=W,e(rt(g))),!pt&&Math.abs(U)<.004&&Math.abs(I-W)<.004?(I=W,U=0,y=0,G(),q(),p.classList.remove("is-active")):Z=requestAnimationFrame(Q)},Tt=a=>{I=bt(g),U=0,pt=!0,St=Math.round(bt(g)),Ct=K(a),Z||(Z=requestAnimationFrame(Q))};p.addEventListener("pointerdown",a=>{if(!M.classList.contains("is-editing")&&!(a.button!==0||et)){a.preventDefault(),p.focus({focusVisible:!1}),ot=a.pointerId;try{a.target.setPointerCapture(a.pointerId)}catch{}clearTimeout(h),p.style.transition="",et={x:a.clientX,y:a.clientY},ct=!0,p.classList.add("is-active"),N=v.getBoundingClientRect(),lt=N.width/(v.offsetWidth||N.width),b?(m.style.transition="",S.style.transition="",Tt(a.clientX)):(m.style.transition=At,S.style.transition=yt,nt(K(a.clientX)))}}),p.addEventListener("pointermove",a=>{if(!(!et||a.pointerId!==ot)){if(a.buttons===0){wt();return}if(ct&&Math.hypot(a.clientX-et.x,a.clientY-et.y)>Xe&&(ct=!1,p.classList.add("is-dragging"),b||(m.style.transition="",S.style.transition="")),!ct)if(it(a.clientX),b)Ct=K(a.clientX);else{let E;if(a.altKey){B||(B={x:a.clientX,v:g});let _=v.offsetWidth||N.width;E=$(B.v+(a.clientX-B.x)/_*(r-n)*ft,n,r)}else B=null,E=K(a.clientX);nt(E)}a.clientX>=N.left&&a.clientX<=N.right&&(p.style.width="",p.style.transform="")}});let wt=a=>{!et||a&&a.pointerId!==ot||(b?(pt=!1,p.classList.remove("is-dragging"),Z||(Z=requestAnimationFrame(Q))):(h=setTimeout(()=>{m.style.transition="",S.style.transition=""},360),p.classList.remove("is-active","is-dragging")),p.style.transition="width 0.35s cubic-bezier(0.22,1,0.36,1), transform 0.35s cubic-bezier(0.22,1,0.36,1)",p.style.width="",p.style.transform="",setTimeout(()=>{p.style.transition=""},360),et=null,B=null,ot=null)};p.addEventListener("pointerup",wt),p.addEventListener("pointercancel",wt),p.addEventListener("lostpointercapture",wt),me(p,G),Vt(G),It(p,[[window,"resize"]],G),p.addEventListener("keydown",a=>{b&&(q(),y=0);let E=a.shiftKey?10:1,_=(r-n)/10||o*10,H=g;switch(a.key){case"ArrowRight":case"ArrowUp":H=g+o*E;break;case"ArrowLeft":case"ArrowDown":H=g-o*E;break;case"PageUp":H=g+_;break;case"PageDown":H=g-_;break;case"Home":H=n;break;case"End":H=r;break;default:return}a.preventDefault(),nt($(H,n,r))});let Nt;return M.addEventListener("mouseenter",()=>{Nt=setTimeout(()=>M.classList.add("is-editable"),800)}),M.addEventListener("mouseleave",()=>{clearTimeout(Nt),M.classList.contains("is-editing")||M.classList.remove("is-editable")}),M.addEventListener("pointerdown",a=>{a.pointerType&&a.pointerType!=="mouse"?(M.classList.add("is-editable"),a.stopPropagation()):M.classList.contains("is-editable")&&a.stopPropagation()}),M.addEventListener("click",()=>{if(!M.classList.contains("is-editable"))return;let a=w("input","tw-slider-input");a.type="text",a.inputMode="decimal",a.value=rt(g).toFixed(L),M.classList.add("is-editing"),M.replaceWith(a),a.focus(),a.select();let E=()=>{let _=parseFloat(a.value);isNaN(_)||nt(t.soft?_:$(_,n,r)),a.replaceWith(M),M.classList.remove("is-editing","is-editable")};a.addEventListener("pointerdown",_=>_.stopPropagation()),a.addEventListener("blur",E),a.addEventListener("keydown",_=>{_.key==="Enter"?E():_.key==="Escape"&&(a.replaceWith(M),M.classList.remove("is-editing","is-editable"))})}),{el:v,set:a=>nt(a,!1),get:()=>rt(g)}}function We(t,e,s,n){let r=w("div","tw-seg");r.setAttribute("role","radiogroup"),n&&r.setAttribute("aria-label",n);let o=w("div","tw-seg-pill");r.append(o);let b=t.map(L=>{let v=Qt("tw-seg-btn",L,p=>y(p));return r.append(v),v}),k=L=>we(r,o,L),g=()=>{Zt(b,e),k(!0)},y=(L,v=!0)=>{e=L,g(),v&&s(L)};return r.addEventListener("keydown",L=>{let v=b.findIndex(V=>V.dataset.value===String(e));if(v<0)return;let p=te(L.key,v,b.length);p<0||(L.preventDefault(),y(b[p]._twVal),b[p].focus())}),g(),Vt(()=>{k(),r.classList.add("is-ready")}),{el:r,set:L=>y(L,!1),get:()=>e}}function ze(t,e){let s=w("div","tw-row"),n=We([{value:"off",label:"Off"},{value:"on",label:"On"}],t.value?"on":"off",r=>e(r==="on"),t.label);return s.append(J("span","tw-row-label",t.label),n.el),{el:s,set:r=>n.set(r?"on":"off"),get:()=>n.get()==="on"}}function Ve(t,e){let s=t.options||[],n=Math.min(3,Math.max(2,t.cols||(s.length<=3?s.length:s.length===4?2:3))),r=w("div","tw-radiogrid"),o=w("div","tw-radiogrid-grid");o.style.setProperty("--tw-rg-cols",n),o.setAttribute("role","radiogroup"),o.setAttribute("aria-label",t.label);let b=t.value??kt(s[0]),k=s.map(L=>{let v=Qt("tw-radiogrid-btn",L,p=>y(p));return o.append(v),v}),g=()=>Zt(k,b),y=(L,v=!0)=>{b=L,g(),v&&e(L)};return o.addEventListener("keydown",L=>{let v=k.findIndex(V=>V.dataset.value===String(b));if(v<0)return;let p=te(L.key,v,k.length,n);p<0||(L.preventDefault(),p!==v&&(y(k[p]._twVal),k[p].focus()))}),g(),r.append(J("span","tw-radiogrid-label",t.label),o),{el:r,set:L=>y(L,!1),get:()=>b}}var Ke='<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 Je(t,e){let s=t.value,n=t.options.map(m=>({value:kt(m),label:ue(m)})),r=w("div","tw-select"),o=ut("tw-select-trigger");o.setAttribute("aria-haspopup","listbox"),o.setAttribute("aria-expanded","false");let b=w("span","tw-select-right"),k=w("span","tw-select-value");b.append(k),b.insertAdjacentHTML("beforeend",Ke),o.append(J("span","tw-select-label",t.label),b);let g=w("div","tw-select-dropdown");g.setAttribute("role","listbox");let y=n.map(m=>{let S=ut("tw-select-option");return S.setAttribute("role","option"),S.textContent=m.label,S.dataset.value=m.value,S.addEventListener("click",()=>{v(m.value),p.close()}),g.append(S),S});r.append(o,g);let L=()=>{k.textContent=(n.find(m=>m.value===s)||{}).label??s,y.forEach(m=>{let S=m.dataset.value===String(s);m.dataset.selected=String(S),m.setAttribute("aria-selected",String(S))})},v=(m,S=!0)=>{s=m,L(),S&&e(m)},p=Ut(r,o,g,{width:"match",fallbackH:200,gap:4,onOpen:()=>(y.find(m=>m.dataset.value===String(s))||y[0])?.focus()});o.addEventListener("keydown",m=>{!p.isOpen()&&(m.key==="ArrowDown"||m.key==="ArrowUp")&&(m.preventDefault(),p.open())}),g.addEventListener("keydown",m=>{let S=y.indexOf(document.activeElement),X=S;if(m.key==="ArrowDown")X=S<0?0:Math.min(y.length-1,S+1);else if(m.key==="ArrowUp")X=S<0?y.length-1:Math.max(0,S-1);else if(m.key==="Home")X=0;else if(m.key==="End")X=y.length-1;else return;m.preventDefault(),y[X]?.focus()});let V=m=>{p.isOpen()&&!r.contains(m.relatedTarget)&&!g.contains(m.relatedTarget)&&p.close()};return o.addEventListener("focusout",V),g.addEventListener("focusout",V),L(),{el:r,set:m=>v(m,!1),get:()=>s}}function Ge(t){let e=J("button","tw-button",t.label);return e.type="button",e.addEventListener("click",()=>t.action&&t.action()),Bt(e)}function Ue(t){let e=w("div","tw-row tw-buttongroup");t.label&&e.append(J("span","tw-row-label",t.label));let s=w("div","tw-buttongroup-btns"),n=Array.isArray(t.buttons)?t.buttons.map(r=>[r.label,r.action]):Object.entries(t.buttons||{});for(let[r,o]of n){let b=J("button","tw-buttongroup-btn",r);b.type="button",b.addEventListener("click",()=>typeof o=="function"&&o()),s.append(b)}return e.append(s),Bt(e)}var Ze=()=>Bt(w("div","tw-separator"));function Qe(t,e){let s=t.value??"",n=t.rows>0,r=w("div",n?"tw-row tw-row-multiline":"tw-row"),o=w(n?"textarea":"input",n?"tw-text tw-textarea":"tw-text");return n?o.rows=t.rows:o.type="text",o.value=s,Rt(o),t.placeholder&&(o.placeholder=t.placeholder),o.addEventListener("input",()=>{s=o.value,e(s)}),r.append(J("span","tw-row-label",t.label),o),{el:r,set:b=>{s=b==null?"":String(b),o.value=s},get:()=>s}}var tn=(t,e)=>ve({...t,row:!0},e);function oe(t){let e=w("div","tw-folder"),s=ut("tw-folder-header");s.setAttribute("aria-expanded","true"),s.append(J("span","tw-folder-title",t.label)),s.insertAdjacentHTML("beforeend",an);let n=w("div","tw-folder-body"),r=w("div","tw-controls");return n.append(r),e.append(s,n),s.addEventListener("click",()=>{let o=e.classList.toggle("is-collapsed");s.setAttribute("aria-expanded",o?"false":"true")}),{el:e,body:r}}var en=new Set(["button","fpsgraph","monitor","buttongroup","separator"]);function se(t,e){let s=Dt(t.type);if(!s)return null;try{return s(t,e)}catch(n){return console.error("[tweaks] control failed to build:",t&&t.type,n),null}}var nn='<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>',sn='<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>',rn='<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>',on='<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>',an='<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>',ln='<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>',cn='<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>',Ce='<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>',qt=(t,e,s)=>{let n=ut("tw-toolbar-btn"+(t?" "+t:""),e);return n.title=s,n.setAttribute("aria-label",s),n},Fe=()=>qt("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${nn}${sn}</span>`,"Copy values"),Ie=()=>qt("tw-toolbar-btn--reset",rn,"Reset"),Re=t=>{t.classList.add("is-copied"),clearTimeout(t._t),t._t=setTimeout(()=>t.classList.remove("is-copied"),1400)},je=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",n=>{n.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 s=()=>{e.getAnimations&&e.getAnimations().length?t._t=setTimeout(s,250):t._spinSettle()};t._t=setTimeout(s,600)},ht=null,Te=0;function gt(t,e){ht||(ht=w("div","tw-toast tw-portal"),ht.setAttribute("role","status"),document.body.appendChild(ht)),ht.textContent=t,Gt(ht,e),ht.classList.add("is-open"),clearTimeout(Te),Te=setTimeout(()=>ht.classList.remove("is-open"),1600)}var z=null,ie=0,Me=null,ae=t=>{t.key==="Escape"&&le()},le=()=>{clearTimeout(ie),document.removeEventListener("keydown",ae),z&&z.classList.remove("is-open")};function dn(t,e){z||(z=w("div","tw-tip tw-portal"),z.setAttribute("role","tooltip"),document.body.appendChild(z)),clearTimeout(ie),z.textContent=e,Gt(z,t);let s=z.classList.contains("is-open");z.style.visibility="hidden",z.classList.add("is-open"),be(t,z,{align:"center",prefer:"above",gap:8}),z.style.visibility="",document.addEventListener("keydown",ae),Me=t,s||requestAnimationFrame(function n(){if(z.classList.contains("is-open")){if(!Me.isConnected)return le();requestAnimationFrame(n)}})}function _e(){z&&(ie=setTimeout(()=>{z.classList.remove("is-open"),document.removeEventListener("keydown",ae)},80))}function Be(t,e){let s=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,n=s.closest("button"),r=n?w("span","tw-hint",Ce):ut("tw-hint",Ce),o=()=>dn(r,e);if(n){r.setAttribute("aria-hidden","true");let b=n.getAttribute("aria-description");n.setAttribute("aria-description",b?`${b}. ${e}`:e)}else r.setAttribute("aria-label",e),r.addEventListener("focus",o),r.addEventListener("blur",_e),r.addEventListener("keydown",b=>{(b.key==="Enter"||b.key===" ")&&b.stopPropagation()});r.addEventListener("pointerenter",o),r.addEventListener("pointerleave",_e),r.addEventListener("pointerdown",b=>b.stopPropagation()),r.addEventListener("click",b=>{b.preventDefault(),b.stopPropagation()}),s.appendChild(r)}async function De(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 s=!1;try{s=document.execCommand("copy")}catch{}return document.body.removeChild(e),s}st("slider",Ye);st("checkbox",ze);st("radiogrid",Ve);st("list",Je);st("button",Ge);st("buttongroup",Ue);st("separator",Ze);st("text",Qe);st("number",tn);st("folder",oe);function mn(t,e,s={}){let n=Object.entries(e).filter(([c])=>c!=="_last"||(console.warn('[tweaks] "_last" is reserved (the changed-key channel) \u2014 schema entry skipped'),!1)).map(([c,A])=>Ht(c,A)).filter(Boolean),r={},o=[],b=new Set,k=new Set,g=[],y=!1,L=!1,v=[],p=null,V=()=>{},m=()=>({}),S=()=>!1,X=()=>!1,M=()=>{},rt=()=>{},Et=()=>{},G=()=>{k.forEach(c=>{try{c(r,r._last)}catch(A){console.error("[tweaks] listener threw:",A)}}),V()},N=s.persist?`tw:${s.persist===!0?t:s.persist}`:null,lt=N?`${N}:presets`:null,et=c=>{try{return JSON.parse(localStorage.getItem(c)||"null")}catch{return null}},ct=(c,A)=>{try{localStorage.setItem(c,JSON.stringify(A))}catch{}},h=w("div","tw-panel");h.dataset.mode="inline",fe(h);let B=w("div","tw-header"),ot=ut("tw-header-toggle");ot.setAttribute("aria-expanded","true"),ot.append(J("span","tw-title",t));let At=w("div","tw-toolbar"),yt=Fe(),ft=Ie(),K=null;N&&(K=qt("",ln,"Presets"),K.setAttribute("aria-haspopup","menu"),K.setAttribute("aria-expanded","false"),At.append(K));let it=!!s.filter,nt=it?qt("",on,"Filter controls"):null,Y=it?w("input","tw-search"):null;it&&(Y.type="text",Y.placeholder="Filter\u2026",Y.spellcheck=!1,Y.setAttribute("aria-label","Filter controls"),Rt(Y),At.append(nt)),At.append(yt,ft),B.append(ot),it&&B.append(Y),s.toolbar!==!1&&B.append(At);for(let c of[yt,ft,K,nt])c&&(c.disabled=!0);let mt=!1;ot.addEventListener("click",()=>{if(mt){mt=!1;return}let c=h.classList.toggle("is-collapsed");ot.setAttribute("aria-expanded",c?"false":"true"),h.dataset.mode==="floating"&&setTimeout(()=>{h.dataset.mode==="floating"&&h.isConnected&&(Tt(),Q())},270)});let Ot=w("div","tw-body"),Pt=w("div","tw-controls");Ot.append(Pt),h.append(B,Ot);let dt=Kt(s.theme);Jt(h,dt),h._twTheme=dt;let bt=s.draggable!==!1,I=8,U=28,Z=()=>({maxX:Math.max(I,window.innerWidth-h.offsetWidth-I),maxY:Math.max(I,window.innerHeight-h.offsetHeight-I)}),pt=N?`${N}:pos`:null,St=(bt||s.floating)&&pt?et(pt):null,Ct=St||(typeof s.floating=="object"?s.floating:null)||{x:16,y:16},D=+Ct.x||16,q=+Ct.y||16,Q=()=>{h.style.left=D+"px",h.style.top=q+"px"},Tt=()=>{let{maxX:c,maxY:A}=Z();D=$(D,I,c),q=$(q,I,A)};(bt||s.floating)&&(s.floating||St)&&(h.dataset.mode="floating",Tt(),Q(),requestAnimationFrame(()=>{!y&&h.dataset.mode==="floating"&&h.isConnected&&(Tt(),Q())}));let wt=c=>{c.set(c.def),c.target[c.key]=c.get(),r._last=c.key,G()},Nt=(c,A)=>{let x=c.querySelector(".tw-slider-value")||c.querySelector(".tw-row-label, .tw-select-label, .tw-trigger-label, .tw-radiogrid-label, .tw-field-label")||c;x.classList.add("tw-resettable"),x.title="Double-click or hold to reset";let T=0,d=0,i=0,f=!1,u=()=>{T&&(clearTimeout(T),T=0,x.classList.remove("tw-reset-holding"))};x.addEventListener("pointerdown",l=>{l.stopPropagation(),f=!1,!(l.pointerType!=="touch"&&l.pointerType!=="pen")&&(d=l.clientX,i=l.clientY,x.classList.add("tw-reset-holding"),T=setTimeout(()=>{T=0,x.classList.remove("tw-reset-holding","is-editable"),f=!0,wt(A)},500))}),x.addEventListener("pointermove",l=>{T&&Math.abs(l.clientX-d)+Math.abs(l.clientY-i)>8&&u()}),x.addEventListener("pointerup",u),x.addEventListener("pointercancel",u),x.addEventListener("pointerleave",u),x.addEventListener("contextmenu",l=>{f&&l.preventDefault()}),x.addEventListener("click",l=>{f&&(l.preventDefault(),l.stopImmediatePropagation(),f=!1)},!0),x.addEventListener("dblclick",l=>{l.preventDefault(),l.stopPropagation(),wt(A)})},a=[],E=(c,A)=>{A.hint&&Be(c,A.hint),(A.render||A.disabled!=null)&&a.push({node:c,m:A})},_=[],H=[],W=(c,A,x,T=[],d=null)=>{for(let i of A){if(i.type==="tabs"){let l={};b.add(l),x[i.key]=l;let F=Dt("tabs"),R=F&&F(i);if(!R)continue;i.pages.forEach((C,j)=>{let O={};b.add(O),l[C.key]=O,W(R.bodies[j],C.children,O,[...T,i.key,C.key])}),E(R.el,i),c.append(R.el);continue}if(i.type==="folder"){let l={};b.add(l),x[i.key]=l;let F=oe(i),R=it?{el:F.el,label:i.label,body:F.body}:null;R&&H.push(R),W(F.body,i.children,l,[...T,i.key],R),E(F.el,i),c.append(F.el);continue}if(en.has(i.type)){let l=se(i,()=>{});l&&(it&&i.type!=="separator"&&_.push({el:l.el,label:i.label,folder:d}),E(l.el,i),c.append(l.el));continue}let f=se(i,l=>{xe(x[i.key],l)&&(x[i.key]=l,r._last=i.key,G())});if(!f)continue;re(x,i.key)&&f.set(x[i.key]),x[i.key]=f.get();let u={target:x,key:i.key,set:f.set,get:f.get,def:i.value,path:[...T,i.key]};o.push(u),Nt(f.el,u),E(f.el,i),it&&_.push({el:f.el,label:i.label,folder:d}),c.append(f.el)}},vt=()=>{if(y)return;if(W(Pt,n,r),a.length){let d=new Map;for(let u of o)d.has(u.key)||d.set(u.key,u);let i=u=>{let l=d.get(u);return l?l.target[l.key]:r[u]},f=()=>{for(let{node:u,m:l}of a)try{if(l.render&&u.classList.toggle("tw-cond-hidden",!l.render(i)),l.disabled!=null){let F=typeof l.disabled=="function"?l.disabled(i):l.disabled;u.classList.toggle("is-disabled",!!F),u.inert=!!F}}catch{}};k.add(f),f()}if(it){let d=f=>{let u=f.trim().toLowerCase();if(!u){_.forEach(l=>l.el.classList.remove("tw-filter-hidden")),H.forEach(l=>l.el.classList.remove("tw-filter-hidden"));return}for(let l of _){let F=l.folder&&jt(l.folder.label,u);l.el.classList.toggle("tw-filter-hidden",!(jt(l.label,u)||F))}for(let l of H.slice().reverse()){let F=[...l.body.children].some(R=>!R.classList.contains("tw-filter-hidden"));l.el.classList.toggle("tw-filter-hidden",!(jt(l.label,u)||F))}},i=()=>{h.classList.remove("is-searching"),Y.value="",d("")};nt.addEventListener("click",()=>{h.classList.toggle("is-searching")?(Y.focus(),Y.select()):i()}),Y.addEventListener("input",()=>d(Y.value)),Y.addEventListener("keydown",f=>{f.key==="Escape"&&(i(),nt.focus())})}let c=(d,i)=>i.reduce((f,u)=>f?.[u],d),A=function(d,i){return d==="_last"&&this===r?void 0:i},x=()=>JSON.parse(JSON.stringify(r,A)),T=(d,i=!0)=>{if(!(!d||typeof d!="object")){for(let f of o){let u=c(d,f.path);u!==void 0&&(f.set(u),f.target[f.key]=f.get())}r._last=void 0,i&&G()}};if(N){let d;V=()=>{clearTimeout(d),d=setTimeout(()=>ct(N,x()),150)},g.push(()=>clearTimeout(d)),T(et(N))}if(m=()=>{let d=lt?et(lt):null;return Object.assign(Object.create(null),d&&typeof d=="object"?d:{})},S=d=>{if(!lt||!d)return!1;let i=m();return i[d]=x(),ct(lt,i),!0},X=d=>{let i=m();return i[d]?(T(i[d]),!0):!1},M=d=>{if(!lt)return;let i=m();delete i[d],ct(lt,i)},bt||s.floating){if(bt){h.dataset.draggable="true";let C=w("span","tw-grabber");C.setAttribute("aria-hidden","true"),B.prepend(C)}let d=()=>{if(h.dataset.mode==="floating")return;let C=h.getBoundingClientRect();D=C.left,q=C.top,h.parentNode&&(p=w("span","tw-lift-slot"),p.style.width=C.width+"px",p.style.height=C.height+"px",p.setAttribute("aria-hidden","true"),h.before(p)),he(h,h),document.body.appendChild(h),h.dataset.mode="floating",Q()},i=null,f=0,u=0,l=0,F=0;B.addEventListener("pointerdown",C=>{if(!(C.button!==0||i!==null||C.target.closest(".tw-toolbar, input, textarea, select")))if(i=C.pointerId,f=C.clientX,u=C.clientY,mt=!1,h.classList.add("is-grabbing"),h.style.transition){let j=getComputedStyle(h);D=parseFloat(j.left)||D,q=parseFloat(j.top)||q,h.style.transition="",Q()}else h.style.transition=""}),B.addEventListener("pointermove",C=>{if(C.pointerId!==i)return;let j=C.clientX-f,O=C.clientY-u;if(!mt){if(Math.abs(j)+Math.abs(O)<4)return;mt=!0,d(),l=D,F=q;try{B.setPointerCapture(i)}catch{}h.classList.add("is-dragging")}let{maxX:at,maxY:Ft}=Z();D=$(l+j,I,at),q=$(F+O,I,Ft),Q()});let R=C=>{if(C.pointerId===i){try{B.releasePointerCapture(i)}catch{}if(i=null,mt){let{maxX:j,maxY:O}=Z();D<=I+U?D=I:D>=j-U&&(D=j),q<=I+U?q=I:q>=O-U&&(q=O),ye.matches||(h.style.transition="left 0.32s var(--tw-ease-spring), top 0.32s var(--tw-ease-spring)",setTimeout(()=>{h.style.transition=""},340)),Q(),pt&&ct(pt,{x:D,y:q})}h.classList.remove("is-dragging","is-grabbing")}};B.addEventListener("pointerup",R),B.addEventListener("pointercancel",R),B.addEventListener("lostpointercapture",R),g.push(It(h,[[window,"resize"]],()=>{h.dataset.mode==="floating"&&(Tt(),Q())}))}if(K){let d=w("div","tw-presets-menu"),i=w("div","tw-presets-save"),f=w("input","tw-presets-input");f.type="text",f.placeholder="Preset name\u2026",f.spellcheck=!1,f.setAttribute("aria-label","New preset name"),Rt(f);let u=J("button","tw-presets-savebtn","Save");u.type="button",i.append(f,u);let l=w("div","tw-presets-list");d.append(i,l);let F=()=>{let j=m(),O=Object.keys(j);if(l.replaceChildren(),!O.length)return l.append(J("div","tw-presets-empty","No presets yet"));for(let at of O){let Ft=w("div","tw-presets-row"),Xt=J("button","tw-presets-load",at);Xt.type="button",Xt.addEventListener("click",()=>{X(at),C.close(),gt(`Loaded \u201C${at}\u201D`,h)});let Yt=ut("tw-presets-del",cn);Yt.setAttribute("aria-label",`Delete preset ${at}`),Yt.addEventListener("click",$e=>{$e.stopPropagation(),M(at),F()}),Ft.append(Xt,Yt),l.append(Ft)}},R=()=>{let j=f.value.trim();if(!j){f.focus();return}S(j),f.value="",F(),gt(`Saved \u201C${j}\u201D`,h)},C=Ut(K,K,d,{width:208,fallbackH:160,gap:6,align:"end",onOpen:()=>{F(),f.focus()}});u.addEventListener("click",R),f.addEventListener("keydown",j=>{j.key==="Enter"&&R()})}if(yt.addEventListener("click",async()=>{await De(JSON.stringify(r,A,2))?(Re(yt),gt(`${t} values copied`,h)):gt("Copy failed",h)}),ft.addEventListener("click",()=>{if(je(ft),typeof s.onReset=="function")return s.onReset();o.forEach(d=>{d.set(d.def),d.target[d.key]=d.get()}),r._last=void 0,G()}),s.onEditStart||s.onEditEnd){let d=".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",i=!1,f=()=>{document.removeEventListener("pointerup",f,!0),document.removeEventListener("pointercancel",f,!0),i&&(i=!1,s.onEditEnd&&s.onEditEnd())},u=l=>{i||!l.target.closest(d)||(i=!0,s.onEditStart&&s.onEditStart(),document.addEventListener("pointerup",f,!0),document.addEventListener("pointercancel",f,!0))};h.addEventListener("pointerdown",u),h._twEditPointer=u,g.push(f)}if(s.undo){let d=[x()],i=0,f=!1,u=0,l=()=>{u=0;let O=x();JSON.stringify(O)!==JSON.stringify(d[i])&&(d=d.slice(0,i+1),d.push(O),i=d.length-1)},F=()=>{f||(clearTimeout(u),u=setTimeout(l,350))},R=()=>{u&&(clearTimeout(u),l())};k.add(F);let C=O=>{f=!0,T(d[O]),f=!1,i=O};rt=()=>{R(),i>0&&C(i-1)},Et=()=>{R(),i<d.length-1&&C(i+1)};let j=()=>h.matches(":hover")||h.contains(document.activeElement);g.push(It(h,[[document,"keydown"]],O=>{if(!j()||!(O.metaKey||O.ctrlKey))return;let at=O.key.toLowerCase();at==="z"?(O.preventDefault(),O.shiftKey?Et():rt()):at==="y"&&(O.preventDefault(),Et())}))}L=!0;for(let[d,i]of v.splice(0))tt.set(d,i);for(let d of[yt,ft,K,nt])d&&(d.disabled=!1)},tt={el:h,params:r,on(c){return y?()=>{}:(k.add(c),()=>k.delete(c))},set(c,A){if(y)return;let x=String(c).split(".");if(x.some(u=>u==="__proto__"||u==="constructor"||u==="prototype"))return console.warn(`[tweaks] set("${c}") ignored \u2014 reserved key`);if(!L)return void v.push([String(c),A]);let T;if(x.length>1){let u=r;for(let l=0;l<x.length-1&&u;l++)u=u[x[l]],b.has(u)||(u=null);if(T=u&&o.find(l=>l.target===u&&l.key===x[x.length-1]),!T)return console.warn(`[tweaks] set("${c}") \u2014 no control at that path`)}else{let u=o.filter(l=>l.key===c);if(u.length>1)return console.warn(`[tweaks] set("${c}") is ambiguous \u2014 ${u.length} controls share that key; use a dotted path (e.g. "${u[0].path.join(".")}")`);T=u[0]}let d=T?T.target:r,i=T?T.key:c,f=d[i];if(T)T.set(A),d[i]=T.get();else{if(b.has(r[c]))return console.warn(`[tweaks] set("${c}") ignored \u2014 it's a folder/tabs group; set its children instead`);r[c]=A}xe(f,d[i])&&(r._last=i,G())},reset(){y||ft.click()},setTheme(c){if(!y){if(dt)for(let A in dt)h.style.removeProperty(A);dt=Kt(c),h._twTheme=dt,Jt(h,dt),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:c=>!y&&S(c),loadPreset:c=>!y&&X(c),deletePreset:c=>{y||M(c)},presets:()=>y?[]:Object.keys(m()),undo:()=>{y||rt()},redo:()=>{y||Et()},destroy(){if(!y){y=!0,ge(),le();for(let c of g.splice(0))try{c()}catch{}k.clear(),p&&(p.remove(),p=null),h.remove()}}},Mt=Ne(n);return Mt?(tt.ready=h.ready=Mt.then(vt).then(()=>tt),tt.ready.catch(()=>{})):(vt(),tt.ready=h.ready=Promise.resolve(tt)),tt}var Oe={slider:t=>({value:P(t.value),min:P(t.min)??0,max:P(t.max)??100,step:P(t.step),soft:Pe(t.soft)}),checkbox:t=>t.options?{type:"radiogrid",options:_t(t.options),value:t.value,cols:P(t.cols)}:{value:t.checked==="true"},radiogrid:t=>({options:_t(t.options),value:t.value,cols:P(t.cols)}),list:t=>({options:_t(t.options),value:t.value}),color:t=>({value:t.value||"#7c5cff"}),button:(t,e,s)=>({action:()=>gt(`${s} pressed`,e)}),buttongroup:(t,e)=>({buttons:_t(t.buttons).map(s=>({label:s,action:()=>gt(`${s} pressed`,e)}))}),separator:()=>({}),number:t=>({value:P(t.value),min:P(t.min),max:P(t.max),step:P(t.step)}),text:t=>({value:t.value??"",placeholder:t.placeholder,rows:P(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:P(t.min),max:P(t.max),step:P(t.step)}),spring:t=>({stiffness:P(t.stiffness),damping:P(t.damping),mass:P(t.mass)}),cubicbezier:t=>({value:t.value?t.value.split(",").map(Number):void 0}),point:t=>{let e=(t.value||"").split(",").map(s=>parseFloat(s));return{components:_t(t.components||"X,Y").map((s,n)=>({key:s.toLowerCase(),label:s,value:isNaN(e[n])?0:e[n],step:P(t.step)??1,min:P(t.min),max:P(t.max)})),pad:Pe(t.pad),invertY:t.invertY==="true"}},plot:t=>({expr:t.expr,xMin:P(t.xmin),xMax:P(t.xmax),yMin:P(t.ymin),yMax:P(t.ymax),samples:P(t.samples),editable:t.editable!=="false"})},P=t=>t==null?void 0:+t,Pe=t=>t==="true"||t==="",_t=t=>(t||"").split(",").map(e=>e.trim()).filter(Boolean),pn=t=>{let e=t.dataset,s=e.tw;if(!re(Oe,s))return null;let n=e.label||Wt(e.key||s),r=Oe[s](e,t,n),o=Ht("v",{type:s,...r});return o&&(o.label=r.label||n),o};async function un(t=document){t.querySelectorAll('.tw-panel[data-mode="inline"]:not([data-tw-panel-bound])').forEach(n=>{let r=n.querySelector(":scope > .tw-header"),o=n.querySelector(":scope > .tw-controls");if(!r||!o)return;n.setAttribute("data-tw-panel-bound","");let b=w("div","tw-body");n.insertBefore(b,o),b.append(o);let k=r.querySelector(".tw-header-toggle"),g=r.querySelector(".tw-title");if(!k&&g&&(k=ut("tw-header-toggle"),g.replaceWith(k),k.append(g)),!!k&&(k.setAttribute("aria-expanded","true"),k.addEventListener("click",()=>{let y=n.classList.toggle("is-collapsed");k.setAttribute("aria-expanded",y?"false":"true")}),!r.querySelector(".tw-toolbar"))){let y=g&&g.textContent||"Panel",L=w("div","tw-toolbar"),v=Fe(),p=Ie();L.append(v,p),r.append(L);let V=()=>[...n.querySelectorAll("[data-tw]")].map(m=>m._tw).filter(m=>m&&m.ctrl.get()!==void 0);v.addEventListener("click",async()=>{let m={};for(let X of V())m[X.key]=X.ctrl.get();await De(JSON.stringify(m,null,2))?(Re(v),gt(`${y} values copied`,n)):gt("Copy failed",n)}),p.addEventListener("click",()=>{je(p);for(let m of V())m.ctrl.set(m.def),m.host.dataset.value=m.ctrl.get()})}}),t.querySelectorAll('[data-tw="folder"]:not([data-tw-bound])').forEach(n=>{n.setAttribute("data-tw-bound","");let r=oe({label:n.dataset.label||"Folder"});[...n.children].forEach(o=>r.body.append(o)),n.append(r.el)});let e=[...t.querySelectorAll("[data-tw]:not([data-tw-bound])")].map(n=>({host:n,meta:pn(n)})).filter(n=>n.meta);e.forEach(({host:n})=>n.setAttribute("data-tw-bound",""));let s=Ne(e.map(n=>n.meta));s&&await s.catch(()=>{});for(let{host:n,meta:r}of e){let o=se(r,b=>n.dataset.value=b);o&&(n.append(o.el),n.dataset.hint&&Be(o.el,n.dataset.hint),n._tw={ctrl:o,def:r.value,key:r.label,host:n})}}if(typeof document<"u"){let t=()=>un(document);document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}export{un as enhance,mn as tweaks};
|
|
1
|
+
import{$ as dt,F as tn,G as Ct,H as Tt,I as nn,J as St,K as on,L as it,M as at,N as Ve,O as lt,P as At,R as ct,S as Ne,T as rn,U as sn,V as an,W as ln,X as cn,Z as dn,_ as ge,a as xt,aa as oe,b as B,ba as we,c as Xt,d as Vt,e as Yt,f as zt,g as Ke,h as Wt,i as Gt,j as Jt,k as rt,l as he,m as Ut,n as Zt,o as E,q as U,r as Y,u as Qt,v as st,w as Xe,x as Mt,y as en,z as He}from"./chunk-GC5PWSSX.js";var un=ge('<rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>',"tw-toolbar-btn__copy"),pn=ge('<path d="M20 6 9 17l-5-5"/>',"tw-toolbar-btn__check",2.4),fn=ge('<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8M3 3v5h5"/>'),mn=ge('<circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/>'),Ot=e=>ge('<path d="m6 9 6 6 6-6"/>',e,2.5),gn=Ot("tw-chevron"),bn=ge('<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"/>'),yn=ge('<path d="M18 6 6 18M6 6l12 12"/>',"",2.2),Pt=ge('<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>');var Ye=(e,t,r)=>{let o=U("tw-toolbar-btn"+(e?" "+e:""),t);return o.title=r,o.setAttribute("aria-label",r),o},ft=(e,t,r)=>{let o=Ye("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${un}${pn}</span>`,"Copy values");return o.addEventListener("click",async()=>{o.disabled||(await Kn(r())?(Bn(o),ve(`${t} values copied`,e)):ve("Copy failed",e))}),o},mt=e=>{let t=Ye("tw-toolbar-btn--reset",fn,"Reset");return t.addEventListener("click",()=>{t.disabled||(_t(t),e())}),t},Bn=e=>{e.classList.add("is-copied"),clearTimeout(e._t),e._t=setTimeout(()=>e.classList.remove("is-copied"),1400)},_t=e=>{let t=e.querySelector("svg");e._spinSettle||(e._spinSettle=()=>{clearTimeout(e._t),e.classList.remove("is-spinning"),t.style.transition="none",t.style.setProperty("--tw-spin","0deg"),t.getBoundingClientRect(),t.style.transition=""},t.addEventListener("transitionend",o=>{o.propertyName==="transform"&&e.classList.contains("is-spinning")&&performance.now()-e._spinT>250&&e._spinSettle()})),e._spinT=performance.now(),t.style.setProperty("--tw-spin",`${(parseFloat(t.style.getPropertyValue("--tw-spin"))||0)-360}deg`),e.classList.add("is-spinning"),clearTimeout(e._t);let r=()=>{t.getAnimations&&t.getAnimations().length?e._t=setTimeout(r,250):e._spinSettle()};e._t=setTimeout(r,600)},be=null,hn=0;function ve(e,t){be||(be=E("div","tw-toast tw-portal"),be.setAttribute("role","status")),be.isConnected||document.body.appendChild(be),be.textContent=e,St(be,t),be.classList.add("is-open"),clearTimeout(hn),hn=setTimeout(()=>be.classList.remove("is-open"),1600)}var X=null,ut=0,pt=null,vn=e=>{e.key==="Escape"&&ze()},ze=e=>{e&&pt&&!e.contains(pt)||(clearTimeout(ut),document.removeEventListener("keydown",vn),X&&X.classList.remove("is-open"))};function qn(e,t){X||(X=E("div","tw-tip tw-portal"),X.setAttribute("role","tooltip")),X.isConnected||document.body.appendChild(X),clearTimeout(ut),X.textContent=t,St(X,e);let r=X.classList.contains("is-open");X.style.visibility="hidden",X.classList.add("is-open"),tn(e,X,{align:"center",prefer:"above",gap:8}),X.style.visibility="",document.addEventListener("keydown",vn),pt=e,r||requestAnimationFrame(function o(){if(X.classList.contains("is-open")){if(!pt.isConnected)return ze();requestAnimationFrame(o)}})}function wn(){X&&(clearTimeout(ut),ut=setTimeout(ze,80))}var Ht=".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 Ie(e,t){let r=e.querySelector(Ht)||e;if(r===e&&e.classList.contains("tw-separator"))return;let o=r.closest("button"),s=o?E("span","tw-hint",Pt):U("tw-hint",Pt),l=()=>qn(s,t);if(o){s.setAttribute("aria-hidden","true");let c=o.getAttribute("aria-description");o.setAttribute("aria-description",c?`${c}. ${t}`:t)}else s.setAttribute("aria-label",t),s.addEventListener("focus",l),s.addEventListener("blur",wn),s.addEventListener("keydown",c=>{(c.key==="Enter"||c.key===" ")&&c.stopPropagation()});s.addEventListener("pointerenter",l),s.addEventListener("pointerleave",wn),s.addEventListener("pointerdown",c=>c.stopPropagation()),s.addEventListener("click",c=>{c.preventDefault(),c.stopPropagation()}),r.appendChild(s)}async function Kn(e){try{return await navigator.clipboard.writeText(e),!0}catch{}let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.top="-9999px",document.body.appendChild(t),t.focus(),t.select();let r=!1;try{r=document.execCommand("copy")}catch{}return document.body.removeChild(t),r}function Se(e,t,r=0){if(gt(e))return null;let o=Vn(e,t,r);return o&&t&&typeof t=="object"&&(typeof t.render=="function"&&(o.render=t.render),t.disabled!=null&&(o.disabled=t.disabled),t.hint!=null&&(o.hint=String(t.hint))),o}var Te=e=>e&&typeof e=="object",Ee=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),gt=e=>e==="__proto__"||e==="constructor"||e==="prototype",ke=(e,t)=>e!==t&&!(Te(e)&&Te(t)&&JSON.stringify(e)===JSON.stringify(t)),bt=(e,t,r)=>{e.set(r),e.set(t)},En=e=>Array.isArray(e.options)&&{type:"radiogrid",options:e.options,value:e.value??he(e.options[0]),cols:e.cols},Tn="#7c5cff",kn=(e,...t)=>{let r=(t.length?t:[0]).map(l=>rt(Number.isFinite(+l)?+l:0)),o=e.min??Math.min(...r.map(l=>l[0])),s=e.max??Math.max(...r.map(l=>l[1]));return{min:o,max:s,step:e.step??Ke(o,s)}},Ln=(e,t)=>e.label==null?t:String(e.label),xn={slider:e=>{let t=kn(e,e.value??e.min??0);return{value:e.value??t.min,...t,soft:e.soft}},number:e=>({value:e.value??0,min:e.min,max:e.max,step:e.step??1,soft:e.soft}),checkbox:e=>({value:!!e.value}),radiogrid:En,segmented:En,list:e=>Array.isArray(e.options)&&{options:e.options,value:e.value??he(e.options[0])},color:e=>({value:e.value??Tn}),text:e=>({value:e.value??"",rows:e.rows,placeholder:e.placeholder}),interval:e=>{let t=kn(e,...Array.isArray(e.value)?e.value:[]);return{value:(Array.isArray(e.value)?e.value:[t.min,t.max]).map(Number),...t}},spring:e=>{let t=Te(e.value)?e.value:e,r={stiffness:t.stiffness??300,damping:t.damping??26,mass:t.mass??1};Number.isFinite(+t.visualDuration)&&(r.visualDuration=+t.visualDuration),Number.isFinite(+t.bounce)&&(r.bounce=+t.bounce);let o=e.mode??t.mode;return(o==="time"||o==="physics")&&(r.mode=o),{value:r}},cubicbezier:e=>({value:Array.isArray(e.value)&&e.value.length===4?e.value.map(Number):[.25,.1,.25,1]}),point:e=>{if(!Array.isArray(e.components)||!e.components.length)return!1;let t=new Set,r=e.components.map((o,s)=>{let l=String(o.key??((o.label?String(o.label).toLowerCase():"")||`c${s}`)),c=l,u=2;for(;t.has(c);)c=`${l}-${u++}`;return t.add(c),{...o,key:c}});return{components:r,pad:e.pad,invertY:e.invertY,value:Object.fromEntries(r.map(o=>[o.key,o.value??0]))}},gradient:e=>({value:e.value??e.stops??null}),image:e=>({value:e.value||""}),plot:e=>{let t=e.expr!=null?String(e.expr):typeof e.fn=="function"?"":"sin(x)";return{value:t,expr:t,fn:typeof e.fn=="function"?e.fn:null,xMin:e.xMin??e.min??-10,xMax:e.xMax??e.max??10,yMin:e.yMin,yMax:e.yMax,samples:e.samples,editable:e.editable}},fpsgraph:()=>({}),monitor:e=>({get:e.get,value:e.value,graph:e.graph,view:e.view,min:e.min,max:e.max,interval:e.interval,rows:e.rows,decimals:e.decimals}),buttongroup:e=>({buttons:e.buttons}),separator:()=>({}),tabs:(e,t)=>{if(!e.pages||typeof e.pages!="object"||!Object.keys(e.pages).length)return!1;let r=new Set;return{pages:Object.entries(e.pages).map(([o,s])=>{let l=o.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",c=l,u=2;for(;r.has(c);)c=`${l}-${u++}`;return r.add(c),{key:c,title:o.trim()?o:"Tab",children:Object.entries(s).map(([b,h])=>Se(b,h,t+1)).filter(Boolean)}})}}},Xn=Object.assign(Object.create(null),{list:"options",radiogrid:"options",segmented:"options",point:"components",tabs:"pages"});function Vn(e,t,r=0){if(r>64)return null;let o=xt(e),s=(l,c,u=o)=>({type:l,key:e,label:u,...c});if(Te(t)&&!Array.isArray(t)&&Ee(xn,t.type)){let l;try{l=xn[t.type](t,r)}catch(c){return console.error(`[tweaks] malformed "${t.type}" schema value for "${e}" \u2014 control skipped:`,c),null}if(l)return s(String(t.type),l,Ln(t,o));if(Ee(t,Xn[t.type]))return console.error(`[tweaks] malformed "${t.type}" schema value for "${e}" \u2014 control skipped`),null}if(Array.isArray(t)&&Array.isArray(t[0])&&t[0].length===2&&typeof t[0][0]=="number"){let l=Number.isFinite(+t[1])?+t[1]:+t[0][0],c=Number.isFinite(+t[2])?+t[2]:+t[0][1];return s("interval",{value:t[0].map(Number),min:l,max:c,step:t[3]??Ke(l,c)})}if(Array.isArray(t)&&t.length<=4&&typeof t[0]=="number"){let l=t[0],[c,u]=rt(l),b=t.length>1?t[1]:c,h=t.length>2?t[2]:u;return s("slider",{value:l,min:b,max:h,step:t[3]??Ke(b,h)})}if(typeof t=="number"){let[l,c]=rt(t);return s("slider",{value:t,min:l,max:c,step:Ke(l,c)})}return typeof t=="boolean"?s("checkbox",{value:t}):Array.isArray(t)?s("list",{options:t,value:he(t[0])}):Te(t)&&typeof t.action=="function"?s("button",{action:t.action},Ln(t,o)):Te(t)&&Array.isArray(t.options)?s("list",{options:t.options,value:t.value??he(t.options[0])}):Xt(t)?s("color",{value:t}):typeof t=="string"?s("text",{value:t}):Te(t)?s("folder",{children:Object.entries(t).filter(([l,c])=>!(l==="render"&&typeof c=="function")&&!((l==="disabled"||l==="hint")&&c!=null)).map(([l,c])=>Se(l,c,r+1)).filter(Boolean)}):null}var yt=new Set(["button","fpsgraph","monitor","buttongroup","separator"]),Mn={slider:e=>({value:H(e.value),min:H(e.min),max:H(e.max),step:H(e.step),soft:Cn(e.soft)}),checkbox:e=>e.options?{type:"radiogrid",options:We(e.options),value:e.value,cols:H(e.cols)}:{value:e.checked==="true"},radiogrid:e=>({options:We(e.options),value:e.value,cols:H(e.cols)}),list:e=>({options:We(e.options),value:e.value}),color:e=>({value:e.value||Tn}),button:(e,t,r)=>({action:()=>ve(`${r} pressed`,t)}),buttongroup:(e,t)=>({buttons:We(e.buttons).map(r=>({label:r,action:()=>ve(`${r} pressed`,t)}))}),separator:()=>({}),number:e=>({value:H(e.value),min:H(e.min),max:H(e.max),step:H(e.step)}),text:e=>({value:e.value??"",placeholder:e.placeholder,rows:H(e.rows)}),image:e=>({value:e.value}),fpsgraph:e=>({label:e.label??"FPS"}),interval:e=>({value:e.value?e.value.split(",").map(Number):void 0,min:H(e.min),max:H(e.max),step:H(e.step)}),spring:e=>({stiffness:H(e.stiffness),damping:H(e.damping),mass:H(e.mass),visualDuration:H(e.visualDuration),bounce:H(e.bounce),mode:e.mode}),cubicbezier:e=>({value:e.value?e.value.split(",").map(Number):void 0}),point:e=>{let t=(e.value||"").split(",").map(r=>parseFloat(r));return{components:We(e.components||"X,Y").map((r,o)=>({key:r.toLowerCase(),label:r,value:isNaN(t[o])?0:t[o],step:H(e.step),min:H(e.min),max:H(e.max)})),pad:Cn(e.pad),invertY:e.invertY==="true"}},plot:e=>({expr:e.expr,xMin:H(e.xmin),xMax:H(e.xmax),yMin:H(e.ymin),yMax:H(e.ymax),samples:H(e.samples),editable:e.editable!=="false"})},H=e=>{if(e==null||e==="")return;let t=+e;return Number.isFinite(t)?t:void 0},Cn=e=>e==="true"||e==="",We=e=>(e||"").split(",").map(t=>t.trim()).filter(Boolean),Sn=e=>{let t=e.dataset,r=t.tw;if(!Ee(Mn,r))return null;let o=t.label??xt(t.key||r),s=Mn[r](t,e,o);return Se("v",{type:r,label:o,...s})};var Nt={interval:()=>import("./interval-KXOP2WEL.js"),color:()=>import("./colour-ZTCDZ2NN.js"),gradient:()=>import("./gradient-54DF4XNE.js"),tabs:()=>import("./tabs-AVAHPF5A.js"),image:()=>import("./image-IR5QKXT4.js"),fpsgraph:()=>import("./monitor-5K5VMRAL.js"),monitor:()=>import("./monitor-5K5VMRAL.js"),spring:()=>import("./spring-TPWZKO7B.js"),cubicbezier:()=>import("./bezier-WUBSS72H.js"),point:()=>import("./point-RPJKP5YR.js"),plot:()=>import("./plot-3WWIZG7H.js")},ht={},Yn=e=>we(e)||!Nt[e]?null:ht[e]||(ht[e]=Nt[e]().catch(t=>{throw delete ht[e],console.error(`[tweaks] control chunk "${e}" failed to load:`,t),t})),It=(e,t=new Set)=>{for(let r of e)if(r&&(Nt[r.type]&&t.add(r.type),r.children&&It(r.children,t),r.pages))for(let o of r.pages)It(o.children,t);return t},je=e=>{let t=[...It(e)].map(Yn).filter(Boolean);return t.length?Promise.all(t):null};var zn=3,An=32,On=200,Pn=8;function Wn(e,t){let r=e.label,{min:o,max:s,step:l}=Wt(e.min,e.max,e.step);e.soft||([o,s]=zt(o,s,l));let c=(s-o)/l<=6,u=Number.isFinite(+e.value)?+e.value:o,b=e.soft&&!c?u:B(u,o,s),h=0,S=Vt(l),w=E("div","tw-slider-wrap"),m=E("div","tw-slider"),k=E("div","tw-slider-hashmarks"),L=E("div","tw-slider-fill"),C=E("div","tw-slider-handle"),$=Y("span","tw-slider-label",r),j=E("span","tw-slider-value");m.append(k,L,C,$,j),w.append(m),m.tabIndex=0,m.setAttribute("role","slider"),m.setAttribute("aria-label",r),m.setAttribute("aria-valuemin",String(o)),m.setAttribute("aria-valuemax",String(s));let le=d=>Yt(d,o,l),wt=c?Array.from({length:Math.max(0,Math.round((s-o)/l)-1)},(d,O)=>(O+1)*l/(s-o)*100):[];for(let d of wt){let O=E("div","tw-slider-hashmark");O.style.left=d+"%",k.append(O)}let z=()=>{let d=B((b-o)/(s-o||1)*100,0,100),O=h?` + ${h.toFixed(1)}px`:"",_=`${d}%${O}`;L.style.width=h?`calc(${_})`:d+"%",C.style.left=`max(5px, calc(${_} - 9px))`;let P=le(b),F=P.toFixed(S);j.textContent=F,m.setAttribute("aria-valuenow",String(P)),m.setAttribute("aria-valuetext",F);let te=w.offsetWidth;if(te){let ae=Math.max(5,d/100*te+h-9);m.classList.toggle("is-dodge",Jt($,j,ae,3))}};z();let I=null,ce=1,G=null,de=!0,Je,J=null,ye=null,Ue=`width 0.34s ${At}`,Ze=`left 0.34s ${At}, opacity 0.15s, transform 0.2s ${lt}`,Re=.2,Le=d=>{if(!I)return b;let O=w.offsetWidth||I.width,_=B((d-I.left)/ce/O,0,1);return B(o+_*(s-o),o,s)},g=d=>{let O=0;d<I.left?O=-Pn*Math.sqrt(Math.min(Math.max(0,I.left-d-An)/On,1)):d>I.right&&(O=Pn*Math.sqrt(Math.min(Math.max(0,d-I.right-An)/On,1))),m.style.width=`calc(100% + ${Math.abs(O)}px)`,m.style.transform=O<0?`translateX(${O}px)`:""},K=(d,O=!0)=>{d=+d,Number.isFinite(d)&&(b=c?B(le(d),o,s):e.soft?d:B(d,o,s),z(),O&&t(le(b)))},ue=Math.max(1,Math.round((s-o)/l)),Ae=.2,Qe=.3,$e=520,re=27,Z=d=>(d-o)/l,q=0,D=0,Q=0,se=!1,pe=null,xe=b,fe=0,ee=()=>{Q&&cancelAnimationFrame(Q),Q=0,fe=0},ie=d=>{if(!m.isConnected){ee();return}let O=fe?Math.min((d-fe)/1e3,.05):1/60;fe=d;let _=w.offsetWidth||I&&I.width||1,P=Z(B(xe,o,s)),F=B(Math.round(P+Ae),0,ue),te=se?F+Qe*B(P-F,-.5,.5):F;if(Ve&&Ve.matches)q=te,D=0;else{let ae=O,vt=1/240;for(;ae>1e-4;){let Ce=Math.min(vt,ae);ae-=Ce;let Be=$e*(te-q)-re*D;D+=Be*Ce,q+=D*Ce,q<0&&(q=0,D=0),q>ue&&(q=ue,D=0)}}h=(q-F)*l/(s-o||1)*_,b=B(o+F*l,o,s),z(),F!==pe&&(pe=F,t(le(b))),!se&&Math.abs(D)<.004&&Math.abs(q-F)<.004?(q=F,D=0,h=0,z(),ee(),m.classList.remove("is-active")):Q=requestAnimationFrame(ie)},W=d=>{q=Z(b),D=0,se=!0,pe=Math.round(Z(b)),xe=Le(d),Q||(Q=requestAnimationFrame(ie))};m.addEventListener("pointerdown",d=>{if(!j.classList.contains("is-editing")&&!(d.button!==0||G)){d.preventDefault(),m.focus({focusVisible:!1}),ye=d.pointerId;try{d.target.setPointerCapture(d.pointerId)}catch{}clearTimeout(Je),m.style.transition="",G={x:d.clientX,y:d.clientY},de=!0,m.classList.add("is-active"),I=w.getBoundingClientRect(),ce=I.width/(w.offsetWidth||I.width),c?(L.style.transition="",C.style.transition="",W(d.clientX)):(L.style.transition=Ue,C.style.transition=Ze,K(Le(d.clientX)))}}),m.addEventListener("pointermove",d=>{if(!(!G||d.pointerId!==ye)){if(d.buttons===0){me();return}if(de&&Math.hypot(d.clientX-G.x,d.clientY-G.y)>zn&&(de=!1,m.classList.add("is-dragging"),c||(L.style.transition="",C.style.transition="")),!de)if(g(d.clientX),c)xe=Le(d.clientX);else{let O;if(d.altKey){J||(J={x:d.clientX,v:b});let _=w.offsetWidth||I.width;O=B(J.v+(d.clientX-J.x)/_*(s-o)*Re,o,s)}else J=null,O=Le(d.clientX);K(O)}d.clientX>=I.left&&d.clientX<=I.right&&(m.style.width="",m.style.transform="")}});let me=d=>{!G||d&&d.pointerId!==ye||(c?(se=!1,m.classList.remove("is-dragging"),Q||(Q=requestAnimationFrame(ie))):(Je=setTimeout(()=>{L.style.transition="",C.style.transition=""},360),m.classList.remove("is-active","is-dragging")),m.style.transition=`width 0.35s ${lt}, transform 0.35s ${lt}`,m.style.width="",m.style.transform="",setTimeout(()=>{m.style.transition=""},360),G=null,J=null,ye=null)};m.addEventListener("pointerup",me),m.addEventListener("pointercancel",me),m.addEventListener("lostpointercapture",me),en(m,z),st(z),Xe(m,[[window,"resize"]],z),m.addEventListener("keydown",d=>{if(d.target!==m||G)return;let O=Gt(d,b,l,o,s,(s-o)/10||l*10);O!=null&&(d.preventDefault(),c&&(ee(),h=0,m.classList.remove("is-active")),K(B(O,o,s)))});let Oe;j.addEventListener("mouseenter",()=>{Oe=setTimeout(()=>j.classList.add("is-editable"),800)}),j.addEventListener("mouseleave",()=>{clearTimeout(Oe),j.classList.contains("is-editing")||j.classList.remove("is-editable")}),j.addEventListener("pointerdown",d=>{d.pointerType&&d.pointerType!=="mouse"?(j.classList.add("is-editable"),d.stopPropagation()):j.classList.contains("is-editable")&&d.stopPropagation()});let Me=()=>{if(j.classList.contains("is-editing"))return;let d=E("input","tw-slider-input");d.type="text",d.inputMode="decimal",He(d),d.value=le(b).toFixed(S),j.classList.add("is-editing"),j.replaceWith(d),d.focus(),d.select();let O=()=>{d.replaceWith(j),j.classList.remove("is-editing","is-editable")},_=()=>{let P=parseFloat(d.value);isNaN(P)||K(e.soft?P:B(P,o,s)),O()};d.addEventListener("pointerdown",P=>P.stopPropagation()),d.addEventListener("blur",_),d.addEventListener("keydown",P=>{P.key==="Enter"?(d.removeEventListener("blur",_),m.focus(),_()):P.key==="Escape"&&(P.stopPropagation(),d.removeEventListener("blur",_),m.focus(),O())})};return j.addEventListener("click",()=>{j.classList.contains("is-editable")&&Me()}),m.addEventListener("keydown",d=>{d.key==="Enter"&&d.target===m&&!G&&(d.preventDefault(),Me())}),{el:w,set:d=>K(d,!1),get:()=>le(b)}}function Gn(e,t){let r=E("div","tw-row"),o=cn([{value:"off",label:"Off"},{value:"on",label:"On"}],e.value?"on":"off",s=>t(s==="on"),e.label);return r.append(Y("span","tw-row-label",e.label),o.el),{el:r,set:s=>o.set(s?"on":"off"),get:()=>o.get()==="on"}}function Jn(e,t){let r=e.options||[],o=Math.min(3,Math.max(2,e.cols||(r.length<=3?r.length:r.length===4?2:3))),s=E("div","tw-radiogrid"),l=E("div","tw-radiogrid-grid");l.style.setProperty("--tw-rg-cols",o),l.setAttribute("role","radiogroup"),l.setAttribute("aria-label",e.label);let c=e.value??he(r[0]),u=r.map(S=>{let w=an("tw-radiogrid-btn",S,m=>h(m));return l.append(w),w}),b=()=>sn(u,c),h=(S,w=!0)=>{S!=null&&!u.some(m=>m._twVal===S)||(c=S,b(),w&&t(S))};return l.addEventListener("keydown",S=>{let w=rn(u,c);if(w<0)return;let m=ln(S.key,w,u.length,o);m<0||(S.preventDefault(),m!==w&&(h(u[m]._twVal),u[m].focus()))}),b(),s.append(Y("span","tw-radiogrid-label",e.label),l),{el:s,set:S=>h(S,!1),get:()=>c}}var Un=Ot("tw-select-chevron");function Zn(e,t){let r=e.value,o=e.options.map(k=>({value:he(k),label:Zt(k)})),s=E("div","tw-select"),l=U("tw-select-trigger");l.setAttribute("aria-haspopup","listbox"),l.setAttribute("aria-expanded","false");let c=E("span","tw-select-right"),u=E("span","tw-select-value");c.append(u),c.insertAdjacentHTML("beforeend",Un),l.append(Y("span","tw-select-label",e.label),c);let b=E("div","tw-select-dropdown");b.setAttribute("role","listbox");let h=o.map(k=>{let L=U("tw-select-option");return L.setAttribute("role","option"),L.textContent=k.label,L.dataset.value=k.value,L.addEventListener("click",()=>{w(k.value),m.close()}),b.append(L),L});s.append(l,b);let S=()=>{u.textContent=(o.find(k=>k.value===r)||{}).label??r,h.forEach(k=>{let L=k.dataset.value===String(r);k.dataset.selected=String(L),k.setAttribute("aria-selected",String(L))})},w=(k,L=!0)=>{k!=null&&!o.some(C=>C.value===k)||(r=k,S(),L&&t(k))},m=it(s,l,b,{width:"match",fallbackH:200,gap:4,onOpen:()=>(h.find(k=>k.dataset.value===String(r))||h[0])?.focus()});return l.addEventListener("keydown",k=>{!m.isOpen()&&(k.key==="ArrowDown"||k.key==="ArrowUp")&&(k.preventDefault(),m.open())}),b.addEventListener("keydown",k=>{let L=h.indexOf(document.activeElement),C=L;if(k.key==="ArrowDown")C=L<0?0:Math.min(h.length-1,L+1);else if(k.key==="ArrowUp")C=L<0?h.length-1:Math.max(0,L-1);else if(k.key==="Home")C=0;else if(k.key==="End")C=h.length-1;else return;k.preventDefault(),h[C]?.focus()}),S(),{el:s,set:k=>w(k,!1),get:()=>r}}function Qn(e){let t=Y("button","tw-button",e.label);return t.addEventListener("click",()=>e.action&&e.action()),dt(t)}function eo(e){let t=E("div","tw-row tw-buttongroup");e.label&&t.append(Y("span","tw-row-label",e.label));let r=E("div","tw-buttongroup-btns"),o=Array.isArray(e.buttons)?e.buttons.map(s=>[s.label??"Button",s.action]):Object.entries(e.buttons||{});for(let[s,l]of o){let c=Y("button","tw-buttongroup-btn",s);c.addEventListener("click",()=>typeof l=="function"&&l()),r.append(c)}return t.append(r),dt(t)}var to=()=>dt(E("div","tw-separator"));function no(e,t){let r=u=>u==null?"":typeof u=="object"?Ut(u):String(u),o=r(e.value),s=e.rows>0,l=E("div",s?"tw-row tw-row-multiline":"tw-row"),c=E(s?"textarea":"input",s?"tw-text tw-textarea":"tw-text");return s?c.rows=e.rows:c.type="text",c.value=o,He(c),e.placeholder&&(c.placeholder=e.placeholder),c.addEventListener("input",()=>{o=c.value,t(o)}),l.append(Y("span","tw-row-label",e.label),c),{el:l,set:u=>{o=r(u),c.value=o},get:()=>o}}var oo=(e,t)=>dn({...e,row:!0},t);function Ge(e){let t=E("div","tw-folder"),r=U("tw-folder-header");r.setAttribute("aria-expanded","true"),r.append(Y("span","tw-folder-title",e.label)),r.insertAdjacentHTML("beforeend",gn);let o=E("div","tw-folder-body"),s=E("div","tw-controls");o.append(s),t.append(r,o);let l=c=>Ne(t,r,o,c);return r.addEventListener("click",()=>l(!t.classList.contains("is-collapsed"))),{el:t,body:s,setCollapsed:l}}function De(e,t){let r=we(e.type);if(!r)return null;try{return r(e,t)}catch(o){return console.error("[tweaks] control failed to build:",e&&e.type,o),null}}oe("slider",Wn);oe("checkbox",Gn);oe("radiogrid",Jn);oe("list",Zn);oe("button",Qn);oe("buttongroup",eo);oe("separator",to);oe("text",no);oe("number",oo);oe("folder",Ge);var Fe=null;function ro(e,t,r={}){let o=Object.entries(t).filter(([n])=>n!=="_last"||(console.warn('[tweaks] "_last" is reserved (the changed-key channel) \u2014 schema entry skipped'),!1)).map(([n,a])=>Se(n,a)).filter(Boolean),s={},l=[],c=new Set,u=new Set,b=[],h=!1,S=!1,w=[],m=new Map,k=!1,L=-1,C=n=>{if(!h){if(k){console.warn("[tweaks] call ignored \u2014 the panel could not be built");return}S?n():w.push(n)}},$=null,j=function(n,a){return n==="_last"&&this===s?void 0:a===void 0?null:typeof a=="bigint"?String(a):a},le=!1,wt=()=>{let n={};for(let a of l){let i=n;for(let f of a.path.slice(0,-1))i=i[f]||(i[f]={});i[a.key]=a.get()}return JSON.parse(JSON.stringify(n,j))},z=()=>{try{return JSON.parse(JSON.stringify(s,j))}catch(n){return le||(le=!0,console.warn("[tweaks] a value parked on params can't be serialised \u2014 snapshots carry the controls' values only:",n)),wt()}},I=r.persist?`tw:${r.persist===!0?e:r.persist}`:null,ce=I?`${I}:presets`:null,G=n=>{try{return JSON.parse(localStorage.getItem(n)||"null")}catch{return null}},de=(n,a)=>{try{localStorage.setItem(n,JSON.stringify(a))}catch{}},Je=I?(()=>{let n=0,a=()=>{n=0,de(I,z())};return b.push(()=>{n&&(clearTimeout(n),a())}),()=>{clearTimeout(n),n=setTimeout(a,150)}})():()=>{},J=()=>{u.forEach(n=>{try{n(s,s._last)}catch(a){console.error("[tweaks] listener threw:",a)}}),h||Je()},ye=n=>typeof n=="function"||typeof n=="symbol"||typeof n=="bigint",Ue=(n,a)=>{if(ye(a))throw new TypeError(`a ${typeof a} is not a control value`);n.set(a),n.target[n.key]=n.get()},Ze=n=>{bt(n,n.raw,n.def),n.target[n.key]=n.get()},Re=!1,Le=()=>{if(typeof r.onReset=="function"&&!Re){Re=!0;try{return r.onReset()}finally{Re=!1}}for(let n of l)try{Ze(n)}catch(a){console.error(`[tweaks] resetting "${n.path.join(".")}" failed \u2014 control skipped:`,a)}s._last=void 0,J()},g=E("div","tw-panel");g.dataset.mode="inline",Qt(g);let K=E("div","tw-header"),ue=U("tw-header-toggle");ue.setAttribute("aria-expanded","true"),ue.append(Y("span","tw-title",e));let Ae=E("div","tw-toolbar"),Qe=ft(g,e,()=>JSON.stringify(z(),null,2)),$e=mt(Le),re=null;I&&(re=Ye("",bn,"Presets"),re.setAttribute("aria-haspopup","menu"),re.setAttribute("aria-expanded","false"),Ae.append(re));let Z=!!r.filter&&(r.toolbar!==!1||(console.warn("[tweaks] opts.filter needs the toolbar (its search button lives there) \u2014 ignored alongside toolbar:false"),!1)),q=Z?Ye("",mn,"Filter controls"):null,D=Z?E("input","tw-search"):null;Z&&(D.type="text",D.placeholder="Filter\u2026",D.spellcheck=!1,D.setAttribute("aria-label","Filter controls"),He(D),Ae.append(q)),Ae.append(Qe,$e),K.append(ue),Z&&K.append(D),r.toolbar!==!1&&K.append(Ae);let Q=[Qe,$e,re,q].filter(Boolean);for(let n of Q)n.disabled=!0;let se=!1,pe=!1;K.addEventListener("click",n=>{pe&&(pe=!1,n.preventDefault(),n.stopPropagation())},!0),ue.addEventListener("click",()=>{Ne(g,ue,xe,!g.classList.contains("is-collapsed")),g.dataset.mode==="floating"&&setTimeout(()=>{g.dataset.mode==="floating"&&g.isConnected&&(te(),F())},270)});let xe=E("div","tw-body"),fe=E("div","tw-controls");xe.append(fe),g.append(K,xe);let ee=Ct(r.theme);Tt(g,ee),g._twTheme=ee;let ie=r.draggable!==!1,W=8,me=28,Oe=()=>({maxX:Math.max(W,window.innerWidth-g.offsetWidth-W),maxY:Math.max(W,window.innerHeight-g.offsetHeight-W)}),Me=I?`${I}:pos`:null,d=(ie||r.floating)&&Me?G(Me):null,O=d||(typeof r.floating=="object"?r.floating:null)||{x:16,y:16},_=+O.x||16,P=+O.y||16,F=()=>{g.style.left=_+"px",g.style.top=P+"px"},te=()=>{let{maxX:n,maxY:a}=Oe();_=B(_,W,n),P=B(P,W,a)};(ie||r.floating)&&(r.floating||d)&&(g.dataset.mode="floating",te(),F(),requestAnimationFrame(()=>{!h&&g.dataset.mode==="floating"&&g.isConnected&&(te(),F())}));let ae=n=>{Ze(n),s._last=n.key,J()},vt=(n,a)=>{let i=n.querySelector(".tw-slider-value")||n.querySelector(Ht)||n;i.classList.add("tw-resettable"),i.title="Double-click or hold to reset";let f=0,T=0,y=0,M=!1,v=()=>{f&&(clearTimeout(f),f=0,i.classList.remove("tw-reset-holding"))};i.addEventListener("pointerdown",p=>{p.stopPropagation(),M=!1,!(p.pointerType!=="touch"&&p.pointerType!=="pen")&&(T=p.clientX,y=p.clientY,i.classList.add("tw-reset-holding"),f=setTimeout(()=>{f=0,i.classList.remove("tw-reset-holding","is-editable"),M=!0,ae(a)},500))}),i.addEventListener("pointermove",p=>{f&&Math.abs(p.clientX-T)+Math.abs(p.clientY-y)>8&&v()}),i.addEventListener("pointerup",v),i.addEventListener("pointercancel",v),i.addEventListener("pointerleave",v),i.addEventListener("contextmenu",p=>{M&&p.preventDefault()}),i.addEventListener("click",p=>{M&&(p.preventDefault(),p.stopImmediatePropagation(),M=!1)},!0),i.addEventListener("dblclick",p=>{i===n&&p.target.closest&&p.target.closest("input, textarea")||(p.preventDefault(),p.stopPropagation(),ae(a))}),i.classList.contains("tw-slider-value")&&n.addEventListener("dblclick",p=>{let A=p.target;!A.classList||!A.classList.contains("tw-slider-input")||(p.preventDefault(),p.stopPropagation(),A.blur(),ae(a))}),n.addEventListener("keydown",p=>{!p.altKey||p.metaKey||p.ctrlKey||p.key!=="Backspace"&&p.key!=="Delete"||(p.preventDefault(),p.stopPropagation(),p.target.classList&&p.target.classList.contains("tw-slider-input")&&p.target.blur(),ae(a))})},Ce=[],Be=(n,a)=>{a.hint&&Ie(n,a.hint),(a.render||a.disabled!=null)&&Ce.push({node:n,m:a})},Et=[],kt=[],et=[],tt=[],In=n=>{typeof n.destroy=="function"&&b.push(n.destroy)},Lt=(n,a,i,f=[],T=null)=>{for(let y of a){if(y.type==="tabs"){let p={};c.add(p),i[y.key]=p;let A=we("tabs"),x=A&&A(y);if(!x)continue;tt.push({path:[...f,y.key],ctrl:x,pageKeys:y.pages.map(N=>N.key)}),y.pages.forEach((N,V)=>{let ne={};c.add(ne),p[N.key]=ne,Lt(x.bodies[V],N.children,ne,[...f,y.key,N.key])}),Be(x.el,y),n.append(x.el);continue}if(y.type==="folder"){let p={};c.add(p),i[y.key]=p;let A=Ge(y);et.push({path:[...f,y.key],el:A.el,setCollapsed:A.setCollapsed});let x=Z?{el:A.el,label:y.label,body:A.body}:null;x&&kt.push(x),Lt(A.body,y.children,p,[...f,y.key],x),Be(A.el,y),n.append(A.el);continue}let M=!yt.has(y.type),v=De(y,M?p=>{ke(i[y.key],p)&&(i[y.key]=p,s._last=y.key,J())}:()=>{});if(v){if(In(v),M){let p=v.get();Ee(i,y.key)&&v.set(i[y.key]),i[y.key]=v.get();let A={target:i,key:y.key,set:v.set,get:v.get,raw:y.value,def:p,path:[...f,y.key]};l.push(A),vt(v.el,A)}Be(v.el,y),Z&&y.type!=="separator"&&Et.push({el:v.el,label:y.label,folder:T}),n.append(v.el)}}};if(Z){let n=i=>{let f=i.trim().toLowerCase(),T=!1,y=(M,v)=>{!v&&M.classList.contains("tw-filter-hidden")&&(T=!0),M.classList.toggle("tw-filter-hidden",v)};if(!f)Et.forEach(M=>y(M.el,!1)),kt.forEach(M=>y(M.el,!1));else{for(let M of Et){let v=M.folder&&at(M.folder.label,f);y(M.el,!(at(M.label,f)||v))}for(let M of kt.slice().reverse()){let v=[...M.body.children].some(p=>!p.classList.contains("tw-filter-hidden"));y(M.el,!(at(M.label,f)||v))}}T&&Mt()},a=()=>{g.classList.remove("is-searching"),D.value="",n("")};q.addEventListener("click",()=>{q.disabled||(g.classList.toggle("is-searching")?(D.focus(),D.select()):a())}),D.addEventListener("input",()=>n(D.value)),D.addEventListener("keydown",i=>{i.key==="Escape"&&(a(),q.focus())})}let jn=(n,a)=>a.reduce((i,f)=>i?.[f],n),Dn=new Set(o.map(n=>n.key)),nt=(n,a=!0)=>{if(!(!n||typeof n!="object")){for(let i of l){let f=jn(n,i.path);if(f!==void 0)try{Ue(i,f)}catch(T){console.error(`[tweaks] restoring "${i.path.join(".")}" failed \u2014 value skipped:`,T)}}for(let i of Object.keys(n))if(!Dn.has(i)&&i!=="_last"&&Ee(s,i)&&!gt(i)&&!ye(n[i]))try{s[i]=n[i]}catch(f){console.error(`[tweaks] restoring "${i}" failed \u2014 value skipped:`,f)}s._last=void 0,a&&J()}},Pe=()=>{let n=ce?G(ce):null;return Object.assign(Object.create(null),n&&typeof n=="object"?n:{})},Dt=n=>{let a=Pe();a[n]=z(),de(ce,a)},Ft=n=>{let a=Pe();a[n]&&nt(a[n])},Rt=n=>{let a=Pe();delete a[n],de(ce,a)},ot=n=>n.map(a=>String(a).replace(/~/g,"~1").replace(/\./g,"~0")).join("."),Fn=()=>{let n={};if(et.length){let a={};for(let i of et)a[ot(i.path)]=i.el.classList.contains("is-collapsed");n.folders=a}if(tt.length){let a={};for(let i of tt)a[ot(i.path)]=i.pageKeys[i.ctrl.active()]??null;n.tabs=a}return n},Rn=n=>{if(!(!n||typeof n!="object")){if(n.folders)for(let a of et){let i=n.folders[ot(a.path)];typeof i=="boolean"&&a.setCollapsed(i)}if(n.tabs)for(let a of tt){let i=a.pageKeys.indexOf(n.tabs[ot(a.path)]);i>=0&&i!==a.ctrl.active()&&a.ctrl.activate(i)}}};if(ie||r.floating){if(ie){g.dataset.draggable="true";let x=E("span","tw-grabber");x.setAttribute("aria-hidden","true"),K.prepend(x)}let n=()=>{if(g.dataset.mode==="floating")return;let x=g.getBoundingClientRect();if(_=x.left,P=x.top,g.parentNode&&($=E("span","tw-lift-slot"),$.style.width=x.width+"px",$.style.height=x.height+"px",$.setAttribute("aria-hidden","true"),g.before($)),nn(g,g),document.body.appendChild(g),g.dataset.mode="floating",F(),$&&typeof MutationObserver=="function"){let N=new MutationObserver(()=>{$&&!$.isConnected&&(N.disconnect(),$=null,g.remove())});N.observe(document.documentElement,{childList:!0,subtree:!0}),b.push(()=>N.disconnect())}},a=()=>{Fe&&Fe!==g&&(Fe.style.zIndex=""),g.style.zIndex="99991",Fe=g},i=null,f=0,T=0,y=0,M=0,v=x=>{for(let[N,V]of[["pointermove",p],["pointerup",A],["pointercancel",A]])x?document.addEventListener(N,V,!0):document.removeEventListener(N,V,!0)};ie&&K.addEventListener("pointerdown",x=>{if(!(x.button!==0||i!==null||x.target.closest(".tw-toolbar, input, textarea, select"))&&(i=x.pointerId,f=x.clientX,T=x.clientY,se=!1,v(!0),g.classList.add("is-grabbing"),g.style.transition)){let N=getComputedStyle(g);_=parseFloat(N.left)||_,P=parseFloat(N.top)||P,g.style.transition="",F()}});let p=x=>{if(x.pointerId!==i)return;if(x.buttons===0){A(x);return}let N=x.clientX-f,V=x.clientY-T;if(!se){if(Math.abs(N)+Math.abs(V)<4)return;se=!0,n(),a(),y=_,M=P;try{K.setPointerCapture(i)}catch{}g.classList.add("is-dragging")}let{maxX:ne,maxY:R}=Oe();_=B(y+N,W,ne),P=B(M+V,W,R),F()},A=x=>{if(x.pointerId===i){try{K.releasePointerCapture(i)}catch{}if(i=null,v(!1),pe=se,pe&&setTimeout(()=>{pe=!1},0),se){let{maxX:N,maxY:V}=Oe();_<=W+me?_=W:_>=N-me&&(_=N),P<=W+me?P=W:P>=V-me&&(P=V),Ve.matches||(g.style.transition="left 0.32s var(--tw-ease-spring), top 0.32s var(--tw-ease-spring)",setTimeout(()=>{g.style.transition=""},340)),F(),Me&&de(Me,{x:_,y:P})}g.classList.remove("is-dragging","is-grabbing")}};K.addEventListener("lostpointercapture",A),b.push(()=>v(!1))}let $n=()=>{(ie||r.floating)&&(g.dataset.mode==="floating"&&(te(),F()),b.push(Xe(g,[[window,"resize"]],()=>{g.dataset.mode==="floating"&&(te(),F())})))};if(re){let n=E("div","tw-presets-menu"),a=E("div","tw-presets-save"),i=E("input","tw-presets-input");i.type="text",i.placeholder="Preset name\u2026",i.spellcheck=!1,i.setAttribute("aria-label","New preset name"),He(i);let f=Y("button","tw-presets-savebtn","Save");a.append(i,f);let T=E("div","tw-presets-list");n.append(a,T);let y=()=>{let p=Pe(),A=Object.keys(p);if(T.replaceChildren(),!A.length)return T.append(Y("div","tw-presets-empty","No presets yet"));for(let x of A){let N=E("div","tw-presets-row"),V=Y("button","tw-presets-load",x);V.addEventListener("click",()=>{Ft(x),v.close(),ve(`Loaded \u201C${x}\u201D`,g)});let ne=U("tw-presets-del",yn);ne.setAttribute("aria-label",`Delete preset ${x}`),ne.addEventListener("click",R=>{R.stopPropagation(),Rt(x),y()}),N.append(V,ne),T.append(N)}},M=()=>{let p=i.value.trim();if(!p){i.focus();return}Dt(p),i.value="",y(),ve(`Saved \u201C${p}\u201D`,g)},v=it(re,re,n,{width:208,fallbackH:160,gap:6,align:"end",onOpen:()=>{y(),i.focus()}});f.addEventListener("click",M),i.addEventListener("keydown",p=>{p.key==="Enter"&&M()})}if(r.onEditStart||r.onEditEnd){let n=".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",a=!1,i=()=>{document.removeEventListener("pointerup",i,!0),document.removeEventListener("pointercancel",i,!0),a&&(a=!1,r.onEditEnd&&r.onEditEnd())},f=T=>{a||!T.target.closest(n)||(a=!0,r.onEditStart&&r.onEditStart(),document.addEventListener("pointerup",i,!0),document.addEventListener("pointercancel",i,!0))};g.addEventListener("pointerdown",f),g._twEditPointer=f,b.push(i)}let qe=r.undo?(()=>{let a=[],i=0,f=!1,T=0,y=()=>{T=0;let R=z();JSON.stringify(R)!==JSON.stringify(a[i])&&(a=a.slice(0,i+1),a.push(R),a.length>200&&(a=a.slice(a.length-200)),i=a.length-1)},M=()=>{f||(clearTimeout(T),T=setTimeout(y,350))},v=()=>{T&&(clearTimeout(T),y())};u.add(M);let p=R=>{f=!0,nt(a[R]),f=!1,i=R},A=()=>{v(),i>0&&p(i-1)},x=()=>{v(),i<a.length-1&&p(i+1)},N=()=>g.matches(":hover")||g.contains(document.activeElement),V=R=>!!(R&&R.matches&&(R.matches("input, textarea")||R.isContentEditable)),ne=R=>{if(!N()||!(R.metaKey||R.ctrlKey)||V(R.target))return;let Kt=R.key.toLowerCase();Kt==="z"?(R.preventDefault(),R.shiftKey?x():A()):Kt==="y"&&(R.preventDefault(),x())};return{undo:A,redo:x,arm:()=>{a=[z()],i=0,b.push(Xe(g,[[document,"keydown"]],ne))}}})():null,$t=()=>{if(!h){if(L=b.length,Lt(fe,o,s),Ce.length){let n=new Map;for(let f of l)n.has(f.key)||n.set(f.key,f);let a=f=>{let T=n.get(f);return T?T.target[T.key]:s[f]},i=()=>{let f=!1;for(let{node:T,m:y}of Ce)try{if(y.render){let M=!y.render(a);!M&&T.classList.contains("tw-cond-hidden")&&(f=!0),T.classList.toggle("tw-cond-hidden",M)}if(y.disabled!=null){let M=typeof y.disabled=="function"?y.disabled(a):y.disabled;ct(T,!!M)}}catch{}f&&Mt()};u.add(i),i()}if(I&&nt(G(I)),!h){qe?.arm(),$n(),S=!0;for(let n of w.splice(0)){if(h)break;try{n()}catch(a){console.error("[tweaks] a call queued before ready failed:",a)}}m.clear();for(let n of Q)n.disabled=!1}}},Bt=(n,a)=>{if(String(n).split(".").some(gt))return console.warn(`[tweaks] set("${n}") ignored \u2014 reserved key`),!1;let i=String(n).split("."),f;if(i.length>1){let v=s;for(let p=0;p<i.length-1&&v;p++)v=v[i[p]],c.has(v)||(v=null);if(f=v&&l.find(p=>p.target===v&&p.key===i[i.length-1]),!f)return console.warn(`[tweaks] set("${n}") \u2014 no control at that path`),!1}else{let v=l.filter(A=>A.key===n),p=v.find(A=>A.target===s);if(!p&&v.length>1)return console.warn(`[tweaks] set("${n}") is ambiguous \u2014 ${v.length} controls share that key; use a dotted path (e.g. "${v[0].path.join(".")}")`),!1;f=p||v[0]}let T=f?f.target:s,y=f?f.key:n,M=T[y];if(f&&ye(a))return console.warn(`[tweaks] set("${n}") ignored \u2014 a ${typeof a} is not a control value`),!1;if(f)try{Ue(f,a)}catch(v){return console.error(`[tweaks] set("${n}") failed \u2014 value skipped:`,v),!1}else{if(c.has(s[n]))return console.warn(`[tweaks] set("${n}") ignored \u2014 it's a folder/tabs group; set its children instead`),!1;s[n]=a}return ke(M,T[y])?(s._last=y,!0):!1},_e={el:g,params:s,on(n){return h?()=>{}:(u.add(n),()=>u.delete(n))},set(n,a){let i=String(n);C(()=>{Bt(i,a)&&J()})},setMany(n){if(n==null||typeof n!="object")return;let a=Object.entries(n);C(()=>{let i=!1;for(let[f,T]of a)try{Bt(f,T)&&(i=!0)}catch(y){console.error(`[tweaks] setMany("${f}") failed \u2014 key skipped:`,y)}i&&J()})},reset(){S&&!h&&_t($e),C(Le)},toJSON(){return h?{values:{},ui:{}}:{values:z(),ui:Fn()}},fromJSON(n){if(!n||typeof n!="object")return;let a=n.values&&typeof n.values=="object"?{...n.values}:n.values,i=n.ui&&typeof n.ui=="object"?{...n.ui}:n.ui;C(()=>{a&&nt(a),Rn(i)})},setTheme(n){if(!h){if(ee)for(let a in ee)g.style.removeProperty(a);ee=Ct(n),g._twTheme=ee,Tt(g,ee),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:n=>h||k||!ce||!n?!1:(S||m.set(String(n),"save"),C(()=>Dt(n)),!0),loadPreset:n=>{let a=m.get(String(n));return h||k||a==="delete"||!(a==="save"||Pe()[n])?!1:(C(()=>Ft(n)),!0)},deletePreset:n=>{ce&&(S||m.set(String(n),"delete"),C(()=>Rt(n)))},presets:()=>h?[]:Object.keys(Pe()),undo:()=>{qe&&C(qe.undo)},redo:()=>{qe&&C(qe.redo)},destroy(){if(!h){h=!0,on(g),ze(g);for(let n of b.splice(0))try{n()}catch{}u.clear(),$&&($.remove(),$=null),Fe===g&&(Fe=null),g.dataset.twDestroyed="",g.remove()}}},qt=je(o);if(qt){let n=a=>{if(k=!0,w.length=0,L>=0)for(let i of b.splice(L))try{i()}catch{}for(let i of fe.children)i.dataset.twDestroyed="";throw u.clear(),l.length=0,fe.replaceChildren(),h||console.warn(`[tweaks] "${e}": the panel could not be built \u2014 ${L>=0?"the build threw":"its lazy controls failed to load"}; the API is inert`),a};_e.ready=g.ready=qt.then($t).then(()=>_e,n),_e.ready.catch(()=>{})}else $t(),_e.ready=g.ready=Promise.resolve(_e);return _e}var so=(e,t)=>{e.dataset.value=t==null?"":Array.isArray(t)?t.join(","):typeof t=="object"?Object.values(t).join(","):String(t)},io=(e,t,r)=>{so(e,r),e.dispatchEvent(new CustomEvent("tw:change",{bubbles:!0,detail:{key:t,value:r}}))},jt=(e,t)=>[...typeof e.matches=="function"&&e.matches(t)?[e]:[],...e.querySelectorAll(t)];async function _n(e=document){jt(e,'.tw-panel[data-mode="inline"]:not([data-tw-panel-bound])').forEach(o=>{let s=o.querySelector(":scope > .tw-header"),l=o.querySelector(":scope > .tw-controls");if(!s||!l)return;o.setAttribute("data-tw-panel-bound","");let c=E("div","tw-body");o.insertBefore(c,l),c.append(l);let u=s.querySelector(".tw-header-toggle"),b=s.querySelector(".tw-title");if(!u&&b&&(u=U("tw-header-toggle"),b.replaceWith(u),u.append(b)),!!u&&(u.setAttribute("aria-expanded","true"),u.addEventListener("click",()=>Ne(o,u,c,!o.classList.contains("is-collapsed"))),!s.querySelector(".tw-toolbar"))){let h=b&&b.textContent||"Panel",S=()=>[...o.querySelectorAll("[data-tw]")].map(L=>L._tw).filter(L=>L&&L.ctrl.get()!==void 0),w=()=>{let L=Object.create(null);for(let C of S()){let $=C.key,j=2;for(;Ee(L,$);)$=`${C.key}-${j++}`;L[$]=C.ctrl.get()}return JSON.stringify(L,null,2)},m=()=>{for(let L of S())L.reset()},k=E("div","tw-toolbar");k.append(ft(o,h,w),mt(m)),s.append(k)}}),jt(e,'[data-tw="folder"]:not([data-tw-bound])').forEach(o=>{o.setAttribute("data-tw-bound","");let s=Ge({label:o.dataset.label||"Folder"});[...o.children].forEach(l=>s.body.append(l)),o.append(s.el)});let t=jt(e,"[data-tw]:not([data-tw-bound])").map(o=>({host:o,meta:Sn(o)})).filter(o=>o.meta);t.forEach(({host:o})=>o.setAttribute("data-tw-bound",""));let r=je(t.map(o=>o.meta));r&&await r.catch(()=>{});for(let{host:o,meta:s}of t){let l=o.dataset.key||s.label,c,u=w=>{ke(c,w)&&(c=w,io(o,l,w))},b=De(s,u);if(!b)continue;o.closest(".tw-panel, .tw-portal")||o.classList.add("tw-portal"),o.append(b.el),o.dataset.hint&&Ie(b.el,o.dataset.hint);let h=b.get();c=h;let S={...b,set:w=>{b.set(w),u(b.get())}};o._tw={ctrl:S,raw:s.value,def:h,key:l,host:o,reset:()=>{bt(b,s.value,h),u(b.get())}}}}if(typeof document<"u"){let e=()=>_n(document);document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e):e()}var Hn=e=>E("div",`${e} tw-standalone tw-portal`),Nn=(e,t,r)=>{let o=je(e);if(!o)return t(),Promise.resolve(r);let s=o.then(t).then(()=>r);return s.catch(()=>{}),s};function ao(e,t,r={}){let o=r.key??"value",s=Se(o,t);if(!s||s.type==="folder"||s.type==="tabs")throw new TypeError(`[tweaks] mountControl: "${o}" is not a single-control schema value`);r.label!=null&&(s.label=String(r.label));let l=!yt.has(s.type),c=Hn("tw-control");e.append(c);let u=null,b=!1,h=s.value,S,w=!1,m=C=>{ke(h,C)&&(h=C,r.onChange&&r.onChange(C,o))},k=()=>{if(b||(u=De(s,l?m:()=>{}),!u))return;s.hint&&Ie(u.el,s.hint);let C=()=>{};try{s.render&&!s.render(C)&&u.el.classList.add("tw-cond-hidden")}catch{}try{(typeof s.disabled=="function"?s.disabled(C):s.disabled)&&ct(u.el,!0)}catch{}c.append(u.el),l&&(h=u.get(),w&&(u.set(S),m(u.get())))},L={el:c,set:C=>{b||!l||(u?(u.set(C),m(u.get())):(S=C,w=!0))},get:()=>l?u?u.get():w?S:s.value:void 0,destroy:()=>{b=!0,u&&typeof u.destroy=="function"&&u.destroy(),c.dataset.twDestroyed="",c.remove()},ready:null};return L.ready=Nn([s],k,L),L}function lo(e={}){let t=Hn("tw-color-picker"),r=null,o=!1,s=e.value,l,c=!1,u=null,b=w=>{ke(s,w)&&(s=w,e.onChange&&e.onChange(w))},h=()=>{if(o)return;let w=we("colorpicker");w&&(r=w({value:e.value,mode:e.mode},b),s=r.get(),t.append(r.el),u&&r.setMode(u),c&&(r.set(l),b(r.get())),st(r.reflow))},S={el:t,set:w=>{o||(r?(r.set(w),b(r.get())):(l=w,c=!0))},get:()=>r?r.get():c?l:e.value,mode:()=>r?r.mode():u||e.mode||"oklch",setMode:w=>{r?r.setMode(w):u=w},reflow:()=>{r&&r.reflow()},destroy:()=>{o=!0,t.remove()},ready:null};return S.ready=Nn([{type:"color"}],h,S),S}export{lo as createColorPicker,_n as enhance,ao as mountControl,ro as tweaks};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as V,b as D,c as q,d as J,e as P,f as Q,g as W}from"./chunk-DPJ7YRTN.js";import{B as X,L as N,Y,_ as z,aa as U,b as f,o as g,q as B}from"./chunk-GC5PWSSX.js";var it=z('<path d="M12 5v14M5 12h14"/>',"",2.5),Z=i=>i&&!Array.isArray(i)&&typeof i.interpolation=="string"?i.interpolation:null;function tt(i){let x=[{color:"oklch(0.72 0.19 25)",pos:0},{color:"oklch(0.72 0.16 280)",pos:1}],l=Array.isArray(i)?i:i&&Array.isArray(i.stops)?i.stops:null,n=(p,G)=>J(p)?{color:String(p).trim(),pos:f(+G||0,0,1)}:null,m=(l||[]).map(p=>Array.isArray(p)?n(p[0],p[1]):p&&typeof p=="object"?n(p.color,p.pos):null).filter(Boolean);return m.length>=2?m:x}function pt(i,x){let l=tt(i.value),n=l[0],{root:m,trigger:p,right:G}=Y("tw-gradient",i.label??"Gradient"),R=g("span","tw-gradient-count"),_=g("span","tw-trigger-chip tw-gradient-preview");G.append(R,_);let S=g("div","tw-color-pop tw-gradient-pop"),j=g("div","tw-gradient-bar-row"),L=g("div","tw-gradient-bar"),F=g("div","tw-gradient-grad"),u=g("div","tw-gradient-rail");L.append(F,u);let v=B("tw-gradient-add",it);v.title="Add a stop after the selected one",v.setAttribute("aria-label","Add a colour stop after the selected one"),j.append(L,v);let k=()=>[...l].sort((t,o)=>t.pos-o.pos),ot=()=>k().map(t=>`${t.color} ${(t.pos*100).toFixed(1)}%`).join(", "),I=()=>V(h.mode()),et=()=>`linear-gradient(in ${I()} to right, ${ot()})`,c=()=>{let t=et();F.style.background=t,_.style.background=`${t}, ${q}`},C=()=>{R.textContent=`${l.length} stop${l.length===1?"":"s"}`},K=()=>({stops:k().map(t=>({color:t.color,pos:+t.pos.toFixed(4)})),interpolation:I()}),w=()=>x(K()),A=t=>[...u.children].find(o=>o._stop===t),h=Q({value:n.color,mode:D(Z(i.value)||"oklch"),onMode:()=>{c(),w()}},t=>{n.color=t,A(n)?.style.setProperty("--stop",t),c(),w()});S.append(j,h.el),m.append(S);let E=t=>t.setAttribute("aria-label",`Colour stop at ${Math.round(t._stop.pos*100)}%${t._stop===n?", selected":""}`),nt=()=>{for(let t of u.children)t.dataset.sel=String(t._stop===n),E(t)},$=()=>{u.replaceChildren();for(let t of l){let o=B("tw-gradient-stop");o._stop=t,o.style.left=t.pos*100+"%",o.style.setProperty("--stop",t.color),o.dataset.sel=String(t===n),E(o),o.addEventListener("focus",()=>M(t,!1));let s=!1;X(o,{onDown:e=>{e.preventDefault(),e.stopPropagation(),o.focus({focusVisible:!1}),M(t,!1),s=!1},onMove:e=>{let r=u.getBoundingClientRect();t.pos=f((e.clientX-r.left)/(r.width||1),0,1),o.style.left=t.pos*100+"%",E(o),c(),w(),s=l.length>2&&(e.clientY<r.top-24||e.clientY>r.bottom+24),o.dataset.removing=String(s)},onEnd:()=>{s?O(t):o.dataset.removing="false"}}),o.addEventListener("dblclick",e=>{e.preventDefault(),O(t)}),o.addEventListener("keydown",e=>{let r=e.key==="ArrowLeft"?-1:e.key==="ArrowRight"?1:0;r&&(e.preventDefault(),t.pos=f(t.pos+r*(e.shiftKey?.1:.01),0,1),o.style.left=t.pos*100+"%",E(o),c(),w())}),u.append(o)}},M=(t,o)=>{t!==n&&(h.set(t.color),n=t),o?$():nt()},rt=t=>{let o=u.getBoundingClientRect();return f((t-o.left)/(o.width||1),0,1)},st=t=>{let o=k(),s=o[0],e=o[o.length-1];for(let d=0;d<o.length-1;d++)if(t>=o[d].pos&&t<=o[d+1].pos){s=o[d],e=o[d+1];break}let r=e.pos>s.pos?f((t-s.pos)/(e.pos-s.pos),0,1):0,a=P(s.color),y=P(e.color),H=d=>d[1]<1e-4,b=y[2]-a[2];b>180?b-=360:b<-180&&(b+=360),(H(a)||H(y))&&(b=0);let at=(((H(a)&&!H(y)?y[2]:a[2])+b*r)%360+360)%360;return W(a[0]+(y[0]-a[0])*r,a[1]+(y[1]-a[1])*r,at,a[3]+(y[3]-a[3])*r)},O=t=>{if(l.length<=2)return;let o=l.indexOf(t);if(o<0)return;l.splice(o,1);let s=n===t?l[Math.max(0,o-1)]:n;c(),M(s,!0),C(),w(),A(n)?.focus()},T=t=>{let o={color:st(t),pos:f(t,0,1)};return l.push(o),c(),M(o,!0),C(),w(),o},lt=()=>{let t=k(),o=t.indexOf(n);o<0&&(o=0);let s=o<t.length-1?(t[o].pos+t[o+1].pos)/2:o>0?(t[o-1].pos+t[o].pos)/2:f(t[o].pos+.1,0,1);T(s)};return v.addEventListener("click",t=>{t.stopPropagation(),lt()}),L.addEventListener("dblclick",t=>{t.target.closest(".tw-gradient-stop")||(t.preventDefault(),T(rt(t.clientX)))}),S.tabIndex=-1,S.addEventListener("keydown",t=>{(t.key==="Delete"||t.key==="Backspace")&&!t.altKey&&!/^(input|textarea|select)$/i.test(t.target.tagName)&&l.length>2&&(t.preventDefault(),O(n))}),N(m,p,S,{width:260,fallbackH:392,gap:6,onOpen:h.reflow,onReflow:h.reflow,initialFocus:()=>A(n)}),$(),c(),C(),{el:m,set:t=>{let o=Z(t);o&&h.setMode(D(o));let s=tt(t).sort((e,r)=>e.pos-r.pos);if(s.length===l.length)k().forEach((e,r)=>{e.color=s[r].color,e.pos=s[r].pos;let a=A(e);a&&(a.style.left=e.pos*100+"%",a.style.setProperty("--stop",e.color))});else{let e=n.pos;l=s,n=l.reduce((r,a)=>Math.abs(a.pos-e)<Math.abs(r.pos-e)?a:r,l[0]),$()}c(),C(),h.set(n.color)},get:()=>K()}}U("gradient",pt);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Y as f,aa as u,o as i}from"./chunk-GC5PWSSX.js";var h=n=>String(n).replace(/[\\"]/g,"\\$&").replace(/[\x00-\x1f\x7f]/g,s=>"\\"+s.charCodeAt(0).toString(16)+" ");function v(n,s){let r=n.value||"",{root:g,trigger:t,right:m}=f("tw-image",n.label);t.removeAttribute("aria-expanded"),t.setAttribute("aria-label",`${n.label}: choose an image`);let p=i("span","tw-image-text"),o=i("span","tw-trigger-chip tw-image-thumb");m.append(p,o);let a=i("input","tw-image-input");a.type="file",a.accept="image/*",g.append(a);let l=()=>{o.dataset.set=r?"true":"false",o.style.backgroundImage=r?`url("${h(r)}")`:"",p.textContent=r?"Replace":"Drop or choose"},c=e=>{if(!e||!e.type.startsWith("image/"))return;let d=new FileReader;d.onload=()=>{r=String(d.result),l(),s(r)},d.readAsDataURL(e)};return t.addEventListener("click",()=>a.click()),a.addEventListener("change",()=>{a.files[0]&&c(a.files[0])}),t.addEventListener("dragover",e=>{e.preventDefault(),t.dataset.over="true"}),t.addEventListener("dragleave",()=>{t.dataset.over="false"}),t.addEventListener("drop",e=>{e.preventDefault(),t.dataset.over="false",e.dataTransfer.files[0]&&c(e.dataTransfer.files[0])}),l(),{el:g,set:e=>{e!=null&&typeof e!="string"||(r=e||"",l())},get:()=>r}}u("image",v);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as G,aa as P,b as r,d as j,e as H,f as X,h as z,i as A,j as I,o as f,r as K,v as T,w as q,y as B}from"./chunk-GC5PWSSX.js";function U(a,V){let C=a.label,w=+(a.value&&a.value[0]),x=+(a.value&&a.value[1]),{min:n,max:l,step:h}=z(a.min,a.max,a.step,Number.isFinite(w)?w:0,Number.isFinite(x)?x:1);[n,l]=X(n,l,h);let E=j(h),b=t=>H(t,n,h),i=r(b(Number.isFinite(w)?w:n),n,l),s=r(b(Number.isFinite(x)?x:l),n,l);if(i>s){let t=i;i=s,s=t}let v=f("div","tw-slider-wrap"),d=f("div","tw-slider tw-interval"),L=f("div","tw-slider-fill"),c=f("div","tw-slider-handle"),u=f("div","tw-slider-handle"),F=K("span","tw-slider-label",C),y=f("span","tw-slider-value");d.append(L,c,u,F,y),v.append(d),[["minimum",c],["maximum",u]].forEach(([t,e])=>{e.tabIndex=0,e.setAttribute("role","slider"),e.setAttribute("aria-label",`${C} ${t}`),e.setAttribute("aria-valuemin",String(n)),e.setAttribute("aria-valuemax",String(l))});let M=t=>(t-n)/(l-n||1)*100,N=t=>`clamp(5px, calc(${t}% - 1.5px), calc(100% - 9px))`,m=()=>{let t=M(i),e=M(s);L.style.left=t+"%",L.style.width=Math.max(0,e-t)+"%",c.style.left=N(t),u.style.left=N(e),y.textContent=`${i.toFixed(E)} \u2013 ${s.toFixed(E)}`,c.setAttribute("aria-valuenow",String(i)),u.setAttribute("aria-valuenow",String(s));let o=v.offsetWidth;if(o){F.style.maxWidth=Math.max(0,o-y.offsetWidth-12-8-10)+"px";let R=Q=>I(F,y,Q/100*o-1.5,3);c.classList.toggle("is-dodge",R(M(i))),u.classList.toggle("is-dodge",R(M(s)))}};m();let S=()=>V([i,s]),W=t=>{i=r(Math.min(b(t),s),n,l),m()},k=t=>{s=r(Math.max(b(t),i),n,l),m()},p=null,$=1,g=null,J=t=>{let e=v.offsetWidth||p.width,o=r((t-p.left)/$/e,0,1);return r(n+o*(l-n),n,l)},D=t=>{let e=J(t);g||(g=e<i?"lo":e>s?"hi":Math.abs(e-i)<=Math.abs(e-s)?"lo":"hi"),g==="lo"?W(e):k(e),S()};G(d,{onDown:t=>{t.preventDefault(),p=v.getBoundingClientRect(),$=p.width/(v.offsetWidth||p.width),d.classList.add("is-active","is-dragging"),g=null,D(t.clientX),(g==="lo"?c:u).focus({focusVisible:!1})},onMove:t=>D(t.clientX),onEnd:()=>{p=null,g=null,d.classList.remove("is-active","is-dragging")}}),B(d,m),T(m),q(d,[[window,"resize"],[window,"tw-reflow"]],m);let O=t=>e=>{let o=t==="lo"?A(e,i,h,n,s):A(e,s,h,i,l);o!=null&&(e.preventDefault(),t==="lo"?W(o):k(o),S())};return c.addEventListener("keydown",O("lo")),u.addEventListener("keydown",O("hi")),{el:v,set:t=>{if(Array.isArray(t)){let e=+t[0],o=+t[1];if(!Number.isFinite(e)||!Number.isFinite(o))return;i=r(b(Math.min(e,o)),n,l),s=r(b(Math.max(e,o)),n,l),m()}},get:()=>[i,s]}}P("interval",U);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{$ as y,E as D,aa as j,b as q,m as L,o as R,r as S,t as T}from"./chunk-GC5PWSSX.js";var G=(n,o,u,m,p,k,N)=>{let r=p.length;n.clearRect(0,0,u,m),n.strokeStyle=T(o),n.lineWidth=1.5,n.lineJoin="round",n.beginPath();let s=!1;for(let l=0;l<r;l++){let a=p[(k+l)%r];if(Number.isNaN(a))continue;let w=l/(r-1)*u,b=m-q(N(a),0,1)*m;s?n.lineTo(w,b):(n.moveTo(w,b),s=!0)}n.stroke()},H=n=>{for(let o of["resize","tw-reflow"])window.addEventListener(o,n);return()=>{for(let o of["resize","tw-reflow"])window.removeEventListener(o,n)}};function J(n,o=!1){let u=typeof n.get=="function"?n.get:()=>n.value,m=Math.max(30,Number.isFinite(+n.interval)?+n.interval:200),p;try{p=u()}catch{}let k=typeof p=="number",N=n.view==="graph"||k&&n.graph!==!1&&n.view!=="text"&&n.rows==null,r=R("div","tw-fps tw-monitor"),s=S("span","tw-fps-val","\u2014");r.append(S("span","tw-fps-label",n.label??"Monitor"),s);let l=0,a=0,w=()=>{},b=!1,W=Number.isFinite(+n.decimals)?Math.min(20,Math.max(0,Math.floor(+n.decimals))):2,d=e=>e==null?"\u2014":typeof e=="number"?Number.isInteger(e)||!Number.isFinite(e)?String(e):e.toFixed(W):typeof e=="object"?L(e):String(e),h=()=>{l&&clearInterval(l),l=0,a&&cancelAnimationFrame(a),a=0,w()},v=e=>{let i=f=>{if(o&&(a=requestAnimationFrame(i)),!r.isConnected){b&&h();return}b=!0;let t;try{t=u(f)}catch{return}e(t)};o?a=requestAnimationFrame(i):l=setInterval(i,m)};if(!N&&n.rows){s.remove();let e=Math.max(1,Math.floor(+n.rows)||1),i=R("pre","tw-monitor-buffer");i.style.setProperty("--tw-monitor-rows",e),r.append(i);let f=[];return v(t=>{for(f.push(d(t));f.length>e;)f.shift();i.textContent=f.join(`
|
|
2
|
+
`)}),y(r,h)}if(!N)return v(e=>{s.textContent=d(e)}),y(r,h);let C=document.createElement("canvas");C.className="tw-fps-canvas",r.append(C);let F=C.getContext("2d");if(!F)return v(e=>{s.textContent=d(e)}),y(r,h);let A=80,I=new Array(A).fill(NaN),x=0,M=0,E=0,z=()=>{[M,E]=D(C,F,2)};w=H(z);let B=()=>{if(M||z(),!M)return;let e=n.min,i=n.max;if(e==null||i==null){let t=1/0,c=-1/0;for(let g of I)Number.isFinite(g)&&(g<t&&(t=g),g>c&&(c=g));t===1/0?(t=0,c=1):t===c&&(t-=.5,c+=.5);let P=(c-t)*.1;e==null&&(e=t-P),i==null&&(i=c+P)}let f=i-e||1;G(F,r,M,E,I,x,t=>(t-e)/f)};return v(e=>{if(typeof e!="number"||!Number.isFinite(e)){s.textContent=d(e);return}I[x]=e,x=(x+1)%A,s.textContent=d(e),B()}),y(r,h)}var K=()=>{let n=0;return o=>{if(!(o>0))return;let u=n?1e3/(o-n):void 0;return n=o,u}},O=n=>J({...n,label:n.label??"FPS",get:K(),view:"graph",min:0,max:120,decimals:0},!0);j("fpsgraph",O);j("monitor",n=>J(n));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{aa as D,b as H,o as N,p as k,r as T,v as $,w as Y,z as Z}from"./chunk-GC5PWSSX.js";var V=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:(i,f)=>i%f,clamp:(i,f,r)=>Math.min(Math.max(i,f),r)}),G=Object.assign(Object.create(null),{pi:Math.PI,e:Math.E,tau:Math.PI*2,phi:(1+Math.sqrt(5))/2});function S(i){if(typeof i!="string"||!i.trim()||i.length>512)return null;let f=i,r=[],c=/\d*\.?\d+(?:[eE][+-]?\d+)?/y,x=/[A-Za-z_]\w*/y,a=0;for(;a<f.length;){let t=f[a];if(t===" "||t===" "||t===`
|
|
2
|
+
`){a++;continue}if(t>="0"&&t<="9"||t==="."&&f[a+1]>="0"&&f[a+1]<="9"){c.lastIndex=a;let n=c.exec(f);if(!n||n.index!==a)return null;r.push({t:"num",v:parseFloat(n[0])}),a=c.lastIndex;continue}if(t>="A"&&t<="Z"||t>="a"&&t<="z"||t==="_"){x.lastIndex=a;let n=x.exec(f);r.push({t:"id",v:n[0]}),a=x.lastIndex;continue}if(t==="*"&&f[a+1]==="*"){r.push({t:"op",v:"^"}),a+=2;continue}if("+-*/%^".includes(t)){r.push({t:"op",v:t}),a++;continue}if(t==="("){r.push({t:"lp"}),a++;continue}if(t===")"){r.push({t:"rp"}),a++;continue}if(t===","){r.push({t:"comma"}),a++;continue}return null}if(!r.length)return null;let d=0,e=()=>r[d],p=t=>{let n=r[d];return!n||t&&n.t!==t?null:(d++,n)},b=()=>{let t=v();if(!t)return null;for(;e()&&e().t==="op"&&(e().v==="+"||e().v==="-");){let n=p("op").v,o=v();if(!o)return null;let u=t;t=n==="+"?s=>u(s)+o(s):s=>u(s)-o(s)}return t},v=()=>{let t=m();if(!t)return null;for(;e()&&e().t==="op"&&(e().v==="*"||e().v==="/"||e().v==="%");){let n=p("op").v,o=m();if(!o)return null;let u=t;t=n==="*"?s=>u(s)*o(s):n==="/"?s=>u(s)/o(s):s=>u(s)%o(s)}return t},m=()=>{if(e()&&e().t==="op"&&(e().v==="-"||e().v==="+")){let t=p("op").v,n=m();return n?t==="-"?o=>-n(o):n:null}return F()},F=()=>{let t=L();if(!t)return null;if(e()&&e().t==="op"&&e().v==="^"){p("op");let n=m();return n?o=>Math.pow(t(o),n(o)):null}return t},L=()=>{let t=e();if(!t)return null;if(t.t==="num")return p("num"),()=>t.v;if(t.t==="lp"){p("lp");let n=b();return!n||!p("rp")?null:n}if(t.t==="id"){p("id");let n=t.v.toLowerCase();if(e()&&e().t==="lp"){let o=V[n];if(!o)return null;p("lp");let u=[];if(e()&&e().t!=="rp")do{let s=b();if(!s)return null;u.push(s)}while(p("comma"));return p("rp")?s=>o(...u.map(g=>g(s))):null}if(n==="x")return o=>o;if(n in G){let o=G[n];return()=>o}return null}return null},w=b();return w&&d===r.length?w:null}function W(i,f){let r=Number(i.xMin),c=Number(i.xMax);if(Number.isFinite(r)||(r=-10),Number.isFinite(c)||(c=10),c<r){let u=r;r=c,c=u}c===r&&(r-=1,c+=1);let x=Math.max(2,Math.min(4096,i.samples|0||256)),a=Number.isFinite(i.yMin)&&Number.isFinite(i.yMax)&&+i.yMax>+i.yMin,d=i.editable!==!1&&!i.fn,e=i.expr!=null?String(i.expr):"",p=typeof i.fn=="function"?i.fn:S(e),b=N("div","tw-plot");i.label&&b.append(T("div","tw-plot-label",i.label));let v=N("div","tw-plot-graph"),m=k("svg","tw-plot-svg");m.setAttribute("preserveAspectRatio","none");let F=k("line","tw-plot-axis"),L=k("line","tw-plot-axis"),w=k("path","tw-plot-curve");m.append(F,L,w),v.append(m),b.append(v);let t=null;if(d){let u=N("div","tw-plot-field");t=N("input","tw-plot-input"),t.type="text",t.value=e,t.spellcheck=!1,t.autocapitalize="off",t.autocomplete="off",Z(t),t.setAttribute("aria-label",`${i.label||"Plot"} \u2014 expression in x`),t.setAttribute("aria-invalid","false"),u.append(T("span","tw-plot-fx","y ="),t),b.append(u)}let n=6,o=()=>{let u=typeof p=="function";b.classList.toggle("is-invalid",d&&!u),t&&t.setAttribute("aria-invalid",d&&!u?"true":"false");let s=v.getBoundingClientRect(),g=s.width,C=s.height;if(g<2)return;m.setAttribute("viewBox",`0 0 ${g} ${C}`);let q=[],M=1/0,E=-1/0;if(u)for(let l=0;l<x;l++){let y=r+(c-r)*(l/(x-1)),h;try{h=p(y)}catch{h=NaN}q.push(h),Number.isFinite(h)&&(h<M&&(M=h),h>E&&(E=h))}let A=i.yMin,I=i.yMax;if(!a)if(!Number.isFinite(M)||M===E){let l=Number.isFinite(M)?M:0;A=l-1,I=l+1}else{let l=(E-M)*.12;A=M-l,I=E+l}let O=l=>n+(l-r)/(c-r)*(g-2*n),P=l=>C-n-(l-A)/(I-A)*(C-2*n),z=(l,y,h,R,U,_)=>{l.style.display=_?"":"none",_&&(l.setAttribute("x1",y),l.setAttribute("y1",h),l.setAttribute("x2",R),l.setAttribute("y2",U))};z(F,n,P(0),g-n,P(0),A<=0&&I>=0),z(L,O(0),n,O(0),C-n,r<=0&&c>=0);let B="",j=!1;if(u)for(let l=0;l<x;l++){let y=q[l];if(!Number.isFinite(y)){j=!1;continue}let h=O(r+(c-r)*(l/(x-1))),R=H(P(y),-1e4,1e4);B+=(j?"L":"M")+h.toFixed(1)+","+R.toFixed(1)+" ",j=!0}w.setAttribute("d",B)};return d&&t.addEventListener("input",()=>{e=t.value,p=S(e),o(),f(e)}),$(o),Y(b,[[window,"resize"],[window,"tw-reflow"]],o),{el:b,get:()=>e,set:u=>{u!=null&&(e=String(u),t&&(t.value=e),i.fn||(p=S(e)),o())}}}D("plot",W);export{S as compileExpr};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as N,D as V,L as X,Y as G,Z as I,aa as K,b as P,d as T,k as B,o as p,p as O}from"./chunk-GC5PWSSX.js";function Z(d,U){let o=d.components,{root:$,trigger:q,right:z}=G("tw-point",d.label??"Point"),L=p("span","tw-trigger-value"),Y=p("div","tw-trigger-chip tw-point-preview"),m=p("div","tw-point-preview-dot");Y.append(m),z.append(L,Y);let C=p("div","tw-color-pop tw-point-pop"),D=p("div","tw-point-body");C.append(D);let j=d.pad!==!1&&o.length>=2,J=t=>{let e=B(Math.abs(Number.isFinite(+t.value)?+t.value:0))[1],r=t.min??-e,n=t.max??e,s=10**Math.floor(Math.log10((n-r)/200));return{lo:r,hi:n,step:t.step??(s>0&&Number.isFinite(s)?s:1)}},g=o.map(J),v=g[0],w=g[1],y=v?.lo??-1,x=v?.hi??1,b=w?.lo??-1,h=w?.hi??1,k=(t,e,r)=>r>e?P((t-e)/(r-e),0,1):.5,a=null,A=null,f=null;if(j){a=p("div","tw-pad"),A=p("div","tw-pad-thumb");let t=O("svg","tw-pad-line");t.setAttribute("viewBox","0 0 100 100"),t.setAttribute("preserveAspectRatio","none"),f=O("line"),t.append(f);let e=k(0,b,h);f.setAttribute("x1",k(0,y,x)*100),f.setAttribute("y1",(d.invertY?e:1-e)*100),a.append(p("div","tw-pad-axis tw-pad-axis-x"),p("div","tw-pad-axis tw-pad-axis-y"),t,A),D.append(a)}let H=p("div","tw-fields");D.append(H);let c=()=>{S(),Q()},E=()=>U(R()),i=o.map((t,e)=>{let r=I({label:t.label,value:t.value??0,step:g[e].step,min:t.min,max:t.max},()=>{c(),E()});return H.append(r.el),r}),R=()=>Object.fromEntries(o.map((t,e)=>[t.key,i[e].get()])),M=(t,e)=>(+t).toFixed(T(e)),Q=()=>{L.textContent=o.map((t,e)=>M(i[e].get(),g[e].step)).join(", ")},S=()=>{m.style.left="50%",m.style.top="50%"};if(j){let e=n=>`calc(${(n*100).toFixed(2)}% + ${((.5-n)*5).toFixed(2)}px)`;S=()=>{let n=k(i[0].get(),y,x),s=k(i[1].get(),b,h),l=d.invertY?s:1-s,u=n*100,F=l*100;A.style.left=u+"%",A.style.top=F+"%",m.style.left=e(n),m.style.top=e(l),f.setAttribute("x2",u),f.setAttribute("y2",F),a.setAttribute("aria-description",`${o[0].label??o[0].key} ${M(i[0].get(),v.step)}, ${o[1].label??o[1].key} ${M(i[1].get(),w.step)}`)},N(a,n=>{let[s,l]=V(n,a),u=d.invertY?l:1-l;i[0].set(y+s*(x-y)),i[1].set(b+u*(h-b)),c(),E()}),a.tabIndex=0,a.setAttribute("role","group"),a.setAttribute("aria-label",`${d.label??"Point"} pad: ${o[0].label??o[0].key} and ${o[1].label??o[1].key}`),a.addEventListener("keydown",n=>{if(n.key==="Home"){n.preventDefault(),o.forEach((F,W)=>i[W].set(F.value??0)),c(),E();return}let s=n.key==="ArrowRight"?1:n.key==="ArrowLeft"?-1:0,l=n.key==="ArrowUp"?1:n.key==="ArrowDown"?-1:0;if(!s&&!l)return;n.preventDefault();let u=n.shiftKey?10:1;s&&i[0].set(P(i[0].get()+s*v.step*u,y,x)),l&&i[1].set(P(i[1].get()+(d.invertY?-l:l)*w.step*u,b,h)),c(),E()})}return $.append(C),X($,q,C,{width:216,fallbackH:240,gap:6,onOpen:c}),c(),{el:$,set:t=>{t&&o.forEach((e,r)=>{t[e.key]!=null&&i[r].set(t[e.key])}),c()},get:R}}K("point",Z);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as te,X as se,Z as U,aa as ie,b as _,o as R,r as B,s as Z,t as $,v as ee,w as ne}from"./chunk-GC5PWSSX.js";function ue(c,A,D,g=64){let n=Math.sqrt(c/D),l=A/(2*Math.sqrt(c*D)),V=Math.min(2.2,9/Math.max(l*n,.5)),x=[];for(let b=0;b<g;b++){let d=b/(g-1)*V,h;if(l<1-1e-4){let a=n*Math.sqrt(1-l*l);h=1-Math.exp(-l*n*d)*(Math.cos(a*d)+l*n/a*Math.sin(a*d))}else if(l<=1+1e-4)h=1-Math.exp(-n*d)*(1+n*d);else{let a=Math.sqrt(l*l-1),r=n*(l+a),i=n*(l-a);h=1-(r*Math.exp(-i*d)-i*Math.exp(-r*d))/(r-i)}x.push(h)}return x}function ce(c,A){let D=(e,t,s)=>Number.isFinite(+e)?Math.max(t,+e):s,g=e=>({stiffness:D(e.stiffness,1,300),damping:D(e.damping,.5,26),mass:D(e.mass,.1,1)}),n=e=>Number.isFinite(+e),x=e=>_(n(e)?+e:.5,.1,1),b=e=>_(n(e)?+e:.2,0,1),d=e=>{let t=(2*Math.PI/e.visualDuration)**2,s=1-e.bounce,u=1;return{stiffness:t,damping:2*s*Math.sqrt(t*u),mass:u}},h=e=>e==="time"||e==="physics"?e:null,a={stiffness:c.stiffness,damping:c.damping,mass:c.mass,visualDuration:c.visualDuration,bounce:c.bounce,...c.value||{}},r=h(a.mode)??h(c.mode)??(n(a.visualDuration)||n(a.bounce)?"time":"physics"),i={visualDuration:x(a.visualDuration),bounce:b(a.bounce)},m=g({stiffness:a.stiffness,damping:a.damping,mass:a.mass}),T=R("div","tw-spring"),M=R("div","tw-spring-viz"),w=document.createElement("canvas");w.className="tw-spring-canvas",M.append(w);let I=R("div","tw-fields"),X=R("div","tw-fields"),o=w.getContext("2d"),O=()=>g(r==="time"?d(i):m),p=()=>{let e=M.getBoundingClientRect(),t=Math.max(1,Math.round(e.width)),s=Math.max(1,Math.round(e.height));if(t<2)return;let u=window.devicePixelRatio||1;w.width=t*u,w.height=s*u,o.setTransform(u,0,0,u,0,0),o.clearRect(0,0,t,s);let E=O(),q=ue(E.stiffness,E.damping,E.mass,Math.max(160,Math.round(t*u))),re=Math.max(1.05,...q),P=8,Q=S=>P+S/(q.length-1)*(t-2*P),F=S=>s-P-S/re*(s-2*P);o.strokeStyle=Z(T,"--tw-surface-active")||"rgba(255,255,255,0.1)",o.lineWidth=1,o.beginPath(),o.moveTo(P,F(1)),o.lineTo(t-P,F(1)),o.stroke(),o.strokeStyle=$(T),o.lineWidth=1.5,o.lineJoin=o.lineCap="round",o.beginPath(),q.forEach((S,j)=>j?o.lineTo(Q(j),F(S)):o.moveTo(Q(j),F(S))),o.stroke()},L=()=>r==="time"?{...O(),visualDuration:i.visualDuration,bounce:i.bounce}:O(),k=()=>A(L()),f={};[["stiffness","Stiffness",1],["damping","Damping",.5],["mass","Mass",.1]].forEach(([e,t,s])=>{f[e]=U({label:t,value:m[e],step:s,min:s},u=>{m[e]=u,p(),k()}),I.append(f[e].el)});let C=U({label:"Duration",value:i.visualDuration,step:.05,min:.1,max:1},e=>{i.visualDuration=x(e),p(),k()}),N=U({label:"Bounce",value:i.bounce,step:.05,min:0,max:1},e=>{i.bounce=b(e),p(),k()});X.append(C.el,N.el);let z=()=>{X.style.display=r==="time"?"":"none",I.style.display=r==="physics"?"":"none"},K=se([{value:"time",label:"Time"},{value:"physics",label:"Physics"}],r,e=>{e!=="time"&&e!=="physics"||e===r||(r=e,z(),p(),k())},"Spring mode"),W=R("div","tw-row");W.append(B("span","tw-row-label","Mode"),K.el),c.label&&T.append(B("div","tw-spring-label",c.label)),T.append(M,W,I,X);let Y=1,oe=500,G=1,ae=40,y=null,J=e=>{if(!y)return;let t=_((e.clientX-y.left)/y.width,0,1),s=_((e.clientY-y.top)/y.height,0,1);r==="time"?(C.set(.1+t*(1-.1)),i.visualDuration=C.get(),N.set(1-s),i.bounce=N.get()):(f.stiffness.set(Y+t*(oe-Y)),m.stiffness=f.stiffness.get(),f.damping.set(G+s*(ae-G)),m.damping=f.damping.get()),p(),k()};te(M,{onDown:e=>{e.preventDefault(),y=M.getBoundingClientRect(),M.classList.add("is-dragging"),J(e)},onMove:J,onEnd:()=>{y=null,M.classList.remove("is-dragging")}}),z(),ee(p),ne(w,[[window,"resize"],[window,"tw-reflow"],[matchMedia("(prefers-color-scheme: dark)"),"change"],[window,"tw-retheme"]],p);let v=null,H=!1;return typeof MutationObserver=="function"&&(v=new MutationObserver(()=>{w.isConnected?(H=!0,p()):H&&(v.disconnect(),v=null)}),v.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:["data-tw-scheme"]})),{el:T,destroy:()=>{v&&(v.disconnect(),v=null)},set:e=>{if(!e||typeof e!="object")return;let t=h(e.mode),s=n(e.visualDuration)||n(e.bounce),u=n(e.stiffness)||n(e.damping)||n(e.mass);!s&&!u&&!t||(r=t??(s?"time":"physics"),s&&(n(e.visualDuration)&&(i.visualDuration=x(e.visualDuration)),n(e.bounce)&&(i.bounce=b(e.bounce))),u&&(m=g({...m,...e})),K.set(r),C.set(i.visualDuration),N.set(i.bounce),f.stiffness.set(m.stiffness),f.damping.set(m.damping),f.mass.set(m.mass),z(),p())},get:()=>L()}}ie("spring",ce);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Q as f,W as g,aa as w,o as s,r as v,v as m}from"./chunk-GC5PWSSX.js";var A=0;function x(E){let o=`tw-tabs-${++A}`,c=s("div","tw-tabs"),r=s("div","tw-tabs-bar");r.setAttribute("role","tablist");let l=s("div","tw-tabs-pill");r.append(l);let u=s("div","tw-tabs-pages"),d=[],i=E.pages.map((a,e)=>{let t=v("button","tw-tabs-tab",a.title);t.setAttribute("role","tab"),t.dataset.active=String(e===0),t.setAttribute("aria-selected",String(e===0)),t.tabIndex=e===0?0:-1,t.id=`${o}-tab-${e}`,t.setAttribute("aria-controls",`${o}-page-${e}`);let n=s("div","tw-tabs-page tw-controls");return n.dataset.active=String(e===0),n.setAttribute("role","tabpanel"),n.id=`${o}-page-${e}`,n.setAttribute("aria-labelledby",t.id),d.push(n),u.append(n),t.addEventListener("click",()=>b(e)),r.append(t),t});c.append(r,u);let p=a=>f(r,l,a);function b(a){i.forEach((e,t)=>{e.dataset.active=String(t===a),e.setAttribute("aria-selected",String(t===a)),e.tabIndex=t===a?0:-1}),d.forEach((e,t)=>e.dataset.active=String(t===a)),p(!0),requestAnimationFrame(()=>window.dispatchEvent(new Event("tw-reflow")))}return r.addEventListener("keydown",a=>{let e=i.findIndex(n=>n.dataset.active==="true");if(e<0)return;let t=g(a.key,e,i.length,-1);t<0||(a.preventDefault(),b(t),i[t].focus())}),m(p),{el:c,bodies:d,activate:b,active:()=>i.findIndex(a=>a.dataset.active==="true")}}w("tabs",x);
|