@popmelt.com/core 0.27.0 → 0.28.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 (55) hide show
  1. package/claude-plugin/.claude-plugin/plugin.json +1 -1
  2. package/codex-plugin/.codex-plugin/plugin.json +1 -1
  3. package/dist/ParticipantRuntime-4NMUTZL3.mjs +139 -0
  4. package/dist/PopmeltTasteConnectedPane-ZMJXKDPJ.mjs +221 -0
  5. package/dist/PreviewRuntime-AZAHK27Q.mjs +2 -0
  6. package/dist/bridge-entry.mjs +2 -229
  7. package/dist/browser-runtime-57XUOV3C.mjs +2 -0
  8. package/dist/browser.mjs +1 -1
  9. package/dist/chunk-3LBOX7HQ.mjs +3 -0
  10. package/dist/chunk-BISCKKOX.mjs +2 -0
  11. package/dist/chunk-DPSBNNGU.mjs +2 -0
  12. package/dist/chunk-GL4I4MI6.mjs +3 -0
  13. package/dist/chunk-HGW2U6PD.mjs +2 -0
  14. package/dist/chunk-HPQJKWK5.mjs +1 -0
  15. package/dist/chunk-JNR6PO2Z.mjs +369 -0
  16. package/dist/chunk-LVEMYZOA.mjs +2 -0
  17. package/dist/chunk-M3MBL5NR.mjs +2 -0
  18. package/dist/chunk-O4HZP3RP.mjs +2 -0
  19. package/dist/chunk-PKTQWFUA.mjs +2 -0
  20. package/dist/chunk-Q5PC5FWC.mjs +347 -0
  21. package/dist/chunk-QXVMGZFP.mjs +1 -0
  22. package/dist/chunk-R5RMIYS5.mjs +77 -0
  23. package/dist/chunk-WNZFCDVR.mjs +289 -0
  24. package/dist/chunk-XTOCFTVW.mjs +2 -0
  25. package/dist/{chunk-C5Q6LDAS.mjs → chunk-YBULEE33.mjs} +1 -1
  26. package/dist/chunk-YIAZGECE.mjs +2 -0
  27. package/dist/cli.mjs +169 -106
  28. package/dist/focus-inspection-ZKWDPDRI.mjs +2 -0
  29. package/dist/index-CHp2bgs1.d.mts +565 -0
  30. package/dist/index.mjs +1 -1
  31. package/dist/memory-legacy.d.mts +1 -489
  32. package/dist/memory-legacy.mjs +1 -1
  33. package/dist/memory-store.d.mts +2 -660
  34. package/dist/memory-store.mjs +1 -3
  35. package/dist/plugin-astro.mjs +1 -1
  36. package/dist/plugin-nuxt.mjs +1 -1
  37. package/dist/plugin-vite.mjs +1 -1
  38. package/dist/server.d.mts +3 -291
  39. package/dist/server.mjs +7 -234
  40. package/dist/taste-proposal-session-XU4N7RUV.mjs +2 -0
  41. package/dist/types-Bur49CLH.d.mts +349 -0
  42. package/dist/workspace-snapshot-EJQHHDQ4.mjs +2 -0
  43. package/package.json +23 -25
  44. package/dist/ParticipantRuntime-AD3YD4FW.mjs +0 -139
  45. package/dist/PopmeltTasteConnectedPane-HLCTVPJP.mjs +0 -81
  46. package/dist/PreviewRuntime-KGLZJGUN.mjs +0 -2
  47. package/dist/browser-runtime-3JZGB3P2.mjs +0 -2
  48. package/dist/chunk-7YCLSSQA.mjs +0 -2
  49. package/dist/chunk-7YIQQYRU.mjs +0 -77
  50. package/dist/chunk-D7HY2EDH.mjs +0 -2
  51. package/dist/chunk-MDJYUX5S.mjs +0 -370
  52. package/dist/chunk-MTRUVFH7.mjs +0 -1
  53. package/dist/chunk-TFPKDKDO.mjs +0 -345
  54. package/dist/chunk-TSY2K45H.mjs +0 -2
  55. package/dist/server-MJF4KF26.mjs +0 -241
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ var n=new WeakMap,a=new WeakMap;function i(t,e){e&&(n.set(t,e),a.set(e,t))}function l(t){let e=n.get(t);return e?.isConnected&&a.get(e)===t?e.getBoundingClientRect():null}export{i as a,l as b};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{a as y,i as S}from"./chunk-YIAZGECE.mjs";function h(e){return Array.from(e,t=>{if(t==='"'||t==="\\")return`\\${t}`;let r=t.codePointAt(0);return r<32||r===127?`\\${r.toString(16)} `:t}).join("")}function f(e){return`[data-popmelt-subject-adapter="${h(e.adapter)}"][data-popmelt-subject-key="${h(e.key)}"]`}function g(e){let t=e?.getAttribute("data-popmelt-subject-adapter"),r=e?.getAttribute("data-popmelt-subject-key");return t&&r?{adapter:t,key:r}:void 0}function d(e,t){let r=!1;e.dataset.popmeltSubjectLabel!==t.label&&(e.dataset.popmeltSubjectLabel=t.label,r=!0);let{left:a,top:s,width:i,height:n}=t.bounds,u=l=>`${Math.round(l*2)/2}px`,b={left:u(a),top:u(s),width:u(Math.max(0,i)),height:u(Math.max(0,n))};for(let[l,c]of Object.entries(b)){let m=l;e.style[m]!==c&&(e.style[m]=c,r=!0)}let o=t.surfaceBounds,j={popmeltSubjectSurfaceLeft:o?String(o.left):void 0,popmeltSubjectSurfaceTop:o?String(o.top):void 0,popmeltSubjectSurfaceWidth:o?String(o.width):void 0,popmeltSubjectSurfaceHeight:o?String(o.height):void 0};for(let[l,c]of Object.entries(j))c===void 0?l in e.dataset&&(delete e.dataset[l],r=!0):e.dataset[l]!==c&&(e.dataset[l]=c,r=!0);let p=t.outline?.map(l=>`${l.x},${l.y}`).join(" ");return p?e.dataset.popmeltSubjectOutline!==p&&(e.dataset.popmeltSubjectOutline=p,r=!0):e.dataset.popmeltSubjectOutline!==void 0&&(delete e.dataset.popmeltSubjectOutline,r=!0),r}var v=class{constructor(e){this.adapters=e,this.projections=new Map,this.frameListeners=new Set,this.frame=null,this.lastProjectionFrameTime=0,this.adapterUnsubscribes=e.flatMap(t=>{let r=t.subscribe?.(()=>{for(let a of this.frameListeners)a()});return r?[r]:[]})}async whenReady(){await Promise.all(this.adapters.map(e=>e.whenReady?.()))}hitTest(e){return this.hitTestAll(e)[0]??null}hitTestAll(e){for(let t=this.adapters.length-1;t>=0;t-=1){let r=this.adapters[t];if(!r)continue;let a=(r.hitTestAll?.(e)??[r.hitTest(e)]).filter(s=>!!s).map(s=>this.project(r,s));if(a.length>0)return a}return[]}resolve(e){let t=this.adapters.find(a=>a.id===e.adapter);if(!t)return null;let r=t.resolve(e.key);return r?this.project(t,r):null}restore(e,t){let r=this.adapters.find(s=>s.id===e.adapter),a=r?.restoreSubject?.(e.key,t);return r&&a?this.project(r,a):null}async captureFeedback(e){let t=this.resolve(e);if(!t)return null;let{adapter:r,subject:a}=t,s={...t.elementInfo};if(a.sourceElement&&(s.sourceElement={...S(a.sourceElement),selector:y(a.sourceElement)}),!r.captureSubject)return{elementInfo:s};try{let i=await r.captureSubject(e.key);return i?{elementInfo:s,crop:i}:{elementInfo:s,warning:"Object crop unavailable; use the page screenshot and image coordinates."}}catch{return{elementInfo:s,warning:"Object crop unavailable (the image may block canvas access via CORS); use the page screenshot and image coordinates."}}}beginCreate(e){for(let t=this.adapters.length-1;t>=0;t-=1){let r=this.adapters[t],a=r?.beginCreate?.(e);if(r&&a)return{adapter:r,session:a}}return null}rename(e,t){let r=this.adapters.find(s=>s.id===e.adapter),a=r?.renameSubject?.(e.key,t);return r&&a?this.project(r,a):null}updateBounds(e,t){let r=this.adapters.find(s=>s.id===e.adapter),a=r?.updateSubjectBounds?.(e.key,t);return r&&a?this.project(r,a):null}updateTrackingAnchors(e,t){let r=this.adapters.find(s=>s.id===e.adapter),a=r?.updateSubjectTrackingAnchors?.(e.key,t);return r&&a?this.project(r,a):null}promote(e){let t=this.adapters.find(a=>a.id===e.adapter),r=t?.promoteSubject?.(e.key);return t&&r?this.project(t,r):null}remove(e){this.adapters.find(t=>t.id===e.adapter)?.removeSubject?.(e.key)}async captureSurfaces(){return(await Promise.all(this.adapters.map(async e=>e.captureSurfaces?.()??[]))).flat()}subscribeFrame(e){return this.frameListeners.add(e),()=>this.frameListeners.delete(e)}destroy(){this.frame!==null&&cancelAnimationFrame(this.frame),this.frame=null;for(let e of this.projections.values())e.element.remove();this.projections.clear();for(let e of this.adapterUnsubscribes)e();this.frameListeners.clear()}project(e,t){let r={adapter:e.id,key:t.key},a=`${e.id}\0${t.key}`,s=this.projections.get(a);if(s)return s.subject=t,s.elementInfo=this.elementInfo(e,t,s.selector),d(s.element,t),s;let i=f(r),n=document.createElement("div");n.dataset.popmeltSubjectAdapter=e.id,n.dataset.popmeltSubjectKey=t.key,n.dataset.popmeltSubjectLabel=t.label,n.dataset.popmeltSubjectProjection="true",n.setAttribute("aria-hidden","true"),Object.assign(n.style,{position:"fixed",pointerEvents:"none",opacity:"0",zIndex:"-1"}),d(n,t),document.body.appendChild(n);let u={adapter:e,subject:t,target:r,element:n,selector:i,elementInfo:this.elementInfo(e,t,i)};return this.projections.set(a,u),this.ensureFrame(),u}elementInfo(e,t,r){return{selector:r,tagName:e.id,subjectLabel:t.label,textContent:t.label,context:t.context,...t.imageObject?{imageObject:t.imageObject}:{},...t.videoObject?{videoObject:t.videoObject}:{},dataAttributes:{adapter:e.id,key:t.key,...t.data??{}}}}ensureFrame(){if(this.frame!==null||this.projections.size===0)return;let e=t=>{if(this.frame=null,this.lastProjectionFrameTime>0&&t-this.lastProjectionFrameTime<32){this.ensureFrame();return}this.lastProjectionFrameTime=t;let r=!1;for(let[a,s]of this.projections){let i=s.adapter.resolve(s.target.key);if(!i){s.element.remove(),this.projections.delete(a),r=!0;continue}s.subject=i,r=d(s.element,i)||r}if(r)for(let a of this.frameListeners)a();this.projections.size>0&&this.ensureFrame()};this.frame=requestAnimationFrame(e)}};export{f as a,g as b,v as c};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{a as Y}from"./chunk-XTOCFTVW.mjs";function M(){return{schemaVersion:1,name:"",constraints:[{id:"basis",name:"basis",kind:"layout",value:"16",parentId:null,derivative:1,scale:.75},{id:"padding",name:"padding",kind:"layout",value:"",parentId:"basis",derivative:2,scale:1},{id:"gap",name:"gap",kind:"layout",value:"16",parentId:null,derivative:1,scale:.75},{id:"radii",name:"radii",kind:"layout",value:"",parentId:null,derivative:1,scale:.75},...j(),{id:"primary",name:"primary",kind:"color",value:"oklch(65% 0.16 265)",parentId:null,derivative:0,scale:.125},{id:"secondary",name:"secondary",kind:"color",value:"",parentId:"primary",derivative:30,scale:.125},{id:"tertiary",name:"tertiary",kind:"color",value:"",parentId:"primary",derivative:60,scale:.125}],tokens:[{id:"semantic-color",name:"semantic_color",value:"@primary: 1"},{id:"ad-hoc-spacer",name:"ad-hoc-spacer",value:"@basis: 2"},{id:"ad-hoc-color",name:"ad-hoc-color",value:"#123ccc"},{id:"shadow-lg",name:"shadow-lg",value:"0 10px 15px rgba(0, 0, 0, 0.5)"}]}}function j(){return["body","heading"].flatMap(e=>[{id:`${e}-family`,name:`${e}-family`,kind:"font",group:"typography",typographyRole:e,value:e==="body"?"system-ui, sans-serif":"",parentId:e==="heading"?"body-family":null,derivative:1,scale:1},...["size","height","weight"].map(t=>({id:`${e}-${t}`,name:`${e}-${t}`,kind:"layout",group:"typography",typographyRole:e,value:t==="weight"&&e==="body"?"400":"",parentId:t==="size"?e==="body"?"basis":"body-size":t==="height"?`${e}-size`:e==="body"?null:"body-weight",derivative:t==="height"?1.5:t==="size"?2:1,scale:t==="weight"?100:.125,...t==="weight"?{scaleMode:"increment"}:{}}))])}function ee(e){let t={text:"body-size",height:"body-height",weight:"body-weight"},a=e.constraints.filter(s=>t[s.id]);if(!a.length)return e;let o=[...e.constraints];for(let s of j()){if(o.some(m=>m.id===s.id))continue;let l=a.find(m=>t[m.id]===s.id);o.push(l?{...l,id:s.id,name:s.name,group:s.group,typographyRole:s.typographyRole}:s)}let r=o.filter(s=>!t[s.id]).map(s=>({...s})),n=s=>{let l=new Set([s.id]);for(;s.parentId&&t[s.parentId];){let m=o.find(v=>v.id===s.parentId);if(!m||l.has(s.parentId)){s.parentId=null,s.value="";break}if(l.add(s.parentId),s.derivative*=m.derivative,s.parentId=m.parentId,!m.parentId){try{s.value=I(b(o,s.id))}catch{s.value=m.value}s.derivative=1}}};r.filter(s=>s.typographyRole==="body").forEach(n);for(let s of r){if(!s.parentId||!t[s.parentId])continue;let l=t[s.parentId];try{let m=b(o,s.parentId),v=b(r,l);if(m.kind!=="layout"||v.kind!=="layout"||m.unit!==v.unit||!v.value||W(r,s.id,l))throw Error("Keep the original root");s.derivative*=m.value/v.value,s.parentId=l}catch{n(s)}}let i=new Map(a.map(s=>[s.name.toLowerCase(),t[s.id]]));return a.some(s=>s.id==="text")&&(i.set("text","body-size"),i.set("size","body-size")),{...e,constraints:r,tokens:e.tokens.map(s=>({...s,value:s.value.replace(/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|url\([^)]*\)|@([\w-]+)(?::\s*[+-]?(?:\d+\.?\d*|\.\d+))?/gi,(l,m)=>{if(!m)return l;let v=i.get(m.toLowerCase());if(!v)return l;let c=l.replace(`@${m}`,`@${v}`),f=x(o,l),h=x(r,c);return f&&(!h||I(f)!==I(h))?I(f):c})}))}}var E="[+-]?(?:\\d+\\.?\\d*|\\.\\d+)",te=new RegExp(`^(${E})(px|rem|em|%|vw|vh|vmin|vmax|ch)?$`,"i"),re=new RegExp(`^oklch\\(\\s*(${E})(%)?\\s+(${E})\\s+(${E})(?:deg)?\\s*\\)$`,"i"),O=e=>(e%360+360)%360,ne=e=>Math.max(0,Math.min(1,e)),S=e=>Number(e.toFixed(4));function D(e,t){if(e==="font"){let i=t.trim();if(!i||!/[a-z\u0080-\uffff]/i.test(i)||i.length>160||/[;{}()@]|[<>]/.test(i)||[...i].some(s=>s.charCodeAt(0)<32))throw Error("Use a font family or comma-separated font stack");return{kind:e,value:i}}if(e==="layout"){let i=t.trim().match(te);if(!i||!Number.isFinite(Number(i[1]))||Number(i[1])<0)throw Error("Use a positive length, like 24px or 1.5rem");return{kind:e,value:Number(i[1]),unit:i[2]?.toLowerCase()??""}}let a=t.trim().match(re);if(!a)throw Error("Use OKLCH, like oklch(65% 0.16 265)");let o=Number(a[1])/(a[2]?100:1),r=Number(a[3]),n=Number(a[4]);if(![o,r,n].every(Number.isFinite)||o<0||o>1||r<0)throw Error("Lightness must be 0\u2013100% and chroma cannot be negative");return{kind:e,l:o,c:r,h:O(n)}}function W(e,t,a){let o=e.find(i=>i.id===t),r=e.find(i=>i.id===a);if(!o||!r)return"Choose an existing constraint";if(o.kind!==r.kind)return"Connect constraints of the same type";if(o.scaleMode==="increment"!=(r.scaleMode==="increment"))return"Connect weights to weights, and lengths to lengths";let n=new Set([t]);for(;r;){if(n.has(r.id))return"That connection would create a cycle";if(n.add(r.id),!r.parentId)break;if(r=e.find(i=>i.id===r.parentId),!r)return"The parent reference is missing"}return null}function b(e,t,a=0){let o=new Set,r=s=>{if(o.has(s))throw Error("Circular reference");o.add(s);let l=e.find(c=>c.id===s);if(!l)throw Error("The parent reference is missing");if(!Number.isFinite(l.derivative))throw Error("Use a finite derivative");if(!l.parentId)return D(l.kind,l.value);let m=e.find(c=>c.id===l.parentId);if(m&&l.scaleMode==="increment"!=(m.scaleMode==="increment"))throw Error("Connect weights to weights, and lengths to lengths");let v=r(l.parentId);if(v.kind!==l.kind)throw Error("Connect constraints of the same type");if(v.kind==="font")return v;if(v.kind==="layout"){if(l.derivative<0)throw Error("The derivative cannot be negative");return{...v,value:v.value*l.derivative}}return{...v,h:O(v.h+l.derivative)}},n=r(t),i=e.find(s=>s.id===t);if(n.kind==="font"){if(a!==0)throw Error("Font families do not have numeric steps");return n}if(!Number.isFinite(a)||!Number.isFinite(i.scale))throw Error("Use a finite step");if(n.kind==="layout"){if(i.scaleMode==="increment"?i.scale<=0:i.scale<0)throw Error("Use a nonnegative growth rate or a positive weight increment");let s=i.scaleMode==="increment"?Math.max(0,n.value+i.scale*a):n.value*(1+i.scale)**a;if(!Number.isFinite(s))throw Error("The scaled value is too large");return{...n,value:a===0?s:Math.round(s)}}return{...n,l:ne(n.l+i.scale*a)}}function I(e){return e.kind==="font"?e.value:e.kind==="layout"?`${S(e.value)}${e.unit}`:`oklch(${S(e.l*100)}% ${S(e.c)} ${S(e.h)}${e.alpha===void 0?"":` / ${S(e.alpha)}`})`}function A(e){let t=e.trim().match(new RegExp(`^@([^:@/(),]+?)(?::\\s*(${E}))?(?:\\s*/\\s*(${E}%?))?$`));return t&&t[1].trim()&&(t[2]!==void 0||!/\s/.test(t[1].trim()))&&(t[2]===void 0||Number.isFinite(Number(t[2])))&&(t[3]===void 0||F(t[3])!==null)?{name:t[1].trim(),step:t[2]===void 0?null:Number(t[2]),...t[3]===void 0?{}:{opacity:t[3]}}:null}function F(e){if(!new RegExp(`^${E}%?$`).test(e))return null;let t=parseFloat(e)/(e.endsWith("%")?100:1);return Number.isFinite(t)&&t>=0&&t<=1?t:null}function x(e,t){let a=A(t);if(!a)return null;let o=e.find(r=>r.name.toLowerCase()===a.name.toLowerCase());if(!o)return null;try{let r=b(e,o.id,a.step??0);return a.opacity===void 0?r:r.kind==="color"?{...r,alpha:F(a.opacity)}:null}catch{return null}}function ie(e,t,a){let o=e.find(r=>r.id===t);if(o?.kind!=="layout")return o?.derivative??0;try{let r=b(e,t),n=b(e,a);if(r.kind==="layout"&&n.kind==="layout"&&r.unit===n.unit&&n.value!==0){let i=r.value/n.value;if(Number.isFinite(i))return i}}catch{}return 1}function ae(e,t){let a=I(b(e,t));return e.map(o=>o.id===t?{...o,parentId:null,value:a}:o)}function R(e,t){let a=new Set;for(let o=0;o<32;o+=1){if(a.has(e))return;if(a.add(e),e&&typeof e=="object"){let i=e;e=i.$value??i.ref;continue}if(typeof e!="string")return;let r=e.trim(),n=r.replace(/^\{(.+)\}$/,"$1").replace(/^var\(--([^,)]+)\)$/,"$1").replace(/^var\(principles\.([^,)]+)\)$/,"$1").replace(/^principles\./,"");if(Object.hasOwn(t,n)){e=t[n];continue}if(/\b(currentcolor|inherit|initial|unset|revert|var|env|light-dark)\b/i.test(r))return;if(typeof CSS<"u"&&CSS.supports)return CSS.supports("color",r)?r:void 0;if(typeof document<"u"){let i=document.createElement("span").style;return i.color=r,i.color?r:void 0}return}}var q=/^@([\w-]+)(?::\s*[+-]?(?:\d+\.?\d*|\.\d+)(?![\w.]))?(?![\w-]|\s*:)/,oe=/^(?:px|rem|em|ex|ch|cap|ic|lh|rlh|vw|vh|vi|vb|vmin|vmax|[sld]v[whib]|cm|mm|q|in|pt|pc|%)$/i,_=e=>String(Number(e.toPrecision(12)));function Z(e,t){if(e.length>4096||!/^calc\(/i.test(e))return null;let a=5,o=0,r=()=>{throw Error("Invalid calc expression")},n=()=>{for(;/\s/.test(e[a]??"")&&a<e.length;)a++},i=(c,f="")=>!Number.isFinite(c)||f&&!oe.test(f)?r():{kind:f?"length":"number",terms:new Map([[f.toLowerCase(),c]])},s=(c,f)=>({...c,terms:new Map([...c.terms].map(([h,d])=>{let p=d*f;return Number.isFinite(p)||r(),[h,p]}))}),l=()=>{n(),++o>32&&r();try{let c=e[a];if(c==="+"||c==="-")return a++,s(l(),c==="-"?-1:1);if(e[a]==="("||/^calc\(/i.test(e.slice(a))){a+=e[a]==="("?1:5;let d=v();return n(),e[a++]!==")"&&r(),d}let f=e.slice(a).match(q)?.[0];if(f){a+=f.length;let d=x(t,f);if(d?.kind!=="layout")return r();let p=t.find(u=>u.name.toLowerCase()===f.slice(1).split(":")[0].trim().toLowerCase());return i(d.value,d.unit||(p?.scaleMode==="increment"?"":"px"))}let h=e.slice(a).match(/^(\d+\.?\d*|\.\d+)(e[+-]?\d+)?([a-z]+|%)?/i);return h?(a+=h[0].length,i(Number(h[1]+(h[2]??"")),h[3])):r()}finally{o--}},m=()=>{let c=l();for(;;){n();let f=e[a];if(f!=="*"&&f!=="/")return c;a++;let h=l();if(f==="/"){let d=h.terms.get("");if(h.kind!=="number"||!d)return r();c=s(c,1/d)}else if(h.kind==="number")c=s(c,h.terms.get(""));else if(c.kind==="number")c=s(h,c.terms.get(""));else return r()}},v=()=>{let c=m();for(;;){n();let f=e[a];if(f!=="+"&&f!=="-")return c;a++;let h=m();if(c.kind!==h.kind)return r();for(let[d,p]of h.terms){let u=(c.terms.get(d)??0)+p*(f==="-"?-1:1);Number.isFinite(u)||r(),c.terms.set(d,u)}}};try{let c=v();if(n(),e[a++]!==")"||e.slice(a).trim())return null;let f=[...c.terms].filter(([,p])=>p!==0);f.length||f.push([c.terms.keys().next().value??"",0]);let[h,d]=f[0];return{css:f.length===1?`${_(d)}${h}`:`calc(${f.map(([p,u],g)=>`${g?u<0?" - ":" + ":u<0?"-":""}${_(Math.abs(u))}${p}`).join("")})`,kind:c.kind,...f.length===1?{value:d,unit:h}:{}}}catch{return null}}function se(e){let t=[],a=/url\((?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|[^)'"])*\)|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\/\*[\s\S]*?\*\/|\bcalc\(/gi;for(let o;o=a.exec(e);){if(!/^calc\(/i.test(o[0]))continue;let r=1,n=a.lastIndex;for(;n<e.length&&r;)e[n]==="("?r++:e[n]===")"&&r--,n++;t.push({start:o.index,end:n,text:e.slice(o.index,n)}),a.lastIndex=n}return t}function z(e,t){let a=e;for(let o of se(e).reverse()){let r=Z(o.text,t);if(!r)return null;a=a.slice(0,o.start)+r.css+a.slice(o.end)}return a}function B(e,t){let a=[],o=(n,i,s)=>{let l=R(n,{});l&&a.push({start:i,end:s,color:l})},r=(n,i=0,s=!1)=>{let l=0;for(;l<n.length;){let m=n[l];if(m==='"'||m==="'"){let u=m;for(l++;l<n.length;l++)if(n[l]==="\\")l++;else if(n[l]===u){l++;break}continue}if(n.startsWith("/*",l)){let u=n.indexOf("*/",l+2);l=u<0?n.length:u+2;continue}if(m==="@"){let u=n.slice(l).match(/^@([^:@(),/]+):\s*([+-]?(?:\d+\.?\d*|\.\d+))(?![\w.])(?:\s*\/\s*[+-]?(?:\d+\.?\d*|\.\d+)%?(?![\w.%]))?(?!\s*\/)/),g=n.slice(l).match(/^@([\w-]+)(?![\w-]|\s*:)(?:\s*\/\s*([+-]?(?:\d+\.?\d*|\.\d+)%?)(?![\w.%]))?(?!\s*\/)/),w=s?n.slice(l).match(q):u??g;if(w){let $=x(t,w[0]),y=A(w[0]);y&&a.push({start:i+l,end:i+l+w[0].length,color:$?.kind==="color"?I($):null,reference:y,...s?{math:!0}:{}}),l+=w[0].length}else l+=n.slice(l).match(/^@[^\s,()]*(?:\s*:\s*[^\s,()]*)?/)?.[0].length??1;continue}let v=n.slice(l).match(/^(?:#[\w-]+|[\w-]+)/)?.[0];if(!v){l++;continue}let c=l;if(l+=v.length,n[l]!=="("){s||o(v,i+c,i+l);continue}let f=++l,h=1,d="";for(;l<n.length&&h;){let u=n[l++];if(u==="\\"){l++;continue}if(d){u===d&&(d="");continue}u==='"'||u==="'"?d=u:u==="("?h++:u===")"&&h--}if(h)continue;let p=R(n.slice(c,l),{});p?a.push({start:i+c,end:i+l,color:p}):/^(?:(?:repeating-)?(?:linear|radial|conic)-gradient|drop-shadow|calc)$/i.test(v)&&r(n.slice(f,l-1),i+f,s||v.toLowerCase()==="calc")}};return r(e),a}function L(e,t){return B(e,t).flatMap(a=>a.color?[{...a,color:a.color}]:[])}function U(e,t){return B(e,t).flatMap(({reference:a,start:o,end:r,math:n})=>a?[{...a,start:o,end:r,...n?{math:!0}:{}}]:[])}function le(e,t){return L(e,t).map(({color:a})=>a)}function de(e,t){let a=U(e,t);return z(e,t)!==null&&a.length===(e.match(/@/g)?.length??0)&&a.every(({start:o,end:r})=>x(t,e.slice(o,r))!==null)}function T(e,t,a=!1){let o=z(e,t);if(o===null)return null;let r=o;for(let n of U(o,t).reverse()){let i=x(t,o.slice(n.start,n.end));if(!i)return null;r=r.slice(0,n.start)+I(i)+(a&&i.kind==="layout"&&!i.unit?"px":"")+r.slice(n.end)}return r}function ue(e,t,a,o){if(o!==void 0){let i=U(e,a)[o];return!i||i.opacity!==void 0&&t.kind!=="color"||i.math&&t.kind!=="layout"?null:e.slice(0,i.start)+`@${t.name}${i.step===null?"":`: ${i.step}`}${i.opacity===void 0?"":` / ${i.opacity}`}`+e.slice(i.end)}let r=A(e);if(r||!e.trim())return r?.opacity!==void 0&&t.kind!=="color"?null:`@${t.name}${r?.step===null?"":`: ${r?.step??0}`}${r?.opacity===void 0?"":` / ${r.opacity}`}`;let n=L(e,a);if(t.kind==="color"&&n.length===1){let{start:i,end:s}=n[0],l=A(e.slice(i,s));return`${e.slice(0,i)}@${t.name}${l?.step===null?"":`: ${l?.step??0}`}${l?.opacity===void 0?"":` / ${l.opacity}`}${e.slice(s)}`}return/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[a-z%]+)?$/i.test(e.trim())?`@${t.name}: 0`:null}var H=["page","body","heading","muted","card","button","input"],K=["color","backgroundColor","border","borderColor","borderWidth","borderRadius","boxShadow","padding","paddingInline","paddingBlock","gap","fontFamily","fontSize","fontWeight","lineHeight","letterSpacing","opacity"];function ce(e){var t;let a={};for(let o of e.usage??[]){if(!H.includes(o.target)||!K.includes(o.property))continue;let r=null;try{if(o.source.kind==="token"){let i=e.tokens.find(s=>s.id===o.source.id);i&&(r=T(i.value,e.constraints,!["fontWeight","opacity"].includes(o.property)))}else if(o.source.kind==="dimension"){let i=b(e.constraints,o.source.id,o.source.step??0);r=I(i),i.kind==="layout"&&!i.unit&&!["fontWeight","opacity"].includes(o.property)&&(r+="px")}}catch{continue}if(r&&/^-?\d+(?:\.\d+)?$/.test(r)&&["fontSize","letterSpacing","padding","paddingInline","paddingBlock","gap","borderRadius","borderWidth"].includes(o.property)&&(r+="px"),!r||/[;{}]|\b(?:url|expression|var)\s*\(/i.test(r)||r.includes("\\")||[...r].some(i=>i.charCodeAt(0)<32)||typeof CSS<"u"&&CSS.supports&&!CSS.supports(o.property.replace(/[A-Z]/g,i=>`-${i.toLowerCase()}`),r))continue;let n=a[t=o.target]??(a[t]={});n[o.property]=["fontWeight","opacity"].includes(o.property)&&Number.isFinite(Number(r))?Number(r):r}return a}var fe=class extends Error{};function P(){let e=M();return{...e,tokens:[],constraints:e.constraints.map(t=>({...t,value:"",parentId:null}))}}var V=(e,t=512)=>typeof e=="string"&&e.length<=t&&![...e].some(a=>a.charCodeAt(0)<32)&&!/[;{}]|\b(?:url|expression)\s*\(/i.test(e);function G(e,t){if(!t||typeof t!="object"||Array.isArray(t)||Object.keys(t).some(o=>!["name","constraints","tokens","usage","featuredComponentId"].includes(o)))throw Error("Invalid proposal patch.");let a=structuredClone(e);if(t.featuredComponentId!==void 0){if(t.featuredComponentId!==null&&!a.fragments?.some(o=>o.id===t.featuredComponentId))throw Error("The featured component must belong to this Taste.");a.featuredComponentId=t.featuredComponentId}if(t.name!==void 0){if(typeof t.name!="string"||t.name.length>80)throw Error("Invalid name.");a.name=t.name}if(t.constraints!==void 0){if(!Array.isArray(t.constraints)||t.constraints.length>32)throw Error("Invalid dimensions.");let o=new Set;for(let r of t.constraints){if(!r||typeof r!="object"||Object.keys(r).some(i=>!["id","value","parentId","derivative","scale"].includes(i)))throw Error("Invalid dimension patch.");let n=a.constraints.find(i=>i.id===r.id);if(!n||o.has(r.id))throw Error("Unknown or duplicate dimension ID.");if(o.add(r.id),Object.assign(n,r),!V(n.value)||!Number.isFinite(n.derivative)||!Number.isFinite(n.scale)||n.scale<0||n.scaleMode==="increment"&&n.scale<=0||n.kind==="color"&&n.scale>1||n.kind==="font"&&(n.scale!==1||n.derivative!==1)||n.kind==="layout"&&n.derivative<0||n.parentId!==null&&!a.constraints.some(i=>i.id===n.parentId&&i.kind===n.kind))throw Error(`Invalid ${n.id} dimension.`)}for(let r of a.constraints)(r.value||r.parentId)&&b(a.constraints,r.id)}if(t.tokens!==void 0){if(!Array.isArray(t.tokens)||t.tokens.length>128)throw Error("Invalid tokens.");let o=new Set,r=new Set;for(let n of t.tokens){if(!n||typeof n.id!="string"||!/^[a-zA-Z0-9_-]{1,80}$/.test(n.id)||typeof n.name!="string"||!/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/.test(n.name)||!V(n.value)||o.has(n.id)||r.has(n.name))throw Error("Invalid or duplicate token.");o.add(n.id),r.add(n.name)}a.tokens=structuredClone(t.tokens)}t.usage!==void 0&&(a.usage=structuredClone(t.usage));for(let o of a.tokens)if(!de(o.value,a.constraints))throw Error(`Invalid reference or calc expression in ${o.name}.`);if(!Array.isArray(a.usage??[])||(a.usage?.length??0)>128)throw Error("Invalid usage mappings.");for(let o of a.usage??[])if(!o||Object.keys(o).some(r=>!["target","property","source"].includes(r))||!H.includes(o.target)||!K.includes(o.property)||!o.source||Object.keys(o.source).some(r=>!["kind","id","step"].includes(r))||!["token","dimension"].includes(o.source.kind)||!(o.source.kind==="token"?a.tokens:a.constraints).some(r=>r.id===o.source.id)||o.source.step!==void 0&&(!Number.isInteger(o.source.step)||Math.abs(o.source.step)>100))throw Error("Usage must reference an existing token or dimension.");return a}function J(e,t=!0,a=!0){let o=M(),r={past:[],future:[]},n={current:{past:[],future:[]}},i={available:t,revision:crypto.randomUUID(),runId:"",openRequest:"",open:!1,mode:"empty",state:e?"complete":"idle",message:"",draft:e??null},s=new Set,l=null,m=new Set,v=d=>{l={id:crypto.randomUUID(),target:d,expiresAt:Date.now()+2e3},m.forEach(p=>p())},c=()=>{l=null,m.forEach(d=>d())},f=d=>{i={...i,...d,revision:crypto.randomUUID()},s.forEach(p=>p())},h={setCreationAllowed(d){a=d},history:n,getLookSnapshot:()=>l,subscribeLook:d=>(m.add(d),()=>{m.delete(d)}),setAvailable(d){i.available!==d&&f({available:d})},getSnapshot:()=>i,subscribe:d=>(s.add(d),()=>{s.delete(d)}),create(d="template",p=!1){if(!a)throw Error("An active subscription is required to create a Taste.");c(),d==="template"&&!p&&(o=M()),d==="template"?(p||(r.past=[],r.future=[]),n.current=r):n.current={past:[],future:[]},f({open:!0,openRequest:crypto.randomUUID(),runId:crypto.randomUUID(),mode:d,state:d==="extract"?"running":"complete",message:"",draft:d==="template"?o:P()})},edit(d){i.state!=="running"&&(i.mode==="template"&&(o=d),f({draft:d}))},addFragment(d,p){if(i.runId!==d||!i.open||i.state==="running"||!i.draft)throw Error("This proposal has changed. Capture the component again.");let u=i.draft;if((u.fragments?.length??0)>=16)throw Error("A proposal can contain up to 16 components.");if(u.fragments?.some(y=>y.id===p.fragment.id))throw Error("This component was already captured.");if(p.tokens.some(y=>u.tokens.some(k=>k.id===y.id||k.name===y.name)))throw Error("A component token conflicts with a shared token. Retry capture.");let g=G({...u,usage:[]},{tokens:p.tokens}),w=y=>{for(let k of Object.values(y.styles))if(!(k.kind==="token"?[...u.tokens,...g.tokens]:g.constraints).some(N=>N.id===k.id))throw Error("A referenced Taste value was removed. Retry capture.");y.children.forEach(k=>{typeof k!="string"&&w(k)})};w(p.fragment.root);let $={...u,fragments:[...u.fragments??[],{...p.fragment,tokens:p.tokens}]};return n.current.past.push(u),n.current.past.length>100&&n.current.past.shift(),n.current.future=[],h.edit($),$},stream(d,p){i.runId===d&&i.state==="running"&&f(p)},close(){c(),f({open:!1,...i.state==="running"?{state:"error",message:"Extraction stopped. Retry or continue editing the partial draft."}:{}})},command(d){let p=(u,g={})=>({status:u,...i,...g,saved:!1,applied:!1});if(d.target!==void 0&&d.action!=="inspect")return p("invalid",{error:"target is only supported for inspection."});if(d.action==="inspect"){let u=d.target;if(u!==void 0){let{draft:g,...w}=i,$=(C,X={})=>({status:C,...w,saved:!1,applied:!1,...X});if(!u||!["dimension","token"].includes(u.kind)||typeof u.id!="string"||!u.id||u.id.length>200)return $("invalid");let y=(u.kind==="dimension"?g?.constraints:g?.tokens)?.find(C=>C.id===u.id);if(!y||!g)return $("not_found",{target:u});let k=null,N;try{k=u.kind==="dimension"?I(b(g.constraints,u.id)):T(y.value,g.constraints)}catch(C){N=C instanceof Error?C.message:"Not resolved yet"}return v({kind:u.kind,id:u.id}),$("ok",{target:u,row:y,resolved:k,...N?{resolutionError:N}:{}})}return i.draft&&v(null),p("ok")}if(!i.available)return p("unavailable",{error:"The host Taste panel is not available in this browser."});if(!["create","modify"].includes(d.action))return p("invalid",{error:"Unknown proposal action."});if(!d.expectedRevision||d.expectedRevision!==i.revision)return p("conflict");if(i.state==="running")return p("busy");try{if(d.action==="create"){let u=d.mode??"template";if(!["template","empty","extract"].includes(u)||d.patch)throw Error("Create accepts a mode; modify the returned draft separately.");h.create(u)}else{if(!i.draft)return p("not_found");let u=G(i.draft,d.patch);n.current.past=[...n.current.past.slice(-99),i.draft],n.current.future=[],i.mode==="template"&&(o=u),f({draft:u,open:!0,openRequest:crypto.randomUUID()})}return p("ok")}catch(u){return p("invalid",{error:u instanceof Error?u.message:"Invalid patch."})}}};return h}var Q=J(null,!1,!1);Y.connect(Q);export{M as a,ee as b,D as c,W as d,b as e,I as f,A as g,F as h,x as i,ie as j,ae as k,R as l,Z as m,z as n,L as o,U as p,le as q,T as r,ue as s,ce as t,fe as u,P as v,J as w,Q as x};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{A as p}from"./chunk-R5RMIYS5.mjs";import{j as m}from"./chunk-YIAZGECE.mjs";var o=!1,f=()=>o;function E(c){o=!0;let t=null,r=!1,a=e=>{let n=e.composedPath()[0];return n instanceof Element&&(n.id==="devtools-canvas"||!p(n)&&!n.closest("[data-taste-editor], [data-taste-navigation]"))},i=e=>{e.preventDefault(),e.stopImmediatePropagation()},l=e=>{t=null,!(e.button!==0||!a(e))&&(t={x:e.clientX,y:e.clientY},r=!1,i(e))},d=e=>{t&&Math.hypot(e.clientX-t.x,e.clientY-t.y)>5&&(r=!0)},u=e=>{t&&i(e)},s=e=>{if(!a(e)||e.button!==0){t=null;return}i(e);let n=!!(t&&!r);if(t=null,!n)return;let w=m(e.clientX,e.clientY);w&&c(w)},v=()=>{t=null};return window.addEventListener("pointerdown",l,!0),window.addEventListener("pointermove",d,!0),window.addEventListener("pointerup",u,!0),window.addEventListener("pointercancel",v,!0),window.addEventListener("click",s,!0),()=>{o=!1,window.removeEventListener("pointerdown",l,!0),window.removeEventListener("pointermove",d,!0),window.removeEventListener("pointerup",u,!0),window.removeEventListener("pointercancel",v,!0),window.removeEventListener("click",s,!0)}}export{f as a,E as b};