tweakit 0.4.2 → 0.4.4
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/AGENTS.md +163 -0
- package/README.md +56 -0
- package/THIRD-PARTY-NOTICES.md +1 -0
- package/dist/tweaks/{bezier-EH6GR3RN.js → bezier-EIWM4A6M.js} +1 -1
- package/dist/tweaks/chunk-JWHF6V72.js +1 -0
- package/dist/tweaks/chunk-NB4K6RS2.js +1 -0
- package/dist/tweaks/chunk-QPSYEOZS.js +1 -0
- package/dist/tweaks/clip-7QEIBTKZ.js +1 -0
- package/dist/tweaks/colour-DJHDXBXF.js +1 -0
- package/dist/tweaks/core.js +1 -1
- package/dist/tweaks/{fold-FNCV4C7P.js → fold-UQORAAPG.js} +1 -1
- package/dist/tweaks/{gradient-RKPRTDSQ.js → gradient-IXD2AINY.js} +1 -1
- package/dist/tweaks/{heavy-LD64N5S4.js → heavy-KPG2LKVX.js} +1 -1
- package/dist/tweaks/image-E7OAWFFK.js +1 -0
- package/dist/tweaks/interval-LPI5MWBB.js +1 -0
- package/dist/tweaks/markup-ZSBV67SW.js +1 -0
- package/dist/tweaks/{monitor-EAU6GD6P.js → monitor-PEBMH5MH.js} +1 -1
- package/dist/tweaks/{motion-FUAKWKPW.js → motion-QSDSYDKR.js} +1 -1
- package/dist/tweaks/{plot-AMSWXKO7.js → plot-SFD5OPF6.js} +1 -1
- package/dist/tweaks/point-PK3CZSBO.js +1 -0
- package/dist/tweaks/{shadow-54LEQGQ6.js → shadow-SKTAWRUK.js} +1 -1
- package/dist/tweaks/sides-RVC5PQY3.js +1 -0
- package/dist/tweaks/{spring-YHAPWWTF.js → spring-QIVBIUPF.js} +1 -1
- package/dist/tweaks/{tabs-C45GWZYF.js → tabs-LB5KTQXF.js} +1 -1
- package/dist/tweaks.css +1 -1
- package/dist/tweaks.js +3 -3
- package/dist/types/tweaks/panel.d.ts +20 -1
- package/dist/types/tweaks/schema.d.ts +79 -0
- package/dist/types/tweaks/types.d.ts +25 -8
- package/package.json +3 -2
- package/dist/tweaks/chunk-3GZFWFKC.js +0 -1
- package/dist/tweaks/chunk-5G6TFQOD.js +0 -1
- package/dist/tweaks/chunk-GDMWOXFU.js +0 -1
- package/dist/tweaks/colour-G6UZ5HIL.js +0 -1
- package/dist/tweaks/image-TFIUSCCY.js +0 -1
- package/dist/tweaks/interval-VFQ2O75Q.js +0 -1
- package/dist/tweaks/point-UF7RGMGJ.js +0 -1
- package/dist/tweaks/sides-WJF2NEGM.js +0 -1
package/dist/tweaks/core.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as Ht,B as un,C as De,D as pn,E as It,F as Rt,G as fn,H as jt,I as mn,J as gt,K as yt,L as Ze,M as bt,N as Dt,P as ht,Q as $e,R as gn,S as yn,T as bn,U as hn,V as wn,W as we,X as wt,Y as pe,Z as re,d as Jn,e as Gn,f as Nt,g as F,h as ue,i as en,j as tn,k as nn,l as on,m as Ue,n as sn,o as rn,p as an,q as ft,r as Te,s as ln,t as cn,u as L,v as Q,w as X,x as dn,y as mt,z as Qe}from"./chunk-3GZFWFKC.js";var Fe={number:()=>import("./heavy-LD64N5S4.js"),interval:()=>import("./interval-VFQ2O75Q.js"),color:()=>import("./colour-G6UZ5HIL.js"),gradient:()=>import("./gradient-RKPRTDSQ.js"),shadow:()=>import("./shadow-54LEQGQ6.js"),sides:()=>import("./sides-WJF2NEGM.js"),tabs:()=>import("./tabs-C45GWZYF.js"),image:()=>import("./image-TFIUSCCY.js"),fpsgraph:()=>import("./monitor-EAU6GD6P.js"),monitor:()=>import("./monitor-EAU6GD6P.js"),spring:()=>import("./spring-YHAPWWTF.js"),cubicbezier:()=>import("./bezier-EH6GR3RN.js"),motion:()=>Promise.all([import("./bezier-EH6GR3RN.js"),import("./spring-YHAPWWTF.js")]).then(()=>import("./motion-FUAKWKPW.js")),point:()=>import("./point-UF7RGMGJ.js"),plot:()=>import("./plot-AMSWXKO7.js")},vt={},Un=e=>re(e)||!Fe[e]?null:vt[e]||(vt[e]=Fe[e]().catch(t=>{throw delete vt[e],console.error(`[tweaks] control chunk "${e}" failed to load:`,t),t})),$t=(e,t=new Set)=>{for(let s of e)if(s&&(Fe[s.type]&&t.add(s.type),s.children&&$t(s.children,t),s.pages))for(let o of s.pages)$t(o.children,t);return t},Be=e=>{let t=[...$t(e)].map(Un).filter(Boolean);return t.length?Promise.all(t):null};var vn=we('<path class="tw-copy-back" d="m5.5 16.5-.7-.2q-1.5-.6-2.1-2.1-.2-.7-.2-2.7v-2c0-3.3 0-5 1-6s2.7-1 6-1h2c1.4 0 2 0 2.7.2q1.6.5 2.1 2.1l.2.7"/><path class="tw-copy-front" d="M7.5 14.5c0-3.3 0-5 1-6s2.7-1 6-1 5 0 6 1 1 2.7 1 6 0 5-1 6-2.7 1-6 1-5 0-6-1-1-2.7-1-6"/>',"tw-toolbar-btn__copy"),En=we('<path d="m5 14 3.5 3.5L19 6.5"/>',"tw-toolbar-btn__check",2.4),kn=we('<path d="M3 12a9 9 0 1 0 9-9 9 9 0 0 0-7.6 4.2M3.3 3l.2 2q0 2.2.6 2.7t2.7.2l2-.2"/>'),Ln=we('<path d="m17 17 4 4m-2-10a8 8 0 0 0-16 0 8 8 0 0 0 16 0"/>'),Ft=e=>we('<path d="M18 9s-4.4 6-6 6-6-6-6-6"/>',e,2.5),Mn=Ft("tw-chevron"),xn=we('<path d="M20.2 13.5q1.8.8 1.8 1.5 0 .8-2.7 2l-5 2.2Q13 20 12 20q-.7 0-2.4-.8l-4.9-2.3Q2 16 2 15t1.8-1.5"/><path class="tw-layer-top" d="M9.6 4.8Q11.3 4 12 4t2.4.8l4.9 2.3Q22 8 22 9c0 .7-.9 1.1-2.7 2l-5 2.2Q13 14 12 14q-.7 0-2.4-.8l-4.9-2.3Q2 10 2 9c0-.7.9-1.1 2.7-2z"/>'),Cn=we('<path d="M18 6 6 18m12 0L6 6"/>',"",2.2),Bt=we('<circle cx="12" cy="12" r="10"/><path d="M12 16v-4m-.25-3.75a.25.25 0 0 0 .5 0 .25.25 0 0 0-.5 0"/>');var et=(e,t,s)=>{let o=Q("tw-toolbar-btn"+(e?" "+e:""),t);return o.title=s,o.setAttribute("aria-label",s),o},Lt=(e,t,s)=>{let o=et("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${vn}${En}</span>`,"Copy values (\u21E7: changed only)");return o.addEventListener("click",async r=>{if(o.disabled)return;let[c,l]=s(r.shiftKey);if(!l){Ee("Nothing has changed",e);return}await eo(c)?(Qn(o),Ee(l>0?`${l} changed value${l===1?"":"s"} copied`:`${t()} values copied`,e)):Ee("Copy failed",e)}),o},Mt=e=>{let t=et("tw-toolbar-btn--reset",kn,"Reset");return t.addEventListener("click",()=>{t.disabled||(qt(t),e())}),t},Qn=e=>{e.classList.add("is-copied"),clearTimeout(e._t),e._t=setTimeout(()=>e.classList.remove("is-copied"),1400)},qt=e=>{let t=e.querySelector("svg");e._spinSettle||(e._spinSettle=()=>{clearTimeout(e._t),e.classList.remove("is-spinning"),t.style.transition="none",t.style.setProperty("--tw-spin","0deg"),t.getBoundingClientRect(),t.style.transition=""},t.addEventListener("transitionend",o=>{o.propertyName==="transform"&&e.classList.contains("is-spinning")&&performance.now()-e._spinT>250&&e._spinSettle()})),e._spinT=performance.now(),t.style.setProperty("--tw-spin",`${(parseFloat(t.style.getPropertyValue("--tw-spin"))||0)-360}deg`),e.classList.add("is-spinning"),clearTimeout(e._t);let s=()=>{t.getAnimations&&t.getAnimations().length?e._t=setTimeout(s,250):e._spinSettle()};e._t=setTimeout(s,600)},ve=null,Tn=0;function Ee(e,t){ve||(ve=L("div","tw-toast tw-portal"),ve.setAttribute("role","status")),ve.isConnected||document.body.appendChild(ve),ve.textContent=e,jt(ve,t),ve.classList.add("is-open"),clearTimeout(Tn),Tn=setTimeout(()=>ve.classList.remove("is-open"),1600)}var V=null,Et=0,kt=null,An=e=>{e.key==="Escape"&&tt()},tt=e=>{e&&kt&&!e.contains(kt)||(clearTimeout(Et),document.removeEventListener("keydown",An),V&&V.classList.remove("is-open"))};function Zn(e,t){V||(V=L("div","tw-tip tw-portal"),V.setAttribute("role","tooltip")),V.isConnected||document.body.appendChild(V),clearTimeout(Et),V.textContent=t,jt(V,e);let s=V.classList.contains("is-open");V.style.visibility="hidden",V.classList.add("is-open"),pn(e,V,{align:"center",prefer:"above",gap:8}),V.style.visibility="",document.addEventListener("keydown",An),kt=e,s||requestAnimationFrame(function o(){if(V.classList.contains("is-open")){if(!kt.isConnected)return tt();requestAnimationFrame(o)}})}function Sn(){V&&(clearTimeout(Et),Et=setTimeout(tt,80))}var Kt=".tw-slider-label, .tw-row-label, .tw-select-label, .tw-trigger-label, .tw-radiogrid-label, .tw-field-label, .tw-folder-title, .tw-fps-label, .tw-plot-label";function qe(e,t){let s=e.querySelector(Kt)||e;if(s===e&&e.classList.contains("tw-separator"))return;let o=s.closest("button"),r=o?L("span","tw-hint",Bt):Q("tw-hint",Bt),c=()=>Zn(r,t);if(o){r.setAttribute("aria-hidden","true");let l=o.getAttribute("aria-description");o.setAttribute("aria-description",l?`${l}. ${t}`:t)}else r.setAttribute("aria-label",t),r.addEventListener("focus",c),r.addEventListener("blur",Sn),r.addEventListener("keydown",l=>{(l.key==="Enter"||l.key===" ")&&l.stopPropagation()});r.addEventListener("pointerenter",c),r.addEventListener("pointerleave",Sn),r.addEventListener("pointerdown",l=>l.stopPropagation()),r.addEventListener("click",l=>{l.preventDefault(),l.stopPropagation()}),s.appendChild(r)}async function eo(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}function _e(e,t,s=0){if(Ct(e))return null;let o=oo(e,t,s);return o&&t&&typeof t=="object"&&(typeof t.render=="function"&&(o.render=t.render),t.disabled!=null&&(o.disabled=t.disabled),t.hint!=null&&(o.hint=String(t.hint)),t.persist===!1&&(o.persist=!1)),o}var Se=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Ct=e=>e==="__proto__"||e==="constructor"||e==="prototype",ke=(e,t)=>e!==t&&!(ue(e)&&ue(t)&&JSON.stringify(e)===JSON.stringify(t)),Tt=(e,t,s)=>{e.set(s),e.set(t)},On=e=>Array.isArray(e.options)&&{type:"radiogrid",options:e.options,value:e.value??Te(e.options[0]),cols:e.cols},to=(e,...t)=>{let s=(t.length?t:[0]).map(c=>ft(Number.isFinite(+c)?+c:0)),o=e.min??Math.min(...s.map(c=>c[0])),r=e.max??Math.max(...s.map(c=>c[1]));return{min:o,max:r,step:e.step??Ue(o,r)}},Xt=(e,t)=>e.label==null?t:String(e.label),Pn=e=>typeof e=="function"?e:void 0,_n=e=>typeof e=="string"&&e.trim()?e.trim().slice(0,12):void 0,Yt=["stiffness","damping","mass","visualDuration","bounce"],Nn={slider:e=>{let t=to(e,e.value??e.min??0);return{value:e.value??t.min,...t,soft:e.soft,unit:_n(e.unit),format:Pn(e.format),parse:Pn(e.parse)}},number:e=>({value:e.value??0,min:e.min,max:e.max,step:e.step??1,soft:e.soft,unit:_n(e.unit)}),checkbox:e=>({value:!!e.value}),radiogrid:On,segmented:On,list:e=>Array.isArray(e.options)&&{options:e.options,value:e.value??Te(e.options[0])},text:e=>({value:e.value??"",rows:e.rows,placeholder:e.placeholder}),spring:e=>{let t=ue(e.value)?e.value:e,s={stiffness:t.stiffness??300,damping:t.damping??26,mass:t.mass??1};Number.isFinite(+t.visualDuration)&&(s.visualDuration=+t.visualDuration),Number.isFinite(+t.bounce)&&(s.bounce=+t.bounce);let o=e.mode??t.mode;return(o==="time"||o==="physics")&&(s.mode=o),{value:s}},motion:e=>{let t=typeof e.value=="string"||Array.isArray(e.value)?{...e,curve:e.value}:ue(e.value)?e.value:e,s=Yt.some(r=>t[r]!=null),o={curve:"ease",duration:300,...s?{}:{visualDuration:.5,bounce:.2}};for(let r of["mode","curve","duration",...Yt])t[r]!=null&&(o[r]=t[r]);return o.mode!=="easing"&&o.mode!=="spring"&&(o.mode=s?"spring":"easing"),{value:o}},point:e=>{if(!Array.isArray(e.components)||!e.components.length)return!1;let t=new Set,s=e.components.map((o,r)=>{let c=String(o.key??((o.label?String(o.label).toLowerCase():"")||`c${r}`)),l=c,p=2;for(;t.has(l);)l=`${c}-${p++}`;return t.add(l),{...o,key:l}});return{components:s,pad:e.pad,invertY:e.invertY,value:Object.fromEntries(s.map(o=>[o.key,o.value??0]))}},buttongroup:e=>({buttons:e.buttons}),separator:()=>({}),tabs:(e,t)=>{if(!e.pages||typeof e.pages!="object"||!Object.keys(e.pages).length)return!1;let s=new Set;return{pages:Object.entries(e.pages).map(([o,r])=>{let c=o.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",l=c,p=2;for(;s.has(l);)l=`${c}-${p++}`;return s.add(l),{key:l,title:o.trim()?o:"Tab",children:Object.entries(r).map(([y,M])=>_e(y,M,t+1)).filter(Boolean)}})}}},no=Object.assign(Object.create(null),{list:"options",radiogrid:"options",segmented:"options",point:"components",tabs:"pages"});function oo(e,t,s=0){if(s>64)return null;let o=Nt(e),r=(c,l,p=o)=>({type:c,key:e,label:p,...l});if(ue(t)&&!Array.isArray(t)&&Se(Nn,t.type)){let c;try{c=Nn[t.type](t,s)}catch(l){return console.error(`[tweaks] malformed "${t.type}" schema value for "${e}" \u2014 control skipped:`,l),null}if(c)return r(String(t.type),c,Xt(t,o));if(Se(t,no[t.type]))return console.error(`[tweaks] malformed "${t.type}" schema value for "${e}" \u2014 control skipped`),null}else if(ue(t)&&!Array.isArray(t)&&typeof t.type=="string"&&(Fe[t.type]||re(t.type))){let{type:c,label:l,...p}=t;return r(c,p,Xt(t,o))}if(Array.isArray(t)&&Array.isArray(t[0])&&t[0].length===2&&typeof t[0][0]=="number"){let c=Number.isFinite(+t[1])?+t[1]:+t[0][0],l=Number.isFinite(+t[2])?+t[2]:+t[0][1];return r("interval",{value:t[0].map(Number),min:c,max:l,step:t[3]??Ue(c,l)})}if(Array.isArray(t)&&t.length<=4&&typeof t[0]=="number"){let c=t[0],[l,p]=ft(c),y=t.length>1?t[1]:l,M=t.length>2?t[2]:p;return r("slider",{value:c,min:y,max:M,step:t[3]??Ue(y,M)})}if(typeof t=="number"){let[c,l]=ft(t);return r("slider",{value:t,min:c,max:l,step:Ue(c,l)})}return typeof t=="boolean"?r("checkbox",{value:t}):Array.isArray(t)?r("list",{options:t,value:Te(t[0])}):ue(t)&&typeof t.action=="function"?r("button",{action:t.action},Xt(t,o)):ue(t)&&Array.isArray(t.options)?r("list",{options:t.options,value:t.value??Te(t.options[0])}):en(t)?r("color",{value:t}):typeof t=="string"?r("text",{value:t}):ue(t)?r("folder",{children:Object.entries(t).filter(([c,l])=>!(c==="render"&&typeof l=="function")&&!((c==="disabled"||c==="hint")&&l!=null)).map(([c,l])=>_e(c,l,s+1)).filter(Boolean)}):null}var St=new Set(["button","fpsgraph","monitor","buttongroup","separator"]),Hn=e=>({...Object.fromEntries(Yt.map(t=>[t,N(e[t])])),mode:e.mode}),In={slider:e=>({value:N(e.value),min:N(e.min),max:N(e.max),step:N(e.step),soft:xt(e.soft),unit:e.unit}),checkbox:e=>e.options?{type:"radiogrid",options:nt(e.options),value:e.value,cols:N(e.cols)}:{value:e.checked==="true"},radiogrid:e=>({options:nt(e.options),value:e.value,cols:N(e.cols)}),list:e=>({options:nt(e.options),value:e.value}),button:(e,t,s)=>({action:()=>Ee(`${s} pressed`,t)}),buttongroup:(e,t)=>({buttons:nt(e.buttons).map(s=>({label:s,action:()=>Ee(`${s} pressed`,t)}))}),separator:()=>({}),number:e=>({value:N(e.value),min:N(e.min),max:N(e.max),step:N(e.step),unit:e.unit}),text:e=>({value:e.value??"",placeholder:e.placeholder,rows:N(e.rows)}),fpsgraph:e=>({label:e.label??"FPS"}),interval:e=>({value:e.value?e.value.split(",").map(Number):void 0,min:N(e.min),max:N(e.max),step:N(e.step)}),sides:e=>({value:e.value??e,corners:xt(e.corners),unit:e.unit,step:N(e.step),min:N(e.min),max:N(e.max)}),shadow:e=>({value:e.value??{...e,inset:xt(e.inset)}}),spring:Hn,motion:e=>({...Hn(e),curve:e.curve&&e.curve.includes(",")?e.curve.split(",").map(Number):e.curve,duration:N(e.duration)}),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:nt(e.components||"X,Y").map((s,o)=>({key:s.toLowerCase(),label:s,value:isNaN(t[o])?0:t[o],step:N(e.step),min:N(e.min),max:N(e.max)})),pad:xt(e.pad),invertY:e.invertY==="true"}},plot:e=>({expr:e.expr,xMin:N(e.xmin),xMax:N(e.xmax),yMin:N(e.ymin),yMax:N(e.ymax),samples:N(e.samples),editable:e.editable!=="false"})},N=e=>{if(e==null||e==="")return;let t=+e;return Number.isFinite(t)?t:void 0},xt=e=>e==="true"||e==="",nt=e=>(e||"").split(",").map(t=>t.trim()).filter(Boolean),Rn=e=>{let t=e.dataset,s=t.tw,o=t.label??Nt(t.key||s),r=Se(In,s)?In[s](t,e,o):Fe[s]||re(s)?{...t}:null;return r?_e("v",{type:s,label:o,...r}):null};var so=3,jn=32,Dn=200,$n=8;function ro(e,t){let s=e.label,{min:o,max:r,step:c}=sn(e.min,e.max,e.step);e.soft||([o,r]=on(o,r,c));let l=(r-o)/c<=6,p=Number.isFinite(+e.value)?+e.value:o,y=e.soft&&!l?p:F(p,o,r),M=0,k=tn(c),v=L("div","tw-slider-wrap"),m=L("div","tw-slider"),z=L("div","tw-slider-hashmarks"),P=L("div","tw-slider-fill"),_=L("div","tw-slider-handle"),h=X("span","tw-slider-label",s),w=L("span","tw-slider-value"),$=typeof e.unit=="string"?e.unit.trim():"",Ye=document.createTextNode(""),st=$?/^[%°]$/.test($)?$:" "+$:"";w.append(Ye),$&&w.append(X("span","tw-slider-unit",st));let fe=e.format,J=e.parse,me=d=>{if(fe)try{let S=fe(d);if(typeof S=="string"&&S)return S}catch{}return d.toFixed(k)};m.append(z,P,_,h,w),v.append(m),m.tabIndex=0,m.setAttribute("role","slider"),m.setAttribute("aria-label",s),m.setAttribute("aria-valuemin",String(o)),m.setAttribute("aria-valuemax",String(r));let Z=d=>nn(d,o,c),Ne=l?Array.from({length:Math.max(0,Math.round((r-o)/c)-1)},(d,S)=>(S+1)*c/(r-o)*100):[];for(let d of Ne){let S=L("div","tw-slider-hashmark");S.style.left=d+"%",z.append(S)}let ie=()=>{let d=F((y-o)/(r-o||1)*100,0,100),S=M?` + ${M.toFixed(1)}px`:"",I=`${d}%${S}`;P.style.width=M?`calc(${I})`:d+"%",_.style.left=`max(5px, calc(${I} - 9px))`;let R=Z(y),A=me(R);Ye.data=A,m.setAttribute("aria-valuenow",String(R)),m.setAttribute("aria-valuetext",A+st);let K=v.offsetWidth,oe=w.offsetWidth;if(K){oe&&(h.style.maxWidth=Math.max(0,K-oe-30)+"px");let We=Math.max(5,d/100*K+M-9);m.classList.toggle("is-dodge",an(h,w,We,3))}};ie();let B=null,rt=1,Y=null,Le=!0,Ve,ge=null,Me=null,it=`width 0.34s ${Dt}`,g=`left 0.34s ${Dt}, opacity 0.15s, transform 0.2s ${bt}`,U=.2,ae=d=>{if(!B)return y;let S=v.offsetWidth||B.width,I=F((d-B.left)/rt/S,0,1);return F(o+I*(r-o),o,r)},He=d=>{let S=0;d<B.left?S=-$n*Math.sqrt(Math.min(Math.max(0,B.left-d-jn)/Dn,1)):d>B.right&&(S=$n*Math.sqrt(Math.min(Math.max(0,d-B.right-jn)/Dn,1))),m.style.width=`calc(100% + ${Math.abs(S)}px)`,m.style.transform=S<0?`translateX(${S}px)`:""},xe=(d,S=!0)=>{d=+d,Number.isFinite(d)&&(y=l?F(Z(d),o,r):e.soft?d:F(d,o,r),ie(),S&&t(Z(y)))},Ce=Math.max(1,Math.round((r-o)/c)),at=.2,lt=.3,ze=520,le=27,ee=d=>(d-o)/c,q=0,j=0,te=0,ce=!1,ye=null,Ae=y,be=0,ne=()=>{te&&cancelAnimationFrame(te),te=0,be=0},de=d=>{if(!m.isConnected){ne();return}let S=be?Math.min((d-be)/1e3,.05):1/60;be=d;let I=v.offsetWidth||B&&B.width||1,R=ee(F(Ae,o,r)),A=F(Math.round(R+at),0,Ce),K=ce?A+lt*F(R-A,-.5,.5):A;if(Ze&&Ze.matches)q=K,j=0;else{let oe=S,We=1/240;for(;oe>1e-4;){let Pe=Math.min(We,oe);oe-=Pe;let Je=ze*(K-q)-le*j;j+=Je*Pe,q+=j*Pe,q<0&&(q=0,j=0),q>Ce&&(q=Ce,j=0)}}M=(q-A)*c/(r-o||1)*I,y=F(o+A*c,o,r),ie(),A!==ye&&(ye=A,t(Z(y))),!ce&&Math.abs(j)<.004&&Math.abs(q-A)<.004?(q=A,j=0,M=0,ie(),ne(),m.classList.remove("is-active")):te=requestAnimationFrame(de)},G=d=>{q=ee(y),j=0,ce=!0,ye=Math.round(ee(y)),Ae=ae(d),te||(te=requestAnimationFrame(de))};m.addEventListener("pointerdown",d=>{if(!w.classList.contains("is-editing")&&!(d.button!==0||Y)){d.preventDefault(),m.focus({focusVisible:!1}),Me=d.pointerId;try{d.target.setPointerCapture(d.pointerId)}catch{}clearTimeout(Ve),m.style.transition="",Y={x:d.clientX,y:d.clientY},Le=!0,m.classList.add("is-active"),B=v.getBoundingClientRect(),rt=B.width/(v.offsetWidth||B.width),l?(P.style.transition="",_.style.transition="",G(d.clientX)):(P.style.transition=it,_.style.transition=g,xe(ae(d.clientX)))}}),m.addEventListener("pointermove",d=>{if(!(!Y||d.pointerId!==Me)){if(d.buttons===0){he();return}if(Le&&Math.hypot(d.clientX-Y.x,d.clientY-Y.y)>so&&(Le=!1,m.classList.add("is-dragging"),l||(P.style.transition="",_.style.transition="")),!Le)if(He(d.clientX),l)Ae=ae(d.clientX);else{let S;if(d.altKey){ge||(ge={x:d.clientX,v:y});let I=v.offsetWidth||B.width;S=F(ge.v+(d.clientX-ge.x)/I*(r-o)*U,o,r)}else ge=null,S=ae(d.clientX);xe(S)}d.clientX>=B.left&&d.clientX<=B.right&&(m.style.width="",m.style.transform="")}});let he=d=>{!Y||d&&d.pointerId!==Me||(l?(ce=!1,m.classList.remove("is-dragging"),te||(te=requestAnimationFrame(de))):(Ve=setTimeout(()=>{P.style.transition="",_.style.transition=""},360),m.classList.remove("is-active","is-dragging")),m.style.transition=`width 0.35s ${bt}, transform 0.35s ${bt}`,m.style.width="",m.style.transform="",setTimeout(()=>{m.style.transition=""},360),Y=null,ge=null,Me=null)};m.addEventListener("pointerup",he),m.addEventListener("pointercancel",he),m.addEventListener("lostpointercapture",he),un(m,ie),mt(ie),Qe(m,[[window,"resize"]],ie),m.addEventListener("keydown",d=>{if(d.target!==m||Y)return;let S=rn(d,y,c,o,r,(r-o)/10||c*10);S!=null&&(d.preventDefault(),l&&(ne(),M=0,m.classList.remove("is-active")),xe(F(S,o,r)))});let Ie;w.addEventListener("mouseenter",()=>{Ie=setTimeout(()=>w.classList.add("is-editable"),800)}),w.addEventListener("mouseleave",()=>{clearTimeout(Ie),w.classList.contains("is-editing")||w.classList.remove("is-editable")}),w.addEventListener("pointerdown",d=>{d.pointerType&&d.pointerType!=="mouse"?(w.classList.add("is-editable"),d.stopPropagation()):w.classList.contains("is-editable")&&d.stopPropagation()});let Oe=()=>{if(w.classList.contains("is-editing"))return;let d=L("input","tw-slider-input");d.type="text",d.inputMode=J?"text":"decimal",De(d),d.value=J?me(Z(y)):Z(y).toFixed(k);let S=d.value;d.style.width=S.length+1+"ch",w.classList.add("is-editing"),w.replaceWith(d),d.focus(),d.select();let I=()=>{d.replaceWith(w),w.classList.remove("is-editing","is-editable")},R=()=>{let A=d.value,K=NaN;if(A!==S)try{K=J?J(A):Number(A.replace($,"").trim()||NaN)}catch{}Number.isFinite(K)&&xe(e.soft?K:F(K,o,r)),I()};d.addEventListener("pointerdown",A=>A.stopPropagation()),d.addEventListener("blur",R),d.addEventListener("keydown",A=>{A.key==="Enter"?(d.removeEventListener("blur",R),m.focus(),R()):A.key==="Escape"&&(A.stopPropagation(),d.removeEventListener("blur",R),m.focus(),I())})};return w.addEventListener("click",()=>{w.classList.contains("is-editable")&&Oe()}),m.addEventListener("keydown",d=>{d.key==="Enter"&&d.target===m&&!Y&&(d.preventDefault(),Oe())}),{el:v,set:d=>xe(d,!1),get:()=>Z(y)}}function io(e,t){let s=L("div","tw-row"),o=wn([{value:"off",label:"Off"},{value:"on",label:"On"}],e.value?"on":"off",r=>t(r==="on"),e.label);return s.append(X("span","tw-row-label",e.label),o.el),{el:s,set:r=>o.set(r?"on":"off"),get:()=>o.get()==="on"}}function ao(e,t){let s=e.options||[],o=Math.min(3,Math.max(2,e.cols||(s.length<=3?s.length:s.length===4?2:3))),r=L("div","tw-radiogrid"),c=L("div","tw-radiogrid-grid");c.style.setProperty("--tw-rg-cols",o),c.setAttribute("role","radiogroup"),c.setAttribute("aria-label",e.label);let l=e.value??Te(s[0]),p=s.map(k=>{let v=bn("tw-radiogrid-btn",k,m=>M(m));return c.append(v),v}),y=()=>yn(p,l),M=(k,v=!0)=>{k!=null&&!p.some(m=>m._twVal===k)||(l=k,y(),v&&t(k))};return c.addEventListener("keydown",k=>{let v=gn(p,l);if(v<0)return;let m=hn(k.key,v,p.length,o);m<0||(k.preventDefault(),m!==v&&(M(p[m]._twVal),p[m].focus()))}),y(),r.append(X("span","tw-radiogrid-label",e.label),c),{el:r,set:k=>M(k,!1),get:()=>l}}var lo=/^(?:#[0-9a-f]{3,8}|[a-z]+|(?:oklch|oklab|rgba?|hsla?|hwb|lab|lch|color|var)\([^()]*\))$/i,co=Ft("tw-select-chevron");function uo(e,t){let s=e.value,o=e.options.map(h=>({value:Te(h),label:cn(h),color:h&&typeof h=="object"&&typeof h.color=="string"&&lo.test(h.color.trim())?h.color.trim():""})),r=L("div","tw-select"),c=Q("tw-select-trigger");c.setAttribute("aria-haspopup","listbox"),c.setAttribute("aria-expanded","false");let l=L("span","tw-select-right"),p=h=>`linear-gradient(${h}, ${h}), var(--tw-checker)`,y=h=>{let w=L("span","tw-option-swatch");return w.style.background=p(h),w},M=L("span","tw-option-swatch"),k=L("span","tw-select-value");l.append(M,k),l.insertAdjacentHTML("beforeend",co),c.append(X("span","tw-select-label",e.label),l);let v=L("div","tw-select-dropdown");v.setAttribute("role","listbox");let m=o.map(h=>{let w=Q("tw-select-option");return w.setAttribute("role","option"),h.color&&w.append(y(h.color)),w.append(X("span","tw-option-label",h.label)),w.dataset.value=h.value,w.addEventListener("click",()=>{P(h.value),_.close()}),v.append(w),w});r.append(c,v);let z=()=>{let h=o.find(w=>w.value===s);k.textContent=h?.label??s,M.style.display=h?.color?"":"none",h?.color&&(M.style.background=p(h.color)),m.forEach(w=>{let $=w.dataset.value===String(s);w.dataset.selected=String($),w.setAttribute("aria-selected",String($))})},P=(h,w=!0)=>{h!=null&&!o.some($=>$.value===h)||(s=h,z(),w&&t(h))},_=gt(r,c,v,{width:"match",fallbackH:200,gap:4,onOpen:()=>(m.find(h=>h.dataset.value===String(s))||m[0])?.focus()});return c.addEventListener("keydown",h=>{!_.isOpen()&&(h.key==="ArrowDown"||h.key==="ArrowUp")&&(h.preventDefault(),_.open())}),v.addEventListener("keydown",h=>{let w=m.indexOf(document.activeElement),$=w;if(h.key==="ArrowDown")$=w<0?0:Math.min(m.length-1,w+1);else if(h.key==="ArrowUp")$=w<0?m.length-1:Math.max(0,w-1);else if(h.key==="Home")$=0;else if(h.key==="End")$=m.length-1;else return;h.preventDefault(),m[$]?.focus()}),z(),{el:r,set:h=>P(h,!1),get:()=>s}}function po(e){let t=X("button","tw-button",e.label);return t.addEventListener("click",()=>e.action&&e.action()),wt(t)}function fo(e){let t=L("div","tw-row tw-buttongroup");e.label&&t.append(X("span","tw-row-label",e.label));let s=L("div","tw-buttongroup-btns"),o=Array.isArray(e.buttons)?e.buttons.map(r=>[r.label??"Button",r.action]):Object.entries(e.buttons||{});for(let[r,c]of o){let l=X("button","tw-buttongroup-btn",r);l.addEventListener("click",()=>typeof c=="function"&&c()),s.append(l)}return t.append(s),wt(t)}var mo=()=>wt(L("div","tw-separator"));function go(e,t){let s=y=>y==null?"":typeof y=="object"?ln(y):String(y),o=s(e.value),r=e.rows>0,c=L("div",r?"tw-row tw-row-multiline":"tw-row"),l=L(r?"textarea":"input",r?"tw-text tw-textarea":"tw-text");r?l.rows=e.rows:l.type="text",l.value=o,De(l),e.placeholder&&(l.placeholder=e.placeholder),l.addEventListener("input",()=>{o=l.value,t(o)});let p=()=>{let y=l.scrollHeight-l.clientHeight>1;l.classList.toggle("is-clip-top",y&&l.scrollTop>1),l.classList.toggle("is-clip-bottom",y&&l.scrollTop+l.clientHeight<l.scrollHeight-1)};return r&&(l.addEventListener("scroll",p),l.addEventListener("input",p),typeof ResizeObserver=="function"&&new ResizeObserver(p).observe(l)),c.append(X("span","tw-row-label",e.label),l),{el:c,set:y=>{o=s(y),l.value=o,r&&p()},get:()=>o}}function ot(e){let t=L("div","tw-folder"),s=Q("tw-folder-header");s.setAttribute("aria-expanded","true"),s.append(X("span","tw-folder-title",e.label)),s.insertAdjacentHTML("beforeend",Mn);let o=L("div","tw-folder-body"),r=L("div","tw-controls");o.append(r),t.append(s,o);let c=l=>$e(t,s,o,l);return s.addEventListener("click",()=>c(!t.classList.contains("is-collapsed"))),{el:t,body:r,setCollapsed:c}}function Ke(e,t){let s=re(e.type);if(!s)return null;try{return s(e,t)}catch(o){return console.error("[tweaks] control failed to build:",e&&e.type,o),null}}pe("slider",ro);pe("checkbox",io);pe("radiogrid",ao);pe("list",uo);pe("button",po);pe("buttongroup",fo);pe("separator",mo);pe("text",go);pe("folder",ot);var Xe=null;function yo(e,t,s={}){let o=Object.entries(t).filter(([n])=>n!=="_last"||(console.warn('[tweaks] "_last" is reserved (the changed-key channel) \u2014 schema entry skipped'),!1)).map(([n,i])=>_e(n,i)).filter(Boolean),r={},c=[],l=new Set,p=new Set,y=new Set,M=[],k=!1,v=!1,m=[],z=new Map,P=!1,_=-1,h=n=>{if(!k){if(P){console.warn("[tweaks] call ignored \u2014 the panel could not be built");return}v?n():m.push(n)}},w=null,$=function(n,i){return n==="_last"&&this===r?void 0:i===void 0?null:typeof i=="bigint"?String(i):i},Ye=!1,st=()=>{let n={};for(let i of c){let a=n;for(let u of i.path.slice(0,-1))a=a[u]||(a[u]={});a[i.key]=i.get()}return JSON.parse(JSON.stringify(n,$))},fe=()=>{try{return JSON.parse(JSON.stringify(r,$))}catch(n){return Ye||(Ye=!0,console.warn("[tweaks] a value parked on params can't be serialised \u2014 snapshots carry the controls' values only:",n)),st()}},J=s.persist?`tw:${s.persist===!0?e:s.persist}`:null,me=J?`${J}:presets`:null,Z=n=>{try{return JSON.parse(localStorage.getItem(n)||"null")}catch{return null}},Ne=(n,i)=>{try{localStorage.setItem(n,JSON.stringify(i))}catch{}},ie=(n,i)=>i.reduce((a,u)=>a?.[u],n),B=n=>{for(let i of c)if(!i.persist){let a=ie(n,i.path.slice(0,-1));a&&typeof a=="object"&&Reflect.deleteProperty(a,i.key)}return n},rt=J?(()=>{let n=0,i=()=>{n=0,Ne(J,B(fe()))};return M.push(()=>{n&&(clearTimeout(n),i())}),()=>{clearTimeout(n),n=setTimeout(i,150)}})():()=>{},Y=(n,i=r._last)=>{(n?y:p).forEach(a=>{try{a(r,i)}catch(u){console.error("[tweaks] listener threw:",u)}}),k||rt()},Le=n=>typeof n=="function"||typeof n=="symbol"||typeof n=="bigint",Ve=(n,i)=>{if(Le(i))throw new TypeError(`a ${typeof i} is not a control value`);n.set(i),n.target[n.key]=n.get()},ge=n=>{Tt(n,n.raw,n.def),n.target[n.key]=n.get()},Me=!1,it=()=>{if(typeof s.onReset=="function"&&!Me){Me=!0;try{return s.onReset()}finally{Me=!1}}for(let n of c)try{ge(n)}catch(i){console.error(`[tweaks] resetting "${n.path.join(".")}" failed \u2014 control skipped:`,i)}r._last=void 0,Y()},g=L("div","tw-panel");g.dataset.mode="inline",dn(g);let U=L("div","tw-header"),ae=Q("tw-header-toggle");ae.setAttribute("aria-expanded","true");let He=e,xe=X("span","tw-title",He);ae.append(xe);let Ce=L("div","tw-toolbar"),at=()=>{let n={};for(let i of c)ke(i.get(),i.def)&&(n[i.path.join(".")]=i.get());return JSON.parse(JSON.stringify(n,$))},lt=Lt(g,()=>He,n=>{if(!n)return[JSON.stringify(fe(),null,2),-1];let i=at();return[JSON.stringify(i,null,2),Object.keys(i).length]}),ze=Mt(it),le=null;J&&s.presets!==!1&&(le=et("",xn,"Presets"),le.setAttribute("aria-haspopup","menu"),le.setAttribute("aria-expanded","false"),Ce.append(le));let ee=!!s.filter&&(s.toolbar!==!1||(console.warn("[tweaks] opts.filter needs the toolbar (its search button lives there) \u2014 ignored alongside toolbar:false"),!1)),q=ee?et("",Ln,"Filter controls"):null,j=ee?L("input","tw-search"):null;ee&&(j.type="text",j.placeholder="Filter\u2026",j.spellcheck=!1,j.setAttribute("aria-label","Filter controls"),De(j),Ce.append(q)),Ce.append(lt,ze),U.append(ae),ee&&U.append(j),s.toolbar!==!1&&U.append(Ce);let te=[lt,ze,le,q].filter(Boolean);for(let n of te)n.disabled=!0;let ce=!1,ye=!1;U.addEventListener("click",n=>{ye&&(ye=!1,n.preventDefault(),n.stopPropagation())},!0),ae.addEventListener("click",()=>{$e(g,ae,Ae,!g.classList.contains("is-collapsed")),g.dataset.mode==="floating"&&setTimeout(()=>{g.dataset.mode==="floating"&&g.isConnected&&(K(),A())},270)});let Ae=L("div","tw-body"),be=L("div","tw-controls");Ae.append(be),g.append(U,Ae);let ne=It(s.theme);Rt(g,ne),g._twTheme=ne;let de=s.draggable!==!1,G=8,he=28,Ie=()=>({maxX:Math.max(G,window.innerWidth-g.offsetWidth-G),maxY:Math.max(G,window.innerHeight-g.offsetHeight-G)}),Oe=J?`${J}:pos`:null,d=(de||s.floating)&&Oe?Z(Oe):null,S=d||(typeof s.floating=="object"?s.floating:null)||{x:16,y:16},I=+S.x||16,R=+S.y||16,A=()=>{g.style.left=I+"px",g.style.top=R+"px"},K=()=>{let{maxX:n,maxY:i}=Ie();I=F(I,G,n),R=F(R,G,i)};(de||s.floating)&&(s.floating||d)&&(g.dataset.mode="floating",K(),A(),requestAnimationFrame(()=>{!k&&g.dataset.mode==="floating"&&g.isConnected&&(K(),A())}));let oe=n=>{ge(n),r._last=n.key,Y()},We=(n,i)=>{let a=n.querySelector(".tw-slider-value")||n.querySelector(Kt)||n;a.classList.add("tw-resettable"),a.title="Double-click or hold to reset";let u=0,C=0,b=0,T=!1,E=()=>{u&&(clearTimeout(u),u=0,a.classList.remove("tw-reset-holding"))};a.addEventListener("pointerdown",f=>{f.stopPropagation(),T=!1,!(f.pointerType!=="touch"&&f.pointerType!=="pen")&&(C=f.clientX,b=f.clientY,a.classList.add("tw-reset-holding"),u=setTimeout(()=>{u=0,a.classList.remove("tw-reset-holding","is-editable"),T=!0,oe(i)},500))}),a.addEventListener("pointermove",f=>{u&&Math.abs(f.clientX-C)+Math.abs(f.clientY-b)>8&&E()}),a.addEventListener("pointerup",E),a.addEventListener("pointercancel",E),a.addEventListener("pointerleave",E),a.addEventListener("contextmenu",f=>{T&&f.preventDefault()}),a.addEventListener("click",f=>{T&&(f.preventDefault(),f.stopImmediatePropagation(),T=!1)},!0),a.addEventListener("dblclick",f=>{a===n&&f.target.closest&&f.target.closest("input, textarea")||(f.preventDefault(),f.stopPropagation(),oe(i))}),a.classList.contains("tw-slider-value")&&n.addEventListener("dblclick",f=>{let O=f.target;!O.classList||!O.classList.contains("tw-slider-input")||(f.preventDefault(),f.stopPropagation(),O.blur(),oe(i))}),n.addEventListener("keydown",f=>{!f.altKey||f.metaKey||f.ctrlKey||f.key!=="Backspace"&&f.key!=="Delete"||(f.preventDefault(),f.stopPropagation(),f.target.classList&&f.target.classList.contains("tw-slider-input")&&f.target.blur(),oe(i))})},Pe=[],Je,Kn=(n,i)=>!n._hid==!i?!1:(n._hid=i,Je?Je(n,i):n.classList.toggle("tw-cond-hidden",i),!i),At=(n,i)=>{i.hint&&qe(n,i.hint),(i.render||i.disabled!=null)&&Pe.push({node:n,m:i})},Ot=[],Pt=[],ct=[],dt=[],Xn=n=>{typeof n.destroy=="function"&&M.push(n.destroy)},_t=(n,i,a,u=[],C=null)=>{for(let b of i){if(b.type==="tabs"){let f={};l.add(f),a[b.key]=f;let O=re("tabs"),x=O&&O(b);if(!x)continue;dt.push({path:[...u,b.key],ctrl:x,pageKeys:b.pages.map(H=>H.key)}),b.pages.forEach((H,W)=>{let se={};l.add(se),f[H.key]=se,_t(x.bodies[W],H.children,se,[...u,b.key,H.key])}),At(x.el,b),n.append(x.el);continue}if(b.type==="folder"){let f={};l.add(f),a[b.key]=f;let O=ot(b);ct.push({path:[...u,b.key],el:O.el,setCollapsed:O.setCollapsed});let x=ee?{el:O.el,label:b.label,body:O.body}:null;x&&Pt.push(x),_t(O.body,b.children,f,[...u,b.key],x),At(O.el,b),n.append(O.el);continue}let T=!St.has(b.type),E=Ke(b,T?f=>{ke(a[b.key],f)&&(a[b.key]=f,r._last=b.key,Y())}:()=>{});if(E){if(Xn(E),T){let f=E.get();Se(a,b.key)&&E.set(a[b.key]),a[b.key]=E.get();let O={target:a,key:b.key,set:E.set,get:E.get,raw:b.value,def:f,path:[...u,b.key],persist:b.persist!==!1};c.push(O),We(E.el,O)}At(E.el,b),ee&&b.type!=="separator"&&Ot.push({el:E.el,label:b.label,folder:C}),n.append(E.el)}}};if(ee){let n=a=>{let u=a.trim().toLowerCase(),C=!1,b=(T,E)=>{!E&&T.classList.contains("tw-filter-hidden")&&(C=!0),T.classList.toggle("tw-filter-hidden",E)};if(!u)Ot.forEach(T=>b(T.el,!1)),Pt.forEach(T=>b(T.el,!1));else{for(let T of Ot){let E=T.folder&&yt(T.folder.label,u);b(T.el,!(yt(T.label,u)||E))}for(let T of Pt.slice().reverse()){let E=[...T.body.children].some(f=>!f.classList.contains("tw-filter-hidden"));b(T.el,!(yt(T.label,u)||E))}}C&&Ht()},i=()=>{g.classList.remove("is-searching"),j.value="",n("")};q.addEventListener("click",()=>{q.disabled||(g.classList.toggle("is-searching")?(j.focus(),j.select()):i())}),j.addEventListener("input",()=>n(j.value)),j.addEventListener("keydown",a=>{a.key==="Escape"&&(i(),q.focus())})}let Yn=new Set(o.map(n=>n.key)),ut=(n,i)=>{if(!(!n||typeof n!="object")){for(let a of c){let u=ie(n,a.path);if(u!==void 0)try{Ve(a,u)}catch(C){console.error(`[tweaks] restoring "${a.path.join(".")}" failed \u2014 value skipped:`,C)}}for(let a of Object.keys(n))if(!Yn.has(a)&&a!=="_last"&&Se(r,a)&&!Ct(a)&&!Le(n[a]))try{r[a]=n[a]}catch(u){console.error(`[tweaks] restoring "${a}" failed \u2014 value skipped:`,u)}r._last=void 0,Y(i)}},Re=()=>{let n=me?Z(me):null;return Object.assign(Object.create(null),n&&typeof n=="object"?n:{})},zt=n=>{let i=Re();i[n]=fe(),Ne(me,i)},Wt=n=>{let i=Re();i[n]&&ut(i[n])},Jt=n=>{let i=Re();delete i[n],Ne(me,i)},pt=n=>n.map(i=>String(i).replace(/~/g,"~1").replace(/\./g,"~0")).join("."),Vn=()=>{let n={};if(ct.length){let i={};for(let a of ct)i[pt(a.path)]=a.el.classList.contains("is-collapsed");n.folders=i}if(dt.length){let i={};for(let a of dt)i[pt(a.path)]=a.pageKeys[a.ctrl.active()]??null;n.tabs=i}return n},zn=n=>{if(!(!n||typeof n!="object")){if(n.folders)for(let i of ct){let a=n.folders[pt(i.path)];typeof a=="boolean"&&i.setCollapsed(a)}if(n.tabs)for(let i of dt){let a=i.pageKeys.indexOf(n.tabs[pt(i.path)]);a>=0&&a!==i.ctrl.active()&&i.ctrl.activate(a)}}};if(de||s.floating){if(de){g.dataset.draggable="true";let x=L("span","tw-grabber");x.setAttribute("aria-hidden","true"),U.prepend(x)}let n=()=>{if(g.dataset.mode==="floating")return;let x=g.getBoundingClientRect();if(I=x.left,R=x.top,g.parentNode&&(w=L("span","tw-lift-slot"),w.style.width=x.width+"px",w.style.height=x.height+"px",w.setAttribute("aria-hidden","true"),g.before(w)),fn(g,g),document.body.appendChild(g),g.dataset.mode="floating",A(),w&&typeof MutationObserver=="function"){let H=new MutationObserver(()=>{w&&!w.isConnected&&(H.disconnect(),w=null,g.remove())});H.observe(document.documentElement,{childList:!0,subtree:!0}),M.push(()=>H.disconnect())}},i=()=>{Xe&&Xe!==g&&(Xe.style.zIndex=""),g.style.zIndex="99991",Xe=g},a=null,u=0,C=0,b=0,T=0,E=x=>{for(let[H,W]of[["pointermove",f],["pointerup",O],["pointercancel",O]])x?document.addEventListener(H,W,!0):document.removeEventListener(H,W,!0)};de&&U.addEventListener("pointerdown",x=>{if(!(x.button!==0||a!==null||x.target.closest(".tw-toolbar, input, textarea, select"))&&(a=x.pointerId,u=x.clientX,C=x.clientY,ce=!1,E(!0),g.classList.add("is-grabbing"),g.style.transition)){let H=getComputedStyle(g);I=parseFloat(H.left)||I,R=parseFloat(H.top)||R,g.style.transition="",A()}});let f=x=>{if(x.pointerId!==a)return;if(x.buttons===0){O(x);return}let H=x.clientX-u,W=x.clientY-C;if(!ce){if(Math.abs(H)+Math.abs(W)<4)return;ce=!0,n(),i(),b=I,T=R;try{U.setPointerCapture(a)}catch{}g.classList.add("is-dragging")}let{maxX:se,maxY:D}=Ie();I=F(b+H,G,se),R=F(T+W,G,D),A()},O=x=>{if(x.pointerId===a){try{U.releasePointerCapture(a)}catch{}if(a=null,E(!1),ye=ce,ye&&setTimeout(()=>{ye=!1},0),ce){let{maxX:H,maxY:W}=Ie();I<=G+he?I=G:I>=H-he&&(I=H),R<=G+he?R=G:R>=W-he&&(R=W),Ze.matches||(g.style.transition="left 0.32s var(--tw-ease-spring), top 0.32s var(--tw-ease-spring)",setTimeout(()=>{g.style.transition=""},340)),A(),Oe&&Ne(Oe,{x:I,y:R})}g.classList.remove("is-dragging","is-grabbing")}};U.addEventListener("lostpointercapture",O),M.push(()=>E(!1))}let Wn=()=>{(de||s.floating)&&(g.dataset.mode==="floating"&&(K(),A()),M.push(Qe(g,[[window,"resize"]],()=>{g.dataset.mode==="floating"&&(K(),A())})))};if(le){let n=L("div","tw-presets-menu"),i=L("div","tw-presets-save"),a=L("input","tw-presets-input");a.type="text",a.placeholder="Preset name\u2026",a.spellcheck=!1,a.setAttribute("aria-label","New preset name"),De(a);let u=X("button","tw-presets-savebtn","Save");i.append(a,u);let C=L("div","tw-presets-list");n.append(i,C);let b=()=>{let f=Re(),O=Object.keys(f);if(C.replaceChildren(),!O.length)return C.append(X("div","tw-presets-empty","No presets yet"));for(let x of O){let H=L("div","tw-presets-row"),W=X("button","tw-presets-load",x);W.addEventListener("click",()=>{Wt(x),E.close(),Ee(`Loaded \u201C${x}\u201D`,g)});let se=Q("tw-presets-del",Cn);se.setAttribute("aria-label",`Delete preset ${x}`),se.addEventListener("click",D=>{D.stopPropagation(),Jt(x),b()}),H.append(W,se),C.append(H)}},T=()=>{let f=a.value.trim();if(!f){a.focus();return}zt(f),a.value="",b(),Ee(`Saved \u201C${f}\u201D`,g)},E=gt(le,le,n,{width:208,fallbackH:160,gap:6,align:"end",onOpen:()=>{b(),a.focus()}});u.addEventListener("click",T),a.addEventListener("keydown",f=>{f.key==="Enter"&&T()})}if(s.onEditStart||s.onEditEnd){let n=".tw-slider, .tw-num-grab, .tw-pad, .tw-wg-area, .tw-wg-hue, .tw-wg-alpha, .tw-bezier-handle, .tw-gradient-bar, .tw-gradient-stop",i=!1,a=()=>{document.removeEventListener("pointerup",a,!0),document.removeEventListener("pointercancel",a,!0),i&&(i=!1,s.onEditEnd&&s.onEditEnd())},u=C=>{i||!C.target.closest(n)||(i=!0,s.onEditStart&&s.onEditStart(),document.addEventListener("pointerup",a,!0),document.addEventListener("pointercancel",a,!0))};g.addEventListener("pointerdown",u),g._twEditPointer=u,M.push(a)}let Ge=s.undo?(()=>{let i=[],a=0,u=!1,C=0,b=()=>{C=0;let D=fe();JSON.stringify(D)!==JSON.stringify(i[a])&&(i=i.slice(0,a+1),i.push(D),i.length>200&&(i=i.slice(i.length-200)),a=i.length-1)},T=()=>{u||(clearTimeout(C),C=setTimeout(b,350))},E=()=>{C&&(clearTimeout(C),b())};p.add(T),y.add(T);let f=D=>{u=!0,ut(i[D]),u=!1,a=D},O=()=>{E(),a>0&&f(a-1)},x=()=>{E(),a<i.length-1&&f(a+1)},H=()=>g.matches(":hover")||g.contains(document.activeElement),W=D=>!!(D&&D.matches&&(D.matches("input, textarea")||D.isContentEditable)),se=D=>{if(!H()||!(D.metaKey||D.ctrlKey)||W(D.target))return;let Zt=D.key.toLowerCase();Zt==="z"?(D.preventDefault(),D.shiftKey?x():O()):Zt==="y"&&(D.preventDefault(),x())};return{undo:O,redo:x,arm:()=>{i=[fe()],a=0,M.push(Qe(g,[[document,"keydown"]],se))}}})():null,Gt=()=>{if(!k){if(_=M.length,_t(be,o,r),Pe.length){let n=new Map;for(let u of c)n.has(u.key)||n.set(u.key,u);let i=u=>{let C=n.get(u);return C?C.target[C.key]:r[u]},a=()=>{let u=!1;for(let{node:C,m:b}of Pe)try{if(b.render&&Kn(C,!b.render(i))&&(u=!0),b.disabled!=null){let T=typeof b.disabled=="function"?b.disabled(i):b.disabled;ht(C,!!T)}}catch{}u&&Ht()};p.add(a),y.add(a),a(),import("./fold-FNCV4C7P.js").then(u=>{Je=u.fold},()=>{})}if(J&&ut(B(Z(J))),!k){Ge?.arm(),Wn(),v=!0;for(let n of m.splice(0)){if(k)break;try{n()}catch(i){console.error("[tweaks] a call queued before ready failed:",i)}}z.clear();for(let n of te)n.disabled=!1}}},Ut=(n,i)=>{if(String(n).split(".").some(Ct))return console.warn(`[tweaks] set("${n}") ignored \u2014 reserved key`),!1;let a=String(n).split("."),u;if(a.length>1){let E=r;for(let f=0;f<a.length-1&&E;f++)E=E[a[f]],l.has(E)||(E=null);if(u=E&&c.find(f=>f.target===E&&f.key===a[a.length-1]),!u)return console.warn(`[tweaks] set("${n}") \u2014 no control at that path`),!1}else{let E=c.filter(O=>O.key===n),f=E.find(O=>O.target===r);if(!f&&E.length>1)return console.warn(`[tweaks] set("${n}") is ambiguous \u2014 ${E.length} controls share that key; use a dotted path (e.g. "${E[0].path.join(".")}")`),!1;u=f||E[0]}let C=u?u.target:r,b=u?u.key:n,T=C[b];if(u&&Le(i))return console.warn(`[tweaks] set("${n}") ignored \u2014 a ${typeof i} is not a control value`),!1;if(u)try{Ve(u,i)}catch(E){return console.error(`[tweaks] set("${n}") failed \u2014 value skipped:`,E),!1}else{if(l.has(r[n]))return console.warn(`[tweaks] set("${n}") ignored \u2014 it's a folder/tabs group; set its children instead`),!1;r[n]=i}return ke(T,C[b])?(r._last=b,!0):!1},je={el:g,params:r,on(n){return k?()=>{}:(p.add(n),()=>p.delete(n))},set(n,i,a){let u=String(n),C=a?.silent;h(()=>{Ut(u,i)&&Y(C)})},setMany(n,i){if(n==null||typeof n!="object")return;let a=Object.entries(n),u=i?.silent;h(()=>{let C=!1;for(let[b,T]of a)try{Ut(b,T)&&(C=!0)}catch(E){console.error(`[tweaks] setMany("${b}") failed \u2014 key skipped:`,E)}C&&Y(u)})},reset(){v&&!k&&qt(ze),h(it)},toJSON(){return k?{values:{},ui:{}}:{values:fe(),ui:Vn()}},changes(){return k?{}:at()},fromJSON(n,i){if(!n||typeof n!="object")return;let a=i?.silent,u=n.values&&typeof n.values=="object"?{...n.values}:n.values,C=n.ui&&typeof n.ui=="object"?{...n.ui}:n.ui;h(()=>{u&&ut(u,a),zn(C)})},setName(n){k||(He=String(n),xe.textContent=He)},setTheme(n){if(!k){if(ne)for(let i in ne)g.style.removeProperty(i);ne=It(n),g._twTheme=ne,Rt(g,ne),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:n=>k||P||!me||!n?!1:(v||z.set(String(n),"save"),h(()=>zt(n)),!0),loadPreset:n=>{let i=z.get(String(n));return k||P||i==="delete"||!(i==="save"||Re()[n])?!1:(h(()=>Wt(n)),!0)},deletePreset:n=>{me&&(v||z.set(String(n),"delete"),h(()=>Jt(n)))},presets:()=>k?[]:Object.keys(Re()),undo:()=>{Ge&&h(Ge.undo)},redo:()=>{Ge&&h(Ge.redo)},destroy(){if(!k){k=!0,mn(g),tt(g);for(let n of M.splice(0))try{n()}catch{}p.clear(),w&&(w.remove(),w=null),Xe===g&&(Xe=null),g.dataset.twDestroyed="",g.remove()}}},Qt=Be(o);if(Qt){let n=i=>{if(P=!0,m.length=0,_>=0)for(let a of M.splice(_))try{a()}catch{}for(let a of be.children)a.dataset.twDestroyed="";throw p.clear(),c.length=0,be.replaceChildren(),k||console.warn(`[tweaks] "${e}": the panel could not be built \u2014 ${_>=0?"the build threw":"its lazy controls failed to load"}; the API is inert`),i};je.ready=g.ready=Qt.then(Gt).then(()=>je,n),je.ready.catch(()=>{})}else Gt(),je.ready=g.ready=Promise.resolve(je);return je}var bo=(e,t)=>{e.dataset.value=t==null?"":Array.isArray(t)?t.join(","):typeof t=="object"?Object.values(t).join(","):String(t)},ho=(e,t,s)=>{bo(e,s),e.dispatchEvent(new CustomEvent("tw:change",{bubbles:!0,detail:{key:t,value:s}}))},Vt=(e,t)=>[...typeof e.matches=="function"&&e.matches(t)?[e]:[],...e.querySelectorAll(t)];async function Fn(e=document){Vt(e,'.tw-panel[data-mode="inline"]:not([data-tw-panel-bound])').forEach(o=>{let r=o.querySelector(":scope > .tw-header"),c=o.querySelector(":scope > .tw-controls");if(!r||!c)return;o.setAttribute("data-tw-panel-bound","");let l=L("div","tw-body");o.insertBefore(l,c),l.append(c);let p=r.querySelector(".tw-header-toggle"),y=r.querySelector(".tw-title");if(!p&&y&&(p=Q("tw-header-toggle"),y.replaceWith(p),p.append(y)),!!p&&(p.setAttribute("aria-expanded","true"),p.addEventListener("click",()=>$e(o,p,l,!o.classList.contains("is-collapsed"))),!r.querySelector(".tw-toolbar"))){let M=y&&y.textContent||"Panel",k=()=>[...o.querySelectorAll("[data-tw]")].map(P=>P._tw).filter(P=>P&&P.ctrl.get()!==void 0),v=()=>{let P=Object.create(null);for(let _ of k()){let h=_.key,w=2;for(;Se(P,h);)h=`${_.key}-${w++}`;P[h]=_.ctrl.get()}return JSON.stringify(P,null,2)},m=()=>{for(let P of k())P.reset()},z=L("div","tw-toolbar");z.append(Lt(o,()=>M,()=>[v(),-1]),Mt(m)),r.append(z)}}),Vt(e,'[data-tw="folder"]:not([data-tw-bound])').forEach(o=>{o.setAttribute("data-tw-bound","");let r=ot({label:o.dataset.label||"Folder"});[...o.children].forEach(c=>r.body.append(c)),o.append(r.el)});let t=Vt(e,"[data-tw]:not([data-tw-bound])").map(o=>({host:o,meta:Rn(o)})).filter(o=>o.meta);t.forEach(({host:o})=>o.setAttribute("data-tw-bound",""));let s=Be(t.map(o=>o.meta));s&&await s.catch(()=>{});for(let{host:o,meta:r}of t){let c=o.dataset.key||r.label,l,p=v=>{ke(l,v)&&(l=v,ho(o,c,v))},y=Ke(r,p);if(!y)continue;o.closest(".tw-panel, .tw-portal")||o.classList.add("tw-portal"),o.append(y.el),o.dataset.hint&&qe(y.el,o.dataset.hint);let M=y.get();l=M;let k={...y,set:v=>{y.set(v),p(y.get())}};o._tw={ctrl:k,raw:r.value,def:M,key:c,host:o,reset:()=>{Tt(y,r.value,M),p(y.get())}}}}if(typeof document<"u"){let e=()=>Fn(document);document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e):e()}var Bn=e=>L("div",`${e} tw-standalone tw-portal`),qn=(e,t,s)=>{let o=Be(e);if(!o)return t(),Promise.resolve(s);let r=o.then(t).then(()=>s);return r.catch(()=>{}),r};function wo(e,t,s={}){let o=s.key??"value",r=_e(o,t);if(!r||r.type==="folder"||r.type==="tabs")throw new TypeError(`[tweaks] mountControl: "${o}" is not a single-control schema value`);s.label!=null&&(r.label=String(s.label));let c=!St.has(r.type),l=Bn("tw-control");e.append(l);let p=null,y=!1,M=r.value,k,v=!1,m=_=>{ke(M,_)&&(M=_,s.onChange&&s.onChange(_,o))},z=()=>{if(y||(p=Ke(r,c?m:()=>{}),!p))return;r.hint&&qe(p.el,r.hint);let _=()=>{};try{r.render&&!r.render(_)&&p.el.classList.add("tw-cond-hidden")}catch{}try{(typeof r.disabled=="function"?r.disabled(_):r.disabled)&&ht(p.el,!0)}catch{}l.append(p.el),c&&(M=p.get(),v&&(p.set(k),m(p.get())))},P={el:l,set:_=>{y||!c||(p?(p.set(_),m(p.get())):(k=_,v=!0))},get:()=>c?p?p.get():v?k:r.value:void 0,destroy:()=>{y=!0,p&&typeof p.destroy=="function"&&p.destroy(),l.dataset.twDestroyed="",l.remove()},ready:null};return P.ready=qn([r],z,P),P}function vo(e={}){let t=Bn("tw-color-picker"),s=null,o=!1,r=e.value,c,l=!1,p=null,y=v=>{ke(r,v)&&(r=v,e.onChange&&e.onChange(v))},M=()=>{if(o)return;let v=re("colorpicker");v&&(s=v({value:e.value,mode:e.mode},y),r=s.get(),t.append(s.el),p&&s.setMode(p),l&&(s.set(c),y(s.get())),mt(s.reflow))},k={el:t,set:v=>{o||(s?(s.set(v),y(s.get())):(c=v,l=!0))},get:()=>s?s.get():l?c:e.value,mode:()=>s?s.mode():p||e.mode||"oklch",setMode:v=>{s?s.setMode(v):p=v},reflow:()=>{s&&s.reflow()},destroy:()=>{o=!0,t.remove()},ready:null};return k.ready=qn([{type:"color"}],M,k),k}export{vo as createColorPicker,Fn as enhance,Gn as gradientCss,Jn as gradientStops,wo as mountControl,yo as tweaks};
|
|
1
|
+
import{$ as ve,A as en,B as Nn,C as Ze,D as In,E as tn,F as nn,G as Rn,H as jn,I as Dn,J as St,K as xt,L as on,M as Fn,N as rn,P as $n,Q as Kn,R as Tt,S as At,T as Bn,U as qn,V as Yn,W as Xn,X as Vn,Y as Oe,Z as Ot,_ as we,ba as sn,ca as ke,d as Eo,e as Lo,f as Ln,g as j,h as be,i as Cn,j as Mn,k as Sn,l as xn,m as lt,n as Tn,o as An,p as On,q as Ct,r as Ie,s as Pn,t as _n,u as C,v as he,w as z,x as Hn,y as Mt,z as ct}from"./chunk-JWHF6V72.js";var Be={number:()=>import("./heavy-KPG2LKVX.js"),interval:()=>import("./interval-LPI5MWBB.js"),color:()=>import("./colour-DJHDXBXF.js"),gradient:()=>import("./gradient-IXD2AINY.js"),shadow:()=>import("./shadow-SKTAWRUK.js"),sides:()=>import("./sides-RVC5PQY3.js"),tabs:()=>import("./tabs-LB5KTQXF.js"),image:()=>import("./image-E7OAWFFK.js"),fpsgraph:()=>import("./monitor-PEBMH5MH.js"),monitor:()=>import("./monitor-PEBMH5MH.js"),spring:()=>import("./spring-QIVBIUPF.js"),cubicbezier:()=>import("./bezier-EIWM4A6M.js"),motion:()=>Promise.all([import("./bezier-EIWM4A6M.js"),import("./spring-QIVBIUPF.js")]).then(()=>import("./motion-QSDSYDKR.js")),point:()=>import("./point-PK3CZSBO.js"),plot:()=>import("./plot-SFD5OPF6.js")},Pt={},Co=t=>ve(t)||!Be[t]?null:Pt[t]||(Pt[t]=Be[t]().catch(n=>{throw delete Pt[t],console.error(`[tweaks] control chunk "${t}" failed to load:`,n),n})),an=(t,n=new Set)=>{for(let s of t)if(s&&(Be[s.type]&&n.add(s.type),s.children&&an(s.children,n),s.pages))for(let a of s.pages)an(a.children,n);return n},et=t=>{let n=[...an(t)].map(Co).filter(Boolean);return n.length?Promise.all(n):null};function Re(t,n,s=0){if(Ht(t))return null;let a=xo(t,n,s);return a&&n&&typeof n=="object"&&(typeof n.render=="function"&&(a.render=n.render),n.disabled!=null&&(a.disabled=n.disabled),n.hint!=null&&(a.hint=String(n.hint)),n.persist===!1&&(a.persist=!1)),a}var Pe=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),Ht=t=>t==="__proto__"||t==="constructor"||t==="prototype",_e=(t,n)=>t!==n&&!(be(t)&&be(n)&&JSON.stringify(t)===JSON.stringify(n)),Nt=(t,n,s)=>{t.set(s),t.set(n)},Wn=t=>Array.isArray(t.options)&&{type:"radiogrid",options:t.options,value:t.value??Ie(t.options[0]),cols:t.cols},Mo=(t,...n)=>{let s=(n.length?n:[0]).map(d=>Ct(Number.isFinite(+d)?+d:0)),a=t.min??Math.min(...s.map(d=>d[0])),i=t.max??Math.max(...s.map(d=>d[1]));return{min:a,max:i,step:t.step??lt(a,i)}},ln=(t,n)=>t.label==null?n:String(t.label),zn=t=>typeof t=="function"?t:void 0,Jn=t=>typeof t=="string"&&t.trim()?t.trim().slice(0,12):void 0,_t=["stiffness","damping","mass","visualDuration","bounce"],Gn={slider:t=>{let n=Mo(t,t.value??t.min??0);return{value:t.value??n.min,...n,soft:t.soft,unit:Jn(t.unit),format:zn(t.format),parse:zn(t.parse)}},number:t=>({value:t.value??0,min:t.min,max:t.max,step:t.step??1,soft:t.soft,unit:Jn(t.unit)}),checkbox:t=>({value:!!t.value}),radiogrid:Wn,segmented:Wn,list:t=>Array.isArray(t.options)&&{options:t.options,value:t.value??Ie(t.options[0])},text:t=>({value:t.value??"",rows:t.rows,placeholder:t.placeholder}),spring:t=>{let n=be(t.value)?t.value:t,s={stiffness:n.stiffness??300,damping:n.damping??26,mass:n.mass??1};Number.isFinite(+n.visualDuration)&&(s.visualDuration=+n.visualDuration),Number.isFinite(+n.bounce)&&(s.bounce=+n.bounce);let a=t.mode??n.mode;return(a==="time"||a==="physics")&&(s.mode=a),{value:s}},motion:t=>{let n=typeof t.value=="string"||Array.isArray(t.value)?{...t,curve:t.value}:be(t.value)?t.value:t,s=_t.some(i=>n[i]!=null),a={curve:"ease",duration:300,...s?{}:{visualDuration:.5,bounce:.2}};for(let i of["mode","curve","duration",..._t])n[i]!=null&&(a[i]=n[i]);return a.mode!=="easing"&&a.mode!=="spring"&&(a.mode=s?"spring":"easing"),{value:a}},point:t=>{if(!Array.isArray(t.components)||!t.components.length)return!1;let n=new Set,s=t.components.map((a,i)=>{let d=String(a.key??((a.label?String(a.label).toLowerCase():"")||`c${i}`)),c=d,b=2;for(;n.has(c);)c=`${d}-${b++}`;return n.add(c),{...a,key:c}});return{components:s,pad:t.pad,invertY:t.invertY,value:Object.fromEntries(s.map(a=>[a.key,a.value??0]))}},buttongroup:t=>({buttons:t.buttons}),separator:()=>({}),tabs:(t,n)=>{if(!t.pages||typeof t.pages!="object"||!Object.keys(t.pages).length)return!1;let s=new Set;return{pages:Object.entries(t.pages).map(([a,i])=>{let d=a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",c=d,b=2;for(;s.has(c);)c=`${d}-${b++}`;return s.add(c),{key:c,title:a.trim()?a:"Tab",children:Object.entries(i).map(([k,T])=>Re(k,T,n+1)).filter(Boolean)}})}}},So=Object.assign(Object.create(null),{list:"options",radiogrid:"options",segmented:"options",point:"components",tabs:"pages"});function xo(t,n,s=0){if(s>64)return null;let a=Ln(t),i=(d,c,b=a)=>({type:d,key:t,label:b,...c});if(be(n)&&!Array.isArray(n)&&Pe(Gn,n.type)){let d;try{d=Gn[n.type](n,s)}catch(c){return console.error(`[tweaks] malformed "${n.type}" schema value for "${t}" \u2014 control skipped:`,c),null}if(d)return i(String(n.type),d,ln(n,a));if(Pe(n,So[n.type]))return console.error(`[tweaks] malformed "${n.type}" schema value for "${t}" \u2014 control skipped`),null}else if(be(n)&&!Array.isArray(n)&&typeof n.type=="string"&&(Be[n.type]||ve(n.type))){let{type:d,label:c,...b}=n;return i(d,b,ln(n,a))}if(Array.isArray(n)&&Array.isArray(n[0])&&n[0].length===2&&typeof n[0][0]=="number"){let d=Number.isFinite(+n[1])?+n[1]:+n[0][0],c=Number.isFinite(+n[2])?+n[2]:+n[0][1];return i("interval",{value:n[0].map(Number),min:d,max:c,step:n[3]??lt(d,c)})}if(Array.isArray(n)&&n.length<=4&&typeof n[0]=="number"){let d=n[0],[c,b]=Ct(d),k=n.length>1?n[1]:c,T=n.length>2?n[2]:b;return i("slider",{value:d,min:k,max:T,step:n[3]??lt(k,T)})}if(typeof n=="number"){let[d,c]=Ct(n);return i("slider",{value:n,min:d,max:c,step:lt(d,c)})}return typeof n=="boolean"?i("checkbox",{value:n}):Array.isArray(n)?i("list",{options:n,value:Ie(n[0])}):be(n)&&typeof n.action=="function"?i("button",{action:n.action},ln(n,a)):be(n)&&Array.isArray(n.options)?i("list",{options:n.options,value:n.value??Ie(n.options[0])}):Cn(n)?i("color",{value:n}):typeof n=="string"?i("text",{value:n}):be(n)?i("folder",{children:Object.entries(n).filter(([d,c])=>!(d==="render"&&typeof c=="function")&&!((d==="disabled"||d==="hint")&&c!=null)).map(([d,c])=>Re(d,c,s+1)).filter(Boolean)}):null}var It=new Set(["button","fpsgraph","monitor","buttongroup","separator"]);var Un=Oe('<path class="tw-copy-back" d="m5.5 16.5-.7-.2q-1.5-.6-2.1-2.1-.2-.7-.2-2.7v-2c0-3.3 0-5 1-6s2.7-1 6-1h2c1.4 0 2 0 2.7.2q1.6.5 2.1 2.1l.2.7"/><path class="tw-copy-front" d="M7.5 14.5c0-3.3 0-5 1-6s2.7-1 6-1 5 0 6 1 1 2.7 1 6 0 5-1 6-2.7 1-6 1-5 0-6-1-1-2.7-1-6"/>',"tw-toolbar-btn__copy"),Qn=Oe('<path d="m5 14 3.5 3.5L19 6.5"/>',"tw-toolbar-btn__check",2.4),Zn=Oe('<path d="M3 12a9 9 0 1 0 9-9 9 9 0 0 0-7.6 4.2M3.3 3l.2 2q0 2.2.6 2.7t2.7.2l2-.2"/>'),eo=Oe('<path d="m17 17 4 4m-2-10a8 8 0 0 0-16 0 8 8 0 0 0 16 0"/>'),cn=t=>Oe('<path d="M18 9s-4.4 6-6 6-6-6-6-6"/>',t,2.5),to=cn("tw-chevron"),no=Oe('<path d="M20.2 13.5q1.8.8 1.8 1.5 0 .8-2.7 2l-5 2.2Q13 20 12 20q-.7 0-2.4-.8l-4.9-2.3Q2 16 2 15t1.8-1.5"/><path class="tw-layer-top" d="M9.6 4.8Q11.3 4 12 4t2.4.8l4.9 2.3Q22 8 22 9c0 .7-.9 1.1-2.7 2l-5 2.2Q13 14 12 14q-.7 0-2.4-.8l-4.9-2.3Q2 10 2 9c0-.7.9-1.1 2.7-2z"/>'),oo=Oe('<path d="M18 6 6 18m12 0L6 6"/>',"",2.2),dn=Oe('<circle cx="12" cy="12" r="10"/><path d="M12 16v-4m-.25-3.75a.25.25 0 0 0 .5 0 .25.25 0 0 0-.5 0"/>');var To=3;function Ao(t,n){let s=t.label,{min:a,max:i,step:d}=Tn(t.min,t.max,t.step);t.soft||([a,i]=xn(a,i,d));let c=(i-a)/d<=6,b=Number.isFinite(+t.value)?+t.value:a,k=t.soft&&!c?b:j(b,a,i),T=0,E=Mn(d),L=C("div","tw-slider-wrap"),y=C("div","tw-slider"),se=C("div","tw-slider-hashmarks"),$=C("div","tw-slider-fill"),H=C("div","tw-slider-handle"),B=z("span","tw-slider-label",s),A=C("span","tw-slider-value"),g=typeof t.unit=="string"?t.unit.trim():"",P=document.createTextNode(""),F=g?/^[%°]$/.test(g)?g:" "+g:"";A.append(P),g&&A.append(z("span","tw-slider-unit",F));let ee=t.format,D=t.parse,ie=l=>{if(ee)try{let _=ee(l);if(typeof _=="string"&&_)return _}catch{}return l.toFixed(E)};y.append(se,$,H,B,A),L.append(y),y.tabIndex=0,y.setAttribute("role","slider"),y.setAttribute("aria-label",s),y.setAttribute("aria-valuemin",String(a)),y.setAttribute("aria-valuemax",String(i));let te=l=>Sn(l,a,d),le=c?Array.from({length:Math.max(0,Math.round((i-a)/d)-1)},(l,_)=>(_+1)*d/(i-a)*100):[];for(let l of le){let _=C("div","tw-slider-hashmark");_.style.left=l+"%",se.append(_)}let ne=()=>{let l=j((k-a)/(i-a||1)*100,0,100),_=T?` + ${T.toFixed(1)}px`:"",Q=`${l}%${_}`;$.style.width=T?`calc(${Q})`:l+"%",H.style.left=`max(5px, calc(${Q} - 9px))`;let X=te(k),N=ie(X);P.data=N,y.setAttribute("aria-valuenow",String(X)),y.setAttribute("aria-valuetext",N+F);let V=L.offsetWidth,Te=A.offsetWidth;if(V){Te&&(B.style.maxWidth=Math.max(0,V-Te-30)+"px");let We=Math.max(5,l/100*V+T-9);y.classList.toggle("is-dodge",On(B,A,We,3))}};ne();let J=null,je=1,ce=null,de=!0,qe,Le=null,De=null,rt=`width 0.34s ${rn}`,mt=`left 0.34s ${rn}, opacity 0.15s, transform 0.2s ${Fn}`,f=.2,Fe=l=>{if(!J)return k;let _=L.offsetWidth||J.width,Q=j((l-J.left)/je/_,0,1);return j(a+Q*(i-a),a,i)},q=(l,_=!0)=>{l=+l,Number.isFinite(l)&&(k=c?j(te(l),a,i):t.soft?l:j(l,a,i),ne(),_&&n(te(k)))},pe=Math.max(1,Math.round((i-a)/d)),Ye=.2,gt=.3,Xe=520,yt=27,Ve=l=>(l-a)/d,Z=0,oe=0,Y=0,ae=!1,Ce=null,G=k,$e=0,Me=()=>{Y&&cancelAnimationFrame(Y),Y=0,$e=0},Se=l=>{if(!y.isConnected){Me();return}let _=$e?Math.min((l-$e)/1e3,.05):1/60;$e=l;let Q=L.offsetWidth||J&&J.width||1,X=Ve(j(G,a,i)),N=j(Math.round(X+Ye),0,pe),V=ae?N+gt*j(X-N,-.5,.5):N;if(on&&on.matches)Z=V,oe=0;else{let Te=_,We=1/240;for(;Te>1e-4;){let He=Math.min(We,Te);Te-=He;let ze=Xe*(V-Z)-yt*oe;oe+=ze*He,Z+=oe*He,Z<0&&(Z=0,oe=0),Z>pe&&(Z=pe,oe=0)}}T=(Z-N)*d/(i-a||1)*Q,k=j(a+N*d,a,i),ne(),N!==Ce&&(Ce=N,n(te(k))),!ae&&Math.abs(oe)<.004&&Math.abs(Z-N)<.004?(Z=N,oe=0,T=0,ne(),Me(),y.classList.remove("is-active")):Y=requestAnimationFrame(Se)},st=l=>{Z=Ve(k),oe=0,ae=!0,Ce=Math.round(Ve(k)),G=Fe(l),Y||(Y=requestAnimationFrame(Se))};y.addEventListener("pointerdown",l=>{if(!A.classList.contains("is-editing")&&!(l.button!==0||ce)){l.preventDefault(),y.focus({focusVisible:!1}),De=l.pointerId;try{l.target.setPointerCapture(l.pointerId)}catch{}clearTimeout(qe),y.style.transition="",ce={x:l.clientX,y:l.clientY},de=!0,y.classList.add("is-active"),J=L.getBoundingClientRect(),je=J.width/(L.offsetWidth||J.width),c?($.style.transition="",H.style.transition="",st(l.clientX)):($.style.transition=rt,H.style.transition=mt,q(Fe(l.clientX)))}}),y.addEventListener("pointermove",l=>{if(!(!ce||l.pointerId!==De)){if(l.buttons===0){xe();return}if(de&&Math.hypot(l.clientX-ce.x,l.clientY-ce.y)>To&&(de=!1,y.classList.add("is-dragging"),c||($.style.transition="",H.style.transition="")),!de)if($n(y,J,l.clientX),c)G=Fe(l.clientX);else{let _;if(l.altKey){Le||(Le={x:l.clientX,v:k});let Q=L.offsetWidth||J.width;_=j(Le.v+(l.clientX-Le.x)/Q*(i-a)*f,a,i)}else Le=null,_=Fe(l.clientX);q(_)}}});let xe=l=>{!ce||l&&l.pointerId!==De||(c?(ae=!1,y.classList.remove("is-dragging"),Y||(Y=requestAnimationFrame(Se))):(qe=setTimeout(()=>{$.style.transition="",H.style.transition=""},360),y.classList.remove("is-active","is-dragging")),Kn(y),ce=null,Le=null,De=null)};y.addEventListener("pointerup",xe),y.addEventListener("pointercancel",xe),y.addEventListener("lostpointercapture",xe),Nn(y,ne),Mt(ne),ct(y,[[window,"resize"]],ne),y.addEventListener("keydown",l=>{if(l.target!==y||ce)return;let _=An(l,k,d,a,i,(i-a)/10||d*10);_!=null&&(l.preventDefault(),c&&(Me(),T=0,y.classList.remove("is-active")),q(j(_,a,i)))});let me;A.addEventListener("mouseenter",()=>{me=setTimeout(()=>A.classList.add("is-editable"),800)}),A.addEventListener("mouseleave",()=>{clearTimeout(me),A.classList.contains("is-editing")||A.classList.remove("is-editable")}),A.addEventListener("pointerdown",l=>{l.pointerType&&l.pointerType!=="mouse"?(A.classList.add("is-editable"),l.stopPropagation()):A.classList.contains("is-editable")&&l.stopPropagation()});let ue=()=>{if(A.classList.contains("is-editing"))return;let l=C("input","tw-slider-input");l.type="text",l.inputMode=D?"text":"decimal",Ze(l),l.value=D?ie(te(k)):te(k).toFixed(E);let _=l.value;l.style.width=_.length+1+"ch",A.classList.add("is-editing"),A.replaceWith(l),l.focus(),l.select();let Q=()=>{l.replaceWith(A),A.classList.remove("is-editing","is-editable")},X=()=>{let N=l.value,V=NaN;if(N!==_)try{V=D?D(N):Number(N.replace(g,"").trim()||NaN)}catch{}Number.isFinite(V)&&q(t.soft?V:j(V,a,i)),Q()};l.addEventListener("pointerdown",N=>N.stopPropagation()),l.addEventListener("blur",X),l.addEventListener("keydown",N=>{N.key==="Enter"?(l.removeEventListener("blur",X),y.focus(),X()):N.key==="Escape"&&(N.stopPropagation(),l.removeEventListener("blur",X),y.focus(),Q())})};return A.addEventListener("click",()=>{A.classList.contains("is-editable")&&ue()}),y.addEventListener("keydown",l=>{l.key==="Enter"&&l.target===y&&!ce&&(l.preventDefault(),ue())}),{el:L,set:l=>q(l,!1),get:()=>te(k)}}function Oo(t,n){let s=C("div","tw-row"),a=Vn([{value:"off",label:"Off"},{value:"on",label:"On"}],t.value?"on":"off",i=>n(i==="on"),t.label);return s.append(z("span","tw-row-label",t.label),a.el),{el:s,set:i=>a.set(i?"on":"off"),get:()=>a.get()==="on"}}function Po(t,n){let s=t.options||[],a=Math.min(3,Math.max(2,t.cols||(s.length<=3?s.length:s.length===4?2:3))),i=C("div","tw-radiogrid"),d=C("div","tw-radiogrid-grid");d.style.setProperty("--tw-rg-cols",a),d.setAttribute("role","radiogroup"),d.setAttribute("aria-label",t.label);let c=t.value??Ie(s[0]),b=s.map(E=>{let L=Yn("tw-radiogrid-btn",E,y=>T(y));return d.append(L),L}),k=()=>qn(b,c),T=(E,L=!0)=>{E!=null&&!b.some(y=>y._twVal===E)||(c=E,k(),L&&n(E))};return d.addEventListener("keydown",E=>{let L=Bn(b,c);if(L<0)return;let y=Xn(E.key,L,b.length,a);y<0||(E.preventDefault(),y!==L&&(T(b[y]._twVal),b[y].focus()))}),k(),i.append(z("span","tw-radiogrid-label",t.label),d),{el:i,set:E=>T(E,!1),get:()=>c}}var _o=/^(?:#[0-9a-f]{3,8}|[a-z]+|(?:oklch|oklab|rgba?|hsla?|hwb|lab|lch|color|var)\([^()]*\))$/i,Ho=cn("tw-select-chevron");function No(t,n){let s=t.value,a=t.options.map(g=>({value:Ie(g),label:_n(g),color:g&&typeof g=="object"&&typeof g.color=="string"&&_o.test(g.color.trim())?g.color.trim():""})),i=C("div","tw-select"),d=he("tw-select-trigger");d.setAttribute("aria-haspopup","listbox"),d.setAttribute("aria-expanded","false");let c=C("span","tw-select-right"),b=g=>`linear-gradient(${g}, ${g}), var(--tw-checker)`,k=g=>{let P=C("span","tw-option-swatch");return P.style.background=b(g),P},T=C("span","tw-option-swatch"),E=C("span","tw-select-value");c.append(T,E),c.insertAdjacentHTML("beforeend",Ho),d.append(z("span","tw-select-label",t.label),c);let L=C("div","tw-select-dropdown");L.setAttribute("role","listbox");let y=a.map(g=>{let P=he("tw-select-option");return P.setAttribute("role","option"),g.color&&P.append(k(g.color)),P.append(z("span","tw-option-label",g.label)),P.dataset.value=g.value,P.addEventListener("click",()=>{$(g.value),A.close()}),L.append(P),P});i.append(d,L);let se=()=>{let g=a.find(P=>P.value===s);E.textContent=g?.label??s,T.style.display=g?.color?"":"none",g?.color&&(T.style.background=b(g.color)),y.forEach(P=>{let F=P.dataset.value===String(s);P.dataset.selected=String(F),P.setAttribute("aria-selected",String(F))})},$=(g,P=!0)=>{g!=null&&!a.some(F=>F.value===g)||(s=g,se(),P&&n(g))},H="",B=0,A=St(i,d,L,{width:"match",fallbackH:200,gap:4,onOpen:()=>{H="",(y.find(g=>g.dataset.value===String(s))||y[0])?.focus()}});return d.addEventListener("keydown",g=>{!A.isOpen()&&(g.key==="ArrowDown"||g.key==="ArrowUp")&&(g.preventDefault(),A.open())}),L.addEventListener("keydown",g=>{let P=y.indexOf(document.activeElement),F=P,ee=!!H&&performance.now()-B<600;if(g.key==="ArrowDown")F=P<0?0:Math.min(y.length-1,P+1);else if(g.key==="ArrowUp")F=P<0?y.length-1:Math.max(0,P-1);else if(g.key==="Home")F=0;else if(g.key==="End")F=y.length-1;else if(g.key.length===1&&(g.key!==" "||ee)&&!g.ctrlKey&&!g.metaKey&&!g.altKey&&!g.isComposing){let D=g.key.toLowerCase();H=(ee?H:"")+D,B=performance.now();let ie=H===D.repeat(H.length/D.length),te=ie?D:H,le=ne=>a.findIndex((J,je)=>je>=ne&&String(J.label).toLowerCase().trimStart().startsWith(te));if(F=le(ie?P+1:P),F<0&&(F=le(0)),F<0&&g.key!==" ")return}else return;g.preventDefault(),y[F]?.focus()}),se(),{el:i,set:g=>$(g,!1),get:()=>s}}function Io(t){let n=z("button","tw-button",t.label);return n.addEventListener("click",()=>typeof t.action=="function"&&t.action()),Ot(n)}function Ro(t){let n=C("div","tw-row tw-buttongroup");t.label&&n.append(z("span","tw-row-label",t.label));let s=C("div","tw-buttongroup-btns"),a=Array.isArray(t.buttons)?t.buttons.map(i=>[i.label??"Button",i.action]):Object.entries(t.buttons||{});for(let[i,d]of a){let c=z("button","tw-buttongroup-btn",i);c.addEventListener("click",()=>typeof d=="function"&&d()),s.append(c)}return n.append(s),Ot(n)}var jo=()=>Ot(C("div","tw-separator"));function Do(t,n){let s=k=>k==null?"":typeof k=="object"?Pn(k):String(k),a=s(t.value),i=t.rows>0,d=C("div",i?"tw-row tw-row-multiline":"tw-row"),c=C(i?"textarea":"input",i?"tw-text tw-textarea":"tw-text");i?c.rows=t.rows:c.type="text",c.value=a,Ze(c),t.placeholder&&(c.placeholder=t.placeholder),c.addEventListener("input",()=>{a=c.value,n(a)});let b=()=>{let k=c.scrollHeight-c.clientHeight>1;c.classList.toggle("is-clip-top",k&&c.scrollTop>1),c.classList.toggle("is-clip-bottom",k&&c.scrollTop+c.clientHeight<c.scrollHeight-1)};return i&&(c.addEventListener("scroll",b),c.addEventListener("input",b),typeof ResizeObserver=="function"&&new ResizeObserver(b).observe(c)),d.append(z("span","tw-row-label",t.label),c),{el:d,set:k=>{a=s(k),c.value=a,i&&b()},get:()=>a}}function dt(t){let n=C("div","tw-folder"),s=he("tw-folder-header");s.setAttribute("aria-expanded","true"),s.append(z("span","tw-folder-title",t.label)),s.insertAdjacentHTML("beforeend",to);let a=C("div","tw-folder-body"),i=C("div","tw-controls");a.append(i),n.append(s,a);let d=c=>At(n,s,a,c);return s.addEventListener("click",()=>d(!n.classList.contains("is-collapsed"))),{el:n,body:i,setCollapsed:d}}function tt(t,n){let s=ve(t.type);if(!s)return null;try{return s(t,n)}catch(a){return console.error("[tweaks] control failed to build:",t&&t.type,a),null}}we("slider",Ao);we("checkbox",Oo);we("radiogrid",Po);we("list",No);we("button",Io);we("buttongroup",Ro);we("separator",jo);we("text",Do);we("folder",dt);var pt=(t,n,s)=>{let a=he("tw-toolbar-btn"+(t?" "+t:""),n);return a.title=s,a.setAttribute("aria-label",s),a},Dt=t=>{let n=pt("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${Un}${Qn}</span>`,"Copy values (\u21E7: changed only)");return n.addEventListener("click",async s=>{if(n.disabled)return;let[a,i]=t(s.shiftKey);if(!i)return ke("Nothing has changed");if(!await fn(a))return ke("Copy failed");Fo(n),ke(i>0?`${i} changed value${i===1?"":"s"} copied`:"Values copied")}),n},Ft=t=>{let n=pt("tw-toolbar-btn--reset",Zn,"Reset");return n.addEventListener("click",()=>{n.disabled||(pn(n),t())}),n},Fo=t=>{t.classList.add("is-copied"),clearTimeout(t._t),t._t=setTimeout(()=>t.classList.remove("is-copied"),1400)},pn=t=>{let n=t.querySelector("svg");t._spinSettle||(t._spinSettle=()=>{clearTimeout(t._t),t.classList.remove("is-spinning"),n.style.transition="none",n.style.setProperty("--tw-spin","0deg"),n.getBoundingClientRect(),n.style.transition=""},n.addEventListener("transitionend",a=>{a.propertyName==="transform"&&t.classList.contains("is-spinning")&&performance.now()-t._spinT>250&&t._spinSettle()})),t._spinT=performance.now(),n.style.setProperty("--tw-spin",`${(parseFloat(n.style.getPropertyValue("--tw-spin"))||0)-360}deg`),t.classList.add("is-spinning"),clearTimeout(t._t);let s=()=>{n.getAnimations&&n.getAnimations().length?t._t=setTimeout(s,250):t._spinSettle()};t._t=setTimeout(s,600)},U=null,Rt=0,jt=null,so=t=>{t.key==="Escape"&&ut()},ut=t=>{t&&jt&&!t.contains(jt)||(clearTimeout(Rt),document.removeEventListener("keydown",so),U&&U.classList.remove("is-open"))};function $o(t,n){U||(U=C("div","tw-tip tw-portal"),U.setAttribute("role","tooltip")),U.isConnected||document.body.appendChild(U),clearTimeout(Rt),U.textContent=n,jn(U,t);let s=U.classList.contains("is-open");U.style.visibility="hidden",U.classList.add("is-open"),In(t,U,{align:"center",prefer:"above",gap:8}),U.style.visibility="",document.addEventListener("keydown",so),jt=t,s||requestAnimationFrame(function a(){if(U.classList.contains("is-open")){if(!jt.isConnected)return ut();requestAnimationFrame(a)}})}function ro(){U&&(clearTimeout(Rt),Rt=setTimeout(ut,80))}var un=".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, .tw-spring-label, .tw-bezier-label, .tw-image-label";function nt(t,n){let s=t.querySelector(un)||t;if(s===t&&t.classList.contains("tw-separator"))return;let a=s.closest("button"),i=a?C("span","tw-hint",dn):he("tw-hint",dn),d=()=>$o(i,n);if(a){i.setAttribute("aria-hidden","true");let c=a.getAttribute("aria-description");a.setAttribute("aria-description",c?`${c}. ${n}`:n)}else i.setAttribute("aria-label",n),i.addEventListener("focus",d),i.addEventListener("blur",ro),i.addEventListener("keydown",c=>{(c.key==="Enter"||c.key===" ")&&c.stopPropagation()});i.addEventListener("pointerenter",d),i.addEventListener("pointerleave",ro),i.addEventListener("pointerdown",c=>c.stopPropagation()),i.addEventListener("click",c=>{c.preventDefault(),c.stopPropagation()}),s.appendChild(i)}async function fn(t){try{return await navigator.clipboard.writeText(t),!0}catch{}let n=document.createElement("textarea");n.value=t,n.style.position="fixed",n.style.top="-9999px",document.body.appendChild(n),n.focus(),n.select();let s=!1;try{s=document.execCommand("copy")}catch{}return document.body.removeChild(n),s}var ot=null,Ee=null,ft=null,$t=null;function Ko(t,n,s={}){let a=Object.entries(n).filter(([e])=>e!=="_last"||(console.warn('[tweaks] "_last" is reserved (the changed-key channel) \u2014 schema entry skipped'),!1)).map(([e,o])=>Re(e,o)).filter(Boolean),i={},d=[],c=new Set,b=new Set,k=new Set,T=[],E=!1,L=!1,y=[],se=new Map,$=!1,H=-1,B=e=>{if(!E){if($){console.warn("[tweaks] call ignored \u2014 the panel could not be built");return}L?e():y.push(e)}},A=null,g=function(e,o){return e==="_last"&&this===i?void 0:o===void 0?null:typeof o=="bigint"?String(o):o},P=!1,F=()=>{let e={};for(let o of d){let r=e;for(let p of o.path.slice(0,-1))r=r[p]||(r[p]={});r[o.key]=o.get()}return JSON.parse(JSON.stringify(e,g))},ee=()=>{try{return JSON.parse(JSON.stringify(i,g))}catch(e){return P||(P=!0,console.warn("[tweaks] a value parked on params can't be serialised \u2014 snapshots carry the controls' values only:",e)),F()}},D=s.persist?`tw:${s.persist===!0?t:s.persist}`:null,ie=D?`${D}:presets`:null,te=e=>{try{return JSON.parse(localStorage.getItem(e)||"null")}catch{return null}},le=(e,o)=>{try{return localStorage.setItem(e,JSON.stringify(o)),!0}catch{return!1}},ne=(e,o)=>o.reduce((r,p)=>r!=null&&Pe(r,p)?r[p]:void 0,e),J=(e,o)=>{let r=ne(e,o.path.slice(0,-1));return!r||typeof r!="object"||!Pe(r,o.key)?!1:(Reflect.deleteProperty(r,o.key),!0)},je=e=>{for(let o of d)o.persist||J(e,o);return e},ce=D?(()=>{let e=0,o=!1,r=new Map,p=()=>{e=0;let w=je(ee()),M=d.filter(u=>u.persist&&u.m.type==="image").filter(u=>!(r.get(u)===u.get()&&J(w,u)));if(le(D,w))return;let h=M.filter(u=>J(w,u));if(h.length){for(let u of h)r.set(u,u.get());le(D,w)&&!o&&(o=!0,console.warn("[tweaks] persist: the values didn't fit in storage with an image included \u2014 saved without it"))}};return T.push(()=>{e&&(clearTimeout(e),p())}),()=>{clearTimeout(e),e=setTimeout(p,150)}})():()=>{},de=(e,o=i._last)=>{(e?k:b).forEach(r=>{try{r(i,o)}catch(p){console.error("[tweaks] listener threw:",p)}}),E||ce()},qe=e=>typeof e=="function"||typeof e=="symbol"||typeof e=="bigint",Le=(e,o)=>{if(qe(o))throw new TypeError(`a ${typeof o} is not a control value`);e.set(o),e.target[e.key]=e.get()},De=e=>{Nt(e,e.raw,e.def),e.target[e.key]=e.get()},rt=!1,mt=()=>{if(typeof s.onReset=="function"&&!rt){rt=!0;try{return s.onReset()}finally{rt=!1}}for(let e of d)try{De(e)}catch(o){console.error(`[tweaks] resetting "${e.path.join(".")}" failed \u2014 control skipped:`,o)}i._last=void 0,de()},f=C("div","tw-panel");f.dataset.mode="inline";let Fe=e=>f.setAttribute("aria-label",e.trim()||"Tweaks");f.setAttribute("role","region"),Fe(t),Hn(f);let q=C("div","tw-header"),pe=he("tw-header-toggle");pe.setAttribute("aria-expanded","true");let Ye=t,gt=z("span","tw-title",Ye);pe.append(gt);let Xe=C("div","tw-toolbar"),yt=()=>{let e={};for(let o of d)_e(o.get(),o.def)&&(e[o.path.join(".")]=o.get());return JSON.parse(JSON.stringify(e,g))},Ve=Dt(e=>{if(!e)return[JSON.stringify(ee(),null,2),-1];let o=yt();return[JSON.stringify(o,null,2),Object.keys(o).length]}),Z={panel:f,entries:d,fromJSON:e=>{Ne?.flush(),Ke.fromJSON(e),Ne?.flush()},announce:ke,alive:()=>!E},oe=Ft(mt),Y=null;D&&s.presets!==!1&&(Y=pt("",no,"Presets"),Y.setAttribute("aria-haspopup","menu"),Y.setAttribute("aria-expanded","false"),Xe.append(Y));let ae=!!s.filter&&(s.toolbar!==!1||(console.warn("[tweaks] opts.filter needs the toolbar (its search button lives there) \u2014 ignored alongside toolbar:false"),!1)),Ce=ae?pt("",eo,"Filter controls"):null,G=ae?C("input","tw-search"):null;ae&&(G.type="text",G.placeholder="Filter\u2026",G.spellcheck=!1,G.setAttribute("aria-label","Filter controls"),Ze(G),Xe.append(Ce)),Xe.append(Ve,oe),q.append(pe),ae&&q.append(G),s.toolbar!==!1&&q.append(Xe);let $e=[Ve,oe,Y,Ce].filter(Boolean);for(let e of $e)e.disabled=!0;let Me=!1,Se=!1;q.addEventListener("click",e=>{Se&&(Se=!1,e.preventDefault(),e.stopPropagation())},!0),pe.addEventListener("click",()=>{At(f,pe,st,!f.classList.contains("is-collapsed")),f.dataset.mode==="floating"&&setTimeout(()=>{f.dataset.mode==="floating"&&f.isConnected&&(it(),ge())},270)});let st=C("div","tw-body"),xe=C("div","tw-controls");st.append(xe),f.append(q,st);let me=tn(s.theme);nn(f,me),f._twTheme=me;let ue=s.draggable!==!1,l=8,_=28,Q=typeof s.floating=="object"&&s.floating?s.floating:null,X=Q?.corner||"top-left",N=/right$/.test(X),V=/^bottom/.test(X);(N||V)&&(f.dataset.corner=X);let Te=()=>document.compatMode==="CSS1Compat"?document.documentElement:null,We=()=>Te()?.clientWidth||window.innerWidth,He=()=>Te()?.clientHeight||window.innerHeight,ze=()=>({maxX:Math.max(l,We()-f.offsetWidth-l),maxY:Math.max(l,He()-f.scrollHeight-1-Ge)}),Je=D?`${D}:pos`:null,bt=ue&&Je?te(Je):null,Kt=bt&&typeof bt=="object"&&(bt.corner||"top-left")===X?bt:null,mn=Kt||Q||{x:16,y:16},Bt=e=>{let o=parseFloat(e);return o>=0?o:16},qt=Bt(mn.x),Yt=Bt(mn.y),W=qt,K=Yt,Xt=!!Kt,Ge=l,Vt=()=>{let e=parseFloat(getComputedStyle(f).getPropertyValue("--tw-float-gap"));Ge=e>=0?e:s.floating&&!Xt?Bt(Q?.y):l},ge=()=>{let e=f.style;e.setProperty("--tw-float-x",W+"px"),e.setProperty("--tw-float-y",K+"px"),e.setProperty("--tw-float-max-h",`calc(100dvh - ${K+Ge}px)`)},it=()=>{Vt();let{maxX:e,maxY:o}=ze();if(ue){W=j(W,l,e),K=j(K,l,o);return}W=j(qt,Math.min(l,qt),e);let r=He()-Math.min(f.scrollHeight+1,He()/2),p=Math.min(1,r/(Yt+Ge||1));K=Math.round(Yt*p),Ge=Math.round(Ge*p)};(ue||s.floating)&&(s.floating||Kt)&&(f.dataset.mode="floating",it(),ge(),requestAnimationFrame(()=>{!E&&f.dataset.mode==="floating"&&f.isConnected&&(it(),ge())}));let ht=e=>{De(e),i._last=e.key,de()},po=(e,o)=>{let r=e.querySelector(".tw-slider-value")||e.querySelector(un)||e;r.classList.add("tw-resettable"),r.title="Double-click or hold to reset";let p=0,w=0,m=0,M=!1,h=()=>{p&&(clearTimeout(p),p=0,r.classList.remove("tw-reset-holding"))};r.addEventListener("pointerdown",u=>{u.stopPropagation(),M=!1,!(u.pointerType!=="touch"&&u.pointerType!=="pen")&&(w=u.clientX,m=u.clientY,r.classList.add("tw-reset-holding"),p=setTimeout(()=>{p=0,r.classList.remove("tw-reset-holding","is-editable"),M=!0,ht(o)},500))}),r.addEventListener("pointermove",u=>{p&&Math.abs(u.clientX-w)+Math.abs(u.clientY-m)>8&&h()}),r.addEventListener("pointerup",h),r.addEventListener("pointercancel",h),r.addEventListener("pointerleave",h),r.addEventListener("contextmenu",u=>{M&&u.preventDefault()}),r.addEventListener("click",u=>{M&&(u.preventDefault(),u.stopImmediatePropagation(),M=!1)},!0),r.addEventListener("dblclick",u=>{r===e&&u.target.closest&&u.target.closest("input, textarea")||(u.preventDefault(),u.stopPropagation(),ht(o))}),r.classList.contains("tw-slider-value")&&e.addEventListener("dblclick",u=>{let S=u.target;!S.classList||!S.classList.contains("tw-slider-input")||(u.preventDefault(),u.stopPropagation(),S.blur(),ht(o))}),e.addEventListener("keydown",u=>{!u.altKey||u.metaKey||u.ctrlKey||u.key!=="Backspace"&&u.key!=="Delete"||(u.preventDefault(),u.stopPropagation(),u.target.classList&&u.target.classList.contains("tw-slider-input")&&u.target.blur(),ht(o))})},Wt=[],zt,uo=(e,o)=>!e._hid==!o?!1:(e._hid=o,zt?zt(e,o):e.classList.toggle("tw-cond-hidden",o),!o),Jt=(e,o)=>{o.hint&&nt(e,o.hint),(o.render||o.disabled!=null)&&Wt.push({node:e,m:o})},Gt=[],Ut=[],wt=[],vt=[],fo=e=>{typeof e.destroy=="function"&&T.push(e.destroy)},Qt=(e,o,r,p=[],w=null)=>{for(let m of o){if(m.type==="tabs"){let u={};c.add(u),r[m.key]=u;let S=ve("tabs"),R=S&&S(m);if(!R)continue;vt.push({path:[...p,m.key],ctrl:R,pageKeys:m.pages.map(v=>v.key)}),m.pages.forEach((v,x)=>{let I={};c.add(I),u[v.key]=I,Qt(R.bodies[x],v.children,I,[...p,m.key,v.key])}),Jt(R.el,m),e.append(R.el);continue}if(m.type==="folder"){let u={};c.add(u),r[m.key]=u;let S=dt(m);wt.push({path:[...p,m.key],el:S.el,setCollapsed:S.setCollapsed}),at.set(S.el,{kind:"folder",path:[...p,m.key],label:m.label});let R=ae?{el:S.el,label:m.label,body:S.body}:null;R&&Ut.push(R),Qt(S.body,m.children,u,[...p,m.key],R),Jt(S.el,m),e.append(S.el);continue}let M=!It.has(m.type),h=tt(m,M?u=>{_e(r[m.key],u)&&(r[m.key]=u,i._last=m.key,de())}:()=>{});if(h){if(fo(h),M){let u=h.get();Pe(r,m.key)&&h.set(r[m.key]),r[m.key]=h.get();let S={target:r,key:m.key,set:h.set,get:h.get,raw:m.value,def:u,path:[...p,m.key],persist:m.persist!==!1,m,el:h.el};d.push(S),po(h.el,S),at.set(h.el,{kind:"row",entry:S,label:m.label})}Jt(h.el,m),ae&&m.type!=="separator"&&Gt.push({el:h.el,label:m.label,folder:w}),e.append(h.el)}}};if(ae){let e=r=>{let p=r.trim().toLowerCase(),w=!1,m=(M,h)=>{!h&&M.classList.contains("tw-filter-hidden")&&(w=!0),M.classList.toggle("tw-filter-hidden",h)};if(!p)Gt.forEach(M=>m(M.el,!1)),Ut.forEach(M=>m(M.el,!1));else{for(let M of Gt){let h=M.folder&&xt(M.folder.label,p);m(M.el,!(xt(M.label,p)||h))}for(let M of Ut.slice().reverse()){let h=[...M.body.children].some(u=>!u.classList.contains("tw-filter-hidden"));m(M.el,!(xt(M.label,p)||h))}}w&&en()},o=()=>{f.classList.remove("is-searching"),G.value="",e("")};Ce.addEventListener("click",()=>{Ce.disabled||(f.classList.toggle("is-searching")?(G.focus(),G.select()):o())}),G.addEventListener("input",()=>e(G.value)),G.addEventListener("keydown",r=>{r.key==="Escape"&&(o(),Ce.focus())})}let mo=new Set(a.map(e=>e.key)),kt=(e,o)=>{if(!(!e||typeof e!="object")){for(let r of d){let p=ne(e,r.path);if(p!==void 0)try{Le(r,p)}catch(w){console.error(`[tweaks] restoring "${r.path.join(".")}" failed \u2014 value skipped:`,w)}}for(let r of Object.keys(e))if(!mo.has(r)&&r!=="_last"&&Pe(i,r)&&!Ht(r)&&!qe(e[r]))try{i[r]=e[r]}catch(p){console.error(`[tweaks] restoring "${r}" failed \u2014 value skipped:`,p)}i._last=void 0,de(o)}},Ue=()=>{let e=ie?te(ie):null;return Object.assign(Object.create(null),e&&typeof e=="object"?e:{})},gn=e=>{let o=Ue();o[e]=ee();let r=le(ie,o);return r||console.warn(`[tweaks] preset "${e}" didn't fit in storage \u2014 not saved`),r},yn=e=>{let o=Ue();o[e]&&kt(o[e])},bn=e=>{let o=Ue();delete o[e],le(ie,o)},Et=e=>e.map(o=>String(o).replace(/~/g,"~1").replace(/\./g,"~0")).join("."),go=()=>{let e={};if(wt.length){let o={};for(let r of wt)o[Et(r.path)]=r.el.classList.contains("is-collapsed");e.folders=o}if(vt.length){let o={};for(let r of vt)o[Et(r.path)]=r.pageKeys[r.ctrl.active()]??null;e.tabs=o}return e},yo=e=>{if(!(!e||typeof e!="object")){if(e.folders)for(let o of wt){let r=e.folders[Et(o.path)];typeof r=="boolean"&&o.setCollapsed(r)}if(e.tabs)for(let o of vt){let r=o.pageKeys.indexOf(e.tabs[Et(o.path)]);r>=0&&r!==o.ctrl.active()&&o.ctrl.activate(r)}}};if(ue||s.floating){if(ue){f.dataset.draggable="true";let v=C("span","tw-grabber");v.setAttribute("aria-hidden","true"),q.prepend(v)}let e=()=>{if(f.dataset.mode==="floating")return;let v=f.getBoundingClientRect();if(W=N?We()-v.right:v.left,K=V?He()-v.bottom:v.top,f.parentNode&&(A=C("span","tw-lift-slot"),A.style.width=v.width+"px",A.style.height=v.height+"px",A.setAttribute("aria-hidden","true"),f.before(A)),Rn(f,f),document.body.appendChild(f),f.dataset.mode="floating",ge(),A&&typeof MutationObserver=="function"){let x=new MutationObserver(()=>{A&&!A.isConnected&&(x.disconnect(),A=null,f.remove())});x.observe(document.documentElement,{childList:!0,subtree:!0}),T.push(()=>x.disconnect())}},o=()=>{ot&&ot!==f&&ot.classList.remove("is-raised"),f.classList.add("is-raised"),ot=f},r=null,p=0,w=0,m=0,M=0,h=0,u=v=>{for(let[x,I]of[["pointermove",S],["pointerup",R],["pointercancel",R]])v?document.addEventListener(x,I,!0):document.removeEventListener(x,I,!0)};ue&&q.addEventListener("pointerdown",v=>{if(!(v.button!==0||r!==null||v.target.closest(".tw-toolbar, input, textarea, select"))&&(r=v.pointerId,p=v.clientX,w=v.clientY,Me=!1,u(!0),f.classList.add("is-grabbing"),f.classList.contains("is-snapping"))){clearTimeout(h);let x=getComputedStyle(f);W=parseFloat(x[N?"right":"left"])||W,K=parseFloat(x[V?"bottom":"top"])||K,f.classList.remove("is-snapping"),ge()}}),ue&&q.addEventListener("keydown",v=>{if(v.target!==pe||!v.altKey||v.metaKey||v.ctrlKey)return;let x=v.shiftKey?50:10,I=v.key==="ArrowRight"?x:v.key==="ArrowLeft"?-x:0,fe=v.key==="ArrowDown"?x:v.key==="ArrowUp"?-x:0;if(!I&&!fe)return;v.preventDefault(),v.stopPropagation();let O=f.dataset.mode!=="floating";Xt=!0,e(),o(),Vt(),O&&pe.focus({preventScroll:!0});let{maxX:re,maxY:Lt}=ze();W=j(W+(N?-I:I),l,re),K=j(K+(V?-fe:fe),l,Lt),ge(),Je&&le(Je,{x:W,y:K,corner:X})});let S=v=>{if(v.pointerId!==r)return;if(v.buttons===0){R(v);return}let x=v.clientX-p,I=v.clientY-w;if(!Me){if(Math.abs(x)+Math.abs(I)<4)return;Me=!0,Xt=!0,e(),o(),Vt(),m=W,M=K;try{q.setPointerCapture(r)}catch{}f.classList.add("is-dragging")}let{maxX:fe,maxY:O}=ze();W=j(m+(N?-x:x),l,fe),K=j(M+(V?-I:I),l,O),ge()},R=v=>{if(v.pointerId===r){try{q.releasePointerCapture(r)}catch{}if(r=null,u(!1),Se=Me,Se&&setTimeout(()=>{Se=!1},0),Me){let{maxX:x,maxY:I}=ze();W<=l+_?W=l:W>=x-_&&(W=x),K<=l+_?K=l:K>=I-_&&(K=I),clearTimeout(h),f.classList.add("is-snapping"),h=setTimeout(()=>f.classList.remove("is-snapping"),340),ge(),Je&&le(Je,{x:W,y:K,corner:X})}f.classList.remove("is-dragging","is-grabbing")}};q.addEventListener("lostpointercapture",R),T.push(()=>u(!1))}let bo=()=>{(ue||s.floating)&&(f.dataset.mode==="floating"&&(it(),ge()),T.push(ct(f,[[window,"resize"]],()=>{f.dataset.mode==="floating"&&(it(),ge())})))};if(Y){let e=C("div","tw-presets-menu"),o=C("div","tw-presets-save"),r=C("input","tw-presets-input");r.type="text",r.placeholder="Preset name\u2026",r.spellcheck=!1,r.setAttribute("aria-label","New preset name"),Ze(r);let p=z("button","tw-presets-savebtn","Save");o.append(r,p);let w=C("div","tw-presets-list");e.append(o,w);let m=()=>{let u=Ue(),S=Object.keys(u);if(w.replaceChildren(),!S.length)return w.append(z("div","tw-presets-empty","No presets yet"));for(let R of S){let v=C("div","tw-presets-row"),x=z("button","tw-presets-load",R);x.addEventListener("click",()=>{yn(R),h.close(),ke(`Loaded preset ${R}`)});let I=he("tw-presets-del",oo);I.setAttribute("aria-label",`Delete preset ${R}`),I.addEventListener("click",fe=>{fe.stopPropagation(),bn(R),m()}),v.append(x,I),w.append(v)}},M=()=>{let u=r.value.trim();if(!u){r.focus();return}if(!gn(u)){ke(`Preset ${u} not saved: storage is full`);return}r.value="",m(),ke(`Saved preset ${u}`)},h=St(Y,Y,e,{width:208,fallbackH:160,gap:6,align:"end",onOpen:()=>{m(),r.focus()}});p.addEventListener("click",M),r.addEventListener("keydown",u=>{u.key==="Enter"&&M()})}if(s.onEditStart||s.onEditEnd){let e=".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",o=!1,r=()=>{document.removeEventListener("pointerup",r,!0),document.removeEventListener("pointercancel",r,!0),o&&(o=!1,s.onEditEnd&&s.onEditEnd())},p=w=>{o||!w.target.closest(e)||(o=!0,s.onEditStart&&s.onEditStart(),document.addEventListener("pointerup",r,!0),document.addEventListener("pointercancel",r,!0))};f.addEventListener("pointerdown",p),f._twEditPointer=p,T.push(r)}let Ne=s.undo?(()=>{let o=[],r=0,p=!1,w=0,m=(O,re)=>{if(O===re)return!0;if(!O||!re||typeof O!="object"||typeof re!="object"||Array.isArray(O)!=Array.isArray(re))return!1;let Lt=Object.keys(O).length==Object.keys(re).length;for(let Qe in O)O[Qe]===re[Qe]?O[Qe]=re[Qe]:m(O[Qe],re[Qe])||(Lt=!1);return Lt},M=()=>{w=0;let O=ee();m(O,o[r])||(o=o.slice(0,r+1),o.push(O),o.length>200&&(o=o.slice(o.length-200)),r=o.length-1)},h=()=>{p||(clearTimeout(w),w=setTimeout(M,350))},u=()=>{w&&(clearTimeout(w),M())};b.add(h),k.add(h);let S=O=>{p=!0,kt(o[O]),p=!1,r=O},R=()=>{u(),r>0&&S(r-1)},v=()=>{u(),r<o.length-1&&S(r+1)},x=()=>f.matches(":hover")||f.contains(document.activeElement),I=O=>!!(O&&O.matches&&(O.matches("input, textarea")||O.isContentEditable));return{undo:R,redo:v,onKey:O=>{if(!x()||!(O.metaKey||O.ctrlKey)||I(O.target))return;let re=O.key.toLowerCase();re==="z"?(O.preventDefault(),O.shiftKey?v():R()):re==="y"&&(O.preventDefault(),v())},flush:u,arm:()=>{o=[ee()],r=0}}})():null,at=new Map,ho=e=>{for(;e&&e!==f&&f.contains(e);e=e.parentElement){let o=at.get(e);if(o)return o}},wo=e=>{for(;e&&e!==f;e=e.parentElement)if(at.get(e)?.kind==="row")return e},Zt=e=>!!(e.closest(".tw-filter-hidden, .tw-cond-hidden, .tw-tabs-page:not([data-active=true])")||e.parentElement?.closest(".is-collapsed")),ye,hn=e=>{let o=e.target;!f.contains(o)&&!o.closest?.(".tw-portal")&&Ae()},Ae=()=>{ye&&(ye[0].classList.remove("is-picked"),ye=void 0,document.removeEventListener("pointerdown",hn,!0),Ee?.[0]===f&&(Ee=null))},vo=(e,o)=>{Ee&&Ee[0]!==f&&Ee[1](),Ae(),ye=[e,o],Ee=[f,Ae],e.classList.add("is-picked"),document.addEventListener("pointerdown",hn,!0);let r=[...e.querySelectorAll('button:not(:disabled):not([tabindex="-1"]), [tabindex="0"]')].find(p=>!p.closest(".tw-hint, .tw-portal, [inert]"));r?r.focus({preventScroll:!0,focusVisible:!1}):document.activeElement?.blur?.(),document.getSelection?.()?.removeAllRanges()};T.push(Ae),f.addEventListener("pointerdown",e=>{let o=e.target;if(wo(o)||o.closest(".tw-header, .tw-folder-header, button, input, textarea, select")){ye?.[0].contains(o)||Ae();return}if(e.button!==0||e.pointerType==="touch")return Ae();let r;for(let[p,w]of at){let m=(w.kind==="folder"?p.firstElementChild:p).getBoundingClientRect();m.height&&e.clientY>=m.top&&e.clientY<m.bottom&&!Zt(p)&&(r=[p,w])}if(!r)return Ae();e.preventDefault(),vo(...r)},!0);let wn=e=>!!(e&&e.matches&&(e.matches("input, textarea, select")||e.isContentEditable)),ko=e=>{if(e.key==="Escape")return Ae();if(!(e.metaKey||e.ctrlKey)||e.altKey||e.repeat||wn(e.target))return;let o=e.key.toLowerCase();if(o!=="c"&&o!=="v")return;Ee&&!Ee[0].isConnected&&Ee[1](),ye&&Zt(ye[0])&&Ae();let r=document.activeElement,p=ye?ye[1]:Ee||!r||Zt(r)?void 0:ho(r);if(!p||o==="c"&&String(document.getSelection?.()||""))return;let w=o==="c"?JSON.stringify(p.kind==="row"?p.entry.get():ne(ee(),p.path),g,2):"",m=x=>{E||ke(x?`${p.label} copied`:"Copy failed")},M=ye?.[0],h=document.activeElement,u=!!h?.matches(":focus-visible");if(!ft){ft=C("textarea","tw-sr"),ft.tabIndex=-1,ft.setAttribute("aria-hidden","true");for(let x of["copy","paste"])document.addEventListener(x,I=>$t?.(I),!0)}let S=ft,R=()=>{$t=null,document.activeElement===S&&(S.blur(),h?.focus?.({preventScroll:!0,focusVisible:u}))},v=$t=x=>{if(x.target!==S&&wn(x.target))return;if(x.preventDefault(),R(),w)return x.clipboardData?.setData("text/plain",w),m(!!x.clipboardData);let I=x.clipboardData?.getData("text/plain")??null;import("./clip-7QEIBTKZ.js").then(fe=>fe.pasteInto(I,O=>fe.pasteScope(Z,p,O),Z,M),()=>{})};S.isConnected||document.body.appendChild(S),S.value=w,S.focus({preventScroll:!0}),S.select(),setTimeout(()=>{$t===v&&(R(),w&&fn(w).then(m))},1e3)},vn=()=>{if(!E){if(H=T.length,Qt(xe,a,i),Wt.length){let e=new Map;for(let p of d)e.has(p.key)||e.set(p.key,p);let o=p=>{let w=e.get(p);return w?w.target[w.key]:i[p]},r=()=>{let p=!1;for(let{node:w,m}of Wt)try{if(m.render&&uo(w,!m.render(o))&&(p=!0),m.disabled!=null){let M=typeof m.disabled=="function"?m.disabled(o):m.disabled;Tt(w,!!M)}}catch{}p&&en()};b.add(r),k.add(r),r(),import("./fold-UQORAAPG.js").then(p=>{zt=p.fold},()=>{})}if(D&&kt(je(te(D))),!E){Ne?.arm(),bo(),T.push(ct(f,[[document,"keydown"]],e=>{Ne?.onKey(e),ko(e)})),L=!0;for(let e of y.splice(0)){if(E)break;try{e()}catch(o){console.error("[tweaks] a call queued before ready failed:",o)}}se.clear();for(let e of $e)e.disabled=!1}}},kn=(e,o)=>{if(String(e).split(".").some(Ht))return console.warn(`[tweaks] set("${e}") ignored \u2014 reserved key`),!1;let r=String(e).split("."),p;if(r.length>1){let h=i;for(let u=0;u<r.length-1&&h;u++)h=h[r[u]],c.has(h)||(h=null);if(p=h&&d.find(u=>u.target===h&&u.key===r[r.length-1]),!p)return console.warn(`[tweaks] set("${e}") \u2014 no control at that path`),!1}else{let h=d.filter(S=>S.key===e),u=h.find(S=>S.target===i);if(!u&&h.length>1)return console.warn(`[tweaks] set("${e}") is ambiguous \u2014 ${h.length} controls share that key; use a dotted path (e.g. "${h[0].path.join(".")}")`),!1;p=u||h[0]}let w=p?p.target:i,m=p?p.key:e,M=w[m];if(p&&qe(o))return console.warn(`[tweaks] set("${e}") ignored \u2014 a ${typeof o} is not a control value`),!1;if(p)try{Le(p,o)}catch(h){return console.error(`[tweaks] set("${e}") failed \u2014 value skipped:`,h),!1}else{if(c.has(i[e]))return console.warn(`[tweaks] set("${e}") ignored \u2014 it's a folder/tabs group; set its children instead`),!1;i[e]=o}return _e(M,w[m])?(i._last=m,!0):!1},Ke={el:f,params:i,on(e){return E?()=>{}:(b.add(e),()=>b.delete(e))},set(e,o,r){let p=String(e),w=r?.silent;B(()=>{kn(p,o)&&de(w)})},setMany(e,o){if(e==null||typeof e!="object")return;let r=Object.entries(e),p=o?.silent;B(()=>{let w=!1;for(let[m,M]of r)try{kn(m,M)&&(w=!0)}catch(h){console.error(`[tweaks] setMany("${m}") failed \u2014 key skipped:`,h)}w&&de(p)})},reset(){L&&!E&&pn(oe),B(mt)},toJSON(){return E?{values:{},ui:{}}:{values:ee(),ui:go()}},changes(){return E?{}:yt()},fromJSON(e,o){if(!e||typeof e!="object")return;let r=o?.silent,p=e.values&&typeof e.values=="object"?{...e.values}:e.values,w=e.ui&&typeof e.ui=="object"?{...e.ui}:e.ui;B(()=>{p&&kt(p,r),yo(w)})},setName(e){E||(Ye=String(e),gt.textContent=Ye,Fe(Ye))},setTheme(e){if(!E){if(me)for(let o in me)f.style.removeProperty(o);me=tn(e),f._twTheme=me,nn(f,me),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:e=>{if(E||$||!ie||!e)return!1;L||se.set(String(e),"save");let o=!0;return B(()=>{o=gn(e)}),o},loadPreset:e=>{let o=se.get(String(e));return E||$||o==="delete"||!(o==="save"||Ue()[e])?!1:(B(()=>yn(e)),!0)},deletePreset:e=>{ie&&(L||se.set(String(e),"delete"),B(()=>bn(e)))},presets:()=>E?[]:Object.keys(Ue()),undo:()=>{Ne&&B(Ne.undo)},redo:()=>{Ne&&B(Ne.redo)},destroy(){if(!E){E=!0,Dn(f),ut(f);for(let e of T.splice(0))try{e()}catch{}b.clear(),A&&(A.remove(),A=null),ot===f&&(ot=null),f.dataset.twDestroyed="",f.remove()}}},En=et(a);if(En){let e=o=>{if($=!0,y.length=0,H>=0)for(let r of T.splice(H))try{r()}catch{}for(let r of xe.children)r.dataset.twDestroyed="";throw b.clear(),d.length=0,xe.replaceChildren(),E||console.warn(`[tweaks] "${t}": the panel could not be built \u2014 ${H>=0?"the build threw":"its lazy controls failed to load"}; the API is inert`),o};Ke.ready=f.ready=En.then(vn).then(()=>Ke,e),Ke.ready.catch(()=>{})}else vn(),Ke.ready=f.ready=Promise.resolve(Ke);return Ke}var io={metaFor:Re,restoreDefault:Nt,hasOwn:Pe,valueChanged:_e,SPRING_KEYS:_t,ensureForMetas:et,LAZY_IMPORT:Be,createFolder:dt,createControl:tt,makeCopyBtn:Dt,makeResetBtn:Ft,addHintMarker:nt};function ao(t=document){let n=sn();return n?n?n(t,io):Promise.resolve():import("./markup-ZSBV67SW.js").then(()=>sn()(t,io),s=>console.error("[tweaks] markup chunk failed to load:",s))}if(typeof document<"u"){let t=()=>{document.querySelector('[data-tw], .tw-panel[data-mode="inline"] > .tw-controls')&&ao(document)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}var lo=t=>C("div",`${t} tw-standalone tw-portal`),co=(t,n,s)=>{let a=et(t);if(!a)return n(),Promise.resolve(s);let i=a.then(n).then(()=>s);return i.catch(()=>{}),i};function Bo(t,n,s={}){let a=s.key??"value",i=Re(a,n);if(!i||i.type==="folder"||i.type==="tabs")throw new TypeError(`[tweaks] mountControl: "${a}" is not a single-control schema value`);s.label!=null&&(i.label=String(s.label));let d=!It.has(i.type),c=lo("tw-control");t.append(c);let b=null,k=!1,T=i.value,E,L=!1,y=H=>{_e(T,H)&&(T=H,s.onChange&&s.onChange(H,a))},se=()=>{if(k||(b=tt(i,d?y:()=>{}),!b))return;i.hint&&nt(b.el,i.hint);let H=()=>{};try{i.render&&!i.render(H)&&b.el.classList.add("tw-cond-hidden")}catch{}try{(typeof i.disabled=="function"?i.disabled(H):i.disabled)&&Tt(b.el,!0)}catch{}c.append(b.el),d&&(T=b.get(),L&&(b.set(E),y(b.get())))},$={el:c,set:H=>{k||!d||(b?(b.set(H),y(b.get())):(E=H,L=!0))},get:()=>d?b?b.get():L?E:i.value:void 0,destroy:()=>{k=!0,b&&typeof b.destroy=="function"&&b.destroy(),c.dataset.twDestroyed="",c.remove()},ready:null};return $.ready=co([i],se,$),$}function qo(t={}){let n=lo("tw-color-picker"),s=null,a=!1,i=t.value,d,c=!1,b=null,k=L=>{_e(i,L)&&(i=L,t.onChange&&t.onChange(L))},T=()=>{if(a)return;let L=ve("colorpicker");L&&(s=L({value:t.value,mode:t.mode},k),i=s.get(),n.append(s.el),b&&s.setMode(b),c&&(s.set(d),k(s.get())),Mt(s.reflow))},E={el:n,set:L=>{a||(s?(s.set(L),k(s.get())):(d=L,c=!0))},get:()=>s?s.get():c?d:t.value,mode:()=>s?s.mode():b||t.mode||"oklch",setMode:L=>{s?s.setMode(L):b=L},reflow:()=>{s&&s.reflow()},destroy:()=>{a=!0,n.remove()},ready:null};return E.ready=co([{type:"color"}],T,E),E}export{qo as createColorPicker,ao as enhance,Lo as gradientCss,Eo as gradientStops,Bo as mountControl,Ko as tweaks};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{L as n}from"./chunk-
|
|
1
|
+
import{L as n}from"./chunk-JWHF6V72.js";var r=(t,i)=>{let a=getComputedStyle(t),m=t._fold?.playState=="running"&&{marginBottom:a.marginBottom,clipPath:a.clipPath,opacity:a.opacity};t._fold?.cancel(),t.classList.remove("tw-cond-hidden");let o=!n.matches&&t.animate&&t.offsetHeight;if(t.classList.toggle("tw-cond-hidden",i),o)try{let s=o+6+parseFloat(a.marginTop),c=o+"px",e={height:c,marginBottom:-s+"px",clipPath:`inset(0 0 ${s}px)`,opacity:0},l={height:c,clipPath:"inset(0)"};(t._fold=t.animate([m||(i?l:e),i?e:l],{duration:350,easing:a.getPropertyValue("--tw-ease-fold").trim()})).onfinish=()=>t.classList.toggle("tw-cond-hidden",i),t.classList.remove("tw-cond-hidden")}catch{}};export{r as fold};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as W,b as F,c as Z,d as tt,e as I,f as et,g as ot}from"./chunk-
|
|
1
|
+
import{a as W,b as F,c as Z,d as tt,e as I,f as et,g as ot}from"./chunk-NB4K6RS2.js";import{e as J,i as Q}from"./chunk-QPSYEOZS.js";import{J as z,Y as U,_ as V,a as X,b as $,c as q,e as Y,g as h,u as y,v as j}from"./chunk-JWHF6V72.js";var mt=U('<path d="M12 5v14m7-7H5"/>',"",2.5),lt=(o,S)=>o&&!Array.isArray(o)&&typeof o[S]=="string"?o[S]:null,nt=o=>lt(o,"interpolation"),rt=o=>lt(o,"easing"),st=[["linear","Linear"],["ease","Ease"],["ease-in","Ease in"],["ease-out","Ease out"],["ease-in-out","Ease in-out"]];function at(o){let S=[{color:"oklch(0.72 0.19 25)",pos:0},{color:"oklch(0.72 0.16 280)",pos:1}],l=Array.isArray(o)?o:o&&Array.isArray(o.stops)?o.stops:null,a=(p,O)=>tt(p)?{color:String(p).trim(),pos:h(+O||0,0,1)}:null,d=(l||[]).map(p=>Array.isArray(p)?a(p[0],p[1]):p&&typeof p=="object"?a(p.color,p.pos):null).filter(Boolean);return d.length>=2?d:S}function ht(o,S){o.value??(o.value=o.stops);let l=at(o.value),a=l[0],d=$(rt(o.value)),{root:p,trigger:O,right:it}=Q("tw-gradient",o.label??"Gradient"),k=y("span","tw-trigger-chip tw-gradient-preview");k.setAttribute("role","img"),it.append(k);let v=y("div","tw-color-pop tw-gradient-pop"),N=y("div","tw-gradient-bar-row"),B=y("div","tw-gradient-bar"),T=y("div","tw-gradient-grad"),b=y("div","tw-gradient-rail");B.append(T,b);let A=j("tw-gradient-add",mt);A.title="Add a stop after the selected one",A.setAttribute("aria-label","Add a colour stop after the selected one"),N.append(B,A);let C=()=>[...l].sort((t,e)=>t.pos-e.pos),pt=()=>W(u.mode()),D=()=>({stops:C().map(t=>({color:t.color,pos:+t.pos.toFixed(4)})),interpolation:pt(),easing:d}),f=()=>{let t=Y(D());T.style.background=t,k.style.background=`${t}, ${Z}`},G=()=>{k.setAttribute("aria-label",`${l.length} stop${l.length===1?"":"s"}`)},w=()=>S(D()),H=t=>[...b.children].find(e=>e._stop===t),u=et({value:a.color,mode:F(nt(o.value)||"oklch"),onMode:()=>{f(),w()}},t=>{a.color=t,H(a)?.style.setProperty("--stop",t),f(),w()}),g=y("select","tw-color-mode tw-gradient-ease");g.setAttribute("aria-label","Easing between stops"),g.title="How the ramp blends between stops";for(let[t,e]of st){let s=document.createElement("option");s.value=t,s.textContent=e,g.append(s)}let P=()=>{let t=g.querySelector("option[data-custom]");st.some(([e])=>e===d)?t?.remove():(t||(t=document.createElement("option"),t.dataset.custom="",t.textContent="Custom",g.append(t)),t.value=d),g.value=d};g.addEventListener("change",()=>{d=g.value,P(),f(),w()}),u.el.querySelector(".tw-color-mode").after(g),P(),v.append(N,u.el),p.append(v);let M=t=>t.setAttribute("aria-label",`Colour stop at ${Math.round(t._stop.pos*100)}%${t._stop===a?", selected":""}`),ct=()=>{for(let t of b.children)t.dataset.sel=String(t._stop===a),M(t)},R=()=>{b.replaceChildren();for(let t of l){let e=j("tw-gradient-stop");e._stop=t,e.style.left=t.pos*100+"%",e.style.setProperty("--stop",t.color),e.dataset.sel=String(t===a),M(e),e.addEventListener("focus",()=>L(t,!1));let s=!1;J(e,{onDown:n=>{n.preventDefault(),n.stopPropagation(),e.focus({focusVisible:!1}),L(t,!1),s=!1},onMove:n=>{let r=b.getBoundingClientRect();t.pos=h((n.clientX-r.left)/(r.width||1),0,1),e.style.left=t.pos*100+"%",M(e),f(),w(),s=l.length>2&&(n.clientY<r.top-24||n.clientY>r.bottom+24),e.dataset.removing=String(s)},onEnd:()=>{s?_(t):e.dataset.removing="false"}}),e.addEventListener("dblclick",n=>{n.preventDefault(),_(t)}),e.addEventListener("keydown",n=>{let r=n.key==="ArrowLeft"?-1:n.key==="ArrowRight"?1:0;r&&(n.preventDefault(),t.pos=h(t.pos+r*(n.shiftKey?.1:.01),0,1),e.style.left=t.pos*100+"%",M(e),f(),w())}),b.append(e)}},L=(t,e)=>{t!==a&&(u.set(t.color),a=t),e?R():ct()},dt=t=>{let e=b.getBoundingClientRect();return h((t-e.left)/(e.width||1),0,1)},ft=t=>{let e=C(),s=e[0],n=e[e.length-1];for(let m=0;m<e.length-1;m++)if(t>=e[m].pos&&t<=e[m+1].pos){s=e[m],n=e[m+1];break}let r=q(X(d),n.pos>s.pos?h((t-s.pos)/(n.pos-s.pos),0,1):0),i=I(s.color),c=I(n.color),x=m=>m[1]<1e-4,E=c[2]-i[2];E>180?E-=360:E<-180&&(E+=360),(x(i)||x(c))&&(E=0);let ut=(((x(i)&&!x(c)?c[2]:i[2])+E*r)%360+360)%360;return ot(i[0]+(c[0]-i[0])*r,i[1]+(c[1]-i[1])*r,ut,i[3]+(c[3]-i[3])*r)},_=t=>{if(l.length<=2)return;let e=l.indexOf(t);if(e<0)return;l.splice(e,1);let s=a===t?l[Math.max(0,e-1)]:a;f(),L(s,!0),G(),w(),H(a)?.focus()},K=t=>{let e={color:ft(t),pos:h(t,0,1)};return l.push(e),f(),L(e,!0),G(),w(),e},gt=()=>{let t=C(),e=t.indexOf(a);e<0&&(e=0);let s=e<t.length-1?(t[e].pos+t[e+1].pos)/2:e>0?(t[e-1].pos+t[e].pos)/2:h(t[e].pos+.1,0,1);K(s)};return A.addEventListener("click",t=>{t.stopPropagation(),gt()}),B.addEventListener("dblclick",t=>{t.target.closest(".tw-gradient-stop")||(t.preventDefault(),K(dt(t.clientX)))}),v.tabIndex=-1,v.addEventListener("keydown",t=>{(t.key==="Delete"||t.key==="Backspace")&&!t.altKey&&!/^(input|textarea|select)$/i.test(t.target.tagName)&&l.length>2&&(t.preventDefault(),_(a))}),z(p,O,v,{width:260,fallbackH:392,gap:6,onOpen:u.reflow,onReflow:u.reflow,initialFocus:()=>H(a)}),R(),f(),G(),{el:p,set:t=>{let e=nt(t);e&&u.setMode(F(e));let s=rt(t);s!==null&&(d=$(s),P());let n=at(t).sort((r,i)=>r.pos-i.pos);if(n.length===l.length)C().forEach((r,i)=>{r.color=n[i].color,r.pos=n[i].pos;let c=H(r);c&&(c.style.left=r.pos*100+"%",c.style.setProperty("--stop",r.color))});else{let r=a.pos;l=n,a=l.reduce((i,c)=>Math.abs(c.pos-r)<Math.abs(i.pos-r)?c:i,l[0]),R()}f(),G(),u.set(a.color)},get:()=>D()}}V("gradient",ht);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-QPSYEOZS.js";import"./chunk-JWHF6V72.js";export{c as accentColor,g as boxFrac,b as cssVar,e as dragGesture,h as fitCanvas,f as grabSurface,j as numField,d as selectAllOnFocus,l as springCurve,k as springSpan,a as svgEl,i as triggerRow};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as K}from"./chunk-QPSYEOZS.js";import{V as O,W as U,Y as k,_ as j,r as N,u,v as x,w as L}from"./chunk-JWHF6V72.js";var X=e=>String(e).replace(/[\\"]/g,"\\$&").replace(/[\x00-\x1f\x7f]/g,m=>"\\"+m.charCodeAt(0).toString(16)+" "),E=e=>`url("${X(e)}")`,S=1<<20,z=e=>e>=S?`${Math.round(e/S*10)/10} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`,F=e=>{if(/^data:/i.test(e))return"";let m=e.split(/[?#]/)[0].split("/").pop().replace(/\.\w+$/,"");try{return decodeURIComponent(m)}catch{return m}},Z=k('<path d="M18 6 6 18m12 0L6 6"/>',"",2.2),q=k('<path d="M12 15V4m-4.5 4.5L12 4l4.5 4.5M4 15v3a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-3"/>');function G(e,m){let r=typeof e.value=="string"?e.value:"",$=new Set,h=(Array.isArray(e.options)?e.options:[]).map(t=>({value:N(t),label:t&&typeof t=="object"&&t.label!=null?String(t.label):""})).filter(t=>typeof t.value=="string"&&!!t.value&&!$.has(t.value)&&!!$.add(t.value)),H=e.upload!==!1||!h.length,I=+e.maxSize>0?+e.maxSize:10*S,g=u("input","tw-image-input");g.type="file",g.accept="image/*";let w=u("span","tw-image-note"),b=u("span","tw-image-live");b.setAttribute("role","status");let B,C=t=>{w.textContent=b.textContent=t,clearTimeout(B),B=setTimeout(()=>{w.textContent=b.textContent=""},2600)},y,A=0,f=(t,a=!0)=>{A++,r=t,y(),a&&m(r)},R=t=>{if(!t)return;if(!t.type.startsWith("image/"))return C("Not an image");if(t.size>I)return C(`${z(t.size)}, max ${z(I)}`);let a=new FileReader,d=++A;a.onload=()=>{A===d&&f(String(a.result))},a.onerror=()=>C("Couldn't read the file"),a.readAsDataURL(t)},T=(t,a)=>{let d=()=>!!t.closest(".is-disabled");t.addEventListener("dragover",o=>{d()||(o.preventDefault(),a.dataset.over="true")}),t.addEventListener("dragleave",()=>{a.dataset.over="false"}),t.addEventListener("drop",o=>{a.dataset.over="false",!d()&&(o.preventDefault(),R(o.dataTransfer?.files[0]))})};g.addEventListener("change",()=>{R(g.files?.[0]),g.value=""});let p;if(h.length){p=u("div","tw-image tw-image-gallery");let t=H?x("tw-button tw-image-upload",q):null,a=x("tw-image-remove",Z);a.setAttribute("aria-label",`${e.label}: remove the image`);let d=u("div","tw-image-head");d.append(L("span","tw-image-label",e.label),a);let o=u("div","tw-image-grid");o.setAttribute("role","radiogroup"),o.setAttribute("aria-label",e.label);let M=h.length,D=Math.min(4,Math.max(1,e.cols|0||(M<=3?Math.max(2,M):M===4?2:3)));o.style.setProperty("--tw-img-cols",String(D));let P=(n,l)=>{let s=O("tw-image-tile",n,i=>f(i));return s.textContent="",s.setAttribute("aria-label",l),s.style.backgroundImage=E(n),s},v=h.map((n,l)=>{let s=P(n.value,n.label||F(n.value)||`Image ${l+1}`);return o.append(s),s}),c=x("tw-image-tile tw-image-custom");c.setAttribute("role","radio");let V=()=>c.parentNode?[...v,c]:v;y=()=>{let n=c.matches(":focus");r&&!v.some(i=>i._twVal===r)?(c._twVal=r,c.style.backgroundImage=E(r),c.setAttribute("aria-label",F(r)||"Uploaded image"),c.parentNode||o.append(c)):c.remove();let l=V(),s=Math.max(0,l.findIndex(i=>i._twVal===r));l.forEach((i,W)=>{let _=!!r&&i._twVal===r;i.dataset.active=String(_),i.setAttribute("aria-checked",String(_)),i.tabIndex=W===s?0:-1}),n&&!c.parentNode&&l[s].focus(),a.hidden=!r},o.addEventListener("keydown",n=>{let l=V(),s=l.indexOf(n.target);if(s<0)return;if((n.key==="Delete"||n.key==="Backspace")&&!n.altKey&&!n.metaKey&&!n.ctrlKey){n.preventDefault(),f(""),v[0].focus();return}let i=U(n.key,s,l.length,D);i<0||(n.preventDefault(),i!==s&&(f(l[i]._twVal),l[i].focus()))}),a.addEventListener("click",()=>{f(""),(t||v[0]).focus()}),p.append(d,o,b),t&&(t.setAttribute("aria-label",`${e.label}: upload an image`),t.append(w,L("span","tw-image-text","Upload image")),t.addEventListener("click",()=>g.click()),p.append(t,g),T(p,p))}else{let t=K("tw-image",e.label);p=t.root,t.trigger.removeAttribute("aria-expanded"),t.trigger.setAttribute("aria-label",`${e.label}: choose an image`);let a=u("span","tw-image-text"),d=u("span","tw-trigger-chip tw-image-thumb");t.right.append(d,w,a),p.append(g,b),y=()=>{d.dataset.set=r?"true":"false",d.style.backgroundImage=r?E(r):"",a.textContent=r?"Replace":"Drop or choose"},t.trigger.addEventListener("click",()=>g.click()),T(t.trigger,t.trigger)}return y(),{el:p,set:t=>{t!=null&&typeof t!="string"||f(t||"",!1)},get:()=>r}}j("image",G);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as tt}from"./chunk-QPSYEOZS.js";import{B as U,P as Y,Q as Z,_,g as c,j as K,k as T,l as q,n as G,o as A,p as P,q as C,u as f,w as V,y as J,z as Q}from"./chunk-JWHF6V72.js";function st(r,et){let E=r.label,w=+(r.value&&r.value[0]),x=+(r.value&&r.value[1]),N=Number.isFinite(w)?w:0,k=Number.isFinite(x)?x:1,[R,S]=[C(N),C(k)],W=t=>t!=null&&t!==""&&Number.isFinite(+t),{min:n,max:l,step:h}=G(W(r.min)?r.min:Math.min(R[0],S[0]),W(r.max)?r.max:Math.max(R[1],S[1]),r.step,N,k);[n,l]=q(n,l,h);let $=K(h),v=t=>T(t,n,h),i=c(v(Number.isFinite(w)?w:n),n,l),s=c(v(Number.isFinite(x)?x:l),n,l);if(i>s){let t=i;i=s,s=t}let p=f("div","tw-slider-wrap"),a=f("div","tw-slider tw-interval"),F=f("div","tw-slider-fill"),d=f("div","tw-slider-handle"),u=f("div","tw-slider-handle"),L=V("span","tw-slider-label",E),y=f("span","tw-slider-value");a.append(F,d,u,L,y),p.append(a),[["minimum",d],["maximum",u]].forEach(([t,e])=>{e.tabIndex=0,e.setAttribute("role","slider"),e.setAttribute("aria-label",`${E} ${t}`),e.setAttribute("aria-valuemin",String(n)),e.setAttribute("aria-valuemax",String(l))});let M=t=>(t-n)/(l-n||1)*100,D=t=>`clamp(5px, calc(${t}% - 1.5px), calc(100% - 9px))`,m=()=>{let t=M(i),e=M(s);F.style.left=t+"%",F.style.width=Math.max(0,e-t)+"%",d.style.left=D(t),u.style.left=D(e),y.textContent=`${i.toFixed($)} \u2013 ${s.toFixed($)}`,d.setAttribute("aria-valuenow",String(i)),u.setAttribute("aria-valuenow",String(s));let o=p.offsetWidth;if(o){L.style.maxWidth=Math.max(0,o-y.offsetWidth-12-8-10)+"px";let I=it=>P(L,y,it/100*o-1.5,3);d.classList.toggle("is-dodge",I(M(i))),u.classList.toggle("is-dodge",I(M(s)))}};m();let O=()=>et([i,s]),X=t=>{i=c(Math.min(v(t),s),n,l),m()},j=t=>{s=c(Math.max(v(t),i),n,l),m()},b=null,H=1,g=null,nt=t=>{let e=p.offsetWidth||b.width,o=c((t-b.left)/H/e,0,1);return c(n+o*(l-n),n,l)},z=t=>{let e=nt(t);g||(g=e<i?"lo":e>s?"hi":Math.abs(e-i)<=Math.abs(e-s)?"lo":"hi"),g==="lo"?X(e):j(e),O()};tt(a,{onDown:t=>{t.preventDefault(),b=p.getBoundingClientRect(),H=b.width/(p.offsetWidth||b.width),a.style.transition="",a.classList.add("is-active","is-dragging"),g=null,z(t.clientX),(g==="lo"?d:u).focus({focusVisible:!1})},onMove:t=>{z(t.clientX),Y(a,b,t.clientX)},onEnd:()=>{Z(a),b=null,g=null,a.classList.remove("is-active","is-dragging")}}),U(a,m),J(m),Q(a,[[window,"resize"],[window,"tw-reflow"]],m);let B=t=>e=>{let o=t==="lo"?A(e,i,h,n,s):A(e,s,h,i,l);o!=null&&(e.preventDefault(),t==="lo"?X(o):j(o),O())};return d.addEventListener("keydown",B("lo")),u.addEventListener("keydown",B("hi")),{el:p,set:t=>{if(Array.isArray(t)){let e=+t[0],o=+t[1];if(!Number.isFinite(e)||!Number.isFinite(o))return;i=c(v(Math.min(e,o)),n,l),s=c(v(Math.max(e,o)),n,l),m()}},get:()=>[i,s]}}_("interval",st);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as O,S as L,aa as T,f as C,u as k,v as H}from"./chunk-JWHF6V72.js";var j=[],F=e=>({...Object.fromEntries(j.map(t=>[t,a(e[t])])),mode:e.mode}),A={slider:e=>({value:a(e.value),min:a(e.min),max:a(e.max),step:a(e.step),soft:v(e.soft),unit:e.unit}),checkbox:e=>e.options?{type:"radiogrid",options:d(e.options),value:e.value,cols:a(e.cols)}:{value:e.checked==="true"},radiogrid:e=>({options:d(e.options),value:e.value,cols:a(e.cols)}),list:e=>({options:d(e.options),value:e.value}),image:e=>({value:e.value,options:e.options?d(e.options):void 0,cols:a(e.cols),maxSize:a(e.maxSize),upload:e.upload==="false"?!1:void 0}),buttongroup:e=>({buttons:d(e.buttons).map(t=>({label:t}))}),separator:()=>({}),number:e=>({value:a(e.value),min:a(e.min),max:a(e.max),step:a(e.step),unit:e.unit}),text:e=>({value:e.value??"",placeholder:e.placeholder,rows:a(e.rows)}),fpsgraph:e=>({label:e.label??"FPS"}),interval:e=>({value:e.value?e.value.split(",").map(Number):void 0,min:a(e.min),max:a(e.max),step:a(e.step)}),sides:e=>({value:e.value??e,corners:v(e.corners),unit:e.unit,step:a(e.step),min:a(e.min),max:a(e.max)}),shadow:e=>({value:e.value??{...e,inset:v(e.inset)}}),spring:F,motion:e=>({...F(e),curve:e.curve&&e.curve.includes(",")?e.curve.split(",").map(Number):e.curve,duration:a(e.duration)}),cubicbezier:e=>({value:e.value?e.value.split(",").map(Number):void 0}),point:e=>{let t=(e.value||"").split(",").map(o=>parseFloat(o));return{components:d(e.components||"X,Y").map((o,i)=>({key:o.toLowerCase(),label:o,value:isNaN(t[i])?0:t[i],step:a(e.step),min:a(e.min),max:a(e.max)})),pad:v(e.pad),invertY:e.invertY==="true"}},plot:e=>({expr:e.expr,xMin:a(e.xmin),xMax:a(e.xmax),yMin:a(e.ymin),yMax:a(e.ymax),samples:a(e.samples),editable:e.editable!=="false"})},a=e=>{if(e==null||e==="")return;let t=+e;return Number.isFinite(t)?t:void 0},v=e=>e==="true"||e==="",d=e=>(e||"").split(",").map(t=>t.trim()).filter(Boolean),Y=(e,t)=>{let o=t.dataset,i=o.tw,y=o.label??C(o.key||i),b=e.hasOwn(A,i)?A[i](o,t,y):e.LAZY_IMPORT[i]||O(i)?{...o}:null;return b?e.metaFor("v",{type:i,label:y,...b}):null},I=(e,t)=>{e.dataset.value=t==null?"":Array.isArray(t)?t.join(","):typeof t=="object"?Object.values(t).join(","):String(t)},K=(e,t,o)=>{I(e,o),e.dispatchEvent(new CustomEvent("tw:change",{bubbles:!0,detail:{key:t,value:o}}))},x=(e,t)=>[...typeof e.matches=="function"&&e.matches(t)?[e]:[],...e.querySelectorAll(t)];async function q(e,t){let{createFolder:o,createControl:i,makeCopyBtn:y,makeResetBtn:b,addHintMarker:R,restoreDefault:_,hasOwn:B,valueChanged:D,ensureForMetas:N}=t;j=t.SPRING_KEYS,x(e,'.tw-panel[data-mode="inline"]:not([data-tw-panel-bound])').forEach(n=>{let r=n.querySelector(":scope > .tw-header"),c=n.querySelector(":scope > .tw-controls");if(!r||!c)return;n.setAttribute("data-tw-panel-bound","");let p=k("div","tw-body");n.insertBefore(p,c),p.append(c);let l=r.querySelector(".tw-header-toggle"),s=r.querySelector(".tw-title");if(!l&&s&&(l=H("tw-header-toggle"),s.replaceWith(l),l.append(s)),!!l&&(l.setAttribute("aria-expanded","true"),l.addEventListener("click",()=>L(n,l,p,!n.classList.contains("is-collapsed"))),!r.querySelector(".tw-toolbar"))){let f=()=>[...n.querySelectorAll("[data-tw]")].map(u=>u._tw).filter(u=>u&&u.ctrl.get()!==void 0),g=()=>{let u=Object.create(null);for(let h of f()){let M=h.key,P=2;for(;B(u,M);)M=`${h.key}-${P++}`;u[M]=h.ctrl.get()}return JSON.stringify(u,null,2)},m=()=>{for(let u of f())u.reset()},S=k("div","tw-toolbar");S.append(y(()=>[g(),-1]),b(m)),r.append(S)}}),x(e,'[data-tw="folder"]:not([data-tw-bound])').forEach(n=>{n.setAttribute("data-tw-bound","");let r=o({label:n.dataset.label||"Folder"});[...n.children].forEach(c=>r.body.append(c)),n.append(r.el)});let w=x(e,"[data-tw]:not([data-tw-bound])").map(n=>({host:n,meta:Y(t,n)})).filter(n=>n.meta);w.forEach(({host:n})=>n.setAttribute("data-tw-bound",""));let E=N(w.map(n=>n.meta));E&&await E.catch(()=>{});for(let{host:n,meta:r}of w){let c=n.dataset.key||r.label,p,l=m=>{D(p,m)&&(p=m,K(n,c,m))},s=i(r,l);if(!s)continue;n.closest(".tw-panel, .tw-portal")||n.classList.add("tw-portal"),n.append(s.el),n.dataset.hint&&R(s.el,n.dataset.hint);let f=s.get();p=f;let g={...s,set:m=>{s.set(m),l(s.get())}};n._tw={ctrl:g,raw:r.value,def:f,key:c,host:n,reset:()=>{_(s,r.value,f),l(s.get())}}}}T(q);export{A as DATA_VALUE};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as T,h as D}from"./chunk-
|
|
1
|
+
import{c as T,h as D}from"./chunk-QPSYEOZS.js";import{Z as y,_ as j,g as q,s as L,u as R,w as S}from"./chunk-JWHF6V72.js";var G=(n,o,u,m,p,k,N)=>{let r=p.length;n.clearRect(0,0,u,m),n.strokeStyle=T(o),n.lineWidth=1.5,n.lineJoin="round",n.beginPath();let s=!1;for(let l=0;l<r;l++){let a=p[(k+l)%r];if(Number.isNaN(a))continue;let w=l/(r-1)*u,b=m-q(N(a),0,1)*m;s?n.lineTo(w,b):(n.moveTo(w,b),s=!0)}n.stroke()},H=n=>{for(let o of["resize","tw-reflow"])window.addEventListener(o,n);return()=>{for(let o of["resize","tw-reflow"])window.removeEventListener(o,n)}};function J(n,o=!1){let u=typeof n.get=="function"?n.get:()=>n.value,m=Math.max(30,Number.isFinite(+n.interval)?+n.interval:200),p;try{p=u()}catch{}let k=typeof p=="number",N=n.view==="graph"||k&&n.graph!==!1&&n.view!=="text"&&n.rows==null,r=R("div","tw-fps tw-monitor"),s=S("span","tw-fps-val","\u2014");r.append(S("span","tw-fps-label",n.label??"Monitor"),s);let l=0,a=0,w=()=>{},b=!1,W=Number.isFinite(+n.decimals)?Math.min(20,Math.max(0,Math.floor(+n.decimals))):2,d=e=>e==null?"\u2014":typeof e=="number"?Number.isInteger(e)||!Number.isFinite(e)?String(e):e.toFixed(W):typeof e=="object"?L(e):String(e),h=()=>{l&&clearInterval(l),l=0,a&&cancelAnimationFrame(a),a=0,w()},v=e=>{let i=f=>{if(o&&(a=requestAnimationFrame(i)),!r.isConnected){b&&h();return}b=!0;let t;try{t=u(f)}catch{return}e(t)};o?a=requestAnimationFrame(i):l=setInterval(i,m)};if(!N&&n.rows){s.remove();let e=Math.max(1,Math.floor(+n.rows)||1),i=R("pre","tw-monitor-buffer");i.style.setProperty("--tw-monitor-rows",e),r.append(i);let f=[];return v(t=>{for(f.push(d(t));f.length>e;)f.shift();i.textContent=f.join(`
|
|
2
2
|
`)}),y(r,h)}if(!N)return v(e=>{s.textContent=d(e)}),y(r,h);let C=document.createElement("canvas");C.className="tw-fps-canvas",r.append(C);let F=C.getContext("2d");if(!F)return v(e=>{s.textContent=d(e)}),y(r,h);let A=80,I=new Array(A).fill(NaN),x=0,M=0,E=0,z=()=>{[M,E]=D(C,F,2)};w=H(z);let B=()=>{if(M||z(),!M)return;let e=n.min,i=n.max;if(e==null||i==null){let t=1/0,c=-1/0;for(let g of I)Number.isFinite(g)&&(g<t&&(t=g),g>c&&(c=g));t===1/0?(t=0,c=1):t===c&&(t-=.5,c+=.5);let P=(c-t)*.1;e==null&&(e=t-P),i==null&&(i=c+P)}let f=i-e||1;G(F,r,M,E,I,x,t=>(t-e)/f)};return v(e=>{if(typeof e!="number"||!Number.isFinite(e)){s.textContent=d(e);return}I[x]=e,x=(x+1)%A,s.textContent=d(e),B()}),y(r,h)}var K=()=>{let n=0;return o=>{if(!(o>0))return;let u=n?1e3/(o-n):void 0;return n=o,u}},O=n=>J({...n,label:n.label??"FPS",get:K(),view:"graph",min:0,max:120,decimals:0},!0);j("fpsgraph",O);j("monitor",n=>J(n));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as U,i as re,j as ae,l as X}from"./chunk-
|
|
1
|
+
import{a as U,i as re,j as ae,l as X}from"./chunk-QPSYEOZS.js";import{$ as L,J as ne,L as ie,X as se,_ as oe,g as b,h as _,u as a,w as te}from"./chunk-JWHF6V72.js";var q={ease:[.25,.1,.25,1],linear:[0,0,1,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]},ye=300,F=1e4,he=16,ue=.9,r=e=>typeof e=="number"?Number.isFinite(e):typeof e=="string"&&e.trim()!==""&&Number.isFinite(+e),B=e=>{if(typeof e=="string")return Object.prototype.hasOwnProperty.call(q,e)?q[e].slice():null;if(Array.isArray(e)&&e.length===4){let o=e.map(Number);return o.every(Number.isFinite)?o:null}return null},ce=e=>r(e.stiffness)||r(e.damping)||r(e.mass)||r(e.visualDuration)||r(e.bounce),pe=e=>{let o={mode:"time"};if(r(e.stiffness)){let w=+e.stiffness,M=r(e.mass)?+e.mass:1,g=Math.sqrt(w/M);o.visualDuration=2*Math.PI/g,r(e.damping)&&(o.bounce=b(1-+e.damping/(2*Math.sqrt(w*M)),0,ue))}return r(e.visualDuration)&&(o.visualDuration=+e.visualDuration),r(e.bounce)&&(o.bounce=b(+e.bounce,0,ue)),o},le=(e,o)=>e.mode==="spring"||e.mode==="easing"?e.mode:ce(e)?"spring":B(e.curve)?"easing":o;function ve(e,o){let w=L("cubicbezier"),M=L("spring");if(!w||!M)throw new Error("[tweaks] motion: the bezier and spring controls are not loaded");let g=_(e.value)?e.value:{},i=le(g,"easing"),l=B(g.curve)??q.ease.slice(),y=r(g.duration)?b(+g.duration,0,F):ye,{root:I,trigger:me,right:de}=re("tw-motion",e.label??"Motion"),H=a("span","tw-trigger-chip tw-motion-chip"),E=U("svg");E.setAttribute("viewBox","0 0 100 100"),E.setAttribute("preserveAspectRatio","none");let V=U("path");E.append(V),H.append(E);let W=a("span","tw-trigger-value");de.append(H,W);let R=a("div","tw-color-pop tw-motion-pop"),G=a("div","tw-motion-body");R.append(G);let C=w({...e,type:"cubicbezier",label:"",value:l.slice()},t=>{l=t,v(),S()});l=C.get();let p=M({...e,type:"spring",label:"",value:pe(g)},()=>{v(),S()}),D=ae({label:"Duration",value:y,step:10,min:0,max:F,unit:"ms"},t=>{y=b(t,0,F),v(),S()});y=D.get();let $=a("div","tw-motion-pane"),j=a("div","tw-motion-pane"),K=a("div","tw-fields");K.append(D.el),$.append(C.el,K),j.append(p.el);let c=a("div","tw-motion-stage"),h=a("div","tw-motion-box");c.append(h);let O=se([{value:"easing",label:"Easing"},{value:"spring",label:"Spring"}],i,t=>{(t==="easing"||t==="spring")&&t!==i&&(i=t,z(),v(),S())},"Motion type"),J=a("div","tw-row");J.append(te("span","tw-row-label","Type"),O.el),G.append(J,$,j,c),I.append(R);let P=()=>{if(i==="easing")return{mode:i,curve:l.slice(),duration:y,easing:`cubic-bezier(${l.join(", ")})`};let t=p.get(),n=7/Math.max(t.damping/(2*t.mass),.5),u=b(Math.round(n*40),48,240);return{mode:i,...t,duration:Math.round(n*1e3),easing:`linear(${X(t.stiffness,t.damping,t.mass,u,n).map(s=>+s.toFixed(3)).join(", ")})`}},S=()=>o(P()),x=!1,A=null,k=t=>{if(t)x=!x;else if(A&&A.playState==="running")return;let n=P(),u=Math.max(0,c.clientWidth-h.offsetWidth-2*he),s=`translateX(${x?0:u}px)`,m=`translateX(${x?u:0}px)`;if(ie.matches||typeof h.animate!="function"){h.style.transform=m;return}A?.cancel();let d=[{transform:s},{transform:m}];try{A=h.animate(d,{duration:n.duration,easing:n.easing,fill:"forwards"})}catch{A=h.animate(d,{duration:n.duration,fill:"forwards"})}};c.addEventListener("click",()=>k(!0)),c.tabIndex=0,c.setAttribute("role","button"),c.setAttribute("aria-label","Replay the motion"),c.addEventListener("keydown",t=>{(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),k(!0))});let ge=()=>{let t;if(i==="easing"){let[s,m,d,be]=l;t=[];for(let N=0;N<=24;N++){let f=N/24,T=1-f,Y=3*T*T*f,Z=3*T*f*f,ee=f*f*f;t.push([Y*s+Z*d+ee,Y*m+Z*be+ee])}}else{let s=p.get();t=X(s.stiffness,s.damping,s.mass,32).map((m,d)=>[d/31,m])}let n=Math.max(1,...t.map(s=>s[1])),u=Math.min(0,...t.map(s=>s[1]));return t.map(([s,m],d)=>`${d?"L":"M"}${(10+s*80).toFixed(1)},${(90-(m-u)/(n-u)*80).toFixed(1)}`).join(" ")},Q=()=>{i==="easing"?C.set(l.slice()):p.set(p.get())},z=()=>{$.style.display=i==="easing"?"":"none",j.style.display=i==="spring"?"":"none",Q()},fe=()=>i==="easing"?`Easing \xB7 ${y} ms`:`Spring \xB7 ${Math.round((p.get().visualDuration??0)*1e3)} ms`,v=()=>{V.setAttribute("d",ge()),W.textContent=fe(),k(!1)};return ne(I,me,R,{width:240,fallbackH:380,gap:6,onOpen:()=>{O.set(i),Q(),k(!0)},initialFocus:()=>O.el.querySelector('[tabindex="0"]')}),z(),v(),{el:I,set:t=>{let n=typeof t=="string"?{curve:t}:Array.isArray(t)&&t.length===4?{curve:t}:_(t)?t:null;if(!n)return;i=le(n,i);let u=B(n.curve);u&&(C.set(u.slice()),l=C.get()),i==="easing"&&r(n.duration)&&(D.set(b(+n.duration,0,F)),y=D.get()),ce(n)&&p.set(pe(n)),O.set(i),z(),v()},get:P,destroy:()=>p.destroy&&p.destroy()}}oe("motion",ve);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as k}from"./chunk-
|
|
1
|
+
import{a as k}from"./chunk-QPSYEOZS.js";import{C as D,_ as G,g as $,u as N,w as S,y as Y,z as Z}from"./chunk-JWHF6V72.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:(r,f)=>r%f,clamp:(r,f,o)=>Math.min(Math.max(r,f),o)}),U=Object.assign(Object.create(null),{pi:Math.PI,e:Math.E,tau:Math.PI*2,phi:(1+Math.sqrt(5))/2});function q(r){if(typeof r!="string"||!r.trim()||r.length>512)return null;let f=r,o=[],p=/\d*\.?\d+(?:[eE][+-]?\d+)?/y,d=/[A-Za-z_]\w*/y,a=0;for(;a<f.length;){let t=f[a];if(t===" "||t===" "||t===`
|
|
2
2
|
`){a++;continue}if(t>="0"&&t<="9"||t==="."&&f[a+1]>="0"&&f[a+1]<="9"){p.lastIndex=a;let n=p.exec(f);if(!n||n.index!==a)return null;o.push({t:"num",v:parseFloat(n[0])}),a=p.lastIndex;continue}if(t>="A"&&t<="Z"||t>="a"&&t<="z"||t==="_"){d.lastIndex=a;let n=d.exec(f);o.push({t:"id",v:n[0]}),a=d.lastIndex;continue}if(t==="*"&&f[a+1]==="*"){o.push({t:"op",v:"^"}),a+=2;continue}if("+-*/%^".includes(t)){o.push({t:"op",v:t}),a++;continue}if(t==="("){o.push({t:"lp"}),a++;continue}if(t===")"){o.push({t:"rp"}),a++;continue}if(t===","){o.push({t:"comma"}),a++;continue}return null}if(!o.length)return null;let m=0,l=()=>o[m],s=t=>{let n=o[m];return!n||t&&n.t!==t?null:(m++,n)},x=()=>{let t=b();if(!t)return null;for(;l()&&l().t==="op"&&(l().v==="+"||l().v==="-");){let n=s("op").v,i=b();if(!i)return null;let c=t;t=n==="+"?e=>c(e)+i(e):e=>c(e)-i(e)}return t},b=()=>{let t=M();if(!t)return null;for(;l()&&l().t==="op"&&(l().v==="*"||l().v==="/"||l().v==="%");){let n=s("op").v,i=M();if(!i)return null;let c=t;t=n==="*"?e=>c(e)*i(e):n==="/"?e=>c(e)/i(e):e=>c(e)%i(e)}return t},M=()=>{if(l()&&l().t==="op"&&(l().v==="-"||l().v==="+")){let t=s("op").v,n=M();return n?t==="-"?i=>-n(i):n:null}return g()},g=()=>{let t=F();if(!t)return null;if(l()&&l().t==="op"&&l().v==="^"){s("op");let n=M();return n?i=>Math.pow(t(i),n(i)):null}return t},F=()=>{let t=l();if(!t)return null;if(t.t==="num")return s("num"),()=>t.v;if(t.t==="lp"){s("lp");let n=x();return!n||!s("rp")?null:n}if(t.t==="id"){s("id");let n=t.v.toLowerCase();if(l()&&l().t==="lp"){let i=W[n];if(!i)return null;s("lp");let c=[];if(l()&&l().t!=="rp")do{let e=x();if(!e)return null;c.push(e)}while(s("comma"));return s("rp")?e=>i(...c.map(L=>L(e))):null}if(n==="x")return i=>i;if(n in U){let i=U[n];return()=>i}return null}return null},w=x();return w&&m===o.length?w:null}function X(r,f){let o=Number(r.xMin??r.min),p=Number(r.xMax??r.max);if(Number.isFinite(o)||(o=-10),Number.isFinite(p)||(p=10),p<o){let e=o;o=p,p=e}p===o&&(o-=1,p+=1);let d=Math.max(2,Math.min(4096,r.samples|0||256)),a=Number.isFinite(r.yMin)&&Number.isFinite(r.yMax)&&+r.yMax>+r.yMin,m=typeof r.fn=="function"?r.fn:null,l=r.editable!==!1&&!m,s=r.expr!=null?String(r.expr):m?"":"sin(x)",x=m||q(s),b=N("div","tw-plot");r.label&&b.append(S("div","tw-plot-label",r.label));let M=N("div","tw-plot-graph"),g=k("svg","tw-plot-svg");g.setAttribute("preserveAspectRatio","none");let F=k("line","tw-plot-axis"),w=k("line","tw-plot-axis"),t=k("path","tw-plot-curve");g.append(F,w,t),M.append(g),b.append(M);let n=null;if(l){let e=N("div","tw-plot-field");n=N("input","tw-plot-input"),n.type="text",n.value=s,n.spellcheck=!1,n.autocapitalize="off",D(n),n.setAttribute("aria-label",`${r.label||"Plot"} \u2014 expression in x`),n.setAttribute("aria-invalid","false"),e.append(S("span","tw-plot-fx","y ="),n),b.append(e)}let i=6,c=()=>{let e=typeof x=="function";b.classList.toggle("is-invalid",l&&!e),n&&n.setAttribute("aria-invalid",l&&!e?"true":"false");let L=M.getBoundingClientRect(),C=L.width,I=L.height;if(C<2)return;g.setAttribute("viewBox",`0 0 ${C} ${I}`);let z=[],v=1/0,E=-1/0;if(e)for(let u=0;u<d;u++){let y=o+(p-o)*(u/(d-1)),h;try{h=x(y)}catch{h=NaN}z.push(h),Number.isFinite(h)&&(h<v&&(v=h),h>E&&(E=h))}let A=r.yMin,O=r.yMax;if(!a)if(!Number.isFinite(v)||v===E){let u=Number.isFinite(v)?v:0;A=u-1,O=u+1}else{let u=(E-v)*.12;A=v-u,O=E+u}let P=u=>i+(u-o)/(p-o)*(C-2*i),j=u=>I-i-(u-A)/(O-A)*(I-2*i),B=(u,y,h,T,V,H)=>{u.style.display=H?"":"none",H&&(u.setAttribute("x1",y),u.setAttribute("y1",h),u.setAttribute("x2",T),u.setAttribute("y2",V))};B(F,i,j(0),C-i,j(0),A<=0&&O>=0),B(w,P(0),i,P(0),I-i,o<=0&&p>=0);let _="",R=!1;if(e)for(let u=0;u<d;u++){let y=z[u];if(!Number.isFinite(y)){R=!1;continue}let h=P(o+(p-o)*(u/(d-1))),T=$(j(y),-1e4,1e4);_+=(R?"L":"M")+h.toFixed(1)+","+T.toFixed(1)+" ",R=!0}t.setAttribute("d",_)};return l&&n.addEventListener("input",()=>{s=n.value,x=q(s),c(),f(s)}),Y(c),Z(b,[[window,"resize"],[window,"tw-reflow"]],c),{el:b,get:()=>s,set:e=>{e!=null&&(s=String(e),n&&(n.value=s),m||(x=q(s)),c())}}}G("plot",X);export{q as compileExpr};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as L,f as K,g as U,i as q,j as z}from"./chunk-QPSYEOZS.js";import{J as X,_ as G,ca as I,g as $,j as N,q as V,u as a}from"./chunk-JWHF6V72.js";function et(l,J){let o=l.components,{root:D,trigger:Q,right:W}=q("tw-point",l.label??"Point"),Y=a("span","tw-trigger-value"),j=a("div","tw-trigger-chip tw-point-preview"),y=a("div","tw-point-preview-dot");j.append(y),W.append(j,Y);let T=a("div","tw-color-pop tw-point-pop"),M=a("div","tw-point-body");T.append(M);let H=l.pad!==!1&&o.length>=2,Z=t=>{let e=V(Math.abs(Number.isFinite(+t.value)?+t.value:0))[1],r=t.min??-e,v=t.max??e,f=10**Math.floor(Math.log10((v-r)/200));return{lo:r,hi:v,step:t.step??(f>0&&Number.isFinite(f)?f:1)}},w=o.map(Z),x=w[0],h=w[1],b=x?.lo??-1,k=x?.hi??1,g=h?.lo??-1,A=h?.hi??1,E=(t,e,r)=>r>e?$((t-e)/(r-e),0,1):.5,s=null,C=null,m=null;if(H){s=a("div","tw-pad"),C=a("div","tw-pad-thumb");let t=L("svg","tw-pad-line");t.setAttribute("viewBox","0 0 100 100"),t.setAttribute("preserveAspectRatio","none"),m=L("line"),t.append(m);let e=E(0,g,A);m.setAttribute("x1",E(0,b,k)*100),m.setAttribute("y1",(l.invertY?e:1-e)*100),s.append(a("div","tw-pad-axis tw-pad-axis-x"),a("div","tw-pad-axis tw-pad-axis-y"),t,C),M.append(s)}let R=a("div","tw-fields");M.append(R);let c=()=>{B(),_()},F=()=>J(S()),i=o.map((t,e)=>{let r=z({label:t.label,value:t.value??0,step:w[e].step,min:t.min,max:t.max},()=>{c(),F()});return R.append(r.el),r}),S=()=>Object.fromEntries(o.map((t,e)=>[t.key,i[e].get()])),O=(t,e)=>(+t).toFixed(N(e)),_=()=>{Y.textContent=i.map((t,e)=>O(t.get(),w[e].step)).join(", ")},B=()=>{y.style.left="50%",y.style.top="50%"};if(H){let e=n=>`calc(${(n*100).toFixed(2)}% + ${((.5-n)*5).toFixed(2)}px)`;B=()=>{let n=E(i[0].get(),b,k),d=E(i[1].get(),g,A),p=l.invertY?d:1-d,u=n*100,P=p*100;C.style.left=u+"%",C.style.top=P+"%",y.style.left=e(n),y.style.top=e(p),m.setAttribute("x2",u),m.setAttribute("y2",P),s.setAttribute("aria-description",`${o[0].label??o[0].key} ${O(i[0].get(),x.step)}, ${o[1].label??o[1].key} ${O(i[1].get(),h.step)}`)},K(s,n=>{let[d,p]=U(n,s),u=l.invertY?p:1-p;i[0].set(b+d*(k-b)),i[1].set(g+u*(A-g)),c(),F()}),s.tabIndex=0,s.setAttribute("role","group"),s.setAttribute("aria-label",`${l.label??"Point"} pad: ${o[0].label??o[0].key} and ${o[1].label??o[1].key}`);let v=0,f=()=>{clearTimeout(v),v=setTimeout(()=>{s.isConnected&&I(s.getAttribute("aria-description")||"")},250)};s.addEventListener("keydown",n=>{if(n.key==="Home"){n.preventDefault(),o.forEach((P,tt)=>i[tt].set(P.value??0)),c(),F(),f();return}let d=n.key==="ArrowRight"?1:n.key==="ArrowLeft"?-1:0,p=n.key==="ArrowUp"?1:n.key==="ArrowDown"?-1:0;if(!d&&!p)return;n.preventDefault();let u=n.shiftKey?10:1;d&&i[0].set($(i[0].get()+d*x.step*u,b,k)),p&&i[1].set($(i[1].get()+(l.invertY?-p:p)*h.step*u,g,A)),c(),F(),f()})}return D.append(T),X(D,Q,T,{width:216,fallbackH:240,gap:6,onOpen:c}),c(),{el:D,set:t=>{t&&o.forEach((e,r)=>{t[e.key]!=null&&i[r].set(t[e.key])}),c()},get:S}}G("point",et);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as m,f as Q}from"./chunk-
|
|
1
|
+
import{d as m,f as Q}from"./chunk-NB4K6RS2.js";import{i as J,j as K}from"./chunk-QPSYEOZS.js";import{J as Y,X as q,Y as z,_ as G,h as D,u as l,v as X,w as M}from"./chunk-JWHF6V72.js";var b={x:0,y:8,blur:24,spread:0,color:"rgb(0 0 0 / 0.18)"},w=(n,c)=>n!=null&&n!==""&&Number.isFinite(+n)?+n:c,i=n=>String(+n.toFixed(1)),oe=/#[0-9a-f]{3,8}\b|(?:oklch|oklab|rgba?|hsla?|hwb|lab|lch|color)\([^()]*\)/i,re=/^(-?\d*\.?\d+)(px)?$/,se=n=>{let c=oe.exec(n);if(!c||!m(c[0]))return null;let h=(n.slice(0,c.index)+" "+n.slice(c.index+c[0].length)).trim().split(/\s+/).filter(Boolean),p=h.includes("inset"),r=h.filter(o=>o!=="inset");if(r.length<2||r.length>4||!r.every(o=>re.test(o)))return null;let s=r.map(o=>+o.replace(/px$/,""));return{inset:p,x:s[0],y:s[1],blur:s[2]??0,spread:s[3]??0,color:c[0]}},le=z('<path d="M18 9s-4.4 6-6 6-6-6-6-6"/>',"tw-shadow-chevron",2.5);function ie(n,c){let h=e=>typeof e=="string"?se(e):D(e)?e:null,p=h(n.value??n)||{},r=!!p.inset,s=w(p.x,b.x),o=w(p.y,b.y),u=Math.max(0,w(p.blur,b.blur)),d=w(p.spread,b.spread),{root:y,trigger:U,right:W}=J("tw-shadow",n.label??"Shadow"),F=l("span","tw-trigger-chip tw-shadow-chip"),j=l("span","tw-shadow-chip-tile");F.append(j);let N=l("span","tw-trigger-value");W.append(F,N);let S=l("div","tw-color-pop tw-shadow-pop"),A=l("div","tw-shadow-stage"),I=l("div","tw-shadow-card");A.append(I);let L=q([{value:"outer",label:"Outer"},{value:"inner",label:"Inner"}],r?"inner":"outer",e=>{e==="inner"!==r&&(r=e==="inner",g(),E())},"Shadow position"),T=l("div","tw-row");T.append(M("span","tw-row-label","Position"),L.el);let B=l("div","tw-fields tw-shadow-fields"),x=(e,t,ee,te)=>{let P=K({label:e,value:t(),step:1,min:te,unit:"px"},ne=>{ee(ne),g(),E()});return B.append(P.el),P},v=x("X",()=>s,e=>{s=e}),$=x("Y",()=>o,e=>{o=e}),C=x("Blur",()=>u,e=>{u=Math.max(0,e)},0),R=x("Spread",()=>d,e=>{d=e});s=v.get(),o=$.get(),u=C.get(),d=R.get();let f=X("tw-trigger tw-shadow-color");f.setAttribute("aria-expanded","false");let H=l("span","tw-trigger-chip tw-color-swatch"),V=l("span","tw-trigger-value"),O=l("span","tw-trigger-right");O.append(H,V),O.insertAdjacentHTML("beforeend",le),f.append(M("span","tw-trigger-label","Colour"),O);let a=Q({value:typeof p.color=="string"&&m(p.color)?p.color:b.color,onMode:()=>g()},()=>{g(),E()});a.el.hidden=!0,f.addEventListener("click",()=>{let e=a.el.hidden;a.el.hidden=!e,f.setAttribute("aria-expanded",String(e)),Z.reflow()}),S.append(A,T,B,f,a.el),y.append(S);let k=e=>`${r?"inset ":""}${i(s*e)}px ${i(o*e)}px ${i(u*e)}px ${i(d*e)}px ${a.get()}`,_=()=>({inset:r,x:+i(s),y:+i(o),blur:+i(u),spread:+i(d),color:a.get(),css:k(1)}),E=()=>c(_()),g=()=>{I.style.boxShadow=k(1),j.style.boxShadow=k(.3),N.textContent=`${r?"in ":""}${i(s)} ${i(o)} ${i(u)}${d?" "+i(d):""}`,H.style.background=a.swatchCss(),V.textContent=a.valueText()},Z=Y(y,U,S,{width:260,fallbackH:300,gap:6,onOpen:a.reflow,onReflow:a.reflow});return g(),{el:y,set:e=>{let t=h(e);t&&(t.inset!=null&&(r=!!t.inset,L.set(r?"inner":"outer")),t.x!=null&&(v.set(w(t.x,s)),s=v.get()),t.y!=null&&($.set(w(t.y,o)),o=$.get()),t.blur!=null&&(C.set(w(t.blur,u)),u=C.get()),t.spread!=null&&(R.set(w(t.spread,d)),d=R.get()),typeof t.color=="string"&&m(t.color)&&a.set(t.color),g())},get:_}}G("shadow",ie);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as C}from"./chunk-QPSYEOZS.js";import{Y as h,_ as I,u as d,v as j,w as E}from"./chunk-JWHF6V72.js";var H=h('<path d="M3 9V7a4 4 0 0 1 4-4h2M15 3h2a4 4 0 0 1 4 4v2M21 15v2a4 4 0 0 1-4 4h-2M9 21H7a4 4 0 0 1-4-4v-2"/>'),q=h('<path d="M3 13V8a5 5 0 0 1 5-5h5"/>',"",1.5,16),z=h('<path d="M3 10V8a5 5 0 0 1 5-5a5 5 0 0 1 5 5v2"/>',"",1.5,16),D=/^(-?\d*\.?\d+)([a-z%]*)$/i,O=t=>t!=null&&t!==""&&Number.isFinite(+t)?+t:null,R=t=>String(+t.toFixed(2)),V=t=>t.length===1?[t[0],t[0],t[0],t[0]]:t.length===2?[t[0],t[1],t[0],t[1]]:t.length===3?[t[0],t[1],t[2],t[1]]:t.slice(0,4),A=(t,g)=>{if(typeof t=="number")return Number.isFinite(t)?[t,t,t,t]:null;if(typeof t=="string"){let i=t.trim().split(/\s+/).map(l=>{let a=D.exec(l);return a?+a[1]:NaN});return i.length>=1&&i.length<=4&&i.every(Number.isFinite)?V(i):null}if(Array.isArray(t)){let i=t.map(O);return i.length>=1&&i.length<=4&&i.every(l=>l!==null)?V(i):null}if(t&&typeof t=="object"){let i=t,l=g.slice(),a=!1;return["top","right","bottom","left"].forEach((e,r)=>{let u=O(i[e]);u!==null&&(l[r]=u,a=!0)}),a?l:null}return null};function G(t,g){let i=typeof t.unit=="string"&&t.unit.trim()?t.unit.trim():"px",l=!!t.corners,a={step:t.step??1,min:t.min??(l?0:void 0),max:t.max,unit:i},e=A(t.value??t,[0,0,0,0])||[0,0,0,0],r=e.every(n=>n===e[0]),u=d("div","tw-sides"),b=C({label:t.label,value:e[0],row:!0,...a},n=>{e=[n,n,n,n],m(),N()}),M=l?"Independent corners":"Independent sides",c=j("tw-sides-link",H);c.setAttribute("aria-label",M),c.title=M,c.addEventListener("click",()=>v());let k=d("div","tw-sides-multi"),w=d("div","tw-sides-head"),x=d("span","tw-sides-sum"),L=document.createTextNode("");x.append(L,E("span","tw-sides-unit",i)),w.append(E("span","tw-row-label",t.label),x);let F=d("div","tw-fields"),y=l?["Top-left","Top-right","Bottom-right","Bottom-left"]:["Top","Right","Bottom","Left"],p=y.map((n,s)=>C({label:n,value:e[s],...a},o=>{e[s]=o,m(),N()}));p.forEach((n,s)=>{let o=n.el.querySelector(".tw-field-label");o.title=y[s],o.classList.add("tw-sides-glyph"),o.dataset.at=y[s].toLowerCase(),o.innerHTML=l?q:z,F.append(n.el)}),k.append(w,F),u.append(b.el,k),e=p.map(n=>n.get());let _=()=>{let[n,s,o,f]=e.map(R),B=T=>T==="0"?"0":T+i;return(n===o&&s===f?n===s?[n]:[n,s]:s===f?[n,s,o]:[n,s,o,f]).map(B).join(" ")},S=()=>({top:e[0],right:e[1],bottom:e[2],left:e[3],css:_()}),N=()=>g(S()),m=()=>{u.classList.toggle("is-linked",r),c.setAttribute("aria-pressed",String(!r)),(r?b.el:w).append(c),b.set(e[0]),p.forEach((n,s)=>n.set(e[s])),L.data=e.map(R).join(" ")},v=()=>{r=!r,r&&(e=[e[0],e[0],e[0],e[0]]),m(),N(),c.focus()};return m(),{el:u,set:n=>{let s=A(n,e);s&&(p.forEach((o,f)=>o.set(s[f])),e=p.map(o=>o.get()),r=e.every(o=>o===e[0]),m())},get:S}}I("sides",G);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as $,c as ee,e as ne,j as k,l as se}from"./chunk-
|
|
1
|
+
import{b as $,c as ee,e as ne,j as k,l as se}from"./chunk-QPSYEOZS.js";import{X as Q,_ as Z,g as D,u as M,w as z,y as J,z as H}from"./chunk-JWHF6V72.js";function ue(l,te){let x=(e,n,s)=>Number.isFinite(+e)?Math.max(n,+e):s,P=e=>({stiffness:x(e.stiffness,1,300),damping:x(e.damping,.5,26),mass:x(e.mass,.1,1)}),a=e=>Number.isFinite(+e),_=e=>D(a(e)?+e:.5,.1,1),C=e=>D(a(e)?+e:.2,0,1),j=e=>+e.toPrecision(10),ie=e=>{let n=(2*Math.PI/e.visualDuration)**2,s=1-e.bounce,o=1;return{stiffness:j(n),damping:j(2*s*Math.sqrt(n*o)),mass:o}},N=e=>e==="time"||e==="physics"?e:null,d={stiffness:l.stiffness,damping:l.damping,mass:l.mass,visualDuration:l.visualDuration,bounce:l.bounce,...l.value||{}},r=N(d.mode)??N(l.mode)??(a(d.visualDuration)||a(d.bounce)?"time":"physics"),i={visualDuration:_(d.visualDuration),bounce:C(d.bounce)},u=P({stiffness:d.stiffness,damping:d.damping,mass:d.mass}),y=M("div","tw-spring"),p=M("div","tw-spring-viz"),f=document.createElement("canvas");f.className="tw-spring-canvas",p.append(f);let F=M("div","tw-fields"),U=M("div","tw-fields"),t=f.getContext("2d"),A=()=>P(r==="time"?ie(i):u),c=()=>{let e=p.getBoundingClientRect(),n=Math.max(1,Math.round(e.width)),s=Math.max(1,Math.round(e.height));if(n<2)return;let o=window.devicePixelRatio||1;f.width=n*o,f.height=s*o,t.setTransform(o,0,0,o,0,0),t.clearRect(0,0,n,s);let X=A(),O=se(X.stiffness,X.damping,X.mass,Math.max(160,Math.round(n*o))),re=Math.max(1.05,...O),b=8,G=w=>b+w/(O.length-1)*(n-2*b),T=w=>s-b-w/re*(s-2*b);t.strokeStyle=$(y,"--tw-surface-active")||"rgba(255,255,255,0.1)",t.lineWidth=1,t.beginPath(),t.moveTo(b,T(1)),t.lineTo(n-b,T(1)),t.stroke(),t.strokeStyle=ee(y),t.lineWidth=1.5,t.lineJoin=t.lineCap="round",t.beginPath(),O.forEach((w,E)=>E?t.lineTo(G(E),T(w)):t.moveTo(G(E),T(w))),t.stroke()},B=()=>r==="time"?{...A(),visualDuration:i.visualDuration,bounce:i.bounce}:A(),v=()=>te(B()),m={};[["stiffness","Stiffness",1],["damping","Damping",.5],["mass","Mass",.1]].forEach(([e,n,s])=>{m[e]=k({label:n,value:u[e],step:s,min:s},o=>{u[e]=o,c(),v()}),F.append(m[e].el)});let S=k({label:"Duration",value:i.visualDuration*1e3,step:50,min:.1*1e3,max:1*1e3,unit:"ms"},e=>{i.visualDuration=_(e/1e3),c(),v()}),R=k({label:"Bounce",value:i.bounce*100,step:5,min:0,max:100,unit:"%"},e=>{i.bounce=C(e/100),c(),v()});U.append(S.el,R.el);let I=()=>{U.style.display=r==="time"?"":"none",F.style.display=r==="physics"?"":"none"},V=Q([{value:"time",label:"Time"},{value:"physics",label:"Physics"}],r,e=>{e!=="time"&&e!=="physics"||e===r||(r=e,I(),c(),v())},"Spring mode"),L=M("div","tw-row");L.append(z("span","tw-row-label","Mode"),V.el),l.label&&y.append(z("div","tw-spring-label",l.label)),y.append(p,L,F,U);let K=1,oe=500,W=1,ae=40,g=null,Y=e=>{if(!g)return;let n=D((e.clientX-g.left)/g.width,0,1),s=D((e.clientY-g.top)/g.height,0,1);r==="time"?(S.set((.1+n*(1-.1))*1e3),i.visualDuration=S.get()/1e3,R.set((1-s)*100),i.bounce=R.get()/100):(m.stiffness.set(K+n*(oe-K)),u.stiffness=m.stiffness.get(),m.damping.set(W+s*(ae-W)),u.damping=m.damping.get()),c(),v()};ne(p,{onDown:e=>{e.preventDefault(),g=p.getBoundingClientRect(),p.classList.add("is-dragging"),Y(e)},onMove:Y,onEnd:()=>{g=null,p.classList.remove("is-dragging")}}),I(),J(c),H(f,[[window,"resize"],[window,"tw-reflow"],[matchMedia("(prefers-color-scheme: dark)"),"change"],[window,"tw-retheme"]],c);let h=null,q=!1;return typeof MutationObserver=="function"&&(h=new MutationObserver(()=>{f.isConnected?(q=!0,c()):q&&(h.disconnect(),h=null)}),h.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:["data-tw-scheme"]})),{el:y,destroy:()=>{h&&(h.disconnect(),h=null)},set:e=>{if(!e||typeof e!="object")return;let n=N(e.mode),s=a(e.visualDuration)||a(e.bounce),o=a(e.stiffness)||a(e.damping)||a(e.mass);!s&&!o&&!n||(r=n??(s?"time":"physics"),s&&(a(e.visualDuration)&&(i.visualDuration=_(e.visualDuration)),a(e.bounce)&&(i.bounce=C(e.bounce))),o&&(u=P({...u,...e})),V.set(r),S.set(i.visualDuration*1e3),R.set(i.bounce*100),m.stiffness.set(u.stiffness),m.damping.set(u.damping),m.mass.set(u.mass),I(),c())},get:()=>B()}}Z("spring",ue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{O as f,
|
|
1
|
+
import{O as f,W as g,_ as w,u as s,w as v,y as m}from"./chunk-JWHF6V72.js";var A=0;function x(E){let o=`tw-tabs-${++A}`,c=s("div","tw-tabs"),r=s("div","tw-tabs-bar");r.setAttribute("role","tablist");let l=s("div","tw-tabs-pill");r.append(l);let u=s("div","tw-tabs-pages"),d=[],i=E.pages.map((a,e)=>{let t=v("button","tw-tabs-tab",a.title);t.setAttribute("role","tab"),t.dataset.active=String(e===0),t.setAttribute("aria-selected",String(e===0)),t.tabIndex=e===0?0:-1,t.id=`${o}-tab-${e}`,t.setAttribute("aria-controls",`${o}-page-${e}`);let n=s("div","tw-tabs-page tw-controls");return n.dataset.active=String(e===0),n.setAttribute("role","tabpanel"),n.id=`${o}-page-${e}`,n.setAttribute("aria-labelledby",t.id),d.push(n),u.append(n),t.addEventListener("click",()=>b(e)),r.append(t),t});c.append(r,u);let p=a=>f(r,l,a);function b(a){i.forEach((e,t)=>{e.dataset.active=String(t===a),e.setAttribute("aria-selected",String(t===a)),e.tabIndex=t===a?0:-1}),d.forEach((e,t)=>e.dataset.active=String(t===a)),p(!0),requestAnimationFrame(()=>window.dispatchEvent(new Event("tw-reflow")))}return r.addEventListener("keydown",a=>{let e=i.findIndex(n=>n.dataset.active==="true");if(e<0)return;let t=g(a.key,e,i.length,-1);t<0||(a.preventDefault(),b(t),i[t].focus())}),m(p),{el:c,bodies:d,activate:b,active:()=>i.findIndex(a=>a.dataset.active==="true")}}w("tabs",x);
|