cc-viewer 1.6.271 → 1.6.272

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.
Files changed (78) hide show
  1. package/dist/assets/App-KL1CbE6B.js +1 -0
  2. package/dist/assets/App-TGGslOeT.css +1 -0
  3. package/dist/assets/{MdxEditorPanel-B7oOvR3k.js → MdxEditorPanel-B9-2mx30.js} +1 -1
  4. package/dist/assets/Mobile-BzYULksa.js +1 -0
  5. package/dist/assets/{_baseUniq-Dgkw4IXM.js → _baseUniq-CPJrFyUF.js} +1 -1
  6. package/dist/assets/{arc-AiHQLijx.js → arc-BLBrFElt.js} +1 -1
  7. package/dist/assets/{architectureDiagram-Q4EWVU46-CPRvAIHK.js → architectureDiagram-Q4EWVU46-CbnBsMiQ.js} +1 -1
  8. package/dist/assets/{blockDiagram-DXYQGD6D-CK2cwrfX.js → blockDiagram-DXYQGD6D-0mYr6-Fl.js} +1 -1
  9. package/dist/assets/{c4Diagram-AHTNJAMY-BP-UBbgv.js → c4Diagram-AHTNJAMY-CS7vcr0z.js} +1 -1
  10. package/dist/assets/{channel-Ny3Nm_-t.js → channel-CF3zZzSR.js} +1 -1
  11. package/dist/assets/{chunk-4BX2VUAB-DdsULqPZ.js → chunk-4BX2VUAB-1FZYtnJ7.js} +1 -1
  12. package/dist/assets/{chunk-4TB4RGXK-BDSjQHh0.js → chunk-4TB4RGXK-COs1qui5.js} +1 -1
  13. package/dist/assets/{chunk-55IACEB6-DrKr3wBa.js → chunk-55IACEB6-p77Qw3wN.js} +1 -1
  14. package/dist/assets/{chunk-EDXVE4YY-o_0SUbAB.js → chunk-EDXVE4YY-5qaIrQKg.js} +1 -1
  15. package/dist/assets/{chunk-FMBD7UC4-Ca_AgqWi.js → chunk-FMBD7UC4-DmCR8mDZ.js} +1 -1
  16. package/dist/assets/{chunk-OYMX7WX6-CyWWbq5o.js → chunk-OYMX7WX6-D6xDfgW3.js} +1 -1
  17. package/dist/assets/{chunk-QZHKN3VN-5rXHErSL.js → chunk-QZHKN3VN-B6cmUU0N.js} +1 -1
  18. package/dist/assets/{chunk-YZCP3GAM-DznXBadU.js → chunk-YZCP3GAM-l-OyOqnn.js} +1 -1
  19. package/dist/assets/classDiagram-6PBFFD2Q-BiCYgTHO.js +1 -0
  20. package/dist/assets/classDiagram-v2-HSJHXN6E-BiCYgTHO.js +1 -0
  21. package/dist/assets/clone-ChTCnPsO.js +1 -0
  22. package/dist/assets/{cose-bilkent-S5V4N54A-BhGyix0v.js → cose-bilkent-S5V4N54A-CEzaS8XS.js} +1 -1
  23. package/dist/assets/{dagre-KV5264BT-CzzHxIvc.js → dagre-KV5264BT-B3U2njWW.js} +1 -1
  24. package/dist/assets/{diagram-5BDNPKRD-tu3BXl0c.js → diagram-5BDNPKRD-BRSDbyBr.js} +1 -1
  25. package/dist/assets/{diagram-G4DWMVQ6-C6WkK7sj.js → diagram-G4DWMVQ6-BZfOi9B7.js} +1 -1
  26. package/dist/assets/{diagram-MMDJMWI5-DBeD_WW-.js → diagram-MMDJMWI5-CWpb3Cg0.js} +1 -1
  27. package/dist/assets/{diagram-TYMM5635-BXUyHHJ4.js → diagram-TYMM5635-CTJyBSVj.js} +1 -1
  28. package/dist/assets/{erDiagram-SMLLAGMA-Bye5tnW2.js → erDiagram-SMLLAGMA-CHtTRd5S.js} +1 -1
  29. package/dist/assets/{flowDiagram-DWJPFMVM-C3pYOs38.js → flowDiagram-DWJPFMVM-Bda8X-WJ.js} +1 -1
  30. package/dist/assets/{ganttDiagram-T4ZO3ILL-DxXkI_FW.js → ganttDiagram-T4ZO3ILL-CPfnGu5V.js} +1 -1
  31. package/dist/assets/{gitGraphDiagram-UUTBAWPF-nsxsXsGX.js → gitGraphDiagram-UUTBAWPF-B5QxesQg.js} +1 -1
  32. package/dist/assets/{graph-Da-Z9hB7.js → graph-ChltdhTU.js} +1 -1
  33. package/dist/assets/{index-4gmR7Eun.js → index-B7lK5fJz.js} +1 -1
  34. package/dist/assets/{index-C8w5Sxw3.js → index-BK4sui_O.js} +1 -1
  35. package/dist/assets/{index-CA8JGh5J.js → index-C2fhupP6.js} +1 -1
  36. package/dist/assets/{index-D7XF7UJ8.js → index-C5PA4OJg.js} +1 -1
  37. package/dist/assets/{index-C0PhJcXG.js → index-CfEkC3bc.js} +1 -1
  38. package/dist/assets/{index-Brh2V8V0.js → index-DyGa-jNv.js} +1 -1
  39. package/dist/assets/{index-CLfbZzwF.js → index-Yhf-Rgbr.js} +2 -2
  40. package/dist/assets/{index-CsuhosSl.js → index-yClPXlMf.js} +1 -1
  41. package/dist/assets/{infoDiagram-42DDH7IO-Ca9j90t5.js → infoDiagram-42DDH7IO-CD4TS4O2.js} +1 -1
  42. package/dist/assets/{ishikawaDiagram-UXIWVN3A-DhjV0XPD.js → ishikawaDiagram-UXIWVN3A-jhiYabQ7.js} +1 -1
  43. package/dist/assets/{journeyDiagram-VCZTEJTY-CRSHLZPV.js → journeyDiagram-VCZTEJTY-BDzIXxxt.js} +1 -1
  44. package/dist/assets/{jszip.min-CcCCdMNW.js → jszip.min-CuGGBMI4.js} +1 -1
  45. package/dist/assets/{kanban-definition-6JOO6SKY-Bg0CUwgc.js → kanban-definition-6JOO6SKY-D34MYATQ.js} +1 -1
  46. package/dist/assets/{layout-CWNu13XT.js → layout-D6sLAapX.js} +1 -1
  47. package/dist/assets/{linear-Dcmw1639.js → linear-CFV4P-wn.js} +1 -1
  48. package/dist/assets/{mermaid.core-1heNIJ5f.js → mermaid.core-YmJi7T-s.js} +2 -2
  49. package/dist/assets/{min-CC9CkAxn.js → min-akJQqRMn.js} +1 -1
  50. package/dist/assets/{mindmap-definition-QFDTVHPH-Gr0ex_Ny.js → mindmap-definition-QFDTVHPH-w5zaJyrN.js} +1 -1
  51. package/dist/assets/{pieDiagram-DEJITSTG-D7P3sUJY.js → pieDiagram-DEJITSTG-B6EM4Ow6.js} +1 -1
  52. package/dist/assets/{quadrantDiagram-34T5L4WZ-Bov3lcpV.js → quadrantDiagram-34T5L4WZ-2TmBxFy-.js} +1 -1
  53. package/dist/assets/{requirementDiagram-MS252O5E-BcLptaOU.js → requirementDiagram-MS252O5E-EOjvbxUy.js} +1 -1
  54. package/dist/assets/{sankeyDiagram-XADWPNL6-B2qAUsON.js → sankeyDiagram-XADWPNL6-BmTQD5eT.js} +1 -1
  55. package/dist/assets/seqResourceLoaders-B2bHcUzO.js +2 -0
  56. package/dist/assets/{seqResourceLoaders-N07Gfom9.css → seqResourceLoaders-CaZOVtSc.css} +1 -1
  57. package/dist/assets/{sequenceDiagram-FGHM5R23-Do62Uz-a.js → sequenceDiagram-FGHM5R23-CLjtqA1D.js} +1 -1
  58. package/dist/assets/{stateDiagram-FHFEXIEX-Wu8aqa8C.js → stateDiagram-FHFEXIEX-Cbq90iZ8.js} +1 -1
  59. package/dist/assets/{stateDiagram-v2-QKLJ7IA2-BfYq7Jgo.js → stateDiagram-v2-QKLJ7IA2-BKDg-3t_.js} +1 -1
  60. package/dist/assets/{timeline-definition-GMOUNBTQ-DYfz5xD6.js → timeline-definition-GMOUNBTQ-f3kEDay0.js} +1 -1
  61. package/dist/assets/{vendor-antd-BG1SvzuN.js → vendor-antd-5xE7sz6B.js} +1 -1
  62. package/dist/assets/{vendor-codemirror-8NDhydlF.js → vendor-codemirror-ib-jPbXC.js} +1 -1
  63. package/dist/assets/{vendor-mdxeditor-BB4hhpxM.js → vendor-mdxeditor-BdKMdw6O.js} +2 -2
  64. package/dist/assets/{vendor-qrcode-DMsNGQ10.js → vendor-qrcode-vKlE-WYu.js} +1 -1
  65. package/dist/assets/{vendor-virtuoso-BUT96ALa.js → vendor-virtuoso-DOIfjLfU.js} +1 -1
  66. package/dist/assets/{vennDiagram-DHZGUBPP-CGr-cc7e.js → vennDiagram-DHZGUBPP-0GDSFVnH.js} +1 -1
  67. package/dist/assets/{wardley-RL74JXVD-BN899vMf.js → wardley-RL74JXVD-B2rj5j7G.js} +1 -1
  68. package/dist/assets/{wardleyDiagram-NUSXRM2D-xUsI1E7h.js → wardleyDiagram-NUSXRM2D-COVTciJP.js} +1 -1
  69. package/dist/assets/{xychartDiagram-5P7HB3ND-woQrslzB.js → xychartDiagram-5P7HB3ND-DXoLnGxX.js} +1 -1
  70. package/dist/index.html +4 -4
  71. package/package.json +1 -1
  72. package/dist/assets/App-DOYmReD4.css +0 -1
  73. package/dist/assets/App-LEYaH-CM.js +0 -1
  74. package/dist/assets/Mobile-Cwf21Pmq.js +0 -1
  75. package/dist/assets/classDiagram-6PBFFD2Q-CLYcbnwx.js +0 -1
  76. package/dist/assets/classDiagram-v2-HSJHXN6E-CLYcbnwx.js +0 -1
  77. package/dist/assets/clone-5GFhU8Pv.js +0 -1
  78. package/dist/assets/seqResourceLoaders-CmFg0jyW.js +0 -2
