"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("./layers.BvEEOMd2.js"),t=require("./layers.BUx-KQN_.js"),_=require("./layers.BLd2spTm.js"),N=require("./layers.DMby8wC2.js");require("./layers.BENyixGk.js");require("lodash-es/memoize.js");require("lodash-es/merge.js");require("lodash-es/isEmpty.js");require("lodash-es");require("./layers.Cyzu9PKQ.js");const k=s=>t.common$1.sanitizeText(s,t.getConfig());let w={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const q=function(s,o,f,i){const e=Object.keys(s);t.log$1.info("keys:",e),t.log$1.info(s),e.forEach(function(r){var l,c;const n=s[r],d={shape:"rect",id:n.id,domId:n.domId,labelText:k(n.id),labelStyle:"",style:"fill: none; stroke: black",padding:((l=t.getConfig().flowchart)==null?void 0:l.padding)??((c=t.getConfig().class)==null?void 0:c.padding)};o.setNode(n.id,d),$(n.classes,o,f,i,n.id),t.log$1.info("setNode",d)})},$=function(s,o,f,i,e){const r=Object.keys(s);t.log$1.info("keys:",r),t.log$1.info(s),r.filter(l=>s[l].parent==e).forEach(function(l){var c,n;const a=s[l],d=a.cssClasses.join(" "),g=t.getStylesFromArray(a.styles),p=a.label??a.id,y=0,u={labelStyle:g.labelStyle,shape:"class_box",labelText:k(p),classData:a,rx:y,ry:y,class:d,style:g.style,id:a.id,domId:a.domId,tooltip:i.db.getTooltip(a.id,e)||"",haveCallback:a.haveCallback,link:a.link,width:a.type==="group"?500:void 0,type:a.type,padding:((c=t.getConfig().flowchart)==null?void 0:c.padding)??((n=t.getConfig().class)==null?void 0:n.padding)};o.setNode(a.id,u),e&&o.setParent(a.id,e),t.log$1.info("setNode",u)})},D=function(s,o,f,i){t.log$1.info(s),s.forEach(function(e,r){var l,c;const n=e,a="",d={labelStyle:"",style:""},g=n.text,p=0,b={labelStyle:d.labelStyle,shape:"note",labelText:k(g),noteData:n,rx:p,ry:p,class:a,style:d.style,id:n.id,domId:n.id,tooltip:"",type:"note",padding:((l=t.getConfig().flowchart)==null?void 0:l.padding)??((c=t.getConfig().class)==null?void 0:c.padding)};if(o.setNode(n.id,b),t.log$1.info("setNode",b),!n.class||!(n.class in i))return;const u=f+r,x={id:`edgeNote${u}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:t.interpolateToCurve(w.curve,t.curveLinear)};o.setEdge(n.id,n.class,x,u)})},E=function(s,o){const f=t.getConfig().flowchart;let i=0;s.forEach(function(e){var r;i++;const l={classes:"relation",pattern:e.relation.lineType==1?"dashed":"solid",id:`id_${e.id1}_${e.id2}_${i}`,arrowhead:e.type==="arrow_open"?"none":"normal",startLabelRight:e.relationTitle1==="none"?"":e.relationTitle1,endLabelLeft:e.relationTitle2==="none"?"":e.relationTitle2,arrowTypeStart:C(e.relation.type1),arrowTypeEnd:C(e.relation.type2),style:"fill:none",labelStyle:"",curve:t.interpolateToCurve(f==null?void 0:f.curve,t.curveLinear)};if(t.log$1.info(l,e),e.style!==void 0){const c=t.getStylesFromArray(e.style);l.style=c.style,l.labelStyle=c.labelStyle}e.text=e.title,e.text===void 0?e.style!==void 0&&(l.arrowheadStyle="fill: #333"):(l.arrowheadStyle="fill: #333",l.labelpos="c",((r=t.getConfig().flowchart)==null?void 0:r.htmlLabels)??t.getConfig().htmlLabels?(l.labelType="html",l.label='<span class="edgeLabel">'+e.text+"</span>"):(l.labelType="text",l.label=e.text.replace(t.common$1.lineBreakRegex,`
`),e.style===void 0&&(l.style=l.style||"stroke: #333; stroke-width: 1.5px;fill:none"),l.labelStyle=l.labelStyle.replace("color:","fill:"))),o.setEdge(e.id1,e.id2,l,i)})},A=function(s){w={...w,...s}},M=async function(s,o,f,i){t.log$1.info("Drawing class - ",o);const e=t.getConfig().flowchart??t.getConfig().class,r=t.getConfig().securityLevel;t.log$1.info("config:",e);const l=(e==null?void 0:e.nodeSpacing)??50,c=(e==null?void 0:e.rankSpacing)??50,n=new _.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:i.db.getDirection(),nodesep:l,ranksep:c,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),a=i.db.getNamespaces(),d=i.db.getClasses(),g=i.db.getRelations(),p=i.db.getNotes();t.log$1.info(g),q(a,n,o,i),$(d,n,o,i),E(g,n),D(p,n,g.length+1,d);let y;r==="sandbox"&&(y=t.select("#i"+o));const b=r==="sandbox"?t.select(y.nodes()[0].contentDocument.body):t.select("body"),u=b.select(`[id="${o}"]`),x=b.select("#"+o+" g");if(await N.render(x,n,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",o),t.utils.insertTitle(u,"classTitleText",(e==null?void 0:e.titleTopMargin)??5,i.db.getDiagramTitle()),t.setupGraphViewbox$1(n,u,e==null?void 0:e.diagramPadding,e==null?void 0:e.useMaxWidth),!(e!=null&&e.htmlLabels)){const S=r==="sandbox"?y.nodes()[0].contentDocument:document,L=S.querySelectorAll('[id="'+o+'"] .edgeLabel .label');for(const m of L){const T=m.getBBox(),h=S.createElementNS("http://www.w3.org/2000/svg","rect");h.setAttribute("rx",0),h.setAttribute("ry",0),h.setAttribute("width",T.width),h.setAttribute("height",T.height),m.insertBefore(h,m.firstChild)}}};function C(s){let o;switch(s){case 0:o="aggregation";break;case 1:o="extension";break;case 2:o="composition";break;case 3:o="dependency";break;case 4:o="lollipop";break;default:o="none"}return o}const I={setConf:A,draw:M},B={parser:v.parser$1,db:v.db,renderer:I,styles:v.styles,init:s=>{s.class||(s.class={}),s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute,v.db.clear()}};exports.diagram=B;
