UNPKG

mermaid

Version:

Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.

2 lines (1 loc) 14.9 kB
import{a as z}from"./chunk-MNT3HHAC.mjs";import{c as Y,e as U,f as K}from"./chunk-TECWHJ6D.mjs";import{a as G}from"./chunk-F6PIGZHG.mjs";import{b as st,d as P,e as O}from"./chunk-JGXDHUYS.mjs";import{e as A}from"./chunk-TINYC7RT.mjs";import{g as j}from"./chunk-MIE3LDYP.mjs";import{$ as W,n as rt,y as X}from"./chunk-FE53TMRB.mjs";import{b as I,h as E}from"./chunk-L2B47AAZ.mjs";import{a as $}from"./chunk-QVIEFLGF.mjs";var et=$(async(f,t)=>{let r=W(),{theme:w,themeVariables:k,handDrawnSeed:b}=r,{clusterBkg:x,clusterBorder:C,borderColorArray:v}=k,d=C,{labelStyles:B,nodeStyles:n,borderStyles:m,backgroundStyles:e}=P(t),g=f.insert("g").attr("class","cluster swimlane "+(t.cssClasses||"")).attr("id",t.id).attr("data-id",t.id).attr("data-et","cluster").attr("data-look",t.look);j(g,t.colorIndex,w,v);let c=rt(r.flowchart.htmlLabels),a=t.direction==="LR",i=g.insert("g").attr("class","cluster-label swimlane-label"),p=await A(i,t.label,{style:t.labelStyle,useHtmlLabels:c,isNode:!0,width:t.width}),s=p.getBBox();if(c){let D=p.children[0],H=E(p);s=D.getBoundingClientRect(),H.attr("width",s.width),H.attr("height",s.height)}let y=t.padding??0,h=t.width<=s.width+y?s.width+y:t.width;t.width<=s.width+y?t.diff=(h-t.width)/2-y:t.diff=-y;let l=t.height,o=t.y-l/2,R=t.y+l/2,u=t.x-h/2,L=t.swimlaneContentTop!==void 0?t.swimlaneContentTop:o+l/3,T=a?4:0,N=s.height+2*T,S,M;if(a){let D=Math.max(N,s.height+2*T),H=u+D,V=Math.max(0,h-D);if(t.look==="handDrawn"){let q=G.svg(g),Q=O(t,{roughness:.7,fill:x,stroke:d,seed:b}),F=O(t,{roughness:.7,fill:"none",stroke:d,seed:b}),Z=q.rectangle(u,o,D,l,Q);S=g.insert(()=>Z,":first-child").attr("class","swimlane-title");let tt=q.rectangle(H,o,V,l,F);M=g.insert(()=>tt,":first-child").attr("class","swimlane-body"),S.select("path:nth-child(2)").attr("style",m.join(";")),S.select("path").attr("style",e.join(";").replace("fill","stroke"))}else S=g.insert("rect",":first-child"),M=g.insert("rect",":first-child"),S.attr("class","swimlane-title").attr("style",n).attr("x",u).attr("y",o).attr("width",D).attr("height",l).attr("fill",x).attr("stroke",d),M.attr("class","swimlane-body").attr("style",n).attr("x",H).attr("y",o).attr("width",V).attr("height",l).attr("fill","none").attr("stroke",d);let _=u+D/2,J=t.y;i.attr("transform",`translate(${_}, ${J}) rotate(-90) translate(${-s.width/2}, ${-s.height/2})`)}else{let D=Math.max(0,L-o),H=Math.min(N,D),V=o+H,_=Math.max(0,R-V),J=t.x-h/2;if(t.look==="handDrawn"){let F=G.svg(g),Z=O(t,{roughness:.7,fill:x,stroke:d,fillWeight:3,seed:b}),tt=O(t,{roughness:.7,fill:"none",stroke:d,seed:b}),lt=F.rectangle(J,o,h,H,Z);S=g.insert(()=>lt,":first-child").attr("class","swimlane-title");let ct=F.rectangle(J,V,h,_,tt);M=g.insert(()=>ct,":first-child").attr("class","swimlane-body"),S.select("path:nth-child(2)").attr("style",m.join(";")),S.select("path").attr("style",e.join(";").replace("fill","stroke"))}else S=g.insert("rect",":first-child"),M=g.insert("rect",":first-child"),S.attr("class","swimlane-title").attr("style",n).attr("x",J).attr("y",o).attr("width",h).attr("height",H).attr("fill",x).attr("stroke",d),M.attr("class","swimlane-body").attr("style",n).attr("x",J).attr("y",V).attr("width",h).attr("height",_).attr("fill","none").attr("stroke",d);let q=t.x-s.width/2,Q=o+(H-s.height)/2;i.attr("transform",`translate(${q}, ${Q})`)}if(I.trace("Swimlane data ",t,JSON.stringify(t)),B){let D=i.select("span");D&&D.attr("style",B)}return t.offsetX=0,t.width=h,t.height=l,t.offsetY=s.height-y/2,t.intersect=function(D){return Y(t,D)},{cluster:g,labelBBox:s}},"swimlane");var it=$(async(f,t)=>{I.info("Creating subgraph rect for ",t.id,t);let r=W(),{theme:w,themeVariables:k,handDrawnSeed:b}=r,{clusterBkg:x,clusterBorder:C,borderColorArray:v}=k,{labelStyles:d,nodeStyles:B,borderStyles:n,backgroundStyles:m}=P(t),e=f.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.domId).attr("data-look",t.look);j(e,t.colorIndex,w,v);let g=X(r),c=e.insert("g").attr("class","cluster-label "),a;t.labelType==="markdown"?a=await A(c,t.label,{style:t.labelStyle,useHtmlLabels:g,isNode:!0,width:t.width}):a=await K(c,t.label,t.labelStyle||"",!1,!0);let i=a.getBBox();if(X(r)){let u=a.children[0],L=E(a);i=u.getBoundingClientRect(),L.attr("width",i.width),L.attr("height",i.height)}let p=t.width<=i.width+t.padding?i.width+t.padding:t.width;t.width<=i.width+t.padding?t.diff=(p-t.width)/2-t.padding:t.diff=-t.padding;let s=t.height,y=t.x-p/2,h=t.y-s/2;I.trace("Data ",t,JSON.stringify(t));let l;if(t.look==="handDrawn"){let u=G.svg(e),L=O(t,{roughness:.7,fill:x,stroke:C,fillWeight:3,seed:b}),T=u.path(U(y,h,p,s,0),L);l=e.insert(()=>(I.debug("Rough node insert CXC",T),T),":first-child"),l.select("path:nth-child(2)").attr("style",n.join(";")),l.select("path").attr("style",m.join(";").replace("fill","stroke"))}else l=e.insert("rect",":first-child"),l.attr("style",B).attr("rx",t.rx).attr("ry",t.ry).attr("x",y).attr("y",h).attr("width",p).attr("height",s);let{subGraphTitleTopMargin:o}=z(r);if(c.attr("transform",`translate(${t.x-i.width/2}, ${t.y-t.height/2+o})`),d){let u=c.select("span");u&&u.attr("style",d)}let R=l.node().getBBox();return t.offsetX=0,t.width=R.width,t.height=R.height,t.offsetY=i.height-t.padding/2,t.intersect=function(u){return Y(t,u)},{cluster:e,labelBBox:i}},"rect"),ht=$((f,t)=>{let r=f.insert("g").attr("class","note-cluster").attr("id",t.domId),w=r.insert("rect",":first-child"),k=0*t.padding,b=k/2;w.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-b).attr("y",t.y-t.height/2-b).attr("width",t.width+k).attr("height",t.height+k).attr("fill","none");let x=w.node().getBBox();return t.width=x.width,t.height=x.height,t.intersect=function(C){return Y(t,C)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),ot=$(async(f,t)=>{let r=W(),{theme:w,themeVariables:k,handDrawnSeed:b}=r,{altBackground:x,borderColorArray:C,compositeBackground:v,compositeTitleBackground:d,nodeBorder:B}=k,n=f.insert("g").attr("class",t.cssClasses).attr("id",t.domId).attr("data-id",t.id).attr("data-look",t.look);j(n,t.colorIndex,w,C);let m=n.insert("g",":first-child"),e=n.insert("g").attr("class","cluster-label"),g=n.append("rect"),c=await K(e,t.label,t.labelStyle,void 0,!0),a=c.getBBox();if(X(r)){let T=c.children[0],N=E(c);a=T.getBoundingClientRect(),N.attr("width",a.width),N.attr("height",a.height)}let i=0*t.padding,p=i/2,s=(t.width<=a.width+t.padding?a.width+t.padding:t.width)+i;t.width<=a.width+t.padding?t.diff=(s-t.width)/2-t.padding:t.diff=-t.padding;let y=t.height+i,h=t.height+i-a.height-6,l=t.x-s/2,o=t.y-y/2;t.width=s;let R=t.y-t.height/2-p+a.height+2,u;if(t.look==="handDrawn"){let T=t.cssClasses.includes("statediagram-cluster-alt"),N=G.svg(n),S=t.rx||t.ry?N.path(U(l,o,s,y,10),{roughness:.7,fill:d,fillStyle:"solid",stroke:B,seed:b}):N.rectangle(l,o,s,y,{seed:b});u=n.insert(()=>S,":first-child");let M=N.rectangle(l,R,s,h,{fill:T?x:v,fillStyle:T?"hachure":"solid",stroke:B,seed:b});u=n.insert(()=>S,":first-child"),g=n.insert(()=>M),u.attr("class","outer"),g.attr("class","inner")}else u=m.insert("rect",":first-child"),u.attr("class","outer").attr("x",l).attr("y",o).attr("width",s).attr("height",y).attr("data-look",t.look),g.attr("class","inner").attr("x",l).attr("y",R).attr("width",s).attr("height",h);e.attr("transform",`translate(${t.x-a.width/2}, ${o+1-(X(r)?0:3)})`);let L=u.node().getBBox();return t.height=L.height,t.offsetX=0,t.offsetY=a.height-t.padding/2,t.labelBBox=a,t.intersect=function(T){return Y(t,T)},{cluster:n,labelBBox:a}},"roundedWithTitle"),nt=$(async(f,t)=>{I.info("Creating subgraph rect for ",t.id,t);let r=W(),{themeVariables:w,handDrawnSeed:k}=r,{clusterBkg:b,clusterBorder:x}=w,{labelStyles:C,nodeStyles:v,borderStyles:d,backgroundStyles:B}=P(t),n=f.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.domId).attr("data-look",t.look),m=X(r),e=n.insert("g").attr("class","cluster-label "),g=await A(e,t.label,{style:t.labelStyle,useHtmlLabels:m,isNode:!0,width:t.width}),c=g.getBBox();if(X(r)){let o=g.children[0],R=E(g);c=o.getBoundingClientRect(),R.attr("width",c.width),R.attr("height",c.height)}let a=t.width<=c.width+t.padding?c.width+t.padding:t.width;t.width<=c.width+t.padding?t.diff=(a-t.width)/2-t.padding:t.diff=-t.padding;let i=t.height,p=t.x-a/2,s=t.y-i/2;I.trace("Data ",t,JSON.stringify(t));let y;if(t.look==="handDrawn"){let o=G.svg(n),R=O(t,{roughness:.7,fill:b,stroke:x,fillWeight:4,seed:k}),u=o.path(U(p,s,a,i,t.rx),R);y=n.insert(()=>(I.debug("Rough node insert CXC",u),u),":first-child"),y.select("path:nth-child(2)").attr("style",d.join(";")),y.select("path").attr("style",B.join(";").replace("fill","stroke"))}else y=n.insert("rect",":first-child"),y.attr("style",v).attr("rx",t.rx).attr("ry",t.ry).attr("x",p).attr("y",s).attr("width",a).attr("height",i);let{subGraphTitleTopMargin:h}=z(r);if(e.attr("transform",`translate(${t.x-c.width/2}, ${t.y-t.height/2+h})`),C){let o=e.select("span");o&&o.attr("style",C)}let l=y.node().getBBox();return t.offsetX=0,t.width=l.width,t.height=l.height,t.offsetY=c.height-t.padding/2,t.intersect=function(o){return Y(t,o)},{cluster:n,labelBBox:c}},"kanbanSection"),gt=$((f,t)=>{let r=W(),{theme:w,themeVariables:k,handDrawnSeed:b}=r,{altBackground:x,nodeBorder:C,borderColorArray:v}=k,d=f.insert("g").attr("class",t.cssClasses).attr("id",t.domId).attr("data-look",t.look);j(d,t.colorIndex,w,v);let B=d.insert("g",":first-child"),n=0*t.padding,m=t.width+n;t.diff=-t.padding;let e=t.height+n,g=t.x-m/2,c=t.y-e/2;t.width=m;let a;if(t.look==="handDrawn"){let s=G.svg(d).rectangle(g,c,m,e,{fill:x??"#efefef",fillStyle:"solid",roughness:.5,strokeLineDash:[5],stroke:C,seed:b});a=d.insert(()=>s,":first-child").attr("class","divider")}else{a=B.insert("rect",":first-child");let p="outer";t.look,p="divider",a.attr("class",p).attr("x",g).attr("y",c).attr("width",m).attr("height",e).attr("data-look",t.look)}let i=a.node().getBBox();return t.height=i.height,t.offsetX=0,t.offsetY=0,t.intersect=function(p){return Y(t,p)},{cluster:d,labelBBox:{}}},"divider"),ft=$(async(f,t,r)=>{I.info(`Creating ${r.cssClass} for `,t.id,t);let w=W(),{theme:k,themeVariables:b,handDrawnSeed:x}=w,{borderColorArray:C}=b,{labelStyles:v,borderStyles:d}=P(t),B=f.insert("g").attr("class","cluster "+r.cssClass+" "+t.cssClasses).attr("id",t.domId??t.id).attr("data-look",t.look);j(B,t.colorIndex,k,C);let n=X(w),m=B.insert("g").attr("class","cluster-label"),e={width:0,height:0},g=t.label?.trim();if(g){let h;if(t.labelType==="markdown"?h=await A(m,t.label,{style:t.labelStyle,useHtmlLabels:n,isNode:!0,width:t.width}):h=await K(m,t.label,t.labelStyle||"",!1,!0),e=h.getBBox(),n){let l=h.children[0],o=E(h);e=l.getBoundingClientRect(),o.attr("width",e.width),o.attr("height",e.height)}}let c=t.width<=e.width+t.padding?e.width+t.padding:t.width;t.width<=e.width+t.padding?t.diff=(c-t.width)/2-t.padding:t.diff=-t.padding;let a=t.height,i=t.x-c/2,p=t.y-a/2,s;if(t.look==="handDrawn"){let h=G.svg(B),l=O(t,{roughness:r.roughness,fill:r.fill,stroke:r.stroke,strokeWidth:r.strokeWidth,seed:x,...r.fill==="none"?{fillWeight:0}:{fillStyle:"solid"},...r.strokeDash?{strokeLineDash:r.strokeDash}:{}}),o=h.path(U(i,p,c,a,r.rx),l);s=B.insert(()=>o,":first-child"),s.select("path:nth-child(2)").attr("style",d.join(";"))}else s=B.insert("rect",":first-child"),s.attr("rx",r.rx).attr("ry",r.rx).attr("x",i).attr("y",p).attr("width",c).attr("height",a).attr("fill",r.fill).attr("stroke",r.stroke).attr("stroke-width",r.strokeWidth+"px"),r.strokeDash&&s.attr("stroke-dasharray",r.strokeDash.join(", "));if(g){let{subGraphTitleTopMargin:h}=z(w);if(m.attr("transform",`translate(${t.x-e.width/2}, ${t.y-t.height/2+h})`),v){let l=m.select("span");l&&l.attr("style",v)}}let y=s.node().getBBox();return t.offsetX=0,t.width=y.width,t.height=y.height,t.offsetY=e.height-t.padding/2,t.intersect=function(h){return Y(t,h)},{cluster:B,labelBBox:e}},"createContainerGroup"),dt=$(async(f,t)=>{let{themeVariables:r}=W(),w=r.flowContainerStroke||r.secondaryBorderColor;return ft(f,t,{cssClass:"flow-cluster",rx:10,fill:"none",stroke:w,strokeWidth:.75,roughness:.7})},"flowGroup"),ut=$((f,t)=>{let r=f.boundaryType||"rect",w=r==="package"?20:f.padding,k=r==="package"?t.height+10:0,b=Math.max(f.width,t.width+w),x=r==="package"?Math.max(f.height,k+f.padding*2):f.height,C=f.x-b/2,v=f.y-x/2;return{boundaryType:r,width:b,height:x,x:C,y:v,bodyY:v+k,bodyHeight:x-k,tabHeight:k,tabWidth:r==="package"?Math.min(b,Math.max(80,t.width+20)):0}},"getUsecaseSystemBoundaryGeometry"),yt=$(async(f,t)=>{I.info("Creating usecase system boundary for ",t.id,t);let r=W(),{theme:w,themeVariables:k,handDrawnSeed:b}=r,{clusterBkg:x,clusterBorder:C,borderColorArray:v}=k,{labelStyles:d,nodeStyles:B}=P(t),{stylesMap:n}=st(t),m=t.boundaryType||"rect",e=f.insert("g").attr("class",`cluster usecase-system-boundary usecase-system-boundary-${m} ${t.cssClasses}`).attr("id",typeof t.domId=="string"?t.domId:t.id).attr("data-boundary-type",m).attr("data-look",t.look);j(e,t.colorIndex,w,v);let g=X(r),c=e.insert("g").attr("class","cluster-label system-boundary-title"),a=await A(c,t.label,{style:d,useHtmlLabels:g,isNode:!0}),i=a.getBBox();if(g){let S=a.children[0],M=E(a);i=S.getBoundingClientRect(),M.attr("width",i.width),M.attr("height",i.height)}let p=ut(t,i),{width:s,height:y,x:h,y:l,bodyY:o,bodyHeight:R,tabHeight:u,tabWidth:L}=p;t.diff=t.width<=i.width+t.padding?(s-t.width)/2-t.padding:-t.padding;let T=O(t,{fill:n.get("fill")||x,stroke:n.get("stroke")||C,strokeWidth:n.get("stroke-width")?.replace("px","")||1,seed:b});if(t.look==="handDrawn"){let S=G.svg(e),M=S.rectangle(h,o,s,R,T);if(e.insert(()=>M,":first-child").attr("class","boundary-body label-container"),m==="package"){let D=S.rectangle(h,l,L,u,T);e.insert(()=>D,":first-child").attr("class","boundary-tab system-boundary-package-tab label-container")}}else e.insert("rect",":first-child").attr("class","boundary-body label-container").attr("style",B).attr("x",h).attr("y",o).attr("width",s).attr("height",R),m==="package"&&e.insert("rect",":first-child").attr("class","boundary-tab system-boundary-package-tab label-container").attr("style",B).attr("x",h).attr("y",l).attr("width",L).attr("height",u);let{subGraphTitleTopMargin:N}=z(r);return m==="package"?c.attr("transform",`translate(${h+(L-i.width)/2}, ${l+(u-i.height)/2})`):c.attr("transform",`translate(${t.x-i.width/2}, ${l+N})`),d&&(c.attr("style",d),c.select("span").attr("style",d)),t.offsetX=0,t.width=s,t.height=y,t.offsetY=i.height-t.padding/2,t.labelBBox=i,t.intersect=function(S){return Y(t,S)},{cluster:e,labelBBox:i}},"usecaseSystemBoundary"),wt=it,bt={rect:it,squareRect:wt,roundedWithTitle:ot,noteGroup:ht,divider:gt,kanbanSection:nt,flowGroup:dt,usecaseSystemBoundary:yt,swimlane:et},pt=new Set(["noteGroup","divider"]),Pt=$(f=>!pt.has(f??"rect"),"clusterPaintsTitle"),at=new Map,Vt=$(async(f,t)=>{let r=t.shape||"rect",w=await bt[r](f,t);return at.set(t.id,w),w},"insertCluster");var Jt=$(()=>{at=new Map},"clear");export{Pt as a,Vt as b,Jt as c};