tweakit 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/AGENTS.md +1 -1
  2. package/dist/tweaks/{bezier-FGHOXLK7.js → bezier-2RABC6LD.js} +1 -1
  3. package/dist/tweaks/{chunk-3OFFERWV.js → chunk-4ATI34PB.js} +1 -1
  4. package/dist/tweaks/chunk-7OSCMZ2J.js +1 -0
  5. package/dist/tweaks/{chunk-TJ7C7WEG.js → chunk-W3JNIJ2F.js} +1 -1
  6. package/dist/tweaks/{clip-DEE6IYA2.js → clip-ECGCECEC.js} +1 -1
  7. package/dist/tweaks/colour-2RE3FQ5E.js +1 -0
  8. package/dist/tweaks/core.js +1 -1
  9. package/dist/tweaks/{fold-WMNCNKTT.js → fold-UGN7TXGX.js} +1 -1
  10. package/dist/tweaks/{gradient-LEJ2EDYX.js → gradient-DB6XTDHO.js} +1 -1
  11. package/dist/tweaks/{heavy-SO6ALHQ7.js → heavy-PKOMHB3C.js} +1 -1
  12. package/dist/tweaks/image-JD2NSQYE.js +1 -0
  13. package/dist/tweaks/{interval-WUVSRTUI.js → interval-L2E4L3AZ.js} +1 -1
  14. package/dist/tweaks/markup-MLAHTUK4.js +1 -0
  15. package/dist/tweaks/{monitor-FPVS44FV.js → monitor-IEK742PG.js} +1 -1
  16. package/dist/tweaks/{motion-LS7Q6QBU.js → motion-N5UNVR55.js} +1 -1
  17. package/dist/tweaks/{plot-XPUREPOK.js → plot-VVTOY3RA.js} +1 -1
  18. package/dist/tweaks/{point-EQKNOK5O.js → point-YMMHSLO7.js} +1 -1
  19. package/dist/tweaks/{shadow-YHAPHE3U.js → shadow-IKYOV3VN.js} +1 -1
  20. package/dist/tweaks/{sides-LN4RJOHZ.js → sides-FH227Z54.js} +1 -1
  21. package/dist/tweaks/{spring-FJQOZ2JN.js → spring-3PKAFIH7.js} +1 -1
  22. package/dist/tweaks/{tabs-C2N4PHDG.js → tabs-BKK5NIIY.js} +1 -1
  23. package/dist/tweaks.css +1 -1
  24. package/dist/tweaks.js +3 -3
  25. package/dist/types/tweaks/schema.d.ts +1 -0
  26. package/dist/types/tweaks/types.d.ts +5 -3
  27. package/package.json +1 -1
  28. package/dist/tweaks/chunk-JLZ4DKW3.js +0 -1
  29. package/dist/tweaks/colour-CZXGQSCD.js +0 -1
  30. package/dist/tweaks/image-KDCHYEEV.js +0 -1
  31. package/dist/tweaks/markup-GW37JHKB.js +0 -1