@@ -1 +1 @@
1
- var _a,_b;import{g as getIconStyles}from"./chunk-FMBD7UC4-Ca_AgqWi.js";import{_ as __name,C as getConfig,d as select,e as configureSvgSize,l as log,y as clear,A as rgba,ah as getLineFunctionsWithOffset,Q as line,R as curveBasis,c as getConfig2,N as getUrl,ai as getEffectiveHtmlLabels,aj as createText,ak as computeLabelTransform,al as getSubGraphTitleMargins,u as utils_default,k as common_default,am as getStylesFromArray,i as sanitizeText,an as decodeEntities,ao as configureLabelImages}from"./mermaid.core-1heNIJ5f.js";import{c as clone}from"./clone-5GFhU8Pv.js";import{G as Graph}from"./graph-Da-Z9hB7.js";import{c as channel}from"./channel-Ny3Nm_-t.js";import"./vendor-mdxeditor-BB4hhpxM.js";import"./vendor-antd-BG1SvzuN.js";import"./vendor-codemirror-8NDhydlF.js";import"./vendor-markdown-BFrYfpb0.js";import"./_baseUniq-Dgkw4IXM.js";var parser=function(){var o=__name(function(k,v,o2,l){for(o2=o2||{},l=k.length;l--;o2[k[l]]=v);return o2},"o"),$V0=[1,15],$V1=[1,7],$V2=[1,13],$V3=[1,14],$V4=[1,19],$V5=[1,16],$V6=[1,17],$V7=[1,18],$V8=[8,30],$V9=[8,10,21,28,29,30,31,39,43,46],$Va=[1,23],$Vb=[1,24],$Vc=[8,10,15,16,21,28,29,30,31,39,43,46],$Vd=[8,10,15,16,21,27,28,29,30,31,39,43,46],$Ve=[1,49],parser2={trace:__name(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:__name(function(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 4:yy.getLogger().debug("Rule: separator (NL) ");break;case 5:yy.getLogger().debug("Rule: separator (Space) ");break;case 6:yy.getLogger().debug("Rule: separator (EOF) ");break;case 7:yy.getLogger().debug("Rule: hierarchy: ",$$[$0-1]),yy.setHierarchy($$[$0-1]);break;case 8:yy.getLogger().debug("Stop NL ");break;case 9:yy.getLogger().debug("Stop EOF ");break;case 10:yy.getLogger().debug("Stop NL2 ");break;case 11:yy.getLogger().debug("Stop EOF2 ");break;case 12:yy.getLogger().debug("Rule: statement: ",$$[$0]),"number"==typeof $$[$0].length?this.$=$$[$0]:this.$=[$$[$0]];break;case 13:yy.getLogger().debug("Rule: statement #2: ",$$[$0-1]),this.$=[$$[$0-1]].concat($$[$0]);break;case 14:yy.getLogger().debug("Rule: link: ",$$[$0],yytext),this.$={edgeTypeStr:$$[$0],label:""};break;case 15:yy.getLogger().debug("Rule: LABEL link: ",$$[$0-3],$$[$0-1],$$[$0]),this.$={edgeTypeStr:$$[$0],label:$$[$0-1]};break;case 18:const num=parseInt($$[$0]),spaceId=yy.generateId();this.$={id:spaceId,type:"space",label:"",width:num,children:[]};break;case 23:yy.getLogger().debug("Rule: (nodeStatement link node) ",$$[$0-2],$$[$0-1],$$[$0]," typestr: ",$$[$0-1].edgeTypeStr);const edgeData=yy.edgeStrToEdgeData($$[$0-1].edgeTypeStr);this.$=[{id:$$[$0-2].id,label:$$[$0-2].label,type:$$[$0-2].type,directions:$$[$0-2].directions},{id:$$[$0-2].id+"-"+$$[$0].id,start:$$[$0-2].id,end:$$[$0].id,label:$$[$0-1].label,type:"edge",directions:$$[$0].directions,arrowTypeEnd:edgeData,arrowTypeStart:"arrow_open"},{id:$$[$0].id,label:$$[$0].label,type:yy.typeStr2Type($$[$0].typeStr),directions:$$[$0].directions}];break;case 24:yy.getLogger().debug("Rule: nodeStatement (abc88 node size) ",$$[$0-1],$$[$0]),this.$={id:$$[$0-1].id,label:$$[$0-1].label,type:yy.typeStr2Type($$[$0-1].typeStr),directions:$$[$0-1].directions,widthInColumns:parseInt($$[$0],10)};break;case 25:yy.getLogger().debug("Rule: nodeStatement (node) ",$$[$0]),this.$={id:$$[$0].id,label:$$[$0].label,type:yy.typeStr2Type($$[$0].typeStr),directions:$$[$0].directions,widthInColumns:1};break;case 26:yy.getLogger().debug("APA123",this?this:"na"),yy.getLogger().debug("COLUMNS: ",$$[$0]),this.$={type:"column-setting",columns:"auto"===$$[$0]?-1:parseInt($$[$0])};break;case 27:yy.getLogger().debug("Rule: id-block statement : ",$$[$0-2],$$[$0-1]),yy.generateId(),this.$={...$$[$0-2],type:"composite",children:$$[$0-1]};break;case 28:yy.getLogger().debug("Rule: blockStatement : ",$$[$0-2],$$[$0-1],$$[$0]);const id=yy.generateId();this.$={id:id,type:"composite",label:"",children:$$[$0-1]};break;case 29:yy.getLogger().debug("Rule: node (NODE_ID separator): ",$$[$0]),this.$={id:$$[$0]};break;case 30:yy.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",$$[$0-1],$$[$0]),this.$={id:$$[$0-1],label:$$[$0].label,typeStr:$$[$0].typeStr,directions:$$[$0].directions};break;case 31:yy.getLogger().debug("Rule: dirList: ",$$[$0]),this.$=[$$[$0]];break;case 32:yy.getLogger().debug("Rule: dirList: ",$$[$0-1],$$[$0]),this.$=[$$[$0-1]].concat($$[$0]);break;case 33:yy.getLogger().debug("Rule: nodeShapeNLabel: ",$$[$0-2],$$[$0-1],$$[$0]),this.$={typeStr:$$[$0-2]+$$[$0],label:$$[$0-1]};break;case 34:yy.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",$$[$0-3],$$[$0-2]," #3:",$$[$0-1],$$[$0]),this.$={typeStr:$$[$0-3]+$$[$0],label:$$[$0-2],directions:$$[$0-1]};break;case 35:case 36:this.$={type:"classDef",id:$$[$0-1].trim(),css:$$[$0].trim()};break;case 37:this.$={type:"applyClass",id:$$[$0-1].trim(),styleClass:$$[$0].trim()};break;case 38:this.$={type:"applyStyles",id:$$[$0-1].trim(),stylesStr:$$[$0].trim()}}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:$V0,11:3,13:4,19:5,20:6,21:$V1,22:8,23:9,24:10,25:11,26:12,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7},{8:[1,20]},o($V8,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:$V0,21:$V1,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7}),o($V9,[2,16],{14:22,15:$Va,16:$Vb}),o($V9,[2,17]),o($V9,[2,18]),o($V9,[2,19]),o($V9,[2,20]),o($V9,[2,21]),o($V9,[2,22]),o($Vc,[2,25],{27:[1,25]}),o($V9,[2,26]),{19:26,26:12,31:$V4},{10:$V0,11:27,13:4,19:5,20:6,21:$V1,22:8,23:9,24:10,25:11,26:12,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},o($Vd,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},o($V8,[2,13]),{26:35,31:$V4},{31:[2,14]},{17:[1,36]},o($Vc,[2,24]),{10:$V0,11:37,13:4,14:22,15:$Va,16:$Vb,19:5,20:6,21:$V1,22:8,23:9,24:10,25:11,26:12,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},o($Vd,[2,30]),{18:[1,43]},{18:[1,44]},o($Vc,[2,23]),{18:[1,45]},{30:[1,46]},o($V9,[2,28]),o($V9,[2,35]),o($V9,[2,36]),o($V9,[2,37]),o($V9,[2,38]),{36:[1,47]},{33:48,34:$Ve},{15:[1,50]},o($V9,[2,27]),o($Vd,[2,33]),{38:[1,51]},{33:52,34:$Ve,38:[2,31]},{31:[2,15]},o($Vd,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:__name(function(str,hash){if(!hash.recoverable){var error=new Error(str);throw error.hash=hash,error}this.trace(str)},"parseError"),parse:__name(function(input){var self=this,stack=[0],tstack=[],vstack=[null],lstack=[],table=this.table,yytext="",yylineno=0,yyleng=0,args=lstack.slice.call(arguments,1),lexer2=Object.create(this.lexer),sharedState={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(sharedState.yy[k]=this.yy[k]);lexer2.setInput(input,sharedState.yy),sharedState.yy.lexer=lexer2,sharedState.yy.parser=this,void 0===lexer2.yylloc&&(lexer2.yylloc={});var yyloc=lexer2.yylloc;lstack.push(yyloc);var ranges=lexer2.options&&lexer2.options.ranges;function lex(){var token;return"number"!=typeof(token=tstack.pop()||lexer2.lex()||1)&&(token instanceof Array&&(token=(tstack=token).pop()),token=self.symbols_[token]||token),token}"function"==typeof sharedState.yy.parseError?this.parseError=sharedState.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,__name(function(n){stack.length=stack.length-2*n,vstack.length=vstack.length-n,lstack.length=lstack.length-n},"popStack"),__name(lex,"lex");for(var symbol,state,action,r,p,len,newState,expected,yyval={};;){if(state=stack[stack.length-1],this.defaultActions[state]?action=this.defaultActions[state]:(null==symbol&&(symbol=lex()),action=table[state]&&table[state][symbol]),void 0===action||!action.length||!action[0]){var errStr="";for(p in expected=[],table[state])this.terminals_[p]&&p>2&&expected.push("'"+this.terminals_[p]+"'");errStr=lexer2.showPosition?"Parse error on line "+(yylineno+1)+":\n"+lexer2.showPosition()+"\nExpecting "+expected.join(", ")+", got '"+(this.terminals_[symbol]||symbol)+"'":"Parse error on line "+(yylineno+1)+": Unexpected "+(1==symbol?"end of input":"'"+(this.terminals_[symbol]||symbol)+"'"),this.parseError(errStr,{text:lexer2.match,token:this.terminals_[symbol]||symbol,line:lexer2.yylineno,loc:yyloc,expected:expected})}if(action[0]instanceof Array&&action.length>1)throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol);switch(action[0]){case 1:stack.push(symbol),vstack.push(lexer2.yytext),lstack.push(lexer2.yylloc),stack.push(action[1]),symbol=null,yyleng=lexer2.yyleng,yytext=lexer2.yytext,yylineno=lexer2.yylineno,yyloc=lexer2.yylloc;break;case 2:if(len=this.productions_[action[1]][1],yyval.$=vstack[vstack.length-len],yyval._$={first_line:lstack[lstack.length-(len||1)].first_line,last_line:lstack[lstack.length-1].last_line,first_column:lstack[lstack.length-(len||1)].first_column,last_column:lstack[lstack.length-1].last_column},ranges&&(yyval._$.range=[lstack[lstack.length-(len||1)].range[0],lstack[lstack.length-1].range[1]]),void 0!==(r=this.performAction.apply(yyval,[yytext,yyleng,yylineno,sharedState.yy,action[1],vstack,lstack].concat(args))))return r;len&&(stack=stack.slice(0,-1*len*2),vstack=vstack.slice(0,-1*len),lstack=lstack.slice(0,-1*len)),stack.push(this.productions_[action[1]][0]),vstack.push(yyval.$),lstack.push(yyval._$),newState=table[stack[stack.length-2]][stack[stack.length-1]],stack.push(newState);break;case 3:return!0}}return!0},"parse")},lexer=function(){return{EOF:1,parseError:__name(function(str,hash){if(!this.yy.parser)throw new Error(str);this.yy.parser.parseError(str,hash)},"parseError"),setInput:__name(function(input,yy){return this.yy=yy||this.yy||{},this._input=input,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:__name(function(){var ch=this._input[0];return this.yytext+=ch,this.yyleng++,this.offset++,this.match+=ch,this.matched+=ch,ch.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ch},"input"),unput:__name(function(ch){var len=ch.length,lines=ch.split(/(?:\r\n?|\n)/g);this._input=ch+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-len),this.offset-=len;var oldLines=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),lines.length-1&&(this.yylineno-=lines.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:lines?(lines.length===oldLines.length?this.yylloc.first_column:0)+oldLines[oldLines.length-lines.length].length-lines[0].length:this.yylloc.first_column-len},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-len]),this.yyleng=this.yytext.length,this},"unput"),more:__name(function(){return this._more=!0,this},"more"),reject:__name(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:__name(function(n){this.unput(this.match.slice(n))},"less"),pastInput:__name(function(){var past=this.matched.substr(0,this.matched.length-this.match.length);return(past.length>20?"...":"")+past.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:__name(function(){var next=this.match;return next.length<20&&(next+=this._input.substr(0,20-next.length)),(next.substr(0,20)+(next.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:__name(function(){var pre=this.pastInput(),c=new Array(pre.length+1).join("-");return pre+this.upcomingInput()+"\n"+c+"^"},"showPosition"),test_match:__name(function(match,indexed_rule){var token,lines,backup;if(this.options.backtrack_lexer&&(backup={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(backup.yylloc.range=this.yylloc.range.slice(0))),(lines=match[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=lines.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:lines?lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+match[0].length},this.yytext+=match[0],this.match+=match[0],this.matches=match,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(match[0].length),this.matched+=match[0],token=this.performAction.call(this,this.yy,this,indexed_rule,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),token)return token;if(this._backtrack){for(var k in backup)this[k]=backup[k];return!1}return!1},"test_match"),next:__name(function(){if(this.done)return this.EOF;var token,match,tempMatch,index;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var rules=this._currentRules(),i=0;i<rules.length;i++)if((tempMatch=this._input.match(this.rules[rules[i]]))&&(!match||tempMatch[0].length>match[0].length)){if(match=tempMatch,index=i,this.options.backtrack_lexer){if(!1!==(token=this.test_match(tempMatch,rules[i])))return token;if(this._backtrack){match=!1;continue}return!1}if(!this.options.flex)break}return match?!1!==(token=this.test_match(match,rules[index]))&&token:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:__name(function(){var r=this.next();return r||this.lex()},"lex"),begin:__name(function(condition){this.conditionStack.push(condition)},"begin"),popState:__name(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:__name(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:__name(function(n){return(n=this.conditionStack.length-1-Math.abs(n||0))>=0?this.conditionStack[n]:"INITIAL"},"topState"),pushState:__name(function(condition){this.begin(condition)},"pushState"),stateStackSize:__name(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:__name(function(yy,yy_,$avoiding_name_collisions,YY_START){switch($avoiding_name_collisions){case 0:return yy.getLogger().debug("Found block-beta"),10;case 1:return yy.getLogger().debug("Found id-block"),29;case 2:return yy.getLogger().debug("Found block"),10;case 3:yy.getLogger().debug(".",yy_.yytext);break;case 4:yy.getLogger().debug("_",yy_.yytext);break;case 5:return 5;case 6:return yy_.yytext=-1,28;case 7:return yy_.yytext=yy_.yytext.replace(/columns\s+/,""),yy.getLogger().debug("COLUMNS (LEX)",yy_.yytext),28;case 8:case 76:case 77:case 99:this.pushState("md_string");break;case 9:return"MD_STR";case 10:case 34:case 79:this.popState();break;case 11:this.pushState("string");break;case 12:yy.getLogger().debug("LEX: POPPING STR:",yy_.yytext),this.popState();break;case 13:return yy.getLogger().debug("LEX: STR end:",yy_.yytext),"STR";case 14:return yy_.yytext=yy_.yytext.replace(/space\:/,""),yy.getLogger().debug("SPACE NUM (LEX)",yy_.yytext),21;case 15:return yy_.yytext="1",yy.getLogger().debug("COLUMNS (LEX)",yy_.yytext),21;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 21:return this.popState(),this.pushState("CLASSDEFID"),40;case 22:return this.popState(),41;case 23:return this.pushState("CLASS"),43;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;case 25:return this.popState(),45;case 26:return this.pushState("STYLE_STMNT"),46;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;case 28:return this.popState(),48;case 29:return this.pushState("acc_title"),"acc_title";case 30:return this.popState(),"acc_title_value";case 31:return this.pushState("acc_descr"),"acc_descr";case 32:return this.popState(),"acc_descr_value";case 33:this.pushState("acc_descr_multiline");break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:case 38:case 40:case 41:case 44:return this.popState(),yy.getLogger().debug("Lex: (("),"NODE_DEND";case 39:return this.popState(),yy.getLogger().debug("Lex: ))"),"NODE_DEND";case 42:return this.popState(),yy.getLogger().debug("Lex: (-"),"NODE_DEND";case 43:return this.popState(),yy.getLogger().debug("Lex: -)"),"NODE_DEND";case 45:return this.popState(),yy.getLogger().debug("Lex: ]]"),"NODE_DEND";case 46:return this.popState(),yy.getLogger().debug("Lex: ("),"NODE_DEND";case 47:return this.popState(),yy.getLogger().debug("Lex: ])"),"NODE_DEND";case 48:case 49:return this.popState(),yy.getLogger().debug("Lex: /]"),"NODE_DEND";case 50:return this.popState(),yy.getLogger().debug("Lex: )]"),"NODE_DEND";case 51:return this.popState(),yy.getLogger().debug("Lex: )"),"NODE_DEND";case 52:return this.popState(),yy.getLogger().debug("Lex: ]>"),"NODE_DEND";case 53:return this.popState(),yy.getLogger().debug("Lex: ]"),"NODE_DEND";case 54:return yy.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;case 55:return yy.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;case 56:return yy.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;case 57:case 59:case 60:case 61:case 64:return yy.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 58:return yy.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;case 62:return yy.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;case 63:return yy.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;case 65:case 66:case 67:case 68:case 69:case 70:case 71:return this.pushState("NODE"),35;case 72:return yy.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;case 73:return this.pushState("BLOCK_ARROW"),yy.getLogger().debug("LEX ARR START"),37;case 74:return yy.getLogger().debug("Lex: NODE_ID",yy_.yytext),31;case 75:return yy.getLogger().debug("Lex: EOF",yy_.yytext),8;case 78:return"NODE_DESCR";case 80:yy.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:yy.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return yy.getLogger().debug("LEX: NODE_DESCR:",yy_.yytext),"NODE_DESCR";case 83:yy.getLogger().debug("LEX POPPING"),this.popState();break;case 84:yy.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return yy_.yytext=yy_.yytext.replace(/^,\s*/,""),yy.getLogger().debug("Lex (right): dir:",yy_.yytext),"DIR";case 86:return yy_.yytext=yy_.yytext.replace(/^,\s*/,""),yy.getLogger().debug("Lex (left):",yy_.yytext),"DIR";case 87:return yy_.yytext=yy_.yytext.replace(/^,\s*/,""),yy.getLogger().debug("Lex (x):",yy_.yytext),"DIR";case 88:return yy_.yytext=yy_.yytext.replace(/^,\s*/,""),yy.getLogger().debug("Lex (y):",yy_.yytext),"DIR";case 89:return yy_.yytext=yy_.yytext.replace(/^,\s*/,""),yy.getLogger().debug("Lex (up):",yy_.yytext),"DIR";case 90:return yy_.yytext=yy_.yytext.replace(/^,\s*/,""),yy.getLogger().debug("Lex (down):",yy_.yytext),"DIR";case 91:return yy_.yytext="]>",yy.getLogger().debug("Lex (ARROW_DIR end):",yy_.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 92:return yy.getLogger().debug("Lex: LINK","#"+yy_.yytext+"#"),15;case 93:case 94:case 95:return yy.getLogger().debug("Lex: LINK",yy_.yytext),15;case 96:case 97:case 98:return yy.getLogger().debug("Lex: START_LINK",yy_.yytext),this.pushState("LLABEL"),16;case 100:return yy.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 101:return this.popState(),yy.getLogger().debug("Lex: LINK","#"+yy_.yytext+"#"),15;case 102:case 103:return this.popState(),yy.getLogger().debug("Lex: LINK",yy_.yytext),15;case 104:return yy.getLogger().debug("Lex: COLON",yy_.yytext),yy_.yytext=yy_.yytext.slice(1),27}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}}}();function Parser(){this.yy={}}return parser2.lexer=lexer,__name(Parser,"Parser"),Parser.prototype=parser2,parser2.Parser=Parser,new Parser}();parser.parser=parser;var block_default=parser,blockDatabase=new Map,edgeList=[],edgeCount=new Map,config=getConfig2(),classes=new Map,diagramId="",sanitizeText2=__name(txt=>common_default.sanitizeText(txt,config),"sanitizeText"),addStyleClass=__name(function(id,styleAttributes=""){let foundClass=classes.get(id);foundClass||(foundClass={id:id,styles:[],textStyles:[]},classes.set(id,foundClass)),null!=styleAttributes&&styleAttributes.split(",").forEach(attrib=>{const fixedAttrib=attrib.replace(/([^;]*);/,"$1").trim();if(RegExp("color").exec(attrib)){const newStyle2=fixedAttrib.replace("fill","bgFill").replace("color","fill");foundClass.textStyles.push(newStyle2)}foundClass.styles.push(fixedAttrib)})},"addStyleClass"),addStyle2Node=__name(function(id,styles=""){const foundBlock=blockDatabase.get(id);null!=styles&&(foundBlock.styles=styles.split(","))},"addStyle2Node"),setCssClass=__name(function(itemIds,cssClassName){itemIds.split(",").forEach(function(id){let foundBlock=blockDatabase.get(id);if(void 0===foundBlock){const trimmedId=id.trim();foundBlock={id:trimmedId,type:"na",children:[]},blockDatabase.set(trimmedId,foundBlock)}foundBlock.classes||(foundBlock.classes=[]),foundBlock.classes.push(cssClassName)})},"setCssClass"),populateBlockDatabase=__name((_blockList,parent)=>{const blockList=_blockList.flat(),children=[],columnSettingBlock=blockList.find(b=>"column-setting"===(null==b?void 0:b.type)),column=(null==columnSettingBlock?void 0:columnSettingBlock.columns)??-1;for(const block of blockList)if("number"==typeof column&&column>0&&"column-setting"!==block.type&&"number"==typeof block.widthInColumns&&block.widthInColumns>column&&log.warn(`Block ${block.id} width ${block.widthInColumns} exceeds configured column width ${column}`),block.label&&(block.label=sanitizeText2(block.label)),"classDef"!==block.type)if("applyClass"!==block.type)if("applyStyles"!==block.type)if("column-setting"===block.type)parent.columns=block.columns??-1;else if("edge"===block.type){const count=(edgeCount.get(block.id)??0)+1;edgeCount.set(block.id,count),block.id=count+"-"+block.id,edgeList.push(block)}else{block.label||("composite"===block.type?block.label="":block.label=block.id);const existingBlock=blockDatabase.get(block.id);if(void 0===existingBlock?blockDatabase.set(block.id,block):("na"!==block.type&&(existingBlock.type=block.type),block.label!==block.id&&(existingBlock.label=block.label)),block.children&&populateBlockDatabase(block.children,block),"space"===block.type){const w=block.width??1;for(let j=0;j<w;j++){const newBlock=clone(block);newBlock.id=newBlock.id+"-"+j,blockDatabase.set(newBlock.id,newBlock),children.push(newBlock)}}else void 0===existingBlock&&children.push(block)}else(null==block?void 0:block.stylesStr)&&addStyle2Node(block.id,null==block?void 0:block.stylesStr);else setCssClass(block.id,(null==block?void 0:block.styleClass)??"");else addStyleClass(block.id,block.css);parent.children=children},"populateBlockDatabase"),blocks=[],rootBlock={id:"root",type:"composite",children:[],columns:-1},clear2=__name(()=>{log.debug("Clear called"),clear(),rootBlock={id:"root",type:"composite",children:[],columns:-1},blockDatabase=new Map([["root",rootBlock]]),blocks=[],classes=new Map,edgeList=[],edgeCount=new Map,diagramId=""},"clear");function typeStr2Type(typeStr){switch(log.debug("typeStr2Type",typeStr),typeStr){case"[]":return"square";case"()":return log.debug("we have a round"),"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 edgeTypeStr2Type(typeStr){return log.debug("typeStr2Type",typeStr),"=="===typeStr?"thick":"normal"}function edgeStrToEdgeData(typeStr){switch(typeStr.replace(/^[\s-]+|[\s-]+$/g,"")){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}__name(typeStr2Type,"typeStr2Type"),__name(edgeTypeStr2Type,"edgeTypeStr2Type"),__name(edgeStrToEdgeData,"edgeStrToEdgeData");var cnt=0,generateId=__name(()=>(cnt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+cnt),"generateId"),setHierarchy=__name(block=>{rootBlock.children=block,populateBlockDatabase(block,rootBlock),blocks=rootBlock.children},"setHierarchy"),getColumns=__name(blockId=>{const block=blockDatabase.get(blockId);return block?block.columns?block.columns:block.children?block.children.length:-1:-1},"getColumns"),getBlocksFlat=__name(()=>[...blockDatabase.values()],"getBlocksFlat"),getBlocks=__name(()=>blocks||[],"getBlocks"),getEdges=__name(()=>edgeList,"getEdges"),getBlock=__name(id=>blockDatabase.get(id),"getBlock"),setBlock=__name(block=>{blockDatabase.set(block.id,block)},"setBlock"),setDiagramId=__name(id=>{diagramId=id},"setDiagramId"),getDiagramId=__name(()=>diagramId,"getDiagramId"),getLogger=__name(()=>log,"getLogger"),getClasses=__name(function(){return classes},"getClasses"),blockDB_default={getConfig:__name(()=>getConfig().block,"getConfig"),typeStr2Type:typeStr2Type,edgeTypeStr2Type:edgeTypeStr2Type,edgeStrToEdgeData:edgeStrToEdgeData,getLogger:getLogger,getBlocksFlat:getBlocksFlat,getBlocks:getBlocks,getEdges:getEdges,setHierarchy:setHierarchy,getBlock:getBlock,setBlock:setBlock,getColumns:getColumns,getClasses:getClasses,clear:clear2,generateId:generateId,setDiagramId:setDiagramId,getDiagramId:getDiagramId},fade=__name((color,opacity)=>{const channel2=channel,r=channel2(color,"r"),g=channel2(color,"g"),b=channel2(color,"b");return rgba(r,g,b,opacity)},"fade"),styles_default=__name(options=>`.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor||options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${options.nodeTextColor||options.textColor};\n color: ${options.nodeTextColor||options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n /*\n * This is for backward compatibility with existing code that didn't\n * add a \`<p>\` around edge labels.\n *\n * TODO: We should probably remove this in a future release.\n */\n p {\n margin: 0;\n padding: 0;\n display: inline;\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${options.edgeLabelBackground};\n }\n\n .node .cluster {\n // fill: ${fade(options.mainBkg,.5)};\n fill: ${fade(options.clusterBkg,.5)};\n stroke: ${fade(options.clusterBorder,.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n ${getIconStyles()}\n`,"getStyles"),insertMarkers=__name((elem,markerArray,type,id)=>{markerArray.forEach(markerName=>{markers[markerName](elem,type,id)})},"insertMarkers"),markers={extension:__name((elem,type,id)=>{log.trace("Making markers for ",id),elem.append("defs").append("marker").attr("id",id+"_"+type+"-extensionStart").attr("class","marker extension "+type).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),elem.append("defs").append("marker").attr("id",id+"_"+type+"-extensionEnd").attr("class","marker extension "+type).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),composition:__name((elem,type,id)=>{elem.append("defs").append("marker").attr("id",id+"_"+type+"-compositionStart").attr("class","marker composition "+type).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),elem.append("defs").append("marker").attr("id",id+"_"+type+"-compositionEnd").attr("class","marker composition "+type).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),aggregation:__name((elem,type,id)=>{elem.append("defs").append("marker").attr("id",id+"_"+type+"-aggregationStart").attr("class","marker aggregation "+type).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),elem.append("defs").append("marker").attr("id",id+"_"+type+"-aggregationEnd").attr("class","marker aggregation "+type).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),dependency:__name((elem,type,id)=>{elem.append("defs").append("marker").attr("id",id+"_"+type+"-dependencyStart").attr("class","marker dependency "+type).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),elem.append("defs").append("marker").attr("id",id+"_"+type+"-dependencyEnd").attr("class","marker dependency "+type).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),lollipop:__name((elem,type,id)=>{elem.append("defs").append("marker").attr("id",id+"_"+type+"-lollipopStart").attr("class","marker lollipop "+type).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),elem.append("defs").append("marker").attr("id",id+"_"+type+"-lollipopEnd").attr("class","marker lollipop "+type).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),point:__name((elem,type,id)=>{elem.append("marker").attr("id",id+"_"+type+"-pointEnd").attr("class","marker "+type).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),elem.append("marker").attr("id",id+"_"+type+"-pointStart").attr("class","marker "+type).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),circle:__name((elem,type,id)=>{elem.append("marker").attr("id",id+"_"+type+"-circleEnd").attr("class","marker "+type).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),elem.append("marker").attr("id",id+"_"+type+"-circleStart").attr("class","marker "+type).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),cross:__name((elem,type,id)=>{elem.append("marker").attr("id",id+"_"+type+"-crossEnd").attr("class","marker cross "+type).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),elem.append("marker").attr("id",id+"_"+type+"-crossStart").attr("class","marker cross "+type).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),barb:__name((elem,type,id)=>{elem.append("defs").append("marker").attr("id",id+"_"+type+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb")},markers_default=insertMarkers,padding=(null==(_b=null==(_a=getConfig2())?void 0:_a.block)?void 0:_b.padding)??8;function calculateBlockPosition(columns,position){if(0===columns||!Number.isInteger(columns))throw new Error("Columns must be an integer !== 0.");if(position<0||!Number.isInteger(position))throw new Error("Position must be a non-negative integer."+position);if(columns<0)return{px:position,py:0};if(1===columns)return{px:0,py:position};return{px:position%columns,py:Math.floor(position/columns)}}__name(calculateBlockPosition,"calculateBlockPosition");var getMaxChildSize=__name(block=>{let maxWidth=0,maxHeight=0;for(const child of block.children){const{width:width,height:height,x:x,y:y}=child.size??{width:0,height:0,x:0,y:0};log.debug("getMaxChildSize abc95 child:",child.id,"width:",width,"height:",height,"x:",x,"y:",y,child.type),"space"!==child.type&&(width>maxWidth&&(maxWidth=width/(child.widthInColumns??1)),height>maxHeight&&(maxHeight=height))}return{width:maxWidth,height:maxHeight}},"getMaxChildSize");function setBlockSizes(block,db2,siblingWidth=0,siblingHeight=0){var _a2,_b2,_c,_d,_e,_f,_g,_h,_i,_j,_k;log.debug("setBlockSizes abc95 (start)",block.id,null==(_a2=null==block?void 0:block.size)?void 0:_a2.x,"block width =",null==block?void 0:block.size,"siblingWidth",siblingWidth),(null==(_b2=null==block?void 0:block.size)?void 0:_b2.width)||(block.size={width:siblingWidth,height:siblingHeight,x:0,y:0});let maxWidth=0,maxHeight=0;if((null==(_c=block.children)?void 0:_c.length)>0){for(const child of block.children)setBlockSizes(child,db2);const childSize=getMaxChildSize(block);maxWidth=childSize.width,maxHeight=childSize.height,log.debug("setBlockSizes abc95 maxWidth of",block.id,":s children is ",maxWidth,maxHeight);for(const child of block.children)child.size&&(log.debug(`abc95 Setting size of children of ${block.id} id=${child.id} ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}`),child.size.width=maxWidth*(child.widthInColumns??1)+padding*((child.widthInColumns??1)-1),child.size.height=maxHeight,child.size.x=0,child.size.y=0,log.debug(`abc95 updating size of ${block.id} children child:${child.id} maxWidth:${maxWidth} maxHeight:${maxHeight}`));for(const child of block.children)setBlockSizes(child,db2,maxWidth,maxHeight);const columns=block.columns??-1;let numItems=0;for(const child of block.children)numItems+=child.widthInColumns??1;let xSize=block.children.length;columns>0&&columns<numItems&&(xSize=columns);const ySize=Math.ceil(numItems/xSize);let width=xSize*(maxWidth+padding)+padding,height=ySize*(maxHeight+padding)+padding;if(width<siblingWidth){log.debug(`Detected to small sibling: abc95 ${block.id} siblingWidth ${siblingWidth} siblingHeight ${siblingHeight} width ${width}`),width=siblingWidth,height=siblingHeight;const childWidth=(siblingWidth-xSize*padding-padding)/xSize,childHeight=(siblingHeight-ySize*padding-padding)/ySize;log.debug("Size indata abc88",block.id,"childWidth",childWidth,"maxWidth",maxWidth),log.debug("Size indata abc88",block.id,"childHeight",childHeight,"maxHeight",maxHeight),log.debug("Size indata abc88 xSize",xSize,"padding",padding);for(const child of block.children)child.size&&(child.size.width=childWidth,child.size.height=childHeight,child.size.x=0,child.size.y=0)}if(log.debug(`abc95 (finale calc) ${block.id} xSize ${xSize} ySize ${ySize} columns ${columns}${block.children.length} width=${Math.max(width,(null==(_d=block.size)?void 0:_d.width)||0)}`),width<((null==(_e=null==block?void 0:block.size)?void 0:_e.width)||0)){width=(null==(_f=null==block?void 0:block.size)?void 0:_f.width)||0;const num=columns>0?Math.min(block.children.length,columns):block.children.length;if(num>0){const childWidth=(width-num*padding-padding)/num;log.debug("abc95 (growing to fit) width",block.id,width,null==(_g=block.size)?void 0:_g.width,childWidth);for(const child of block.children)child.size&&(child.size.width=childWidth)}}block.size={width:width,height:height,x:0,y:0}}log.debug("setBlockSizes abc94 (done)",block.id,null==(_h=null==block?void 0:block.size)?void 0:_h.x,null==(_i=null==block?void 0:block.size)?void 0:_i.width,null==(_j=null==block?void 0:block.size)?void 0:_j.y,null==(_k=null==block?void 0:block.size)?void 0:_k.height)}function layoutBlocks(block,db2){var _a2,_b2,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o,_p,_q;log.debug(`abc85 layout blocks (=>layoutBlocks) ${block.id} x: ${null==(_a2=null==block?void 0:block.size)?void 0:_a2.x} y: ${null==(_b2=null==block?void 0:block.size)?void 0:_b2.y} width: ${null==(_c=null==block?void 0:block.size)?void 0:_c.width}`);const columns=block.columns??-1;if(log.debug("layoutBlocks columns abc95",block.id,"=>",columns,block),block.children&&block.children.length>0){const width=(null==(_e=null==(_d=null==block?void 0:block.children[0])?void 0:_d.size)?void 0:_e.width)??0,widthOfChildren=block.children.length*width+(block.children.length-1)*padding;log.debug("widthOfChildren 88",widthOfChildren,"posX");const rowHeights=new Map;{let colPos=0;for(const child of block.children){if(!child.size)continue;const{py:py}=calculateBlockPosition(columns,colPos),currentMax=rowHeights.get(py)??0;child.size.height>currentMax&&rowHeights.set(py,child.size.height);let filled=(null==child?void 0:child.widthInColumns)??1;columns>0&&(filled=Math.min(filled,columns-colPos%columns)),colPos+=filled}}const rowYOffsets=new Map;{let offset=0;const rows=[...rowHeights.keys()].sort((a,b)=>a-b);for(const row of rows)rowYOffsets.set(row,offset),offset+=(rowHeights.get(row)??0)+padding}let columnPos=0;log.debug("abc91 block?.size?.x",block.id,null==(_f=null==block?void 0:block.size)?void 0:_f.x);let startingPosX=(null==(_g=null==block?void 0:block.size)?void 0:_g.x)?(null==(_h=null==block?void 0:block.size)?void 0:_h.x)+(-(null==(_i=null==block?void 0:block.size)?void 0:_i.width)/2||0):-padding,rowPos=0;for(const child of block.children){const parent=block;if(!child.size)continue;const{width:width2,height:height}=child.size,{px:px,py:py}=calculateBlockPosition(columns,columnPos);if(py!=rowPos&&(rowPos=py,startingPosX=(null==(_j=null==block?void 0:block.size)?void 0:_j.x)?(null==(_k=null==block?void 0:block.size)?void 0:_k.x)+(-(null==(_l=null==block?void 0:block.size)?void 0:_l.width)/2||0):-padding,log.debug("New row in layout for block",block.id," and child ",child.id,rowPos)),log.debug(`abc89 layout blocks (child) id: ${child.id} Pos: ${columnPos} (px, py) ${px},${py} (${null==(_m=null==parent?void 0:parent.size)?void 0:_m.x},${null==(_n=null==parent?void 0:parent.size)?void 0:_n.y}) parent: ${parent.id} width: ${width2}${padding}`),parent.size){const halfWidth=width2/2;child.size.x=startingPosX+padding+halfWidth,log.debug(`abc91 layout blocks (calc) px, pyid:${child.id} startingPos=X${startingPosX} new startingPosX${child.size.x} ${halfWidth} padding=${padding} width=${width2} halfWidth=${halfWidth} => x:${child.size.x} y:${child.size.y} ${child.widthInColumns} (width * (child?.w || 1)) / 2 ${width2*((null==child?void 0:child.widthInColumns)??1)/2}`),startingPosX=child.size.x+halfWidth;const rowYOffset=rowYOffsets.get(py)??0,rowHeight=rowHeights.get(py)??height;child.size.y=parent.size.y-parent.size.height/2+rowYOffset+rowHeight/2+padding,log.debug(`abc88 layout blocks (calc) px, pyid:${child.id}startingPosX${startingPosX}${padding}${halfWidth}=>x:${child.size.x}y:${child.size.y}${child.widthInColumns}(width * (child?.w || 1)) / 2${width2*((null==child?void 0:child.widthInColumns)??1)/2}`)}child.children&&layoutBlocks(child);let columnsFilled=(null==child?void 0:child.widthInColumns)??1;columns>0&&(columnsFilled=Math.min(columnsFilled,columns-columnPos%columns)),columnPos+=columnsFilled,log.debug("abc88 columnsPos",child,columnPos)}}log.debug(`layout blocks (<==layoutBlocks) ${block.id} x: ${null==(_o=null==block?void 0:block.size)?void 0:_o.x} y: ${null==(_p=null==block?void 0:block.size)?void 0:_p.y} width: ${null==(_q=null==block?void 0:block.size)?void 0:_q.width}`)}function findBounds(block,{minX:minX,minY:minY,maxX:maxX,maxY:maxY}={minX:0,minY:0,maxX:0,maxY:0}){if(block.size&&"root"!==block.id){const{x:x,y:y,width:width,height:height}=block.size;x-width/2<minX&&(minX=x-width/2),y-height/2<minY&&(minY=y-height/2),x+width/2>maxX&&(maxX=x+width/2),y+height/2>maxY&&(maxY=y+height/2)}if(block.children)for(const child of block.children)({minX:minX,minY:minY,maxX:maxX,maxY:maxY}=findBounds(child,{minX:minX,minY:minY,maxX:maxX,maxY:maxY}));return{minX:minX,minY:minY,maxX:maxX,maxY:maxY}}function layout(db2){const root=db2.getBlock("root");if(!root)return;setBlockSizes(root,db2,0,0),layoutBlocks(root),log.debug("getBlocks",JSON.stringify(root,null,2));const{minX:minX,minY:minY,maxX:maxX,maxY:maxY}=findBounds(root);return{x:minX,y:minY,width:maxX-minX,height:maxY-minY}}__name(setBlockSizes,"setBlockSizes"),__name(layoutBlocks,"layoutBlocks"),__name(findBounds,"findBounds"),__name(layout,"layout");var createLabel_default=__name(async(element,_vertexText,style,isTitle=!1,isNode=!1)=>{let vertexText=_vertexText||"";"object"==typeof vertexText&&(vertexText=vertexText[0]);const config2=getConfig2(),useHtmlLabels=getEffectiveHtmlLabels(config2);return await createText(element,vertexText,{style:style,isTitle:isTitle,useHtmlLabels:useHtmlLabels,markdown:!1,isNode:isNode,width:Number.POSITIVE_INFINITY},config2)},"createLabel"),addEdgeMarkers=__name((svgPath,edge,url,id,diagramType)=>{edge.arrowTypeStart&&addEdgeMarker(svgPath,"start",edge.arrowTypeStart,url,id,diagramType),edge.arrowTypeEnd&&addEdgeMarker(svgPath,"end",edge.arrowTypeEnd,url,id,diagramType)},"addEdgeMarkers"),arrowTypesMap={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},addEdgeMarker=__name((svgPath,position,arrowType,url,id,diagramType)=>{const endMarkerType=arrowTypesMap[arrowType];if(!endMarkerType)return void log.warn(`Unknown arrow type: ${arrowType}`);const suffix="start"===position?"Start":"End";svgPath.attr(`marker-${position}`,`url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`)},"addEdgeMarker"),edgeLabels={},terminalLabels={},insertEdgeLabel=__name(async(elem,edge)=>{const config2=getConfig2(),useHtmlLabels=getEffectiveHtmlLabels(config2),edgeLabel=elem.insert("g").attr("class","edgeLabel"),label=edgeLabel.insert("g").attr("class","label"),isMarkdown="markdown"===edge.labelType,labelElement=await createText(elem,edge.label,{style:edge.labelStyle,useHtmlLabels:useHtmlLabels,addSvgBackground:isMarkdown,isNode:!1,markdown:isMarkdown,width:isMarkdown?void 0:Number.POSITIVE_INFINITY},config2);label.node().appendChild(labelElement);let fo,bbox=labelElement.getBBox(),transformBbox=bbox;if(useHtmlLabels){const div=labelElement.children[0],dv=select(labelElement);bbox=div.getBoundingClientRect(),transformBbox=bbox,dv.attr("width",bbox.width),dv.attr("height",bbox.height)}else{const textEl=select(labelElement).select("text").node();textEl&&"function"==typeof textEl.getBBox&&(transformBbox=textEl.getBBox())}if(label.attr("transform",computeLabelTransform(transformBbox,useHtmlLabels)),edgeLabels[edge.id]=edgeLabel,edge.width=bbox.width,edge.height=bbox.height,edge.startLabelLeft){const startEdgeLabelLeft=elem.insert("g").attr("class","edgeTerminals"),inner=startEdgeLabelLeft.insert("g").attr("class","inner"),startLabelElement=await createLabel_default(inner,edge.startLabelLeft,edge.labelStyle);fo=startLabelElement;let slBox=startLabelElement.getBBox();if(useHtmlLabels){const div=startLabelElement.children[0],dv=select(startLabelElement);slBox=div.getBoundingClientRect(),dv.attr("width",slBox.width),dv.attr("height",slBox.height)}inner.attr("transform",computeLabelTransform(slBox,useHtmlLabels)),terminalLabels[edge.id]||(terminalLabels[edge.id]={}),terminalLabels[edge.id].startLeft=startEdgeLabelLeft,setTerminalWidth(fo,edge.startLabelLeft)}if(edge.startLabelRight){const startEdgeLabelRight=elem.insert("g").attr("class","edgeTerminals"),inner=startEdgeLabelRight.insert("g").attr("class","inner"),startLabelElement=await createLabel_default(startEdgeLabelRight,edge.startLabelRight,edge.labelStyle);fo=startLabelElement,inner.node().appendChild(startLabelElement);let slBox=startLabelElement.getBBox();if(useHtmlLabels){const div=startLabelElement.children[0],dv=select(startLabelElement);slBox=div.getBoundingClientRect(),dv.attr("width",slBox.width),dv.attr("height",slBox.height)}inner.attr("transform",computeLabelTransform(slBox,useHtmlLabels)),terminalLabels[edge.id]||(terminalLabels[edge.id]={}),terminalLabels[edge.id].startRight=startEdgeLabelRight,setTerminalWidth(fo,edge.startLabelRight)}if(edge.endLabelLeft){const endEdgeLabelLeft=elem.insert("g").attr("class","edgeTerminals"),inner=endEdgeLabelLeft.insert("g").attr("class","inner"),endLabelElement=await createLabel_default(inner,edge.endLabelLeft,edge.labelStyle);fo=endLabelElement;let slBox=endLabelElement.getBBox();if(useHtmlLabels){const div=endLabelElement.children[0],dv=select(endLabelElement);slBox=div.getBoundingClientRect(),dv.attr("width",slBox.width),dv.attr("height",slBox.height)}inner.attr("transform",computeLabelTransform(slBox,useHtmlLabels)),endEdgeLabelLeft.node().appendChild(endLabelElement),terminalLabels[edge.id]||(terminalLabels[edge.id]={}),terminalLabels[edge.id].endLeft=endEdgeLabelLeft,setTerminalWidth(fo,edge.endLabelLeft)}if(edge.endLabelRight){const endEdgeLabelRight=elem.insert("g").attr("class","edgeTerminals"),inner=endEdgeLabelRight.insert("g").attr("class","inner"),endLabelElement=await createLabel_default(inner,edge.endLabelRight,edge.labelStyle);fo=endLabelElement;let slBox=endLabelElement.getBBox();if(useHtmlLabels){const div=endLabelElement.children[0],dv=select(endLabelElement);slBox=div.getBoundingClientRect(),dv.attr("width",slBox.width),dv.attr("height",slBox.height)}inner.attr("transform",computeLabelTransform(slBox,useHtmlLabels)),endEdgeLabelRight.node().appendChild(endLabelElement),terminalLabels[edge.id]||(terminalLabels[edge.id]={}),terminalLabels[edge.id].endRight=endEdgeLabelRight,setTerminalWidth(fo,edge.endLabelRight)}return labelElement},"insertEdgeLabel");function setTerminalWidth(fo,value){getEffectiveHtmlLabels(getConfig2())&&fo&&(fo.style.width=9*value.length+"px",fo.style.height="12px")}__name(setTerminalWidth,"setTerminalWidth");var positionEdgeLabel=__name((edge,paths)=>{log.debug("Moving label abc88 ",edge.id,edge.label,edgeLabels[edge.id],paths);let path=paths.updatedPath?paths.updatedPath:paths.originalPath;const siteConfig=getConfig2(),{subGraphTitleTotalMargin:subGraphTitleTotalMargin}=getSubGraphTitleMargins(siteConfig);if(edge.label){const el=edgeLabels[edge.id];let x=edge.x,y=edge.y;if(path){const pos=utils_default.calcLabelPosition(path);log.debug("Moving label "+edge.label+" from (",x,",",y,") to (",pos.x,",",pos.y,") abc88"),paths.updatedPath&&(x=pos.x,y=pos.y)}el.attr("transform",`translate(${x}, ${y+subGraphTitleTotalMargin/2})`)}if(edge.startLabelLeft){const el=terminalLabels[edge.id].startLeft;let x=edge.x,y=edge.y;if(path){const pos=utils_default.calcTerminalLabelPosition(edge.arrowTypeStart?10:0,"start_left",path);x=pos.x,y=pos.y}el.attr("transform",`translate(${x}, ${y})`)}if(edge.startLabelRight){const el=terminalLabels[edge.id].startRight;let x=edge.x,y=edge.y;if(path){const pos=utils_default.calcTerminalLabelPosition(edge.arrowTypeStart?10:0,"start_right",path);x=pos.x,y=pos.y}el.attr("transform",`translate(${x}, ${y})`)}if(edge.endLabelLeft){const el=terminalLabels[edge.id].endLeft;let x=edge.x,y=edge.y;if(path){const pos=utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd?10:0,"end_left",path);x=pos.x,y=pos.y}el.attr("transform",`translate(${x}, ${y})`)}if(edge.endLabelRight){const el=terminalLabels[edge.id].endRight;let x=edge.x,y=edge.y;if(path){const pos=utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd?10:0,"end_right",path);x=pos.x,y=pos.y}el.attr("transform",`translate(${x}, ${y})`)}},"positionEdgeLabel"),outsideNode=__name((node,point2)=>{const x=node.x,y=node.y,dx=Math.abs(point2.x-x),dy=Math.abs(point2.y-y),w=node.width/2,h=node.height/2;return dx>=w||dy>=h},"outsideNode"),intersection=__name((node,outsidePoint,insidePoint)=>{log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);const x=node.x,y=node.y,dx=Math.abs(x-insidePoint.x),w=node.width/2;let r=insidePoint.x<outsidePoint.x?w-dx:w+dx;const h=node.height/2,Q=Math.abs(outsidePoint.y-insidePoint.y),R=Math.abs(outsidePoint.x-insidePoint.x);if(Math.abs(y-outsidePoint.y)*w>Math.abs(x-outsidePoint.x)*h){let q=insidePoint.y<outsidePoint.y?outsidePoint.y-h-y:y-h-outsidePoint.y;r=R*q/Q;const res={x:insidePoint.x<outsidePoint.x?insidePoint.x+r:insidePoint.x-R+r,y:insidePoint.y<outsidePoint.y?insidePoint.y+Q-q:insidePoint.y-Q+q};return 0===r&&(res.x=outsidePoint.x,res.y=outsidePoint.y),0===R&&(res.x=outsidePoint.x),0===Q&&(res.y=outsidePoint.y),log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`,res),res}{r=insidePoint.x<outsidePoint.x?outsidePoint.x-w-x:x-w-outsidePoint.x;let q=Q*r/R,_x=insidePoint.x<outsidePoint.x?insidePoint.x+R-r:insidePoint.x-R+r,_y=insidePoint.y<outsidePoint.y?insidePoint.y+q:insidePoint.y-q;return log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`,{_x:_x,_y:_y}),0===r&&(_x=outsidePoint.x,_y=outsidePoint.y),0===R&&(_x=outsidePoint.x),0===Q&&(_y=outsidePoint.y),{x:_x,y:_y}}},"intersection"),cutPathAtIntersect=__name((_points,boundaryNode)=>{log.debug("abc88 cutPathAtIntersect",_points,boundaryNode);let points=[],lastPointOutside=_points[0],isInside=!1;return _points.forEach(point2=>{if(outsideNode(boundaryNode,point2)||isInside)lastPointOutside=point2,isInside||points.push(point2);else{const inter=intersection(boundaryNode,lastPointOutside,point2);let pointPresent=!1;points.forEach(p=>{pointPresent=pointPresent||p.x===inter.x&&p.y===inter.y}),points.some(e=>e.x===inter.x&&e.y===inter.y)||points.push(inter),isInside=!0}}),points},"cutPathAtIntersect"),insertEdge=__name(function(elem,e,edge,clusterDb,diagramType,graph,id){let points=edge.points;log.debug("abc88 InsertEdge: edge=",edge,"e=",e);let pointsHasChanged=!1;const tail=graph.node(e.v);var head=graph.node(e.w);(null==head?void 0:head.intersect)&&(null==tail?void 0:tail.intersect)&&(points=points.slice(1,edge.points.length-1),points.unshift(tail.intersect(points[0])),points.push(head.intersect(points[points.length-1]))),edge.toCluster&&(log.debug("to cluster abc88",clusterDb[edge.toCluster]),points=cutPathAtIntersect(edge.points,clusterDb[edge.toCluster].node),pointsHasChanged=!0),edge.fromCluster&&(log.debug("from cluster abc88",clusterDb[edge.fromCluster]),points=cutPathAtIntersect(points.reverse(),clusterDb[edge.fromCluster].node).reverse(),pointsHasChanged=!0);const lineData=points.filter(p=>!Number.isNaN(p.y));let curve=curveBasis;!edge.curve||"graph"!==diagramType&&"flowchart"!==diagramType||(curve=edge.curve);const{x:x,y:y}=getLineFunctionsWithOffset(edge),lineFunction=line().x(x).y(y).curve(curve);let strokeClasses;switch(edge.thickness){case"normal":strokeClasses="edge-thickness-normal";break;case"thick":case"invisible":strokeClasses="edge-thickness-thick";break;default:strokeClasses=""}switch(edge.pattern){case"solid":strokeClasses+=" edge-pattern-solid";break;case"dotted":strokeClasses+=" edge-pattern-dotted";break;case"dashed":strokeClasses+=" edge-pattern-dashed"}const svgPath=elem.append("path").attr("d",lineFunction(lineData)).attr("id",edge.id).attr("class"," "+strokeClasses+(edge.classes?" "+edge.classes:"")).attr("style",edge.style);let url="";(getConfig2().flowchart.arrowMarkerAbsolute||getConfig2().state.arrowMarkerAbsolute)&&(url=getUrl(!0)),addEdgeMarkers(svgPath,edge,url,id,diagramType);let paths={};return pointsHasChanged&&(paths.updatedPath=points),paths.originalPath=edge.points,paths},"insertEdge"),expandAndDeduplicateDirections=__name(directions=>{const uniqueDirections=new Set;for(const direction of directions)switch(direction){case"x":uniqueDirections.add("right"),uniqueDirections.add("left");break;case"y":uniqueDirections.add("up"),uniqueDirections.add("down");break;default:uniqueDirections.add(direction)}return uniqueDirections},"expandAndDeduplicateDirections"),getArrowPoints=__name((duplicatedDirections,bbox,node)=>{const directions=expandAndDeduplicateDirections(duplicatedDirections),height=bbox.height+2*node.padding,midpoint=height/2,width=bbox.width+2*midpoint+node.padding,padding2=node.padding/2;return directions.has("right")&&directions.has("left")&&directions.has("up")&&directions.has("down")?[{x:0,y:0},{x:midpoint,y:0},{x:width/2,y:2*padding2},{x:width-midpoint,y:0},{x:width,y:0},{x:width,y:-height/3},{x:width+2*padding2,y:-height/2},{x:width,y:-2*height/3},{x:width,y:-height},{x:width-midpoint,y:-height},{x:width/2,y:-height-2*padding2},{x:midpoint,y:-height},{x:0,y:-height},{x:0,y:-2*height/3},{x:-2*padding2,y:-height/2},{x:0,y:-height/3}]:directions.has("right")&&directions.has("left")&&directions.has("up")?[{x:midpoint,y:0},{x:width-midpoint,y:0},{x:width,y:-height/2},{x:width-midpoint,y:-height},{x:midpoint,y:-height},{x:0,y:-height/2}]:directions.has("right")&&directions.has("left")&&directions.has("down")?[{x:0,y:0},{x:midpoint,y:-height},{x:width-midpoint,y:-height},{x:width,y:0}]:directions.has("right")&&directions.has("up")&&directions.has("down")?[{x:0,y:0},{x:width,y:-midpoint},{x:width,y:-height+midpoint},{x:0,y:-height}]:directions.has("left")&&directions.has("up")&&directions.has("down")?[{x:width,y:0},{x:0,y:-midpoint},{x:0,y:-height+midpoint},{x:width,y:-height}]:directions.has("right")&&directions.has("left")?[{x:midpoint,y:0},{x:midpoint,y:-padding2},{x:width-midpoint,y:-padding2},{x:width-midpoint,y:0},{x:width,y:-height/2},{x:width-midpoint,y:-height},{x:width-midpoint,y:-height+padding2},{x:midpoint,y:-height+padding2},{x:midpoint,y:-height},{x:0,y:-height/2}]:directions.has("up")&&directions.has("down")?[{x:width/2,y:0},{x:0,y:-padding2},{x:midpoint,y:-padding2},{x:midpoint,y:-height+padding2},{x:0,y:-height+padding2},{x:width/2,y:-height},{x:width,y:-height+padding2},{x:width-midpoint,y:-height+padding2},{x:width-midpoint,y:-padding2},{x:width,y:-padding2}]:directions.has("right")&&directions.has("up")?[{x:0,y:0},{x:width,y:-midpoint},{x:0,y:-height}]:directions.has("right")&&directions.has("down")?[{x:0,y:0},{x:width,y:0},{x:0,y:-height}]:directions.has("left")&&directions.has("up")?[{x:width,y:0},{x:0,y:-midpoint},{x:width,y:-height}]:directions.has("left")&&directions.has("down")?[{x:width,y:0},{x:0,y:0},{x:width,y:-height}]:directions.has("right")?[{x:midpoint,y:-padding2},{x:midpoint,y:-padding2},{x:width-midpoint,y:-padding2},{x:width-midpoint,y:0},{x:width,y:-height/2},{x:width-midpoint,y:-height},{x:width-midpoint,y:-height+padding2},{x:midpoint,y:-height+padding2},{x:midpoint,y:-height+padding2}]:directions.has("left")?[{x:midpoint,y:0},{x:midpoint,y:-padding2},{x:width-midpoint,y:-padding2},{x:width-midpoint,y:-height+padding2},{x:midpoint,y:-height+padding2},{x:midpoint,y:-height},{x:0,y:-height/2}]:directions.has("up")?[{x:midpoint,y:-padding2},{x:midpoint,y:-height+padding2},{x:0,y:-height+padding2},{x:width/2,y:-height},{x:width,y:-height+padding2},{x:width-midpoint,y:-height+padding2},{x:width-midpoint,y:-padding2}]:directions.has("down")?[{x:width/2,y:0},{x:0,y:-padding2},{x:midpoint,y:-padding2},{x:midpoint,y:-height+padding2},{x:width-midpoint,y:-height+padding2},{x:width-midpoint,y:-padding2},{x:width,y:-padding2}]:[{x:0,y:0}]},"getArrowPoints");function intersectNode(node,point2){return node.intersect(point2)}__name(intersectNode,"intersectNode");var intersect_node_default=intersectNode;function intersectEllipse(node,rx,ry,point2){var cx=node.x,cy=node.y,px=cx-point2.x,py=cy-point2.y,det=Math.sqrt(rx*rx*py*py+ry*ry*px*px),dx=Math.abs(rx*ry*px/det);point2.x<cx&&(dx=-dx);var dy=Math.abs(rx*ry*py/det);return point2.y<cy&&(dy=-dy),{x:cx+dx,y:cy+dy}}__name(intersectEllipse,"intersectEllipse");var intersect_ellipse_default=intersectEllipse;function intersectCircle(node,rx,point2){return intersect_ellipse_default(node,rx,rx,point2)}__name(intersectCircle,"intersectCircle");var intersect_circle_default=intersectCircle;function intersectLine(p1,p2,q1,q2){var a1,a2,b1,b2,c1,c2,r1,r2,r3,r4,denom,offset,num;if(a1=p2.y-p1.y,b1=p1.x-p2.x,c1=p2.x*p1.y-p1.x*p2.y,r3=a1*q1.x+b1*q1.y+c1,r4=a1*q2.x+b1*q2.y+c1,!(0!==r3&&0!==r4&&sameSign(r3,r4)||(a2=q2.y-q1.y,b2=q1.x-q2.x,c2=q2.x*q1.y-q1.x*q2.y,r1=a2*p1.x+b2*p1.y+c2,r2=a2*p2.x+b2*p2.y+c2,0!==r1&&0!==r2&&sameSign(r1,r2)||0===(denom=a1*b2-a2*b1))))return offset=Math.abs(denom/2),{x:(num=b1*c2-b2*c1)<0?(num-offset)/denom:(num+offset)/denom,y:(num=a2*c1-a1*c2)<0?(num-offset)/denom:(num+offset)/denom}}function sameSign(r1,r2){return r1*r2>0}__name(intersectLine,"intersectLine"),__name(sameSign,"sameSign");var intersect_line_default=intersectLine,intersect_polygon_default=intersectPolygon;function intersectPolygon(node,polyPoints,point2){var x1=node.x,y1=node.y,intersections=[],minX=Number.POSITIVE_INFINITY,minY=Number.POSITIVE_INFINITY;"function"==typeof polyPoints.forEach?polyPoints.forEach(function(entry){minX=Math.min(minX,entry.x),minY=Math.min(minY,entry.y)}):(minX=Math.min(minX,polyPoints.x),minY=Math.min(minY,polyPoints.y));for(var left=x1-node.width/2-minX,top=y1-node.height/2-minY,i=0;i<polyPoints.length;i++){var p1=polyPoints[i],p2=polyPoints[i<polyPoints.length-1?i+1:0],intersect=intersect_line_default(node,point2,{x:left+p1.x,y:top+p1.y},{x:left+p2.x,y:top+p2.y});intersect&&intersections.push(intersect)}return intersections.length?(intersections.length>1&&intersections.sort(function(p,q){var pdx=p.x-point2.x,pdy=p.y-point2.y,distp=Math.sqrt(pdx*pdx+pdy*pdy),qdx=q.x-point2.x,qdy=q.y-point2.y,distq=Math.sqrt(qdx*qdx+qdy*qdy);return distp<distq?-1:distp===distq?0:1}),intersections[0]):node}__name(intersectPolygon,"intersectPolygon");var intersect_default={node:intersect_node_default,circle:intersect_circle_default,ellipse:intersect_ellipse_default,polygon:intersect_polygon_default,rect:__name((node,point2)=>{var sx,sy,x=node.x,y=node.y,dx=point2.x-x,dy=point2.y-y,w=node.width/2,h=node.height/2;return Math.abs(dy)*w>Math.abs(dx)*h?(dy<0&&(h=-h),sx=0===dy?0:h*dx/dy,sy=h):(dx<0&&(w=-w),sx=w,sy=0===dx?0:w*dy/dx),{x:x+sx,y:y+sy}},"intersectRect")},labelHelper=__name(async(parent,node,_classes,isNode)=>{const config2=getConfig2();let classes2;const useHtmlLabels=node.useHtmlLabels||getEffectiveHtmlLabels(config2);classes2=_classes||"node default";const shapeSvg=parent.insert("g").attr("class",classes2).attr("id",node.domId||node.id),label=shapeSvg.insert("g").attr("class","label").attr("style",node.labelStyle);let labelText,text;labelText=void 0===node.labelText?"":"string"==typeof node.labelText?node.labelText:node.labelText[0],text="markdown"===node.labelType?createText(label,sanitizeText(decodeEntities(labelText),config2),{useHtmlLabels:useHtmlLabels,width:node.width||config2.flowchart.wrappingWidth,classes:"markdown-node-label"},config2):await createLabel_default(label,sanitizeText(decodeEntities(labelText),config2),node.labelStyle,!1,isNode);let bbox=text.getBBox();const halfPadding=node.padding/2;if(getEffectiveHtmlLabels(config2)){const div=text.children[0],dv=select(text);await configureLabelImages(div,labelText),bbox=div.getBoundingClientRect(),dv.attr("width",bbox.width),dv.attr("height",bbox.height)}return useHtmlLabels?label.attr("transform","translate("+-bbox.width/2+", "+-bbox.height/2+")"):label.attr("transform","translate(0, "+-bbox.height/2+")"),node.centerLabel&&label.attr("transform","translate("+-bbox.width/2+", "+-bbox.height/2+")"),label.insert("rect",":first-child"),{shapeSvg:shapeSvg,bbox:bbox,halfPadding:halfPadding,label:label}},"labelHelper"),updateNodeBounds=__name((node,element)=>{const bbox=element.node().getBBox();node.width=bbox.width,node.height=bbox.height},"updateNodeBounds");function insertPolygonShape(parent,w,h,points){return parent.insert("polygon",":first-child").attr("points",points.map(function(d){return d.x+","+d.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-w/2+","+h/2+")")}__name(insertPolygonShape,"insertPolygonShape");var note_default=__name(async(parent,node)=>{node.useHtmlLabels||getEffectiveHtmlLabels(getConfig2())||(node.centerLabel=!0);const{shapeSvg:shapeSvg,bbox:bbox,halfPadding:halfPadding}=await labelHelper(parent,node,"node "+node.classes,!0);log.info("Classes = ",node.classes);const rect2=shapeSvg.insert("rect",":first-child");return rect2.attr("rx",node.rx).attr("ry",node.ry).attr("x",-bbox.width/2-halfPadding).attr("y",-bbox.height/2-halfPadding).attr("width",bbox.width+node.padding).attr("height",bbox.height+node.padding),updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"note"),formatClass=__name(str=>str?" "+str:"","formatClass"),getClassesFromNode=__name((node,otherClasses)=>`${otherClasses||"node default"}${formatClass(node.classes)} ${formatClass(node.class)}`,"getClassesFromNode"),question=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),s=bbox.width+node.padding+(bbox.height+node.padding),points=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];log.info("Question main (Circle)");const questionElem=insertPolygonShape(shapeSvg,s,s,points);return questionElem.attr("style",node.style),updateNodeBounds(node,questionElem),node.intersect=function(point2){return log.warn("Intersect called"),intersect_default.polygon(node,points,point2)},shapeSvg},"question"),choice=__name((parent,node)=>{const shapeSvg=parent.insert("g").attr("class","node default").attr("id",node.domId||node.id),points=[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}];return shapeSvg.insert("polygon",":first-child").attr("points",points.map(function(d){return d.x+","+d.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),node.width=28,node.height=28,node.intersect=function(point2){return intersect_default.circle(node,14,point2)},shapeSvg},"choice"),hexagon=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),h=bbox.height+node.padding,m=h/4,w=bbox.width+2*m+node.padding,points=[{x:m,y:0},{x:w-m,y:0},{x:w,y:-h/2},{x:w-m,y:-h},{x:m,y:-h},{x:0,y:-h/2}],hex=insertPolygonShape(shapeSvg,w,h,points);return hex.attr("style",node.style),updateNodeBounds(node,hex),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"hexagon"),block_arrow=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,void 0,!0),h=bbox.height+2*node.padding,m=h/2,w=bbox.width+2*m+node.padding,points=getArrowPoints(node.directions,bbox,node),blockArrow=insertPolygonShape(shapeSvg,w,h,points);return blockArrow.attr("style",node.style),updateNodeBounds(node,blockArrow),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"block_arrow"),rect_left_inv_arrow=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:-h/2,y:0},{x:w,y:0},{x:w,y:-h},{x:-h/2,y:-h},{x:0,y:-h/2}];return insertPolygonShape(shapeSvg,w,h,points).attr("style",node.style),node.width=w+h,node.height=h,node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"rect_left_inv_arrow"),lean_right=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:-2*h/6,y:0},{x:w-h/6,y:0},{x:w+2*h/6,y:-h},{x:h/6,y:-h}],el=insertPolygonShape(shapeSvg,w,h,points);return el.attr("style",node.style),updateNodeBounds(node,el),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"lean_right"),lean_left=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:2*h/6,y:0},{x:w+h/6,y:0},{x:w-2*h/6,y:-h},{x:-h/6,y:-h}],el=insertPolygonShape(shapeSvg,w,h,points);return el.attr("style",node.style),updateNodeBounds(node,el),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"lean_left"),trapezoid=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:-2*h/6,y:0},{x:w+2*h/6,y:0},{x:w-h/6,y:-h},{x:h/6,y:-h}],el=insertPolygonShape(shapeSvg,w,h,points);return el.attr("style",node.style),updateNodeBounds(node,el),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"trapezoid"),inv_trapezoid=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:h/6,y:0},{x:w-h/6,y:0},{x:w+2*h/6,y:-h},{x:-2*h/6,y:-h}],el=insertPolygonShape(shapeSvg,w,h,points);return el.attr("style",node.style),updateNodeBounds(node,el),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"inv_trapezoid"),rect_right_inv_arrow=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:0,y:0},{x:w+h/2,y:0},{x:w,y:-h/2},{x:w+h/2,y:-h},{x:0,y:-h}],el=insertPolygonShape(shapeSvg,w,h,points);return el.attr("style",node.style),updateNodeBounds(node,el),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"rect_right_inv_arrow"),cylinder=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,rx=w/2,ry=rx/(2.5+w/50),h=bbox.height+ry+node.padding,shape="M 0,"+ry+" a "+rx+","+ry+" 0,0,0 "+w+" 0 a "+rx+","+ry+" 0,0,0 "+-w+" 0 l 0,"+h+" a "+rx+","+ry+" 0,0,0 "+w+" 0 l 0,"+-h,el=shapeSvg.attr("label-offset-y",ry).insert("path",":first-child").attr("style",node.style).attr("d",shape).attr("transform","translate("+-w/2+","+-(h/2+ry)+")");return updateNodeBounds(node,el),node.intersect=function(point2){const pos=intersect_default.rect(node,point2),x=pos.x-node.x;if(0!=rx&&(Math.abs(x)<node.width/2||Math.abs(x)==node.width/2&&Math.abs(pos.y-node.y)>node.height/2-ry)){let y=ry*ry*(1-x*x/(rx*rx));0!=y&&(y=Math.sqrt(y)),y=ry-y,point2.y-node.y>0&&(y=-y),pos.y+=y}return pos},shapeSvg},"cylinder"),rect=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox,halfPadding:halfPadding}=await labelHelper(parent,node,"node "+node.classes+" "+node.class,!0),rect2=shapeSvg.insert("rect",":first-child"),totalWidth=node.positioned?node.width:bbox.width+node.padding,totalHeight=node.positioned?node.height:bbox.height+node.padding,x=node.positioned?-totalWidth/2:-bbox.width/2-halfPadding,y=node.positioned?-totalHeight/2:-bbox.height/2-halfPadding;if(rect2.attr("class","basic label-container").attr("style",node.style).attr("rx",node.rx).attr("ry",node.ry).attr("x",x).attr("y",y).attr("width",totalWidth).attr("height",totalHeight),node.props){const propKeys=new Set(Object.keys(node.props));node.props.borders&&(applyNodePropertyBorders(rect2,node.props.borders,totalWidth,totalHeight),propKeys.delete("borders")),propKeys.forEach(propKey=>{log.warn(`Unknown node property ${propKey}`)})}return updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"rect"),composite=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox,halfPadding:halfPadding}=await labelHelper(parent,node,"node "+node.classes,!0),rect2=shapeSvg.insert("rect",":first-child"),totalWidth=node.positioned?node.width:bbox.width+node.padding,totalHeight=node.positioned?node.height:bbox.height+node.padding,x=node.positioned?-totalWidth/2:-bbox.width/2-halfPadding,y=node.positioned?-totalHeight/2:-bbox.height/2-halfPadding;if(rect2.attr("class","basic cluster composite label-container").attr("style",node.style).attr("rx",node.rx).attr("ry",node.ry).attr("x",x).attr("y",y).attr("width",totalWidth).attr("height",totalHeight),node.props){const propKeys=new Set(Object.keys(node.props));node.props.borders&&(applyNodePropertyBorders(rect2,node.props.borders,totalWidth,totalHeight),propKeys.delete("borders")),propKeys.forEach(propKey=>{log.warn(`Unknown node property ${propKey}`)})}return updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"composite"),labelRect=__name(async(parent,node)=>{const{shapeSvg:shapeSvg}=await labelHelper(parent,node,"label",!0);log.trace("Classes = ",node.class);const rect2=shapeSvg.insert("rect",":first-child");if(rect2.attr("width",0).attr("height",0),shapeSvg.attr("class","label edgeLabel"),node.props){const propKeys=new Set(Object.keys(node.props));node.props.borders&&(applyNodePropertyBorders(rect2,node.props.borders,0,0),propKeys.delete("borders")),propKeys.forEach(propKey=>{log.warn(`Unknown node property ${propKey}`)})}return updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"labelRect");function applyNodePropertyBorders(rect2,borders,totalWidth,totalHeight){const strokeDashArray=[],addBorder=__name(length=>{strokeDashArray.push(length,0)},"addBorder"),skipBorder=__name(length=>{strokeDashArray.push(0,length)},"skipBorder");borders.includes("t")?(log.debug("add top border"),addBorder(totalWidth)):skipBorder(totalWidth),borders.includes("r")?(log.debug("add right border"),addBorder(totalHeight)):skipBorder(totalHeight),borders.includes("b")?(log.debug("add bottom border"),addBorder(totalWidth)):skipBorder(totalWidth),borders.includes("l")?(log.debug("add left border"),addBorder(totalHeight)):skipBorder(totalHeight),rect2.attr("stroke-dasharray",strokeDashArray.join(" "))}__name(applyNodePropertyBorders,"applyNodePropertyBorders");var rectWithTitle=__name(async(parent,node)=>{let classes2;classes2=node.classes?"node "+node.classes:"node default";const shapeSvg=parent.insert("g").attr("class",classes2).attr("id",node.domId||node.id),rect2=shapeSvg.insert("rect",":first-child"),innerLine=shapeSvg.insert("line"),label=shapeSvg.insert("g").attr("class","label"),text2=node.labelText.flat?node.labelText.flat():node.labelText;let title="";title="object"==typeof text2?text2[0]:text2,log.info("Label text abc79",title,text2,"object"==typeof text2);const text=await createLabel_default(label,title,node.labelStyle,!0,!0);let bbox={width:0,height:0};if(getEffectiveHtmlLabels(getConfig2())){const div=text.children[0],dv=select(text);bbox=div.getBoundingClientRect(),dv.attr("width",bbox.width),dv.attr("height",bbox.height)}log.info("Text 2",text2);const textRows=text2.slice(1,text2.length);let titleBox=text.getBBox();const descr=await createLabel_default(label,textRows.join?textRows.join("<br/>"):textRows,node.labelStyle,!0,!0);if(getEffectiveHtmlLabels(getConfig2())){const div=descr.children[0],dv=select(descr);bbox=div.getBoundingClientRect(),dv.attr("width",bbox.width),dv.attr("height",bbox.height)}const halfPadding=node.padding/2;return select(descr).attr("transform","translate( "+(bbox.width>titleBox.width?0:(titleBox.width-bbox.width)/2)+", "+(titleBox.height+halfPadding+5)+")"),select(text).attr("transform","translate( "+(bbox.width<titleBox.width?0:-(titleBox.width-bbox.width)/2)+", 0)"),bbox=label.node().getBBox(),label.attr("transform","translate("+-bbox.width/2+", "+(-bbox.height/2-halfPadding+3)+")"),rect2.attr("class","outer title-state").attr("x",-bbox.width/2-halfPadding).attr("y",-bbox.height/2-halfPadding).attr("width",bbox.width+node.padding).attr("height",bbox.height+node.padding),innerLine.attr("class","divider").attr("x1",-bbox.width/2-halfPadding).attr("x2",bbox.width/2+halfPadding).attr("y1",-bbox.height/2-halfPadding+titleBox.height+halfPadding).attr("y2",-bbox.height/2-halfPadding+titleBox.height+halfPadding),updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"rectWithTitle"),stadium=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),h=bbox.height+node.padding,w=bbox.width+h/4+node.padding,rect2=shapeSvg.insert("rect",":first-child").attr("style",node.style).attr("rx",h/2).attr("ry",h/2).attr("x",-w/2).attr("y",-h/2).attr("width",w).attr("height",h);return updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"stadium"),circle2=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox,halfPadding:halfPadding}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),circle3=shapeSvg.insert("circle",":first-child");return circle3.attr("style",node.style).attr("rx",node.rx).attr("ry",node.ry).attr("r",bbox.width/2+halfPadding).attr("width",bbox.width+node.padding).attr("height",bbox.height+node.padding),log.info("Circle main"),updateNodeBounds(node,circle3),node.intersect=function(point2){return log.info("Circle intersect",node,bbox.width/2+halfPadding,point2),intersect_default.circle(node,bbox.width/2+halfPadding,point2)},shapeSvg},"circle"),doublecircle=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox,halfPadding:halfPadding}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),circleGroup=shapeSvg.insert("g",":first-child"),outerCircle=circleGroup.insert("circle"),innerCircle=circleGroup.insert("circle");return circleGroup.attr("class",node.class),outerCircle.attr("style",node.style).attr("rx",node.rx).attr("ry",node.ry).attr("r",bbox.width/2+halfPadding+5).attr("width",bbox.width+node.padding+10).attr("height",bbox.height+node.padding+10),innerCircle.attr("style",node.style).attr("rx",node.rx).attr("ry",node.ry).attr("r",bbox.width/2+halfPadding).attr("width",bbox.width+node.padding).attr("height",bbox.height+node.padding),log.info("DoubleCircle main"),updateNodeBounds(node,outerCircle),node.intersect=function(point2){return log.info("DoubleCircle intersect",node,bbox.width/2+halfPadding+5,point2),intersect_default.circle(node,bbox.width/2+halfPadding+5,point2)},shapeSvg},"doublecircle"),subroutine=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:0,y:0},{x:w,y:0},{x:w,y:-h},{x:0,y:-h},{x:0,y:0},{x:-8,y:0},{x:w+8,y:0},{x:w+8,y:-h},{x:-8,y:-h},{x:-8,y:0}],el=insertPolygonShape(shapeSvg,w,h,points);return el.attr("style",node.style),updateNodeBounds(node,el),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"subroutine"),start=__name((parent,node)=>{const shapeSvg=parent.insert("g").attr("class","node default").attr("id",node.domId||node.id),circle3=shapeSvg.insert("circle",":first-child");return circle3.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),updateNodeBounds(node,circle3),node.intersect=function(point2){return intersect_default.circle(node,7,point2)},shapeSvg},"start"),forkJoin=__name((parent,node,dir)=>{const shapeSvg=parent.insert("g").attr("class","node default").attr("id",node.domId||node.id);let width=70,height=10;"LR"===dir&&(width=10,height=70);const shape=shapeSvg.append("rect").attr("x",-1*width/2).attr("y",-1*height/2).attr("width",width).attr("height",height).attr("class","fork-join");return updateNodeBounds(node,shape),node.height=node.height+node.padding/2,node.width=node.width+node.padding/2,node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"forkJoin"),shapes={rhombus:question,composite:composite,question:question,rect:rect,labelRect:labelRect,rectWithTitle:rectWithTitle,choice:choice,circle:circle2,doublecircle:doublecircle,stadium:stadium,hexagon:hexagon,block_arrow:block_arrow,rect_left_inv_arrow:rect_left_inv_arrow,lean_right:lean_right,lean_left:lean_left,trapezoid:trapezoid,inv_trapezoid:inv_trapezoid,rect_right_inv_arrow:rect_right_inv_arrow,cylinder:cylinder,start:start,end:__name((parent,node)=>{const shapeSvg=parent.insert("g").attr("class","node default").attr("id",node.domId||node.id),innerCircle=shapeSvg.insert("circle",":first-child"),circle3=shapeSvg.insert("circle",":first-child");return circle3.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),innerCircle.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),updateNodeBounds(node,circle3),node.intersect=function(point2){return intersect_default.circle(node,7,point2)},shapeSvg},"end"),note:note_default,subroutine:subroutine,fork:forkJoin,join:forkJoin,class_box:__name(async(parent,node)=>{var _a2;const halfPadding=node.padding/2;let classes2;classes2=node.classes?"node "+node.classes:"node default";const shapeSvg=parent.insert("g").attr("class",classes2).attr("id",node.domId||node.id),rect2=shapeSvg.insert("rect",":first-child"),topLine=shapeSvg.insert("line"),bottomLine=shapeSvg.insert("line");let maxWidth=0,maxHeight=4;const labelContainer=shapeSvg.insert("g").attr("class","label");let verticalPos=0;const hasInterface=null==(_a2=node.classData.annotations)?void 0:_a2[0],interfaceLabelText=node.classData.annotations[0]?"«"+node.classData.annotations[0]+"»":"",interfaceLabel=await createLabel_default(labelContainer,interfaceLabelText,node.labelStyle,!0,!0);let interfaceBBox=interfaceLabel.getBBox();if(getEffectiveHtmlLabels(getConfig2())){const div=interfaceLabel.children[0],dv=select(interfaceLabel);interfaceBBox=div.getBoundingClientRect(),dv.attr("width",interfaceBBox.width),dv.attr("height",interfaceBBox.height)}node.classData.annotations[0]&&(maxHeight+=interfaceBBox.height+4,maxWidth+=interfaceBBox.width);let classTitleString=node.classData.label;void 0!==node.classData.type&&""!==node.classData.type&&(getEffectiveHtmlLabels(getConfig2())?classTitleString+="&lt;"+node.classData.type+"&gt;":classTitleString+="<"+node.classData.type+">");const classTitleLabel=await createLabel_default(labelContainer,classTitleString,node.labelStyle,!0,!0);select(classTitleLabel).attr("class","classTitle");let classTitleBBox=classTitleLabel.getBBox();if(getEffectiveHtmlLabels(getConfig2())){const div=classTitleLabel.children[0],dv=select(classTitleLabel);classTitleBBox=div.getBoundingClientRect(),dv.attr("width",classTitleBBox.width),dv.attr("height",classTitleBBox.height)}maxHeight+=classTitleBBox.height+4,classTitleBBox.width>maxWidth&&(maxWidth=classTitleBBox.width);const classAttributes=[];node.classData.members.forEach(async member=>{const parsedInfo=member.getDisplayDetails();let parsedText=parsedInfo.displayText;getEffectiveHtmlLabels(getConfig2())&&(parsedText=parsedText.replace(/</g,"&lt;").replace(/>/g,"&gt;"));const lbl=await createLabel_default(labelContainer,parsedText,parsedInfo.cssStyle?parsedInfo.cssStyle:node.labelStyle,!0,!0);let bbox=lbl.getBBox();if(getEffectiveHtmlLabels(getConfig2())){const div=lbl.children[0],dv=select(lbl);bbox=div.getBoundingClientRect(),dv.attr("width",bbox.width),dv.attr("height",bbox.height)}bbox.width>maxWidth&&(maxWidth=bbox.width),maxHeight+=bbox.height+4,classAttributes.push(lbl)}),maxHeight+=8;const classMethods=[];if(node.classData.methods.forEach(async member=>{const parsedInfo=member.getDisplayDetails();let displayText=parsedInfo.displayText;getEffectiveHtmlLabels(getConfig2())&&(displayText=displayText.replace(/</g,"&lt;").replace(/>/g,"&gt;"));const lbl=await createLabel_default(labelContainer,displayText,parsedInfo.cssStyle?parsedInfo.cssStyle:node.labelStyle,!0,!0);let bbox=lbl.getBBox();if(getEffectiveHtmlLabels(getConfig2())){const div=lbl.children[0],dv=select(lbl);bbox=div.getBoundingClientRect(),dv.attr("width",bbox.width),dv.attr("height",bbox.height)}bbox.width>maxWidth&&(maxWidth=bbox.width),maxHeight+=bbox.height+4,classMethods.push(lbl)}),maxHeight+=8,hasInterface){let diffX2=(maxWidth-interfaceBBox.width)/2;select(interfaceLabel).attr("transform","translate( "+(-1*maxWidth/2+diffX2)+", "+-1*maxHeight/2+")"),verticalPos=interfaceBBox.height+4}let diffX=(maxWidth-classTitleBBox.width)/2;return select(classTitleLabel).attr("transform","translate( "+(-1*maxWidth/2+diffX)+", "+(-1*maxHeight/2+verticalPos)+")"),verticalPos+=classTitleBBox.height+4,topLine.attr("class","divider").attr("x1",-maxWidth/2-halfPadding).attr("x2",maxWidth/2+halfPadding).attr("y1",-maxHeight/2-halfPadding+8+verticalPos).attr("y2",-maxHeight/2-halfPadding+8+verticalPos),verticalPos+=8,classAttributes.forEach(lbl=>{select(lbl).attr("transform","translate( "+-maxWidth/2+", "+(-1*maxHeight/2+verticalPos+4)+")");const memberBBox=null==lbl?void 0:lbl.getBBox();verticalPos+=((null==memberBBox?void 0:memberBBox.height)??0)+4}),verticalPos+=8,bottomLine.attr("class","divider").attr("x1",-maxWidth/2-halfPadding).attr("x2",maxWidth/2+halfPadding).attr("y1",-maxHeight/2-halfPadding+8+verticalPos).attr("y2",-maxHeight/2-halfPadding+8+verticalPos),verticalPos+=8,classMethods.forEach(lbl=>{select(lbl).attr("transform","translate( "+-maxWidth/2+", "+(-1*maxHeight/2+verticalPos)+")");const memberBBox=null==lbl?void 0:lbl.getBBox();verticalPos+=((null==memberBBox?void 0:memberBBox.height)??0)+4}),rect2.attr("style",node.style).attr("class","outer title-state").attr("x",-maxWidth/2-halfPadding).attr("y",-maxHeight/2-halfPadding).attr("width",maxWidth+node.padding).attr("height",maxHeight+node.padding),updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"class_box")},nodeElems={},insertNode=__name(async(elem,node,renderOptions)=>{let newEl,el;if(node.link){let target;"sandbox"===getConfig2().securityLevel?target="_top":node.linkTarget&&(target=node.linkTarget||"_blank"),newEl=elem.insert("svg:a").attr("xlink:href",node.link).attr("target",target),el=await shapes[node.shape](newEl,node,renderOptions)}else el=await shapes[node.shape](elem,node,renderOptions),newEl=el;return node.tooltip&&el.attr("title",node.tooltip),node.class&&el.attr("class","node default "+node.class),nodeElems[node.id]=newEl,node.haveCallback&&nodeElems[node.id].attr("class",nodeElems[node.id].attr("class")+" clickable"),newEl},"insertNode"),positionNode=__name(node=>{const el=nodeElems[node.id];log.trace("Transforming node",node.diff,node,"translate("+(node.x-node.width/2-5)+", "+node.width/2+")");const diff=node.diff||0;return node.clusterNode?el.attr("transform","translate("+(node.x+diff-node.width/2)+", "+(node.y-node.height/2-8)+")"):el.attr("transform","translate("+node.x+", "+node.y+")"),diff},"positionNode");function getNodeFromBlock(block,db2,positioned=!1){var _a2,_b2,_c;const vertex=block;let classStr="default";((null==(_a2=null==vertex?void 0:vertex.classes)?void 0:_a2.length)||0)>0&&(classStr=((null==vertex?void 0:vertex.classes)??[]).join(" ")),classStr+=" flowchart-label";let padding2,radius=0,shape="";switch(vertex.type){case"round":radius=5,shape="rect";break;case"composite":radius=0,shape="composite",padding2=0;break;case"square":case"group":default:shape="rect";break;case"diamond":shape="question";break;case"hexagon":shape="hexagon";break;case"block_arrow":shape="block_arrow";break;case"odd":case"rect_left_inv_arrow":shape="rect_left_inv_arrow";break;case"lean_right":shape="lean_right";break;case"lean_left":shape="lean_left";break;case"trapezoid":shape="trapezoid";break;case"inv_trapezoid":shape="inv_trapezoid";break;case"circle":shape="circle";break;case"ellipse":shape="ellipse";break;case"stadium":shape="stadium";break;case"subroutine":shape="subroutine";break;case"cylinder":shape="cylinder";break;case"doublecircle":shape="doublecircle"}const styles=getStylesFromArray((null==vertex?void 0:vertex.styles)??[]),vertexText=vertex.label,bounds=vertex.size??{width:0,height:0,x:0,y:0},dbDiagramId=db2.getDiagramId();return{labelStyle:styles.labelStyle,shape:shape,labelText:vertexText,rx:radius,ry:radius,class:classStr,style:styles.style,id:vertex.id,domId:dbDiagramId?`${dbDiagramId}-${vertex.id}`:vertex.id,directions:vertex.directions,width:bounds.width,height:bounds.height,x:bounds.x,y:bounds.y,positioned:positioned,intersect:void 0,type:vertex.type,padding:padding2??(null==(_c=null==(_b2=getConfig())?void 0:_b2.block)?void 0:_c.padding)??0}}async function calculateBlockSize(elem,block,db2){const node=getNodeFromBlock(block,db2,!1);if("group"===node.type)return;const config2=getConfig(),nodeEl=await insertNode(elem,node,{config:config2}),boundingBox=nodeEl.node().getBBox(),obj=db2.getBlock(node.id);obj.size={width:boundingBox.width,height:boundingBox.height,x:0,y:0,node:nodeEl},db2.setBlock(obj),nodeEl.remove()}async function insertBlockPositioned(elem,block,db2){const node=getNodeFromBlock(block,db2,!0);if("space"!==db2.getBlock(node.id).type){const config2=getConfig();await insertNode(elem,node,{config:config2}),block.intersect=null==node?void 0:node.intersect,positionNode(node)}}async function performOperations(elem,blocks2,db2,operation){for(const block of blocks2)await operation(elem,block,db2),block.children&&await performOperations(elem,block.children,db2,operation)}async function calculateBlockSizes(elem,blocks2,db2){await performOperations(elem,blocks2,db2,calculateBlockSize)}async function insertBlocks(elem,blocks2,db2){await performOperations(elem,blocks2,db2,insertBlockPositioned)}async function insertEdges(elem,edges,blocks2,db2,id){const g=new Graph({multigraph:!0,compound:!0});g.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(const block of blocks2)block.size&&g.setNode(block.id,{width:block.size.width,height:block.size.height,intersect:block.intersect});for(const edge of edges)if(edge.start&&edge.end){const startBlock=db2.getBlock(edge.start),endBlock=db2.getBlock(edge.end);if((null==startBlock?void 0:startBlock.size)&&(null==endBlock?void 0:endBlock.size)){const start2=startBlock.size,end2=endBlock.size,points=[{x:start2.x,y:start2.y},{x:start2.x+(end2.x-start2.x)/2,y:start2.y+(end2.y-start2.y)/2},{x:end2.x,y:end2.y}],prefixedEdgeId=id?`${id}-${edge.id}`:edge.id;insertEdge(elem,{v:edge.start,w:edge.end,name:prefixedEdgeId},{...edge,id:prefixedEdgeId,arrowTypeEnd:edge.arrowTypeEnd,arrowTypeStart:edge.arrowTypeStart,points:points,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",g,id),edge.label&&(await insertEdgeLabel(elem,{...edge,label:edge.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:edge.arrowTypeEnd,arrowTypeStart:edge.arrowTypeStart,points:points,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),positionEdgeLabel({...edge,x:points[1].x,y:points[1].y},{originalPath:points}))}}}__name(getNodeFromBlock,"getNodeFromBlock"),__name(calculateBlockSize,"calculateBlockSize"),__name(insertBlockPositioned,"insertBlockPositioned"),__name(performOperations,"performOperations"),__name(calculateBlockSizes,"calculateBlockSizes"),__name(insertBlocks,"insertBlocks"),__name(insertEdges,"insertEdges");var getClasses2=__name(function(text,diagObj){return diagObj.db.getClasses()},"getClasses"),diagram={parser:block_default,db:blockDB_default,renderer:{draw:__name(async function(text,id,_version,diagObj){const{securityLevel:securityLevel,block:conf}=getConfig(),db2=diagObj.db;let sandboxElement;db2.setDiagramId(id),"sandbox"===securityLevel&&(sandboxElement=select("#i"+id));const root=select("sandbox"===securityLevel?sandboxElement.nodes()[0].contentDocument.body:"body"),svg="sandbox"===securityLevel?root.select(`[id="${id}"]`):select(`[id="${id}"]`);markers_default(svg,["point","circle","cross"],diagObj.type,id);const bl=db2.getBlocks(),blArr=db2.getBlocksFlat(),edges=db2.getEdges(),nodes=svg.insert("g").attr("class","block");await calculateBlockSizes(nodes,bl,db2);const bounds=layout(db2);if(await insertBlocks(nodes,bl,db2),await insertEdges(nodes,edges,blArr,db2,id),bounds){const bounds2=bounds,magicFactor=Math.max(1,Math.round(bounds2.width/bounds2.height*.125)),height=bounds2.height+magicFactor+10,width=bounds2.width+10,{useMaxWidth:useMaxWidth}=conf;configureSvgSize(svg,height,width,!!useMaxWidth),log.debug("Here Bounds",bounds,bounds2),svg.attr("viewBox",`${bounds2.x-5} ${bounds2.y-5} ${bounds2.width+10} ${bounds2.height+10}`)}},"draw"),getClasses:getClasses2},styles:styles_default};export{diagram};
1
+ var _a,_b;import{g as getIconStyles}from"./chunk-FMBD7UC4-DmCR8mDZ.js";import{_ as __name,C as getConfig,d as select,e as configureSvgSize,l as log,y as clear,A as rgba,ah as getLineFunctionsWithOffset,Q as line,R as curveBasis,c as getConfig2,N as getUrl,ai as getEffectiveHtmlLabels,aj as createText,ak as computeLabelTransform,al as getSubGraphTitleMargins,u as utils_default,k as common_default,am as getStylesFromArray,i as sanitizeText,an as decodeEntities,ao as configureLabelImages}from"./mermaid.core-YmJi7T-s.js";import{c as clone}from"./clone-ChTCnPsO.js";import{G as Graph}from"./graph-ChltdhTU.js";import{c as channel}from"./channel-CF3zZzSR.js";import"./vendor-mdxeditor-BdKMdw6O.js";import"./vendor-antd-5xE7sz6B.js";import"./vendor-codemirror-ib-jPbXC.js";import"./vendor-markdown-BFrYfpb0.js";import"./_baseUniq-CPJrFyUF.js";var parser=function(){var o=__name(function(k,v,o2,l){for(o2=o2||{},l=k.length;l--;o2[k[l]]=v);return o2},"o"),$V0=[1,15],$V1=[1,7],$V2=[1,13],$V3=[1,14],$V4=[1,19],$V5=[1,16],$V6=[1,17],$V7=[1,18],$V8=[8,30],$V9=[8,10,21,28,29,30,31,39,43,46],$Va=[1,23],$Vb=[1,24],$Vc=[8,10,15,16,21,28,29,30,31,39,43,46],$Vd=[8,10,15,16,21,27,28,29,30,31,39,43,46],$Ve=[1,49],parser2={trace:__name(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:__name(function(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 4:yy.getLogger().debug("Rule: separator (NL) ");break;case 5:yy.getLogger().debug("Rule: separator (Space) ");break;case 6:yy.getLogger().debug("Rule: separator (EOF) ");break;case 7:yy.getLogger().debug("Rule: hierarchy: ",$$[$0-1]),yy.setHierarchy($$[$0-1]);break;case 8:yy.getLogger().debug("Stop NL ");break;case 9:yy.getLogger().debug("Stop EOF ");break;case 10:yy.getLogger().debug("Stop NL2 ");break;case 11:yy.getLogger().debug("Stop EOF2 ");break;case 12:yy.getLogger().debug("Rule: statement: ",$$[$0]),"number"==typeof $$[$0].length?this.$=$$[$0]:this.$=[$$[$0]];break;case 13:yy.getLogger().debug("Rule: statement #2: ",$$[$0-1]),this.$=[$$[$0-1]].concat($$[$0]);break;case 14:yy.getLogger().debug("Rule: link: ",$$[$0],yytext),this.$={edgeTypeStr:$$[$0],label:""};break;case 15:yy.getLogger().debug("Rule: LABEL link: ",$$[$0-3],$$[$0-1],$$[$0]),this.$={edgeTypeStr:$$[$0],label:$$[$0-1]};break;case 18:const num=parseInt($$[$0]),spaceId=yy.generateId();this.$={id:spaceId,type:"space",label:"",width:num,children:[]};break;case 23:yy.getLogger().debug("Rule: (nodeStatement link node) ",$$[$0-2],$$[$0-1],$$[$0]," typestr: ",$$[$0-1].edgeTypeStr);const edgeData=yy.edgeStrToEdgeData($$[$0-1].edgeTypeStr);this.$=[{id:$$[$0-2].id,label:$$[$0-2].label,type:$$[$0-2].type,directions:$$[$0-2].directions},{id:$$[$0-2].id+"-"+$$[$0].id,start:$$[$0-2].id,end:$$[$0].id,label:$$[$0-1].label,type:"edge",directions:$$[$0].directions,arrowTypeEnd:edgeData,arrowTypeStart:"arrow_open"},{id:$$[$0].id,label:$$[$0].label,type:yy.typeStr2Type($$[$0].typeStr),directions:$$[$0].directions}];break;case 24:yy.getLogger().debug("Rule: nodeStatement (abc88 node size) ",$$[$0-1],$$[$0]),this.$={id:$$[$0-1].id,label:$$[$0-1].label,type:yy.typeStr2Type($$[$0-1].typeStr),directions:$$[$0-1].directions,widthInColumns:parseInt($$[$0],10)};break;case 25:yy.getLogger().debug("Rule: nodeStatement (node) ",$$[$0]),this.$={id:$$[$0].id,label:$$[$0].label,type:yy.typeStr2Type($$[$0].typeStr),directions:$$[$0].directions,widthInColumns:1};break;case 26:yy.getLogger().debug("APA123",this?this:"na"),yy.getLogger().debug("COLUMNS: ",$$[$0]),this.$={type:"column-setting",columns:"auto"===$$[$0]?-1:parseInt($$[$0])};break;case 27:yy.getLogger().debug("Rule: id-block statement : ",$$[$0-2],$$[$0-1]),yy.generateId(),this.$={...$$[$0-2],type:"composite",children:$$[$0-1]};break;case 28:yy.getLogger().debug("Rule: blockStatement : ",$$[$0-2],$$[$0-1],$$[$0]);const id=yy.generateId();this.$={id:id,type:"composite",label:"",children:$$[$0-1]};break;case 29:yy.getLogger().debug("Rule: node (NODE_ID separator): ",$$[$0]),this.$={id:$$[$0]};break;case 30:yy.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",$$[$0-1],$$[$0]),this.$={id:$$[$0-1],label:$$[$0].label,typeStr:$$[$0].typeStr,directions:$$[$0].directions};break;case 31:yy.getLogger().debug("Rule: dirList: ",$$[$0]),this.$=[$$[$0]];break;case 32:yy.getLogger().debug("Rule: dirList: ",$$[$0-1],$$[$0]),this.$=[$$[$0-1]].concat($$[$0]);break;case 33:yy.getLogger().debug("Rule: nodeShapeNLabel: ",$$[$0-2],$$[$0-1],$$[$0]),this.$={typeStr:$$[$0-2]+$$[$0],label:$$[$0-1]};break;case 34:yy.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",$$[$0-3],$$[$0-2]," #3:",$$[$0-1],$$[$0]),this.$={typeStr:$$[$0-3]+$$[$0],label:$$[$0-2],directions:$$[$0-1]};break;case 35:case 36:this.$={type:"classDef",id:$$[$0-1].trim(),css:$$[$0].trim()};break;case 37:this.$={type:"applyClass",id:$$[$0-1].trim(),styleClass:$$[$0].trim()};break;case 38:this.$={type:"applyStyles",id:$$[$0-1].trim(),stylesStr:$$[$0].trim()}}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:$V0,11:3,13:4,19:5,20:6,21:$V1,22:8,23:9,24:10,25:11,26:12,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7},{8:[1,20]},o($V8,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:$V0,21:$V1,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7}),o($V9,[2,16],{14:22,15:$Va,16:$Vb}),o($V9,[2,17]),o($V9,[2,18]),o($V9,[2,19]),o($V9,[2,20]),o($V9,[2,21]),o($V9,[2,22]),o($Vc,[2,25],{27:[1,25]}),o($V9,[2,26]),{19:26,26:12,31:$V4},{10:$V0,11:27,13:4,19:5,20:6,21:$V1,22:8,23:9,24:10,25:11,26:12,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},o($Vd,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},o($V8,[2,13]),{26:35,31:$V4},{31:[2,14]},{17:[1,36]},o($Vc,[2,24]),{10:$V0,11:37,13:4,14:22,15:$Va,16:$Vb,19:5,20:6,21:$V1,22:8,23:9,24:10,25:11,26:12,28:$V2,29:$V3,31:$V4,39:$V5,43:$V6,46:$V7},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},o($Vd,[2,30]),{18:[1,43]},{18:[1,44]},o($Vc,[2,23]),{18:[1,45]},{30:[1,46]},o($V9,[2,28]),o($V9,[2,35]),o($V9,[2,36]),o($V9,[2,37]),o($V9,[2,38]),{36:[1,47]},{33:48,34:$Ve},{15:[1,50]},o($V9,[2,27]),o($Vd,[2,33]),{38:[1,51]},{33:52,34:$Ve,38:[2,31]},{31:[2,15]},o($Vd,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:__name(function(str,hash){if(!hash.recoverable){var error=new Error(str);throw error.hash=hash,error}this.trace(str)},"parseError"),parse:__name(function(input){var self=this,stack=[0],tstack=[],vstack=[null],lstack=[],table=this.table,yytext="",yylineno=0,yyleng=0,args=lstack.slice.call(arguments,1),lexer2=Object.create(this.lexer),sharedState={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(sharedState.yy[k]=this.yy[k]);lexer2.setInput(input,sharedState.yy),sharedState.yy.lexer=lexer2,sharedState.yy.parser=this,void 0===lexer2.yylloc&&(lexer2.yylloc={});var yyloc=lexer2.yylloc;lstack.push(yyloc);var ranges=lexer2.options&&lexer2.options.ranges;function lex(){var token;return"number"!=typeof(token=tstack.pop()||lexer2.lex()||1)&&(token instanceof Array&&(token=(tstack=token).pop()),token=self.symbols_[token]||token),token}"function"==typeof sharedState.yy.parseError?this.parseError=sharedState.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,__name(function(n){stack.length=stack.length-2*n,vstack.length=vstack.length-n,lstack.length=lstack.length-n},"popStack"),__name(lex,"lex");for(var symbol,state,action,r,p,len,newState,expected,yyval={};;){if(state=stack[stack.length-1],this.defaultActions[state]?action=this.defaultActions[state]:(null==symbol&&(symbol=lex()),action=table[state]&&table[state][symbol]),void 0===action||!action.length||!action[0]){var errStr="";for(p in expected=[],table[state])this.terminals_[p]&&p>2&&expected.push("'"+this.terminals_[p]+"'");errStr=lexer2.showPosition?"Parse error on line "+(yylineno+1)+":\n"+lexer2.showPosition()+"\nExpecting "+expected.join(", ")+", got '"+(this.terminals_[symbol]||symbol)+"'":"Parse error on line "+(yylineno+1)+": Unexpected "+(1==symbol?"end of input":"'"+(this.terminals_[symbol]||symbol)+"'"),this.parseError(errStr,{text:lexer2.match,token:this.terminals_[symbol]||symbol,line:lexer2.yylineno,loc:yyloc,expected:expected})}if(action[0]instanceof Array&&action.length>1)throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol);switch(action[0]){case 1:stack.push(symbol),vstack.push(lexer2.yytext),lstack.push(lexer2.yylloc),stack.push(action[1]),symbol=null,yyleng=lexer2.yyleng,yytext=lexer2.yytext,yylineno=lexer2.yylineno,yyloc=lexer2.yylloc;break;case 2:if(len=this.productions_[action[1]][1],yyval.$=vstack[vstack.length-len],yyval._$={first_line:lstack[lstack.length-(len||1)].first_line,last_line:lstack[lstack.length-1].last_line,first_column:lstack[lstack.length-(len||1)].first_column,last_column:lstack[lstack.length-1].last_column},ranges&&(yyval._$.range=[lstack[lstack.length-(len||1)].range[0],lstack[lstack.length-1].range[1]]),void 0!==(r=this.performAction.apply(yyval,[yytext,yyleng,yylineno,sharedState.yy,action[1],vstack,lstack].concat(args))))return r;len&&(stack=stack.slice(0,-1*len*2),vstack=vstack.slice(0,-1*len),lstack=lstack.slice(0,-1*len)),stack.push(this.productions_[action[1]][0]),vstack.push(yyval.$),lstack.push(yyval._$),newState=table[stack[stack.length-2]][stack[stack.length-1]],stack.push(newState);break;case 3:return!0}}return!0},"parse")},lexer=function(){return{EOF:1,parseError:__name(function(str,hash){if(!this.yy.parser)throw new Error(str);this.yy.parser.parseError(str,hash)},"parseError"),setInput:__name(function(input,yy){return this.yy=yy||this.yy||{},this._input=input,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:__name(function(){var ch=this._input[0];return this.yytext+=ch,this.yyleng++,this.offset++,this.match+=ch,this.matched+=ch,ch.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ch},"input"),unput:__name(function(ch){var len=ch.length,lines=ch.split(/(?:\r\n?|\n)/g);this._input=ch+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-len),this.offset-=len;var oldLines=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),lines.length-1&&(this.yylineno-=lines.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:lines?(lines.length===oldLines.length?this.yylloc.first_column:0)+oldLines[oldLines.length-lines.length].length-lines[0].length:this.yylloc.first_column-len},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-len]),this.yyleng=this.yytext.length,this},"unput"),more:__name(function(){return this._more=!0,this},"more"),reject:__name(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:__name(function(n){this.unput(this.match.slice(n))},"less"),pastInput:__name(function(){var past=this.matched.substr(0,this.matched.length-this.match.length);return(past.length>20?"...":"")+past.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:__name(function(){var next=this.match;return next.length<20&&(next+=this._input.substr(0,20-next.length)),(next.substr(0,20)+(next.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:__name(function(){var pre=this.pastInput(),c=new Array(pre.length+1).join("-");return pre+this.upcomingInput()+"\n"+c+"^"},"showPosition"),test_match:__name(function(match,indexed_rule){var token,lines,backup;if(this.options.backtrack_lexer&&(backup={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(backup.yylloc.range=this.yylloc.range.slice(0))),(lines=match[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=lines.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:lines?lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+match[0].length},this.yytext+=match[0],this.match+=match[0],this.matches=match,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(match[0].length),this.matched+=match[0],token=this.performAction.call(this,this.yy,this,indexed_rule,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),token)return token;if(this._backtrack){for(var k in backup)this[k]=backup[k];return!1}return!1},"test_match"),next:__name(function(){if(this.done)return this.EOF;var token,match,tempMatch,index;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var rules=this._currentRules(),i=0;i<rules.length;i++)if((tempMatch=this._input.match(this.rules[rules[i]]))&&(!match||tempMatch[0].length>match[0].length)){if(match=tempMatch,index=i,this.options.backtrack_lexer){if(!1!==(token=this.test_match(tempMatch,rules[i])))return token;if(this._backtrack){match=!1;continue}return!1}if(!this.options.flex)break}return match?!1!==(token=this.test_match(match,rules[index]))&&token:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:__name(function(){var r=this.next();return r||this.lex()},"lex"),begin:__name(function(condition){this.conditionStack.push(condition)},"begin"),popState:__name(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:__name(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:__name(function(n){return(n=this.conditionStack.length-1-Math.abs(n||0))>=0?this.conditionStack[n]:"INITIAL"},"topState"),pushState:__name(function(condition){this.begin(condition)},"pushState"),stateStackSize:__name(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:__name(function(yy,yy_,$avoiding_name_collisions,YY_START){switch($avoiding_name_collisions){case 0:return yy.getLogger().debug("Found block-beta"),10;case 1:return yy.getLogger().debug("Found id-block"),29;case 2:return yy.getLogger().debug("Found block"),10;case 3:yy.getLogger().debug(".",yy_.yytext);break;case 4:yy.getLogger().debug("_",yy_.yytext);break;case 5:return 5;case 6:return yy_.yytext=-1,28;case 7:return yy_.yytext=yy_.yytext.replace(/columns\s+/,""),yy.getLogger().debug("COLUMNS (LEX)",yy_.yytext),28;case 8:case 76:case 77:case 99:this.pushState("md_string");break;case 9:return"MD_STR";case 10:case 34:case 79:this.popState();break;case 11:this.pushState("string");break;case 12:yy.getLogger().debug("LEX: POPPING STR:",yy_.yytext),this.popState();break;case 13:return yy.getLogger().debug("LEX: STR end:",yy_.yytext),"STR";case 14:return yy_.yytext=yy_.yytext.replace(/space\:/,""),yy.getLogger().debug("SPACE NUM (LEX)",yy_.yytext),21;case 15:return yy_.yytext="1",yy.getLogger().debug("COLUMNS (LEX)",yy_.yytext),21;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 21:return this.popState(),this.pushState("CLASSDEFID"),40;case 22:return this.popState(),41;case 23:return this.pushState("CLASS"),43;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;case 25:return this.popState(),45;case 26:return this.pushState("STYLE_STMNT"),46;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;case 28:return this.popState(),48;case 29:return this.pushState("acc_title"),"acc_title";case 30:return this.popState(),"acc_title_value";case 31:return this.pushState("acc_descr"),"acc_descr";case 32:return this.popState(),"acc_descr_value";case 33:this.pushState("acc_descr_multiline");break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:case 38:case 40:case 41:case 44:return this.popState(),yy.getLogger().debug("Lex: (("),"NODE_DEND";case 39:return this.popState(),yy.getLogger().debug("Lex: ))"),"NODE_DEND";case 42:return this.popState(),yy.getLogger().debug("Lex: (-"),"NODE_DEND";case 43:return this.popState(),yy.getLogger().debug("Lex: -)"),"NODE_DEND";case 45:return this.popState(),yy.getLogger().debug("Lex: ]]"),"NODE_DEND";case 46:return this.popState(),yy.getLogger().debug("Lex: ("),"NODE_DEND";case 47:return this.popState(),yy.getLogger().debug("Lex: ])"),"NODE_DEND";case 48:case 49:return this.popState(),yy.getLogger().debug("Lex: /]"),"NODE_DEND";case 50:return this.popState(),yy.getLogger().debug("Lex: )]"),"NODE_DEND";case 51:return this.popState(),yy.getLogger().debug("Lex: )"),"NODE_DEND";case 52:return this.popState(),yy.getLogger().debug("Lex: ]>"),"NODE_DEND";case 53:return this.popState(),yy.getLogger().debug("Lex: ]"),"NODE_DEND";case 54:return yy.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;case 55:return yy.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;case 56:return yy.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;case 57:case 59:case 60:case 61:case 64:return yy.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 58:return yy.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;case 62:return yy.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;case 63:return yy.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;case 65:case 66:case 67:case 68:case 69:case 70:case 71:return this.pushState("NODE"),35;case 72:return yy.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;case 73:return this.pushState("BLOCK_ARROW"),yy.getLogger().debug("LEX ARR START"),37;case 74:return yy.getLogger().debug("Lex: NODE_ID",yy_.yytext),31;case 75:return yy.getLogger().debug("Lex: EOF",yy_.yytext),8;case 78:return"NODE_DESCR";case 80:yy.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:yy.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return yy.getLogger().debug("LEX: NODE_DESCR:",yy_.yytext),"NODE_DESCR";case 83:yy.getLogger().debug("LEX POPPING"),this.popState();break;case 84:yy.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return yy_.yytext=yy_.yytext.replace(/^,\s*/,""),yy.getLogger().debug("Lex (right): dir:",yy_.yytext),"DIR";case 86:return yy_.yytext=yy_.yytext.replace(/^,\s*/,""),yy.getLogger().debug("Lex (left):",yy_.yytext),"DIR";case 87:return yy_.yytext=yy_.yytext.replace(/^,\s*/,""),yy.getLogger().debug("Lex (x):",yy_.yytext),"DIR";case 88:return yy_.yytext=yy_.yytext.replace(/^,\s*/,""),yy.getLogger().debug("Lex (y):",yy_.yytext),"DIR";case 89:return yy_.yytext=yy_.yytext.replace(/^,\s*/,""),yy.getLogger().debug("Lex (up):",yy_.yytext),"DIR";case 90:return yy_.yytext=yy_.yytext.replace(/^,\s*/,""),yy.getLogger().debug("Lex (down):",yy_.yytext),"DIR";case 91:return yy_.yytext="]>",yy.getLogger().debug("Lex (ARROW_DIR end):",yy_.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 92:return yy.getLogger().debug("Lex: LINK","#"+yy_.yytext+"#"),15;case 93:case 94:case 95:return yy.getLogger().debug("Lex: LINK",yy_.yytext),15;case 96:case 97:case 98:return yy.getLogger().debug("Lex: START_LINK",yy_.yytext),this.pushState("LLABEL"),16;case 100:return yy.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 101:return this.popState(),yy.getLogger().debug("Lex: LINK","#"+yy_.yytext+"#"),15;case 102:case 103:return this.popState(),yy.getLogger().debug("Lex: LINK",yy_.yytext),15;case 104:return yy.getLogger().debug("Lex: COLON",yy_.yytext),yy_.yytext=yy_.yytext.slice(1),27}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}}}();function Parser(){this.yy={}}return parser2.lexer=lexer,__name(Parser,"Parser"),Parser.prototype=parser2,parser2.Parser=Parser,new Parser}();parser.parser=parser;var block_default=parser,blockDatabase=new Map,edgeList=[],edgeCount=new Map,config=getConfig2(),classes=new Map,diagramId="",sanitizeText2=__name(txt=>common_default.sanitizeText(txt,config),"sanitizeText"),addStyleClass=__name(function(id,styleAttributes=""){let foundClass=classes.get(id);foundClass||(foundClass={id:id,styles:[],textStyles:[]},classes.set(id,foundClass)),null!=styleAttributes&&styleAttributes.split(",").forEach(attrib=>{const fixedAttrib=attrib.replace(/([^;]*);/,"$1").trim();if(RegExp("color").exec(attrib)){const newStyle2=fixedAttrib.replace("fill","bgFill").replace("color","fill");foundClass.textStyles.push(newStyle2)}foundClass.styles.push(fixedAttrib)})},"addStyleClass"),addStyle2Node=__name(function(id,styles=""){const foundBlock=blockDatabase.get(id);null!=styles&&(foundBlock.styles=styles.split(","))},"addStyle2Node"),setCssClass=__name(function(itemIds,cssClassName){itemIds.split(",").forEach(function(id){let foundBlock=blockDatabase.get(id);if(void 0===foundBlock){const trimmedId=id.trim();foundBlock={id:trimmedId,type:"na",children:[]},blockDatabase.set(trimmedId,foundBlock)}foundBlock.classes||(foundBlock.classes=[]),foundBlock.classes.push(cssClassName)})},"setCssClass"),populateBlockDatabase=__name((_blockList,parent)=>{const blockList=_blockList.flat(),children=[],columnSettingBlock=blockList.find(b=>"column-setting"===(null==b?void 0:b.type)),column=(null==columnSettingBlock?void 0:columnSettingBlock.columns)??-1;for(const block of blockList)if("number"==typeof column&&column>0&&"column-setting"!==block.type&&"number"==typeof block.widthInColumns&&block.widthInColumns>column&&log.warn(`Block ${block.id} width ${block.widthInColumns} exceeds configured column width ${column}`),block.label&&(block.label=sanitizeText2(block.label)),"classDef"!==block.type)if("applyClass"!==block.type)if("applyStyles"!==block.type)if("column-setting"===block.type)parent.columns=block.columns??-1;else if("edge"===block.type){const count=(edgeCount.get(block.id)??0)+1;edgeCount.set(block.id,count),block.id=count+"-"+block.id,edgeList.push(block)}else{block.label||("composite"===block.type?block.label="":block.label=block.id);const existingBlock=blockDatabase.get(block.id);if(void 0===existingBlock?blockDatabase.set(block.id,block):("na"!==block.type&&(existingBlock.type=block.type),block.label!==block.id&&(existingBlock.label=block.label)),block.children&&populateBlockDatabase(block.children,block),"space"===block.type){const w=block.width??1;for(let j=0;j<w;j++){const newBlock=clone(block);newBlock.id=newBlock.id+"-"+j,blockDatabase.set(newBlock.id,newBlock),children.push(newBlock)}}else void 0===existingBlock&&children.push(block)}else(null==block?void 0:block.stylesStr)&&addStyle2Node(block.id,null==block?void 0:block.stylesStr);else setCssClass(block.id,(null==block?void 0:block.styleClass)??"");else addStyleClass(block.id,block.css);parent.children=children},"populateBlockDatabase"),blocks=[],rootBlock={id:"root",type:"composite",children:[],columns:-1},clear2=__name(()=>{log.debug("Clear called"),clear(),rootBlock={id:"root",type:"composite",children:[],columns:-1},blockDatabase=new Map([["root",rootBlock]]),blocks=[],classes=new Map,edgeList=[],edgeCount=new Map,diagramId=""},"clear");function typeStr2Type(typeStr){switch(log.debug("typeStr2Type",typeStr),typeStr){case"[]":return"square";case"()":return log.debug("we have a round"),"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 edgeTypeStr2Type(typeStr){return log.debug("typeStr2Type",typeStr),"=="===typeStr?"thick":"normal"}function edgeStrToEdgeData(typeStr){switch(typeStr.replace(/^[\s-]+|[\s-]+$/g,"")){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}__name(typeStr2Type,"typeStr2Type"),__name(edgeTypeStr2Type,"edgeTypeStr2Type"),__name(edgeStrToEdgeData,"edgeStrToEdgeData");var cnt=0,generateId=__name(()=>(cnt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+cnt),"generateId"),setHierarchy=__name(block=>{rootBlock.children=block,populateBlockDatabase(block,rootBlock),blocks=rootBlock.children},"setHierarchy"),getColumns=__name(blockId=>{const block=blockDatabase.get(blockId);return block?block.columns?block.columns:block.children?block.children.length:-1:-1},"getColumns"),getBlocksFlat=__name(()=>[...blockDatabase.values()],"getBlocksFlat"),getBlocks=__name(()=>blocks||[],"getBlocks"),getEdges=__name(()=>edgeList,"getEdges"),getBlock=__name(id=>blockDatabase.get(id),"getBlock"),setBlock=__name(block=>{blockDatabase.set(block.id,block)},"setBlock"),setDiagramId=__name(id=>{diagramId=id},"setDiagramId"),getDiagramId=__name(()=>diagramId,"getDiagramId"),getLogger=__name(()=>log,"getLogger"),getClasses=__name(function(){return classes},"getClasses"),blockDB_default={getConfig:__name(()=>getConfig().block,"getConfig"),typeStr2Type:typeStr2Type,edgeTypeStr2Type:edgeTypeStr2Type,edgeStrToEdgeData:edgeStrToEdgeData,getLogger:getLogger,getBlocksFlat:getBlocksFlat,getBlocks:getBlocks,getEdges:getEdges,setHierarchy:setHierarchy,getBlock:getBlock,setBlock:setBlock,getColumns:getColumns,getClasses:getClasses,clear:clear2,generateId:generateId,setDiagramId:setDiagramId,getDiagramId:getDiagramId},fade=__name((color,opacity)=>{const channel2=channel,r=channel2(color,"r"),g=channel2(color,"g"),b=channel2(color,"b");return rgba(r,g,b,opacity)},"fade"),styles_default=__name(options=>`.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor||options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${options.nodeTextColor||options.textColor};\n color: ${options.nodeTextColor||options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n /*\n * This is for backward compatibility with existing code that didn't\n * add a \`<p>\` around edge labels.\n *\n * TODO: We should probably remove this in a future release.\n */\n p {\n margin: 0;\n padding: 0;\n display: inline;\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${options.edgeLabelBackground};\n }\n\n .node .cluster {\n // fill: ${fade(options.mainBkg,.5)};\n fill: ${fade(options.clusterBkg,.5)};\n stroke: ${fade(options.clusterBorder,.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n ${getIconStyles()}\n`,"getStyles"),insertMarkers=__name((elem,markerArray,type,id)=>{markerArray.forEach(markerName=>{markers[markerName](elem,type,id)})},"insertMarkers"),markers={extension:__name((elem,type,id)=>{log.trace("Making markers for ",id),elem.append("defs").append("marker").attr("id",id+"_"+type+"-extensionStart").attr("class","marker extension "+type).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),elem.append("defs").append("marker").attr("id",id+"_"+type+"-extensionEnd").attr("class","marker extension "+type).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),composition:__name((elem,type,id)=>{elem.append("defs").append("marker").attr("id",id+"_"+type+"-compositionStart").attr("class","marker composition "+type).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),elem.append("defs").append("marker").attr("id",id+"_"+type+"-compositionEnd").attr("class","marker composition "+type).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),aggregation:__name((elem,type,id)=>{elem.append("defs").append("marker").attr("id",id+"_"+type+"-aggregationStart").attr("class","marker aggregation "+type).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),elem.append("defs").append("marker").attr("id",id+"_"+type+"-aggregationEnd").attr("class","marker aggregation "+type).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),dependency:__name((elem,type,id)=>{elem.append("defs").append("marker").attr("id",id+"_"+type+"-dependencyStart").attr("class","marker dependency "+type).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),elem.append("defs").append("marker").attr("id",id+"_"+type+"-dependencyEnd").attr("class","marker dependency "+type).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),lollipop:__name((elem,type,id)=>{elem.append("defs").append("marker").attr("id",id+"_"+type+"-lollipopStart").attr("class","marker lollipop "+type).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),elem.append("defs").append("marker").attr("id",id+"_"+type+"-lollipopEnd").attr("class","marker lollipop "+type).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),point:__name((elem,type,id)=>{elem.append("marker").attr("id",id+"_"+type+"-pointEnd").attr("class","marker "+type).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),elem.append("marker").attr("id",id+"_"+type+"-pointStart").attr("class","marker "+type).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),circle:__name((elem,type,id)=>{elem.append("marker").attr("id",id+"_"+type+"-circleEnd").attr("class","marker "+type).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),elem.append("marker").attr("id",id+"_"+type+"-circleStart").attr("class","marker "+type).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),cross:__name((elem,type,id)=>{elem.append("marker").attr("id",id+"_"+type+"-crossEnd").attr("class","marker cross "+type).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),elem.append("marker").attr("id",id+"_"+type+"-crossStart").attr("class","marker cross "+type).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),barb:__name((elem,type,id)=>{elem.append("defs").append("marker").attr("id",id+"_"+type+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb")},markers_default=insertMarkers,padding=(null==(_b=null==(_a=getConfig2())?void 0:_a.block)?void 0:_b.padding)??8;function calculateBlockPosition(columns,position){if(0===columns||!Number.isInteger(columns))throw new Error("Columns must be an integer !== 0.");if(position<0||!Number.isInteger(position))throw new Error("Position must be a non-negative integer."+position);if(columns<0)return{px:position,py:0};if(1===columns)return{px:0,py:position};return{px:position%columns,py:Math.floor(position/columns)}}__name(calculateBlockPosition,"calculateBlockPosition");var getMaxChildSize=__name(block=>{let maxWidth=0,maxHeight=0;for(const child of block.children){const{width:width,height:height,x:x,y:y}=child.size??{width:0,height:0,x:0,y:0};log.debug("getMaxChildSize abc95 child:",child.id,"width:",width,"height:",height,"x:",x,"y:",y,child.type),"space"!==child.type&&(width>maxWidth&&(maxWidth=width/(child.widthInColumns??1)),height>maxHeight&&(maxHeight=height))}return{width:maxWidth,height:maxHeight}},"getMaxChildSize");function setBlockSizes(block,db2,siblingWidth=0,siblingHeight=0){var _a2,_b2,_c,_d,_e,_f,_g,_h,_i,_j,_k;log.debug("setBlockSizes abc95 (start)",block.id,null==(_a2=null==block?void 0:block.size)?void 0:_a2.x,"block width =",null==block?void 0:block.size,"siblingWidth",siblingWidth),(null==(_b2=null==block?void 0:block.size)?void 0:_b2.width)||(block.size={width:siblingWidth,height:siblingHeight,x:0,y:0});let maxWidth=0,maxHeight=0;if((null==(_c=block.children)?void 0:_c.length)>0){for(const child of block.children)setBlockSizes(child,db2);const childSize=getMaxChildSize(block);maxWidth=childSize.width,maxHeight=childSize.height,log.debug("setBlockSizes abc95 maxWidth of",block.id,":s children is ",maxWidth,maxHeight);for(const child of block.children)child.size&&(log.debug(`abc95 Setting size of children of ${block.id} id=${child.id} ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}`),child.size.width=maxWidth*(child.widthInColumns??1)+padding*((child.widthInColumns??1)-1),child.size.height=maxHeight,child.size.x=0,child.size.y=0,log.debug(`abc95 updating size of ${block.id} children child:${child.id} maxWidth:${maxWidth} maxHeight:${maxHeight}`));for(const child of block.children)setBlockSizes(child,db2,maxWidth,maxHeight);const columns=block.columns??-1;let numItems=0;for(const child of block.children)numItems+=child.widthInColumns??1;let xSize=block.children.length;columns>0&&columns<numItems&&(xSize=columns);const ySize=Math.ceil(numItems/xSize);let width=xSize*(maxWidth+padding)+padding,height=ySize*(maxHeight+padding)+padding;if(width<siblingWidth){log.debug(`Detected to small sibling: abc95 ${block.id} siblingWidth ${siblingWidth} siblingHeight ${siblingHeight} width ${width}`),width=siblingWidth,height=siblingHeight;const childWidth=(siblingWidth-xSize*padding-padding)/xSize,childHeight=(siblingHeight-ySize*padding-padding)/ySize;log.debug("Size indata abc88",block.id,"childWidth",childWidth,"maxWidth",maxWidth),log.debug("Size indata abc88",block.id,"childHeight",childHeight,"maxHeight",maxHeight),log.debug("Size indata abc88 xSize",xSize,"padding",padding);for(const child of block.children)child.size&&(child.size.width=childWidth,child.size.height=childHeight,child.size.x=0,child.size.y=0)}if(log.debug(`abc95 (finale calc) ${block.id} xSize ${xSize} ySize ${ySize} columns ${columns}${block.children.length} width=${Math.max(width,(null==(_d=block.size)?void 0:_d.width)||0)}`),width<((null==(_e=null==block?void 0:block.size)?void 0:_e.width)||0)){width=(null==(_f=null==block?void 0:block.size)?void 0:_f.width)||0;const num=columns>0?Math.min(block.children.length,columns):block.children.length;if(num>0){const childWidth=(width-num*padding-padding)/num;log.debug("abc95 (growing to fit) width",block.id,width,null==(_g=block.size)?void 0:_g.width,childWidth);for(const child of block.children)child.size&&(child.size.width=childWidth)}}block.size={width:width,height:height,x:0,y:0}}log.debug("setBlockSizes abc94 (done)",block.id,null==(_h=null==block?void 0:block.size)?void 0:_h.x,null==(_i=null==block?void 0:block.size)?void 0:_i.width,null==(_j=null==block?void 0:block.size)?void 0:_j.y,null==(_k=null==block?void 0:block.size)?void 0:_k.height)}function layoutBlocks(block,db2){var _a2,_b2,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o,_p,_q;log.debug(`abc85 layout blocks (=>layoutBlocks) ${block.id} x: ${null==(_a2=null==block?void 0:block.size)?void 0:_a2.x} y: ${null==(_b2=null==block?void 0:block.size)?void 0:_b2.y} width: ${null==(_c=null==block?void 0:block.size)?void 0:_c.width}`);const columns=block.columns??-1;if(log.debug("layoutBlocks columns abc95",block.id,"=>",columns,block),block.children&&block.children.length>0){const width=(null==(_e=null==(_d=null==block?void 0:block.children[0])?void 0:_d.size)?void 0:_e.width)??0,widthOfChildren=block.children.length*width+(block.children.length-1)*padding;log.debug("widthOfChildren 88",widthOfChildren,"posX");const rowHeights=new Map;{let colPos=0;for(const child of block.children){if(!child.size)continue;const{py:py}=calculateBlockPosition(columns,colPos),currentMax=rowHeights.get(py)??0;child.size.height>currentMax&&rowHeights.set(py,child.size.height);let filled=(null==child?void 0:child.widthInColumns)??1;columns>0&&(filled=Math.min(filled,columns-colPos%columns)),colPos+=filled}}const rowYOffsets=new Map;{let offset=0;const rows=[...rowHeights.keys()].sort((a,b)=>a-b);for(const row of rows)rowYOffsets.set(row,offset),offset+=(rowHeights.get(row)??0)+padding}let columnPos=0;log.debug("abc91 block?.size?.x",block.id,null==(_f=null==block?void 0:block.size)?void 0:_f.x);let startingPosX=(null==(_g=null==block?void 0:block.size)?void 0:_g.x)?(null==(_h=null==block?void 0:block.size)?void 0:_h.x)+(-(null==(_i=null==block?void 0:block.size)?void 0:_i.width)/2||0):-padding,rowPos=0;for(const child of block.children){const parent=block;if(!child.size)continue;const{width:width2,height:height}=child.size,{px:px,py:py}=calculateBlockPosition(columns,columnPos);if(py!=rowPos&&(rowPos=py,startingPosX=(null==(_j=null==block?void 0:block.size)?void 0:_j.x)?(null==(_k=null==block?void 0:block.size)?void 0:_k.x)+(-(null==(_l=null==block?void 0:block.size)?void 0:_l.width)/2||0):-padding,log.debug("New row in layout for block",block.id," and child ",child.id,rowPos)),log.debug(`abc89 layout blocks (child) id: ${child.id} Pos: ${columnPos} (px, py) ${px},${py} (${null==(_m=null==parent?void 0:parent.size)?void 0:_m.x},${null==(_n=null==parent?void 0:parent.size)?void 0:_n.y}) parent: ${parent.id} width: ${width2}${padding}`),parent.size){const halfWidth=width2/2;child.size.x=startingPosX+padding+halfWidth,log.debug(`abc91 layout blocks (calc) px, pyid:${child.id} startingPos=X${startingPosX} new startingPosX${child.size.x} ${halfWidth} padding=${padding} width=${width2} halfWidth=${halfWidth} => x:${child.size.x} y:${child.size.y} ${child.widthInColumns} (width * (child?.w || 1)) / 2 ${width2*((null==child?void 0:child.widthInColumns)??1)/2}`),startingPosX=child.size.x+halfWidth;const rowYOffset=rowYOffsets.get(py)??0,rowHeight=rowHeights.get(py)??height;child.size.y=parent.size.y-parent.size.height/2+rowYOffset+rowHeight/2+padding,log.debug(`abc88 layout blocks (calc) px, pyid:${child.id}startingPosX${startingPosX}${padding}${halfWidth}=>x:${child.size.x}y:${child.size.y}${child.widthInColumns}(width * (child?.w || 1)) / 2${width2*((null==child?void 0:child.widthInColumns)??1)/2}`)}child.children&&layoutBlocks(child);let columnsFilled=(null==child?void 0:child.widthInColumns)??1;columns>0&&(columnsFilled=Math.min(columnsFilled,columns-columnPos%columns)),columnPos+=columnsFilled,log.debug("abc88 columnsPos",child,columnPos)}}log.debug(`layout blocks (<==layoutBlocks) ${block.id} x: ${null==(_o=null==block?void 0:block.size)?void 0:_o.x} y: ${null==(_p=null==block?void 0:block.size)?void 0:_p.y} width: ${null==(_q=null==block?void 0:block.size)?void 0:_q.width}`)}function findBounds(block,{minX:minX,minY:minY,maxX:maxX,maxY:maxY}={minX:0,minY:0,maxX:0,maxY:0}){if(block.size&&"root"!==block.id){const{x:x,y:y,width:width,height:height}=block.size;x-width/2<minX&&(minX=x-width/2),y-height/2<minY&&(minY=y-height/2),x+width/2>maxX&&(maxX=x+width/2),y+height/2>maxY&&(maxY=y+height/2)}if(block.children)for(const child of block.children)({minX:minX,minY:minY,maxX:maxX,maxY:maxY}=findBounds(child,{minX:minX,minY:minY,maxX:maxX,maxY:maxY}));return{minX:minX,minY:minY,maxX:maxX,maxY:maxY}}function layout(db2){const root=db2.getBlock("root");if(!root)return;setBlockSizes(root,db2,0,0),layoutBlocks(root),log.debug("getBlocks",JSON.stringify(root,null,2));const{minX:minX,minY:minY,maxX:maxX,maxY:maxY}=findBounds(root);return{x:minX,y:minY,width:maxX-minX,height:maxY-minY}}__name(setBlockSizes,"setBlockSizes"),__name(layoutBlocks,"layoutBlocks"),__name(findBounds,"findBounds"),__name(layout,"layout");var createLabel_default=__name(async(element,_vertexText,style,isTitle=!1,isNode=!1)=>{let vertexText=_vertexText||"";"object"==typeof vertexText&&(vertexText=vertexText[0]);const config2=getConfig2(),useHtmlLabels=getEffectiveHtmlLabels(config2);return await createText(element,vertexText,{style:style,isTitle:isTitle,useHtmlLabels:useHtmlLabels,markdown:!1,isNode:isNode,width:Number.POSITIVE_INFINITY},config2)},"createLabel"),addEdgeMarkers=__name((svgPath,edge,url,id,diagramType)=>{edge.arrowTypeStart&&addEdgeMarker(svgPath,"start",edge.arrowTypeStart,url,id,diagramType),edge.arrowTypeEnd&&addEdgeMarker(svgPath,"end",edge.arrowTypeEnd,url,id,diagramType)},"addEdgeMarkers"),arrowTypesMap={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},addEdgeMarker=__name((svgPath,position,arrowType,url,id,diagramType)=>{const endMarkerType=arrowTypesMap[arrowType];if(!endMarkerType)return void log.warn(`Unknown arrow type: ${arrowType}`);const suffix="start"===position?"Start":"End";svgPath.attr(`marker-${position}`,`url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`)},"addEdgeMarker"),edgeLabels={},terminalLabels={},insertEdgeLabel=__name(async(elem,edge)=>{const config2=getConfig2(),useHtmlLabels=getEffectiveHtmlLabels(config2),edgeLabel=elem.insert("g").attr("class","edgeLabel"),label=edgeLabel.insert("g").attr("class","label"),isMarkdown="markdown"===edge.labelType,labelElement=await createText(elem,edge.label,{style:edge.labelStyle,useHtmlLabels:useHtmlLabels,addSvgBackground:isMarkdown,isNode:!1,markdown:isMarkdown,width:isMarkdown?void 0:Number.POSITIVE_INFINITY},config2);label.node().appendChild(labelElement);let fo,bbox=labelElement.getBBox(),transformBbox=bbox;if(useHtmlLabels){const div=labelElement.children[0],dv=select(labelElement);bbox=div.getBoundingClientRect(),transformBbox=bbox,dv.attr("width",bbox.width),dv.attr("height",bbox.height)}else{const textEl=select(labelElement).select("text").node();textEl&&"function"==typeof textEl.getBBox&&(transformBbox=textEl.getBBox())}if(label.attr("transform",computeLabelTransform(transformBbox,useHtmlLabels)),edgeLabels[edge.id]=edgeLabel,edge.width=bbox.width,edge.height=bbox.height,edge.startLabelLeft){const startEdgeLabelLeft=elem.insert("g").attr("class","edgeTerminals"),inner=startEdgeLabelLeft.insert("g").attr("class","inner"),startLabelElement=await createLabel_default(inner,edge.startLabelLeft,edge.labelStyle);fo=startLabelElement;let slBox=startLabelElement.getBBox();if(useHtmlLabels){const div=startLabelElement.children[0],dv=select(startLabelElement);slBox=div.getBoundingClientRect(),dv.attr("width",slBox.width),dv.attr("height",slBox.height)}inner.attr("transform",computeLabelTransform(slBox,useHtmlLabels)),terminalLabels[edge.id]||(terminalLabels[edge.id]={}),terminalLabels[edge.id].startLeft=startEdgeLabelLeft,setTerminalWidth(fo,edge.startLabelLeft)}if(edge.startLabelRight){const startEdgeLabelRight=elem.insert("g").attr("class","edgeTerminals"),inner=startEdgeLabelRight.insert("g").attr("class","inner"),startLabelElement=await createLabel_default(startEdgeLabelRight,edge.startLabelRight,edge.labelStyle);fo=startLabelElement,inner.node().appendChild(startLabelElement);let slBox=startLabelElement.getBBox();if(useHtmlLabels){const div=startLabelElement.children[0],dv=select(startLabelElement);slBox=div.getBoundingClientRect(),dv.attr("width",slBox.width),dv.attr("height",slBox.height)}inner.attr("transform",computeLabelTransform(slBox,useHtmlLabels)),terminalLabels[edge.id]||(terminalLabels[edge.id]={}),terminalLabels[edge.id].startRight=startEdgeLabelRight,setTerminalWidth(fo,edge.startLabelRight)}if(edge.endLabelLeft){const endEdgeLabelLeft=elem.insert("g").attr("class","edgeTerminals"),inner=endEdgeLabelLeft.insert("g").attr("class","inner"),endLabelElement=await createLabel_default(inner,edge.endLabelLeft,edge.labelStyle);fo=endLabelElement;let slBox=endLabelElement.getBBox();if(useHtmlLabels){const div=endLabelElement.children[0],dv=select(endLabelElement);slBox=div.getBoundingClientRect(),dv.attr("width",slBox.width),dv.attr("height",slBox.height)}inner.attr("transform",computeLabelTransform(slBox,useHtmlLabels)),endEdgeLabelLeft.node().appendChild(endLabelElement),terminalLabels[edge.id]||(terminalLabels[edge.id]={}),terminalLabels[edge.id].endLeft=endEdgeLabelLeft,setTerminalWidth(fo,edge.endLabelLeft)}if(edge.endLabelRight){const endEdgeLabelRight=elem.insert("g").attr("class","edgeTerminals"),inner=endEdgeLabelRight.insert("g").attr("class","inner"),endLabelElement=await createLabel_default(inner,edge.endLabelRight,edge.labelStyle);fo=endLabelElement;let slBox=endLabelElement.getBBox();if(useHtmlLabels){const div=endLabelElement.children[0],dv=select(endLabelElement);slBox=div.getBoundingClientRect(),dv.attr("width",slBox.width),dv.attr("height",slBox.height)}inner.attr("transform",computeLabelTransform(slBox,useHtmlLabels)),endEdgeLabelRight.node().appendChild(endLabelElement),terminalLabels[edge.id]||(terminalLabels[edge.id]={}),terminalLabels[edge.id].endRight=endEdgeLabelRight,setTerminalWidth(fo,edge.endLabelRight)}return labelElement},"insertEdgeLabel");function setTerminalWidth(fo,value){getEffectiveHtmlLabels(getConfig2())&&fo&&(fo.style.width=9*value.length+"px",fo.style.height="12px")}__name(setTerminalWidth,"setTerminalWidth");var positionEdgeLabel=__name((edge,paths)=>{log.debug("Moving label abc88 ",edge.id,edge.label,edgeLabels[edge.id],paths);let path=paths.updatedPath?paths.updatedPath:paths.originalPath;const siteConfig=getConfig2(),{subGraphTitleTotalMargin:subGraphTitleTotalMargin}=getSubGraphTitleMargins(siteConfig);if(edge.label){const el=edgeLabels[edge.id];let x=edge.x,y=edge.y;if(path){const pos=utils_default.calcLabelPosition(path);log.debug("Moving label "+edge.label+" from (",x,",",y,") to (",pos.x,",",pos.y,") abc88"),paths.updatedPath&&(x=pos.x,y=pos.y)}el.attr("transform",`translate(${x}, ${y+subGraphTitleTotalMargin/2})`)}if(edge.startLabelLeft){const el=terminalLabels[edge.id].startLeft;let x=edge.x,y=edge.y;if(path){const pos=utils_default.calcTerminalLabelPosition(edge.arrowTypeStart?10:0,"start_left",path);x=pos.x,y=pos.y}el.attr("transform",`translate(${x}, ${y})`)}if(edge.startLabelRight){const el=terminalLabels[edge.id].startRight;let x=edge.x,y=edge.y;if(path){const pos=utils_default.calcTerminalLabelPosition(edge.arrowTypeStart?10:0,"start_right",path);x=pos.x,y=pos.y}el.attr("transform",`translate(${x}, ${y})`)}if(edge.endLabelLeft){const el=terminalLabels[edge.id].endLeft;let x=edge.x,y=edge.y;if(path){const pos=utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd?10:0,"end_left",path);x=pos.x,y=pos.y}el.attr("transform",`translate(${x}, ${y})`)}if(edge.endLabelRight){const el=terminalLabels[edge.id].endRight;let x=edge.x,y=edge.y;if(path){const pos=utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd?10:0,"end_right",path);x=pos.x,y=pos.y}el.attr("transform",`translate(${x}, ${y})`)}},"positionEdgeLabel"),outsideNode=__name((node,point2)=>{const x=node.x,y=node.y,dx=Math.abs(point2.x-x),dy=Math.abs(point2.y-y),w=node.width/2,h=node.height/2;return dx>=w||dy>=h},"outsideNode"),intersection=__name((node,outsidePoint,insidePoint)=>{log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);const x=node.x,y=node.y,dx=Math.abs(x-insidePoint.x),w=node.width/2;let r=insidePoint.x<outsidePoint.x?w-dx:w+dx;const h=node.height/2,Q=Math.abs(outsidePoint.y-insidePoint.y),R=Math.abs(outsidePoint.x-insidePoint.x);if(Math.abs(y-outsidePoint.y)*w>Math.abs(x-outsidePoint.x)*h){let q=insidePoint.y<outsidePoint.y?outsidePoint.y-h-y:y-h-outsidePoint.y;r=R*q/Q;const res={x:insidePoint.x<outsidePoint.x?insidePoint.x+r:insidePoint.x-R+r,y:insidePoint.y<outsidePoint.y?insidePoint.y+Q-q:insidePoint.y-Q+q};return 0===r&&(res.x=outsidePoint.x,res.y=outsidePoint.y),0===R&&(res.x=outsidePoint.x),0===Q&&(res.y=outsidePoint.y),log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`,res),res}{r=insidePoint.x<outsidePoint.x?outsidePoint.x-w-x:x-w-outsidePoint.x;let q=Q*r/R,_x=insidePoint.x<outsidePoint.x?insidePoint.x+R-r:insidePoint.x-R+r,_y=insidePoint.y<outsidePoint.y?insidePoint.y+q:insidePoint.y-q;return log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`,{_x:_x,_y:_y}),0===r&&(_x=outsidePoint.x,_y=outsidePoint.y),0===R&&(_x=outsidePoint.x),0===Q&&(_y=outsidePoint.y),{x:_x,y:_y}}},"intersection"),cutPathAtIntersect=__name((_points,boundaryNode)=>{log.debug("abc88 cutPathAtIntersect",_points,boundaryNode);let points=[],lastPointOutside=_points[0],isInside=!1;return _points.forEach(point2=>{if(outsideNode(boundaryNode,point2)||isInside)lastPointOutside=point2,isInside||points.push(point2);else{const inter=intersection(boundaryNode,lastPointOutside,point2);let pointPresent=!1;points.forEach(p=>{pointPresent=pointPresent||p.x===inter.x&&p.y===inter.y}),points.some(e=>e.x===inter.x&&e.y===inter.y)||points.push(inter),isInside=!0}}),points},"cutPathAtIntersect"),insertEdge=__name(function(elem,e,edge,clusterDb,diagramType,graph,id){let points=edge.points;log.debug("abc88 InsertEdge: edge=",edge,"e=",e);let pointsHasChanged=!1;const tail=graph.node(e.v);var head=graph.node(e.w);(null==head?void 0:head.intersect)&&(null==tail?void 0:tail.intersect)&&(points=points.slice(1,edge.points.length-1),points.unshift(tail.intersect(points[0])),points.push(head.intersect(points[points.length-1]))),edge.toCluster&&(log.debug("to cluster abc88",clusterDb[edge.toCluster]),points=cutPathAtIntersect(edge.points,clusterDb[edge.toCluster].node),pointsHasChanged=!0),edge.fromCluster&&(log.debug("from cluster abc88",clusterDb[edge.fromCluster]),points=cutPathAtIntersect(points.reverse(),clusterDb[edge.fromCluster].node).reverse(),pointsHasChanged=!0);const lineData=points.filter(p=>!Number.isNaN(p.y));let curve=curveBasis;!edge.curve||"graph"!==diagramType&&"flowchart"!==diagramType||(curve=edge.curve);const{x:x,y:y}=getLineFunctionsWithOffset(edge),lineFunction=line().x(x).y(y).curve(curve);let strokeClasses;switch(edge.thickness){case"normal":strokeClasses="edge-thickness-normal";break;case"thick":case"invisible":strokeClasses="edge-thickness-thick";break;default:strokeClasses=""}switch(edge.pattern){case"solid":strokeClasses+=" edge-pattern-solid";break;case"dotted":strokeClasses+=" edge-pattern-dotted";break;case"dashed":strokeClasses+=" edge-pattern-dashed"}const svgPath=elem.append("path").attr("d",lineFunction(lineData)).attr("id",edge.id).attr("class"," "+strokeClasses+(edge.classes?" "+edge.classes:"")).attr("style",edge.style);let url="";(getConfig2().flowchart.arrowMarkerAbsolute||getConfig2().state.arrowMarkerAbsolute)&&(url=getUrl(!0)),addEdgeMarkers(svgPath,edge,url,id,diagramType);let paths={};return pointsHasChanged&&(paths.updatedPath=points),paths.originalPath=edge.points,paths},"insertEdge"),expandAndDeduplicateDirections=__name(directions=>{const uniqueDirections=new Set;for(const direction of directions)switch(direction){case"x":uniqueDirections.add("right"),uniqueDirections.add("left");break;case"y":uniqueDirections.add("up"),uniqueDirections.add("down");break;default:uniqueDirections.add(direction)}return uniqueDirections},"expandAndDeduplicateDirections"),getArrowPoints=__name((duplicatedDirections,bbox,node)=>{const directions=expandAndDeduplicateDirections(duplicatedDirections),height=bbox.height+2*node.padding,midpoint=height/2,width=bbox.width+2*midpoint+node.padding,padding2=node.padding/2;return directions.has("right")&&directions.has("left")&&directions.has("up")&&directions.has("down")?[{x:0,y:0},{x:midpoint,y:0},{x:width/2,y:2*padding2},{x:width-midpoint,y:0},{x:width,y:0},{x:width,y:-height/3},{x:width+2*padding2,y:-height/2},{x:width,y:-2*height/3},{x:width,y:-height},{x:width-midpoint,y:-height},{x:width/2,y:-height-2*padding2},{x:midpoint,y:-height},{x:0,y:-height},{x:0,y:-2*height/3},{x:-2*padding2,y:-height/2},{x:0,y:-height/3}]:directions.has("right")&&directions.has("left")&&directions.has("up")?[{x:midpoint,y:0},{x:width-midpoint,y:0},{x:width,y:-height/2},{x:width-midpoint,y:-height},{x:midpoint,y:-height},{x:0,y:-height/2}]:directions.has("right")&&directions.has("left")&&directions.has("down")?[{x:0,y:0},{x:midpoint,y:-height},{x:width-midpoint,y:-height},{x:width,y:0}]:directions.has("right")&&directions.has("up")&&directions.has("down")?[{x:0,y:0},{x:width,y:-midpoint},{x:width,y:-height+midpoint},{x:0,y:-height}]:directions.has("left")&&directions.has("up")&&directions.has("down")?[{x:width,y:0},{x:0,y:-midpoint},{x:0,y:-height+midpoint},{x:width,y:-height}]:directions.has("right")&&directions.has("left")?[{x:midpoint,y:0},{x:midpoint,y:-padding2},{x:width-midpoint,y:-padding2},{x:width-midpoint,y:0},{x:width,y:-height/2},{x:width-midpoint,y:-height},{x:width-midpoint,y:-height+padding2},{x:midpoint,y:-height+padding2},{x:midpoint,y:-height},{x:0,y:-height/2}]:directions.has("up")&&directions.has("down")?[{x:width/2,y:0},{x:0,y:-padding2},{x:midpoint,y:-padding2},{x:midpoint,y:-height+padding2},{x:0,y:-height+padding2},{x:width/2,y:-height},{x:width,y:-height+padding2},{x:width-midpoint,y:-height+padding2},{x:width-midpoint,y:-padding2},{x:width,y:-padding2}]:directions.has("right")&&directions.has("up")?[{x:0,y:0},{x:width,y:-midpoint},{x:0,y:-height}]:directions.has("right")&&directions.has("down")?[{x:0,y:0},{x:width,y:0},{x:0,y:-height}]:directions.has("left")&&directions.has("up")?[{x:width,y:0},{x:0,y:-midpoint},{x:width,y:-height}]:directions.has("left")&&directions.has("down")?[{x:width,y:0},{x:0,y:0},{x:width,y:-height}]:directions.has("right")?[{x:midpoint,y:-padding2},{x:midpoint,y:-padding2},{x:width-midpoint,y:-padding2},{x:width-midpoint,y:0},{x:width,y:-height/2},{x:width-midpoint,y:-height},{x:width-midpoint,y:-height+padding2},{x:midpoint,y:-height+padding2},{x:midpoint,y:-height+padding2}]:directions.has("left")?[{x:midpoint,y:0},{x:midpoint,y:-padding2},{x:width-midpoint,y:-padding2},{x:width-midpoint,y:-height+padding2},{x:midpoint,y:-height+padding2},{x:midpoint,y:-height},{x:0,y:-height/2}]:directions.has("up")?[{x:midpoint,y:-padding2},{x:midpoint,y:-height+padding2},{x:0,y:-height+padding2},{x:width/2,y:-height},{x:width,y:-height+padding2},{x:width-midpoint,y:-height+padding2},{x:width-midpoint,y:-padding2}]:directions.has("down")?[{x:width/2,y:0},{x:0,y:-padding2},{x:midpoint,y:-padding2},{x:midpoint,y:-height+padding2},{x:width-midpoint,y:-height+padding2},{x:width-midpoint,y:-padding2},{x:width,y:-padding2}]:[{x:0,y:0}]},"getArrowPoints");function intersectNode(node,point2){return node.intersect(point2)}__name(intersectNode,"intersectNode");var intersect_node_default=intersectNode;function intersectEllipse(node,rx,ry,point2){var cx=node.x,cy=node.y,px=cx-point2.x,py=cy-point2.y,det=Math.sqrt(rx*rx*py*py+ry*ry*px*px),dx=Math.abs(rx*ry*px/det);point2.x<cx&&(dx=-dx);var dy=Math.abs(rx*ry*py/det);return point2.y<cy&&(dy=-dy),{x:cx+dx,y:cy+dy}}__name(intersectEllipse,"intersectEllipse");var intersect_ellipse_default=intersectEllipse;function intersectCircle(node,rx,point2){return intersect_ellipse_default(node,rx,rx,point2)}__name(intersectCircle,"intersectCircle");var intersect_circle_default=intersectCircle;function intersectLine(p1,p2,q1,q2){var a1,a2,b1,b2,c1,c2,r1,r2,r3,r4,denom,offset,num;if(a1=p2.y-p1.y,b1=p1.x-p2.x,c1=p2.x*p1.y-p1.x*p2.y,r3=a1*q1.x+b1*q1.y+c1,r4=a1*q2.x+b1*q2.y+c1,!(0!==r3&&0!==r4&&sameSign(r3,r4)||(a2=q2.y-q1.y,b2=q1.x-q2.x,c2=q2.x*q1.y-q1.x*q2.y,r1=a2*p1.x+b2*p1.y+c2,r2=a2*p2.x+b2*p2.y+c2,0!==r1&&0!==r2&&sameSign(r1,r2)||0===(denom=a1*b2-a2*b1))))return offset=Math.abs(denom/2),{x:(num=b1*c2-b2*c1)<0?(num-offset)/denom:(num+offset)/denom,y:(num=a2*c1-a1*c2)<0?(num-offset)/denom:(num+offset)/denom}}function sameSign(r1,r2){return r1*r2>0}__name(intersectLine,"intersectLine"),__name(sameSign,"sameSign");var intersect_line_default=intersectLine,intersect_polygon_default=intersectPolygon;function intersectPolygon(node,polyPoints,point2){var x1=node.x,y1=node.y,intersections=[],minX=Number.POSITIVE_INFINITY,minY=Number.POSITIVE_INFINITY;"function"==typeof polyPoints.forEach?polyPoints.forEach(function(entry){minX=Math.min(minX,entry.x),minY=Math.min(minY,entry.y)}):(minX=Math.min(minX,polyPoints.x),minY=Math.min(minY,polyPoints.y));for(var left=x1-node.width/2-minX,top=y1-node.height/2-minY,i=0;i<polyPoints.length;i++){var p1=polyPoints[i],p2=polyPoints[i<polyPoints.length-1?i+1:0],intersect=intersect_line_default(node,point2,{x:left+p1.x,y:top+p1.y},{x:left+p2.x,y:top+p2.y});intersect&&intersections.push(intersect)}return intersections.length?(intersections.length>1&&intersections.sort(function(p,q){var pdx=p.x-point2.x,pdy=p.y-point2.y,distp=Math.sqrt(pdx*pdx+pdy*pdy),qdx=q.x-point2.x,qdy=q.y-point2.y,distq=Math.sqrt(qdx*qdx+qdy*qdy);return distp<distq?-1:distp===distq?0:1}),intersections[0]):node}__name(intersectPolygon,"intersectPolygon");var intersect_default={node:intersect_node_default,circle:intersect_circle_default,ellipse:intersect_ellipse_default,polygon:intersect_polygon_default,rect:__name((node,point2)=>{var sx,sy,x=node.x,y=node.y,dx=point2.x-x,dy=point2.y-y,w=node.width/2,h=node.height/2;return Math.abs(dy)*w>Math.abs(dx)*h?(dy<0&&(h=-h),sx=0===dy?0:h*dx/dy,sy=h):(dx<0&&(w=-w),sx=w,sy=0===dx?0:w*dy/dx),{x:x+sx,y:y+sy}},"intersectRect")},labelHelper=__name(async(parent,node,_classes,isNode)=>{const config2=getConfig2();let classes2;const useHtmlLabels=node.useHtmlLabels||getEffectiveHtmlLabels(config2);classes2=_classes||"node default";const shapeSvg=parent.insert("g").attr("class",classes2).attr("id",node.domId||node.id),label=shapeSvg.insert("g").attr("class","label").attr("style",node.labelStyle);let labelText,text;labelText=void 0===node.labelText?"":"string"==typeof node.labelText?node.labelText:node.labelText[0],text="markdown"===node.labelType?createText(label,sanitizeText(decodeEntities(labelText),config2),{useHtmlLabels:useHtmlLabels,width:node.width||config2.flowchart.wrappingWidth,classes:"markdown-node-label"},config2):await createLabel_default(label,sanitizeText(decodeEntities(labelText),config2),node.labelStyle,!1,isNode);let bbox=text.getBBox();const halfPadding=node.padding/2;if(getEffectiveHtmlLabels(config2)){const div=text.children[0],dv=select(text);await configureLabelImages(div,labelText),bbox=div.getBoundingClientRect(),dv.attr("width",bbox.width),dv.attr("height",bbox.height)}return useHtmlLabels?label.attr("transform","translate("+-bbox.width/2+", "+-bbox.height/2+")"):label.attr("transform","translate(0, "+-bbox.height/2+")"),node.centerLabel&&label.attr("transform","translate("+-bbox.width/2+", "+-bbox.height/2+")"),label.insert("rect",":first-child"),{shapeSvg:shapeSvg,bbox:bbox,halfPadding:halfPadding,label:label}},"labelHelper"),updateNodeBounds=__name((node,element)=>{const bbox=element.node().getBBox();node.width=bbox.width,node.height=bbox.height},"updateNodeBounds");function insertPolygonShape(parent,w,h,points){return parent.insert("polygon",":first-child").attr("points",points.map(function(d){return d.x+","+d.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-w/2+","+h/2+")")}__name(insertPolygonShape,"insertPolygonShape");var note_default=__name(async(parent,node)=>{node.useHtmlLabels||getEffectiveHtmlLabels(getConfig2())||(node.centerLabel=!0);const{shapeSvg:shapeSvg,bbox:bbox,halfPadding:halfPadding}=await labelHelper(parent,node,"node "+node.classes,!0);log.info("Classes = ",node.classes);const rect2=shapeSvg.insert("rect",":first-child");return rect2.attr("rx",node.rx).attr("ry",node.ry).attr("x",-bbox.width/2-halfPadding).attr("y",-bbox.height/2-halfPadding).attr("width",bbox.width+node.padding).attr("height",bbox.height+node.padding),updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"note"),formatClass=__name(str=>str?" "+str:"","formatClass"),getClassesFromNode=__name((node,otherClasses)=>`${otherClasses||"node default"}${formatClass(node.classes)} ${formatClass(node.class)}`,"getClassesFromNode"),question=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),s=bbox.width+node.padding+(bbox.height+node.padding),points=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];log.info("Question main (Circle)");const questionElem=insertPolygonShape(shapeSvg,s,s,points);return questionElem.attr("style",node.style),updateNodeBounds(node,questionElem),node.intersect=function(point2){return log.warn("Intersect called"),intersect_default.polygon(node,points,point2)},shapeSvg},"question"),choice=__name((parent,node)=>{const shapeSvg=parent.insert("g").attr("class","node default").attr("id",node.domId||node.id),points=[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}];return shapeSvg.insert("polygon",":first-child").attr("points",points.map(function(d){return d.x+","+d.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),node.width=28,node.height=28,node.intersect=function(point2){return intersect_default.circle(node,14,point2)},shapeSvg},"choice"),hexagon=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),h=bbox.height+node.padding,m=h/4,w=bbox.width+2*m+node.padding,points=[{x:m,y:0},{x:w-m,y:0},{x:w,y:-h/2},{x:w-m,y:-h},{x:m,y:-h},{x:0,y:-h/2}],hex=insertPolygonShape(shapeSvg,w,h,points);return hex.attr("style",node.style),updateNodeBounds(node,hex),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"hexagon"),block_arrow=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,void 0,!0),h=bbox.height+2*node.padding,m=h/2,w=bbox.width+2*m+node.padding,points=getArrowPoints(node.directions,bbox,node),blockArrow=insertPolygonShape(shapeSvg,w,h,points);return blockArrow.attr("style",node.style),updateNodeBounds(node,blockArrow),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"block_arrow"),rect_left_inv_arrow=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:-h/2,y:0},{x:w,y:0},{x:w,y:-h},{x:-h/2,y:-h},{x:0,y:-h/2}];return insertPolygonShape(shapeSvg,w,h,points).attr("style",node.style),node.width=w+h,node.height=h,node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"rect_left_inv_arrow"),lean_right=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:-2*h/6,y:0},{x:w-h/6,y:0},{x:w+2*h/6,y:-h},{x:h/6,y:-h}],el=insertPolygonShape(shapeSvg,w,h,points);return el.attr("style",node.style),updateNodeBounds(node,el),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"lean_right"),lean_left=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:2*h/6,y:0},{x:w+h/6,y:0},{x:w-2*h/6,y:-h},{x:-h/6,y:-h}],el=insertPolygonShape(shapeSvg,w,h,points);return el.attr("style",node.style),updateNodeBounds(node,el),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"lean_left"),trapezoid=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:-2*h/6,y:0},{x:w+2*h/6,y:0},{x:w-h/6,y:-h},{x:h/6,y:-h}],el=insertPolygonShape(shapeSvg,w,h,points);return el.attr("style",node.style),updateNodeBounds(node,el),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"trapezoid"),inv_trapezoid=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:h/6,y:0},{x:w-h/6,y:0},{x:w+2*h/6,y:-h},{x:-2*h/6,y:-h}],el=insertPolygonShape(shapeSvg,w,h,points);return el.attr("style",node.style),updateNodeBounds(node,el),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"inv_trapezoid"),rect_right_inv_arrow=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:0,y:0},{x:w+h/2,y:0},{x:w,y:-h/2},{x:w+h/2,y:-h},{x:0,y:-h}],el=insertPolygonShape(shapeSvg,w,h,points);return el.attr("style",node.style),updateNodeBounds(node,el),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"rect_right_inv_arrow"),cylinder=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,rx=w/2,ry=rx/(2.5+w/50),h=bbox.height+ry+node.padding,shape="M 0,"+ry+" a "+rx+","+ry+" 0,0,0 "+w+" 0 a "+rx+","+ry+" 0,0,0 "+-w+" 0 l 0,"+h+" a "+rx+","+ry+" 0,0,0 "+w+" 0 l 0,"+-h,el=shapeSvg.attr("label-offset-y",ry).insert("path",":first-child").attr("style",node.style).attr("d",shape).attr("transform","translate("+-w/2+","+-(h/2+ry)+")");return updateNodeBounds(node,el),node.intersect=function(point2){const pos=intersect_default.rect(node,point2),x=pos.x-node.x;if(0!=rx&&(Math.abs(x)<node.width/2||Math.abs(x)==node.width/2&&Math.abs(pos.y-node.y)>node.height/2-ry)){let y=ry*ry*(1-x*x/(rx*rx));0!=y&&(y=Math.sqrt(y)),y=ry-y,point2.y-node.y>0&&(y=-y),pos.y+=y}return pos},shapeSvg},"cylinder"),rect=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox,halfPadding:halfPadding}=await labelHelper(parent,node,"node "+node.classes+" "+node.class,!0),rect2=shapeSvg.insert("rect",":first-child"),totalWidth=node.positioned?node.width:bbox.width+node.padding,totalHeight=node.positioned?node.height:bbox.height+node.padding,x=node.positioned?-totalWidth/2:-bbox.width/2-halfPadding,y=node.positioned?-totalHeight/2:-bbox.height/2-halfPadding;if(rect2.attr("class","basic label-container").attr("style",node.style).attr("rx",node.rx).attr("ry",node.ry).attr("x",x).attr("y",y).attr("width",totalWidth).attr("height",totalHeight),node.props){const propKeys=new Set(Object.keys(node.props));node.props.borders&&(applyNodePropertyBorders(rect2,node.props.borders,totalWidth,totalHeight),propKeys.delete("borders")),propKeys.forEach(propKey=>{log.warn(`Unknown node property ${propKey}`)})}return updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"rect"),composite=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox,halfPadding:halfPadding}=await labelHelper(parent,node,"node "+node.classes,!0),rect2=shapeSvg.insert("rect",":first-child"),totalWidth=node.positioned?node.width:bbox.width+node.padding,totalHeight=node.positioned?node.height:bbox.height+node.padding,x=node.positioned?-totalWidth/2:-bbox.width/2-halfPadding,y=node.positioned?-totalHeight/2:-bbox.height/2-halfPadding;if(rect2.attr("class","basic cluster composite label-container").attr("style",node.style).attr("rx",node.rx).attr("ry",node.ry).attr("x",x).attr("y",y).attr("width",totalWidth).attr("height",totalHeight),node.props){const propKeys=new Set(Object.keys(node.props));node.props.borders&&(applyNodePropertyBorders(rect2,node.props.borders,totalWidth,totalHeight),propKeys.delete("borders")),propKeys.forEach(propKey=>{log.warn(`Unknown node property ${propKey}`)})}return updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"composite"),labelRect=__name(async(parent,node)=>{const{shapeSvg:shapeSvg}=await labelHelper(parent,node,"label",!0);log.trace("Classes = ",node.class);const rect2=shapeSvg.insert("rect",":first-child");if(rect2.attr("width",0).attr("height",0),shapeSvg.attr("class","label edgeLabel"),node.props){const propKeys=new Set(Object.keys(node.props));node.props.borders&&(applyNodePropertyBorders(rect2,node.props.borders,0,0),propKeys.delete("borders")),propKeys.forEach(propKey=>{log.warn(`Unknown node property ${propKey}`)})}return updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"labelRect");function applyNodePropertyBorders(rect2,borders,totalWidth,totalHeight){const strokeDashArray=[],addBorder=__name(length=>{strokeDashArray.push(length,0)},"addBorder"),skipBorder=__name(length=>{strokeDashArray.push(0,length)},"skipBorder");borders.includes("t")?(log.debug("add top border"),addBorder(totalWidth)):skipBorder(totalWidth),borders.includes("r")?(log.debug("add right border"),addBorder(totalHeight)):skipBorder(totalHeight),borders.includes("b")?(log.debug("add bottom border"),addBorder(totalWidth)):skipBorder(totalWidth),borders.includes("l")?(log.debug("add left border"),addBorder(totalHeight)):skipBorder(totalHeight),rect2.attr("stroke-dasharray",strokeDashArray.join(" "))}__name(applyNodePropertyBorders,"applyNodePropertyBorders");var rectWithTitle=__name(async(parent,node)=>{let classes2;classes2=node.classes?"node "+node.classes:"node default";const shapeSvg=parent.insert("g").attr("class",classes2).attr("id",node.domId||node.id),rect2=shapeSvg.insert("rect",":first-child"),innerLine=shapeSvg.insert("line"),label=shapeSvg.insert("g").attr("class","label"),text2=node.labelText.flat?node.labelText.flat():node.labelText;let title="";title="object"==typeof text2?text2[0]:text2,log.info("Label text abc79",title,text2,"object"==typeof text2);const text=await createLabel_default(label,title,node.labelStyle,!0,!0);let bbox={width:0,height:0};if(getEffectiveHtmlLabels(getConfig2())){const div=text.children[0],dv=select(text);bbox=div.getBoundingClientRect(),dv.attr("width",bbox.width),dv.attr("height",bbox.height)}log.info("Text 2",text2);const textRows=text2.slice(1,text2.length);let titleBox=text.getBBox();const descr=await createLabel_default(label,textRows.join?textRows.join("<br/>"):textRows,node.labelStyle,!0,!0);if(getEffectiveHtmlLabels(getConfig2())){const div=descr.children[0],dv=select(descr);bbox=div.getBoundingClientRect(),dv.attr("width",bbox.width),dv.attr("height",bbox.height)}const halfPadding=node.padding/2;return select(descr).attr("transform","translate( "+(bbox.width>titleBox.width?0:(titleBox.width-bbox.width)/2)+", "+(titleBox.height+halfPadding+5)+")"),select(text).attr("transform","translate( "+(bbox.width<titleBox.width?0:-(titleBox.width-bbox.width)/2)+", 0)"),bbox=label.node().getBBox(),label.attr("transform","translate("+-bbox.width/2+", "+(-bbox.height/2-halfPadding+3)+")"),rect2.attr("class","outer title-state").attr("x",-bbox.width/2-halfPadding).attr("y",-bbox.height/2-halfPadding).attr("width",bbox.width+node.padding).attr("height",bbox.height+node.padding),innerLine.attr("class","divider").attr("x1",-bbox.width/2-halfPadding).attr("x2",bbox.width/2+halfPadding).attr("y1",-bbox.height/2-halfPadding+titleBox.height+halfPadding).attr("y2",-bbox.height/2-halfPadding+titleBox.height+halfPadding),updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"rectWithTitle"),stadium=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),h=bbox.height+node.padding,w=bbox.width+h/4+node.padding,rect2=shapeSvg.insert("rect",":first-child").attr("style",node.style).attr("rx",h/2).attr("ry",h/2).attr("x",-w/2).attr("y",-h/2).attr("width",w).attr("height",h);return updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"stadium"),circle2=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox,halfPadding:halfPadding}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),circle3=shapeSvg.insert("circle",":first-child");return circle3.attr("style",node.style).attr("rx",node.rx).attr("ry",node.ry).attr("r",bbox.width/2+halfPadding).attr("width",bbox.width+node.padding).attr("height",bbox.height+node.padding),log.info("Circle main"),updateNodeBounds(node,circle3),node.intersect=function(point2){return log.info("Circle intersect",node,bbox.width/2+halfPadding,point2),intersect_default.circle(node,bbox.width/2+halfPadding,point2)},shapeSvg},"circle"),doublecircle=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox,halfPadding:halfPadding}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),circleGroup=shapeSvg.insert("g",":first-child"),outerCircle=circleGroup.insert("circle"),innerCircle=circleGroup.insert("circle");return circleGroup.attr("class",node.class),outerCircle.attr("style",node.style).attr("rx",node.rx).attr("ry",node.ry).attr("r",bbox.width/2+halfPadding+5).attr("width",bbox.width+node.padding+10).attr("height",bbox.height+node.padding+10),innerCircle.attr("style",node.style).attr("rx",node.rx).attr("ry",node.ry).attr("r",bbox.width/2+halfPadding).attr("width",bbox.width+node.padding).attr("height",bbox.height+node.padding),log.info("DoubleCircle main"),updateNodeBounds(node,outerCircle),node.intersect=function(point2){return log.info("DoubleCircle intersect",node,bbox.width/2+halfPadding+5,point2),intersect_default.circle(node,bbox.width/2+halfPadding+5,point2)},shapeSvg},"doublecircle"),subroutine=__name(async(parent,node)=>{const{shapeSvg:shapeSvg,bbox:bbox}=await labelHelper(parent,node,getClassesFromNode(node,void 0),!0),w=bbox.width+node.padding,h=bbox.height+node.padding,points=[{x:0,y:0},{x:w,y:0},{x:w,y:-h},{x:0,y:-h},{x:0,y:0},{x:-8,y:0},{x:w+8,y:0},{x:w+8,y:-h},{x:-8,y:-h},{x:-8,y:0}],el=insertPolygonShape(shapeSvg,w,h,points);return el.attr("style",node.style),updateNodeBounds(node,el),node.intersect=function(point2){return intersect_default.polygon(node,points,point2)},shapeSvg},"subroutine"),start=__name((parent,node)=>{const shapeSvg=parent.insert("g").attr("class","node default").attr("id",node.domId||node.id),circle3=shapeSvg.insert("circle",":first-child");return circle3.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),updateNodeBounds(node,circle3),node.intersect=function(point2){return intersect_default.circle(node,7,point2)},shapeSvg},"start"),forkJoin=__name((parent,node,dir)=>{const shapeSvg=parent.insert("g").attr("class","node default").attr("id",node.domId||node.id);let width=70,height=10;"LR"===dir&&(width=10,height=70);const shape=shapeSvg.append("rect").attr("x",-1*width/2).attr("y",-1*height/2).attr("width",width).attr("height",height).attr("class","fork-join");return updateNodeBounds(node,shape),node.height=node.height+node.padding/2,node.width=node.width+node.padding/2,node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"forkJoin"),shapes={rhombus:question,composite:composite,question:question,rect:rect,labelRect:labelRect,rectWithTitle:rectWithTitle,choice:choice,circle:circle2,doublecircle:doublecircle,stadium:stadium,hexagon:hexagon,block_arrow:block_arrow,rect_left_inv_arrow:rect_left_inv_arrow,lean_right:lean_right,lean_left:lean_left,trapezoid:trapezoid,inv_trapezoid:inv_trapezoid,rect_right_inv_arrow:rect_right_inv_arrow,cylinder:cylinder,start:start,end:__name((parent,node)=>{const shapeSvg=parent.insert("g").attr("class","node default").attr("id",node.domId||node.id),innerCircle=shapeSvg.insert("circle",":first-child"),circle3=shapeSvg.insert("circle",":first-child");return circle3.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),innerCircle.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),updateNodeBounds(node,circle3),node.intersect=function(point2){return intersect_default.circle(node,7,point2)},shapeSvg},"end"),note:note_default,subroutine:subroutine,fork:forkJoin,join:forkJoin,class_box:__name(async(parent,node)=>{var _a2;const halfPadding=node.padding/2;let classes2;classes2=node.classes?"node "+node.classes:"node default";const shapeSvg=parent.insert("g").attr("class",classes2).attr("id",node.domId||node.id),rect2=shapeSvg.insert("rect",":first-child"),topLine=shapeSvg.insert("line"),bottomLine=shapeSvg.insert("line");let maxWidth=0,maxHeight=4;const labelContainer=shapeSvg.insert("g").attr("class","label");let verticalPos=0;const hasInterface=null==(_a2=node.classData.annotations)?void 0:_a2[0],interfaceLabelText=node.classData.annotations[0]?"«"+node.classData.annotations[0]+"»":"",interfaceLabel=await createLabel_default(labelContainer,interfaceLabelText,node.labelStyle,!0,!0);let interfaceBBox=interfaceLabel.getBBox();if(getEffectiveHtmlLabels(getConfig2())){const div=interfaceLabel.children[0],dv=select(interfaceLabel);interfaceBBox=div.getBoundingClientRect(),dv.attr("width",interfaceBBox.width),dv.attr("height",interfaceBBox.height)}node.classData.annotations[0]&&(maxHeight+=interfaceBBox.height+4,maxWidth+=interfaceBBox.width);let classTitleString=node.classData.label;void 0!==node.classData.type&&""!==node.classData.type&&(getEffectiveHtmlLabels(getConfig2())?classTitleString+="&lt;"+node.classData.type+"&gt;":classTitleString+="<"+node.classData.type+">");const classTitleLabel=await createLabel_default(labelContainer,classTitleString,node.labelStyle,!0,!0);select(classTitleLabel).attr("class","classTitle");let classTitleBBox=classTitleLabel.getBBox();if(getEffectiveHtmlLabels(getConfig2())){const div=classTitleLabel.children[0],dv=select(classTitleLabel);classTitleBBox=div.getBoundingClientRect(),dv.attr("width",classTitleBBox.width),dv.attr("height",classTitleBBox.height)}maxHeight+=classTitleBBox.height+4,classTitleBBox.width>maxWidth&&(maxWidth=classTitleBBox.width);const classAttributes=[];node.classData.members.forEach(async member=>{const parsedInfo=member.getDisplayDetails();let parsedText=parsedInfo.displayText;getEffectiveHtmlLabels(getConfig2())&&(parsedText=parsedText.replace(/</g,"&lt;").replace(/>/g,"&gt;"));const lbl=await createLabel_default(labelContainer,parsedText,parsedInfo.cssStyle?parsedInfo.cssStyle:node.labelStyle,!0,!0);let bbox=lbl.getBBox();if(getEffectiveHtmlLabels(getConfig2())){const div=lbl.children[0],dv=select(lbl);bbox=div.getBoundingClientRect(),dv.attr("width",bbox.width),dv.attr("height",bbox.height)}bbox.width>maxWidth&&(maxWidth=bbox.width),maxHeight+=bbox.height+4,classAttributes.push(lbl)}),maxHeight+=8;const classMethods=[];if(node.classData.methods.forEach(async member=>{const parsedInfo=member.getDisplayDetails();let displayText=parsedInfo.displayText;getEffectiveHtmlLabels(getConfig2())&&(displayText=displayText.replace(/</g,"&lt;").replace(/>/g,"&gt;"));const lbl=await createLabel_default(labelContainer,displayText,parsedInfo.cssStyle?parsedInfo.cssStyle:node.labelStyle,!0,!0);let bbox=lbl.getBBox();if(getEffectiveHtmlLabels(getConfig2())){const div=lbl.children[0],dv=select(lbl);bbox=div.getBoundingClientRect(),dv.attr("width",bbox.width),dv.attr("height",bbox.height)}bbox.width>maxWidth&&(maxWidth=bbox.width),maxHeight+=bbox.height+4,classMethods.push(lbl)}),maxHeight+=8,hasInterface){let diffX2=(maxWidth-interfaceBBox.width)/2;select(interfaceLabel).attr("transform","translate( "+(-1*maxWidth/2+diffX2)+", "+-1*maxHeight/2+")"),verticalPos=interfaceBBox.height+4}let diffX=(maxWidth-classTitleBBox.width)/2;return select(classTitleLabel).attr("transform","translate( "+(-1*maxWidth/2+diffX)+", "+(-1*maxHeight/2+verticalPos)+")"),verticalPos+=classTitleBBox.height+4,topLine.attr("class","divider").attr("x1",-maxWidth/2-halfPadding).attr("x2",maxWidth/2+halfPadding).attr("y1",-maxHeight/2-halfPadding+8+verticalPos).attr("y2",-maxHeight/2-halfPadding+8+verticalPos),verticalPos+=8,classAttributes.forEach(lbl=>{select(lbl).attr("transform","translate( "+-maxWidth/2+", "+(-1*maxHeight/2+verticalPos+4)+")");const memberBBox=null==lbl?void 0:lbl.getBBox();verticalPos+=((null==memberBBox?void 0:memberBBox.height)??0)+4}),verticalPos+=8,bottomLine.attr("class","divider").attr("x1",-maxWidth/2-halfPadding).attr("x2",maxWidth/2+halfPadding).attr("y1",-maxHeight/2-halfPadding+8+verticalPos).attr("y2",-maxHeight/2-halfPadding+8+verticalPos),verticalPos+=8,classMethods.forEach(lbl=>{select(lbl).attr("transform","translate( "+-maxWidth/2+", "+(-1*maxHeight/2+verticalPos)+")");const memberBBox=null==lbl?void 0:lbl.getBBox();verticalPos+=((null==memberBBox?void 0:memberBBox.height)??0)+4}),rect2.attr("style",node.style).attr("class","outer title-state").attr("x",-maxWidth/2-halfPadding).attr("y",-maxHeight/2-halfPadding).attr("width",maxWidth+node.padding).attr("height",maxHeight+node.padding),updateNodeBounds(node,rect2),node.intersect=function(point2){return intersect_default.rect(node,point2)},shapeSvg},"class_box")},nodeElems={},insertNode=__name(async(elem,node,renderOptions)=>{let newEl,el;if(node.link){let target;"sandbox"===getConfig2().securityLevel?target="_top":node.linkTarget&&(target=node.linkTarget||"_blank"),newEl=elem.insert("svg:a").attr("xlink:href",node.link).attr("target",target),el=await shapes[node.shape](newEl,node,renderOptions)}else el=await shapes[node.shape](elem,node,renderOptions),newEl=el;return node.tooltip&&el.attr("title",node.tooltip),node.class&&el.attr("class","node default "+node.class),nodeElems[node.id]=newEl,node.haveCallback&&nodeElems[node.id].attr("class",nodeElems[node.id].attr("class")+" clickable"),newEl},"insertNode"),positionNode=__name(node=>{const el=nodeElems[node.id];log.trace("Transforming node",node.diff,node,"translate("+(node.x-node.width/2-5)+", "+node.width/2+")");const diff=node.diff||0;return node.clusterNode?el.attr("transform","translate("+(node.x+diff-node.width/2)+", "+(node.y-node.height/2-8)+")"):el.attr("transform","translate("+node.x+", "+node.y+")"),diff},"positionNode");function getNodeFromBlock(block,db2,positioned=!1){var _a2,_b2,_c;const vertex=block;let classStr="default";((null==(_a2=null==vertex?void 0:vertex.classes)?void 0:_a2.length)||0)>0&&(classStr=((null==vertex?void 0:vertex.classes)??[]).join(" ")),classStr+=" flowchart-label";let padding2,radius=0,shape="";switch(vertex.type){case"round":radius=5,shape="rect";break;case"composite":radius=0,shape="composite",padding2=0;break;case"square":case"group":default:shape="rect";break;case"diamond":shape="question";break;case"hexagon":shape="hexagon";break;case"block_arrow":shape="block_arrow";break;case"odd":case"rect_left_inv_arrow":shape="rect_left_inv_arrow";break;case"lean_right":shape="lean_right";break;case"lean_left":shape="lean_left";break;case"trapezoid":shape="trapezoid";break;case"inv_trapezoid":shape="inv_trapezoid";break;case"circle":shape="circle";break;case"ellipse":shape="ellipse";break;case"stadium":shape="stadium";break;case"subroutine":shape="subroutine";break;case"cylinder":shape="cylinder";break;case"doublecircle":shape="doublecircle"}const styles=getStylesFromArray((null==vertex?void 0:vertex.styles)??[]),vertexText=vertex.label,bounds=vertex.size??{width:0,height:0,x:0,y:0},dbDiagramId=db2.getDiagramId();return{labelStyle:styles.labelStyle,shape:shape,labelText:vertexText,rx:radius,ry:radius,class:classStr,style:styles.style,id:vertex.id,domId:dbDiagramId?`${dbDiagramId}-${vertex.id}`:vertex.id,directions:vertex.directions,width:bounds.width,height:bounds.height,x:bounds.x,y:bounds.y,positioned:positioned,intersect:void 0,type:vertex.type,padding:padding2??(null==(_c=null==(_b2=getConfig())?void 0:_b2.block)?void 0:_c.padding)??0}}async function calculateBlockSize(elem,block,db2){const node=getNodeFromBlock(block,db2,!1);if("group"===node.type)return;const config2=getConfig(),nodeEl=await insertNode(elem,node,{config:config2}),boundingBox=nodeEl.node().getBBox(),obj=db2.getBlock(node.id);obj.size={width:boundingBox.width,height:boundingBox.height,x:0,y:0,node:nodeEl},db2.setBlock(obj),nodeEl.remove()}async function insertBlockPositioned(elem,block,db2){const node=getNodeFromBlock(block,db2,!0);if("space"!==db2.getBlock(node.id).type){const config2=getConfig();await insertNode(elem,node,{config:config2}),block.intersect=null==node?void 0:node.intersect,positionNode(node)}}async function performOperations(elem,blocks2,db2,operation){for(const block of blocks2)await operation(elem,block,db2),block.children&&await performOperations(elem,block.children,db2,operation)}async function calculateBlockSizes(elem,blocks2,db2){await performOperations(elem,blocks2,db2,calculateBlockSize)}async function insertBlocks(elem,blocks2,db2){await performOperations(elem,blocks2,db2,insertBlockPositioned)}async function insertEdges(elem,edges,blocks2,db2,id){const g=new Graph({multigraph:!0,compound:!0});g.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(const block of blocks2)block.size&&g.setNode(block.id,{width:block.size.width,height:block.size.height,intersect:block.intersect});for(const edge of edges)if(edge.start&&edge.end){const startBlock=db2.getBlock(edge.start),endBlock=db2.getBlock(edge.end);if((null==startBlock?void 0:startBlock.size)&&(null==endBlock?void 0:endBlock.size)){const start2=startBlock.size,end2=endBlock.size,points=[{x:start2.x,y:start2.y},{x:start2.x+(end2.x-start2.x)/2,y:start2.y+(end2.y-start2.y)/2},{x:end2.x,y:end2.y}],prefixedEdgeId=id?`${id}-${edge.id}`:edge.id;insertEdge(elem,{v:edge.start,w:edge.end,name:prefixedEdgeId},{...edge,id:prefixedEdgeId,arrowTypeEnd:edge.arrowTypeEnd,arrowTypeStart:edge.arrowTypeStart,points:points,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",g,id),edge.label&&(await insertEdgeLabel(elem,{...edge,label:edge.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:edge.arrowTypeEnd,arrowTypeStart:edge.arrowTypeStart,points:points,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),positionEdgeLabel({...edge,x:points[1].x,y:points[1].y},{originalPath:points}))}}}__name(getNodeFromBlock,"getNodeFromBlock"),__name(calculateBlockSize,"calculateBlockSize"),__name(insertBlockPositioned,"insertBlockPositioned"),__name(performOperations,"performOperations"),__name(calculateBlockSizes,"calculateBlockSizes"),__name(insertBlocks,"insertBlocks"),__name(insertEdges,"insertEdges");var getClasses2=__name(function(text,diagObj){return diagObj.db.getClasses()},"getClasses"),diagram={parser:block_default,db:blockDB_default,renderer:{draw:__name(async function(text,id,_version,diagObj){const{securityLevel:securityLevel,block:conf}=getConfig(),db2=diagObj.db;let sandboxElement;db2.setDiagramId(id),"sandbox"===securityLevel&&(sandboxElement=select("#i"+id));const root=select("sandbox"===securityLevel?sandboxElement.nodes()[0].contentDocument.body:"body"),svg="sandbox"===securityLevel?root.select(`[id="${id}"]`):select(`[id="${id}"]`);markers_default(svg,["point","circle","cross"],diagObj.type,id);const bl=db2.getBlocks(),blArr=db2.getBlocksFlat(),edges=db2.getEdges(),nodes=svg.insert("g").attr("class","block");await calculateBlockSizes(nodes,bl,db2);const bounds=layout(db2);if(await insertBlocks(nodes,bl,db2),await insertEdges(nodes,edges,blArr,db2,id),bounds){const bounds2=bounds,magicFactor=Math.max(1,Math.round(bounds2.width/bounds2.height*.125)),height=bounds2.height+magicFactor+10,width=bounds2.width+10,{useMaxWidth:useMaxWidth}=conf;configureSvgSize(svg,height,width,!!useMaxWidth),log.debug("Here Bounds",bounds,bounds2),svg.attr("viewBox",`${bounds2.x-5} ${bounds2.y-5} ${bounds2.width+10} ${bounds2.height+10}`)}},"draw"),getClasses:getClasses2},styles:styles_default};export{diagram};