tweakit 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/THIRD-PARTY-NOTICES.md +20 -44
- package/dist/tweaks/bezier-Z5GKRM4D.js +1 -0
- package/dist/tweaks/chunk-36ETNTXF.js +1 -0
- package/dist/tweaks/chunk-AUZVP7BC.js +1 -0
- package/dist/tweaks/chunk-NGLZEK5U.js +1 -0
- package/dist/tweaks/colour-KNV4JMLD.js +1 -0
- package/dist/tweaks/core.js +1 -1
- package/dist/tweaks/gradient-7SU3OS46.js +1 -0
- package/dist/tweaks/heavy-GRI2MMP6.js +1 -0
- package/dist/tweaks/image-DBOIYZDB.js +1 -0
- package/dist/tweaks/interval-2WMOCHYW.js +1 -0
- package/dist/tweaks/monitor-NRXVKYAV.js +2 -0
- package/dist/tweaks/plot-YTKMVUH7.js +2 -0
- package/dist/tweaks/point-OSHHB6KE.js +1 -0
- package/dist/tweaks/spring-NNNUQHGF.js +1 -0
- package/dist/tweaks/tabs-NWHJSEFB.js +1 -0
- package/dist/tweaks.css +1 -1
- package/dist/tweaks.js +4 -3
- package/dist/types/tweaks/core.d.ts +4 -4
- package/dist/types/tweaks/enhance.d.ts +1 -0
- package/dist/types/tweaks/panel.d.ts +2 -0
- package/dist/types/tweaks/standalone.d.ts +3 -0
- package/dist/types/tweaks/types.d.ts +84 -2
- package/package.json +12 -8
- package/dist/tweaks/bezier-4JJDADLM.js +0 -1
- package/dist/tweaks/chunk-K6N3NNAW.js +0 -1
- package/dist/tweaks/chunk-NMISCM24.js +0 -1
- package/dist/tweaks/colour-J2FKMVZA.js +0 -1
- package/dist/tweaks/gradient-MV3DECUF.js +0 -1
- package/dist/tweaks/image-NZPSGN4W.js +0 -1
- package/dist/tweaks/interval-K4JN65W5.js +0 -1
- package/dist/tweaks/monitor-PUIUETKC.js +0 -2
- package/dist/tweaks/plot-IB2Q2LCO.js +0 -2
- package/dist/tweaks/point-UZ77545Q.js +0 -1
- package/dist/tweaks/spring-IJA5GPVX.js +0 -1
- package/dist/tweaks/tabs-IVS2Y3JA.js +0 -1
- package/dist/types/tweaks/controls/bezier.d.ts +0 -1
- package/dist/types/tweaks/controls/colour.d.ts +0 -14
- package/dist/types/tweaks/controls/gradient.d.ts +0 -1
- package/dist/types/tweaks/controls/image.d.ts +0 -1
- package/dist/types/tweaks/controls/interval.d.ts +0 -1
- package/dist/types/tweaks/controls/monitor.d.ts +0 -1
- package/dist/types/tweaks/controls/plot.d.ts +0 -1
- package/dist/types/tweaks/controls/point.d.ts +0 -1
- package/dist/types/tweaks/controls/spring.d.ts +0 -1
- package/dist/types/tweaks/controls/tabs.d.ts +0 -1
- package/dist/types/tweaks/shared.d.ts +0 -82
- package/dist/types/tweaks/single.d.ts +0 -12
- package/dist/types/wide-gamut.d.ts +0 -121
package/README.md
CHANGED
|
@@ -43,10 +43,13 @@ npm run build
|
|
|
43
43
|
npm test
|
|
44
44
|
```
|
|
45
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
|
+
|
|
46
49
|
Contributions welcome — see [CONTRIBUTING.md](CONTRIBUTING.md); report security issues per
|
|
47
50
|
[SECURITY.md](SECURITY.md).
|
|
48
51
|
|
|
49
52
|
## Credits
|
|
50
53
|
|
|
51
|
-
Inspired by Tweakpane and dialkit. Toolbar and control icons from
|
|
54
|
+
Inspired by Tweakpane and dialkit. Toolbar and control icons from Hugeicons — see
|
|
52
55
|
[THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md).
|
package/THIRD-PARTY-NOTICES.md
CHANGED
|
@@ -1,60 +1,36 @@
|
|
|
1
1
|
# Third-party notices
|
|
2
2
|
|
|
3
3
|
Tweakit ships **no runtime dependencies**. Its toolbar and control icons,
|
|
4
|
-
however, are inline SVGs adapted from the **
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
here under the original
|
|
4
|
+
however, are inline SVGs adapted from the free **Hugeicons** set (stroke-rounded
|
|
5
|
+
style). They were hand-inlined as SVG template literals and lightly modified (path
|
|
6
|
+
data compacted to relative commands at one decimal, circles redrawn as arcs, most
|
|
7
|
+
icons' separate paths merged into one `d`, stroke widths set by the kit), but they
|
|
8
|
+
remain derivative works and are redistributed here under the original license
|
|
9
|
+
reproduced below.
|
|
9
10
|
|
|
10
11
|
| Icon constant | Origin | License |
|
|
11
12
|
| --- | --- | --- |
|
|
12
|
-
| `ICON_CHECK` |
|
|
13
|
-
| `ICON_CHEVRON` |
|
|
14
|
-
| `ICON_INFO` |
|
|
15
|
-
| `ICON_X` |
|
|
16
|
-
| `ICON_PLUS` |
|
|
17
|
-
| `ICON_SEARCH` |
|
|
18
|
-
| `ICON_COPY` |
|
|
19
|
-
| `ICON_PRESETS` |
|
|
20
|
-
| `ICON_RESET` |
|
|
13
|
+
| `ICON_CHECK` | Hugeicons `tick-02` | MIT |
|
|
14
|
+
| `ICON_CHEVRON` | Hugeicons `arrow-down-01` | MIT |
|
|
15
|
+
| `ICON_INFO` | Hugeicons `information-circle`, two paths merged | MIT |
|
|
16
|
+
| `ICON_X` | Hugeicons `cancel-01` | MIT |
|
|
17
|
+
| `ICON_PLUS` | Hugeicons `add-01`, two paths merged | MIT |
|
|
18
|
+
| `ICON_SEARCH` | Hugeicons `search-01`, two paths merged | MIT |
|
|
19
|
+
| `ICON_COPY` | Hugeicons `copy-01`, back sheet's ends trimmed | MIT |
|
|
20
|
+
| `ICON_PRESETS` | Hugeicons `layer` | MIT |
|
|
21
|
+
| `ICON_RESET` | Hugeicons `undo` | MIT |
|
|
21
22
|
| `ICON_GRIP` | original to this project | — |
|
|
22
23
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
24
|
+
- Hugeicons — <https://hugeicons.com> — © 2025 Hugeicons (MIT), from the
|
|
25
|
+
`@hugeicons/core-free-icons` package
|
|
25
26
|
|
|
26
|
-
The verbatim
|
|
27
|
-
such as `rotate-ccw`) and the Feather MIT notice (© Cole Bemis). That MIT notice covers
|
|
28
|
-
every Feather-derived icon above — including `copy` and `layers`, which come straight
|
|
29
|
-
from Feather rather than via Lucide's enumerated list.
|
|
27
|
+
The verbatim license from that package follows.
|
|
30
28
|
|
|
31
29
|
---
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
MIT License
|
|
34
32
|
|
|
35
|
-
Copyright (c)
|
|
36
|
-
|
|
37
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
38
|
-
purpose with or without fee is hereby granted, provided that the above
|
|
39
|
-
copyright notice and this permission notice appear in all copies.
|
|
40
|
-
|
|
41
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
42
|
-
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
43
|
-
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
44
|
-
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
45
|
-
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
46
|
-
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
47
|
-
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
The following Lucide icons are derived from the Feather project:
|
|
52
|
-
|
|
53
|
-
airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
|
|
54
|
-
|
|
55
|
-
The MIT License (MIT) (for the icons listed above)
|
|
56
|
-
|
|
57
|
-
Copyright (c) 2013-present Cole Bemis
|
|
33
|
+
Copyright (c) 2025 Hugeicons
|
|
58
34
|
|
|
59
35
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
60
36
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as f,e as J,j as Q}from"./chunk-36ETNTXF.js";import{S as q,b as A,o as M,p as N,q as I,s as K,t as U}from"./chunk-NGLZEK5U.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 d=M("div","tw-bezier-graph"),k=f("svg","tw-bezier-svg");k.setAttribute("preserveAspectRatio","none");let G=f("line","tw-bezier-guide"),P=f("line","tw-bezier-guide"),X=f("line","tw-bezier-diag"),j=f("line","tw-bezier-ctl"),O=f("line","tw-bezier-ctl"),S=f("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"),d.append(k,g,x);let W=M("div","tw-fields tw-bezier-fields");E.append(d,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=d.offsetWidth,C=d.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=Q({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;J(e,{onDown:r=>{r.preventDefault(),i=d.getBoundingClientRect(),m=d.offsetWidth||i.width,a=d.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{B as C,Q as S,S as I,b as w,d as L,e as M,f as N,o as m,p as F,q as E,w as T}from"./chunk-NGLZEK5U.js";var H="http://www.w3.org/2000/svg",A=(t,n)=>{let e=document.createElementNS(H,t);return n&&e.setAttribute("class",n),e},K=(t,n)=>getComputedStyle(t).getPropertyValue(n).trim(),R=t=>{let n=getComputedStyle(t),e=i=>n.getPropertyValue(i).trim();return e("--tw-accent")||e("--tw-text-primary")||"#fff"},V=t=>{let n=!1;t.addEventListener("pointerdown",e=>{n=e.button===0&&document.activeElement!==t}),t.addEventListener("focus",()=>t.select()),t.addEventListener("mouseup",e=>{n&&(n=!1,e.button===0&&document.activeElement===t&&t.selectionStart===0&&t.selectionEnd===t.value.length&&e.preventDefault())})};function P(t,{onDown:n,onMove:e,onEnd:i}={}){let r=null,l=s=>{r===null||s.pointerId!==r||(r=null,i&&i(s))};t.addEventListener("pointerdown",s=>{if(!(s.button!==0||r!==null)){r=s.pointerId;try{t.setPointerCapture(s.pointerId)}catch{}n&&n(s)}}),t.addEventListener("pointermove",s=>{if(s.pointerId===r){if(s.buttons===0)return l(s);e&&e(s)}}),t.addEventListener("pointerup",l),t.addEventListener("pointercancel",l),t.addEventListener("lostpointercapture",l)}var B=(t,n)=>P(t,{onDown:e=>{t.classList.add("is-grabbing"),n(e)},onMove:n,onEnd:()=>t.classList.remove("is-grabbing")}),O=(t,n)=>{let e=n.getBoundingClientRect();return[w((t.clientX-e.left)/e.width,0,1),w((t.clientY-e.top)/e.height,0,1)]},j=(t,n,e=1/0)=>{let i=t.getBoundingClientRect(),r=Math.min(window.devicePixelRatio||1,e);return t.width=i.width*r,t.height=i.height*r,n.setTransform(r,0,0,r,0,0),[i.width,i.height]},U=(t,n)=>{let e=m("div",t),i=F("tw-trigger");i.setAttribute("aria-expanded","false");let r=m("span","tw-trigger-right");return i.append(E("span","tw-trigger-label",n),r),e.append(i),{root:e,trigger:i,right:r}},$=S('<path d="M6 4v8M10 4v8"/>',"",1.5,16);function k(){let t=null,n=0,e=0,i=0;return{show(r,l,s,c){t=m("div","tw-grab-guide tw-portal"),t.innerHTML='<span class="tw-grab-line"></span><span class="tw-grab-dot"></span><span class="tw-grab-arrow"></span><span class="tw-grab-bubble"></span>',n=l,e=r,i=s??r,t.children[1].style.cssText=`left:${r}px;top:${n}px`,C(t,c),document.body.appendChild(t)},move(r,l){t&&(t.children[0].style.cssText=`left:${Math.min(e,r)}px;top:${n}px;width:${Math.abs(r-e)}px`,t.children[2].style.cssText=`left:${r}px;top:${n}px;transform:translate(-50%,-50%) scaleX(${r>=e?1:-1})`,t.children[3].style.cssText=`left:${i}px;top:${n-16}px`,t.children[3].textContent=l)},hide(){t&&(t.remove(),t=null)}}}function D(t,n,e,i,r,l){let s=0,c=0,b=1,g=k();P(t,{onDown:u=>{u.preventDefault(),s=u.clientX,c=i(),b=1,t.classList.add("is-dragging");let a=n.getBoundingClientRect();g.show(u.clientX,a.top+a.height/2,a.left+a.width/2,n),g.move(u.clientX,l())},onMove:u=>{let a=u.shiftKey?10:u.altKey?.1:1;a!==b&&(b=a,s=u.clientX,c=i()),r(c+(u.clientX-s)*e*a),g.move(u.clientX,l())},onEnd:()=>{t.classList.remove("is-dragging"),g.hide()}})}function G(t,n){let e=Number.isFinite(+t.step)&&+t.step>0?+t.step:1,i=o=>o==null?NaN:+o,r=i(t.min),l=i(t.max);if(Number.isFinite(r)&&Number.isFinite(l)&&l<r){let o=r;r=l,l=o}let s=Number.isFinite(r)?r:0,c=L(e),[b,g]=N(Number.isFinite(r)?r:-1/0,Number.isFinite(l)?l:1/0,e,s),u=o=>{let p=M(o,s,e);return t.soft?p:w(p,b,g)},a=u(Number.isFinite(+t.value)?+t.value:0),y=m("div",t.row?"tw-row":"tw-field"),h=m("div","tw-num-wrap"),v=m("span","tw-num-grab",$);v.setAttribute("aria-hidden","true"),v.title="Drag to adjust";let d=m("input","tw-num");d.type="text",d.inputMode="decimal",d.setAttribute("aria-label",t.label),d.value=a.toFixed(c),T(d),h.append(v,d),y.append(E("span",t.row?"tw-row-label":"tw-field-label",t.label),h);let f=(o,p=!0)=>{o=+o,Number.isFinite(o)&&(a=u(o),d.value=a.toFixed(c),p&&n&&n(a))};return d.addEventListener("change",()=>{let o=parseFloat(d.value);f(isNaN(o)?a:o)}),d.addEventListener("keydown",o=>{if(o.key==="Enter")return d.blur();let p=o.key==="ArrowUp"?1:o.key==="ArrowDown"?-1:0;if(!p)return;o.preventDefault();let x=parseFloat(d.value);f((isNaN(x)?a:x)+p*e*(o.shiftKey?10:1))}),D(v,h,e,()=>a,f,()=>d.value),{el:y,set:o=>f(o,!1),get:()=>a}}I("number",(t,n)=>G({...t,row:!0},n));export{A as a,K as b,R as c,V as d,P as e,B as f,O as g,j as h,U as i,G as j};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as lt,f as oe,g as se,i as it,j as ut}from"./chunk-36ETNTXF.js";import{D as ct,S as Le,b as m,i as ot,o as w,q as st,w as at}from"./chunk-NGLZEK5U.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 Kn(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),lt(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),ct(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 Yn=(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,Kn as d,we as e,Zt as f,Yn as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var k=e=>e.replace(/([A-Z])/g," $1").replace(/^./,t=>t.toUpperCase()).trim(),x=(e,t,n)=>Math.min(n,Math.max(t,e)),Z=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 C=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=C(n),o=Number((+t).toFixed(r)),s=Math.round((e-o)/n);return Number.isFinite(s)?Number((o+s*n).toFixed(r)):e},Q=(e,t,n,r=e)=>{let o=a=>H(a,r,n),s=Number.isFinite(e)?o(e):-1/0,i=Number.isFinite(t)?o(t):1/0;return s<e&&(s=o(s+n)),i>t&&(i=o(i-n)),s>i?[e,e]:[s,i]},S=(e,t)=>{let n=t-e;return n<=1?.01:n<=10?.1:n<=100?1:10},ee=(e,t,n,r=0,o=null)=>{let s=+e,i=+t,a=+n;if(Number.isFinite(s)||(s=r),Number.isFinite(i)||(i=o??s+100),i<s){let d=s;s=i,i=d}return(!(a>0)||a>i-s)&&(a=S(s,i)),{min:s,max:i,step:a}},te=(e,t,n,r,o,s=null)=>{let i=e.shiftKey?10:1;switch(e.key){case"ArrowRight":case"ArrowUp":return t+n*i;case"ArrowLeft":case"ArrowDown":return t-n*i;case"PageUp":return s!=null?t+s:null;case"PageDown":return s!=null?t-s:null;case"Home":return r;case"End":return o}return null},ne=(e,t,n,r,o=0)=>{let s=e.offsetLeft,i=s+e.offsetWidth,a=t.offsetLeft,d=a+t.offsetWidth;return n<i&&n+r>s||n<d+o&&n+r>a-o},re=e=>e>=0?[0,e<=1?1:e*3||100]:[e>=-1?-1:e*3,0],P=e=>e==null?void 0:typeof e=="object"?e.value:e,F=e=>{try{return JSON.stringify(e)}catch{return String(e)}},O=e=>e==null?"":typeof e=="string"?k(e):typeof e=="object"?e.label??(e.value!==void 0?String(e.value):F(e)):String(e),p=(e,t,n)=>{let r=document.createElement(e);return t&&(r.className=t),n!=null&&(r.innerHTML=n),r},oe=(e,t)=>{let n=p("button",e,t);return n.type="button",n},R=(e,t,n)=>{let r=p(e,t);return r.textContent=n,e==="button"&&(r.type="button"),r},N=e=>["pointerdown","pointermove","pointerup"].forEach(t=>e.addEventListener(t,n=>n.stopPropagation())),_=e=>{requestAnimationFrame(e),document.fonts&&document.fonts.ready&&document.fonts.ready.then(e)},V=(e,t,n)=>{let r=e.isConnected;r||requestAnimationFrame(()=>{e.isConnected&&(r=!0)});let o=i=>{if(!e.isConnected){(r||e.closest("[data-tw-destroyed]"))&&s();return}r=!0,n(i)},s=()=>t.forEach(([i,a])=>i.removeEventListener(a,o));return t.forEach(([i,a])=>i.addEventListener(a,o)),s},se=()=>requestAnimationFrame(()=>window.dispatchEvent(new Event("tw-reflow"))),ie=(e,t)=>{e.addEventListener("pointerenter",()=>{e.classList.add("is-hover"),t&&t()}),e.addEventListener("pointerleave",()=>e.classList.remove("is-hover"))},g=!1;typeof document<"u"&&(document.addEventListener("pointerdown",()=>{g=!0},!0),document.addEventListener("keydown",()=>{g=!1},!0));var ae=e=>{e.addEventListener("focus",()=>e.classList.toggle("tw-focus-quiet",g)),e.addEventListener("blur",()=>e.classList.remove("tw-focus-quiet"))},B=(e,t,{width:n,fallbackH:r=300,gap:o=6,align:s="start",prefer:i="below"}={})=>{let a=e.getBoundingClientRect();n==="match"&&(t.style.width=a.width+"px");let d=n==="match"?a.width:t.offsetWidth||n||0,b=s==="end"?a.right-d:s==="center"?a.left+a.width/2-d/2:a.left;t.style.left=Math.max(8,Math.min(b,window.innerWidth-d-8))+"px";let l=t.offsetHeight||r,f=window.innerHeight-a.bottom,u=a.top,E=l+12,v=f>=E,m=u>=E,w=(i==="above"?m||!v&&u>=f:!v&&(m||u>f))?a.top-l-o:a.bottom+o;t.style.top=x(w,o,window.innerHeight-l-o)+"px"},I=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"}),j=new Set(["radius","density"]),y=e=>(e/=255,e<=.03928?e/12.92:((e+.055)/1.055)**2.4),$=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},D=e=>{let t=$(e);if(!t||t.some(r=>!Number.isFinite(r)))return"#ffffff";let n=.2126*y(t[0])+.7152*y(t[1])+.0722*y(t[2]);return 1.05/(n+.05)>=(n+.05)/.0571?"#ffffff":"#161616"},le=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 o=I[n];o&&(t[o]=j.has(n)&&typeof r=="number"?`${r}px`:String(r))}return t["--tw-accent"]&&!t["--tw-on-accent"]&&(t["--tw-on-accent"]=D(t["--tw-accent"])),Object.keys(t).length?t:null},X=(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])}},K=(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")},M=(e,t)=>{X(e,t?.closest(".tw-panel")?._twTheme),K(e,t)},h=null,L=null,ce=e=>{h&&(!e||e.contains(L))&&h()};function ue(e,t,n,r={}){let o=!1,s=null;n.classList.add("tw-portal"),n.addEventListener("pointerdown",c=>t.closest(".tw-panel")?._twEditPointer?.(c),!0),N(n);let i=()=>B(t,n,{width:r.width,fallbackH:r.fallbackH,gap:r.gap,align:r.align}),a=()=>{if(o){if(!e.isConnected)return m();i(),r.onReflow&&r.onReflow()}},d=c=>{!e.contains(c.target)&&!n.contains(c.target)&&m()},b=c=>{c.key==="Escape"&&o&&(m(),t.focus())},l=c=>{if(!o)return;let w=c.relatedTarget;(w?e.contains(w)||n.contains(w):g)||(m(),w&&!t.closest(".tw-panel")?.contains(w)&&setTimeout(()=>{!o&&document.activeElement===w&&t.focus()},0))};e.addEventListener("focusout",l),n.addEventListener("focusout",l);let f=()=>n.querySelector('button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [href], [tabindex]:not([tabindex="-1"])'),u=()=>M(n,e),E=c=>{c.every(w=>w.target===n)||u()},v=()=>{h&&h!==m&&h(),h=m,L=t,o=!0,e.classList.add("is-open"),t.setAttribute("aria-expanded","true"),document.body.appendChild(n),M(n,e),window.addEventListener("tw-retheme",u),typeof MutationObserver=="function"&&(s=new MutationObserver(E),s.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:["data-tw-scheme"]})),i(),requestAnimationFrame(()=>{if(o&&(n.classList.add("is-open"),r.onOpen&&r.onOpen(),i(),!n.contains(document.activeElement))){let c=r.initialFocus&&r.initialFocus()||f();c&&c.focus({focusVisible:!g})}}),requestAnimationFrame(function c(){if(o){if(!e.isConnected)return m();requestAnimationFrame(c)}}),setTimeout(()=>{o&&document.addEventListener("pointerdown",d,!0)},0),document.addEventListener("keydown",b),window.addEventListener("scroll",a,!0),window.addEventListener("resize",a)},m=()=>{h===m&&(h=null,L=null),n.contains(document.activeElement)&&t.focus(),o=!1,e.classList.remove("is-open"),n.classList.remove("is-open"),t.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",d,!0),document.removeEventListener("keydown",b),window.removeEventListener("scroll",a,!0),window.removeEventListener("resize",a),window.removeEventListener("tw-retheme",u),s&&(s.disconnect(),s=null),setTimeout(()=>{o||n.remove()},200)};return t.addEventListener("click",()=>{t.disabled||(o?m():v())}),{open:v,close:m,isOpen:()=>o,reflow:a}}var de=(e,t)=>{if(e=e.toLowerCase(),e.includes(t))return!0;if(t.length<3)return!1;let n=t.length,r=e.length,o=new Array(r+1).fill(0);for(let s=1;s<=n;s++){let i=[s];for(let a=1;a<=r;a++)i[a]=Math.min(o[a]+1,i[a-1]+1,o[a-1]+(t[s-1]===e[a-1]?0:1));o=i}return Math.min(...o)<=(t.length<6?1:2)},q=typeof matchMedia=="function"?matchMedia("(prefers-reduced-motion: reduce)"):{matches:!1},z="cubic-bezier(0.22, 1, 0.36, 1)",fe="cubic-bezier(0.34, 1.2, 0.64, 1)",W=(e,t)=>{q.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:z}))},U=(e,t,n)=>{let r=e.querySelector('[data-active="true"]');if(!r)return;let o=r.offsetLeft,s=r.offsetWidth,i=parseFloat(t.style.left);t.style.left=o+"px",t.style.width=s+"px",n&&Number.isFinite(i)&&i!==o&&W(t,o>i?1:-1)},me=(e,t)=>{e.classList.toggle("is-disabled",t);for(let n of e.children)n.inert=t},we=(e,t,n,r)=>{e.classList.toggle("is-collapsed",r),t.setAttribute("aria-expanded",String(!r)),n.inert=r},T=(e,t)=>{let n=e.findIndex(r=>r.dataset.value===String(t));return n<0&&e.length?0:n},G=(e,t)=>{let n=T(e,t);e.forEach((r,o)=>{let s=r.dataset.value===String(t);r.dataset.active=String(s),r.setAttribute("aria-checked",String(s)),r.tabIndex=o===n?0:-1})},J=(e,t,n)=>{let r=R("button",e,O(t));return r.setAttribute("role","radio"),r._twVal=P(t),r.dataset.value=r._twVal,r.addEventListener("click",()=>n(r._twVal)),r},Y=(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 be(e,t,n,r){let o=p("div","tw-seg");o.setAttribute("role","radiogroup"),r&&o.setAttribute("aria-label",r);let s=p("div","tw-seg-pill");o.append(s);let i=e.map(l=>{let f=J("tw-seg-btn",l,u=>b(u));return o.append(f),f}),a=l=>U(o,s,l),d=()=>{G(i,t),a(!0)},b=(l,f=!0)=>{l!=null&&!i.some(u=>u._twVal===l)||(t=l,d(),f&&n(l))};return o.addEventListener("keydown",l=>{let f=T(i,t);if(f<0)return;let u=Y(l.key,f,i.length);u<0||(l.preventDefault(),b(i[u]._twVal),i[u].focus())}),d(),_(()=>{a(),o.classList.add("is-ready")}),V(o,[[window,"tw-reflow"]],()=>a()),{el:o,set:l=>b(l,!1),get:()=>t}}var he=(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>`,ve=(e,t)=>({el:e,set:()=>{},get:()=>{},destroy:t}),A={},ge=(e,t)=>{A[e]=t},Ee=e=>A[e];export{k as a,x as b,Z as c,C as d,H as e,Q as f,S as g,ee as h,te as i,ne as j,re as k,P as l,F as m,O as n,p as o,oe as p,R as q,N as r,_ as s,V as t,se as u,ie as v,ae as w,B as x,le as y,X as z,K as A,M as B,ce as C,ue as D,de as E,q as F,z as G,fe as H,U as I,me as J,we as K,T as L,G as M,J as N,Y as O,be as P,he as Q,ve as R,ge as S,Ee as T};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as a,d as b,e as c,f as d,g as e}from"./chunk-AUZVP7BC.js";import"./chunk-36ETNTXF.js";import"./chunk-NGLZEK5U.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 rt,B as St,C as it,D as At,E as at,F as ze,G as Ct,I as Tt,J as Mt,K as Ot,L as _t,N as Nt,O as Ve,P as le,Q as Ue,a as nt,b as D,c as ht,d as gt,e as wt,f as Me,g as st,h as Oe,i as vt,j as v,l as xe,m as Z,p as xt,q as kt,r as Ke,s as Lt,t as We,y as Et,z as ot}from"./chunk-K6N3NNAW.js";var lt={interval:()=>import("./interval-K4JN65W5.js"),color:()=>import("./colour-J2FKMVZA.js"),gradient:()=>import("./gradient-MV3DECUF.js"),tabs:()=>import("./tabs-IVS2Y3JA.js"),image:()=>import("./image-NZPSGN4W.js"),fpsgraph:()=>import("./monitor-PUIUETKC.js"),monitor:()=>import("./monitor-PUIUETKC.js"),spring:()=>import("./spring-IJA5GPVX.js"),cubicbezier:()=>import("./bezier-4JJDADLM.js"),point:()=>import("./point-UZ77545Q.js"),plot:()=>import("./plot-IB2Q2LCO.js")},Ge={},Qt=e=>Ue(e)||!lt[e]?null:Ge[e]||(Ge[e]=lt[e]().catch(t=>{throw delete Ge[e],console.error(`[tweaks] control chunk "${e}" failed to load:`,t),t})),ct=(e,t=new Set)=>{for(let s of e)if(s&&(lt[s.type]&&t.add(s.type),s.children&&ct(s.children,t),s.pages))for(let n of s.pages)ct(n.children,t);return t},Jt=e=>{let t=[...ct(e)].map(Qt).filter(Boolean);return t.length?Promise.all(t):null};function Qe(e,t,s=0){if(e==="__proto__"||e==="constructor"||e==="prototype")return null;let n=en(e,t,s);return n&&t&&typeof t=="object"&&(typeof t.render=="function"&&(n.render=t.render),t.disabled!=null&&(n.disabled=t.disabled),t.hint!=null&&(n.hint=String(t.hint))),n}var _e=e=>e&&typeof e=="object",pt=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Pt=(e,t)=>e!==t&&!(_e(e)&&_e(t)&&JSON.stringify(e)===JSON.stringify(t)),Ft=(e,t,s)=>Array.isArray(e.options)&&{type:"radiogrid",key:t,label:s,options:e.options,value:e.value??Oe(e.options[0]),cols:e.cols},jt={slider:(e,t,s)=>{let n=e.min??0,o=e.max??1;return{type:"slider",key:t,label:s,value:e.value??n,min:n,max:o,step:e.step??Me(n,o),soft:e.soft}},number:(e,t,s)=>({type:"number",key:t,label:s,value:e.value??0,min:e.min,max:e.max,step:e.step??1,soft:e.soft}),checkbox:(e,t,s)=>({type:"checkbox",key:t,label:s,value:!!e.value}),radiogrid:Ft,segmented:Ft,list:(e,t,s)=>Array.isArray(e.options)&&{type:"list",key:t,label:s,options:e.options,value:e.value??Oe(e.options[0])},color:(e,t,s)=>({type:"color",key:t,label:e.label||s,value:e.value}),text:(e,t,s)=>({type:"text",key:t,label:s,value:e.value??"",rows:e.rows,placeholder:e.placeholder}),interval:(e,t,s)=>{let n=e.min??0,o=e.max??1;return{type:"interval",key:t,label:s,value:(Array.isArray(e.value)?e.value:[n,o]).map(Number),min:n,max:o,step:e.step??Me(n,o)}},spring:(e,t,s)=>{let n=_e(e.value)?e.value:e,o={stiffness:n.stiffness??300,damping:n.damping??26,mass:n.mass??1};Number.isFinite(+n.visualDuration)&&(o.visualDuration=+n.visualDuration),Number.isFinite(+n.bounce)&&(o.bounce=+n.bounce);let a=e.mode??n.mode;return{type:"spring",key:t,label:s,value:o,...a==="time"||a==="physics"?{mode:a}:{}}},cubicbezier:(e,t,s)=>({type:"cubicbezier",key:t,label:s,value:Array.isArray(e.value)&&e.value.length===4?e.value.map(Number):[.25,.1,.25,1]}),point:(e,t,s)=>Array.isArray(e.components)&&{type:"point",key:t,label:s,components:e.components,pad:e.pad,invertY:e.invertY,value:Object.fromEntries(e.components.map(n=>[n.key,n.value??0]))},gradient:(e,t,s)=>({type:"gradient",key:t,label:s,value:e.value??e.stops??null}),image:(e,t,s)=>({type:"image",key:t,label:s,value:e.value||""}),plot:(e,t,s)=>{let n=e.expr!=null?String(e.expr):typeof e.fn=="function"?"":"sin(x)";return{type:"plot",key:t,label:s,value:n,expr:n,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:(e,t,s)=>({type:"fpsgraph",key:t,label:e.label||s}),monitor:(e,t,s)=>({type:"monitor",key:t,label:s,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,t,s)=>({type:"buttongroup",key:t,label:s,buttons:e.buttons}),separator:(e,t,s)=>({type:"separator",key:t,label:s}),tabs:(e,t,s,n)=>{if(!e.pages||typeof e.pages!="object")return!1;let o=new Set;return{type:"tabs",key:t,label:s,pages:Object.entries(e.pages).map(([a,f])=>{let k=a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",y=k,h=2;for(;o.has(y);)y=`${k}-${h++}`;return o.add(y),{key:y,title:a,children:Object.entries(f).map(([O,A])=>Qe(O,A,(n||0)+1)).filter(Boolean)}})}}};function en(e,t,s=0){if(s>64)return null;let n=nt(e);if(_e(t)&&!Array.isArray(t)&&pt(jt,t.type)){let o;try{o=jt[t.type](t,e,n,s)}catch(a){return console.error(`[tweaks] malformed "${t.type}" schema value for "${e}" \u2014 control skipped:`,a),null}if(o)return o}if(Array.isArray(t)&&Array.isArray(t[0])&&t[0].length===2&&typeof t[0][0]=="number"){let o=Number.isFinite(+t[1])?+t[1]:+t[0][0],a=Number.isFinite(+t[2])?+t[2]:+t[0][1];return{type:"interval",key:e,label:n,value:t[0].map(Number),min:o,max:a,step:t[3]??Me(o,a)}}if(Array.isArray(t)&&t.length<=4&&typeof t[0]=="number"){let o=t[0],[a,f]=st(o),k=t.length>1?t[1]:a,y=t.length>2?t[2]:f;return{type:"slider",key:e,label:n,value:o,min:k,max:y,step:t[3]??Me(k,y)}}if(typeof t=="number"){let[o,a]=st(t);return{type:"slider",key:e,label:n,value:t,min:o,max:a,step:Me(o,a)}}return typeof t=="boolean"?{type:"checkbox",key:e,label:n,value:t}:Array.isArray(t)?{type:"list",key:e,label:n,options:t,value:Oe(t[0])}:_e(t)&&typeof t.action=="function"?{type:"button",key:e,label:t.label||n,action:t.action}:_e(t)&&Array.isArray(t.options)?{type:"list",key:e,label:n,options:t.options,value:t.value??Oe(t.options[0])}:ht(t)?{type:"color",key:e,label:n,value:t}:typeof t=="string"?{type:"text",key:e,label:n,value:t}:_e(t)?{type:"folder",key:e,label:n,children:Object.entries(t).filter(([o,a])=>!(o==="render"&&typeof a=="function")&&!((o==="disabled"||o==="hint")&&a!=null)).map(([o,a])=>Qe(o,a,s+1)).filter(Boolean)}:null}var tn=3,It=32,Rt=200,Dt=8;function nn(e,t){let s=e.label,n=+e.min,o=+e.max,a=+e.step;if(Number.isFinite(n)||(n=0),Number.isFinite(o)||(o=n+100),o<n){let l=n;n=o,o=l}(!(a>0)||a>o-n)&&(a=Me(n,o));let f=(o-n)/a<=6,k=Number.isFinite(+e.value)?+e.value:n,y=e.soft&&!f?k:D(k,n,o),h=0,O=gt(a),A=v("div","tw-slider-wrap"),p=v("div","tw-slider"),Q=v("div","tw-slider-hashmarks"),u=v("div","tw-slider-fill"),C=v("div","tw-slider-handle"),$=Z("span","tw-slider-label",s),M=v("span","tw-slider-value");p.append(Q,u,C,$,M),A.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(o));let ce=l=>wt(l,n,a),Ne=f?Array.from({length:Math.max(0,Math.round((o-n)/a)-1)},(l,L)=>(L+1)*a/(o-n)*100):[];for(let l of Ne){let L=v("div","tw-slider-hashmark");L.style.left=l+"%",Q.append(L)}let de=()=>{let l=D((y-n)/(o-n||1)*100,0,100),L=h?` + ${h.toFixed(1)}px`:"",N=`${l}%${L}`;u.style.width=h?`calc(${N})`:l+"%",C.style.left=`max(5px, calc(${N} - 9px))`;let K=ce(y),Y=K.toFixed(O);M.textContent=Y,p.setAttribute("aria-valuenow",String(K)),p.setAttribute("aria-valuetext",Y);let ge=A.offsetWidth;if(ge){let te=Math.max(5,l/100*ge+h-9),ve=0,Re=$.offsetLeft,He=Re+$.offsetWidth,Xe=M.offsetLeft,Be=Xe+M.offsetWidth,Ye=te<He&&te+3>Re,ye=te<Be+ve&&te+3>Xe-ve;p.classList.toggle("is-dodge",Ye||ye)}};de();let j=null,De=1,ne=null,se=!0,oe,ee=null,ke=null,Pe="width 0.34s cubic-bezier(0.34,1.2,0.64,1)",m="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)",z=.2,pe=l=>{if(!j)return y;let L=A.offsetWidth||j.width,N=D((l-j.left)/De/L,0,1);return D(n+N*(o-n),n,o)},Fe=l=>{let L=0;l<j.left?L=-Dt*Math.sqrt(Math.min(Math.max(0,j.left-l-It)/Rt,1)):l>j.right&&(L=Dt*Math.sqrt(Math.min(Math.max(0,l-j.right-It)/Rt,1))),p.style.width=`calc(100% + ${Math.abs(L)}px)`,p.style.transform=L<0?`translateX(${L}px)`:""},re=(l,L=!0)=>{l=+l,Number.isFinite(l)&&(y=f?D(ce(l),n,o):e.soft?l:D(l,n,o),de(),L&&t(ce(y)))},ue=Math.max(1,Math.round((o-n)/a)),ie=.2,fe=.3,Te=520,V=27,me=l=>(l-n)/a,U=0,ae=0,q=0,he=!1,H=null,Le=y,Ee=0,Se=()=>{q&&cancelAnimationFrame(q),q=0,Ee=0},je=l=>{if(!p.isConnected){Se();return}let L=Ee?Math.min((l-Ee)/1e3,.05):1/60;Ee=l;let N=A.offsetWidth||j&&j.width||1,K=me(D(Le,n,o)),Y=D(Math.round(K+ie),0,ue),ge=he?Y+fe*D(K-Y,-.5,.5):Y,we=L,Ie=1/240;for(;we>1e-4;){let te=Math.min(Ie,we);we-=te;let ve=Te*(ge-U)-V*ae;ae+=ve*te,U+=ae*te,U<0&&(U=0,ae=0),U>ue&&(U=ue,ae=0)}h=(U-Y)*a/(o-n||1)*N,y=D(n+Y*a,n,o),de(),Y!==H&&(H=Y,t(ce(y))),!he&&Math.abs(ae)<.004&&Math.abs(U-Y)<.004?(U=Y,ae=0,h=0,de(),Se(),p.classList.remove("is-active")):q=requestAnimationFrame(je)},qe=l=>{U=me(y),ae=0,he=!0,H=Math.round(me(y)),Le=pe(l),q||(q=requestAnimationFrame(je))};p.addEventListener("pointerdown",l=>{if(!M.classList.contains("is-editing")&&!(l.button!==0||ne)){l.preventDefault(),p.focus({focusVisible:!1}),ke=l.pointerId;try{l.target.setPointerCapture(l.pointerId)}catch{}clearTimeout(oe),p.style.transition="",ne={x:l.clientX,y:l.clientY},se=!0,p.classList.add("is-active"),j=A.getBoundingClientRect(),De=j.width/(A.offsetWidth||j.width),f?(u.style.transition="",C.style.transition="",qe(l.clientX)):(u.style.transition=Pe,C.style.transition=m,re(pe(l.clientX)))}}),p.addEventListener("pointermove",l=>{if(!(!ne||l.pointerId!==ke)){if(l.buttons===0){I();return}if(se&&Math.hypot(l.clientX-ne.x,l.clientY-ne.y)>tn&&(se=!1,p.classList.add("is-dragging"),f||(u.style.transition="",C.style.transition="")),!se)if(Fe(l.clientX),f)Le=pe(l.clientX);else{let L;if(l.altKey){ee||(ee={x:l.clientX,v:y});let N=A.offsetWidth||j.width;L=D(ee.v+(l.clientX-ee.x)/N*(o-n)*z,n,o)}else ee=null,L=pe(l.clientX);re(L)}l.clientX>=j.left&&l.clientX<=j.right&&(p.style.width="",p.style.transform="")}});let I=l=>{!ne||l&&l.pointerId!==ke||(f?(he=!1,p.classList.remove("is-dragging"),q||(q=requestAnimationFrame(je))):(oe=setTimeout(()=>{u.style.transition="",C.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),ne=null,ee=null,ke=null)};p.addEventListener("pointerup",I),p.addEventListener("pointercancel",I),p.addEventListener("lostpointercapture",I),Lt(p,de),kt(de),Ke(p,[[window,"resize"]],de),p.addEventListener("keydown",l=>{f&&(Se(),h=0);let L=l.shiftKey?10:1,N=(o-n)/10||a*10,K=y;switch(l.key){case"ArrowRight":case"ArrowUp":K=y+a*L;break;case"ArrowLeft":case"ArrowDown":K=y-a*L;break;case"PageUp":K=y+N;break;case"PageDown":K=y-N;break;case"Home":K=n;break;case"End":K=o;break;default:return}l.preventDefault(),re(D(K,n,o))});let X;return M.addEventListener("mouseenter",()=>{X=setTimeout(()=>M.classList.add("is-editable"),800)}),M.addEventListener("mouseleave",()=>{clearTimeout(X),M.classList.contains("is-editing")||M.classList.remove("is-editable")}),M.addEventListener("pointerdown",l=>{l.pointerType&&l.pointerType!=="mouse"?(M.classList.add("is-editable"),l.stopPropagation()):M.classList.contains("is-editable")&&l.stopPropagation()}),M.addEventListener("click",()=>{if(!M.classList.contains("is-editable"))return;let l=v("input","tw-slider-input");l.type="text",l.inputMode="decimal",l.value=ce(y).toFixed(O),M.classList.add("is-editing"),M.replaceWith(l),l.focus(),l.select();let L=()=>{let N=parseFloat(l.value);isNaN(N)||re(e.soft?N:D(N,n,o)),l.replaceWith(M),M.classList.remove("is-editing","is-editable")};l.addEventListener("pointerdown",N=>N.stopPropagation()),l.addEventListener("blur",L),l.addEventListener("keydown",N=>{N.key==="Enter"?L():N.key==="Escape"&&(l.replaceWith(M),M.classList.remove("is-editing","is-editable"))})}),{el:A,set:l=>re(l,!1),get:()=>ce(y)}}function sn(e,t){let s=v("div","tw-row"),n=_t([{value:"off",label:"Off"},{value:"on",label:"On"}],e.value?"on":"off",o=>t(o==="on"),e.label);return s.append(Z("span","tw-row-label",e.label),n.el),{el:s,set:o=>n.set(o?"on":"off"),get:()=>n.get()==="on"}}function on(e,t){let s=e.options||[],n=Math.min(3,Math.max(2,e.cols||(s.length<=3?s.length:s.length===4?2:3))),o=v("div","tw-radiogrid"),a=v("div","tw-radiogrid-grid");a.style.setProperty("--tw-rg-cols",n),a.setAttribute("role","radiogroup"),a.setAttribute("aria-label",e.label);let f=e.value??Oe(s[0]),k=s.map(O=>{let A=Mt("tw-radiogrid-btn",O,p=>h(p));return a.append(A),A}),y=()=>Tt(k,f),h=(O,A=!0)=>{f=O,y(),A&&t(O)};return a.addEventListener("keydown",O=>{let A=k.findIndex(Q=>Q.dataset.value===String(f));if(A<0)return;let p=Ot(O.key,A,k.length,n);p<0||(O.preventDefault(),p!==A&&(h(k[p]._twVal),k[p].focus()))}),y(),o.append(Z("span","tw-radiogrid-label",e.label),a),{el:o,set:O=>h(O,!1),get:()=>f}}var rn='<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 an(e,t){let s=e.value,n=e.options.map(u=>({value:Oe(u),label:vt(u)})),o=v("div","tw-select"),a=xe("tw-select-trigger");a.setAttribute("aria-haspopup","listbox"),a.setAttribute("aria-expanded","false");let f=v("span","tw-select-right"),k=v("span","tw-select-value");f.append(k),f.insertAdjacentHTML("beforeend",rn),a.append(Z("span","tw-select-label",e.label),f);let y=v("div","tw-select-dropdown");y.setAttribute("role","listbox");let h=n.map(u=>{let C=xe("tw-select-option");return C.setAttribute("role","option"),C.textContent=u.label,C.dataset.value=u.value,C.addEventListener("click",()=>{A(u.value),p.close()}),y.append(C),C});o.append(a,y);let O=()=>{k.textContent=(n.find(u=>u.value===s)||{}).label??s,h.forEach(u=>{let C=u.dataset.value===String(s);u.dataset.selected=String(C),u.setAttribute("aria-selected",String(C))})},A=(u,C=!0)=>{s=u,O(),C&&t(u)},p=at(o,a,y,{width:"match",fallbackH:200,gap:4,onOpen:()=>(h.find(u=>u.dataset.value===String(s))||h[0])?.focus()});a.addEventListener("keydown",u=>{!p.isOpen()&&(u.key==="ArrowDown"||u.key==="ArrowUp")&&(u.preventDefault(),p.open())}),y.addEventListener("keydown",u=>{let C=h.indexOf(document.activeElement),$=C;if(u.key==="ArrowDown")$=C<0?0:Math.min(h.length-1,C+1);else if(u.key==="ArrowUp")$=C<0?h.length-1:Math.max(0,C-1);else if(u.key==="Home")$=0;else if(u.key==="End")$=h.length-1;else return;u.preventDefault(),h[$]?.focus()});let Q=u=>{p.isOpen()&&!o.contains(u.relatedTarget)&&!y.contains(u.relatedTarget)&&p.close()};return a.addEventListener("focusout",Q),y.addEventListener("focusout",Q),O(),{el:o,set:u=>A(u,!1),get:()=>s}}function ln(e){let t=Z("button","tw-button",e.label);return t.type="button",t.addEventListener("click",()=>e.action&&e.action()),Ve(t)}function cn(e){let t=v("div","tw-row tw-buttongroup");e.label&&t.append(Z("span","tw-row-label",e.label));let s=v("div","tw-buttongroup-btns"),n=Array.isArray(e.buttons)?e.buttons.map(o=>[o.label,o.action]):Object.entries(e.buttons||{});for(let[o,a]of n){let f=Z("button","tw-buttongroup-btn",o);f.type="button",f.addEventListener("click",()=>typeof a=="function"&&a()),s.append(f)}return t.append(s),Ve(t)}var dn=()=>Ve(v("div","tw-separator"));function pn(e,t){let s=e.value??"",n=e.rows>0,o=v("div",n?"tw-row tw-row-multiline":"tw-row"),a=v(n?"textarea":"input",n?"tw-text tw-textarea":"tw-text");return n?a.rows=e.rows:a.type="text",a.value=s,We(a),e.placeholder&&(a.placeholder=e.placeholder),a.addEventListener("input",()=>{s=a.value,t(s)}),o.append(Z("span","tw-row-label",e.label),a),{el:o,set:f=>{s=f==null?"":String(f),a.value=s},get:()=>s}}var un=(e,t)=>Nt({...e,row:!0},t);function ut(e){let t=v("div","tw-folder"),s=xe("tw-folder-header");s.setAttribute("aria-expanded","true"),s.append(Z("span","tw-folder-title",e.label)),s.insertAdjacentHTML("beforeend",gn);let n=v("div","tw-folder-body"),o=v("div","tw-controls");n.append(o),t.append(s,n);let a=f=>{t.classList.toggle("is-collapsed",f),s.setAttribute("aria-expanded",f?"false":"true"),n.inert=f};return s.addEventListener("click",()=>a(!t.classList.contains("is-collapsed"))),{el:t,body:o,setCollapsed:a}}var fn=new Set(["button","fpsgraph","monitor","buttongroup","separator"]);function dt(e,t){let s=Ue(e.type);if(!s)return null;try{return s(e,t)}catch(n){return console.error("[tweaks] control failed to build:",e&&e.type,n),null}}var mn='<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>',yn='<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>',bn='<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>',hn='<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>',gn='<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>',wn='<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>',vn='<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>',Bt='<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>',Ze=(e,t,s)=>{let n=xe("tw-toolbar-btn"+(e?" "+e:""),t);return n.title=s,n.setAttribute("aria-label",s),n},Kt=()=>Ze("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${mn}${yn}</span>`,"Copy values"),Wt=()=>Ze("tw-toolbar-btn--reset",bn,"Reset"),zt=e=>{e.classList.add("is-copied"),clearTimeout(e._t),e._t=setTimeout(()=>e.classList.remove("is-copied"),1400)},Vt=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",n=>{n.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 s=()=>{t.getAnimations&&t.getAnimations().length?e._t=setTimeout(s,250):e._spinSettle()};e._t=setTimeout(s,600)},Ae=null,$t=0;function Ce(e,t){Ae||(Ae=v("div","tw-toast tw-portal"),Ae.setAttribute("role","status"),document.body.appendChild(Ae)),Ae.textContent=e,it(Ae,t),Ae.classList.add("is-open"),clearTimeout($t),$t=setTimeout(()=>Ae.classList.remove("is-open"),1600)}var J=null,ft=0,qt=null,mt=e=>{e.key==="Escape"&&yt()},yt=()=>{clearTimeout(ft),document.removeEventListener("keydown",mt),J&&J.classList.remove("is-open")};function xn(e,t){J||(J=v("div","tw-tip tw-portal"),J.setAttribute("role","tooltip"),document.body.appendChild(J)),clearTimeout(ft),J.textContent=t,it(J,e);let s=J.classList.contains("is-open");J.style.visibility="hidden",J.classList.add("is-open"),Et(e,J,{align:"center",prefer:"above",gap:8}),J.style.visibility="",document.addEventListener("keydown",mt),qt=e,s||requestAnimationFrame(function n(){if(J.classList.contains("is-open")){if(!qt.isConnected)return yt();requestAnimationFrame(n)}})}function Ht(){J&&(ft=setTimeout(()=>{J.classList.remove("is-open"),document.removeEventListener("keydown",mt)},80))}function Ut(e,t){let s=e.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")||e,n=s.closest("button"),o=n?v("span","tw-hint",Bt):xe("tw-hint",Bt),a=()=>xn(o,t);if(n){o.setAttribute("aria-hidden","true");let f=n.getAttribute("aria-description");n.setAttribute("aria-description",f?`${f}. ${t}`:t)}else o.setAttribute("aria-label",t),o.addEventListener("focus",a),o.addEventListener("blur",Ht),o.addEventListener("keydown",f=>{(f.key==="Enter"||f.key===" ")&&f.stopPropagation()});o.addEventListener("pointerenter",a),o.addEventListener("pointerleave",Ht),o.addEventListener("pointerdown",f=>f.stopPropagation()),o.addEventListener("click",f=>{f.preventDefault(),f.stopPropagation()}),s.appendChild(o)}async function Gt(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 s=!1;try{s=document.execCommand("copy")}catch{}return document.body.removeChild(t),s}le("slider",nn);le("checkbox",sn);le("radiogrid",on);le("list",an);le("button",ln);le("buttongroup",cn);le("separator",dn);le("text",pn);le("number",un);le("folder",ut);function An(e,t,s={}){let n=Object.entries(t).filter(([c])=>c!=="_last"||(console.warn('[tweaks] "_last" is reserved (the changed-key channel) \u2014 schema entry skipped'),!1)).map(([c,E])=>Qe(c,E)).filter(Boolean),o={},a=[],f=new Set,k=new Set,y=[],h=!1,O=!1,A=[],p=null,Q=()=>{},u=()=>({}),C=()=>!1,$=()=>!1,M=()=>{},ce=()=>{},Ne=()=>{},de=Symbol("fromJSON"),j=Symbol("setMany"),De=()=>{let c=JSON.parse(JSON.stringify(o));return delete c._last,{values:c,ui:{}}},ne=c=>{A.push([de,c])},se=()=>{k.forEach(c=>{try{c(o,o._last)}catch(E){console.error("[tweaks] listener threw:",E)}}),Q()},oe=s.persist?`tw:${s.persist===!0?e:s.persist}`:null,ee=oe?`${oe}:presets`:null,ke=c=>{try{return JSON.parse(localStorage.getItem(c)||"null")}catch{return null}},Pe=(c,E)=>{try{localStorage.setItem(c,JSON.stringify(E))}catch{}},m=v("div","tw-panel");m.dataset.mode="inline",xt(m);let z=v("div","tw-header"),pe=xe("tw-header-toggle");pe.setAttribute("aria-expanded","true"),pe.append(Z("span","tw-title",e));let Fe=v("div","tw-toolbar"),re=Kt(),ue=Wt(),ie=null;oe&&(ie=Ze("",wn,"Presets"),ie.setAttribute("aria-haspopup","menu"),ie.setAttribute("aria-expanded","false"),Fe.append(ie));let fe=!!s.filter,Te=fe?Ze("",hn,"Filter controls"):null,V=fe?v("input","tw-search"):null;fe&&(V.type="text",V.placeholder="Filter\u2026",V.spellcheck=!1,V.setAttribute("aria-label","Filter controls"),We(V),Fe.append(Te)),Fe.append(re,ue),z.append(pe),fe&&z.append(V),s.toolbar!==!1&&z.append(Fe);for(let c of[re,ue,ie,Te])c&&(c.disabled=!0);let me=!1;pe.addEventListener("click",()=>{if(me){me=!1;return}let c=m.classList.toggle("is-collapsed");pe.setAttribute("aria-expanded",c?"false":"true"),U.inert=c,m.dataset.mode==="floating"&&setTimeout(()=>{m.dataset.mode==="floating"&&m.isConnected&&(L(),l())},270)});let U=v("div","tw-body"),ae=v("div","tw-controls");U.append(ae),m.append(z,U);let q=ot(s.theme);rt(m,q),m._twTheme=q;let he=s.draggable!==!1,H=8,Le=28,Ee=()=>({maxX:Math.max(H,window.innerWidth-m.offsetWidth-H),maxY:Math.max(H,window.innerHeight-m.offsetHeight-H)}),Se=oe?`${oe}:pos`:null,je=(he||s.floating)&&Se?ke(Se):null,qe=je||(typeof s.floating=="object"?s.floating:null)||{x:16,y:16},I=+qe.x||16,X=+qe.y||16,l=()=>{m.style.left=I+"px",m.style.top=X+"px"},L=()=>{let{maxX:c,maxY:E}=Ee();I=D(I,H,c),X=D(X,H,E)};(he||s.floating)&&(s.floating||je)&&(m.dataset.mode="floating",L(),l(),requestAnimationFrame(()=>{!h&&m.dataset.mode==="floating"&&m.isConnected&&(L(),l())}));let N=c=>{c.set(c.def),c.target[c.key]=c.get(),o._last=c.key,se()},K=(c,E)=>{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 S=0,G=0,g=0,F=!1,i=()=>{S&&(clearTimeout(S),S=0,x.classList.remove("tw-reset-holding"))};x.addEventListener("pointerdown",r=>{r.stopPropagation(),F=!1,!(r.pointerType!=="touch"&&r.pointerType!=="pen")&&(G=r.clientX,g=r.clientY,x.classList.add("tw-reset-holding"),S=setTimeout(()=>{S=0,x.classList.remove("tw-reset-holding","is-editable"),F=!0,N(E)},500))}),x.addEventListener("pointermove",r=>{S&&Math.abs(r.clientX-G)+Math.abs(r.clientY-g)>8&&i()}),x.addEventListener("pointerup",i),x.addEventListener("pointercancel",i),x.addEventListener("pointerleave",i),x.addEventListener("contextmenu",r=>{F&&r.preventDefault()}),x.addEventListener("click",r=>{F&&(r.preventDefault(),r.stopImmediatePropagation(),F=!1)},!0),x.addEventListener("dblclick",r=>{r.preventDefault(),r.stopPropagation(),N(E)})},Y=[],ge=(c,E)=>{E.hint&&Ut(c,E.hint),(E.render||E.disabled!=null)&&Y.push({node:c,m:E})},we=[],Ie=[],te=[],ve=[],Re=(c,E,x,S=[],G=null)=>{for(let g of E){if(g.type==="tabs"){let r={};f.add(r),x[g.key]=r;let d=Ue("tabs"),b=d&&d(g);if(!b)continue;ve.push({path:[...S,g.key],ctrl:b,pageKeys:g.pages.map(w=>w.key)}),g.pages.forEach((w,B)=>{let W={};f.add(W),r[w.key]=W,Re(b.bodies[B],w.children,W,[...S,g.key,w.key])}),ge(b.el,g),c.append(b.el);continue}if(g.type==="folder"){let r={};f.add(r),x[g.key]=r;let d=ut(g);te.push({path:[...S,g.key],el:d.el,setCollapsed:d.setCollapsed});let b=fe?{el:d.el,label:g.label,body:d.body}:null;b&&Ie.push(b),Re(d.body,g.children,r,[...S,g.key],b),ge(d.el,g),c.append(d.el);continue}if(fn.has(g.type)){let r=dt(g,()=>{});r&&(fe&&g.type!=="separator"&&we.push({el:r.el,label:g.label,folder:G}),ge(r.el,g),c.append(r.el));continue}let F=dt(g,r=>{Pt(x[g.key],r)&&(x[g.key]=r,o._last=g.key,se())});if(!F)continue;pt(x,g.key)&&F.set(x[g.key]),x[g.key]=F.get();let i={target:x,key:g.key,set:F.set,get:F.get,def:g.value,path:[...S,g.key]};a.push(i),K(F.el,i),ge(F.el,g),fe&&we.push({el:F.el,label:g.label,folder:G}),c.append(F.el)}},He=()=>{if(h)return;if(Re(ae,n,o),Y.length){let i=new Map;for(let b of a)i.has(b.key)||i.set(b.key,b);let r=b=>{let w=i.get(b);return w?w.target[w.key]:o[b]},d=()=>{for(let{node:b,m:w}of Y)try{if(w.render&&b.classList.toggle("tw-cond-hidden",!w.render(r)),w.disabled!=null){let B=typeof w.disabled=="function"?w.disabled(r):w.disabled;b.classList.toggle("is-disabled",!!B),b.inert=!!B}}catch{}};k.add(d),d()}if(fe){let i=d=>{let b=d.trim().toLowerCase();if(!b){we.forEach(w=>w.el.classList.remove("tw-filter-hidden")),Ie.forEach(w=>w.el.classList.remove("tw-filter-hidden"));return}for(let w of we){let B=w.folder&&ze(w.folder.label,b);w.el.classList.toggle("tw-filter-hidden",!(ze(w.label,b)||B))}for(let w of Ie.slice().reverse()){let B=[...w.body.children].some(W=>!W.classList.contains("tw-filter-hidden"));w.el.classList.toggle("tw-filter-hidden",!(ze(w.label,b)||B))}},r=()=>{m.classList.remove("is-searching"),V.value="",i("")};Te.addEventListener("click",()=>{m.classList.toggle("is-searching")?(V.focus(),V.select()):r()}),V.addEventListener("input",()=>i(V.value)),V.addEventListener("keydown",d=>{d.key==="Escape"&&(r(),Te.focus())})}let c=(i,r)=>r.reduce((d,b)=>d?.[b],i),E=function(i,r){return i==="_last"&&this===o?void 0:r},x=()=>JSON.parse(JSON.stringify(o,E)),S=(i,r=!0)=>{if(!(!i||typeof i!="object")){for(let d of a){let b=c(i,d.path);b!==void 0&&(d.set(b),d.target[d.key]=d.get())}o._last=void 0,r&&se()}};if(oe){let i;Q=()=>{clearTimeout(i),i=setTimeout(()=>Pe(oe,x()),150)},y.push(()=>clearTimeout(i)),S(ke(oe))}u=()=>{let i=ee?ke(ee):null;return Object.assign(Object.create(null),i&&typeof i=="object"?i:{})},C=i=>{if(!ee||!i)return!1;let r=u();return r[i]=x(),Pe(ee,r),!0},$=i=>{let r=u();return r[i]?(S(r[i]),!0):!1},M=i=>{if(!ee)return;let r=u();delete r[i],Pe(ee,r)};let G=i=>i.map(r=>String(r).replace(/~/g,"~1").replace(/\./g,"~0")).join("."),g=()=>{let i={};if(te.length){let r={};for(let d of te)r[G(d.path)]=d.el.classList.contains("is-collapsed");i.folders=r}if(ve.length){let r={};for(let d of ve)r[G(d.path)]=d.pageKeys[d.ctrl.active()]??null;i.tabs=r}return i},F=i=>{if(!(!i||typeof i!="object")){if(i.folders)for(let r of te){let d=i.folders[G(r.path)];typeof d=="boolean"&&r.setCollapsed(d)}if(i.tabs)for(let r of ve){let d=r.pageKeys.indexOf(i.tabs[G(r.path)]);d>=0&&d!==r.ctrl.active()&&r.ctrl.activate(d)}}};if(De=()=>({values:x(),ui:g()}),ne=i=>{!i||typeof i!="object"||(i.values&&S(i.values),F(i.ui))},he||s.floating){if(he){m.dataset.draggable="true";let _=v("span","tw-grabber");_.setAttribute("aria-hidden","true"),z.prepend(_)}let i=()=>{if(m.dataset.mode==="floating")return;let _=m.getBoundingClientRect();I=_.left,X=_.top,m.parentNode&&(p=v("span","tw-lift-slot"),p.style.width=_.width+"px",p.style.height=_.height+"px",p.setAttribute("aria-hidden","true"),m.before(p)),St(m,m),document.body.appendChild(m),m.dataset.mode="floating",l()},r=null,d=0,b=0,w=0,B=0;z.addEventListener("pointerdown",_=>{if(!(_.button!==0||r!==null||_.target.closest(".tw-toolbar, input, textarea, select")))if(r=_.pointerId,d=_.clientX,b=_.clientY,me=!1,m.classList.add("is-grabbing"),m.style.transition){let R=getComputedStyle(m);I=parseFloat(R.left)||I,X=parseFloat(R.top)||X,m.style.transition="",l()}else m.style.transition=""}),z.addEventListener("pointermove",_=>{if(_.pointerId!==r)return;let R=_.clientX-d,P=_.clientY-b;if(!me){if(Math.abs(R)+Math.abs(P)<4)return;me=!0,i(),w=I,B=X;try{z.setPointerCapture(r)}catch{}m.classList.add("is-dragging")}let{maxX:be,maxY:Je}=Ee();I=D(w+R,H,be),X=D(B+P,H,Je),l()});let W=_=>{if(_.pointerId===r){try{z.releasePointerCapture(r)}catch{}if(r=null,me){let{maxX:R,maxY:P}=Ee();I<=H+Le?I=H:I>=R-Le&&(I=R),X<=H+Le?X=H:X>=P-Le&&(X=P),Ct.matches||(m.style.transition="left 0.32s var(--tw-ease-spring), top 0.32s var(--tw-ease-spring)",setTimeout(()=>{m.style.transition=""},340)),l(),Se&&Pe(Se,{x:I,y:X})}m.classList.remove("is-dragging","is-grabbing")}};z.addEventListener("pointerup",W),z.addEventListener("pointercancel",W),z.addEventListener("lostpointercapture",W),y.push(Ke(m,[[window,"resize"]],()=>{m.dataset.mode==="floating"&&(L(),l())}))}if(ie){let i=v("div","tw-presets-menu"),r=v("div","tw-presets-save"),d=v("input","tw-presets-input");d.type="text",d.placeholder="Preset name\u2026",d.spellcheck=!1,d.setAttribute("aria-label","New preset name"),We(d);let b=Z("button","tw-presets-savebtn","Save");b.type="button",r.append(d,b);let w=v("div","tw-presets-list");i.append(r,w);let B=()=>{let R=u(),P=Object.keys(R);if(w.replaceChildren(),!P.length)return w.append(Z("div","tw-presets-empty","No presets yet"));for(let be of P){let Je=v("div","tw-presets-row"),et=Z("button","tw-presets-load",be);et.type="button",et.addEventListener("click",()=>{$(be),_.close(),Ce(`Loaded \u201C${be}\u201D`,m)});let tt=xe("tw-presets-del",vn);tt.setAttribute("aria-label",`Delete preset ${be}`),tt.addEventListener("click",Zt=>{Zt.stopPropagation(),M(be),B()}),Je.append(et,tt),w.append(Je)}},W=()=>{let R=d.value.trim();if(!R){d.focus();return}C(R),d.value="",B(),Ce(`Saved \u201C${R}\u201D`,m)},_=at(ie,ie,i,{width:208,fallbackH:160,gap:6,align:"end",onOpen:()=>{B(),d.focus()}});b.addEventListener("click",W),d.addEventListener("keydown",R=>{R.key==="Enter"&&W()})}if(re.addEventListener("click",async()=>{await Gt(JSON.stringify(o,E,2))?(zt(re),Ce(`${e} values copied`,m)):Ce("Copy failed",m)}),ue.addEventListener("click",()=>{if(Vt(ue),typeof s.onReset=="function")return s.onReset();a.forEach(i=>{i.set(i.def),i.target[i.key]=i.get()}),o._last=void 0,se()}),s.onEditStart||s.onEditEnd){let i=".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",r=!1,d=()=>{document.removeEventListener("pointerup",d,!0),document.removeEventListener("pointercancel",d,!0),r&&(r=!1,s.onEditEnd&&s.onEditEnd())},b=w=>{r||!w.target.closest(i)||(r=!0,s.onEditStart&&s.onEditStart(),document.addEventListener("pointerup",d,!0),document.addEventListener("pointercancel",d,!0))};m.addEventListener("pointerdown",b),m._twEditPointer=b,y.push(d)}if(s.undo){let i=[x()],r=0,d=!1,b=0,w=()=>{b=0;let P=x();JSON.stringify(P)!==JSON.stringify(i[r])&&(i=i.slice(0,r+1),i.push(P),r=i.length-1)},B=()=>{d||(clearTimeout(b),b=setTimeout(w,350))},W=()=>{b&&(clearTimeout(b),w())};k.add(B);let _=P=>{d=!0,S(i[P]),d=!1,r=P};ce=()=>{W(),r>0&&_(r-1)},Ne=()=>{W(),r<i.length-1&&_(r+1)};let R=()=>m.matches(":hover")||m.contains(document.activeElement);y.push(Ke(m,[[document,"keydown"]],P=>{if(!R()||!(P.metaKey||P.ctrlKey))return;let be=P.key.toLowerCase();be==="z"?(P.preventDefault(),P.shiftKey?Ne():ce()):be==="y"&&(P.preventDefault(),Ne())}))}O=!0;for(let[i,r]of A.splice(0))i===de?ne(r):i===j?ye.setMany(r):ye.set(i,r);for(let i of[re,ue,ie,Te])i&&(i.disabled=!1)},Xe=c=>c==="__proto__"||c==="constructor"||c==="prototype",Be=c=>String(c).split(".").some(Xe)?(console.warn(`[tweaks] set("${c}") ignored \u2014 reserved key`),!0):!1,Ye=(c,E)=>{if(Be(c))return!1;let x=String(c).split("."),S;if(x.length>1){let i=o;for(let r=0;r<x.length-1&&i;r++)i=i[x[r]],f.has(i)||(i=null);if(S=i&&a.find(r=>r.target===i&&r.key===x[x.length-1]),!S)return console.warn(`[tweaks] set("${c}") \u2014 no control at that path`),!1}else{let i=a.filter(r=>r.key===c);if(i.length>1)return console.warn(`[tweaks] set("${c}") is ambiguous \u2014 ${i.length} controls share that key; use a dotted path (e.g. "${i[0].path.join(".")}")`),!1;S=i[0]}let G=S?S.target:o,g=S?S.key:c,F=G[g];if(S)S.set(E),G[g]=S.get();else{if(f.has(o[c]))return console.warn(`[tweaks] set("${c}") ignored \u2014 it's a folder/tabs group; set its children instead`),!1;o[c]=E}return Pt(F,G[g])?(o._last=g,!0):!1},ye={el:m,params:o,on(c){return h?()=>{}:(k.add(c),()=>k.delete(c))},set(c,E){if(!h){if(!O)return Be(c)?void 0:void A.push([String(c),E]);Ye(c,E)&&se()}},setMany(c){if(h||c==null||typeof c!="object")return;if(!O){let x={};for(let S of Object.keys(c))Be(S)||(x[S]=c[S]);A.push([j,x]);return}let E=!1;for(let x of Object.keys(c))Ye(x,c[x])&&(E=!0);E&&se()},reset(){h||ue.click()},toJSON(){return h?{values:{},ui:{}}:De()},fromJSON(c){h||ne(c)},setTheme(c){if(!h){if(q)for(let E in q)m.style.removeProperty(E);q=ot(c),m._twTheme=q,rt(m,q),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:c=>!h&&C(c),loadPreset:c=>!h&&$(c),deletePreset:c=>{h||M(c)},presets:()=>h?[]:Object.keys(u()),undo:()=>{h||ce()},redo:()=>{h||Ne()},destroy(){if(!h){h=!0,At(),yt();for(let c of y.splice(0))try{c()}catch{}k.clear(),p&&(p.remove(),p=null),m.remove()}}},bt=Jt(n);return bt?(ye.ready=m.ready=bt.then(He).then(()=>ye),ye.ready.catch(()=>{})):(He(),ye.ready=m.ready=Promise.resolve(ye)),ye}var Xt={slider:e=>({value:T(e.value),min:T(e.min)??0,max:T(e.max)??100,step:T(e.step),soft:Yt(e.soft)}),checkbox:e=>e.options?{type:"radiogrid",options:$e(e.options),value:e.value,cols:T(e.cols)}:{value:e.checked==="true"},radiogrid:e=>({options:$e(e.options),value:e.value,cols:T(e.cols)}),list:e=>({options:$e(e.options),value:e.value}),color:e=>({value:e.value||"#7c5cff"}),button:(e,t,s)=>({action:()=>Ce(`${s} pressed`,t)}),buttongroup:(e,t)=>({buttons:$e(e.buttons).map(s=>({label:s,action:()=>Ce(`${s} pressed`,t)}))}),separator:()=>({}),number:e=>({value:T(e.value),min:T(e.min),max:T(e.max),step:T(e.step)}),text:e=>({value:e.value??"",placeholder:e.placeholder,rows:T(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:T(e.min),max:T(e.max),step:T(e.step)}),spring:e=>({stiffness:T(e.stiffness),damping:T(e.damping),mass:T(e.mass),visualDuration:T(e.visualDuration),bounce:T(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(s=>parseFloat(s));return{components:$e(e.components||"X,Y").map((s,n)=>({key:s.toLowerCase(),label:s,value:isNaN(t[n])?0:t[n],step:T(e.step)??1,min:T(e.min),max:T(e.max)})),pad:Yt(e.pad),invertY:e.invertY==="true"}},plot:e=>({expr:e.expr,xMin:T(e.xmin),xMax:T(e.xmax),yMin:T(e.ymin),yMax:T(e.ymax),samples:T(e.samples),editable:e.editable!=="false"})},T=e=>e==null?void 0:+e,Yt=e=>e==="true"||e==="",$e=e=>(e||"").split(",").map(t=>t.trim()).filter(Boolean),kn=e=>{let t=e.dataset,s=t.tw;if(!pt(Xt,s))return null;let n=t.label||nt(t.key||s),o=Xt[s](t,e,n),a=Qe("v",{type:s,...o});return a&&(a.label=o.label||n),a};async function Ln(e=document){e.querySelectorAll('.tw-panel[data-mode="inline"]:not([data-tw-panel-bound])').forEach(n=>{let o=n.querySelector(":scope > .tw-header"),a=n.querySelector(":scope > .tw-controls");if(!o||!a)return;n.setAttribute("data-tw-panel-bound","");let f=v("div","tw-body");n.insertBefore(f,a),f.append(a);let k=o.querySelector(".tw-header-toggle"),y=o.querySelector(".tw-title");if(!k&&y&&(k=xe("tw-header-toggle"),y.replaceWith(k),k.append(y)),!!k&&(k.setAttribute("aria-expanded","true"),k.addEventListener("click",()=>{let h=n.classList.toggle("is-collapsed");k.setAttribute("aria-expanded",h?"false":"true"),f.inert=h}),!o.querySelector(".tw-toolbar"))){let h=y&&y.textContent||"Panel",O=v("div","tw-toolbar"),A=Kt(),p=Wt();O.append(A,p),o.append(O);let Q=()=>[...n.querySelectorAll("[data-tw]")].map(u=>u._tw).filter(u=>u&&u.ctrl.get()!==void 0);A.addEventListener("click",async()=>{let u={};for(let $ of Q())u[$.key]=$.ctrl.get();await Gt(JSON.stringify(u,null,2))?(zt(A),Ce(`${h} values copied`,n)):Ce("Copy failed",n)}),p.addEventListener("click",()=>{Vt(p);for(let u of Q())u.ctrl.set(u.def),u.host.dataset.value=u.ctrl.get()})}}),e.querySelectorAll('[data-tw="folder"]:not([data-tw-bound])').forEach(n=>{n.setAttribute("data-tw-bound","");let o=ut({label:n.dataset.label||"Folder"});[...n.children].forEach(a=>o.body.append(a)),n.append(o.el)});let t=[...e.querySelectorAll("[data-tw]:not([data-tw-bound])")].map(n=>({host:n,meta:kn(n)})).filter(n=>n.meta);t.forEach(({host:n})=>n.setAttribute("data-tw-bound",""));let s=Jt(t.map(n=>n.meta));s&&await s.catch(()=>{});for(let{host:n,meta:o}of t){let a=dt(o,f=>n.dataset.value=f);a&&(n.append(a.el),n.dataset.hint&&Ut(a.el,n.dataset.hint),n._tw={ctrl:a,def:o.value,key:o.label,host:n})}}if(typeof document<"u"){let e=()=>Ln(document);document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e):e()}export{Ln as enhance,An as tweaks};
|
|
1
|
+
import{A as nn,B as St,C as on,D as it,E as at,F as Ve,G as lt,H as At,J as ct,K as Ne,L as rn,M as sn,N as an,O as ln,P as cn,Q as ge,R as dt,S as ae,T as we,a as xt,b as B,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 Qt,o as E,p as U,q as Y,r as Zt,s as st,t as Xe,u as Mt,v as en,w as He,x as tn,y as Ct,z as Tt}from"./chunk-NGLZEK5U.js";var dn=ge('<path class="tw-copy-back" d="m5.5 16.5-.7-.2q-1.5-.6-2.1-2.1-.2-.7-.2-2.7v-2c0-3.3 0-5 1-6s2.7-1 6-1h2c1.4 0 2 0 2.7.2q1.6.5 2.1 2.1l.2.7"/><path class="tw-copy-front" d="M7.5 14.5c0-3.3 0-5 1-6s2.7-1 6-1 5 0 6 1 1 2.7 1 6 0 5-1 6-2.7 1-6 1-5 0-6-1-1-2.7-1-6"/>',"tw-toolbar-btn__copy"),un=ge('<path d="m5 14 3.5 3.5L19 6.5"/>',"tw-toolbar-btn__check",2.4),pn=ge('<path d="M3 12a9 9 0 1 0 9-9 9 9 0 0 0-7.6 4.2M3.3 3l.2 2q0 2.2.6 2.7t2.7.2l2-.2"/>'),fn=ge('<path d="m17 17 4 4m-2-10a8 8 0 0 0-16 0 8 8 0 0 0 16 0"/>'),Ot=e=>ge('<path d="M18 9s-4.4 6-6 6-6-6-6-6"/>',e,2.5),mn=Ot("tw-chevron"),gn=ge('<path d="M20.2 13.5q1.8.8 1.8 1.5 0 .8-2.7 2l-5 2.2Q13 20 12 20q-.7 0-2.4-.8l-4.9-2.3Q2 16 2 15t1.8-1.5"/><path class="tw-layer-top" d="M9.6 4.8Q11.3 4 12 4t2.4.8l4.9 2.3Q22 8 22 9c0 .7-.9 1.1-2.7 2l-5 2.2Q13 14 12 14q-.7 0-2.4-.8l-4.9-2.3Q2 10 2 9c0-.7.9-1.1 2.7-2z"/>'),bn=ge('<path d="M18 6 6 18m12 0L6 6"/>',"",2.2),Pt=ge('<circle cx="12" cy="12" r="10"/><path d="M12 16v-4m-.25-3.75a.25.25 0 0 0 .5 0 .25.25 0 0 0-.5 0"/>');var 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">${dn}${un}</span>`,"Copy values");return o.addEventListener("click",async()=>{o.disabled||(await qn(r())?($n(o),ve(`${t} values copied`,e)):ve("Copy failed",e))}),o},mt=e=>{let t=Ye("tw-toolbar-btn--reset",pn,"Reset");return t.addEventListener("click",()=>{t.disabled||(_t(t),e())}),t},$n=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,yn=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(yn),yn=setTimeout(()=>be.classList.remove("is-open"),1600)}var X=null,ut=0,pt=null,wn=e=>{e.key==="Escape"&&ze()},ze=e=>{e&&pt&&!e.contains(pt)||(clearTimeout(ut),document.removeEventListener("keydown",wn),X&&X.classList.remove("is-open"))};function Bn(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",wn),pt=e,r||requestAnimationFrame(function o(){if(X.classList.contains("is-open")){if(!pt.isConnected)return ze();requestAnimationFrame(o)}})}function hn(){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=()=>Bn(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",hn),s.addEventListener("keydown",c=>{(c.key==="Enter"||c.key===" ")&&c.stopPropagation()});s.addEventListener("pointerenter",l),s.addEventListener("pointerleave",hn),s.addEventListener("pointerdown",c=>c.stopPropagation()),s.addEventListener("click",c=>{c.preventDefault(),c.stopPropagation()}),r.appendChild(s)}async function qn(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=Xn(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)},vn=e=>Array.isArray(e.options)&&{type:"radiogrid",options:e.options,value:e.value??he(e.options[0]),cols:e.cols},Cn="#7c5cff",En=(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)}},kn=(e,t)=>e.label==null?t:String(e.label),Ln={slider:e=>{let t=En(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:vn,segmented:vn,list:e=>Array.isArray(e.options)&&{options:e.options,value:e.value??he(e.options[0])},color:e=>({value:e.value??Cn}),text:e=>({value:e.value??"",rows:e.rows,placeholder:e.placeholder}),interval:e=>{let t=En(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)}})}}},Kn=Object.assign(Object.create(null),{list:"options",radiogrid:"options",segmented:"options",point:"components",tabs:"pages"});function Xn(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(Ln,t.type)){let l;try{l=Ln[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,kn(t,o));if(Ee(t,Kn[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},kn(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"]),xn={slider:e=>({value:H(e.value),min:H(e.min),max:H(e.max),step:H(e.step),soft:Mn(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||Cn}),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:Mn(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},Mn=e=>e==="true"||e==="",We=e=>(e||"").split(",").map(t=>t.trim()).filter(Boolean),Tn=e=>{let t=e.dataset,r=t.tw;if(!Ee(xn,r))return null;let o=t.label??xt(t.key||r),s=xn[r](t,e,o);return Se("v",{type:r,label:o,...s})};var Nt={number:()=>import("./heavy-GRI2MMP6.js"),interval:()=>import("./interval-2WMOCHYW.js"),color:()=>import("./colour-KNV4JMLD.js"),gradient:()=>import("./gradient-7SU3OS46.js"),tabs:()=>import("./tabs-NWHJSEFB.js"),image:()=>import("./image-DBOIYZDB.js"),fpsgraph:()=>import("./monitor-NRXVKYAV.js"),monitor:()=>import("./monitor-NRXVKYAV.js"),spring:()=>import("./spring-NNNUQHGF.js"),cubicbezier:()=>import("./bezier-Z5GKRM4D.js"),point:()=>import("./point-OSHHB6KE.js"),plot:()=>import("./plot-YTKMVUH7.js")},ht={},Vn=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(Vn).filter(Boolean);return t.length?Promise.all(t):null};var Yn=3,Sn=32,An=200,On=8;function zn(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),R=P.toFixed(S);j.textContent=R,m.setAttribute("aria-valuenow",String(P)),m.setAttribute("aria-valuetext",R);let te=w.offsetWidth;if(te){let ie=Math.max(5,d/100*te+h-9);m.classList.toggle("is-dodge",Jt($,j,ie,3))}};z();let I=null,ce=1,G=null,de=!0,Je,J=null,ye=null,Ue=`width 0.34s ${At}`,Qe=`left 0.34s ${At}, opacity 0.15s, transform 0.2s ${lt}`,Fe=.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=-On*Math.sqrt(Math.min(Math.max(0,I.left-d-Sn)/An,1)):d>I.right&&(O=On*Math.sqrt(Math.min(Math.max(0,d-I.right-Sn)/An,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,Ze=.3,$e=520,oe=27,Q=d=>(d-o)/l,q=0,D=0,Z=0,re=!1,pe=null,xe=b,fe=0,ee=()=>{Z&&cancelAnimationFrame(Z),Z=0,fe=0},se=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=Q(B(xe,o,s)),R=B(Math.round(P+Ae),0,ue),te=re?R+Ze*B(P-R,-.5,.5):R;if(Ve&&Ve.matches)q=te,D=0;else{let ie=O,vt=1/240;for(;ie>1e-4;){let Ce=Math.min(vt,ie);ie-=Ce;let Be=$e*(te-q)-oe*D;D+=Be*Ce,q+=D*Ce,q<0&&(q=0,D=0),q>ue&&(q=ue,D=0)}}h=(q-R)*l/(s-o||1)*_,b=B(o+R*l,o,s),z(),R!==pe&&(pe=R,t(le(b))),!re&&Math.abs(D)<.004&&Math.abs(q-R)<.004?(q=R,D=0,h=0,z(),ee(),m.classList.remove("is-active")):Z=requestAnimationFrame(se)},W=d=>{q=Q(b),D=0,re=!0,pe=Math.round(Q(b)),xe=Le(d),Z||(Z=requestAnimationFrame(se))};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=Qe,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)>Yn&&(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)*Fe,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?(re=!1,m.classList.remove("is-dragging"),Z||(Z=requestAnimationFrame(se))):(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 Wn(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 Gn(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 Jn=Ot("tw-select-chevron");function Un(e,t){let r=e.value,o=e.options.map(k=>({value:he(k),label:Qt(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",Jn),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 Zn(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 eo=()=>dt(E("div","tw-separator"));function to(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}}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",mn);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}}ae("slider",zn);ae("checkbox",Wn);ae("radiogrid",Gn);ae("list",Un);ae("button",Qn);ae("buttongroup",Zn);ae("separator",eo);ae("text",to);ae("folder",Ge);var Re=null;function no(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()},Qe=n=>{bt(n,n.raw,n.def),n.target[n.key]=n.get()},Fe=!1,Le=()=>{if(typeof r.onReset=="function"&&!Fe){Fe=!0;try{return r.onReset()}finally{Fe=!1}}for(let n of l)try{Qe(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",Zt(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"),Ze=ft(g,e,()=>JSON.stringify(z(),null,2)),$e=mt(Le),oe=null;I&&(oe=Ye("",gn,"Presets"),oe.setAttribute("aria-haspopup","menu"),oe.setAttribute("aria-expanded","false"),Ae.append(oe));let Q=!!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=Q?Ye("",fn,"Filter controls"):null,D=Q?E("input","tw-search"):null;Q&&(D.type="text",D.placeholder="Filter\u2026",D.spellcheck=!1,D.setAttribute("aria-label","Filter controls"),He(D),Ae.append(q)),Ae.append(Ze,$e),K.append(ue),Q&&K.append(D),r.toolbar!==!1&&K.append(Ae);let Z=[Ze,$e,oe,q].filter(Boolean);for(let n of Z)n.disabled=!0;let re=!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(),R())},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 se=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=(se||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,R=()=>{g.style.left=_+"px",g.style.top=P+"px"},te=()=>{let{maxX:n,maxY:a}=Oe();_=B(_,W,n),P=B(P,W,a)};(se||r.floating)&&(r.floating||d)&&(g.dataset.mode="floating",te(),R(),requestAnimationFrame(()=>{!h&&g.dataset.mode==="floating"&&g.isConnected&&(te(),R())}));let ie=n=>{Qe(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,ie(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(),ie(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(),ie(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(),ie(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=[],Nn=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=Q?{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(Nn(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),Q&&y.type!=="separator"&&Et.push({el:v.el,label:y.label,folder:T}),n.append(v.el)}}};if(Q){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 In=(n,a)=>a.reduce((i,f)=>i?.[f],n),jn=new Set(o.map(n=>n.key)),nt=(n,a=!0)=>{if(!(!n||typeof n!="object")){for(let i of l){let f=In(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(!jn.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)},Rt=n=>{let a=Pe();a[n]&&nt(a[n])},Ft=n=>{let a=Pe();delete a[n],de(ce,a)},ot=n=>n.map(a=>String(a).replace(/~/g,"~1").replace(/\./g,"~0")).join("."),Dn=()=>{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(se||r.floating){if(se){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",R(),$&&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=()=>{Re&&Re!==g&&(Re.style.zIndex=""),g.style.zIndex="99991",Re=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)};se&&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,re=!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="",R()}});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(!re){if(Math.abs(N)+Math.abs(V)<4)return;re=!0,n(),a(),y=_,M=P;try{K.setPointerCapture(i)}catch{}g.classList.add("is-dragging")}let{maxX:ne,maxY:F}=Oe();_=B(y+N,W,ne),P=B(M+V,W,F),R()},A=x=>{if(x.pointerId===i){try{K.releasePointerCapture(i)}catch{}if(i=null,v(!1),pe=re,pe&&setTimeout(()=>{pe=!1},0),re){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)),R(),Me&&de(Me,{x:_,y:P})}g.classList.remove("is-dragging","is-grabbing")}};K.addEventListener("lostpointercapture",A),b.push(()=>v(!1))}let Fn=()=>{(se||r.floating)&&(g.dataset.mode==="floating"&&(te(),R()),b.push(Xe(g,[[window,"resize"]],()=>{g.dataset.mode==="floating"&&(te(),R())})))};if(oe){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",()=>{Rt(x),v.close(),ve(`Loaded \u201C${x}\u201D`,g)});let ne=U("tw-presets-del",bn);ne.setAttribute("aria-label",`Delete preset ${x}`),ne.addEventListener("click",F=>{F.stopPropagation(),Ft(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(oe,oe,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 F=z();JSON.stringify(F)!==JSON.stringify(a[i])&&(a=a.slice(0,i+1),a.push(F),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=F=>{f=!0,nt(a[F]),f=!1,i=F},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=F=>!!(F&&F.matches&&(F.matches("input, textarea")||F.isContentEditable)),ne=F=>{if(!N()||!(F.metaKey||F.ctrlKey)||V(F.target))return;let Kt=F.key.toLowerCase();Kt==="z"?(F.preventDefault(),F.shiftKey?x():A()):Kt==="y"&&(F.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(),Fn(),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 Z)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:Dn()}},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(()=>Rt(n)),!0)},deletePreset:n=>{ce&&(S||m.set(String(n),"delete"),C(()=>Ft(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),Re===g&&(Re=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 oo=(e,t)=>{e.dataset.value=t==null?"":Array.isArray(t)?t.join(","):typeof t=="object"?Object.values(t).join(","):String(t)},ro=(e,t,r)=>{oo(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 Pn(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:Tn(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,ro(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=()=>Pn(document);document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e):e()}var _n=e=>E("div",`${e} tw-standalone tw-portal`),Hn=(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 so(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=_n("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=Hn([s],k,L),L}function io(e={}){let t=_n("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=Hn([{type:"color"}],h,S),S}export{io as createColorPicker,Pn as enhance,so as mountControl,no 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-AUZVP7BC.js";import{e as z,i as U}from"./chunk-36ETNTXF.js";import{D as X,Q as N,S as Y,b as f,o as g,p as B}from"./chunk-NGLZEK5U.js";var it=N('<path d="M12 5v14m7-7H5"/>',"",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}=U("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;z(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))}),X(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()}}Y("gradient",pt);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j}from"./chunk-36ETNTXF.js";import"./chunk-NGLZEK5U.js";export{c as accentColor,g as boxFrac,b as cssVar,e as dragGesture,h as fitCanvas,f as grabSurface,j as numField,d as selectAllOnFocus,a as svgEl,i as triggerRow};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as u}from"./chunk-36ETNTXF.js";import{S as f,o as i}from"./chunk-NGLZEK5U.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}=u("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}}f("image",v);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as P}from"./chunk-36ETNTXF.js";import{S as G,b as r,d as j,e as H,f as X,h as z,i as A,j as I,o as f,q as K,s as T,t as q,v as B}from"./chunk-NGLZEK5U.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 p=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),p.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=p.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()},v=null,$=1,g=null,J=t=>{let e=p.offsetWidth||v.width,o=r((t-v.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()};P(d,{onDown:t=>{t.preventDefault(),v=p.getBoundingClientRect(),$=v.width/(p.offsetWidth||v.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:()=>{v=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:p,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]}}G("interval",U);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as T,h as D}from"./chunk-36ETNTXF.js";import{R as y,S as j,b as q,m as L,o as R,q as S}from"./chunk-NGLZEK5U.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{a as k}from"./chunk-36ETNTXF.js";import{S as D,b as H,o as N,q as T,s as $,t as Y,w as Z}from"./chunk-NGLZEK5U.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{a as O,f as X,g as G,i as I,j as K}from"./chunk-36ETNTXF.js";import{D as N,S as V,b as P,d as T,k as B,o as p}from"./chunk-NGLZEK5U.js";function Z(d,U){let o=d.components,{root:$,trigger:q,right:z}=I("tw-point",d.label??"Point"),L=p("span","tw-trigger-value"),Y=p("div","tw-trigger-chip tw-point-preview"),f=p("div","tw-point-preview-dot");Y.append(f),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,m=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"),m=O("line"),t.append(m);let e=k(0,b,h);m.setAttribute("x1",k(0,y,x)*100),m.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=K({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=()=>{f.style.left="50%",f.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+"%",f.style.left=e(n),f.style.top=e(l),m.setAttribute("x2",u),m.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)}`)},X(a,n=>{let[s,l]=G(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),N($,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}}V("point",Z);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as te,c as se,e as ie,j as U}from"./chunk-36ETNTXF.js";import{P as ee,S as ne,b as _,o as R,q as B,s as Z,t as $}from"./chunk-NGLZEK5U.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=te(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=se(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=ee([{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()};ie(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(),Z(p),$(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()}}ne("spring",ce);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{I as f,O as g,S as w,o as s,q as v,s as m}from"./chunk-NGLZEK5U.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);
|