@@ -57,6 +57,7 @@ interface Meta {
57
57
  decimals?: number;
58
58
  maxSize?: number;
59
59
  upload?: boolean;
60
+ clear?: boolean;
60
61
  action?: () => void;
61
62
  buttons?: Record<string, () => void> | Array<{
62
63
  label: string;
@@ -249,15 +249,17 @@ export type SchemaObject = {
249
249
  } | {
250
250
  type: "image";
251
251
  value?: string;
252
- /** Supplied images to pick from, as URLs or `{ value, label }`. The control becomes a gallery of
253
- * tiles with the upload below them, and the param is the chosen URL or the upload's data URL. */
252
+ /** Supplied images to pick from, as URLs or `{ value, label }`. The control becomes a row naming the chosen
253
+ * image that opens a pane of tiles with the upload below them, and the param is the chosen URL or the upload's data URL. */
254
254
  options?: Option[];
255
- /** Tiles per row in the gallery, 1 to 4 (2 for up to four options, then 3). */
255
+ /** Tiles per row in the gallery, 1 to 6 (by default one per option for two or three, 2 for one or four, then 3). */
256
256
  cols?: number;
257
257
  /** The largest upload taken, in bytes (10 MB unless set); a bigger file is refused with a note. */
258
258
  maxSize?: number;
259
259
  /** `false` leaves the upload button out of a gallery: the options are the whole choice. */
260
260
  upload?: boolean;
261
+ /** `false` leaves Clear out of a gallery, and Delete no longer empties it: for a choice that must keep a value. */
262
+ clear?: boolean;
261
263
  } | {
262
264
  type: "button";
263
265
  action: () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tweakit",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "type": "module",
5
5
  "main": "./dist/tweaks.js",
6
6
  "types": "./dist/types/tweaks/core.d.ts",
@@ -1 +0,0 @@
1
- var G=Object.assign(Object.create(null),{ease:[.25,.1,.25,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]}),k=e=>Math.min(1,Math.max(0,e)),P=15;function U(e){if(typeof e!="string")return null;let n=e.trim().toLowerCase();if(G[n])return G[n];let t=/^cubic-bezier\(([^()]*)\)$/.exec(n);if(!t)return null;let r=t[1].split(",").map(o=>o.trim()?Number(o):NaN);return r.length!==4||!r.every(Number.isFinite)?null:[k(r[0]),r[1],k(r[2]),r[3]]}var Be=e=>U(e)?e.trim().toLowerCase():"linear";function q(e){let n=[];for(let t=0;t<=P;t++){let r=t/P,o=1-r,i=3*o*o*r,a=3*o*r*r,s=r*r*r;n.push([i*e[0]+a*e[2]+s,k(i*e[1]+a*e[3]+s)])}return n}function Oe(e,n){if(n=k(n),!e)return n;let t=q(e);for(let r=1;r<t.length;r++)if(n<=t[r][0]){let[o,i]=t[r-1],[a,s]=t[r];return a>o?i+(s-i)*(n-o)/(a-o):s}return 1}var F=e=>+(e*100).toFixed(2);function X(e){let n=[...e.stops].sort((s,c)=>s.pos-c.pos),t=s=>`${s.color} ${F(s.pos)}%`,r=U(e.easing);if(!r||n.length<2)return n.map(t).join(", ");let o=q(r),i=e.interpolation||"oklch",a=[t(n[0])];for(let s=1;s<n.length;s++){let c=n[s-1],w=n[s],u=w.pos-c.pos;if(u>1e-6)for(let d=1;d<P;d++){let[m,p]=o[d];a.push(`color-mix(in ${i}, ${c.color}, ${w.color} ${F(p)}%) ${F(c.pos+u*m)}%`)}a.push(t(w))}return a.join(", ")}function ae(e,n="to right"){return`linear-gradient(in ${e.interpolation||"oklch"} ${typeof n=="number"?`${n}deg`:n}, ${X(e)})`}var le=e=>e.replace(/([a-z])(?=[A-Z])|([A-Z\d])(?=[A-Z][a-z])/g,"$1$2 ").replace(/^./,n=>n.toUpperCase()).trim(),B=(e,n,t)=>Math.min(t,Math.max(n,e)),_e=e=>!!e&&typeof e=="object",$e=e=>typeof e=="string"&&(/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(e.trim())||/^(oklch|oklab|rgba?|hsla?|hwb|lab|lch|color)\(/i.test(e.trim())),Y=20,ce=e=>{let n=String(e),t=/e-(\d+)$/i.exec(n);if(t)return Math.min(Y,Number(t[1])+(n.split("e")[0].split(".")[1]||"").length);let r=n.indexOf(".");return r===-1?0:Math.min(Y,n.length-r-1)},ue=(e,n,t)=>{if(!(t>0))return e;let r=ce(t),o=Number((+n).toFixed(r)),i=Math.round((e-o)/t);return Number.isFinite(i)?Number((o+i*t).toFixed(r)):e},Ve=(e,n,t,r=e)=>{let o=s=>ue(s,r,t),i=Number.isFinite(e)?o(e):-1/0,a=Number.isFinite(n)?o(n):1/0;return i<e&&(i=o(i+t)),a>n&&(a=o(a-t)),i>a?[e,e]:[i,a]},de=(e,n)=>{let t=n-e;return t<=1?.01:t<=10?.1:t<=100?1:10},je=(e,n,t,r=0,o=null)=>{let i=+e,a=+n,s=+t;if(Number.isFinite(i)||(i=r),Number.isFinite(a)||(a=o??i+100),a<i){let c=i;i=a,a=c}return(!(s>0)||s>a-i)&&(s=de(i,a)),{min:i,max:a,step:s}},Ie=(e,n,t,r,o,i=null)=>{let a=e.shiftKey?10:1;switch(e.key){case"ArrowRight":case"ArrowUp":return n+t*a;case"ArrowLeft":case"ArrowDown":return n-t*a;case"PageUp":return i!=null?n+i:null;case"PageDown":return i!=null?n-i:null;case"Home":return r;case"End":return o}return null},ze=(e,n,t,r,o=0)=>{let i=e.offsetLeft,a=i+e.offsetWidth,s=n.offsetLeft,c=s+n.offsetWidth;return t<a&&t+r>i||t<c+o&&t+r>s-o},De=e=>e>=0?[0,e<=1?1:e*3||100]:[e>=-1?-1:e*3,0],fe=e=>e==null?void 0:typeof e=="object"?e.value:e,me=e=>{try{return JSON.stringify(e)}catch{return String(e)}},we=e=>e==null?"":typeof e=="string"?le(e):typeof e=="object"?e.label??(e.value!==void 0?String(e.value):me(e)):String(e),A=(e,n,t)=>{let r=document.createElement(e);return n&&(r.className=n),t!=null&&(r.innerHTML=t),(e=="input"||e=="textarea")&&(r.setAttribute("autocomplete","off"),r.setAttribute("data-1p-ignore",""),r.setAttribute("data-lpignore","true")),r},Ke=(e,n)=>{let t=A("button",e,n);return t.type="button",t},ge=(e,n,t)=>{let r=A(e,n);return r.textContent=t,e==="button"&&(r.type="button"),r},be=e=>["pointerdown","pointermove","pointerup","click"].forEach(n=>e.addEventListener(n,t=>t.stopPropagation())),he=e=>{requestAnimationFrame(e),document.fonts&&document.fonts.ready&&document.fonts.ready.then(e)},pe=(e,n,t)=>{let r=e.isConnected;r||requestAnimationFrame(()=>{e.isConnected&&(r=!0)});let o=a=>{if(!e.isConnected){(r||e.closest("[data-tw-destroyed]"))&&i();return}r=!0,t(a)},i=()=>n.forEach(([a,s])=>a.removeEventListener(s,o));return n.forEach(([a,s])=>a.addEventListener(s,o)),i},We=()=>requestAnimationFrame(()=>window.dispatchEvent(new Event("tw-reflow"))),Ge=(e,n)=>{e.addEventListener("pointerenter",()=>{e.classList.add("is-hover"),n&&n()}),e.addEventListener("pointerleave",()=>e.classList.remove("is-hover"))},C=!1;typeof document<"u"&&(document.addEventListener("pointerdown",()=>{C=!0},!0),document.addEventListener("keydown",()=>{C=!1},!0));var Ue=e=>{e.addEventListener("focus",()=>e.classList.toggle("tw-focus-quiet",C)),e.addEventListener("blur",()=>e.classList.remove("tw-focus-quiet"))},qe=(e,n)=>e.addEventListener("keydown",t=>{t.key!=="Escape"||e.value===n()||(t.preventDefault(),t.stopPropagation(),e.value=n())}),ve=(e,n,{width:t,fallbackH:r=300,gap:o=6,align:i="start",prefer:a="below"}={})=>{let s=e.getBoundingClientRect();t==="match"&&(n.style.width=s.width+"px");let c=n.offsetWidth||(t==="match"?s.width:t||0),u=i==="end"||t==="match"&&c>s.width+.5?s.right-c:i==="center"?s.left+s.width/2-c/2:s.left;n.style.left=Math.max(8,Math.min(u,window.innerWidth-c-8))+"px";let d=n.offsetHeight||r,m=window.innerHeight-s.bottom,p=s.top,g=d+12,v=m>=g,E=p>=g,y=a==="above"?E||!v&&p>=m:!v&&(E||p>m),M=y?s.top-d-o:s.bottom+o;n.style.top=B(M,o,window.innerHeight-d-o)+"px",n.dataset.side=y?"above":"below",n.style.setProperty("--tw-pop-h",String(d))},Ee=Object.assign(Object.create(null),{accent:"--tw-accent",onAccent:"--tw-on-accent",base:"--tw-base",dropdownBg:"--tw-dropdown-bg",surface:"--tw-surface",surfaceHover:"--tw-surface-hover",surfaceActive:"--tw-surface-active",border:"--tw-border",borderHover:"--tw-border-hover",selection:"--tw-selection",title:"--tw-text-root",section:"--tw-text-section",text:"--tw-text-primary",label:"--tw-text-label",textMuted:"--tw-text-secondary",textFaint:"--tw-text-tertiary",focus:"--tw-text-focus",success:"--tw-success",danger:"--tw-danger",shadow:"--tw-shadow-dropdown",shadowPanel:"--tw-shadow-panel",shadowPanelLifted:"--tw-shadow-panel-lifted",font:"--tw-font-sans",fontMono:"--tw-font-mono",radius:"--tw-radius",density:"--tw-row-height",width:"--tw-width"}),ye=new Set(["radius","density","width"]),S=e=>(e/=255,e<=.03928?e/12.92:((e+.055)/1.055)**2.4),Le=e=>{e=String(e).trim();let n=/^#([0-9a-f]{3})$/i.exec(e);if(n)return n[1].split("").map(t=>parseInt(t+t,16));if(n=/^#([0-9a-f]{6})$/i.exec(e),n)return[0,2,4].map(t=>parseInt(n[1].slice(t,t+2),16));if(n=/^rgba?\(([^)]+)\)/i.exec(e),n){let t=n[1].split(/[\s,/]+/).filter(Boolean).map(parseFloat);return[t[0],t[1],t[2]]}return null},Me=e=>{let n=Le(e);if(!n||n.some(r=>!Number.isFinite(r)))return"#ffffff";let t=.2126*S(n[0])+.7152*S(n[1])+.0722*S(n[2]);return 1.05/(t+.05)>=(t+.05)/.0571?"#ffffff":"#161616"},Xe=e=>{if(!e||typeof e!="object")return null;let n={};for(let[t,r]of Object.entries(e)){if(t.startsWith("--")){n[t]=String(r);continue}let o=Ee[t];o&&(n[o]=ye.has(t)&&typeof r=="number"?`${r}px`:String(r))}return n["--tw-accent"]&&!n["--tw-on-accent"]&&(n["--tw-on-accent"]=Me(n["--tw-accent"])),Object.keys(n).length?n:null},Te=(e,n)=>{if(e){if(e._twAppliedVars)for(let t of e._twAppliedVars)e.style.removeProperty(t);if(e._twAppliedVars=n?Object.keys(n):null,n)for(let t in n)e.style.setProperty(t,n[t])}},xe=(e,n)=>{let t=n?.closest('[data-tw-scheme="light"]')?"light":n?.closest('[data-tw-scheme="dark"]')?"dark":null;t?e.setAttribute("data-tw-scheme",t):e.removeAttribute("data-tw-scheme")},Z=(e,n)=>{Te(e,n?.closest(".tw-panel")?._twTheme),xe(e,n)},L=null,O=null,Ye=e=>{L&&(!e||e.contains(O))&&L()};function Ze(e,n,t,r={}){let o=!1,i=null,a,s=!1,c=null,w=()=>n.focus({focusVisible:!s});t.classList.add("tw-portal"),t.inert=!0,t.addEventListener("pointerdown",l=>n.closest(".tw-panel")?._twEditPointer?.(l),!0),be(t);let u=0,d=0,m=!1,p=()=>{t.style.left=B(parseFloat(t.style.left),8,window.innerWidth-t.offsetWidth-8)+"px",t.style.top=B(parseFloat(t.style.top),8,window.innerHeight-t.offsetHeight-8)+"px"},g=()=>{m?p():ve(n,t,{width:r.width??"match",fallbackH:r.fallbackH,gap:r.gap,align:r.align});let l=n.getBoundingClientRect();u=parseFloat(t.style.left)-l.left,d=parseFloat(t.style.top)-l.top};t.addEventListener("pointerdown",l=>{if(l.target!==t||l.button!==0||!o||r.movable===!1)return;l.preventDefault();let f=l.pointerId,V=l.clientX,j=l.clientY,I=parseFloat(t.style.left),z=parseFloat(t.style.top),se=m,R=!1;try{t.setPointerCapture(f)}catch{}let D=h=>{if(h.pointerId===f){if(!R){if(Math.hypot(h.clientX-V,h.clientY-j)<4)return;R=m=!0,t.classList.add("is-moving")}t.style.left=I+h.clientX-V+"px",t.style.top=z+h.clientY-j+"px",g()}},x=h=>{h.pointerId===f&&W()},K=h=>{if(!(h.key!=="Escape"||!R)){h.preventDefault(),h.stopPropagation(),t.style.left=I+"px",t.style.top=z+"px",m=se,g(),W();try{t.releasePointerCapture(f)}catch{}}},W=()=>{t.removeEventListener("pointermove",D),t.removeEventListener("pointerup",x),t.removeEventListener("pointercancel",x),t.removeEventListener("lostpointercapture",x),document.removeEventListener("keydown",K,!0),t.classList.remove("is-moving")};t.addEventListener("pointermove",D),t.addEventListener("pointerup",x),t.addEventListener("pointercancel",x),t.addEventListener("lostpointercapture",x),document.addEventListener("keydown",K,!0)});let v=()=>{if(o){if(!e.isConnected)return b();g(),r.onReflow&&r.onReflow()}},E=()=>{if(!o)return;if(!e.isConnected)return b();let l=n.getBoundingClientRect(),f=n.closest(".tw-panel")?.getBoundingClientRect();if(!(l.width||l.height)||l.bottom<0||l.top>window.innerHeight||l.right<0||l.left>window.innerWidth||f?.height&&(l.bottom<f.top||l.top>f.bottom))return b();t.style.left=l.left+u+"px",t.style.top=l.top+d+"px"},y=l=>{!e.contains(l.target)&&!t.contains(l.target)&&b()},M=l=>{l.key==="Escape"&&o&&!l.defaultPrevented&&(l.preventDefault(),l.stopPropagation(),b(),w())},_=l=>{if(!o)return;let f=l.relatedTarget;(f?e.contains(f)||t.contains(f):C)||(b(),f&&!n.closest(".tw-panel")?.contains(f)&&setTimeout(()=>{!o&&document.activeElement===f&&n.focus()},0))};e.addEventListener("focusout",_),t.addEventListener("focusout",_);let oe=()=>t.querySelector('button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [href], [tabindex]:not([tabindex="-1"])'),H=()=>Z(t,e),ie=l=>{l.every(f=>f.target===t)||H()},$=()=>{L&&L!==b&&L(),L=b,O=n,o=!0,e.classList.add("is-open"),n.setAttribute("aria-expanded","true"),clearTimeout(a);let l=t.parentNode===document.body;m=!1,s=C,t.inert=!1,l||document.body.appendChild(t),Z(t,e),window.addEventListener("tw-retheme",H),typeof MutationObserver=="function"&&(i=new MutationObserver(ie),i.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:["data-tw-scheme"]})),l?g():(t.style.transition="none",g(),t.offsetWidth,t.style.transition=""),typeof ResizeObserver=="function"&&(c=new ResizeObserver(()=>{o&&g()}),c.observe(t)),requestAnimationFrame(()=>{if(o&&(t.classList.add("is-open"),r.onOpen&&r.onOpen(),g(),!t.contains(document.activeElement))){let f=r.initialFocus&&r.initialFocus()||oe();f&&f.focus({focusVisible:!C})}}),requestAnimationFrame(function f(){if(o){if(!e.isConnected)return b();requestAnimationFrame(f)}}),setTimeout(()=>{o&&document.addEventListener("pointerdown",y,!0)},0),document.addEventListener("keydown",M),window.addEventListener("scroll",E,!0),window.addEventListener("resize",v)},b=()=>{L===b&&(L=null,O=null),t.contains(document.activeElement)&&w(),o=!1,e.classList.remove("is-open"),t.classList.remove("is-open"),t.inert=!0,n.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",y,!0),document.removeEventListener("keydown",M),window.removeEventListener("scroll",E,!0),window.removeEventListener("resize",v),window.removeEventListener("tw-retheme",H),i&&(i.disconnect(),i=null),c?.disconnect(),c=null,a=setTimeout(()=>{o||t.remove()},200)};return n.addEventListener("click",()=>{n.disabled||(o?b():$())}),{open:$,close:b,isOpen:()=>o,reflow:v}}var Je=(e,n)=>{if(e=e.toLowerCase(),e.includes(n))return!0;if(n.length<3)return!1;let t=n.length,r=e.length,o=new Array(r+1).fill(0);for(let i=1;i<=t;i++){let a=[i];for(let s=1;s<=r;s++)a[s]=Math.min(o[s]+1,a[s-1]+1,o[s-1]+(n[i-1]===e[s-1]?0:1));o=a}return Math.min(...o)<=(n.length<6?1:2)},ee=typeof matchMedia=="function"?matchMedia("(prefers-reduced-motion: reduce)"):{matches:!1},N="cubic-bezier(0.22, 1, 0.36, 1)",Qe="cubic-bezier(0.34, 1.2, 0.64, 1)",Ce=(e,n)=>{ee.matches||typeof e.animate!="function"||(e.style.transformOrigin=n>0?"left center":"right center",e.animate([{transform:"scaleX(1)"},{transform:"scaleX(1.18)"},{transform:"scaleX(1)"}],{duration:300,easing:N}))},Ae=(e,n,t)=>{let r=e.querySelector('[data-active="true"]');if(!r)return;let o=r.offsetLeft,i=r.offsetWidth,a=parseFloat(n.style.left);n.style.left=o+"px",n.style.width=i+"px",t&&Number.isFinite(a)&&a!==o&&Ce(n,o>a?1:-1)},ke=32,He=200,Re=8,et=(e,n,t)=>{let r=t<n.left?t-n.left:t>n.right?t-n.right:0,o=Math.sign(r)*Re*Math.sqrt(Math.min(Math.max(0,Math.abs(r)-ke)/He,1));e.style.width=o?`calc(100% + ${Math.abs(o)}px)`:"",e.style.transform=o<0?`translateX(${o}px)`:""},tt=e=>{e.style.transition=`width 0.35s ${N}, transform 0.35s ${N}`,e.style.width="",e.style.transform="",setTimeout(()=>{e.style.transition=""},360)},nt=(e,n)=>{e.classList.toggle("is-disabled",n);for(let t of e.children)t.classList.contains("tw-portal")||(t.inert=n)},J=(e,n,t,r)=>{e.classList.toggle("is-collapsed",r),n.setAttribute("aria-expanded",String(!r)),t.inert=r},rt=(e,n,t,r,o)=>{if(ee.matches||typeof t.animate!="function"){J(e,n,t,r),o&&setTimeout(o,370);return}let i=t.getBoundingClientRect(),a=i.height,s=e.closest(".tw-panel"),c=s&&getComputedStyle(s),w=c?parseFloat(c.maxHeight):NaN,u=c&&s.dataset.mode==="floating"&&w>=0?s.getBoundingClientRect().top+w-parseFloat(c.paddingBottom)-parseFloat(c.borderBottomWidth):1/0,d=Math.max(0,Math.min(window.innerHeight,u)-i.top),m=getComputedStyle(t).getPropertyValue("--tw-ease-fold").trim();t._twFold?.cancel(),t._twFold=null,t.style.transition="none",t.style.gridTemplateRows="",J(e,n,t,r);let p=0;if(!r){for(let M of t.firstElementChild?.getAnimations?.()??[])M.transitionProperty!=="opacity"&&M.finish();p=t.getBoundingClientRect().height}let g=Math.min(a,d),v=Math.min(p,d),E=()=>{t.style.gridTemplateRows="",t.offsetHeight,t._twFold?.cancel(),t._twFold=null,t.style.transition="",o?.()};if(Math.abs(g-v)<1)return E();t.style.gridTemplateRows="1fr";let y=t._twFold=t.animate([{height:g+"px"},{height:v+"px"}],{duration:350,easing:m,fill:"forwards"});y.onfinish=()=>{t._twFold===y&&E()}},te=(e,n)=>{let t=e.findIndex(r=>r.dataset.value===String(n));return t<0&&e.length?0:t},Fe=(e,n)=>{let t=te(e,n);e.forEach((r,o)=>{let i=r.dataset.value===String(n);r.dataset.active=String(i),r.setAttribute("aria-checked",String(i)),r.tabIndex=o===t?0:-1})},Pe=(e,n,t)=>{let r=ge("button",e,we(n));return r.setAttribute("role","radio"),r._twVal=fe(n),r.dataset.value=r._twVal,r.addEventListener("click",()=>t(r._twVal)),r},Se=(e,n,t,r=0)=>{switch(e){case"ArrowRight":return(n+1)%t;case"ArrowLeft":return(n-1+t)%t;case"ArrowDown":return r<0?-1:r?n+r<t?n+r:n:(n+1)%t;case"ArrowUp":return r<0?-1:r?n-r>=0?n-r:n:(n-1+t)%t;case"Home":return 0;case"End":return t-1}return-1};function ot(e,n,t,r){let o=A("div","tw-seg");o.setAttribute("role","radiogroup"),r&&o.setAttribute("aria-label",r);let i=A("div","tw-seg-pill");o.append(i);let a=e.map(u=>{let d=Pe("tw-seg-btn",u,m=>w(m));return o.append(d),d}),s=u=>Ae(o,i,u),c=()=>{Fe(a,n),s(!0)},w=(u,d=!0)=>{u!=null&&!a.some(m=>m._twVal===u)||(n=u,c(),d&&t(u))};return o.addEventListener("keydown",u=>{let d=te(a,n);if(d<0)return;let m=Se(u.key,d,a.length);m<0||(u.preventDefault(),w(a[m]._twVal),a[m].focus())}),c(),he(()=>{s(),o.classList.add("is-ready")}),pe(o,[[window,"tw-reflow"]],()=>s()),{el:o,set:u=>w(u,!1),get:()=>n}}var it=(e,n="",t=2,r=24)=>`<svg${n?` class="${n}"`:""} viewBox="0 0 ${r} ${r}" fill="none" stroke="currentColor" stroke-width="${t}" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`,st=(e,n)=>({el:e,set:()=>{},get:()=>{},destroy:n}),ne={},at=(e,n)=>{ne[e]=n},lt=e=>ne[e],re=null,ct=e=>{re=e},ut=()=>re,T=null,Q=0,dt=e=>{T||(T=A("div","tw-sr"),T.setAttribute("role","status")),T.isConnected||document.body.appendChild(T),T.textContent="",clearTimeout(Q),Q=setTimeout(()=>{T.textContent=e},100)};export{U as a,Be as b,Oe as c,X as d,ae as e,le as f,B as g,_e as h,$e as i,ce as j,ue as k,Ve as l,de as m,je as n,Ie as o,ze as p,De as q,fe as r,me as s,we as t,A as u,Ke as v,ge as w,be as x,he as y,pe as z,We as A,Ge as B,Ue as C,qe as D,ve as E,Xe as F,Te as G,xe as H,Z as I,Ye as J,Ze as K,Je as L,ee as M,N,Qe as O,Ae as P,et as Q,tt as R,nt as S,rt as T,te as U,Fe as V,Pe as W,Se as X,ot as Y,it as Z,st as _,at as $,lt as aa,ct as ba,ut as ca,dt as da};
@@ -1 +0,0 @@
1
- import{c as a,d as b,e as c,f as d,g as e}from"./chunk-TJ7C7WEG.js";import"./chunk-3OFFERWV.js";import"./chunk-JLZ4DKW3.js";export{a as CHECKER,d as createPickerBody,b as isColor,e as oklchStr,c as parseColor};
@@ -1 +0,0 @@
1
- import{i as K}from"./chunk-3OFFERWV.js";import{$ as O,W as _,X as j,Z as N,r as U,u,v as k,w as x}from"./chunk-JLZ4DKW3.js";var Z=e=>String(e).replace(/[\\"]/g,"\\$&").replace(/[\x00-\x1f\x7f]/g,m=>"\\"+m.charCodeAt(0).toString(16)+" "),L=e=>`url("${Z(e)}")`,E=1<<20,z=e=>e>=E?`${Math.round(e/E*10)/10} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`,F=e=>{if(/^data:/i.test(e))return"";let m=e.split(/[?#]/)[0].split("/").pop().replace(/\.\w+$/,"");try{return decodeURIComponent(m)}catch{return m}},q=N('<path d="M12 15V4m-4.5 4.5L12 4l4.5 4.5M4 15v3a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-3"/>');function G(e,m){let r=typeof e.value=="string"?e.value:"",S=new Set,v=(Array.isArray(e.options)?e.options:[]).map(t=>({value:U(t),label:t&&typeof t=="object"&&t.label!=null?String(t.label):""})).filter(t=>typeof t.value=="string"&&!!t.value&&!S.has(t.value)&&!!S.add(t.value)),H=e.upload!==!1||!v.length,$=+e.maxSize>0?+e.maxSize:10*E,g=u("input","tw-image-input");g.type="file",g.accept="image/*";let w=u("span","tw-image-note"),b=u("span","tw-image-live");b.setAttribute("role","status");let I,C=t=>{w.textContent=b.textContent=t,clearTimeout(I),I=setTimeout(()=>{w.textContent=b.textContent=""},2600)},y,A=0,f=(t,a=!0)=>{A++,r=t,y(),a&&m(r)},B=t=>{if(!t)return;if(!t.type.startsWith("image/"))return C("Not an image");if(t.size>$)return C(`${z(t.size)}, max ${z($)}`);let a=new FileReader,c=++A;a.onload=()=>{A===c&&f(String(a.result))},a.onerror=()=>C("Couldn't read the file"),a.readAsDataURL(t)},R=(t,a)=>{let c=()=>!!t.closest(".is-disabled");t.addEventListener("dragover",o=>{c()||(o.preventDefault(),a.dataset.over="true")}),t.addEventListener("dragleave",()=>{a.dataset.over="false"}),t.addEventListener("drop",o=>{a.dataset.over="false",!c()&&(o.preventDefault(),B(o.dataTransfer?.files[0]))})};g.addEventListener("change",()=>{B(g.files?.[0]),g.value=""});let p;if(v.length){p=u("div","tw-image tw-image-gallery");let t=H?k("tw-button tw-image-upload",q):null,a=x("button","tw-image-clear","Clear");a.type="button",a.setAttribute("aria-label",`${e.label}: clear the image`);let c=u("div","tw-image-head");c.append(x("span","tw-image-label",e.label),a);let o=u("div","tw-image-grid");o.setAttribute("role","radiogroup"),o.setAttribute("aria-label",e.label);let M=v.length,T=Math.min(4,Math.max(1,e.cols|0||(M<=3?Math.max(2,M):M===4?2:3)));o.style.setProperty("--tw-img-cols",String(T));let P=(n,l)=>{let s=_("tw-image-tile",n,i=>f(i));return s.textContent="",s.setAttribute("aria-label",l),s.style.backgroundImage=L(n),s},h=v.map((n,l)=>{let s=P(n.value,n.label||F(n.value)||`Image ${l+1}`);return o.append(s),s}),d=k("tw-image-tile tw-image-custom");d.setAttribute("role","radio");let D=()=>d.parentNode?[...h,d]:h;y=()=>{let n=d.matches(":focus");r&&!h.some(i=>i._twVal===r)?(d._twVal=r,d.style.backgroundImage=L(r),d.setAttribute("aria-label",F(r)||"Uploaded image"),d.parentNode||o.append(d)):d.remove();let l=D(),s=Math.max(0,l.findIndex(i=>i._twVal===r));l.forEach((i,W)=>{let V=!!r&&i._twVal===r;i.dataset.active=String(V),i.setAttribute("aria-checked",String(V)),i.tabIndex=W===s?0:-1}),n&&!d.parentNode&&l[s].focus(),a.hidden=!r},o.addEventListener("keydown",n=>{let l=D(),s=l.indexOf(n.target);if(s<0)return;if((n.key==="Delete"||n.key==="Backspace")&&!n.altKey&&!n.metaKey&&!n.ctrlKey){n.preventDefault(),f(""),h[0].focus();return}let i=j(n.key,s,l.length,T);i<0||(n.preventDefault(),i!==s&&(f(l[i]._twVal),l[i].focus()))}),a.addEventListener("click",()=>{f(""),(t||h[0]).focus()}),p.append(c,o,b),t&&(t.setAttribute("aria-label",`${e.label}: upload an image`),t.append(w,x("span","tw-image-text","Upload image")),t.addEventListener("click",()=>g.click()),p.append(t,g),R(p,p))}else{let t=K("tw-image",e.label);p=t.root,t.trigger.removeAttribute("aria-expanded"),t.trigger.setAttribute("aria-label",`${e.label}: choose an image`);let a=u("span","tw-image-text"),c=u("span","tw-trigger-chip tw-image-thumb");t.right.append(c,w,a),p.append(g,b),y=()=>{c.dataset.set=r?"true":"false",c.style.backgroundImage=r?L(r):"",a.textContent=r?"Replace":"Drop or choose"},t.trigger.addEventListener("click",()=>g.click()),R(t.trigger,t.trigger)}return y(),{el:p,set:t=>{t!=null&&typeof t!="string"||f(t||"",!1)},get:()=>r}}O("image",G);
@@ -1 +0,0 @@
1
- import{T as L,aa as O,ba as T,f as H,u as k,v as C}from"./chunk-JLZ4DKW3.js";var j=[],F=e=>({...Object.fromEntries(j.map(t=>[t,a(e[t])])),mode:e.mode}),A={slider:e=>({value:a(e.value),min:a(e.min),max:a(e.max),step:a(e.step),soft:v(e.soft),unit:e.unit}),checkbox:e=>e.options?{type:"radiogrid",options:d(e.options),value:e.value,cols:a(e.cols)}:{value:e.checked==="true"},radiogrid:e=>({options:d(e.options),value:e.value,cols:a(e.cols)}),list:e=>({options:d(e.options),value:e.value}),image:e=>({value:e.value,options:e.options?d(e.options):void 0,cols:a(e.cols),maxSize:a(e.maxSize),upload:e.upload==="false"?!1:void 0}),buttongroup:e=>({buttons:d(e.buttons).map(t=>({label:t}))}),separator:()=>({}),number:e=>({value:a(e.value),min:a(e.min),max:a(e.max),step:a(e.step),unit:e.unit}),text:e=>({value:e.value??"",placeholder:e.placeholder,rows:a(e.rows)}),fpsgraph:e=>({label:e.label??"FPS"}),interval:e=>({value:e.value?e.value.split(",").map(Number):void 0,min:a(e.min),max:a(e.max),step:a(e.step)}),sides:e=>({value:e.value??e,corners:v(e.corners),unit:e.unit,step:a(e.step),min:a(e.min),max:a(e.max)}),shadow:e=>({value:e.value??{...e,inset:v(e.inset)}}),spring:F,motion:e=>({...F(e),curve:e.curve&&e.curve.includes(",")?e.curve.split(",").map(Number):e.curve,duration:a(e.duration)}),cubicbezier:e=>({value:e.value?e.value.split(",").map(Number):void 0}),point:e=>{let t=(e.value||"").split(",").map(o=>parseFloat(o));return{components:d(e.components||"X,Y").map((o,i)=>({key:o.toLowerCase(),label:o,value:isNaN(t[i])?0:t[i],step:a(e.step),min:a(e.min),max:a(e.max)})),pad:v(e.pad),invertY:e.invertY==="true"}},plot:e=>({expr:e.expr,xMin:a(e.xmin),xMax:a(e.xmax),yMin:a(e.ymin),yMax:a(e.ymax),samples:a(e.samples),editable:e.editable!=="false"})},a=e=>{if(e==null||e==="")return;let t=+e;return Number.isFinite(t)?t:void 0},v=e=>e==="true"||e==="",d=e=>(e||"").split(",").map(t=>t.trim()).filter(Boolean),Y=(e,t)=>{let o=t.dataset,i=o.tw,y=o.label??H(o.key||i),b=e.hasOwn(A,i)?A[i](o,t,y):e.LAZY_IMPORT[i]||O(i)?{...o}:null;return b?e.metaFor("v",{type:i,label:y,...b}):null},I=(e,t)=>{e.dataset.value=t==null?"":Array.isArray(t)?t.join(","):typeof t=="object"?Object.values(t).join(","):String(t)},K=(e,t,o)=>{I(e,o),e.dispatchEvent(new CustomEvent("tw:change",{bubbles:!0,detail:{key:t,value:o}}))},x=(e,t)=>[...typeof e.matches=="function"&&e.matches(t)?[e]:[],...e.querySelectorAll(t)];async function q(e,t){let{createFolder:o,createControl:i,makeCopyBtn:y,makeResetBtn:b,addHintMarker:R,restoreDefault:B,hasOwn:_,valueChanged:D,ensureForMetas:N}=t;j=t.SPRING_KEYS,x(e,'.tw-panel[data-mode="inline"]:not([data-tw-panel-bound])').forEach(n=>{let r=n.querySelector(":scope > .tw-header"),c=n.querySelector(":scope > .tw-controls");if(!r||!c)return;n.setAttribute("data-tw-panel-bound","");let p=k("div","tw-body");n.insertBefore(p,c),p.append(c);let l=r.querySelector(".tw-header-toggle"),s=r.querySelector(".tw-title");if(!l&&s&&(l=C("tw-header-toggle"),s.replaceWith(l),l.append(s)),!!l&&(l.setAttribute("aria-expanded","true"),l.addEventListener("click",()=>L(n,l,p,!n.classList.contains("is-collapsed"))),!r.querySelector(".tw-toolbar"))){let f=()=>[...n.querySelectorAll("[data-tw]")].map(u=>u._tw).filter(u=>u&&u.ctrl.get()!==void 0),g=()=>{let u=Object.create(null);for(let h of f()){let M=h.key,P=2;for(;_(u,M);)M=`${h.key}-${P++}`;u[M]=h.ctrl.get()}return JSON.stringify(u,null,2)},m=()=>{for(let u of f())u.reset()},S=k("div","tw-toolbar");S.append(y(()=>[g(),-1]),b(m)),r.append(S)}}),x(e,'[data-tw="folder"]:not([data-tw-bound])').forEach(n=>{n.setAttribute("data-tw-bound","");let r=o({label:n.dataset.label||"Folder"});[...n.children].forEach(c=>r.body.append(c)),n.append(r.el)});let w=x(e,"[data-tw]:not([data-tw-bound])").map(n=>({host:n,meta:Y(t,n)})).filter(n=>n.meta);w.forEach(({host:n})=>n.setAttribute("data-tw-bound",""));let E=N(w.map(n=>n.meta));E&&await E.catch(()=>{});for(let{host:n,meta:r}of w){let c=n.dataset.key||r.label,p,l=m=>{D(p,m)&&(p=m,K(n,c,m))},s=i(r,l);if(!s)continue;n.closest(".tw-panel, .tw-portal")||n.classList.add("tw-portal"),n.append(s.el),n.dataset.hint&&R(s.el,n.dataset.hint);let f=s.get();p=f;let g={...s,set:m=>{s.set(m),l(s.get())}};n._tw={ctrl:g,raw:r.value,def:f,key:c,host:n,reset:()=>{B(s,r.value,f),l(s.get())}}}}T(q);export{A as DATA_VALUE};