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