tweakit 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/AGENTS.md +5 -5
  2. package/README.md +3 -3
  3. package/dist/tweaks/auto.js +1 -1
  4. package/dist/tweaks/auto.js.map +1 -1
  5. package/dist/tweaks/bezier-S2BOXQBM.js +2 -0
  6. package/dist/tweaks/bezier-S2BOXQBM.js.map +6 -0
  7. package/dist/tweaks/chunk-3MZAAMC2.js +2 -0
  8. package/dist/tweaks/chunk-3MZAAMC2.js.map +6 -0
  9. package/dist/tweaks/chunk-ETB35KFV.js +2 -0
  10. package/dist/tweaks/chunk-ETB35KFV.js.map +6 -0
  11. package/dist/tweaks/chunk-YB5GKWZI.js +2 -0
  12. package/dist/tweaks/chunk-YB5GKWZI.js.map +6 -0
  13. package/dist/tweaks/clip-A3VI53BK.js +2 -0
  14. package/dist/tweaks/clip-A3VI53BK.js.map +6 -0
  15. package/dist/tweaks/color-UGYMAF3W.js +2 -0
  16. package/dist/tweaks/core.js +1 -1
  17. package/dist/tweaks/core.js.map +3 -3
  18. package/dist/tweaks/fold-GY47HIQA.js +2 -0
  19. package/dist/tweaks/fold-GY47HIQA.js.map +6 -0
  20. package/dist/tweaks/gradient-BTX25WSH.js +2 -0
  21. package/dist/tweaks/gradient-BTX25WSH.js.map +6 -0
  22. package/dist/tweaks/{heavy-CLD7UAVI.js → heavy-NPFIGHRM.js} +2 -2
  23. package/dist/tweaks/image-HTQQ4WX6.js +4 -0
  24. package/dist/tweaks/image-HTQQ4WX6.js.map +6 -0
  25. package/dist/tweaks/{image-store-WRKY2NPU.js → image-store-QD5SMZXG.js} +1 -1
  26. package/dist/tweaks/image-store-QD5SMZXG.js.map +6 -0
  27. package/dist/tweaks/interval-BHPI4LRN.js +2 -0
  28. package/dist/tweaks/interval-BHPI4LRN.js.map +6 -0
  29. package/dist/tweaks/markup-QM53TQJZ.js +2 -0
  30. package/dist/tweaks/markup-QM53TQJZ.js.map +6 -0
  31. package/dist/tweaks/monitor-722WIYGW.js +3 -0
  32. package/dist/tweaks/monitor-722WIYGW.js.map +6 -0
  33. package/dist/tweaks/motion-HMCZK6HJ.js +2 -0
  34. package/dist/tweaks/motion-HMCZK6HJ.js.map +6 -0
  35. package/dist/tweaks/plot-D3NQ6XNN.js +3 -0
  36. package/dist/tweaks/plot-D3NQ6XNN.js.map +6 -0
  37. package/dist/tweaks/point-XDXKMDXH.js +2 -0
  38. package/dist/tweaks/point-XDXKMDXH.js.map +6 -0
  39. package/dist/tweaks/presets-EUWNSCUW.js +2 -0
  40. package/dist/tweaks/presets-EUWNSCUW.js.map +6 -0
  41. package/dist/tweaks/shadow-AM7VSRNS.js +2 -0
  42. package/dist/tweaks/shadow-AM7VSRNS.js.map +6 -0
  43. package/dist/tweaks/shadow-root-RYUV3AGS.js +3 -0
  44. package/dist/tweaks/shadow-root-RYUV3AGS.js.map +6 -0
  45. package/dist/tweaks/sides-JWIURDA4.js +2 -0
  46. package/dist/tweaks/sides-JWIURDA4.js.map +6 -0
  47. package/dist/tweaks/spring-BF5GBTPM.js +2 -0
  48. package/dist/tweaks/spring-BF5GBTPM.js.map +6 -0
  49. package/dist/tweaks/tabs-PRVUUZXZ.js +2 -0
  50. package/dist/tweaks/tabs-PRVUUZXZ.js.map +6 -0
  51. package/dist/tweaks.css +1 -1
  52. package/dist/tweaks.js +5 -4
  53. package/dist/tweaks.js.map +3 -3
  54. package/dist/types/tweaks/enhance.d.ts +3 -2
  55. package/dist/types/tweaks/types.d.ts +278 -72
  56. package/package.json +5 -2
  57. package/src/tweaks/auto.ts +9 -5
  58. package/src/tweaks/clip.ts +84 -22
  59. package/src/tweaks/controls/basic.ts +463 -139
  60. package/src/tweaks/controls/bezier.ts +152 -47
  61. package/src/tweaks/controls/color.ts +610 -161
  62. package/src/tweaks/controls/gradient.ts +256 -77
  63. package/src/tweaks/controls/image.ts +388 -132
  64. package/src/tweaks/controls/interval.ts +126 -41
  65. package/src/tweaks/controls/monitor.ts +142 -36
  66. package/src/tweaks/controls/motion.ts +231 -56
  67. package/src/tweaks/controls/plot.ts +321 -101
  68. package/src/tweaks/controls/point.ts +134 -45
  69. package/src/tweaks/controls/shadow.ts +103 -30
  70. package/src/tweaks/controls/sides.ts +150 -40
  71. package/src/tweaks/controls/spring.ts +220 -60
  72. package/src/tweaks/controls/tabs.ts +39 -18
  73. package/src/tweaks/core.ts +1 -1
  74. package/src/tweaks/easing.ts +45 -20
  75. package/src/tweaks/enhance.ts +21 -6
  76. package/src/tweaks/feedback.ts +133 -34
  77. package/src/tweaks/fold.ts +22 -10
  78. package/src/tweaks/heavy.ts +461 -137
  79. package/src/tweaks/icons.ts +12 -5
  80. package/src/tweaks/image-store.ts +131 -43
  81. package/src/tweaks/lazy.ts +36 -19
  82. package/src/tweaks/markup.ts +255 -92
  83. package/src/tweaks/panel.ts +1262 -438
  84. package/src/tweaks/presets.ts +85 -0
  85. package/src/tweaks/schema.ts +213 -51
  86. package/src/tweaks/shadow-root.ts +178 -0
  87. package/src/tweaks/shared.ts +802 -190
  88. package/src/tweaks/standalone.ts +120 -30
  89. package/src/tweaks/types.ts +644 -143
  90. package/src/tweaks/undo.ts +104 -0
  91. package/src/tweaks.css +556 -550
  92. package/src/wide-gamut.ts +473 -125
  93. package/dist/tweaks/bezier-JFEZMCLP.js +0 -2
  94. package/dist/tweaks/bezier-JFEZMCLP.js.map +0 -6
  95. package/dist/tweaks/chunk-6UO4DHBN.js +0 -2
  96. package/dist/tweaks/chunk-6UO4DHBN.js.map +0 -6
  97. package/dist/tweaks/chunk-DIQMLBAS.js +0 -2
  98. package/dist/tweaks/chunk-DIQMLBAS.js.map +0 -6
  99. package/dist/tweaks/chunk-XE6OUJBG.js +0 -2
  100. package/dist/tweaks/chunk-XE6OUJBG.js.map +0 -6
  101. package/dist/tweaks/clip-WW7JYO4X.js +0 -2
  102. package/dist/tweaks/clip-WW7JYO4X.js.map +0 -6
  103. package/dist/tweaks/color-YMMFURP6.js +0 -2
  104. package/dist/tweaks/fold-U6YRZLCJ.js +0 -2
  105. package/dist/tweaks/fold-U6YRZLCJ.js.map +0 -6
  106. package/dist/tweaks/gradient-JER7PW4D.js +0 -2
  107. package/dist/tweaks/gradient-JER7PW4D.js.map +0 -6
  108. package/dist/tweaks/image-H6QSLGO3.js +0 -4
  109. package/dist/tweaks/image-H6QSLGO3.js.map +0 -6
  110. package/dist/tweaks/image-store-WRKY2NPU.js.map +0 -6
  111. package/dist/tweaks/interval-TEUHQGZN.js +0 -2
  112. package/dist/tweaks/interval-TEUHQGZN.js.map +0 -6
  113. package/dist/tweaks/markup-NIBJD6E2.js +0 -2
  114. package/dist/tweaks/markup-NIBJD6E2.js.map +0 -6
  115. package/dist/tweaks/monitor-3BY7YCGX.js +0 -3
  116. package/dist/tweaks/monitor-3BY7YCGX.js.map +0 -6
  117. package/dist/tweaks/motion-FQPUBKKM.js +0 -2
  118. package/dist/tweaks/motion-FQPUBKKM.js.map +0 -6
  119. package/dist/tweaks/plot-2HBNBZSG.js +0 -3
  120. package/dist/tweaks/plot-2HBNBZSG.js.map +0 -6
  121. package/dist/tweaks/point-VV6XV3I6.js +0 -2
  122. package/dist/tweaks/point-VV6XV3I6.js.map +0 -6
  123. package/dist/tweaks/shadow-5E4E55I2.js +0 -2
  124. package/dist/tweaks/shadow-5E4E55I2.js.map +0 -6
  125. package/dist/tweaks/sides-P3STEVYY.js +0 -2
  126. package/dist/tweaks/sides-P3STEVYY.js.map +0 -6
  127. package/dist/tweaks/spring-HUVSXNVN.js +0 -2
  128. package/dist/tweaks/spring-HUVSXNVN.js.map +0 -6
  129. package/dist/tweaks/tabs-76FW7LQ7.js +0 -2
  130. package/dist/tweaks/tabs-76FW7LQ7.js.map +0 -6
  131. /package/dist/tweaks/{color-YMMFURP6.js.map → color-UGYMAF3W.js.map} +0 -0
  132. /package/dist/tweaks/{heavy-CLD7UAVI.js.map → heavy-NPFIGHRM.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{$ as Xe,A as yt,B as Zn,C as eo,D as bt,E as to,F as gn,G as it,H as no,I as oo,J as ro,K as It,L as so,M as io,N as yn,P as ao,Q as lo,R as Dt,S as Kt,T as co,U as uo,V as po,W as fo,X as mo,Y as He,Z as Ft,_ as ae,aa as ve,ba as go,ca as bn,d as qo,da as Ee,e as Wo,ea as Le,f as Bn,fa as yo,g as $,h as ie,ha as hn,i as Vn,ia as Ce,j as qn,k as Wn,l as Xn,n as we,o as Yn,p as Jn,q as zn,s as Ne,t as Gn,u as Un,v as E,w as ke,x as Y,y as Qn,z as Rt}from"./chunk-6UO4DHBN.js";var Ye={number:()=>import("./heavy-CLD7UAVI.js"),interval:()=>import("./interval-TEUHQGZN.js"),color:()=>import("./color-YMMFURP6.js"),gradient:()=>import("./gradient-JER7PW4D.js"),shadow:()=>import("./shadow-5E4E55I2.js"),sides:()=>import("./sides-P3STEVYY.js"),tabs:()=>import("./tabs-76FW7LQ7.js"),image:()=>import("./image-H6QSLGO3.js"),fpsgraph:()=>import("./monitor-3BY7YCGX.js"),monitor:()=>import("./monitor-3BY7YCGX.js"),spring:()=>import("./spring-HUVSXNVN.js"),cubicbezier:()=>import("./bezier-JFEZMCLP.js"),motion:()=>Promise.all([import("./bezier-JFEZMCLP.js"),import("./spring-HUVSXNVN.js")]).then(()=>import("./motion-FQPUBKKM.js")),point:()=>import("./point-VV6XV3I6.js"),plot:()=>import("./plot-2HBNBZSG.js")},$t={},Xo=t=>Le(t)||!Ye[t]?null:$t[t]||($t[t]=Ye[t]().catch(n=>{throw delete $t[t],console.error(`[tweaks] control chunk "${t}" failed to load:`,n),n})),ht=(t,n=new Set)=>{for(let i of t)if(n.add(i.type),i.children&&ht(i.children,n),i.pages)for(let a of i.pages)ht(a.children,n);return n},at=t=>{let n=[...ht(t)].map(Xo).filter(Boolean);return n.length?Promise.all(n):null};function _e(t,n,i=0){if(Xe(t))return null;let a=Jo(t,n,i);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 bo=t=>Array.isArray(t.options)&&{type:"radiogrid",options:t.options,value:t.value??Ne(t.options[0]),cols:t.cols},wn=(t,n)=>t.label==null?n:String(t.label),ho=t=>typeof t=="function"?t:void 0,wo=t=>typeof t=="string"&&t.trim()?t.trim().slice(0,12):void 0,Bt={slider:t=>({value:t.value??t.min??0,min:t.min,max:t.max,step:t.step,soft:t.soft,unit:wo(t.unit),format:ho(t.format),parse:ho(t.parse)}),number:t=>({value:t.value??0,min:t.min,max:t.max,step:t.step,soft:t.soft,unit:wo(t.unit)}),checkbox:t=>({value:!!t.value}),radiogrid:bo,segmented:bo,list:t=>Array.isArray(t.options)&&{options:t.options,value:t.value??Ne(t.options[0])},text:t=>({value:t.value??"",rows:t.rows,placeholder:t.placeholder}),spring:t=>{let n=ie(t.value)?t.value:t,i={stiffness:n.stiffness??300,damping:n.damping??26,mass:n.mass??1};Number.isFinite(+n.visualDuration)&&(i.visualDuration=+n.visualDuration),Number.isFinite(+n.bounce)&&(i.bounce=+n.bounce);let a=t.mode??n.mode;return(a==="time"||a==="physics")&&(i.mode=a),{value:i}},motion:t=>{let n=typeof t.value=="string"||Array.isArray(t.value)?{...t,curve:t.value}:ie(t.value)?t.value:t,i=bn.some(l=>n[l]!=null),a={curve:"ease",duration:300,...i?{}:{visualDuration:.5,bounce:.2}};for(let l of["mode","curve","duration",...bn])n[l]!=null&&(a[l]=n[l]);return a.mode!=="easing"&&a.mode!=="spring"&&(a.mode=i?"spring":"easing"),{value:a}},point:(t,n,i)=>{let a=[],l=(b,T)=>{let L=typeof T=="number"?T:typeof T=="string"&&T.trim()?+T:NaN;return Number.isFinite(L)?L:(a.push(b),0)},p=ie(t.value)&&!Array.isArray(t.value)?Object.keys(t.value).filter(b=>!Xe(b)):[];if((!Array.isArray(t.components)||!t.components.length)&&p.length&&(t={...t,components:p.map(b=>({key:b}))}),!Array.isArray(t.components)||!t.components.length)return!1;let u=new Set,k=t.components.flatMap((b,T)=>{let L=b.label?String(b.label).toLowerCase():"",g=String(b.key??((Xe(L)?"":L)||`c${T}`));if(Xe(g))return[];let y=g,te=2;for(;u.has(y);)y=`${g}-${te++}`;u.add(y);let I=ie(t.value)&&ae(t.value,y)?l(y,t.value[y]):void 0;return[{...b,key:y,...I!==void 0&&{value:I}}]});return a.length&&we("pointValue",i,a.join(", ")),k.length?{components:k,pad:t.pad,invertY:t.invertY,value:Object.fromEntries(k.map(b=>[b.key,b.value??0]))}:!1},buttongroup:t=>({buttons:t.buttons}),separator:()=>({}),tabs:(t,n)=>{if(!t.pages||typeof t.pages!="object"||!Object.keys(t.pages).length)return!1;let i=new Set;return{pages:Object.entries(t.pages).map(([a,l])=>{let p=a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",u=p,k=2;for(;i.has(u);)u=`${p}-${k++}`;return i.add(u),{key:u,title:a.trim()?a:"Tab",children:Object.entries(l).map(([b,T])=>_e(b,T,n+1)).filter(Boolean)}})}}},Yo=Object.assign(Object.create(null),{list:"options",radiogrid:"options",segmented:"options",point:"components",tabs:"pages"});function Jo(t,n,i=0){if(i>64)return null;let a=Bn(t),l=(p,u,k=a)=>({type:p,key:t,label:k,...u});if(ie(n)&&!Array.isArray(n)&&ae(Bt,n.type)){let p;try{p=Bt[n.type](n,i,t)}catch(u){return console.error(`[tweaks] malformed "${n.type}" schema value for "${t}" \u2014 control skipped:`,u),null}if(p)return l(String(n.type),p,wn(n,a));if(ae(n,Yo[n.type]))return console.error(`[tweaks] malformed "${n.type}" schema value for "${t}" \u2014 control skipped`),null}else if(ie(n)&&!Array.isArray(n)&&typeof n.type=="string"&&(Ye[n.type]||Le(n.type))){let{type:p,label:u,...k}=n;return l(p,k,wn(n,a))}else ie(n)&&!Array.isArray(n)&&typeof n.type=="string"&&!ae(Bt,n.type)&&import("./heavy-CLD7UAVI.js").then(p=>p.unknownType(`"${t}"`,n.type,[...Object.keys(Bt),...Object.keys(Ye),...yo()],"builds a folder"),()=>{});return Array.isArray(n)&&Array.isArray(n[0])&&n[0].length===2&&typeof n[0][0]=="number"?l("interval",{value:n[0].map(Number),min:n[1],max:n[2],step:n[3]}):Array.isArray(n)&&n.length<=4&&typeof n[0]=="number"?l("slider",{value:n[0],min:n[1],max:n[2],step:n[3]}):typeof n=="number"?l("slider",{value:n}):typeof n=="boolean"?l("checkbox",{value:n}):Array.isArray(n)?l("list",{options:n,value:Ne(n[0])}):ie(n)&&typeof n.action=="function"?l("button",{action:n.action},wn(n,a)):ie(n)&&Array.isArray(n.options)?l("list",{options:n.options,value:n.value??Ne(n.options[0])}):Vn(n)?l("color",{value:n}):typeof n=="string"?l("text",{value:n}):ie(n)?l("folder",{children:Object.entries(n).filter(([p,u])=>!(p==="render"&&typeof u=="function")&&!((p==="disabled"||p==="hint")&&u!=null)).map(([p,u])=>_e(p,u,i+1)).filter(Boolean)}):null}var Vt=new Set(["button","fpsgraph","monitor","buttongroup","separator"]);var ko=He('<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"),vo=He('<path d="m5 14 3.5 3.5L19 6.5"/>',"tw-toolbar-btn__check",2.4),Eo=He('<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"/>'),kn=t=>He('<path d="M18 9s-4.4 6-6 6-6-6-6-6"/>',t,2.5),Lo=kn("tw-chevron"),Co=He('<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"/>'),So=He('<path d="M18 6 6 18m12 0L6 6"/>',"",2.2),vn=He('<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 zo=3;function Go(t,n){let i=t.label,{min:a,max:l,step:p}=Yn(t.min,t.max,t.step,[+t.value],i);t.soft||([a,l]=Xn(a,l,p));let u=(l-a)/p<=6,k=Number.isFinite(+t.value)?+t.value:a,b=t.soft&&!u?k:$(k,a,l),T=0,L=qn(p),g=E("div","tw-slider-wrap"),y=E("div","tw-slider"),te=E("div","tw-slider-hashmarks"),I=E("div","tw-slider-fill"),O=E("div","tw-slider-handle"),W=Y("span","tw-slider-label",i),S=E("span","tw-slider-value"),h=typeof t.unit=="string"?t.unit.trim():"",x=document.createTextNode(""),K=h?/^[%°]$/.test(h)?h:" "+h:"";S.append(x),h&&S.append(Y("span","tw-slider-unit",K));let ne=t.format,A=t.parse,le=r=>{if(ne)try{let j=ne(r);if(typeof j=="string"&&j)return j}catch{}return r.toFixed(L)};y.append(te,I,O,W,S),g.append(y),y.tabIndex=0,y.setAttribute("role","slider"),y.setAttribute("aria-label",i),y.setAttribute("aria-valuemin",String(a)),y.setAttribute("aria-valuemax",String(l));let ce=r=>Wn(r,a,p),Re=u?Array.from({length:Math.max(0,Math.round((l-a)/p)-1)},(r,j)=>(j+1)*p/(l-a)*100):[];for(let r of Re){let j=E("div","tw-slider-hashmark");j.style.left=r+"%",te.append(j)}let J=()=>{let r=$((b-a)/(l-a||1)*100,0,100),j=T?` + ${T.toFixed(1)}px`:"",H=`${r}%${j}`;I.style.width=T?`calc(${H})`:r+"%",O.style.left=`max(5px, calc(${H} - 9px))`;let B=ce(b),N=le(B);x.data=N,y.setAttribute("aria-valuenow",String(B)),y.setAttribute("aria-valuetext",N+K);let Z=g.offsetWidth,he=S.offsetWidth;if(Z){he&&(W.style.maxWidth=Math.max(0,Z-he-30)+"px");let tt=Math.max(5,r/100*Z+T-9);y.classList.toggle("is-dodge",zn(W,S,tt,3))}};J();let z=null,Ie=1,fe=null,xe=!0,de,ge=null,De=null,ye=`width 0.34s ${yn}`,Ke=`left 0.34s ${yn}, opacity 0.15s, transform 0.2s ${io}`,Je=.2,G=r=>{if(!z)return b;let j=g.offsetWidth||z.width,H=$((r-z.left)/Ie/j,0,1);return $(a+H*(l-a),a,l)},Fe=(r,j=!0)=>{r=+r,Number.isFinite(r)&&(b=u?$(ce(r),a,l):t.soft?r:$(r,a,l),J(),j&&n(ce(b)))},ze=Math.max(1,Math.round((l-a)/p)),ut=.2,Lt=.3,Gt=520,Ct=27,Ge=r=>(r-a)/p,oe=0,ue=0,be=0,$e=!1,Ue=null,Be=b,re=0,Qe=()=>{be&&cancelAnimationFrame(be),be=0,re=0},Ze=r=>{if(!y.isConnected){Qe();return}let j=re?Math.min((r-re)/1e3,.05):1/60;re=r;let H=g.offsetWidth||z&&z.width||1,B=Ge($(Be,a,l)),N=$(Math.round(B+ut),0,ze),Z=$e?N+Lt*$(B-N,-.5,.5):N;if(so.matches)oe=Z,ue=0;else{let he=j,tt=1/240;for(;he>1e-4;){let nt=Math.min(tt,he);he-=nt;let Mt=Gt*(Z-oe)-Ct*ue;ue+=Mt*nt,oe+=ue*nt,oe<0&&(oe=0,ue=0),oe>ze&&(oe=ze,ue=0)}}T=(oe-N)*p/(l-a||1)*H,b=$(a+N*p,a,l),J(),N!==Ue&&(Ue=N,n(ce(b))),!$e&&Math.abs(ue)<.004&&Math.abs(oe-N)<.004?(oe=N,ue=0,T=0,J(),Qe(),y.classList.remove("is-active")):be=requestAnimationFrame(Ze)},St=r=>{oe=Ge(b),ue=0,$e=!0,Ue=Math.round(Ge(b)),Be=G(r),be||(be=requestAnimationFrame(Ze))};y.addEventListener("pointerdown",r=>{if(!S.classList.contains("is-editing")&&!(r.button!==0||fe)){r.preventDefault(),y.focus({focusVisible:!1}),De=r.pointerId;try{r.target.setPointerCapture(r.pointerId)}catch{}clearTimeout(de),y.style.transition="",fe={x:r.clientX,y:r.clientY},xe=!0,y.classList.add("is-active"),z=g.getBoundingClientRect(),Ie=z.width/(g.offsetWidth||z.width),u?(I.style.transition="",O.style.transition="",St(r.clientX)):(I.style.transition=ye,O.style.transition=Ke,Fe(G(r.clientX)))}}),y.addEventListener("pointermove",r=>{if(!(!fe||r.pointerId!==De)){if(r.buttons===0){Ve();return}if(xe&&Math.hypot(r.clientX-fe.x,r.clientY-fe.y)>zo&&(xe=!1,y.classList.add("is-dragging"),u||(I.style.transition="",O.style.transition="")),!xe)if(ao(y,z,r.clientX),u)Be=G(r.clientX);else{let j;if(r.altKey){ge||(ge={x:r.clientX,v:b});let H=g.offsetWidth||z.width;j=$(ge.v+(r.clientX-ge.x)/H*(l-a)*Je,a,l)}else ge=null,j=G(r.clientX);Fe(j)}}});let Ve=r=>{!fe||r&&r.pointerId!==De||(u?($e=!1,y.classList.remove("is-dragging"),be||(be=requestAnimationFrame(Ze))):(de=setTimeout(()=>{I.style.transition="",O.style.transition=""},360),y.classList.remove("is-active","is-dragging")),lo(y),fe=null,ge=null,De=null)};y.addEventListener("pointerup",Ve),y.addEventListener("pointercancel",Ve),y.addEventListener("lostpointercapture",Ve),eo(y,J),Rt(J),yt(y,[[window,"resize"]],J),y.addEventListener("keydown",r=>{if(r.target!==y||fe)return;if(r.key==="Enter")return r.preventDefault(),pt();let j=Jn(r,b,p,a,l,(l-a)/10||p*10);j!=null&&(r.preventDefault(),u&&(Qe(),T=0,y.classList.remove("is-active")),Fe($(j,a,l)))});let et;S.addEventListener("mouseenter",()=>{et=setTimeout(()=>S.classList.add("is-editable"),800)}),S.addEventListener("mouseleave",()=>{clearTimeout(et),S.classList.contains("is-editing")||S.classList.remove("is-editable")}),S.addEventListener("pointerdown",r=>{r.pointerType&&r.pointerType!=="mouse"?(S.classList.add("is-editable"),r.stopPropagation()):S.classList.contains("is-editable")&&r.stopPropagation()});let pt=()=>{if(S.classList.contains("is-editing"))return;let r=E("input","tw-slider-input");r.type="text",r.inputMode=A?"text":"decimal",bt(r),r.value=A?le(ce(b)):ce(b).toFixed(L);let j=r.value;r.style.width=j.length+1+"ch",S.classList.add("is-editing"),S.replaceWith(r),r.focus(),r.select();let H=()=>{r.replaceWith(S),S.classList.remove("is-editing","is-editable")},B=()=>{let N=r.value,Z=NaN;if(N!==j)try{Z=A?A(N):Number(N.replace(h,"").trim()||NaN)}catch{}Number.isFinite(Z)&&Fe(t.soft?Z:$(Z,a,l)),H()};r.addEventListener("pointerdown",N=>N.stopPropagation()),r.addEventListener("blur",B),r.addEventListener("keydown",N=>{N.key==="Enter"?(r.removeEventListener("blur",B),y.focus(),B()):N.key==="Escape"&&(N.stopPropagation(),r.removeEventListener("blur",B),y.focus(),H())})};return S.addEventListener("click",()=>{S.classList.contains("is-editable")&&pt()}),{el:g,set:r=>Fe(r,!1),get:()=>ce(b),range:[a,l]}}function Uo(t,n){let i=E("div","tw-row"),a=mo([{value:"off",label:"Off"},{value:"on",label:"On"}],t.value?"on":"off",l=>n(l==="on"),t.label,"on");return i.append(Y("span","tw-row-label",t.label),a.el),{el:i,set:l=>a.set(l?"on":"off"),get:()=>a.get()==="on"}}function Qo(t,n){let i=t.options||[],a=Math.min(3,Math.max(2,t.cols||(i.length<=3?i.length:i.length===4?2:3))),l=E("div",i.length>a?"tw-radiogrid is-grid":"tw-radiogrid"),p=E("div","tw-radiogrid-grid");p.style.setProperty("--tw-rg-cols",a),p.setAttribute("role","radiogroup"),p.setAttribute("aria-label",t.label);let u=t.value??Ne(i[0]),k=i.map(L=>{let g=po("tw-radiogrid-btn",L,y=>T(y));return p.append(g),g}),b=()=>uo(k,u),T=(L,g=!0)=>{L!=null&&L!==t.value&&!k.some(y=>y._twVal===L)||(u=L,b(),g&&n(L))};return p.addEventListener("keydown",L=>{let g=co(k,u);if(g<0)return;let y=fo(L.key,g,k.length,a);y<0||(L.preventDefault(),y!==g&&(T(k[y]._twVal),k[y].focus()))}),b(),l.append(Y("span","tw-radiogrid-label",t.label),p),{el:l,set:L=>T(L,!1),get:()=>u}}var Zo=/^(?:#[0-9a-f]{3,8}|[a-z]+|(?:oklch|oklab|rgba?|hsla?|hwb|lab|lch|color|var)\([^()]*\))$/i,er=kn("tw-select-chevron");function tr(t,n){let i=t.value,a=t.options.map(h=>({value:Ne(h),label:Un(h),color:h&&typeof h=="object"&&typeof h.color=="string"&&Zo.test(h.color.trim())?h.color.trim():""})),l=E("div","tw-select"),p=ke("tw-select-trigger");p.setAttribute("aria-haspopup","listbox"),p.setAttribute("aria-expanded","false");let u=E("span","tw-select-right"),k=h=>`linear-gradient(${h}, ${h}), var(--tw-checker)`,b=h=>{let x=E("span","tw-option-swatch");return x.style.background=k(h),x},T=E("span","tw-option-swatch"),L=E("span","tw-select-value");u.append(T,L),u.insertAdjacentHTML("beforeend",er),p.append(Y("span","tw-select-label",t.label),u);let g=E("div","tw-select-dropdown");g.setAttribute("role","listbox");let y=a.map(h=>{let x=ke("tw-select-option");return x.setAttribute("role","option"),h.color&&x.append(b(h.color)),x.append(Y("span","tw-option-label",h.label)),x.dataset.value=String(h.value),x.addEventListener("click",()=>{I(h.value),S.close()}),g.append(x),x});l.append(p,g);let te=()=>{let h=a.find(x=>x.value===i);L.textContent=h?.label??i,T.style.display=h?.color?"":"none",h?.color&&(T.style.background=k(h.color)),y.forEach(x=>{let K=x.dataset.value===String(i);x.dataset.selected=String(K),x.setAttribute("aria-selected",String(K))})},I=(h,x=!0)=>{h!=null&&h!==t.value&&!a.some(K=>K.value===h)||(i=h,te(),x&&n(h))},O="",W=0,S=It(l,p,g,{fallbackH:200,movable:!1,onOpen:()=>{O="",(y.find(h=>h.dataset.value===String(i))||y[0])?.focus()}});return p.addEventListener("keydown",h=>{!S.isOpen()&&(h.key==="ArrowDown"||h.key==="ArrowUp")&&(h.preventDefault(),S.open())}),g.addEventListener("keydown",h=>{let x=y.indexOf(document.activeElement),K=x,ne=!!O&&performance.now()-W<600;if(h.key==="ArrowDown")K=x<0?0:Math.min(y.length-1,x+1);else if(h.key==="ArrowUp")K=x<0?y.length-1:Math.max(0,x-1);else if(h.key==="Home")K=0;else if(h.key==="End")K=y.length-1;else if(h.key.length===1&&(h.key!==" "||ne)&&!h.ctrlKey&&!h.metaKey&&!h.altKey&&!h.isComposing){let A=h.key.toLowerCase();O=(ne?O:"")+A,W=performance.now();let le=O===A.repeat(O.length/A.length),ce=le?A:O,Re=J=>a.findIndex((z,Ie)=>Ie>=J&&String(z.label).toLowerCase().trimStart().startsWith(ce));if(K=Re(le?x+1:x),K<0&&(K=Re(0)),K<0&&h.key!==" ")return}else return;h.preventDefault(),y[K]?.focus()}),te(),{el:l,set:h=>I(h,!1),get:()=>i}}function nr(t){let n=Y("button","tw-button",t.label);return n.addEventListener("click",()=>typeof t.action=="function"&&t.action()),Ft(n)}function or(t){let n=E("div","tw-row tw-buttongroup");t.label&&n.append(Y("span","tw-row-label",t.label));let i=E("div","tw-buttongroup-btns"),a=Array.isArray(t.buttons)?t.buttons.map(l=>[l.label??"Button",l.action]):Object.entries(t.buttons||{});for(let[l,p]of a){let u=Y("button","tw-buttongroup-btn",l);u.addEventListener("click",()=>typeof p=="function"&&p()),i.append(u)}return n.append(i),Ft(n)}var rr=()=>Ft(E("div","tw-separator"));function sr(t,n){let i=b=>b==null?"":typeof b=="object"?Gn(b):String(b),a=i(t.value),l=t.rows>0,p=E("div",l?"tw-row tw-row-multiline":"tw-row"),u=E(l?"textarea":"input",l?"tw-text tw-textarea":"tw-text");l?u.rows=t.rows:u.type="text",u.value=a,bt(u),t.placeholder&&(u.placeholder=t.placeholder),u.addEventListener("input",()=>{a=u.value,n(a)});let k=()=>{let b=u.scrollHeight-u.clientHeight>1;u.classList.toggle("is-clip-top",b&&u.scrollTop>1),u.classList.toggle("is-clip-bottom",b&&u.scrollTop+u.clientHeight<u.scrollHeight-1)};return l&&(u.addEventListener("scroll",k),u.addEventListener("input",k),typeof ResizeObserver=="function"&&new ResizeObserver(k).observe(u)),p.append(Y("span","tw-row-label",t.label),u),{el:p,set:b=>{a=i(b),u.value=a,l&&k()},get:()=>a}}function wt(t){let n=E("div","tw-folder"),i=ke("tw-folder-header");i.setAttribute("aria-expanded","true"),i.append(Y("span","tw-folder-title",t.label)),i.insertAdjacentHTML("beforeend",Lo);let a=E("div","tw-folder-body"),l=E("div","tw-controls");a.append(l),n.append(i,a);let p=u=>Kt(n,i,a,u);return i.addEventListener("click",()=>p(!n.classList.contains("is-collapsed"))),{el:n,body:l,setCollapsed:p}}function lt(t,n){let i=Le(t.type);if(!i)return null;try{return i(t,n)}catch(a){return console.error("[tweaks] control failed to build:",t&&t.type,a),null}}Ee("slider",Go);Ee("checkbox",Uo);Ee("radiogrid",Qo);Ee("list",tr);Ee("button",nr);Ee("buttongroup",or);Ee("separator",rr);Ee("text",sr);Ee("folder",wt);var Xt=(t,n,i)=>{let a=ke("tw-toolbar-btn"+(t?" "+t:""),n);return a.title=i,a.setAttribute("aria-label",i),a},Yt=t=>{let n=Xt("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${ko}${vo}</span>`,"Copy values (\u21E7: changed only)");return n.addEventListener("click",async i=>{if(n.disabled)return;let[a,l]=t(i.shiftKey);if(!l)return Ce("Nothing has changed");if(!await Cn(a))return Ce("Copy failed");ir(n),Ce(l>0?`${l} changed value${l===1?"":"s"} copied`:"Values copied")}),n},Jt=t=>{let n=Xt("tw-toolbar-btn--reset",Eo,"Reset");return n.addEventListener("click",()=>{n.disabled||(En(n),t())}),n},ir=t=>{t.classList.add("is-copied"),clearTimeout(t._t),t._t=setTimeout(()=>t.classList.remove("is-copied"),1400)},En=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 i=()=>{n.getAnimations&&n.getAnimations().length?t._t=setTimeout(i,250):t._spinSettle()};t._t=setTimeout(i,600)},Q=null,qt=0,Wt=null,To=t=>{t.key==="Escape"&&(t.stopPropagation(),kt())},kt=t=>{t&&Wt&&!t.contains(Wt)||(clearTimeout(qt),document.removeEventListener("keydown",To),Q&&Q.classList.remove("is-open"))};function ar(t,n){Q||(Q=E("div","tw-tip tw-portal"),Q.setAttribute("role","tooltip")),Q.isConnected||document.body.appendChild(Q),clearTimeout(qt),Q.textContent=n,oo(Q,t);let i=Q.classList.contains("is-open");Q.style.visibility="hidden",Q.classList.add("is-open"),to(t,Q,{align:"center",prefer:"above",gap:8}),Q.style.visibility="",document.addEventListener("keydown",To),Wt=t,i||requestAnimationFrame(function a(){if(Q.classList.contains("is-open")){if(!Wt.isConnected)return kt();requestAnimationFrame(a)}})}function Mo(){Q&&(clearTimeout(qt),qt=setTimeout(kt,80))}var Ln=".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";function ct(t,n){let i=t.querySelector(Ln)||t;if(i===t&&t.classList.contains("tw-separator"))return;let a=i.closest("button"),l=a?E("span","tw-hint",vn):ke("tw-hint",vn),p=()=>ar(l,n);if(a){l.setAttribute("aria-hidden","true");let u=a.getAttribute("aria-description");a.setAttribute("aria-description",u?`${u}. ${n}`:n)}else l.setAttribute("aria-label",n),l.addEventListener("focus",p),l.addEventListener("blur",Mo),l.addEventListener("keydown",u=>{(u.key==="Enter"||u.key===" ")&&u.stopPropagation()});l.addEventListener("pointerenter",p),l.addEventListener("pointerleave",Mo),l.addEventListener("pointerdown",u=>u.stopPropagation()),l.addEventListener("click",u=>{u.preventDefault(),u.stopPropagation()}),i.appendChild(l)}async function Cn(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 i=!1;try{i=document.execCommand("copy")}catch{}return document.body.removeChild(n),i}var dt=null,vt=new Map,Se=null,Et=null,zt=null;function lr(t,n,i={}){let a=Object.entries(n).map(([e,o])=>_e(e,o)).filter(Boolean),l={},p,u=[],k=new Map,b=new Set,T=new Set,L=[],g=!1,y=!1,te=[],I=!1,O=-1,W=e=>{g||I||(y?e():te.push(e))},S=null,h={},x=(e,o)=>o===void 0?null:o,K=(e,o)=>{let s=Object.create(null);for(let d of e)if(ae(o,d.key)){let c=o[d.key];if(d.type==="folder")s[d.key]=K(d.children,c);else if(d.type==="tabs"){let w=s[d.key]=Object.create(null);for(let C of d.pages)ae(c,C.key)&&(w[C.key]=K(C.children,c[C.key]))}else s[d.key]=c}return s},ne=()=>JSON.parse(JSON.stringify(K(a,l),x)),A=i.persist?`tw:${i.persist===!0?t:i.persist}`:null,le=A?`${A}:presets`:null,ce=!!A;if(A){let e=vt.get(A)||0;e&&we("sharedKey",A.slice(3)),vt.set(A,e+1)}let Re=()=>{if(!ce)return;ce=!1;let e=(vt.get(A)||1)-1;e?vt.set(A,e):vt.delete(A)},J=e=>{try{return JSON.parse(localStorage.getItem(e)||"null")}catch{return null}},z=(e,o)=>{try{return localStorage.setItem(e,JSON.stringify(o)),!0}catch{return!1}},Ie=(e,o)=>e?.v===1?e[o]:null,fe=e=>z(A,{v:1,values:e}),xe=e=>z(le,{v:1,presets:e}),de=(e,o)=>o.reduce((s,d)=>s!=null&&ae(s,d)?s[d]:void 0,e),ge=(e,o)=>{let s=de(e,o.path.slice(0,-1));return!s||typeof s!="object"||!ae(s,o.key)?!1:(Reflect.deleteProperty(s,o.key),!0)},De=e=>{for(let o of u)o.persist||ge(e,o);return e},ye=null,Ke=null,Je=!1,G=new Map,Fe=e=>typeof e=="string"&&e.startsWith("tw-image:"),ze=e=>typeof e=="string"&&e.startsWith("data:"),ut=()=>u.filter(e=>e.m.type==="image"),Lt=new Map,Gt=(e,o)=>{Lt.get(e)!==o&&(Lt.set(e,o),e.note?.("Not saved"))},Ct=e=>{let o=Je&&ye?J(A):void 0;for(let s of ut()){let d=de(e,s.path.slice(0,-1)),c=d?.[s.key],w=G.get(s);if(w&&d&&ae(d,s.key)){if(!ve(w[1],c)){d[s.key]=w[0];continue}G.delete(s)}if(!ze(c)||o===void 0)continue;let C=ye.save(s,c,o);C&&(d[s.key]=C)}return e},Ge=(e,o,s)=>g||ve(o,e.get())||!St(e,s)?!1:(Me?.patch(e.path,o,e.get()),!0),oe=(e,o=[])=>{if(e&&typeof e=="object")for(let s of ut()){let d=de(e,s.path);if(!Fe(d))continue;let c=Ke?.get(d);c?de(e,s.path.slice(0,-1))[s.key]=c:(ge(e,s),o.push([s,d]))}return e},ue=(e,o)=>{let s=[];un(oe(e,s),o);for(let[d,c]of s){let w=[c,d.get()];G.set(d,w),!(!Je||!ye)&&ye.fetch(c).then(C=>{G.get(d)===w&&(G.delete(d),C&&Ge(d,w[1],C)&&(p=void 0,re()))})}},be=()=>{if(Je=!0,!y||g||I){G.clear();return}let e=!1;for(let[o,[s,d]]of[...G]){let c=Ke?.get(s);c&&Ge(o,d,c)&&(e=!0)}ye&&G.clear(),e?(p=void 0,re()):ye&&Be()},$e=()=>ye?.prune([J(A),Oe()]),Ue=()=>{},Be=A?(()=>{let e=0,o=()=>{e=0;let s=Ct(De(ne()));if(!fe(s)){let d=ut().filter(c=>ze(de(s,c.path)));if(!d.length)return;for(let c of d)Gt(c,de(s,c.path)),ge(s,c);if(!fe(s))return}$e()};return Ue=o,L.push(()=>{e&&(clearTimeout(e),o())}),()=>{clearTimeout(e),e=setTimeout(o,150)}})():()=>{},re=(e,o=p)=>{(e?T:b).forEach(s=>{try{s(l,o)}catch(d){console.error("[tweaks] listener threw:",d)}}),g||Be()},Qe=e=>typeof e=="function"||typeof e=="symbol"||typeof e=="bigint",Ze=(e,o)=>{if(Qe(o))throw new TypeError(`a ${typeof o} is not a control value`);G.delete(e),e.set(o),e.target[e.key]=e.get()},St=(e,o)=>{try{return Ze(e,o),!0}catch(s){return console.error(`[tweaks] restoring "${e.path.join(".")}" failed \u2014 value skipped:`,s),!1}},Ve=e=>{G.delete(e),go(e,e.raw,e.def),e.target[e.key]=e.get()},et=!1,pt=()=>{if(typeof i.onReset=="function"&&!et){et=!0;try{return i.onReset()}finally{et=!1}}for(let e of u)try{Ve(e)}catch(o){console.error(`[tweaks] resetting "${e.path.join(".")}" failed \u2014 control skipped:`,o)}p=void 0,re()},r=E("div","tw-panel");r.dataset.mode="inline";let j=e=>r.setAttribute("aria-label",e.trim()||"Tweaks");r.setAttribute("role","region"),j(t),Qn(r);let H=E("div","tw-header"),B=ke("tw-header-toggle");B.setAttribute("aria-expanded","true");let N=t,Z=Y("span","tw-title",N);B.append(Z);let he=E("div","tw-toolbar"),tt=()=>{let e={};for(let o of u)ve(o.get(),o.def)&&(e[o.path.join(".")]=o.get());return JSON.parse(JSON.stringify(e,x))},nt=Yt(e=>{if(!e)return[JSON.stringify(ne(),null,2),-1];let o=tt();return[JSON.stringify(o,null,2),Object.keys(o).length]}),Mt={panel:r,entries:u,fromJSON:e=>{Me?.flush(),je.fromJSON(e),Me?.flush()},announce:Ce,alive:()=>!g},Ut=Jt(pt),Ae=null;A&&i.presets!==!1&&(Ae=Xt("",Co,"Presets"),Ae.setAttribute("aria-haspopup","menu"),Ae.setAttribute("aria-expanded","false"),he.append(Ae)),he.append(nt,Ut),H.append(B),i.toolbar!==!1&&H.append(he);let Sn=[nt,Ut,Ae].filter(Boolean);for(let e of Sn)e.disabled=!0;let ot=!1,qe=!1;H.addEventListener("click",e=>{qe&&(qe=!1,e.preventDefault(),e.stopPropagation())},!0);let Mn=()=>Kt(r,B,Qt,!r.classList.contains("is-collapsed"),Pt);B.addEventListener("click",Mn);let Tn=!1;H.addEventListener("pointerdown",e=>{Tn=e.target===H||B.contains(e.target)},!0),H.addEventListener("click",e=>{e.target===H&&Tn&&!e.defaultPrevented&&Mn()});let Qt=E("div","tw-body"),Tt=E("div","tw-controls");Qt.append(Tt),r.append(H,Qt);let rt=gn(i.theme);it(r,rt),r._twTheme=rt;let Pe=i.draggable!==!1,ee=8,xt=28,xn=typeof i.floating=="object"&&i.floating?i.floating:null,An=()=>document.compatMode==="CSS1Compat"?document.documentElement:null,Oo=()=>An()?.clientWidth||window.innerWidth,Zt=()=>An()?.clientHeight||window.innerHeight,en=()=>({maxX:Math.max(ee,Oo()-r.offsetWidth-ee),maxY:Math.max(ee,Zt()-r.scrollHeight-1-st)}),At=A?`${A}:pos`:null,tn=Pe&&At?J(At):null,nn=tn&&typeof tn=="object"?tn:null,Pn=nn||xn||{x:16,y:16},on=e=>{let o=parseFloat(e);return o>=0?o:16},rn=on(Pn.x),sn=on(Pn.y),U=rn,X=sn,On=!!nn,st=ee,jn=()=>{let e=parseFloat(getComputedStyle(r).getPropertyValue("--tw-float-gap"));st=e>=0?e:i.floating&&!On?on(xn?.y):ee},We=()=>{let e=r.style;e.setProperty("--tw-float-x",U+"px"),e.setProperty("--tw-float-y",X+"px"),e.setProperty("--tw-float-max-h",`calc(100dvh - ${X+st}px)`)},Nn=()=>{jn();let{maxX:e,maxY:o}=en();if(Pe){U=$(U,ee,e),X=$(X,ee,o);return}U=$(rn,Math.min(ee,rn),e);let s=Zt()-Math.min(r.scrollHeight+1,Zt()/2),d=Math.min(1,s/(sn+st||1));X=Math.round(sn*d),st=Math.round(st*d)},Pt=()=>{!g&&r.dataset.mode==="floating"&&r.isConnected&&(Nn(),We())};(Pe||i.floating)&&(i.floating||nn)&&(r.dataset.mode="floating",Nn(),We(),requestAnimationFrame(Pt));let Ot=e=>{Ve(e),p=e.path.join("."),re()},jo=(e,o)=>{let s=e.querySelector(".tw-slider-value")||e.querySelector(Ln)||e;s.classList.add("tw-resettable"),s.title="Double-click or hold to reset";let d=0,c=0,w=0,C=!1,v=()=>{d&&(clearTimeout(d),d=0,s.classList.remove("tw-reset-holding"))};s.addEventListener("pointerdown",f=>{f.stopPropagation(),C=!1,!(f.pointerType!=="touch"&&f.pointerType!=="pen")&&(c=f.clientX,w=f.clientY,s.classList.add("tw-reset-holding"),d=setTimeout(()=>{d=0,s.classList.remove("tw-reset-holding","is-editable"),C=!0,Ot(o)},500))}),s.addEventListener("pointermove",f=>{d&&Math.abs(f.clientX-c)+Math.abs(f.clientY-w)>8&&v()}),s.addEventListener("pointerup",v),s.addEventListener("pointercancel",v),s.addEventListener("pointerleave",v),s.addEventListener("contextmenu",f=>{C&&f.preventDefault()}),s.addEventListener("click",f=>{C&&(f.preventDefault(),f.stopImmediatePropagation(),C=!1)},!0),s.addEventListener("dblclick",f=>{s===e&&f.target.closest?.("input, textarea")||(f.preventDefault(),f.stopPropagation(),Ot(o))}),s.classList.contains("tw-slider-value")&&e.addEventListener("dblclick",f=>{let P=f.target;P.classList?.contains("tw-slider-input")&&(f.preventDefault(),f.stopPropagation(),P.blur(),Ot(o))}),e.addEventListener("keydown",f=>{!f.altKey||f.metaKey||f.ctrlKey||f.key!=="Backspace"&&f.key!=="Delete"||(f.preventDefault(),f.stopPropagation(),f.target.classList?.contains("tw-slider-input")&&f.target.blur(),Ot(o))})},an=[],ln,No=(e,o)=>!e._hid==!o?!1:(e._hid=o,ln?ln(e,o):e.classList.toggle("tw-cond-hidden",o),!o),cn=(e,o)=>{o.hint&&ct(e,o.hint),(o.render||o.disabled!=null)&&an.push({node:e,m:o})},jt=[],Nt=[],Ho=e=>{typeof e.destroy=="function"&&L.push(e.destroy)},dn=(e,o,s,d=[])=>{for(let c of o){if(c.type==="tabs"){let P={};s[c.key]=P;let _=Le("tabs"),V=_&&_(c);if(!V)continue;Nt.push({path:[...d,c.key],ctrl:V,pageKeys:c.pages.map(R=>R.key)}),c.pages.forEach((R,pe)=>{let se={};P[R.key]=se,dn(V.bodies[pe],R.children,se,[...d,c.key,R.key])}),cn(V.el,c),e.append(V.el);continue}if(c.type==="folder"){let P={};s[c.key]=P;let _=wt(c);jt.push({path:[...d,c.key],el:_.el,setCollapsed:_.setCollapsed}),ft.set(_.el,{kind:"folder",path:[...d,c.key],label:c.label}),dn(_.body,c.children,P,[...d,c.key]),cn(_.el,c),e.append(_.el);continue}let w=!Vt.has(c.type),C=[...d,c.key].join("."),v,f=lt(c,w?P=>{ve(s[c.key],P)&&(v&&G.delete(v),s[c.key]=P,p=C,re())}:()=>{});if(f){if(Ho(f),w||k.set(C,c.type),w){let P=f.get();ae(s,c.key)&&f.set(s[c.key]),s[c.key]=f.get(),v={target:s,key:c.key,set:f.set,get:f.get,raw:c.value,def:P,path:[...d,c.key],persist:c.persist!==!1,m:c,el:f.el,note:f.note,range:f.range},u.push(v),jo(f.el,v),ft.set(f.el,{kind:"row",entry:v,label:c.label})}cn(f.el,c),e.append(f.el)}}},un=(e,o)=>{if(!(!e||typeof e!="object")){for(let s of u){let d=de(e,s.path);d!==void 0&&St(s,d)}p=void 0,re(o)}},Oe=()=>{let e=le?Ie(J(le),"presets"):null;return Object.assign(Object.create(null),e&&typeof e=="object"?e:{})},Hn=e=>{let o=Oe();return o[e]=Ct(ne()),xe(o)},_n=e=>{let o=Oe();o[e]&&ue(o[e])},Rn=e=>{let o=Oe();delete o[e],xe(o)&&$e()},Ht=e=>e.map(o=>String(o).replace(/~/g,"~1").replace(/\./g,"~0")).join("."),_o=()=>{let e={};if(jt.length){let o={};for(let s of jt)o[Ht(s.path)]=s.el.classList.contains("is-collapsed");e.folders=o}if(Nt.length){let o={};for(let s of Nt)o[Ht(s.path)]=s.pageKeys[s.ctrl.active()]??null;e.tabs=o}return e},Ro=e=>{if(!(!e||typeof e!="object")){if(e.folders)for(let o of jt){let s=e.folders[Ht(o.path)];typeof s=="boolean"&&o.setCollapsed(s)}if(e.tabs)for(let o of Nt){let s=o.pageKeys.indexOf(e.tabs[Ht(o.path)]);s>=0&&s!==o.ctrl.active()&&o.ctrl.activate(s)}}};if(Pe||i.floating){Pe&&(r.dataset.draggable="true");let e=()=>{if(r.dataset.mode==="floating")return;let m=r.getBoundingClientRect();U=m.left,X=m.top,r.parentNode&&(S=E("span","tw-lift-slot"),S.style.width=m.width+"px",S.style.height=m.height+"px",S.setAttribute("aria-hidden","true"),r.before(S)),it(r,null);let M=getComputedStyle(r),D=r.closest("[lang]")?.getAttribute("lang"),F={};for(let q of["font-family","font-size","font-weight","font-style","font-stretch","font-variant","font-feature-settings","font-variation-settings","font-kerning","line-height","letter-spacing","word-spacing","text-transform","text-align","color","direction",...Array.from(M).filter(mt=>mt.startsWith("--tw-"))])F[q]=M.getPropertyValue(q);no(r,r),document.body.appendChild(r);for(let q in F)M.getPropertyValue(q)!==F[q]&&r.style.setProperty(q,h[q]=F[q]);if(D&&r.closest("[lang]")?.getAttribute("lang")!==D&&(r.lang=D),it(r,rt),r.dataset.mode="floating",We(),S&&typeof MutationObserver=="function"){let q=new MutationObserver(()=>{S&&!S.isConnected&&(q.disconnect(),S=null,r.remove())});q.observe(document.documentElement,{childList:!0,subtree:!0}),L.push(()=>q.disconnect())}},o=()=>{dt&&dt!==r&&dt.classList.remove("is-raised"),r.classList.add("is-raised"),dt=r},s=()=>{On=!0,e(),o(),jn()},d=(m,M,D,F)=>{let{maxX:q,maxY:mt}=en();U=$(m+D,ee,q),X=$(M+F,ee,mt),We()},c=()=>{At&&z(At,{x:U,y:X})},w=null,C=0,v=0,f=0,P=0,_=0,V=m=>{for(let[M,D]of[["pointermove",pe],["pointerup",se],["pointercancel",se]])m?document.addEventListener(M,D,!0):document.removeEventListener(M,D,!0);m?document.addEventListener("keydown",R,!0):document.removeEventListener("keydown",R,!0)},R=m=>{if(m.key!=="Escape"||w===null)return;m.preventDefault(),m.stopPropagation();let M=w;w=null,V(!1);try{H.releasePointerCapture(M)}catch{}ot&&(U=f,X=P,We()),r.classList.remove("is-dragging"),qe=!0,document.addEventListener("pointerup",()=>setTimeout(()=>{qe=!1},0),{capture:!0,once:!0})};Pe&&H.addEventListener("pointerdown",m=>{if(!(m.button!==0||w!==null||m.target.closest(".tw-toolbar, input, textarea, select"))&&(w=m.pointerId,C=m.clientX,v=m.clientY,ot=!1,V(!0),r.classList.contains("is-snapping"))){clearTimeout(_);let M=getComputedStyle(r);U=parseFloat(M.left)||U,X=parseFloat(M.top)||X,r.classList.remove("is-snapping"),We()}}),Pe&&H.addEventListener("keydown",m=>{if(m.target!==B||!m.altKey||m.metaKey||m.ctrlKey)return;let M=m.shiftKey?50:10,D=m.key==="ArrowRight"?M:m.key==="ArrowLeft"?-M:0,F=m.key==="ArrowDown"?M:m.key==="ArrowUp"?-M:0;if(!D&&!F)return;m.preventDefault(),m.stopPropagation();let q=r.dataset.mode!=="floating";s(),q&&B.focus({preventScroll:!0}),d(U,X,D,F),c()});let pe=m=>{if(m.pointerId!==w)return;if(m.buttons===0){se(m);return}let M=m.clientX-C,D=m.clientY-v;if(!ot){if(Math.hypot(M,D)<(m.pointerType==="mouse"?6:10))return;ot=!0,s(),f=U,P=X;try{H.setPointerCapture(w)}catch{}r.classList.add("is-dragging")}d(f,P,M,D)},se=m=>{if(m.pointerId===w){try{H.releasePointerCapture(w)}catch{}if(w=null,V(!1),qe=ot,qe&&setTimeout(()=>{qe=!1},0),ot){let{maxX:M,maxY:D}=en();U<=ee+xt?U=ee:U>=M-xt&&(U=M),X<=ee+xt?X=ee:X>=D-xt&&(X=D),clearTimeout(_),r.classList.add("is-snapping"),_=setTimeout(()=>r.classList.remove("is-snapping"),340),We(),c()}r.classList.remove("is-dragging")}};H.addEventListener("lostpointercapture",se),L.push(()=>V(!1))}let Io=()=>{(Pe||i.floating)&&(Pt(),L.push(yt(r,[[window,"resize"]],Pt)))};if(Ae){let e=E("div","tw-presets-menu"),o=E("div","tw-presets-save"),s=E("input","tw-presets-input");s.type="text",s.placeholder="Preset name\u2026",s.spellcheck=!1,s.setAttribute("aria-label","New preset name"),bt(s);let d=Y("button","tw-presets-savebtn","Save");o.append(s,d);let c=E("div","tw-presets-list");e.append(o,c);let w=()=>{let f=Oe(),P=Object.keys(f);if(c.replaceChildren(),!P.length)return c.append(Y("div","tw-presets-empty","No presets yet"));for(let _ of P){let V=E("div","tw-presets-row"),R=Y("button","tw-presets-load",_);R.addEventListener("click",()=>{_n(_),v.close(),Ce(`Loaded preset ${_}`)});let pe=ke("tw-presets-del",So);pe.setAttribute("aria-label",`Delete preset ${_}`),pe.addEventListener("click",se=>{se.stopPropagation(),Rn(_),w()}),V.append(R,pe),c.append(V)}},C=()=>{let f=s.value.trim();if(!f){s.focus();return}if(!Hn(f)){Ce(`Preset ${f} not saved: storage is full`);return}s.value="",w(),Ce(`Saved preset ${f}`)},v=It(Ae,Ae,e,{width:208,fallbackH:160,align:"end",onOpen:()=>{w(),s.focus()}});d.addEventListener("click",C),s.addEventListener("keydown",f=>{f.key==="Enter"&&C()})}let Me=i.undo?(()=>{let o=[],s=0,d=!1,c=0,w=(m,M)=>{if(m===M)return!0;if(!m||!M||typeof m!="object"||typeof M!="object"||Array.isArray(m)!=Array.isArray(M))return!1;let D=Object.keys(m).length==Object.keys(M).length;for(let F in m)m[F]===M[F]?m[F]=M[F]:w(m[F],M[F])||(D=!1);return D},C=()=>{c=0;let m=ne();w(m,o[s])||(o=o.slice(0,s+1),o.push(m),o.length>200&&(o=o.slice(o.length-200)),s=o.length-1)},v=()=>{d||(clearTimeout(c),c=setTimeout(C,350))},f=()=>{c&&(clearTimeout(c),C())};b.add(v),T.add(v);let P=m=>{d=!0,un(o[m]),d=!1,s=m},_=()=>{f(),s>0&&P(s-1)},V=()=>{f(),s<o.length-1&&P(s+1)},R=()=>r.matches(":hover")||r.contains(document.activeElement);return{undo:_,redo:V,onKey:m=>{if(!R()||!(m.metaKey||m.ctrlKey)||fn(m.target))return;let M=m.key.toLowerCase();M==="z"?(m.preventDefault(),m.shiftKey?V():_()):M==="y"&&(m.preventDefault(),V())},flush:f,arm:()=>{o=[ne()],s=0},patch:(m,M,D)=>{let F=m[m.length-1],q=JSON.parse(JSON.stringify(M??null)),mt=JSON.parse(JSON.stringify(D??null));for(let Vo of o){let gt=de(Vo,m.slice(0,-1));gt&&typeof gt=="object"&&ae(gt,F)&&!ve(gt[F],q)&&(gt[F]=mt)}}}})():null,ft=new Map,Do=e=>{for(;e&&e!==r&&r.contains(e);e=e.parentElement){let o=ft.get(e);if(o)return o}},Ko=e=>{for(;e&&e!==r;e=e.parentElement)if(ft.get(e)?.kind==="row")return e},pn=e=>!!(e.closest(".tw-cond-hidden, .tw-tabs-page:not([data-active=true])")||e.parentElement?.closest(".is-collapsed")),me,In=e=>{let o=e.target;!r.contains(o)&&!o.closest?.(".tw-portal")&&Te()},Te=()=>{me&&(me[0].classList.remove("is-picked"),me=void 0,document.removeEventListener("pointerdown",In,!0),Se?.[0]===r&&(Se=null))},Fo=(e,o)=>{Se&&Se[0]!==r&&Se[1](),Te(),me=[e,o],Se=[r,Te],e.classList.add("is-picked"),document.addEventListener("pointerdown",In,!0);let s=[...e.querySelectorAll('button:not(:disabled):not([tabindex="-1"]), [tabindex="0"]')].find(d=>!d.closest(".tw-hint, .tw-portal, [inert]"));s?s.focus({preventScroll:!0,focusVisible:!1}):document.activeElement?.blur?.(),document.getSelection?.()?.removeAllRanges()};L.push(Te),r.addEventListener("pointerdown",e=>{let o=e.target;if(Ko(o)||o.closest(".tw-header, .tw-folder-header, button, input, textarea, select")){me?.[0].contains(o)||Te();return}if(e.button!==0||e.pointerType==="touch")return Te();let s;for(let[d,c]of ft){let w=(c.kind==="folder"?d.firstElementChild:d).getBoundingClientRect();w.height&&e.clientY>=w.top&&e.clientY<w.bottom&&!pn(d)&&(s=[d,c])}if(!s)return Te();e.preventDefault(),Fo(...s)},!0);let fn=e=>!!(e&&e.matches&&(e.matches("input, textarea, select")||e.isContentEditable)),$o=e=>{if(e.key==="Escape"){me&&(e.stopPropagation(),Te());return}if(!(e.metaKey||e.ctrlKey)||e.altKey||e.repeat||fn(e.target))return;let o=e.key.toLowerCase();if(o!=="c"&&o!=="v")return;Se&&!Se[0].isConnected&&Se[1](),me&&pn(me[0])&&Te();let s=document.activeElement,d=me?me[1]:Se||!s||pn(s)?void 0:Do(s);if(!d||o==="c"&&String(document.getSelection?.()||""))return;let c=o==="c"?JSON.stringify(d.kind==="row"?d.entry.get():de(ne(),d.path),x,2):"",w=R=>{g||Ce(R?`${d.label} copied`:"Copy failed")},C=me?.[0],v=document.activeElement,f=!!v?.matches(":focus-visible");if(!Et){Et=E("textarea","tw-sr"),Et.tabIndex=-1,Et.setAttribute("aria-hidden","true");for(let R of["copy","paste"])document.addEventListener(R,pe=>zt?.(pe),!0)}let P=Et,_=()=>{zt=null,document.activeElement===P&&(P.blur(),v?.focus?.({preventScroll:!0,focusVisible:f}))},V=zt=R=>{if(R.target!==P&&fn(R.target))return;if(R.preventDefault(),_(),c)return R.clipboardData?.setData("text/plain",c),w(!!R.clipboardData);let pe=R.clipboardData?.getData("text/plain")??null;import("./clip-WW7JYO4X.js").then(se=>se.pasteInto(pe,m=>se.pasteScope(Mt,d,m),Mt,C),()=>{})};P.isConnected||document.body.appendChild(P),P.value=c,P.focus({preventScroll:!0}),P.select(),setTimeout(()=>{zt===V&&(_(),c&&Cn(c).then(w))},1e3)},Dn=()=>{if(!g){if(O=L.length,dn(Tt,a,l),an.length){let e=new Map;for(let d of u)e.has(d.key)||e.set(d.key,d);let o=d=>{let c=e.get(d);return c?c.target[c.key]:l[d]},s=()=>{let d=!1;for(let{node:c,m:w}of an)try{if(w.render&&No(c,!w.render(o))&&(d=!0),w.disabled!=null){let C=typeof w.disabled=="function"?w.disabled(o):w.disabled;Dt(c,!!C)}}catch{}d&&Zn()};b.add(s),T.add(s),s(),import("./fold-U6YRZLCJ.js").then(d=>{ln=d.fold},()=>{})}if(A&&ue(De(Ie(J(A),"values"))),!g){Me?.arm(),Io(),L.push(yt(r,[[document,"keydown"]],e=>{Me?.onKey(e),$o(e)})),y=!0;for(let e of te.splice(0)){if(g)break;try{e()}catch(o){console.error("[tweaks] a call queued before ready failed:",o)}}for(let e of Sn)e.disabled=!1}}},Kn=new Set,Bo=(e,o,s)=>{let d=e.range;if(!d||e.m.soft||Kn.has(e))return;let c=typeof s=="string"?s.trim().split(/\s+/).map(w=>["",parseFloat(w)]):Array.isArray(s)?s.map(w=>["",w]):ie(s)?Object.entries(s):[["",s]];for(let[w,C]of c){let v=Array.isArray(d)?d:d[w],f=1e-9*Math.max(1,Math.abs(C));if(v&&typeof C=="number"&&(C<v[0]-f||C>v[1]+f)){Kn.add(e),we("clamp",o,s,v[0],v[1],e.m.type);return}}},Fn=(e,o)=>{if(String(e).split(".").some(Xe))return!1;let s=String(e).split("."),d=u.filter(v=>v.path.join(".")===e);if(d.length>1)return we("ambiguousPath",e,d.length),!1;let c=d[0];if(!c&&s.length>1){let v=k.get(e);return we(v?"noValue":"noPath",e,v),!1}if(!c){let v=u.filter(f=>f.key===e);if(v.length>1)return we("ambiguousKey",e,v.length,v[0].path.join(".")),!1;c=v[0]}let w=!c&&(k.get(e)||[...k].find(([v])=>v.split(".").pop()===e)?.[1]);if(!c)return w?we("noValue",e,w):we("noControl",e,a.some(v=>v.key===e&&(v.type==="folder"||v.type==="tabs"))),!1;let C=c.target[c.key];if(Qe(o))return!1;try{Ze(c,o)}catch(v){return console.error(`[tweaks] set("${e}") failed \u2014 value skipped:`,v),!1}return Bo(c,e,o),ve(C,c.target[c.key])?(p=c.path.join("."),!0):!1},je={el:r,params:l,on(e){return g?()=>{}:(b.add(e),()=>b.delete(e))},set(e,o,s){let d=String(e),c=s?.silent;W(()=>{Fn(d,o)&&re(c)})},setMany(e,o){if(e==null||typeof e!="object")return;let s=Object.entries(e),d=o?.silent;W(()=>{let c=0;for(let[w,C]of s)try{Fn(w,C)&&c++}catch(v){console.error(`[tweaks] setMany("${w}") failed \u2014 key skipped:`,v)}c>1&&(p=void 0),c&&re(d)})},reset(){y&&!g&&En(Ut),W(pt)},toJSON(){return g?{values:{},ui:{}}:{values:ne(),ui:_o()}},changes(){return g?{}:tt()},fromJSON(e,o){if(!e||typeof e!="object")return;let s=o?.silent,d=e.values&&typeof e.values=="object"?{...e.values}:e.values,c=e.ui&&typeof e.ui=="object"?{...e.ui}:e.ui;W(()=>{d&&un(d,s),Ro(c)})},setName(e){g||(N=String(e),Z.textContent=N,j(N))},setTheme(e){if(!g){it(r,null);for(let o in h)r.style.setProperty(o,h[o]);rt=gn(e),r._twTheme=rt,it(r,rt),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:e=>{if(g||I||!le||!e)return!1;let o=!0;return W(()=>{o=Hn(e)}),o},loadPreset:e=>g||I||!Oe()[e]?!1:(W(()=>_n(e)),!0),deletePreset:e=>{le&&W(()=>Rn(e))},presets:()=>g?[]:Object.keys(Oe()),undo:()=>{Me&&W(Me.undo)},redo:()=>{Me&&W(Me.redo)},destroy(){if(!g){g=!0,Re(),ro(r),kt(r);for(let e of L.splice(0))try{e()}catch{}b.clear(),S&&(S.remove(),S=null),dt===r&&(dt=null),r.dataset.twDestroyed="",r.remove()}}},mn=A&&ht(a).has("image")?import("./image-store-WRKY2NPU.js").then(async e=>{Ke=await e.load(A),Ke&&(ye=e.bind(A,Ke,o=>{g?JSON.stringify(J(A)).includes(JSON.stringify(o))&&Ue():Be()},Oe,o=>!!le&&xe(o)))},()=>{}):null;mn||(Je=!0);let _t=mn&&mn.then(be),$n=at(a);if($n){let e=s=>{if(I=!0,te.length=0,Re(),O>=0)for(let d of L.splice(O))try{d()}catch{}for(let d of Tt.children)d.dataset.twDestroyed="";throw b.clear(),u.length=0,Tt.replaceChildren(),g||console.warn(`[tweaks] "${t}": the panel could not be built \u2014 ${O>=0?"the build threw":"its lazy controls failed to load"}; the API is inert`),s},o=$n.then(Dn);je.ready=r.ready=(_t?Promise.all([o,_t]):o).then(()=>je,e),je.ready.catch(()=>{})}else Dn(),je.ready=r.ready=_t?_t.then(()=>je):Promise.resolve(je);return je}var xo={metaFor:_e,ensureForMetas:at,LAZY_IMPORT:Ye,createFolder:wt,createControl:lt,makeCopyBtn:Yt,makeResetBtn:Jt,addHintMarker:ct};function cr(t=document){let n=hn();return n?n?n(t,xo):Promise.resolve():import("./markup-NIBJD6E2.js").then(()=>hn()(t,xo),i=>console.error("[tweaks] markup chunk failed to load:",i))}var Ao=t=>E("div",`${t} tw-standalone tw-portal`),Po=(t,n,i)=>{let a=at(t);if(!a)return n(),Promise.resolve(i);let l=a.then(n).then(()=>i);return l.catch(()=>{}),l};function dr(t,n,i={}){let a=i.key??"value",l=_e(a,n);if(!l||l.type==="folder"||l.type==="tabs")throw new TypeError(`[tweaks] mountControl: "${a}" is not a single-control schema value`);i.label!=null&&(l.label=String(i.label));let p=!Vt.has(l.type),u=Ao("tw-control");t.append(u);let k=null,b=!1,T=l.value,L,g=!1,y=O=>{ve(T,O)&&(T=O,i.onChange&&i.onChange(O,a))},te=()=>{if(b||(k=lt(l,p?y:()=>{}),!k))return;l.hint&&ct(k.el,l.hint);let O=()=>{};try{l.render&&!l.render(O)&&k.el.classList.add("tw-cond-hidden")}catch{}try{(typeof l.disabled=="function"?l.disabled(O):l.disabled)&&Dt(k.el,!0)}catch{}u.append(k.el),p&&(T=k.get(),g&&(k.set(L),y(k.get())))},I={el:u,set:O=>{b||!p||(k?(k.set(O),y(k.get())):(L=O,g=!0))},get:()=>p?k?k.get():g?L:l.value:void 0,destroy:()=>{b=!0,k&&typeof k.destroy=="function"&&k.destroy(),u.dataset.twDestroyed="",u.remove()},ready:null};return I.ready=Po([l],te,I),I}function ur(t={}){let n=Ao("tw-color-picker"),i=null,a=!1,l=t.value,p,u=!1,k=null,b=g=>{ve(l,g)&&(l=g,t.onChange&&t.onChange(g))},T=()=>{if(a)return;let g=Le("colorpicker");g&&(i=g({value:t.value,mode:t.mode},b),l=i.get(),n.append(i.el),k&&i.setMode(k),u&&(i.set(p),b(i.get())),Rt(i.reflow))},L={el:n,set:g=>{a||(i?(i.set(g),b(i.get())):(p=g,u=!0))},get:()=>i?i.get():u?p:t.value,mode:()=>i?i.mode():k||t.mode||"oklch",setMode:g=>{i?i.setMode(g):k=g},reflow:()=>{i&&i.reflow()},destroy:()=>{a=!0,n.remove()},ready:null};return L.ready=Po([{type:"color"}],T,L),L}export{ur as createColorPicker,cr as enhance,Wo as gradientCss,qo as gradientStops,dr as mountControl,lr as tweaks};
1
+ import{$ as Ke,A as ht,B as so,C as io,D as bn,E as ao,F as kn,G as at,H as lo,I as co,J as Re,K as bt,L as uo,M as po,N as fo,O as mo,P as go,Q as wn,S as yo,T as ho,U as Ft,V as $t,W as bo,X as ko,Y as wo,Z as vo,_ as Eo,aa as Bt,ba as Z,ca as Je,d as Qo,da as me,e as Zo,ea as Lo,f as Jn,fa as vn,g as $,ga as we,h as le,ha as ve,i as zn,ia as So,j as Un,k as Gn,ka as En,l as Qn,la as lt,ma as Ee,n as ke,na as De,o as Zn,p as eo,q as to,s as Ie,t as no,u as oo,v as A,w as Pe,x as ie,y as ro,z as Dt}from"./chunk-ETB35KFV.js";var ze=Object.assign(Object.create(null),{number:()=>import("./heavy-NPFIGHRM.js"),interval:()=>import("./interval-BHPI4LRN.js"),color:()=>import("./color-UGYMAF3W.js"),gradient:()=>import("./gradient-BTX25WSH.js"),shadow:()=>import("./shadow-AM7VSRNS.js"),sides:()=>import("./sides-JWIURDA4.js"),tabs:()=>import("./tabs-PRVUUZXZ.js"),image:()=>import("./image-HTQQ4WX6.js"),fpsgraph:()=>import("./monitor-722WIYGW.js"),monitor:()=>import("./monitor-722WIYGW.js"),spring:()=>import("./spring-BF5GBTPM.js"),cubicbezier:()=>import("./bezier-S2BOXQBM.js"),motion:()=>Promise.all([import("./bezier-S2BOXQBM.js"),import("./spring-BF5GBTPM.js")]).then(()=>import("./motion-HMCZK6HJ.js")),point:()=>import("./point-XDXKMDXH.js"),plot:()=>import("./plot-D3NQ6XNN.js")}),Vt={},er=t=>ve(t)||!ze[t]?null:Vt[t]||(Vt[t]=ze[t]().catch(n=>{throw delete Vt[t],console.error(`[tweaks] control chunk "${t}" failed to load:`,n),n})),kt=(t,n=new Set)=>{for(let s of t)if(n.add(s.type),s.children&&kt(s.children,n),s.pages)for(let r of s.pages)kt(r.children,n);return n},ct=t=>{let n=[...kt(t)].map(er).filter(Boolean);return n.length?Promise.all(n):null};function Fe(t,n,s=0){if(Je(t))return null;let r=nr(t,n,s);return r&&n&&typeof n=="object"&&(typeof n.render=="function"&&(r.render=n.render),n.disabled!=null&&(r.disabled=n.disabled),n.hint!=null&&(r.hint=String(n.hint)),n.persist===!1&&(r.persist=!1)),r}var Co=t=>Array.isArray(t.options)&&{type:"radiogrid",options:t.options,value:t.value??Ie(t.options[0]),cols:t.cols},Ln=(t,n)=>t.label==null?n:String(t.label),To=t=>typeof t=="function"?t:void 0,Mo=t=>typeof t=="string"&&t.trim()?t.trim().slice(0,12):void 0,Sn={slider:t=>({value:t.value??t.min??0,min:t.min,max:t.max,step:t.step,soft:t.soft,unit:Mo(t.unit),format:To(t.format),parse:To(t.parse)}),number:t=>({value:t.value??0,min:t.min,max:t.max,step:t.step,soft:t.soft,unit:Mo(t.unit)}),checkbox:t=>({value:!!t.value}),radiogrid:Co,segmented:Co,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=le(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 r=t.mode??n.mode;return(r==="time"||r==="physics")&&(s.mode=r),{value:s}},motion:t=>{let n=typeof t.value=="string"||Array.isArray(t.value)?{...t,curve:t.value}:le(t.value)?t.value:t,s=vn.some(a=>n[a]!=null),r={curve:"ease",duration:300,...s?{}:{visualDuration:.5,bounce:.2}};for(let a of["mode","curve","duration",...vn])n[a]!=null&&(r[a]=n[a]);return r.mode!=="easing"&&r.mode!=="spring"&&(r.mode=s?"spring":"easing"),{value:r}},point:(t,n,s)=>{let r=[],a=(m,E)=>{let T=typeof E=="number"?E:typeof E=="string"&&E.trim()?+E:NaN;return Number.isFinite(T)?T:(r.push(m),0)},f=le(t.value)&&!Array.isArray(t.value)?Object.keys(t.value).filter(m=>!Je(m)):[];if((!Array.isArray(t.components)||!t.components.length)&&f.length&&(t={...t,components:f.map(m=>({key:m}))}),!Array.isArray(t.components)||!t.components.length)return!1;let u=new Set,h=t.components.flatMap((m,E)=>{let T=m.label?String(m.label).toLowerCase():"",v=String(m.key??((Je(T)?"":T)||`c${E}`));if(Je(v))return[];let d=v,V=2;for(;u.has(d);)d=`${v}-${V++}`;u.add(d);let I=le(t.value)&&Z(t.value,d)?a(d,t.value[d]):void 0;return[{...m,key:d,...I!==void 0&&{value:I}}]});return r.length&&ke("pointValue",s,r.join(", ")),h.length?{components:h,pad:t.pad,invertY:t.invertY,value:Object.fromEntries(h.map(m=>[m.key,m.value??0]))}:!1},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(([r,a])=>{let f=r.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",u=f,h=2;for(;s.has(u);)u=`${f}-${h++}`;return s.add(u),{key:u,title:r.trim()?r:Ee()("tab","Tab"),children:Object.entries(a).map(([m,E])=>Fe(m,E,n+1)).filter(Boolean)}})}}},tr=Object.assign(Object.create(null),{list:"options",radiogrid:"options",segmented:"options",point:"components",tabs:"pages"});function nr(t,n,s=0){if(s>64)return null;let r=Jn(t),a=(f,u,h=r)=>({type:f,key:t,label:h,...u});if(le(n)&&!Array.isArray(n)&&Z(Sn,n.type)){let f;try{f=Sn[n.type](n,s,t)}catch(h){return console.error(`[tweaks] malformed "${n.type}" schema value for "${t}" \u2014 control skipped:`,h),null}if(f)return a(String(n.type),f,Ln(n,r));let u=tr[n.type];if(Z(n,u)||Z(n,"value"))return console.error(`[tweaks] malformed "${n.type}" schema value for "${t}" \u2014 ${Z(n,u)?`its ${u} can't be used`:`it needs ${u}${n.type==="point"?" or a { x, y } value":""}`}; control skipped`),null}else if(le(n)&&!Array.isArray(n)&&typeof n.type=="string"&&n.type!=="folder"&&n.type!=="colorpicker"&&(ze[n.type]||ve(n.type))){let{type:f,label:u,...h}=n;return a(f,h,Ln(n,r))}else if(le(n)&&!Array.isArray(n)&&typeof n.type=="string"){let f=Z(n,"value")||Array.isArray(n.options)||typeof n.action=="function";if(import("./heavy-NPFIGHRM.js").then(u=>u.unknownType(`"${t}"`,n.type,[...Object.keys(Sn),...Object.keys(ze),...So()],f?"control":"folder"),()=>{}),f)return null}return Array.isArray(n)&&Array.isArray(n[0])&&n[0].length===2&&typeof n[0][0]=="number"?a("interval",{value:n[0].map(Number),min:n[1],max:n[2],step:n[3]}):Array.isArray(n)&&n.length<=4&&typeof n[0]=="number"?a("slider",{value:n[0],min:n[1],max:n[2],step:n[3]}):typeof n=="number"?a("slider",{value:n}):typeof n=="boolean"?a("checkbox",{value:n}):Array.isArray(n)?a("list",{options:n,value:Ie(n[0])}):le(n)&&typeof n.action=="function"?a("button",{action:n.action},Ln(n,r)):le(n)&&Array.isArray(n.options)?a("list",{options:n.options,value:n.value??Ie(n.options[0])}):zn(n)?a("color",{value:n}):typeof n=="string"?a("text",{value:n}):le(n)?a("folder",{children:Object.entries(n).filter(([f,u])=>!(f==="render"&&typeof u=="function")&&!((f==="disabled"||f==="hint")&&u!=null)).map(([f,u])=>Fe(f,u,s+1)).filter(Boolean)}):null}var qt=new Set(["button","fpsgraph","monitor","buttongroup","separator"]);var xo=Ke('<path class="twk-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="twk-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"/>',"twk-toolbar-btn__copy"),Ao=Ke('<path d="m5 14 3.5 3.5L19 6.5"/>',"twk-toolbar-btn__check",2.4),Po=Ke('<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"/>'),Cn=t=>Ke('<path d="M18 9s-4.4 6-6 6-6-6-6-6"/>',t,2.5),Oo=Cn("twk-chevron"),jo=Ke('<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="twk-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"/>'),No=Ke('<path d="M18 6 6 18m12 0L6 6"/>',"",2.2),Tn=Ke('<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 or=3;function rr(t,n){let s=t.label,{min:r,max:a,step:f}=Zn(t.min,t.max,t.step,[+t.value],s);t.soft||([r,a]=Qn(r,a,f));let u=(a-r)/f<=6,h=Number.isFinite(+t.value)?+t.value:r,m=t.soft&&!u?h:$(h,r,a),E=0,T=Un(f),v=A("div","twk-slider-wrap"),d=A("div","twk-slider"),V=A("div","twk-slider-hashmarks"),I=A("div","twk-slider-fill"),j=A("div","twk-slider-handle"),_=ie("span","twk-slider-label",s),M=A("span","twk-slider-value"),y=typeof t.unit=="string"?t.unit.trim():"",P=document.createTextNode(""),R=y?/^[%°]$/.test(y)?y:" "+y:"";M.append(P),y&&M.append(ie("span","twk-slider-unit",R));let ge=t.format,L=t.parse,S=g=>{if(ge)try{let p=ge(g);if(typeof p=="string"&&p)return p}catch{}return g.toFixed(T)};d.append(V,I,j,_,M),v.append(d),d.tabIndex=0,d.setAttribute("role","slider"),d.setAttribute("aria-label",s),d.setAttribute("aria-valuemin",String(r)),d.setAttribute("aria-valuemax",String(a));let D=g=>Gn(g,r,f),q=u?Array.from({length:Math.max(0,Math.round((a-r)/f)-1)},(g,p)=>(p+1)*f/(a-r)*100):[];for(let g of q){let p=A("div","twk-slider-hashmark");p.style.left=g+"%",V.append(p)}let te=()=>{let g=$((m-r)/(a-r||1)*100,0,100),p=E?` + ${E.toFixed(1)}px`:"",oe=`${g}%${p}`;I.style.width=E?`calc(${oe})`:g+"%",j.style.left=`max(5px, calc(${oe} - 9px))`;let H=D(m),O=S(H);P.data=O,d.setAttribute("aria-valuenow",String(H)),d.setAttribute("aria-valuetext",O+R);let U=v.offsetWidth,Ce=M.offsetWidth;if(U){Ce&&(_.style.maxWidth=Math.max(0,U-Ce-30)+"px");let qe=Math.max(5,g/100*U+E-9);d.classList.toggle("is-dodge",to(_,M,qe,3))}};te();let F=null,ye=1,W=null,$e=!0,Ue,z=null,Oe=null,St=`width 0.34s ${wn}`,he=`left 0.34s ${wn}, opacity 0.15s, transform 0.2s ${go}`,Be=.2,Se=g=>{if(!F)return m;let p=v.offsetWidth||F.width,oe=$((g-F.left)/ye/p,0,1);return $(r+oe*(a-r),r,a)},X=(g,p=!0)=>{g=+g,Number.isFinite(g)&&(m=u?$(D(g),r,a):t.soft?g:$(g,r,a),te(),p&&n(D(m)))},ft=Math.max(1,Math.round((a-r)/f)),Ct=.2,mt=.3,Tt=520,Gt=27,Ge=g=>(g-r)/f,ne=0,de=0,ue=0,Qe=!1,Ze=null,et=m,je=0,ce=()=>{ue&&cancelAnimationFrame(ue),ue=0,je=0},tt=g=>{if(!d.isConnected){ce();return}let p=je?Math.min((g-je)/1e3,.05):1/60;je=g;let oe=v.offsetWidth||F&&F.width||1,H=Ge($(et,r,a)),O=$(Math.round(H+Ct),0,ft),U=Qe?O+mt*$(H-O,-.5,.5):O;if(mo.matches)ne=U,de=0;else{let Ce=p,qe=1/240;for(;Ce>1e-4;){let ot=Math.min(qe,Ce);Ce-=ot;let xt=Tt*(U-ne)-Gt*de;de+=xt*ot,ne+=de*ot,ne<0&&(ne=0,de=0),ne>ft&&(ne=ft,de=0)}}E=(ne-O)*f/(a-r||1)*oe,m=$(r+O*f,r,a),te(),O!==Ze&&(Ze=O,n(D(m))),!Qe&&Math.abs(de)<.004&&Math.abs(ne-O)<.004?(ne=O,de=0,E=0,te(),ce(),d.classList.remove("is-active")):ue=requestAnimationFrame(tt)},Mt=g=>{ne=Ge(m),de=0,Qe=!0,Ze=Math.round(Ge(m)),et=Se(g),ue||(ue=requestAnimationFrame(tt))};d.addEventListener("pointerdown",g=>{if(!M.classList.contains("is-editing")&&!(g.button!==0||W)){g.preventDefault(),d.focus({focusVisible:!1}),Oe=g.pointerId;try{g.target.setPointerCapture(g.pointerId)}catch{}clearTimeout(Ue),d.style.transition="",W={x:g.clientX,y:g.clientY},$e=!0,d.classList.add("is-active"),F=v.getBoundingClientRect(),ye=F.width/(v.offsetWidth||F.width),u?(I.style.transition="",j.style.transition="",Mt(g.clientX)):(I.style.transition=St,j.style.transition=he,X(Se(g.clientX)))}}),d.addEventListener("pointermove",g=>{if(!(!W||g.pointerId!==Oe)){if(g.buttons===0){Ve();return}if($e&&Math.hypot(g.clientX-W.x,g.clientY-W.y)>or&&($e=!1,d.classList.add("is-dragging"),u||(I.style.transition="",j.style.transition="")),!$e)if(yo(d,F,g.clientX),u)et=Se(g.clientX);else{let p;if(g.altKey){z||(z={x:g.clientX,v:m});let oe=v.offsetWidth||F.width;p=$(z.v+(g.clientX-z.x)/oe*(a-r)*Be,r,a)}else z=null,p=Se(g.clientX);X(p)}}});let Ve=g=>{!W||g&&g.pointerId!==Oe||(u?(Qe=!1,d.classList.remove("is-dragging"),ue||(ue=requestAnimationFrame(tt))):(Ue=setTimeout(()=>{I.style.transition="",j.style.transition=""},360),d.classList.remove("is-active","is-dragging")),ho(d),W=null,z=null,Oe=null)};d.addEventListener("pointerup",Ve),d.addEventListener("pointercancel",Ve),d.addEventListener("lostpointercapture",Ve),io(d,te),Dt(te),ht(d,[[window,"resize"]],te),d.addEventListener("keydown",g=>{if(g.target!==d||W)return;if(g.key==="Enter")return g.preventDefault(),nt();let p=eo(g,m,f,r,a,(a-r)/10||f*10);p!=null&&(g.preventDefault(),u&&(ce(),E=0,d.classList.remove("is-active")),X($(p,r,a)))});let gt;M.addEventListener("mouseenter",()=>{gt=setTimeout(()=>M.classList.add("is-editable"),800)}),M.addEventListener("mouseleave",()=>{clearTimeout(gt),M.classList.contains("is-editing")||M.classList.remove("is-editable")}),M.addEventListener("pointerdown",g=>{g.pointerType&&g.pointerType!=="mouse"?(M.classList.add("is-editable"),g.stopPropagation()):M.classList.contains("is-editable")&&g.stopPropagation()});let nt=()=>{if(M.classList.contains("is-editing"))return;let g=A("input","twk-slider-input");g.type="text",g.inputMode=L?"text":"decimal",bn(g),g.value=L?S(D(m)):D(m).toFixed(T);let p=g.value;g.style.width=p.length+1+"ch",M.classList.add("is-editing"),M.replaceWith(g),g.focus(),g.select();let oe=()=>{g.replaceWith(M),M.classList.remove("is-editing","is-editable")},H=()=>{let O=g.value,U=NaN;if(O!==p)try{U=L?L(O):Number(O.replace(y,"").trim()||NaN)}catch{}Number.isFinite(U)&&X(t.soft?U:$(U,r,a)),oe()};g.addEventListener("pointerdown",O=>O.stopPropagation()),g.addEventListener("blur",H),g.addEventListener("keydown",O=>{O.key==="Enter"?(g.removeEventListener("blur",H),d.focus(),H()):O.key==="Escape"&&(O.stopPropagation(),g.removeEventListener("blur",H),d.focus(),oe())})};return M.addEventListener("click",()=>{M.classList.contains("is-editable")&&nt()}),{el:v,set:g=>X(g,!1),get:()=>D(m),range:[r,a]}}function sr(t,n){let s=A("div","twk-row"),r=Ee(),a=Eo([{value:"off",label:r("off","Off")},{value:"on",label:r("on","On")}],t.value?"on":"off",f=>n(f==="on"),t.label,"on");return s.append(ie("span","twk-row-label",t.label),a.el),{el:s,set:f=>a.set(f?"on":"off"),get:()=>a.get()==="on"}}function ir(t,n){let s=t.options||[],r=Math.min(3,Math.max(2,t.cols||(s.length<=3?s.length:s.length===4?2:3))),a=A("div",s.length>r?"twk-radiogrid is-grid":"twk-radiogrid"),f=A("div","twk-radiogrid-grid");f.style.setProperty("--twk-rg-cols",r),f.setAttribute("role","radiogroup"),f.setAttribute("aria-label",t.label);let u=t.value??Ie(s[0]),h=s.map(T=>{let v=wo("twk-radiogrid-btn",T,d=>E(d));return f.append(v),v}),m=()=>ko(h,u),E=(T,v=!0)=>{T!=null&&T!==t.value&&!h.some(d=>d._twVal===T)||(u=T,m(),v&&n(T))};return f.addEventListener("keydown",T=>{let v=bo(h,u);if(v<0)return;let d=vo(T.key,v,h.length,r);d<0||(T.preventDefault(),d!==v&&(E(h[d]._twVal),h[d].focus()))}),m(),a.append(ie("span","twk-radiogrid-label",t.label),f),{el:a,set:T=>E(T,!1),get:()=>u}}var ar=/^(?:#[0-9a-f]{3,8}|[a-z]+|(?:oklch|oklab|rgba?|hsla?|hwb|lab|lch|color|var)\([^()]*\))$/i,lr=Cn("twk-select-chevron");function cr(t,n){let s=t.value,r=t.options.map(y=>({value:Ie(y),label:oo(y),color:y&&typeof y=="object"&&typeof y.color=="string"&&ar.test(y.color.trim())?y.color.trim():""})),a=A("div","twk-select"),f=Pe("twk-select-trigger");f.setAttribute("aria-haspopup","listbox"),f.setAttribute("aria-expanded","false");let u=A("span","twk-select-right"),h=y=>`linear-gradient(${y}, ${y}), var(--twk-checker)`,m=y=>{let P=A("span","twk-option-swatch");return P.style.background=h(y),P},E=A("span","twk-option-swatch"),T=A("span","twk-select-value");u.append(E,T),u.insertAdjacentHTML("beforeend",lr),f.append(ie("span","twk-select-label",t.label),u);let v=A("div","twk-select-dropdown");v.setAttribute("role","listbox");let d=r.map(y=>{let P=Pe("twk-select-option");return P.setAttribute("role","option"),y.color&&P.append(m(y.color)),P.append(ie("span","twk-option-label",y.label)),P.dataset.value=String(y.value),P.addEventListener("click",()=>{I(y.value),M.close()}),v.append(P),P});a.append(f,v);let V=()=>{let y=r.find(P=>P.value===s);T.textContent=y?.label??s,E.style.display=y?.color?"":"none",y?.color&&(E.style.background=h(y.color)),d.forEach(P=>{let R=P.dataset.value===String(s);P.dataset.selected=String(R),P.setAttribute("aria-selected",String(R))})},I=(y,P=!0)=>{y!=null&&y!==t.value&&!r.some(R=>R.value===y)||(s=y,V(),P&&n(y))},j="",_=0,M=fo(a,f,v,{fallbackH:200,movable:!1,onOpen:()=>{j="",(d.find(y=>y.dataset.value===String(s))||d[0])?.focus()}});return f.addEventListener("keydown",y=>{!M.isOpen()&&(y.key==="ArrowDown"||y.key==="ArrowUp")&&(y.preventDefault(),M.open())}),v.addEventListener("keydown",y=>{let P=d.indexOf(Re(v)),R=P,ge=!!j&&performance.now()-_<600;if(y.key==="ArrowDown")R=P<0?0:Math.min(d.length-1,P+1);else if(y.key==="ArrowUp")R=P<0?d.length-1:Math.max(0,P-1);else if(y.key==="Home")R=0;else if(y.key==="End")R=d.length-1;else if(y.key.length===1&&(y.key!==" "||ge)&&!y.ctrlKey&&!y.metaKey&&!y.altKey&&!y.isComposing){let L=y.key.toLowerCase();j=(ge?j:"")+L,_=performance.now();let S=j===L.repeat(j.length/L.length),D=S?L:j,q=te=>r.findIndex((F,ye)=>ye>=te&&String(F.label).toLowerCase().trimStart().startsWith(D));if(R=q(S?P+1:P),R<0&&(R=q(0)),R<0&&y.key!==" ")return}else return;y.preventDefault(),d[R]?.focus()}),V(),{el:a,set:y=>I(y,!1),get:()=>s}}function dr(t){let n=ie("button","twk-button",t.label);return n.addEventListener("click",()=>typeof t.action=="function"&&t.action()),Bt(n)}function ur(t){let n=A("div","twk-row twk-buttongroup");t.label&&n.append(ie("span","twk-row-label",t.label));let s=A("div","twk-buttongroup-btns"),r=Array.isArray(t.buttons)?t.buttons.map(a=>[a.label??Ee()("button","Button"),a.action]):Object.entries(t.buttons||{});for(let[a,f]of r){let u=ie("button","twk-buttongroup-btn",a);u.addEventListener("click",()=>typeof f=="function"&&f()),s.append(u)}return n.append(s),Bt(n)}var pr=()=>Bt(A("div","twk-separator"));function fr(t,n){let s=m=>m==null?"":typeof m=="object"?no(m):String(m),r=s(t.value),a=t.rows>0,f=A("div",a?"twk-row twk-row-multiline":"twk-row"),u=A(a?"textarea":"input",a?"twk-text twk-textarea":"twk-text");a?u.rows=t.rows:u.type="text",u.value=r,bn(u),t.placeholder&&(u.placeholder=t.placeholder),u.addEventListener("input",()=>{r=u.value,n(r)});let h=()=>{let m=u.scrollHeight-u.clientHeight>1;u.classList.toggle("is-clip-top",m&&u.scrollTop>1),u.classList.toggle("is-clip-bottom",m&&u.scrollTop+u.clientHeight<u.scrollHeight-1)};return a&&(u.addEventListener("scroll",h),u.addEventListener("input",h),typeof ResizeObserver=="function"&&new ResizeObserver(h).observe(u)),f.append(ie("span","twk-row-label",t.label),u),{el:f,set:m=>{r=s(m),u.value=r,a&&h()},get:()=>r}}function wt(t){let n=A("div","twk-folder"),s=Pe("twk-folder-header");s.setAttribute("aria-expanded","true"),s.append(ie("span","twk-folder-title",t.label)),s.insertAdjacentHTML("beforeend",Oo);let r=A("div","twk-folder-body"),a=A("div","twk-controls");r.append(a),n.append(s,r);let f=u=>$t(n,s,r,u);return s.addEventListener("click",()=>f(!n.classList.contains("is-collapsed"))),{el:n,body:a,setCollapsed:f}}function dt(t,n){let s=ve(t.type);if(!s)return null;try{return s(t,n)}catch(r){return console.error("[tweaks] control failed to build:",t&&t.type,r),null}}we("slider",rr);we("checkbox",sr);we("radiogrid",ir);we("list",cr);we("button",dr);we("buttongroup",ur);we("separator",pr);we("text",fr);we("folder",wt);var Yt=(t,n,s)=>{let r=Pe("twk-toolbar-btn"+(t?" "+t:""),n);return r.title=s,r.setAttribute("aria-label",s),r},Jt=(t,n=Ee())=>{let s=Yt("twk-toolbar-btn--swap",`<span class="twk-toolbar-btn__icons">${xo}${Ao}</span>`,n("copy","Copy values (\u21E7: changed only)"));return s.addEventListener("click",async r=>{if(s.disabled)return;let[a,f]=t(r.shiftKey);if(!f)return De(n("nothingChanged","Nothing has changed"));if(!await An(a))return De(n("copyFailed","Copy failed"));mr(s),De(f>0?n("copiedChanged",u=>`${u.n} changed value${u.n===1?"":"s"} copied`,{n:f}):n("copied","Values copied"))}),s},zt=(t,n=Ee())=>{let s=Yt("twk-toolbar-btn--reset",Po,n("reset","Reset"));return s.addEventListener("click",()=>{s.disabled||(Mn(s),t())}),s},mr=t=>{t.classList.add("is-copied"),clearTimeout(t._t),t._t=setTimeout(()=>t.classList.remove("is-copied"),1400)},Mn=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("--twk-spin","0deg"),n.getBoundingClientRect(),n.style.transition=""},n.addEventListener("transitionend",r=>{r.propertyName==="transform"&&t.classList.contains("is-spinning")&&performance.now()-t._spinT>250&&t._spinSettle()})),t._spinT=performance.now(),n.style.setProperty("--twk-spin",`${(parseFloat(n.style.getPropertyValue("--twk-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)},ee=null,Wt=0,Xt=null,_o=t=>{t.key==="Escape"&&(t.stopPropagation(),vt())},vt=t=>{t&&Xt&&!t.contains(Xt)||(clearTimeout(Wt),document.removeEventListener("keydown",_o),ee&&ee.classList.remove("is-open"))};function gr(t,n){ee||(ee=A("div","twk-tip twk-portal"),ee.setAttribute("role","tooltip")),uo(ee,t),clearTimeout(Wt),ee.textContent=n,co(ee,t);let s=ee.classList.contains("is-open");ee.style.visibility="hidden",ee.classList.add("is-open"),ao(t,ee,{align:"center",prefer:"above",gap:8}),ee.style.visibility="",document.addEventListener("keydown",_o),Xt=t,s||requestAnimationFrame(function r(){if(ee.classList.contains("is-open")){if(!Xt.isConnected)return vt();requestAnimationFrame(r)}})}function Ho(){ee&&(clearTimeout(Wt),Wt=setTimeout(vt,80))}var xn=".twk-slider-label, .twk-row-label, .twk-select-label, .twk-trigger-label, .twk-radiogrid-label, .twk-field-label, .twk-folder-title, .twk-fps-label, .twk-plot-label, .twk-spring-label, .twk-bezier-label";function ut(t,n){let s=t.querySelector(xn)||t;if(s===t&&t.classList.contains("twk-separator"))return;let r=s.closest("button"),a=r?A("span","twk-hint",Tn):Pe("twk-hint",Tn),f=()=>gr(a,n);if(r){a.setAttribute("aria-hidden","true");let u=r.getAttribute("aria-description");r.setAttribute("aria-description",u?`${u}. ${n}`:n)}else a.setAttribute("aria-label",n),a.addEventListener("focus",f),a.addEventListener("blur",Ho),a.addEventListener("keydown",u=>{(u.key==="Enter"||u.key===" ")&&u.stopPropagation()});a.addEventListener("pointerenter",f),a.addEventListener("pointerleave",Ho),a.addEventListener("pointerdown",u=>u.stopPropagation()),a.addEventListener("click",u=>{u.preventDefault(),u.stopPropagation()}),s.appendChild(a)}async function An(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 Io=(t,n,s,r,a,f)=>{let h=[],m=0,E=!1,T=0,v=(L,S)=>{if(L===S)return!0;if(!L||!S||typeof L!="object"||typeof S!="object"||Array.isArray(L)!=Array.isArray(S))return!1;let D=Object.keys(L).length==Object.keys(S).length;for(let q in L)L[q]===S[q]?L[q]=S[q]:v(L[q],S[q])||(D=!1);return D},d=()=>{T=0;let L=n();v(L,h[m])||(h=h.slice(0,m+1),h.push(L),h.length>200&&(h=h.slice(h.length-200)),m=h.length-1)},V=()=>{E||(clearTimeout(T),T=setTimeout(d,350))},I=()=>{T&&(clearTimeout(T),d())};f(V);let j=L=>{E=!0,s(h[L]),E=!1,m=L},_=()=>{I(),m>0&&j(m-1)},M=()=>{I(),m<h.length-1&&j(m+1)},y=()=>t.matches(":hover")||t.contains(Re(t));return{undo:_,redo:M,onKey:L=>{if(!y()||!(L.metaKey||L.ctrlKey)||a(L.composedPath()[0]))return;let S=L.key.toLowerCase();S==="z"?(L.preventDefault(),L.shiftKey?M():_()):S==="y"&&(L.preventDefault(),M())},flush:I,arm:()=>{h=[n()],m=0},patch:(L,S,D)=>{let q=L[L.length-1],te=JSON.parse(JSON.stringify(S??null)),F=JSON.parse(JSON.stringify(D??null));for(let ye of h){let W=r(ye,L.slice(0,-1));W&&typeof W=="object"&&Z(W,q)&&!me(W[q],te)&&(W[q]=F)}}}};var pt=null,Et=new Map,Le=null,Lt=null,Ut=null;function yr(t,n,s={}){let r=lt(s.strings,()=>Object.entries(n).map(([e,o])=>Fe(e,o)).filter(Boolean)),a=Ee(s.strings),f={},u,h=[],m=new Map,E=new Set,T=new Set,v=[],d=!1,V=!1,I=[],j=!1,_=-1,M=e=>{d||j||(V?e():I.push(e))},y=null,P={},R=(e,o)=>o===void 0?null:o,ge=(e,o)=>{let i=Object.create(null);for(let l of e)if(Z(o,l.key)){let c=o[l.key];if(l.type==="folder")i[l.key]=ge(l.children,c);else if(l.type==="tabs"){let k=i[l.key]=Object.create(null);for(let x of l.pages)Z(c,x.key)&&(k[x.key]=ge(x.children,c[x.key]))}else i[l.key]=c}return i},L=()=>JSON.parse(JSON.stringify(ge(r,f),R)),S=s.persist?`tw:${s.persist===!0?t:s.persist}`:null,D=S?`${S}:presets`:null,q=!!S;if(S){let e=Et.get(S)||0;e&&ke("sharedKey",S.slice(3)),Et.set(S,e+1)}let te=()=>{if(!q)return;q=!1;let e=(Et.get(S)||1)-1;e?Et.set(S,e):Et.delete(S)},F=e=>{try{return JSON.parse(localStorage.getItem(e)||"null")}catch{return null}},ye=(e,o)=>{try{return localStorage.setItem(e,JSON.stringify(o)),!0}catch{return!1}},W=(e,o)=>e?.v===1?e[o]:null,$e=e=>ye(S,{v:1,values:e}),Ue=e=>ye(D,{v:1,presets:e}),z=(e,o)=>o.reduce((i,l)=>i!=null&&Z(i,l)?i[l]:void 0,e),Oe=(e,o)=>{let i=z(e,o.path.slice(0,-1));return!i||typeof i!="object"||!Z(i,o.key)?!1:(Reflect.deleteProperty(i,o.key),!0)},St=e=>{for(let o of h)o.persist||Oe(e,o);return e},he=null,Be=null,Se=!1,X=new Map,ft=e=>typeof e=="string"&&e.startsWith("tw-image:"),Ct=e=>typeof e=="string"&&e.startsWith("data:"),mt=()=>h.filter(e=>e.m.type==="image"),Tt=new Map,Gt=(e,o)=>{Tt.get(e)!==o&&(Tt.set(e,o),e.note?.(a("notSaved","Not saved")))},Ge=e=>{let o=Se&&he?F(S):void 0;for(let i of mt()){let l=z(e,i.path.slice(0,-1)),c=l?.[i.key],k=X.get(i);if(k&&l&&Z(l,i.key)){if(!me(k[1],c)){l[i.key]=k[0];continue}X.delete(i)}if(!Ct(c)||o===void 0)continue;let x=he.save(i,c,o);x&&(l[i.key]=x)}return e},ne=(e,o,i)=>d||me(o,e.get())||!Ve(e,i)?!1:(Me?.patch(e.path,o,e.get()),!0),de=(e,o=[])=>{if(e&&typeof e=="object")for(let i of mt()){let l=z(e,i.path);if(!ft(l))continue;let c=Be?.get(l);c?z(e,i.path.slice(0,-1))[i.key]=c:(Oe(e,i),o.push([i,l]))}return e},ue=(e,o)=>{let i=[];fn(de(e,i),o);for(let[l,c]of i){let k=[c,l.get()];X.set(l,k),!(!Se||!he)&&he.fetch(c).then(x=>{X.get(l)===k&&(X.delete(l),x&&ne(l,k[1],x)&&(u=void 0,ce()))})}},Qe=()=>{if(Se=!0,!V||d||j){X.clear();return}let e=!1;for(let[o,[i,l]]of[...X]){let c=Be?.get(i);c&&ne(o,l,c)&&(e=!0)}he&&X.clear(),e?(u=void 0,ce()):he&&je()},Ze=()=>he?.prune([F(S),He()]),et=()=>{},je=S?(()=>{let e=0,o=()=>{e=0;let i=Ge(St(L()));if(!$e(i)){let l=mt().filter(c=>Ct(z(i,c.path)));if(!l.length)return;for(let c of l)Gt(c,z(i,c.path)),Oe(i,c);if(!$e(i))return}Ze()};return et=o,v.push(()=>{e&&(clearTimeout(e),o())}),()=>{clearTimeout(e),e=setTimeout(o,150)}})():()=>{},ce=(e,o=u)=>{(e?T:E).forEach(i=>{try{i(f,o)}catch(l){console.error("[tweaks] listener threw:",l)}}),d||je()},tt=e=>typeof e=="function"||typeof e=="symbol"||typeof e=="bigint",Mt=(e,o)=>{if(tt(o))throw new TypeError(`a ${typeof o} is not a control value`);X.delete(e),e.set(o),e.target[e.key]=e.get()},Ve=(e,o)=>{try{return Mt(e,o),!0}catch(i){return console.error(`[tweaks] restoring "${e.path.join(".")}" failed \u2014 value skipped:`,i),!1}},gt=e=>{X.delete(e),Lo(e,e.raw,e.def),e.target[e.key]=e.get()},nt=!1,g=()=>{if(typeof s.onReset=="function"&&!nt){nt=!0;try{return s.onReset()}finally{nt=!1}}for(let e of h)try{gt(e)}catch(o){console.error(`[tweaks] resetting "${e.path.join(".")}" failed \u2014 control skipped:`,o)}u=void 0,ce()},p=A("div","twk-panel");p.dataset.mode="inline";let oe=e=>p.setAttribute("aria-label",e.trim()||a("panel","Tweaks"));p.setAttribute("role","region"),oe(t),ro(p);let H=A("div","twk-header"),O=Pe("twk-header-toggle");O.setAttribute("aria-expanded","true");let U=t,Ce=ie("span","twk-title",U);O.append(Ce);let qe=A("div","twk-toolbar"),ot=()=>{let e={};for(let o of h)me(o.get(),o.def)&&(e[o.path.join(".")]=o.get());return JSON.parse(JSON.stringify(e,R))},xt=Jt(e=>{if(!e)return[JSON.stringify(L(),null,2),-1];let o=ot();return[JSON.stringify(o,null,2),Object.keys(o).length]},a),Pn={panel:p,entries:h,fromJSON:e=>{Me?.flush(),_e.fromJSON(e),Me?.flush()},announce:De,alive:()=>!d,tr:a},Qt=zt(g,a),We=null;S&&s.presets!==!1&&(We=Yt("",jo,a("presets","Presets")),We.setAttribute("aria-haspopup","menu"),We.setAttribute("aria-expanded","false"),qe.append(We)),qe.append(xt,Qt),H.append(O),s.toolbar!==!1&&H.append(qe);let On=[xt,Qt,We].filter(Boolean);for(let e of On)e.disabled=!0;let rt=!1,Xe=!1;H.addEventListener("click",e=>{Xe&&(Xe=!1,e.preventDefault(),e.stopPropagation())},!0);let jn=()=>$t(p,O,Zt,!p.classList.contains("is-collapsed"),jt);O.addEventListener("click",jn);let Nn=!1;H.addEventListener("pointerdown",e=>{Nn=e.target===H||O.contains(e.target)},!0),H.addEventListener("click",e=>{e.target===H&&Nn&&!e.defaultPrevented&&jn()});let Zt=A("div","twk-body"),At=A("div","twk-controls");Zt.append(At),p.append(H,Zt);let en=bt(p,s.shadow),Te=en.box,st=kn(s.theme);at(p,st),p._twTheme=st;let Ne=s.draggable!==!1,re=8,Pt=28,Hn=typeof s.floating=="object"&&s.floating?s.floating:null,_n=()=>document.compatMode==="CSS1Compat"?document.documentElement:null,Fo=()=>_n()?.clientWidth||window.innerWidth,tn=()=>_n()?.clientHeight||window.innerHeight,nn=()=>({maxX:Math.max(re,Fo()-p.offsetWidth-re),maxY:Math.max(re,tn()-p.scrollHeight-1-it)}),Ot=S?`${S}:pos`:null,on=Ne&&Ot?F(Ot):null,rn=on&&typeof on=="object"?on:null,In=rn||Hn||{x:16,y:16},sn=e=>{let o=parseFloat(e);return o>=0?o:16},an=sn(In.x),ln=sn(In.y),G=an,Y=ln,Rn=!!rn,it=re,Kn=()=>{let e=parseFloat(getComputedStyle(p).getPropertyValue("--twk-float-gap"));it=e>=0?e:s.floating&&!Rn?sn(Hn?.y):re},Ye=()=>{let e=p.style;e.setProperty("--twk-float-x",G+"px"),e.setProperty("--twk-float-y",Y+"px"),e.setProperty("--twk-float-max-h",`calc(100dvh - ${Y+it}px)`)},Dn=()=>{Kn();let{maxX:e,maxY:o}=nn();if(Ne){G=$(G,re,e),Y=$(Y,re,o);return}G=$(an,Math.min(re,an),e);let i=tn()-Math.min(p.scrollHeight+1,tn()/2),l=Math.min(1,i/(ln+it||1));Y=Math.round(ln*l),it=Math.round(it*l)},jt=()=>{!d&&p.dataset.mode==="floating"&&p.isConnected&&(Dn(),Ye())};(Ne||s.floating)&&(s.floating||rn)&&(p.dataset.mode="floating",Dn(),Ye(),requestAnimationFrame(jt));let Nt=e=>{gt(e),u=e.path.join("."),ce()},$o=(e,o)=>{let i=e.querySelector(".twk-slider-value")||e.querySelector(xn)||e;i.classList.add("twk-resettable"),i.title=a("resetHint","Double-click or hold to reset");let l=0,c=0,k=0,x=!1,w=()=>{l&&(clearTimeout(l),l=0,i.classList.remove("twk-reset-holding"))};i.addEventListener("pointerdown",b=>{b.stopPropagation(),x=!1,!(b.pointerType!=="touch"&&b.pointerType!=="pen")&&(c=b.clientX,k=b.clientY,i.classList.add("twk-reset-holding"),l=setTimeout(()=>{l=0,i.classList.remove("twk-reset-holding","is-editable"),x=!0,Nt(o)},500))}),i.addEventListener("pointermove",b=>{l&&Math.abs(b.clientX-c)+Math.abs(b.clientY-k)>8&&w()}),i.addEventListener("pointerup",w),i.addEventListener("pointercancel",w),i.addEventListener("pointerleave",w),i.addEventListener("contextmenu",b=>{x&&b.preventDefault()}),i.addEventListener("click",b=>{x&&(b.preventDefault(),b.stopImmediatePropagation(),x=!1)},!0),i.addEventListener("dblclick",b=>{i===e&&b.target.closest?.("input, textarea")||(b.preventDefault(),b.stopPropagation(),Nt(o))}),i.classList.contains("twk-slider-value")&&e.addEventListener("dblclick",b=>{let B=b.target;B.classList?.contains("twk-slider-input")&&(b.preventDefault(),b.stopPropagation(),B.blur(),Nt(o))}),e.addEventListener("keydown",b=>{!b.altKey||b.metaKey||b.ctrlKey||b.key!=="Backspace"&&b.key!=="Delete"||(b.preventDefault(),b.stopPropagation(),b.target.classList?.contains("twk-slider-input")&&b.target.blur(),Nt(o))})},cn=[],dn,Bo=(e,o)=>!e._hid==!o?!1:(e._hid=o,dn?dn(e,o):e.classList.toggle("twk-cond-hidden",o),!o),un=(e,o)=>{o.hint&&ut(e,o.hint),(o.render||o.disabled!=null)&&cn.push({node:e,m:o})},Ht=[],_t=[],Vo=e=>{typeof e.destroy=="function"&&v.push(e.destroy)},pn=(e,o,i,l=[])=>{for(let c of o){if(c.type==="tabs"){let B={};i[c.key]=B;let K=ve("tabs"),ae=K&&K(c);if(!ae)continue;_t.push({path:[...l,c.key],ctrl:ae,pageKeys:c.pages.map(be=>be.key)}),c.pages.forEach((be,se)=>{let fe={};B[be.key]=fe,pn(ae.bodies[se],be.children,fe,[...l,c.key,be.key])}),un(ae.el,c),e.append(ae.el);continue}if(c.type==="folder"){let B={};i[c.key]=B;let K=wt(c);Ht.push({path:[...l,c.key],el:K.el,setCollapsed:K.setCollapsed}),yt.set(K.el,{kind:"folder",path:[...l,c.key],label:c.label}),pn(K.body,c.children,B,[...l,c.key]),un(K.el,c),e.append(K.el);continue}let k=!qt.has(c.type),x=[...l,c.key].join("."),w,b=dt(c,k?B=>{me(i[c.key],B)&&(w&&X.delete(w),i[c.key]=B,u=x,ce())}:()=>{});if(b){if(Vo(b),k||m.set(x,c.type),k){let B=b.get();Z(i,c.key)&&b.set(i[c.key]),i[c.key]=b.get(),w={target:i,key:c.key,set:b.set,get:b.get,raw:c.value,def:B,path:[...l,c.key],persist:c.persist!==!1,m:c,el:b.el,note:b.note,range:b.range},h.push(w),$o(b.el,w),yt.set(b.el,{kind:"row",entry:w,label:c.label})}un(b.el,c),e.append(b.el)}}},fn=(e,o)=>{if(!(!e||typeof e!="object")){for(let i of h){let l=z(e,i.path);l!==void 0&&Ve(i,l)}u=void 0,ce(o)}},He=()=>{let e=D?W(F(D),"presets"):null;return Object.assign(Object.create(null),e&&typeof e=="object"?e:{})},Fn=e=>{let o=He();return o[e]=Ge(L()),Ue(o)},$n=e=>{let o=He();o[e]&&ue(o[e])},Bn=e=>{let o=He();delete o[e],Ue(o)&&Ze()},It=e=>e.map(o=>String(o).replace(/~/g,"~1").replace(/\./g,"~0")).join("."),qo=()=>{let e={};if(Ht.length){let o={};for(let i of Ht)o[It(i.path)]=i.el.classList.contains("is-collapsed");e.folders=o}if(_t.length){let o={};for(let i of _t)o[It(i.path)]=i.pageKeys[i.ctrl.active()]??null;e.tabs=o}return e},Wo=e=>{if(!(!e||typeof e!="object")){if(e.folders)for(let o of Ht){let i=e.folders[It(o.path)];typeof i=="boolean"&&o.setCollapsed(i)}if(e.tabs)for(let o of _t){let i=o.pageKeys.indexOf(e.tabs[It(o.path)]);i>=0&&i!==o.ctrl.active()&&o.ctrl.activate(i)}}};if(Ne||s.floating){Ne&&(p.dataset.draggable="true");let e=()=>{if(p.dataset.mode==="floating")return;let C=p.getBoundingClientRect();G=C.left,Y=C.top,Te.parentNode&&(y=A("span","twk-lift-slot"),y.style.width=C.width+"px",y.style.height=C.height+"px",y.setAttribute("aria-hidden","true"),Te.before(y),Te._twSlot=y),at(p,null);let N=getComputedStyle(p),J=Te.closest("[lang]")?.getAttribute("lang"),Ae={};for(let Q of["font-family","font-size","font-weight","font-style","font-stretch","font-variant","font-feature-settings","font-variation-settings","font-kerning","line-height","letter-spacing","word-spacing","text-transform","text-align","color","direction",...Array.from(N).filter(hn=>hn.startsWith("--twk-"))])Ae[Q]=N.getPropertyValue(Q);lo(p,p),document.body.appendChild(Te);for(let Q in Ae)N.getPropertyValue(Q)!==Ae[Q]&&p.style.setProperty(Q,P[Q]=Ae[Q]);if(J&&Te.closest("[lang]")?.getAttribute("lang")!==J&&(p.lang=J),at(p,st),p.dataset.mode="floating",Ye(),y&&typeof MutationObserver=="function"){let Q=new MutationObserver(()=>{y&&!y.isConnected&&(Q.disconnect(),y=null,Te.remove())});Q.observe(document.documentElement,{childList:!0,subtree:!0}),v.push(()=>Q.disconnect())}},o=()=>{pt&&pt!==p&&pt.classList.remove("is-raised"),p.classList.add("is-raised"),pt=p},i=()=>{Rn=!0,e(),o(),Kn()},l=(C,N,J,Ae)=>{let{maxX:Q,maxY:hn}=nn();G=$(C+J,re,Q),Y=$(N+Ae,re,hn),Ye()},c=()=>{Ot&&ye(Ot,{x:G,y:Y})},k=null,x=0,w=0,b=0,B=0,K=0,ae=C=>{for(let[N,J]of[["pointermove",se],["pointerup",fe],["pointercancel",fe]])C?document.addEventListener(N,J,!0):document.removeEventListener(N,J,!0);C?document.addEventListener("keydown",be,!0):document.removeEventListener("keydown",be,!0)},be=C=>{if(C.key!=="Escape"||k===null)return;C.preventDefault(),C.stopPropagation();let N=k;k=null,ae(!1);try{H.releasePointerCapture(N)}catch{}rt&&(G=b,Y=B,Ye()),p.classList.remove("is-dragging"),Xe=!0,document.addEventListener("pointerup",()=>setTimeout(()=>{Xe=!1},0),{capture:!0,once:!0})};Ne&&H.addEventListener("pointerdown",C=>{if(!(C.button!==0||k!==null||C.target.closest(".twk-toolbar, input, textarea, select"))&&(k=C.pointerId,x=C.clientX,w=C.clientY,rt=!1,ae(!0),p.classList.contains("is-snapping"))){clearTimeout(K);let N=getComputedStyle(p);G=parseFloat(N.left)||G,Y=parseFloat(N.top)||Y,p.classList.remove("is-snapping"),Ye()}}),Ne&&H.addEventListener("keydown",C=>{if(C.target!==O||!C.altKey||C.metaKey||C.ctrlKey)return;let N=C.shiftKey?50:10,J=C.key==="ArrowRight"?N:C.key==="ArrowLeft"?-N:0,Ae=C.key==="ArrowDown"?N:C.key==="ArrowUp"?-N:0;if(!J&&!Ae)return;C.preventDefault(),C.stopPropagation();let Q=p.dataset.mode!=="floating";i(),Q&&O.focus({preventScroll:!0}),l(G,Y,J,Ae),c()});let se=C=>{if(C.pointerId!==k)return;if(C.buttons===0){fe(C);return}let N=C.clientX-x,J=C.clientY-w;if(!rt){if(Math.hypot(N,J)<(C.pointerType==="mouse"?6:10))return;rt=!0,i(),b=G,B=Y;try{H.setPointerCapture(k)}catch{}p.classList.add("is-dragging")}l(b,B,N,J)},fe=C=>{if(C.pointerId===k){try{H.releasePointerCapture(k)}catch{}if(k=null,ae(!1),Xe=rt,Xe&&setTimeout(()=>{Xe=!1},0),rt){let{maxX:N,maxY:J}=nn();G<=re+Pt?G=re:G>=N-Pt&&(G=N),Y<=re+Pt?Y=re:Y>=J-Pt&&(Y=J),clearTimeout(K),p.classList.add("is-snapping"),K=setTimeout(()=>p.classList.remove("is-snapping"),340),Ye(),c()}p.classList.remove("is-dragging")}};H.addEventListener("lostpointercapture",fe),v.push(()=>ae(!1))}let Xo=()=>{(Ne||s.floating)&&(jt(),v.push(ht(p,[[window,"resize"]],jt)))};if(We){let e=We,o,i=!1,l=()=>o||(o=import("./presets-EUWNSCUW.js").then(w=>{if(d)throw 0;return i=!0,w.presetsMenu(e,()=>Object.keys(He()),Fn,$n,Bn,De,No,a)},w=>{throw o=void 0,w!==0&&console.error("[tweaks] presets:",w),w}));for(let w of["pointerenter","focus"])e.addEventListener(w,()=>{l().catch(()=>{})},{once:!0});let c=!1,k=w=>{(w.type==="keydown"?w.key==="Escape":!w.composedPath().includes(e))&&(c=!1)},x=w=>{for(let b of["pointerdown","focusin","keydown"])(w?document.addEventListener:document.removeEventListener).call(document,b,k,!0)};e.addEventListener("click",()=>{i||e.disabled||c||(c=!0,x(!0),l().then(w=>{c&&w.open()},()=>{}).finally(()=>{c=!1,x(!1)}))})}let Me=s.undo?Io(p,L,fn,z,e=>gn(e),e=>{E.add(e),T.add(e)}):null,yt=new Map,Yo=e=>{for(;e&&e!==p&&p.contains(e);e=e.parentElement){let o=yt.get(e);if(o)return o}},Jo=e=>{for(;e&&e!==p;e=e.parentElement)if(yt.get(e)?.kind==="row")return e},mn=e=>!!(e.closest(".twk-cond-hidden, .twk-tabs-page:not([data-active=true])")||e.parentElement?.closest(".is-collapsed")),pe,Vn=e=>{let o=e.composedPath()[0];!p.contains(o)&&!o.closest?.(".twk-portal")&&xe()},xe=()=>{pe&&(pe[0].classList.remove("is-picked"),pe=void 0,document.removeEventListener("pointerdown",Vn,!0),Le?.[0]===p&&(Le=null))},zo=(e,o)=>{Le&&Le[0]!==p&&Le[1](),xe(),pe=[e,o],Le=[p,xe],e.classList.add("is-picked"),document.addEventListener("pointerdown",Vn,!0);let i=[...e.querySelectorAll('button:not(:disabled):not([tabindex="-1"]), [tabindex="0"]')].find(l=>!l.closest(".twk-hint, .twk-portal, [inert]"));i?i.focus({preventScroll:!0,focusVisible:!1}):Re(p)?.blur?.(),document.getSelection?.()?.removeAllRanges()};v.push(xe),p.addEventListener("pointerdown",e=>{let o=e.target;if(Jo(o)||o.closest(".twk-header, .twk-folder-header, button, input, textarea, select")){pe?.[0].contains(o)||xe();return}if(e.button!==0||e.pointerType==="touch")return xe();let i;for(let[l,c]of yt){let k=(c.kind==="folder"?l.firstElementChild:l).getBoundingClientRect();k.height&&e.clientY>=k.top&&e.clientY<k.bottom&&!mn(l)&&(i=[l,c])}if(!i)return xe();e.preventDefault(),zo(...i)},!0);let gn=e=>!!(e&&e.matches&&(e.matches("input, textarea, select")||e.isContentEditable)),Uo=e=>{if(e.key==="Escape"){pe&&(e.stopPropagation(),xe());return}if(!(e.metaKey||e.ctrlKey)||e.altKey||e.repeat||gn(e.composedPath()[0]))return;let o=e.key.toLowerCase();if(o!=="c"&&o!=="v")return;Le&&!Le[0].isConnected&&Le[1](),pe&&mn(pe[0])&&xe();let i=Re(p),l=pe?pe[1]:Le||!i||mn(i)?void 0:Yo(i),c=p.getRootNode();if(!l||o==="c"&&String((c.getSelection?c:document).getSelection?.()||""))return;let k=o==="c"?JSON.stringify(l.kind==="row"?l.entry.get():z(L(),l.path),R,2):"",x=se=>{d||De(se?a("rowCopied","{label} copied",{label:l.label}):a("copyFailed","Copy failed"))},w=pe?.[0],b=Re(p),B=!!b?.matches(":focus-visible");if(!Lt){Lt=A("textarea","twk-sr"),Lt.tabIndex=-1,Lt.setAttribute("aria-hidden","true");for(let se of["copy","paste"])document.addEventListener(se,fe=>Ut?.(fe),!0)}let K=Lt,ae=()=>{Ut=null,document.activeElement===K&&(K.blur(),b?.focus?.({preventScroll:!0,focusVisible:B}))},be=Ut=se=>{if(se.target!==K&&gn(se.target))return;if(se.preventDefault(),ae(),k)return se.clipboardData?.setData("text/plain",k),x(!!se.clipboardData);let fe=se.clipboardData?.getData("text/plain")??null;import("./clip-A3VI53BK.js").then(C=>C.pasteInto(fe,N=>C.pasteScope(Pn,l,N),Pn,w),()=>{})};K.isConnected||document.body.appendChild(K),K.value=k,K.focus({preventScroll:!0}),K.select(),setTimeout(()=>{Ut===be&&(ae(),k&&An(k).then(x))},1e3)},qn=()=>{if(!d){if(_=v.length,lt(s.strings,()=>pn(At,r,f)),cn.length){let e=new Map;for(let l of h)e.has(l.key)||e.set(l.key,l);let o=l=>{let c=e.get(l);return c?c.target[c.key]:f[l]},i=()=>{let l=!1;for(let{node:c,m:k}of cn)try{if(k.render&&Bo(c,!k.render(o))&&(l=!0),k.disabled!=null){let x=typeof k.disabled=="function"?k.disabled(o):k.disabled;Ft(c,!!x)}}catch{}l&&so()};E.add(i),T.add(i),i(),import("./fold-GY47HIQA.js").then(l=>{dn=l.fold},()=>{})}if(S&&ue(St(W(F(S),"values"))),!d){Me?.arm(),Xo(),v.push(ht(p,[[document,"keydown"]],e=>{Me?.onKey(e),Uo(e)})),V=!0;for(let e of I.splice(0)){if(d)break;try{e()}catch(o){console.error("[tweaks] a call queued before ready failed:",o)}}for(let e of On)e.disabled=!1}}},Wn=new Set,Go=(e,o,i)=>{let l=e.range;if(!l||e.m.soft||Wn.has(e))return;let c=typeof i=="string"?i.trim().split(/\s+/).map(k=>["",parseFloat(k)]):Array.isArray(i)?i.map(k=>["",k]):le(i)?Object.entries(i):[["",i]];for(let[k,x]of c){let w=Array.isArray(l)?l:l[k],b=1e-9*Math.max(1,Math.abs(x));if(w&&typeof x=="number"&&(x<w[0]-b||x>w[1]+b)){Wn.add(e),ke("clamp",o,i,w[0],w[1],e.m.type);return}}},Xn=(e,o)=>{if(String(e).split(".").some(Je))return!1;let i=String(e).split("."),l=h.filter(w=>w.path.join(".")===e);if(l.length>1)return ke("ambiguousPath",e,l.length),!1;let c=l[0];if(!c&&i.length>1){let w=m.get(e);return ke(w?"noValue":"noPath",e,w),!1}if(!c){let w=h.filter(b=>b.key===e);if(w.length>1)return ke("ambiguousKey",e,w.length,w[0].path.join(".")),!1;c=w[0]}let k=!c&&(m.get(e)||[...m].find(([w])=>w.split(".").pop()===e)?.[1]);if(!c)return k?ke("noValue",e,k):ke("noControl",e,r.some(w=>w.key===e&&(w.type==="folder"||w.type==="tabs"))),!1;let x=c.target[c.key];if(tt(o))return!1;try{Mt(c,o)}catch(w){return console.error(`[tweaks] set("${e}") failed \u2014 value skipped:`,w),!1}return Go(c,e,o),me(x,c.target[c.key])?(u=c.path.join("."),!0):!1},_e={el:Te,params:f,on(e){return d?()=>{}:(E.add(e),()=>E.delete(e))},set(e,o,i){let l=String(e),c=i?.silent;M(()=>{Xn(l,o)&&ce(c)})},setMany(e,o){if(e==null||typeof e!="object")return;let i=Object.entries(e),l=o?.silent;M(()=>{let c=0;for(let[k,x]of i)try{Xn(k,x)&&c++}catch(w){console.error(`[tweaks] setMany("${k}") failed \u2014 key skipped:`,w)}c>1&&(u=void 0),c&&ce(l)})},reset(){V&&!d&&Mn(Qt),M(g)},toJSON(){return d?{values:{},ui:{}}:{values:L(),ui:qo()}},changes(){return d?{}:ot()},fromJSON(e,o){if(!e||typeof e!="object")return;let i=o?.silent,l=e.values&&typeof e.values=="object"?{...e.values}:e.values,c=e.ui&&typeof e.ui=="object"?{...e.ui}:e.ui;M(()=>{l&&fn(l,i),Wo(c)})},setName(e){d||(U=String(e),Ce.textContent=U,oe(U))},setTheme(e){if(!d){at(p,null);for(let o in P)p.style.setProperty(o,P[o]);st=kn(e),p._twTheme=st,at(p,st),window.dispatchEvent(new Event("twk-retheme"))}},savePreset:e=>{if(d||j||!D||!e)return!1;let o=!0;return M(()=>{o=Fn(e)}),o},loadPreset:e=>d||j||!He()[e]?!1:(M(()=>$n(e)),!0),deletePreset:e=>{D&&M(()=>Bn(e))},presets:()=>d?[]:Object.keys(He()),undo:()=>{Me&&M(Me.undo)},redo:()=>{Me&&M(Me.redo)},destroy(){if(!d){d=!0,te(),po(p),vt(p);for(let e of v.splice(0))try{e()}catch{}E.clear(),y&&(y.remove(),y=null),pt===p&&(pt=null),p.dataset.twkDestroyed="",Te.remove()}}},yn=S&&kt(r).has("image")?import("./image-store-QD5SMZXG.js").then(async e=>{Be=await e.load(S),Be&&(he=e.bind(S,Be,o=>{d?JSON.stringify(F(S)).includes(JSON.stringify(o))&&et():je()},He,o=>!!D&&Ue(o)))},()=>{}):null;yn||(Se=!0);let Rt=yn&&yn.then(Qe),Kt=en.dressed;v.push(en.end);let Yn=ct(r);if(Yn){let e=i=>{if(j=!0,I.length=0,te(),_>=0)for(let l of v.splice(_))try{l()}catch{}for(let l of At.children)l.dataset.twkDestroyed="";throw E.clear(),h.length=0,At.replaceChildren(),d||console.warn(`[tweaks] "${t}": the panel could not be built \u2014 ${_>=0?"the build threw":"its lazy controls failed to load"}; the API is inert`),i},o=Yn.then(qn);_e.ready=p.ready=(Rt||Kt?Promise.all([o,Rt,Kt]):o).then(()=>_e,e),_e.ready.catch(()=>{})}else qn(),_e.ready=p.ready=Rt||Kt?Promise.all([Rt,Kt]).then(()=>_e):Promise.resolve(_e);return _e}var Ro={metaFor:Fe,ensureForMetas:ct,LAZY_IMPORT:ze,createFolder:wt,createControl:dt,makeCopyBtn:Jt,makeResetBtn:zt,addHintMarker:ut};function hr(t=document,n={}){let s=En();return s?s?s(t,Ro,n.strings):Promise.resolve():import("./markup-QM53TQJZ.js").then(()=>En()(t,Ro,n.strings),r=>console.error("[tweaks] markup chunk failed to load:",r))}var Ko=t=>A("div",`${t} twk-standalone twk-portal`),Do=(t,n,s)=>{let r=ct(t);if(!r)return n(),Promise.resolve(s);let a=r.then(n).then(()=>s);return a.catch(()=>{}),a};function br(t,n,s={}){let r=s.key??"value",a=Fe(r,n);if(!a||a.type==="folder"||a.type==="tabs")throw new TypeError(`[tweaks] mountControl: "${r}" is not a single-control schema value`);s.label!=null&&(a.label=String(s.label));let f=!qt.has(a.type),u=Ko("twk-control"),h=bt(u,s.shadow);t.append(h.box);let m=null,E=!1,T=a.value,v,d=!1,V=_=>{me(T,_)&&(T=_,s.onChange&&s.onChange(_,r))},I=()=>{if(E||(m=lt(s.strings,()=>dt(a,f?V:()=>{})),!m))return;a.hint&&ut(m.el,a.hint);let _=()=>{};try{a.render&&!a.render(_)&&m.el.classList.add("twk-cond-hidden")}catch{}try{(typeof a.disabled=="function"?a.disabled(_):a.disabled)&&Ft(m.el,!0)}catch{}u.append(m.el),f&&(T=m.get(),d&&(m.set(v),V(m.get())))},j={el:h.box,set:_=>{E||!f||(m?(m.set(_),V(m.get())):(v=_,d=!0))},get:()=>f?m?m.get():d?v:a.value:void 0,destroy:()=>{E=!0,m&&typeof m.destroy=="function"&&m.destroy(),u.dataset.twkDestroyed="",u.remove(),h.end()},ready:null};return j.ready=Do([a],I,j),h.dressed&&(j.ready=Promise.all([j.ready,h.dressed]).then(()=>j)).catch(()=>{}),j}function kr(t={}){let n=Ko("twk-color-picker"),s=bt(n,t.shadow),r=null,a=!1,f=t.value,u,h=!1,m=null,E=d=>{me(f,d)&&(f=d,t.onChange&&t.onChange(d))},T=()=>{if(a)return;let d=ve("colorpicker");d&&(r=lt(t.strings,()=>d({value:t.value,mode:t.mode},E)),f=r.get(),n.append(r.el),m&&r.setMode(m),h&&(r.set(u),E(r.get())),Dt(r.reflow))},v={el:s.box,set:d=>{a||(r?(r.set(d),E(r.get())):(u=d,h=!0))},get:()=>r?r.get():h?u:t.value,mode:()=>r?r.mode():m||t.mode||"oklch",setMode:d=>{r?r.setMode(d):m=d},reflow:()=>{r&&r.reflow()},destroy:()=>{a=!0,n.remove(),s.end()},ready:null};return v.ready=Do([{type:"color"}],T,v),s.dressed&&(v.ready=Promise.all([v.ready,s.dressed]).then(()=>v)).catch(()=>{}),v}export{kr as createColorPicker,hr as enhance,Zo as gradientCss,Qo as gradientStops,br as mountControl,yr as tweaks};
2
2
  //# sourceMappingURL=core.js.map