agentic-mermaid 0.3.2 → 0.4.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.
- package/CHANGELOG.md +105 -0
- package/README.md +2 -0
- package/dist/agent-core.d.ts +2 -2
- package/dist/agent-core.js +2 -2
- package/dist/agent.d.ts +2 -2
- package/dist/agent.js +4 -4
- package/dist/agentic-mermaid-mcp.js +5 -5
- package/dist/am.js +6 -6
- package/dist/browser-lazy/chunks/{architecture-WMSX5L4P.js → architecture-KTHE2HX3.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-EX6TP7QM.js → chunk-2XCPFAD5.js} +2 -2
- package/dist/browser-lazy/chunks/{chunk-TDGTBGV3.js → chunk-3H4F7RBT.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-RLS545DI.js → chunk-4EVLW2NJ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-TEH2PRKN.js → chunk-6OAPWSDO.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-AOCFMYYH.js → chunk-C7FJO2I3.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-ZZECLXC3.js → chunk-D3XXDKIO.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-CCTZFX43.js → chunk-DXA5WL7H.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-TBZAU7KC.js → chunk-G6OLSHRG.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-QYJMRNS3.js → chunk-L227EPFP.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-QMZ4Y6I7.js → chunk-LNIHDJSF.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-EBPTM2RP.js → chunk-NZRUMODH.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-ANTNEVJC.js → chunk-PXKL3O6H.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-WN7SFUCZ.js → chunk-SUFMSWTX.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-32FWKUUV.js → chunk-UAEZO5VL.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-W6Q4PHPC.js → chunk-X64T74C5.js} +1 -1
- package/dist/browser-lazy/chunks/{class-7JRALQIM.js → class-F7R6TJ73.js} +1 -1
- package/dist/browser-lazy/chunks/{er-UDCGHKBX.js → er-BDK7CM5L.js} +1 -1
- package/dist/browser-lazy/chunks/{flowchart-5FP7RRIK.js → flowchart-KFU6XV7S.js} +1 -1
- package/dist/browser-lazy/chunks/{gantt-NTOIC5CW.js → gantt-I64VVDSP.js} +1 -1
- package/dist/browser-lazy/chunks/{gitgraph-JYAPXUIJ.js → gitgraph-EDUVJ5IJ.js} +1 -1
- package/dist/browser-lazy/chunks/{journey-646EFIB6.js → journey-TLO2RNM3.js} +1 -1
- package/dist/browser-lazy/chunks/{mindmap-2SBTQHQO.js → mindmap-OJCNDYPM.js} +1 -1
- package/dist/browser-lazy/chunks/{pie-7FDXZ24K.js → pie-HVG6XO7K.js} +1 -1
- package/dist/browser-lazy/chunks/{quadrant-72UT4XAW.js → quadrant-U6S2L4MJ.js} +1 -1
- package/dist/browser-lazy/chunks/{radar-SU7BO56J.js → radar-ZDLOBTVG.js} +1 -1
- package/dist/browser-lazy/chunks/{render-core-Q2JWXDDL.js → render-core-Y2DFNMQG.js} +1 -1
- package/dist/browser-lazy/chunks/{sequence-5O5ET264.js → sequence-Z4WFS3VB.js} +1 -1
- package/dist/browser-lazy/chunks/{state-IWPLFQ6R.js → state-2HV2YGN3.js} +1 -1
- package/dist/browser-lazy/chunks/{timeline-WJWYHH5Y.js → timeline-XM4UFPOC.js} +1 -1
- package/dist/browser-lazy/chunks/{xychart-HHQVQA5O.js → xychart-7JDHWTQY.js} +1 -1
- package/dist/browser-lazy/index.js +1 -1
- package/dist/browser.global.js +5 -5
- package/dist/{chunk-NE6JBHSE.js → chunk-GGXCNCNA.js} +39 -44
- package/dist/{chunk-YWKCUBQN.js → chunk-IVD4NXNE.js} +2 -2
- package/dist/{chunk-IVN6KP3W.js → chunk-JDMRPUAG.js} +2 -2
- package/dist/{chunk-R5U67OIW.js → chunk-JWAAW3FH.js} +4 -4
- package/dist/{chunk-3D4EHVQ4.js → chunk-LCGBT32P.js} +7 -7
- package/dist/{chunk-GX7UT56Q.js → chunk-RWMZRUIC.js} +2 -2
- package/dist/{index-BFg_LoZS.d.ts → index-BGA_-6LV.d.ts} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/mcp-cli-4MLKC3ZH.js +17 -0
- package/docs/MCP-DIRECTORY-LISTINGS.md +72 -0
- package/docs/MCP-PRIVACY.md +52 -0
- package/docs/style-authoring.md +1 -1
- package/package.json +12 -1
- package/server.json +2 -2
- package/skills/agentic-mermaid-diagram-workflow/SKILL.md +64 -1
- package/skills/agentic-mermaid-diagram-workflow/references/hosted-mcp.md +110 -0
- package/dist/mcp-cli-XGZP6CMW.js +0 -17
|
@@ -22,7 +22,7 @@ import{f as bt,g as de}from"./chunk-P7HMSKHJ.js";var xt=/<(\/)?(?:(b|strong)|(i|
|
|
|
22
22
|
`).replace(/\\n/g,`
|
|
23
23
|
`).replace(/<\/?(?:sub|sup|small|mark)\s*>/gi,"").replace(/\*\*(.+?)\*\*/g,"<b>$1</b>").replace(/(?<!\*)\*([^\s*](?:[^*]*[^\s*])?)\*(?!\*)/g,"<i>$1</i>").replace(/~~(.+?)~~/g,"<s>$1</s>")}function fa(e){return e.replace(/<\/?(?:b|strong|i|em|u|s|del)\s*>/gi,"")}function Y(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function N(e){return Y(e)}function Wt(e){if(!Ue.test(e))return Y(e);let n=Ve(e);return n.length===0?"":n.every(r=>!r.bold&&!r.italic&&!r.underline&&!r.strikethrough)?n.map(r=>Y(r.text)).join(""):n.map(r=>{let i=Y(r.text);if(!r.bold&&!r.italic&&!r.underline&&!r.strikethrough)return i;let s=[];r.bold&&s.push('font-weight="bold"'),r.italic&&s.push('font-style="italic"');let o=[];return r.underline&&o.push("underline"),r.strikethrough&&o.push("line-through"),o.length&&s.push(`text-decoration="${o.join(" ")}"`),`<tspan ${s.join(" ")}>${i}</tspan>`}).join("")}function Ni(e,n,t,r,i,s=.35){let o=e.split(`
|
|
24
24
|
`);if(o.length===1){let u=r*s;return`<text x="${n}" y="${t}" ${i} dy="${u}">${Wt(e)}</text>`}let a=r*wn,c=-((o.length-1)/2)*a+r*s,d=o.map((u,f)=>`<tspan x="${n}" dy="${f===0?c:a}">${Wt(u)}</tspan>`).join("");return`<text x="${n}" y="${t}" ${i}>${d}</text>`}function pa(e,n,t,r,i,s,o,a,c){let d=r+o*2,u=i+o*2,f=`<rect x="${n-d/2}" y="${t-u/2}" width="${d}" height="${u}" ${c} />`,m=Ni(e,n,t,s,a);return`${f}
|
|
25
|
-
${m}`}var Gt=Object.freeze(["svg","png","ascii","unicode","html","layout"]);var Ti=1,Ri=/^[a-z][a-z0-9.-]*:[a-z0-9][a-z0-9._/-]*$/,Mi=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/,vi=new Set(["required","preferred","optional"]);function qe(e){return Ri.test(e)}function $e(e){if(typeof e!="string")return;let n=e.match(Mi);if(!n)return;let t=n[4];if(!t?.split(".").some(r=>/^\d+$/.test(r)&&r.length>1&&r.startsWith("0")))return{major:n[1],minor:n[2],patch:n[3],...t?{prerelease:t}:{}}}function On(e,n){return e.length!==n.length?e.length<n.length?-1:1:e===n?0:e<n?-1:1}function Ai(e,n){return On(e.major,n.major)||On(e.minor,n.minor)||On(e.patch,n.patch)}function He(e){if(typeof e!="string")return!1;let n=e.trim();if(n==="*"||/^(0|[1-9]\d*)\.(?:x|\*)$/i.test(n))return!0;let t=n.match(/^(\^|~|>=)?(.+)$/),r=$e(t?.[2]??"");return!t||!r?!1:!r.prerelease||t[1]===void 0}function In(e,n){let t=$e(e);if(!t||!He(n))return!1;let r=n.trim();if(r==="*")return t.prerelease===void 0;let i=r.match(/^(0|[1-9]\d*)\.(?:x|\*)$/i);if(i)return t.prerelease===void 0&&t.major===i[1];let s=r.match(/^(\^|~|>=)?(.+)$/),o=$e(s?.[2]??"");if(!s||!o)return!1;let a=Ai(t,o);if(t.prerelease||o.prerelease)return s[1]===void 0&&a===0&&t.prerelease===o.prerelease;switch(s[1]){case">=":return a>=0;case"~":return a>=0&&t.major===o.major&&t.minor===o.minor;case"^":return a<0?!1:o.major!=="0"?t.major===o.major:o.minor!=="0"?t.major==="0"&&t.minor===o.minor:t.major==="0"&&t.minor==="0"&&t.patch===o.patch;default:return a===0}}function _i(e,n){if(!Array.isArray(e))throw new TypeError("Capability offers must be an array");if(!Array.isArray(n))throw new TypeError("Capability requirements must be an array");let t=new Map;for(let[o,a]of e.entries()){if(!a||typeof a!="object"||Array.isArray(a))throw new TypeError(`Capability offer at index ${o} must be an object`);if(typeof a.id!="string")throw new Error(`Invalid capability id "${String(a.id)}"`);if(!qe(a.id))throw new Error(`Invalid capability id "${a.id}"`);if(typeof a.version!="string")throw new Error(`Capability "${a.id}" has invalid semantic version "${String(a.version)}"`);if(!$e(a.version))throw new Error(`Capability "${a.id}" has invalid semantic version "${a.version}"`);if(t.has(a.id))throw new Error(`Duplicate capability offer "${a.id}"`);t.set(a.id,a.version)}let r=new Set,i=n.map((o,a)=>{if(!o||typeof o!="object"||Array.isArray(o))throw new TypeError(`Capability requirement at index ${a} must be an object`);if(typeof o.id!="string")throw new Error(`Invalid capability id "${String(o.id)}"`);if(!qe(o.id))throw new Error(`Invalid capability id "${o.id}"`);if(!vi.has(o.level))throw new Error(`Capability "${o.id}" has invalid requirement level "${String(o.level)}"`);if(!He(o.range))throw new Error(`Capability "${o.id}" has invalid semantic-version range "${String(o.range)}"`);if(r.has(o.id))throw new Error(`Duplicate capability requirement "${o.id}"`);r.add(o.id);let c=t.get(o.id),d=c===void 0?"unsupported":In(c,o.range)?"selected":"incompatible";return Object.freeze({id:o.id,range:o.range,level:o.level,status:d,...c!==void 0?{version:c}:{}})}),s=i.every(o=>o.level!=="required"||o.status==="selected");return Object.freeze({version:Ti,accepted:s,resolutions:Object.freeze(i)})}var Oi=Object.freeze([{id:"core:render-request",version:"1.0.0"},{id:"core:family-descriptor",version:"1.0.0"}].map(e=>Object.freeze(e)));function Ii(e,n,t,r){let i={id:`output:${e}`,version:"1.0.0"},s=Gt.includes(e);return _i([...Oi,...n,...!s||!r?[]:[i]],[{id:"core:render-request",range:"^1.0.0",level:"required"},...t,{id:`output:${e}`,range:"^1.0.0",level:"required"}])}function ha(e,n){return Ii(e,n.offers,n.requirements,n.outputAvailable)}var qt="2.0.0";var Ht="0.3.2";var Pi=Object.freeze({core:Ht,scene:qt});function zi(e){let n=[];for(let[t,r]of Object.entries(e.compatibility)){if(r===void 0)continue;let i=Pi[t];if(!He(r)){n.push(Object.freeze({contract:t,range:r,status:"invalid",diagnostic:`Compatibility requirement "${t}" has invalid semantic-version range "${r}".`}));continue}if(i!==void 0){let s=In(i,r);n.push(Object.freeze({contract:t,range:r,status:s?"compatible":"incompatible",version:i,...s?{}:{diagnostic:`Compatibility requirement "${t}" range "${r}" does not include host version ${i}.`}}));continue}if(!qe(t)){n.push(Object.freeze({contract:t,range:r,status:"invalid",diagnostic:`Unknown compatibility requirement "${t}" must use a namespace.`}));continue}n.push(Object.freeze({contract:t,range:r,status:"deferred"}))}return Object.freeze({accepted:n.every(t=>t.status==="compatible"||t.status==="deferred"),resolutions:Object.freeze(n)})}var Kt=/^[a-z][a-z0-9-]*$/,Xt=/^[a-z0-9][a-z0-9._/-]*$/,Yt=new WeakSet,Ke=new WeakMap;function Di(e,n){let t=Ke.get(e);if(t)throw t.reentrantAttempted=!0,new Error(`Extension registry mutation is forbidden while ${t.operation} is in progress`);let r={operation:n,reentrantAttempted:!1};return Ke.set(e,r),r}function ji(e){if(e.reentrantAttempted)throw new Error(`Extension registry mutation is forbidden after a reentrant attempt during ${e.operation}`)}function Bi(e,n){Ke.get(e)===n&&Ke.delete(e)}function Zt(e,n){if(!Kt.test(e))throw new Error(`Invalid extension kind "${e}"`);if(!Xt.test(n))throw new Error(`Invalid ${e} extension local id "${n}"`);return`${e}:${n}`}function Xe(e){let n=e.indexOf(":");if(n<=0||n===e.length-1||e.indexOf(":",n+1)!==-1)return;let t=e.slice(0,n),r=e.slice(n+1);if(!(!Kt.test(t)||!Xt.test(r)))return{kind:t,localId:r}}function Ye(e){let n=e.id,t=e.kind,r=e.version,i=e.compatibility,s=e.provenance,o=Object.freeze({...i??{}}),a=Object.freeze({...s}),c=Xe(n);if(!c||c.kind!==t)throw new Error(`Extension id "${n}" must use the "${t}:" namespace`);if(!$e(r))throw new Error(`Extension "${n}" requires a semantic version (received "${r}")`);if(a.owner.trim().length===0)throw new Error(`Extension "${n}" requires a provenance owner`);if(a.source.trim().length===0)throw new Error(`Extension "${n}" requires a provenance source`);let d=Object.freeze({id:n,kind:t,version:r,compatibility:o,provenance:a}),u=zi(d);if(!u.accepted)throw new Error(`Extension "${n}" has incompatible requirements: ${u.resolutions.filter(f=>f.status==="incompatible"||f.status==="invalid").map(f=>f.diagnostic).join("; ")}`);return Yt.add(d),d}var Pn=class extends Error{constructor(t,r){super(`Cannot register ${t.kind} "${t.id}" for owner "${t.provenance.owner}": already registered by "${r.provenance.owner}" at version ${r.version}`);this.incoming=t;this.existing=r;this.name="ExtensionCollisionError"}incoming;existing;code="EXTENSION_ID_COLLISION"};function Jt(e,n){let t=Di(e,"extension registration");try{let r=Object.freeze({identity:n.identity,value:n.value});if(!Yt.has(r.identity))throw new TypeError("Extension registration identity must be created by createExtensionIdentity()");let i=r.identity.id,s=e.get(i);if(s)throw new Pn(r.identity,s.identity);ji(t),e.set(i,r)}finally{Bi(e,t)}}var wa=Object.freeze({fontFamily:{kind:"font",description:"Safe font family/stack for roles whose descriptor exposes family-specific typography."},fontSize:{kind:"number",minimum:1,maximum:256,expected:"between 1 and 256",description:"Font size in SVG user units."},fontWeight:{kind:"number",minimum:1,maximum:1e3,expected:"between 1 and 1000",description:"CSS numeric font weight."},letterSpacing:{kind:"number",minimum:-2,maximum:4,expected:"between -2 and 4",description:"Letter spacing in SVG user units."},textTransform:{kind:"enum",values:["uppercase","lowercase","capitalize"],description:"Text transformation."},textColor:{kind:"color",description:"Text paint."},paddingX:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Horizontal role padding."},paddingY:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Vertical role padding."},cornerRadius:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Applicable corner radius."},lineWidth:{kind:"number",exclusiveMinimum:0,maximum:20,expected:"greater than 0 and at most 20",description:"Border or connector width."},bendRadius:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Applicable connector bend radius."},fillColor:{kind:"color",description:"Surface fill paint."},borderColor:{kind:"color",description:"Border paint."},strokeColor:{kind:"color",description:"Connector stroke paint."},headerFillColor:{kind:"color",description:"Group header surface paint."},cue:{kind:"enum",values:["none","outline","double-line","pattern"],description:"Non-color semantic cue on roles whose family renderer exposes a cue projection."}}),zn=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor","paddingX","paddingY","cornerRadius","lineWidth","fillColor","borderColor"]),Qt=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor","lineWidth","bendRadius","strokeColor"]),Li=Object.freeze([...zn,"fontFamily","headerFillColor"]),Fi=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor"]),Ui=Object.freeze(["fontFamily","fontSize","fontWeight","letterSpacing","textTransform","textColor","fillColor","borderColor","strokeColor","lineWidth","cue"]),Vi=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth","cue"]),Wi=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth","textColor"]),Dn=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth"]),Gi=Object.freeze(["borderColor","strokeColor","lineWidth"]),er=Object.freeze([...Dn,"cue"]);function W(e,n){return Object.freeze({properties:e,...n?{bindingFamilies:Object.freeze([...n])}:{}})}var Oe=Object.freeze({node:W(zn),edge:W(Qt),group:W(Li),"group-header":W(Ui,["journey"]),label:W(Fi),actor:W(zn,["sequence"]),relationship:W(Qt,["er"]),"pie-slice":W(Vi,["pie","radar"]),legend:W(Wi,["radar"]),bar:W(Dn,["xychart"]),series:W(Gi,["xychart"]),point:W(Dn,["radar"]),task:W(er,["gantt"]),milestone:W(er,["gantt"])}),qi=Object.freeze(Object.keys(Oe)),Hi=Object.freeze(qi.filter(e=>"bindingFamilies"in Oe[e])),Na=Object.freeze([...new Set(Hi.flatMap(e=>Oe[e].properties))]);var Z=["shape","connector","text","group","document"],pe=["shape"],Ze=["connector"],nr=["text"],Ki=["shape","text"],ee=["shape","group"],Xi=["shape","text","group"],Yi=["connector","group"],Zi=["document"],tr=["text","group"];var Ji=["shape","text","document"],Qi=["document"];function $(e,n,t,r={}){let i=Oe[e];return Object.freeze({applicableKinds:n,styleFallback:t,styleConsumption:i?"exact":"fallback-only",styleExtras:Object.freeze([]),...i?{styleProperties:i.properties}:{},styleBindingFamilies:Object.freeze([...i?.bindingFamilies??[]]),domIdentity:!1,relation:!1,sketch:"none",textHalo:!1,...r})}var Je=Object.freeze({node:$("node",ee,"node",{domIdentity:!0,sketch:"shape"}),edge:$("edge",Ze,"edge",{domIdentity:!0,relation:!0,sketch:"connector"}),"edge-label":$("edge-label",tr,"label"),group:$("group",ee,"group",{domIdentity:!0,sketch:"shape"}),"group-header":$("group-header",Z,"group",{sketch:"shape",textHalo:!0}),label:$("label",nr,"label",{textHalo:!0}),actor:$("actor",ee,"node",{domIdentity:!0,sketch:"shape"}),lifeline:$("lifeline",Ze,"edge",{sketch:"connector"}),activation:$("activation",pe,"node",{domIdentity:!0,sketch:"shape"}),message:$("message",Yi,"edge",{domIdentity:!0,relation:!0,sketch:"connector"}),block:$("block",Z,"group",{domIdentity:!0,sketch:"shape"}),note:$("note",ee,"group",{domIdentity:!0,sketch:"shape"}),"class-box":$("class-box",ee,"node",{domIdentity:!0,sketch:"shape"}),member:$("member",nr,"label",{domIdentity:!0,textHalo:!0}),entity:$("entity",ee,"node",{domIdentity:!0,sketch:"shape"}),attribute:$("attribute",tr,"label",{domIdentity:!0,textHalo:!0}),relationship:$("relationship",Ze,"edge",{domIdentity:!0,relation:!0,sketch:"connector"}),cardinality:$("cardinality",Ki,"label",{domIdentity:!0,textHalo:!0}),"pie-slice":$("pie-slice",pe,"node",{domIdentity:!0,sketch:"shape"}),legend:$("legend",Xi,"group",{textHalo:!0}),bar:$("bar",pe,"node",{domIdentity:!0,sketch:"shape"}),series:$("series",Ze,"edge",{domIdentity:!0,sketch:"connector"}),point:$("point",pe,"node",{domIdentity:!0}),axis:$("axis",Z,"label",{textHalo:!0}),grid:$("grid",Z,"edge"),plate:$("plate",pe,"node",{domIdentity:!0,sketch:"shape"}),section:$("section",Z,"group",{domIdentity:!0,sketch:"shape",textHalo:!0}),task:$("task",Z,"node",{domIdentity:!0,sketch:"shape"}),milestone:$("milestone",pe,"node",{domIdentity:!0,sketch:"shape"}),"marker-line":$("marker-line",Z,"edge"),rail:$("rail",Z,"edge",{sketch:"connector"}),period:$("period",ee,"group",{domIdentity:!0,sketch:"shape"}),event:$("event",ee,"group",{domIdentity:!0,sketch:"shape"}),score:$("score",Z,"node"),"actor-pill":$("actor-pill",pe,"node",{sketch:"shape"}),service:$("service",ee,"node",{domIdentity:!0,sketch:"shape"}),junction:$("junction",ee,"node",{domIdentity:!0}),icon:$("icon",Ji,"node"),title:$("title",Z,"label",{domIdentity:!0}),defs:$("defs",Zi,"label"),prelude:$("prelude",Qi,"label"),chrome:$("chrome",Z,"label")}),eo=Object.freeze({applicableKinds:Z,styleFallback:"label",styleConsumption:"fallback-only",styleExtras:Object.freeze([]),styleBindingFamilies:Object.freeze([]),domIdentity:!0,relation:!1,sketch:"none",textHalo:!1}),va=Object.freeze(Object.entries(Je).map(([e,n])=>Object.freeze({identity:Ye({id:`role:${e}`,kind:"role",version:"1.0.0",compatibility:{core:"^0.3.0",scene:"^2.0.0"},provenance:{owner:"agentic-mermaid",source:"built-in",reference:"src/scene/roles.ts"}}),role:e,traits:n,style:(()=>{let t=n.styleFallback;return Object.freeze({fallbackRole:t,applicableProperties:n.styleProperties??Object.freeze([])})})()})));function no(e){let n=Je[e];return n?{traits:n,source:"builtin"}:{traits:eo,source:"namespaced-safe"}}function we(e){return no(e).traits}function Ne(e){return!e.includes("->")&&!/[#:"\[\],\u0000-\u001f]/.test(e)}function Ia(e,n,t=""){let r=Ne(e)&&Ne(n)?`${e}->${n}`:`relation:${JSON.stringify([e,n])}`;return t?`${t}:${r}`:r}function Pa(e,...n){let t=n.map(String);return Ne(e)&&t.every(Ne)?[e,...t].join(":"):`part:${JSON.stringify([e,...t])}`}function za(e,n,...t){let r=t.map(String);return Ne(n)&&r.every(Ne)?[e,n,...r].join(":"):`${e}:${JSON.stringify([n,...r])}`}function to(e){return e.replace(/"/g,'"').replace(/'|'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function Qe(e,n){let t=e.match(/^\s*<([A-Za-z][\w:-]*)\b[^>]*>/)?.[0]??"",r=a=>{let c=t.match(new RegExp(`\\s${a}="([^"]*)"`))?.[1];return c===void 0?void 0:to(c)},i=(r("class")??"").split(/\s+/).filter(Boolean),s=r("data-from"),o=r("data-to");return{id:r("data-id")??n.id,role:n.role,...s!==void 0?{from:s}:{},...o!==void 0?{to:o}:{},...i.length>0?{classNames:i}:{}}}function jn(e){return we(e).domIdentity}function Ie(e,n){if(!jn(n.role))return e;let t=e.match(/^\s*<([A-Za-z][\w:-]*)\b[^>]*>/)?.[0];if(!t||t.startsWith("<style")||t.startsWith("<defs")||t.startsWith("<svg"))return e;let r=(s,o,a)=>{let c=N(a),d=new RegExp(`\\s${o}="[^"]*"`);if(d.test(s))return s.replace(d,` ${o}="${c}"`);let u=s.endsWith("/>")?"/>":">";return`${s.slice(0,-u.length).trimEnd()} ${o}="${c}"${u==="/>"?" /":""}>`},i=r(r(t,"data-id",n.id),"data-role",n.role);return n.from!==void 0&&(i=r(i,"data-from",n.from)),n.to!==void 0&&(i=r(i,"data-to",n.to)),i===t?e:e.replace(t,i)}function G(e,n,t=0){return Math.abs(e.x-n.x)<=t&&Math.abs(e.y-n.y)<=t}function Bn(e,n){let t=n.x-e.x,r=n.y-e.y,i=Math.hypot(t,r);return Number.isFinite(i)&&i>0?{x:t/i,y:r/i}:void 0}function Te(e,n){return{x:(e.x+n.x)/2,y:(e.y+n.y)/2}}function me(e,n){return Math.hypot(n.x-e.x,n.y-e.y)}function rr(e,n,t){let r=me(n,t);return r===0?me(e,n):Math.abs((t.x-n.x)*(n.y-e.y)-(n.x-e.x)*(t.y-n.y))/r}function ir(e,n,t,r,i=.5,s=12){if(!Number.isFinite(i)||i<=0)throw new TypeError("Cubic flattening tolerance must be positive and finite");if(!Number.isSafeInteger(s)||s<0)throw new TypeError("Cubic flattening maxDepth must be a non-negative safe integer");for(let c of[e,n,t,r])if(!Number.isFinite(c.x)||!Number.isFinite(c.y))throw new TypeError("Cubic flattening points must be finite");let o=[{...e}],a=(c,d,u,f,m)=>{let p=me(c,f),g=me(c,d)+me(d,u)+me(u,f)-p;if(Math.max(rr(d,c,f),rr(u,c,f))<=i&&g<=i||m>=s){o.push({...f});return}let x=Te(c,d),v=Te(d,u),y=Te(u,f),E=Te(x,v),w=Te(v,y),j=Te(E,w);a(c,x,E,j,m+1),a(j,w,y,f,m+1)};return a(e,n,t,r,0),o}function ae(...e){let n=e[0];if(n)for(let t=1;t<e.length;t++){let r=Bn(n,e[t]);if(r)return r}}function ro(e,n){return n.kind==="line"?ae(e,n.end):n.kind==="quadratic"?ae(e,n.control,n.end):ae(e,n.control1,n.control2,n.end)}function io(e,n){return n.kind==="line"?ae(e,n.end):n.kind==="quadratic"?ae(n.control,n.end)??ae(e,n.end):ae(n.control2,n.end)??ae(n.control1,n.end)??ae(e,n.end)}function oo(e,n,t){return[{x:e.x+(n.x-e.x)*2/3,y:e.y+(n.y-e.y)*2/3},{x:t.x+(n.x-t.x)*2/3,y:t.y+(n.y-t.y)*2/3}]}function or(e,n,t,r=.5){for(let d of[n,...t.flatMap(u=>u.kind==="line"?[u.end]:u.kind==="quadratic"?[u.control,u.end]:[u.control1,u.control2,u.end])])if(!Number.isFinite(d.x)||!Number.isFinite(d.y))throw new TypeError("Connector path projection points must be finite");let i=[{...n}],s=[],o=n;for(let d of t){if(s.push(o),d.kind==="line")i.push({...d.end});else if(d.kind==="quadratic"){let[u,f]=oo(o,d.control,d.end);i.push(...ir(o,u,f,d.end,r).slice(1))}else i.push(...ir(o,d.control1,d.control2,d.end,r).slice(1));o=d.end}let a;for(let d=0;d<t.length&&!a;d++)a=ro(s[d],t[d]);let c;for(let d=t.length-1;d>=0&&!c;d--)c=io(s[d],t[d]);return{geometry:{kind:"path",d:e,points:i},contours:[{start:{...n},end:{...o},closed:!1,...a?{startTangent:a}:{},...c?{endTangent:c}:{}}]}}function Ln(e,n,t){return t==="manhattan"?Math.abs(n.x-e.x)+Math.abs(n.y-e.y):me(e,n)}function sr(e,n){if(n===void 0)return e;if(!Number.isSafeInteger(n)||n<0)throw new TypeError("Rounded connector precision must be a non-negative safe integer");let t=10**n;return Math.round(e*t)/t}function ar(e,n,t,r,i){let s=Ln(e,n,r);if(s===0)return{...e};let o=t/s;return{x:sr(e.x+(n.x-e.x)*o,i),y:sr(e.y+(n.y-e.y)*o,i)}}function ja(e,n,t={}){if(e.length===0)throw new RangeError("Rounded connector paths require at least one point");if(!Number.isFinite(n))throw new TypeError("Rounded connector radius must be finite");let r=t.metric??"euclidean",i=e[0],s=[];if(n<=0||e.length<3){for(let d=1;d<e.length;d++)s.push({kind:"line",end:e[d]});let c=`M${e.map(d=>`${d.x},${d.y}`).join(" L")}`;return or(c,i,s,t.tolerance)}let o=[`M${i.x},${i.y}`];for(let c=1;c<e.length-1;c++){let d=e[c-1],u=e[c],f=e[c+1],m=Ln(d,u,r),p=Ln(u,f,r),g=Math.min(n,m/2,p/2);if(g<=0){o.push(`L${u.x},${u.y}`),s.push({kind:"line",end:u});continue}let b=ar(u,d,g,r,t.precision),x=ar(u,f,g,r,t.precision);o.push(`L${b.x},${b.y}`),o.push(`Q${u.x},${u.y} ${x.x},${x.y}`),s.push({kind:"line",end:b}),s.push({kind:"quadratic",control:u,end:x})}let a=e.at(-1);return o.push(`L${a.x},${a.y}`),s.push({kind:"line",end:a}),or(o.join(" "),i,s,t.tolerance)}function ce(e,n=!1){return e.kind==="line"?[{points:[{x:e.x1,y:e.y1},{x:e.x2,y:e.y2}],closed:!1}]:e.kind==="path"&&e.subpaths!==void 0?e.subpaths:[{points:e.points,closed:n}]}function en(e){return e.kind==="path"&&/[AaCcQqSsTt]/.test(e.d)}function nn(e,n=!1){let t=ce(e,n),r=Fn(e,n);return t.flatMap((i,s)=>{let o=i.points[0],a=i.points.at(-1);if(!o||!a)return[];let c=r.filter(f=>f.subpathIndex===s),d;for(let f=0;f<c.length&&!d;f++)d=Bn(c[f].start,c[f].end);let u;for(let f=c.length-1;f>=0&&!u;f--)u=Bn(c[f].start,c[f].end);return[{start:{...o},end:{...i.closed?o:a},closed:i.closed,...d?{startTangent:d}:{},...u?{endTangent:u}:{}}]})}function cr(e,n=!1){let t=[],r=[];return ce(e,n).forEach((i,s)=>{let o=i.points[0],a=i.closed?o:i.points.at(-1);o&&t.push({point:{...o},contourIndex:s}),a&&r.push({point:{...a},contourIndex:s})}),{starts:t,ends:r}}function tn(e,n=!1){let t=[],r=[];for(let i of ce(e,n)){let s=i.points[0],o=i.closed?s:i.points.at(-1);s&&t.push(s),o&&r.push(o)}return{starts:t,ends:r}}function Fn(e,n=!1){let t=[];for(let[r,i]of ce(e,n).entries()){for(let a=1;a<i.points.length;a++)t.push({start:i.points[a-1],end:i.points[a],subpathIndex:r,closing:!1});let s=i.points[0],o=i.points.at(-1);i.closed&&s&&o&&!G(s,o)&&t.push({start:o,end:s,subpathIndex:r,closing:!0})}return t}function rn(e,n=!1){return e.kind==="line"?[]:e.kind==="path"?e.markerMidpoints??[]:ce(e,n).flatMap(t=>{if(t.points.length<2)return[];let r=t.closed&&G(t.points[0],t.points.at(-1))?t.points.slice(0,-1):t.points;return t.closed?r.slice(1):r.slice(1,-1)})}function dr(e,n=!1){if(e.kind==="line")return[];let t=ce(e,n);return e.kind==="path"?(e.markerMidpoints??[]).map(r=>{if(t.length===1)return{point:{...r},contourIndex:0};let i=t.flatMap((s,o)=>s.points.some(a=>G(a,r))?[o]:[]);if(i.length!==1)throw new TypeError("Path marker-mid vertices on multiple subpaths must belong to exactly one typed contour");return{point:{...r},contourIndex:i[0]}}):t.flatMap((r,i)=>{if(r.points.length<2)return[];let s=r.closed&&G(r.points[0],r.points.at(-1))?r.points.slice(0,-1):r.points;return(r.closed?s.slice(1):s.slice(1,-1)).map(a=>({point:{...a},contourIndex:i}))})}function on(e){return e.match(/[Mm](?=\s*[-+.]?\d)/g)?.length??0}function Un(e){return e.replace(/"/g,'"').replace(/'|'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function Vn(e,n){if(!we(e.role).relation||e.from===void 0||e.to===void 0)return;let t={from:e.from,to:e.to,...n?{label:n}:{}};return{label:`${t.from} to ${t.to}${t.label?`: ${t.label}`:""}`,role:"graphics-symbol",roleDescription:"relation",relation:t}}function Wn(e,n){let r=(e.match(/^\s*<[A-Za-z][\w:-]*\b[^>]*>/)?.[0]??"").match(/\sdata-label="([^"]*)"/)?.[1];return Vn({...n,...n.from!==void 0?{from:Un(n.from)}:{},...n.to!==void 0?{to:Un(n.to)}:{}},r?Un(r):void 0)}function sn(e,n){if(!n)return e;let t=e.match(/^\s*<[A-Za-z][\w:-]*\b[^>]*>/)?.[0];if(!t)return e;let r=[];if(/\srole=/.test(t)||r.push(`role="${n.role}"`),/\saria-roledescription=/.test(t)||r.push(`aria-roledescription="${n.roleDescription}"`),/\saria-label=/.test(t)||r.push(`aria-label="${N(n.label)}"`),r.length===0)return e;let i=t.endsWith("/>")?"/>":">",s=t.slice(0,-i.length).trimEnd();return e.replace(t,`${s} ${r.join(" ")}${i==="/>"?" /":""}>`)}function Gn(e){return e?{...e,...e.geometry?{geometry:e.geometry}:{},...e.size?{size:{...e.size}}:{},...e.viewBox?{viewBox:{...e.viewBox}}:{},...e.ref?{ref:{...e.ref}}:{},...e.bounds?{bounds:{...e.bounds}}:{},...e.paint?{paint:{...e.paint}}:{}}:void 0}function so(e,n){let t=["continuous-geometry","stroke-width","stroke-cap","stroke-join"];return e.bendRadius>0&&t.push("bend-radius"),n.opacity!==void 0&&t.push("stroke-opacity"),(n.lineJoin==="miter"||n.lineJoin==="miter-clip")&&t.push("stroke-miter"),n.dash&&t.push("dash-pattern"),n.dash?.offset!==void 0&&t.push("dash-offset"),n.pathLength!==void 0&&t.push("path-length"),n.paintOrder!==void 0&&t.push("paint-order"),n.nonScaling&&t.push("non-scaling-stroke"),t}function an(e){let n=so(e.route,e.stroke),t=cr(e.geometry,e.route.closed),r=dr(e.geometry,e.route.closed),i={start:e.markers.start?t.starts.map(s=>({markerId:e.markers.start.id,point:{...s.point},contourIndex:s.contourIndex})):[],mid:e.markers.mid.length===0?[]:r.map((s,o)=>({markerId:(e.markers.mid.length===1?e.markers.mid[0]:e.markers.mid[o]).id,point:{...s.point},contourIndex:s.contourIndex})),end:e.markers.end?t.ends.map(s=>({markerId:e.markers.end.id,point:{...s.point},contourIndex:s.contourIndex})):[]};return{realization:e.lineStyle==="invisible"?"unsupported":"projected",topology:e.geometry.kind,geometry:e.geometry,direction:e.relationship.direction,relationship:e.relationship.kind,markers:{...e.markers.start?{start:Gn(e.markers.start)}:{},mid:e.markers.mid.map(s=>Gn(s)),...e.markers.end?{end:Gn(e.markers.end)}:{}},markerPlacements:i,endpoints:{...e.endpoints,...e.endpoints.start?{start:{...e.endpoints.start,...e.endpoints.start.point?{point:{...e.endpoints.start.point}}:{}}}:{},...e.endpoints.end?{end:{...e.endpoints.end,...e.endpoints.end.point?{point:{...e.endpoints.end.point}}:{}}}:{}},route:{ownership:e.route.ownership,closed:e.route.closed,bendRadius:e.route.bendRadius,contours:e.route.contours.map(s=>({...s,start:{...s.start},end:{...s.end},...s.startTangent?{startTangent:{...s.startTangent}}:{},...s.endTangent?{endTangent:{...s.endTangent}}:{}})),...e.route.startTangent?{startTangent:{...e.route.startTangent}}:{},...e.route.endTangent?{endTangent:{...e.route.endTangent}}:{},labelAnchors:e.route.labelAnchors.map(s=>({...s}))},stroke:{...e.stroke,...e.stroke.dash?{dash:{...e.stroke.dash,array:Array.isArray(e.stroke.dash.array)?[...e.stroke.dash.array]:e.stroke.dash.array}}:{}},hit:{...e.hit,geometry:e.hit.geometry},...e.transform?{transform:{...e.transform}}:{},labels:e.labels.map(s=>({...s,...s.anchor?{anchor:{...s.anchor}}:{},...s.bounds?{bounds:{...s.bounds}}:{},...s.halo?{halo:{...s.halo}}:{},...s.paint?{paint:{...s.paint}}:{},...s.visual?{visual:{...s.visual}}:{}})),lineStyle:e.lineStyle,strokeLosses:n,diagnostics:[e.lineStyle==="invisible"?"This connector affects layout but is intentionally absent from terminal output.":`The terminal grid preserves connector semantics while projecting continuous stroke fields: ${n.join(", ")}.`,...e.additionalDiagnostics??[]]}}var cn=new WeakMap;function ao(e){let n=e.match(/^<([A-Za-z_][A-Za-z0-9_.:-]*)/);if(!n||e.startsWith("</")||e.startsWith("<!")||e.startsWith("<?"))return e;let t=n[1];if(t!=="svg")return e;let r=/\/\s*>$/.test(e),i=r?e.lastIndexOf("/"):e.length-1,s=[],o=n[0].length;for(;o<i;){for(;/\s/.test(e[o]??"");)o++;if(o>=i)break;let d=e.slice(o).match(/^([^\s=<>/]+)/);if(!d)return e;let u=d[1];for(o+=d[0].length;/\s/.test(e[o]??"");)o++;if(e[o]!=="=")return e;for(o++;/\s/.test(e[o]??"");)o++;let f=e[o];if(f!=='"'&&f!=="'")return e;o++;let m=o;for(;o<i&&e[o]!==f;)o++;if(e[o]!==f)return e;let p=e.slice(m,o);o++,s.push({name:u,value:f==='"'?p:p.replaceAll('"',"""),index:s.length})}let a=new Map([["xmlns",0],["width",1],["height",2],["viewBox",3],["style",4]]);s.sort((d,u)=>{let f=a.get(d.name)??100,m=a.get(u.name)??100;return f-m||bt(d.name,u.name)||d.index-u.index});let c=s.map(d=>`${d.name}="${d.value}"`).join(" ");return`<${t}${c?` ${c}`:""}${r?" /":""}>`}function ue(e){let n="",t=0;for(;t<e.length;){let r=e.indexOf("<",t);if(r<0)return n+e.slice(t);if(n+=e.slice(t,r),e.startsWith("<!--",r)){let o=e.indexOf("-->",r+4);if(o<0)return n+e.slice(r);n+=e.slice(r,o+3),t=o+3;continue}let i,s=r+1;for(;s<e.length;s++){let o=e[s];if(i)o===i&&(i=void 0);else if(o==='"'||o==="'")i=o;else if(o===">")break}if(s>=e.length)return n+e.slice(r);n+=ao(e.slice(r,s+1)),t=s+1}return n}function ne(e,n){return cn.set(e,ue(n)),e}function R(e){let n=cn.get(e);if(n===void 0)throw new TypeError(`Scene node "${e.id}" has no admitted SVG serialization`);return n}function qn(e,n){let t=cn.get(e);t!==void 0&&cn.set(n,t)}function Pe(e,n){let t=Qe(n,e),r=Wn(n,t),i=sn(Ie(n,t),r);return ne({kind:"shape",identity:t,accessibility:r,...e},i)}function co(e,n){if(e.kind==="line")return{start:{point:{x:e.x1,y:e.y1}},end:{point:{x:e.x2,y:e.y2}}};let t=ce(e,n),r=t[0]?.points[0],i=t.at(-1),s=i?.closed?i.points[0]:i?.points.at(-1);return{...r?{start:{point:{...r}}}:{},...s?{end:{point:{...s}}}:{}}}function lo(e){let n=typeof e=="number"?e:parseFloat(e);return Number.isFinite(n)?Math.max(0,n):1}function uo(e,n,t){return e.from!==void 0&&e.from===e.to?"self":n&&t?"bidirectional":n?"reverse":t?"forward":"undirected"}function fo(e,n,t,r){if(r.length===0)return;let i=rn(n,t).length;if(i===0)throw new RangeError(`Connector "${e}" has mid markers but no typed interior route points`);if(r.length!==1&&r.length!==i)throw new RangeError(`Connector "${e}" mid markers must contain one repeated descriptor or one descriptor per interior route point`);if(new Set(r.map(o=>o.id)).size!==1)throw new RangeError(`Connector "${e}" uses distinct mid markers that one SVG marker-mid carrier cannot represent`);return r[0].id}function po(e,n){if(e==="")return e;let t=e;for(let[r,i]of Object.entries(n)){if(!i)continue;let s=`marker-${r}`,o=t.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0];!o||new RegExp(`\\s${s}=`).test(o)||(t=t.replace(o,o.replace(/\s*\/?>$/,a=>` ${s}="url(#${N(i)})"${a}`)))}return t}function mo(e,n){if(e===""||!n)return e;let t=e.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0];if(!t||/\stransform=/.test(t))return e;let r=`rotate(${n.angle} ${n.cx} ${n.cy})`;return e.replace(t,t.replace(/\s*\/?>$/,i=>` transform="${r}"${i}`))}function yo(e,n){if(e==="")return e;let t=e.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0];if(!t)return e;let r=t;for(let[i,s]of[["data-relationship",n.kind],["data-direction",n.direction]])new RegExp(`\\s${i}=`).test(r)||(r=r.replace(/\s*\/?>$/,o=>` ${i}="${N(s)}"${o}`));return e.replace(t,r)}function go(e,n,t,r){if(n.visual?.kind!=="inline")return;if(!n.anchor||!n.paint||n.fontSize===void 0||n.textAnchor===void 0)throw new TypeError(`Connector "${e}" inline label ${t+1} requires anchor, paint, fontSize, and textAnchor`);let i=[`data-id="${N(n.id??`${e}-label-${t+1}`)}"`,'data-role="label"',`data-connector-label-for="${N(e)}"`,`x="${n.anchor.x}"`,`y="${n.anchor.y-Math.max(0,n.clearance??0)}"`,`font-size="${n.fontSize}"`,`text-anchor="${n.textAnchor}"`];r?.kind==="rotate"&&i.push(`transform="rotate(${r.angle} ${r.cx} ${r.cy})"`);let s={...n.paint,...n.halo?{stroke:n.halo.color??"var(--bg)",strokeWidth:String(n.halo.width),paintOrder:"stroke fill"}:{}},o=[["fill",s.fill],["stroke",s.stroke],["stroke-width",s.strokeWidth],["stroke-dasharray",s.strokeDasharray],["stroke-dashoffset",s.strokeDashoffset],["stroke-linecap",s.strokeLinecap],["stroke-linejoin",s.strokeLinejoin],["stroke-miterlimit",s.strokeMiterlimit],["vector-effect",s.vectorEffect],["paint-order",s.paintOrder],["opacity",s.opacity]];for(let[a,c]of o)c!==void 0&&i.push(`${a}="${N(c)}"`);return`<text ${i.join(" ")}>${Y(n.text)}</text>`}function ye(e,n){if(e.geometry.kind!=="path"&&e.route?.closed===!0)throw new TypeError(`Connector "${e.id}" closed route topology requires path geometry`);if(e.geometry.kind==="path"){let S=e.geometry,O=S.subpaths,D=on(S.d);if(D>1&&!O)throw new TypeError(`Connector "${e.id}" path has multiple SVG subpaths but no typed subpaths`);if(O){if(O.length===0||O.some(X=>X.points.length<2))throw new TypeError(`Connector "${e.id}" typed subpaths must each contain at least two points`);if(D!==O.length)throw new TypeError(`Connector "${e.id}" typed subpath count disagrees with SVG path moves`);let oe=O.flatMap(X=>X.points);if(oe.length!==S.points.length||oe.some((X,Fe)=>{let Cn=S.points[Fe];return!Cn||Cn.x!==X.x||Cn.y!==X.y}))throw new TypeError(`Connector "${e.id}" typed subpaths disagree with the canonical point projection`)}}let t=ce(e.geometry,e.route?.closed??!1),r=t.length===1&&t[0].closed;if(e.geometry.kind==="path"&&e.geometry.subpaths&&e.route?.closed!==void 0&&e.route.closed!==r)throw new TypeError(`Connector "${e.id}" route.closed disagrees with typed subpath topology`);let i=e.geometry.kind==="path"&&e.geometry.subpaths?r:e.route?.closed??!1;if(e.geometry.kind==="path"){let S=e.geometry.d.match(/[Zz]/g)?.length??0,O=e.geometry.subpaths?e.geometry.subpaths.filter(D=>D.closed).length:i?1:0;if(S!==O)throw new TypeError(`Connector "${e.id}" SVG close commands disagree with typed closed-contour semantics`)}let s=e.markers?.start,o=e.markers?.end,a=e.markers?.mid??[];for(let S of[s,...a,o])if(S?.geometry?.kind==="path"&&!S.bounds&&!S.viewBox&&!S.size)throw new TypeError(`Connector "${e.id}" path marker "${S.id}" requires bounds, viewBox, or size`);let c=fo(e.id,e.geometry,i,a),d=co(e.geometry,i);for(let S of["start","end"]){let O=e.endpoints?.[S]?.point,D=d[S]?.point;if(O&&D&&!G(O,D))throw new TypeError(`Connector "${e.id}" endpoints.${S}.point disagrees with typed route geometry`)}let u={...e.endpoints??{},start:{...d.start,...e.endpoints?.start},end:{...d.end,...e.endpoints?.end}},f={kind:e.relationship?.kind??e.role,direction:e.relationship?.direction??uo(u,s,o)},m=e.labels??[],p={id:e.identity?.id??e.id,role:e.role,...e.identity?.classNames?{classNames:e.identity.classNames}:{},...e.identity?.from??u.from?{from:e.identity?.from??u.from}:{},...e.identity?.to??u.to?{to:e.identity?.to??u.to}:{}},g=Vn(p,m[0]?.text),b=po(n,{...s?{start:s.id}:{},...c?{mid:c}:{},...o?{end:o.id}:{}}),x=yo(b,f),v=mo(x,e.transform),y=sn(Ie(v,p),g),E=m.map((S,O)=>go(e.id,S,O,e.transform)).filter(S=>S!==void 0);E.length>0&&(y=[y,...E].join(`
|
|
25
|
+
${m}`}var Gt=Object.freeze(["svg","png","ascii","unicode","html","layout"]);var Ti=1,Ri=/^[a-z][a-z0-9.-]*:[a-z0-9][a-z0-9._/-]*$/,Mi=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/,vi=new Set(["required","preferred","optional"]);function qe(e){return Ri.test(e)}function $e(e){if(typeof e!="string")return;let n=e.match(Mi);if(!n)return;let t=n[4];if(!t?.split(".").some(r=>/^\d+$/.test(r)&&r.length>1&&r.startsWith("0")))return{major:n[1],minor:n[2],patch:n[3],...t?{prerelease:t}:{}}}function On(e,n){return e.length!==n.length?e.length<n.length?-1:1:e===n?0:e<n?-1:1}function Ai(e,n){return On(e.major,n.major)||On(e.minor,n.minor)||On(e.patch,n.patch)}function He(e){if(typeof e!="string")return!1;let n=e.trim();if(n==="*"||/^(0|[1-9]\d*)\.(?:x|\*)$/i.test(n))return!0;let t=n.match(/^(\^|~|>=)?(.+)$/),r=$e(t?.[2]??"");return!t||!r?!1:!r.prerelease||t[1]===void 0}function In(e,n){let t=$e(e);if(!t||!He(n))return!1;let r=n.trim();if(r==="*")return t.prerelease===void 0;let i=r.match(/^(0|[1-9]\d*)\.(?:x|\*)$/i);if(i)return t.prerelease===void 0&&t.major===i[1];let s=r.match(/^(\^|~|>=)?(.+)$/),o=$e(s?.[2]??"");if(!s||!o)return!1;let a=Ai(t,o);if(t.prerelease||o.prerelease)return s[1]===void 0&&a===0&&t.prerelease===o.prerelease;switch(s[1]){case">=":return a>=0;case"~":return a>=0&&t.major===o.major&&t.minor===o.minor;case"^":return a<0?!1:o.major!=="0"?t.major===o.major:o.minor!=="0"?t.major==="0"&&t.minor===o.minor:t.major==="0"&&t.minor==="0"&&t.patch===o.patch;default:return a===0}}function _i(e,n){if(!Array.isArray(e))throw new TypeError("Capability offers must be an array");if(!Array.isArray(n))throw new TypeError("Capability requirements must be an array");let t=new Map;for(let[o,a]of e.entries()){if(!a||typeof a!="object"||Array.isArray(a))throw new TypeError(`Capability offer at index ${o} must be an object`);if(typeof a.id!="string")throw new Error(`Invalid capability id "${String(a.id)}"`);if(!qe(a.id))throw new Error(`Invalid capability id "${a.id}"`);if(typeof a.version!="string")throw new Error(`Capability "${a.id}" has invalid semantic version "${String(a.version)}"`);if(!$e(a.version))throw new Error(`Capability "${a.id}" has invalid semantic version "${a.version}"`);if(t.has(a.id))throw new Error(`Duplicate capability offer "${a.id}"`);t.set(a.id,a.version)}let r=new Set,i=n.map((o,a)=>{if(!o||typeof o!="object"||Array.isArray(o))throw new TypeError(`Capability requirement at index ${a} must be an object`);if(typeof o.id!="string")throw new Error(`Invalid capability id "${String(o.id)}"`);if(!qe(o.id))throw new Error(`Invalid capability id "${o.id}"`);if(!vi.has(o.level))throw new Error(`Capability "${o.id}" has invalid requirement level "${String(o.level)}"`);if(!He(o.range))throw new Error(`Capability "${o.id}" has invalid semantic-version range "${String(o.range)}"`);if(r.has(o.id))throw new Error(`Duplicate capability requirement "${o.id}"`);r.add(o.id);let c=t.get(o.id),d=c===void 0?"unsupported":In(c,o.range)?"selected":"incompatible";return Object.freeze({id:o.id,range:o.range,level:o.level,status:d,...c!==void 0?{version:c}:{}})}),s=i.every(o=>o.level!=="required"||o.status==="selected");return Object.freeze({version:Ti,accepted:s,resolutions:Object.freeze(i)})}var Oi=Object.freeze([{id:"core:render-request",version:"1.0.0"},{id:"core:family-descriptor",version:"1.0.0"}].map(e=>Object.freeze(e)));function Ii(e,n,t,r){let i={id:`output:${e}`,version:"1.0.0"},s=Gt.includes(e);return _i([...Oi,...n,...!s||!r?[]:[i]],[{id:"core:render-request",range:"^1.0.0",level:"required"},...t,{id:`output:${e}`,range:"^1.0.0",level:"required"}])}function ha(e,n){return Ii(e,n.offers,n.requirements,n.outputAvailable)}var qt="2.0.0";var Ht="0.4.1";var Pi=Object.freeze({core:Ht,scene:qt});function zi(e){let n=[];for(let[t,r]of Object.entries(e.compatibility)){if(r===void 0)continue;let i=Pi[t];if(!He(r)){n.push(Object.freeze({contract:t,range:r,status:"invalid",diagnostic:`Compatibility requirement "${t}" has invalid semantic-version range "${r}".`}));continue}if(i!==void 0){let s=In(i,r);n.push(Object.freeze({contract:t,range:r,status:s?"compatible":"incompatible",version:i,...s?{}:{diagnostic:`Compatibility requirement "${t}" range "${r}" does not include host version ${i}.`}}));continue}if(!qe(t)){n.push(Object.freeze({contract:t,range:r,status:"invalid",diagnostic:`Unknown compatibility requirement "${t}" must use a namespace.`}));continue}n.push(Object.freeze({contract:t,range:r,status:"deferred"}))}return Object.freeze({accepted:n.every(t=>t.status==="compatible"||t.status==="deferred"),resolutions:Object.freeze(n)})}var Kt=/^[a-z][a-z0-9-]*$/,Xt=/^[a-z0-9][a-z0-9._/-]*$/,Yt=new WeakSet,Ke=new WeakMap;function Di(e,n){let t=Ke.get(e);if(t)throw t.reentrantAttempted=!0,new Error(`Extension registry mutation is forbidden while ${t.operation} is in progress`);let r={operation:n,reentrantAttempted:!1};return Ke.set(e,r),r}function ji(e){if(e.reentrantAttempted)throw new Error(`Extension registry mutation is forbidden after a reentrant attempt during ${e.operation}`)}function Bi(e,n){Ke.get(e)===n&&Ke.delete(e)}function Zt(e,n){if(!Kt.test(e))throw new Error(`Invalid extension kind "${e}"`);if(!Xt.test(n))throw new Error(`Invalid ${e} extension local id "${n}"`);return`${e}:${n}`}function Xe(e){let n=e.indexOf(":");if(n<=0||n===e.length-1||e.indexOf(":",n+1)!==-1)return;let t=e.slice(0,n),r=e.slice(n+1);if(!(!Kt.test(t)||!Xt.test(r)))return{kind:t,localId:r}}function Ye(e){let n=e.id,t=e.kind,r=e.version,i=e.compatibility,s=e.provenance,o=Object.freeze({...i??{}}),a=Object.freeze({...s}),c=Xe(n);if(!c||c.kind!==t)throw new Error(`Extension id "${n}" must use the "${t}:" namespace`);if(!$e(r))throw new Error(`Extension "${n}" requires a semantic version (received "${r}")`);if(a.owner.trim().length===0)throw new Error(`Extension "${n}" requires a provenance owner`);if(a.source.trim().length===0)throw new Error(`Extension "${n}" requires a provenance source`);let d=Object.freeze({id:n,kind:t,version:r,compatibility:o,provenance:a}),u=zi(d);if(!u.accepted)throw new Error(`Extension "${n}" has incompatible requirements: ${u.resolutions.filter(f=>f.status==="incompatible"||f.status==="invalid").map(f=>f.diagnostic).join("; ")}`);return Yt.add(d),d}var Pn=class extends Error{constructor(t,r){super(`Cannot register ${t.kind} "${t.id}" for owner "${t.provenance.owner}": already registered by "${r.provenance.owner}" at version ${r.version}`);this.incoming=t;this.existing=r;this.name="ExtensionCollisionError"}incoming;existing;code="EXTENSION_ID_COLLISION"};function Jt(e,n){let t=Di(e,"extension registration");try{let r=Object.freeze({identity:n.identity,value:n.value});if(!Yt.has(r.identity))throw new TypeError("Extension registration identity must be created by createExtensionIdentity()");let i=r.identity.id,s=e.get(i);if(s)throw new Pn(r.identity,s.identity);ji(t),e.set(i,r)}finally{Bi(e,t)}}var wa=Object.freeze({fontFamily:{kind:"font",description:"Safe font family/stack for roles whose descriptor exposes family-specific typography."},fontSize:{kind:"number",minimum:1,maximum:256,expected:"between 1 and 256",description:"Font size in SVG user units."},fontWeight:{kind:"number",minimum:1,maximum:1e3,expected:"between 1 and 1000",description:"CSS numeric font weight."},letterSpacing:{kind:"number",minimum:-2,maximum:4,expected:"between -2 and 4",description:"Letter spacing in SVG user units."},textTransform:{kind:"enum",values:["uppercase","lowercase","capitalize"],description:"Text transformation."},textColor:{kind:"color",description:"Text paint."},paddingX:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Horizontal role padding."},paddingY:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Vertical role padding."},cornerRadius:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Applicable corner radius."},lineWidth:{kind:"number",exclusiveMinimum:0,maximum:20,expected:"greater than 0 and at most 20",description:"Border or connector width."},bendRadius:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Applicable connector bend radius."},fillColor:{kind:"color",description:"Surface fill paint."},borderColor:{kind:"color",description:"Border paint."},strokeColor:{kind:"color",description:"Connector stroke paint."},headerFillColor:{kind:"color",description:"Group header surface paint."},cue:{kind:"enum",values:["none","outline","double-line","pattern"],description:"Non-color semantic cue on roles whose family renderer exposes a cue projection."}}),zn=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor","paddingX","paddingY","cornerRadius","lineWidth","fillColor","borderColor"]),Qt=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor","lineWidth","bendRadius","strokeColor"]),Li=Object.freeze([...zn,"fontFamily","headerFillColor"]),Fi=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor"]),Ui=Object.freeze(["fontFamily","fontSize","fontWeight","letterSpacing","textTransform","textColor","fillColor","borderColor","strokeColor","lineWidth","cue"]),Vi=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth","cue"]),Wi=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth","textColor"]),Dn=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth"]),Gi=Object.freeze(["borderColor","strokeColor","lineWidth"]),er=Object.freeze([...Dn,"cue"]);function W(e,n){return Object.freeze({properties:e,...n?{bindingFamilies:Object.freeze([...n])}:{}})}var Oe=Object.freeze({node:W(zn),edge:W(Qt),group:W(Li),"group-header":W(Ui,["journey"]),label:W(Fi),actor:W(zn,["sequence"]),relationship:W(Qt,["er"]),"pie-slice":W(Vi,["pie","radar"]),legend:W(Wi,["radar"]),bar:W(Dn,["xychart"]),series:W(Gi,["xychart"]),point:W(Dn,["radar"]),task:W(er,["gantt"]),milestone:W(er,["gantt"])}),qi=Object.freeze(Object.keys(Oe)),Hi=Object.freeze(qi.filter(e=>"bindingFamilies"in Oe[e])),Na=Object.freeze([...new Set(Hi.flatMap(e=>Oe[e].properties))]);var Z=["shape","connector","text","group","document"],pe=["shape"],Ze=["connector"],nr=["text"],Ki=["shape","text"],ee=["shape","group"],Xi=["shape","text","group"],Yi=["connector","group"],Zi=["document"],tr=["text","group"];var Ji=["shape","text","document"],Qi=["document"];function $(e,n,t,r={}){let i=Oe[e];return Object.freeze({applicableKinds:n,styleFallback:t,styleConsumption:i?"exact":"fallback-only",styleExtras:Object.freeze([]),...i?{styleProperties:i.properties}:{},styleBindingFamilies:Object.freeze([...i?.bindingFamilies??[]]),domIdentity:!1,relation:!1,sketch:"none",textHalo:!1,...r})}var Je=Object.freeze({node:$("node",ee,"node",{domIdentity:!0,sketch:"shape"}),edge:$("edge",Ze,"edge",{domIdentity:!0,relation:!0,sketch:"connector"}),"edge-label":$("edge-label",tr,"label"),group:$("group",ee,"group",{domIdentity:!0,sketch:"shape"}),"group-header":$("group-header",Z,"group",{sketch:"shape",textHalo:!0}),label:$("label",nr,"label",{textHalo:!0}),actor:$("actor",ee,"node",{domIdentity:!0,sketch:"shape"}),lifeline:$("lifeline",Ze,"edge",{sketch:"connector"}),activation:$("activation",pe,"node",{domIdentity:!0,sketch:"shape"}),message:$("message",Yi,"edge",{domIdentity:!0,relation:!0,sketch:"connector"}),block:$("block",Z,"group",{domIdentity:!0,sketch:"shape"}),note:$("note",ee,"group",{domIdentity:!0,sketch:"shape"}),"class-box":$("class-box",ee,"node",{domIdentity:!0,sketch:"shape"}),member:$("member",nr,"label",{domIdentity:!0,textHalo:!0}),entity:$("entity",ee,"node",{domIdentity:!0,sketch:"shape"}),attribute:$("attribute",tr,"label",{domIdentity:!0,textHalo:!0}),relationship:$("relationship",Ze,"edge",{domIdentity:!0,relation:!0,sketch:"connector"}),cardinality:$("cardinality",Ki,"label",{domIdentity:!0,textHalo:!0}),"pie-slice":$("pie-slice",pe,"node",{domIdentity:!0,sketch:"shape"}),legend:$("legend",Xi,"group",{textHalo:!0}),bar:$("bar",pe,"node",{domIdentity:!0,sketch:"shape"}),series:$("series",Ze,"edge",{domIdentity:!0,sketch:"connector"}),point:$("point",pe,"node",{domIdentity:!0}),axis:$("axis",Z,"label",{textHalo:!0}),grid:$("grid",Z,"edge"),plate:$("plate",pe,"node",{domIdentity:!0,sketch:"shape"}),section:$("section",Z,"group",{domIdentity:!0,sketch:"shape",textHalo:!0}),task:$("task",Z,"node",{domIdentity:!0,sketch:"shape"}),milestone:$("milestone",pe,"node",{domIdentity:!0,sketch:"shape"}),"marker-line":$("marker-line",Z,"edge"),rail:$("rail",Z,"edge",{sketch:"connector"}),period:$("period",ee,"group",{domIdentity:!0,sketch:"shape"}),event:$("event",ee,"group",{domIdentity:!0,sketch:"shape"}),score:$("score",Z,"node"),"actor-pill":$("actor-pill",pe,"node",{sketch:"shape"}),service:$("service",ee,"node",{domIdentity:!0,sketch:"shape"}),junction:$("junction",ee,"node",{domIdentity:!0}),icon:$("icon",Ji,"node"),title:$("title",Z,"label",{domIdentity:!0}),defs:$("defs",Zi,"label"),prelude:$("prelude",Qi,"label"),chrome:$("chrome",Z,"label")}),eo=Object.freeze({applicableKinds:Z,styleFallback:"label",styleConsumption:"fallback-only",styleExtras:Object.freeze([]),styleBindingFamilies:Object.freeze([]),domIdentity:!0,relation:!1,sketch:"none",textHalo:!1}),va=Object.freeze(Object.entries(Je).map(([e,n])=>Object.freeze({identity:Ye({id:`role:${e}`,kind:"role",version:"1.0.0",compatibility:{core:"^0.4.0",scene:"^2.0.0"},provenance:{owner:"agentic-mermaid",source:"built-in",reference:"src/scene/roles.ts"}}),role:e,traits:n,style:(()=>{let t=n.styleFallback;return Object.freeze({fallbackRole:t,applicableProperties:n.styleProperties??Object.freeze([])})})()})));function no(e){let n=Je[e];return n?{traits:n,source:"builtin"}:{traits:eo,source:"namespaced-safe"}}function we(e){return no(e).traits}function Ne(e){return!e.includes("->")&&!/[#:"\[\],\u0000-\u001f]/.test(e)}function Ia(e,n,t=""){let r=Ne(e)&&Ne(n)?`${e}->${n}`:`relation:${JSON.stringify([e,n])}`;return t?`${t}:${r}`:r}function Pa(e,...n){let t=n.map(String);return Ne(e)&&t.every(Ne)?[e,...t].join(":"):`part:${JSON.stringify([e,...t])}`}function za(e,n,...t){let r=t.map(String);return Ne(n)&&r.every(Ne)?[e,n,...r].join(":"):`${e}:${JSON.stringify([n,...r])}`}function to(e){return e.replace(/"/g,'"').replace(/'|'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function Qe(e,n){let t=e.match(/^\s*<([A-Za-z][\w:-]*)\b[^>]*>/)?.[0]??"",r=a=>{let c=t.match(new RegExp(`\\s${a}="([^"]*)"`))?.[1];return c===void 0?void 0:to(c)},i=(r("class")??"").split(/\s+/).filter(Boolean),s=r("data-from"),o=r("data-to");return{id:r("data-id")??n.id,role:n.role,...s!==void 0?{from:s}:{},...o!==void 0?{to:o}:{},...i.length>0?{classNames:i}:{}}}function jn(e){return we(e).domIdentity}function Ie(e,n){if(!jn(n.role))return e;let t=e.match(/^\s*<([A-Za-z][\w:-]*)\b[^>]*>/)?.[0];if(!t||t.startsWith("<style")||t.startsWith("<defs")||t.startsWith("<svg"))return e;let r=(s,o,a)=>{let c=N(a),d=new RegExp(`\\s${o}="[^"]*"`);if(d.test(s))return s.replace(d,` ${o}="${c}"`);let u=s.endsWith("/>")?"/>":">";return`${s.slice(0,-u.length).trimEnd()} ${o}="${c}"${u==="/>"?" /":""}>`},i=r(r(t,"data-id",n.id),"data-role",n.role);return n.from!==void 0&&(i=r(i,"data-from",n.from)),n.to!==void 0&&(i=r(i,"data-to",n.to)),i===t?e:e.replace(t,i)}function G(e,n,t=0){return Math.abs(e.x-n.x)<=t&&Math.abs(e.y-n.y)<=t}function Bn(e,n){let t=n.x-e.x,r=n.y-e.y,i=Math.hypot(t,r);return Number.isFinite(i)&&i>0?{x:t/i,y:r/i}:void 0}function Te(e,n){return{x:(e.x+n.x)/2,y:(e.y+n.y)/2}}function me(e,n){return Math.hypot(n.x-e.x,n.y-e.y)}function rr(e,n,t){let r=me(n,t);return r===0?me(e,n):Math.abs((t.x-n.x)*(n.y-e.y)-(n.x-e.x)*(t.y-n.y))/r}function ir(e,n,t,r,i=.5,s=12){if(!Number.isFinite(i)||i<=0)throw new TypeError("Cubic flattening tolerance must be positive and finite");if(!Number.isSafeInteger(s)||s<0)throw new TypeError("Cubic flattening maxDepth must be a non-negative safe integer");for(let c of[e,n,t,r])if(!Number.isFinite(c.x)||!Number.isFinite(c.y))throw new TypeError("Cubic flattening points must be finite");let o=[{...e}],a=(c,d,u,f,m)=>{let p=me(c,f),g=me(c,d)+me(d,u)+me(u,f)-p;if(Math.max(rr(d,c,f),rr(u,c,f))<=i&&g<=i||m>=s){o.push({...f});return}let x=Te(c,d),v=Te(d,u),y=Te(u,f),E=Te(x,v),w=Te(v,y),j=Te(E,w);a(c,x,E,j,m+1),a(j,w,y,f,m+1)};return a(e,n,t,r,0),o}function ae(...e){let n=e[0];if(n)for(let t=1;t<e.length;t++){let r=Bn(n,e[t]);if(r)return r}}function ro(e,n){return n.kind==="line"?ae(e,n.end):n.kind==="quadratic"?ae(e,n.control,n.end):ae(e,n.control1,n.control2,n.end)}function io(e,n){return n.kind==="line"?ae(e,n.end):n.kind==="quadratic"?ae(n.control,n.end)??ae(e,n.end):ae(n.control2,n.end)??ae(n.control1,n.end)??ae(e,n.end)}function oo(e,n,t){return[{x:e.x+(n.x-e.x)*2/3,y:e.y+(n.y-e.y)*2/3},{x:t.x+(n.x-t.x)*2/3,y:t.y+(n.y-t.y)*2/3}]}function or(e,n,t,r=.5){for(let d of[n,...t.flatMap(u=>u.kind==="line"?[u.end]:u.kind==="quadratic"?[u.control,u.end]:[u.control1,u.control2,u.end])])if(!Number.isFinite(d.x)||!Number.isFinite(d.y))throw new TypeError("Connector path projection points must be finite");let i=[{...n}],s=[],o=n;for(let d of t){if(s.push(o),d.kind==="line")i.push({...d.end});else if(d.kind==="quadratic"){let[u,f]=oo(o,d.control,d.end);i.push(...ir(o,u,f,d.end,r).slice(1))}else i.push(...ir(o,d.control1,d.control2,d.end,r).slice(1));o=d.end}let a;for(let d=0;d<t.length&&!a;d++)a=ro(s[d],t[d]);let c;for(let d=t.length-1;d>=0&&!c;d--)c=io(s[d],t[d]);return{geometry:{kind:"path",d:e,points:i},contours:[{start:{...n},end:{...o},closed:!1,...a?{startTangent:a}:{},...c?{endTangent:c}:{}}]}}function Ln(e,n,t){return t==="manhattan"?Math.abs(n.x-e.x)+Math.abs(n.y-e.y):me(e,n)}function sr(e,n){if(n===void 0)return e;if(!Number.isSafeInteger(n)||n<0)throw new TypeError("Rounded connector precision must be a non-negative safe integer");let t=10**n;return Math.round(e*t)/t}function ar(e,n,t,r,i){let s=Ln(e,n,r);if(s===0)return{...e};let o=t/s;return{x:sr(e.x+(n.x-e.x)*o,i),y:sr(e.y+(n.y-e.y)*o,i)}}function ja(e,n,t={}){if(e.length===0)throw new RangeError("Rounded connector paths require at least one point");if(!Number.isFinite(n))throw new TypeError("Rounded connector radius must be finite");let r=t.metric??"euclidean",i=e[0],s=[];if(n<=0||e.length<3){for(let d=1;d<e.length;d++)s.push({kind:"line",end:e[d]});let c=`M${e.map(d=>`${d.x},${d.y}`).join(" L")}`;return or(c,i,s,t.tolerance)}let o=[`M${i.x},${i.y}`];for(let c=1;c<e.length-1;c++){let d=e[c-1],u=e[c],f=e[c+1],m=Ln(d,u,r),p=Ln(u,f,r),g=Math.min(n,m/2,p/2);if(g<=0){o.push(`L${u.x},${u.y}`),s.push({kind:"line",end:u});continue}let b=ar(u,d,g,r,t.precision),x=ar(u,f,g,r,t.precision);o.push(`L${b.x},${b.y}`),o.push(`Q${u.x},${u.y} ${x.x},${x.y}`),s.push({kind:"line",end:b}),s.push({kind:"quadratic",control:u,end:x})}let a=e.at(-1);return o.push(`L${a.x},${a.y}`),s.push({kind:"line",end:a}),or(o.join(" "),i,s,t.tolerance)}function ce(e,n=!1){return e.kind==="line"?[{points:[{x:e.x1,y:e.y1},{x:e.x2,y:e.y2}],closed:!1}]:e.kind==="path"&&e.subpaths!==void 0?e.subpaths:[{points:e.points,closed:n}]}function en(e){return e.kind==="path"&&/[AaCcQqSsTt]/.test(e.d)}function nn(e,n=!1){let t=ce(e,n),r=Fn(e,n);return t.flatMap((i,s)=>{let o=i.points[0],a=i.points.at(-1);if(!o||!a)return[];let c=r.filter(f=>f.subpathIndex===s),d;for(let f=0;f<c.length&&!d;f++)d=Bn(c[f].start,c[f].end);let u;for(let f=c.length-1;f>=0&&!u;f--)u=Bn(c[f].start,c[f].end);return[{start:{...o},end:{...i.closed?o:a},closed:i.closed,...d?{startTangent:d}:{},...u?{endTangent:u}:{}}]})}function cr(e,n=!1){let t=[],r=[];return ce(e,n).forEach((i,s)=>{let o=i.points[0],a=i.closed?o:i.points.at(-1);o&&t.push({point:{...o},contourIndex:s}),a&&r.push({point:{...a},contourIndex:s})}),{starts:t,ends:r}}function tn(e,n=!1){let t=[],r=[];for(let i of ce(e,n)){let s=i.points[0],o=i.closed?s:i.points.at(-1);s&&t.push(s),o&&r.push(o)}return{starts:t,ends:r}}function Fn(e,n=!1){let t=[];for(let[r,i]of ce(e,n).entries()){for(let a=1;a<i.points.length;a++)t.push({start:i.points[a-1],end:i.points[a],subpathIndex:r,closing:!1});let s=i.points[0],o=i.points.at(-1);i.closed&&s&&o&&!G(s,o)&&t.push({start:o,end:s,subpathIndex:r,closing:!0})}return t}function rn(e,n=!1){return e.kind==="line"?[]:e.kind==="path"?e.markerMidpoints??[]:ce(e,n).flatMap(t=>{if(t.points.length<2)return[];let r=t.closed&&G(t.points[0],t.points.at(-1))?t.points.slice(0,-1):t.points;return t.closed?r.slice(1):r.slice(1,-1)})}function dr(e,n=!1){if(e.kind==="line")return[];let t=ce(e,n);return e.kind==="path"?(e.markerMidpoints??[]).map(r=>{if(t.length===1)return{point:{...r},contourIndex:0};let i=t.flatMap((s,o)=>s.points.some(a=>G(a,r))?[o]:[]);if(i.length!==1)throw new TypeError("Path marker-mid vertices on multiple subpaths must belong to exactly one typed contour");return{point:{...r},contourIndex:i[0]}}):t.flatMap((r,i)=>{if(r.points.length<2)return[];let s=r.closed&&G(r.points[0],r.points.at(-1))?r.points.slice(0,-1):r.points;return(r.closed?s.slice(1):s.slice(1,-1)).map(a=>({point:{...a},contourIndex:i}))})}function on(e){return e.match(/[Mm](?=\s*[-+.]?\d)/g)?.length??0}function Un(e){return e.replace(/"/g,'"').replace(/'|'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function Vn(e,n){if(!we(e.role).relation||e.from===void 0||e.to===void 0)return;let t={from:e.from,to:e.to,...n?{label:n}:{}};return{label:`${t.from} to ${t.to}${t.label?`: ${t.label}`:""}`,role:"graphics-symbol",roleDescription:"relation",relation:t}}function Wn(e,n){let r=(e.match(/^\s*<[A-Za-z][\w:-]*\b[^>]*>/)?.[0]??"").match(/\sdata-label="([^"]*)"/)?.[1];return Vn({...n,...n.from!==void 0?{from:Un(n.from)}:{},...n.to!==void 0?{to:Un(n.to)}:{}},r?Un(r):void 0)}function sn(e,n){if(!n)return e;let t=e.match(/^\s*<[A-Za-z][\w:-]*\b[^>]*>/)?.[0];if(!t)return e;let r=[];if(/\srole=/.test(t)||r.push(`role="${n.role}"`),/\saria-roledescription=/.test(t)||r.push(`aria-roledescription="${n.roleDescription}"`),/\saria-label=/.test(t)||r.push(`aria-label="${N(n.label)}"`),r.length===0)return e;let i=t.endsWith("/>")?"/>":">",s=t.slice(0,-i.length).trimEnd();return e.replace(t,`${s} ${r.join(" ")}${i==="/>"?" /":""}>`)}function Gn(e){return e?{...e,...e.geometry?{geometry:e.geometry}:{},...e.size?{size:{...e.size}}:{},...e.viewBox?{viewBox:{...e.viewBox}}:{},...e.ref?{ref:{...e.ref}}:{},...e.bounds?{bounds:{...e.bounds}}:{},...e.paint?{paint:{...e.paint}}:{}}:void 0}function so(e,n){let t=["continuous-geometry","stroke-width","stroke-cap","stroke-join"];return e.bendRadius>0&&t.push("bend-radius"),n.opacity!==void 0&&t.push("stroke-opacity"),(n.lineJoin==="miter"||n.lineJoin==="miter-clip")&&t.push("stroke-miter"),n.dash&&t.push("dash-pattern"),n.dash?.offset!==void 0&&t.push("dash-offset"),n.pathLength!==void 0&&t.push("path-length"),n.paintOrder!==void 0&&t.push("paint-order"),n.nonScaling&&t.push("non-scaling-stroke"),t}function an(e){let n=so(e.route,e.stroke),t=cr(e.geometry,e.route.closed),r=dr(e.geometry,e.route.closed),i={start:e.markers.start?t.starts.map(s=>({markerId:e.markers.start.id,point:{...s.point},contourIndex:s.contourIndex})):[],mid:e.markers.mid.length===0?[]:r.map((s,o)=>({markerId:(e.markers.mid.length===1?e.markers.mid[0]:e.markers.mid[o]).id,point:{...s.point},contourIndex:s.contourIndex})),end:e.markers.end?t.ends.map(s=>({markerId:e.markers.end.id,point:{...s.point},contourIndex:s.contourIndex})):[]};return{realization:e.lineStyle==="invisible"?"unsupported":"projected",topology:e.geometry.kind,geometry:e.geometry,direction:e.relationship.direction,relationship:e.relationship.kind,markers:{...e.markers.start?{start:Gn(e.markers.start)}:{},mid:e.markers.mid.map(s=>Gn(s)),...e.markers.end?{end:Gn(e.markers.end)}:{}},markerPlacements:i,endpoints:{...e.endpoints,...e.endpoints.start?{start:{...e.endpoints.start,...e.endpoints.start.point?{point:{...e.endpoints.start.point}}:{}}}:{},...e.endpoints.end?{end:{...e.endpoints.end,...e.endpoints.end.point?{point:{...e.endpoints.end.point}}:{}}}:{}},route:{ownership:e.route.ownership,closed:e.route.closed,bendRadius:e.route.bendRadius,contours:e.route.contours.map(s=>({...s,start:{...s.start},end:{...s.end},...s.startTangent?{startTangent:{...s.startTangent}}:{},...s.endTangent?{endTangent:{...s.endTangent}}:{}})),...e.route.startTangent?{startTangent:{...e.route.startTangent}}:{},...e.route.endTangent?{endTangent:{...e.route.endTangent}}:{},labelAnchors:e.route.labelAnchors.map(s=>({...s}))},stroke:{...e.stroke,...e.stroke.dash?{dash:{...e.stroke.dash,array:Array.isArray(e.stroke.dash.array)?[...e.stroke.dash.array]:e.stroke.dash.array}}:{}},hit:{...e.hit,geometry:e.hit.geometry},...e.transform?{transform:{...e.transform}}:{},labels:e.labels.map(s=>({...s,...s.anchor?{anchor:{...s.anchor}}:{},...s.bounds?{bounds:{...s.bounds}}:{},...s.halo?{halo:{...s.halo}}:{},...s.paint?{paint:{...s.paint}}:{},...s.visual?{visual:{...s.visual}}:{}})),lineStyle:e.lineStyle,strokeLosses:n,diagnostics:[e.lineStyle==="invisible"?"This connector affects layout but is intentionally absent from terminal output.":`The terminal grid preserves connector semantics while projecting continuous stroke fields: ${n.join(", ")}.`,...e.additionalDiagnostics??[]]}}var cn=new WeakMap;function ao(e){let n=e.match(/^<([A-Za-z_][A-Za-z0-9_.:-]*)/);if(!n||e.startsWith("</")||e.startsWith("<!")||e.startsWith("<?"))return e;let t=n[1];if(t!=="svg")return e;let r=/\/\s*>$/.test(e),i=r?e.lastIndexOf("/"):e.length-1,s=[],o=n[0].length;for(;o<i;){for(;/\s/.test(e[o]??"");)o++;if(o>=i)break;let d=e.slice(o).match(/^([^\s=<>/]+)/);if(!d)return e;let u=d[1];for(o+=d[0].length;/\s/.test(e[o]??"");)o++;if(e[o]!=="=")return e;for(o++;/\s/.test(e[o]??"");)o++;let f=e[o];if(f!=='"'&&f!=="'")return e;o++;let m=o;for(;o<i&&e[o]!==f;)o++;if(e[o]!==f)return e;let p=e.slice(m,o);o++,s.push({name:u,value:f==='"'?p:p.replaceAll('"',"""),index:s.length})}let a=new Map([["xmlns",0],["width",1],["height",2],["viewBox",3],["style",4]]);s.sort((d,u)=>{let f=a.get(d.name)??100,m=a.get(u.name)??100;return f-m||bt(d.name,u.name)||d.index-u.index});let c=s.map(d=>`${d.name}="${d.value}"`).join(" ");return`<${t}${c?` ${c}`:""}${r?" /":""}>`}function ue(e){let n="",t=0;for(;t<e.length;){let r=e.indexOf("<",t);if(r<0)return n+e.slice(t);if(n+=e.slice(t,r),e.startsWith("<!--",r)){let o=e.indexOf("-->",r+4);if(o<0)return n+e.slice(r);n+=e.slice(r,o+3),t=o+3;continue}let i,s=r+1;for(;s<e.length;s++){let o=e[s];if(i)o===i&&(i=void 0);else if(o==='"'||o==="'")i=o;else if(o===">")break}if(s>=e.length)return n+e.slice(r);n+=ao(e.slice(r,s+1)),t=s+1}return n}function ne(e,n){return cn.set(e,ue(n)),e}function R(e){let n=cn.get(e);if(n===void 0)throw new TypeError(`Scene node "${e.id}" has no admitted SVG serialization`);return n}function qn(e,n){let t=cn.get(e);t!==void 0&&cn.set(n,t)}function Pe(e,n){let t=Qe(n,e),r=Wn(n,t),i=sn(Ie(n,t),r);return ne({kind:"shape",identity:t,accessibility:r,...e},i)}function co(e,n){if(e.kind==="line")return{start:{point:{x:e.x1,y:e.y1}},end:{point:{x:e.x2,y:e.y2}}};let t=ce(e,n),r=t[0]?.points[0],i=t.at(-1),s=i?.closed?i.points[0]:i?.points.at(-1);return{...r?{start:{point:{...r}}}:{},...s?{end:{point:{...s}}}:{}}}function lo(e){let n=typeof e=="number"?e:parseFloat(e);return Number.isFinite(n)?Math.max(0,n):1}function uo(e,n,t){return e.from!==void 0&&e.from===e.to?"self":n&&t?"bidirectional":n?"reverse":t?"forward":"undirected"}function fo(e,n,t,r){if(r.length===0)return;let i=rn(n,t).length;if(i===0)throw new RangeError(`Connector "${e}" has mid markers but no typed interior route points`);if(r.length!==1&&r.length!==i)throw new RangeError(`Connector "${e}" mid markers must contain one repeated descriptor or one descriptor per interior route point`);if(new Set(r.map(o=>o.id)).size!==1)throw new RangeError(`Connector "${e}" uses distinct mid markers that one SVG marker-mid carrier cannot represent`);return r[0].id}function po(e,n){if(e==="")return e;let t=e;for(let[r,i]of Object.entries(n)){if(!i)continue;let s=`marker-${r}`,o=t.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0];!o||new RegExp(`\\s${s}=`).test(o)||(t=t.replace(o,o.replace(/\s*\/?>$/,a=>` ${s}="url(#${N(i)})"${a}`)))}return t}function mo(e,n){if(e===""||!n)return e;let t=e.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0];if(!t||/\stransform=/.test(t))return e;let r=`rotate(${n.angle} ${n.cx} ${n.cy})`;return e.replace(t,t.replace(/\s*\/?>$/,i=>` transform="${r}"${i}`))}function yo(e,n){if(e==="")return e;let t=e.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0];if(!t)return e;let r=t;for(let[i,s]of[["data-relationship",n.kind],["data-direction",n.direction]])new RegExp(`\\s${i}=`).test(r)||(r=r.replace(/\s*\/?>$/,o=>` ${i}="${N(s)}"${o}`));return e.replace(t,r)}function go(e,n,t,r){if(n.visual?.kind!=="inline")return;if(!n.anchor||!n.paint||n.fontSize===void 0||n.textAnchor===void 0)throw new TypeError(`Connector "${e}" inline label ${t+1} requires anchor, paint, fontSize, and textAnchor`);let i=[`data-id="${N(n.id??`${e}-label-${t+1}`)}"`,'data-role="label"',`data-connector-label-for="${N(e)}"`,`x="${n.anchor.x}"`,`y="${n.anchor.y-Math.max(0,n.clearance??0)}"`,`font-size="${n.fontSize}"`,`text-anchor="${n.textAnchor}"`];r?.kind==="rotate"&&i.push(`transform="rotate(${r.angle} ${r.cx} ${r.cy})"`);let s={...n.paint,...n.halo?{stroke:n.halo.color??"var(--bg)",strokeWidth:String(n.halo.width),paintOrder:"stroke fill"}:{}},o=[["fill",s.fill],["stroke",s.stroke],["stroke-width",s.strokeWidth],["stroke-dasharray",s.strokeDasharray],["stroke-dashoffset",s.strokeDashoffset],["stroke-linecap",s.strokeLinecap],["stroke-linejoin",s.strokeLinejoin],["stroke-miterlimit",s.strokeMiterlimit],["vector-effect",s.vectorEffect],["paint-order",s.paintOrder],["opacity",s.opacity]];for(let[a,c]of o)c!==void 0&&i.push(`${a}="${N(c)}"`);return`<text ${i.join(" ")}>${Y(n.text)}</text>`}function ye(e,n){if(e.geometry.kind!=="path"&&e.route?.closed===!0)throw new TypeError(`Connector "${e.id}" closed route topology requires path geometry`);if(e.geometry.kind==="path"){let S=e.geometry,O=S.subpaths,D=on(S.d);if(D>1&&!O)throw new TypeError(`Connector "${e.id}" path has multiple SVG subpaths but no typed subpaths`);if(O){if(O.length===0||O.some(X=>X.points.length<2))throw new TypeError(`Connector "${e.id}" typed subpaths must each contain at least two points`);if(D!==O.length)throw new TypeError(`Connector "${e.id}" typed subpath count disagrees with SVG path moves`);let oe=O.flatMap(X=>X.points);if(oe.length!==S.points.length||oe.some((X,Fe)=>{let Cn=S.points[Fe];return!Cn||Cn.x!==X.x||Cn.y!==X.y}))throw new TypeError(`Connector "${e.id}" typed subpaths disagree with the canonical point projection`)}}let t=ce(e.geometry,e.route?.closed??!1),r=t.length===1&&t[0].closed;if(e.geometry.kind==="path"&&e.geometry.subpaths&&e.route?.closed!==void 0&&e.route.closed!==r)throw new TypeError(`Connector "${e.id}" route.closed disagrees with typed subpath topology`);let i=e.geometry.kind==="path"&&e.geometry.subpaths?r:e.route?.closed??!1;if(e.geometry.kind==="path"){let S=e.geometry.d.match(/[Zz]/g)?.length??0,O=e.geometry.subpaths?e.geometry.subpaths.filter(D=>D.closed).length:i?1:0;if(S!==O)throw new TypeError(`Connector "${e.id}" SVG close commands disagree with typed closed-contour semantics`)}let s=e.markers?.start,o=e.markers?.end,a=e.markers?.mid??[];for(let S of[s,...a,o])if(S?.geometry?.kind==="path"&&!S.bounds&&!S.viewBox&&!S.size)throw new TypeError(`Connector "${e.id}" path marker "${S.id}" requires bounds, viewBox, or size`);let c=fo(e.id,e.geometry,i,a),d=co(e.geometry,i);for(let S of["start","end"]){let O=e.endpoints?.[S]?.point,D=d[S]?.point;if(O&&D&&!G(O,D))throw new TypeError(`Connector "${e.id}" endpoints.${S}.point disagrees with typed route geometry`)}let u={...e.endpoints??{},start:{...d.start,...e.endpoints?.start},end:{...d.end,...e.endpoints?.end}},f={kind:e.relationship?.kind??e.role,direction:e.relationship?.direction??uo(u,s,o)},m=e.labels??[],p={id:e.identity?.id??e.id,role:e.role,...e.identity?.classNames?{classNames:e.identity.classNames}:{},...e.identity?.from??u.from?{from:e.identity?.from??u.from}:{},...e.identity?.to??u.to?{to:e.identity?.to??u.to}:{}},g=Vn(p,m[0]?.text),b=po(n,{...s?{start:s.id}:{},...c?{mid:c}:{},...o?{end:o.id}:{}}),x=yo(b,f),v=mo(x,e.transform),y=sn(Ie(v,p),g),E=m.map((S,O)=>go(e.id,S,O,e.transform)).filter(S=>S!==void 0);E.length>0&&(y=[y,...E].join(`
|
|
26
26
|
`));let w=e.stroke?.width??e.paint.strokeWidth??"1",j=e.stroke?.dash??(e.paint.strokeDasharray?{array:e.paint.strokeDasharray,...e.paint.strokeDashoffset!==void 0?{offset:e.paint.strokeDashoffset}:{}}:void 0),F=e.stroke?.opacity??e.paint.opacity,h=e.stroke?.paintOrder??e.paint.paintOrder,B={color:e.stroke?.color??e.paint.stroke??"var(--_line)",width:w,...F!==void 0?{opacity:F}:{},...j?{dash:j}:{},lineCap:e.stroke?.lineCap??e.paint.strokeLinecap??"butt",lineJoin:e.stroke?.lineJoin??e.paint.strokeLinejoin??"miter",miterLimit:e.stroke?.miterLimit??Number(e.paint.strokeMiterlimit??4),...e.stroke?.pathLength!==void 0?{pathLength:e.stroke.pathLength}:{},...h!==void 0?{paintOrder:h}:{},nonScaling:e.stroke?.nonScaling??e.paint.vectorEffect==="non-scaling-stroke"},ie=nn(e.geometry,i),V=e.route?.contours;if(V&&(V.length!==ie.length||V.some((S,O)=>{let D=ie[O];return!D||S.start.x!==D.start.x||S.start.y!==D.start.y||S.end.x!==D.end.x||S.end.y!==D.end.y||S.closed!==D.closed})))throw new TypeError(`Connector "${e.id}" route contours disagree with typed subpath endpoint topology`);if(!en(e.geometry)&&V)for(let[S,O]of V.entries()){let D=ie[S];for(let oe of["startTangent","endTangent"]){let X=O[oe],Fe=D[oe];if(X&&(!Fe||!G(X,Fe,1e-9)))throw new TypeError(`Connector "${e.id}" route.contours[${S}].${oe} disagrees with linear route geometry`)}}let z=ie.map((S,O)=>{let D=V?.[O],oe=D?.startTangent??S.startTangent,X=D?.endTangent??S.endTangent;return{start:{...S.start},end:{...S.end},closed:S.closed,...oe?{startTangent:oe}:{},...X?{endTangent:X}:{}}});for(let S of z)for(let O of[S.startTangent,S.endTangent]){if(!O)continue;let D=Math.hypot(O.x,O.y);if(!Number.isFinite(D)||Math.abs(D-1)>1e-9)throw new TypeError(`Connector "${e.id}" contour tangents must be finite unit vectors`)}for(let S of[e.route?.startTangent,e.route?.endTangent]){if(!S)continue;let O=Math.hypot(S.x,S.y);if(!Number.isFinite(O)||Math.abs(O-1)>1e-9)throw new TypeError(`Connector "${e.id}" route tangents must be finite unit vectors`)}for(let[S,O,D]of[["startTangent",e.route?.startTangent,z[0]?.startTangent],["endTangent",e.route?.endTangent,z.at(-1)?.endTangent]])if(O&&D&&!G(O,D,1e-9))throw new TypeError(`Connector "${e.id}" route.${S} disagrees with its contour tangent authority`);let Ae={geometry:e.geometry,ownership:e.route?.ownership??"family",closed:i,bendRadius:e.route?.bendRadius??0,contours:z,...(()=>{let S={start:z[0]?.startTangent,end:z.at(-1)?.endTangent};return{...e.route?.startTangent??S.start?{startTangent:e.route?.startTangent??S.start}:{},...e.route?.endTangent??S.end?{endTangent:e.route?.endTangent??S.end}:{}}})(),labelAnchors:e.route?.labelAnchors??m.flatMap(S=>S.anchor?[S.anchor]:[])};if(e.hit?.closed!==void 0&&e.hit.closed!==i)throw new TypeError(`Connector "${e.id}" hit.closed must match route.closed topology`);let ht={geometry:e.hit?.geometry??e.geometry,closed:e.hit?.closed??i,strokeWidth:e.hit?.strokeWidth??Math.max(6,lo(w)),pointerEvents:e.hit?.pointerEvents??(e.lineStyle==="invisible"?"none":"stroke")},Qr=an({geometry:e.geometry,lineStyle:e.lineStyle,endpoints:u,relationship:f,route:Ae,stroke:B,markers:{...s?{start:s}:{},mid:a,...o?{end:o}:{}},labels:m,hit:ht,...e.transform?{transform:e.transform}:{},additionalDiagnostics:e.terminalProjection?.diagnostics}),ei={kind:"connector",id:e.id,role:e.role,lineStyle:e.lineStyle,endpoints:u,relationship:f,route:Ae,stroke:B,markers:{...s?{start:s}:{},mid:a,...o?{end:o}:{}},labels:m,hit:ht,terminalProjection:Qr,identity:p,...g?{accessibility:g}:{},...e.channels?{channels:e.channels}:{},...e.transform?{transform:e.transform}:{}};return ne(ei,y)}function dn(e,n){let t=Qe(n,e),r=Wn(n,t),i=sn(Ie(n,t),r);return ne({kind:"text",identity:t,accessibility:r,...e},i)}function Qa(e,n){return ne({kind:"document",element:"content",...e},n)}function Hn(e){let n=e.element==="title"?"title":"desc",t=e.domId?` id="${N(e.domId)}"`:"";return ne({kind:"document",role:"chrome",...e},`<${n}${t}>${Y(e.text)}</${n}>`)}function lr(e,n){return ne({kind:"document",role:"defs",element:"definitions",...e},n)}function ur(){return ne({kind:"document",id:"svg-close",role:"chrome",element:"close"},"</svg>")}function Kn(e,n){if(n<=0||e==="")return e;let t=" ".repeat(n);return t+e.replace(/\n/g,`
|
|
27
27
|
${t}`)}function ln(e){let n=e.join??`
|
|
28
28
|
`,t=Qe(e.open,e),r=ue(Ie(e.open,t)),i=[r];for(let s of e.children)i.push(Kn(R(s.node),s.indent));return i.push(e.close),ne({kind:"group",id:e.id,role:e.role,open:r,close:e.close,children:e.children,join:n,channels:e.channels,identity:t},i.join(n))}function fr(e,n){return ne({kind:"document",element:"open",id:e.id,role:"prelude"},n)}function Qn(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\\(?:\r\n|[\n\r\f])/g,"").replace(/\\([0-9a-fA-F]{1,6})\s?/g,(n,t)=>{let r=Number.parseInt(t,16);return Number.isFinite(r)?String.fromCodePoint(r):""}).replace(/\\([^\n\r\f])/g,"$1")}var gr=/\s([^\s=<>]+)\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/g,hr=/<(?:[^\s<>/:]+:)?(?:animate(?:Motion|Transform)?|set)\b/i;function br(e){let n=[];for(let t=e.indexOf("<");t>=0;t=e.indexOf("<",t+1)){let r=e[t+1];if(!r||r==="/"||r==="!"||r==="?"||!/[^\s<>]/.test(r))continue;let i;for(let s=t+1;s<e.length;s++){let o=e[s];if(i)o===i&&(i=void 0);else if(o==='"'||o==="'")i=o;else if(o===">"){n.push(e.slice(t,s+1)),t=s;break}}}return n}var bo=new Set(["amp","lt","gt","quot","apos"]);function ze(e){return e===" "||e===" "||e===`
|
|
@@ -43,4 +43,4 @@ ${tt(n)}
|
|
|
43
43
|
`)))&&!i.includes("M 10 65 L 25 50 L 40 65 Z"));return M(o,n.realization==="lossy"?"authored closed carrier retained while visible ribbon is rebuilt from the routed points":"authored closed subpath retained","output did not demonstrate the declared closedness realization")},"connector/bend-radius/render":(e,n)=>{let t=T.nodes.richConnector,r=_(e,t),i=re(r,R(t)),s=r.includes("Q 66 12 70 14")&&t.route.bendRadius===4;return M(s&&(n.realization==="native"?!/\sstroke-opacity="0"/.test(r.match(/^\s*<path\b[^>]*>/)?.[0]??""):n.realization==="lossy"&&r!==R(t)&&!i.includes("Q 66 12 70 14")),n.realization==="lossy"?"exact rounded carrier retained while the visible sketch uses the declared routed projection":"authored rounded connector geometry retained","bend-radius realization did not match the declared capability")},"connector/stroke-opacity/render":(e,n)=>fe(e,n,"stroke-opacity","0.65"),"connector/stroke-cap/render":(e,n)=>fe(e,n,"stroke-linecap","square"),"connector/stroke-join/render":(e,n)=>fe(e,n,"stroke-linejoin","miter"),"connector/stroke-miter/render":(e,n)=>fe(e,n,"stroke-miterlimit","7"),"connector/dash-array/render":(e,n)=>fe(e,n,"stroke-dasharray","6 3"),"connector/dash-offset/render":(e,n)=>fe(e,n,"stroke-dashoffset","2"),"connector/dash-restart/render":(e,n)=>{let t=T.nodes.richConnector,r=_(e,t),i=re(r,R(t)),s=be(i,'stroke-dasharray="6 3"'),o=be(i,"M");return M(n.realization==="native"?s===1:n.realization==="lossy"&&s>=1&&o>1,n.realization==="lossy"?`${o} generated stroke subpaths restart independently`:"one authored dashed path retains one dash phase","dash restart boundaries did not match the declared realization")},"connector/path-length/render":(e,n)=>{let t=T.nodes.richConnector,r=_(e,t),i=re(r,R(t)),s=be(i,'pathLength="77"'),o=be(i,"M");return M(n.realization==="native"?s===1:n.realization==="lossy"&&s>=1&&o>1,n.realization==="lossy"?`one pathLength value spans ${o} generated stroke subpaths`:"one authored pathLength calibration retained","pathLength behavior did not match the declared realization")},"connector/paint-order/render":(e,n)=>fe(e,n,"paint-order","stroke fill"),"connector/non-scaling-stroke/render":(e,n)=>fe(e,n,"vector-effect","non-scaling-stroke"),"connector/marker-orientation/render":(e,n)=>{let t=ke(e);if(n.realization==="unsupported")return M(t.includes('orient="auto"')&&!t.includes('marker-start="url(#backend-conformance-arrow)"')&&!t.includes('marker-mid="url(#backend-conformance-arrow)"')&&!t.includes('marker-end="url(#backend-conformance-arrow)"'),"marker resource remains serializable but the unsupported connector attachment is omitted","backend declared connector marker orientation unsupported but attached the marker");let r=t.includes('orient="auto"')&&t.includes('marker-start="url(#backend-conformance-arrow)"')&&t.includes('marker-mid="url(#backend-conformance-arrow)"')&&t.includes('marker-end="url(#backend-conformance-arrow)"'),i=n.realization!=="projected"||t.includes('markerUnits="userSpaceOnUse"');return M((n.realization==="native"||n.realization==="projected")&&r&&i,n.realization==="projected"?"typed marker kept in the marker projection with projected units/orientation":"native marker orientation retained","marker orientation/carrier projection did not match the declaration")},"connector/marker-overflow/render":(e,n)=>{let t=ke(e),r=t.includes('marker-start="url(#backend-conformance-arrow)"')&&t.includes('marker-end="url(#backend-conformance-arrow)"');return n.realization==="unsupported"?M(t.includes('overflow="visible"')&&!r&&!t.includes('marker-mid="url(#backend-conformance-arrow)"'),"marker resource remains serializable but its unsupported connector attachment is omitted","backend declared connector marker overflow unsupported but attached the marker"):M((n.realization==="native"||n.realization==="projected")&&t.includes('overflow="visible"')&&r,n.realization==="projected"?"visible overflow remains in the typed marker resource projection":"native marker overflow retained","marker overflow or its connector attachment was not preserved")},"connector/endpoints/serialize":e=>{let n=_(e,T.nodes.richConnector);return M(n.includes('data-from="backend-conformance-node"')&&n.includes('data-to="backend-conformance-data-mark"'),"typed endpoint identities serialized on the semantic carrier","connector endpoint identities were not serialized")},"connector/direction/serialize":e=>{let n=_(e,T.nodes.richConnector);return M(n.includes('data-relationship="dependency"')&&n.includes('data-direction="forward"'),"typed relationship kind and direction serialized on the semantic carrier","connector relationship direction was not serialized")},"connector/labels/accessibility":e=>{let n=_(e,T.nodes.richConnector);return M(n.includes('aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"'),"typed connector label participates in the accessible relation name","connector label was absent from accessibility output")},"connector/labels/render":(e,n)=>{let t=_(e,T.nodes.richConnector);return M(n.realization==="native"&&t.includes('data-id="backend-conformance-relation-label"')&&t.includes('data-connector-label-for="backend-conformance-relation"')&&t.includes('x="66" y="6"')&&t.includes('font-size="11"')&&t.includes('fill="#172033"')&&t.includes('stroke="#ffffff"')&&t.includes('stroke-width="3"')&&t.includes('paint-order="stroke fill"')&&t.includes(">depends on</text>"),"typed label anchor, clearance, paint, typography, and halo render on the connector carrier","connector label visual semantics were not preserved")},"connector/relation/accessibility":e=>{let n=_(e,T.nodes.richConnector);return M(n.includes('data-from="backend-conformance-node"')&&n.includes('data-to="backend-conformance-data-mark"')&&n.includes('role="graphics-symbol"')&&n.includes('aria-roledescription="relation"')&&n.includes('aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"'),"typed relation and accessible label preserved on the carrier","connector relation accessibility semantics were lost")},"connector/markers/render":(e,n)=>{let t=_(e,T.nodes.richConnector);return n.realization==="unsupported"?M(!t.includes('marker-start="url(#backend-conformance-arrow)"')&&!t.includes('marker-mid="url(#backend-conformance-arrow)"')&&!t.includes('marker-end="url(#backend-conformance-arrow)"'),"backend omits the explicitly unsupported connector marker","backend declared connector markers unsupported but still serialized one"):M((n.realization==="native"||n.realization==="projected")&&t.includes('marker-start="url(#backend-conformance-arrow)"')&&t.includes('marker-mid="url(#backend-conformance-arrow)"')&&t.includes('marker-end="url(#backend-conformance-arrow)"'),n.realization==="projected"?"marker retained in the typed marker projection":"native connector marker retained","connector marker projection did not match the declaration")},"connector/interaction/hit-test":e=>{let n=T.nodes.freehandConnector,t=_(e,n);return M(t.includes('data-id="backend-conformance-freehand-relation"')&&Q(n,{x:42,y:82})&&!Q(n,{x:66,y:58}),"typed hit geometry remains aligned with the backend-preserved connector carrier","connector carrier or typed hit geometry was not preserved")},"connector/hit-geometry/hit-test":e=>{let n=T.nodes.multiSubpathConnector,t=_(e,n);return M(t.includes('data-id="backend-conformance-multi-relation"')&&Q(n,{x:18,y:72})&&!Q(n,{x:40,y:72}),"typed hit geometry preserves contour gaps independently of backend artwork","connector hit geometry did not preserve typed contour boundaries")},"connector/identity/serialize":e=>{let n=_(e,T.nodes.richConnector);return M(n.includes('data-id="backend-conformance-relation"')&&n.includes('data-role="edge"'),"connector DOM identity preserved on carrier","connector DOM identity was lost")},"marker/geometry/render":(e,n)=>{let t=_(e,T.nodes.marker);return M((n.realization==="native"||n.realization==="projected")&&t.includes("M 0 0 L 8 4 L 0 8 Z")&&t.includes('viewBox="0 0 8 8"'),n.realization==="projected"?"typed marker geometry reserialized in the marker resource projection":"native marker geometry retained","marker geometry was not present in backend output")},"marker/paint/render":(e,n)=>{let t=_(e,T.nodes.marker);return M((n.realization==="native"||n.realization==="projected")&&t.includes('fill="#a33b20"')&&t.includes('stroke="#334155"'),n.realization==="projected"?"typed marker paint retained in the marker resource projection":"native marker paint retained","marker paint was not present in backend output")},"marker/identity/serialize":e=>{let n=_(e,T.nodes.marker);return M(n.includes('id="backend-conformance-arrow"'),"marker resource identity retained","marker resource identity was lost")},"data-mark/geometry/render":(e,n)=>xe(e,n,T.nodes.dataMark),"data-mark/paint/render":(e,n)=>xe(e,n,T.nodes.dataMark,t=>t.includes("#a33b20")&&t.includes("#334155")),"data-mark/identity/serialize":e=>{let n=_(e,T.nodes.dataMark);return M(n.includes('data-id="backend-conformance-data-mark"')&&n.includes('data-role="bar"'),"quantitative mark DOM identity retained","quantitative mark DOM identity was lost")}});function cs(e){return ft.includes(e.primitive)&&Lr.includes(e.feature)&&Br.includes(e.operation)}function ds(e){return e.capabilities.map(n=>{let t=pt(n),r=as[Gr(n)],i={claimKey:t,target:n.target,primitive:n.primitive,feature:n.feature,operation:n.operation,realization:n.realization,...n.diagnostic?{limitation:n.diagnostic}:{}};if(!r)return cs(n)?{...i,status:"failed",diagnostic:"No executable witness is registered for this core claim."}:{...i,status:"unverified-extension",diagnostic:"Namespaced extension claim is outside the built-in witness vocabulary."};let s=`${qr}/${Gr(n)}`;try{let o=r(e,n);return{...i,witnessId:s,status:o.passed?"passed":"failed",observation:o.observation,...o.diagnostic?{diagnostic:o.diagnostic}:{}}}catch(o){return{...i,witnessId:s,status:"failed",diagnostic:`Witness threw ${o instanceof Error?o.message:String(o)}`}}})}function Hr(e,n=e.id){let t=[],r=(y,E,w)=>{t.push(Object.freeze({id:y,passed:E,...w?{diagnostic:w}:{}}))},i=[],s=[];for(let y of T.probes)try{let E=_(e,y.node),w=_(e,y.node);if(typeof E!="string"||typeof w!="string"){i.push(`${y.primitive} returned a non-string`),s.push(`${y.primitive} returned a non-string`);continue}E!==w&&i.push(`${y.primitive} changed between identical calls`);let j=y.requiredFragments.filter(F=>!E.includes(F));j.length>0&&s.push(`${y.primitive} ${Wr(j)}`)}catch(E){let w=`${y.primitive} threw ${E instanceof Error?E.message:String(E)}`;i.push(w),s.push(w)}r("draw-node-determinism",i.length===0,i.join("; ")||void 0),r("draw-node-semantics",s.length===0,s.join("; ")||void 0);let o="",a="",c;try{o=ke(e),a=ke(e),typeof o!="string"||typeof a!="string"?(c="render must return a string",o=typeof o=="string"?o:"",a=typeof a=="string"?a:""):o!==a&&(c="render changed between identical calls")}catch(y){c=`render threw ${y instanceof Error?y.message:String(y)}`}r("document-determinism",c===void 0,c);let d=et(o);r("single-svg-document",d,d?void 0:"render must return one well-formed namespaced SVG document");let u=o.match(/\b(?:NaN|Infinity|undefined)\b/)?.[0];r("finite-serialization",!u,u?`serialized ${u}`:void 0);let f=fn(o),m;try{pn(o,"default")}catch(y){m=y instanceof Error?y.message:String(y)}let p=f.ok&&m===void 0;r("output-security",p,p?void 0:[m,f.ok?void 0:`unsafe SVG constructs: ${f.refs.join(", ")}`].filter(Boolean).join("; "));let g=[["document-semantics",['aria-labelledby="backend-conformance-title backend-conformance-description"','<title id="backend-conformance-title">Backend conformance fixture</title>','<desc id="backend-conformance-description">A representative Scene document</desc>']],["container-semantics",['data-id="backend-conformance-container"','data-role="group"']],["shape-semantics",['data-id="backend-conformance-node"','data-role="node"']],["text-semantics",['data-id="backend-conformance-text"','data-role="member"',"Fixture label"]],["connector-semantics",['data-id="backend-conformance-relation"','data-role="edge"','data-from="backend-conformance-node"','data-to="backend-conformance-data-mark"','role="graphics-symbol"','aria-roledescription="relation"','aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"']],["marker-semantics",['id="backend-conformance-arrow"']],["data-mark-semantics",['data-id="backend-conformance-data-mark"','data-role="bar"']]];for(let[y,E]of g){let w=E.filter(j=>!o.includes(j));r(y,w.length===0,Wr(w))}let b=ds(e),x=b.filter(y=>y.status==="failed");r("capability-claims",x.length===0,x.map(y=>`${y.primitive}/${y.feature}/${y.operation}: ${y.diagnostic??"failed"}`).join("; ")||void 0);let v={version:os,fixtureId:qr,backendId:n,contracts:{scene:2,outputSecurity:2},directOutputs:["svg"],passed:t.every(y=>y.passed),checks:t,claims:b};return yt(v)}var ls=64,us=256,fs=L.maxNodes*16,ps=L.maxNodes*16,ms=L.maxTextBytes*8,ys=Object.freeze({maxObjects:L.maxNodes*4,maxTextBytes:L.maxTextBytes,maxArrayEntries:L.maxNodes,maxAggregateArrayEntries:ps,maxDepth:L.maxDepth*4,maxPropertiesPerObject:ls,maxAggregateProperties:fs,maxPropertyKeyBytes:us,maxAggregatePropertyKeyBytes:ms}),gs=Object.freeze({...ys,maxObjects:L.maxNodes*8,maxTextBytes:L.maxTextBytes+L.maxAggregateSerializationBytes+L.maxFinalSvgBytes});function hs(e,n,t="input"){let r=new WeakSet,i=new WeakMap,s=0,o=0,a=0,c=0,d=0,u=(f,m,p)=>{if(typeof f=="string"){let b=Math.max(0,n.maxTextBytes-o),x=de(f,b);if(x>b)throw new Error(`External Scene text values exceed the aggregate ${n.maxTextBytes}-byte limit`);return o+=x,f}if(f===null||typeof f!="object"){if(typeof f=="function"||typeof f=="symbol"||typeof f=="bigint")throw new TypeError(`External Scene ${p} must be declarative data`);return f}if(m>n.maxDepth)throw new Error("External Scene input object graph is too deeply nested");if(++s>n.maxObjects)throw new Error("External Scene input object graph is too large");if(r.has(f))throw new Error("External Scene input must be acyclic");let g=i.get(f);if(g!==void 0)return g;r.add(f);try{if(Array.isArray(f)){if(Object.getPrototypeOf(f)!==Array.prototype)throw new TypeError(`External Scene ${p} must be a plain array`);let y=Reflect.getOwnPropertyDescriptor(f,"length");if(!y||!("value"in y)||typeof y.value!="number"||!Number.isSafeInteger(y.value)||y.value<0)throw new TypeError(`External Scene ${p}.length must be a non-negative integer data property`);let E=y.value;if(E>n.maxArrayEntries)throw new Error(`External Scene ${p} contains too many entries`);if(a+=E,a>n.maxAggregateArrayEntries)throw new Error(`External Scene input exceeds the aggregate ${n.maxAggregateArrayEntries}-array-entry limit`);let w=Reflect.ownKeys(f);if(w.length>E+1||!w.includes("length"))throw new TypeError(`External Scene ${p} must not define custom array properties or iterators`);let j=new Map;j.set("length",y);for(let h of w){if(h==="length")continue;let B=Reflect.getOwnPropertyDescriptor(f,h);if(!B)throw new TypeError(`External Scene ${p} has an unstable property descriptor`);j.set(h,B)}for(let h of w)if(h!=="length"&&(typeof h!="string"||!/^(?:0|[1-9]\d*)$/.test(h)||Number(h)>=E))throw new TypeError(`External Scene ${p} must not define custom array properties or iterators`);let F=new Array(E);i.set(f,F),qn(f,F);for(let h=0;h<E;h++){let B=j.get(String(h));if(!B)throw new TypeError(`External Scene ${p} must not be sparse`);if(!("value"in B)||!B.enumerable)throw new TypeError(`External Scene ${p}[${h}] must be an enumerable data property`);F[h]=u(B.value,m+1,`${p}[${h}]`)}return Object.freeze(F)}let b=Object.getPrototypeOf(f);if(b!==Object.prototype&&b!==null)throw new TypeError(`External Scene ${p} must be a plain object`);let x=Reflect.ownKeys(f);if(x.length>n.maxPropertiesPerObject)throw new Error(`External Scene ${p} contains too many properties`);if(c+=x.length,c>n.maxAggregateProperties)throw new Error(`External Scene input exceeds the aggregate ${n.maxAggregateProperties}-property limit`);for(let y of x){if(typeof y!="string")continue;let E=Math.max(0,n.maxAggregatePropertyKeyBytes-d),w=de(y,Math.min(n.maxPropertyKeyBytes,E));if(w>n.maxPropertyKeyBytes)throw new Error(`External Scene ${p} contains a property key longer than ${n.maxPropertyKeyBytes} bytes`);if(w>E)throw new Error(`External Scene property keys exceed the aggregate ${n.maxAggregatePropertyKeyBytes}-byte limit`);d+=w}let v=Object.create(null);i.set(f,v),qn(f,v);for(let y of x){if(typeof y!="string")throw new TypeError(`External Scene ${p} must not contain symbol keys`);let E=Reflect.getOwnPropertyDescriptor(f,y);if(!E||!("value"in E)||!E.enumerable)throw new TypeError(`External Scene ${p}.${y} must be an enumerable data property`);Object.defineProperty(v,y,{value:u(E.value,m+1,`${p}.${y}`),enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(v)}finally{r.delete(f)}};return u(e,0,t)}function Kr(e){let n=hs(e,gs,"scene");return jr(n),n}function sd(e,n,t,r){return[e,...r.map(i=>Kn(i.serialized,i.indent)),n].join(t)}function bs(e,n){return!n.style||e.transparent?"":`<rect width="${e.width}" height="${e.height}" fill="var(--bg)" data-backdrop="page" />`}var ad={id:"default",capabilities:Ur("backend:default","crisp"),drawNode(e){return R(e)},render(e,n){let t=Kr(e),r=bs(t,n);return r?t.parts.map((i,s)=>s===0?`${R(i)}
|
|
44
44
|
${r}`:R(i)).join(`
|
|
45
45
|
`):t.parts.map(R).join(`
|
|
46
|
-
`)}},Yr="1.0.0",xs=Object.freeze({core:"^0.
|
|
46
|
+
`)}},Yr="1.0.0",xs=Object.freeze({core:"^0.4.0",scene:"^2.0.0"}),ks=Object.freeze({owner:"agentic-mermaid",source:"built-in",reference:"src/scene/backend.ts"}),Ss=Object.freeze({owner:"host",source:"in-process"}),Zr=new Map,gt=new Map,Jr=new Map,Be=null;function Es(){if(Be!==null)throw new Error(`Backend registry mutation is forbidden while candidate "${Be}" is undergoing conformance`)}function Cs(e,n){return Ye({id:e,kind:"backend",version:n.version??Yr,compatibility:n.compatibility,provenance:n.provenance??Ss})}function $s(e,n){if(!Array.isArray(e.capabilities))throw new Error(`Backend "${e.id}" must declare capability claims`);let t=mt(e.capabilities);if(!t.valid)throw new Error(`Backend "${e.id}" has invalid capabilities: ${t.diagnostics.join("; ")}`);if(e.capabilities.length===0)throw new Error(`Backend "${e.id}" must declare capability claims`);if(e.capabilities.find(s=>s.target!==n))throw new Error(`Backend "${e.id}" capability target must be "${n}"`);let i=e.capabilities.find(s=>!s.evidence?.trim());if(i)throw new Error(`Backend "${e.id}" capability ${i.primitive}/${i.feature}/${i.operation} must declare evidence`);for(let{primitive:s,feature:o,operation:a}of Fr)if(!e.capabilities.some(c=>c.primitive===s&&c.feature===o&&c.operation===a))throw new Error(`Backend "${e.id}" must declare an evidenced essential ${s}/${o}/${a} capability`)}function ws(e){let n=["target","primitive","feature","operation","realization","evidence","diagnostic"];return Object.freeze(e.map(t=>{let i=(typeof t=="object"||typeof t=="function")&&t!==null?t:void 0,s=i?{...i}:{};if(i)for(let o of n)Object.prototype.hasOwnProperty.call(s,o)||(s[o]=Reflect.get(i,o));return Object.freeze(s)}))}function Ns(e){let n=e;return n.capabilities=ws(e.capabilities),Object.freeze(e)}function cd(e){Es(),Be="<built-in>";try{let n=e.id,t=Zt("backend",n);Be=t;let r=gt.get(n);if(r!==void 0)throw new Error(`Backend input name "${n}" already selects "${r}"`);$s(e,t);let i=Ns(e),s=Hr(i,t);if(!s.passed){let o=s.checks.filter(a=>!a.passed).map(a=>`${a.id}${a.diagnostic?`: ${a.diagnostic}`:""}`);throw new Error(`Built-in backend "${n}" failed registration SVG conformance: ${o.join("; ")}`)}Jt(Zr,{identity:Cs(t,{version:Yr,compatibility:xs,provenance:ks}),value:i}),Jr.set(t,s),gt.set(n,t)}finally{Be=null}}function Ts(){return Object.freeze(Array.from(Zr.values(),({identity:e,value:n})=>Object.freeze({identity:e,backend:n,inputName:Array.from(gt.entries()).find(([,t])=>t===e.id)?.[0]??e.id,conformance:Jr.get(e.id)})))}function Xr(e,n){return e.find(t=>t.identity.id===n||t.inputName===n)}function dd(e,n){let t=Ts(),r=Xr(t,e);if(!n)return r;let i=n.selectBackend(Object.freeze({requestedId:e,...r?{canonicalId:r.identity.id}:{},registered:t}));if(i!==null)return typeof i=="string"?Xr(t,i):r}export{Ue as a,Ve as b,Rs as c,$n as d,We as e,Ps as f,zs as g,yi as h,Ds as i,Mt as j,Ee as k,gi as l,Nn as m,H as n,se as o,le as p,Fs as q,It as r,Tn as s,bi as t,Us as u,Rn as v,qs as w,Hs as x,Ks as y,vn as z,Xs as A,An as B,Bt as C,Zs as D,Ce as E,oa as F,sa as G,Ut as H,Vt as I,$i as J,aa as K,ua as L,fa as M,Y as N,N as O,Ni as P,pa as Q,Gt as R,ha as S,Zt as T,Ye as U,Jt as V,wa as W,qi as X,Hi as Y,Na as Z,va as _,we as $,Ia as aa,Pa as ba,za as ca,Ie as da,or as ea,ja as fa,ce as ga,R as ha,Pe as ia,ye as ja,dn as ka,Qa as la,Hn as ma,lr as na,ur as oa,ln as pa,fr as qa,ec as ra,pn as sa,Fr as ta,_c as ua,Ur as va,tt as wa,$r as xa,wr as ya,ot as za,dt as Aa,ut as Ba,jr as Ca,gs as Da,hs as Ea,Kr as Fa,sd as Ga,bs as Ha,ad as Ia,cd as Ja,dd as Ka};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as c,d as r,f as o}from"./chunk-
|
|
1
|
+
import{a as c,d as r,f as o}from"./chunk-D3XXDKIO.js";function f(a,e={}){let i=a<=6?{accent:e.accent&&r(e.accent)?e.accent:c,bg:e.bg&&r(e.bg)?e.bg:void 0}:e,n=o(a,i),t=e.overrides;return!t||t.length===0?n:n.map((l,d)=>t[d%12]??l)}export{f as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as d,d as o}from"./chunk-A7L4WWVW.js";import{C as u}from"./chunk-
|
|
1
|
+
import{c as d,d as o}from"./chunk-A7L4WWVW.js";import{C as u}from"./chunk-2XCPFAD5.js";var C=["axisColor","axisStrokeWidth","axisLabelFontSize","curveOpacity","curveStrokeWidth","graticuleColor","graticuleStrokeWidth","graticuleOpacity","legendBoxSize","legendFontSize"],L=["width","height","axisScaleFactor"],r=Object.freeze({dimension:4096,margin:4096,factor:8,axisLabelFactorMin:1.1,fontSize:256,lineWidth:64,legendBoxSize:512}),z=["marginTop","marginRight","marginBottom","marginLeft"];function W(a={}){let n=d(a,["radar"])??{},i={};for(let t of L){let e=o(n,[t]),f=t==="width"||t==="height"?r.dimension:r.factor;typeof e=="number"&&Number.isFinite(e)&&e>0&&e<=f&&(i[t]=e)}let s=o(n,["axisLabelFactor"]);typeof s=="number"&&Number.isFinite(s)&&s>=r.axisLabelFactorMin&&s<=r.factor&&(i.axisLabelFactor=s);for(let t of z){let e=o(n,[t]);typeof e=="number"&&Number.isFinite(e)&&e>=0&&e<=r.margin&&(i[t]=e)}let c=o(n,["curveTension"]);typeof c=="number"&&Number.isFinite(c)&&c>=0&&c<=1&&(i.curveTension=c);let g=o(n,["useMaxWidth"]);typeof g=="boolean"&&(i.useMaxWidth=g);let F=o(n,["tickLabels"]);typeof F=="boolean"&&(i.tickLabels=F);let b=d(a,["themeVariables","radar"])??{},p=["axisStrokeWidth","axisLabelFontSize","curveStrokeWidth","graticuleStrokeWidth","legendBoxSize","legendFontSize"];for(let t of p){let e=o(b,[t]),f=t==="legendBoxSize"?r.legendBoxSize:t.endsWith("FontSize")?r.fontSize:r.lineWidth;typeof e=="number"&&Number.isFinite(e)&&e>0&&e<=f&&(i[t]=e)}for(let t of["curveOpacity","graticuleOpacity"]){let e=o(b,[t]);typeof e=="number"&&Number.isFinite(e)&&e>=0&&e<=1&&(i[t]=e)}for(let t of["axisColor","graticuleColor"]){let e=u(o(b,[t]));e&&(i[t]=e)}let S=u(o(a,["themeVariables","titleColor"]));S&&(i.titleColor=S);let l=o(a,["themeVariables","fontSize"]),m=typeof l=="number"?l:typeof l=="string"&&/^\d+(?:\.\d+)?(?:px)?$/i.test(l.trim())?Number.parseFloat(l):Number.NaN;Number.isFinite(m)&&m>0&&m<=r.fontSize&&(i.titleFontSize=m);let h=[],x=!1;for(let t=0;t<12;t++){let e=u(o(a,["themeVariables",`cScale${t}`]));e&&(h[t]=e,x=!0)}return x&&(i.paletteOverrides=h),i}export{C as a,r as b,W as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as $,b as X}from"./chunk-
|
|
1
|
+
import{a as $,b as X}from"./chunk-X64T74C5.js";import{d as D}from"./chunk-A7L4WWVW.js";import{a as I,b as Y,c as T,d as O,e as F,j as E,k as W}from"./chunk-UAEZO5VL.js";import{i as R}from"./chunk-2XCPFAD5.js";var f={padding:40,boxPadX:8,headerBaseHeight:32,annotationHeight:16,memberRowHeight:20,sectionPadY:8,emptySectionHeight:8,minWidth:120,memberFontSize:11,memberFontWeight:400,nodeSpacing:40,layerSpacing:60},A={nodeLabelFontSize:T.nodeLabel,edgeLabelFontSize:T.edgeLabel,groupHeaderFontSize:T.groupHeader,nodeLabelFontWeight:700,edgeLabelFontWeight:O.edgeLabel,groupHeaderFontWeight:O.groupHeader,nodePaddingX:f.boxPadX,nodePaddingY:f.sectionPadY,nodeCornerRadius:0,nodeLineWidth:F.outerBox,edgeLineWidth:F.connector,groupCornerRadius:0,groupPaddingX:f.boxPadX,groupPaddingY:f.sectionPadY,groupLineWidth:F.outerBox};function oe(o,t){if(!o)return t;let u=v(o,"class","nodeSpacing"),s=v(o,"class","rankSpacing"),x=D(o,["class","hierarchicalNamespaces"]),b=t.class?.hierarchicalNamespaces??(typeof x=="boolean"?x:void 0);return u===void 0&&s===void 0&&b===void 0?t:{...t,nodeSpacing:t.nodeSpacing??u,layerSpacing:t.layerSpacing??s,...b!==void 0?{class:{...t.class,hierarchicalNamespaces:b}}:{}}}function v(o,t,u){let s=D(o,[t,u]);return typeof s=="number"&&Number.isFinite(s)&&s>=0?s:void 0}var B="ns:";function z(o,t,u=!0){let s=[];for(let x of o){let b=t?`${t}.${x.name}`:x.name;s.push({path:b,...u&&t?{parentPath:t}:{},ns:x}),s.push(...z(x.children,b,u))}return s}function j(o,t,u){let s=W(t,A,u),x=new Map;for(let d of o.classes){let p=E(d.label,s.nodeTextTransform),S=Math.max(f.headerBaseHeight,R(p,s.nodeLabelFontSize,s.nodeLabelFontWeight).height+s.nodePaddingY*2),n=d.annotation?S+f.annotationHeight:S,l=d.attributes.length>0?d.attributes.length*f.memberRowHeight+s.nodePaddingY:f.emptySectionHeight,h=d.methods.length>0?d.methods.length*f.memberRowHeight+s.nodePaddingY:f.emptySectionHeight,a=I(p,s.nodeLabelFontSize,s.nodeLabelFontWeight),e=_(d.attributes),g=_(d.methods),r=Math.max(f.minWidth,a+s.nodePaddingX*2,e+s.nodePaddingX*2,g+s.nodePaddingX*2),c=n+l+h;x.set(d.id,{width:r,height:c,headerHeight:n,attrHeight:l,methodHeight:h})}let b=t.nodeSpacing??f.nodeSpacing,N=t.layerSpacing??f.layerSpacing,H=t.class?.hierarchicalNamespaces!==!1,i=z(o.namespaces,void 0,H),m=i.length>0,k={"elk.algorithm":"layered","elk.direction":X(o.direction??"TB"),"elk.spacing.nodeNode":String(b),"elk.layered.spacing.nodeNodeBetweenLayers":String(N),"elk.padding":`[top=${f.padding},left=${f.padding},bottom=${f.padding},right=${f.padding}]`,"elk.edgeRouting":"ORTHOGONAL","elk.edgeLabels.placement":"CENTER"};m&&(k["elk.hierarchyHandling"]="INCLUDE_CHILDREN");let w={id:"root",layoutOptions:k,children:[],edges:[]},P=new Map;for(let d of i)for(let p of d.ns.classIds)P.has(p)||P.set(p,d.path);let C=new Map,M=s.groupHeaderFontSize+16;for(let d of i){let p={id:B+d.path,layoutOptions:{"elk.padding":`[top=${M+s.groupPaddingY},left=${s.groupPaddingX+8},bottom=${s.groupPaddingY+8},right=${s.groupPaddingX+8}]`,"elk.spacing.nodeNode":String(b),"elk.layered.spacing.nodeNodeBetweenLayers":String(N),"elk.edgeRouting":"ORTHOGONAL","elk.edgeLabels.placement":"CENTER"},children:[],edges:[]};C.set(d.path,p),(d.parentPath?C.get(d.parentPath):w).children.push(p)}for(let d of o.classes){let p=x.get(d.id),S={id:d.id,width:p.width,height:p.height},n=P.get(d.id);(n?C.get(n):w).children.push(S)}let L=d=>{let p=P.get(d);if(!p)return[];if(!H)return[p];let S=p.split(".");return S.map((n,l)=>S.slice(0,l+1).join("."))};for(let d=0;d<o.relationships.length;d++){let p=o.relationships[d],S={id:`e${d}`,sources:[p.from],targets:[p.to]};if(p.label){let a=E(p.label,s.edgeTextTransform),e=R(a,s.edgeLabelFontSize,s.edgeLabelFontWeight);S.labels=[{text:a,width:e.width+8,height:e.height+6}]}let n=L(p.from),l=L(p.to),h;for(let a=0;a<Math.min(n.length,l.length)&&n[a]===l[a];a++)h=n[a];(h?C.get(h):w).edges.push(S)}return{elkGraph:w,classSizes:x}}function U(o,t,u,s,x){let b=new Map;for(let n of t.classes)b.set(n.id,n);let N=new Map(z(t.namespaces,void 0,x).map(n=>[n.path,n])),H=s.groupHeaderFontSize+16,i=[],m=[],k=new Map,w=(n,l,h)=>{for(let a of n.edges??[]){let e=[];if(a.sections&&a.sections.length>0){let c=a.sections[0];e.push({x:c.startPoint.x+l,y:c.startPoint.y+h});for(let y of c.bendPoints??[])e.push({x:y.x+l,y:y.y+h});e.push({x:c.endPoint.x+l,y:c.endPoint.y+h})}let g,r=a.labels?.[0];r&&r.x!=null&&r.y!=null&&(g={x:r.x+(r.width??0)/2+l,y:r.y+(r.height??0)/2+h}),k.set(a.id,{points:e,labelPosition:g})}for(let a of n.children??[]){let e=(a.x??0)+l,g=(a.y??0)+h;if(a.id.startsWith(B)){let c=a.id.slice(B.length),y=N.get(c);m.push({id:c,name:y?.ns.name??c,label:y?.ns.label??y?.ns.name??c,parentId:y?.parentPath,classIds:y?[...y.ns.classIds]:[],x:e,y:g,width:a.width??0,height:a.height??0,headerHeight:H}),w(a,e,g);continue}let r=b.get(a.id);if(r){let c=u.get(r.id);i.push({id:r.id,label:r.label,annotation:r.annotation,attributes:r.attributes,methods:r.methods,x:e,y:g,width:a.width??c.width,height:a.height??c.height,headerHeight:c.headerHeight,attrHeight:c.attrHeight,methodHeight:c.methodHeight,...r.className?{className:r.className}:{},...r.href?{href:r.href}:{},...r.className&&t.classDefs.get(r.className)||r.inlineStyle?{inlineStyle:{...r.className?t.classDefs.get(r.className):{},...r.inlineStyle}}:{}})}}};w(o,0,0);let P=[];for(let n=0;n<t.relationships.length;n++){let l=t.relationships[n],h=k.get(`e${n}`);P.push({from:l.from,to:l.to,type:l.type,markerAt:l.markerAt,fromType:l.fromType,toType:l.toType,label:l.label,fromCardinality:l.fromCardinality,toCardinality:l.toCardinality,points:h?.points??[],labelPosition:h?.labelPosition})}let C=o.width??600,M=o.height??400;K(P,i,s,C,M);let L=i.map(n=>({x:n.x,y:n.y,width:n.width,height:n.height})),d=(n,l,h=8)=>n.x<l.x+l.width+h&&n.x+n.width+h>l.x&&n.y<l.y+l.height+h&&n.y+n.height+h>l.y,p=M+16,S=t.notes.map(n=>{let l=R(n.text,12,400),h=Math.max(90,l.width+24),a=Math.max(40,l.height+18),e=n.for?i.find(r=>r.id===n.for):void 0,g;if(e){let r=[];for(let c=0;c<Math.max(4,t.notes.length+1);c++){let y=c*(a+12);r.push({x:e.x+e.width+24,y:e.y+y,width:h,height:a,targetX:e.x+e.width,targetY:e.y+e.height/2,noteX:e.x+e.width+24,noteY:e.y+y+a/2},{x:e.x-h-24,y:e.y+y,width:h,height:a,targetX:e.x,targetY:e.y+e.height/2,noteX:e.x-24,noteY:e.y+y+a/2},{x:e.x,y:e.y+e.height+24+y,width:h,height:a,targetX:e.x+e.width/2,targetY:e.y+e.height,noteX:e.x+h/2,noteY:e.y+e.height+24+y})}g=r.find(c=>c.x>=f.padding&&c.y>=f.padding&&!L.some(y=>d(c,y)))??{x:C+24,y:e.y,width:h,height:a,targetX:e.x+e.width,targetY:e.y+e.height/2,noteX:C+24,noteY:e.y+a/2}}else g={x:f.padding,y:p,width:h,height:a},p+=a+12;return L.push(g),C=Math.max(C,g.x+h+f.padding),M=Math.max(M,g.y+a+f.padding),{text:n.text,...n.for?{for:n.for}:{},...g}});return{width:C,height:M,accessibilityTitle:t.accessibilityTitle,accessibilityDescription:t.accessibilityDescription,classes:i,relationships:P,notes:S,namespaces:m}}function K(o,t,u,s,x){let b=(i,m)=>Math.min(i.x1,m.x1)-Math.max(i.x0,m.x0)>.5&&Math.min(i.y1,m.y1)-Math.max(i.y0,m.y0)>.5,N=t.map(i=>({x0:i.x-1,y0:i.y-1,x1:i.x+i.width+1,y1:i.y+i.height+1}));for(let i of o){if(!i.label||!i.labelPosition)continue;let m=R(E(i.label,u.edgeTextTransform),u.edgeLabelFontSize,u.edgeLabelFontWeight);N.push({x0:i.labelPosition.x-m.width/2-2,y0:i.labelPosition.y-8-m.height/2-2,x1:i.labelPosition.x+m.width/2+2,y1:i.labelPosition.y-8+m.height/2+2})}let H=(i,m,k)=>{let w=R(i,u.edgeLabelFontSize,u.edgeLabelFontWeight),P=w.width/2+2,C=w.height/2+2,M=k.x-m.x,L=k.y-m.y,d=Math.abs(M)>=Math.abs(L),p=d?Math.sign(M||1):0,S=d?0:Math.sign(L||1),n=-S,l=p,h=[];for(let g=10;g<=190;g+=12)h.push(-g,g);let a=[];for(let g=14;g<=150;g+=10)for(let r of h){let c={x:m.x+p*g+n*r,y:m.y+S*g+l*r},y={x0:c.x-P,y0:c.y-C,x1:c.x+P,y1:c.y+C};if(a.push({point:c,box:y}),!(y.x0<0||y.y0<0||y.x1>s||y.y1>x)&&N.every(G=>!b(y,G)))return N.push(y),c}let e=a.map(g=>({...g,collisions:N.filter(r=>b(g.box,r)).length})).sort((g,r)=>g.collisions-r.collisions||g.point.y-r.point.y||g.point.x-r.point.x)[0]??{point:m,box:{x0:m.x,y0:m.y,x1:m.x,y1:m.y}};return N.push(e.box),e.point};for(let i of o)if(!(i.points.length<2)&&(i.fromCardinality&&(i.fromCardinalityPosition=H(i.fromCardinality,i.points[0],i.points[1])),i.toCardinality)){let m=i.points.length-1;i.toCardinalityPosition=H(i.toCardinality,i.points[m],i.points[m-1])}}function se(o,t={},u){if(o.classes.length===0)return{width:0,height:0,accessibilityTitle:o.accessibilityTitle,accessibilityDescription:o.accessibilityDescription,classes:[],relationships:[],notes:[],namespaces:[]};let{elkGraph:s,classSizes:x}=j(o,t,u),b=$(s);return U(b,o,x,W(t,A,u),t.class?.hierarchicalNamespaces!==!1)}function _(o){if(o.length===0)return 0;let t=0;for(let u of o){let s=Z(u),x=Y(s,f.memberFontSize);x>t&&(t=x)}return t}function Z(o){let t=o.visibility?`${o.visibility} `:"",u=o.isMethod?`${o.name}(${o.params||""})`:o.name,s=o.type?`: ${o.type}`:"";return`${t}${u}${s}`}var q=/^direction\s+(TB|TD|BT|LR|RL)\s*$/i;function re(o){let t=o.match(q);return t?t[1].toUpperCase():void 0}export{A as a,oe as b,v as c,se as d,re as e};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as y,b as w,c as m,d as j,h as p}from"./chunk-
|
|
1
|
+
import{a as y,b as w,c as m,d as j,h as p}from"./chunk-2XCPFAD5.js";function C(o,t,r,u,i=0){if(!Number.isFinite(t)||t<=0||p(o,r,u,i)<=t)return o;let e=[];for(let l of o.split(/\r?\n/)){if(y.test(l)){e.push(..._(l,t,r,u,i));continue}let c=l.split(/\s+/).filter(Boolean),n="";for(let s of c){let d=n?`${n} ${s}`:s;if(p(d,r,u,i)<=t){n=d;continue}n&&e.push(n),n=k(s,t,r,u,i)}n&&e.push(n)}return e.join(`
|
|
2
2
|
`)}function $(o){let t=[],r=[];for(let u of w(o))for(let i of u.text.split(/(\s+)/))i&&(/^\s+$/.test(i)?r.length>0&&(t.push(r),r=[]):r.push({...u,text:i}));return r.length>0&&t.push(r),t}function I(o){return o.map(m).join("")}function _(o,t,r,u,i){let e=[],l=[];for(let c of $(o)){let n=I(c),s=[...l,n].join(" ");if(p(s,r,u,i)<=t){l.push(n);continue}if(l.length>0&&e.push(l.join(" ")),l=[],c.length===1&&p(n,r,u,i)>t){let d=c[0],a=k(d.text,t,r,d.bold?Math.max(700,u):u,i).split(`
|
|
3
3
|
`);e.push(...a.slice(0,-1).map(f=>m({...d,text:f}))),l=[m({...d,text:a.at(-1)})]}else l=[n]}return l.length>0&&e.push(l.join(" ")),e}function k(o,t,r,u,i=0){if(p(o,r,u,i)<=t)return o;let e=j(o),l=[],c=0;for(;c<e.length;){let n="",s=c;for(;s<e.length;){let b=e[s],g=n+b,F=s<e.length-1,A=e[s+1]??"",T=F&&h(b)&&h(A),M=g+(F&&!T?"-":"");if(n&&p(M,r,u,i)>t)break;n=g,s++}s===c&&(n=e[s],s++);let d=s<e.length,a=d&&h(e[s-1])&&h(e[s]),f=`${n}-`;l.push(d&&!a&&p(f,r,u,i)<=t?f:n),c=s}return l.join(`
|
|
4
4
|
`)}function h(o){return/[ᄀ-ᅟ⺀-가-힣豈-︰-﹏-⦆¢-₩\u{1F300}-\u{1FAFF}\u{20000}-\u{2FA1F}]|\p{Extended_Pictographic}|\uFE0F|\u200D/u.test(o)}export{C as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{k as S,l as O,m as L,q as y,s as M,t as w}from"./chunk-
|
|
1
|
+
import{k as S,l as O,m as L,q as y,s as M,t as w}from"./chunk-2XCPFAD5.js";var A="#3b82f6";function R(t){let[e,n,i]=S(t),r=e/255,o=n/255,c=i/255,s=Math.max(r,o,c),a=Math.min(r,o,c),u=(s+a)/2;if(s===a)return[0,0,u*100];let l=s-a,f=u>.5?l/(2-s-a):l/(s+a),d;return s===r?d=((o-c)/l+(o<c?6:0))/6:s===o?d=((c-r)/l+2)/6:d=((r-o)/l+4)/6,[d*360,f*100,u*100]}function j(t,e,n){let i=e/100,r=n/100,o=(1-Math.abs(2*r-1))*i,c=o*(1-Math.abs(t/60%2-1)),s=r-o/2,a,u,l;t<60?(a=o,u=c,l=0):t<120?(a=c,u=o,l=0):t<180?(a=0,u=o,l=c):t<240?(a=0,u=c,l=o):t<300?(a=c,u=0,l=o):(a=o,u=0,l=c);let f=d=>Math.round((d+s)*255).toString(16).padStart(2,"0");return`#${f(a)}${f(u)}${f(l)}`}function B(t){return y(t)}function q(t){return R(t)[2]<50}function v(t,e,n){if(t===0)return e;let i=B(e)?e:A,r=n&&B(n)?n:void 0,[o,c]=R(i),s=Math.max(55,Math.min(85,c)),a=Math.ceil(t/2),u=t%2===1,l=r&&q(r)?!u:u,f=l?Math.max(25,48-a*13):Math.min(78,55+a*11),d=(l?-8:12)*a,m=((o+d)%360+360)%360;return j(m,s,f)}function P(t){return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function k(t){return t<=.0031308?12.92*t:1.055*t**(1/2.4)-.055}function b(t){let e=O(t);if(!e)return null;let n=P(e[0]/255),i=P(e[1]/255),r=P(e[2]/255),o=.4122214708*n+.5363325363*i+.0514459929*r,c=.2119034982*n+.6806995451*i+.1073969566*r,s=.0883024619*n+.2817188376*i+.6299787005*r,a=Math.cbrt(o),u=Math.cbrt(c),l=Math.cbrt(s);return{L:.2104542553*a+.793617785*u-.0040720468*l,a:1.9779984951*a-2.428592205*u+.4505937099*l,b:.0259040371*a+.7827717662*u-.808675766*l}}function Y(t){let e=t.L+.3963377774*t.a+.2158037573*t.b,n=t.L-.1055613458*t.a-.0638541728*t.b,i=t.L-.0894841775*t.a-1.291485548*t.b,r=e*e*e,o=n*n*n,c=i*i*i,s=4.0767416621*r-3.3077115913*o+.2309699292*c,a=-1.2684380046*r+2.6097574011*o-.3413193965*c,u=-.0041960863*r-.7034186147*o+1.707614701*c;return L(k(s)*255,k(a)*255,k(u)*255)}function z(t){let e=Math.hypot(t.a,t.b),n=(Math.atan2(t.b,t.a)*180/Math.PI+360)%360;return{L:t.L,C:e,h:n}}function J(t){let e=t.h*Math.PI/180;return{L:t.L,a:t.C*Math.cos(e),b:t.C*Math.sin(e)}}function g(t){return Y(J(t))}function _(t){let e=b(t);return e?z(e):null}function D(t,e){let n=b(t),i=b(e);return!n||!i?null:Math.hypot(n.L-i.L,n.a-i.a,n.b-i.b)}function W(t){let e=1/0;for(let n=0;n<t.length;n++)for(let i=n+1;i<t.length;i++){let r=D(t[n],t[i]);r!==null&&r<e&&(e=r)}return e}var E=2.4,Q=.2126729,Z=.7151522,tt=.072175,N=.022,nt=1.414,et=1.14,rt=1.14,ot=.027,it=.027,at=5e-4,F=.1;function K(t){let e=O(t);if(!e)return null;let n=Q*(e[0]/255)**E+Z*(e[1]/255)**E+tt*(e[2]/255)**E;return n<N?n+(N-n)**nt:n}function st(t,e){let n=K(t),i=K(e);if(n===null||i===null)return null;if(Math.abs(i-n)<at)return 0;let r,o;return i>n?(r=(i**.56-n**.57)*et,o=r<F?0:r-ot):(r=(i**.65-n**.62)*rt,o=r>-F?0:r+it),o*100}function x(t,e){let n=st(t,e);return n===null?null:Math.abs(n)}var ct=6,ut=1.25,lt=15,H=.1,ft=24,G=264,dt=.11,T=.16;function Tt(t,e={}){return mt(t,e)}function mt(t,e,n){if(t<=ct){let o=e.accent??A;return Array.from({length:Math.max(0,t)},(c,s)=>v(s,o,e.bg))}let i=U(e.bg),r=U(e.accent,i)??A;return bt(t,r,i,n)}function U(t,e){if(t===void 0)return;let n=M(t);if(!n)return;if(n[3]===1)return L(n[0],n[1],n[2]);if(e===void 0)return;let i=M(e);if(!(!i||i[3]!==1))return L(n[0]*n[3]+i[0]*(1-n[3]),n[1]*n[3]+i[1]*(1-n[3]),n[2]*n[3]+i[2]*(1-n[3]))}function bt(t,e,n,i){let r=_(e)??{L:.6,C:T,h:G},o=r.C<.03,c=o?G:r.h,s=Math.max(dt,Math.min(T,o?T:r.C)),a=((n===void 0?null:b(n))?.L??1)<.55,u=a?[.74,.6]:[.56,.7],l=360/t,f=Array.from({length:t},(d,m)=>{if(m===0&&h(e,n))return e;let C=m===0?c:((c+m*l)%360+360)%360,$=m===0?r.L:u[m%2];return X({L:$,C:s,h:C},n,a,i)});return t<=ft?Ct(f,n,a,i):pt(f,n,a,i)}function h(t,e){if(e===void 0)return!0;let n=w(t,e),i=x(t,e);return n!==null&&i!==null&&n>=ut&&i>=lt}function X(t,e,n,i){i&&i.candidateEvaluations++;let r=g(t);if(e===void 0||h(r,e))return r;let o=b(e)?.L??(n?0:1),c=t.L>=o?1:-1;for(let a=1;a<=24;a++){let u=a*.04;for(let l of[c,-c]){i&&i.candidateEvaluations++;let f=g({...t,L:p(t.L+l*u)});if(h(f,e))return f}}let s=["#000000","#ffffff"].filter(a=>h(a,e));return s.length>0?s.sort((a,u)=>(x(u,e)??0)-(x(a,e)??0))[0]:r}function Ct(t,e,n,i){let r=[];for(let o=0;o<t.length;o++){let c=t[o],s=o===0&&h(c,e);r.push(s||I(c,r,i)>=H?c:ht(c,r,e,n,i))}return i&&(i.pairDistanceChecks+=r.length*(r.length-1)/2),W(r)>=H?r:Lt(r,e,i)}function I(t,e,n){let i=1/0;for(let r of e){n&&n.pairDistanceChecks++;let o=D(t,r);o!==null&&o<i&&(i=o)}return i}var p=t=>Math.max(.08,Math.min(.97,t));function ht(t,e,n,i,r){let o=_(t);if(!o)return t;let c=t,s=I(t,e,r);for(let a=1;a<=12;a++){let u=a*.03,l=a*7,f=[{...o,L:p(o.L+u)},{...o,L:p(o.L-u)},{...o,h:(o.h+l)%360},{...o,h:(o.h-l+360)%360},{...o,L:p(i?o.L+u:o.L-u),h:(o.h+l)%360}];for(let d of f){r&&r.candidateEvaluations++;let m=g(d);if(n!==void 0&&!h(m,n))continue;let C=I(m,e,r);if(C>=H)return m;C>s&&(s=C,c=m)}}return c}function gt(t,e){let n=new Map,i=r=>{if(e&&e.candidateEvaluations++,n.has(r)||t!==void 0&&!h(r,t))return;let o=b(r);o&&n.set(r,{hex:r,lab:o})};i("#000000"),i("#ffffff");for(let r=0;r<=22;r++){let o=.08+r*.04;i(g({L:o,C:0,h:0}));for(let c of[.04,.08,.12,.16,.2,.24,.28])for(let s=0;s<360;s+=10)i(g({L:o,C:c,h:s}))}return[...n.values()]}var V=(t,e)=>Math.hypot(t.L-e.L,t.a-e.a,t.b-e.b);function Lt(t,e,n){if(t.length<2)return t;let i=gt(e,n),r=b(t[0]);if(!r)return t;let o=[{hex:t[0],lab:r}],c=new Set([t[0].toLowerCase()]);for(;o.length<t.length;){let s,a=-1,u=1/0,l=b(t[o.length]);for(let f of i){if(c.has(f.hex.toLowerCase()))continue;n&&n.candidateEvaluations++;let d=1/0;for(let C of o)n&&n.pairDistanceChecks++,d=Math.min(d,V(f.lab,C.lab));let m=l?V(f.lab,l):0;(d>a+1e-12||Math.abs(d-a)<=1e-12&&m<u)&&(s=f,a=d,u=m)}if(!s)return t;o.push(s),c.add(s.hex.toLowerCase())}return o.map(s=>s.hex)}function pt(t,e,n,i){let r=new Set;return t.map((o,c)=>{if(i&&i.tailItems++,!r.has(o.toLowerCase()))return r.add(o.toLowerCase()),o;let s=_(o);if(s)for(let a=1;a<=24;a++){i&&i.candidateEvaluations++;let u=X({...s,L:p(s.L+(a%2===0?1:-1)*Math.ceil(a/2)*.008),h:(s.h+a*137.508+c*.01)%360},e,n,i);if(!r.has(u.toLowerCase()))return r.add(u.toLowerCase()),u}return o})}export{A as a,R as b,j as c,B as d,q as e,Tt as f};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as V}from"./chunk-T7IJ6V4B.js";import{a as R}from"./chunk-WEUWIFG3.js";import{a as q}from"./chunk-KJVNXJ5Y.js";import{L as T}from"./chunk-
|
|
1
|
+
import{a as V}from"./chunk-T7IJ6V4B.js";import{a as R}from"./chunk-WEUWIFG3.js";import{a as q}from"./chunk-KJVNXJ5Y.js";import{L as T}from"./chunk-2XCPFAD5.js";var U={rect:{aliases:["proc","process","rectangle"],geometry:"rectangle",exact:!0,description:"Process"},rounded:{aliases:["event"],geometry:"rounded",exact:!0,description:"Event"},stadium:{aliases:["pill","terminal"],geometry:"stadium",exact:!0,description:"Terminal point"},cyl:{aliases:["cylinder","database","db"],geometry:"cylinder",exact:!0,description:"Database"},diam:{aliases:["decision","diamond","question"],geometry:"diamond",exact:!0,description:"Decision"},hex:{aliases:["hexagon","prepare"],geometry:"hexagon",exact:!0,description:"Prepare conditional"},"lean-r":{aliases:["in-out","lean-right"],geometry:"lean-r",exact:!0,description:"Data input/output"},"lean-l":{aliases:["lean-left","out-in"],geometry:"lean-l",exact:!0,description:"Data output/input"},"trap-b":{aliases:["priority","trapezoid","trapezoid-bottom"],geometry:"trapezoid",exact:!0,description:"Priority action"},"trap-t":{aliases:["inv-trapezoid","manual","trapezoid-top"],geometry:"trapezoid-alt",exact:!0,description:"Manual operation"},circle:{aliases:["circ"],geometry:"circle",exact:!0,description:"Start"},"dbl-circ":{aliases:["double-circle"],geometry:"doublecircle",exact:!0,description:"Stop"},"fr-rect":{aliases:["framed-rectangle","subproc","subprocess","subroutine"],geometry:"subroutine",exact:!0,description:"Subprocess"},odd:{aliases:[],geometry:"asymmetric",exact:!0,description:"Odd"},bang:{aliases:[],geometry:"circle",exact:!0,description:"Bang"},"notch-rect":{aliases:["card","notched-rectangle"],geometry:"rectangle",exact:!0,description:"Card"},cloud:{aliases:[],geometry:"rounded",exact:!0,description:"Cloud"},hourglass:{aliases:["collate"],geometry:"diamond",exact:!0,description:"Collate"},bolt:{aliases:["com-link","lightning-bolt"],geometry:"rectangle",exact:!0,description:"Com link"},brace:{aliases:["brace-l","comment"],geometry:"rectangle",exact:!0,description:"Comment"},"brace-r":{aliases:[],geometry:"rectangle",exact:!0,description:"Comment right"},braces:{aliases:[],geometry:"rectangle",exact:!0,description:"Comment both"},datastore:{aliases:["data-store"],geometry:"cylinder",exact:!0,description:"Data store"},delay:{aliases:["half-rounded-rectangle"],geometry:"rounded",exact:!0,description:"Delay"},"h-cyl":{aliases:["das","horizontal-cylinder"],geometry:"cylinder",exact:!0,description:"Direct access storage"},"lin-cyl":{aliases:["disk","lined-cylinder"],geometry:"cylinder",exact:!0,description:"Disk storage"},"curv-trap":{aliases:["curved-trapezoid","display"],geometry:"rounded",exact:!0,description:"Display"},"div-rect":{aliases:["div-proc","divided-process","divided-rectangle"],geometry:"rectangle",exact:!0,description:"Divided process"},doc:{aliases:["document"],geometry:"rectangle",exact:!0,description:"Document"},tri:{aliases:["extract","triangle"],geometry:"trapezoid",exact:!0,description:"Extract"},fork:{aliases:["join"],geometry:"rectangle",exact:!0,description:"Fork/join"},"win-pane":{aliases:["internal-storage","window-pane"],geometry:"rectangle",exact:!0,description:"Internal storage"},"f-circ":{aliases:["filled-circle","junction"],geometry:"circle",exact:!0,description:"Junction"},"lin-doc":{aliases:["lined-document"],geometry:"rectangle",exact:!0,description:"Lined document"},"lin-rect":{aliases:["lin-proc","lined-process","lined-rectangle","shaded-process"],geometry:"subroutine",exact:!0,description:"Lined/shaded process"},"notch-pent":{aliases:["loop-limit","notched-pentagon"],geometry:"hexagon",exact:!0,description:"Loop limit"},"flip-tri":{aliases:["flipped-triangle","manual-file"],geometry:"trapezoid-alt",exact:!0,description:"Manual file"},"sl-rect":{aliases:["manual-input","sloped-rectangle"],geometry:"lean-r",exact:!0,description:"Manual input"},docs:{aliases:["documents","st-doc","stacked-document"],geometry:"rectangle",exact:!0,description:"Multi-document"},"st-rect":{aliases:["processes","procs","stacked-rectangle"],geometry:"rectangle",exact:!0,description:"Multi-process"},flag:{aliases:["paper-tape"],geometry:"rectangle",exact:!0,description:"Paper tape"},"sm-circ":{aliases:["small-circle","start"],geometry:"circle",exact:!0,description:"Start (small)"},"fr-circ":{aliases:["framed-circle","stop"],geometry:"doublecircle",exact:!0,description:"Stop (framed)"},"bow-rect":{aliases:["bow-tie-rectangle","stored-data"],geometry:"cylinder",exact:!0,description:"Stored data"},"cross-circ":{aliases:["crossed-circle","summary"],geometry:"circle",exact:!0,description:"Summary"},"tag-doc":{aliases:["tagged-document"],geometry:"rectangle",exact:!0,description:"Tagged document"},"tag-rect":{aliases:["tag-proc","tagged-process","tagged-rectangle"],geometry:"rectangle",exact:!0,description:"Tagged process"},text:{aliases:[],geometry:"rectangle",exact:!0,description:"Text block"}},Se=(()=>{let t=new Map;for(let[e,n]of Object.entries(U)){t.set(e,e);for(let r of n.aliases)t.set(r,e)}return t})();function X(t){let e=Se.get(t.trim().toLowerCase());if(!e)return null;let n=U[e];return{canonical:e,geometry:n.geometry,exact:n.exact,description:n.description}}var we=/^note\s+(left|right)\s+of\s+([\w\p{L}-]+)\s*:\s*(.+)$/iu,xe=/^note\s+(left|right)\s+of\s+([\w\p{L}-]+)\s*$/iu,Me=/^end\s+note$/i,Ee=/^state\s+(?:"([^"]+)"\s+as\s+)?([\w\p{L}-]+)\s*<<\s*(fork|join|choice|history|deephistory|H\*|H)\s*>>$/u,Ne=/^-{2,}$/,Le=/^([\w\p{L}-]*)\[(H\*?)\]$/u,Re=/^[\w\p{L}-]+$/u;function Y(t){return Re.test(t)}function J(t){let e=t.match(we);return e?{side:e[1].toLowerCase(),target:e[2],text:e[3].trim()}:null}function K(t){let e=t.match(xe);return e?{side:e[1].toLowerCase(),target:e[2]}:null}function Z(t){return Me.test(t)}function ee(t){let e=t.match(Ee);if(!e)return null;let n=e[3],r=n==="H"||n==="history"?"history":n==="H*"||n==="deephistory"?"deep-history":n;return{id:e[2],stereotype:r,...e[1]!==void 0?{label:e[1]}:{}}}function te(t){return Ne.test(t)}function ne(t){let e=t.match(Le);return e?{base:e[1],deep:e[2]==="H*"}:null}function W(t){return t?"H*":"H"}var Q=String.raw`\[\*\]|[\w\p{L}-]+\[H\*?\]|\[H\*?\]|[\w\p{L}-]+`,ke=new RegExp(`^(${Q})(?::::([\\w-]+))?\\s*-->\\s*(${Q})(?::::([\\w-]+))?(?:\\s*:\\s*(.+))?$`,"u");function re(t){let e=t.match(ke);if(!e)return null;let n=e[5]?.trim();return{from:e[1],...e[2]?{fromClass:e[2]}:{},to:e[3],...e[4]?{toClass:e[4]}:{},...n?{label:n}:{}}}var D=String.raw`[\p{L}\p{N}_-]+`,ft=new RegExp(`^${D}$`,"u"),Ie=new RegExp(`^(${D})`,"u"),Te=/^[\w-]+/;function F(t){let e=t.match(Ie);return e?{id:e[1],length:e[1].length}:null}function P(t){if(!t.startsWith(":::"))return null;let e=t.slice(3).match(Te);return e?{className:e[0],length:3+e[0].length}:null}function se(t){let e=F(t);if(!e)return null;let n=P(t.slice(e.length));return!n||e.length+n.length!==t.length?null:{id:e.id,className:n.className}}function Ae(t){let e=Array(t.length).fill(" "),n=0,r,s=!1,o=!1;for(let i=0;i<t.length;i++){let a=t[i];if(r){o?o=!1:a==="\\"?o=!0:a===r&&(r=void 0);continue}if(a==='"'||a==="'"||a==="`"){r=a;continue}if(a==="|"&&n===0){s=!s;continue}if(!s){if(a==="["||a==="("||a==="{"){n++;continue}if(a==="]"||a===")"||a==="}"){n=Math.max(0,n-1);continue}n===0&&(e[i]=a)}}return e.join("")}function $e(t,e){if(e<=0||t[e-1]!=="@")return!1;let n=e-2;for(;n>=0&&/[\p{L}\p{N}_-]/u.test(t[n]);)n--;return n<e-2&&(n<0||/\s/.test(t[n]))}function Ce(t,e){if(e>0&&!/\s/.test(t[e-1])&&!$e(t,e))return-1;let n=e;if(t[n]==="<"&&n++,t[n]==="-")if(t[n+1]==="-")for(n+=2;t[n]==="-";)n++;else if(t[n+1]===".")for(n+=2;t[n]===".";)n++;else return-1;else if(t[n]==="="&&t[n+1]==="=")for(n+=2;t[n]==="=";)n++;else return-1;return/\s/.test(t[n]??"")?n:-1}function De(t,e){if(e>0&&!/\s/.test(t[e-1]))return-1;if(t[e]==="."){let n=e;for(;t[n]===".";)n++;return t[n]==="-"&&t[n+1]===">"?n+2:-1}if(t[e]==="-"){if(t[e+1]==="."){let s=e+1;for(;t[s]===".";)s++;return t[s]!=="-"?-1:t[s+1]===">"?s+2:s+1}let n=e;for(;t[n]==="-";)n++;let r=n-e;return r<2?-1:t[n]===">"||t[n]==="o"||t[n]==="x"?n+1:r>=3?n:-1}if(t[e]==="="){let n=e;for(;t[n]==="=";)n++;let r=n-e;return r<2?-1:t[n]===">"?n+1:r>=3?n:-1}return-1}function ie(t){let e=Ae(t),n=[],r=-1;for(let s=0;s<e.length;s++){if(r<0){let u=Ce(e,s);u>=0&&(r=u,s=u-1);continue}let o=De(e,s);if(o<0)continue;let i=t.slice(r,s),a=i.length-i.trimStart().length,l=i.trim();if(l){let u=r+a;n.push({start:u,end:u+l.length})}r=-1,s=o-1}return n}function Nt(t){let e=_e(Oe(Fe(t.split(`
|
|
2
2
|
`))).map(i=>i.trim()).filter(i=>i.length>0&&!i.startsWith("%%")));if(e.length===0)throw new Error("Empty mermaid diagram");let n=e[0],r=V(n,"strict"),s=r.kind==="registered"?r.familyId:q(n);if(s==="state")return qe(e);if(s==="flowchart")return He(e);if(r.kind==="unknown")throw new Error(`Unknown Mermaid diagram header: ${n}`);let o=r.kind==="registered"?r.familyId:r.match.family.id;throw new Error(`Mermaid family "${o}" is not a graph family; use the family-neutral agent parser`)}function _e(t){return t.length===0||!t[0].includes(";")||!/^(?:graph|flowchart|swimlane|stateDiagram(?:-v2)?)(?:\b|\s)/i.test(t[0])?t:[...H(t[0]),...t.slice(1)]}function Oe(t){let e=[],n=null,r=0;for(let s of t){if(n){n.push(s.trim()),r+=oe(s),r<=0&&(e.push(n.join(" ")),n=null,r=0);continue}if(/@\s*\{/.test(s)){r=oe(s),r>0?n=[s.trim()]:e.push(s);continue}e.push(s)}return n&&e.push(n.join(" ")),e}function oe(t){let e=0,n=null,r=!1;for(let s of t){if(r){r=!1;continue}if(s==="\\"){r=!0;continue}if(n){s===n&&(n=null);continue}if(s==='"'||s==="'"){n=s;continue}s==="{"?e++:s==="}"&&e--}return e}function Fe(t){let e=[],n=null;for(let r of t){if(n){n.push(r.trim()),ae(r)%2===1&&(e.push(n.join("<br>")),n=null);continue}if(r.trim().startsWith("%%")){e.push(r);continue}if(ae(r)%2===1){n=[r];continue}e.push(r)}return n&&e.push(n.join("<br>")),e}function ae(t){let e=0,n=!1;for(let r of t){if(n){n=!1;continue}if(r==="\\"){n=!0;continue}r==="`"&&e++}return e}function ve(t){return T(t)}function $(t,e=!1){let n=!e&&t.length>=2&&t.startsWith('"')&&t.endsWith('"')?t.slice(1,-1):t;return(e||n!==t)&&n.length>=2&&n.startsWith("`")&&n.endsWith("`")?{text:ve(n.slice(1,-1)),markdown:!0}:{text:T(t),markdown:!1}}function H(t){let e=[],n=ie(t),r=0,s=0,o=0,i=null,a=!1,l=!1;for(let d=0;d<t.length;d++){let c=t[d];if(a){a=!1;continue}if(c==="\\"){a=!0;continue}if(i){c===i&&(i=null);continue}if(c==='"'||c==="'"||c==="`"){i=c;continue}if(c==="|"&&o===0){l=!l;continue}if(!l){if(c==="["||c==="("||c==="{")o++;else if(c==="]"||c===")"||c==="}")o=Math.max(0,o-1);else if(c===";"&&o===0){for(;n[r]&&n[r].end<=d;)r++;let f=n[r];if(!f||d<f.start||d>=f.end){let y=t.slice(s,d).trim();y&&e.push(y),s=d+1}}}}let u=t.slice(s).trim();return u&&e.push(u),e}function Ge(t){return/^(?:click|href)\s+/i.test(t.trim())}function We(t,e){let n=e.trim().match(/^(?:click\s+)?([\w-]+)\s+(?:href\s+)?(?:"((?:\\.|[^"])*)"|(https?:\/\/\S+|mailto:\S+))/i);if(!n)return;let r=(n[2]??n[3]??"").replace(/\\(["\\])/g,"$1");if(!/^(?:https?:|mailto:)/i.test(r))return;let s=t.nodes.get(n[1]);s&&(s.href=r)}function C(t){if(t===void 0)return;let e=t.trim();return(e.length>=2&&(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))?e.slice(1,-1).replace(/\\(["'\\])/g,"$1"):e)||void 0}function Pe(t,e){let n=e.trim().match(/^([\w-]+)@\s*\{([\s\S]*)\}\s*$/);if(!n)return;let r=t.edges.find(l=>l.id===n[1]);if(!r)return;let s=B(n[2]),o=C(s.get("curve"));o&&/^[a-z][a-z0-9-]*$/i.test(o)&&(r.curve=o);let i=C(s.get("animate"))?.toLowerCase(),a=C(s.get("animation"))?.toLowerCase();if(i==="true"||i==="fast"||i==="slow"||a==="fast"||a==="slow"){r.animate=!0;let l=i==="fast"||i==="slow"?i:a;(l==="fast"||l==="slow")&&(r.animation=l)}}function je(t,e){let n=e.trim().match(/^([\w-]+)@\s*\{([\s\S]*)\}\s*$/);if(!n)return!1;if(t.edges.some(s=>s.id===n[1]))return!0;let r=B(n[2]);return!r.has("shape")&&!r.has("label")&&!r.has("icon")&&!r.has("img")}function He(t){let e=t[0].match(/^(?:(?:graph|swimlane)\s+(TD|TB|LR|BT|RL|[<>^v])|flowchart(?:\s+(TD|TB|LR|BT|RL|[<>^v]))?)\s*$/i);if(!e)throw new Error(`Invalid mermaid header: "${t[0]}". Expected "graph TD", "flowchart LR", "stateDiagram-v2", etc.`);let r={direction:Be(e[1]??e[2]??"TD"),nodes:new Map,edges:[],subgraphs:[],classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,linkStyles:new Map},s=[],o=ze(t.slice(1));for(let i=1;i<t.length;i++)for(let a of H(t[i])){if(Ge(a)){We(r,a);continue}if(je(r,a)){Pe(r,a);continue}let l=a.match(/^classDef\s+([\w,-]+)\s+(.+)$/);if(l){let p=l[1].split(",").map(m=>m.trim()).filter(Boolean),S=R(l[2]);if(Object.keys(S).length===0)continue;for(let m of p)r.classDefs.set(m,S);continue}let u=a.match(/^class\s+([\w,-]+)\s+([\w-]+)\s*;?$/);if(u){let p=u[1].split(",").map(m=>m.trim()),S=u[2];for(let m of p)r.classAssignments.set(m,S);continue}let d=a.match(/^style\s+([\w,-]+)\s+(.+)$/);if(d){let p=d[1].split(",").map(m=>m.trim()),S=R(d[2]);if(Object.keys(S).length===0)continue;for(let m of p)r.nodeStyles.set(m,{...r.nodeStyles.get(m),...S});continue}let c=a.match(/^linkStyle\s+(default|[\d,\s]+)\s+(.+)$/);if(c){let p=c[1].trim(),S=R(c[2]);if(Object.keys(S).length===0)continue;if(p==="default")r.linkStyles.set("default",{...r.linkStyles.get("default"),...S});else{let m=p.split(",").map(h=>parseInt(h.trim(),10));for(let h of m)isNaN(h)||r.linkStyles.set(h,{...r.linkStyles.get(h),...S})}continue}let f=a.match(/^direction\s+(TD|TB|LR|BT|RL)\s*$/i);if(f){let p=f[1].toUpperCase();s.length>0?s[s.length-1].direction=p:r.direction=p;continue}let y=a.match(/^subgraph\s+(.+)$/);if(y){let p=y[1].trim(),S=p.match(/^([\w-]+)\s*\[(.+)\]$/),m,h;S?(m=S[1],h=$(S[2]).text):(h=$(p).text,m=p.replace(/\s+/g,"_").replace(/[^\w]/g,""));let M={id:m,label:h,nodeIds:[],children:[]};s.push(M);continue}if(a==="end"){let p=s.pop();p&&(s.length>0?s[s.length-1].children.push(p):r.subgraphs.push(p));continue}let w=nt(a,r,s,o);if(!w.ok)throw new Error(`Invalid flowchart statement "${a}": could not fully consume ${w.reason}; remaining input: "${w.remaining}"`)}return r}function ze(t){let e=new Set;for(let n of t)for(let r of H(n)){let s=r.match(/^subgraph\s+(.+)$/);if(!s)continue;let o=s[1].trim(),i=o.match(/^([\w-]+)\s*\[(.+)\]$/);e.add(i?i[1]:o.replace(/\s+/g,"_").replace(/[^\w]/g,""))}return e}function Be(t){let e=t.toUpperCase();return e===">"?"LR":e==="<"?"RL":e==="^"?"BT":e==="V"?"TB":e}function qe(t){let e={direction:"TD",nodes:new Map,edges:[],subgraphs:[],classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,linkStyles:new Map},n=[],r=new Set,s=0,o=0,i=new Map,a=null,l=(d,c,f)=>{e.stateNotes||(e.stateNotes=[]),e.stateNotes.push({id:`note#${e.stateNotes.length}`,target:d,side:c,text:f}),r.has(d)||_(e,n,d)},u=(d,c)=>{if(d==="[*]"){if(c==="source"){s++;let w=`_start${s>1?s:""}`;return A(e,n,{id:w,label:"",shape:"state-start"}),w}o++;let y=`_end${o>1?o:""}`;return A(e,n,{id:y,label:"",shape:"state-end"}),y}let f=ne(d);if(f){let y=[...n].reverse().find(S=>!S.concurrencyRegion),p=`${f.base!==""?f.base:y?.id??""}[H${f.deep?"*":""}]`;return A(e,n,{id:p,label:W(f.deep),shape:"state-history"}),p}return r.has(d)||_(e,n,d),d};for(let d=1;d<t.length;d++){let c=t[d];if(a){Z(c)?(l(a.target,a.side,a.lines.join(`
|
|
3
3
|
`)),a=null):a.lines.push(c);continue}let f=J(c);if(f){l(f.target,f.side,T(f.text));continue}let y=K(c);if(y){a={target:y.target,side:y.side,lines:[]};continue}let w=c.match(/^direction\s+(TD|TB|LR|BT|RL)\s*$/i);if(w){n.length>0?n[n.length-1].direction=w[1].toUpperCase():e.direction=w[1].toUpperCase();continue}let p=c.match(/^classDef\s+([\w,-]+)\s+(.+)$/);if(p){let b=p[1].split(",").map(x=>x.trim()).filter(Boolean),g=R(p[2]);for(let x of b)e.classDefs.set(x,g);continue}let S=c.match(/^(?:class|cssClass)\s+([\w\p{L},-]+)\s+([\w-]+)$/u);if(S){let b=S[1].split(",").map(g=>g.trim()).filter(Boolean);for(let g of b)_(e,n,g),e.classAssignments.set(g,S[2]);continue}let m=c.match(/^style\s+([\w\p{L},-]+)\s+(.+)$/u);if(m){let b=m[1].split(",").map(x=>x.trim()).filter(Boolean),g=R(m[2]);for(let x of b)_(e,n,x),e.nodeStyles.set(x,{...e.nodeStyles.get(x),...g});continue}let h=c.match(/^linkStyle\s+(default|[\d,\s]+)\s+(.+)$/);if(h){let b=h[1].trim(),g=R(h[2]);if(Object.keys(g).length===0)continue;if(b==="default")e.linkStyles.set("default",{...e.linkStyles.get("default"),...g});else{let x=b.split(",").map(I=>parseInt(I.trim(),10));for(let I of x)isNaN(I)||e.linkStyles.set(I,{...e.linkStyles.get(I),...g})}continue}let M=ee(c);if(M){let b=M.stereotype==="fork"?"state-fork":M.stereotype==="join"?"state-join":M.stereotype==="choice"?"state-choice":"state-history",g=b==="state-history"?W(M.stereotype==="deep-history"):"";e.nodes.set(M.id,{id:M.id,label:g,shape:b}),Ve(n,M.id);continue}if(te(c)&&n.length>0){let b=n[n.length-1],g;if(b.concurrencyRegion)n.pop(),g=n[n.length-1];else{g=b;let I={id:`${g.id}__r${ce(i,g.id)}`,label:"",nodeIds:g.nodeIds.splice(0),children:g.children.splice(0),concurrencyRegion:!0};g.children.push(I)}let x={id:`${g.id}__r${ce(i,g.id)}`,label:"",nodeIds:[],children:[],concurrencyRegion:!0};g.children.push(x),n.push(x);continue}let L=c.match(/^state\s+(?:"([^"]+)"\s+as\s+)?([\w\p{L}-]+)\s*\{$/u);if(L){let b=L[1]??L[2],g=L[2],x={id:g,label:b,nodeIds:[],children:[]};n.push(x),r.add(g),e.nodes.delete(g);continue}if(c==="}"){n.length>0&&n[n.length-1].concurrencyRegion&&n.pop();let b=n.pop();b&&(n.length>0?n[n.length-1].children.push(b):e.subgraphs.push(b));continue}let k=c.match(/^state\s+"([^"]+)"\s+as\s+([\w\p{L}-]+)\s*$/u);if(k){let b=T(k[1]),g=k[2];A(e,n,{id:g,label:b,shape:"rounded"});continue}let N=re(c);if(N){let b=u(N.from,"source"),g=u(N.to,"target");N.fromClass&&e.classAssignments.set(b,N.fromClass),N.toClass&&e.classAssignments.set(g,N.toClass);let x=N.label?T(N.label):void 0;e.edges.push({source:b,target:g,label:x,style:"solid",hasArrowStart:!1,hasArrowEnd:!0});continue}let O=se(c);if(O){_(e,n,O.id),e.classAssignments.set(O.id,O.className);continue}let G=c.match(/^([\w\p{L}-]+)\s*:\s*(.+)$/u);if(G){let b=G[1],g=T(G[2].trim());A(e,n,{id:b,label:g,shape:"rounded"});continue}if(Y(c)){A(e,n,{id:c,label:c,shape:"rounded"});continue}}return a&&l(a.target,a.side,a.lines.join(`
|
|
4
4
|
`)),e}function ce(t,e){let n=(t.get(e)??0)+1;return t.set(e,n),n}function Ve(t,e){if(t.length>0){let n=t[t.length-1];n.nodeIds.includes(e)||n.nodeIds.push(e)}}function A(t,e,n){if(!t.nodes.has(n.id)&&t.nodes.set(n.id,n),e.length>0){let s=e[e.length-1];s.nodeIds.includes(n.id)||s.nodeIds.push(n.id)}}function _(t,e,n){if(!t.nodes.has(n))A(t,e,{id:n,label:n,shape:"rounded"});else if(e.length>0){let r=e[e.length-1];r.nodeIds.includes(n)||r.nodeIds.push(n)}}var fe=/^(<)?(~{3,}|-\.+->|-\.+-|={2,}>|={3,}|o-{2,}o|o-{2,}x|x-{2,}o|x-{2,}x|-{2,}[ox]|-{2,}>|-{3,})/;function Ue(t){let e=t.slice(1).search(/\S/)+1;if(e<1||t[e]!=='"')return-1;let n=!1;for(let r=e+1;r<t.length;r++){let s=t[r];if(n){n=!1;continue}if(s==="\\"){n=!0;continue}if(s==='"'&&/^\s*\|/.test(t.slice(r+1)))return r}return-1}function Xe(t){if(!t.startsWith("|"))return null;let e=Ue(t);for(let n=1;n<t.length;n++)if(!(e>=0&&n<e&&t[n]==="|")&&t[n]==="|")return{rawLabel:t.slice(1,n),consumed:n+1};return null}var Qe=/^(<)?(-{2,}|-\.+|={2,})/,Ye=/^(-{2,}[>ox]|-{3,}|\.+->|-\.+-|={2,}>|={3,})/;function Je(t,e){let n=t.slice(e).search(/\S/),r=n<0?-1:e+n;if(r<e||t[r]!=='"')return-1;let s=!1;for(let o=r+1;o<t.length;o++){let i=t[o];if(s){s=!1;continue}if(i==="\\"){s=!0;continue}if(i==='"'&&/^\s*(?:-{2,}[>ox]|-{3,}|\.+->|-\.+-|={2,}>|={3,})/.test(t.slice(o+1)))return o}return-1}function pe(t){let e=t.match(Qe);if(!e)return null;let n=Je(t,e[0].length);for(let r=e[0].length;r<t.length;r++){if(n>=0&&r<n)continue;let s=t.slice(r).match(Ye);if(!s)continue;let o=t.slice(e[0].length,r).trim();if(o.length!==0)return{hasArrowStart:!!e[1],openOp:e[2],rawLabel:o,closeOp:s[1],consumed:r+s[0].length}}return null}var E=t=>new RegExp(`^(${D})${t}`,"u"),Ke=[{regex:E(String.raw`\(\(\((.+?)\)\)\)`),shape:"doublecircle"},{regex:E(String.raw`\(\[(.+?)\]\)`),shape:"stadium"},{regex:E(String.raw`\(\((.+?)\)\)`),shape:"circle"},{regex:E(String.raw`\[\[(.+?)\]\]`),shape:"subroutine"},{regex:E(String.raw`\[\((.+?)\)\]`),shape:"cylinder"},{regex:E(String.raw`\[\/([^\]]+?)\\\]`),shape:"trapezoid"},{regex:E(String.raw`\[\\([^\]]+?)\/\]`),shape:"trapezoid-alt"},{regex:E(String.raw`\[\/([^\]]+?)\/\]`),shape:"lean-r"},{regex:E(String.raw`\[\\([^\]]+?)\\\]`),shape:"lean-l"},{regex:E(String.raw`>(.+?)\]`),shape:"asymmetric"},{regex:E(String.raw`\{\{(.+?)\}\}`),shape:"hexagon"},{regex:E(String.raw`\[(.+?)\]`),shape:"rectangle"},{regex:E(String.raw`\((.+?)\)`),shape:"rounded"},{regex:E(String.raw`\{(.+?)\}`),shape:"diamond"}];function Ze(t){let e=F(t);if(!e)return null;let n=e.length,r=0;for(let s=0;s<n&&!(s>0&&z(t.slice(s)));s++)r=s+1;return r>0?{id:t.slice(0,r),length:r}:null}function z(t){return fe.test(t)||pe(t)!==null}function et(t,e){for(let n=1;n<e;n++)if(z(t.slice(n)))return!0;return!1}var tt=/^([\w-]+)@\s*(?=(?:<)?(?:~{3,}|-\.+->|-\.+-|={2,}>|={3,}|o-{2,}[ox]|x-{2,}[ox]|-{2,}[ox]|-{2,}>|-{3,}|(?:-{2,}|-\.+|={2,})\s+))/;function j(t){let e=P(t);if(!e)return null;let n=t.slice(3),r=e.className.length,s=r;for(let o=1;o<r;o++)if(z(n.slice(o))){s=o;break}return{className:n.slice(0,s),length:3+s}}function nt(t,e,n,r=new Set){let s=t.trim().replace(/;\s*$/,"").trim(),o=le(s,e,n,r);if(!o||o.ids.length===0)return{ok:!1,remaining:s,reason:"expected node"};s=o.remaining.trim();let i=o.ids;for(;s.length>0;){let a,l,u,d,c,f,y,w=s.match(tt),p=w?.[1];w&&(s=s.slice(w[0].length).trim());let S=s.match(fe);if(S){let h=S[2],M=S[0].length,L=s.slice(M);if(L.startsWith("|")){let k=Xe(L);if(!k)return{ok:!1,remaining:L,reason:"expected edge target"};let N=k.rawLabel.trim();f=N?$(N).text:void 0,M+=k.consumed}s=s.slice(M).trim(),l=at(h),y=ct(h),d=dt(h,!!S[1]),c=ge(h),a=d!==void 0,u=c!==void 0}else{let h=pe(s);if(!h)return{ok:!1,remaining:s,reason:"expected edge operator"};a=h.hasArrowStart,f=$(h.rawLabel).text,s=s.slice(h.consumed).trim(),l=be(h.openOp,h.closeOp),y=lt(h.openOp,h.closeOp),d=a?"arrow":void 0,c=ge(h.closeOp),u=c!==void 0}let m=le(s,e,n,r);if(!m||m.ids.length===0)return{ok:!1,remaining:s,reason:"expected edge target"};s=m.remaining.trim();for(let h of i)for(let M of m.ids)e.edges.push({source:h,target:M,...p!==void 0?{id:p}:{},label:f,style:l,hasArrowStart:a,hasArrowEnd:u,startMarker:d,endMarker:c,...y!==void 0?{length:y}:{}});i=m.ids}return{ok:!0}}function le(t,e,n,r){let s=ue(t,e,n,r);if(!s)return null;let o=[s.id],i=s.remaining.trim();for(;i.startsWith("&");){i=i.slice(1).trim();let a=ue(i,e,n,r);if(!a)break;o.push(a.id),i=a.remaining.trim()}return{ids:o,remaining:i}}function rt(t,e,n){let r=t.match(new RegExp(`^(${D})@\\s*\\{`,"u"));if(!r)return null;let s=r[1],o=t.indexOf("{",r[0].indexOf("@")),i=me(t,o);return i<0?null:(he(s,t.slice(o+1,i),e,n),{id:s,remaining:t.slice(i+1)})}function he(t,e,n,r){let s=B(e),o=s.get("label"),i=o!==void 0?$(o,!0):void 0,a=s.get("shape"),l=a!==void 0?X(a):null,u=C(s.get("icon")),d=C(s.get("img")),c=C(s.get("form")),f=c==="circle"||c==="rounded"||c==="square"?c:void 0,y=l?{shape:l.geometry,semanticShape:l.canonical,authoredShape:a.trim()}:u||d?{shape:f==="circle"?"circle":f==="rounded"?"rounded":"rectangle",semanticShape:u?"icon":"image"}:{},w={...u?{icon:u}:{},...d?{image:d}:{},...f?{iconForm:f}:{}},p=n.nodes.get(t);p?(n.nodes.set(t,{...p,...i!==void 0?{label:i.text,...i.markdown?{markdownLabel:!0}:{}}:{},...y,...w}),ye(r,t)):v(n,r,{id:t,label:i?.text??t,shape:"rectangle",...i?.markdown?{markdownLabel:!0}:{},...y,...w})}function de(t,e,n,r){if(!e.match(/^@\s*\{/))return null;let o=e.indexOf("{"),i=me(e,o);return i<0?null:(he(t,e.slice(o+1,i),n,r),e.slice(i+1))}function me(t,e){if(e<0||t[e]!=="{")return-1;let n=0,r=null,s=!1;for(let o=e;o<t.length;o++){let i=t[o];if(s){s=!1;continue}if(i==="\\"){s=!0;continue}if(r){i===r&&(r=null);continue}if(i==='"'||i==="'"){r=i;continue}if(i==="{")n++;else if(i==="}"&&(n--,n===0))return o}return-1}function B(t){let e="",n=null,r=!1;for(let l of t){if(r){r=!1,e+=" ";continue}if(l==="\\"){e+=" ",r=!0;continue}if(n){l===n&&(n=null),e+=" ";continue}if(l==='"'||l==="'"){n=l,e+=" ";continue}e+=l}let s=/(^|[,\s])([\w-]+)\s*:/g,o=[],i;for(;(i=s.exec(e))!==null;)o.push({key:i[2].toLowerCase(),keyStart:i.index+i[1].length,valueStart:i.index+i[0].length});let a=new Map;for(let l=0;l<o.length;l++){let u=l+1<o.length?o[l+1].keyStart:t.length,d=t.slice(o[l].valueStart,u).trim().replace(/,\s*$/,"").trim();a.set(o[l].key,st(d))}return a}function st(t){return t.length>=2&&(t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))?t.slice(1,-1).replace(/\\([\\"'])/g,"$1"):t}var it=[{open:"(((",close:")))",shape:"doublecircle"},{open:"([",close:"])",shape:"stadium"},{open:"((",close:"))",shape:"circle"},{open:"[[",close:"]]",shape:"subroutine"},{open:"[(",close:")]",shape:"cylinder"},{open:"[/",close:"\\]",shape:"trapezoid"},{open:"[\\",close:"/]",shape:"trapezoid-alt"},{open:"[/",close:"/]",shape:"lean-r"},{open:"[\\",close:"\\]",shape:"lean-l"},{open:">",close:"]",shape:"asymmetric"},{open:"{{",close:"}}",shape:"hexagon"},{open:"[",close:"]",shape:"rectangle"},{open:"(",close:")",shape:"rounded"},{open:"{",close:"}",shape:"diamond"}];function ot(t,e,n){let r=F(t);if(!r)return null;let s=t.slice(r.length);for(let o of it){if(!s.startsWith(`${o.open}"`))continue;let i=o.open.length,a=-1,l=!1;for(let f=i+1;f<s.length;f++){let y=s[f];if(l){l=!1;continue}if(y==="\\"){l=!0;continue}if(y==='"'){a=f;break}}if(a<0||!s.startsWith(o.close,a+1))continue;let u=s.slice(i+1,a).replace(/\\(["\\])/g,"$1"),d=$(u,!0);v(e,n,{id:r.id,label:d.text,shape:o.shape,...d.markdown?{markdownLabel:!0}:{}});let c=r.length+a+1+o.close.length;return{id:r.id,remaining:t.slice(c)}}return null}function ue(t,e,n,r){let s=rt(t,e,n);if(s){let u=s.remaining,d=j(u);return d&&(e.classAssignments.set(s.id,d.className),u=u.slice(d.length)),{id:s.id,remaining:u}}let o=ot(t,e,n);if(o){let u=de(o.id,o.remaining,e,n)??o.remaining,d=j(u);return d&&(e.classAssignments.set(o.id,d.className),u=u.slice(d.length)),{id:o.id,remaining:u}}let i=null,a=t;for(let{regex:u,shape:d}of Ke){let c=t.match(u);if(c){if(et(t,c[1].length))continue;i=c[1];let{text:f,markdown:y}=$(c[2]);v(e,n,{id:i,label:f,shape:d,...y?{markdownLabel:!0}:{}}),a=t.slice(c[0].length);break}}if(i===null){let u=Ze(t);u&&(i=u.id,!e.nodes.has(i)&&!r.has(i)&&v(e,n,{id:i,label:i,shape:"rectangle"}),a=t.slice(u.length))}if(i===null)return null;a=de(i,a,e,n)??a;let l=j(a);return l&&(e.classAssignments.set(i,l.className),a=a.slice(l.length)),{id:i,remaining:a}}function v(t,e,n){!t.nodes.has(n.id)&&t.nodes.set(n.id,n),ye(e,n.id)}function ye(t,e){if(t.length>0){let n=t[t.length-1];n.nodeIds.includes(e)||n.nodeIds.push(e)}}function at(t){return t[0]==="~"?"invisible":t.includes(".")?"dotted":t.includes("=")?"thick":"solid"}function ct(t){let e;if(t[0]==="~")e=t.length-3;else if(t.includes("."))e=(t.match(/\./g)?.length??1)-1;else if(t.includes("=")){let n=t.match(/=/g)?.length??2;e=t.endsWith(">")?n-2:n-3}else{let n=t.match(/-/g)?.length??2;e=/[>ox]$/.test(t)||/^[ox]/.test(t)?n-2:n-3}return e>0?e+1:void 0}function be(t,e){return t.includes(".")||e.includes(".")?"dotted":t.includes("=")||e.includes("=")?"thick":"solid"}function lt(t,e){let n=be(t,e),r=(a,l)=>(a.match(new RegExp(`\\${l}`,"g"))??[]).length,s=0,o=0;n==="dotted"?(s=Math.max(0,r(t,".")-1),o=Math.max(0,r(e,".")-1)):n==="thick"?(s=Math.max(0,r(t,"=")-2),o=Math.max(0,r(e,"=")-(e.endsWith(">")?2:3))):(s=Math.max(0,r(t,"-")-2),o=Math.max(0,r(e,"-")-(e.endsWith(">")?2:3)));let i=Math.max(s,o);return i>0?i+1:void 0}function dt(t,e){if(e)return"arrow";if(t.startsWith("o"))return"circle";if(t.startsWith("x"))return"cross"}function ge(t){let e=t[t.length-1];if(e===">")return"arrow";if(e==="o")return"circle";if(e==="x")return"cross"}export{Nt as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as h,f as a}from"./chunk-
|
|
1
|
+
import{a as h,f as a}from"./chunk-UAEZO5VL.js";import{N as c}from"./chunk-2XCPFAD5.js";var i={fontSize:15,fontWeight:500,height:32,padX:14,offsetY:12,rx:8,minY:4,pointerSize:6};function n(t){return(Math.round(t*100)/100).toString()}function Y(t,e,$,s){let p=h(s,i.fontSize,i.fontWeight)+i.padX*2,l=e-p/2,o=$-i.offsetY-i.height,r=o+i.height;o<i.minY&&(o=i.minY,r=o+i.height);let m=e,f=o+i.height/2,g=i.pointerSize,u=`M${n(e-g)},${n(r)} L${n(e+g)},${n(r)} L${n(e)},${n(r+g)} Z`;return`<g class="${t}-tip"><rect x="${n(l)}" y="${n(o)}" width="${n(p)}" height="${i.height}" rx="${i.rx}" class="${t}-tip ${t}-tip-bg"/><path d="${u}" class="${t}-tip ${t}-tip-ptr"/><text x="${n(m)}" y="${n(f)}" text-anchor="middle" dy="${a}" class="${t}-tip ${t}-tip-text">${c(s)}</text></g>`}function W(t,e){let $=e.map(s=>`.${s}:hover .${t}-tip`).join(`,
|
|
2
2
|
`);return`
|
|
3
3
|
.${t}-tip { opacity: 0; pointer-events: none; }
|
|
4
4
|
.${t}-tip-bg { fill: var(--_text); }
|