chiltepin-studio 0.16.0 → 0.16.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.
|
@@ -1519,7 +1519,6 @@ body{background:var(--white);color:var(--charcoal);font-family:var(--font-body);
|
|
|
1519
1519
|
background:var(--white); color:var(--charcoal); font-family:var(--font-body); font-size:15px; line-height:1.6;
|
|
1520
1520
|
max-width:var(--page-max,1180px); margin:0 auto; padding:0 56px 128px;
|
|
1521
1521
|
}
|
|
1522
|
-
.docskin .cover-bar{height:8px;background:var(--navy);margin:0 -56px 36px;}
|
|
1523
1522
|
.docskin .cover-pad{padding:0 0 40px;margin-bottom:56px;border-bottom:1px solid var(--rule);}
|
|
1524
1523
|
.docskin .cover-logo{display:block;height:52px;width:auto;max-width:260px;margin:0 0 28px;}
|
|
1525
1524
|
.docskin .cover-meta{display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--gray);font-weight:600;margin-bottom:32px;}
|
|
@@ -2820,7 +2819,7 @@ a.link-chip:hover,a.st-link:hover{text-decoration:underline;}
|
|
|
2820
2819
|
.docskin .code-cap-group{border:0;background:none;padding:0 2px;margin:-10px 0 18px;}`,n8="data:image/png;base64,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",s8=`<link rel="icon" type="image/png" href="${n8}">`,o8={"&":"&","<":"<",">":">",'"':"""};function S(e){return e==null?"":String(e).replace(/[&<>"]/g,t=>o8[t]??t)}var r8=/^(#[0-9a-fA-F]{3,8}|rgba?\([\d.,\s%]+\)|hsla?\([\d.,\s%]+\)|[a-zA-Z]{1,24})$/;function Fi(e,t){if(e===void 0)return t;const n=e.trim();return r8.test(n)?n:t}var i8=/^\s*(javascript|data|vbscript):/i;function vf(e){return i8.test(e)?"#":e}var qy=new f4({gfm:!0,breaks:!1});qy.use({tokenizer:{html(){},tag(){}},renderer:{heading(e){const t=this.parser.parseInline(e.tokens);if(e.depth>2)return`<h${e.depth}>${t}</h${e.depth}>
|
|
2821
2820
|
`;const n=by(t),s=zM(t),o=s!==void 0?`<p class="src-note">Source: ${S(s)}</p>
|
|
2822
2821
|
`:"";return`<h${e.depth}>${n}</h${e.depth}>
|
|
2823
|
-
${o}`},link(e){const t=vf(e.href),n=e.title!==null&&e.title!==void 0?` title="${e.title}"`:"",s=this.parser.parseInline(e.tokens);return`<a href="${t}"${n}>${s}</a>`},image(e){const t=vf(e.href),n=e.title!==null&&e.title!==void 0?` title="${e.title}"`:"";return`<img src="${t}" alt="${e.text}"${n}>`}}});function m0(e){return`<div class="prose">${qy.parse(e,{async:!1})}</div>`}function vo(e){const t=e.split(/\n{2,}/).map(s=>s.trim()).filter(s=>s!==""),n=s=>qy.parseInline(s,{async:!1});return t.length<=1?n(t[0]??""):t.map(s=>`<p>${n(s)}</p>`).join("")}function m4(e){const t=e?.title??"Untitled",n=e?.tag??"",s=e?.subtitle,o=s!==void 0?`<p class="cover-sub">${S(s)}</p>`:"";return'<div class="cover-bar"></div><div class="cover-pad">'+(e?.logo!==void 0&&e.logo!==""?`<img class="cover-logo" src="${S(vf(e.logo))}" alt="${S(t)}">`:"")+`<div class="cover-meta"><span>DOCUMENT</span><span class="accent">${S(n)}</span></div><h1 class="cover-title">${S(t)}</h1>`+o+"</div>"}function a8(){return""}function _(e){return` data-bp="${S(e)}"`}function fe(e){return` data-bl="${S(e)}"`}var l8=1600,c8=/<svg\b[^>]*\bviewBox="-?[\d.]+ -?[\d.]+ ([\d.]+) [\d.]+"[^>]*>/;function d8(e){const t=c8.exec(e);if(t===null||t[1]===void 0)return e;const n=t[0];if(n.includes(" style="))return e;const s=Math.ceil(Number(t[1]));if(!Number.isFinite(s)||s<=0)return e;const o=e.indexOf("</svg>",t.index+n.length);if(o<0)return e;const r=s>l8,i=r?`${n.slice(0,-1)} style="width:calc(${s}px * var(--scale,1));max-width:none">`:`${n.slice(0,-1)} style="max-width:min(100%,calc(${s}px * var(--scale,1)))">`,l=o+6;return e.slice(0,t.index)+`<div class="diagram-stage${r?" diagram-stage--wide":""}">`+i+e.slice(t.index+n.length,l)+"</div>"+e.slice(l)}function lt(e,t){const n=e.tagClass!==void 0?` ${e.tagClass}`:"",s=e.method!==void 0&&e.method.length>0?`<span class="diagram-tag-sep">·</span><span class="diagram-tag-method${n}">${S(e.method)}</span>`:"",o=e.path!==void 0&&e.path.length>0?`<span class="diagram-tag-path">${S(e.path)}</span>`:"",r=`<span class="diagram-eyebrow t-eyebrow"><span class="diagram-tag${n}">${S(e.tag)}</span>`+s+o+"</span>",i=e.titleHtml!==void 0?`<span class="diagram-title">${e.titleHtml}</span>`:e.title!==void 0&&e.title.length>0?`<span class="diagram-title">${S(e.title)}</span>`:"",l=e.fignum!==void 0&&e.fignum.length>0?`<span class="diagram-fignum">${S(e.fignum)}</span>`:"",d=e.desc!==void 0&&e.desc.length>0?`<p class="diagram-desc"${_("description")}>${S(e.desc)}</p>`:"",u=e.legendHtml??"",p=e.footerHtml??"";return'<div class="diagram"><div class="diagram-head">'+r+i+l+"</div>"+d+d8(t)+u+p+"</div>"}var u8={meta:"",callout:"Note",table:"Comparison",sequence:"Sequence",erd:"Entity model",userstory:"User story",timeline:"Roadmap",kanban:"Board",prose:"Overview",glossary:"Glossary",proscons:"Trade-offs",cvt:"Before / after",stats:"Metrics",code:"Code",agenda:"Agenda",tree:"Hierarchy",pyramid:"Pyramid",flow:"Flowchart",state:"State machine",dfd:"Data flow",journey:"Journey",gantt:"Schedule",graph:"Graph",quadrant:"Matrix",swimlane:"Process",c4:"C4 model",uml:"Class model",frontend:"Component tree",cluster:"Cluster",block:"Architecture",felogic:"Frontend logic",wireframe:"Mockup",endpoint:"API endpoint",pullquote:"Quote",layers:"Layers",matrix:"Capability matrix",anatomy:"Anatomy",composition:"Composition",drivers:"Drivers",options:"Options",spec:"Spec",list:"List",stories:"User stories",pattern:"Pattern",gallery:"Gallery",chart:"Chart",figure:"Figure",steps:"Steps",faq:"FAQ",envelope:"Capacity math",slo:"Service objectives",swot:"SWOT",okr:"Objectives",persona:"Personas",changelog:"Changelog",team:"Team",heatmap:"Heatmap",scorecard:"Decision matrix",risk:"Risk register",palette:"Palette",typescale:"Type scale",dodont:"Guidelines",inventory:"Inventory",array:"Array",linkedlist:"Linked list",bintree:"Binary tree",hashmap:"Hash map",agentloop:"Agent loop",trace:"Trace",prompt:"Prompt",context:"Context window",archmap:"Architecture map",divider:"Divider",bignumber:"Big number",takeaways:"Takeaways",statustable:"Status",cycle:"Cycle",benchmark:"Benchmark",sankey:"Flow volumes",gitgraph:"Branch model",treemap:"Composition",packet:"Wire format",venn:"Overlap",wardley:"Strategy map",harvey:"Comparison",scqa:"Summary",scenarios:"Scenarios",fishbone:"Cause & effect",storymap:"Story map",eventcontract:"Event contract",saga:"Saga",slopegraph:"Before / after",spans:"Trace",rollout:"Rollout",perfbudget:"Performance budget",percentiles:"Latency percentiles",timing:"Timing diagram",threatmodel:"Threat model",neuralnet:"Neural net",mindmap:"Mind map",usecase:"Use cases",pkg:"Packages",audit:"Audit findings",checklist:"Checklist",modelcard:"Model card",chevrons:"Process",roadmap:"Roadmap"};function Aw(e){if(e.sourceType!==void 0){const t=io[e.sourceType];if(t!==void 0)return t.sectionLabel}return u8[e.kind]}var Cw={note:"Note",tip:"Tip",warn:"Warning",danger:"Danger",success:"Success"};function p8(e){const t=e.tone??"note",n=e.title??Cw[t]??Cw.note,s=e.body??"";return`<div class="callout ${t}"><div class="callout-title"${_("title")}>${S(n)}</div><div class="callout-body"${_("body")}>${vo(s)}</div></div>`}var yn=30,Cn=14;function f8(e,t,n,s){return s?`<path d="M${e-6},${t-3} L${e},${t} L${e-6},${t+3} z" fill="${n}"/>`:`<path d="M${e-6},${t-3} L${e},${t} L${e-6},${t+3}" fill="none" stroke="${n}" stroke-width="1.2"/>`}function $r(e,t,n,s){const o=Cn/2,r=n.length>0?` stroke-dasharray="${n}"`:"";return`<line x1="1" y1="${o}" x2="${yn-7}" y2="${o}" stroke="${e}" stroke-width="${t}"${r}/>`+f8(yn-1,o,e,s)}function pi(e,t,n,s){const o=s.length>0?` stroke-dasharray="${s}"`:"";return`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" rx="2" fill="${n}" stroke="${e}" stroke-width="${t}"${o}/>`}function h8(e,t,n,s){let o;switch(e){case"node-dot":{const r=s!==void 0&&s.length>0?` stroke-dasharray="${s}"`:"";o=`<circle cx="${yn/2}" cy="${Cn/2}" r="5.5" fill="${t??"var(--paper)"}" stroke="${n??"var(--ink)"}" stroke-width="1.5"${r}/>`;break}case"line":o=`<line x1="1" y1="${Cn/2}" x2="${yn-1}" y2="${Cn/2}" stroke="${n??"var(--muted)"}" stroke-width="1.25"/>`;break;case"line-dashed":o=`<line x1="1" y1="${Cn/2}" x2="${yn-1}" y2="${Cn/2}" stroke="${n??"var(--muted)"}" stroke-width="1.25" stroke-dasharray="5 4"/>`;break;case"node-accent-outline":o=pi("var(--accent)",1.5,"var(--paper)","");break;case"fill":o=pi("var(--rule-solid)",1,t??"var(--ink)","");break;case"node":o=pi("var(--ink)",1.5,"var(--paper)","");break;case"node-accent":o=pi("var(--accent)",1.5,"var(--accent-tint)","");break;case"node-dashed":o=pi("var(--ink)",1.25,"var(--paper)","4 3");break;case"node-fill2":o=pi("var(--rule-solid)",1,"var(--paper-2)","");break;case"edge":o=$r("var(--muted)",1.5,"",!0);break;case"edge-dashed":o=$r("var(--muted)",1.5,"5 4",!1);break;case"edge-async":o=$r("var(--muted)",1.25,"2 3",!1);break;case"edge-error":o=$r("var(--negative)",1.5,"",!0);break;case"edge-accent":o=$r("var(--accent)",1.75,"",!0);break;case"edge-link":o=$r("var(--link)",1.5,"",!0);break;case"edge-accent-dashed":o=$r("var(--accent)",1.75,"5 4",!1);break;case"edge-negative-dashed":o=$r("var(--negative)",1.5,"5 4",!0);break;case"edge-implements":{const r=Cn/2;o=`<line x1="1" y1="${r}" x2="${yn-8}" y2="${r}" stroke="var(--muted)" stroke-width="1.5" stroke-dasharray="5 4"/><path d="M${yn-8},${r-4} L${yn-1},${r} L${yn-8},${r+4} z" fill="var(--paper)" stroke="var(--ink)" stroke-width="1.2"/>`;break}case"line-dot":case"line-dot-accent":{const r=Cn/2,i=e==="line-dot"?"var(--muted)":"var(--accent)";o=`<line x1="1" y1="${r}" x2="${yn-1}" y2="${r}" stroke="${i}" stroke-width="${e==="line-dot"?1.5:1.75}"/><circle cx="${yn/2}" cy="${r}" r="3.5" fill="${i}"/>`;break}case"node-store":o=`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" fill="var(--paper-2)"/><path d="M${yn-1},1 H1 V${Cn-1} H${yn-1}" fill="none" stroke="var(--rule-solid)" stroke-width="1"/>`;break;case"node-stadium":o=`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" rx="${(Cn-2)/2}" fill="var(--paper)" stroke="var(--ink)" stroke-width="1.5"/>`;break;case"node-stadium-fill2":o=`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" rx="${(Cn-2)/2}" fill="var(--paper-2)" stroke="var(--rule-solid)" stroke-width="1"/>`;break;case"node-negative":o=pi("var(--negative)",1.5,"var(--negative-tint)","");break;case"chip":return""}return`<svg class="lg-sw" viewBox="0 0 ${yn} ${Cn}" width="${yn}" height="${Cn}" aria-hidden="true">${o}</svg>`}function ot(e,t){if(e.length<2)return"";const n=e.map(o=>{const r=o.swatch==="chip"?`<span class="lg-chip t-eyebrow">${S(o.chip??"")}</span>`:h8(o.swatch,o.fill,o.stroke,o.dash);return`<span class="lg-item"${o.path!==void 0?_(o.path):""}>${r}<span class="lg-label">${S(o.label)}</span></span>`}).join("");return`<div class="diagram-legend"${t!==void 0?fe(t):""}><span class="lg-title t-eyebrow">Legend</span>${n}</div>`}function wt(e,t,n=`${t}s`){return`${e} ${e===1?t:n}`}function Hy(e,t,n=[]){const s=(t??"").trim(),o=[...s!==""?[s]:[],...n.filter(r=>r.trim()!=="")];return o.length===0?e:`${e}: ${o.join(", ")}`}function m8(e){return` role="img" aria-label="${S(e)}"`}function g8(e){return`<title>${S(e)}</title>`}function Sn(e,t,n=[]){const s=Hy(e,t,n);return{name:s,attrs:m8(s),title:g8(s)}}var ut=' data-decorative="1"',zr=20,Rc=40,g4=6,Bn=12,Ha=6.2,v4=7.4,v8=150,ic=28,Hu=64,$a=14,Sa=14,Nw=18,Ea=18,Wy=7;function y8(e){const t=e.entities??[],n=e.relations??[],s=e.groups??[],o=e.enums??[],r=e.dir!=="TB",i=t.map((he,ge)=>x8(he,ge)),l=new Map;for(const he of i)l.set(he.name,he),he.entity.schema!==void 0&&l.set(`${he.entity.schema}.${he.name}`,he);const d=[];n.forEach((he,ge)=>{const Ne=l.get(he.from),Fe=l.get(he.to);if(Ne===void 0||Fe===void 0)return;const We=S8(he.card);d.push({r:he,idx:ge,from:Ne,to:Fe,...We,dashed:he.identifying===!1})});const u=new Map,p=new Map;for(const he of d)he.toMany||u.set(he.to.name,(u.get(he.to.name)??0)+1),he.fromMany||u.set(he.from.name,(u.get(he.from.name)??0)+1),p.set(he.from.name,(p.get(he.from.name)??0)+1),he.to!==he.from&&p.set(he.to.name,(p.get(he.to.name)??0)+1);let h,m=0,g=!1;for(const[he,ge]of u)ge>m?(m=ge,h=he,g=!1):ge===m&&(g=!0);g&&(h=void 0);const v=[],y=new Map,b=[];for(const he of s){const ge=(he.entities??[]).filter(Fe=>l.has(Fe)&&!y.has(l.get(Fe)?.name??Fe));if(ge.length===0)continue;const Ne=v.length;v.push(he.name),b.push(!0);for(const Fe of ge)y.set(l.get(Fe)?.name??Fe,Ne)}for(const he of i){if(y.has(he.name)||he.entity.schema===void 0)continue;let ge=v.indexOf(he.entity.schema);(ge===-1||!b[ge])&&(ge=v.length,v.push(he.entity.schema),b.push(!0)),y.set(he.name,ge)}const E=i.filter(he=>!y.has(he.name));if(E.length>0){const he=v.length;v.push(""),b.push(!1);for(const ge of E)y.set(ge.name,he)}const $=i.map((he,ge)=>({box:he,band:y.get(he.name)??0,layer:0,order:ge,u:0,v:0,du:r?he.w:he.h,dv:r?he.h:he.w})),A=new Map($.map(he=>[he.box.name,he])),T=new Map;for(const he of $)T.set(he.box.name,new Set);for(const he of d)he.from!==he.to&&(T.get(he.from.name)?.add(he.to.name),T.get(he.to.name)?.add(he.from.name));$8($,T,p,h,A);const N=[...new Set($.map(he=>he.layer))].sort((he,ge)=>he-ge),j=N[0]??0,P=N[N.length-1]??0,I=[],O=new Map,C=(he,ge)=>{const Ne=O.get(he)??[];Ne.push(ge),O.set(he,Ne)};let D=0;for(const he of d){const ge=A.get(he.from.name),Ne=A.get(he.to.name);if(ge===void 0||Ne===void 0)continue;const Fe=ge===Ne,We=ge.layer,ze=Ne.layer;let Xe,pt,kt=!1;Fe?Xe=pt=We:We<ze?(Xe=We,pt=ze-1,kt=ze-We>1):We>ze?(Xe=We-1,pt=ze,kt=We-ze>1):Xe=pt=We;const St={rel:he,src:ge,dst:Ne,g1:Xe,g2:pt,long:kt,self:Fe,slot1:0,slot2:0,channel:kt?D++:-1};I.push(St),Fe||(C(Xe,St),kt&&C(pt,St))}const F=new Map;for(let he=j;he<=P;he++){const ge=O.get(he)?.length??0;F.set(he,Math.max(he===P?ge>0?(ge+1)*$a:0:Hu,(ge+1)*$a))}const U=D>0?D*$a+8:0,Y=new Map,B=new Map,te=[],ee=()=>{let he=Ea;for(let Fe=j;Fe<=P;Fe++){const We=Math.max(0,...$.filter(ze=>ze.layer===Fe).map(ze=>ze.du));Y.set(Fe,he),B.set(Fe,We),he+=We+(F.get(Fe)??Hu)}let ge=Ea+U;te.length=0;let Ne=!1;v.forEach((Fe,We)=>{const ze=$.filter(ct=>ct.band===We),Xe=b[We]===!0;if(ze.length===0){te.push({top:ge,bottom:ge,minL:0,maxL:0});return}const pt=ge+(We>0?(Ne?Sa:0)+ic:0)+(Xe?Sa+Nw:0);let kt=0;const St=new Map;for(const ct of ze){const _t=St.get(ct.layer)??[];_t.push(ct),St.set(ct.layer,_t)}for(const ct of St.values())ct.sort((_t,En)=>_t.order-En.order),kt=Math.max(kt,ct.reduce((_t,En)=>_t+En.dv,0)+ic*(ct.length-1));let Nt=1/0,Bt=-1/0;for(const[ct,_t]of St){const En=_t.reduce((Et,an)=>Et+an.dv,0)+ic*(_t.length-1);let zt=pt+(kt-En)/2;for(const Et of _t)Et.u=(Y.get(ct)??0)+((B.get(ct)??Et.du)-Et.du)/2,Et.v=zt,zt+=Et.dv+ic;Nt=Math.min(Nt,ct),Bt=Math.max(Bt,ct)}te.push({top:pt,bottom:pt+kt,minL:Nt,maxL:Bt}),ge=pt+kt,Ne=Xe})};ee();const H=[...N].sort((he,ge)=>Math.abs(he)-Math.abs(ge)||he-ge),W=(he,ge)=>{for(const Ne of he){const Fe=ge(Ne);for(const We of $){if(We.layer!==Ne)continue;const ze=[...T.get(We.box.name)??[]].map(Xe=>A.get(Xe)).filter(Xe=>Xe!==void 0&&Xe.layer===Fe);ze.length!==0&&(We.order=ze.reduce((Xe,pt)=>Xe+pt.v+pt.dv/2,0)/ze.length)}}ee()};W(H,he=>he>0?he-1:he<0?he+1:he),W([...H].reverse(),he=>he>=0?he+1:he-1),W(H,he=>he>0?he-1:he<0?he+1:he);for(const[he,ge]of O){const Ne=(Y.get(he)??0)+(B.get(he)??0),Fe=F.get(he)??Hu;ge.sort((We,ze)=>Pw(We.src,We.dst)-Pw(ze.src,ze.dst)),ge.forEach((We,ze)=>{const Xe=Ne+(ze+1)*Fe/(ge.length+1);We.g1===he&&We.slot1===0&&(We.slot1=Xe),We.long&&We.g2===he&&(We.slot2=Xe),We.long||(We.slot2=We.slot1)})}const V=(he,ge)=>r?he:ge,R=(he,ge)=>r?ge:he,z=he=>he.map(([ge,Ne],Fe)=>`${Fe===0?"M":"L"}${nt(V(ge,Ne))},${nt(R(ge,Ne))}`).join(" ");let X=0,K=0;const se=(he,ge)=>{X=Math.max(X,he),K=Math.max(K,ge)};for(const he of $)se(V(he.u+he.du,he.v+he.dv),R(he.u+he.du,he.v+he.dv));let Q="",re=!1;Q+=`<g${fe("groups")}>`,v.forEach((he,ge)=>{if(b[ge]!==!0)return;const Ne=te[ge];if(Ne===void 0||Ne.top===Ne.bottom)return;re=!0;const Fe=(Y.get(Ne.minL)??0)-Sa,We=(Y.get(Ne.maxL)??0)+(B.get(Ne.maxL)??0)+Sa,ze=Ne.top-Sa-Nw,Xe=Ne.bottom+Sa,pt=V(Fe,ze),kt=R(Fe,ze),St=V(We,Xe)-pt,Nt=R(We,Xe)-kt;se(pt+St,kt+Nt);const Bt=s.findIndex(ct=>ct.name===he);Q+=`<g${Bt>=0?_(`groups.${Bt}`):""}><rect x="${nt(pt)}" y="${nt(kt)}" width="${nt(St)}" height="${nt(Nt)}" rx="8" class="er-panel"/><text x="${nt(pt+12)}" y="${nt(kt+13)}" class="t-eyebrow er-panel-tab">${S(he.toUpperCase())}</text></g>`}),Q+="</g>";const Z=[];let q=!1,de=!1;Q+=`<g${fe("relations")}>`;for(const he of I){const{rel:ge,src:Ne,dst:Fe}=he;q=!0,ge.dashed&&(de=!0);const We=ge.fromMany&&!ge.toMany?!0:!ge.fromMany&&ge.toMany?!1:Lw(ge.from,ge.to,ge.r.fromCol)||!Lw(ge.to,ge.from,ge.r.toCol),ze=ge.fromMany&&ge.toMany,Xe=ze?Ne.v+Ne.dv/2:jw(Ne,r,We?v0(ge.from,ge.to,ge.r.fromCol):Iw(ge.from,ge.r.fromCol)),pt=ze?Fe.v+Fe.dv/2:jw(Fe,r,We?Iw(ge.to,ge.r.toCol):v0(ge.to,ge.from,ge.r.toCol)),kt=Ne.layer,St=Fe.layer;let Nt,Bt,ct,_t;if(he.self){const zt=Ne.u+Ne.du,Et=Math.abs(pt-Xe)<1?Xe+zr:pt,an=zt+$a;Nt=z([[zt,Xe],[an,Xe],[an,Et],[zt,Et]]),Bt=1,ct=-1,_t=[an+8,Math.max(Xe,Et)+12]}else if(kt===St){const zt=Math.max(Ne.u+Ne.du,Fe.u+Fe.du),Et=he.slot1>0?he.slot1:zt+$a;Nt=z([[Ne.u+Ne.du,Xe],[Et,Xe],[Et,pt],[Fe.u+Fe.du,pt]]),Bt=1,ct=-1,_t=[Et,(Xe+pt)/2]}else{const zt=kt<St,Et=zt?Ne.u+Ne.du:Ne.u,an=zt?Fe.u:Fe.u+Fe.du;if(Bt=zt?1:-1,ct=zt?1:-1,!he.long)Nt=z([[Et,Xe],[he.slot1,Xe],[he.slot1,pt],[an,pt]]),_t=[he.slot1,Math.abs(Xe-pt)<zr*2?Math.max(Xe,pt)+12:(Xe+pt)/2];else{const _n=Ea+he.channel*$a+4;Nt=z([[Et,Xe],[he.slot1,Xe],[he.slot1,_n],[he.slot2,_n],[he.slot2,pt],[an,pt]]),_t=[(he.slot1+he.slot2)/2,_n]}}const En=ge.dashed?' stroke-dasharray="5 4"':"";if(Q+=`<g${_(`relations.${ge.idx}`)}><path d="${Nt}" fill="none" stroke="var(--muted)" stroke-width="1.25"${En}/>`+Rw(he.self||Bt>0?Ne.u+Ne.du:Ne.u,Xe,Bt,Ow(ge.fromMany,!1),r,V,R)+Rw(he.self||kt===St?Fe.u+Fe.du:ct>0?Fe.u:Fe.u+Fe.du,pt,he.self||kt===St?1:-ct,Ow(ge.toMany,ge.toOptional),r,V,R)+"</g>",ge.r.label!==void 0&&ge.r.label!==""){const zt=ge.r.label.toUpperCase(),Et=Math.round(zt.length*Ha+8),an=V(_t[0],_t[1]),_n=R(_t[0],_t[1]);Z.push(`<rect x="${nt(an-Et/2)}" y="${nt(_n-7)}" width="${Et}" height="14" fill="var(--paper)"/><text x="${nt(an)}" y="${nt(_n+3.5)}" class="t-arrow er-rel" text-anchor="middle">${S(zt)}</text>`),se(an+Et/2,_n+7)}}Q+="</g>";const le=new Set;let J=!1;const ue=new Set;Q+=`<g${fe("entities")}>`;for(const he of $){const ge=he.box,Ne=V(he.u,he.v),Fe=R(he.u,he.v),We=ge.name===h,ze=We?"AGGREGATE ROOT":ge.kind==="view"?"VIEW":ge.kind==="enum"?"ENUM":ge.kind==="external"?"EXT":ge.join?"JOIN":"ENTITY";ge.join&&!We&&ge.kind==="table"&&(J=!0),ge.kind!=="table"&&ue.add(ge.kind);const Xe=ge.kind==="view"||ge.kind==="enum",pt=We?"var(--accent)":Xe?"var(--rule-solid)":"var(--ink)",kt=We?"var(--accent-tint)":ge.kind==="view"?"var(--paper-2)":"var(--paper)",St=Xe?1:1.5,Nt=ge.kind==="external"?' stroke-dasharray="4 3"':"";Q+=`<g${_(`entities.${ge.idx}`)}><rect x="${nt(Ne)}" y="${nt(Fe)}" width="${ge.w}" height="${ge.h}" rx="6" fill="${kt}" stroke="${pt}" stroke-width="${St}"${Nt}/><text x="${nt(Ne+Bn)}" y="${nt(Fe+15)}" class="er-eyebrow t-eyebrow${We?" c-accent":""}">${ze}</text><text x="${nt(Ne+Bn)}" y="${nt(Fe+31)}" class="er-head-text t-name">${S(ge.name)}</text>`,ge.headLines.forEach((ct,_t)=>{Q+=`<text x="${nt(Ne+Bn)}" y="${nt(Fe+44+_t*13)}" class="er-col dim t-sub c-soft">${S(ct)}</text>`}),(ge.rows.length>0||ge.headLines.length>0)&&(Q+=`<line x1="${nt(Ne)}" y1="${nt(Fe+ge.headH)}" x2="${nt(Ne+ge.w)}" y2="${nt(Fe+ge.headH)}" class="er-headline"/>`),Q+=`<g${fe(`entities.${ge.idx}.columns`)}>`;let Bt=-1;ge.rows.forEach((ct,_t)=>{const En=Fe+ge.headH+_t*zr,zt=En+14;ct.kind==="col"?(Bt>=0&&(Q+="</g>"),Bt=ct.colIdx,Q+=`<g${_(`entities.${ge.idx}.columns.${ct.colIdx}`)}>`,ct.note!==void 0&&(Q+=`<title>${S(ct.note)}</title>`),_t>0&&(Q+=`<line x1="${nt(Ne+1)}" y1="${nt(En)}" x2="${nt(Ne+ge.w-1)}" y2="${nt(En)}" class="er-rowline"${ut}/>`),ct.markers.forEach((Et,an)=>{le.add(Et),Q+=`<text x="${nt(Ne+Bn+an*Wy)}" y="${nt(zt)}" class="er-key ${b8(Et)} t-sub c-muted">${S(Et)}</text>`}),Q+=`<text x="${nt(Ne+Bn+Tw(ge))}" y="${nt(zt)}" class="er-col t-sub c-ink">${S(ct.left)}</text>`+(ct.right.length>0?`<text x="${nt(Ne+ge.w-Bn)}" y="${nt(zt)}" class="er-col dim t-sub c-soft" text-anchor="end">${S(ct.right)}</text>`:"")):Q+=`<text x="${nt(Ne+Bn+Tw(ge))}" y="${nt(zt)}" class="er-col dim t-sub c-soft">${S(ct.left)}</text>`}),Bt>=0&&(Q+="</g>"),Q+="</g></g>"}Q+="</g>";const ve=o.map((he,ge)=>k8(he.name,he.values,ge));if(ve.length>0){const he=X+Hu;let ge=Ea+U;Q+=`<g${fe("enums")}>`;for(const Ne of ve)Q+=`<g${_(`enums.${Ne.idx}`)}><rect x="${nt(he)}" y="${nt(ge)}" width="${Ne.w}" height="${Ne.h}" rx="6" fill="var(--paper)" stroke="var(--rule-solid)" stroke-width="1"/><text x="${nt(he+Bn)}" y="${nt(ge+15)}" class="er-eyebrow t-eyebrow">ENUM</text><text x="${nt(he+Bn)}" y="${nt(ge+31)}" class="er-head-text t-name">${S(Ne.name)}</text><line x1="${nt(he)}" y1="${nt(ge+Rc)}" x2="${nt(he+Ne.w)}" y2="${nt(ge+Rc)}" class="er-headline"/>`,Ne.values.forEach((Fe,We)=>{const ze=ge+Rc+We*zr;We>0&&(Q+=`<line x1="${nt(he+1)}" y1="${nt(ze)}" x2="${nt(he+Ne.w-1)}" y2="${nt(ze)}" class="er-rowline"${ut}/>`),Q+=`<text x="${nt(he+Bn)}" y="${nt(ze+14)}" class="er-col t-sub c-ink">${S(Fe)}</text>`}),Q+="</g>",se(he+Ne.w,ge+Ne.h),ge+=Ne.h+ic;Q+="</g>"}Q+=Z.join("");const we=Math.ceil(X+Ea),$e=Math.ceil(K+Ea),je=Sn("Entity relationship diagram",e.title,[wt(t.length,"entity","entities")]),De=`<svg viewBox="0 0 ${we} ${$e}"${je.attrs}>`+je.title+Q+"</svg>",Me=[];le.has("#")&&Me.push({swatch:"chip",chip:"#",label:"primary key"}),le.has("→")&&Me.push({swatch:"chip",chip:"→",label:"foreign key"}),le.has("U")&&Me.push({swatch:"chip",chip:"U",label:"unique"}),le.has("?")&&Me.push({swatch:"chip",chip:"?",label:"nullable"}),le.has("⌘")&&Me.push({swatch:"chip",chip:"⌘",label:"indexed"}),q&&Me.push({swatch:"chip",chip:"1 / N",label:"cardinality"}),de&&(Me.push({swatch:"line",label:"identifying"}),Me.push({swatch:"line-dashed",label:"non-identifying"})),J&&Me.push({swatch:"chip",chip:"JOIN",label:"join table"}),ue.has("view")&&Me.push({swatch:"node-fill2",label:"view"}),(ue.has("enum")||ve.length>0)&&Me.push({swatch:"chip",chip:"ENUM",label:"enum"}),ue.has("external")&&Me.push({swatch:"node-dashed",label:"external"}),re&&Me.push({swatch:"node-fill2",label:"schema group"}),h!==void 0&&Me.push({swatch:"node-accent",label:"aggregate root"});const Be=ot(Me),Ke={tag:"ER",...e.title!==void 0?{title:e.title}:{},...e.description!==void 0?{desc:e.description}:{},...Be.length>0?{legendHtml:Be}:{}};return lt(Ke,De)}function x8(e,t){const n=e.columns??[],s=e.kind??"table",o=Math.max(0,...n.map(m=>g0(m).length)),r=o>0?o*Wy+6:0;let i=Math.max(v8,e.name.length*v4+Bn*2+24);const l=n.map(m=>w8(m));n.forEach((m,g)=>{i=Math.max(i,Bn*2+r+m.name.length*Ha+16+(l[g]?.length??0)*Ha)});const d=i-Bn*2-r,u=[];n.forEach((m,g)=>{if(u.push({kind:"col",col:m,colIdx:g,markers:g0(m),left:m.name,right:l[g]??"",...m.note!==void 0&&m.note.length>0?{note:m.note}:{}}),m.enum!==void 0&&m.enum.length>0)for(const v of _w(m.enum.join(" · "),Math.max(24,Math.floor(d/Ha))))u.push({kind:"sub",colIdx:g,markers:[],left:v,right:""})});const p=e.note!==void 0&&e.note.length>0?_w(e.note,Math.max(24,Math.floor((i-Bn*2)/Ha))):[],h=Rc+(p.length>0?p.length*13+2:0);return{name:e.name,idx:t,entity:e,cols:n,rows:u,headLines:p,headH:h,pkIdx:n.findIndex(m=>m.pk===!0),join:n.length>0&&n.every(m=>m.fk===!0),kind:s,w:Math.round(i),h:h+u.length*zr+(u.length>0?g4:0)}}function k8(e,t,n){const s=Math.round(Math.max(120,e.length*v4+Bn*2+12,...t.map(o=>o.length*Ha+Bn*2)));return{idx:n,name:e,values:t,w:s,h:Rc+t.length*zr+(t.length>0?g4:0)}}function g0(e){const t=[];return e.pk===!0&&t.push("#"),e.fk===!0&&t.push("→"),e.unique===!0&&t.push("U"),e.nullable===!0&&t.push("?"),e.index===!0&&t.push("⌘"),t}function b8(e){return e==="#"?"pk":e==="→"?"fk":e==="U"?"uk":e==="?"?"nul":"ix"}function Tw(e){const t=Math.max(0,...e.cols.map(n=>g0(n).length));return t>0?t*Wy+6:0}function w8(e){const t=[];return e.type!==void 0&&e.type.length>0&&t.push(e.type),e.ref!==void 0&&e.ref.length>0&&t.push(`→ ${e.ref}`),e.default!==void 0&&e.default.length>0&&t.push(`= ${e.default}`),t.join(" ")}function _w(e,t){const n=[];let s="";for(const o of e.split(/\s+/).filter(r=>r.length>0))for(s.length===0?s=o:s.length+1+o.length<=t?s+=" "+o:(n.push(s),s=o);s.length>t;)n.push(s.slice(0,t)),s=s.slice(t);return s.length>0&&n.push(s),n}function $8(e,t,n,s,o){const r=new Set,i=[];for(const u of e){if(r.has(u.box.name)||(t.get(u.box.name)?.size??0)===0)continue;const p=[],h=[u];for(r.add(u.box.name);h.length>0;){const m=h.shift();p.push(m);for(const g of t.get(m.box.name)??[]){if(r.has(g))continue;r.add(g);const v=o.get(g);v!==void 0&&h.push(v)}}i.push(p)}i.sort((u,p)=>{const h=s!==void 0&&u.some(g=>g.box.name===s)?1:0;return(s!==void 0&&p.some(g=>g.box.name===s)?1:0)-h||p.length-u.length}),i.forEach((u,p)=>{const h=u.find(E=>E.box.name===s)??u.reduce((E,$)=>(n.get($.box.name)??0)>(n.get(E.box.name)??0)?$:E,u[0]),m=new Map([[h.box.name,0]]),g=[h];for(;g.length>0;){const E=g.shift(),$=m.get(E.box.name)??0;for(const A of t.get(E.box.name)??[]){if(m.has(A))continue;m.set(A,$+1);const T=o.get(A);T!==void 0&&g.push(T)}}const v=new Map,y=[];for(const E of u){if(E===h||v.has(E.box.name))continue;const $=[],A=[E.box.name];for(v.set(E.box.name,y.length);A.length>0;){const T=A.shift();$.push(T);for(const N of t.get(T)??[])N===h.box.name||v.has(N)||(v.set(N,y.length),A.push(N))}y.push($)}const b=y.map(()=>1);if(p===0&&y.length>1){const E=y.map((T,N)=>({i:N,size:T.length})).sort((T,N)=>N.size-T.size||T.i-N.i);let $=0,A=0;for(const{i:T,size:N}of E)A<=$?(b[T]=1,A+=N):(b[T]=-1,$+=N)}for(const E of u){const $=m.get(E.box.name)??0,A=v.get(E.box.name);E.layer=A===void 0?0:(b[A]??1)*$}});const l=e.filter(u=>!r.has(u.box.name));if(l.length===0)return;const d=[...new Set(e.filter(u=>r.has(u.box.name)).map(u=>u.layer))].sort((u,p)=>u-p);if(d.length===0){l.forEach((u,p)=>{u.layer=p%4});return}l.forEach((u,p)=>{u.layer=d[p%d.length]??0})}function Lw(e,t,n){return v0(e,t,n)>=0}function v0(e,t,n){if(n!==void 0){const d=e.cols.findIndex(u=>u.name===n);if(d>=0)return Dc(e,d)}const s=t.name.toLowerCase(),o=s.replace(/s$/,""),r=e.cols.map((d,u)=>({c:d,i:u})).filter(d=>d.c.fk===!0),i=r.find(d=>{const u=d.c.ref?.toLowerCase()??"";return u.startsWith(s+".")||u===s||u.startsWith(t.name.toLowerCase())});if(i!==void 0)return Dc(e,i.i);const l=r.find(d=>{const u=d.c.name.toLowerCase();return u.includes(s)||u.includes(o)});return l!==void 0?Dc(e,l.i):-1}function Iw(e,t){if(t!==void 0){const n=e.cols.findIndex(s=>s.name===t);if(n>=0)return Dc(e,n)}return e.pkIdx>=0?Dc(e,e.pkIdx):-1}function Dc(e,t){return e.rows.findIndex(n=>n.kind==="col"&&n.colIdx===t)}function jw(e,t,n){return!t||n<0?e.v+e.dv/2:e.v+e.box.headH+n*zr+zr/2}function Pw(e,t){return(e.v+e.dv/2+t.v+t.dv/2)/2}function S8(e){if(e===void 0)return{fromMany:!0,toMany:!1,toOptional:!1};if(e==="0..1")return{fromMany:!1,toMany:!1,toOptional:!0};if(e==="0..N")return{fromMany:!1,toMany:!0,toOptional:!0};const t=e.split(":"),n=s=>s!==void 0&&s.trim().toUpperCase()!=="1";return{fromMany:n(t[0]),toMany:n(t[1]),toOptional:!1}}function Ow(e,t){return t?e?"0..N":"0..1":e?"N":"1"}function Rw(e,t,n,s,o,r,i){const l=e+n*10,d=r(l,t),u=i(l,t);if(o){const p=n>0?"start":"end";return`<text x="${nt(d)}" y="${nt(u-4)}" class="t-arrow er-card" text-anchor="${p}">${S(s)}</text>`}return`<text x="${nt(d+4)}" y="${nt(u+3)}" class="t-arrow er-card" text-anchor="start">${S(s)}</text>`}var nt=e=>Math.round(e*10)/10;function E8(e){const t=e.columns??[];let n=`<div class="kanban"${fe("columns")}>`;return t.forEach((s,o)=>{const r=(s.cards??[]).map((i,l)=>{const d=i.tag!==void 0?`<div class="kan-card-tag">${S(i.tag)}</div>`:"";return`<div class="kan-card"${_(`columns.${o}.cards.${l}`)}><div class="kan-card-title">${S(i.title)}</div>`+d+"</div>"}).join("");n+=`<div class="kan-col"${_(`columns.${o}`)}${fe(`columns.${o}.cards`)}><div class="kan-head"${_(`columns.${o}.label`)}>${S(s.label)}</div>`+r+"</div>"}),n+"</div>"}function dt(e,t,n){if(e==null||e==="")return[];const s=String(e).split(/\s+/),o=[];let r="";for(const i of s){if(!r){r=i;continue}if((r+" "+i).length<=t)r+=" "+i;else if(o.push(r),r=i,o.length===n)break}return r&&o.length<n&&o.push(r),o.slice(0,n)}function hn(e){return` data-reveal="${e}"`}var y4={sync:{cls:"msg-line",marker:"sqArrow",txt:"msg-text t-arrow em"},response:{cls:"msg-line dashed",marker:"sqOpen",txt:"msg-text t-arrow"},async:{cls:"msg-line async",marker:"sqOpen",txt:"msg-text t-arrow"},error:{cls:"msg-line err",marker:"sqErr",txt:"msg-text t-arrow err"},note:{cls:"",marker:null,txt:"msg-text t-arrow note"}},Fp=36,M8=28,A8=24,C8=14,x4=13,N8=34,T8=3,Dw=18,Bw=12,zw=6,Bc=6,k4=150,_8=46,L8=6.2,I8=40;function j8(e,t){const n=o=>e.findIndex(r=>r.id===o),s=e.slice(0,-1).map(()=>_8);for(const o of t){if(!("from"in o)||o.kind==="note")continue;const r=n(o.from),i=n(o.to);if(r<0||i<0||Math.abs(r-i)!==1)continue;const l=Math.min(r,i),d=Math.ceil((o.label??"").length*L8+I8)-k4;d>(s[l]??0)&&(s[l]=d)}return s}function b4(e){return e.kind==="msg"}function P8(e){const t=new Map;let n=0;for(const s of e)s.kind!=="end"&&(t.set(s.idx,n),n+=1);return t}function O8(e,t,n,s){const o=u=>{const p=s.get(u);return p===void 0?"":hn(p)},r=e.filter(b4);if(!r.some(u=>u.summary!==void 0&&u.summary.length>0))return"";const i=new Set,l=u=>{const p=u.open.idx,h=u.end?.idx??Number.POSITIVE_INFINITY;if(r.some(g=>g.idx>p&&g.idx<h&&g.summary!==void 0&&g.summary.length>0)){i.add(u.open.idx);for(const g of u.elses)i.add(g.idx)}u.children.forEach(l)};t.forEach(l);const d=[];for(const u of e){if(u.kind==="open"&&i.has(u.idx)){const E=u.label.length>0?`<span class="step-frame-label">${S(u.label)}</span>`:"";d.push(`<li class="step-frame"${_(`messages.${u.idx}`)}${o(u.idx)}><span class="step-frame-tag">${S(u.frame.toUpperCase())}</span>${E}</li>`);continue}if(u.kind==="else"&&i.has(u.idx)){d.push(`<li class="step-frame else"${_(`messages.${u.idx}`)}${o(u.idx)}><span class="step-frame-tag">else</span><span class="step-frame-label">${S(u.label)}</span></li>`);continue}if(u.kind!=="msg"||u.summary===void 0||u.summary.length===0)continue;const p=u.msgKind==="error"?' class="err"':"",h=u.msgKind==="error"?" err":"",m=n.get(u.from)?.name??u.from,g=u.msgKind==="note"||u.from===u.to?"":` → ${S(n.get(u.to)?.name??u.to)}`,v=`${S(m)}${g}`,y=u.code!==void 0&&u.code.length>0?`<pre class="sql">${S(u.code)}</pre>`:"",b=u.note!==void 0&&u.note.length>0?`<span class="step-note">${S(u.note)}</span>`:"";d.push(`<li${p}${_(`messages.${u.idx}`)}${o(u.idx)}><span class="step-n">${u.n}</span><span class="step-actor${h}">${v}</span><span class="step-summary">${S(u.summary)}</span>`+y+b+"</li>")}return`<div class="seq-steps"><div class="seq-steps-title">Step-by-step</div><ol>${d.join("")}</ol></div>`}function R8(e){if(e.length===0)return"";const t=e.map((n,s)=>`<span${_(`foot.${s}`)}><strong>${S(n.label)}:</strong> ${S(n.value)}</span>`).join("");return`<div class="diagram-foot"${fe("foot")}>${t}</div>`}function D8(e,t,n){const s=[];let o=n-Fp,r=0;return e.forEach((i,l)=>{const d=i;if("frame"in d){const y=typeof d.label=="string"?d.label:"";s.push({kind:"open",idx:l,top:o,y:o+14,frame:String(d.frame),label:y}),o+=M8;return}if("else"in d){s.push({kind:"else",idx:l,top:o,y:o+8,frame:"",label:String(d.else??"")}),o+=A8;return}if("end"in d){s.push({kind:"end",idx:l,top:o,y:o+10,frame:"",label:""}),o+=C8;return}const u=i;r+=1;const p=u.kind!==void 0&&u.kind in y4?u.kind:"sync",h=u.label??"",m=p==="note"?dt(h,N8,T8):[],g=p==="note"?Fp+x4*Math.max(0,m.length-1):Fp,v={kind:"msg",idx:l,n:r,top:o,y:o+g,fromI:t(u.from),toI:t(u.to),msgKind:p,label:h,from:u.from,to:u.to,activate:u.activate===!0,deactivate:u.deactivate===!0,lines:m,...u.summary!==void 0?{summary:u.summary}:{},...u.code!==void 0?{code:u.code}:{},...u.note!==void 0?{note:u.note}:{}};s.push(v),o+=g}),{rows:s,cursor:o}}function B8(e){const t=[],n=[];for(const s of e)if(s.kind==="open"){const o={open:s,elses:[],children:[],x1:0,x2:0},r=n[n.length-1];r!==void 0?r.children.push(o):t.push(o),n.push(o)}else if(s.kind==="else")n[n.length-1]?.elses.push(s);else if(s.kind==="end"){const o=n.pop();o!==void 0&&(o.end=s)}return t}function z8(e,t,n){if(e.msgKind==="note"){const s=n(e);return s===null?null:[s.x,s.x+s.w]}if(e.fromI<0&&e.toI<0)return null;if(e.fromI<0)return[t(e.toI),t(e.toI)];if(e.toI<0)return[t(e.fromI),t(e.fromI)+36+e.label.length*Bc];if(e.fromI===e.toI){const s=t(e.fromI);return[s,s+36+e.label.length*Bc]}return[Math.min(t(e.fromI),t(e.toI)),Math.max(t(e.fromI),t(e.toI))]}function F8(e){const t=e.actors??[],n=e.messages??[],s=Math.max(t.length,1),o=24,r=k4,i=j8(t,n),l=16,d=t.map(J=>dt(J.name,J.external===!0?16:19,2)),u=d.some(J=>J.length>1),p=u?54:40,h=[];for(let J=0;J<s;J++)h.push(o+r/2+J*r+i.slice(0,J).reduce((ue,ve)=>ue+ve,0));const m=J=>h[J]??o+r/2,g=o*2+s*r+i.reduce((J,ue)=>J+ue,0),v=J=>t.findIndex(ue=>ue.id===J),y=l+p+28,{rows:b,cursor:E}=D8(n,v,y),$=b.filter(b4),A=P8(b),T=J=>hn(A.get(J)??0),N=E+Fp+12,j=N+6;let P=-1;for(const J of $)J.msgKind==="response"&&J.toI===0&&J.fromI>0&&(P=J.idx);const I=J=>{if(J.fromI<0&&J.toI<0)return null;const ue=Math.max(0,...J.lines.map(Be=>Be.length)),ve=J.top+14,we=J.y-J.top-18;if(J.fromI<0||J.toI<0||J.fromI===J.toI){const Be=m(J.fromI<0?J.toI:J.fromI),Ke=Math.max(72,Math.round(ue*Bc)+16);return{x:Be+12+Ke<=g-2?Be+12:Be-12-Ke,w:Ke,top:ve,h:we}}const $e=Math.min(m(J.fromI),m(J.toI)),je=Math.max(m(J.fromI),m(J.toI)),De=Math.max(je-$e+60,Math.round(ue*Bc)+16),Me=($e+je)/2;return{x:Math.round(Me-De/2),w:De,top:ve,h:we}},O=B8(b),C=J=>{J.children.forEach(C);const ue=J.open.idx,ve=J.end?.idx??Number.POSITIVE_INFINITY;let we=Number.POSITIVE_INFINITY,$e=Number.NEGATIVE_INFINITY;for(const je of $){if(je.idx<=ue||je.idx>=ve)continue;const De=z8(je,m,I);De!==null&&(we=Math.min(we,De[0]),$e=Math.max($e,De[1]))}we===Number.POSITIVE_INFINITY?(we=o,$e=g-o):(we-=Dw,$e+=Dw);for(const je of J.children)we=Math.min(we,je.x1-Bw),$e=Math.max($e,je.x2+Bw);J.x1=Math.max(2,Math.round(we)),J.x2=Math.min(g-2,Math.round($e))};O.forEach(C);const D=J=>J.end?.y??E+6,F=$.some(J=>J.activate||J.deactivate),U=[],Y=new Map,B=J=>{let ue=Y.get(J);return ue===void 0&&(ue=[],Y.set(J,ue)),ue},te=(J,ue,ve,we)=>{const $e=B(J),je={i:J,y1:ue,y2:Number.NaN,depth:$e.length,caller:ve,last:ue,step:we};$e.push(je),U.push(je)};for(const J of $){if(F){if(J.activate&&J.toI>=0&&te(J.toI,J.y,J.fromI,A.get(J.idx)??0),J.deactivate&&J.fromI>=0){const ue=B(J.fromI).pop();ue!==void 0&&(ue.y2=J.y)}continue}if(!(J.msgKind==="note"||J.fromI<0)){for(const ue of B(J.fromI))ue.last=J.y;if(!(J.toI<0||J.toI===J.fromI))if(J.msgKind==="sync"||J.msgKind==="async")te(J.toI,J.y,J.fromI,A.get(J.idx)??0);else{const ue=B(J.fromI);for(let ve=ue.length-1;ve>=0;ve--){const we=ue[ve];if(we.caller===J.toI){we.y2=J.y,ue.splice(ve,1);break}}}}}for(const J of Y.values())for(const ue of J)ue.y2=F?E:ue.last;const ee=Sn("Sequence diagram",e.title??e.endpoint?.path,[`${wt($.length,"message")} between ${wt(t.length,"actor")}`]);let H=`<svg viewBox="0 0 ${g} ${j}"${ee.attrs}>`+ee.title+'<defs><marker id="sqArrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="var(--muted)"/></marker><marker id="sqOpen" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M1,1 L9,5 L1,9" fill="none" stroke="var(--muted)" stroke-width="1.6"/></marker><marker id="sqErr" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="var(--negative)"/></marker><marker id="sqAccent" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M1,1 L9,5 L1,9" fill="none" stroke="var(--accent)" stroke-width="1.6"/></marker></defs>',W="",V="";const R=t.map((J,ue)=>m(ue)),z=(J,ue)=>{const ve=(ue.length+2)*Bc,we=R.find($e=>$e>=J-6&&$e<=J+ve);return we===void 0?J:we+12},X=J=>{const ue=J.open.y,ve=D(J),we=_(`messages.${J.open.idx}`)+T(J.open.idx);W+=`<g${we}><rect x="${J.x1}" y="${ue}" width="${J.x2-J.x1}" height="${Math.max(0,ve-ue)}" rx="4" class="seq-frame"/></g>`;const $e=J.open.frame.toUpperCase(),je=10+$e.length*7,De=J.open.label.length>0?`<text x="${z(J.x1+je+8,J.open.label)}" y="${ue+12}" class="seq-frame-guard t-arrow c-soft">[${S(J.open.label)}]</text>`:"";V+=`<g${we}><rect x="${J.x1}" y="${ue}" width="${je}" height="16" rx="2" class="seq-frame-tab"/><text x="${J.x1+5}" y="${ue+11.5}" class="seq-frame-tab-text t-eyebrow">${S($e)}</text>`+De+"</g>";for(const Me of J.elses){const Be=_(`messages.${Me.idx}`)+T(Me.idx);W+=`<g${Be}><line x1="${J.x1}" y1="${Me.y}" x2="${J.x2}" y2="${Me.y}" class="seq-frame-else"/></g>`,V+=`<g${Be}><text x="${z(J.x1+8,Me.label)}" y="${Me.y+14}" class="seq-frame-guard t-arrow c-soft">[${S(Me.label)}]</text></g>`}J.children.forEach(X)};O.forEach(X),H+=W;for(let J=0;J<t.length;J++){const ue=m(J);H+=`<line x1="${ue}" y1="${l+p}" x2="${ue}" y2="${N}" class="lifeline"/>`}for(const J of U){const ue=J.y1-zw,ve=J.y2+zw;H+=`<rect x="${m(J.i)-3+J.depth*4}" y="${ue}" width="6" height="${Math.max(0,ve-ue)}" class="activation"${hn(J.step)}/>`}H+=`<g${fe("actors")}>`,t.forEach((J,ue)=>{const ve=J.external===!0,we=ve?" ext":"",$e=d[ue]??[],je=J.sub!==void 0,De=$e.length>1?l+(ve?21:17):je?l+(ve?22:17):l+(ve?25:24),Me=l+(u?47:33),Be=$e.length<=1?`<text x="${m(ue)}" y="${De}" class="lane-head-text t-name">${S(J.name)}</text>`:$e.map((ge,Ne)=>`<text x="${m(ue)}" y="${De+Ne*14}" class="lane-head-text t-name">${S(ge)}</text>`).join(""),Ke=je?`<text x="${m(ue)}" y="${Me}" class="lane-head-sub t-sub">${S(J.sub??"")}</text>`:"",he=ve?`<text x="${m(ue)-r/2+8}" y="${l+11}" class="lane-head-chip t-eyebrow">EXT</text>`:"";H+=`<g${_(`actors.${ue}`)}><rect x="${m(ue)-r/2}" y="${l}" width="${r}" height="${p}" rx="4" class="lane-head${we}"/>`+he+Be+Ke+"</g>"}),H+="</g>",H+=V,H+=`<g${fe("messages")}>`;const K={sync:!1,response:!1,async:!1,error:!1,note:!1};for(const J of $){const ue=y4[J.msgKind],we=J.idx===P?{cls:`${ue.cls} accent`,marker:"sqAccent",txt:`${ue.txt} accent`}:ue;K[J.msgKind]=!0;const $e=_(`messages.${J.idx}`)+T(J.idx),je=J.msgKind==="error"?" err":"",De=(ze,Xe)=>`<circle cx="${ze}" cy="${Xe}" r="8" class="step-badge${je}"/><text x="${ze}" y="${Xe+3}" class="step-badge-text t-badge${je===""?"":" c-negative"}">${J.n}</text>`;if(J.msgKind==="note"){const ze=I(J);if(ze===null)continue;const Xe=J.summary!==void 0&&J.summary.length>0,pt=ze.x+ze.w/2,kt=J.lines.map((St,Nt)=>`<text x="${pt}" y="${ze.top+16+Nt*x4}" class="seq-note-text t-sub" text-anchor="middle">${S(St)}</text>`).join("");H+=`<g${$e}><rect x="${ze.x}" y="${ze.top}" width="${ze.w}" height="${ze.h}" rx="3" class="seq-note"/><path d="M${ze.x+ze.w-7},${ze.top} v7 h7" class="seq-note-fold"/>`+kt+(Xe?De(ze.x+2,ze.top):"")+"</g>";continue}if(J.fromI<0||J.toI<0){if(J.fromI<0&&J.toI<0)continue;const ze=m(J.fromI<0?J.toI:J.fromI);H+=`<g${$e}>`+De(ze+18,J.y-10)+`<text x="${ze+34}" y="${J.y-6}" class="msg-text note">${S(J.label)}</text></g>`;continue}if(J.fromI===J.toI){const ze=m(J.fromI),Xe=we.marker!==null?` marker-end="url(#${we.marker})"`:"";H+=`<g${$e}><path d="M${ze},${J.y-14} H${ze+28} V${J.y} H${ze+3}" class="${we.cls} self"${Xe}/>`+De(ze+16,J.y-26)+`<text x="${ze+36}" y="${J.y-4}" class="${we.txt}" text-anchor="start">${S(J.label)}</text></g>`;continue}const Me=m(J.fromI),Be=m(J.toI),Ke=Be>Me,he=Be+(Ke?-3:3),ge=Ke?Me+18:Me-18,Ne=Ke?ge+16:ge-16,Fe=Ke?"start":"end",We=we.marker!==null?` marker-end="url(#${we.marker})"`:"";H+=`<g${$e}><line x1="${Me}" y1="${J.y}" x2="${he}" y2="${J.y}" class="${we.cls}"${We}/>`+De(ge,J.y-10)+`<text x="${Ne}" y="${J.y-6}" class="${we.txt}" text-anchor="${Fe}">${S(J.label)}</text></g>`}H+="</g>",H+="</svg>";const se=new Map;for(const J of t)se.set(J.id,{name:J.name});const Q=O8(b,O,se,A),re=e.foot!==void 0?R8(e.foot):"",Z=[];K.sync&&Z.push({swatch:"edge",label:"call"}),K.response&&Z.push({swatch:"edge-dashed",label:"response"}),K.async&&Z.push({swatch:"edge-async",label:"async"}),K.error&&Z.push({swatch:"edge-error",label:"error"}),P>=0&&Z.push({swatch:"edge-accent-dashed",label:"the answer the caller gets"}),t.some(J=>J.external===!0)&&Z.push({swatch:"chip",chip:"EXT",label:"external actor"}),O.length>0&&Z.push({swatch:"node-fill2",label:"fragment (alt / opt / loop)"}),U.length>0&&Z.push({swatch:"node",label:"active"});const q=ot(Z),de=e.endpoint?.method,le={tag:"SEQUENCE",...de!==void 0?{tagClass:de.toLowerCase(),method:de}:{},...e.endpoint?.path!==void 0?{path:e.endpoint.path}:{},...e.title!==void 0?{title:e.title}:{},...e.description!==void 0?{desc:e.description}:{},...q.length>0?{legendHtml:q}:{},...re.length>0?{footerHtml:re}:{}};return lt(le,H+Q)}function Fw(e){if(typeof e=="string")return"";const t=[];return e.align==="r"&&t.push("r"),e.align==="c"&&t.push("c"),e.highlight===!0&&t.push("hi"),t.join(" ")}function q8(e){return typeof e=="string"?e:e.label}function H8(e){if(typeof e=="string"||typeof e=="number")return"";const t=[];return e.tone&&t.push(`cell-${e.tone}`),e.lead===!0&&t.push("lead"),e.highlight===!0&&t.push("hi"),t.join(" ")}function W8(e){return S(typeof e=="string"||typeof e=="number"?e:e.v)}function U8(e){const t=e.columns??[],n=e.rows??[],s=t.map((i,l)=>{const d=Fw(i);return`<th${d?` class="${d}"`:""}${_(`columns.${l}`)}>${S(q8(i))}</th>`}).join(""),o=n.map((i,l)=>{const d=(i??[]).map((u,p)=>{const h=t[p],m=[h!==void 0?Fw(h):"",H8(u)].filter(Boolean).join(" ");return`<td${m?` class="${m}"`:""}${_(`rows.${l}.${p}`)}>${W8(u)}</td>`}).join("");return`<tr${_(`rows.${l}`)}>${d}</tr>`}).join(""),r=e.note!==void 0?`<p class="tbl-note"${_("note")}>${S(e.note)}</p>`:"";return`<table class="pres-table"><thead><tr>${s}</tr></thead><tbody${fe("rows")}>${o}</tbody></table>${r}`}var K8={done:"node-fill2",current:"node-accent",next:"node-dashed",future:"node-dashed"};function V8(e){const t=e.items??[],n=[];let s=`<div class="tl"${fe("items")}>`;t.forEach((r,i)=>{const l=r.status??"future";n.includes(l)||n.push(l);const d=r.date!==void 0?`<div class="tl-date"${_(`items.${i}.date`)}>${S(r.date)}</div>`:"",u=r.desc!==void 0?`<div class="tl-desc"${_(`items.${i}.desc`)}>${S(r.desc)}</div>`:"",p=`<span class="tl-status tl-s-${l}"${r.status!==void 0?_(`items.${i}.status`):""}>${S(l)}</span>`;s+=`<div class="tl-item"${_(`items.${i}`)}${hn(i)}><span class="tl-dot ${l}"></span><div class="tl-head">${d}${p}</div><div class="tl-label"${_(`items.${i}.label`)}>${S(r.label)}</div>`+u+"</div>"});const o=n.map(r=>({swatch:K8[r]??"node-dashed",label:r}));return s+"</div>"+ot(o)}function w4(e){return e.slice(e.indexOf("#")+1)}function G8(e){const t=e.role??"user",n=e.want??"…",s=e.soThat??"…",o=[];e.title!==void 0&&o.push(`<span class="story-title"${_("title")}>${S(e.title)}</span>`),(e.tags??[]).forEach((d,u)=>o.push(`<span class="story-chip"${_(`tags.${u}`)}>${S(d)}</span>`)),e.points!==void 0&&e.points!==null&&o.push(`<span class="story-chip pts"${_("points")}>${S(e.points)} pts</span>`),e.priority!==void 0&&o.push(`<span class="story-chip"${_("priority")}>Priority · ${S(e.priority)}</span>`);let r='<div class="story">';o.length>0&&(r+=`<div class="story-head">${o.join("")}</div>`),r+=`<div class="story-stmt">As a <b${_("role")}>${S(t)}</b>, I want to <b${_("want")}>${S(n)}</b>, so that <b${_("soThat")}>${S(s)}</b>.</div>`,r+="</div>";const i=e.criteria??[];i.length>0&&(r+='<div class="ac-title">Acceptance criteria</div>',i.forEach((d,u)=>{r+=`<div class="ac-item"${_(`criteria.${u}`)}><div class="gwt"><span class="k g">Given</span><span class="v"${_(`criteria.${u}.given`)}>${S(d.given??"")}</span><span class="k w">When</span><span class="v"${_(`criteria.${u}.when`)}>${S(d.when??"")}</span><span class="k t">Then</span><span class="v"${_(`criteria.${u}.then`)}>${S(d.then??"")}</span></div></div>`}));const l=e.links??[];return l.length>0&&(r+=`<div class="ac-title">Related</div><div class="links-row"${fe("links")}>`,l.forEach((d,u)=>{const p=`<span class="lt">${S(d.mode??"")}</span>${S(d.label??"")}`;r+=d.ref!==void 0&&d.ref!==""?`<a class="link-chip" data-ref="${S(d.ref)}" href="#${S(w4(d.ref))}"${_(`links.${u}`)}>${p}</a>`:`<span class="link-chip"${_(`links.${u}`)}>${p}</span>`}),r+="</div>"),r}function Y8(e){const n=(e.blocks??[]).map((s,o)=>{const r=(s.type??"p").toLowerCase(),i=s.text??"";if(r==="h")return`<h3${_(`blocks.${o}`)}>${vo(i)}</h3>`;if(r==="quote")return`<blockquote${_(`blocks.${o}`)}>${vo(i)}</blockquote>`;if(r==="ul"){const l=(s.items??[]).map((d,u)=>`<li${_(`blocks.${o}.items.${u}`)}>${vo(d)}</li>`).join("");return`<ul${_(`blocks.${o}`)}${fe(`blocks.${o}.items`)}>${l}</ul>`}if(r==="ol"){const l=(s.items??[]).map((d,u)=>`<li${_(`blocks.${o}.items.${u}`)}>${vo(d)}</li>`).join("");return`<ol${_(`blocks.${o}`)}${fe(`blocks.${o}.items`)}>${l}</ol>`}return`<p${_(`blocks.${o}`)}>${vo(i)}</p>`}).join("");return`<div class="prose"${fe("blocks")}>${n}</div>`}function X8(e,t){if(e===void 0||e.length===0)return"";const n=e.map((s,o)=>`<span${_(`terms.${t}.avoid.${o}`)}>${S(s)}</span>`).join(", ");return` <span class="avoid"${fe(`terms.${t}.avoid`)}>not: ${n}</span>`}function Q8(e){const n=(e.terms??[]).map((s,o)=>`<div class="row"${_(`terms.${o}`)}><dt${_(`terms.${o}.term`)}>${S(s.term)}</dt><dd${_(`terms.${o}.def`)}>${S(s.def)}${X8(s.avoid,o)}</dd></div>`).join("");return`<div class="glossary"${fe("terms")}>${n}</div>`}function Z8(e){const t=e.prosLabel??"Pros",n=e.consLabel??"Cons",s=(e.pros??[]).map((r,i)=>`<div class="pc-item"${_(`pros.${i}`)}>${S(r)}</div>`).join(""),o=(e.cons??[]).map((r,i)=>`<div class="pc-item"${_(`cons.${i}`)}>${S(r)}</div>`).join("");return`<div class="pc"><div class="pc-col pro"${fe("pros")}><div class="pc-head"${_("prosLabel")}>${S(t)}</div>`+s+`</div><div class="pc-col con"${fe("cons")}><div class="pc-head"${_("consLabel")}>${S(n)}</div>`+o+"</div></div>"}function J8(e){const t=e.current??{},n=e.target??{},s=(t.items??[]).map((d,u)=>`<div class="ct-item"${_(`current.items.${u}`)}>${S(d)}</div>`).join(""),o=(n.items??[]).map((d,u)=>`<div class="ct-item"${_(`target.items.${u}`)}>${S(d)}</div>`).join(""),r=t.label??"Current",i=n.label??"Target",l=e.note!==void 0?`<div class="tbl-note"${_("note")}>${S(e.note)}</div>`:"";return`<div><div class="ct"><div class="ct-panel cur"${_("current")}${fe("current.items")}><div class="ct-label"${_("current.label")}>${S(r)}</div>`+s+`</div><div class="ct-arrow">→</div><div class="ct-panel tgt"${_("target")}${fe("target.items")}><div class="ct-label"${_("target.label")}>${S(i)}</div>`+o+"</div></div>"+l+"</div>"}var ez={up:"▲",down:"▼",flat:"—"};function tz(e){const n=(e.stats??[]).map((s,o)=>{const r=s.accent!==void 0?` style="border-top-color:${Fi(s.accent,"var(--accent)")}"`:"",i=s.delta!==void 0?`<div class="stat-delta ${s.trend??"flat"}">${ez[s.trend??"flat"]} ${S(s.delta)}</div>`:"";return`<div class="stat-card"${r}${_(`stats.${o}`)}><div class="stat-value"${_(`stats.${o}.value`)}>${S(s.value)}</div><div class="stat-label"${_(`stats.${o}.label`)}>${S(s.label)}</div>`+i+"</div>"}).join("");return`<div class="stat-row"${fe("stats")}>${n}</div>`}var nz=new Set("const let var function return if else for while do switch case break continue class extends new await async import from export default try catch finally throw typeof instanceof void delete yield static public private protected readonly abstract implements interface type enum namespace def elif lambda pass with raise except none true false and or not is in self nil func struct map range defer chan select fallthrough echo fi done local require module package this super create table alter add drop select insert update delete into values where join group order by limit primary key foreign references not null default unique index on check constraint cascade returning begin commit rollback".split(/\s+/)),sz=new Set("string number boolean int integer float double bool char byte long short void object any unknown never bigint promise array list set optional uuid text varchar timestamptz timestamp date numeric decimal jsonb json serial bigserial smallint".split(/\s+/)),Wu=/(\/\*[\s\S]*?\*\/|\/\/[^\n]*|#[^\n]*)|("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`)|(\b\d[\w.]*)|([A-Za-z_$][\w$]*)/g,oz=new Set(["md","markdown","mdx"]);function uh(e,t){if(e.length===0)return"";if(t!==void 0&&oz.has(t.trim().toLowerCase()))return rz(String(e));const n=String(e);let s="",o=0;Wu.lastIndex=0;let r;for(;(r=Wu.exec(n))!==null;){r.index>o&&(s+=S(n.slice(o,r.index)));const i=r[0];if(r[1]!==void 0)s+=`<span class="com">${S(i)}</span>`;else if(r[2]!==void 0)s+=`<span class="str">${S(i)}</span>`;else if(r[3]!==void 0)s+=`<span class="num">${S(i)}</span>`;else{const l=i.toLowerCase();nz.has(l)?s+=`<span class="kw">${S(i)}</span>`:sz.has(l)?s+=`<span class="ty">${S(i)}</span>`:n[Wu.lastIndex]==="("?s+=`<span class="fn">${S(i)}</span>`:s+=S(i)}o=Wu.lastIndex}return o<n.length&&(s+=S(n.slice(o))),s}var Pg=/(`[^`\n]+`)|(\*\*[^*\n]+\*\*|__[^_\n]+__)|(\*[^*\n]+\*|_[^_\n]+_)|(\[[^\]\n]+\]\([^)\n]+\))/g;function qw(e){let t="",n=0;Pg.lastIndex=0;let s;for(;(s=Pg.exec(e))!==null;){s.index>n&&(t+=S(e.slice(n,s.index)));const o=s[0];if(s[1]!==void 0)t+=`<span class="str">${S(o)}</span>`;else if(s[2]!==void 0)t+=`<span class="fn">${S(o)}</span>`;else if(s[3]!==void 0)t+=`<span class="ty">${S(o)}</span>`;else{const r=/^(\[[^\]]+\])(\([^)]+\))$/.exec(o);r!==null?t+=`<span class="fn">${S(r[1]??"")}</span><span class="com">${S(r[2]??"")}</span>`:t+=S(o)}n=Pg.lastIndex}return n<e.length&&(t+=S(e.slice(n))),t}function rz(e){const t=[];let n=!1;for(const s of e.split(`
|
|
2822
|
+
${o}`},link(e){const t=vf(e.href),n=e.title!==null&&e.title!==void 0?` title="${e.title}"`:"",s=this.parser.parseInline(e.tokens);return`<a href="${t}"${n}>${s}</a>`},image(e){const t=vf(e.href),n=e.title!==null&&e.title!==void 0?` title="${e.title}"`:"";return`<img src="${t}" alt="${e.text}"${n}>`}}});function m0(e){return`<div class="prose">${qy.parse(e,{async:!1})}</div>`}function vo(e){const t=e.split(/\n{2,}/).map(s=>s.trim()).filter(s=>s!==""),n=s=>qy.parseInline(s,{async:!1});return t.length<=1?n(t[0]??""):t.map(s=>`<p>${n(s)}</p>`).join("")}function m4(e){const t=e?.title??"Untitled",n=e?.tag??"",s=e?.subtitle,o=s!==void 0?`<p class="cover-sub">${S(s)}</p>`:"";return'<div class="cover-pad">'+(e?.logo!==void 0&&e.logo!==""?`<img class="cover-logo" src="${S(vf(e.logo))}" alt="${S(t)}">`:"")+`<div class="cover-meta"><span>DOCUMENT</span><span class="accent">${S(n)}</span></div><h1 class="cover-title">${S(t)}</h1>`+o+"</div>"}function a8(){return""}function _(e){return` data-bp="${S(e)}"`}function fe(e){return` data-bl="${S(e)}"`}var l8=1600,c8=/<svg\b[^>]*\bviewBox="-?[\d.]+ -?[\d.]+ ([\d.]+) [\d.]+"[^>]*>/;function d8(e){const t=c8.exec(e);if(t===null||t[1]===void 0)return e;const n=t[0];if(n.includes(" style="))return e;const s=Math.ceil(Number(t[1]));if(!Number.isFinite(s)||s<=0)return e;const o=e.indexOf("</svg>",t.index+n.length);if(o<0)return e;const r=s>l8,i=r?`${n.slice(0,-1)} style="width:calc(${s}px * var(--scale,1));max-width:none">`:`${n.slice(0,-1)} style="max-width:min(100%,calc(${s}px * var(--scale,1)))">`,l=o+6;return e.slice(0,t.index)+`<div class="diagram-stage${r?" diagram-stage--wide":""}">`+i+e.slice(t.index+n.length,l)+"</div>"+e.slice(l)}function lt(e,t){const n=e.tagClass!==void 0?` ${e.tagClass}`:"",s=e.method!==void 0&&e.method.length>0?`<span class="diagram-tag-sep">·</span><span class="diagram-tag-method${n}">${S(e.method)}</span>`:"",o=e.path!==void 0&&e.path.length>0?`<span class="diagram-tag-path">${S(e.path)}</span>`:"",r=`<span class="diagram-eyebrow t-eyebrow"><span class="diagram-tag${n}">${S(e.tag)}</span>`+s+o+"</span>",i=e.titleHtml!==void 0?`<span class="diagram-title">${e.titleHtml}</span>`:e.title!==void 0&&e.title.length>0?`<span class="diagram-title">${S(e.title)}</span>`:"",l=e.fignum!==void 0&&e.fignum.length>0?`<span class="diagram-fignum">${S(e.fignum)}</span>`:"",d=e.desc!==void 0&&e.desc.length>0?`<p class="diagram-desc"${_("description")}>${S(e.desc)}</p>`:"",u=e.legendHtml??"",p=e.footerHtml??"";return'<div class="diagram"><div class="diagram-head">'+r+i+l+"</div>"+d+d8(t)+u+p+"</div>"}var u8={meta:"",callout:"Note",table:"Comparison",sequence:"Sequence",erd:"Entity model",userstory:"User story",timeline:"Roadmap",kanban:"Board",prose:"Overview",glossary:"Glossary",proscons:"Trade-offs",cvt:"Before / after",stats:"Metrics",code:"Code",agenda:"Agenda",tree:"Hierarchy",pyramid:"Pyramid",flow:"Flowchart",state:"State machine",dfd:"Data flow",journey:"Journey",gantt:"Schedule",graph:"Graph",quadrant:"Matrix",swimlane:"Process",c4:"C4 model",uml:"Class model",frontend:"Component tree",cluster:"Cluster",block:"Architecture",felogic:"Frontend logic",wireframe:"Mockup",endpoint:"API endpoint",pullquote:"Quote",layers:"Layers",matrix:"Capability matrix",anatomy:"Anatomy",composition:"Composition",drivers:"Drivers",options:"Options",spec:"Spec",list:"List",stories:"User stories",pattern:"Pattern",gallery:"Gallery",chart:"Chart",figure:"Figure",steps:"Steps",faq:"FAQ",envelope:"Capacity math",slo:"Service objectives",swot:"SWOT",okr:"Objectives",persona:"Personas",changelog:"Changelog",team:"Team",heatmap:"Heatmap",scorecard:"Decision matrix",risk:"Risk register",palette:"Palette",typescale:"Type scale",dodont:"Guidelines",inventory:"Inventory",array:"Array",linkedlist:"Linked list",bintree:"Binary tree",hashmap:"Hash map",agentloop:"Agent loop",trace:"Trace",prompt:"Prompt",context:"Context window",archmap:"Architecture map",divider:"Divider",bignumber:"Big number",takeaways:"Takeaways",statustable:"Status",cycle:"Cycle",benchmark:"Benchmark",sankey:"Flow volumes",gitgraph:"Branch model",treemap:"Composition",packet:"Wire format",venn:"Overlap",wardley:"Strategy map",harvey:"Comparison",scqa:"Summary",scenarios:"Scenarios",fishbone:"Cause & effect",storymap:"Story map",eventcontract:"Event contract",saga:"Saga",slopegraph:"Before / after",spans:"Trace",rollout:"Rollout",perfbudget:"Performance budget",percentiles:"Latency percentiles",timing:"Timing diagram",threatmodel:"Threat model",neuralnet:"Neural net",mindmap:"Mind map",usecase:"Use cases",pkg:"Packages",audit:"Audit findings",checklist:"Checklist",modelcard:"Model card",chevrons:"Process",roadmap:"Roadmap"};function Aw(e){if(e.sourceType!==void 0){const t=io[e.sourceType];if(t!==void 0)return t.sectionLabel}return u8[e.kind]}var Cw={note:"Note",tip:"Tip",warn:"Warning",danger:"Danger",success:"Success"};function p8(e){const t=e.tone??"note",n=e.title??Cw[t]??Cw.note,s=e.body??"";return`<div class="callout ${t}"><div class="callout-title"${_("title")}>${S(n)}</div><div class="callout-body"${_("body")}>${vo(s)}</div></div>`}var yn=30,Cn=14;function f8(e,t,n,s){return s?`<path d="M${e-6},${t-3} L${e},${t} L${e-6},${t+3} z" fill="${n}"/>`:`<path d="M${e-6},${t-3} L${e},${t} L${e-6},${t+3}" fill="none" stroke="${n}" stroke-width="1.2"/>`}function $r(e,t,n,s){const o=Cn/2,r=n.length>0?` stroke-dasharray="${n}"`:"";return`<line x1="1" y1="${o}" x2="${yn-7}" y2="${o}" stroke="${e}" stroke-width="${t}"${r}/>`+f8(yn-1,o,e,s)}function pi(e,t,n,s){const o=s.length>0?` stroke-dasharray="${s}"`:"";return`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" rx="2" fill="${n}" stroke="${e}" stroke-width="${t}"${o}/>`}function h8(e,t,n,s){let o;switch(e){case"node-dot":{const r=s!==void 0&&s.length>0?` stroke-dasharray="${s}"`:"";o=`<circle cx="${yn/2}" cy="${Cn/2}" r="5.5" fill="${t??"var(--paper)"}" stroke="${n??"var(--ink)"}" stroke-width="1.5"${r}/>`;break}case"line":o=`<line x1="1" y1="${Cn/2}" x2="${yn-1}" y2="${Cn/2}" stroke="${n??"var(--muted)"}" stroke-width="1.25"/>`;break;case"line-dashed":o=`<line x1="1" y1="${Cn/2}" x2="${yn-1}" y2="${Cn/2}" stroke="${n??"var(--muted)"}" stroke-width="1.25" stroke-dasharray="5 4"/>`;break;case"node-accent-outline":o=pi("var(--accent)",1.5,"var(--paper)","");break;case"fill":o=pi("var(--rule-solid)",1,t??"var(--ink)","");break;case"node":o=pi("var(--ink)",1.5,"var(--paper)","");break;case"node-accent":o=pi("var(--accent)",1.5,"var(--accent-tint)","");break;case"node-dashed":o=pi("var(--ink)",1.25,"var(--paper)","4 3");break;case"node-fill2":o=pi("var(--rule-solid)",1,"var(--paper-2)","");break;case"edge":o=$r("var(--muted)",1.5,"",!0);break;case"edge-dashed":o=$r("var(--muted)",1.5,"5 4",!1);break;case"edge-async":o=$r("var(--muted)",1.25,"2 3",!1);break;case"edge-error":o=$r("var(--negative)",1.5,"",!0);break;case"edge-accent":o=$r("var(--accent)",1.75,"",!0);break;case"edge-link":o=$r("var(--link)",1.5,"",!0);break;case"edge-accent-dashed":o=$r("var(--accent)",1.75,"5 4",!1);break;case"edge-negative-dashed":o=$r("var(--negative)",1.5,"5 4",!0);break;case"edge-implements":{const r=Cn/2;o=`<line x1="1" y1="${r}" x2="${yn-8}" y2="${r}" stroke="var(--muted)" stroke-width="1.5" stroke-dasharray="5 4"/><path d="M${yn-8},${r-4} L${yn-1},${r} L${yn-8},${r+4} z" fill="var(--paper)" stroke="var(--ink)" stroke-width="1.2"/>`;break}case"line-dot":case"line-dot-accent":{const r=Cn/2,i=e==="line-dot"?"var(--muted)":"var(--accent)";o=`<line x1="1" y1="${r}" x2="${yn-1}" y2="${r}" stroke="${i}" stroke-width="${e==="line-dot"?1.5:1.75}"/><circle cx="${yn/2}" cy="${r}" r="3.5" fill="${i}"/>`;break}case"node-store":o=`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" fill="var(--paper-2)"/><path d="M${yn-1},1 H1 V${Cn-1} H${yn-1}" fill="none" stroke="var(--rule-solid)" stroke-width="1"/>`;break;case"node-stadium":o=`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" rx="${(Cn-2)/2}" fill="var(--paper)" stroke="var(--ink)" stroke-width="1.5"/>`;break;case"node-stadium-fill2":o=`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" rx="${(Cn-2)/2}" fill="var(--paper-2)" stroke="var(--rule-solid)" stroke-width="1"/>`;break;case"node-negative":o=pi("var(--negative)",1.5,"var(--negative-tint)","");break;case"chip":return""}return`<svg class="lg-sw" viewBox="0 0 ${yn} ${Cn}" width="${yn}" height="${Cn}" aria-hidden="true">${o}</svg>`}function ot(e,t){if(e.length<2)return"";const n=e.map(o=>{const r=o.swatch==="chip"?`<span class="lg-chip t-eyebrow">${S(o.chip??"")}</span>`:h8(o.swatch,o.fill,o.stroke,o.dash);return`<span class="lg-item"${o.path!==void 0?_(o.path):""}>${r}<span class="lg-label">${S(o.label)}</span></span>`}).join("");return`<div class="diagram-legend"${t!==void 0?fe(t):""}><span class="lg-title t-eyebrow">Legend</span>${n}</div>`}function wt(e,t,n=`${t}s`){return`${e} ${e===1?t:n}`}function Hy(e,t,n=[]){const s=(t??"").trim(),o=[...s!==""?[s]:[],...n.filter(r=>r.trim()!=="")];return o.length===0?e:`${e}: ${o.join(", ")}`}function m8(e){return` role="img" aria-label="${S(e)}"`}function g8(e){return`<title>${S(e)}</title>`}function Sn(e,t,n=[]){const s=Hy(e,t,n);return{name:s,attrs:m8(s),title:g8(s)}}var ut=' data-decorative="1"',zr=20,Rc=40,g4=6,Bn=12,Ha=6.2,v4=7.4,v8=150,ic=28,Hu=64,$a=14,Sa=14,Nw=18,Ea=18,Wy=7;function y8(e){const t=e.entities??[],n=e.relations??[],s=e.groups??[],o=e.enums??[],r=e.dir!=="TB",i=t.map((he,ge)=>x8(he,ge)),l=new Map;for(const he of i)l.set(he.name,he),he.entity.schema!==void 0&&l.set(`${he.entity.schema}.${he.name}`,he);const d=[];n.forEach((he,ge)=>{const Ne=l.get(he.from),Fe=l.get(he.to);if(Ne===void 0||Fe===void 0)return;const We=S8(he.card);d.push({r:he,idx:ge,from:Ne,to:Fe,...We,dashed:he.identifying===!1})});const u=new Map,p=new Map;for(const he of d)he.toMany||u.set(he.to.name,(u.get(he.to.name)??0)+1),he.fromMany||u.set(he.from.name,(u.get(he.from.name)??0)+1),p.set(he.from.name,(p.get(he.from.name)??0)+1),he.to!==he.from&&p.set(he.to.name,(p.get(he.to.name)??0)+1);let h,m=0,g=!1;for(const[he,ge]of u)ge>m?(m=ge,h=he,g=!1):ge===m&&(g=!0);g&&(h=void 0);const v=[],y=new Map,b=[];for(const he of s){const ge=(he.entities??[]).filter(Fe=>l.has(Fe)&&!y.has(l.get(Fe)?.name??Fe));if(ge.length===0)continue;const Ne=v.length;v.push(he.name),b.push(!0);for(const Fe of ge)y.set(l.get(Fe)?.name??Fe,Ne)}for(const he of i){if(y.has(he.name)||he.entity.schema===void 0)continue;let ge=v.indexOf(he.entity.schema);(ge===-1||!b[ge])&&(ge=v.length,v.push(he.entity.schema),b.push(!0)),y.set(he.name,ge)}const E=i.filter(he=>!y.has(he.name));if(E.length>0){const he=v.length;v.push(""),b.push(!1);for(const ge of E)y.set(ge.name,he)}const $=i.map((he,ge)=>({box:he,band:y.get(he.name)??0,layer:0,order:ge,u:0,v:0,du:r?he.w:he.h,dv:r?he.h:he.w})),A=new Map($.map(he=>[he.box.name,he])),T=new Map;for(const he of $)T.set(he.box.name,new Set);for(const he of d)he.from!==he.to&&(T.get(he.from.name)?.add(he.to.name),T.get(he.to.name)?.add(he.from.name));$8($,T,p,h,A);const N=[...new Set($.map(he=>he.layer))].sort((he,ge)=>he-ge),j=N[0]??0,P=N[N.length-1]??0,I=[],O=new Map,C=(he,ge)=>{const Ne=O.get(he)??[];Ne.push(ge),O.set(he,Ne)};let D=0;for(const he of d){const ge=A.get(he.from.name),Ne=A.get(he.to.name);if(ge===void 0||Ne===void 0)continue;const Fe=ge===Ne,We=ge.layer,ze=Ne.layer;let Xe,pt,kt=!1;Fe?Xe=pt=We:We<ze?(Xe=We,pt=ze-1,kt=ze-We>1):We>ze?(Xe=We-1,pt=ze,kt=We-ze>1):Xe=pt=We;const St={rel:he,src:ge,dst:Ne,g1:Xe,g2:pt,long:kt,self:Fe,slot1:0,slot2:0,channel:kt?D++:-1};I.push(St),Fe||(C(Xe,St),kt&&C(pt,St))}const F=new Map;for(let he=j;he<=P;he++){const ge=O.get(he)?.length??0;F.set(he,Math.max(he===P?ge>0?(ge+1)*$a:0:Hu,(ge+1)*$a))}const U=D>0?D*$a+8:0,Y=new Map,B=new Map,te=[],ee=()=>{let he=Ea;for(let Fe=j;Fe<=P;Fe++){const We=Math.max(0,...$.filter(ze=>ze.layer===Fe).map(ze=>ze.du));Y.set(Fe,he),B.set(Fe,We),he+=We+(F.get(Fe)??Hu)}let ge=Ea+U;te.length=0;let Ne=!1;v.forEach((Fe,We)=>{const ze=$.filter(ct=>ct.band===We),Xe=b[We]===!0;if(ze.length===0){te.push({top:ge,bottom:ge,minL:0,maxL:0});return}const pt=ge+(We>0?(Ne?Sa:0)+ic:0)+(Xe?Sa+Nw:0);let kt=0;const St=new Map;for(const ct of ze){const _t=St.get(ct.layer)??[];_t.push(ct),St.set(ct.layer,_t)}for(const ct of St.values())ct.sort((_t,En)=>_t.order-En.order),kt=Math.max(kt,ct.reduce((_t,En)=>_t+En.dv,0)+ic*(ct.length-1));let Nt=1/0,Bt=-1/0;for(const[ct,_t]of St){const En=_t.reduce((Et,an)=>Et+an.dv,0)+ic*(_t.length-1);let zt=pt+(kt-En)/2;for(const Et of _t)Et.u=(Y.get(ct)??0)+((B.get(ct)??Et.du)-Et.du)/2,Et.v=zt,zt+=Et.dv+ic;Nt=Math.min(Nt,ct),Bt=Math.max(Bt,ct)}te.push({top:pt,bottom:pt+kt,minL:Nt,maxL:Bt}),ge=pt+kt,Ne=Xe})};ee();const H=[...N].sort((he,ge)=>Math.abs(he)-Math.abs(ge)||he-ge),W=(he,ge)=>{for(const Ne of he){const Fe=ge(Ne);for(const We of $){if(We.layer!==Ne)continue;const ze=[...T.get(We.box.name)??[]].map(Xe=>A.get(Xe)).filter(Xe=>Xe!==void 0&&Xe.layer===Fe);ze.length!==0&&(We.order=ze.reduce((Xe,pt)=>Xe+pt.v+pt.dv/2,0)/ze.length)}}ee()};W(H,he=>he>0?he-1:he<0?he+1:he),W([...H].reverse(),he=>he>=0?he+1:he-1),W(H,he=>he>0?he-1:he<0?he+1:he);for(const[he,ge]of O){const Ne=(Y.get(he)??0)+(B.get(he)??0),Fe=F.get(he)??Hu;ge.sort((We,ze)=>Pw(We.src,We.dst)-Pw(ze.src,ze.dst)),ge.forEach((We,ze)=>{const Xe=Ne+(ze+1)*Fe/(ge.length+1);We.g1===he&&We.slot1===0&&(We.slot1=Xe),We.long&&We.g2===he&&(We.slot2=Xe),We.long||(We.slot2=We.slot1)})}const V=(he,ge)=>r?he:ge,R=(he,ge)=>r?ge:he,z=he=>he.map(([ge,Ne],Fe)=>`${Fe===0?"M":"L"}${nt(V(ge,Ne))},${nt(R(ge,Ne))}`).join(" ");let X=0,K=0;const se=(he,ge)=>{X=Math.max(X,he),K=Math.max(K,ge)};for(const he of $)se(V(he.u+he.du,he.v+he.dv),R(he.u+he.du,he.v+he.dv));let Q="",re=!1;Q+=`<g${fe("groups")}>`,v.forEach((he,ge)=>{if(b[ge]!==!0)return;const Ne=te[ge];if(Ne===void 0||Ne.top===Ne.bottom)return;re=!0;const Fe=(Y.get(Ne.minL)??0)-Sa,We=(Y.get(Ne.maxL)??0)+(B.get(Ne.maxL)??0)+Sa,ze=Ne.top-Sa-Nw,Xe=Ne.bottom+Sa,pt=V(Fe,ze),kt=R(Fe,ze),St=V(We,Xe)-pt,Nt=R(We,Xe)-kt;se(pt+St,kt+Nt);const Bt=s.findIndex(ct=>ct.name===he);Q+=`<g${Bt>=0?_(`groups.${Bt}`):""}><rect x="${nt(pt)}" y="${nt(kt)}" width="${nt(St)}" height="${nt(Nt)}" rx="8" class="er-panel"/><text x="${nt(pt+12)}" y="${nt(kt+13)}" class="t-eyebrow er-panel-tab">${S(he.toUpperCase())}</text></g>`}),Q+="</g>";const Z=[];let q=!1,de=!1;Q+=`<g${fe("relations")}>`;for(const he of I){const{rel:ge,src:Ne,dst:Fe}=he;q=!0,ge.dashed&&(de=!0);const We=ge.fromMany&&!ge.toMany?!0:!ge.fromMany&&ge.toMany?!1:Lw(ge.from,ge.to,ge.r.fromCol)||!Lw(ge.to,ge.from,ge.r.toCol),ze=ge.fromMany&&ge.toMany,Xe=ze?Ne.v+Ne.dv/2:jw(Ne,r,We?v0(ge.from,ge.to,ge.r.fromCol):Iw(ge.from,ge.r.fromCol)),pt=ze?Fe.v+Fe.dv/2:jw(Fe,r,We?Iw(ge.to,ge.r.toCol):v0(ge.to,ge.from,ge.r.toCol)),kt=Ne.layer,St=Fe.layer;let Nt,Bt,ct,_t;if(he.self){const zt=Ne.u+Ne.du,Et=Math.abs(pt-Xe)<1?Xe+zr:pt,an=zt+$a;Nt=z([[zt,Xe],[an,Xe],[an,Et],[zt,Et]]),Bt=1,ct=-1,_t=[an+8,Math.max(Xe,Et)+12]}else if(kt===St){const zt=Math.max(Ne.u+Ne.du,Fe.u+Fe.du),Et=he.slot1>0?he.slot1:zt+$a;Nt=z([[Ne.u+Ne.du,Xe],[Et,Xe],[Et,pt],[Fe.u+Fe.du,pt]]),Bt=1,ct=-1,_t=[Et,(Xe+pt)/2]}else{const zt=kt<St,Et=zt?Ne.u+Ne.du:Ne.u,an=zt?Fe.u:Fe.u+Fe.du;if(Bt=zt?1:-1,ct=zt?1:-1,!he.long)Nt=z([[Et,Xe],[he.slot1,Xe],[he.slot1,pt],[an,pt]]),_t=[he.slot1,Math.abs(Xe-pt)<zr*2?Math.max(Xe,pt)+12:(Xe+pt)/2];else{const _n=Ea+he.channel*$a+4;Nt=z([[Et,Xe],[he.slot1,Xe],[he.slot1,_n],[he.slot2,_n],[he.slot2,pt],[an,pt]]),_t=[(he.slot1+he.slot2)/2,_n]}}const En=ge.dashed?' stroke-dasharray="5 4"':"";if(Q+=`<g${_(`relations.${ge.idx}`)}><path d="${Nt}" fill="none" stroke="var(--muted)" stroke-width="1.25"${En}/>`+Rw(he.self||Bt>0?Ne.u+Ne.du:Ne.u,Xe,Bt,Ow(ge.fromMany,!1),r,V,R)+Rw(he.self||kt===St?Fe.u+Fe.du:ct>0?Fe.u:Fe.u+Fe.du,pt,he.self||kt===St?1:-ct,Ow(ge.toMany,ge.toOptional),r,V,R)+"</g>",ge.r.label!==void 0&&ge.r.label!==""){const zt=ge.r.label.toUpperCase(),Et=Math.round(zt.length*Ha+8),an=V(_t[0],_t[1]),_n=R(_t[0],_t[1]);Z.push(`<rect x="${nt(an-Et/2)}" y="${nt(_n-7)}" width="${Et}" height="14" fill="var(--paper)"/><text x="${nt(an)}" y="${nt(_n+3.5)}" class="t-arrow er-rel" text-anchor="middle">${S(zt)}</text>`),se(an+Et/2,_n+7)}}Q+="</g>";const le=new Set;let J=!1;const ue=new Set;Q+=`<g${fe("entities")}>`;for(const he of $){const ge=he.box,Ne=V(he.u,he.v),Fe=R(he.u,he.v),We=ge.name===h,ze=We?"AGGREGATE ROOT":ge.kind==="view"?"VIEW":ge.kind==="enum"?"ENUM":ge.kind==="external"?"EXT":ge.join?"JOIN":"ENTITY";ge.join&&!We&&ge.kind==="table"&&(J=!0),ge.kind!=="table"&&ue.add(ge.kind);const Xe=ge.kind==="view"||ge.kind==="enum",pt=We?"var(--accent)":Xe?"var(--rule-solid)":"var(--ink)",kt=We?"var(--accent-tint)":ge.kind==="view"?"var(--paper-2)":"var(--paper)",St=Xe?1:1.5,Nt=ge.kind==="external"?' stroke-dasharray="4 3"':"";Q+=`<g${_(`entities.${ge.idx}`)}><rect x="${nt(Ne)}" y="${nt(Fe)}" width="${ge.w}" height="${ge.h}" rx="6" fill="${kt}" stroke="${pt}" stroke-width="${St}"${Nt}/><text x="${nt(Ne+Bn)}" y="${nt(Fe+15)}" class="er-eyebrow t-eyebrow${We?" c-accent":""}">${ze}</text><text x="${nt(Ne+Bn)}" y="${nt(Fe+31)}" class="er-head-text t-name">${S(ge.name)}</text>`,ge.headLines.forEach((ct,_t)=>{Q+=`<text x="${nt(Ne+Bn)}" y="${nt(Fe+44+_t*13)}" class="er-col dim t-sub c-soft">${S(ct)}</text>`}),(ge.rows.length>0||ge.headLines.length>0)&&(Q+=`<line x1="${nt(Ne)}" y1="${nt(Fe+ge.headH)}" x2="${nt(Ne+ge.w)}" y2="${nt(Fe+ge.headH)}" class="er-headline"/>`),Q+=`<g${fe(`entities.${ge.idx}.columns`)}>`;let Bt=-1;ge.rows.forEach((ct,_t)=>{const En=Fe+ge.headH+_t*zr,zt=En+14;ct.kind==="col"?(Bt>=0&&(Q+="</g>"),Bt=ct.colIdx,Q+=`<g${_(`entities.${ge.idx}.columns.${ct.colIdx}`)}>`,ct.note!==void 0&&(Q+=`<title>${S(ct.note)}</title>`),_t>0&&(Q+=`<line x1="${nt(Ne+1)}" y1="${nt(En)}" x2="${nt(Ne+ge.w-1)}" y2="${nt(En)}" class="er-rowline"${ut}/>`),ct.markers.forEach((Et,an)=>{le.add(Et),Q+=`<text x="${nt(Ne+Bn+an*Wy)}" y="${nt(zt)}" class="er-key ${b8(Et)} t-sub c-muted">${S(Et)}</text>`}),Q+=`<text x="${nt(Ne+Bn+Tw(ge))}" y="${nt(zt)}" class="er-col t-sub c-ink">${S(ct.left)}</text>`+(ct.right.length>0?`<text x="${nt(Ne+ge.w-Bn)}" y="${nt(zt)}" class="er-col dim t-sub c-soft" text-anchor="end">${S(ct.right)}</text>`:"")):Q+=`<text x="${nt(Ne+Bn+Tw(ge))}" y="${nt(zt)}" class="er-col dim t-sub c-soft">${S(ct.left)}</text>`}),Bt>=0&&(Q+="</g>"),Q+="</g></g>"}Q+="</g>";const ve=o.map((he,ge)=>k8(he.name,he.values,ge));if(ve.length>0){const he=X+Hu;let ge=Ea+U;Q+=`<g${fe("enums")}>`;for(const Ne of ve)Q+=`<g${_(`enums.${Ne.idx}`)}><rect x="${nt(he)}" y="${nt(ge)}" width="${Ne.w}" height="${Ne.h}" rx="6" fill="var(--paper)" stroke="var(--rule-solid)" stroke-width="1"/><text x="${nt(he+Bn)}" y="${nt(ge+15)}" class="er-eyebrow t-eyebrow">ENUM</text><text x="${nt(he+Bn)}" y="${nt(ge+31)}" class="er-head-text t-name">${S(Ne.name)}</text><line x1="${nt(he)}" y1="${nt(ge+Rc)}" x2="${nt(he+Ne.w)}" y2="${nt(ge+Rc)}" class="er-headline"/>`,Ne.values.forEach((Fe,We)=>{const ze=ge+Rc+We*zr;We>0&&(Q+=`<line x1="${nt(he+1)}" y1="${nt(ze)}" x2="${nt(he+Ne.w-1)}" y2="${nt(ze)}" class="er-rowline"${ut}/>`),Q+=`<text x="${nt(he+Bn)}" y="${nt(ze+14)}" class="er-col t-sub c-ink">${S(Fe)}</text>`}),Q+="</g>",se(he+Ne.w,ge+Ne.h),ge+=Ne.h+ic;Q+="</g>"}Q+=Z.join("");const we=Math.ceil(X+Ea),$e=Math.ceil(K+Ea),je=Sn("Entity relationship diagram",e.title,[wt(t.length,"entity","entities")]),De=`<svg viewBox="0 0 ${we} ${$e}"${je.attrs}>`+je.title+Q+"</svg>",Me=[];le.has("#")&&Me.push({swatch:"chip",chip:"#",label:"primary key"}),le.has("→")&&Me.push({swatch:"chip",chip:"→",label:"foreign key"}),le.has("U")&&Me.push({swatch:"chip",chip:"U",label:"unique"}),le.has("?")&&Me.push({swatch:"chip",chip:"?",label:"nullable"}),le.has("⌘")&&Me.push({swatch:"chip",chip:"⌘",label:"indexed"}),q&&Me.push({swatch:"chip",chip:"1 / N",label:"cardinality"}),de&&(Me.push({swatch:"line",label:"identifying"}),Me.push({swatch:"line-dashed",label:"non-identifying"})),J&&Me.push({swatch:"chip",chip:"JOIN",label:"join table"}),ue.has("view")&&Me.push({swatch:"node-fill2",label:"view"}),(ue.has("enum")||ve.length>0)&&Me.push({swatch:"chip",chip:"ENUM",label:"enum"}),ue.has("external")&&Me.push({swatch:"node-dashed",label:"external"}),re&&Me.push({swatch:"node-fill2",label:"schema group"}),h!==void 0&&Me.push({swatch:"node-accent",label:"aggregate root"});const Be=ot(Me),Ke={tag:"ER",...e.title!==void 0?{title:e.title}:{},...e.description!==void 0?{desc:e.description}:{},...Be.length>0?{legendHtml:Be}:{}};return lt(Ke,De)}function x8(e,t){const n=e.columns??[],s=e.kind??"table",o=Math.max(0,...n.map(m=>g0(m).length)),r=o>0?o*Wy+6:0;let i=Math.max(v8,e.name.length*v4+Bn*2+24);const l=n.map(m=>w8(m));n.forEach((m,g)=>{i=Math.max(i,Bn*2+r+m.name.length*Ha+16+(l[g]?.length??0)*Ha)});const d=i-Bn*2-r,u=[];n.forEach((m,g)=>{if(u.push({kind:"col",col:m,colIdx:g,markers:g0(m),left:m.name,right:l[g]??"",...m.note!==void 0&&m.note.length>0?{note:m.note}:{}}),m.enum!==void 0&&m.enum.length>0)for(const v of _w(m.enum.join(" · "),Math.max(24,Math.floor(d/Ha))))u.push({kind:"sub",colIdx:g,markers:[],left:v,right:""})});const p=e.note!==void 0&&e.note.length>0?_w(e.note,Math.max(24,Math.floor((i-Bn*2)/Ha))):[],h=Rc+(p.length>0?p.length*13+2:0);return{name:e.name,idx:t,entity:e,cols:n,rows:u,headLines:p,headH:h,pkIdx:n.findIndex(m=>m.pk===!0),join:n.length>0&&n.every(m=>m.fk===!0),kind:s,w:Math.round(i),h:h+u.length*zr+(u.length>0?g4:0)}}function k8(e,t,n){const s=Math.round(Math.max(120,e.length*v4+Bn*2+12,...t.map(o=>o.length*Ha+Bn*2)));return{idx:n,name:e,values:t,w:s,h:Rc+t.length*zr+(t.length>0?g4:0)}}function g0(e){const t=[];return e.pk===!0&&t.push("#"),e.fk===!0&&t.push("→"),e.unique===!0&&t.push("U"),e.nullable===!0&&t.push("?"),e.index===!0&&t.push("⌘"),t}function b8(e){return e==="#"?"pk":e==="→"?"fk":e==="U"?"uk":e==="?"?"nul":"ix"}function Tw(e){const t=Math.max(0,...e.cols.map(n=>g0(n).length));return t>0?t*Wy+6:0}function w8(e){const t=[];return e.type!==void 0&&e.type.length>0&&t.push(e.type),e.ref!==void 0&&e.ref.length>0&&t.push(`→ ${e.ref}`),e.default!==void 0&&e.default.length>0&&t.push(`= ${e.default}`),t.join(" ")}function _w(e,t){const n=[];let s="";for(const o of e.split(/\s+/).filter(r=>r.length>0))for(s.length===0?s=o:s.length+1+o.length<=t?s+=" "+o:(n.push(s),s=o);s.length>t;)n.push(s.slice(0,t)),s=s.slice(t);return s.length>0&&n.push(s),n}function $8(e,t,n,s,o){const r=new Set,i=[];for(const u of e){if(r.has(u.box.name)||(t.get(u.box.name)?.size??0)===0)continue;const p=[],h=[u];for(r.add(u.box.name);h.length>0;){const m=h.shift();p.push(m);for(const g of t.get(m.box.name)??[]){if(r.has(g))continue;r.add(g);const v=o.get(g);v!==void 0&&h.push(v)}}i.push(p)}i.sort((u,p)=>{const h=s!==void 0&&u.some(g=>g.box.name===s)?1:0;return(s!==void 0&&p.some(g=>g.box.name===s)?1:0)-h||p.length-u.length}),i.forEach((u,p)=>{const h=u.find(E=>E.box.name===s)??u.reduce((E,$)=>(n.get($.box.name)??0)>(n.get(E.box.name)??0)?$:E,u[0]),m=new Map([[h.box.name,0]]),g=[h];for(;g.length>0;){const E=g.shift(),$=m.get(E.box.name)??0;for(const A of t.get(E.box.name)??[]){if(m.has(A))continue;m.set(A,$+1);const T=o.get(A);T!==void 0&&g.push(T)}}const v=new Map,y=[];for(const E of u){if(E===h||v.has(E.box.name))continue;const $=[],A=[E.box.name];for(v.set(E.box.name,y.length);A.length>0;){const T=A.shift();$.push(T);for(const N of t.get(T)??[])N===h.box.name||v.has(N)||(v.set(N,y.length),A.push(N))}y.push($)}const b=y.map(()=>1);if(p===0&&y.length>1){const E=y.map((T,N)=>({i:N,size:T.length})).sort((T,N)=>N.size-T.size||T.i-N.i);let $=0,A=0;for(const{i:T,size:N}of E)A<=$?(b[T]=1,A+=N):(b[T]=-1,$+=N)}for(const E of u){const $=m.get(E.box.name)??0,A=v.get(E.box.name);E.layer=A===void 0?0:(b[A]??1)*$}});const l=e.filter(u=>!r.has(u.box.name));if(l.length===0)return;const d=[...new Set(e.filter(u=>r.has(u.box.name)).map(u=>u.layer))].sort((u,p)=>u-p);if(d.length===0){l.forEach((u,p)=>{u.layer=p%4});return}l.forEach((u,p)=>{u.layer=d[p%d.length]??0})}function Lw(e,t,n){return v0(e,t,n)>=0}function v0(e,t,n){if(n!==void 0){const d=e.cols.findIndex(u=>u.name===n);if(d>=0)return Dc(e,d)}const s=t.name.toLowerCase(),o=s.replace(/s$/,""),r=e.cols.map((d,u)=>({c:d,i:u})).filter(d=>d.c.fk===!0),i=r.find(d=>{const u=d.c.ref?.toLowerCase()??"";return u.startsWith(s+".")||u===s||u.startsWith(t.name.toLowerCase())});if(i!==void 0)return Dc(e,i.i);const l=r.find(d=>{const u=d.c.name.toLowerCase();return u.includes(s)||u.includes(o)});return l!==void 0?Dc(e,l.i):-1}function Iw(e,t){if(t!==void 0){const n=e.cols.findIndex(s=>s.name===t);if(n>=0)return Dc(e,n)}return e.pkIdx>=0?Dc(e,e.pkIdx):-1}function Dc(e,t){return e.rows.findIndex(n=>n.kind==="col"&&n.colIdx===t)}function jw(e,t,n){return!t||n<0?e.v+e.dv/2:e.v+e.box.headH+n*zr+zr/2}function Pw(e,t){return(e.v+e.dv/2+t.v+t.dv/2)/2}function S8(e){if(e===void 0)return{fromMany:!0,toMany:!1,toOptional:!1};if(e==="0..1")return{fromMany:!1,toMany:!1,toOptional:!0};if(e==="0..N")return{fromMany:!1,toMany:!0,toOptional:!0};const t=e.split(":"),n=s=>s!==void 0&&s.trim().toUpperCase()!=="1";return{fromMany:n(t[0]),toMany:n(t[1]),toOptional:!1}}function Ow(e,t){return t?e?"0..N":"0..1":e?"N":"1"}function Rw(e,t,n,s,o,r,i){const l=e+n*10,d=r(l,t),u=i(l,t);if(o){const p=n>0?"start":"end";return`<text x="${nt(d)}" y="${nt(u-4)}" class="t-arrow er-card" text-anchor="${p}">${S(s)}</text>`}return`<text x="${nt(d+4)}" y="${nt(u+3)}" class="t-arrow er-card" text-anchor="start">${S(s)}</text>`}var nt=e=>Math.round(e*10)/10;function E8(e){const t=e.columns??[];let n=`<div class="kanban"${fe("columns")}>`;return t.forEach((s,o)=>{const r=(s.cards??[]).map((i,l)=>{const d=i.tag!==void 0?`<div class="kan-card-tag">${S(i.tag)}</div>`:"";return`<div class="kan-card"${_(`columns.${o}.cards.${l}`)}><div class="kan-card-title">${S(i.title)}</div>`+d+"</div>"}).join("");n+=`<div class="kan-col"${_(`columns.${o}`)}${fe(`columns.${o}.cards`)}><div class="kan-head"${_(`columns.${o}.label`)}>${S(s.label)}</div>`+r+"</div>"}),n+"</div>"}function dt(e,t,n){if(e==null||e==="")return[];const s=String(e).split(/\s+/),o=[];let r="";for(const i of s){if(!r){r=i;continue}if((r+" "+i).length<=t)r+=" "+i;else if(o.push(r),r=i,o.length===n)break}return r&&o.length<n&&o.push(r),o.slice(0,n)}function hn(e){return` data-reveal="${e}"`}var y4={sync:{cls:"msg-line",marker:"sqArrow",txt:"msg-text t-arrow em"},response:{cls:"msg-line dashed",marker:"sqOpen",txt:"msg-text t-arrow"},async:{cls:"msg-line async",marker:"sqOpen",txt:"msg-text t-arrow"},error:{cls:"msg-line err",marker:"sqErr",txt:"msg-text t-arrow err"},note:{cls:"",marker:null,txt:"msg-text t-arrow note"}},Fp=36,M8=28,A8=24,C8=14,x4=13,N8=34,T8=3,Dw=18,Bw=12,zw=6,Bc=6,k4=150,_8=46,L8=6.2,I8=40;function j8(e,t){const n=o=>e.findIndex(r=>r.id===o),s=e.slice(0,-1).map(()=>_8);for(const o of t){if(!("from"in o)||o.kind==="note")continue;const r=n(o.from),i=n(o.to);if(r<0||i<0||Math.abs(r-i)!==1)continue;const l=Math.min(r,i),d=Math.ceil((o.label??"").length*L8+I8)-k4;d>(s[l]??0)&&(s[l]=d)}return s}function b4(e){return e.kind==="msg"}function P8(e){const t=new Map;let n=0;for(const s of e)s.kind!=="end"&&(t.set(s.idx,n),n+=1);return t}function O8(e,t,n,s){const o=u=>{const p=s.get(u);return p===void 0?"":hn(p)},r=e.filter(b4);if(!r.some(u=>u.summary!==void 0&&u.summary.length>0))return"";const i=new Set,l=u=>{const p=u.open.idx,h=u.end?.idx??Number.POSITIVE_INFINITY;if(r.some(g=>g.idx>p&&g.idx<h&&g.summary!==void 0&&g.summary.length>0)){i.add(u.open.idx);for(const g of u.elses)i.add(g.idx)}u.children.forEach(l)};t.forEach(l);const d=[];for(const u of e){if(u.kind==="open"&&i.has(u.idx)){const E=u.label.length>0?`<span class="step-frame-label">${S(u.label)}</span>`:"";d.push(`<li class="step-frame"${_(`messages.${u.idx}`)}${o(u.idx)}><span class="step-frame-tag">${S(u.frame.toUpperCase())}</span>${E}</li>`);continue}if(u.kind==="else"&&i.has(u.idx)){d.push(`<li class="step-frame else"${_(`messages.${u.idx}`)}${o(u.idx)}><span class="step-frame-tag">else</span><span class="step-frame-label">${S(u.label)}</span></li>`);continue}if(u.kind!=="msg"||u.summary===void 0||u.summary.length===0)continue;const p=u.msgKind==="error"?' class="err"':"",h=u.msgKind==="error"?" err":"",m=n.get(u.from)?.name??u.from,g=u.msgKind==="note"||u.from===u.to?"":` → ${S(n.get(u.to)?.name??u.to)}`,v=`${S(m)}${g}`,y=u.code!==void 0&&u.code.length>0?`<pre class="sql">${S(u.code)}</pre>`:"",b=u.note!==void 0&&u.note.length>0?`<span class="step-note">${S(u.note)}</span>`:"";d.push(`<li${p}${_(`messages.${u.idx}`)}${o(u.idx)}><span class="step-n">${u.n}</span><span class="step-actor${h}">${v}</span><span class="step-summary">${S(u.summary)}</span>`+y+b+"</li>")}return`<div class="seq-steps"><div class="seq-steps-title">Step-by-step</div><ol>${d.join("")}</ol></div>`}function R8(e){if(e.length===0)return"";const t=e.map((n,s)=>`<span${_(`foot.${s}`)}><strong>${S(n.label)}:</strong> ${S(n.value)}</span>`).join("");return`<div class="diagram-foot"${fe("foot")}>${t}</div>`}function D8(e,t,n){const s=[];let o=n-Fp,r=0;return e.forEach((i,l)=>{const d=i;if("frame"in d){const y=typeof d.label=="string"?d.label:"";s.push({kind:"open",idx:l,top:o,y:o+14,frame:String(d.frame),label:y}),o+=M8;return}if("else"in d){s.push({kind:"else",idx:l,top:o,y:o+8,frame:"",label:String(d.else??"")}),o+=A8;return}if("end"in d){s.push({kind:"end",idx:l,top:o,y:o+10,frame:"",label:""}),o+=C8;return}const u=i;r+=1;const p=u.kind!==void 0&&u.kind in y4?u.kind:"sync",h=u.label??"",m=p==="note"?dt(h,N8,T8):[],g=p==="note"?Fp+x4*Math.max(0,m.length-1):Fp,v={kind:"msg",idx:l,n:r,top:o,y:o+g,fromI:t(u.from),toI:t(u.to),msgKind:p,label:h,from:u.from,to:u.to,activate:u.activate===!0,deactivate:u.deactivate===!0,lines:m,...u.summary!==void 0?{summary:u.summary}:{},...u.code!==void 0?{code:u.code}:{},...u.note!==void 0?{note:u.note}:{}};s.push(v),o+=g}),{rows:s,cursor:o}}function B8(e){const t=[],n=[];for(const s of e)if(s.kind==="open"){const o={open:s,elses:[],children:[],x1:0,x2:0},r=n[n.length-1];r!==void 0?r.children.push(o):t.push(o),n.push(o)}else if(s.kind==="else")n[n.length-1]?.elses.push(s);else if(s.kind==="end"){const o=n.pop();o!==void 0&&(o.end=s)}return t}function z8(e,t,n){if(e.msgKind==="note"){const s=n(e);return s===null?null:[s.x,s.x+s.w]}if(e.fromI<0&&e.toI<0)return null;if(e.fromI<0)return[t(e.toI),t(e.toI)];if(e.toI<0)return[t(e.fromI),t(e.fromI)+36+e.label.length*Bc];if(e.fromI===e.toI){const s=t(e.fromI);return[s,s+36+e.label.length*Bc]}return[Math.min(t(e.fromI),t(e.toI)),Math.max(t(e.fromI),t(e.toI))]}function F8(e){const t=e.actors??[],n=e.messages??[],s=Math.max(t.length,1),o=24,r=k4,i=j8(t,n),l=16,d=t.map(J=>dt(J.name,J.external===!0?16:19,2)),u=d.some(J=>J.length>1),p=u?54:40,h=[];for(let J=0;J<s;J++)h.push(o+r/2+J*r+i.slice(0,J).reduce((ue,ve)=>ue+ve,0));const m=J=>h[J]??o+r/2,g=o*2+s*r+i.reduce((J,ue)=>J+ue,0),v=J=>t.findIndex(ue=>ue.id===J),y=l+p+28,{rows:b,cursor:E}=D8(n,v,y),$=b.filter(b4),A=P8(b),T=J=>hn(A.get(J)??0),N=E+Fp+12,j=N+6;let P=-1;for(const J of $)J.msgKind==="response"&&J.toI===0&&J.fromI>0&&(P=J.idx);const I=J=>{if(J.fromI<0&&J.toI<0)return null;const ue=Math.max(0,...J.lines.map(Be=>Be.length)),ve=J.top+14,we=J.y-J.top-18;if(J.fromI<0||J.toI<0||J.fromI===J.toI){const Be=m(J.fromI<0?J.toI:J.fromI),Ke=Math.max(72,Math.round(ue*Bc)+16);return{x:Be+12+Ke<=g-2?Be+12:Be-12-Ke,w:Ke,top:ve,h:we}}const $e=Math.min(m(J.fromI),m(J.toI)),je=Math.max(m(J.fromI),m(J.toI)),De=Math.max(je-$e+60,Math.round(ue*Bc)+16),Me=($e+je)/2;return{x:Math.round(Me-De/2),w:De,top:ve,h:we}},O=B8(b),C=J=>{J.children.forEach(C);const ue=J.open.idx,ve=J.end?.idx??Number.POSITIVE_INFINITY;let we=Number.POSITIVE_INFINITY,$e=Number.NEGATIVE_INFINITY;for(const je of $){if(je.idx<=ue||je.idx>=ve)continue;const De=z8(je,m,I);De!==null&&(we=Math.min(we,De[0]),$e=Math.max($e,De[1]))}we===Number.POSITIVE_INFINITY?(we=o,$e=g-o):(we-=Dw,$e+=Dw);for(const je of J.children)we=Math.min(we,je.x1-Bw),$e=Math.max($e,je.x2+Bw);J.x1=Math.max(2,Math.round(we)),J.x2=Math.min(g-2,Math.round($e))};O.forEach(C);const D=J=>J.end?.y??E+6,F=$.some(J=>J.activate||J.deactivate),U=[],Y=new Map,B=J=>{let ue=Y.get(J);return ue===void 0&&(ue=[],Y.set(J,ue)),ue},te=(J,ue,ve,we)=>{const $e=B(J),je={i:J,y1:ue,y2:Number.NaN,depth:$e.length,caller:ve,last:ue,step:we};$e.push(je),U.push(je)};for(const J of $){if(F){if(J.activate&&J.toI>=0&&te(J.toI,J.y,J.fromI,A.get(J.idx)??0),J.deactivate&&J.fromI>=0){const ue=B(J.fromI).pop();ue!==void 0&&(ue.y2=J.y)}continue}if(!(J.msgKind==="note"||J.fromI<0)){for(const ue of B(J.fromI))ue.last=J.y;if(!(J.toI<0||J.toI===J.fromI))if(J.msgKind==="sync"||J.msgKind==="async")te(J.toI,J.y,J.fromI,A.get(J.idx)??0);else{const ue=B(J.fromI);for(let ve=ue.length-1;ve>=0;ve--){const we=ue[ve];if(we.caller===J.toI){we.y2=J.y,ue.splice(ve,1);break}}}}}for(const J of Y.values())for(const ue of J)ue.y2=F?E:ue.last;const ee=Sn("Sequence diagram",e.title??e.endpoint?.path,[`${wt($.length,"message")} between ${wt(t.length,"actor")}`]);let H=`<svg viewBox="0 0 ${g} ${j}"${ee.attrs}>`+ee.title+'<defs><marker id="sqArrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="var(--muted)"/></marker><marker id="sqOpen" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M1,1 L9,5 L1,9" fill="none" stroke="var(--muted)" stroke-width="1.6"/></marker><marker id="sqErr" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="var(--negative)"/></marker><marker id="sqAccent" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M1,1 L9,5 L1,9" fill="none" stroke="var(--accent)" stroke-width="1.6"/></marker></defs>',W="",V="";const R=t.map((J,ue)=>m(ue)),z=(J,ue)=>{const ve=(ue.length+2)*Bc,we=R.find($e=>$e>=J-6&&$e<=J+ve);return we===void 0?J:we+12},X=J=>{const ue=J.open.y,ve=D(J),we=_(`messages.${J.open.idx}`)+T(J.open.idx);W+=`<g${we}><rect x="${J.x1}" y="${ue}" width="${J.x2-J.x1}" height="${Math.max(0,ve-ue)}" rx="4" class="seq-frame"/></g>`;const $e=J.open.frame.toUpperCase(),je=10+$e.length*7,De=J.open.label.length>0?`<text x="${z(J.x1+je+8,J.open.label)}" y="${ue+12}" class="seq-frame-guard t-arrow c-soft">[${S(J.open.label)}]</text>`:"";V+=`<g${we}><rect x="${J.x1}" y="${ue}" width="${je}" height="16" rx="2" class="seq-frame-tab"/><text x="${J.x1+5}" y="${ue+11.5}" class="seq-frame-tab-text t-eyebrow">${S($e)}</text>`+De+"</g>";for(const Me of J.elses){const Be=_(`messages.${Me.idx}`)+T(Me.idx);W+=`<g${Be}><line x1="${J.x1}" y1="${Me.y}" x2="${J.x2}" y2="${Me.y}" class="seq-frame-else"/></g>`,V+=`<g${Be}><text x="${z(J.x1+8,Me.label)}" y="${Me.y+14}" class="seq-frame-guard t-arrow c-soft">[${S(Me.label)}]</text></g>`}J.children.forEach(X)};O.forEach(X),H+=W;for(let J=0;J<t.length;J++){const ue=m(J);H+=`<line x1="${ue}" y1="${l+p}" x2="${ue}" y2="${N}" class="lifeline"/>`}for(const J of U){const ue=J.y1-zw,ve=J.y2+zw;H+=`<rect x="${m(J.i)-3+J.depth*4}" y="${ue}" width="6" height="${Math.max(0,ve-ue)}" class="activation"${hn(J.step)}/>`}H+=`<g${fe("actors")}>`,t.forEach((J,ue)=>{const ve=J.external===!0,we=ve?" ext":"",$e=d[ue]??[],je=J.sub!==void 0,De=$e.length>1?l+(ve?21:17):je?l+(ve?22:17):l+(ve?25:24),Me=l+(u?47:33),Be=$e.length<=1?`<text x="${m(ue)}" y="${De}" class="lane-head-text t-name">${S(J.name)}</text>`:$e.map((ge,Ne)=>`<text x="${m(ue)}" y="${De+Ne*14}" class="lane-head-text t-name">${S(ge)}</text>`).join(""),Ke=je?`<text x="${m(ue)}" y="${Me}" class="lane-head-sub t-sub">${S(J.sub??"")}</text>`:"",he=ve?`<text x="${m(ue)-r/2+8}" y="${l+11}" class="lane-head-chip t-eyebrow">EXT</text>`:"";H+=`<g${_(`actors.${ue}`)}><rect x="${m(ue)-r/2}" y="${l}" width="${r}" height="${p}" rx="4" class="lane-head${we}"/>`+he+Be+Ke+"</g>"}),H+="</g>",H+=V,H+=`<g${fe("messages")}>`;const K={sync:!1,response:!1,async:!1,error:!1,note:!1};for(const J of $){const ue=y4[J.msgKind],we=J.idx===P?{cls:`${ue.cls} accent`,marker:"sqAccent",txt:`${ue.txt} accent`}:ue;K[J.msgKind]=!0;const $e=_(`messages.${J.idx}`)+T(J.idx),je=J.msgKind==="error"?" err":"",De=(ze,Xe)=>`<circle cx="${ze}" cy="${Xe}" r="8" class="step-badge${je}"/><text x="${ze}" y="${Xe+3}" class="step-badge-text t-badge${je===""?"":" c-negative"}">${J.n}</text>`;if(J.msgKind==="note"){const ze=I(J);if(ze===null)continue;const Xe=J.summary!==void 0&&J.summary.length>0,pt=ze.x+ze.w/2,kt=J.lines.map((St,Nt)=>`<text x="${pt}" y="${ze.top+16+Nt*x4}" class="seq-note-text t-sub" text-anchor="middle">${S(St)}</text>`).join("");H+=`<g${$e}><rect x="${ze.x}" y="${ze.top}" width="${ze.w}" height="${ze.h}" rx="3" class="seq-note"/><path d="M${ze.x+ze.w-7},${ze.top} v7 h7" class="seq-note-fold"/>`+kt+(Xe?De(ze.x+2,ze.top):"")+"</g>";continue}if(J.fromI<0||J.toI<0){if(J.fromI<0&&J.toI<0)continue;const ze=m(J.fromI<0?J.toI:J.fromI);H+=`<g${$e}>`+De(ze+18,J.y-10)+`<text x="${ze+34}" y="${J.y-6}" class="msg-text note">${S(J.label)}</text></g>`;continue}if(J.fromI===J.toI){const ze=m(J.fromI),Xe=we.marker!==null?` marker-end="url(#${we.marker})"`:"";H+=`<g${$e}><path d="M${ze},${J.y-14} H${ze+28} V${J.y} H${ze+3}" class="${we.cls} self"${Xe}/>`+De(ze+16,J.y-26)+`<text x="${ze+36}" y="${J.y-4}" class="${we.txt}" text-anchor="start">${S(J.label)}</text></g>`;continue}const Me=m(J.fromI),Be=m(J.toI),Ke=Be>Me,he=Be+(Ke?-3:3),ge=Ke?Me+18:Me-18,Ne=Ke?ge+16:ge-16,Fe=Ke?"start":"end",We=we.marker!==null?` marker-end="url(#${we.marker})"`:"";H+=`<g${$e}><line x1="${Me}" y1="${J.y}" x2="${he}" y2="${J.y}" class="${we.cls}"${We}/>`+De(ge,J.y-10)+`<text x="${Ne}" y="${J.y-6}" class="${we.txt}" text-anchor="${Fe}">${S(J.label)}</text></g>`}H+="</g>",H+="</svg>";const se=new Map;for(const J of t)se.set(J.id,{name:J.name});const Q=O8(b,O,se,A),re=e.foot!==void 0?R8(e.foot):"",Z=[];K.sync&&Z.push({swatch:"edge",label:"call"}),K.response&&Z.push({swatch:"edge-dashed",label:"response"}),K.async&&Z.push({swatch:"edge-async",label:"async"}),K.error&&Z.push({swatch:"edge-error",label:"error"}),P>=0&&Z.push({swatch:"edge-accent-dashed",label:"the answer the caller gets"}),t.some(J=>J.external===!0)&&Z.push({swatch:"chip",chip:"EXT",label:"external actor"}),O.length>0&&Z.push({swatch:"node-fill2",label:"fragment (alt / opt / loop)"}),U.length>0&&Z.push({swatch:"node",label:"active"});const q=ot(Z),de=e.endpoint?.method,le={tag:"SEQUENCE",...de!==void 0?{tagClass:de.toLowerCase(),method:de}:{},...e.endpoint?.path!==void 0?{path:e.endpoint.path}:{},...e.title!==void 0?{title:e.title}:{},...e.description!==void 0?{desc:e.description}:{},...q.length>0?{legendHtml:q}:{},...re.length>0?{footerHtml:re}:{}};return lt(le,H+Q)}function Fw(e){if(typeof e=="string")return"";const t=[];return e.align==="r"&&t.push("r"),e.align==="c"&&t.push("c"),e.highlight===!0&&t.push("hi"),t.join(" ")}function q8(e){return typeof e=="string"?e:e.label}function H8(e){if(typeof e=="string"||typeof e=="number")return"";const t=[];return e.tone&&t.push(`cell-${e.tone}`),e.lead===!0&&t.push("lead"),e.highlight===!0&&t.push("hi"),t.join(" ")}function W8(e){return S(typeof e=="string"||typeof e=="number"?e:e.v)}function U8(e){const t=e.columns??[],n=e.rows??[],s=t.map((i,l)=>{const d=Fw(i);return`<th${d?` class="${d}"`:""}${_(`columns.${l}`)}>${S(q8(i))}</th>`}).join(""),o=n.map((i,l)=>{const d=(i??[]).map((u,p)=>{const h=t[p],m=[h!==void 0?Fw(h):"",H8(u)].filter(Boolean).join(" ");return`<td${m?` class="${m}"`:""}${_(`rows.${l}.${p}`)}>${W8(u)}</td>`}).join("");return`<tr${_(`rows.${l}`)}>${d}</tr>`}).join(""),r=e.note!==void 0?`<p class="tbl-note"${_("note")}>${S(e.note)}</p>`:"";return`<table class="pres-table"><thead><tr>${s}</tr></thead><tbody${fe("rows")}>${o}</tbody></table>${r}`}var K8={done:"node-fill2",current:"node-accent",next:"node-dashed",future:"node-dashed"};function V8(e){const t=e.items??[],n=[];let s=`<div class="tl"${fe("items")}>`;t.forEach((r,i)=>{const l=r.status??"future";n.includes(l)||n.push(l);const d=r.date!==void 0?`<div class="tl-date"${_(`items.${i}.date`)}>${S(r.date)}</div>`:"",u=r.desc!==void 0?`<div class="tl-desc"${_(`items.${i}.desc`)}>${S(r.desc)}</div>`:"",p=`<span class="tl-status tl-s-${l}"${r.status!==void 0?_(`items.${i}.status`):""}>${S(l)}</span>`;s+=`<div class="tl-item"${_(`items.${i}`)}${hn(i)}><span class="tl-dot ${l}"></span><div class="tl-head">${d}${p}</div><div class="tl-label"${_(`items.${i}.label`)}>${S(r.label)}</div>`+u+"</div>"});const o=n.map(r=>({swatch:K8[r]??"node-dashed",label:r}));return s+"</div>"+ot(o)}function w4(e){return e.slice(e.indexOf("#")+1)}function G8(e){const t=e.role??"user",n=e.want??"…",s=e.soThat??"…",o=[];e.title!==void 0&&o.push(`<span class="story-title"${_("title")}>${S(e.title)}</span>`),(e.tags??[]).forEach((d,u)=>o.push(`<span class="story-chip"${_(`tags.${u}`)}>${S(d)}</span>`)),e.points!==void 0&&e.points!==null&&o.push(`<span class="story-chip pts"${_("points")}>${S(e.points)} pts</span>`),e.priority!==void 0&&o.push(`<span class="story-chip"${_("priority")}>Priority · ${S(e.priority)}</span>`);let r='<div class="story">';o.length>0&&(r+=`<div class="story-head">${o.join("")}</div>`),r+=`<div class="story-stmt">As a <b${_("role")}>${S(t)}</b>, I want to <b${_("want")}>${S(n)}</b>, so that <b${_("soThat")}>${S(s)}</b>.</div>`,r+="</div>";const i=e.criteria??[];i.length>0&&(r+='<div class="ac-title">Acceptance criteria</div>',i.forEach((d,u)=>{r+=`<div class="ac-item"${_(`criteria.${u}`)}><div class="gwt"><span class="k g">Given</span><span class="v"${_(`criteria.${u}.given`)}>${S(d.given??"")}</span><span class="k w">When</span><span class="v"${_(`criteria.${u}.when`)}>${S(d.when??"")}</span><span class="k t">Then</span><span class="v"${_(`criteria.${u}.then`)}>${S(d.then??"")}</span></div></div>`}));const l=e.links??[];return l.length>0&&(r+=`<div class="ac-title">Related</div><div class="links-row"${fe("links")}>`,l.forEach((d,u)=>{const p=`<span class="lt">${S(d.mode??"")}</span>${S(d.label??"")}`;r+=d.ref!==void 0&&d.ref!==""?`<a class="link-chip" data-ref="${S(d.ref)}" href="#${S(w4(d.ref))}"${_(`links.${u}`)}>${p}</a>`:`<span class="link-chip"${_(`links.${u}`)}>${p}</span>`}),r+="</div>"),r}function Y8(e){const n=(e.blocks??[]).map((s,o)=>{const r=(s.type??"p").toLowerCase(),i=s.text??"";if(r==="h")return`<h3${_(`blocks.${o}`)}>${vo(i)}</h3>`;if(r==="quote")return`<blockquote${_(`blocks.${o}`)}>${vo(i)}</blockquote>`;if(r==="ul"){const l=(s.items??[]).map((d,u)=>`<li${_(`blocks.${o}.items.${u}`)}>${vo(d)}</li>`).join("");return`<ul${_(`blocks.${o}`)}${fe(`blocks.${o}.items`)}>${l}</ul>`}if(r==="ol"){const l=(s.items??[]).map((d,u)=>`<li${_(`blocks.${o}.items.${u}`)}>${vo(d)}</li>`).join("");return`<ol${_(`blocks.${o}`)}${fe(`blocks.${o}.items`)}>${l}</ol>`}return`<p${_(`blocks.${o}`)}>${vo(i)}</p>`}).join("");return`<div class="prose"${fe("blocks")}>${n}</div>`}function X8(e,t){if(e===void 0||e.length===0)return"";const n=e.map((s,o)=>`<span${_(`terms.${t}.avoid.${o}`)}>${S(s)}</span>`).join(", ");return` <span class="avoid"${fe(`terms.${t}.avoid`)}>not: ${n}</span>`}function Q8(e){const n=(e.terms??[]).map((s,o)=>`<div class="row"${_(`terms.${o}`)}><dt${_(`terms.${o}.term`)}>${S(s.term)}</dt><dd${_(`terms.${o}.def`)}>${S(s.def)}${X8(s.avoid,o)}</dd></div>`).join("");return`<div class="glossary"${fe("terms")}>${n}</div>`}function Z8(e){const t=e.prosLabel??"Pros",n=e.consLabel??"Cons",s=(e.pros??[]).map((r,i)=>`<div class="pc-item"${_(`pros.${i}`)}>${S(r)}</div>`).join(""),o=(e.cons??[]).map((r,i)=>`<div class="pc-item"${_(`cons.${i}`)}>${S(r)}</div>`).join("");return`<div class="pc"><div class="pc-col pro"${fe("pros")}><div class="pc-head"${_("prosLabel")}>${S(t)}</div>`+s+`</div><div class="pc-col con"${fe("cons")}><div class="pc-head"${_("consLabel")}>${S(n)}</div>`+o+"</div></div>"}function J8(e){const t=e.current??{},n=e.target??{},s=(t.items??[]).map((d,u)=>`<div class="ct-item"${_(`current.items.${u}`)}>${S(d)}</div>`).join(""),o=(n.items??[]).map((d,u)=>`<div class="ct-item"${_(`target.items.${u}`)}>${S(d)}</div>`).join(""),r=t.label??"Current",i=n.label??"Target",l=e.note!==void 0?`<div class="tbl-note"${_("note")}>${S(e.note)}</div>`:"";return`<div><div class="ct"><div class="ct-panel cur"${_("current")}${fe("current.items")}><div class="ct-label"${_("current.label")}>${S(r)}</div>`+s+`</div><div class="ct-arrow">→</div><div class="ct-panel tgt"${_("target")}${fe("target.items")}><div class="ct-label"${_("target.label")}>${S(i)}</div>`+o+"</div></div>"+l+"</div>"}var ez={up:"▲",down:"▼",flat:"—"};function tz(e){const n=(e.stats??[]).map((s,o)=>{const r=s.accent!==void 0?` style="border-top-color:${Fi(s.accent,"var(--accent)")}"`:"",i=s.delta!==void 0?`<div class="stat-delta ${s.trend??"flat"}">${ez[s.trend??"flat"]} ${S(s.delta)}</div>`:"";return`<div class="stat-card"${r}${_(`stats.${o}`)}><div class="stat-value"${_(`stats.${o}.value`)}>${S(s.value)}</div><div class="stat-label"${_(`stats.${o}.label`)}>${S(s.label)}</div>`+i+"</div>"}).join("");return`<div class="stat-row"${fe("stats")}>${n}</div>`}var nz=new Set("const let var function return if else for while do switch case break continue class extends new await async import from export default try catch finally throw typeof instanceof void delete yield static public private protected readonly abstract implements interface type enum namespace def elif lambda pass with raise except none true false and or not is in self nil func struct map range defer chan select fallthrough echo fi done local require module package this super create table alter add drop select insert update delete into values where join group order by limit primary key foreign references not null default unique index on check constraint cascade returning begin commit rollback".split(/\s+/)),sz=new Set("string number boolean int integer float double bool char byte long short void object any unknown never bigint promise array list set optional uuid text varchar timestamptz timestamp date numeric decimal jsonb json serial bigserial smallint".split(/\s+/)),Wu=/(\/\*[\s\S]*?\*\/|\/\/[^\n]*|#[^\n]*)|("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`)|(\b\d[\w.]*)|([A-Za-z_$][\w$]*)/g,oz=new Set(["md","markdown","mdx"]);function uh(e,t){if(e.length===0)return"";if(t!==void 0&&oz.has(t.trim().toLowerCase()))return rz(String(e));const n=String(e);let s="",o=0;Wu.lastIndex=0;let r;for(;(r=Wu.exec(n))!==null;){r.index>o&&(s+=S(n.slice(o,r.index)));const i=r[0];if(r[1]!==void 0)s+=`<span class="com">${S(i)}</span>`;else if(r[2]!==void 0)s+=`<span class="str">${S(i)}</span>`;else if(r[3]!==void 0)s+=`<span class="num">${S(i)}</span>`;else{const l=i.toLowerCase();nz.has(l)?s+=`<span class="kw">${S(i)}</span>`:sz.has(l)?s+=`<span class="ty">${S(i)}</span>`:n[Wu.lastIndex]==="("?s+=`<span class="fn">${S(i)}</span>`:s+=S(i)}o=Wu.lastIndex}return o<n.length&&(s+=S(n.slice(o))),s}var Pg=/(`[^`\n]+`)|(\*\*[^*\n]+\*\*|__[^_\n]+__)|(\*[^*\n]+\*|_[^_\n]+_)|(\[[^\]\n]+\]\([^)\n]+\))/g;function qw(e){let t="",n=0;Pg.lastIndex=0;let s;for(;(s=Pg.exec(e))!==null;){s.index>n&&(t+=S(e.slice(n,s.index)));const o=s[0];if(s[1]!==void 0)t+=`<span class="str">${S(o)}</span>`;else if(s[2]!==void 0)t+=`<span class="fn">${S(o)}</span>`;else if(s[3]!==void 0)t+=`<span class="ty">${S(o)}</span>`;else{const r=/^(\[[^\]]+\])(\([^)]+\))$/.exec(o);r!==null?t+=`<span class="fn">${S(r[1]??"")}</span><span class="com">${S(r[2]??"")}</span>`:t+=S(o)}n=Pg.lastIndex}return n<e.length&&(t+=S(e.slice(n))),t}function rz(e){const t=[];let n=!1;for(const s of e.split(`
|
|
2824
2823
|
`))if(/^\s*(```|~~~)/.test(s))n=!n,t.push(`<span class="com">${S(s)}</span>`);else if(n)t.push(uh(s));else if(/^#{1,6}\s/.test(s))t.push(`<span class="kw">${S(s)}</span>`);else if(/^\s*>/.test(s))t.push(`<span class="com">${S(s)}</span>`);else if(/^\s*(-{3,}|={3,}|\*{3,})\s*$/.test(s))t.push(`<span class="com">${S(s)}</span>`);else{const o=/^(\s*)([-*+]|\d+\.)(\s+)(.*)$/.exec(s);o!==null?t.push(`${S(o[1]??"")}<span class="num">${S(o[2]??"")}</span>${o[3]??""}${qw(o[4]??"")}`):t.push(qw(s))}return t.join(`
|
|
2825
2824
|
`)}function iz(e){return e.startsWith("+")?"df-add":e.startsWith("-")?"df-del":e.startsWith("@@")?"df-hunk":"df-ctx"}function az(e){const t=(e.code??"").split(`
|
|
2826
2825
|
`).map(n=>`<span class="df-line ${iz(n)}">${S(n===""?" ":n)}</span>`).join("");return`<div class="code-block diff-block"><div class="code-header"><span>${S(e.title??"")}</span><span${_("lang")}>${S(e.lang??"diff")}</span></div><pre class="diff-pre"${_("code")}>${t}</pre></div>`}function lz(e){return e.startsWith("$ ")?`<span class="tm-line tm-cmd"><span class="tm-prompt">$</span> <span class="tm-cmd-text">${S(e.slice(2))}</span></span>`:e.startsWith("# ")?`<span class="tm-line tm-comment">${S(e)}</span>`:`<span class="tm-line tm-out">${S(e===""?" ":e)}</span>`}function Hw(e){const t=(e.session??"").replace(/\n$/,"").split(`
|
|
@@ -3061,7 +3060,6 @@ body{background:var(--paper-2);font-family:var(--font-body);color:var(--ink);}
|
|
|
3061
3060
|
/* A divider that owns its slide is the title card: center the band's content
|
|
3062
3061
|
block on the stage with no leftover doc margins. */
|
|
3063
3062
|
.docskin.slide .slide-inner:has(.dvd) .section-block{margin:0;}
|
|
3064
|
-
.docskin.slide.slide-cover .cover-bar{display:none;}
|
|
3065
3063
|
.docskin.slide.slide-cover .cover-pad{border-bottom:none;padding-bottom:0;margin-bottom:0;}
|
|
3066
3064
|
.docskin.slide.slide-cover .cover-meta{justify-content:center;}
|
|
3067
3065
|
.deck-nav{position:fixed;left:0;right:0;bottom:0;height:60px;display:flex;align-items:center;justify-content:center;
|
package/dist/app/index.html
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<title>Chiltepin Studio</title>
|
|
7
7
|
<!-- Kept in sync with FAVICON_DATA_URI in chiltepin-render (src/brand.ts); a test asserts equality. -->
|
|
8
8
|
<link rel="icon" href="data:image/png;base64,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" />
|
|
9
|
-
<script type="module" crossorigin src="./assets/index-
|
|
9
|
+
<script type="module" crossorigin src="./assets/index-Cjo1ctnj.js"></script>
|
|
10
10
|
<link rel="stylesheet" crossorigin href="./assets/index-BOjf7_dU.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
@@ -1519,7 +1519,6 @@ body{background:var(--white);color:var(--charcoal);font-family:var(--font-body);
|
|
|
1519
1519
|
background:var(--white); color:var(--charcoal); font-family:var(--font-body); font-size:15px; line-height:1.6;
|
|
1520
1520
|
max-width:var(--page-max,1180px); margin:0 auto; padding:0 56px 128px;
|
|
1521
1521
|
}
|
|
1522
|
-
.docskin .cover-bar{height:8px;background:var(--navy);margin:0 -56px 36px;}
|
|
1523
1522
|
.docskin .cover-pad{padding:0 0 40px;margin-bottom:56px;border-bottom:1px solid var(--rule);}
|
|
1524
1523
|
.docskin .cover-logo{display:block;height:52px;width:auto;max-width:260px;margin:0 0 28px;}
|
|
1525
1524
|
.docskin .cover-meta{display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--gray);font-weight:600;margin-bottom:32px;}
|
|
@@ -2820,7 +2819,7 @@ a.link-chip:hover,a.st-link:hover{text-decoration:underline;}
|
|
|
2820
2819
|
.docskin .code-cap-group{border:0;background:none;padding:0 2px;margin:-10px 0 18px;}`,GB="data:image/png;base64,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",YB=`<link rel="icon" type="image/png" href="${GB}">`,XB={"&":"&","<":"<",">":">",'"':"""};function S(e){return e==null?"":String(e).replace(/[&<>"]/g,t=>XB[t]??t)}var QB=/^(#[0-9a-fA-F]{3,8}|rgba?\([\d.,\s%]+\)|hsla?\([\d.,\s%]+\)|[a-zA-Z]{1,24})$/;function Fi(e,t){if(e===void 0)return t;const n=e.trim();return QB.test(n)?n:t}var ZB=/^\s*(javascript|data|vbscript):/i;function vf(e){return ZB.test(e)?"#":e}var Fy=new d4({gfm:!0,breaks:!1});Fy.use({tokenizer:{html(){},tag(){}},renderer:{heading(e){const t=this.parser.parseInline(e.tokens);if(e.depth>2)return`<h${e.depth}>${t}</h${e.depth}>
|
|
2821
2820
|
`;const n=by(t),s=RM(t),o=s!==void 0?`<p class="src-note">Source: ${S(s)}</p>
|
|
2822
2821
|
`:"";return`<h${e.depth}>${n}</h${e.depth}>
|
|
2823
|
-
${o}`},link(e){const t=vf(e.href),n=e.title!==null&&e.title!==void 0?` title="${e.title}"`:"",s=this.parser.parseInline(e.tokens);return`<a href="${t}"${n}>${s}</a>`},image(e){const t=vf(e.href),n=e.title!==null&&e.title!==void 0?` title="${e.title}"`:"";return`<img src="${t}" alt="${e.text}"${n}>`}}});function m0(e){return`<div class="prose">${Fy.parse(e,{async:!1})}</div>`}function vo(e){const t=e.split(/\n{2,}/).map(s=>s.trim()).filter(s=>s!==""),n=s=>Fy.parseInline(s,{async:!1});return t.length<=1?n(t[0]??""):t.map(s=>`<p>${n(s)}</p>`).join("")}function p4(e){const t=e?.title??"Untitled",n=e?.tag??"",s=e?.subtitle,o=s!==void 0?`<p class="cover-sub">${S(s)}</p>`:"";return'<div class="cover-bar"></div><div class="cover-pad">'+(e?.logo!==void 0&&e.logo!==""?`<img class="cover-logo" src="${S(vf(e.logo))}" alt="${S(t)}">`:"")+`<div class="cover-meta"><span>DOCUMENT</span><span class="accent">${S(n)}</span></div><h1 class="cover-title">${S(t)}</h1>`+o+"</div>"}function JB(){return""}function _(e){return` data-bp="${S(e)}"`}function fe(e){return` data-bl="${S(e)}"`}var e8=1600,t8=/<svg\b[^>]*\bviewBox="-?[\d.]+ -?[\d.]+ ([\d.]+) [\d.]+"[^>]*>/;function n8(e){const t=t8.exec(e);if(t===null||t[1]===void 0)return e;const n=t[0];if(n.includes(" style="))return e;const s=Math.ceil(Number(t[1]));if(!Number.isFinite(s)||s<=0)return e;const o=e.indexOf("</svg>",t.index+n.length);if(o<0)return e;const r=s>e8,i=r?`${n.slice(0,-1)} style="width:calc(${s}px * var(--scale,1));max-width:none">`:`${n.slice(0,-1)} style="max-width:min(100%,calc(${s}px * var(--scale,1)))">`,l=o+6;return e.slice(0,t.index)+`<div class="diagram-stage${r?" diagram-stage--wide":""}">`+i+e.slice(t.index+n.length,l)+"</div>"+e.slice(l)}function lt(e,t){const n=e.tagClass!==void 0?` ${e.tagClass}`:"",s=e.method!==void 0&&e.method.length>0?`<span class="diagram-tag-sep">·</span><span class="diagram-tag-method${n}">${S(e.method)}</span>`:"",o=e.path!==void 0&&e.path.length>0?`<span class="diagram-tag-path">${S(e.path)}</span>`:"",r=`<span class="diagram-eyebrow t-eyebrow"><span class="diagram-tag${n}">${S(e.tag)}</span>`+s+o+"</span>",i=e.titleHtml!==void 0?`<span class="diagram-title">${e.titleHtml}</span>`:e.title!==void 0&&e.title.length>0?`<span class="diagram-title">${S(e.title)}</span>`:"",l=e.fignum!==void 0&&e.fignum.length>0?`<span class="diagram-fignum">${S(e.fignum)}</span>`:"",d=e.desc!==void 0&&e.desc.length>0?`<p class="diagram-desc"${_("description")}>${S(e.desc)}</p>`:"",u=e.legendHtml??"",p=e.footerHtml??"";return'<div class="diagram"><div class="diagram-head">'+r+i+l+"</div>"+d+n8(t)+u+p+"</div>"}var s8={meta:"",callout:"Note",table:"Comparison",sequence:"Sequence",erd:"Entity model",userstory:"User story",timeline:"Roadmap",kanban:"Board",prose:"Overview",glossary:"Glossary",proscons:"Trade-offs",cvt:"Before / after",stats:"Metrics",code:"Code",agenda:"Agenda",tree:"Hierarchy",pyramid:"Pyramid",flow:"Flowchart",state:"State machine",dfd:"Data flow",journey:"Journey",gantt:"Schedule",graph:"Graph",quadrant:"Matrix",swimlane:"Process",c4:"C4 model",uml:"Class model",frontend:"Component tree",cluster:"Cluster",block:"Architecture",felogic:"Frontend logic",wireframe:"Mockup",endpoint:"API endpoint",pullquote:"Quote",layers:"Layers",matrix:"Capability matrix",anatomy:"Anatomy",composition:"Composition",drivers:"Drivers",options:"Options",spec:"Spec",list:"List",stories:"User stories",pattern:"Pattern",gallery:"Gallery",chart:"Chart",figure:"Figure",steps:"Steps",faq:"FAQ",envelope:"Capacity math",slo:"Service objectives",swot:"SWOT",okr:"Objectives",persona:"Personas",changelog:"Changelog",team:"Team",heatmap:"Heatmap",scorecard:"Decision matrix",risk:"Risk register",palette:"Palette",typescale:"Type scale",dodont:"Guidelines",inventory:"Inventory",array:"Array",linkedlist:"Linked list",bintree:"Binary tree",hashmap:"Hash map",agentloop:"Agent loop",trace:"Trace",prompt:"Prompt",context:"Context window",archmap:"Architecture map",divider:"Divider",bignumber:"Big number",takeaways:"Takeaways",statustable:"Status",cycle:"Cycle",benchmark:"Benchmark",sankey:"Flow volumes",gitgraph:"Branch model",treemap:"Composition",packet:"Wire format",venn:"Overlap",wardley:"Strategy map",harvey:"Comparison",scqa:"Summary",scenarios:"Scenarios",fishbone:"Cause & effect",storymap:"Story map",eventcontract:"Event contract",saga:"Saga",slopegraph:"Before / after",spans:"Trace",rollout:"Rollout",perfbudget:"Performance budget",percentiles:"Latency percentiles",timing:"Timing diagram",threatmodel:"Threat model",neuralnet:"Neural net",mindmap:"Mind map",usecase:"Use cases",pkg:"Packages",audit:"Audit findings",checklist:"Checklist",modelcard:"Model card",chevrons:"Process",roadmap:"Roadmap"};function Sw(e){if(e.sourceType!==void 0){const t=io[e.sourceType];if(t!==void 0)return t.sectionLabel}return s8[e.kind]}var Ew={note:"Note",tip:"Tip",warn:"Warning",danger:"Danger",success:"Success"};function o8(e){const t=e.tone??"note",n=e.title??Ew[t]??Ew.note,s=e.body??"";return`<div class="callout ${t}"><div class="callout-title"${_("title")}>${S(n)}</div><div class="callout-body"${_("body")}>${vo(s)}</div></div>`}var yn=30,Cn=14;function r8(e,t,n,s){return s?`<path d="M${e-6},${t-3} L${e},${t} L${e-6},${t+3} z" fill="${n}"/>`:`<path d="M${e-6},${t-3} L${e},${t} L${e-6},${t+3}" fill="none" stroke="${n}" stroke-width="1.2"/>`}function $r(e,t,n,s){const o=Cn/2,r=n.length>0?` stroke-dasharray="${n}"`:"";return`<line x1="1" y1="${o}" x2="${yn-7}" y2="${o}" stroke="${e}" stroke-width="${t}"${r}/>`+r8(yn-1,o,e,s)}function pi(e,t,n,s){const o=s.length>0?` stroke-dasharray="${s}"`:"";return`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" rx="2" fill="${n}" stroke="${e}" stroke-width="${t}"${o}/>`}function i8(e,t,n,s){let o;switch(e){case"node-dot":{const r=s!==void 0&&s.length>0?` stroke-dasharray="${s}"`:"";o=`<circle cx="${yn/2}" cy="${Cn/2}" r="5.5" fill="${t??"var(--paper)"}" stroke="${n??"var(--ink)"}" stroke-width="1.5"${r}/>`;break}case"line":o=`<line x1="1" y1="${Cn/2}" x2="${yn-1}" y2="${Cn/2}" stroke="${n??"var(--muted)"}" stroke-width="1.25"/>`;break;case"line-dashed":o=`<line x1="1" y1="${Cn/2}" x2="${yn-1}" y2="${Cn/2}" stroke="${n??"var(--muted)"}" stroke-width="1.25" stroke-dasharray="5 4"/>`;break;case"node-accent-outline":o=pi("var(--accent)",1.5,"var(--paper)","");break;case"fill":o=pi("var(--rule-solid)",1,t??"var(--ink)","");break;case"node":o=pi("var(--ink)",1.5,"var(--paper)","");break;case"node-accent":o=pi("var(--accent)",1.5,"var(--accent-tint)","");break;case"node-dashed":o=pi("var(--ink)",1.25,"var(--paper)","4 3");break;case"node-fill2":o=pi("var(--rule-solid)",1,"var(--paper-2)","");break;case"edge":o=$r("var(--muted)",1.5,"",!0);break;case"edge-dashed":o=$r("var(--muted)",1.5,"5 4",!1);break;case"edge-async":o=$r("var(--muted)",1.25,"2 3",!1);break;case"edge-error":o=$r("var(--negative)",1.5,"",!0);break;case"edge-accent":o=$r("var(--accent)",1.75,"",!0);break;case"edge-link":o=$r("var(--link)",1.5,"",!0);break;case"edge-accent-dashed":o=$r("var(--accent)",1.75,"5 4",!1);break;case"edge-negative-dashed":o=$r("var(--negative)",1.5,"5 4",!0);break;case"edge-implements":{const r=Cn/2;o=`<line x1="1" y1="${r}" x2="${yn-8}" y2="${r}" stroke="var(--muted)" stroke-width="1.5" stroke-dasharray="5 4"/><path d="M${yn-8},${r-4} L${yn-1},${r} L${yn-8},${r+4} z" fill="var(--paper)" stroke="var(--ink)" stroke-width="1.2"/>`;break}case"line-dot":case"line-dot-accent":{const r=Cn/2,i=e==="line-dot"?"var(--muted)":"var(--accent)";o=`<line x1="1" y1="${r}" x2="${yn-1}" y2="${r}" stroke="${i}" stroke-width="${e==="line-dot"?1.5:1.75}"/><circle cx="${yn/2}" cy="${r}" r="3.5" fill="${i}"/>`;break}case"node-store":o=`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" fill="var(--paper-2)"/><path d="M${yn-1},1 H1 V${Cn-1} H${yn-1}" fill="none" stroke="var(--rule-solid)" stroke-width="1"/>`;break;case"node-stadium":o=`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" rx="${(Cn-2)/2}" fill="var(--paper)" stroke="var(--ink)" stroke-width="1.5"/>`;break;case"node-stadium-fill2":o=`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" rx="${(Cn-2)/2}" fill="var(--paper-2)" stroke="var(--rule-solid)" stroke-width="1"/>`;break;case"node-negative":o=pi("var(--negative)",1.5,"var(--negative-tint)","");break;case"chip":return""}return`<svg class="lg-sw" viewBox="0 0 ${yn} ${Cn}" width="${yn}" height="${Cn}" aria-hidden="true">${o}</svg>`}function ot(e,t){if(e.length<2)return"";const n=e.map(o=>{const r=o.swatch==="chip"?`<span class="lg-chip t-eyebrow">${S(o.chip??"")}</span>`:i8(o.swatch,o.fill,o.stroke,o.dash);return`<span class="lg-item"${o.path!==void 0?_(o.path):""}>${r}<span class="lg-label">${S(o.label)}</span></span>`}).join("");return`<div class="diagram-legend"${t!==void 0?fe(t):""}><span class="lg-title t-eyebrow">Legend</span>${n}</div>`}function wt(e,t,n=`${t}s`){return`${e} ${e===1?t:n}`}function qy(e,t,n=[]){const s=(t??"").trim(),o=[...s!==""?[s]:[],...n.filter(r=>r.trim()!=="")];return o.length===0?e:`${e}: ${o.join(", ")}`}function a8(e){return` role="img" aria-label="${S(e)}"`}function l8(e){return`<title>${S(e)}</title>`}function Sn(e,t,n=[]){const s=qy(e,t,n);return{name:s,attrs:a8(s),title:l8(s)}}var ut=' data-decorative="1"',zr=20,Rc=40,f4=6,Bn=12,Ha=6.2,h4=7.4,c8=150,ic=28,Hu=64,$a=14,Sa=14,Mw=18,Ea=18,Hy=7;function d8(e){const t=e.entities??[],n=e.relations??[],s=e.groups??[],o=e.enums??[],r=e.dir!=="TB",i=t.map((he,ge)=>u8(he,ge)),l=new Map;for(const he of i)l.set(he.name,he),he.entity.schema!==void 0&&l.set(`${he.entity.schema}.${he.name}`,he);const d=[];n.forEach((he,ge)=>{const Ne=l.get(he.from),Fe=l.get(he.to);if(Ne===void 0||Fe===void 0)return;const We=g8(he.card);d.push({r:he,idx:ge,from:Ne,to:Fe,...We,dashed:he.identifying===!1})});const u=new Map,p=new Map;for(const he of d)he.toMany||u.set(he.to.name,(u.get(he.to.name)??0)+1),he.fromMany||u.set(he.from.name,(u.get(he.from.name)??0)+1),p.set(he.from.name,(p.get(he.from.name)??0)+1),he.to!==he.from&&p.set(he.to.name,(p.get(he.to.name)??0)+1);let h,m=0,g=!1;for(const[he,ge]of u)ge>m?(m=ge,h=he,g=!1):ge===m&&(g=!0);g&&(h=void 0);const v=[],y=new Map,b=[];for(const he of s){const ge=(he.entities??[]).filter(Fe=>l.has(Fe)&&!y.has(l.get(Fe)?.name??Fe));if(ge.length===0)continue;const Ne=v.length;v.push(he.name),b.push(!0);for(const Fe of ge)y.set(l.get(Fe)?.name??Fe,Ne)}for(const he of i){if(y.has(he.name)||he.entity.schema===void 0)continue;let ge=v.indexOf(he.entity.schema);(ge===-1||!b[ge])&&(ge=v.length,v.push(he.entity.schema),b.push(!0)),y.set(he.name,ge)}const E=i.filter(he=>!y.has(he.name));if(E.length>0){const he=v.length;v.push(""),b.push(!1);for(const ge of E)y.set(ge.name,he)}const $=i.map((he,ge)=>({box:he,band:y.get(he.name)??0,layer:0,order:ge,u:0,v:0,du:r?he.w:he.h,dv:r?he.h:he.w})),A=new Map($.map(he=>[he.box.name,he])),T=new Map;for(const he of $)T.set(he.box.name,new Set);for(const he of d)he.from!==he.to&&(T.get(he.from.name)?.add(he.to.name),T.get(he.to.name)?.add(he.from.name));m8($,T,p,h,A);const N=[...new Set($.map(he=>he.layer))].sort((he,ge)=>he-ge),P=N[0]??0,j=N[N.length-1]??0,I=[],D=new Map,C=(he,ge)=>{const Ne=D.get(he)??[];Ne.push(ge),D.set(he,Ne)};let R=0;for(const he of d){const ge=A.get(he.from.name),Ne=A.get(he.to.name);if(ge===void 0||Ne===void 0)continue;const Fe=ge===Ne,We=ge.layer,ze=Ne.layer;let Xe,pt,kt=!1;Fe?Xe=pt=We:We<ze?(Xe=We,pt=ze-1,kt=ze-We>1):We>ze?(Xe=We-1,pt=ze,kt=We-ze>1):Xe=pt=We;const St={rel:he,src:ge,dst:Ne,g1:Xe,g2:pt,long:kt,self:Fe,slot1:0,slot2:0,channel:kt?R++:-1};I.push(St),Fe||(C(Xe,St),kt&&C(pt,St))}const F=new Map;for(let he=P;he<=j;he++){const ge=D.get(he)?.length??0;F.set(he,Math.max(he===j?ge>0?(ge+1)*$a:0:Hu,(ge+1)*$a))}const U=R>0?R*$a+8:0,Y=new Map,B=new Map,te=[],ee=()=>{let he=Ea;for(let Fe=P;Fe<=j;Fe++){const We=Math.max(0,...$.filter(ze=>ze.layer===Fe).map(ze=>ze.du));Y.set(Fe,he),B.set(Fe,We),he+=We+(F.get(Fe)??Hu)}let ge=Ea+U;te.length=0;let Ne=!1;v.forEach((Fe,We)=>{const ze=$.filter(ct=>ct.band===We),Xe=b[We]===!0;if(ze.length===0){te.push({top:ge,bottom:ge,minL:0,maxL:0});return}const pt=ge+(We>0?(Ne?Sa:0)+ic:0)+(Xe?Sa+Mw:0);let kt=0;const St=new Map;for(const ct of ze){const _t=St.get(ct.layer)??[];_t.push(ct),St.set(ct.layer,_t)}for(const ct of St.values())ct.sort((_t,En)=>_t.order-En.order),kt=Math.max(kt,ct.reduce((_t,En)=>_t+En.dv,0)+ic*(ct.length-1));let Nt=1/0,Bt=-1/0;for(const[ct,_t]of St){const En=_t.reduce((Et,an)=>Et+an.dv,0)+ic*(_t.length-1);let zt=pt+(kt-En)/2;for(const Et of _t)Et.u=(Y.get(ct)??0)+((B.get(ct)??Et.du)-Et.du)/2,Et.v=zt,zt+=Et.dv+ic;Nt=Math.min(Nt,ct),Bt=Math.max(Bt,ct)}te.push({top:pt,bottom:pt+kt,minL:Nt,maxL:Bt}),ge=pt+kt,Ne=Xe})};ee();const H=[...N].sort((he,ge)=>Math.abs(he)-Math.abs(ge)||he-ge),W=(he,ge)=>{for(const Ne of he){const Fe=ge(Ne);for(const We of $){if(We.layer!==Ne)continue;const ze=[...T.get(We.box.name)??[]].map(Xe=>A.get(Xe)).filter(Xe=>Xe!==void 0&&Xe.layer===Fe);ze.length!==0&&(We.order=ze.reduce((Xe,pt)=>Xe+pt.v+pt.dv/2,0)/ze.length)}}ee()};W(H,he=>he>0?he-1:he<0?he+1:he),W([...H].reverse(),he=>he>=0?he+1:he-1),W(H,he=>he>0?he-1:he<0?he+1:he);for(const[he,ge]of D){const Ne=(Y.get(he)??0)+(B.get(he)??0),Fe=F.get(he)??Hu;ge.sort((We,ze)=>Lw(We.src,We.dst)-Lw(ze.src,ze.dst)),ge.forEach((We,ze)=>{const Xe=Ne+(ze+1)*Fe/(ge.length+1);We.g1===he&&We.slot1===0&&(We.slot1=Xe),We.long&&We.g2===he&&(We.slot2=Xe),We.long||(We.slot2=We.slot1)})}const V=(he,ge)=>r?he:ge,O=(he,ge)=>r?ge:he,z=he=>he.map(([ge,Ne],Fe)=>`${Fe===0?"M":"L"}${nt(V(ge,Ne))},${nt(O(ge,Ne))}`).join(" ");let X=0,K=0;const se=(he,ge)=>{X=Math.max(X,he),K=Math.max(K,ge)};for(const he of $)se(V(he.u+he.du,he.v+he.dv),O(he.u+he.du,he.v+he.dv));let Q="",re=!1;Q+=`<g${fe("groups")}>`,v.forEach((he,ge)=>{if(b[ge]!==!0)return;const Ne=te[ge];if(Ne===void 0||Ne.top===Ne.bottom)return;re=!0;const Fe=(Y.get(Ne.minL)??0)-Sa,We=(Y.get(Ne.maxL)??0)+(B.get(Ne.maxL)??0)+Sa,ze=Ne.top-Sa-Mw,Xe=Ne.bottom+Sa,pt=V(Fe,ze),kt=O(Fe,ze),St=V(We,Xe)-pt,Nt=O(We,Xe)-kt;se(pt+St,kt+Nt);const Bt=s.findIndex(ct=>ct.name===he);Q+=`<g${Bt>=0?_(`groups.${Bt}`):""}><rect x="${nt(pt)}" y="${nt(kt)}" width="${nt(St)}" height="${nt(Nt)}" rx="8" class="er-panel"/><text x="${nt(pt+12)}" y="${nt(kt+13)}" class="t-eyebrow er-panel-tab">${S(he.toUpperCase())}</text></g>`}),Q+="</g>";const Z=[];let q=!1,de=!1;Q+=`<g${fe("relations")}>`;for(const he of I){const{rel:ge,src:Ne,dst:Fe}=he;q=!0,ge.dashed&&(de=!0);const We=ge.fromMany&&!ge.toMany?!0:!ge.fromMany&&ge.toMany?!1:Nw(ge.from,ge.to,ge.r.fromCol)||!Nw(ge.to,ge.from,ge.r.toCol),ze=ge.fromMany&&ge.toMany,Xe=ze?Ne.v+Ne.dv/2:_w(Ne,r,We?v0(ge.from,ge.to,ge.r.fromCol):Tw(ge.from,ge.r.fromCol)),pt=ze?Fe.v+Fe.dv/2:_w(Fe,r,We?Tw(ge.to,ge.r.toCol):v0(ge.to,ge.from,ge.r.toCol)),kt=Ne.layer,St=Fe.layer;let Nt,Bt,ct,_t;if(he.self){const zt=Ne.u+Ne.du,Et=Math.abs(pt-Xe)<1?Xe+zr:pt,an=zt+$a;Nt=z([[zt,Xe],[an,Xe],[an,Et],[zt,Et]]),Bt=1,ct=-1,_t=[an+8,Math.max(Xe,Et)+12]}else if(kt===St){const zt=Math.max(Ne.u+Ne.du,Fe.u+Fe.du),Et=he.slot1>0?he.slot1:zt+$a;Nt=z([[Ne.u+Ne.du,Xe],[Et,Xe],[Et,pt],[Fe.u+Fe.du,pt]]),Bt=1,ct=-1,_t=[Et,(Xe+pt)/2]}else{const zt=kt<St,Et=zt?Ne.u+Ne.du:Ne.u,an=zt?Fe.u:Fe.u+Fe.du;if(Bt=zt?1:-1,ct=zt?1:-1,!he.long)Nt=z([[Et,Xe],[he.slot1,Xe],[he.slot1,pt],[an,pt]]),_t=[he.slot1,Math.abs(Xe-pt)<zr*2?Math.max(Xe,pt)+12:(Xe+pt)/2];else{const _n=Ea+he.channel*$a+4;Nt=z([[Et,Xe],[he.slot1,Xe],[he.slot1,_n],[he.slot2,_n],[he.slot2,pt],[an,pt]]),_t=[(he.slot1+he.slot2)/2,_n]}}const En=ge.dashed?' stroke-dasharray="5 4"':"";if(Q+=`<g${_(`relations.${ge.idx}`)}><path d="${Nt}" fill="none" stroke="var(--muted)" stroke-width="1.25"${En}/>`+jw(he.self||Bt>0?Ne.u+Ne.du:Ne.u,Xe,Bt,Iw(ge.fromMany,!1),r,V,O)+jw(he.self||kt===St?Fe.u+Fe.du:ct>0?Fe.u:Fe.u+Fe.du,pt,he.self||kt===St?1:-ct,Iw(ge.toMany,ge.toOptional),r,V,O)+"</g>",ge.r.label!==void 0&&ge.r.label!==""){const zt=ge.r.label.toUpperCase(),Et=Math.round(zt.length*Ha+8),an=V(_t[0],_t[1]),_n=O(_t[0],_t[1]);Z.push(`<rect x="${nt(an-Et/2)}" y="${nt(_n-7)}" width="${Et}" height="14" fill="var(--paper)"/><text x="${nt(an)}" y="${nt(_n+3.5)}" class="t-arrow er-rel" text-anchor="middle">${S(zt)}</text>`),se(an+Et/2,_n+7)}}Q+="</g>";const le=new Set;let J=!1;const ue=new Set;Q+=`<g${fe("entities")}>`;for(const he of $){const ge=he.box,Ne=V(he.u,he.v),Fe=O(he.u,he.v),We=ge.name===h,ze=We?"AGGREGATE ROOT":ge.kind==="view"?"VIEW":ge.kind==="enum"?"ENUM":ge.kind==="external"?"EXT":ge.join?"JOIN":"ENTITY";ge.join&&!We&&ge.kind==="table"&&(J=!0),ge.kind!=="table"&&ue.add(ge.kind);const Xe=ge.kind==="view"||ge.kind==="enum",pt=We?"var(--accent)":Xe?"var(--rule-solid)":"var(--ink)",kt=We?"var(--accent-tint)":ge.kind==="view"?"var(--paper-2)":"var(--paper)",St=Xe?1:1.5,Nt=ge.kind==="external"?' stroke-dasharray="4 3"':"";Q+=`<g${_(`entities.${ge.idx}`)}><rect x="${nt(Ne)}" y="${nt(Fe)}" width="${ge.w}" height="${ge.h}" rx="6" fill="${kt}" stroke="${pt}" stroke-width="${St}"${Nt}/><text x="${nt(Ne+Bn)}" y="${nt(Fe+15)}" class="er-eyebrow t-eyebrow${We?" c-accent":""}">${ze}</text><text x="${nt(Ne+Bn)}" y="${nt(Fe+31)}" class="er-head-text t-name">${S(ge.name)}</text>`,ge.headLines.forEach((ct,_t)=>{Q+=`<text x="${nt(Ne+Bn)}" y="${nt(Fe+44+_t*13)}" class="er-col dim t-sub c-soft">${S(ct)}</text>`}),(ge.rows.length>0||ge.headLines.length>0)&&(Q+=`<line x1="${nt(Ne)}" y1="${nt(Fe+ge.headH)}" x2="${nt(Ne+ge.w)}" y2="${nt(Fe+ge.headH)}" class="er-headline"/>`),Q+=`<g${fe(`entities.${ge.idx}.columns`)}>`;let Bt=-1;ge.rows.forEach((ct,_t)=>{const En=Fe+ge.headH+_t*zr,zt=En+14;ct.kind==="col"?(Bt>=0&&(Q+="</g>"),Bt=ct.colIdx,Q+=`<g${_(`entities.${ge.idx}.columns.${ct.colIdx}`)}>`,ct.note!==void 0&&(Q+=`<title>${S(ct.note)}</title>`),_t>0&&(Q+=`<line x1="${nt(Ne+1)}" y1="${nt(En)}" x2="${nt(Ne+ge.w-1)}" y2="${nt(En)}" class="er-rowline"${ut}/>`),ct.markers.forEach((Et,an)=>{le.add(Et),Q+=`<text x="${nt(Ne+Bn+an*Hy)}" y="${nt(zt)}" class="er-key ${f8(Et)} t-sub c-muted">${S(Et)}</text>`}),Q+=`<text x="${nt(Ne+Bn+Aw(ge))}" y="${nt(zt)}" class="er-col t-sub c-ink">${S(ct.left)}</text>`+(ct.right.length>0?`<text x="${nt(Ne+ge.w-Bn)}" y="${nt(zt)}" class="er-col dim t-sub c-soft" text-anchor="end">${S(ct.right)}</text>`:"")):Q+=`<text x="${nt(Ne+Bn+Aw(ge))}" y="${nt(zt)}" class="er-col dim t-sub c-soft">${S(ct.left)}</text>`}),Bt>=0&&(Q+="</g>"),Q+="</g></g>"}Q+="</g>";const ve=o.map((he,ge)=>p8(he.name,he.values,ge));if(ve.length>0){const he=X+Hu;let ge=Ea+U;Q+=`<g${fe("enums")}>`;for(const Ne of ve)Q+=`<g${_(`enums.${Ne.idx}`)}><rect x="${nt(he)}" y="${nt(ge)}" width="${Ne.w}" height="${Ne.h}" rx="6" fill="var(--paper)" stroke="var(--rule-solid)" stroke-width="1"/><text x="${nt(he+Bn)}" y="${nt(ge+15)}" class="er-eyebrow t-eyebrow">ENUM</text><text x="${nt(he+Bn)}" y="${nt(ge+31)}" class="er-head-text t-name">${S(Ne.name)}</text><line x1="${nt(he)}" y1="${nt(ge+Rc)}" x2="${nt(he+Ne.w)}" y2="${nt(ge+Rc)}" class="er-headline"/>`,Ne.values.forEach((Fe,We)=>{const ze=ge+Rc+We*zr;We>0&&(Q+=`<line x1="${nt(he+1)}" y1="${nt(ze)}" x2="${nt(he+Ne.w-1)}" y2="${nt(ze)}" class="er-rowline"${ut}/>`),Q+=`<text x="${nt(he+Bn)}" y="${nt(ze+14)}" class="er-col t-sub c-ink">${S(Fe)}</text>`}),Q+="</g>",se(he+Ne.w,ge+Ne.h),ge+=Ne.h+ic;Q+="</g>"}Q+=Z.join("");const we=Math.ceil(X+Ea),$e=Math.ceil(K+Ea),je=Sn("Entity relationship diagram",e.title,[wt(t.length,"entity","entities")]),De=`<svg viewBox="0 0 ${we} ${$e}"${je.attrs}>`+je.title+Q+"</svg>",Me=[];le.has("#")&&Me.push({swatch:"chip",chip:"#",label:"primary key"}),le.has("→")&&Me.push({swatch:"chip",chip:"→",label:"foreign key"}),le.has("U")&&Me.push({swatch:"chip",chip:"U",label:"unique"}),le.has("?")&&Me.push({swatch:"chip",chip:"?",label:"nullable"}),le.has("⌘")&&Me.push({swatch:"chip",chip:"⌘",label:"indexed"}),q&&Me.push({swatch:"chip",chip:"1 / N",label:"cardinality"}),de&&(Me.push({swatch:"line",label:"identifying"}),Me.push({swatch:"line-dashed",label:"non-identifying"})),J&&Me.push({swatch:"chip",chip:"JOIN",label:"join table"}),ue.has("view")&&Me.push({swatch:"node-fill2",label:"view"}),(ue.has("enum")||ve.length>0)&&Me.push({swatch:"chip",chip:"ENUM",label:"enum"}),ue.has("external")&&Me.push({swatch:"node-dashed",label:"external"}),re&&Me.push({swatch:"node-fill2",label:"schema group"}),h!==void 0&&Me.push({swatch:"node-accent",label:"aggregate root"});const Be=ot(Me),Ke={tag:"ER",...e.title!==void 0?{title:e.title}:{},...e.description!==void 0?{desc:e.description}:{},...Be.length>0?{legendHtml:Be}:{}};return lt(Ke,De)}function u8(e,t){const n=e.columns??[],s=e.kind??"table",o=Math.max(0,...n.map(m=>g0(m).length)),r=o>0?o*Hy+6:0;let i=Math.max(c8,e.name.length*h4+Bn*2+24);const l=n.map(m=>h8(m));n.forEach((m,g)=>{i=Math.max(i,Bn*2+r+m.name.length*Ha+16+(l[g]?.length??0)*Ha)});const d=i-Bn*2-r,u=[];n.forEach((m,g)=>{if(u.push({kind:"col",col:m,colIdx:g,markers:g0(m),left:m.name,right:l[g]??"",...m.note!==void 0&&m.note.length>0?{note:m.note}:{}}),m.enum!==void 0&&m.enum.length>0)for(const v of Cw(m.enum.join(" · "),Math.max(24,Math.floor(d/Ha))))u.push({kind:"sub",colIdx:g,markers:[],left:v,right:""})});const p=e.note!==void 0&&e.note.length>0?Cw(e.note,Math.max(24,Math.floor((i-Bn*2)/Ha))):[],h=Rc+(p.length>0?p.length*13+2:0);return{name:e.name,idx:t,entity:e,cols:n,rows:u,headLines:p,headH:h,pkIdx:n.findIndex(m=>m.pk===!0),join:n.length>0&&n.every(m=>m.fk===!0),kind:s,w:Math.round(i),h:h+u.length*zr+(u.length>0?f4:0)}}function p8(e,t,n){const s=Math.round(Math.max(120,e.length*h4+Bn*2+12,...t.map(o=>o.length*Ha+Bn*2)));return{idx:n,name:e,values:t,w:s,h:Rc+t.length*zr+(t.length>0?f4:0)}}function g0(e){const t=[];return e.pk===!0&&t.push("#"),e.fk===!0&&t.push("→"),e.unique===!0&&t.push("U"),e.nullable===!0&&t.push("?"),e.index===!0&&t.push("⌘"),t}function f8(e){return e==="#"?"pk":e==="→"?"fk":e==="U"?"uk":e==="?"?"nul":"ix"}function Aw(e){const t=Math.max(0,...e.cols.map(n=>g0(n).length));return t>0?t*Hy+6:0}function h8(e){const t=[];return e.type!==void 0&&e.type.length>0&&t.push(e.type),e.ref!==void 0&&e.ref.length>0&&t.push(`→ ${e.ref}`),e.default!==void 0&&e.default.length>0&&t.push(`= ${e.default}`),t.join(" ")}function Cw(e,t){const n=[];let s="";for(const o of e.split(/\s+/).filter(r=>r.length>0))for(s.length===0?s=o:s.length+1+o.length<=t?s+=" "+o:(n.push(s),s=o);s.length>t;)n.push(s.slice(0,t)),s=s.slice(t);return s.length>0&&n.push(s),n}function m8(e,t,n,s,o){const r=new Set,i=[];for(const u of e){if(r.has(u.box.name)||(t.get(u.box.name)?.size??0)===0)continue;const p=[],h=[u];for(r.add(u.box.name);h.length>0;){const m=h.shift();p.push(m);for(const g of t.get(m.box.name)??[]){if(r.has(g))continue;r.add(g);const v=o.get(g);v!==void 0&&h.push(v)}}i.push(p)}i.sort((u,p)=>{const h=s!==void 0&&u.some(g=>g.box.name===s)?1:0;return(s!==void 0&&p.some(g=>g.box.name===s)?1:0)-h||p.length-u.length}),i.forEach((u,p)=>{const h=u.find(E=>E.box.name===s)??u.reduce((E,$)=>(n.get($.box.name)??0)>(n.get(E.box.name)??0)?$:E,u[0]),m=new Map([[h.box.name,0]]),g=[h];for(;g.length>0;){const E=g.shift(),$=m.get(E.box.name)??0;for(const A of t.get(E.box.name)??[]){if(m.has(A))continue;m.set(A,$+1);const T=o.get(A);T!==void 0&&g.push(T)}}const v=new Map,y=[];for(const E of u){if(E===h||v.has(E.box.name))continue;const $=[],A=[E.box.name];for(v.set(E.box.name,y.length);A.length>0;){const T=A.shift();$.push(T);for(const N of t.get(T)??[])N===h.box.name||v.has(N)||(v.set(N,y.length),A.push(N))}y.push($)}const b=y.map(()=>1);if(p===0&&y.length>1){const E=y.map((T,N)=>({i:N,size:T.length})).sort((T,N)=>N.size-T.size||T.i-N.i);let $=0,A=0;for(const{i:T,size:N}of E)A<=$?(b[T]=1,A+=N):(b[T]=-1,$+=N)}for(const E of u){const $=m.get(E.box.name)??0,A=v.get(E.box.name);E.layer=A===void 0?0:(b[A]??1)*$}});const l=e.filter(u=>!r.has(u.box.name));if(l.length===0)return;const d=[...new Set(e.filter(u=>r.has(u.box.name)).map(u=>u.layer))].sort((u,p)=>u-p);if(d.length===0){l.forEach((u,p)=>{u.layer=p%4});return}l.forEach((u,p)=>{u.layer=d[p%d.length]??0})}function Nw(e,t,n){return v0(e,t,n)>=0}function v0(e,t,n){if(n!==void 0){const d=e.cols.findIndex(u=>u.name===n);if(d>=0)return Dc(e,d)}const s=t.name.toLowerCase(),o=s.replace(/s$/,""),r=e.cols.map((d,u)=>({c:d,i:u})).filter(d=>d.c.fk===!0),i=r.find(d=>{const u=d.c.ref?.toLowerCase()??"";return u.startsWith(s+".")||u===s||u.startsWith(t.name.toLowerCase())});if(i!==void 0)return Dc(e,i.i);const l=r.find(d=>{const u=d.c.name.toLowerCase();return u.includes(s)||u.includes(o)});return l!==void 0?Dc(e,l.i):-1}function Tw(e,t){if(t!==void 0){const n=e.cols.findIndex(s=>s.name===t);if(n>=0)return Dc(e,n)}return e.pkIdx>=0?Dc(e,e.pkIdx):-1}function Dc(e,t){return e.rows.findIndex(n=>n.kind==="col"&&n.colIdx===t)}function _w(e,t,n){return!t||n<0?e.v+e.dv/2:e.v+e.box.headH+n*zr+zr/2}function Lw(e,t){return(e.v+e.dv/2+t.v+t.dv/2)/2}function g8(e){if(e===void 0)return{fromMany:!0,toMany:!1,toOptional:!1};if(e==="0..1")return{fromMany:!1,toMany:!1,toOptional:!0};if(e==="0..N")return{fromMany:!1,toMany:!0,toOptional:!0};const t=e.split(":"),n=s=>s!==void 0&&s.trim().toUpperCase()!=="1";return{fromMany:n(t[0]),toMany:n(t[1]),toOptional:!1}}function Iw(e,t){return t?e?"0..N":"0..1":e?"N":"1"}function jw(e,t,n,s,o,r,i){const l=e+n*10,d=r(l,t),u=i(l,t);if(o){const p=n>0?"start":"end";return`<text x="${nt(d)}" y="${nt(u-4)}" class="t-arrow er-card" text-anchor="${p}">${S(s)}</text>`}return`<text x="${nt(d+4)}" y="${nt(u+3)}" class="t-arrow er-card" text-anchor="start">${S(s)}</text>`}var nt=e=>Math.round(e*10)/10;function v8(e){const t=e.columns??[];let n=`<div class="kanban"${fe("columns")}>`;return t.forEach((s,o)=>{const r=(s.cards??[]).map((i,l)=>{const d=i.tag!==void 0?`<div class="kan-card-tag">${S(i.tag)}</div>`:"";return`<div class="kan-card"${_(`columns.${o}.cards.${l}`)}><div class="kan-card-title">${S(i.title)}</div>`+d+"</div>"}).join("");n+=`<div class="kan-col"${_(`columns.${o}`)}${fe(`columns.${o}.cards`)}><div class="kan-head"${_(`columns.${o}.label`)}>${S(s.label)}</div>`+r+"</div>"}),n+"</div>"}function dt(e,t,n){if(e==null||e==="")return[];const s=String(e).split(/\s+/),o=[];let r="";for(const i of s){if(!r){r=i;continue}if((r+" "+i).length<=t)r+=" "+i;else if(o.push(r),r=i,o.length===n)break}return r&&o.length<n&&o.push(r),o.slice(0,n)}function hn(e){return` data-reveal="${e}"`}var m4={sync:{cls:"msg-line",marker:"sqArrow",txt:"msg-text t-arrow em"},response:{cls:"msg-line dashed",marker:"sqOpen",txt:"msg-text t-arrow"},async:{cls:"msg-line async",marker:"sqOpen",txt:"msg-text t-arrow"},error:{cls:"msg-line err",marker:"sqErr",txt:"msg-text t-arrow err"},note:{cls:"",marker:null,txt:"msg-text t-arrow note"}},Fp=36,y8=28,x8=24,k8=14,g4=13,b8=34,w8=3,Pw=18,Ow=12,Rw=6,Bc=6,v4=150,$8=46,S8=6.2,E8=40;function M8(e,t){const n=o=>e.findIndex(r=>r.id===o),s=e.slice(0,-1).map(()=>$8);for(const o of t){if(!("from"in o)||o.kind==="note")continue;const r=n(o.from),i=n(o.to);if(r<0||i<0||Math.abs(r-i)!==1)continue;const l=Math.min(r,i),d=Math.ceil((o.label??"").length*S8+E8)-v4;d>(s[l]??0)&&(s[l]=d)}return s}function y4(e){return e.kind==="msg"}function A8(e){const t=new Map;let n=0;for(const s of e)s.kind!=="end"&&(t.set(s.idx,n),n+=1);return t}function C8(e,t,n,s){const o=u=>{const p=s.get(u);return p===void 0?"":hn(p)},r=e.filter(y4);if(!r.some(u=>u.summary!==void 0&&u.summary.length>0))return"";const i=new Set,l=u=>{const p=u.open.idx,h=u.end?.idx??Number.POSITIVE_INFINITY;if(r.some(g=>g.idx>p&&g.idx<h&&g.summary!==void 0&&g.summary.length>0)){i.add(u.open.idx);for(const g of u.elses)i.add(g.idx)}u.children.forEach(l)};t.forEach(l);const d=[];for(const u of e){if(u.kind==="open"&&i.has(u.idx)){const E=u.label.length>0?`<span class="step-frame-label">${S(u.label)}</span>`:"";d.push(`<li class="step-frame"${_(`messages.${u.idx}`)}${o(u.idx)}><span class="step-frame-tag">${S(u.frame.toUpperCase())}</span>${E}</li>`);continue}if(u.kind==="else"&&i.has(u.idx)){d.push(`<li class="step-frame else"${_(`messages.${u.idx}`)}${o(u.idx)}><span class="step-frame-tag">else</span><span class="step-frame-label">${S(u.label)}</span></li>`);continue}if(u.kind!=="msg"||u.summary===void 0||u.summary.length===0)continue;const p=u.msgKind==="error"?' class="err"':"",h=u.msgKind==="error"?" err":"",m=n.get(u.from)?.name??u.from,g=u.msgKind==="note"||u.from===u.to?"":` → ${S(n.get(u.to)?.name??u.to)}`,v=`${S(m)}${g}`,y=u.code!==void 0&&u.code.length>0?`<pre class="sql">${S(u.code)}</pre>`:"",b=u.note!==void 0&&u.note.length>0?`<span class="step-note">${S(u.note)}</span>`:"";d.push(`<li${p}${_(`messages.${u.idx}`)}${o(u.idx)}><span class="step-n">${u.n}</span><span class="step-actor${h}">${v}</span><span class="step-summary">${S(u.summary)}</span>`+y+b+"</li>")}return`<div class="seq-steps"><div class="seq-steps-title">Step-by-step</div><ol>${d.join("")}</ol></div>`}function N8(e){if(e.length===0)return"";const t=e.map((n,s)=>`<span${_(`foot.${s}`)}><strong>${S(n.label)}:</strong> ${S(n.value)}</span>`).join("");return`<div class="diagram-foot"${fe("foot")}>${t}</div>`}function T8(e,t,n){const s=[];let o=n-Fp,r=0;return e.forEach((i,l)=>{const d=i;if("frame"in d){const y=typeof d.label=="string"?d.label:"";s.push({kind:"open",idx:l,top:o,y:o+14,frame:String(d.frame),label:y}),o+=y8;return}if("else"in d){s.push({kind:"else",idx:l,top:o,y:o+8,frame:"",label:String(d.else??"")}),o+=x8;return}if("end"in d){s.push({kind:"end",idx:l,top:o,y:o+10,frame:"",label:""}),o+=k8;return}const u=i;r+=1;const p=u.kind!==void 0&&u.kind in m4?u.kind:"sync",h=u.label??"",m=p==="note"?dt(h,b8,w8):[],g=p==="note"?Fp+g4*Math.max(0,m.length-1):Fp,v={kind:"msg",idx:l,n:r,top:o,y:o+g,fromI:t(u.from),toI:t(u.to),msgKind:p,label:h,from:u.from,to:u.to,activate:u.activate===!0,deactivate:u.deactivate===!0,lines:m,...u.summary!==void 0?{summary:u.summary}:{},...u.code!==void 0?{code:u.code}:{},...u.note!==void 0?{note:u.note}:{}};s.push(v),o+=g}),{rows:s,cursor:o}}function _8(e){const t=[],n=[];for(const s of e)if(s.kind==="open"){const o={open:s,elses:[],children:[],x1:0,x2:0},r=n[n.length-1];r!==void 0?r.children.push(o):t.push(o),n.push(o)}else if(s.kind==="else")n[n.length-1]?.elses.push(s);else if(s.kind==="end"){const o=n.pop();o!==void 0&&(o.end=s)}return t}function L8(e,t,n){if(e.msgKind==="note"){const s=n(e);return s===null?null:[s.x,s.x+s.w]}if(e.fromI<0&&e.toI<0)return null;if(e.fromI<0)return[t(e.toI),t(e.toI)];if(e.toI<0)return[t(e.fromI),t(e.fromI)+36+e.label.length*Bc];if(e.fromI===e.toI){const s=t(e.fromI);return[s,s+36+e.label.length*Bc]}return[Math.min(t(e.fromI),t(e.toI)),Math.max(t(e.fromI),t(e.toI))]}function I8(e){const t=e.actors??[],n=e.messages??[],s=Math.max(t.length,1),o=24,r=v4,i=M8(t,n),l=16,d=t.map(J=>dt(J.name,J.external===!0?16:19,2)),u=d.some(J=>J.length>1),p=u?54:40,h=[];for(let J=0;J<s;J++)h.push(o+r/2+J*r+i.slice(0,J).reduce((ue,ve)=>ue+ve,0));const m=J=>h[J]??o+r/2,g=o*2+s*r+i.reduce((J,ue)=>J+ue,0),v=J=>t.findIndex(ue=>ue.id===J),y=l+p+28,{rows:b,cursor:E}=T8(n,v,y),$=b.filter(y4),A=A8(b),T=J=>hn(A.get(J)??0),N=E+Fp+12,P=N+6;let j=-1;for(const J of $)J.msgKind==="response"&&J.toI===0&&J.fromI>0&&(j=J.idx);const I=J=>{if(J.fromI<0&&J.toI<0)return null;const ue=Math.max(0,...J.lines.map(Be=>Be.length)),ve=J.top+14,we=J.y-J.top-18;if(J.fromI<0||J.toI<0||J.fromI===J.toI){const Be=m(J.fromI<0?J.toI:J.fromI),Ke=Math.max(72,Math.round(ue*Bc)+16);return{x:Be+12+Ke<=g-2?Be+12:Be-12-Ke,w:Ke,top:ve,h:we}}const $e=Math.min(m(J.fromI),m(J.toI)),je=Math.max(m(J.fromI),m(J.toI)),De=Math.max(je-$e+60,Math.round(ue*Bc)+16),Me=($e+je)/2;return{x:Math.round(Me-De/2),w:De,top:ve,h:we}},D=_8(b),C=J=>{J.children.forEach(C);const ue=J.open.idx,ve=J.end?.idx??Number.POSITIVE_INFINITY;let we=Number.POSITIVE_INFINITY,$e=Number.NEGATIVE_INFINITY;for(const je of $){if(je.idx<=ue||je.idx>=ve)continue;const De=L8(je,m,I);De!==null&&(we=Math.min(we,De[0]),$e=Math.max($e,De[1]))}we===Number.POSITIVE_INFINITY?(we=o,$e=g-o):(we-=Pw,$e+=Pw);for(const je of J.children)we=Math.min(we,je.x1-Ow),$e=Math.max($e,je.x2+Ow);J.x1=Math.max(2,Math.round(we)),J.x2=Math.min(g-2,Math.round($e))};D.forEach(C);const R=J=>J.end?.y??E+6,F=$.some(J=>J.activate||J.deactivate),U=[],Y=new Map,B=J=>{let ue=Y.get(J);return ue===void 0&&(ue=[],Y.set(J,ue)),ue},te=(J,ue,ve,we)=>{const $e=B(J),je={i:J,y1:ue,y2:Number.NaN,depth:$e.length,caller:ve,last:ue,step:we};$e.push(je),U.push(je)};for(const J of $){if(F){if(J.activate&&J.toI>=0&&te(J.toI,J.y,J.fromI,A.get(J.idx)??0),J.deactivate&&J.fromI>=0){const ue=B(J.fromI).pop();ue!==void 0&&(ue.y2=J.y)}continue}if(!(J.msgKind==="note"||J.fromI<0)){for(const ue of B(J.fromI))ue.last=J.y;if(!(J.toI<0||J.toI===J.fromI))if(J.msgKind==="sync"||J.msgKind==="async")te(J.toI,J.y,J.fromI,A.get(J.idx)??0);else{const ue=B(J.fromI);for(let ve=ue.length-1;ve>=0;ve--){const we=ue[ve];if(we.caller===J.toI){we.y2=J.y,ue.splice(ve,1);break}}}}}for(const J of Y.values())for(const ue of J)ue.y2=F?E:ue.last;const ee=Sn("Sequence diagram",e.title??e.endpoint?.path,[`${wt($.length,"message")} between ${wt(t.length,"actor")}`]);let H=`<svg viewBox="0 0 ${g} ${P}"${ee.attrs}>`+ee.title+'<defs><marker id="sqArrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="var(--muted)"/></marker><marker id="sqOpen" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M1,1 L9,5 L1,9" fill="none" stroke="var(--muted)" stroke-width="1.6"/></marker><marker id="sqErr" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="var(--negative)"/></marker><marker id="sqAccent" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M1,1 L9,5 L1,9" fill="none" stroke="var(--accent)" stroke-width="1.6"/></marker></defs>',W="",V="";const O=t.map((J,ue)=>m(ue)),z=(J,ue)=>{const ve=(ue.length+2)*Bc,we=O.find($e=>$e>=J-6&&$e<=J+ve);return we===void 0?J:we+12},X=J=>{const ue=J.open.y,ve=R(J),we=_(`messages.${J.open.idx}`)+T(J.open.idx);W+=`<g${we}><rect x="${J.x1}" y="${ue}" width="${J.x2-J.x1}" height="${Math.max(0,ve-ue)}" rx="4" class="seq-frame"/></g>`;const $e=J.open.frame.toUpperCase(),je=10+$e.length*7,De=J.open.label.length>0?`<text x="${z(J.x1+je+8,J.open.label)}" y="${ue+12}" class="seq-frame-guard t-arrow c-soft">[${S(J.open.label)}]</text>`:"";V+=`<g${we}><rect x="${J.x1}" y="${ue}" width="${je}" height="16" rx="2" class="seq-frame-tab"/><text x="${J.x1+5}" y="${ue+11.5}" class="seq-frame-tab-text t-eyebrow">${S($e)}</text>`+De+"</g>";for(const Me of J.elses){const Be=_(`messages.${Me.idx}`)+T(Me.idx);W+=`<g${Be}><line x1="${J.x1}" y1="${Me.y}" x2="${J.x2}" y2="${Me.y}" class="seq-frame-else"/></g>`,V+=`<g${Be}><text x="${z(J.x1+8,Me.label)}" y="${Me.y+14}" class="seq-frame-guard t-arrow c-soft">[${S(Me.label)}]</text></g>`}J.children.forEach(X)};D.forEach(X),H+=W;for(let J=0;J<t.length;J++){const ue=m(J);H+=`<line x1="${ue}" y1="${l+p}" x2="${ue}" y2="${N}" class="lifeline"/>`}for(const J of U){const ue=J.y1-Rw,ve=J.y2+Rw;H+=`<rect x="${m(J.i)-3+J.depth*4}" y="${ue}" width="6" height="${Math.max(0,ve-ue)}" class="activation"${hn(J.step)}/>`}H+=`<g${fe("actors")}>`,t.forEach((J,ue)=>{const ve=J.external===!0,we=ve?" ext":"",$e=d[ue]??[],je=J.sub!==void 0,De=$e.length>1?l+(ve?21:17):je?l+(ve?22:17):l+(ve?25:24),Me=l+(u?47:33),Be=$e.length<=1?`<text x="${m(ue)}" y="${De}" class="lane-head-text t-name">${S(J.name)}</text>`:$e.map((ge,Ne)=>`<text x="${m(ue)}" y="${De+Ne*14}" class="lane-head-text t-name">${S(ge)}</text>`).join(""),Ke=je?`<text x="${m(ue)}" y="${Me}" class="lane-head-sub t-sub">${S(J.sub??"")}</text>`:"",he=ve?`<text x="${m(ue)-r/2+8}" y="${l+11}" class="lane-head-chip t-eyebrow">EXT</text>`:"";H+=`<g${_(`actors.${ue}`)}><rect x="${m(ue)-r/2}" y="${l}" width="${r}" height="${p}" rx="4" class="lane-head${we}"/>`+he+Be+Ke+"</g>"}),H+="</g>",H+=V,H+=`<g${fe("messages")}>`;const K={sync:!1,response:!1,async:!1,error:!1,note:!1};for(const J of $){const ue=m4[J.msgKind],we=J.idx===j?{cls:`${ue.cls} accent`,marker:"sqAccent",txt:`${ue.txt} accent`}:ue;K[J.msgKind]=!0;const $e=_(`messages.${J.idx}`)+T(J.idx),je=J.msgKind==="error"?" err":"",De=(ze,Xe)=>`<circle cx="${ze}" cy="${Xe}" r="8" class="step-badge${je}"/><text x="${ze}" y="${Xe+3}" class="step-badge-text t-badge${je===""?"":" c-negative"}">${J.n}</text>`;if(J.msgKind==="note"){const ze=I(J);if(ze===null)continue;const Xe=J.summary!==void 0&&J.summary.length>0,pt=ze.x+ze.w/2,kt=J.lines.map((St,Nt)=>`<text x="${pt}" y="${ze.top+16+Nt*g4}" class="seq-note-text t-sub" text-anchor="middle">${S(St)}</text>`).join("");H+=`<g${$e}><rect x="${ze.x}" y="${ze.top}" width="${ze.w}" height="${ze.h}" rx="3" class="seq-note"/><path d="M${ze.x+ze.w-7},${ze.top} v7 h7" class="seq-note-fold"/>`+kt+(Xe?De(ze.x+2,ze.top):"")+"</g>";continue}if(J.fromI<0||J.toI<0){if(J.fromI<0&&J.toI<0)continue;const ze=m(J.fromI<0?J.toI:J.fromI);H+=`<g${$e}>`+De(ze+18,J.y-10)+`<text x="${ze+34}" y="${J.y-6}" class="msg-text note">${S(J.label)}</text></g>`;continue}if(J.fromI===J.toI){const ze=m(J.fromI),Xe=we.marker!==null?` marker-end="url(#${we.marker})"`:"";H+=`<g${$e}><path d="M${ze},${J.y-14} H${ze+28} V${J.y} H${ze+3}" class="${we.cls} self"${Xe}/>`+De(ze+16,J.y-26)+`<text x="${ze+36}" y="${J.y-4}" class="${we.txt}" text-anchor="start">${S(J.label)}</text></g>`;continue}const Me=m(J.fromI),Be=m(J.toI),Ke=Be>Me,he=Be+(Ke?-3:3),ge=Ke?Me+18:Me-18,Ne=Ke?ge+16:ge-16,Fe=Ke?"start":"end",We=we.marker!==null?` marker-end="url(#${we.marker})"`:"";H+=`<g${$e}><line x1="${Me}" y1="${J.y}" x2="${he}" y2="${J.y}" class="${we.cls}"${We}/>`+De(ge,J.y-10)+`<text x="${Ne}" y="${J.y-6}" class="${we.txt}" text-anchor="${Fe}">${S(J.label)}</text></g>`}H+="</g>",H+="</svg>";const se=new Map;for(const J of t)se.set(J.id,{name:J.name});const Q=C8(b,D,se,A),re=e.foot!==void 0?N8(e.foot):"",Z=[];K.sync&&Z.push({swatch:"edge",label:"call"}),K.response&&Z.push({swatch:"edge-dashed",label:"response"}),K.async&&Z.push({swatch:"edge-async",label:"async"}),K.error&&Z.push({swatch:"edge-error",label:"error"}),j>=0&&Z.push({swatch:"edge-accent-dashed",label:"the answer the caller gets"}),t.some(J=>J.external===!0)&&Z.push({swatch:"chip",chip:"EXT",label:"external actor"}),D.length>0&&Z.push({swatch:"node-fill2",label:"fragment (alt / opt / loop)"}),U.length>0&&Z.push({swatch:"node",label:"active"});const q=ot(Z),de=e.endpoint?.method,le={tag:"SEQUENCE",...de!==void 0?{tagClass:de.toLowerCase(),method:de}:{},...e.endpoint?.path!==void 0?{path:e.endpoint.path}:{},...e.title!==void 0?{title:e.title}:{},...e.description!==void 0?{desc:e.description}:{},...q.length>0?{legendHtml:q}:{},...re.length>0?{footerHtml:re}:{}};return lt(le,H+Q)}function Dw(e){if(typeof e=="string")return"";const t=[];return e.align==="r"&&t.push("r"),e.align==="c"&&t.push("c"),e.highlight===!0&&t.push("hi"),t.join(" ")}function j8(e){return typeof e=="string"?e:e.label}function P8(e){if(typeof e=="string"||typeof e=="number")return"";const t=[];return e.tone&&t.push(`cell-${e.tone}`),e.lead===!0&&t.push("lead"),e.highlight===!0&&t.push("hi"),t.join(" ")}function O8(e){return S(typeof e=="string"||typeof e=="number"?e:e.v)}function R8(e){const t=e.columns??[],n=e.rows??[],s=t.map((i,l)=>{const d=Dw(i);return`<th${d?` class="${d}"`:""}${_(`columns.${l}`)}>${S(j8(i))}</th>`}).join(""),o=n.map((i,l)=>{const d=(i??[]).map((u,p)=>{const h=t[p],m=[h!==void 0?Dw(h):"",P8(u)].filter(Boolean).join(" ");return`<td${m?` class="${m}"`:""}${_(`rows.${l}.${p}`)}>${O8(u)}</td>`}).join("");return`<tr${_(`rows.${l}`)}>${d}</tr>`}).join(""),r=e.note!==void 0?`<p class="tbl-note"${_("note")}>${S(e.note)}</p>`:"";return`<table class="pres-table"><thead><tr>${s}</tr></thead><tbody${fe("rows")}>${o}</tbody></table>${r}`}var D8={done:"node-fill2",current:"node-accent",next:"node-dashed",future:"node-dashed"};function B8(e){const t=e.items??[],n=[];let s=`<div class="tl"${fe("items")}>`;t.forEach((r,i)=>{const l=r.status??"future";n.includes(l)||n.push(l);const d=r.date!==void 0?`<div class="tl-date"${_(`items.${i}.date`)}>${S(r.date)}</div>`:"",u=r.desc!==void 0?`<div class="tl-desc"${_(`items.${i}.desc`)}>${S(r.desc)}</div>`:"",p=`<span class="tl-status tl-s-${l}"${r.status!==void 0?_(`items.${i}.status`):""}>${S(l)}</span>`;s+=`<div class="tl-item"${_(`items.${i}`)}${hn(i)}><span class="tl-dot ${l}"></span><div class="tl-head">${d}${p}</div><div class="tl-label"${_(`items.${i}.label`)}>${S(r.label)}</div>`+u+"</div>"});const o=n.map(r=>({swatch:D8[r]??"node-dashed",label:r}));return s+"</div>"+ot(o)}function x4(e){return e.slice(e.indexOf("#")+1)}function z8(e){const t=e.role??"user",n=e.want??"…",s=e.soThat??"…",o=[];e.title!==void 0&&o.push(`<span class="story-title"${_("title")}>${S(e.title)}</span>`),(e.tags??[]).forEach((d,u)=>o.push(`<span class="story-chip"${_(`tags.${u}`)}>${S(d)}</span>`)),e.points!==void 0&&e.points!==null&&o.push(`<span class="story-chip pts"${_("points")}>${S(e.points)} pts</span>`),e.priority!==void 0&&o.push(`<span class="story-chip"${_("priority")}>Priority · ${S(e.priority)}</span>`);let r='<div class="story">';o.length>0&&(r+=`<div class="story-head">${o.join("")}</div>`),r+=`<div class="story-stmt">As a <b${_("role")}>${S(t)}</b>, I want to <b${_("want")}>${S(n)}</b>, so that <b${_("soThat")}>${S(s)}</b>.</div>`,r+="</div>";const i=e.criteria??[];i.length>0&&(r+='<div class="ac-title">Acceptance criteria</div>',i.forEach((d,u)=>{r+=`<div class="ac-item"${_(`criteria.${u}`)}><div class="gwt"><span class="k g">Given</span><span class="v"${_(`criteria.${u}.given`)}>${S(d.given??"")}</span><span class="k w">When</span><span class="v"${_(`criteria.${u}.when`)}>${S(d.when??"")}</span><span class="k t">Then</span><span class="v"${_(`criteria.${u}.then`)}>${S(d.then??"")}</span></div></div>`}));const l=e.links??[];return l.length>0&&(r+=`<div class="ac-title">Related</div><div class="links-row"${fe("links")}>`,l.forEach((d,u)=>{const p=`<span class="lt">${S(d.mode??"")}</span>${S(d.label??"")}`;r+=d.ref!==void 0&&d.ref!==""?`<a class="link-chip" data-ref="${S(d.ref)}" href="#${S(x4(d.ref))}"${_(`links.${u}`)}>${p}</a>`:`<span class="link-chip"${_(`links.${u}`)}>${p}</span>`}),r+="</div>"),r}function F8(e){const n=(e.blocks??[]).map((s,o)=>{const r=(s.type??"p").toLowerCase(),i=s.text??"";if(r==="h")return`<h3${_(`blocks.${o}`)}>${vo(i)}</h3>`;if(r==="quote")return`<blockquote${_(`blocks.${o}`)}>${vo(i)}</blockquote>`;if(r==="ul"){const l=(s.items??[]).map((d,u)=>`<li${_(`blocks.${o}.items.${u}`)}>${vo(d)}</li>`).join("");return`<ul${_(`blocks.${o}`)}${fe(`blocks.${o}.items`)}>${l}</ul>`}if(r==="ol"){const l=(s.items??[]).map((d,u)=>`<li${_(`blocks.${o}.items.${u}`)}>${vo(d)}</li>`).join("");return`<ol${_(`blocks.${o}`)}${fe(`blocks.${o}.items`)}>${l}</ol>`}return`<p${_(`blocks.${o}`)}>${vo(i)}</p>`}).join("");return`<div class="prose"${fe("blocks")}>${n}</div>`}function q8(e,t){if(e===void 0||e.length===0)return"";const n=e.map((s,o)=>`<span${_(`terms.${t}.avoid.${o}`)}>${S(s)}</span>`).join(", ");return` <span class="avoid"${fe(`terms.${t}.avoid`)}>not: ${n}</span>`}function H8(e){const n=(e.terms??[]).map((s,o)=>`<div class="row"${_(`terms.${o}`)}><dt${_(`terms.${o}.term`)}>${S(s.term)}</dt><dd${_(`terms.${o}.def`)}>${S(s.def)}${q8(s.avoid,o)}</dd></div>`).join("");return`<div class="glossary"${fe("terms")}>${n}</div>`}function W8(e){const t=e.prosLabel??"Pros",n=e.consLabel??"Cons",s=(e.pros??[]).map((r,i)=>`<div class="pc-item"${_(`pros.${i}`)}>${S(r)}</div>`).join(""),o=(e.cons??[]).map((r,i)=>`<div class="pc-item"${_(`cons.${i}`)}>${S(r)}</div>`).join("");return`<div class="pc"><div class="pc-col pro"${fe("pros")}><div class="pc-head"${_("prosLabel")}>${S(t)}</div>`+s+`</div><div class="pc-col con"${fe("cons")}><div class="pc-head"${_("consLabel")}>${S(n)}</div>`+o+"</div></div>"}function U8(e){const t=e.current??{},n=e.target??{},s=(t.items??[]).map((d,u)=>`<div class="ct-item"${_(`current.items.${u}`)}>${S(d)}</div>`).join(""),o=(n.items??[]).map((d,u)=>`<div class="ct-item"${_(`target.items.${u}`)}>${S(d)}</div>`).join(""),r=t.label??"Current",i=n.label??"Target",l=e.note!==void 0?`<div class="tbl-note"${_("note")}>${S(e.note)}</div>`:"";return`<div><div class="ct"><div class="ct-panel cur"${_("current")}${fe("current.items")}><div class="ct-label"${_("current.label")}>${S(r)}</div>`+s+`</div><div class="ct-arrow">→</div><div class="ct-panel tgt"${_("target")}${fe("target.items")}><div class="ct-label"${_("target.label")}>${S(i)}</div>`+o+"</div></div>"+l+"</div>"}var K8={up:"▲",down:"▼",flat:"—"};function V8(e){const n=(e.stats??[]).map((s,o)=>{const r=s.accent!==void 0?` style="border-top-color:${Fi(s.accent,"var(--accent)")}"`:"",i=s.delta!==void 0?`<div class="stat-delta ${s.trend??"flat"}">${K8[s.trend??"flat"]} ${S(s.delta)}</div>`:"";return`<div class="stat-card"${r}${_(`stats.${o}`)}><div class="stat-value"${_(`stats.${o}.value`)}>${S(s.value)}</div><div class="stat-label"${_(`stats.${o}.label`)}>${S(s.label)}</div>`+i+"</div>"}).join("");return`<div class="stat-row"${fe("stats")}>${n}</div>`}var G8=new Set("const let var function return if else for while do switch case break continue class extends new await async import from export default try catch finally throw typeof instanceof void delete yield static public private protected readonly abstract implements interface type enum namespace def elif lambda pass with raise except none true false and or not is in self nil func struct map range defer chan select fallthrough echo fi done local require module package this super create table alter add drop select insert update delete into values where join group order by limit primary key foreign references not null default unique index on check constraint cascade returning begin commit rollback".split(/\s+/)),Y8=new Set("string number boolean int integer float double bool char byte long short void object any unknown never bigint promise array list set optional uuid text varchar timestamptz timestamp date numeric decimal jsonb json serial bigserial smallint".split(/\s+/)),Wu=/(\/\*[\s\S]*?\*\/|\/\/[^\n]*|#[^\n]*)|("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`)|(\b\d[\w.]*)|([A-Za-z_$][\w$]*)/g,X8=new Set(["md","markdown","mdx"]);function uh(e,t){if(e.length===0)return"";if(t!==void 0&&X8.has(t.trim().toLowerCase()))return Q8(String(e));const n=String(e);let s="",o=0;Wu.lastIndex=0;let r;for(;(r=Wu.exec(n))!==null;){r.index>o&&(s+=S(n.slice(o,r.index)));const i=r[0];if(r[1]!==void 0)s+=`<span class="com">${S(i)}</span>`;else if(r[2]!==void 0)s+=`<span class="str">${S(i)}</span>`;else if(r[3]!==void 0)s+=`<span class="num">${S(i)}</span>`;else{const l=i.toLowerCase();G8.has(l)?s+=`<span class="kw">${S(i)}</span>`:Y8.has(l)?s+=`<span class="ty">${S(i)}</span>`:n[Wu.lastIndex]==="("?s+=`<span class="fn">${S(i)}</span>`:s+=S(i)}o=Wu.lastIndex}return o<n.length&&(s+=S(n.slice(o))),s}var Pg=/(`[^`\n]+`)|(\*\*[^*\n]+\*\*|__[^_\n]+__)|(\*[^*\n]+\*|_[^_\n]+_)|(\[[^\]\n]+\]\([^)\n]+\))/g;function Bw(e){let t="",n=0;Pg.lastIndex=0;let s;for(;(s=Pg.exec(e))!==null;){s.index>n&&(t+=S(e.slice(n,s.index)));const o=s[0];if(s[1]!==void 0)t+=`<span class="str">${S(o)}</span>`;else if(s[2]!==void 0)t+=`<span class="fn">${S(o)}</span>`;else if(s[3]!==void 0)t+=`<span class="ty">${S(o)}</span>`;else{const r=/^(\[[^\]]+\])(\([^)]+\))$/.exec(o);r!==null?t+=`<span class="fn">${S(r[1]??"")}</span><span class="com">${S(r[2]??"")}</span>`:t+=S(o)}n=Pg.lastIndex}return n<e.length&&(t+=S(e.slice(n))),t}function Q8(e){const t=[];let n=!1;for(const s of e.split(`
|
|
2822
|
+
${o}`},link(e){const t=vf(e.href),n=e.title!==null&&e.title!==void 0?` title="${e.title}"`:"",s=this.parser.parseInline(e.tokens);return`<a href="${t}"${n}>${s}</a>`},image(e){const t=vf(e.href),n=e.title!==null&&e.title!==void 0?` title="${e.title}"`:"";return`<img src="${t}" alt="${e.text}"${n}>`}}});function m0(e){return`<div class="prose">${Fy.parse(e,{async:!1})}</div>`}function vo(e){const t=e.split(/\n{2,}/).map(s=>s.trim()).filter(s=>s!==""),n=s=>Fy.parseInline(s,{async:!1});return t.length<=1?n(t[0]??""):t.map(s=>`<p>${n(s)}</p>`).join("")}function p4(e){const t=e?.title??"Untitled",n=e?.tag??"",s=e?.subtitle,o=s!==void 0?`<p class="cover-sub">${S(s)}</p>`:"";return'<div class="cover-pad">'+(e?.logo!==void 0&&e.logo!==""?`<img class="cover-logo" src="${S(vf(e.logo))}" alt="${S(t)}">`:"")+`<div class="cover-meta"><span>DOCUMENT</span><span class="accent">${S(n)}</span></div><h1 class="cover-title">${S(t)}</h1>`+o+"</div>"}function JB(){return""}function _(e){return` data-bp="${S(e)}"`}function fe(e){return` data-bl="${S(e)}"`}var e8=1600,t8=/<svg\b[^>]*\bviewBox="-?[\d.]+ -?[\d.]+ ([\d.]+) [\d.]+"[^>]*>/;function n8(e){const t=t8.exec(e);if(t===null||t[1]===void 0)return e;const n=t[0];if(n.includes(" style="))return e;const s=Math.ceil(Number(t[1]));if(!Number.isFinite(s)||s<=0)return e;const o=e.indexOf("</svg>",t.index+n.length);if(o<0)return e;const r=s>e8,i=r?`${n.slice(0,-1)} style="width:calc(${s}px * var(--scale,1));max-width:none">`:`${n.slice(0,-1)} style="max-width:min(100%,calc(${s}px * var(--scale,1)))">`,l=o+6;return e.slice(0,t.index)+`<div class="diagram-stage${r?" diagram-stage--wide":""}">`+i+e.slice(t.index+n.length,l)+"</div>"+e.slice(l)}function lt(e,t){const n=e.tagClass!==void 0?` ${e.tagClass}`:"",s=e.method!==void 0&&e.method.length>0?`<span class="diagram-tag-sep">·</span><span class="diagram-tag-method${n}">${S(e.method)}</span>`:"",o=e.path!==void 0&&e.path.length>0?`<span class="diagram-tag-path">${S(e.path)}</span>`:"",r=`<span class="diagram-eyebrow t-eyebrow"><span class="diagram-tag${n}">${S(e.tag)}</span>`+s+o+"</span>",i=e.titleHtml!==void 0?`<span class="diagram-title">${e.titleHtml}</span>`:e.title!==void 0&&e.title.length>0?`<span class="diagram-title">${S(e.title)}</span>`:"",l=e.fignum!==void 0&&e.fignum.length>0?`<span class="diagram-fignum">${S(e.fignum)}</span>`:"",d=e.desc!==void 0&&e.desc.length>0?`<p class="diagram-desc"${_("description")}>${S(e.desc)}</p>`:"",u=e.legendHtml??"",p=e.footerHtml??"";return'<div class="diagram"><div class="diagram-head">'+r+i+l+"</div>"+d+n8(t)+u+p+"</div>"}var s8={meta:"",callout:"Note",table:"Comparison",sequence:"Sequence",erd:"Entity model",userstory:"User story",timeline:"Roadmap",kanban:"Board",prose:"Overview",glossary:"Glossary",proscons:"Trade-offs",cvt:"Before / after",stats:"Metrics",code:"Code",agenda:"Agenda",tree:"Hierarchy",pyramid:"Pyramid",flow:"Flowchart",state:"State machine",dfd:"Data flow",journey:"Journey",gantt:"Schedule",graph:"Graph",quadrant:"Matrix",swimlane:"Process",c4:"C4 model",uml:"Class model",frontend:"Component tree",cluster:"Cluster",block:"Architecture",felogic:"Frontend logic",wireframe:"Mockup",endpoint:"API endpoint",pullquote:"Quote",layers:"Layers",matrix:"Capability matrix",anatomy:"Anatomy",composition:"Composition",drivers:"Drivers",options:"Options",spec:"Spec",list:"List",stories:"User stories",pattern:"Pattern",gallery:"Gallery",chart:"Chart",figure:"Figure",steps:"Steps",faq:"FAQ",envelope:"Capacity math",slo:"Service objectives",swot:"SWOT",okr:"Objectives",persona:"Personas",changelog:"Changelog",team:"Team",heatmap:"Heatmap",scorecard:"Decision matrix",risk:"Risk register",palette:"Palette",typescale:"Type scale",dodont:"Guidelines",inventory:"Inventory",array:"Array",linkedlist:"Linked list",bintree:"Binary tree",hashmap:"Hash map",agentloop:"Agent loop",trace:"Trace",prompt:"Prompt",context:"Context window",archmap:"Architecture map",divider:"Divider",bignumber:"Big number",takeaways:"Takeaways",statustable:"Status",cycle:"Cycle",benchmark:"Benchmark",sankey:"Flow volumes",gitgraph:"Branch model",treemap:"Composition",packet:"Wire format",venn:"Overlap",wardley:"Strategy map",harvey:"Comparison",scqa:"Summary",scenarios:"Scenarios",fishbone:"Cause & effect",storymap:"Story map",eventcontract:"Event contract",saga:"Saga",slopegraph:"Before / after",spans:"Trace",rollout:"Rollout",perfbudget:"Performance budget",percentiles:"Latency percentiles",timing:"Timing diagram",threatmodel:"Threat model",neuralnet:"Neural net",mindmap:"Mind map",usecase:"Use cases",pkg:"Packages",audit:"Audit findings",checklist:"Checklist",modelcard:"Model card",chevrons:"Process",roadmap:"Roadmap"};function Sw(e){if(e.sourceType!==void 0){const t=io[e.sourceType];if(t!==void 0)return t.sectionLabel}return s8[e.kind]}var Ew={note:"Note",tip:"Tip",warn:"Warning",danger:"Danger",success:"Success"};function o8(e){const t=e.tone??"note",n=e.title??Ew[t]??Ew.note,s=e.body??"";return`<div class="callout ${t}"><div class="callout-title"${_("title")}>${S(n)}</div><div class="callout-body"${_("body")}>${vo(s)}</div></div>`}var yn=30,Cn=14;function r8(e,t,n,s){return s?`<path d="M${e-6},${t-3} L${e},${t} L${e-6},${t+3} z" fill="${n}"/>`:`<path d="M${e-6},${t-3} L${e},${t} L${e-6},${t+3}" fill="none" stroke="${n}" stroke-width="1.2"/>`}function $r(e,t,n,s){const o=Cn/2,r=n.length>0?` stroke-dasharray="${n}"`:"";return`<line x1="1" y1="${o}" x2="${yn-7}" y2="${o}" stroke="${e}" stroke-width="${t}"${r}/>`+r8(yn-1,o,e,s)}function pi(e,t,n,s){const o=s.length>0?` stroke-dasharray="${s}"`:"";return`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" rx="2" fill="${n}" stroke="${e}" stroke-width="${t}"${o}/>`}function i8(e,t,n,s){let o;switch(e){case"node-dot":{const r=s!==void 0&&s.length>0?` stroke-dasharray="${s}"`:"";o=`<circle cx="${yn/2}" cy="${Cn/2}" r="5.5" fill="${t??"var(--paper)"}" stroke="${n??"var(--ink)"}" stroke-width="1.5"${r}/>`;break}case"line":o=`<line x1="1" y1="${Cn/2}" x2="${yn-1}" y2="${Cn/2}" stroke="${n??"var(--muted)"}" stroke-width="1.25"/>`;break;case"line-dashed":o=`<line x1="1" y1="${Cn/2}" x2="${yn-1}" y2="${Cn/2}" stroke="${n??"var(--muted)"}" stroke-width="1.25" stroke-dasharray="5 4"/>`;break;case"node-accent-outline":o=pi("var(--accent)",1.5,"var(--paper)","");break;case"fill":o=pi("var(--rule-solid)",1,t??"var(--ink)","");break;case"node":o=pi("var(--ink)",1.5,"var(--paper)","");break;case"node-accent":o=pi("var(--accent)",1.5,"var(--accent-tint)","");break;case"node-dashed":o=pi("var(--ink)",1.25,"var(--paper)","4 3");break;case"node-fill2":o=pi("var(--rule-solid)",1,"var(--paper-2)","");break;case"edge":o=$r("var(--muted)",1.5,"",!0);break;case"edge-dashed":o=$r("var(--muted)",1.5,"5 4",!1);break;case"edge-async":o=$r("var(--muted)",1.25,"2 3",!1);break;case"edge-error":o=$r("var(--negative)",1.5,"",!0);break;case"edge-accent":o=$r("var(--accent)",1.75,"",!0);break;case"edge-link":o=$r("var(--link)",1.5,"",!0);break;case"edge-accent-dashed":o=$r("var(--accent)",1.75,"5 4",!1);break;case"edge-negative-dashed":o=$r("var(--negative)",1.5,"5 4",!0);break;case"edge-implements":{const r=Cn/2;o=`<line x1="1" y1="${r}" x2="${yn-8}" y2="${r}" stroke="var(--muted)" stroke-width="1.5" stroke-dasharray="5 4"/><path d="M${yn-8},${r-4} L${yn-1},${r} L${yn-8},${r+4} z" fill="var(--paper)" stroke="var(--ink)" stroke-width="1.2"/>`;break}case"line-dot":case"line-dot-accent":{const r=Cn/2,i=e==="line-dot"?"var(--muted)":"var(--accent)";o=`<line x1="1" y1="${r}" x2="${yn-1}" y2="${r}" stroke="${i}" stroke-width="${e==="line-dot"?1.5:1.75}"/><circle cx="${yn/2}" cy="${r}" r="3.5" fill="${i}"/>`;break}case"node-store":o=`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" fill="var(--paper-2)"/><path d="M${yn-1},1 H1 V${Cn-1} H${yn-1}" fill="none" stroke="var(--rule-solid)" stroke-width="1"/>`;break;case"node-stadium":o=`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" rx="${(Cn-2)/2}" fill="var(--paper)" stroke="var(--ink)" stroke-width="1.5"/>`;break;case"node-stadium-fill2":o=`<rect x="1" y="1" width="${yn-2}" height="${Cn-2}" rx="${(Cn-2)/2}" fill="var(--paper-2)" stroke="var(--rule-solid)" stroke-width="1"/>`;break;case"node-negative":o=pi("var(--negative)",1.5,"var(--negative-tint)","");break;case"chip":return""}return`<svg class="lg-sw" viewBox="0 0 ${yn} ${Cn}" width="${yn}" height="${Cn}" aria-hidden="true">${o}</svg>`}function ot(e,t){if(e.length<2)return"";const n=e.map(o=>{const r=o.swatch==="chip"?`<span class="lg-chip t-eyebrow">${S(o.chip??"")}</span>`:i8(o.swatch,o.fill,o.stroke,o.dash);return`<span class="lg-item"${o.path!==void 0?_(o.path):""}>${r}<span class="lg-label">${S(o.label)}</span></span>`}).join("");return`<div class="diagram-legend"${t!==void 0?fe(t):""}><span class="lg-title t-eyebrow">Legend</span>${n}</div>`}function wt(e,t,n=`${t}s`){return`${e} ${e===1?t:n}`}function qy(e,t,n=[]){const s=(t??"").trim(),o=[...s!==""?[s]:[],...n.filter(r=>r.trim()!=="")];return o.length===0?e:`${e}: ${o.join(", ")}`}function a8(e){return` role="img" aria-label="${S(e)}"`}function l8(e){return`<title>${S(e)}</title>`}function Sn(e,t,n=[]){const s=qy(e,t,n);return{name:s,attrs:a8(s),title:l8(s)}}var ut=' data-decorative="1"',zr=20,Rc=40,f4=6,Bn=12,Ha=6.2,h4=7.4,c8=150,ic=28,Hu=64,$a=14,Sa=14,Mw=18,Ea=18,Hy=7;function d8(e){const t=e.entities??[],n=e.relations??[],s=e.groups??[],o=e.enums??[],r=e.dir!=="TB",i=t.map((he,ge)=>u8(he,ge)),l=new Map;for(const he of i)l.set(he.name,he),he.entity.schema!==void 0&&l.set(`${he.entity.schema}.${he.name}`,he);const d=[];n.forEach((he,ge)=>{const Ne=l.get(he.from),Fe=l.get(he.to);if(Ne===void 0||Fe===void 0)return;const We=g8(he.card);d.push({r:he,idx:ge,from:Ne,to:Fe,...We,dashed:he.identifying===!1})});const u=new Map,p=new Map;for(const he of d)he.toMany||u.set(he.to.name,(u.get(he.to.name)??0)+1),he.fromMany||u.set(he.from.name,(u.get(he.from.name)??0)+1),p.set(he.from.name,(p.get(he.from.name)??0)+1),he.to!==he.from&&p.set(he.to.name,(p.get(he.to.name)??0)+1);let h,m=0,g=!1;for(const[he,ge]of u)ge>m?(m=ge,h=he,g=!1):ge===m&&(g=!0);g&&(h=void 0);const v=[],y=new Map,b=[];for(const he of s){const ge=(he.entities??[]).filter(Fe=>l.has(Fe)&&!y.has(l.get(Fe)?.name??Fe));if(ge.length===0)continue;const Ne=v.length;v.push(he.name),b.push(!0);for(const Fe of ge)y.set(l.get(Fe)?.name??Fe,Ne)}for(const he of i){if(y.has(he.name)||he.entity.schema===void 0)continue;let ge=v.indexOf(he.entity.schema);(ge===-1||!b[ge])&&(ge=v.length,v.push(he.entity.schema),b.push(!0)),y.set(he.name,ge)}const E=i.filter(he=>!y.has(he.name));if(E.length>0){const he=v.length;v.push(""),b.push(!1);for(const ge of E)y.set(ge.name,he)}const $=i.map((he,ge)=>({box:he,band:y.get(he.name)??0,layer:0,order:ge,u:0,v:0,du:r?he.w:he.h,dv:r?he.h:he.w})),A=new Map($.map(he=>[he.box.name,he])),T=new Map;for(const he of $)T.set(he.box.name,new Set);for(const he of d)he.from!==he.to&&(T.get(he.from.name)?.add(he.to.name),T.get(he.to.name)?.add(he.from.name));m8($,T,p,h,A);const N=[...new Set($.map(he=>he.layer))].sort((he,ge)=>he-ge),P=N[0]??0,j=N[N.length-1]??0,I=[],D=new Map,C=(he,ge)=>{const Ne=D.get(he)??[];Ne.push(ge),D.set(he,Ne)};let R=0;for(const he of d){const ge=A.get(he.from.name),Ne=A.get(he.to.name);if(ge===void 0||Ne===void 0)continue;const Fe=ge===Ne,We=ge.layer,ze=Ne.layer;let Xe,pt,kt=!1;Fe?Xe=pt=We:We<ze?(Xe=We,pt=ze-1,kt=ze-We>1):We>ze?(Xe=We-1,pt=ze,kt=We-ze>1):Xe=pt=We;const St={rel:he,src:ge,dst:Ne,g1:Xe,g2:pt,long:kt,self:Fe,slot1:0,slot2:0,channel:kt?R++:-1};I.push(St),Fe||(C(Xe,St),kt&&C(pt,St))}const F=new Map;for(let he=P;he<=j;he++){const ge=D.get(he)?.length??0;F.set(he,Math.max(he===j?ge>0?(ge+1)*$a:0:Hu,(ge+1)*$a))}const U=R>0?R*$a+8:0,Y=new Map,B=new Map,te=[],ee=()=>{let he=Ea;for(let Fe=P;Fe<=j;Fe++){const We=Math.max(0,...$.filter(ze=>ze.layer===Fe).map(ze=>ze.du));Y.set(Fe,he),B.set(Fe,We),he+=We+(F.get(Fe)??Hu)}let ge=Ea+U;te.length=0;let Ne=!1;v.forEach((Fe,We)=>{const ze=$.filter(ct=>ct.band===We),Xe=b[We]===!0;if(ze.length===0){te.push({top:ge,bottom:ge,minL:0,maxL:0});return}const pt=ge+(We>0?(Ne?Sa:0)+ic:0)+(Xe?Sa+Mw:0);let kt=0;const St=new Map;for(const ct of ze){const _t=St.get(ct.layer)??[];_t.push(ct),St.set(ct.layer,_t)}for(const ct of St.values())ct.sort((_t,En)=>_t.order-En.order),kt=Math.max(kt,ct.reduce((_t,En)=>_t+En.dv,0)+ic*(ct.length-1));let Nt=1/0,Bt=-1/0;for(const[ct,_t]of St){const En=_t.reduce((Et,an)=>Et+an.dv,0)+ic*(_t.length-1);let zt=pt+(kt-En)/2;for(const Et of _t)Et.u=(Y.get(ct)??0)+((B.get(ct)??Et.du)-Et.du)/2,Et.v=zt,zt+=Et.dv+ic;Nt=Math.min(Nt,ct),Bt=Math.max(Bt,ct)}te.push({top:pt,bottom:pt+kt,minL:Nt,maxL:Bt}),ge=pt+kt,Ne=Xe})};ee();const H=[...N].sort((he,ge)=>Math.abs(he)-Math.abs(ge)||he-ge),W=(he,ge)=>{for(const Ne of he){const Fe=ge(Ne);for(const We of $){if(We.layer!==Ne)continue;const ze=[...T.get(We.box.name)??[]].map(Xe=>A.get(Xe)).filter(Xe=>Xe!==void 0&&Xe.layer===Fe);ze.length!==0&&(We.order=ze.reduce((Xe,pt)=>Xe+pt.v+pt.dv/2,0)/ze.length)}}ee()};W(H,he=>he>0?he-1:he<0?he+1:he),W([...H].reverse(),he=>he>=0?he+1:he-1),W(H,he=>he>0?he-1:he<0?he+1:he);for(const[he,ge]of D){const Ne=(Y.get(he)??0)+(B.get(he)??0),Fe=F.get(he)??Hu;ge.sort((We,ze)=>Lw(We.src,We.dst)-Lw(ze.src,ze.dst)),ge.forEach((We,ze)=>{const Xe=Ne+(ze+1)*Fe/(ge.length+1);We.g1===he&&We.slot1===0&&(We.slot1=Xe),We.long&&We.g2===he&&(We.slot2=Xe),We.long||(We.slot2=We.slot1)})}const V=(he,ge)=>r?he:ge,O=(he,ge)=>r?ge:he,z=he=>he.map(([ge,Ne],Fe)=>`${Fe===0?"M":"L"}${nt(V(ge,Ne))},${nt(O(ge,Ne))}`).join(" ");let X=0,K=0;const se=(he,ge)=>{X=Math.max(X,he),K=Math.max(K,ge)};for(const he of $)se(V(he.u+he.du,he.v+he.dv),O(he.u+he.du,he.v+he.dv));let Q="",re=!1;Q+=`<g${fe("groups")}>`,v.forEach((he,ge)=>{if(b[ge]!==!0)return;const Ne=te[ge];if(Ne===void 0||Ne.top===Ne.bottom)return;re=!0;const Fe=(Y.get(Ne.minL)??0)-Sa,We=(Y.get(Ne.maxL)??0)+(B.get(Ne.maxL)??0)+Sa,ze=Ne.top-Sa-Mw,Xe=Ne.bottom+Sa,pt=V(Fe,ze),kt=O(Fe,ze),St=V(We,Xe)-pt,Nt=O(We,Xe)-kt;se(pt+St,kt+Nt);const Bt=s.findIndex(ct=>ct.name===he);Q+=`<g${Bt>=0?_(`groups.${Bt}`):""}><rect x="${nt(pt)}" y="${nt(kt)}" width="${nt(St)}" height="${nt(Nt)}" rx="8" class="er-panel"/><text x="${nt(pt+12)}" y="${nt(kt+13)}" class="t-eyebrow er-panel-tab">${S(he.toUpperCase())}</text></g>`}),Q+="</g>";const Z=[];let q=!1,de=!1;Q+=`<g${fe("relations")}>`;for(const he of I){const{rel:ge,src:Ne,dst:Fe}=he;q=!0,ge.dashed&&(de=!0);const We=ge.fromMany&&!ge.toMany?!0:!ge.fromMany&&ge.toMany?!1:Nw(ge.from,ge.to,ge.r.fromCol)||!Nw(ge.to,ge.from,ge.r.toCol),ze=ge.fromMany&&ge.toMany,Xe=ze?Ne.v+Ne.dv/2:_w(Ne,r,We?v0(ge.from,ge.to,ge.r.fromCol):Tw(ge.from,ge.r.fromCol)),pt=ze?Fe.v+Fe.dv/2:_w(Fe,r,We?Tw(ge.to,ge.r.toCol):v0(ge.to,ge.from,ge.r.toCol)),kt=Ne.layer,St=Fe.layer;let Nt,Bt,ct,_t;if(he.self){const zt=Ne.u+Ne.du,Et=Math.abs(pt-Xe)<1?Xe+zr:pt,an=zt+$a;Nt=z([[zt,Xe],[an,Xe],[an,Et],[zt,Et]]),Bt=1,ct=-1,_t=[an+8,Math.max(Xe,Et)+12]}else if(kt===St){const zt=Math.max(Ne.u+Ne.du,Fe.u+Fe.du),Et=he.slot1>0?he.slot1:zt+$a;Nt=z([[Ne.u+Ne.du,Xe],[Et,Xe],[Et,pt],[Fe.u+Fe.du,pt]]),Bt=1,ct=-1,_t=[Et,(Xe+pt)/2]}else{const zt=kt<St,Et=zt?Ne.u+Ne.du:Ne.u,an=zt?Fe.u:Fe.u+Fe.du;if(Bt=zt?1:-1,ct=zt?1:-1,!he.long)Nt=z([[Et,Xe],[he.slot1,Xe],[he.slot1,pt],[an,pt]]),_t=[he.slot1,Math.abs(Xe-pt)<zr*2?Math.max(Xe,pt)+12:(Xe+pt)/2];else{const _n=Ea+he.channel*$a+4;Nt=z([[Et,Xe],[he.slot1,Xe],[he.slot1,_n],[he.slot2,_n],[he.slot2,pt],[an,pt]]),_t=[(he.slot1+he.slot2)/2,_n]}}const En=ge.dashed?' stroke-dasharray="5 4"':"";if(Q+=`<g${_(`relations.${ge.idx}`)}><path d="${Nt}" fill="none" stroke="var(--muted)" stroke-width="1.25"${En}/>`+jw(he.self||Bt>0?Ne.u+Ne.du:Ne.u,Xe,Bt,Iw(ge.fromMany,!1),r,V,O)+jw(he.self||kt===St?Fe.u+Fe.du:ct>0?Fe.u:Fe.u+Fe.du,pt,he.self||kt===St?1:-ct,Iw(ge.toMany,ge.toOptional),r,V,O)+"</g>",ge.r.label!==void 0&&ge.r.label!==""){const zt=ge.r.label.toUpperCase(),Et=Math.round(zt.length*Ha+8),an=V(_t[0],_t[1]),_n=O(_t[0],_t[1]);Z.push(`<rect x="${nt(an-Et/2)}" y="${nt(_n-7)}" width="${Et}" height="14" fill="var(--paper)"/><text x="${nt(an)}" y="${nt(_n+3.5)}" class="t-arrow er-rel" text-anchor="middle">${S(zt)}</text>`),se(an+Et/2,_n+7)}}Q+="</g>";const le=new Set;let J=!1;const ue=new Set;Q+=`<g${fe("entities")}>`;for(const he of $){const ge=he.box,Ne=V(he.u,he.v),Fe=O(he.u,he.v),We=ge.name===h,ze=We?"AGGREGATE ROOT":ge.kind==="view"?"VIEW":ge.kind==="enum"?"ENUM":ge.kind==="external"?"EXT":ge.join?"JOIN":"ENTITY";ge.join&&!We&&ge.kind==="table"&&(J=!0),ge.kind!=="table"&&ue.add(ge.kind);const Xe=ge.kind==="view"||ge.kind==="enum",pt=We?"var(--accent)":Xe?"var(--rule-solid)":"var(--ink)",kt=We?"var(--accent-tint)":ge.kind==="view"?"var(--paper-2)":"var(--paper)",St=Xe?1:1.5,Nt=ge.kind==="external"?' stroke-dasharray="4 3"':"";Q+=`<g${_(`entities.${ge.idx}`)}><rect x="${nt(Ne)}" y="${nt(Fe)}" width="${ge.w}" height="${ge.h}" rx="6" fill="${kt}" stroke="${pt}" stroke-width="${St}"${Nt}/><text x="${nt(Ne+Bn)}" y="${nt(Fe+15)}" class="er-eyebrow t-eyebrow${We?" c-accent":""}">${ze}</text><text x="${nt(Ne+Bn)}" y="${nt(Fe+31)}" class="er-head-text t-name">${S(ge.name)}</text>`,ge.headLines.forEach((ct,_t)=>{Q+=`<text x="${nt(Ne+Bn)}" y="${nt(Fe+44+_t*13)}" class="er-col dim t-sub c-soft">${S(ct)}</text>`}),(ge.rows.length>0||ge.headLines.length>0)&&(Q+=`<line x1="${nt(Ne)}" y1="${nt(Fe+ge.headH)}" x2="${nt(Ne+ge.w)}" y2="${nt(Fe+ge.headH)}" class="er-headline"/>`),Q+=`<g${fe(`entities.${ge.idx}.columns`)}>`;let Bt=-1;ge.rows.forEach((ct,_t)=>{const En=Fe+ge.headH+_t*zr,zt=En+14;ct.kind==="col"?(Bt>=0&&(Q+="</g>"),Bt=ct.colIdx,Q+=`<g${_(`entities.${ge.idx}.columns.${ct.colIdx}`)}>`,ct.note!==void 0&&(Q+=`<title>${S(ct.note)}</title>`),_t>0&&(Q+=`<line x1="${nt(Ne+1)}" y1="${nt(En)}" x2="${nt(Ne+ge.w-1)}" y2="${nt(En)}" class="er-rowline"${ut}/>`),ct.markers.forEach((Et,an)=>{le.add(Et),Q+=`<text x="${nt(Ne+Bn+an*Hy)}" y="${nt(zt)}" class="er-key ${f8(Et)} t-sub c-muted">${S(Et)}</text>`}),Q+=`<text x="${nt(Ne+Bn+Aw(ge))}" y="${nt(zt)}" class="er-col t-sub c-ink">${S(ct.left)}</text>`+(ct.right.length>0?`<text x="${nt(Ne+ge.w-Bn)}" y="${nt(zt)}" class="er-col dim t-sub c-soft" text-anchor="end">${S(ct.right)}</text>`:"")):Q+=`<text x="${nt(Ne+Bn+Aw(ge))}" y="${nt(zt)}" class="er-col dim t-sub c-soft">${S(ct.left)}</text>`}),Bt>=0&&(Q+="</g>"),Q+="</g></g>"}Q+="</g>";const ve=o.map((he,ge)=>p8(he.name,he.values,ge));if(ve.length>0){const he=X+Hu;let ge=Ea+U;Q+=`<g${fe("enums")}>`;for(const Ne of ve)Q+=`<g${_(`enums.${Ne.idx}`)}><rect x="${nt(he)}" y="${nt(ge)}" width="${Ne.w}" height="${Ne.h}" rx="6" fill="var(--paper)" stroke="var(--rule-solid)" stroke-width="1"/><text x="${nt(he+Bn)}" y="${nt(ge+15)}" class="er-eyebrow t-eyebrow">ENUM</text><text x="${nt(he+Bn)}" y="${nt(ge+31)}" class="er-head-text t-name">${S(Ne.name)}</text><line x1="${nt(he)}" y1="${nt(ge+Rc)}" x2="${nt(he+Ne.w)}" y2="${nt(ge+Rc)}" class="er-headline"/>`,Ne.values.forEach((Fe,We)=>{const ze=ge+Rc+We*zr;We>0&&(Q+=`<line x1="${nt(he+1)}" y1="${nt(ze)}" x2="${nt(he+Ne.w-1)}" y2="${nt(ze)}" class="er-rowline"${ut}/>`),Q+=`<text x="${nt(he+Bn)}" y="${nt(ze+14)}" class="er-col t-sub c-ink">${S(Fe)}</text>`}),Q+="</g>",se(he+Ne.w,ge+Ne.h),ge+=Ne.h+ic;Q+="</g>"}Q+=Z.join("");const we=Math.ceil(X+Ea),$e=Math.ceil(K+Ea),je=Sn("Entity relationship diagram",e.title,[wt(t.length,"entity","entities")]),De=`<svg viewBox="0 0 ${we} ${$e}"${je.attrs}>`+je.title+Q+"</svg>",Me=[];le.has("#")&&Me.push({swatch:"chip",chip:"#",label:"primary key"}),le.has("→")&&Me.push({swatch:"chip",chip:"→",label:"foreign key"}),le.has("U")&&Me.push({swatch:"chip",chip:"U",label:"unique"}),le.has("?")&&Me.push({swatch:"chip",chip:"?",label:"nullable"}),le.has("⌘")&&Me.push({swatch:"chip",chip:"⌘",label:"indexed"}),q&&Me.push({swatch:"chip",chip:"1 / N",label:"cardinality"}),de&&(Me.push({swatch:"line",label:"identifying"}),Me.push({swatch:"line-dashed",label:"non-identifying"})),J&&Me.push({swatch:"chip",chip:"JOIN",label:"join table"}),ue.has("view")&&Me.push({swatch:"node-fill2",label:"view"}),(ue.has("enum")||ve.length>0)&&Me.push({swatch:"chip",chip:"ENUM",label:"enum"}),ue.has("external")&&Me.push({swatch:"node-dashed",label:"external"}),re&&Me.push({swatch:"node-fill2",label:"schema group"}),h!==void 0&&Me.push({swatch:"node-accent",label:"aggregate root"});const Be=ot(Me),Ke={tag:"ER",...e.title!==void 0?{title:e.title}:{},...e.description!==void 0?{desc:e.description}:{},...Be.length>0?{legendHtml:Be}:{}};return lt(Ke,De)}function u8(e,t){const n=e.columns??[],s=e.kind??"table",o=Math.max(0,...n.map(m=>g0(m).length)),r=o>0?o*Hy+6:0;let i=Math.max(c8,e.name.length*h4+Bn*2+24);const l=n.map(m=>h8(m));n.forEach((m,g)=>{i=Math.max(i,Bn*2+r+m.name.length*Ha+16+(l[g]?.length??0)*Ha)});const d=i-Bn*2-r,u=[];n.forEach((m,g)=>{if(u.push({kind:"col",col:m,colIdx:g,markers:g0(m),left:m.name,right:l[g]??"",...m.note!==void 0&&m.note.length>0?{note:m.note}:{}}),m.enum!==void 0&&m.enum.length>0)for(const v of Cw(m.enum.join(" · "),Math.max(24,Math.floor(d/Ha))))u.push({kind:"sub",colIdx:g,markers:[],left:v,right:""})});const p=e.note!==void 0&&e.note.length>0?Cw(e.note,Math.max(24,Math.floor((i-Bn*2)/Ha))):[],h=Rc+(p.length>0?p.length*13+2:0);return{name:e.name,idx:t,entity:e,cols:n,rows:u,headLines:p,headH:h,pkIdx:n.findIndex(m=>m.pk===!0),join:n.length>0&&n.every(m=>m.fk===!0),kind:s,w:Math.round(i),h:h+u.length*zr+(u.length>0?f4:0)}}function p8(e,t,n){const s=Math.round(Math.max(120,e.length*h4+Bn*2+12,...t.map(o=>o.length*Ha+Bn*2)));return{idx:n,name:e,values:t,w:s,h:Rc+t.length*zr+(t.length>0?f4:0)}}function g0(e){const t=[];return e.pk===!0&&t.push("#"),e.fk===!0&&t.push("→"),e.unique===!0&&t.push("U"),e.nullable===!0&&t.push("?"),e.index===!0&&t.push("⌘"),t}function f8(e){return e==="#"?"pk":e==="→"?"fk":e==="U"?"uk":e==="?"?"nul":"ix"}function Aw(e){const t=Math.max(0,...e.cols.map(n=>g0(n).length));return t>0?t*Hy+6:0}function h8(e){const t=[];return e.type!==void 0&&e.type.length>0&&t.push(e.type),e.ref!==void 0&&e.ref.length>0&&t.push(`→ ${e.ref}`),e.default!==void 0&&e.default.length>0&&t.push(`= ${e.default}`),t.join(" ")}function Cw(e,t){const n=[];let s="";for(const o of e.split(/\s+/).filter(r=>r.length>0))for(s.length===0?s=o:s.length+1+o.length<=t?s+=" "+o:(n.push(s),s=o);s.length>t;)n.push(s.slice(0,t)),s=s.slice(t);return s.length>0&&n.push(s),n}function m8(e,t,n,s,o){const r=new Set,i=[];for(const u of e){if(r.has(u.box.name)||(t.get(u.box.name)?.size??0)===0)continue;const p=[],h=[u];for(r.add(u.box.name);h.length>0;){const m=h.shift();p.push(m);for(const g of t.get(m.box.name)??[]){if(r.has(g))continue;r.add(g);const v=o.get(g);v!==void 0&&h.push(v)}}i.push(p)}i.sort((u,p)=>{const h=s!==void 0&&u.some(g=>g.box.name===s)?1:0;return(s!==void 0&&p.some(g=>g.box.name===s)?1:0)-h||p.length-u.length}),i.forEach((u,p)=>{const h=u.find(E=>E.box.name===s)??u.reduce((E,$)=>(n.get($.box.name)??0)>(n.get(E.box.name)??0)?$:E,u[0]),m=new Map([[h.box.name,0]]),g=[h];for(;g.length>0;){const E=g.shift(),$=m.get(E.box.name)??0;for(const A of t.get(E.box.name)??[]){if(m.has(A))continue;m.set(A,$+1);const T=o.get(A);T!==void 0&&g.push(T)}}const v=new Map,y=[];for(const E of u){if(E===h||v.has(E.box.name))continue;const $=[],A=[E.box.name];for(v.set(E.box.name,y.length);A.length>0;){const T=A.shift();$.push(T);for(const N of t.get(T)??[])N===h.box.name||v.has(N)||(v.set(N,y.length),A.push(N))}y.push($)}const b=y.map(()=>1);if(p===0&&y.length>1){const E=y.map((T,N)=>({i:N,size:T.length})).sort((T,N)=>N.size-T.size||T.i-N.i);let $=0,A=0;for(const{i:T,size:N}of E)A<=$?(b[T]=1,A+=N):(b[T]=-1,$+=N)}for(const E of u){const $=m.get(E.box.name)??0,A=v.get(E.box.name);E.layer=A===void 0?0:(b[A]??1)*$}});const l=e.filter(u=>!r.has(u.box.name));if(l.length===0)return;const d=[...new Set(e.filter(u=>r.has(u.box.name)).map(u=>u.layer))].sort((u,p)=>u-p);if(d.length===0){l.forEach((u,p)=>{u.layer=p%4});return}l.forEach((u,p)=>{u.layer=d[p%d.length]??0})}function Nw(e,t,n){return v0(e,t,n)>=0}function v0(e,t,n){if(n!==void 0){const d=e.cols.findIndex(u=>u.name===n);if(d>=0)return Dc(e,d)}const s=t.name.toLowerCase(),o=s.replace(/s$/,""),r=e.cols.map((d,u)=>({c:d,i:u})).filter(d=>d.c.fk===!0),i=r.find(d=>{const u=d.c.ref?.toLowerCase()??"";return u.startsWith(s+".")||u===s||u.startsWith(t.name.toLowerCase())});if(i!==void 0)return Dc(e,i.i);const l=r.find(d=>{const u=d.c.name.toLowerCase();return u.includes(s)||u.includes(o)});return l!==void 0?Dc(e,l.i):-1}function Tw(e,t){if(t!==void 0){const n=e.cols.findIndex(s=>s.name===t);if(n>=0)return Dc(e,n)}return e.pkIdx>=0?Dc(e,e.pkIdx):-1}function Dc(e,t){return e.rows.findIndex(n=>n.kind==="col"&&n.colIdx===t)}function _w(e,t,n){return!t||n<0?e.v+e.dv/2:e.v+e.box.headH+n*zr+zr/2}function Lw(e,t){return(e.v+e.dv/2+t.v+t.dv/2)/2}function g8(e){if(e===void 0)return{fromMany:!0,toMany:!1,toOptional:!1};if(e==="0..1")return{fromMany:!1,toMany:!1,toOptional:!0};if(e==="0..N")return{fromMany:!1,toMany:!0,toOptional:!0};const t=e.split(":"),n=s=>s!==void 0&&s.trim().toUpperCase()!=="1";return{fromMany:n(t[0]),toMany:n(t[1]),toOptional:!1}}function Iw(e,t){return t?e?"0..N":"0..1":e?"N":"1"}function jw(e,t,n,s,o,r,i){const l=e+n*10,d=r(l,t),u=i(l,t);if(o){const p=n>0?"start":"end";return`<text x="${nt(d)}" y="${nt(u-4)}" class="t-arrow er-card" text-anchor="${p}">${S(s)}</text>`}return`<text x="${nt(d+4)}" y="${nt(u+3)}" class="t-arrow er-card" text-anchor="start">${S(s)}</text>`}var nt=e=>Math.round(e*10)/10;function v8(e){const t=e.columns??[];let n=`<div class="kanban"${fe("columns")}>`;return t.forEach((s,o)=>{const r=(s.cards??[]).map((i,l)=>{const d=i.tag!==void 0?`<div class="kan-card-tag">${S(i.tag)}</div>`:"";return`<div class="kan-card"${_(`columns.${o}.cards.${l}`)}><div class="kan-card-title">${S(i.title)}</div>`+d+"</div>"}).join("");n+=`<div class="kan-col"${_(`columns.${o}`)}${fe(`columns.${o}.cards`)}><div class="kan-head"${_(`columns.${o}.label`)}>${S(s.label)}</div>`+r+"</div>"}),n+"</div>"}function dt(e,t,n){if(e==null||e==="")return[];const s=String(e).split(/\s+/),o=[];let r="";for(const i of s){if(!r){r=i;continue}if((r+" "+i).length<=t)r+=" "+i;else if(o.push(r),r=i,o.length===n)break}return r&&o.length<n&&o.push(r),o.slice(0,n)}function hn(e){return` data-reveal="${e}"`}var m4={sync:{cls:"msg-line",marker:"sqArrow",txt:"msg-text t-arrow em"},response:{cls:"msg-line dashed",marker:"sqOpen",txt:"msg-text t-arrow"},async:{cls:"msg-line async",marker:"sqOpen",txt:"msg-text t-arrow"},error:{cls:"msg-line err",marker:"sqErr",txt:"msg-text t-arrow err"},note:{cls:"",marker:null,txt:"msg-text t-arrow note"}},Fp=36,y8=28,x8=24,k8=14,g4=13,b8=34,w8=3,Pw=18,Ow=12,Rw=6,Bc=6,v4=150,$8=46,S8=6.2,E8=40;function M8(e,t){const n=o=>e.findIndex(r=>r.id===o),s=e.slice(0,-1).map(()=>$8);for(const o of t){if(!("from"in o)||o.kind==="note")continue;const r=n(o.from),i=n(o.to);if(r<0||i<0||Math.abs(r-i)!==1)continue;const l=Math.min(r,i),d=Math.ceil((o.label??"").length*S8+E8)-v4;d>(s[l]??0)&&(s[l]=d)}return s}function y4(e){return e.kind==="msg"}function A8(e){const t=new Map;let n=0;for(const s of e)s.kind!=="end"&&(t.set(s.idx,n),n+=1);return t}function C8(e,t,n,s){const o=u=>{const p=s.get(u);return p===void 0?"":hn(p)},r=e.filter(y4);if(!r.some(u=>u.summary!==void 0&&u.summary.length>0))return"";const i=new Set,l=u=>{const p=u.open.idx,h=u.end?.idx??Number.POSITIVE_INFINITY;if(r.some(g=>g.idx>p&&g.idx<h&&g.summary!==void 0&&g.summary.length>0)){i.add(u.open.idx);for(const g of u.elses)i.add(g.idx)}u.children.forEach(l)};t.forEach(l);const d=[];for(const u of e){if(u.kind==="open"&&i.has(u.idx)){const E=u.label.length>0?`<span class="step-frame-label">${S(u.label)}</span>`:"";d.push(`<li class="step-frame"${_(`messages.${u.idx}`)}${o(u.idx)}><span class="step-frame-tag">${S(u.frame.toUpperCase())}</span>${E}</li>`);continue}if(u.kind==="else"&&i.has(u.idx)){d.push(`<li class="step-frame else"${_(`messages.${u.idx}`)}${o(u.idx)}><span class="step-frame-tag">else</span><span class="step-frame-label">${S(u.label)}</span></li>`);continue}if(u.kind!=="msg"||u.summary===void 0||u.summary.length===0)continue;const p=u.msgKind==="error"?' class="err"':"",h=u.msgKind==="error"?" err":"",m=n.get(u.from)?.name??u.from,g=u.msgKind==="note"||u.from===u.to?"":` → ${S(n.get(u.to)?.name??u.to)}`,v=`${S(m)}${g}`,y=u.code!==void 0&&u.code.length>0?`<pre class="sql">${S(u.code)}</pre>`:"",b=u.note!==void 0&&u.note.length>0?`<span class="step-note">${S(u.note)}</span>`:"";d.push(`<li${p}${_(`messages.${u.idx}`)}${o(u.idx)}><span class="step-n">${u.n}</span><span class="step-actor${h}">${v}</span><span class="step-summary">${S(u.summary)}</span>`+y+b+"</li>")}return`<div class="seq-steps"><div class="seq-steps-title">Step-by-step</div><ol>${d.join("")}</ol></div>`}function N8(e){if(e.length===0)return"";const t=e.map((n,s)=>`<span${_(`foot.${s}`)}><strong>${S(n.label)}:</strong> ${S(n.value)}</span>`).join("");return`<div class="diagram-foot"${fe("foot")}>${t}</div>`}function T8(e,t,n){const s=[];let o=n-Fp,r=0;return e.forEach((i,l)=>{const d=i;if("frame"in d){const y=typeof d.label=="string"?d.label:"";s.push({kind:"open",idx:l,top:o,y:o+14,frame:String(d.frame),label:y}),o+=y8;return}if("else"in d){s.push({kind:"else",idx:l,top:o,y:o+8,frame:"",label:String(d.else??"")}),o+=x8;return}if("end"in d){s.push({kind:"end",idx:l,top:o,y:o+10,frame:"",label:""}),o+=k8;return}const u=i;r+=1;const p=u.kind!==void 0&&u.kind in m4?u.kind:"sync",h=u.label??"",m=p==="note"?dt(h,b8,w8):[],g=p==="note"?Fp+g4*Math.max(0,m.length-1):Fp,v={kind:"msg",idx:l,n:r,top:o,y:o+g,fromI:t(u.from),toI:t(u.to),msgKind:p,label:h,from:u.from,to:u.to,activate:u.activate===!0,deactivate:u.deactivate===!0,lines:m,...u.summary!==void 0?{summary:u.summary}:{},...u.code!==void 0?{code:u.code}:{},...u.note!==void 0?{note:u.note}:{}};s.push(v),o+=g}),{rows:s,cursor:o}}function _8(e){const t=[],n=[];for(const s of e)if(s.kind==="open"){const o={open:s,elses:[],children:[],x1:0,x2:0},r=n[n.length-1];r!==void 0?r.children.push(o):t.push(o),n.push(o)}else if(s.kind==="else")n[n.length-1]?.elses.push(s);else if(s.kind==="end"){const o=n.pop();o!==void 0&&(o.end=s)}return t}function L8(e,t,n){if(e.msgKind==="note"){const s=n(e);return s===null?null:[s.x,s.x+s.w]}if(e.fromI<0&&e.toI<0)return null;if(e.fromI<0)return[t(e.toI),t(e.toI)];if(e.toI<0)return[t(e.fromI),t(e.fromI)+36+e.label.length*Bc];if(e.fromI===e.toI){const s=t(e.fromI);return[s,s+36+e.label.length*Bc]}return[Math.min(t(e.fromI),t(e.toI)),Math.max(t(e.fromI),t(e.toI))]}function I8(e){const t=e.actors??[],n=e.messages??[],s=Math.max(t.length,1),o=24,r=v4,i=M8(t,n),l=16,d=t.map(J=>dt(J.name,J.external===!0?16:19,2)),u=d.some(J=>J.length>1),p=u?54:40,h=[];for(let J=0;J<s;J++)h.push(o+r/2+J*r+i.slice(0,J).reduce((ue,ve)=>ue+ve,0));const m=J=>h[J]??o+r/2,g=o*2+s*r+i.reduce((J,ue)=>J+ue,0),v=J=>t.findIndex(ue=>ue.id===J),y=l+p+28,{rows:b,cursor:E}=T8(n,v,y),$=b.filter(y4),A=A8(b),T=J=>hn(A.get(J)??0),N=E+Fp+12,P=N+6;let j=-1;for(const J of $)J.msgKind==="response"&&J.toI===0&&J.fromI>0&&(j=J.idx);const I=J=>{if(J.fromI<0&&J.toI<0)return null;const ue=Math.max(0,...J.lines.map(Be=>Be.length)),ve=J.top+14,we=J.y-J.top-18;if(J.fromI<0||J.toI<0||J.fromI===J.toI){const Be=m(J.fromI<0?J.toI:J.fromI),Ke=Math.max(72,Math.round(ue*Bc)+16);return{x:Be+12+Ke<=g-2?Be+12:Be-12-Ke,w:Ke,top:ve,h:we}}const $e=Math.min(m(J.fromI),m(J.toI)),je=Math.max(m(J.fromI),m(J.toI)),De=Math.max(je-$e+60,Math.round(ue*Bc)+16),Me=($e+je)/2;return{x:Math.round(Me-De/2),w:De,top:ve,h:we}},D=_8(b),C=J=>{J.children.forEach(C);const ue=J.open.idx,ve=J.end?.idx??Number.POSITIVE_INFINITY;let we=Number.POSITIVE_INFINITY,$e=Number.NEGATIVE_INFINITY;for(const je of $){if(je.idx<=ue||je.idx>=ve)continue;const De=L8(je,m,I);De!==null&&(we=Math.min(we,De[0]),$e=Math.max($e,De[1]))}we===Number.POSITIVE_INFINITY?(we=o,$e=g-o):(we-=Pw,$e+=Pw);for(const je of J.children)we=Math.min(we,je.x1-Ow),$e=Math.max($e,je.x2+Ow);J.x1=Math.max(2,Math.round(we)),J.x2=Math.min(g-2,Math.round($e))};D.forEach(C);const R=J=>J.end?.y??E+6,F=$.some(J=>J.activate||J.deactivate),U=[],Y=new Map,B=J=>{let ue=Y.get(J);return ue===void 0&&(ue=[],Y.set(J,ue)),ue},te=(J,ue,ve,we)=>{const $e=B(J),je={i:J,y1:ue,y2:Number.NaN,depth:$e.length,caller:ve,last:ue,step:we};$e.push(je),U.push(je)};for(const J of $){if(F){if(J.activate&&J.toI>=0&&te(J.toI,J.y,J.fromI,A.get(J.idx)??0),J.deactivate&&J.fromI>=0){const ue=B(J.fromI).pop();ue!==void 0&&(ue.y2=J.y)}continue}if(!(J.msgKind==="note"||J.fromI<0)){for(const ue of B(J.fromI))ue.last=J.y;if(!(J.toI<0||J.toI===J.fromI))if(J.msgKind==="sync"||J.msgKind==="async")te(J.toI,J.y,J.fromI,A.get(J.idx)??0);else{const ue=B(J.fromI);for(let ve=ue.length-1;ve>=0;ve--){const we=ue[ve];if(we.caller===J.toI){we.y2=J.y,ue.splice(ve,1);break}}}}}for(const J of Y.values())for(const ue of J)ue.y2=F?E:ue.last;const ee=Sn("Sequence diagram",e.title??e.endpoint?.path,[`${wt($.length,"message")} between ${wt(t.length,"actor")}`]);let H=`<svg viewBox="0 0 ${g} ${P}"${ee.attrs}>`+ee.title+'<defs><marker id="sqArrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="var(--muted)"/></marker><marker id="sqOpen" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M1,1 L9,5 L1,9" fill="none" stroke="var(--muted)" stroke-width="1.6"/></marker><marker id="sqErr" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="var(--negative)"/></marker><marker id="sqAccent" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M1,1 L9,5 L1,9" fill="none" stroke="var(--accent)" stroke-width="1.6"/></marker></defs>',W="",V="";const O=t.map((J,ue)=>m(ue)),z=(J,ue)=>{const ve=(ue.length+2)*Bc,we=O.find($e=>$e>=J-6&&$e<=J+ve);return we===void 0?J:we+12},X=J=>{const ue=J.open.y,ve=R(J),we=_(`messages.${J.open.idx}`)+T(J.open.idx);W+=`<g${we}><rect x="${J.x1}" y="${ue}" width="${J.x2-J.x1}" height="${Math.max(0,ve-ue)}" rx="4" class="seq-frame"/></g>`;const $e=J.open.frame.toUpperCase(),je=10+$e.length*7,De=J.open.label.length>0?`<text x="${z(J.x1+je+8,J.open.label)}" y="${ue+12}" class="seq-frame-guard t-arrow c-soft">[${S(J.open.label)}]</text>`:"";V+=`<g${we}><rect x="${J.x1}" y="${ue}" width="${je}" height="16" rx="2" class="seq-frame-tab"/><text x="${J.x1+5}" y="${ue+11.5}" class="seq-frame-tab-text t-eyebrow">${S($e)}</text>`+De+"</g>";for(const Me of J.elses){const Be=_(`messages.${Me.idx}`)+T(Me.idx);W+=`<g${Be}><line x1="${J.x1}" y1="${Me.y}" x2="${J.x2}" y2="${Me.y}" class="seq-frame-else"/></g>`,V+=`<g${Be}><text x="${z(J.x1+8,Me.label)}" y="${Me.y+14}" class="seq-frame-guard t-arrow c-soft">[${S(Me.label)}]</text></g>`}J.children.forEach(X)};D.forEach(X),H+=W;for(let J=0;J<t.length;J++){const ue=m(J);H+=`<line x1="${ue}" y1="${l+p}" x2="${ue}" y2="${N}" class="lifeline"/>`}for(const J of U){const ue=J.y1-Rw,ve=J.y2+Rw;H+=`<rect x="${m(J.i)-3+J.depth*4}" y="${ue}" width="6" height="${Math.max(0,ve-ue)}" class="activation"${hn(J.step)}/>`}H+=`<g${fe("actors")}>`,t.forEach((J,ue)=>{const ve=J.external===!0,we=ve?" ext":"",$e=d[ue]??[],je=J.sub!==void 0,De=$e.length>1?l+(ve?21:17):je?l+(ve?22:17):l+(ve?25:24),Me=l+(u?47:33),Be=$e.length<=1?`<text x="${m(ue)}" y="${De}" class="lane-head-text t-name">${S(J.name)}</text>`:$e.map((ge,Ne)=>`<text x="${m(ue)}" y="${De+Ne*14}" class="lane-head-text t-name">${S(ge)}</text>`).join(""),Ke=je?`<text x="${m(ue)}" y="${Me}" class="lane-head-sub t-sub">${S(J.sub??"")}</text>`:"",he=ve?`<text x="${m(ue)-r/2+8}" y="${l+11}" class="lane-head-chip t-eyebrow">EXT</text>`:"";H+=`<g${_(`actors.${ue}`)}><rect x="${m(ue)-r/2}" y="${l}" width="${r}" height="${p}" rx="4" class="lane-head${we}"/>`+he+Be+Ke+"</g>"}),H+="</g>",H+=V,H+=`<g${fe("messages")}>`;const K={sync:!1,response:!1,async:!1,error:!1,note:!1};for(const J of $){const ue=m4[J.msgKind],we=J.idx===j?{cls:`${ue.cls} accent`,marker:"sqAccent",txt:`${ue.txt} accent`}:ue;K[J.msgKind]=!0;const $e=_(`messages.${J.idx}`)+T(J.idx),je=J.msgKind==="error"?" err":"",De=(ze,Xe)=>`<circle cx="${ze}" cy="${Xe}" r="8" class="step-badge${je}"/><text x="${ze}" y="${Xe+3}" class="step-badge-text t-badge${je===""?"":" c-negative"}">${J.n}</text>`;if(J.msgKind==="note"){const ze=I(J);if(ze===null)continue;const Xe=J.summary!==void 0&&J.summary.length>0,pt=ze.x+ze.w/2,kt=J.lines.map((St,Nt)=>`<text x="${pt}" y="${ze.top+16+Nt*g4}" class="seq-note-text t-sub" text-anchor="middle">${S(St)}</text>`).join("");H+=`<g${$e}><rect x="${ze.x}" y="${ze.top}" width="${ze.w}" height="${ze.h}" rx="3" class="seq-note"/><path d="M${ze.x+ze.w-7},${ze.top} v7 h7" class="seq-note-fold"/>`+kt+(Xe?De(ze.x+2,ze.top):"")+"</g>";continue}if(J.fromI<0||J.toI<0){if(J.fromI<0&&J.toI<0)continue;const ze=m(J.fromI<0?J.toI:J.fromI);H+=`<g${$e}>`+De(ze+18,J.y-10)+`<text x="${ze+34}" y="${J.y-6}" class="msg-text note">${S(J.label)}</text></g>`;continue}if(J.fromI===J.toI){const ze=m(J.fromI),Xe=we.marker!==null?` marker-end="url(#${we.marker})"`:"";H+=`<g${$e}><path d="M${ze},${J.y-14} H${ze+28} V${J.y} H${ze+3}" class="${we.cls} self"${Xe}/>`+De(ze+16,J.y-26)+`<text x="${ze+36}" y="${J.y-4}" class="${we.txt}" text-anchor="start">${S(J.label)}</text></g>`;continue}const Me=m(J.fromI),Be=m(J.toI),Ke=Be>Me,he=Be+(Ke?-3:3),ge=Ke?Me+18:Me-18,Ne=Ke?ge+16:ge-16,Fe=Ke?"start":"end",We=we.marker!==null?` marker-end="url(#${we.marker})"`:"";H+=`<g${$e}><line x1="${Me}" y1="${J.y}" x2="${he}" y2="${J.y}" class="${we.cls}"${We}/>`+De(ge,J.y-10)+`<text x="${Ne}" y="${J.y-6}" class="${we.txt}" text-anchor="${Fe}">${S(J.label)}</text></g>`}H+="</g>",H+="</svg>";const se=new Map;for(const J of t)se.set(J.id,{name:J.name});const Q=C8(b,D,se,A),re=e.foot!==void 0?N8(e.foot):"",Z=[];K.sync&&Z.push({swatch:"edge",label:"call"}),K.response&&Z.push({swatch:"edge-dashed",label:"response"}),K.async&&Z.push({swatch:"edge-async",label:"async"}),K.error&&Z.push({swatch:"edge-error",label:"error"}),j>=0&&Z.push({swatch:"edge-accent-dashed",label:"the answer the caller gets"}),t.some(J=>J.external===!0)&&Z.push({swatch:"chip",chip:"EXT",label:"external actor"}),D.length>0&&Z.push({swatch:"node-fill2",label:"fragment (alt / opt / loop)"}),U.length>0&&Z.push({swatch:"node",label:"active"});const q=ot(Z),de=e.endpoint?.method,le={tag:"SEQUENCE",...de!==void 0?{tagClass:de.toLowerCase(),method:de}:{},...e.endpoint?.path!==void 0?{path:e.endpoint.path}:{},...e.title!==void 0?{title:e.title}:{},...e.description!==void 0?{desc:e.description}:{},...q.length>0?{legendHtml:q}:{},...re.length>0?{footerHtml:re}:{}};return lt(le,H+Q)}function Dw(e){if(typeof e=="string")return"";const t=[];return e.align==="r"&&t.push("r"),e.align==="c"&&t.push("c"),e.highlight===!0&&t.push("hi"),t.join(" ")}function j8(e){return typeof e=="string"?e:e.label}function P8(e){if(typeof e=="string"||typeof e=="number")return"";const t=[];return e.tone&&t.push(`cell-${e.tone}`),e.lead===!0&&t.push("lead"),e.highlight===!0&&t.push("hi"),t.join(" ")}function O8(e){return S(typeof e=="string"||typeof e=="number"?e:e.v)}function R8(e){const t=e.columns??[],n=e.rows??[],s=t.map((i,l)=>{const d=Dw(i);return`<th${d?` class="${d}"`:""}${_(`columns.${l}`)}>${S(j8(i))}</th>`}).join(""),o=n.map((i,l)=>{const d=(i??[]).map((u,p)=>{const h=t[p],m=[h!==void 0?Dw(h):"",P8(u)].filter(Boolean).join(" ");return`<td${m?` class="${m}"`:""}${_(`rows.${l}.${p}`)}>${O8(u)}</td>`}).join("");return`<tr${_(`rows.${l}`)}>${d}</tr>`}).join(""),r=e.note!==void 0?`<p class="tbl-note"${_("note")}>${S(e.note)}</p>`:"";return`<table class="pres-table"><thead><tr>${s}</tr></thead><tbody${fe("rows")}>${o}</tbody></table>${r}`}var D8={done:"node-fill2",current:"node-accent",next:"node-dashed",future:"node-dashed"};function B8(e){const t=e.items??[],n=[];let s=`<div class="tl"${fe("items")}>`;t.forEach((r,i)=>{const l=r.status??"future";n.includes(l)||n.push(l);const d=r.date!==void 0?`<div class="tl-date"${_(`items.${i}.date`)}>${S(r.date)}</div>`:"",u=r.desc!==void 0?`<div class="tl-desc"${_(`items.${i}.desc`)}>${S(r.desc)}</div>`:"",p=`<span class="tl-status tl-s-${l}"${r.status!==void 0?_(`items.${i}.status`):""}>${S(l)}</span>`;s+=`<div class="tl-item"${_(`items.${i}`)}${hn(i)}><span class="tl-dot ${l}"></span><div class="tl-head">${d}${p}</div><div class="tl-label"${_(`items.${i}.label`)}>${S(r.label)}</div>`+u+"</div>"});const o=n.map(r=>({swatch:D8[r]??"node-dashed",label:r}));return s+"</div>"+ot(o)}function x4(e){return e.slice(e.indexOf("#")+1)}function z8(e){const t=e.role??"user",n=e.want??"…",s=e.soThat??"…",o=[];e.title!==void 0&&o.push(`<span class="story-title"${_("title")}>${S(e.title)}</span>`),(e.tags??[]).forEach((d,u)=>o.push(`<span class="story-chip"${_(`tags.${u}`)}>${S(d)}</span>`)),e.points!==void 0&&e.points!==null&&o.push(`<span class="story-chip pts"${_("points")}>${S(e.points)} pts</span>`),e.priority!==void 0&&o.push(`<span class="story-chip"${_("priority")}>Priority · ${S(e.priority)}</span>`);let r='<div class="story">';o.length>0&&(r+=`<div class="story-head">${o.join("")}</div>`),r+=`<div class="story-stmt">As a <b${_("role")}>${S(t)}</b>, I want to <b${_("want")}>${S(n)}</b>, so that <b${_("soThat")}>${S(s)}</b>.</div>`,r+="</div>";const i=e.criteria??[];i.length>0&&(r+='<div class="ac-title">Acceptance criteria</div>',i.forEach((d,u)=>{r+=`<div class="ac-item"${_(`criteria.${u}`)}><div class="gwt"><span class="k g">Given</span><span class="v"${_(`criteria.${u}.given`)}>${S(d.given??"")}</span><span class="k w">When</span><span class="v"${_(`criteria.${u}.when`)}>${S(d.when??"")}</span><span class="k t">Then</span><span class="v"${_(`criteria.${u}.then`)}>${S(d.then??"")}</span></div></div>`}));const l=e.links??[];return l.length>0&&(r+=`<div class="ac-title">Related</div><div class="links-row"${fe("links")}>`,l.forEach((d,u)=>{const p=`<span class="lt">${S(d.mode??"")}</span>${S(d.label??"")}`;r+=d.ref!==void 0&&d.ref!==""?`<a class="link-chip" data-ref="${S(d.ref)}" href="#${S(x4(d.ref))}"${_(`links.${u}`)}>${p}</a>`:`<span class="link-chip"${_(`links.${u}`)}>${p}</span>`}),r+="</div>"),r}function F8(e){const n=(e.blocks??[]).map((s,o)=>{const r=(s.type??"p").toLowerCase(),i=s.text??"";if(r==="h")return`<h3${_(`blocks.${o}`)}>${vo(i)}</h3>`;if(r==="quote")return`<blockquote${_(`blocks.${o}`)}>${vo(i)}</blockquote>`;if(r==="ul"){const l=(s.items??[]).map((d,u)=>`<li${_(`blocks.${o}.items.${u}`)}>${vo(d)}</li>`).join("");return`<ul${_(`blocks.${o}`)}${fe(`blocks.${o}.items`)}>${l}</ul>`}if(r==="ol"){const l=(s.items??[]).map((d,u)=>`<li${_(`blocks.${o}.items.${u}`)}>${vo(d)}</li>`).join("");return`<ol${_(`blocks.${o}`)}${fe(`blocks.${o}.items`)}>${l}</ol>`}return`<p${_(`blocks.${o}`)}>${vo(i)}</p>`}).join("");return`<div class="prose"${fe("blocks")}>${n}</div>`}function q8(e,t){if(e===void 0||e.length===0)return"";const n=e.map((s,o)=>`<span${_(`terms.${t}.avoid.${o}`)}>${S(s)}</span>`).join(", ");return` <span class="avoid"${fe(`terms.${t}.avoid`)}>not: ${n}</span>`}function H8(e){const n=(e.terms??[]).map((s,o)=>`<div class="row"${_(`terms.${o}`)}><dt${_(`terms.${o}.term`)}>${S(s.term)}</dt><dd${_(`terms.${o}.def`)}>${S(s.def)}${q8(s.avoid,o)}</dd></div>`).join("");return`<div class="glossary"${fe("terms")}>${n}</div>`}function W8(e){const t=e.prosLabel??"Pros",n=e.consLabel??"Cons",s=(e.pros??[]).map((r,i)=>`<div class="pc-item"${_(`pros.${i}`)}>${S(r)}</div>`).join(""),o=(e.cons??[]).map((r,i)=>`<div class="pc-item"${_(`cons.${i}`)}>${S(r)}</div>`).join("");return`<div class="pc"><div class="pc-col pro"${fe("pros")}><div class="pc-head"${_("prosLabel")}>${S(t)}</div>`+s+`</div><div class="pc-col con"${fe("cons")}><div class="pc-head"${_("consLabel")}>${S(n)}</div>`+o+"</div></div>"}function U8(e){const t=e.current??{},n=e.target??{},s=(t.items??[]).map((d,u)=>`<div class="ct-item"${_(`current.items.${u}`)}>${S(d)}</div>`).join(""),o=(n.items??[]).map((d,u)=>`<div class="ct-item"${_(`target.items.${u}`)}>${S(d)}</div>`).join(""),r=t.label??"Current",i=n.label??"Target",l=e.note!==void 0?`<div class="tbl-note"${_("note")}>${S(e.note)}</div>`:"";return`<div><div class="ct"><div class="ct-panel cur"${_("current")}${fe("current.items")}><div class="ct-label"${_("current.label")}>${S(r)}</div>`+s+`</div><div class="ct-arrow">→</div><div class="ct-panel tgt"${_("target")}${fe("target.items")}><div class="ct-label"${_("target.label")}>${S(i)}</div>`+o+"</div></div>"+l+"</div>"}var K8={up:"▲",down:"▼",flat:"—"};function V8(e){const n=(e.stats??[]).map((s,o)=>{const r=s.accent!==void 0?` style="border-top-color:${Fi(s.accent,"var(--accent)")}"`:"",i=s.delta!==void 0?`<div class="stat-delta ${s.trend??"flat"}">${K8[s.trend??"flat"]} ${S(s.delta)}</div>`:"";return`<div class="stat-card"${r}${_(`stats.${o}`)}><div class="stat-value"${_(`stats.${o}.value`)}>${S(s.value)}</div><div class="stat-label"${_(`stats.${o}.label`)}>${S(s.label)}</div>`+i+"</div>"}).join("");return`<div class="stat-row"${fe("stats")}>${n}</div>`}var G8=new Set("const let var function return if else for while do switch case break continue class extends new await async import from export default try catch finally throw typeof instanceof void delete yield static public private protected readonly abstract implements interface type enum namespace def elif lambda pass with raise except none true false and or not is in self nil func struct map range defer chan select fallthrough echo fi done local require module package this super create table alter add drop select insert update delete into values where join group order by limit primary key foreign references not null default unique index on check constraint cascade returning begin commit rollback".split(/\s+/)),Y8=new Set("string number boolean int integer float double bool char byte long short void object any unknown never bigint promise array list set optional uuid text varchar timestamptz timestamp date numeric decimal jsonb json serial bigserial smallint".split(/\s+/)),Wu=/(\/\*[\s\S]*?\*\/|\/\/[^\n]*|#[^\n]*)|("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`)|(\b\d[\w.]*)|([A-Za-z_$][\w$]*)/g,X8=new Set(["md","markdown","mdx"]);function uh(e,t){if(e.length===0)return"";if(t!==void 0&&X8.has(t.trim().toLowerCase()))return Q8(String(e));const n=String(e);let s="",o=0;Wu.lastIndex=0;let r;for(;(r=Wu.exec(n))!==null;){r.index>o&&(s+=S(n.slice(o,r.index)));const i=r[0];if(r[1]!==void 0)s+=`<span class="com">${S(i)}</span>`;else if(r[2]!==void 0)s+=`<span class="str">${S(i)}</span>`;else if(r[3]!==void 0)s+=`<span class="num">${S(i)}</span>`;else{const l=i.toLowerCase();G8.has(l)?s+=`<span class="kw">${S(i)}</span>`:Y8.has(l)?s+=`<span class="ty">${S(i)}</span>`:n[Wu.lastIndex]==="("?s+=`<span class="fn">${S(i)}</span>`:s+=S(i)}o=Wu.lastIndex}return o<n.length&&(s+=S(n.slice(o))),s}var Pg=/(`[^`\n]+`)|(\*\*[^*\n]+\*\*|__[^_\n]+__)|(\*[^*\n]+\*|_[^_\n]+_)|(\[[^\]\n]+\]\([^)\n]+\))/g;function Bw(e){let t="",n=0;Pg.lastIndex=0;let s;for(;(s=Pg.exec(e))!==null;){s.index>n&&(t+=S(e.slice(n,s.index)));const o=s[0];if(s[1]!==void 0)t+=`<span class="str">${S(o)}</span>`;else if(s[2]!==void 0)t+=`<span class="fn">${S(o)}</span>`;else if(s[3]!==void 0)t+=`<span class="ty">${S(o)}</span>`;else{const r=/^(\[[^\]]+\])(\([^)]+\))$/.exec(o);r!==null?t+=`<span class="fn">${S(r[1]??"")}</span><span class="com">${S(r[2]??"")}</span>`:t+=S(o)}n=Pg.lastIndex}return n<e.length&&(t+=S(e.slice(n))),t}function Q8(e){const t=[];let n=!1;for(const s of e.split(`
|
|
2824
2823
|
`))if(/^\s*(```|~~~)/.test(s))n=!n,t.push(`<span class="com">${S(s)}</span>`);else if(n)t.push(uh(s));else if(/^#{1,6}\s/.test(s))t.push(`<span class="kw">${S(s)}</span>`);else if(/^\s*>/.test(s))t.push(`<span class="com">${S(s)}</span>`);else if(/^\s*(-{3,}|={3,}|\*{3,})\s*$/.test(s))t.push(`<span class="com">${S(s)}</span>`);else{const o=/^(\s*)([-*+]|\d+\.)(\s+)(.*)$/.exec(s);o!==null?t.push(`${S(o[1]??"")}<span class="num">${S(o[2]??"")}</span>${o[3]??""}${Bw(o[4]??"")}`):t.push(Bw(s))}return t.join(`
|
|
2825
2824
|
`)}function Z8(e){return e.startsWith("+")?"df-add":e.startsWith("-")?"df-del":e.startsWith("@@")?"df-hunk":"df-ctx"}function J8(e){const t=(e.code??"").split(`
|
|
2826
2825
|
`).map(n=>`<span class="df-line ${Z8(n)}">${S(n===""?" ":n)}</span>`).join("");return`<div class="code-block diff-block"><div class="code-header"><span>${S(e.title??"")}</span><span${_("lang")}>${S(e.lang??"diff")}</span></div><pre class="diff-pre"${_("code")}>${t}</pre></div>`}function ez(e){return e.startsWith("$ ")?`<span class="tm-line tm-cmd"><span class="tm-prompt">$</span> <span class="tm-cmd-text">${S(e.slice(2))}</span></span>`:e.startsWith("# ")?`<span class="tm-line tm-comment">${S(e)}</span>`:`<span class="tm-line tm-out">${S(e===""?" ":e)}</span>`}function zw(e){const t=(e.session??"").replace(/\n$/,"").split(`
|
|
@@ -3061,7 +3060,6 @@ body{background:var(--paper-2);font-family:var(--font-body);color:var(--ink);}
|
|
|
3061
3060
|
/* A divider that owns its slide is the title card: center the band's content
|
|
3062
3061
|
block on the stage with no leftover doc margins. */
|
|
3063
3062
|
.docskin.slide .slide-inner:has(.dvd) .section-block{margin:0;}
|
|
3064
|
-
.docskin.slide.slide-cover .cover-bar{display:none;}
|
|
3065
3063
|
.docskin.slide.slide-cover .cover-pad{border-bottom:none;padding-bottom:0;margin-bottom:0;}
|
|
3066
3064
|
.docskin.slide.slide-cover .cover-meta{justify-content:center;}
|
|
3067
3065
|
.deck-nav{position:fixed;left:0;right:0;bottom:0;height:60px;display:flex;align-items:center;justify-content:center;
|
package/dist/web/index.html
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<title>Chiltepin Studio</title>
|
|
7
7
|
<!-- Kept in sync with FAVICON_DATA_URI in chiltepin-render (src/brand.ts); a test asserts equality. -->
|
|
8
8
|
<link rel="icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAYmUlEQVR42t2beZRddZXvP/v3O3esuSpVSSpzCCGEIKOMsQtoNDSTiASRVhtxwKftw7HbVjEL27FtBxRQ24FunoIabFFsVBBIAFGZIpCEBELmVKqSGm/d4Zx7zu+33x/nVohvPQEDKHrXOqvuulP99vTde3/3PvDSfQgQqCIiIKbxytPvvWD/5KX4sAhOEFQN4HqBWUAE/G6/syt/ZQ8BrIgAfc3AZR0zuPvEZZnyBZc162kXZHXaTLmns1CY0fis+WsTXlLhuWj2oTx5+ccP1rsee6+uHjlef7x9oX/HDUFy2rtEu6fxk8Z3nrcCzEtIeJYvX24yOf3qOW9qvvGWW/9tweevuCHpmdftdo0N6JObxmTzusQ0TRfXOT9zBuTmIvjnK0PwUrF8X1+f+cUvVt70lg9Pe/UnrvhUMjBeNteuOTfYsnM3E+PG10PjsgWrrR3tJhtEAZTlrwUErYi4fF7/65IPTX/TZR85LH78iVrm/qd+Rf8WtDRR8NUxbDjiKGQCkrEsj98xfuPwXr24YX3/l+wBVkScqL7llRe1v+nvP9Ab/3rtusya9bvpfyqjE5W8jDzq7MjG+hPVEb2HJB6oTVSfDOF7L1QW+HN6gEFRhKkLDrfrP/vfc9siG3PP/f1m6+OqtVqTbrs9csPro/eXIv6jkQJfhEP8uR7LETFoLse/nP2Opo4pvcY/smHI7NyUUHdF7b8vMXseid5YivgKUG946+Qlf+kKMCsWo6pMXXCMueSVr+3QDZtKduf2GmGYSaq7AzO0rvqdiuf7QLbxnWS/S/9SFWAAyxyyV34cHwRcdtqFTa0trdZt2lGS8T2Kp2CHNkQajvKFxufdi1nxBX+KFAcYVZwx4kHRbbjmbPbQzvn195x8ZovftrNmR8bqhDXxXjOmOlx9rGZkjaiiin2xLfKCNzB9fQQrVmBERI0xXsQkIqiqzlXl9VOmyOeybfGq487Od/T0ZmVHf1WisuKdwcfgI5+o1+NVsSI4ePGU8GJngSZgIXDK3HmtZy9Y2HHi7JeXCrY9YtUPqrzv2g6dO6NT7nhwJ9s3JezpF+phO6WHSrzs8DYeXFVe88TG2odF5OfqVZB9IfGSCwEB6OqiuV4N3prN5I7omNI0p2da08HzD+qdccxJM+hdUqbctJUto8PuZ1dFetJrxZ521N/Jw+sfJ0rqxJHBRY4gD4lBDzvX6fEXzDzq5q8M/2zVT0Y+ifAxMeL0CjVciTQKoJdMHRAArqNNrlp2afO7z7pgIV3tbUzvnsPc7qWM+XXJQ7tukrWbd5vHHlIZeSrhE59cxqGF8/iPBz9K/2CJzY87hnZ6Ch3NDKwRXDTBojPx82ZOZfD+rFl14+C9AwP1jwF3iRFUFVJ8eF6KeEFiazEEe8EVO3MuseF5Y8UBCVt3EmY2saV8m/yu/16zc6hiymUj3dMNPQs9AzuF32xbxUhlhLAGo3uV2oRSryWYghJYjxiRUqkqi5YW3Ymnz57bmm/6h8pI/RWl8dgDu4Hy8ycennc9g10NyVXvPiO39Y6NZ9mtemr9fi08da+X+34VmcceT9ixAaK9TRx/9HymtAtHzT6K0eRJnto9RKVkKY17ahPgEsjmhLZuT+dMQSzk8xmsqpFi6OccneOIV0ydP3N2y/mBuEtcmCzo6so/XCol5QP1Zvt8hV8p4k5oDvoeufeJH/3NkZ1v+uDp83OXukhOHohl0RZl3u9g1YOe45b1cdQJbZw+7SvUkhJPjv8aKzkwSr4o9M62TJ9nae0xFFqEICdYMcSho651alEoe0ZGpKx7XfuCRHuWaHMS14/Z/WhiwphfNMLQ/6lAUJaDWWnEvTzQ97WRfO7tbz3anH/CzITHNgY6xdHVnuPobJa7toyz8IjFnLR8jN7sa9gw8UMeGvomJEUqYZW2DkNghErFMb0rTxh5xsuO0rgnX3Rs+AmUxhTbrkjW4OrYsFzyvoz3A2ZTNZO9ejmRXXmAXWFwoMLfZMQdJ/r5Q7py7/uX957qD23x3t3260Cb25DjjsEmIW7Hk3x1uIXTL5uKl608tPfrbB7ejroiTiK6ugxrVjkWzs4z44iA8rjS2hyAASOGcpgKfvTNCfMKwl48FugUkX6nrI99fnbWzVgJm/sgWP2n8IA+sCuNJMerfvHI2U3v+dcV5ybd47tsvG5Q7GnLkCw4r2TGd3PD6gnyJy+hd+EutgyMUVdHc1Mz5WrC5kc9j/y4zqzVnjumxZx7dRttvZ6RkTrZrCF2DmOF5nnQ3gJvMDAKqBfwKt29U3R9Pj/76i077zq52V64uuz+u6GE5EXDgD4IVoskx1n94OJp+Sv+7dPL4ym1oUys0yS47Muw9E1QLWG2PEy07Qk+v1c5+6PdTARbmKgpe/cqD66K+e23I4IbYv7+KeWdbZYZo56vPVDn4BPztE6BsXGHV/AeYq+U7vWcl7dMm5Iha5VsAGgiJ8zq9Yd2dZl7BvZeML1g778n0ieWg13/R6RF+8cA3q3gTirmXtWd9dd/5qNnJ73NLoibF0lwyVegpRsxOfTJVdj1d1Gq1Pn62AQ7zBD3/yLi0R/UGf4/EYvuSHjrMFzWmeWE+UXaZ+U4vMkwbVvM1fdGTH9Znu5eYe9IgqjgFCbudZzjDR3tGbKBQQCXJAwM7pGXTevRue3t5s7+oXPmFXM33Rq54RVgVj9HJTxXBch64OLDZ7dPDIzc9oFLjms+9qgeieN2Yy/6d3AxYrLojgeQO6/BxQlNgTJz4wi1/wk5Yb3ndaOGt3fkeM1BTSxY0EJhah6Tt6gTKFiWtFkW7Yz59p0hlS7LgkWWauip1pToPs95WArNAWKEjBW0Id7gniE5evZsb60p3LNn7MQblvZdd+u2bax/IT1gOdj1Ij43OP65M1/e87eXXnycS3b0W3vuFVDsgiADpd3wy3+H6igSx2gUsqAt4NTeHMcc3MLcQ9po6m3Ct+bw1oCmQoiAeMVnDQvaA04pOe66s84Dw8qcJRlKkad+u+fCjCUoWlTBWoOgxInivTI+Nm5OWXhwsn58bNY3Nz1V+mXCr55rKDyrAlaAuRZ0aXN2cVfOf/Ojly2VtrFdRuccL+aE16cSjO+Eu6+Coe1QjyCqQhLjshbfmsXnLYqgHkgUvIIqMtnpK4iCt4butgxnBcCamLt+G/Pkk3DmgHJKWwbNGaRR+AaBIak7PIY4TsiKlYOnTtPb+gePX9jVdN0tlbjS6Hb1ebXD60EQ0Vq5/uGzTpiVmdWT9cnwmJhCEa2OwIbb4NYV0P8khDUIy+BjsGCMYlQxxiBGEAOSEcQ2aIJ0FAJGwKRPYyPkuvO845Ai34oCrnlcuaQ1gzQHiIKINHQmFAsBgqeQz7Fr1w5Z3DXbv2rG9PbBocrlINr3HOST58AX+FPb83NySbTha/90Sm4OoyR1J2bqTMg1QWkAjIEkQaMqrh5BEoN6RMFqw+KJQuwh1vRKFCIHsaLOT0I+KKjzKBAoSORxAqqgTlFV1KWub0QYm4gZr3iCIMeso5f5jYV2eddN/7m3OLvz4J9vGik9G3tsniXtGUQYHgtff/yirvyc3qJze/eIedX/gjlHw9bHIAqhMoErjWLrNbIFIdtZINucIZMF7316+sYZ1Gujk0sBQEURUUBQa1JPMIIRwYmQ5AxqBZVJL5GnzaZKIWvAe9q7p+CiEbN4+lx/1Mzenl2bRs4Goe9ZwvwZFbAanAgUhPNPPnIGjAyKb+5BjjoTtqyDWgUqZVxpgozEVEyW6x8e5/0/2s4n7hjivm01gkBSy03GPYo4n1q9YRedPIlJQ0KtIZH0HSupQryQKkFATBovzoM1QjYQxoaHGO/fgtm7Q5fOP1xtyjvTc6AYsKIBIEtbsvN6Ws0RS+Z3wNC4kaiMXnMpuuE3oAGuXCUTKD/fAUuv28Et/kT02DfzncfhrO/s5opVIxgL6n3qvpqeKBUijfs0GAURwRvB4skVMwRtBXw+hw2EXN6QMYLX1PLSKJS8QiZjiGohe3buYGLbWntEa7u0FjjppM6OlpUpgyR/dCm8qhH/o+PRy49a1JKd3mqd31a2YhSeegTJ5HBhSKZg+cnGhLfeNs5137mBs159LgB/d/LL+NDbLuWqhyY4rM1y0eIm6rEnsAZsigsquu9ooh6nQkaUqK2ZLz8xxq3bK4yUYWqL5dSOgHf1BLQaCN1+dKuHwAjGpnzZ2OBWmdExRWc253oeLg8fBvxmOZiVf4BKe2aUFMHCkXOmNoOP1VVCRIEgi08cgYGd48pbftTPP//zBznr1ecyURoHYPP2XZQjmNoccP36Mhp7rKSe8HTeSy0J4Dxk1LMj18Rpvy7xyJILeNuXb+SMt72dJ2qez/XHnL2+ykDsCQSc7sug+3BBgUp5jGI44OYX85BwOMCeA/GAnjTTIMpB0zvzUKtB4veBj4ogGcM1v5mgpnDGGcsAaGltY+O6x/jGFz9PrmDAeHZVlJGKoytvSVAadHfauzlFfaqPar7A8rsHeN1HvsB7L383ABdffBE7f3cPmx7fwKOh8KHtEdfNzTWwXfGTxVRjl6Ye16EyxvRsgMKCZxshmmegubRRKXV1FC3U41SLDtRDYGCi4rh9e8icJuH7136WB+5ZxfVfvYo3n30aYaVENmcxpIcMvYBN45xGHEOqCK8QFDN84dEh7IJjee/l76ZWqxLHdcbHxtjcP8REoswtGG4ve9aWHQVSDEizCqim+JB4Ja5W6AqErDDtgNvhK0EFMEJLXjwkScNiHjWCZIQtJcdIGDO3K8cvf3ozP/jezdTrUChAGIGrewotlpyB1nxjy0kb6O/TS4HACmEM39lU54yl8wAoFIoAXPWJ97Nr6146p2TI4IkRHqh4Ds8bXCMGVJX9HIp6nEjBGDJWuhHo0T/sAs/KB1iDMWEIVZtaP1E0SBEoTFL/qyceb7MUmz3FdDbC+z/5ccYHtnHVF69h6fwCLS0BSegx1qT+3tjwUQ/GwmN7IyoFw+CaO7jth9+ltbuX733r6/z4hu/T1ZVFVREjWCsMN8pp1fR3fEMJ8HSVaI3BqPrUjAfgAStArlTUCbWwHELVoIkiiU/d2CnTC4a8lUa+VqwRxkZiTj+nj0v/9wdYe/+v+Ninr+aiY7pQ08jjljR+VPHO40XBGrZHDglgz8gY7/mHN1BPwDlobTWMDNWxFnqmZFLvyJiniyqfun2iDWD0YGygcaw4T/WAQ2B9AzkTZXC0VIc4q/hUcGM8SQizWgOO7c7y0HDCQV0ZnBemNVnK29dy1Uf+kW9f/yPOO6GTsxYWkPGQIBA8mvYCHjIFg29YMUhnZ1QTyDdlyHiPiCGsJbzxnW+FJOLnK2/AAIe0BI1yWVD1JEmKM17TXGetZawakigjz5YF/iAI7gFBFbFs7h+LIfbpr7gGEMYOrYZccUyOfODZORLTmjUUspbNWwZY8alrOHRezDWv6UVqIV94sMQ/3r4XmzV4UWwGfjtUZ6xxioOaDTlJnSNrwRpDeTzmpL5X8Imrv8G/XvMt6kGOuUXhhJaAcqKTiYC4Yf3Ep5lArGUwrINl+/MejibWrNs+WodajAU08RA7rBp8y2wOnnsIKy9ZzIlHtjMshiEs0w+dzjUfOZYbL5xF08AYYFm3J+Tu7TWGywlBR5Y7d0ecduswP91RAwOLWgOOaA4oxdDZlKE1b5nVnSEZ3clvbvsxV77nnWwdrfJPiztoqdSJAO8U55W609QuCllrSayVnWEdFR5/NkrgD4bAKeBXAy0F+9DWcuwH90R2amsWlyj4BOa8DOldSGIM8wO4ZuYOSqNbiJsKdGWBkXH8hgouE2AT5Q2LW7l9S8jrfjrIQR0Z7twacmSnoW9qFl/3WIQrD2vi4ocnGBzzHNRTIJfJM7J7J28+5zwGYvjMGVN5dbnKWD2tghQlclB34FRw3tPUlGNUsVtr9SSX4VFq8ExssXmGNOgBufz08zYMOtmwdnckeO/VNVrZBtdg4pAkTkh0Hq2D0PXoZvyaXcT9ZVQsQaK4SsKpM3N89bROpuaETUN1zpyd4/q+DuY0B/hEcbFnSdHw3dO7OXhuM9snEp4YqjFQ9Rx2aCs/umgm74wjJoYj1Ai+UUDVEiVW8D7NAp0tTX5rrc5Q3W+cv2z51qcL5gNIg31gL1y5MjmySW757Zhb/LdjdU9T1igG2bIWsnlkSi8myIDGOBSVDGJtGi5xWrQLiqsrZ80pcNb0HPVEyVqB0KepsdEex5FyeBzxvSNb2OibGUqEKd3dHKIG1u6i3F/GZwJclDZWUaKEkwCIEFihrbnJP7hn1NSUn61ceZN7Nqr8GRUwGQZNmeDG+6vJBzeP1O28jMFnArQawiP3QPsUaGqFqIREJcgE4B1q01YvXQRT8BCHDqNKRpW4pkisGJcimCaKUYgjj6wd4pBikUOOejkU23GVGL9kJpn2rdTXrsNr2gqX6p6k0REaoDWfY8KI+dXohIrhB6AH3g5PhsEKMPeNxY8MOFavGvfIeOx87BEv4Aw6PIRufwpGRyERJHRIlF7s++uR2GMTD5HHhx4bKzLJEtV9GlaJxzjAJyTTZ5O0TSWp1sCHBOoIunpwavDeU64rdZd+zZjUy2Z2tLjfliqyNXQPrKnqgzxDF/hHcYIKGGM++/MJke0VRzJRT7NBoqAWJIs6g0Y+veqKhg5Ch0YNAev+95/XUwpM49T6k4rQyOHV4nbugP7tGO8Q53ATE0w89hiuHhPGUI39vlI4Y4SmXAZbzHPzwIjEcJXIC8MJ7iNHPg7+uKLceXE7p17WaVyYt7a1JYsXeZrYnFxgF1KecL+2GtjHBjeC9un9L6do4lKCwynOg48TPIIWingPrlzBxQmRM4yHjsgLdacUAyF2nkVTu90dsbef3jb86JnH9x3D6tX+yucwK3xOc4EeMOtAD23OPPxE6N+2KIdME6SaeMkFDY4/8eBBJrOEZx8Zmrp64/XG+xqnHqSJ4hNPEivOgXNKkqTI4RzElRpJLURVCJ0wVnPEmqa+QiAEKB1NRXxLi//Mtr2mjHnjd5/csqkHzAsyF2iEgS4H+9PQD0wJTLI98a98RcEkJGrD2JNt9DfepfU5rtGsuLRw0kmga4Cd92md7xKPS1LBk4blnVOcS8vbxCkeg0eYCD2l0ONIyeSCFYoZQAxzpvYkX+ofDh4qx998oMaXloNd+RyXqZ7zbHB9Y0J0R6x356wcP5zoIX9TCJJarKYW+cbmc+rSzpPm9uRpCttPWrdh4VTQSaFTBSSN15JEJ3VIGHsmQk+1ke5iD3krtGaFxCsHdU9xPxirBt/fW954bEv3ax+oVpIXZTi6HyDKsp7WW+8v1c+pqE5dWgiSSuxNNXTEcSrsJPGpflJQfk/oOGkI6cE1nieTivJpURMlSjnyTNSVWAWnQtxw+9asoe6UuZ2d7s7Q22t3j401F7LLbhye2LUCZPWLpQBAV4B8sRRVj2nO3/JwLT6npkx5RXM2Dp3aibqnXveEkSdOfOrmvuH6jXw9CXTs99xr6h1R4qkmnlJdKUdK5J8mObxCMWPIZ9KJ8dyuTreqrvZL/SOhz9hz7hhLHlgO9to/cklCDng3CNz50/JzBkrRLa9sMYe/szOX+Ci2g2Ei6aQrjYc0SUg6/TKyr4NDUgU4Td0/9rovOfiGCJ5Gfy+p8KDkraW3rTX5n2ocfGOwNJ6IPf+eirvzQJYjntee4KQS3jKztXP9SOk/l+TNOW/vyrFQcLsqkZ1IFCP73d+mTws+OShSGiSJgm8wPig41bQRAbJGGu2x0JUv+CSX1xtGy/bWsXBDMZe56Lax+JEDFf55bYmtT8PBfLEUVfsTbiyKVO+uJCeHRnKLmrJ+WmB9lKhUnZfYp6Mtj+D2o61c466nNHEIDsUhiELGQC4QilZoz+Z8S7HJrfFiv7KnZO6rxN+d1912wc2D1a2Tixt/zk3RfSOKU5syh9U0/tSsjJz7quYMJ2YtU1STcuxMKXZS9SoxKX+X3hRJCquNWt4aIWeEYiAUrfVZY33FBGajx/yyErKmGq9zxq64r+x/CMoKMFc+z3uGXrBl6f3dsK/Nnh4l7vKpVs44Km+DI7OW+YGhVdXhVVUVpyqTWx7WGDLGYI1oojAhxg4osr6e8FAYszl2j9YwX1vcNeu6/9q2LWwIri+5e4Ya88RJLoG+jsySauxek8efO8XK4TMCyfUaQ7cV2owhIykoxkBVYdQrA4ljR+wZdH7rhHKnt3blB5edf/uFK1e6/bHnJb0uvxzsYtBJRQjCKa3Zg6o+OcKhSwL8wRmRGUBz6g+SONU9ibLdGLPeO/PwvK5pa1fu3Fn7f0DX/0XdL7wCTN8f5Bx+bzT8/7XFcrDLU6B+0e5rkD+lMlbt156eAr4Rx6xIt9Bkkr7uAf1TWfv/AgxYkH5Da9T7AAAAAElFTkSuQmCC" />
|
|
9
|
-
<script type="module" crossorigin src="./assets/index-
|
|
9
|
+
<script type="module" crossorigin src="./assets/index-BRuMxVN5.js"></script>
|
|
10
10
|
<link rel="stylesheet" crossorigin href="./assets/index-BOjf7_dU.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chiltepin-studio",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.1",
|
|
4
4
|
"description": "Chiltepin Studio — the local, AI-native visual editor for documentation-as-code. Edit Markdown + typed YAML blocks for API docs, architecture & system design, ADRs, and frontend design systems with live preview, browse the built docs site, and present as slides — the .md files on disk stay the single source of truth. Launch with `chiltepin studio`.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"yaml": "^2.9.0",
|
|
32
32
|
"zustand": "^5.0.3",
|
|
33
33
|
"chiltepin-core": "0.24.0",
|
|
34
|
-
"chiltepin-render": "0.33.
|
|
34
|
+
"chiltepin-render": "0.33.1"
|
|
35
35
|
},
|
|
36
36
|
"publishConfig": {
|
|
37
37
|
"access": "public"
|