agentic-mermaid 0.5.4 → 0.5.5
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 +29 -0
- package/Instructions_for_agents.md +1 -1
- package/README.md +1 -1
- package/dist/agent-core.d.ts +7 -7
- package/dist/agent-core.js +1 -1
- package/dist/agent.d.ts +7 -7
- package/dist/agent.js +1 -1
- package/dist/agentic-mermaid-mcp.js +1 -1
- package/dist/am.js +1 -1
- package/dist/browser-lazy/chunks/{agentic-producer-core-ECZ3CMZM.js → agentic-producer-core-CWRJNRIK.js} +1 -1
- package/dist/browser-lazy/chunks/{architecture-H5LTMKQW.js → architecture-VU5WEHCH.js} +3 -3
- package/dist/browser-lazy/chunks/{block-566X6FNV.js → block-Z2DOU2NP.js} +5 -5
- package/dist/browser-lazy/chunks/{builtin-backends-VAFEZXKY.js → builtin-backends-6UTVDXF4.js} +3 -3
- package/dist/browser-lazy/chunks/{c4-ZXFDLBFK.js → c4-6FTCDDGS.js} +4 -4
- package/dist/browser-lazy/chunks/{chunk-3JTYTXA6.js → chunk-37ORXEBA.js} +4 -4
- package/dist/browser-lazy/chunks/{chunk-IUI4DYC3.js → chunk-3VXXFUXR.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-XHU3A432.js → chunk-6RXXXV66.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-NKW2ZNCD.js → chunk-AVGL6Y22.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-7UFOFWBA.js → chunk-BCPZYXNZ.js} +10 -10
- package/dist/browser-lazy/chunks/{chunk-PSZEE64O.js → chunk-CURBYGWU.js} +8 -8
- package/dist/browser-lazy/chunks/{chunk-TT5GR5EJ.js → chunk-DS3L2TY6.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-LBXXKLIR.js → chunk-EBJK4IHL.js} +3 -3
- package/dist/browser-lazy/chunks/{chunk-5LKPDHPC.js → chunk-FCXWXIUB.js} +3 -3
- package/dist/browser-lazy/chunks/{chunk-Z7UHFVKN.js → chunk-FNGOGVYM.js} +6 -6
- package/dist/browser-lazy/chunks/{chunk-A7V5VDKN.js → chunk-K6V5KN7D.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-64JFHCJC.js → chunk-LRN76QCY.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-7TTFBJYA.js → chunk-NIAOQ3V2.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-37FZNMPR.js → chunk-OF4QKIRV.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-VRZKI33U.js → chunk-OLZVJBI5.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-J57YRC2M.js → chunk-PRBLS664.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-G4JBA7HU.js → chunk-PRXEMB2V.js} +3 -3
- package/dist/browser-lazy/chunks/{chunk-YVNJDVQO.js → chunk-Q6FTXOZS.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-4NILRBC7.js → chunk-QRPOIILY.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-OFOS57WQ.js → chunk-TG7JY42H.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-OBI5U5XU.js → chunk-TWYX5NPD.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-62MR3LWJ.js → chunk-TZMTDADJ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-6GPDLZFQ.js → chunk-UG33LVTQ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-QVSZOF5M.js → chunk-UJLLOK3R.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-PXTLV57R.js → chunk-UKIYI4IO.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-6UOOATQR.js → chunk-UOXZICCT.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-2JQXRKBC.js → chunk-VRXTQTLX.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-V6I2VGNQ.js → chunk-WSZXZ4HF.js} +5 -5
- package/dist/browser-lazy/chunks/{chunk-EIYLJ4FI.js → chunk-XBLK7VXJ.js} +12 -12
- package/dist/browser-lazy/chunks/{chunk-O34YYEQV.js → chunk-XJVCY4DA.js} +1 -1
- package/dist/browser-lazy/chunks/{class-XIFNVBFE.js → class-B7ED4IO7.js} +8 -8
- package/dist/browser-lazy/chunks/{er-VEUYJBGG.js → er-RJO33M6U.js} +5 -5
- package/dist/browser-lazy/chunks/{eventmodeling-G7DITZX7.js → eventmodeling-NZJFH7CB.js} +10 -10
- package/dist/browser-lazy/chunks/{flowchart-SSFIU4EU.js → flowchart-6WEGVIJH.js} +1 -1
- package/dist/browser-lazy/chunks/{gantt-HQNVDX2B.js → gantt-3EBT47PN.js} +5 -5
- package/dist/browser-lazy/chunks/{gitgraph-Z5MN6M6L.js → gitgraph-LXYWMWAG.js} +4 -4
- package/dist/browser-lazy/chunks/{ishikawa-UEERNFQV.js → ishikawa-TNFYQLXS.js} +2 -2
- package/dist/browser-lazy/chunks/{journey-3BEWWGB5.js → journey-ATEGEGT7.js} +7 -7
- package/dist/browser-lazy/chunks/{kanban-2WFNCWLB.js → kanban-4SGNSK5P.js} +11 -11
- package/dist/browser-lazy/chunks/{mindmap-R2C6SNYR.js → mindmap-5T7X3ENQ.js} +6 -6
- package/dist/browser-lazy/chunks/{packet-GMVCI5YZ.js → packet-4SQYN6UC.js} +3 -3
- package/dist/browser-lazy/chunks/{pie-WER45DKC.js → pie-HNPY7QHS.js} +7 -7
- package/dist/browser-lazy/chunks/{quadrant-NCUPSFKN.js → quadrant-HG5UVCOG.js} +3 -3
- package/dist/browser-lazy/chunks/{radar-WLYS4YC5.js → radar-EIHX3Y7A.js} +8 -8
- package/dist/browser-lazy/chunks/{render-core-42UVWIPF.js → render-core-37F7UHHU.js} +2 -2
- package/dist/browser-lazy/chunks/{requirement-AK3NWMJ6.js → requirement-PDLTNSWC.js} +7 -7
- package/dist/browser-lazy/chunks/{sankey-C2DY6WVU.js → sankey-K5QOVS24.js} +6 -6
- package/dist/browser-lazy/chunks/{sequence-D4WJB44W.js → sequence-CVTNAN4F.js} +1 -1
- package/dist/browser-lazy/chunks/{state-YUQVESE7.js → state-EMHRVZIX.js} +2 -2
- package/dist/browser-lazy/chunks/{timeline-BMBJJXWR.js → timeline-GCGZPQWS.js} +4 -4
- package/dist/browser-lazy/chunks/{treemap-B66XBZZ6.js → treemap-BXAVM6C5.js} +3 -3
- package/dist/browser-lazy/chunks/xychart-DSHCGE3Q.js +16 -0
- package/dist/browser-lazy/chunks/{zenuml-62RLYFWP.js → zenuml-QU75FNEC.js} +8 -8
- package/dist/browser-lazy/index.js +1 -1
- package/dist/browser.global.js +436 -436
- package/dist/{chunk-EHJI3QYE.js → chunk-2WNJCUZG.js} +27 -27
- package/dist/{chunk-XU5LPD2D.js → chunk-5BYN55G4.js} +1 -1
- package/dist/{chunk-KXMANAST.js → chunk-5JQIK3AC.js} +47 -47
- package/dist/chunk-BHJZLM35.js +2 -0
- package/dist/{chunk-4F2UGYTM.js → chunk-BNS3NO3O.js} +2 -2
- package/dist/{chunk-WYIB6BUR.js → chunk-BRFXOVQK.js} +2 -2
- package/dist/{chunk-HINRNKPO.js → chunk-CPO4MGL7.js} +2 -2
- package/dist/chunk-E4AJQAEN.js +2 -0
- package/dist/{chunk-7XYB2LNC.js → chunk-NZQWSAD5.js} +2 -2
- package/dist/{chunk-DOFB572I.js → chunk-QULSM7S3.js} +15 -15
- package/dist/{chunk-MKE7GNYU.js → chunk-ZKCI4BXW.js} +10 -6
- package/dist/{cli-ZYIDBYNS.js → cli-6N2OYXG7.js} +43 -43
- package/dist/{index-Bvhprdxz.d.ts → index-BvPnCHcw.d.ts} +14 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/{mcp-cli-YVDCORWA.js → mcp-cli-O4YD2NQB.js} +2 -2
- package/dist/{paint-certification-BoLyr006.d.ts → paint-certification-6UB6BRr6.d.ts} +2 -2
- package/dist/server-ZKAXVFA2.js +527 -0
- package/dist/{svg-styles-BnCoXyYe.d.ts → svg-styles-CyT8yUfG.d.ts} +1 -1
- package/dist/svg-styles.d.ts +1 -1
- package/dist/svg-styles.js +1 -1
- package/dist/svg.d.ts +4 -4
- package/dist/svg.js +1 -1
- package/dist/{types-CLVJCaH2.d.ts → types-DMKjdWeL.d.ts} +1 -1
- package/dist/zenuml/chunks/{appearance-5RM5MVM2.js → appearance-UJSXEKCJ.js} +1 -1
- package/dist/zenuml/chunks/{builtin-backends-UTNWL4N3.js → builtin-backends-2ETI2OTB.js} +3 -3
- package/dist/zenuml/chunks/{chunk-3A6S6GNB.js → chunk-AT55WY2L.js} +1 -1
- package/dist/zenuml/chunks/{chunk-CNLL4BGF.js → chunk-NGGC5EHN.js} +1 -1
- package/dist/zenuml/chunks/{chunk-IARQ24W3.js → chunk-O23VFGJM.js} +2 -2
- package/dist/zenuml/chunks/{chunk-ZNZRIISS.js → chunk-S2NMJ7E6.js} +2 -2
- package/dist/zenuml/chunks/{chunk-55WS466K.js → chunk-WLQR46A6.js} +9 -9
- package/dist/zenuml/chunks/{chunk-6J4BGPB2.js → chunk-Y7DUY2UU.js} +24 -24
- package/dist/zenuml/chunks/{render-core-ECIWU5ZS.js → render-core-MBXTLSVO.js} +2 -2
- package/dist/zenuml/chunks/{zenuml-N3LZMB2G.js → zenuml-FDVVN4IM.js} +7 -7
- package/dist/zenuml.d.ts +2 -2
- package/dist/zenuml.js +1 -1
- package/docs/api.md +84 -4
- package/docs/quality.md +6 -3
- package/docs/style-authoring.md +23 -0
- package/docs/testing-strategy.md +5 -3
- package/package.json +3 -2
- package/server.json +2 -2
- package/skills/agentic-mermaid-diagram-workflow/references/code-mode.md +10 -1
- package/skills/agentic-mermaid-diagram-workflow/references/hosted-mcp.md +5 -1
- package/dist/browser-lazy/chunks/xychart-HAVFROGT.js +0 -16
- package/dist/chunk-2DNGDTJD.js +0 -2
- package/dist/chunk-U4MT3RRE.js +0 -2
- package/dist/server-4JGAVXR3.js +0 -524
- package/docs/MCP-DIRECTORY-LISTINGS.md +0 -145
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import{b as e,c as t}from"./chunk-
|
|
1
|
+
import{b as e,c as t}from"./chunk-UG33LVTQ.js";import{b as i}from"./chunk-MFTQWHUB.js";import{g as r}from"./chunk-XJVCY4DA.js";import{a as n,ca as a}from"./chunk-AVGL6Y22.js";import{b as o}from"./chunk-HJVO5VC3.js";import"./chunk-L4UC3KGS.js";import"./chunk-BMZ24VPS.js";import{a as s}from"./chunk-TZMTDADJ.js";import"./chunk-UKIYI4IO.js";import{b as l,c as d,d as c}from"./chunk-D6MQ7QSU.js";import{p as h}from"./chunk-6RXXXV66.js";import{d as u}from"./chunk-FCXWXIUB.js";import{t as g}from"./chunk-WSZXZ4HF.js";import"./chunk-BCPZYXNZ.js";import{c as p,f as f,g as m}from"./chunk-OLZVJBI5.js";import{C as x,D as y,a as v,b as b,c as w,d as k,e as S,g as M,i as $}from"./chunk-UJLLOK3R.js";import{C as L,M as z,T as F,c as I,oa as _,s as T,x as R}from"./chunk-PRXEMB2V.js";import{j as W,k as j,m as P,r as B,u as C}from"./chunk-37ORXEBA.js";import{h as E}from"./chunk-Q6FTXOZS.js";import{H as A,M as X,N as H,O as O,Pb as N,T as Y,Vb as D,_ as V,_b as U,a as Z,ea as J,oa as Q,pb as G,tb as K}from"./chunk-XBLK7VXJ.js";import{u as q,v as ee}from"./chunk-PJJSDGLB.js";import"./chunk-YHMTSXIR.js";import"./chunk-QCU5G5PZ.js";var et=Object.freeze({id:"architecture",upstreamId:"architecture",maturity:"stable",label:"Architecture",headers:["architecture","architecture-beta"],aliases:[],config:{section:"architecture",keys:["padding","iconSize","fontSize","nodeSeparation","idealEdgeLengthMultiplier","edgeElasticity","numIter","seed","randomize"],noopKeys:["edgeElasticity","numIter","randomize","seed"]},identity:{id:"family:architecture",kind:"family",version:"1.0.0",compatibility:{core:"0.5.5"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:[],semanticRoles:["prelude","defs","chrome","title","group","group-header","icon","label","service","junction","edge"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"icon",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"icon",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"icon",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"service",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"service",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"junction",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"junction",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`architecture-beta
|
|
2
2
|
group backend(cloud)[Backend]
|
|
3
3
|
service api(server)[API] in backend
|
|
4
4
|
service db(database)[Database] in backend
|
|
5
5
|
service cache(disk)[Cache] in backend
|
|
6
6
|
api:R --> L:db
|
|
7
7
|
api:B -[reads]-> T:cache`,detect:q,detectLoose:ee}),ei={padding:h(0),iconSize:h(0,!0),fontSize:h(0,!0),nodeSeparation:h(0),idealEdgeLengthMultiplier:h(0,!0)};function er(e,t,i,r){switch(i){case"L":return Math.abs(e.x-t.x)<=r&&e.y>=t.y-r&&e.y<=t.y+t.height+r;case"R":return Math.abs(e.x-(t.x+t.width))<=r&&e.y>=t.y-r&&e.y<=t.y+t.height+r;case"T":return Math.abs(e.y-t.y)<=r&&e.x>=t.x-r&&e.x<=t.x+t.width+r;case"B":return Math.abs(e.y-(t.y+t.height))<=r&&e.x>=t.x-r&&e.x<=t.x+t.width+r}}var en={groupHeaderHeight:28,groupFontSize:12,groupFontWeight:600,groupLetterSpacing:0,groupPaddingX:16,groupPaddingY:16,groupLabelPaddingX:12,groupCornerRadius:0,groupLineWidth:1,serviceFontSize:13,serviceFontWeight:500,serviceLetterSpacing:0,servicePaddingX:20,servicePaddingY:10,serviceCornerRadius:0,serviceLineWidth:1,edgeFontSize:11,edgeFontWeight:400,edgeLetterSpacing:0,edgeLineWidth:1,edgeBendRadius:0,iconSize:16,serviceIconSize:18,junctionOuterRadius:8,junctionInnerRadius:4.5};function ea(e){return{iconSize:e.iconSize,serviceIconSize:e.serviceIconSize,junctionOuterRadius:e.junctionOuterRadius,groupFontSize:e.groupFontSize,groupFontWeight:e.groupFontWeight,groupLetterSpacing:e.groupLetterSpacing,groupFont:e.groupFont,groupTextTransform:e.groupTextTransform,groupPaddingX:e.groupPaddingX,groupPaddingY:e.groupPaddingY,groupCornerRadius:e.groupCornerRadius,groupLineWidth:e.groupLineWidth,serviceFontSize:e.serviceFontSize,serviceFontWeight:e.serviceFontWeight,serviceLetterSpacing:e.serviceLetterSpacing,serviceTextTransform:e.serviceTextTransform,servicePaddingX:e.servicePaddingX,servicePaddingY:e.servicePaddingY,serviceCornerRadius:e.serviceCornerRadius,serviceLineWidth:e.serviceLineWidth,edgeFontSize:e.edgeFontSize,edgeFontWeight:e.edgeFontWeight,edgeLetterSpacing:e.edgeLetterSpacing,edgeTextTransform:e.edgeTextTransform,edgeLineWidth:e.edgeLineWidth,edgeBendRadius:e.edgeBendRadius}}function eo(e,...t){for(let i of t){let t=function(e,t){let i=e?.[t];return"string"==typeof i?i:void 0}(e,i);if(t)return t}}function es(e,t){let i=ed(e?.[t]);return void 0!==i&&i>0?i:void 0}function el(e,t){let i=e?.[t];return i&&"object"==typeof i&&!Array.isArray(i)?i:void 0}function ed(e){if("number"==typeof e)return e;if("string"!=typeof e)return;let t=e.trim();return t.match(/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:px)?$/i)?Number.parseFloat(t):void 0}function ec(e,t,i){return Math.min(i,Math.max(t,e))}var eh={fill:"var(--arch-edge-stroke, var(--_arrow))",stroke:"var(--arch-edge-stroke, var(--_arrow))",strokeWidth:"0.75",strokeLinejoin:"round"},eu=[B("architecture-arrow-end",{width:8,height:5},"end",eh),B("architecture-arrow-start",{width:8,height:5},"start",eh)],eg=s(eu),ep=e=>e.trim().toLowerCase().split(/[:/]/).pop()??e.trim().toLowerCase();function ef(e){return(ep(e).replace(/[^a-z0-9]/g,"")[0]??"?").toUpperCase()}function em(e,t){if(!(!e||i(e)||["cloud","database","disk","internet","server"].includes(ep(e))))return V(ef(e),{fontSize:Math.max(10,.56*t),fontWeight:700})}var ex=/^align(?:\s|$)/,ey=/^[\w-]+$/,ev="[\\w-]+",eb="\\((?<icon>[^)]+)\\)",ew="\\[(?<content>.+)\\]",ek=String.raw`(?<iconText>"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')`,eS=RegExp(`^group\\s+(?<id>${ev})(?:${eb})?(?:${ew})?(?:\\s+in\\s+(?<parentId>${ev}))?\\s*$`,"s"),eM=RegExp(`^service\\s+(?<id>${ev})(?:\\s*(?:${eb}|${ek}))?\\s*(?:${ew})?(?:\\s+in\\s+(?<parentId>${ev}))?\\s*$`,"s"),e$=RegExp(`^junction\\s+(${ev})(?:\\s+in\\s+(${ev}))?\\s*$`),eL=RegExp(`^(${ev})(\\{group\\})?:(L|R|T|B)$`),ez=RegExp(`^(L|R|T|B):(${ev})(\\{group\\})?$`),eF=/^(<)?-\[(.*)\]-(>)?$/s,eI=RegExp(`^(${ev}(?:\\{group\\})?:[LRTB])\\s*(.+?)\\s*([LRTB]:${ev}(?:\\{group\\})?)$`,"s"),e_={spanning:"\"'",opensAt:(e,t)=>"["===e[t-1]||/^service\s+[\w-]+\s*$/.test(e.slice(0,t)),wholeLine:e=>/^title\s/i.test(e)};function eT(e){return d(e,e_)}var eR=/^(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')$/;function eW(e){return eR.test(e)?e.slice(1,-1).replace(/\\"/g,'"').replace(/\\'/g,"'").trim():e.trim()}function ej(e){let t,{id:i,icon:r,iconText:n,content:a,parentId:o}=e.groups,s=r?.trim()||void 0,l=void 0===a?i:eW(a);return{id:i,...void 0!==s?{icon:s}:{},...void 0!==n?{iconText:(t={b:"\b",f:"\f",n:`
|
|
8
|
-
`,r:"\r",t:" ",v:"\v",0:"\0"},n.slice(1,-1).replace(/\\(.)/gs,(e,i)=>t[i]??i))}:{},title:l,...void 0!==o?{parentId:o}:{}}}function eP(e,t,i,r){if(t.has(e)||i.has(e)||r.has(e))throw T({what:`Duplicate architecture identifier "${e}"`,expectedForm:"a unique id for each service, group, and junction",example:`${e}2`,known:[...t.keys(),...i.keys(),...r.keys()]})}function eB(e,t,i){if(e&&!t.has(e))throw T({what:`Unknown architecture group "${e}" in line "${i}"`,expectedForm:"a group declared earlier with group id(icon)[Label]",example:`group ${e}(cloud)[${e}]`,known:[...t.keys()]})}function eC(e,t,i,r){t?i.get(t).children.push(e):r.push(e)}function eE(e,t,i,r){let n=t.get(e.id),a=i.get(e.id);if(!n&&!a)throw T({what:`Unknown architecture item "${e.id}" in line "${r}"`,expectedForm:"a service or junction declared earlier",example:`service ${e.id}(server)[${e.id}]`,known:[...t.keys(),...i.keys()]});if("group"===e.boundary){if(!n)throw Error(`Architecture group boundary modifier only applies to services: "${r}"`);if(!n.parentId)throw Error(`Service "${n.id}" is not inside a group, so "{group}" is invalid in line "${r}"`)}}function eA(e,t,i,r,n){for(let a of e)!function e(t,i,r,n,a){let o=[];for(let s of t.children)o.push(e(s,i,r,n,a));for(let e of i)e.parentId===t.id&&o.push(e);for(let e of r)e.parentId===t.id&&o.push(e);if(0===o.length)return t;let s=Math.min(t.x,...o.map(e=>e.x-18)),l=void 0===a?18:t.headerHeight+a,d=Math.min(t.y,...o.map(e=>e.y-l)),c=Math.max(t.x+t.width,...o.map(e=>e.x+e.width+18)),h=n?Math.max(t.y+48,...o.map(e=>e.y+e.height+18)):Math.max(t.y+t.height,...o.map(e=>e.y+e.height+18));return t.x=s,t.y=d,t.width=c-s,t.height=h-d,t}(a,t,i,r,n)}function
|
|
8
|
+
`,r:"\r",t:" ",v:"\v",0:"\0"},n.slice(1,-1).replace(/\\(.)/gs,(e,i)=>t[i]??i))}:{},title:l,...void 0!==o?{parentId:o}:{}}}function eP(e,t,i,r){if(t.has(e)||i.has(e)||r.has(e))throw T({what:`Duplicate architecture identifier "${e}"`,expectedForm:"a unique id for each service, group, and junction",example:`${e}2`,known:[...t.keys(),...i.keys(),...r.keys()]})}function eB(e,t,i){if(e&&!t.has(e))throw T({what:`Unknown architecture group "${e}" in line "${i}"`,expectedForm:"a group declared earlier with group id(icon)[Label]",example:`group ${e}(cloud)[${e}]`,known:[...t.keys()]})}function eC(e,t,i,r){t?i.get(t).children.push(e):r.push(e)}function eE(e,t,i,r){let n=t.get(e.id),a=i.get(e.id);if(!n&&!a)throw T({what:`Unknown architecture item "${e.id}" in line "${r}"`,expectedForm:"a service or junction declared earlier",example:`service ${e.id}(server)[${e.id}]`,known:[...t.keys(),...i.keys()]});if("group"===e.boundary){if(!n)throw Error(`Architecture group boundary modifier only applies to services: "${r}"`);if(!n.parentId)throw Error(`Service "${n.id}" is not inside a group, so "{group}" is invalid in line "${r}"`)}}function eA(e,t,i,r,n){for(let a of e)!function e(t,i,r,n,a){let o=[];for(let s of t.children)o.push(e(s,i,r,n,a));for(let e of i)e.parentId===t.id&&o.push(e);for(let e of r)e.parentId===t.id&&o.push(e);if(0===o.length)return t;let s=Math.min(t.x,...o.map(e=>e.x-18)),l=void 0===a?18:t.headerHeight+a,d=Math.min(t.y,...o.map(e=>e.y-l)),c=Math.max(t.x+t.width,...o.map(e=>e.x+e.width+18)),h=n?Math.max(t.y+48,...o.map(e=>e.y+e.height+18)):Math.max(t.y+t.height,...o.map(e=>e.y+e.height+18));return t.x=s,t.y=d,t.width=c-s,t.height=h-d,t}(a,t,i,r,n)}function eX(e){let t=e.headerHeight;if(void 0===t||!Number.isFinite(t)||t<0)throw new N([{strategy:"architecture-final-headers",violations:[`group ${e.id}: missing or invalid measured header height`]}]);return t>0?{id:e.id,kind:"group-header",x:e.x,y:e.y,width:e.width,height:t}:void 0}function eH(e,t,i){switch(t){case"L":return i.x<e.x-.001;case"R":return i.x>e.x+.001;case"T":return i.y<e.y-.001;case"B":return i.y>e.y+.001}}function eO(e,t){for(let i=1;i<e.length;i++)if(t.some(t=>eN(e[i-1],e[i],t)))return!1;return!0}function eN(e,t,i){if("group-header"===i.kind){let r=0,n=1;for(let[a,o,s,l]of[[e.x,t.x-e.x,i.x,i.x+i.width],[e.y,t.y-e.y,i.y,i.y+i.height]]){if(0===o){if(a<=s||a>=l)return!1;continue}let e=(s-a)/o,t=(l-a)/o;if((r=Math.max(r,Math.min(e,t)))>=(n=Math.min(n,Math.max(e,t))))return!1}return r<n}return .001>=Math.abs(e.y-t.y)?e.y>i.y+.001&&e.y<i.y+i.height-.001&&Math.min(e.x,t.x)<i.x+i.width-.001&&Math.max(e.x,t.x)>i.x+.001:!(.001>=Math.abs(e.x-t.x))||e.x>i.x+.001&&e.x<i.x+i.width-.001&&Math.min(e.y,t.y)<i.y+i.height-.001&&Math.max(e.y,t.y)>i.y+.001}var eY=class{entries=[];push(e){this.entries.push(e);let t=this.entries.length-1;for(;t>0;){let i=Math.floor((t-1)/2);if(!this.before(e,this.entries[i]))break;this.entries[t]=this.entries[i],t=i}this.entries[t]=e}pop(){let e=this.entries[0],t=this.entries.pop();if(!e||!t||0===this.entries.length)return e;let i=0;for(this.entries[0]=t;;){let e=2*i+1,t=e+1;if(e>=this.entries.length)break;let r=e;if(t<this.entries.length&&this.before(this.entries[t],this.entries[e])&&(r=t),!this.before(this.entries[r],this.entries[i]))break;let n=this.entries[i];this.entries[i]=this.entries[r],this.entries[r]=n,i=r}return e}before(e,t){return e.cost<t.cost||e.cost===t.cost&&e.state<t.state}};function eD(e,t,i,r,n,a=0){if("group"===e.boundary){let r=t.get(e.id),o=i.get(e.id),s=function(e,t,i){let r=t.x+t.width/2,n=t.y+t.height/2;switch(i){case"L":return{x:e.x,y:eG(n,e.y+18,e.y+e.height-18)};case"R":return{x:e.x+e.width,y:eG(n,e.y+18,e.y+e.height-18)};case"T":return{x:eG(r,e.x+18,e.x+e.width-18),y:e.y};case"B":return{x:eG(r,e.x+18,e.x+e.width-18),y:e.y+e.height}}}(n.get(r.parentId),o,e.side);return{anchor:s,exit:eU(s,e.side,Math.max(16,a))}}let o=i.get(e.id);if(o){let t=function(e,t){switch(t){case"L":return{x:e.x,y:e.y+e.height/2};case"R":return{x:e.x+e.width,y:e.y+e.height/2};case"T":return{x:e.x+e.width/2,y:e.y};case"B":return{x:e.x+e.width/2,y:e.y+e.height}}}(o,e.side);return{anchor:t,exit:eU(t,e.side,Math.max(16,a))}}let s=r.get(e.id);if(!s)throw Error(`Unknown architecture endpoint "${e.id}"`);let l=function(e,t){let i=e.x+e.width/2,r=e.y+e.height/2,n=Math.min(e.width,e.height)/2;switch(t){case"L":return{x:i-n,y:r};case"R":return{x:i+n,y:r};case"T":return{x:i,y:r-n};case"B":return{x:i,y:r+n}}}(s,e.side);return{anchor:l,exit:eU(l,e.side,Math.max(12,a))}}function eV(e){return"L"===e||"R"===e?"horizontal":"vertical"}function eU(e,t,i){switch(t){case"L":return{x:e.x-i,y:e.y};case"R":return{x:e.x+i,y:e.y};case"T":return{x:e.x,y:e.y-i};case"B":return{x:e.x,y:e.y+i}}}function eZ(e){let t=[],i;for(let r of e)if(!(i&&i.x===r.x&&i.y===r.y)){for(i=r;t.length>1;){let e=t[t.length-2],i=t[t.length-1];if(e.x===i.x&&i.x===r.x||e.y===i.y&&i.y===r.y)t.pop();else break}t.push(r)}return t}function eJ(e){if(0===e.length)return{x:0,y:0};if(1===e.length)return e[0];let t=0;for(let i=1;i<e.length;i++)t+=eQ(e[i-1],e[i]);let i=t/2;for(let t=1;t<e.length;t++){let r=e[t-1],n=e[t],a=eQ(r,n);if(i<=a){let e=0===a?0:i/a;return{x:r.x+(n.x-r.x)*e,y:r.y+(n.y-r.y)*e}}i-=a}return e[e.length-1]}function eQ(e,t){return Math.abs(t.x-e.x)+Math.abs(t.y-e.y)}function eG(e,t,i){return Math.max(t,Math.min(i,e))}function eK(e,t,r,n,a,o,s,l,d){let c=a.trim().toLowerCase(),h=!c.includes(":")&&!c.includes("/")&&["cloud","database","disk","internet","server"].includes(c)?null:i(a),u=h?` data-icon-source="${h.source}" data-icon-license="${h.license}"`:"",g="var(--arch-edge-stroke, var(--_arrow))",p={fill:"none",stroke:g,strokeWidth:"1.25",strokeLinecap:"round",strokeLinejoin:"round"},f=[],m=(t,i="architecture-icon-mark",r=p,n)=>{f.push(e.shape({id:Y(s,"part",f.length),role:"icon",owner:l,geometry:t,paint:r,...n?{transform:n}:{},attributes:{className:i}}))},x=e=>m({kind:"path",d:e}),y=(e,t,i)=>m({kind:"circle",cx:e,cy:t,r:i}),v=(e,t,i,r)=>m({kind:"ellipse",cx:e,cy:t,rx:i,ry:r}),b=ep(a),w=t+n/2,k=r+n/2,S=o?.92*n:n;if(h){let e=(n-S)/2,i=S/24;m({kind:"path",d:h.path},"architecture-icon-glyph",{fill:g},{kind:"matrix",a:i,b:0,c:0,d:i,e:t+e,f:r+e})}else switch(b){case"cloud":y(w-.18*S,k+.02*S,.16*S),y(w+.02*S,k-.08*S,.2*S),y(w+.2*S,k+.02*S,.15*S),x(`M ${w-.34*S} ${k+.16*S} H ${w+.33*S}`);break;case"database":v(w,k-.16*S,.24*S,.1*S),x(`M ${w-.24*S} ${k-.16*S} V ${k+.2*S}`),x(`M ${w+.24*S} ${k-.16*S} V ${k+.2*S}`),v(w,k+.02*S,.24*S,.1*S),v(w,k+.2*S,.24*S,.1*S);break;case"disk":y(w,k,.26*S),y(w,k,.09*S);break;case"internet":y(w,k,.26*S),x(`M ${w-.26*S} ${k} H ${w+.26*S}`),x(`M ${w} ${k-.26*S} V ${k+.26*S}`),x(`M ${w-.14*S} ${k-.22*S} Q ${w} ${k} ${w-.14*S} ${k+.22*S}`),x(`M ${w+.14*S} ${k-.22*S} Q ${w} ${k} ${w+.14*S} ${k+.22*S}`);break;case"server":m({kind:"rect",x:w-.22*S,y:k-.24*S,width:.44*S,height:.48*S,rx:0,ry:0}),x(`M ${w-.16*S} ${k-.08*S} H ${w+.16*S}`),x(`M ${w-.16*S} ${k+.06*S} H ${w+.16*S}`);break;default:{let t=ef(a),i=Math.max(10,.56*n);f.push(e.text({id:Y(s,"fallback"),role:"icon",owner:l,text:t,block:d,x:w,y:k,fontSize:i,fontWeight:700,anchor:"middle",paint:{fill:g},attributes:{className:"architecture-icon-glyph architecture-icon-fallback",data:{fallback:"true"}}}))}}return e.group({id:s,role:"icon",owner:l,open:` <g class="architecture-icon" data-icon="${H(a)}"${u}>`,close:"</g>",children:f.map((e,t)=>({node:e,indent:2*(0===t)}))})}var eq=I(function(e,t){let i,r,n,a,o,s,{positioned:l,colors:d,resolved:c}=t,h=c.renderOptions,u=d.font??"Inter",g=h.transparent??!1,p={...en,...c.familyAppearance?.visual??h.architecture?.visual},f=[],m=[p.groupSurface?`--arch-group-fill:${p.groupSurface}`:"",p.groupHeaderSurface?`--arch-group-band:${p.groupHeaderSurface}`:"",p.groupBorder?`--arch-group-stroke:${p.groupBorder}`:"",p.groupText?`--arch-group-label:${p.groupText}`:"",p.serviceSurface?`--arch-service-fill:${p.serviceSurface}`:"",p.serviceBorder?`--arch-service-stroke:${p.serviceBorder}`:"",p.serviceText?`--arch-service-label:${p.serviceText}`:"",p.edgeStroke?`--arch-edge-stroke:${p.edgeStroke}`:"",p.edgeText?`--arch-edge-label:${p.edgeText}`:""].filter(Boolean).join(";"),x=(i=P("var(--bg)",d),r=P("var(--_node-fill)",d),n=i?P(p.groupSurface??i,d):void 0,a=P(p.edgeStroke??"var(--_arrow)",d),o=p.groupHeaderSurface??(n&&a?Q(a,n,5):void 0),s=p.serviceSurface??(i&&r?Q(r,i,92):void 0),{group:`var(--arch-group-label, ${o?_("var(--_text-sec)",o,d):"var(--_text-sec)"})`,service:`var(--arch-service-label, ${s?_("var(--_text)",s,d):"var(--_text)"})`}),y=l.accessibilityTitle??l.title?.text,v=!!y,b=!!l.accessibilityDescription,w=`arch-${D(l.width,l.height,l.title?.text??"",l.services.map(e=>e.id).join(","),l.groups.map(e=>e.id).join(","))}`,k=`${w}-title`,S=`${w}-desc`,M={};(v||b)&&(M.role="img",M["aria-roledescription"]="architecture"),v&&(M["aria-labelledby"]=k),b&&(M["aria-describedby"]=S);let $=[];for(let t of($.push(j(l.width,l.height,d,g,{style:m,attrs:M})),v&&$.push(`<title id="${k}">${X(y)}</title>`),b&&$.push(`<desc id="${S}">${X(l.accessibilityDescription)}</desc>`),$.push(W(u,!1,void 0,d.embedFontImport)),f.push(e.documentOpen({id:"prelude",width:l.width,height:l.height,colors:d,transparent:g,font:u,hasMonoFont:!1},$.join(`
|
|
9
9
|
`))),f.push(e.definitions({id:"defs",markerResources:eu},["<defs>",C(eu),"</defs>"].join(`
|
|
10
|
-
`))),l.title&&f.push(e.text({id:"title",role:"title",text:l.title.text,x:l.title.x,y:l.title.y,fontSize:18,block:l.title.block,anchor:"middle",fontWeight:600,paint:{fill:"var(--arch-service-label, var(--_text))"},attributes:{className:"architecture-title"}})),l.groups))f.push(function e(t,i,r,n){let a=[],o=`<g class="architecture-group" data-id="${X(i.id)}" data-label="${O(i.label)}">`;a.push({indent:2,node:t.shape({id:`group-frame:${i.id}`,role:"group",geometry:{kind:"rect",x:i.x,y:i.y,width:i.width,height:i.height,rx:r.groupCornerRadius,ry:r.groupCornerRadius},paint:{fill:"var(--arch-group-fill, color-mix(in srgb, var(--_node-fill) 82%, var(--bg)))",stroke:"none"},attributes:{className:"architecture-group-frame"}})});let s=K(i.x,i.y,i.width,i.headerHeight??r.groupHeaderHeight,r.groupCornerRadius);a.push({indent:2,node:t.shape({id:`group-band:${i.id}`,role:"group-header",geometry:{kind:"path",d:s},paint:{fill:"var(--arch-group-band, color-mix(in srgb, var(--arch-edge-stroke, var(--_arrow)) 5%, var(--arch-group-fill, var(--bg))))",stroke:"none"},attributes:{className:"architecture-group-band"}})}),a.push({indent:2,node:t.shape({id:`group-outline:${i.id}`,role:"group",geometry:{kind:"rect",x:i.x,y:i.y,width:i.width,height:i.height,rx:r.groupCornerRadius,ry:r.groupCornerRadius},paint:{fill:"none",stroke:"var(--arch-group-stroke, var(--_node-stroke))",strokeWidth:String(r.groupLineWidth)},attributes:{className:"architecture-group-outline"}})}),i.icon&&a.push({indent:0,node:eK(t,i.x+10,i.y+6,r.iconSize,i.icon,!0,`icon:${i.id}`,{id:i.id,role:"group"},i.iconFallbackBlock)});let l=i.labelBlock??V(i.label,{display:"formatted",transform:r.groupTextTransform,fontSize:r.groupFontSize,fontWeight:r.groupFontWeight,letterSpacing:r.groupLetterSpacing,fontFamily:r.groupFont}),d=l.text,c=i.x+(i.icon?36:r.groupLabelPaddingX),h=i.y+(i.headerHeight??r.groupHeaderHeight)/2;for(let o of(a.push({indent:2,node:t.text({id:`group-label:${i.id}`,role:"label",text:d,x:c,y:h,fontSize:r.groupFontSize,block:l,anchor:"start",paint:{fill:n.group},attributes:{className:"architecture-group-label"}})}),i.children))a.push({indent:0,node:e(t,o,r,n)});return t.group({id:`group:${i.id}`,role:"group",open:o,close:"</g>",children:a})}(e,t,p,x));let L=new Map;for(let t of l.edges){let i=`${t.source.id}->${t.target.id}`,r=L.get(i)??0;L.set(i,r+1),f.push(function(e,t,i,r){let n=t.hasArrowStart?eu[1]:void 0,a=t.hasArrowEnd?eu[0]:void 0,o={className:"architecture-edge",data:{"from-side":t.source.side,"to-side":t.target.side,"from-boundary":t.source.boundary,"to-boundary":t.target.boundary,...t.label?{label:Q(t.label)}:{}}},s={stroke:"var(--arch-edge-stroke, var(--_line))",strokeWidth:String(i.edgeLineWidth),strokeLinejoin:"round"},l={endpoints:{from:t.source.id,to:t.target.id},relationship:{kind:"architecture-edge"},route:{ownership:"layout",bendRadius:i.edgeBendRadius,labelAnchors:t.labelPosition?[t.labelPosition]:[]},labels:t.label?[{text:t.label,...t.labelPosition?{anchor:t.labelPosition}:{}}]:[],attributes:o};if(i.edgeBendRadius>0&&t.points.length>2){let o=J(t.points,i.edgeBendRadius,{terminalClearance:{start:eg(n?.id,i.edgeLineWidth,"start"),end:eg(a?.id,i.edgeLineWidth,"end")},metric:"manhattan"});return e.connector({id:r,role:"edge",geometry:o.geometry,lineStyle:"solid",paint:s,markers:{...n?{start:n}:{},mid:[],...a?{end:a}:{}},...l,route:{...l.route,contours:o.contours}})}return e.connector({id:r,role:"edge",geometry:{kind:"polyline",points:t.points},lineStyle:"solid",paint:s,markers:{...n?{start:n}:{},mid:[],...a?{end:a}:{}},...l})}(e,t,p,`edge:${i}#${r}`))}let z=new Map;for(let t of l.edges){if(!t.label)continue;let i=`${t.source.id}->${t.target.id}`,r=z.get(i)??0;for(let n of(z.set(i,r+1),function(e,t,i,r){let n=t.labelBlock??V(t.label,{display:"formatted",transform:i.edgeTextTransform,fontSize:i.edgeFontSize,fontWeight:i.edgeFontWeight,letterSpacing:i.edgeLetterSpacing}),a=n.text,o=t.labelPosition??eJ(t.points),s=n.width+14,l=n.height+14;return[e.shape({id:`${r}:bg`,role:"chrome",geometry:{kind:"rect",x:o.x-s/2,y:o.y-l/2,width:s,height:l,rx:0,ry:0},paint:{fill:"color-mix(in srgb, var(--bg) 90%, var(--_group-hdr))",stroke:"color-mix(in srgb, var(--arch-edge-stroke, var(--_line)) 18%, var(--bg))",strokeWidth:"0.75"},attributes:{className:"architecture-edge-label-bg"}}),e.text({id:r,role:"label",text:a,x:o.x,y:o.y,fontSize:i.edgeFontSize,block:n,anchor:"middle",paint:{fill:"var(--arch-edge-label, var(--_text-muted))"},attributes:{className:"architecture-edge-label-text"}})]}(e,t,p,`edge-label:${i}#${r}`)))f.push(n)}for(let t of l.junctions)f.push(function(e,t,i){let r=t.x+t.width/2,n=t.y+t.height/2,a=e.shape({id:`junction-ring:${t.id}`,role:"junction",geometry:{kind:"circle",cx:r,cy:n,r:t.width/2},paint:{fill:"var(--bg)",stroke:"var(--arch-edge-stroke, var(--_arrow))",strokeWidth:"1.25"},attributes:{className:"architecture-junction-ring"}}),o=e.shape({id:`junction-core:${t.id}`,role:"junction",geometry:{kind:"circle",cx:r,cy:n,r:i.junctionInnerRadius},paint:{fill:"color-mix(in srgb, var(--arch-edge-stroke, var(--_arrow)) 24%, var(--bg))",stroke:"var(--arch-edge-stroke, var(--_arrow))",strokeWidth:"0.75"},attributes:{className:"architecture-junction-core"}});return e.group({id:`junction:${t.id}`,role:"junction",open:`<g class="architecture-junction" data-id="${X(t.id)}">`,close:"</g>",children:[{indent:2,node:a},{indent:2,node:o}]})}(e,t,p));for(let t of l.services)f.push(function(e,t,i,r){let n=[],a=!!t.icon,o=void 0===t.iconText?void 0:t.iconTextBlock??V(t.iconText,{display:"literal",fontSize:i.serviceFontSize,fontWeight:700}),s=t.x+i.servicePaddingX,l=t.y+t.height/2-i.serviceIconSize/2,d=t.labelPosition?.x??(o?s+o.width+10*!!o.width:a?s+i.serviceIconSize+Math.max(10,.7*i.servicePaddingX):t.x+i.servicePaddingX),c=`<g class="architecture-service" data-id="${X(t.id)}" data-label="${O(t.label)}">`;n.push({indent:2,node:e.shape({id:`service-card:${t.id}`,role:"service",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.height,rx:i.serviceCornerRadius,ry:i.serviceCornerRadius},paint:{fill:"var(--arch-service-fill, color-mix(in srgb, var(--_node-fill) 92%, var(--bg)))",stroke:"none"},attributes:{className:"architecture-service-card"}})}),n.push({indent:2,node:e.shape({id:`service-outline:${t.id}`,role:"service",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.height,rx:i.serviceCornerRadius,ry:i.serviceCornerRadius},paint:{fill:"none",stroke:"var(--arch-service-stroke, var(--_node-stroke))",strokeWidth:String(i.serviceLineWidth)},attributes:{className:"architecture-service-outline"}})}),t.icon&&n.push({indent:0,node:eK(e,s,l,i.serviceIconSize,t.icon,!1,`icon:${t.id}`,{id:t.id,role:"service"},t.iconFallbackBlock)}),o&&n.push({indent:2,node:e.text({id:`icon-text:${t.id}`,role:"icon",text:o.text,block:o,x:s,y:t.y+t.height/2,anchor:"start",fontSize:i.serviceFontSize,fontWeight:700,paint:{fill:r.service},attributes:{className:"architecture-icon-text"}})});let h=t.labelPosition?.y??t.y+t.height/2,u=t.labelBlock??V(t.label,{display:"formatted",transform:i.serviceTextTransform,fontSize:i.serviceFontSize,fontWeight:i.serviceFontWeight,letterSpacing:i.serviceLetterSpacing}),g=u.text;return n.push({indent:2,node:e.text({id:`service-label:${t.id}`,role:"label",text:g,x:d,y:h,fontSize:i.serviceFontSize,block:u,anchor:"start",paint:{fill:r.service},attributes:{className:"architecture-service-label"}})}),e.group({id:`service:${t.id}`,role:"service",open:c,close:"</g>",children:n})}(e,t,p,x));return f.push(e.documentClose()),{family:"architecture",width:l.width,height:l.height,colors:d,transparent:g,parts:f}}),e0=k(et,{configDiagnostics:e=>u("architecture",e,ei),statementEnds:eT,normalizeRequest:e=>{let t=function(e,t,i={},r){let n,a=el(e,"themeVariables"),o=el(e,"architecture"),s=ec(es(o,"fontSize")??es(e,"fontSize")??es(a,"fontSize")??en.serviceFontSize,10,24),l=ec(es(o,"iconSize")??en.serviceIconSize,12,40),d=ec(Math.round(l*(en.iconSize/en.serviceIconSize)),10,36),c=ec(Math.round(.92*s),10,22),h=ec(Math.round(.85*s),10,20),u=Math.max(en.groupHeaderHeight,Math.round(Math.max(c,d)+12)),g=ec(Math.round(.44*l),8,18),p=Number((.56*g).toFixed(1)),f=E(i,{nodeLabelFontSize:s,edgeLabelFontSize:h,groupHeaderFontSize:c,nodeLabelFontWeight:en.serviceFontWeight,edgeLabelFontWeight:en.edgeFontWeight,groupHeaderFontWeight:en.groupFontWeight,nodePaddingX:en.servicePaddingX,nodePaddingY:en.servicePaddingY,nodeCornerRadius:en.serviceCornerRadius,nodeLineWidth:en.serviceLineWidth,edgeLineWidth:en.edgeLineWidth,edgeBendRadius:en.edgeBendRadius,groupCornerRadius:en.groupCornerRadius,groupPaddingX:en.groupPaddingX,groupPaddingY:en.groupPaddingY,groupLabelPaddingX:en.groupLabelPaddingX,groupLineWidth:en.groupLineWidth},r),m={...{groupHeaderHeight:Math.max(u,f.groupHeaderFontSize+12),groupFontSize:f.groupHeaderFontSize,groupFontWeight:f.groupHeaderFontWeight,groupLetterSpacing:f.groupLetterSpacing,groupFont:f.groupFont,groupTextTransform:f.groupTextTransform,groupPaddingX:f.groupPaddingX,groupPaddingY:f.groupPaddingY,groupLabelPaddingX:f.groupLabelPaddingX,groupCornerRadius:f.groupCornerRadius,groupLineWidth:f.groupLineWidth,serviceFontSize:f.nodeLabelFontSize,serviceFontWeight:f.nodeLabelFontWeight,serviceLetterSpacing:f.nodeLetterSpacing,serviceTextTransform:f.nodeTextTransform,servicePaddingX:f.nodePaddingX,servicePaddingY:f.nodePaddingY,serviceCornerRadius:f.cornerRadius??0,serviceLineWidth:f.nodeLineWidth,edgeFontSize:f.edgeLabelFontSize,edgeFontWeight:f.edgeLabelFontWeight,edgeLetterSpacing:f.edgeLetterSpacing,edgeTextTransform:f.edgeTextTransform,edgeLineWidth:f.lineWidth,edgeBendRadius:f.edgeBendRadius,iconSize:d,serviceIconSize:l,junctionOuterRadius:g,junctionInnerRadius:p,groupSurface:f.groupFillColor??eo(a,"clusterBkg")??t.surface,groupHeaderSurface:f.groupHeaderFillColor,groupBorder:f.groupBorderColor??eo(a,"clusterBorder"),groupText:f.groupTextColor,serviceSurface:f.nodeFillColor??eo(a,"mainBkg","secondaryColor")??t.surface,serviceBorder:f.nodeBorderColor??eo(a,"primaryBorderColor"),serviceText:f.nodeTextColor,edgeStroke:f.edgeStrokeColor,edgeText:f.edgeTextColor},...i.architecture?.visual};if(m.junctionInnerRadius>m.junctionOuterRadius)throw RangeError("architecture.visual.junctionInnerRadius must not exceed junctionOuterRadius");return{visual:m,layout:ea(m),padding:void 0!==(n=ed(o?.padding))&&n>=0?n:void 0,nodeSpacing:function(e){let t=ed(e?.nodeSeparation);if(!(void 0===t||!Number.isFinite(t)||t<0))return ec(Math.round(t),0,512)}(o),layerSpacing:function(e){let t=ed(e?.idealEdgeLengthMultiplier);if(!(void 0===t||!Number.isFinite(t)||t<=0))return ec(Math.round(56*t/1.5),8,512)}(o)}}(e.source.frontmatter,e.colors,e.renderOptions,e.styleFace);return{renderOptions:{...e.renderOptions,padding:e.renderOptions.padding??t.padding,nodeSpacing:e.renderOptions.nodeSpacing??t.nodeSpacing,layerSpacing:e.renderOptions.layerSpacing??t.layerSpacing},familyConfig:{layout:t.layout},appearance:{family:{visual:t.visual}}}},layout:i=>{var s;let d,h,u=i.familyConfig;return w(function(i,s={},l){F(i);let d=l??ea(en),c=(e,t)=>V(e,{display:"formatted",transform:d[`${t}TextTransform`],fontSize:d[`${t}FontSize`],fontWeight:d[`${t}FontWeight`],letterSpacing:d[`${t}LetterSpacing`],fontFamily:"group"===t?d.groupFont:void 0}),h=new Map(i.services.map(e=>[e.id,c(e.label,"service")])),u=new Map(i.groups.map(e=>[e.id,c(e.label,"group")])),g=i.edges.map(e=>void 0===e.label?void 0:c(e.label,"edge")),p=function(e){var t;let i,r;F(e);let n=new Map;for(let t of e.services)n.set(t.id,{id:t.id,label:t.label,shape:t.icon?"service":"rectangle"});for(let t of e.junctions)n.set(t.id,{id:t.id,label:"",shape:"state-start"});return{direction:function(e){let t=0,i=0;for(let r of e)"L"===r.source.side||"R"===r.source.side?t++:i++,"L"===r.target.side||"R"===r.target.side?t++:i++;return t>=i?"LR":"TD"}(e.edges),nodes:n,edges:e.edges.map(e=>({source:e.source.id,target:e.target.id,label:e.label,style:"solid",hasArrowStart:e.hasArrowStart,hasArrowEnd:e.hasArrowEnd})),subgraphs:(i=new Map((t=e.groups).map(e=>[e.id,e])),r=new Set,t.filter(e=>!e.parentId).map(e=>(function e(t,n){if(r.has(t))throw TypeError("Architecture groups must form a tree without repeated groups");r.add(t),z("nesting",n);let a=[],o=[];for(let r of t.children)if("group"===r.kind){let t=i.get(r.id);t&&o.push(e(t,n+1))}else a.push(r.id);return{id:t.id,label:t.label,nodeIds:a,children:o,...t.icon?{titleOffset:36}:{}}})(e,1))),classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,linkStyles:new Map}}(i),f=s.architecture?.visual?.groupHeaderHeight;if(void 0!==f&&(!Number.isFinite(f)||f<=0))throw RangeError("Invalid Architecture group-header minimum");let m=void 0===f?void 0:Math.max(18,d.groupPaddingY),x=2*(d.junctionOuterRadius??en.junctionOuterRadius);for(let[e,t]of h)p.nodes.get(e).label=t.text;let y=new Map(i.services.filter(e=>void 0!==e.iconText).map(e=>[e.id,V(e.iconText,{display:"literal",fontSize:d.serviceFontSize,fontWeight:700})]));for(let[e,t]of y){let i=h.get(e);p.nodes.get(e).labelBlock={...i,width:i.width+t.width+10*!!t.width,height:Math.max(i.height,t.height)}}let v=e=>{e.label=u.get(e.id).text,void 0!==f&&(e.headerMinHeight=f),e.children.forEach(v)};p.subgraphs.forEach(v),p.edges.forEach((e,t)=>{e.label=g[t]?.text});let b={nodeSizes:new Map(i.junctions.map(e=>[e.id,{width:x+12,height:x+12}])),padding:s.padding??40,nodeSpacing:s.nodeSpacing??36,layerSpacing:s.layerSpacing??56,compareRoutePreferences:!1,styleFace:l?{node:{fontSize:l.serviceFontSize,fontWeight:l.serviceFontWeight,letterSpacing:l.serviceLetterSpacing,textTransform:void 0,paddingX:l.servicePaddingX,paddingY:l.servicePaddingY,cornerRadius:l.serviceCornerRadius,lineWidth:l.serviceLineWidth},edge:{fontSize:l.edgeFontSize,fontWeight:l.edgeFontWeight,letterSpacing:l.edgeLetterSpacing,textTransform:void 0,lineWidth:l.edgeLineWidth,bendRadius:l.edgeBendRadius},group:{fontSize:l.groupFontSize,fontWeight:l.groupFontWeight,letterSpacing:l.groupLetterSpacing,fontFamily:l.groupFont,textTransform:void 0,paddingX:l.groupPaddingX,paddingY:l.groupPaddingY,cornerRadius:l.groupCornerRadius,lineWidth:l.groupLineWidth}}:void 0},w=new Map(i.services.map(e=>[e.id,e])),k=new Map(i.groups.map(e=>[e.id,e])),S=new Map(i.junctions.map(e=>[e.id,e])),M=(e,t)=>{let c=[],p=[],f=new Map,v=new Map;for(let t of e.nodes)if(w.has(t.id)){let e=w.get(t.id),i={x:t.x,y:t.y,width:t.width,height:t.height,id:e.id,label:e.label,labelBlock:h.get(e.id),...void 0!==e.iconText?{iconText:e.iconText,iconTextBlock:y.get(e.id)}:{},iconFallbackBlock:em(e.icon,d.serviceIconSize??en.serviceIconSize),icon:e.icon,parentId:e.parentId};c.push(i),f.set(t.id,i)}else if(S.has(t.id)){let e=S.get(t.id),i={x:t.x+(t.width-x)/2,y:t.y+(t.height-x)/2,width:x,height:x,id:e.id,parentId:e.parentId};p.push(i),v.set(t.id,i)}let b=new Map(i.services.map((e,t)=>[e.id,t]));c.sort((e,t)=>!!e.parentId-!!t.parentId||(b.get(e.id)??0)-(b.get(t.id)??0)),function(e,t,i,r){let n=new Map;for(let e of t)n.set(e.id,e);for(let e of i)n.set(e.id,e);let a=new Set(e.alignments.filter(e=>"row"===e.axis).flatMap(e=>e.members));for(let t of[...e.alignments.filter(e=>"row"===e.axis),...e.alignments.filter(e=>"column"===e.axis)]){let e=t.members.map(e=>n.get(e)).filter(e=>void 0!==e);if(!(e.length<2))if("row"===t.axis){let t=Math.min(...e.map(e=>e.y+e.height/2)),i=Math.min(...e.map(e=>e.x));for(let n of e)n.x=i,n.y=t-n.height/2,i+=n.width+r}else{let t=Math.min(...e.map(e=>e.x+e.width/2)),i=e.every(e=>!a.has(e.id)),n=Math.min(...e.map(e=>e.y));for(let a of e)a.x=t-a.width/2,i&&(a.y=n,n+=a.height+r)}}let o=new Map,s=e=>{let t=o.get(e)??e;if(t===e)return o.set(e,e),e;let i=s(t);return o.set(e,i),i},l=(e,t)=>{let i=s(e),r=s(t);i!==r&&o.set(r,i)};for(let t of e.alignments)if("column"===t.axis)for(let e=1;e<t.members.length;e++)l(t.members[0],t.members[e]);let d=new Map,c=e=>{let t=d.get(e)??e;if(t===e)return d.set(e,e),e;let i=c(t);return d.set(e,i),i},h=(e,t)=>{let i=c(e),r=c(t);i!==r&&d.set(r,i)};for(let t of e.alignments)if("row"===t.axis)for(let e=1;e<t.members.length;e++)h(t.members[0],t.members[e]);if(e.alignments.length){let e=new Map;for(let t of n.values()){let i=c(t.id),r=s(t.id),n=e.get(i);n||(n=new Map,e.set(i,n));let a=n.get(r);if(void 0!==a)throw new N([{strategy:"architecture-alignments",violations:[`incompatible row and column constraints tie distinct items ${a} and ${t.id}`]}]);n.set(r,t.id)}}if(e.alignments.length)for(let e of["row","column"]){let t="row"===e?c:s,i=new Map;for(let r of n.values()){let n=t(r.id),a="row"===e?r.y+r.height/2:r.x+r.width/2;i.set(n,Math.min(i.get(n)??1/0,a))}for(let r of n.values()){let n=i.get(t(r.id));.001>=Math.abs(("row"===e?r.y+r.height/2:r.x+r.width/2)-n)||("row"===e?r.y=n-r.height/2:r.x=n-r.width/2)}}if(e.alignments.length)for(let e of["row","column"]){let t="row"===e?c:s,i="row"===e?s:c,a="row"===e?"x":"y",o="row"===e?"width":"height",l=new Map,d=new Map;for(let e of n.values()){let r=i(e.id),n=t(e.id),a=l.get(r)??[];a.push(e),l.set(r,a);let o=d.get(n)??[];o.push(e),d.set(n,o)}let h=new Map,u=new Map;for(let[e,t]of l)h.set(e,Math.min(...t.map(e=>e[a]+e[o]/2))),u.set(e,t.map(e=>e.id).sort(Z)[0]);let g=[...l.keys()].sort((e,t)=>h.get(e)-h.get(t)||Z(u.get(e),u.get(t))),p=new Map(g.map((e,t)=>[e,t])),f=new Map;for(let e of d.values()){e.sort((e,t)=>p.get(i(e.id))-p.get(i(t.id)));for(let t=1;t<e.length;t++){let r=e[t-1],n=e[t],a=i(n.id),o=f.get(a)??[];o.push({before:r,after:n}),f.set(a,o)}}for(let e of g){let t=0;for(let{before:i,after:n}of f.get(e)??[])t=Math.max(t,i[a]+i[o]+r-n[a]);if(t>0)for(let i of l.get(e))i[a]+=t}}for(let t=0;t<2;t++)for(let t of e.alignments){if("row"!==t.axis)continue;let e=t.members.map(e=>n.get(e)).filter(e=>void 0!==e);if(e.length<2)continue;let i=c(e[0].id),a=Math.min(...e.map(e=>e.x)),o=Math.max(...e.map(e=>e.x+e.width)),s=Math.min(...e.map(e=>e.y)),l=Math.max(...e.map(e=>e.y+e.height));for(let e of n.values()){if(c(e.id)===i||!(e.x<o&&e.x+e.width>a&&e.y<l&&e.y+e.height>s))continue;let t=c(e.id),d=[...n.values()].filter(e=>c(e.id)===t),h=l+r-Math.min(...d.map(e=>e.y));for(let e of d)e.y+=h}}}(i,c,p,s.nodeSpacing??36);let M=new Map,$=e.groups.map(e=>(function e(t,i,r){let n=i.get(t.id),a={id:t.id,label:n?.label??t.id,icon:n?.icon,parentId:n?.parentId,x:t.x,y:t.y,width:t.width,height:t.height,headerHeight:t.headerHeight,children:t.children.map(t=>e(t,i,r))};return r.set(a.id,a),a})(e,k,M));for(let e of M.values())e.labelBlock=u.get(e.id),e.iconFallbackBlock=em(e.icon,d.iconSize??en.iconSize);eA($,c,p,i.alignments.length>0,m);let L,z=function(e,t,i,r,n,a,o,s,l,d,c,h){let u=!1,g=(e,t)=>`${e}:${t}`,p=e=>{let t=e.indexOf(":");return{kind:e.slice(0,t),id:e.slice(t+1)}},f=e=>{let t=[],i=e;for(;i;)t.push(g("group",i)),i=o.get(i)?.parentId;return t.reverse()},m=(e,t="item")=>{let i=a.get(e);if(i){let r=f(i.parentId);return"group"===t?r:[...r,g("service",e)]}let r=s.get(e);return r?[...f(r.parentId),g("junction",e)]:null},x=[];for(let t of e.edges){let e=m(t.source.id,t.source.boundary),i=m(t.target.id,t.target.boundary);if(!e||!i)continue;let r=0;for(;r<e.length&&r<i.length&&e[r]===i[r];)r++;if(r>=e.length||r>=i.length)continue;let n=0===r?void 0:p(e[r-1]).id,a=e[r],o=i[r],s=(e,t,i)=>{let a="L"===i||"R"===i?"x":"y",o="R"===i||"B"===i;x.push({axis:a,parentId:n,before:o?e:t,after:o?t:e,depth:r})};s(a,o,t.source.side),s(o,a,t.target.side)}let y=t=>t?o.get(t)?.children??[]:e.rootChildren,v=e=>{let{kind:t,id:i}=p(e);return"group"===t?r.get(i):"service"===t?l.get(i):d.get(i)},b=(e,t,i)=>{if(.001>=Math.abs(i))return;let{kind:n,id:a}=p(e);if("group"!==n){let e="service"===n?l.get(a):d.get(a);e&&(e[t]+=i);return}let s=e=>{let n=r.get(e);for(let r of(n&&(n[t]+=i),o.get(e)?.children??[]))"group"===r.kind?s(r.id):b(g(r.kind,r.id),t,i)};s(a)},w=[...r.values()].filter(e=>!e.parentId),k=e=>y(e).map(e=>g(e.kind,e.id)).filter(e=>void 0!==v(e)),S=(t,i,r)=>{let n=new Map(t.map(e=>[e,e])),a=e=>{let t=n.get(e)??e;if(t===e)return e;let i=a(t);return n.set(e,i),i};for(let t of e.alignments){if(t.axis!==r)continue;let e=t.members.map(e=>{let t=m(e);if(!t)return;if(!i)return t[0];let r=t.indexOf(g("group",i));return r>=0?t[r+1]:void 0}).filter(e=>void 0!==e&&n.has(e));for(let t of e.slice(1))n.set(a(t),a(e[0]))}let o=new Map;for(let e of t){let t=a(e),i=o.get(t)??[];i.push(e),o.set(t,i)}return{find:a,members:o,bounds:e=>{let t=o.get(e).map(e=>v(e)),i=Math.min(...t.map(e=>e.x)),r=Math.min(...t.map(e=>e.y));return{x:i,y:r,width:Math.max(...t.map(e=>e.x+e.width))-i,height:Math.max(...t.map(e=>e.y+e.height))-r}}}},M=new Map;for(let e of x){let t=`${e.depth}:${e.parentId??""}:${e.axis}`,i=M.get(t)??[];i.push(e),M.set(t,i)}for(let e of[...M.values()].sort((e,t)=>t[0].depth-e[0].depth||Z(e[0].parentId??"",t[0].parentId??"")||Z(e[0].axis,t[0].axis))){let{axis:r,parentId:a}=e[0],o=k(a);if(o.length<2)continue;let{find:s,members:l,bounds:d}=S(o,a,"x"===r?"column":"row"),c=new Map,g=!1;for(let t of e){let e=s(t.before),i=s(t.after);if(e===i){g=!0;break}let r=c.get(e)??new Set;r.add(i),c.set(e,r)}if(g)continue;let p=[...l.keys()],f=(e,t)=>{let i=d(e),a=d(t);return"x"===r?i.x+i.width+n<=a.x+.001:i.y+i.height+n<=a.y+.001};if([...c].every(([e,t])=>[...t].every(t=>f(e,t))))continue;let m=new Map(p.map(e=>[e,0]));for(let e of c.values())for(let t of e)m.set(t,(m.get(t)??0)+1);let x=[];for(;x.length<p.length;){let e=p.filter(e=>!x.includes(e)&&0===m.get(e)).sort((e,t)=>{let i=d(e),n=d(t);return("x"===r?i.x-n.x:i.y-n.y)||Z(e,t)});if(0===e.length)break;let t=e[0];for(let e of(x.push(t),c.get(t)??[]))m.set(e,m.get(e)-1)}if(x.length!==p.length)continue;let y=Math.min(...p.map(d).map(e=>"x"===r?e.x:e.y));for(let e of x){let t=d(e),i=y-("x"===r?t.x:t.y);for(let t of(Math.abs(i)>.001&&(u=!0),l.get(e)))b(t,r,i);y+=("x"===r?t.width:t.height)+n}eA(w,t,i,!0,h)}let $=!1;for(let t of e.alignments){let e="row"===t.axis?"y":"x",i="y"===e?"height":"width",r=[...new Set(t.members)].flatMap(e=>{let t=m(e),i=l.get(e)??d.get(e);return t&&i?[{path:t,item:i}]:[]}),n=(t,r)=>{if(t.length<2)return;let a=Math.min(...t.map(e=>e.path.length));for(;r<a&&t.every(e=>e.path[r]===t[0].path[r]);)r++;if(r>=a)return;let o=new Map;for(let e of t){let t=e.path[r],i=o.get(t)??[];i.push(e),o.set(t,i)}for(let e of o.values())n(e,r+1);let s=Math.max(...t.map(t=>t.item[e]+t.item[i]/2));for(let[t,r]of o){let n=s-(r[0].item[e]+r[0].item[i]/2);n>.001&&(b(t,e,n),$=u=!0)}};n(r,0)}$&&eA(w,t,i,!0,h);let L=[...e.groups.map(e=>({parentId:e.id,depth:f(e.id).length})),{parentId:void 0,depth:0}].sort((e,t)=>t.depth-e.depth||Z(e.parentId??"",t.parentId??"")),z=(e,t)=>e.x<t.x+t.width-.001&&t.x<e.x+e.width-.001&&e.y<t.y+t.height-.001&&t.y<e.y+e.height-.001;for(let e of L){let r=k(e.parentId);if(r.length<2)continue;let{members:a,bounds:o}=S(r,e.parentId,"row"),{find:s,members:l}=S(r,e.parentId,"column");for(let e=0;e<r.length;e++){let e=!1;for(let t of a.values()){let i=[...t].sort((e,t)=>v(e).x-v(t).x||Z(e,t)),r=-1/0,a=new Set;for(let t of i){let i=s(t);if(a.has(i))continue;a.add(i);let o=v(t);if(o.x<r-.001){let t=r-o.x;for(let e of l.get(i))b(e,"x",t);e=u=!0}r=o.x+o.width+n}}if(!e)break}let d=[...a.keys()].sort((e,t)=>{let i=o(e),r=o(t);return i.y-r.y||i.x-r.x||Z(e,t)}),c=[];for(let e of d){for(let t=0;t<=c.length;t++){let t=o(e),i=c.map(o).filter(e=>z(t,e));if(0===i.length)break;let r=Math.max(...i.map(e=>e.y+e.height+n))-t.y;for(let t of a.get(e))b(t,"y",r);u=!0}c.push(e)}eA(w,t,i,!0,h)}return c?.(()=>x.every(({axis:e,before:t,after:i})=>{let r=v(t),a=v(i);return r[e]+("x"===e?r.width:r.height)+n<=a[e]+.001})&&(void 0===h||[...r.values()].every(e=>y(e.id).every(t=>{let i=v(g(t.kind,t.id));return void 0===i||i.y>=e.y+e.headerHeight+h})))&&L.every(e=>{let t=y(e.parentId).map(e=>v(g(e.kind,e.id))).filter(e=>void 0!==e);return t.every((e,i)=>t.slice(i+1).every(t=>!z(e,t)))})),u}(i,c,p,M,s.nodeSpacing??36,w,k,S,f,v,t?e=>{L=e}:void 0,m);if(z&&eA($,c,p,!0,m),i.alignments.length){let e=new Map([...c,...p].map(e=>[e.id,e])),t=i.alignments.flatMap(t=>{let i=t.members.map(i=>{let r=e.get(i);return"row"===t.axis?r.y+r.height/2:r.x+r.width/2});return Math.max(...i)-Math.min(...i)<=.001?[]:[`${t.axis} alignment lost for ${t.members.join(", ")}`]});if(t.length)throw new N([{strategy:"architecture-final-alignments",violations:t}])}let F=()=>i.edges.map(e=>(function(e,t,i,r,n,a,s,l,d){let c=eD(e.source,t,i,r,n,l.start?l.start+d:0),h=eD(e.target,t,i,r,n,l.end?l.end+d:0),u=function(e,t,i,r,n){let a=new Set,o=e=>{let t=e;for(;t&&!a.has(t);)a.add(t),t=i.get(t)?.parentId};o(t.get(e.source.id)?.parentId??n.get(e.source.id)?.parentId),o(t.get(e.target.id)?.parentId??n.get(e.target.id)?.parentId);let s=(e,t,i)=>({id:e,kind:t,x:i.x-6,y:i.y-6,width:i.width+12,height:i.height+12}),l=[];for(let t of r)t.id===e.source.id||t.id===e.target.id||l.push(s(t.id,"service",t));for(let t of n.values())t.id===e.source.id||t.id===e.target.id||l.push(s(t.id,"junction",t));for(let e of i.values())if(a.has(e.id)){let t=eH(e);t&&l.push(t)}else l.push(s(e.id,"group",e));return l}(e,t,n,a,s);for(let a of[e.source,e.target]){let e="group"===a.boundary?n.get(t.get(a.id).parentId):void 0,o=e??i.get(a.id)??r.get(a.id);u.push({...o,id:e?.id??a.id,kind:e?"group":i.has(a.id)?"service":"junction"})}for(let[t,i]of[[c,e.source.side],[h,e.target.side]]){let e="L"===i||"R"===i,r="R"===i||"B"===i,n=Math.abs(e?t.exit.x-t.anchor.x:t.exit.y-t.anchor.y);for(let i of u){let a=e?t.anchor.y:t.anchor.x,o=e?i.y:i.x,s=e?i.height:i.width;if(a<=o+.001||a>=o+s-.001)continue;let l=((e?i.x+(r?0:i.width):i.y+(r?0:i.height))-(e?t.anchor.x:t.anchor.y))*(r?1:-1);l>.001&&(n=Math.min(n,l))}t.exit=eU(t.anchor,i,n)}let g=eQ([c.exit,...function(e,t,i,r){if(e.x===t.x||e.y===t.y)return[];let n=eV(i);if(n!==eV(r))return"horizontal"===n?[{x:t.x,y:e.y}]:[{x:e.x,y:t.y}];if("horizontal"===n){let i=(e.x+t.x)/2;return[{x:i,y:e.y},{x:i,y:t.y}]}let a=(e.y+t.y)/2;return[{x:e.x,y:a},{x:t.x,y:a}]}(c.exit,h.exit,e.source.side,e.target.side),h.exit]),p=eO(g,u)?g:function(e,t,i){let r=[...new Set([e.x,t.x,...i.flatMap(e=>[e.x,e.x+e.width])])].sort((e,t)=>e-t),n=[...new Set([e.y,t.y,...i.flatMap(e=>[e.y,e.y+e.height])])].sort((e,t)=>e-t),a=[],o=new Map,s=(e,t)=>`${e}\0${t}`,l=(e,t)=>i.some(i=>{let r=.001*("group-header"!==i.kind);return e>i.x+r&&e<i.x+i.width-r&&t>i.y+r&&t<i.y+i.height-r});for(let i of n)for(let n of r)l(n,i)&&(n!==e.x||i!==e.y)&&(n!==t.x||i!==t.y)||(o.set(s(n,i),a.length),a.push({x:n,y:i}));let d=o.get(s(e.x,e.y)),c=o.get(s(t.x,t.y));if(void 0===d||void 0===c)return null;let h=a.map(()=>[]),u=(e,t)=>{for(let r=1;r<e.length;r++){let n=e[r-1],o=e[r],s=a[n],l=a[o];if(i.some(e=>eN(s,l,e)))continue;let d=Math.abs(s.x-l.x)+Math.abs(s.y-l.y);h[n].push({point:o,direction:t,length:d}),h[o].push({point:n,direction:t,length:d})}};for(let e of n)u(a.map((e,t)=>({point:e,index:t})).filter(t=>t.point.y===e).sort((e,t)=>e.point.x-t.point.x).map(e=>e.index),1);for(let e of r)u(a.map((e,t)=>({point:e,index:t})).filter(t=>t.point.x===e).sort((e,t)=>e.point.y-t.point.y).map(e=>e.index),2);let g=3*a.length,p=Array(g).fill(1/0),f=Array(g).fill(-1),m=3*d;p[m]=0;let x=new eY;x.push({state:m,cost:0});let y=-1;for(;;){let e=x.pop();if(!e)break;if(e.cost!==p[e.state])continue;let t=Math.floor(e.state/3),i=e.state%3;if(t===c){y=e.state;break}for(let r of h[t]){let t=3*r.point+r.direction,n=8*(0!==i&&i!==r.direction),a=e.cost+r.length+n;a>=p[t]||(p[t]=a,f[t]=e.state,x.push({state:t,cost:a}))}}if(y<0)return null;let v=[];for(let e=y;e>=0&&(v.push(a[Math.floor(e/3)]),e!==m);e=f[e]);return eQ(v.reverse())}(c.exit,h.exit,u)??g,f=eQ([c.anchor,...p,h.anchor]),m=o(f,l);m&&m!==f&&eO(m,u)&&(f=m);let x=eX(c.anchor,e.source.side,h.anchor),y=eX(h.anchor,e.target.side,c.anchor);return{source:e.source,target:e.target,label:e.label,hasArrowStart:e.hasArrowStart,hasArrowEnd:e.hasArrowEnd,points:f,labelPosition:e.label?eJ(f):void 0,placement:x&&y?"satisfied":"conflicted",sourceFacesTarget:x,targetFacesSource:y,obstacleFree:eO(f,u)}})(e,w,f,v,M,c,v,{start:e.hasArrowStart?eg("architecture-arrow-start",d.edgeLineWidth,"start"):0,end:e.hasArrowEnd?eg("architecture-arrow-end",d.edgeLineWidth,"end"):0},d.edgeBendRadius)),I=F();L&&(I=r(i,c,I,F,L,e=>{let t=e.map(({points:e})=>({points:e,style:"solid",source:"",target:"_"}));return n(t)||a(t)})),I.forEach((e,t)=>{e.labelBlock=g[t]}),function(e,t,i){let r=i?.edgeFontSize??11,n=i?.edgeFontWeight??400,a=(e,t,a)=>{let o=e.labelBlock??V(e.label,{display:"formatted",fontSize:r,fontWeight:n,letterSpacing:i?.edgeLetterSpacing}),s=o.width+12,l=o.height+12;return{x0:t-s/2,y0:a-l/2,x1:t+s/2,y1:a+l/2}},o=(e,t)=>Math.min(e.x1,t.x1)-Math.max(e.x0,t.x0)>.5&&Math.min(e.y1,t.y1)-Math.max(e.y0,t.y0)>.5,s=t.map(e=>({x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+e.height})),l=e.filter(e=>e.label&&e.labelPosition&&e.points.length>=2),d=[];for(let e of l){let t=a(e,e.labelPosition.x,e.labelPosition.y),i=e=>d.some(t=>o(e,t))||s.some(t=>o(e,t));if(!i(t)){d.push(t);continue}let r=e.points,n=[],l=0;for(let e=1;e<r.length;e++){let t=Math.hypot(r[e].x-r[e-1].x,r[e].y-r[e-1].y);n.push(t),l+=t}let c=e=>{let t=e;for(let e=0;e<n.length;e++){if(t<=n[e]||e===n.length-1){let i=0===n[e]?0:Math.max(0,Math.min(1,t/n[e]));return{x:r[e].x+(r[e+1].x-r[e].x)*i,y:r[e].y+(r[e+1].y-r[e].y)*i}}t-=n[e]}return r[r.length-1]},h=t;for(let t of[.5,.4,.6,.3,.7,.25,.75,.2,.8,.15,.85]){let r=c(l*t),n=a(e,r.x,r.y);if(!i(n)){e.labelPosition={x:r.x,y:r.y},h=n;break}}d.push(h)}}(I,c,l);let _=i.title?V(i.title,{display:"formatted",transform:l?.groupTextTransform,fontSize:18,fontWeight:600,safeFont:!0}):void 0,T=_?.text,R=_?_.height-(_.lineHeight-_.fontSize):0,W=e.width,j=e.height;if((i.alignments.length>0||z)&&(W=Math.max(80,...c.map(e=>e.x+e.width+40),...p.map(e=>e.x+e.width+40),...$.map(e=>e.x+e.width+40)),j=Math.max(80,...c.map(e=>e.y+e.height+40),...p.map(e=>e.y+e.height+40),...$.map(e=>e.y+e.height+40))),T){W=Math.max(W,_.width+80);let e=Math.max(0,11+R+11-Math.min(...c.map(e=>e.y),...p.map(e=>e.y),...[...M.values()].map(e=>e.y))),t=i=>{i.y+=e,i.children.forEach(t)};for(let i of($.forEach(t),c))i.y+=e;for(let t of p)t.y+=e;for(let t of I){for(let i of t.points)i.y+=e;t.labelPosition&&(t.labelPosition.y+=e)}j=Math.max(j+e,11+R+20)}for(let e of I){for(let t of e.points)W=Math.max(W,t.x+40),j=Math.max(j,t.y+40);e.labelPosition&&(W=Math.max(W,e.labelPosition.x+72),j=Math.max(j,e.labelPosition.y+28))}for(let e of c){let t=e.x+d.servicePaddingX;e.labelPosition={x:e.iconTextBlock?t+e.iconTextBlock.width+10*!!e.iconTextBlock.width:e.icon?t+(d.serviceIconSize??en.serviceIconSize)+Math.max(10,.7*d.servicePaddingX):t,y:e.y+e.height/2}}let P=[...M.values()].flatMap(e=>{let t=eH(e);return t?[t]:[]}),B=I.flatMap(e=>P.filter(t=>!eO(e.points,[t])).map(t=>`edge ${e.source.id}->${e.target.id}: crosses group ${t.id} header`));if(void 0!==m)for(let e of M.values())for(let t of[...e.children,...c.filter(t=>t.parentId===e.id),...p.filter(t=>t.parentId===e.id)])t.y<e.y+e.headerHeight+m&&B.push(`group ${e.id}: child ${t.id} lacks reserved header clearance`);if(B.length)throw new N([{strategy:"architecture-final-headers",violations:B}]);return{width:W,height:j,...T?{title:{text:T,x:W/2,y:20+(R-18)/2,block:_}}:{},groups:$,services:c,junctions:p,edges:I,accessibilityTitle:i.accessibilityTitle,accessibilityDescription:i.accessibilityDescription}};return U(s,()=>M(t(p,b),!0),()=>M(e(p,{...b,preserveSubgraphChildOrder:!0}),!1),!0)}(g(L(function(e){if(0===e.length)throw Error("Empty mermaid diagram");if(!/^architecture(?:-beta)?\s*$/i.test(l(e[0])))throw Error(`Invalid mermaid header: "${e[0]}". Expected "architecture" or "architecture-beta".`);S("architecture")&&M("architecture","header",e[0],{line:1,unit:"normalized"});let t=new Map,i=new Map,r=new Map,n=[],a=[],o=[],s,d,h;for(let u of function e(t){let i=[],r=eT(t);for(let n=0;n<t.length;n++){let a=n,o=t[n],s=(e,r=t.slice(a,n+1))=>{i.push({...e,raw:r,startLine:a+1,endLine:n+1})},d=o.trim();if(!d||d.startsWith("%%")){s({kind:d?"comment":"blank"});continue}let h=R(t,n);if(void 0===h){let e=t.slice(n);n=t.length-1,s({kind:"invalid",error:Error("Unclosed accDescr block")},e);break}if(null!==h){n=h.endIndex;let r=t.slice(a,n+1);if(h.suffixLine&&(r[r.length-1]=r.at(-1).slice(0,r.at(-1).indexOf("}")+1)),s({kind:"accessibility",directive:h},r),h.suffixLine){let r=t[n],a=r.slice(r.indexOf("}")+1);i.push(...e([a]).map(e=>({...e,startLine:n+1,endLine:n+1})))}continue}n=r[n];let u=l((/^service\s+[\w-]+\s*["']/.test(d)?t.slice(a,n+1).join(`
|
|
10
|
+
`))),l.title&&f.push(e.text({id:"title",role:"title",text:l.title.text,x:l.title.x,y:l.title.y,fontSize:18,block:l.title.block,anchor:"middle",fontWeight:600,paint:{fill:"var(--arch-service-label, var(--_text))"},attributes:{className:"architecture-title"}})),l.groups))f.push(function e(t,i,r,n){let a=[],o=`<g class="architecture-group" data-id="${H(i.id)}" data-label="${O(i.label)}">`;a.push({indent:2,node:t.shape({id:`group-frame:${i.id}`,role:"group",geometry:{kind:"rect",x:i.x,y:i.y,width:i.width,height:i.height,rx:r.groupCornerRadius,ry:r.groupCornerRadius},paint:{fill:"var(--arch-group-fill, color-mix(in srgb, var(--_node-fill) 82%, var(--bg)))",stroke:"none"},attributes:{className:"architecture-group-frame"}})});let s=K(i.x,i.y,i.width,i.headerHeight??r.groupHeaderHeight,r.groupCornerRadius);a.push({indent:2,node:t.shape({id:`group-band:${i.id}`,role:"group-header",geometry:{kind:"path",d:s},paint:{fill:"var(--arch-group-band, color-mix(in srgb, var(--arch-edge-stroke, var(--_arrow)) 5%, var(--arch-group-fill, var(--bg))))",stroke:"none"},attributes:{className:"architecture-group-band"}})}),a.push({indent:2,node:t.shape({id:`group-outline:${i.id}`,role:"group",geometry:{kind:"rect",x:i.x,y:i.y,width:i.width,height:i.height,rx:r.groupCornerRadius,ry:r.groupCornerRadius},paint:{fill:"none",stroke:"var(--arch-group-stroke, var(--_node-stroke))",strokeWidth:String(r.groupLineWidth)},attributes:{className:"architecture-group-outline"}})}),i.icon&&a.push({indent:0,node:eK(t,i.x+10,i.y+6,r.iconSize,i.icon,!0,`icon:${i.id}`,{id:i.id,role:"group"},i.iconFallbackBlock)});let l=i.labelBlock??V(i.label,{display:"formatted",transform:r.groupTextTransform,fontSize:r.groupFontSize,fontWeight:r.groupFontWeight,letterSpacing:r.groupLetterSpacing,fontFamily:r.groupFont}),d=l.text,c=i.x+(i.icon?36:r.groupLabelPaddingX),h=i.y+(i.headerHeight??r.groupHeaderHeight)/2;for(let o of(a.push({indent:2,node:t.text({id:`group-label:${i.id}`,role:"label",text:d,x:c,y:h,fontSize:r.groupFontSize,block:l,anchor:"start",paint:{fill:n.group},attributes:{className:"architecture-group-label"}})}),i.children))a.push({indent:0,node:e(t,o,r,n)});return t.group({id:`group:${i.id}`,role:"group",open:o,close:"</g>",children:a})}(e,t,p,x));let L=new Map;for(let t of l.edges){let i=`${t.source.id}->${t.target.id}`,r=L.get(i)??0;L.set(i,r+1),f.push(function(e,t,i,r){let n=t.hasArrowStart?eu[1]:void 0,a=t.hasArrowEnd?eu[0]:void 0,o={className:"architecture-edge",data:{"from-side":t.source.side,"to-side":t.target.side,"from-boundary":t.source.boundary,"to-boundary":t.target.boundary,...t.label?{label:Z(t.label)}:{}}},s={stroke:"var(--arch-edge-stroke, var(--_line))",strokeWidth:String(i.edgeLineWidth),strokeLinejoin:"round"},l={endpoints:{from:t.source.id,to:t.target.id},relationship:{kind:"architecture-edge"},route:{ownership:"layout",bendRadius:i.edgeBendRadius,labelAnchors:t.labelPosition?[t.labelPosition]:[]},labels:t.label?[{text:t.label,...t.labelPosition?{anchor:t.labelPosition}:{}}]:[],attributes:o};if(i.edgeBendRadius>0&&t.points.length>2){let o=J(t.points,i.edgeBendRadius,{terminalClearance:{start:eg(n?.id,i.edgeLineWidth,"start"),end:eg(a?.id,i.edgeLineWidth,"end")},metric:"manhattan"});return e.connector({id:r,role:"edge",geometry:o.geometry,lineStyle:"solid",paint:s,markers:{...n?{start:n}:{},mid:[],...a?{end:a}:{}},...l,route:{...l.route,contours:o.contours}})}return e.connector({id:r,role:"edge",geometry:{kind:"polyline",points:t.points},lineStyle:"solid",paint:s,markers:{...n?{start:n}:{},mid:[],...a?{end:a}:{}},...l})}(e,t,p,`edge:${i}#${r}`))}let z=new Map;for(let t of l.edges){if(!t.label)continue;let i=`${t.source.id}->${t.target.id}`,r=z.get(i)??0;for(let n of(z.set(i,r+1),function(e,t,i,r){let n=t.labelBlock??V(t.label,{display:"formatted",transform:i.edgeTextTransform,fontSize:i.edgeFontSize,fontWeight:i.edgeFontWeight,letterSpacing:i.edgeLetterSpacing}),a=n.text,o=t.labelPosition??eJ(t.points),s=n.width+14,l=n.height+14;return[e.shape({id:`${r}:bg`,role:"chrome",geometry:{kind:"rect",x:o.x-s/2,y:o.y-l/2,width:s,height:l,rx:0,ry:0},paint:{fill:"color-mix(in srgb, var(--bg) 90%, var(--_group-hdr))",stroke:"color-mix(in srgb, var(--arch-edge-stroke, var(--_line)) 18%, var(--bg))",strokeWidth:"0.75"},attributes:{className:"architecture-edge-label-bg"}}),e.text({id:r,role:"label",text:a,x:o.x,y:o.y,fontSize:i.edgeFontSize,block:n,anchor:"middle",paint:{fill:"var(--arch-edge-label, var(--_text-muted))"},attributes:{className:"architecture-edge-label-text"}})]}(e,t,p,`edge-label:${i}#${r}`)))f.push(n)}for(let t of l.junctions)f.push(function(e,t,i){let r=t.x+t.width/2,n=t.y+t.height/2,a=e.shape({id:`junction-ring:${t.id}`,role:"junction",geometry:{kind:"circle",cx:r,cy:n,r:t.width/2},paint:{fill:"var(--bg)",stroke:"var(--arch-edge-stroke, var(--_arrow))",strokeWidth:"1.25"},attributes:{className:"architecture-junction-ring"}}),o=e.shape({id:`junction-core:${t.id}`,role:"junction",geometry:{kind:"circle",cx:r,cy:n,r:i.junctionInnerRadius},paint:{fill:"color-mix(in srgb, var(--arch-edge-stroke, var(--_arrow)) 24%, var(--bg))",stroke:"var(--arch-edge-stroke, var(--_arrow))",strokeWidth:"0.75"},attributes:{className:"architecture-junction-core"}});return e.group({id:`junction:${t.id}`,role:"junction",open:`<g class="architecture-junction" data-id="${H(t.id)}">`,close:"</g>",children:[{indent:2,node:a},{indent:2,node:o}]})}(e,t,p));for(let t of l.services)f.push(function(e,t,i,r){let n=[],a=!!t.icon,o=void 0===t.iconText?void 0:t.iconTextBlock??V(t.iconText,{display:"literal",fontSize:i.serviceFontSize,fontWeight:700}),s=t.x+i.servicePaddingX,l=t.y+t.height/2-i.serviceIconSize/2,d=t.labelPosition?.x??(o?s+o.width+10*!!o.width:a?s+i.serviceIconSize+Math.max(10,.7*i.servicePaddingX):t.x+i.servicePaddingX),c=`<g class="architecture-service" data-id="${H(t.id)}" data-label="${O(t.label)}">`;n.push({indent:2,node:e.shape({id:`service-card:${t.id}`,role:"service",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.height,rx:i.serviceCornerRadius,ry:i.serviceCornerRadius},paint:{fill:"var(--arch-service-fill, color-mix(in srgb, var(--_node-fill) 92%, var(--bg)))",stroke:"none"},attributes:{className:"architecture-service-card"}})}),n.push({indent:2,node:e.shape({id:`service-outline:${t.id}`,role:"service",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.height,rx:i.serviceCornerRadius,ry:i.serviceCornerRadius},paint:{fill:"none",stroke:"var(--arch-service-stroke, var(--_node-stroke))",strokeWidth:String(i.serviceLineWidth)},attributes:{className:"architecture-service-outline"}})}),t.icon&&n.push({indent:0,node:eK(e,s,l,i.serviceIconSize,t.icon,!1,`icon:${t.id}`,{id:t.id,role:"service"},t.iconFallbackBlock)}),o&&n.push({indent:2,node:e.text({id:`icon-text:${t.id}`,role:"icon",text:o.text,block:o,x:s,y:t.y+t.height/2,anchor:"start",fontSize:i.serviceFontSize,fontWeight:700,paint:{fill:r.service},attributes:{className:"architecture-icon-text"}})});let h=t.labelPosition?.y??t.y+t.height/2,u=t.labelBlock??V(t.label,{display:"formatted",transform:i.serviceTextTransform,fontSize:i.serviceFontSize,fontWeight:i.serviceFontWeight,letterSpacing:i.serviceLetterSpacing}),g=u.text;return n.push({indent:2,node:e.text({id:`service-label:${t.id}`,role:"label",text:g,x:d,y:h,fontSize:i.serviceFontSize,block:u,anchor:"start",paint:{fill:r.service},attributes:{className:"architecture-service-label"}})}),e.group({id:`service:${t.id}`,role:"service",open:c,close:"</g>",children:n})}(e,t,p,x));return f.push(e.documentClose()),{family:"architecture",width:l.width,height:l.height,colors:d,transparent:g,parts:f}}),e0=k(et,{configDiagnostics:e=>u("architecture",e,ei),statementEnds:eT,normalizeRequest:e=>{let t=function(e,t,i={},r){let n,a=el(e,"themeVariables"),o=el(e,"architecture"),s=ec(es(o,"fontSize")??es(e,"fontSize")??es(a,"fontSize")??en.serviceFontSize,10,24),l=ec(es(o,"iconSize")??en.serviceIconSize,12,40),d=ec(Math.round(l*(en.iconSize/en.serviceIconSize)),10,36),c=ec(Math.round(.92*s),10,22),h=ec(Math.round(.85*s),10,20),u=Math.max(en.groupHeaderHeight,Math.round(Math.max(c,d)+12)),g=ec(Math.round(.44*l),8,18),p=Number((.56*g).toFixed(1)),f=E(i,{nodeLabelFontSize:s,edgeLabelFontSize:h,groupHeaderFontSize:c,nodeLabelFontWeight:en.serviceFontWeight,edgeLabelFontWeight:en.edgeFontWeight,groupHeaderFontWeight:en.groupFontWeight,nodePaddingX:en.servicePaddingX,nodePaddingY:en.servicePaddingY,nodeCornerRadius:en.serviceCornerRadius,nodeLineWidth:en.serviceLineWidth,edgeLineWidth:en.edgeLineWidth,edgeBendRadius:en.edgeBendRadius,groupCornerRadius:en.groupCornerRadius,groupPaddingX:en.groupPaddingX,groupPaddingY:en.groupPaddingY,groupLabelPaddingX:en.groupLabelPaddingX,groupLineWidth:en.groupLineWidth},r),m={...{groupHeaderHeight:Math.max(u,f.groupHeaderFontSize+12),groupFontSize:f.groupHeaderFontSize,groupFontWeight:f.groupHeaderFontWeight,groupLetterSpacing:f.groupLetterSpacing,groupFont:f.groupFont,groupTextTransform:f.groupTextTransform,groupPaddingX:f.groupPaddingX,groupPaddingY:f.groupPaddingY,groupLabelPaddingX:f.groupLabelPaddingX,groupCornerRadius:f.groupCornerRadius,groupLineWidth:f.groupLineWidth,serviceFontSize:f.nodeLabelFontSize,serviceFontWeight:f.nodeLabelFontWeight,serviceLetterSpacing:f.nodeLetterSpacing,serviceTextTransform:f.nodeTextTransform,servicePaddingX:f.nodePaddingX,servicePaddingY:f.nodePaddingY,serviceCornerRadius:f.cornerRadius??0,serviceLineWidth:f.nodeLineWidth,edgeFontSize:f.edgeLabelFontSize,edgeFontWeight:f.edgeLabelFontWeight,edgeLetterSpacing:f.edgeLetterSpacing,edgeTextTransform:f.edgeTextTransform,edgeLineWidth:f.lineWidth,edgeBendRadius:f.edgeBendRadius,iconSize:d,serviceIconSize:l,junctionOuterRadius:g,junctionInnerRadius:p,groupSurface:f.groupFillColor??eo(a,"clusterBkg")??t.surface,groupHeaderSurface:f.groupHeaderFillColor,groupBorder:f.groupBorderColor??eo(a,"clusterBorder"),groupText:f.groupTextColor,serviceSurface:f.nodeFillColor??eo(a,"mainBkg","secondaryColor")??t.surface,serviceBorder:f.nodeBorderColor??eo(a,"primaryBorderColor"),serviceText:f.nodeTextColor,edgeStroke:f.edgeStrokeColor,edgeText:f.edgeTextColor},...i.architecture?.visual};if(m.junctionInnerRadius>m.junctionOuterRadius)throw RangeError("architecture.visual.junctionInnerRadius must not exceed junctionOuterRadius");return{visual:m,layout:ea(m),padding:void 0!==(n=ed(o?.padding))&&n>=0?n:void 0,nodeSpacing:function(e){let t=ed(e?.nodeSeparation);if(!(void 0===t||!Number.isFinite(t)||t<0))return ec(Math.round(t),0,512)}(o),layerSpacing:function(e){let t=ed(e?.idealEdgeLengthMultiplier);if(!(void 0===t||!Number.isFinite(t)||t<=0))return ec(Math.round(56*t/1.5),8,512)}(o)}}(e.source.frontmatter,e.colors,e.renderOptions,e.styleFace);return{renderOptions:{...e.renderOptions,padding:e.renderOptions.padding??t.padding,nodeSpacing:e.renderOptions.nodeSpacing??t.nodeSpacing,layerSpacing:e.renderOptions.layerSpacing??t.layerSpacing},familyConfig:{layout:t.layout},appearance:{family:{visual:t.visual}}}},layout:i=>{var s;let d,h,u=i.familyConfig;return w(function(i,s={},l){F(i);let d=l??ea(en),c=(e,t)=>V(e,{display:"formatted",transform:d[`${t}TextTransform`],fontSize:d[`${t}FontSize`],fontWeight:d[`${t}FontWeight`],letterSpacing:d[`${t}LetterSpacing`],fontFamily:"group"===t?d.groupFont:void 0}),h=new Map(i.services.map(e=>[e.id,c(e.label,"service")])),u=new Map(i.groups.map(e=>[e.id,c(e.label,"group")])),g=i.edges.map(e=>void 0===e.label?void 0:c(e.label,"edge")),p=function(e){var t;let i,r;F(e);let n=new Map;for(let t of e.services)n.set(t.id,{id:t.id,label:t.label,shape:t.icon?"service":"rectangle"});for(let t of e.junctions)n.set(t.id,{id:t.id,label:"",shape:"state-start"});return{direction:function(e){let t=0,i=0;for(let r of e)"L"===r.source.side||"R"===r.source.side?t++:i++,"L"===r.target.side||"R"===r.target.side?t++:i++;return t>=i?"LR":"TD"}(e.edges),nodes:n,edges:e.edges.map(e=>({source:e.source.id,target:e.target.id,label:e.label,style:"solid",hasArrowStart:e.hasArrowStart,hasArrowEnd:e.hasArrowEnd})),subgraphs:(i=new Map((t=e.groups).map(e=>[e.id,e])),r=new Set,t.filter(e=>!e.parentId).map(e=>(function e(t,n){if(r.has(t))throw TypeError("Architecture groups must form a tree without repeated groups");r.add(t),z("nesting",n);let a=[],o=[];for(let r of t.children)if("group"===r.kind){let t=i.get(r.id);t&&o.push(e(t,n+1))}else a.push(r.id);return{id:t.id,label:t.label,nodeIds:a,children:o,...t.icon?{titleOffset:36}:{}}})(e,1))),classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,linkStyles:new Map}}(i),f=s.architecture?.visual?.groupHeaderHeight;if(void 0!==f&&(!Number.isFinite(f)||f<=0))throw RangeError("Invalid Architecture group-header minimum");let m=void 0===f?void 0:Math.max(18,d.groupPaddingY),x=2*(d.junctionOuterRadius??en.junctionOuterRadius);for(let[e,t]of h)p.nodes.get(e).label=t.text;let y=new Map(i.services.filter(e=>void 0!==e.iconText).map(e=>[e.id,V(e.iconText,{display:"literal",fontSize:d.serviceFontSize,fontWeight:700})]));for(let[e,t]of y){let i=h.get(e);p.nodes.get(e).labelBlock={...i,width:i.width+t.width+10*!!t.width,height:Math.max(i.height,t.height)}}let v=e=>{e.label=u.get(e.id).text,void 0!==f&&(e.headerMinHeight=f),e.children.forEach(v)};p.subgraphs.forEach(v),p.edges.forEach((e,t)=>{e.label=g[t]?.text});let b={nodeSizes:new Map(i.junctions.map(e=>[e.id,{width:x+12,height:x+12}])),padding:s.padding??40,nodeSpacing:s.nodeSpacing??36,layerSpacing:s.layerSpacing??56,compareRoutePreferences:!1,styleFace:l?{node:{fontSize:l.serviceFontSize,fontWeight:l.serviceFontWeight,letterSpacing:l.serviceLetterSpacing,textTransform:void 0,paddingX:l.servicePaddingX,paddingY:l.servicePaddingY,cornerRadius:l.serviceCornerRadius,lineWidth:l.serviceLineWidth},edge:{fontSize:l.edgeFontSize,fontWeight:l.edgeFontWeight,letterSpacing:l.edgeLetterSpacing,textTransform:void 0,lineWidth:l.edgeLineWidth,bendRadius:l.edgeBendRadius},group:{fontSize:l.groupFontSize,fontWeight:l.groupFontWeight,letterSpacing:l.groupLetterSpacing,fontFamily:l.groupFont,textTransform:void 0,paddingX:l.groupPaddingX,paddingY:l.groupPaddingY,cornerRadius:l.groupCornerRadius,lineWidth:l.groupLineWidth}}:void 0},w=new Map(i.services.map(e=>[e.id,e])),k=new Map(i.groups.map(e=>[e.id,e])),S=new Map(i.junctions.map(e=>[e.id,e])),M=(e,t)=>{let c=[],p=[],f=new Map,v=new Map;for(let t of e.nodes)if(w.has(t.id)){let e=w.get(t.id),i={x:t.x,y:t.y,width:t.width,height:t.height,id:e.id,label:e.label,labelBlock:h.get(e.id),...void 0!==e.iconText?{iconText:e.iconText,iconTextBlock:y.get(e.id)}:{},iconFallbackBlock:em(e.icon,d.serviceIconSize??en.serviceIconSize),icon:e.icon,parentId:e.parentId};c.push(i),f.set(t.id,i)}else if(S.has(t.id)){let e=S.get(t.id),i={x:t.x+(t.width-x)/2,y:t.y+(t.height-x)/2,width:x,height:x,id:e.id,parentId:e.parentId};p.push(i),v.set(t.id,i)}let b=new Map(i.services.map((e,t)=>[e.id,t]));c.sort((e,t)=>!!e.parentId-!!t.parentId||(b.get(e.id)??0)-(b.get(t.id)??0)),function(e,t,i,r){let n=new Map;for(let e of t)n.set(e.id,e);for(let e of i)n.set(e.id,e);let a=new Set(e.alignments.filter(e=>"row"===e.axis).flatMap(e=>e.members));for(let t of[...e.alignments.filter(e=>"row"===e.axis),...e.alignments.filter(e=>"column"===e.axis)]){let e=t.members.map(e=>n.get(e)).filter(e=>void 0!==e);if(!(e.length<2))if("row"===t.axis){let t=Math.min(...e.map(e=>e.y+e.height/2)),i=Math.min(...e.map(e=>e.x));for(let n of e)n.x=i,n.y=t-n.height/2,i+=n.width+r}else{let t=Math.min(...e.map(e=>e.x+e.width/2)),i=e.every(e=>!a.has(e.id)),n=Math.min(...e.map(e=>e.y));for(let a of e)a.x=t-a.width/2,i&&(a.y=n,n+=a.height+r)}}let o=new Map,s=e=>{let t=o.get(e)??e;if(t===e)return o.set(e,e),e;let i=s(t);return o.set(e,i),i},l=(e,t)=>{let i=s(e),r=s(t);i!==r&&o.set(r,i)};for(let t of e.alignments)if("column"===t.axis)for(let e=1;e<t.members.length;e++)l(t.members[0],t.members[e]);let d=new Map,c=e=>{let t=d.get(e)??e;if(t===e)return d.set(e,e),e;let i=c(t);return d.set(e,i),i},h=(e,t)=>{let i=c(e),r=c(t);i!==r&&d.set(r,i)};for(let t of e.alignments)if("row"===t.axis)for(let e=1;e<t.members.length;e++)h(t.members[0],t.members[e]);if(e.alignments.length){let e=new Map;for(let t of n.values()){let i=c(t.id),r=s(t.id),n=e.get(i);n||(n=new Map,e.set(i,n));let a=n.get(r);if(void 0!==a)throw new N([{strategy:"architecture-alignments",violations:[`incompatible row and column constraints tie distinct items ${a} and ${t.id}`]}]);n.set(r,t.id)}}if(e.alignments.length)for(let e of["row","column"]){let t="row"===e?c:s,i=new Map;for(let r of n.values()){let n=t(r.id),a="row"===e?r.y+r.height/2:r.x+r.width/2;i.set(n,Math.min(i.get(n)??1/0,a))}for(let r of n.values()){let n=i.get(t(r.id));.001>=Math.abs(("row"===e?r.y+r.height/2:r.x+r.width/2)-n)||("row"===e?r.y=n-r.height/2:r.x=n-r.width/2)}}if(e.alignments.length)for(let e of["row","column"]){let t="row"===e?c:s,i="row"===e?s:c,a="row"===e?"x":"y",o="row"===e?"width":"height",l=new Map,d=new Map;for(let e of n.values()){let r=i(e.id),n=t(e.id),a=l.get(r)??[];a.push(e),l.set(r,a);let o=d.get(n)??[];o.push(e),d.set(n,o)}let h=new Map,u=new Map;for(let[e,t]of l)h.set(e,Math.min(...t.map(e=>e[a]+e[o]/2))),u.set(e,t.map(e=>e.id).sort(G)[0]);let g=[...l.keys()].sort((e,t)=>h.get(e)-h.get(t)||G(u.get(e),u.get(t))),p=new Map(g.map((e,t)=>[e,t])),f=new Map;for(let e of d.values()){e.sort((e,t)=>p.get(i(e.id))-p.get(i(t.id)));for(let t=1;t<e.length;t++){let r=e[t-1],n=e[t],a=i(n.id),o=f.get(a)??[];o.push({before:r,after:n}),f.set(a,o)}}for(let e of g){let t=0;for(let{before:i,after:n}of f.get(e)??[])t=Math.max(t,i[a]+i[o]+r-n[a]);if(t>0)for(let i of l.get(e))i[a]+=t}}for(let t=0;t<2;t++)for(let t of e.alignments){if("row"!==t.axis)continue;let e=t.members.map(e=>n.get(e)).filter(e=>void 0!==e);if(e.length<2)continue;let i=c(e[0].id),a=Math.min(...e.map(e=>e.x)),o=Math.max(...e.map(e=>e.x+e.width)),s=Math.min(...e.map(e=>e.y)),l=Math.max(...e.map(e=>e.y+e.height));for(let e of n.values()){if(c(e.id)===i||!(e.x<o&&e.x+e.width>a&&e.y<l&&e.y+e.height>s))continue;let t=c(e.id),d=[...n.values()].filter(e=>c(e.id)===t),h=l+r-Math.min(...d.map(e=>e.y));for(let e of d)e.y+=h}}}(i,c,p,s.nodeSpacing??36);let M=new Map,$=e.groups.map(e=>(function e(t,i,r){let n=i.get(t.id),a={id:t.id,label:n?.label??t.id,icon:n?.icon,parentId:n?.parentId,x:t.x,y:t.y,width:t.width,height:t.height,headerHeight:t.headerHeight,children:t.children.map(t=>e(t,i,r))};return r.set(a.id,a),a})(e,k,M));for(let e of M.values())e.labelBlock=u.get(e.id),e.iconFallbackBlock=em(e.icon,d.iconSize??en.iconSize);eA($,c,p,i.alignments.length>0,m);let L,z=function(e,t,i,r,n,a,o,s,l,d,c,h){let u=!1,g=(e,t)=>`${e}:${t}`,p=e=>{let t=e.indexOf(":");return{kind:e.slice(0,t),id:e.slice(t+1)}},f=e=>{let t=[],i=e;for(;i;)t.push(g("group",i)),i=o.get(i)?.parentId;return t.reverse()},m=(e,t="item")=>{let i=a.get(e);if(i){let r=f(i.parentId);return"group"===t?r:[...r,g("service",e)]}let r=s.get(e);return r?[...f(r.parentId),g("junction",e)]:null},x=[];for(let t of e.edges){let e=m(t.source.id,t.source.boundary),i=m(t.target.id,t.target.boundary);if(!e||!i)continue;let r=0;for(;r<e.length&&r<i.length&&e[r]===i[r];)r++;if(r>=e.length||r>=i.length)continue;let n=0===r?void 0:p(e[r-1]).id,a=e[r],o=i[r],s=(e,t,i)=>{let a="L"===i||"R"===i?"x":"y",o="R"===i||"B"===i;x.push({axis:a,parentId:n,before:o?e:t,after:o?t:e,depth:r})};s(a,o,t.source.side),s(o,a,t.target.side)}let y=t=>t?o.get(t)?.children??[]:e.rootChildren,v=e=>{let{kind:t,id:i}=p(e);return"group"===t?r.get(i):"service"===t?l.get(i):d.get(i)},b=(e,t,i)=>{if(.001>=Math.abs(i))return;let{kind:n,id:a}=p(e);if("group"!==n){let e="service"===n?l.get(a):d.get(a);e&&(e[t]+=i);return}let s=e=>{let n=r.get(e);for(let r of(n&&(n[t]+=i),o.get(e)?.children??[]))"group"===r.kind?s(r.id):b(g(r.kind,r.id),t,i)};s(a)},w=[...r.values()].filter(e=>!e.parentId),k=e=>y(e).map(e=>g(e.kind,e.id)).filter(e=>void 0!==v(e)),S=(t,i,r)=>{let n=new Map(t.map(e=>[e,e])),a=e=>{let t=n.get(e)??e;if(t===e)return e;let i=a(t);return n.set(e,i),i};for(let t of e.alignments){if(t.axis!==r)continue;let e=t.members.map(e=>{let t=m(e);if(!t)return;if(!i)return t[0];let r=t.indexOf(g("group",i));return r>=0?t[r+1]:void 0}).filter(e=>void 0!==e&&n.has(e));for(let t of e.slice(1))n.set(a(t),a(e[0]))}let o=new Map;for(let e of t){let t=a(e),i=o.get(t)??[];i.push(e),o.set(t,i)}return{find:a,members:o,bounds:e=>{let t=o.get(e).map(e=>v(e)),i=Math.min(...t.map(e=>e.x)),r=Math.min(...t.map(e=>e.y));return{x:i,y:r,width:Math.max(...t.map(e=>e.x+e.width))-i,height:Math.max(...t.map(e=>e.y+e.height))-r}}}},M=new Map;for(let e of x){let t=`${e.depth}:${e.parentId??""}:${e.axis}`,i=M.get(t)??[];i.push(e),M.set(t,i)}for(let e of[...M.values()].sort((e,t)=>t[0].depth-e[0].depth||G(e[0].parentId??"",t[0].parentId??"")||G(e[0].axis,t[0].axis))){let{axis:r,parentId:a}=e[0],o=k(a);if(o.length<2)continue;let{find:s,members:l,bounds:d}=S(o,a,"x"===r?"column":"row"),c=new Map,g=!1;for(let t of e){let e=s(t.before),i=s(t.after);if(e===i){g=!0;break}let r=c.get(e)??new Set;r.add(i),c.set(e,r)}if(g)continue;let p=[...l.keys()],f=(e,t)=>{let i=d(e),a=d(t);return"x"===r?i.x+i.width+n<=a.x+.001:i.y+i.height+n<=a.y+.001};if([...c].every(([e,t])=>[...t].every(t=>f(e,t))))continue;let m=new Map(p.map(e=>[e,0]));for(let e of c.values())for(let t of e)m.set(t,(m.get(t)??0)+1);let x=[];for(;x.length<p.length;){let e=p.filter(e=>!x.includes(e)&&0===m.get(e)).sort((e,t)=>{let i=d(e),n=d(t);return("x"===r?i.x-n.x:i.y-n.y)||G(e,t)});if(0===e.length)break;let t=e[0];for(let e of(x.push(t),c.get(t)??[]))m.set(e,m.get(e)-1)}if(x.length!==p.length)continue;let y=Math.min(...p.map(d).map(e=>"x"===r?e.x:e.y));for(let e of x){let t=d(e),i=y-("x"===r?t.x:t.y);for(let t of(Math.abs(i)>.001&&(u=!0),l.get(e)))b(t,r,i);y+=("x"===r?t.width:t.height)+n}eA(w,t,i,!0,h)}let $=!1;for(let t of e.alignments){let e="row"===t.axis?"y":"x",i="y"===e?"height":"width",r=[...new Set(t.members)].flatMap(e=>{let t=m(e),i=l.get(e)??d.get(e);return t&&i?[{path:t,item:i}]:[]}),n=(t,r)=>{if(t.length<2)return;let a=Math.min(...t.map(e=>e.path.length));for(;r<a&&t.every(e=>e.path[r]===t[0].path[r]);)r++;if(r>=a)return;let o=new Map;for(let e of t){let t=e.path[r],i=o.get(t)??[];i.push(e),o.set(t,i)}for(let e of o.values())n(e,r+1);let s=Math.max(...t.map(t=>t.item[e]+t.item[i]/2));for(let[t,r]of o){let n=s-(r[0].item[e]+r[0].item[i]/2);n>.001&&(b(t,e,n),$=u=!0)}};n(r,0)}$&&eA(w,t,i,!0,h);let L=[...e.groups.map(e=>({parentId:e.id,depth:f(e.id).length})),{parentId:void 0,depth:0}].sort((e,t)=>t.depth-e.depth||G(e.parentId??"",t.parentId??"")),z=(e,t)=>e.x<t.x+t.width-.001&&t.x<e.x+e.width-.001&&e.y<t.y+t.height-.001&&t.y<e.y+e.height-.001;for(let e of L){let r=k(e.parentId);if(r.length<2)continue;let{members:a,bounds:o}=S(r,e.parentId,"row"),{find:s,members:l}=S(r,e.parentId,"column");for(let e=0;e<r.length;e++){let e=!1;for(let t of a.values()){let i=[...t].sort((e,t)=>v(e).x-v(t).x||G(e,t)),r=-1/0,a=new Set;for(let t of i){let i=s(t);if(a.has(i))continue;a.add(i);let o=v(t);if(o.x<r-.001){let t=r-o.x;for(let e of l.get(i))b(e,"x",t);e=u=!0}r=o.x+o.width+n}}if(!e)break}let d=[...a.keys()].sort((e,t)=>{let i=o(e),r=o(t);return i.y-r.y||i.x-r.x||G(e,t)}),c=[];for(let e of d){for(let t=0;t<=c.length;t++){let t=o(e),i=c.map(o).filter(e=>z(t,e));if(0===i.length)break;let r=Math.max(...i.map(e=>e.y+e.height+n))-t.y;for(let t of a.get(e))b(t,"y",r);u=!0}c.push(e)}eA(w,t,i,!0,h)}return c?.(()=>x.every(({axis:e,before:t,after:i})=>{let r=v(t),a=v(i);return r[e]+("x"===e?r.width:r.height)+n<=a[e]+.001})&&(void 0===h||[...r.values()].every(e=>y(e.id).every(t=>{let i=v(g(t.kind,t.id));return void 0===i||i.y>=e.y+e.headerHeight+h})))&&L.every(e=>{let t=y(e.parentId).map(e=>v(g(e.kind,e.id))).filter(e=>void 0!==e);return t.every((e,i)=>t.slice(i+1).every(t=>!z(e,t)))})),u}(i,c,p,M,s.nodeSpacing??36,w,k,S,f,v,t?e=>{L=e}:void 0,m);if(z&&eA($,c,p,!0,m),i.alignments.length){let e=new Map([...c,...p].map(e=>[e.id,e])),t=i.alignments.flatMap(t=>{let i=t.members.map(i=>{let r=e.get(i);return"row"===t.axis?r.y+r.height/2:r.x+r.width/2});return Math.max(...i)-Math.min(...i)<=.001?[]:[`${t.axis} alignment lost for ${t.members.join(", ")}`]});if(t.length)throw new N([{strategy:"architecture-final-alignments",violations:t}])}let F=()=>i.edges.map(e=>(function(e,t,i,r,n,a,s,l,d){let c=eD(e.source,t,i,r,n,l.start?l.start+d:0),h=eD(e.target,t,i,r,n,l.end?l.end+d:0),u=function(e,t,i,r,n){let a=new Set,o=e=>{let t=e;for(;t&&!a.has(t);)a.add(t),t=i.get(t)?.parentId};o(t.get(e.source.id)?.parentId??n.get(e.source.id)?.parentId),o(t.get(e.target.id)?.parentId??n.get(e.target.id)?.parentId);let s=(e,t,i)=>({id:e,kind:t,x:i.x-6,y:i.y-6,width:i.width+12,height:i.height+12}),l=[];for(let t of r)t.id===e.source.id||t.id===e.target.id||l.push(s(t.id,"service",t));for(let t of n.values())t.id===e.source.id||t.id===e.target.id||l.push(s(t.id,"junction",t));for(let e of i.values())if(a.has(e.id)){let t=eX(e);t&&l.push(t)}else l.push(s(e.id,"group",e));return l}(e,t,n,a,s);for(let a of[e.source,e.target]){let e="group"===a.boundary?n.get(t.get(a.id).parentId):void 0,o=e??i.get(a.id)??r.get(a.id);u.push({...o,id:e?.id??a.id,kind:e?"group":i.has(a.id)?"service":"junction"})}for(let[t,i]of[[c,e.source.side],[h,e.target.side]]){let e="L"===i||"R"===i,r="R"===i||"B"===i,n=Math.abs(e?t.exit.x-t.anchor.x:t.exit.y-t.anchor.y);for(let i of u){let a=e?t.anchor.y:t.anchor.x,o=e?i.y:i.x,s=e?i.height:i.width;if(a<=o+.001||a>=o+s-.001)continue;let l=((e?i.x+(r?0:i.width):i.y+(r?0:i.height))-(e?t.anchor.x:t.anchor.y))*(r?1:-1);l>.001&&(n=Math.min(n,l))}t.exit=eU(t.anchor,i,n)}let g=eZ([c.exit,...function(e,t,i,r){if(e.x===t.x||e.y===t.y)return[];let n=eV(i);if(n!==eV(r))return"horizontal"===n?[{x:t.x,y:e.y}]:[{x:e.x,y:t.y}];if("horizontal"===n){let i=(e.x+t.x)/2;return[{x:i,y:e.y},{x:i,y:t.y}]}let a=(e.y+t.y)/2;return[{x:e.x,y:a},{x:t.x,y:a}]}(c.exit,h.exit,e.source.side,e.target.side),h.exit]),p=eO(g,u)?g:function(e,t,i){let r=[...new Set([e.x,t.x,...i.flatMap(e=>[e.x,e.x+e.width])])].sort((e,t)=>e-t),n=[...new Set([e.y,t.y,...i.flatMap(e=>[e.y,e.y+e.height])])].sort((e,t)=>e-t),a=[],o=new Map,s=(e,t)=>`${e}\0${t}`,l=(e,t)=>i.some(i=>{let r=.001*("group-header"!==i.kind);return e>i.x+r&&e<i.x+i.width-r&&t>i.y+r&&t<i.y+i.height-r});for(let i of n)for(let n of r)l(n,i)&&(n!==e.x||i!==e.y)&&(n!==t.x||i!==t.y)||(o.set(s(n,i),a.length),a.push({x:n,y:i}));let d=o.get(s(e.x,e.y)),c=o.get(s(t.x,t.y));if(void 0===d||void 0===c)return null;let h=a.map(()=>[]),u=(e,t)=>{for(let r=1;r<e.length;r++){let n=e[r-1],o=e[r],s=a[n],l=a[o];if(i.some(e=>eN(s,l,e)))continue;let d=Math.abs(s.x-l.x)+Math.abs(s.y-l.y);h[n].push({point:o,direction:t,length:d}),h[o].push({point:n,direction:t,length:d})}};for(let e of n)u(a.map((e,t)=>({point:e,index:t})).filter(t=>t.point.y===e).sort((e,t)=>e.point.x-t.point.x).map(e=>e.index),1);for(let e of r)u(a.map((e,t)=>({point:e,index:t})).filter(t=>t.point.x===e).sort((e,t)=>e.point.y-t.point.y).map(e=>e.index),2);let g=3*a.length,p=Array(g).fill(1/0),f=Array(g).fill(-1),m=3*d;p[m]=0;let x=new eY;x.push({state:m,cost:0});let y=-1;for(;;){let e=x.pop();if(!e)break;if(e.cost!==p[e.state])continue;let t=Math.floor(e.state/3),i=e.state%3;if(t===c){y=e.state;break}for(let r of h[t]){let t=3*r.point+r.direction,n=8*(0!==i&&i!==r.direction),a=e.cost+r.length+n;a>=p[t]||(p[t]=a,f[t]=e.state,x.push({state:t,cost:a}))}}if(y<0)return null;let v=[];for(let e=y;e>=0&&(v.push(a[Math.floor(e/3)]),e!==m);e=f[e]);return eZ(v.reverse())}(c.exit,h.exit,u)??g,f=eZ([c.anchor,...p,h.anchor]),m=o(f,l);m&&m!==f&&eO(m,u)&&(f=m);let x=eH(c.anchor,e.source.side,h.anchor),y=eH(h.anchor,e.target.side,c.anchor);return{source:e.source,target:e.target,label:e.label,hasArrowStart:e.hasArrowStart,hasArrowEnd:e.hasArrowEnd,points:f,labelPosition:e.label?eJ(f):void 0,placement:x&&y?"satisfied":"conflicted",sourceFacesTarget:x,targetFacesSource:y,obstacleFree:eO(f,u)}})(e,w,f,v,M,c,v,{start:e.hasArrowStart?eg("architecture-arrow-start",d.edgeLineWidth,"start"):0,end:e.hasArrowEnd?eg("architecture-arrow-end",d.edgeLineWidth,"end"):0},d.edgeBendRadius)),I=F();L&&(I=r(i,c,I,F,L,e=>{let t=e.map(({points:e})=>({points:e,style:"solid",source:"",target:"_"}));return n(t)||a(t)})),I.forEach((e,t)=>{e.labelBlock=g[t]}),function(e,t,i){let r=i?.edgeFontSize??11,n=i?.edgeFontWeight??400,a=(e,t,a)=>{let o=e.labelBlock??V(e.label,{display:"formatted",fontSize:r,fontWeight:n,letterSpacing:i?.edgeLetterSpacing}),s=o.width+12,l=o.height+12;return{x0:t-s/2,y0:a-l/2,x1:t+s/2,y1:a+l/2}},o=(e,t)=>Math.min(e.x1,t.x1)-Math.max(e.x0,t.x0)>.5&&Math.min(e.y1,t.y1)-Math.max(e.y0,t.y0)>.5,s=t.map(e=>({x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+e.height})),l=e.filter(e=>e.label&&e.labelPosition&&e.points.length>=2),d=[];for(let e of l){let t=a(e,e.labelPosition.x,e.labelPosition.y),i=e=>d.some(t=>o(e,t))||s.some(t=>o(e,t));if(!i(t)){d.push(t);continue}let r=e.points,n=[],l=0;for(let e=1;e<r.length;e++){let t=Math.hypot(r[e].x-r[e-1].x,r[e].y-r[e-1].y);n.push(t),l+=t}let c=e=>{let t=e;for(let e=0;e<n.length;e++){if(t<=n[e]||e===n.length-1){let i=0===n[e]?0:Math.max(0,Math.min(1,t/n[e]));return{x:r[e].x+(r[e+1].x-r[e].x)*i,y:r[e].y+(r[e+1].y-r[e].y)*i}}t-=n[e]}return r[r.length-1]},h=t;for(let t of[.5,.4,.6,.3,.7,.25,.75,.2,.8,.15,.85]){let r=c(l*t),n=a(e,r.x,r.y);if(!i(n)){e.labelPosition={x:r.x,y:r.y},h=n;break}}d.push(h)}}(I,c,l);let _=i.title?V(i.title,{display:"formatted",transform:l?.groupTextTransform,fontSize:18,fontWeight:600,safeFont:!0}):void 0,T=_?.text,R=_?_.height-(_.lineHeight-_.fontSize):0,W=e.width,j=e.height;if((i.alignments.length>0||z)&&(W=Math.max(80,...c.map(e=>e.x+e.width+40),...p.map(e=>e.x+e.width+40),...$.map(e=>e.x+e.width+40)),j=Math.max(80,...c.map(e=>e.y+e.height+40),...p.map(e=>e.y+e.height+40),...$.map(e=>e.y+e.height+40))),T){W=Math.max(W,_.width+80);let e=Math.max(0,11+R+11-Math.min(...c.map(e=>e.y),...p.map(e=>e.y),...[...M.values()].map(e=>e.y))),t=i=>{i.y+=e,i.children.forEach(t)};for(let i of($.forEach(t),c))i.y+=e;for(let t of p)t.y+=e;for(let t of I){for(let i of t.points)i.y+=e;t.labelPosition&&(t.labelPosition.y+=e)}j=Math.max(j+e,11+R+20)}for(let e of I){for(let t of e.points)W=Math.max(W,t.x+40),j=Math.max(j,t.y+40);e.labelPosition&&(W=Math.max(W,e.labelPosition.x+72),j=Math.max(j,e.labelPosition.y+28))}for(let e of c){let t=e.x+d.servicePaddingX;e.labelPosition={x:e.iconTextBlock?t+e.iconTextBlock.width+10*!!e.iconTextBlock.width:e.icon?t+(d.serviceIconSize??en.serviceIconSize)+Math.max(10,.7*d.servicePaddingX):t,y:e.y+e.height/2}}let P=[...M.values()].flatMap(e=>{let t=eX(e);return t?[t]:[]}),B=I.flatMap(e=>P.filter(t=>!eO(e.points,[t])).map(t=>`edge ${e.source.id}->${e.target.id}: crosses group ${t.id} header`));if(void 0!==m)for(let e of M.values())for(let t of[...e.children,...c.filter(t=>t.parentId===e.id),...p.filter(t=>t.parentId===e.id)])t.y<e.y+e.headerHeight+m&&B.push(`group ${e.id}: child ${t.id} lacks reserved header clearance`);if(B.length)throw new N([{strategy:"architecture-final-headers",violations:B}]);return{width:W,height:j,...T?{title:{text:T,x:W/2,y:20+(R-18)/2,block:_}}:{},groups:$,services:c,junctions:p,edges:I,accessibilityTitle:i.accessibilityTitle,accessibilityDescription:i.accessibilityDescription}};return U(s,()=>M(t(p,b),!0),()=>M(e(p,{...b,preserveSubgraphChildOrder:!0}),!1),!0)}(g(L(function(e){if(0===e.length)throw Error("Empty mermaid diagram");if(!/^architecture(?:-beta)?\s*$/i.test(l(e[0])))throw Error(`Invalid mermaid header: "${e[0]}". Expected "architecture" or "architecture-beta".`);S("architecture")&&M("architecture","header",e[0],{line:1,unit:"normalized"});let t=new Map,i=new Map,r=new Map,n=[],a=[],o=[],s,d,h;for(let u of function e(t){let i=[],r=eT(t);for(let n=0;n<t.length;n++){let a=n,o=t[n],s=(e,r=t.slice(a,n+1))=>{i.push({...e,raw:r,startLine:a+1,endLine:n+1})},d=o.trim();if(!d||d.startsWith("%%")){s({kind:d?"comment":"blank"});continue}let h=R(t,n);if(void 0===h){let e=t.slice(n);n=t.length-1,s({kind:"invalid",error:Error("Unclosed accDescr block")},e);break}if(null!==h){n=h.endIndex;let r=t.slice(a,n+1);if(h.suffixLine&&(r[r.length-1]=r.at(-1).slice(0,r.at(-1).indexOf("}")+1)),s({kind:"accessibility",directive:h},r),h.suffixLine){let r=t[n],a=r.slice(r.indexOf("}")+1);i.push(...e([a]).map(e=>({...e,startLine:n+1,endLine:n+1})))}continue}n=r[n];let u=l((/^service\s+[\w-]+\s*["']/.test(d)?t.slice(a,n+1).join(`
|
|
11
11
|
`):c(t,a,n)).trim());try{let e=u.match(/^title\s+(.+)$/i),t=u.match(eS),i=u.match(eM),r=u.match(e$);if(e)s({kind:"title",value:e[1].trim()});else if(t)s({kind:"group",declaration:ej(t)});else if(i)s({kind:"service",declaration:ej(i)});else if(r)s({kind:"junction",id:r[1],parentId:r[2]});else if(ex.test(u)){let e=function(e){let t=e.trim().split(/\s+/),i=t[1];if("row"!==i&&"column"!==i)return{ok:!1,reason:`expected "align row" or "align column", got "${i??""}"`};let r=t.slice(2);if(r.length<2)return{ok:!1,reason:"an align directive needs at least two members"};let n=new Set;for(let e of r){if(!ey.test(e))return{ok:!1,reason:`align member "${e}" must match [A-Za-z0-9_-]+`};if(n.has(e))return{ok:!1,reason:`align member "${e}" is listed twice`};n.add(e)}return{ok:!0,alignment:{axis:i,members:r}}}(u);if(!e.ok)throw T({what:`Invalid architecture align directive "${u}" \u2014 ${e.reason}`,expectedForm:"align row|column memberA memberB ..., listing at least two distinct services or junctions",example:"align row db1 db2 db3"});s({kind:"align",alignment:e.alignment})}else{let e=u.match(eI);if(!e)throw T({what:`Invalid architecture edge: "${u}"`,expectedForm:"source:SIDE <op> SIDE:target, where SIDE is L, R, T, or B",example:"api:R --\x3e L:db"});s({kind:"edge",edge:{source:function(e){let t=e.trim().match(eL);if(!t)throw Error(`Invalid architecture edge source "${e}" \u2014 expected id then side, e.g. "api:R" in "api:R -- L:db"`);return{id:t[1],boundary:t[2]?"group":"item",side:t[3]}}(e[1]),target:function(e){let t=e.trim().match(ez);if(!t)throw Error(`Invalid architecture edge target "${e}" \u2014 expected side then id, e.g. "L:db" in "api:R -- L:db"`);return{id:t[2],boundary:t[3]?"group":"item",side:t[1]}}(e[3]),...function(e){let t=e.trim();if("<--\x3e"===t)return{hasArrowStart:!0,hasArrowEnd:!0};if("--\x3e"===t)return{hasArrowStart:!1,hasArrowEnd:!0};if("<--"===t)return{hasArrowStart:!0,hasArrowEnd:!1};if("--"===t)return{hasArrowStart:!1,hasArrowEnd:!1};let i=t.match(eF);if(!i)throw T({what:`Invalid architecture edge operator "${e}"`,expectedForm:"one of --, --\x3e, <--, <--\x3e, or -[label]-",example:"api:R --\x3e L:db"});return{label:eW(i[2]).trim()||void 0,hasArrowStart:!!i[1],hasArrowEnd:!!i[3]}}(e[2])}})}}catch(e){s({kind:"invalid",error:e instanceof Error?e:Error(String(e))})}}return i}(e.slice(1))){let e=l(u.raw.join(`
|
|
12
12
|
`).trim());if(S("architecture")&&M("architecture",u.kind,u.raw.join(`
|
|
13
13
|
`),{line:u.startLine+1,unit:"normalized"}),"invalid"===u.kind)throw u.error;if("blank"!==u.kind&&"comment"!==u.kind){if("accessibility"===u.kind){u.directive.title?d=A(u.directive.value):h=A(u.directive.value),S("architecture")&&$("architecture",u.directive.title?"setAccessibilityTitle":"setAccessibilityDescription",u.directive.title?d:h,{line:u.startLine+1,unit:"normalized"});continue}if("title"===u.kind){s=A(u.value),S("architecture")&&$("architecture","setTitle",s,{line:u.startLine+1,unit:"normalized"});continue}if("group"===u.kind){let a=u.declaration,{id:o,icon:s,parentId:l}=a,d=A(a.title);eP(o,t,i,r);let c={id:o,label:d,icon:s,parentId:l,children:[]};eB(l,t,e),t.set(o,c),S("architecture")&&$("architecture","addGroup",c,{line:u.startLine+1,unit:"normalized"}),eC({kind:"group",id:o},l,t,n),S("architecture")&&$("architecture","attachChild",{kind:"group",id:o,parentId:l},{line:u.startLine+1,unit:"normalized"});continue}if("service"===u.kind){let a=u.declaration,{id:o,icon:s,iconText:l,parentId:d}=a,c=A(a.title);eP(o,t,i,r);let h={id:o,label:c,icon:s,...void 0!==l?{iconText:l}:{},parentId:d};eB(d,t,e),i.set(o,h),S("architecture")&&$("architecture","addService",h,{line:u.startLine+1,unit:"normalized"}),eC({kind:"service",id:o},d,t,n),S("architecture")&&$("architecture","attachChild",{kind:"service",id:o,parentId:d},{line:u.startLine+1,unit:"normalized"});continue}if("junction"===u.kind){let{id:a,parentId:o}=u;eP(a,t,i,r);let s={id:a,parentId:o};eB(o,t,e),r.set(a,s),S("architecture")&&$("architecture","addJunction",s,{line:u.startLine+1,unit:"normalized"}),eC({kind:"junction",id:a},o,t,n),S("architecture")&&$("architecture","attachChild",{kind:"junction",id:a,parentId:o},{line:u.startLine+1,unit:"normalized"});continue}if("align"===u.kind){o.push(function(e,t,i,r,n){for(let a of e.members)if(!(r.has(a)||n.has(a)))throw i.has(a)?Error(`Architecture align members must be services or junctions; "${a}" is a group in line "${t}"`):T({what:`Unknown architecture align member "${a}" in line "${t}"`,expectedForm:"a service or junction declared earlier",example:`service ${a}(server)[${a}]`,known:[...r.keys(),...n.keys()]});return e}(u.alignment,e,t,i,r)),S("architecture")&&$("architecture","addAlignment",o.at(-1),{line:u.startLine+1,unit:"normalized"});continue}"edge"===u.kind&&(eE(u.edge.source,i,r,e),eE(u.edge.target,i,r,e),a.push({...u.edge,label:void 0===u.edge.label?void 0:A(u.edge.label)}),S("architecture")&&$("architecture","addEdge",a.at(-1),{line:u.startLine+1,unit:"normalized"}))}}return{title:s,groups:[...t.values()],services:[...i.values()],junctions:[...r.values()],edges:a,alignments:o,rootChildren:n,accessibilityTitle:d,accessibilityDescription:h}}((h=(d=(s=i.source).familyBody.split(/\r?\n/)).findIndex(e=>e.trim()===s.familyLines[0]),[d[h]?.trim()??s.familyLines[0]??"",...d.slice(h+1)])),i.source.accessibility),i.source.frontmatter),i.renderOptions,u?.layout),{injectAccessibility:!1})},projectPositioned:v(function({positioned:e,options:t}){let i=[...e.services.map(e=>({id:e.id,x:p(e.x),y:p(e.y),w:p(e.width),h:p(e.height),shape:"service",label:e.label,role:"box",...e.labelPosition?y(e.labelBlock,e.labelPosition.x,e.labelPosition.y,e,"start"):{}})),...e.junctions.map(e=>({id:e.id,x:p(e.x),y:p(e.y),w:p(e.width),h:p(e.height),shape:"circle",label:void 0,role:"mark"}))],r=new Map,n=[],a=t=>{for(let i of(r.set(t.id,t),n.push({id:t.id,x:p(t.x),y:p(t.y),w:p(t.width),h:p(t.height),members:[...e.services.filter(e=>e.parentId===t.id).map(e=>e.id),...e.junctions.filter(e=>e.parentId===t.id).map(e=>e.id)],label:t.label,parentId:t.parentId}),t.children))a(i)};for(let t of e.groups)a(t);let o=new Map(e.services.map(e=>[e.id,e])),s=new Map(e.junctions.map(e=>[e.id,e]));return{version:1,nodes:i,edges:e.edges.map((e,i)=>{let n,a,l,d,c,h,u,g;return{id:`edge#${i}:${e.source.id}->${e.target.id}`,from:e.source.id,to:e.target.id,path:e.points.map(e=>[p(e.x),p(e.y)]),label:e.label&&e.labelPosition?{x:p(e.labelPosition.x),y:p(e.labelPosition.y),text:e.label,bounds:x(e.labelBlock,e.labelPosition.x,e.labelPosition.y)}:void 0,route:t.debug?(a=(n=e=>{if("group"===e.boundary){let t=o.get(e.id);return t?.parentId?r.get(t.parentId):void 0}return o.get(e.id)??s.get(e.id)})(e.source),l=n(e.target),d=e.points[0],c=e.points[e.points.length-1],h=!!(d&&a&&er(d,a,e.source.side,1)),u=!!(c&&l&&er(c,l,e.target.side,1)),g=f(e.points),{family:"architecture",edgeIndex:i,routeClass:"family-layout",invariant:h&&u&&g&&e.obstacleFree?"side-anchored":"unverified-family-route",bendCount:m(e.points),orthogonal:g,sourceSide:e.source.side,targetSide:e.target.side,sourceBoundary:e.source.boundary,targetBoundary:e.target.boundary,sourceAnchored:h,targetAnchored:u,placement:e.placement,sourceFacesTarget:e.sourceFacesTarget,targetFacesSource:e.targetFacesSource,obstacleFree:e.obstacleFree}):void 0}}),groups:n,bounds:{w:p(e.width),h:p(e.height)}}}),lowerScene:b(eq)});export{e0 as default};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import{D as e,N as t,m as i,n as r,o as a,xa as s}from"./chunk-
|
|
1
|
+
import{D as e,N as t,m as i,n as r,o as a,xa as s}from"./chunk-AVGL6Y22.js";import"./chunk-HJVO5VC3.js";import"./chunk-L4UC3KGS.js";import"./chunk-BMZ24VPS.js";import{a as l}from"./chunk-TZMTDADJ.js";import"./chunk-UKIYI4IO.js";import{a as o,d as n}from"./chunk-PRBLS664.js";import{c as c,e as d}from"./chunk-6RXXXV66.js";import{d as h}from"./chunk-FCXWXIUB.js";import{u as p}from"./chunk-WSZXZ4HF.js";import"./chunk-BCPZYXNZ.js";import{a as u,b as y,c as b}from"./chunk-OLZVJBI5.js";import{C as f,D as m,a as g,b as k,c as x,d as w,e as _,g as S,i as v}from"./chunk-UJLLOK3R.js";import{M as C,O as A,aa as I,c as M,ca as T,g as E,qa as L}from"./chunk-PRXEMB2V.js";import{j as D,k as $,r as W,u as O}from"./chunk-37ORXEBA.js";import{h as N,l as z,n as P,o as B}from"./chunk-Q6FTXOZS.js";import{E as j,G as F,H as R,M as X,N as Y,_ as K,ea as U}from"./chunk-XBLK7VXJ.js";import{Q as Z}from"./chunk-PJJSDGLB.js";import"./chunk-YHMTSXIR.js";import"./chunk-QCU5G5PZ.js";var H=Object.freeze({id:"block",upstreamId:"block",maturity:"stable",label:"Block",headers:["block","block-beta"],aliases:[],config:{section:"block",keys:["padding","useMaxWidth"],noopKeys:["useMaxWidth"]},identity:{id:"family:block",kind:"family",version:"1.0.0",compatibility:{core:"0.5.5"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:[],semanticRoles:["prelude","title","chrome","node","label","group","edge","edge-label","defs"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge-label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge-label",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`block
|
|
2
2
|
columns 2
|
|
3
3
|
A["API"] B["Database"]
|
|
4
|
-
A --> B`,detect:
|
|
4
|
+
A --> B`,detect:Z,detectLoose:Z}),V=class extends Error{constructor(e,t,i){super(e)}};function G(e,t,i=0,r="",a=!1){let s=t.slice(0,i),l=s.split(`
|
|
5
5
|
`).length,o=i-s.lastIndexOf(`
|
|
6
|
-
`);return Error(`${e} ${a?"lexical":"parse"} error at line ${l}, column ${o}: ${r||"unrecognized input"}`)}function
|
|
6
|
+
`);return Error(`${e} ${a?"lexical":"parse"} error at line ${l}, column ${o}: ${r||"unrecognized input"}`)}function J(e){switch(e){case"[]":return"square";case"()":return"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function q(e){switch(e.trim().slice(-1)){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}function Q(e){switch(e.trim().charAt(0)){case"x":return"arrow_cross";case"o":return"arrow_circle";case"<":return"arrow_point";default:return"arrow_open"}}function ee(e){return e.includes("==")?"thick":"normal"}function et(e){return e.includes(".-")?"dotted":"solid"}function ei(e,t){let i=e.flat(),r=-1;for(let e of i)if("column-setting"===e.type){r=e.columns??-1;break}return{list:i,at:0,parent:t,children:[],columns:r}}var er=class{type="block";title;root={id:"root",type:"composite",children:[],columns:-1};blocks=[];edges=[];classes=new Map;byId=new Map;typeStr2Type=J;edgeStrToEdgeData=q;edgeStrToEdgeStartData=Q;edgeStrToThickness=ee;edgeStrToPattern=et;warn;pending=new Set;workIds=new Set;admitNode(e){this.workIds.has(e)||(C("nodes",this.workIds.size+1),this.workIds.add(e))}edgeCount=new Map;ids=0;colors=0;reservedIds=new Set;constructor(e={}){this.warn=e.warn}generateId(){let e;do e="block_generated_"+ ++this.ids;while(this.reservedIds.has(e)||this.byId.has(e))return this.reservedIds.add(e),_("block")&&v("block","generate-id",e),e}addStyleClass(e,t=""){let i=this.classes.get(e);for(let r of(i||(i={id:e,styles:[],textStyles:[]},this.classes.set(e,i)),t.split(","))){let t=r.indexOf(";"),a=(-1===t?r:r.slice(0,t)+r.slice(t+1)).trim();r.includes("color")&&i.textStyles.push(a.replace("fill","bgFill").replace("color","fill")),i.styles.push(a),_("block")&&v("block","define-class",{id:e,attribute:a})}}addStyle2Node(e,t=""){this.named(e).styles=t.replace(/;\s*$/,"").split(","),_("block")&&v("block","set-node-style",{id:e,styles:this.named(e).styles})}setCssClass(e,t){for(let i of e.split(","))(this.named(i.trim()).classes??=[]).push(t),_("block")&&v("block","add-node-class",{id:i.trim(),className:t})}named(e){let t=this.byId.get(e);return void 0===t&&(this.admitNode(e),t={id:e,type:"na",children:[]},this.byId.set(e,t),this.pending.add(e)),t}unresolvedStyleTargets(){return[...this.pending]}setHierarchy(e){let t=[ei(e,this.root)];for(;t.length>0;){let e=t[t.length-1];if(e.at===e.list.length){e.parent.children=e.children,_("block")&&v("block","set-children",{id:e.parent.id,children:e.children.map(e=>e.id)}),t.pop();continue}let i=e.list[e.at++];switch(e.columns>0&&"column-setting"!==i.type&&"number"==typeof i.widthInColumns&&i.widthInColumns>e.columns&&this.warn?.(`Block ${i.id} width ${i.widthInColumns} exceeds configured column width ${e.columns}`),i.type){case"classDef":this.addStyleClass(i.id,i.css);continue;case"applyClass":this.setCssClass(i.id,i.styleClass??"");continue;case"applyStyles":i.stylesStr&&this.addStyle2Node(i.id,i.stylesStr);continue;case"column-setting":e.parent.columns=i.columns??-1,_("block")&&v("block","set-columns",{id:e.parent.id,columns:e.parent.columns});continue;case"edge":{C("edges",this.edges.length+1);let e=(this.edgeCount.get(i.id)??0)+1;this.edgeCount.set(i.id,e),i.id=e+"-"+i.id,this.edges.push(i),_("block")&&v("block","add-edge",i);continue}}i.id??=this.generateId(),"space"!==i.type&&this.admitNode(i.id),i.label||(i.label="composite"===i.type?"":i.id);let r=this.byId.get(i.id),a=void 0===r||this.pending.delete(i.id);a?(r&&(i.classes=r.classes,i.styles=r.styles),"composite"===i.type&&(i.colorIndex=this.colors++),this.byId.set(i.id,i)):("na"!==i.type&&(r.type=i.type),i.label!==i.id&&(r.label=i.label)),_("block")&&v("block","upsert-block",{parentId:e.parent.id,block:this.byId.get(i.id)});let s=i.children;if(i.children=[],"space"===i.type){let t=i.width??1;C("nodes",this.workIds.size+Math.max(t,0));for(let r=0;r<t;r++){let t={...i,id:i.id+"-"+r,width:1,children:[]};this.admitNode(t.id),this.byId.set(t.id,t),e.children.push(t),_("block")&&v("block","attach-space",{parentId:e.parent.id,block:t})}}else a&&(e.children.push(i),_("block")&&v("block","attach-child",{parentId:e.parent.id,block:i}));s&&s.length>0&&t.push(ei(s,i))}this.blocks=this.root.children??[],_("block")&&v("block","complete-hierarchy",{root:this.root,edges:this.edges,classes:this.classes})}},ea=["$end","INVALID","BLOCK_DIAGRAM_KEY","id-block","COLUMNS","MD_STR","STR","SPACE_BLOCK","DEFAULT","LINKSTYLE","INTERPOLATE","classDef","DEFAULT_CLASSDEF_ID","CLASSDEF_ID","CLASSDEF_STYLEOPTS","class","CLASSENTITY_IDS","STYLECLASS","style","STYLE_ENTITY_IDS","STYLE_DEFINITION_DATA","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","end","NODE_DSTART","NODE_DEND","BLOCK_ARROW_START","BLOCK_ARROW_END","DIR","NODE_ID","LINK","START_LINK","LINK_LABEL","SIZE","EOF"];function es(e){return e<128?32===e||e>=9&&e<=13:160===e||5760===e||e>=8192&&e<=8202||8232===e||8233===e||8239===e||8287===e||12288===e||65279===e}function el(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||95===e}var eo=["right","left","x","y","up","down"],en=new Uint8Array(128);for(let e of[9,10,11,12,13,32,40,41,45,58,60,61,62,91,123,125])en[e]=1;function ec(e,t){let i=e.length,r=[],a=[],s=[],l=[],o=0,n=0,c=(e,t,i)=>(r.push(e),a.push(t),s.push(n),n=i,!0),d=(t,i)=>c(t,e.slice(n,i),i),h=e=>{l.push(o),o=e},p=()=>{l.length>0&&(o=l.pop())},u=t=>{for(;t<i&&es(e.charCodeAt(t));)t++;return t},y=t=>{for(;t<i;){let i=e.charCodeAt(t);if(i<48||i>57)break;t++}return t},b=t=>{for(;t<i&&el(e.charCodeAt(t));)t++;return t},f=t=>e.startsWith(t,n)&&!el(e.charCodeAt(n+t.length)),m=()=>(96===e.charCodeAt(n+1)?(h(2),n+=2):(h(1),n++),!0),g=t=>{if(46!==e.charCodeAt(t))return -1;do t++;while(46===e.charCodeAt(t))if(45!==e.charCodeAt(t))return -1;let i=e.charCodeAt(t+1);return 120===i||111===i||62===i?t+2:t+1},k=t=>{let i=e.charCodeAt(t);(120===i||111===i||60===i)&&t++;let r=e.charCodeAt(t);if(46===r)return g(t);if(45!==r&&61!==r)return -1;let a=t+1;for(;e.charCodeAt(a)===r;)a++;if(a-t==1)return 45===r?g(a):-1;let s=e.charCodeAt(a);return 120===s||111===s||62===s?a+1:a-t>=3?a:-1},x=()=>{let t=k(n);if(t>=0)return d(33,u(t));let i=60===e.charCodeAt(n)?n+1:n,r=e.charCodeAt(i),a=e.charCodeAt(i+1);return(45===r&&(45===a||46===a)||61===r&&61===a)&&(h(6),d(34,u(i+2)))},w=t=>{let r=e.indexOf(`
|
|
7
7
|
`,n);return -1===r&&(r=i),p(),d(t,r)},_=(t,i)=>{let r=b(n);if(r===n)return!1;for(;44===e.charCodeAt(r);){let e=u(r+1),t=b(e);if(t===e)break;r=t}return o=i,d(t,r)},S=r=>{let a;if(37===r&&37===e.charCodeAt(n+1)){let r=e.indexOf(`
|
|
8
|
-
`,n+2);return t?.(n,r<0?i:r),n=r<0?i:r,!0}if(es(r))return n=u(n+1),!0;switch(r){case 98:if(e.startsWith("block",n)){if(f("block-beta"))return d(2,n+10);if(58===e.charCodeAt(n+5))return d(3,n+6);if(!el(e.charCodeAt(n+5)))return d(2,n+5)}break;case 99:if(e.startsWith("columns",n)){if((a=u(n+7))>n+7){if(e.startsWith("auto",a)&&!el(e.charCodeAt(a+4)))return c(4,"-1",a+4);let t=y(a);if(t>a)return c(4,e.slice(a,t),t)}}else if(e.startsWith("class",n)){let t=e.startsWith("Def",n+5),i=t?n+8:n+5;if((a=u(i))>i)return h(t?7:9),d(t?11:15,a)}break;case 34:return m();case 115:if(e.startsWith("space",n)){if(58===e.charCodeAt(n+5)){let t=y(n+6);if(t>n+6)return c(7,e.slice(n+6,t),t)}if(!el(e.charCodeAt(n+5)))return c(7,"1",n+5)}else if(e.startsWith("style",n)&&(a=u(n+5))>n+5)return h(11),d(18,a);break;case 100:if(f("default"))return d(8,n+7);break;case 108:if(f("linkStyle"))return d(9,n+9);break;case 105:if(f("interpolate"))return d(10,n+11);break;case 97:if(e.startsWith("accTitle",n)){if(a=u(n+8),58===e.charCodeAt(a))return h(13),d(21,u(a+1))}else if(e.startsWith("accDescr",n)){a=u(n+8);let t=e.charCodeAt(a);if(58===t)return h(14),d(23,u(a+1));if(123===t)return h(15),n=u(a+1),!0}break;case 101:if(f("end"))return d(26,u(n+3));break;case 45:return 41===e.charCodeAt(n+1)?(h(3),d(27,n+2)):x();case 61:return x();case 60:return 91===e.charCodeAt(n+1)?(h(4),d(29,n+2)):x();case 40:{let t=e.charCodeAt(n+1),i=45===t||91===t?2:40===t?40===e.charCodeAt(n+2)?3:2:1;return h(3),d(27,n+i)}case 41:case 123:return h(3),d(27,e.charCodeAt(n+1)===r?n+2:n+1);case 62:return h(3),d(27,n+1);case 91:{let t=e.charCodeAt(n+1);return h(3),d(27,91===t||124===t||40===t||92===t||47===t?n+2:n+1)}case 58:{let t=y(n+1);return t>n+1&&c(36,e.slice(n+1,t),t)}}for(a=n;a<i;){let t=e.charCodeAt(a);if(t<128?1===en[t]:es(t))break;a++}return a>n&&d(32,a)},v=t=>{let i=e.charCodeAt(n+1),r=0;switch(t){case 34:return m();case 40:r=45===i?2:40===i?40===e.charCodeAt(n+2)?3:2:1;break;case 41:r=41===i?41===e.charCodeAt(n+2)?3:2:93===i?2:1;break;case 125:r=125===i?2:1;break;case 45:r=2*(41===i);break;case 93:r=93===i||41===i||62===i?2:1;break;case 92:case 47:r=2*(93===i)}return 0!==r&&(p(),d(28,n+r))},C=t=>{if(41===t)return p(),p(),c(30,"]>",u(n+1));let i=u(44===t?n+1:n);for(let r of eo)if(e.startsWith(r,i)){let a=u(i+r.length);return c(31,e.slice(44===t?i:n,a),a)}return!1};for(;;){if(n>=i){let e=-1;switch(o){case 0:e=37;break;case 1:e=6;break;case 8:e=14;break;case 10:e=17;break;case 12:e=20;break;case 13:e=22;break;case 14:e=24;break;case 15:e=25}n=i,-1!==e&&c(e,"",i);break}let t=e.charCodeAt(n),l=!0;switch(o){case 0:l=S(t);break;case 1:if(34===t)p(),n++;else{let t=e.indexOf('"',n);d(6,-1===t?i:t)}break;case 2:if(96===t)(l=34===e.charCodeAt(n+1))&&(p(),n+=2);else if(34===t)l=!1;else{let t=n+1;for(;t<i;){let i=e.charCodeAt(t);if(96===i||34===i)break;t++}d(5,t)}break;case 3:l=v(t);break;case 4:if(34===t)m();else if(93===t&&62===e.charCodeAt(n+1)){let t=u(n+2);(l=40===e.charCodeAt(t))&&(h(5),n=t+1)}else l=!1;break;case 5:l=C(t);break;case 6:if(34===t)96===e.charCodeAt(n+1)?m():(d(35,n+1),h(1));else{let e=k(u(n));(l=e>=0)&&(p(),d(33,u(e)))}break;case 7:{let t=12,i=e.startsWith("DEFAULT",n)?n+7:n,r=u(i);(i===n||r===i)&&(t=13,r=u(i=b(n))),(l=i>n&&r>i)&&(o=8,d(t,r));break}case 8:w(14);break;case 9:l=_(16,10);break;case 10:w(17);break;case 11:l=_(19,12);break;case 12:w(20);break;case 13:w(22);break;case 14:w(24);break;case 15:if(125===t)p(),n++;else{let t=e.indexOf("}",n);d(25,-1===t?i:t)}}if(!l)return r.push(1),a.push(""),s.push(n),{types:r,texts:a,starts:s}}return r.push(0),a.push(""),s.push(i),{types:r,texts:a,starts:s}}function ed(e){return e.replace(/#(?:quot|0*(?:34|37|96));/g,e=>"#quot;"===e?'"':String.fromCodePoint(Number(e.slice(1,-1))))}var eh="'NODE_ID', 'COLUMNS', 'SPACE_BLOCK', 'BLOCK_DIAGRAM_KEY', 'id-block', 'classDef', 'class', 'style'";function ep(e){let t=e[e.length-1];return Array.isArray(t)?(e.pop(),e.concat(t)):e}var eu={};for(let e of["start","end"])eu[`arrow_point:${e}`]=$(`block-arrow-${e}`,{width:8,height:7},e,{fill:"var(--_arrow)",stroke:"none"},"userSpaceOnUse"),eu[`arrow_circle:${e}`]={id:`block-circle-${e}`,shape:"circle",size:{width:9,height:9},ref:{x:4.5,y:4.5},orient:"auto",geometry:{kind:"circle",cx:4.5,cy:4.5,r:3.5},paint:{fill:"var(--bg)",stroke:"var(--_arrow)",strokeWidth:"1"},units:"userSpaceOnUse"},eu[`arrow_cross:${e}`]={id:`block-cross-${e}`,shape:"cross",size:{width:9,height:9},ref:{x:4.5,y:4.5},orient:"auto",geometry:{kind:"path",d:"M1 1L8 8M1 8L8 1"},paint:{fill:"none",stroke:"var(--_arrow)",strokeWidth:"1"},units:"userSpaceOnUse"};var ey=l(Object.values(eu));function eb(e){let t=0;if(e)for(let i of e)switch(i.trim()){case"right":t|=1;break;case"left":t|=2;break;case"up":t|=4;break;case"down":t|=8;break;case"x":t|=3;break;case"y":t|=12}return t}var ef=(e,t)=>e&t?1:0;function em(e){return 0!==e&&(12&e)==0?"x":0!==e&&(3&e)==0?"y":""}function eg(e,t,i){let r=em(e),a=ef(e,2)-ef(e,1),s=ef(e,4)-ef(e,8);if("x"===r){let r=Math.max(i+8,14)+14,s=Math.min(r/2,20);return{w:Math.max(t+12,16)+s*(3===e?2:1),h:r,dx:a*s/2,dy:0}}if("y"===r){let r=Math.max(t+16,14)+14,a=Math.min(r/2,20);return{w:r,h:Math.max(i+8,16)+a*(12===e?2:1),dx:0,dy:s*a/2}}return{w:Math.max(t+16,24)+12*(ef(e,2)+ef(e,1)),h:Math.max(i+8,24)+12*(ef(e,4)+ef(e,8)),dx:12*a/2,dy:12*s/2}}function ek(e,t,i){let r=em(e),a=t/2,s=i/2,l;if("x"===r){let t=Math.min(s,20),i=s-7,r=2&e?-a+t:-a,o=1&e?a-t:a;l=[r,-i,o,-i],1&e&&l.push(o,-s,a,0,o,s),l.push(o,i,r,i),2&e&&l.push(r,s,-a,0,r,-s)}else if("y"===r){let t=Math.min(a,20),i=a-7,r=4&e?-s+t:-s,o=8&e?s-t:s;l=[i,r,i,o],8&e&&l.push(a,o,0,s,-a,o),l.push(-i,o,-i,r),4&e&&l.push(-a,r,0,-s,a,r)}else{let t=2&e?-a+12:-a,i=1&e?a-12:a,r=4&e?-s+12:-s,o=8&e?s-12:s,n=(t+i)/2,c=(r+o)/2,d=Math.min(10,(i-t)/2),h=Math.min(10,(o-r)/2);l=[t,r],4&e&&l.push(n-d,r,n,-s,n+d,r),l.push(i,r),1&e&&l.push(i,c-h,a,c,i,c+h),l.push(i,o),8&e&&l.push(n+d,o,n,s,n-d,o),l.push(t,o),2&e&&l.push(t,c+h,-a,c,t,c-h)}let o=[];for(let e=0;e<l.length;e+=2)o.push({x:l[e],y:l[e+1]});return o}function ex(e){return F(B(R(e)),/&(?:#[xX][0-9a-fA-F]+|#\d+|[a-zA-Z][a-zA-Z0-9]+);|#\w+;/g,e=>{let t=e.startsWith("&")?o(e):n(e);if(E.test(t))throw SyntaxError("Block label entity must display printable text");return t})}var ew={na:"rectangle",square:"rectangle",round:"rounded",circle:"circle",rect_left_inv_arrow:"asymmetric",diamond:"diamond",hexagon:"hexagon",stadium:"stadium",subroutine:"subroutine",cylinder:"cylinder",doublecircle:"doublecircle",lean_right:"lean-r",lean_left:"lean-l",trapezoid:"trapezoid",inv_trapezoid:"trapezoid-alt"};function e_(e){return{id:e.id,label:e.block.label??e.id,shape:ew[e.block.type??"na"]??"rectangle",x:e.x,y:e.y,width:e.width,height:e.height}}var eS=M(function(e,t){let{positioned:r,colors:a}=t,s=t.resolved.renderOptions.transparent??!1,l=a.font??"Inter",o=[],n=r.style.edgeStrokeColor?Object.fromEntries(Object.entries(eu).map(([e,t])=>[e,{...t,paint:{...t.paint,...t.paint?.fill==="var(--_arrow)"?{fill:r.style.edgeStrokeColor}:{},...t.paint?.stroke==="var(--_arrow)"?{stroke:r.style.edgeStrokeColor}:{}}}])):eu,c=Object.values(n),d=L(a),h=W(r.width,r.height,a,s);r.model.accessibilityTitle&&(h+=`<title>${Y(r.model.accessibilityTitle)}</title>`),r.model.accessibilityDescription&&(h+=`<desc>${Y(r.model.accessibilityDescription)}</desc>`),h+=D(l,!1,void 0,a.embedFontImport),o.push(e.documentOpen({id:"prelude",width:r.width,height:r.height,colors:a,transparent:s,font:l,hasMonoFont:!1},h),e.definitions({id:"defs",markerResources:c},`<defs>${N(c)}</defs>`));let p=(t,a)=>{let s="composite"===t.block.type,l=s?"group":"node",o=t.style.fill??(s?r.style.groupFillColor:r.style.nodeFillColor)??(s?"var(--_group-fill)":"var(--_node-fill)"),n=t.style.stroke??(s?r.style.groupBorderColor:r.style.nodeBorderColor)??"var(--_node-stroke)",c=t.style.fill??r.style.groupHeaderFillColor,h=t.style.color??(s?r.style.groupTextColor:r.style.nodeTextColor)??d("var(--_text)",s?c??o:o),p=i(e_(t),{fill:o,stroke:n,strokeWidth:t.style["stroke-width"]??String(s?r.style.groupLineWidth:r.style.nodeLineWidth)},s?r.style.groupCornerRadius:r.style.cornerRadius),u=t.style["stroke-dasharray"];void 0!==u&&(p.paint.strokeDasharray=u,p.childPaints&&(p.childPaints=p.childPaints.map(e=>({...e,strokeDasharray:u}))));let y=eb(t.block.directions),b="block_arrow"===t.block.type,f=b?eg(y,t.label.width,t.label.height):{dx:0,dy:0},m=b?{kind:"polygon",points:ek(y,t.width,t.height).map(e=>({x:e.x+t.x+t.width/2,y:e.y+t.y+t.height/2}))}:p.geometry,g=[`block-${s?"composite":"node"}`,...(t.block.classes??[]).filter(e=>/^[\w-]+$/.test(e))];return e.group({id:`block:${t.id}`,role:l,open:`<g class="${K(g.join(" "))}" data-id="${K(t.id)}"${t.parentId?` data-parent="${K(t.parentId)}"`:""}>`,close:"</g>",children:[{indent:2,node:e.shape({id:`frame:${t.id}`,role:l,identity:!1,owner:{id:t.id,role:l},geometry:m,paint:p.paint,...p.childPaints?{childPaints:p.childPaints}:{}})},...s&&t.label.text&&r.style.groupHeaderFillColor?[{indent:2,node:e.shape({id:`header:${t.id}`,role:"chrome",owner:{id:t.id,role:l},geometry:{kind:"rect",x:t.x+r.style.groupLineWidth,y:t.y+r.style.groupLineWidth,width:Math.max(0,t.width-2*r.style.groupLineWidth),height:t.label.height+16-r.style.groupLineWidth,rx:Math.max(0,r.style.groupCornerRadius-r.style.groupLineWidth)},paint:{fill:c,stroke:"none"}})}]:[],...t.label.text?[{indent:2,node:e.text({id:`label:${t.id}`,role:"label",owner:{id:t.id,role:l},text:t.label.text,block:t.label,x:t.x+t.width/2+f.dx,y:s?t.y+t.label.height/2+8:t.y+t.height/2+f.dy,fontSize:t.label.fontSize,anchor:"middle",paint:{fill:h}})}]:[],...a.map(e=>({node:e,indent:2}))]})},u=new Map;for(let e=r.nodes.length-1;e>=0;e--){let t=r.nodes[e];if("space"===t.block.type)continue;let i=u.get(t.parentId)??[];i.push(p(t,(u.get(t.id)??[]).reverse())),u.set(t.parentId,i)}for(let t of(o.push(...(u.get(void 0)??[]).reverse()),r.edges)){let i=n[`${t.arrowTypeStart}:start`],a=n[`${t.arrowTypeEnd}:end`],s=r.style.edgeBendRadius>0&&t.points.length>2?H(t.points,r.style.edgeBendRadius,{terminalClearance:{start:ey(i?.id,r.style.lineWidth,"start"),end:ey(a?.id,r.style.lineWidth,"end")}}):void 0;o.push(e.connector({id:t.id,role:"edge",geometry:s?.geometry??{kind:"polyline",points:t.points},lineStyle:"dotted"===t.pattern?"dotted":"solid",paint:{fill:"none",stroke:r.style.edgeStrokeColor??"var(--_line)",strokeWidth:"thick"===t.thickness?"3":String(r.style.lineWidth),..."dotted"===t.pattern?{strokeDasharray:"2 4"}:{}},endpoints:{from:t.start,to:t.end},relationship:{kind:"block-link"},markers:{...i?{start:i}:{},...a?{end:a}:{}},labels:t.label?[{text:t.labelBlock.text,anchor:t.labelPosition}]:[],route:{ownership:"layout",bendRadius:r.style.edgeBendRadius,labelAnchors:t.label?[t.labelPosition]:[],...s?{contours:s.contours}:{}}}))}for(let t of r.edges)if(t.label){let i=t.labelBlock,a=t.labelPosition;o.push(e.group({id:`edge-label:${t.id}`,role:"edge-label",open:'<g class="block-edge-label">',close:"</g>",children:[{indent:2,node:e.shape({id:`label-bg:${t.id}`,role:"chrome",owner:{id:t.id,role:"edge"},geometry:{kind:"rect",x:a.x-i.width/2-6,y:a.y-i.height/2-4,width:i.width+12,height:i.height+8},paint:{fill:"var(--bg)",stroke:"none"}})},{indent:2,node:e.text({id:`label:${t.id}`,role:"edge-label",owner:{id:t.id,role:"edge"},text:i.text,block:i,x:a.x,y:a.y,fontSize:i.fontSize,anchor:"middle",paint:{fill:r.style.edgeTextColor??"var(--_text)"}})}]}))}return r.title&&o.push(e.text(j(r.title,r.style))),o.push(e.documentClose()),{family:"block",width:r.width,height:r.height,colors:a,transparent:s,parts:o}}),ev=w(X,{configDiagnostics:e=>h("block",e,{padding:c,useMaxWidth:d}),layout:i=>{let l=function(e){let t=Array.isArray(e)?e.join(`
|
|
8
|
+
`,n+2);return t?.(n,r<0?i:r),n=r<0?i:r,!0}if(es(r))return n=u(n+1),!0;switch(r){case 98:if(e.startsWith("block",n)){if(f("block-beta"))return d(2,n+10);if(58===e.charCodeAt(n+5))return d(3,n+6);if(!el(e.charCodeAt(n+5)))return d(2,n+5)}break;case 99:if(e.startsWith("columns",n)){if((a=u(n+7))>n+7){if(e.startsWith("auto",a)&&!el(e.charCodeAt(a+4)))return c(4,"-1",a+4);let t=y(a);if(t>a)return c(4,e.slice(a,t),t)}}else if(e.startsWith("class",n)){let t=e.startsWith("Def",n+5),i=t?n+8:n+5;if((a=u(i))>i)return h(t?7:9),d(t?11:15,a)}break;case 34:return m();case 115:if(e.startsWith("space",n)){if(58===e.charCodeAt(n+5)){let t=y(n+6);if(t>n+6)return c(7,e.slice(n+6,t),t)}if(!el(e.charCodeAt(n+5)))return c(7,"1",n+5)}else if(e.startsWith("style",n)&&(a=u(n+5))>n+5)return h(11),d(18,a);break;case 100:if(f("default"))return d(8,n+7);break;case 108:if(f("linkStyle"))return d(9,n+9);break;case 105:if(f("interpolate"))return d(10,n+11);break;case 97:if(e.startsWith("accTitle",n)){if(a=u(n+8),58===e.charCodeAt(a))return h(13),d(21,u(a+1))}else if(e.startsWith("accDescr",n)){a=u(n+8);let t=e.charCodeAt(a);if(58===t)return h(14),d(23,u(a+1));if(123===t)return h(15),n=u(a+1),!0}break;case 101:if(f("end"))return d(26,u(n+3));break;case 45:return 41===e.charCodeAt(n+1)?(h(3),d(27,n+2)):x();case 61:return x();case 60:return 91===e.charCodeAt(n+1)?(h(4),d(29,n+2)):x();case 40:{let t=e.charCodeAt(n+1),i=45===t||91===t?2:40===t?40===e.charCodeAt(n+2)?3:2:1;return h(3),d(27,n+i)}case 41:case 123:return h(3),d(27,e.charCodeAt(n+1)===r?n+2:n+1);case 62:return h(3),d(27,n+1);case 91:{let t=e.charCodeAt(n+1);return h(3),d(27,91===t||124===t||40===t||92===t||47===t?n+2:n+1)}case 58:{let t=y(n+1);return t>n+1&&c(36,e.slice(n+1,t),t)}}for(a=n;a<i;){let t=e.charCodeAt(a);if(t<128?1===en[t]:es(t))break;a++}return a>n&&d(32,a)},v=t=>{let i=e.charCodeAt(n+1),r=0;switch(t){case 34:return m();case 40:r=45===i?2:40===i?40===e.charCodeAt(n+2)?3:2:1;break;case 41:r=41===i?41===e.charCodeAt(n+2)?3:2:93===i?2:1;break;case 125:r=125===i?2:1;break;case 45:r=2*(41===i);break;case 93:r=93===i||41===i||62===i?2:1;break;case 92:case 47:r=2*(93===i)}return 0!==r&&(p(),d(28,n+r))},C=t=>{if(41===t)return p(),p(),c(30,"]>",u(n+1));let i=u(44===t?n+1:n);for(let r of eo)if(e.startsWith(r,i)){let a=u(i+r.length);return c(31,e.slice(44===t?i:n,a),a)}return!1};for(;;){if(n>=i){let e=-1;switch(o){case 0:e=37;break;case 1:e=6;break;case 8:e=14;break;case 10:e=17;break;case 12:e=20;break;case 13:e=22;break;case 14:e=24;break;case 15:e=25}n=i,-1!==e&&c(e,"",i);break}let t=e.charCodeAt(n),l=!0;switch(o){case 0:l=S(t);break;case 1:if(34===t)p(),n++;else{let t=e.indexOf('"',n);d(6,-1===t?i:t)}break;case 2:if(96===t)(l=34===e.charCodeAt(n+1))&&(p(),n+=2);else if(34===t)l=!1;else{let t=n+1;for(;t<i;){let i=e.charCodeAt(t);if(96===i||34===i)break;t++}d(5,t)}break;case 3:l=v(t);break;case 4:if(34===t)m();else if(93===t&&62===e.charCodeAt(n+1)){let t=u(n+2);(l=40===e.charCodeAt(t))&&(h(5),n=t+1)}else l=!1;break;case 5:l=C(t);break;case 6:if(34===t)96===e.charCodeAt(n+1)?m():(d(35,n+1),h(1));else{let e=k(u(n));(l=e>=0)&&(p(),d(33,u(e)))}break;case 7:{let t=12,i=e.startsWith("DEFAULT",n)?n+7:n,r=u(i);(i===n||r===i)&&(t=13,r=u(i=b(n))),(l=i>n&&r>i)&&(o=8,d(t,r));break}case 8:w(14);break;case 9:l=_(16,10);break;case 10:w(17);break;case 11:l=_(19,12);break;case 12:w(20);break;case 13:w(22);break;case 14:w(24);break;case 15:if(125===t)p(),n++;else{let t=e.indexOf("}",n);d(25,-1===t?i:t)}}if(!l)return r.push(1),a.push(""),s.push(n),{types:r,texts:a,starts:s}}return r.push(0),a.push(""),s.push(i),{types:r,texts:a,starts:s}}function ed(e){return e.replace(/#(?:quot|0*(?:34|37|96));/g,e=>"#quot;"===e?'"':String.fromCodePoint(Number(e.slice(1,-1))))}var eh="'NODE_ID', 'COLUMNS', 'SPACE_BLOCK', 'BLOCK_DIAGRAM_KEY', 'id-block', 'classDef', 'class', 'style'";function ep(e){let t=e[e.length-1];return Array.isArray(t)?(e.pop(),e.concat(t)):e}var eu={};for(let e of["start","end"])eu[`arrow_point:${e}`]=W(`block-arrow-${e}`,{width:8,height:7},e,{fill:"var(--_arrow)",stroke:"none"},"userSpaceOnUse"),eu[`arrow_circle:${e}`]={id:`block-circle-${e}`,shape:"circle",size:{width:9,height:9},ref:{x:4.5,y:4.5},orient:"auto",geometry:{kind:"circle",cx:4.5,cy:4.5,r:3.5},paint:{fill:"var(--bg)",stroke:"var(--_arrow)",strokeWidth:"1"},units:"userSpaceOnUse"},eu[`arrow_cross:${e}`]={id:`block-cross-${e}`,shape:"cross",size:{width:9,height:9},ref:{x:4.5,y:4.5},orient:"auto",geometry:{kind:"path",d:"M1 1L8 8M1 8L8 1"},paint:{fill:"none",stroke:"var(--_arrow)",strokeWidth:"1"},units:"userSpaceOnUse"};var ey=l(Object.values(eu));function eb(e){let t=0;if(e)for(let i of e)switch(i.trim()){case"right":t|=1;break;case"left":t|=2;break;case"up":t|=4;break;case"down":t|=8;break;case"x":t|=3;break;case"y":t|=12}return t}var ef=(e,t)=>e&t?1:0;function em(e){return 0!==e&&(12&e)==0?"x":0!==e&&(3&e)==0?"y":""}function eg(e,t,i){let r=em(e),a=ef(e,2)-ef(e,1),s=ef(e,4)-ef(e,8);if("x"===r){let r=Math.max(i+8,14)+14,s=Math.min(r/2,20);return{w:Math.max(t+12,16)+s*(3===e?2:1),h:r,dx:a*s/2,dy:0}}if("y"===r){let r=Math.max(t+16,14)+14,a=Math.min(r/2,20);return{w:r,h:Math.max(i+8,16)+a*(12===e?2:1),dx:0,dy:s*a/2}}return{w:Math.max(t+16,24)+12*(ef(e,2)+ef(e,1)),h:Math.max(i+8,24)+12*(ef(e,4)+ef(e,8)),dx:12*a/2,dy:12*s/2}}function ek(e,t,i){let r=em(e),a=t/2,s=i/2,l;if("x"===r){let t=Math.min(s,20),i=s-7,r=2&e?-a+t:-a,o=1&e?a-t:a;l=[r,-i,o,-i],1&e&&l.push(o,-s,a,0,o,s),l.push(o,i,r,i),2&e&&l.push(r,s,-a,0,r,-s)}else if("y"===r){let t=Math.min(a,20),i=a-7,r=4&e?-s+t:-s,o=8&e?s-t:s;l=[i,r,i,o],8&e&&l.push(a,o,0,s,-a,o),l.push(-i,o,-i,r),4&e&&l.push(-a,r,0,-s,a,r)}else{let t=2&e?-a+12:-a,i=1&e?a-12:a,r=4&e?-s+12:-s,o=8&e?s-12:s,n=(t+i)/2,c=(r+o)/2,d=Math.min(10,(i-t)/2),h=Math.min(10,(o-r)/2);l=[t,r],4&e&&l.push(n-d,r,n,-s,n+d,r),l.push(i,r),1&e&&l.push(i,c-h,a,c,i,c+h),l.push(i,o),8&e&&l.push(n+d,o,n,s,n-d,o),l.push(t,o),2&e&&l.push(t,c+h,-a,c,t,c-h)}let o=[];for(let e=0;e<l.length;e+=2)o.push({x:l[e],y:l[e+1]});return o}function ex(e){return j(F(R(e)),/&(?:#[xX][0-9a-fA-F]+|#\d+|[a-zA-Z][a-zA-Z0-9]+);|#\w+;/g,e=>{let t=e.startsWith("&")?o(e):n(e);if(E.test(t))throw SyntaxError("Block label entity must display printable text");return t})}var ew={na:"rectangle",square:"rectangle",round:"rounded",circle:"circle",rect_left_inv_arrow:"asymmetric",diamond:"diamond",hexagon:"hexagon",stadium:"stadium",subroutine:"subroutine",cylinder:"cylinder",doublecircle:"doublecircle",lean_right:"lean-r",lean_left:"lean-l",trapezoid:"trapezoid",inv_trapezoid:"trapezoid-alt"};function e_(e){return{id:e.id,label:e.block.label??e.id,shape:ew[e.block.type??"na"]??"rectangle",x:e.x,y:e.y,width:e.width,height:e.height}}var eS=M(function(e,t){let{positioned:r,colors:a}=t,s=t.resolved.renderOptions.transparent??!1,l=a.font??"Inter",o=[],n=r.style.edgeStrokeColor?Object.fromEntries(Object.entries(eu).map(([e,t])=>[e,{...t,paint:{...t.paint,...t.paint?.fill==="var(--_arrow)"?{fill:r.style.edgeStrokeColor}:{},...t.paint?.stroke==="var(--_arrow)"?{stroke:r.style.edgeStrokeColor}:{}}}])):eu,c=Object.values(n),d=L(a),h=$(r.width,r.height,a,s);r.model.accessibilityTitle&&(h+=`<title>${X(r.model.accessibilityTitle)}</title>`),r.model.accessibilityDescription&&(h+=`<desc>${X(r.model.accessibilityDescription)}</desc>`),h+=D(l,!1,void 0,a.embedFontImport),o.push(e.documentOpen({id:"prelude",width:r.width,height:r.height,colors:a,transparent:s,font:l,hasMonoFont:!1},h),e.definitions({id:"defs",markerResources:c},`<defs>${O(c)}</defs>`));let p=(t,a)=>{let s="composite"===t.block.type,l=s?"group":"node",o=t.style.fill??(s?r.style.groupFillColor:r.style.nodeFillColor)??(s?"var(--_group-fill)":"var(--_node-fill)"),n=t.style.stroke??(s?r.style.groupBorderColor:r.style.nodeBorderColor)??"var(--_node-stroke)",c=t.style.fill??r.style.groupHeaderFillColor,h=t.style.color??(s?r.style.groupTextColor:r.style.nodeTextColor)??d("var(--_text)",s?c??o:o),p=i(e_(t),{fill:o,stroke:n,strokeWidth:t.style["stroke-width"]??String(s?r.style.groupLineWidth:r.style.nodeLineWidth)},s?r.style.groupCornerRadius:r.style.cornerRadius),u=t.style["stroke-dasharray"];void 0!==u&&(p.paint.strokeDasharray=u,p.childPaints&&(p.childPaints=p.childPaints.map(e=>({...e,strokeDasharray:u}))));let y=eb(t.block.directions),b="block_arrow"===t.block.type,f=b?eg(y,t.label.width,t.label.height):{dx:0,dy:0},m=b?{kind:"polygon",points:ek(y,t.width,t.height).map(e=>({x:e.x+t.x+t.width/2,y:e.y+t.y+t.height/2}))}:p.geometry,g=[`block-${s?"composite":"node"}`,...(t.block.classes??[]).filter(e=>/^[\w-]+$/.test(e))];return e.group({id:`block:${t.id}`,role:l,open:`<g class="${Y(g.join(" "))}" data-id="${Y(t.id)}"${t.parentId?` data-parent="${Y(t.parentId)}"`:""}>`,close:"</g>",children:[{indent:2,node:e.shape({id:`frame:${t.id}`,role:l,identity:!1,owner:{id:t.id,role:l},geometry:m,paint:p.paint,...p.childPaints?{childPaints:p.childPaints}:{}})},...s&&t.label.text&&r.style.groupHeaderFillColor?[{indent:2,node:e.shape({id:`header:${t.id}`,role:"chrome",owner:{id:t.id,role:l},geometry:{kind:"rect",x:t.x+r.style.groupLineWidth,y:t.y+r.style.groupLineWidth,width:Math.max(0,t.width-2*r.style.groupLineWidth),height:t.label.height+16-r.style.groupLineWidth,rx:Math.max(0,r.style.groupCornerRadius-r.style.groupLineWidth)},paint:{fill:c,stroke:"none"}})}]:[],...t.label.text?[{indent:2,node:e.text({id:`label:${t.id}`,role:"label",owner:{id:t.id,role:l},text:t.label.text,block:t.label,x:t.x+t.width/2+f.dx,y:s?t.y+t.label.height/2+8:t.y+t.height/2+f.dy,fontSize:t.label.fontSize,anchor:"middle",paint:{fill:h}})}]:[],...a.map(e=>({node:e,indent:2}))]})},u=new Map;for(let e=r.nodes.length-1;e>=0;e--){let t=r.nodes[e];if("space"===t.block.type)continue;let i=u.get(t.parentId)??[];i.push(p(t,(u.get(t.id)??[]).reverse())),u.set(t.parentId,i)}for(let t of(o.push(...(u.get(void 0)??[]).reverse()),r.edges)){let i=n[`${t.arrowTypeStart}:start`],a=n[`${t.arrowTypeEnd}:end`],s=r.style.edgeBendRadius>0&&t.points.length>2?U(t.points,r.style.edgeBendRadius,{terminalClearance:{start:ey(i?.id,r.style.lineWidth,"start"),end:ey(a?.id,r.style.lineWidth,"end")}}):void 0;o.push(e.connector({id:t.id,role:"edge",geometry:s?.geometry??{kind:"polyline",points:t.points},lineStyle:"dotted"===t.pattern?"dotted":"solid",paint:{fill:"none",stroke:r.style.edgeStrokeColor??"var(--_line)",strokeWidth:"thick"===t.thickness?"3":String(r.style.lineWidth),..."dotted"===t.pattern?{strokeDasharray:"2 4"}:{}},endpoints:{from:t.start,to:t.end},relationship:{kind:"block-link"},markers:{...i?{start:i}:{},...a?{end:a}:{}},labels:t.label?[{text:t.labelBlock.text,anchor:t.labelPosition}]:[],route:{ownership:"layout",bendRadius:r.style.edgeBendRadius,labelAnchors:t.label?[t.labelPosition]:[],...s?{contours:s.contours}:{}}}))}for(let t of r.edges)if(t.label){let i=t.labelBlock,a=t.labelPosition;o.push(e.group({id:`edge-label:${t.id}`,role:"edge-label",open:'<g class="block-edge-label">',close:"</g>",children:[{indent:2,node:e.shape({id:`label-bg:${t.id}`,role:"chrome",owner:{id:t.id,role:"edge"},geometry:{kind:"rect",x:a.x-i.width/2-6,y:a.y-i.height/2-4,width:i.width+12,height:i.height+8},paint:{fill:"var(--bg)",stroke:"none"}})},{indent:2,node:e.text({id:`label:${t.id}`,role:"edge-label",owner:{id:t.id,role:"edge"},text:i.text,block:i,x:a.x,y:a.y,fontSize:i.fontSize,anchor:"middle",paint:{fill:r.style.edgeTextColor??"var(--_text)"}})}]}))}return r.title&&o.push(e.text(B(r.title,r.style))),o.push(e.documentClose()),{family:"block",width:r.width,height:r.height,colors:a,transparent:s,parts:o}}),ev=w(H,{configDiagnostics:e=>h("block",e,{padding:c,useMaxWidth:d}),layout:i=>{let l=function(e){let t=Array.isArray(e)?e.join(`
|
|
9
9
|
`):e,i=new er,r=ec(t);if(i.reservedIds=new Set(r.texts.filter((e,t)=>32===r.types[t])),function(e,t){let{types:i,texts:r,starts:a}=ec(e),s=0,l=t=>{let r=i[s];throw 1===r?G("block",e,a[s],"",!0):G("block",e,a[s],`Expecting ${t}, got '${ea[r]}'`)},o=e=>(i[s]!==e&&l(`'${ea[e]}'`),r[s++]),n=()=>{let e=o(32);if(27===i[s]){let t=r[s++];return{id:e,label:ed(o(6)),typeStr:t+o(28)}}if(29===i[s]){let t=r[s++],a=ed(o(6)),l=[o(31)];for(;31===i[s];)l.push(r[s++]);return{id:e,label:a,typeStr:t+o(30),directions:l}}return{id:e}},c=()=>{let e=n(),a=36===i[s]?parseInt(r[s++],10):1,l={id:e.id,label:e.label,type:t.typeStr2Type(e.typeStr),directions:e.directions,widthInColumns:a},c;for(;33===i[s]||34===i[s];){let e="";34===i[s++]&&(o(35),e=ed(o(6)),o(33));let a=r[s-1],d=n(),h=t.edgeStrToEdgeData(a),p=t.edgeStrToEdgeStartData(a),u=t.edgeStrToThickness(a),y=t.edgeStrToPattern(a);c??=[{id:l.id,label:l.label,type:l.type,directions:l.directions}],l={id:d.id,label:d.label,type:t.typeStr2Type(d.typeStr),directions:d.directions},c.push({id:c[c.length-1].id+"-"+d.id,start:c[c.length-1].id,end:d.id,label:e,type:"edge",thickness:u,pattern:y,directions:d.directions,arrowTypeEnd:h,arrowTypeStart:p},l)}return c??l};o(2),_("block")&&S("block","header",r[0],{offset:a[0],endOffset:a[0]+r[0].length,unit:"physical"});let d=[],h=[];for(;;){let e=s,n=i[s];switch(37!==n&&_("block")&&S("block",ea[n],r[e],{offset:a[e],endOffset:a[e]+r[e].length,unit:"physical"}),i[s]){case 32:h.push(c());break;case 4:h.push({type:"column-setting",columns:parseInt(r[s++],10)});break;case 7:{let e=parseInt(r[s++],10);h.push({id:t.generateId(),type:"space",label:"",width:e,children:[]});break}case 2:s++,C("nesting",d.length+1),d.push({list:h,header:void 0}),h=[];break;case 3:s++,C("nesting",d.length+1),32!==i[s]&&l("'NODE_ID'"),d.push({list:h,header:c()}),h=[];break;case 26:{let e=d.pop();if(void 0===e||0===h.length)return l(eh);s++;let i=t.generateId(),r=ep(h);(h=e.list).push(void 0===e.header?{id:i,type:"composite",label:"",children:r}:{...e.header,type:"composite",children:r});break}case 11:{s++;let e=o(13).trim();h.push({type:"classDef",id:e,css:o(14).trim()});break}case 15:{s++;let e=o(16).trim();h.push({type:"applyClass",id:e,styleClass:o(17).trim()});break}case 18:{s++;let e=o(19).trim();h.push({type:"applyStyles",id:e,stylesStr:o(20).trim()});break}case 37:d.length>0&&l(eh+", 'end'"),0===h.length&&l(eh),t.setHierarchy(ep(h));return;default:l(0===h.length?eh:eh+(d.length>0?", 'end'":", 'EOF'"))}}}(t.endsWith(`
|
|
10
10
|
`)?t:t+`
|
|
11
|
-
`,i),i.unresolvedStyleTargets().length)throw Error("Block style/class references undeclared targets: "+i.unresolvedStyleTargets().join(", "));for(let e of i.classes.values())T(I(e.styles.join(",")),`classDef ${e.id}`);let a=[i.root];for(let e=0;e<a.length;e++){let t=a[e];T(I((t.styles??[]).join(",")),`style ${t.id}`),a.push(...t.children??[])}return{kind:"block",root:i.root,edges:i.edges,classDefs:[...i.classes.values()],title:i.title}}(i.source.familyLines);return l.title??=p(i.source.frontmatter),l.accessibilityTitle=i.source.accessibility.title,l.accessibilityDescription=i.source.accessibility.descr,x(function(i,l={},o,n={}){A(i);let c=
|
|
11
|
+
`,i),i.unresolvedStyleTargets().length)throw Error("Block style/class references undeclared targets: "+i.unresolvedStyleTargets().join(", "));for(let e of i.classes.values())T(I(e.styles.join(",")),`classDef ${e.id}`);let a=[i.root];for(let e=0;e<a.length;e++){let t=a[e];T(I((t.styles??[]).join(",")),`style ${t.id}`),a.push(...t.children??[])}return{kind:"block",root:i.root,edges:i.edges,classDefs:[...i.classes.values()],title:i.title}}(i.source.familyLines);return l.title??=p(i.source.frontmatter),l.accessibilityTitle=i.source.accessibility.title,l.accessibilityDescription=i.source.accessibility.descr,x(function(i,l={},o,n={}){A(i);let c=N(l,void 0,o),d=l.padding??32,h=i.edges.map(e=>K(ex(e.label??""),{fontSize:c.edgeLabelFontSize,fontWeight:c.edgeLabelFontWeight,maxWidth:320,transform:c.edgeTextTransform,letterSpacing:c.edgeLetterSpacing})),p=0;for(let e of i.edges)p=Math.max(p,ey(eu[`${e.arrowTypeStart}:start`]?.id,c.lineWidth,"start"),ey(eu[`${e.arrowTypeEnd}:end`]?.id,c.lineWidth,"end"));let u=Math.max(p?2*(p+c.edgeBendRadius):0,"number"==typeof n.padding&&n.padding>=0?Math.min(n.padding,200):20,...h.filter(e=>e.text).map(e=>e.width+40)),y=new Map(i.classDefs.map(e=>[e.id,e])),b=[],f=(e,t)=>{let r="composite"===e.type,a=T(I([...y.get("default")?.styles??[],...(e.classes??[]).flatMap(e=>y.get(e)?.styles??[]),...e.styles??[]].join(",")),`style ${e.id}`),s=Number.parseFloat(a["font-size"]??"")||(r?c.groupHeaderFontSize:c.nodeLabelFontSize),n=a["font-weight"]?.trim().toLowerCase(),d=void 0===n?r?c.groupHeaderFontWeight:c.nodeLabelFontWeight:"normal"===n?400:"bold"===n?700:Number(n);if(!Number.isFinite(d)||d<1||d>1e3)throw Error(`style ${e.id}: font-weight must be normal, bold, or a number from 1 to 1000`);let h=K(ex(e.label??(r?"":e.id)),{fontSize:s,fontWeight:d,maxWidth:320,transform:r?c.groupTextTransform:c.nodeTextTransform,letterSpacing:r?c.groupLetterSpacing:c.nodeLetterSpacing,fontFamily:r?c.groupFont??l.font:l.font}),p=Math.max(80,h.width+(r?c.groupLabelPaddingX:c.nodePaddingX)*2),u=Math.max(44,h.height+(r?c.groupPaddingY:c.nodePaddingY)*2);if(["diamond","hexagon","lean_right","lean_left","trapezoid","inv_trapezoid"].includes(e.type??"")&&(p+=48,u+=24),["circle","doublecircle"].includes(e.type??"")&&(p=u=Math.max(p,u)),"cylinder"===e.type&&(u+=24),"block_arrow"===e.type){let t=eg(eb(e.directions),h.width,h.height);p=t.w,u=t.h}"space"===e.type&&(p=40,u=24);let b="composite"===e.type&&h.text?h.height+16:0;return{block:e,parentId:t,label:h,style:a,children:[],columns:e.columns??-1,span:e.widthInColumns??1,space:"space"===e.type,head:b,insetX:o?.group?.paddingX,insetY:o?.group?.paddingY,nw:e===i.root?0:p,nh:e===i.root?0:u,col:0,row:0,cols:0,heights:[],x:0,y:0,w:0,h:0}},m=f(i.root),g=[m];for(let e=0;e<g.length;e++){let t=g[e];for(let e of t.block.children??[]){let i=f(e,t===m?void 0:t.block.id);t.children.push(i),g.push(i),b.push(i)}}let k=function(e,t){let i=[e];for(let e=0;e<i.length;e++)for(let t of i[e].children)i.push(t);for(let e=i.length-1;e>=0;e--){let r=i[e];r.children.length>0&&function(e,t,i,r){let a=e.columns,s=[],l=0,o=0,n=0,c=0;for(let i of e.children){let{px:e,py:r}=function(e,t){if(0===e||!Number.isInteger(e))throw new V("Columns must be an integer !== 0.","semantic",{type:"block"});if(t<0||!Number.isInteger(t))throw new V("Position must be a non-negative integer."+t,"semantic",{type:"block"});return e<0?{px:t,py:0}:{px:t%e,py:Math.floor(t/e)}}(a,l),d=i.span>=1?Math.min(i.span,1e3):1;if(a>0&&d>a-e&&(d=a-e),i.span=d,i.col=e,i.row=r,l+=d,e+d>o&&(o=e+d),r===s.length&&s.push(0),0===i.children.length?s[r]=-1:s[r]>=0&&i.nh>s[r]&&(s[r]=i.nh),i.space)continue;let h=(i.nw-t*(d-1))/d;h>n&&(n=h),i.nh>c&&(c=i.nh)}let d=(s.length-1)*t;for(let e=0;e<s.length;e++)s[e]<0&&(s[e]=c),d+=s[e];e.cols=o,e.heights=s,e.nw=Math.max(e.nw,o*n+(o-1)*t+2*i),e.nh=d+2*r+e.head}(r,t,0===e?0:r.insetX??t,0===e?0:r.insetY??t)}e.w=e.nw,e.h=e.nh,e.x=e.w/2,e.y=e.h/2;for(let e=0;e<i.length;e++){let r=i[e];r.children.length>0&&function(e,t,i,r){let{cols:a,heights:s}=e,l=s.length,o=(e.w-2*i-(a-1)*t)/a,n=e.h-2*r-e.head-(l-1)*t,c=0;for(let e of s)c+=e;let d=c>0?n/c:0,h=c>0?0:n/l,p=e.x-e.w/2+i,u=e.y-e.h/2+r+e.head,y=0;for(let i of e.children){for(;y<i.row;y++)u+=s[y]*d+h+t;i.w=o*i.span+t*(i.span-1),i.h=s[y]*d+h,i.x=p+i.col*(o+t)+i.w/2,i.y=u+i.h/2}}(r,t,0===e?0:r.insetX??t,0===e?0:r.insetY??t)}return{width:e.w,height:e.h}}(m,u),x=z(i.title,c),w=Math.max(k.width+2*d,(x?.width??0)+2*d),_=x?.height??0,S=d+(w-2*d-k.width)/2,v=d+_,C=b.map(e=>{let t=e.w,i=e.h;return["circle","doublecircle"].includes(e.block.type??"")&&(t=i=Math.min(e.w,e.h)),{id:e.block.id,block:e.block,parentId:e.parentId,x:e.x-t/2+S,y:e.y-i/2+v,width:t,height:i,label:e.label,style:e.style}}),M=new Map(C.map(e=>[e.id,e])),E=C.filter(e=>"space"!==e.block.type).map(e_),L=new Map(E.map(e=>[e.id,r(e)])),D=new Map(C.filter(e=>"block_arrow"===e.block.type).map(e=>[e.id,{kind:"polygon",points:ek(eb(e.block.directions),e.width,e.height).map(t=>({x:t.x+e.x+e.width/2,y:t.y+e.y+e.height/2}))}])),$=E.filter(e=>"composite"!==M.get(e.id).block.type),W=new Map;i.edges.forEach((e,t)=>{let i=e.start<e.end?`${e.start}\0${e.end}`:`${e.end}\0${e.start}`,r=W.get(i)??[];r.push(t),W.set(i,r)});let O=new Map;for(let e of W.values()){let t=Math.max(...e.map(e=>h[e].width)),i=Math.max(...e.map(e=>h[e].height));e.forEach((r,a)=>O.set(r,{slot:a,count:e.length,width:t,height:i}))}let B=new Set,j=new Set,F=(e,t)=>`${e}\0${t.x}\0${t.y}`,R=i.edges.map((t,i)=>{let l=M.get(t.start),o=M.get(t.end);if(!l||!o)throw Error(`Block edge ${t.id} references undeclared endpoints`);let n=h[i],{slot:c,count:d,width:p,height:u}=O.get(i),y=c-(d-1)/2,b=L.get(l.id)??r(e_(l)),f=L.get(o.id)??r(e_(o)),m,g={x:l.x+l.width/2,y:l.y+l.height/2},k={x:o.x+o.width/2,y:o.y+o.height/2},x=Math.abs(k.x-g.x)>=Math.abs(k.y-g.y),w=[k.x>=g.x?b.E:b.W,k.x>=g.x?f.W:f.E],_=[k.y>=g.y?b.S:b.N,k.y>=g.y?f.N:f.S],S=e=>B.has(F(l.id,e[0]))||j.has(F(o.id,e[1]));if(1===d&&l!==o&&S(x?w:_)&&!S(x?_:w)&&(x=!x),l===o){let e=28+c*(Math.max(p,u)+24);m=[b.E,{x:b.E.x+e,y:b.E.y},{x:b.E.x+e,y:l.y-e},{x:b.N.x,y:l.y-e},b.N]}else if(d>1&&0!==y){let e=(x?u:p)+24;if(x){let t=y<0?Math.min(l.y,o.y)+y*e:Math.max(l.y+l.height,o.y+o.height)+y*e,i=y<0?b.N:b.S,r=y<0?f.N:f.S;m=[i,{x:i.x,y:t},{x:r.x,y:t},r]}else{let t=y<0?Math.min(l.x,o.x)+y*e:Math.max(l.x+l.width,o.x+o.width)+y*e,i=y<0?b.W:b.E,r=y<0?f.W:f.E;m=[i,{x:t,y:i.y},{x:t,y:r.y},r]}}else if(x){let e=k.x>=g.x?b.E:b.W,t=k.x>=g.x?f.W:f.E,i=(e.x+t.x)/2+12*c;m=[e,{x:i,y:e.y},{x:i,y:t.y},t]}else{let e=k.y>=g.y?b.S:b.N,t=k.y>=g.y?f.N:f.S,i=(e.y+t.y)/2+12*c;m=[e,{x:e.x,y:i},{x:t.x,y:i},t]}j.add(F(l.id,m[0])),B.add(F(o.id,m.at(-1)));let v={id:t.id,source:l.id,target:o.id,style:"solid",hasArrowStart:"none"!==t.arrowTypeStart,hasArrowEnd:"none"!==t.arrowTypeEnd,points:e(m.map(e=>({...e})))};for(let[e,t,i]of(s("composite"===l.block.type||"composite"===o.block.type?E.filter(e=>"composite"!==M.get(e.id).block.type||e.id===l.id||e.id===o.id):$,[v],{direction:x?"LR":"TB"}),[[l,0,1],[o,(m=v.points).length-1,m.length-2]])){let r=D.get(e.id);if(!r)continue;let s=m[t],l=m[i],o=l.x-s.x,n=l.y-s.y,c=Math.abs(o)>Math.abs(n),d=a(r,c?o>0?"E":"W":n>0?"S":"N",c?s.y:s.x);d&&(m[t]=d)}let C=0;for(let e=1;e<m.length-1;e++)Math.hypot(m[e+1].x-m[e].x,m[e+1].y-m[e].y)>Math.hypot(m[C+1].x-m[C].x,m[C+1].y-m[C].y)&&(C=e);let A=m[C],I=m[C+1],T={x:(A.x+I.x)/2,y:(A.y+I.y)/2};return{...t,points:m,labelBlock:n,labelPosition:T}});if(R.some(e=>e.label)){let e=R.map(e=>({...e,source:e.start,target:e.end,style:"solid",hasArrowStart:!1,hasArrowEnd:!1}));for(let i=0;i<R.length;i++){let r=R[i],a=e[i];if(r.label)for(let{start:i,end:s}of r.points.slice(1).map((e,t)=>({start:r.points[t],end:e})).sort((e,t)=>Math.hypot(t.end.x-t.start.x,t.end.y-t.start.y)-Math.hypot(e.end.x-e.start.x,e.end.y-e.start.y))){let l=t(a,i,s,{nodes:$,edges:e,axis:{main:"x",cross:"y",sign:1},style:c,finalLabelClearance:!0});if(l){r.labelPosition=a.labelPosition=l;break}}}}let X=Math.min(d,...R.flatMap(e=>e.points.map(e=>e.x))),Y=Math.min(d+_,...R.flatMap(e=>e.points.map(e=>e.y))),U=Math.max(0,d-X),Z=Math.max(0,d+_-Y);if(U||Z){for(let e of C)e.x+=U,e.y+=Z;for(let e of R){for(let t of e.points)t.x+=U,t.y+=Z;e.labelPosition.x+=U,e.labelPosition.y+=Z}}let H=k.height+2*d+_+Z,G=w+U;for(let e of R)for(let t of e.points)H=Math.max(H,t.y+d),G=Math.max(G,t.x+d);return{model:i,width:G,height:H,nodes:C,edges:R,style:c,...x?{title:P(x,G,d)}:{}}}(l,i.renderOptions,i.styleFace,i.source.config.block))},projectPositioned:g(function({positioned:e}){let t=e=>{let t="block_arrow"===e.block.type?eg(eb(e.block.directions),e.label.width,e.label.height):{dx:0,dy:0};return{x:e.x+e.width/2+t.dx,y:"composite"===e.block.type?e.y+e.label.height/2+8:e.y+e.height/2+t.dy}},i=e.nodes.filter(e=>"composite"===e.block.type&&e.label.text).map(e=>{let i=t(e);return{id:`label:${e.id}`,text:e.label.text,bounds:f(e.label,i.x,i.y),container:y(e)}});return e.title&&i.push({id:"title",text:e.title.text,bounds:f(e.title.block,e.title.x,e.title.y),container:y(u(e))}),{version:1,bounds:{w:b(e.width),h:b(e.height)},nodes:e.nodes.filter(e=>!["composite","space"].includes(e.block.type??"")).map(e=>{let i=t(e);return{id:e.id,x:b(e.x),y:b(e.y),w:b(e.width),h:b(e.height),shape:e_(e).shape,label:e.label.text,role:"box",...m(e.label,i.x,i.y,e),...e.parentId?{parentId:e.parentId}:{}}}),edges:e.edges.map(e=>({id:e.id,from:e.start,to:e.end,path:e.points.map(e=>[b(e.x),b(e.y)]),...e.label?{label:{x:b(e.labelPosition.x),y:b(e.labelPosition.y),text:e.labelBlock.text,bounds:f(e.labelBlock,e.labelPosition.x,e.labelPosition.y)}}:{}})),groups:e.nodes.filter(e=>"composite"===e.block.type).map(t=>({id:t.id,x:b(t.x),y:b(t.y),w:b(t.width),h:b(t.height),label:t.block.label,members:e.nodes.filter(e=>e.parentId===t.id&&"space"!==e.block.type).map(e=>e.id),parentId:t.parentId})),labels:i}}),lowerScene:k(eS)});export{ev as default};
|