@prefecthq/prefab-ui 0.16.3 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/_basePickBy-DOA5KUMR.js +1 -0
- package/dist/app/_baseUniq-DNC1lkUQ.js +1 -0
- package/dist/app/{app-BYX4uynp.js → app-DHCIgFOe.js} +1 -1
- package/dist/app/arc-DtWrmhPk.js +1 -0
- package/dist/app/architectureDiagram-2XIMDMQ5-DSBvrnBp.js +36 -0
- package/dist/app/band-CquvqAHh.js +1 -0
- package/dist/app/blockDiagram-WCTKOSBZ-C3lqcHEK.js +132 -0
- package/dist/app/{bundle-DjRjt30T.js → bundle-YCeMMkad.js} +134 -12
- package/dist/app/c4Diagram-IC4MRINW-XbaYr2aT.js +10 -0
- package/dist/app/channel-4HLppxQc.js +1 -0
- package/dist/app/charts-C-nxm4Ua.js +80 -0
- package/dist/app/chunk-4BX2VUAB-B3Z42k1A.js +1 -0
- package/dist/app/chunk-55IACEB6-CJ0jXTRd.js +1 -0
- package/dist/app/chunk-FMBD7UC4-DLO-MqfH.js +15 -0
- package/dist/app/chunk-JSJVCQXG-Bo_y_qwW.js +1 -0
- package/dist/app/chunk-KX2RTZJC-BVwQX8D_.js +1 -0
- package/dist/app/chunk-NQ4KR5QH-CIPxVbrL.js +220 -0
- package/dist/app/chunk-QZHKN3VN-N6NVbhP7.js +1 -0
- package/dist/app/chunk-WL4C6EOR-DV5P-H0e.js +189 -0
- package/dist/app/classDiagram-VBA2DB6C-BHC3MA1_.js +1 -0
- package/dist/app/classDiagram-v2-RAHNMMFH-BHC3MA1_.js +1 -0
- package/dist/app/clone-DI72dXHQ.js +1 -0
- package/dist/app/{compound-calendar-C7UZF74s.js → compound-calendar-CienSxFY.js} +1 -1
- package/dist/app/{content-DsbNprwf.js → content-C5unCzy-.js} +2 -2
- package/dist/app/cose-bilkent-S5V4N54A-DHOrc67k.js +1 -0
- package/dist/app/cytoscape.esm-BQaXIfA_.js +331 -0
- package/dist/app/dagre-KLK3FWXG-Bfg29i9P.js +4 -0
- package/dist/app/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/app/diagram-E7M64L7V-ZptbrJCa.js +24 -0
- package/dist/app/diagram-IFDJBPK2-WLONHH3W.js +43 -0
- package/dist/app/diagram-P4PSJMXO-BoeOiMK0.js +24 -0
- package/dist/app/erDiagram-INFDFZHY-BDkwxkTc.js +70 -0
- package/dist/app/flowDiagram-PKNHOUZH-BK4NF-J1.js +162 -0
- package/dist/app/ganttDiagram-A5KZAMGK-Bqyrd7tK.js +292 -0
- package/dist/app/gitGraphDiagram-K3NZZRJ6-Bwu4r5l6.js +65 -0
- package/dist/app/graph-CP9RJrNf.js +1 -0
- package/dist/app/{icons-barrel-sGg0qRGm.js → icons-barrel-24twA0l4.js} +1 -1
- package/dist/app/infoDiagram-LFFYTUFH-C6PLpmeb.js +2 -0
- package/dist/app/init-Dmth1JHB.js +1 -0
- package/dist/app/ishikawaDiagram-PHBUUO56-C0hxTRPm.js +70 -0
- package/dist/app/journeyDiagram-4ABVD52K-niBQJW9B.js +139 -0
- package/dist/app/kanban-definition-K7BYSVSG-1OdNruGO.js +89 -0
- package/dist/app/katex-f0vruDP5.js +265 -0
- package/dist/app/layout-CYJpeepd.js +1 -0
- package/dist/app/linear-DSkd6W2C.js +1 -0
- package/dist/app/mermaid-j5mXnKJf.js +2 -0
- package/dist/app/mermaid.core-ClCS18UG.js +254 -0
- package/dist/app/mindmap-definition-YRQLILUH-D_-V-IdP.js +68 -0
- package/dist/app/ordinal-DILIJJjt.js +1 -0
- package/dist/app/pieDiagram-SKSYHLDU-BtQtaWCX.js +30 -0
- package/dist/app/purify.es-DIZLy5JB.js +2 -0
- package/dist/app/quadrantDiagram-337W2JSQ-BDDLDhsG.js +7 -0
- package/dist/app/renderer.css +1 -1
- package/dist/app/renderer.js +87 -86
- package/dist/app/requirementDiagram-Z7DCOOCP-Dds2-pGw.js +73 -0
- package/dist/app/sankeyDiagram-WA2Y5GQK-uhRMcMcg.js +10 -0
- package/dist/app/sequenceDiagram-2WXFIKYE-BbkjTnVd.js +145 -0
- package/dist/app/stateDiagram-RAJIS63D-C-m6XiJC.js +1 -0
- package/dist/app/stateDiagram-v2-FVOUBMTO-R4nRgMSq.js +1 -0
- package/dist/app/string-Bl2zznvy.js +1 -0
- package/dist/app/svg-DA8WcMcr.js +1 -0
- package/dist/app/time-DXBSQWow.js +1 -0
- package/dist/app/timeline-definition-YZTLITO2-DnVbviH7.js +61 -0
- package/dist/app/treemap-KZPCXAKY-dWDqf5vN.js +162 -0
- package/dist/app/vennDiagram-LZ73GAT5-Deq_BFSx.js +34 -0
- package/dist/app/xychartDiagram-JWTSCODW-C5TnO261.js +7 -0
- package/package.json +2 -1
- package/dist/app/charts-CLI2idfS.js +0 -80
- package/dist/app/svg-DKwn8Elg.js +0 -2
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import{g as he}from"./chunk-FMBD7UC4-DLO-MqfH.js";import{_ as d,F as lt,d as C,e as ge,l as v,y as de,A as ue,a3 as pe,c as M,O as fe,a4 as Y,a5 as vt,a6 as at,a7 as xe,u as st,k as ye,a8 as be,i as Bt,a9 as Ct,aa as we}from"./mermaid.core-ClCS18UG.js";import{c as me}from"./clone-DI72dXHQ.js";import{G as Le}from"./graph-CP9RJrNf.js";import{c as Se}from"./channel-4HLppxQc.js";import{l as ve,c as Ee}from"./string-Bl2zznvy.js";import"./renderer.js";import"./purify.es-DIZLy5JB.js";import"./_baseUniq-DNC1lkUQ.js";var bt=(function(){var e=d(function(N,y,u,p){for(u=u||{},p=N.length;p--;u[N[p]]=y);return u},"o"),t=[1,15],a=[1,7],i=[1,13],l=[1,14],s=[1,19],r=[1,16],n=[1,17],c=[1,18],x=[8,30],h=[8,10,21,28,29,30,31,39,43,46],f=[1,23],w=[1,24],b=[8,10,15,16,21,28,29,30,31,39,43,46],m=[8,10,15,16,21,27,28,29,30,31,39,43,46],k=[1,49],L={trace:d(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:d(function(y,u,p,S,E,o,_){var g=o.length-1;switch(E){case 4:S.getLogger().debug("Rule: separator (NL) ");break;case 5:S.getLogger().debug("Rule: separator (Space) ");break;case 6:S.getLogger().debug("Rule: separator (EOF) ");break;case 7:S.getLogger().debug("Rule: hierarchy: ",o[g-1]),S.setHierarchy(o[g-1]);break;case 8:S.getLogger().debug("Stop NL ");break;case 9:S.getLogger().debug("Stop EOF ");break;case 10:S.getLogger().debug("Stop NL2 ");break;case 11:S.getLogger().debug("Stop EOF2 ");break;case 12:S.getLogger().debug("Rule: statement: ",o[g]),typeof o[g].length=="number"?this.$=o[g]:this.$=[o[g]];break;case 13:S.getLogger().debug("Rule: statement #2: ",o[g-1]),this.$=[o[g-1]].concat(o[g]);break;case 14:S.getLogger().debug("Rule: link: ",o[g],y),this.$={edgeTypeStr:o[g],label:""};break;case 15:S.getLogger().debug("Rule: LABEL link: ",o[g-3],o[g-1],o[g]),this.$={edgeTypeStr:o[g],label:o[g-1]};break;case 18:const D=parseInt(o[g]),T=S.generateId();this.$={id:T,type:"space",label:"",width:D,children:[]};break;case 23:S.getLogger().debug("Rule: (nodeStatement link node) ",o[g-2],o[g-1],o[g]," typestr: ",o[g-1].edgeTypeStr);const K=S.edgeStrToEdgeData(o[g-1].edgeTypeStr);this.$=[{id:o[g-2].id,label:o[g-2].label,type:o[g-2].type,directions:o[g-2].directions},{id:o[g-2].id+"-"+o[g].id,start:o[g-2].id,end:o[g].id,label:o[g-1].label,type:"edge",directions:o[g].directions,arrowTypeEnd:K,arrowTypeStart:"arrow_open"},{id:o[g].id,label:o[g].label,type:S.typeStr2Type(o[g].typeStr),directions:o[g].directions}];break;case 24:S.getLogger().debug("Rule: nodeStatement (abc88 node size) ",o[g-1],o[g]),this.$={id:o[g-1].id,label:o[g-1].label,type:S.typeStr2Type(o[g-1].typeStr),directions:o[g-1].directions,widthInColumns:parseInt(o[g],10)};break;case 25:S.getLogger().debug("Rule: nodeStatement (node) ",o[g]),this.$={id:o[g].id,label:o[g].label,type:S.typeStr2Type(o[g].typeStr),directions:o[g].directions,widthInColumns:1};break;case 26:S.getLogger().debug("APA123",this?this:"na"),S.getLogger().debug("COLUMNS: ",o[g]),this.$={type:"column-setting",columns:o[g]==="auto"?-1:parseInt(o[g])};break;case 27:S.getLogger().debug("Rule: id-block statement : ",o[g-2],o[g-1]),S.generateId(),this.$={...o[g-2],type:"composite",children:o[g-1]};break;case 28:S.getLogger().debug("Rule: blockStatement : ",o[g-2],o[g-1],o[g]);const P=S.generateId();this.$={id:P,type:"composite",label:"",children:o[g-1]};break;case 29:S.getLogger().debug("Rule: node (NODE_ID separator): ",o[g]),this.$={id:o[g]};break;case 30:S.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",o[g-1],o[g]),this.$={id:o[g-1],label:o[g].label,typeStr:o[g].typeStr,directions:o[g].directions};break;case 31:S.getLogger().debug("Rule: dirList: ",o[g]),this.$=[o[g]];break;case 32:S.getLogger().debug("Rule: dirList: ",o[g-1],o[g]),this.$=[o[g-1]].concat(o[g]);break;case 33:S.getLogger().debug("Rule: nodeShapeNLabel: ",o[g-2],o[g-1],o[g]),this.$={typeStr:o[g-2]+o[g],label:o[g-1]};break;case 34:S.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",o[g-3],o[g-2]," #3:",o[g-1],o[g]),this.$={typeStr:o[g-3]+o[g],label:o[g-2],directions:o[g-1]};break;case 35:case 36:this.$={type:"classDef",id:o[g-1].trim(),css:o[g].trim()};break;case 37:this.$={type:"applyClass",id:o[g-1].trim(),styleClass:o[g].trim()};break;case 38:this.$={type:"applyStyles",id:o[g-1].trim(),stylesStr:o[g].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:t,11:3,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:i,29:l,31:s,39:r,43:n,46:c},{8:[1,20]},e(x,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:t,21:a,28:i,29:l,31:s,39:r,43:n,46:c}),e(h,[2,16],{14:22,15:f,16:w}),e(h,[2,17]),e(h,[2,18]),e(h,[2,19]),e(h,[2,20]),e(h,[2,21]),e(h,[2,22]),e(b,[2,25],{27:[1,25]}),e(h,[2,26]),{19:26,26:12,31:s},{10:t,11:27,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:i,29:l,31:s,39:r,43:n,46:c},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},e(m,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},e(x,[2,13]),{26:35,31:s},{31:[2,14]},{17:[1,36]},e(b,[2,24]),{10:t,11:37,13:4,14:22,15:f,16:w,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:i,29:l,31:s,39:r,43:n,46:c},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},e(m,[2,30]),{18:[1,43]},{18:[1,44]},e(b,[2,23]),{18:[1,45]},{30:[1,46]},e(h,[2,28]),e(h,[2,35]),e(h,[2,36]),e(h,[2,37]),e(h,[2,38]),{36:[1,47]},{33:48,34:k},{15:[1,50]},e(h,[2,27]),e(m,[2,33]),{38:[1,51]},{33:52,34:k,38:[2,31]},{31:[2,15]},e(m,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:d(function(y,u){if(u.recoverable)this.trace(y);else{var p=new Error(y);throw p.hash=u,p}},"parseError"),parse:d(function(y){var u=this,p=[0],S=[],E=[null],o=[],_=this.table,g="",D=0,T=0,K=2,P=1,Q=o.slice.call(arguments,1),R=Object.create(this.lexer),U={yy:{}};for(var et in this.yy)Object.prototype.hasOwnProperty.call(this.yy,et)&&(U.yy[et]=this.yy[et]);R.setInput(y,U.yy),U.yy.lexer=R,U.yy.parser=this,typeof R.yylloc>"u"&&(R.yylloc={});var rt=R.yylloc;o.push(rt);var ce=R.options&&R.options.ranges;typeof U.yy.parseError=="function"?this.parseError=U.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function oe(X){p.length=p.length-2*X,E.length=E.length-X,o.length=o.length-X}d(oe,"popStack");function Nt(){var X;return X=S.pop()||R.lex()||P,typeof X!="number"&&(X instanceof Array&&(S=X,X=S.pop()),X=u.symbols_[X]||X),X}d(Nt,"lex");for(var H,$,V,ft,tt={},ct,J,It,ot;;){if($=p[p.length-1],this.defaultActions[$]?V=this.defaultActions[$]:((H===null||typeof H>"u")&&(H=Nt()),V=_[$]&&_[$][H]),typeof V>"u"||!V.length||!V[0]){var xt="";ot=[];for(ct in _[$])this.terminals_[ct]&&ct>K&&ot.push("'"+this.terminals_[ct]+"'");R.showPosition?xt="Parse error on line "+(D+1)+`:
|
|
2
|
+
`+R.showPosition()+`
|
|
3
|
+
Expecting `+ot.join(", ")+", got '"+(this.terminals_[H]||H)+"'":xt="Parse error on line "+(D+1)+": Unexpected "+(H==P?"end of input":"'"+(this.terminals_[H]||H)+"'"),this.parseError(xt,{text:R.match,token:this.terminals_[H]||H,line:R.yylineno,loc:rt,expected:ot})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+$+", token: "+H);switch(V[0]){case 1:p.push(H),E.push(R.yytext),o.push(R.yylloc),p.push(V[1]),H=null,T=R.yyleng,g=R.yytext,D=R.yylineno,rt=R.yylloc;break;case 2:if(J=this.productions_[V[1]][1],tt.$=E[E.length-J],tt._$={first_line:o[o.length-(J||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(J||1)].first_column,last_column:o[o.length-1].last_column},ce&&(tt._$.range=[o[o.length-(J||1)].range[0],o[o.length-1].range[1]]),ft=this.performAction.apply(tt,[g,T,D,U.yy,V[1],E,o].concat(Q)),typeof ft<"u")return ft;J&&(p=p.slice(0,-1*J*2),E=E.slice(0,-1*J),o=o.slice(0,-1*J)),p.push(this.productions_[V[1]][0]),E.push(tt.$),o.push(tt._$),It=_[p[p.length-2]][p[p.length-1]],p.push(It);break;case 3:return!0}}return!0},"parse")},B=(function(){var N={EOF:1,parseError:d(function(u,p){if(this.yy.parser)this.yy.parser.parseError(u,p);else throw new Error(u)},"parseError"),setInput:d(function(y,u){return this.yy=u||this.yy||{},this._input=y,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:d(function(){var y=this._input[0];this.yytext+=y,this.yyleng++,this.offset++,this.match+=y,this.matched+=y;var u=y.match(/(?:\r\n?|\n).*/g);return u?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),y},"input"),unput:d(function(y){var u=y.length,p=y.split(/(?:\r\n?|\n)/g);this._input=y+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-u),this.offset-=u;var S=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),p.length-1&&(this.yylineno-=p.length-1);var E=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:p?(p.length===S.length?this.yylloc.first_column:0)+S[S.length-p.length].length-p[0].length:this.yylloc.first_column-u},this.options.ranges&&(this.yylloc.range=[E[0],E[0]+this.yyleng-u]),this.yyleng=this.yytext.length,this},"unput"),more:d(function(){return this._more=!0,this},"more"),reject:d(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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).
|
|
4
|
+
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:d(function(y){this.unput(this.match.slice(y))},"less"),pastInput:d(function(){var y=this.matched.substr(0,this.matched.length-this.match.length);return(y.length>20?"...":"")+y.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:d(function(){var y=this.match;return y.length<20&&(y+=this._input.substr(0,20-y.length)),(y.substr(0,20)+(y.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:d(function(){var y=this.pastInput(),u=new Array(y.length+1).join("-");return y+this.upcomingInput()+`
|
|
5
|
+
`+u+"^"},"showPosition"),test_match:d(function(y,u){var p,S,E;if(this.options.backtrack_lexer&&(E={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&&(E.yylloc.range=this.yylloc.range.slice(0))),S=y[0].match(/(?:\r\n?|\n).*/g),S&&(this.yylineno+=S.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:S?S[S.length-1].length-S[S.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+y[0].length},this.yytext+=y[0],this.match+=y[0],this.matches=y,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(y[0].length),this.matched+=y[0],p=this.performAction.call(this,this.yy,this,u,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),p)return p;if(this._backtrack){for(var o in E)this[o]=E[o];return!1}return!1},"test_match"),next:d(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var y,u,p,S;this._more||(this.yytext="",this.match="");for(var E=this._currentRules(),o=0;o<E.length;o++)if(p=this._input.match(this.rules[E[o]]),p&&(!u||p[0].length>u[0].length)){if(u=p,S=o,this.options.backtrack_lexer){if(y=this.test_match(p,E[o]),y!==!1)return y;if(this._backtrack){u=!1;continue}else return!1}else if(!this.options.flex)break}return u?(y=this.test_match(u,E[S]),y!==!1?y:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
|
|
6
|
+
`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:d(function(){var u=this.next();return u||this.lex()},"lex"),begin:d(function(u){this.conditionStack.push(u)},"begin"),popState:d(function(){var u=this.conditionStack.length-1;return u>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:d(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:d(function(u){return u=this.conditionStack.length-1-Math.abs(u||0),u>=0?this.conditionStack[u]:"INITIAL"},"topState"),pushState:d(function(u){this.begin(u)},"pushState"),stateStackSize:d(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:d(function(u,p,S,E){switch(S){case 0:return u.getLogger().debug("Found block-beta"),10;case 1:return u.getLogger().debug("Found id-block"),29;case 2:return u.getLogger().debug("Found block"),10;case 3:u.getLogger().debug(".",p.yytext);break;case 4:u.getLogger().debug("_",p.yytext);break;case 5:return 5;case 6:return p.yytext=-1,28;case 7:return p.yytext=p.yytext.replace(/columns\s+/,""),u.getLogger().debug("COLUMNS (LEX)",p.yytext),28;case 8:this.pushState("md_string");break;case 9:return"MD_STR";case 10:this.popState();break;case 11:this.pushState("string");break;case 12:u.getLogger().debug("LEX: POPPING STR:",p.yytext),this.popState();break;case 13:return u.getLogger().debug("LEX: STR end:",p.yytext),"STR";case 14:return p.yytext=p.yytext.replace(/space\:/,""),u.getLogger().debug("SPACE NUM (LEX)",p.yytext),21;case 15:return p.yytext="1",u.getLogger().debug("COLUMNS (LEX)",p.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 34:this.popState();break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:return this.popState(),u.getLogger().debug("Lex: (("),"NODE_DEND";case 38:return this.popState(),u.getLogger().debug("Lex: (("),"NODE_DEND";case 39:return this.popState(),u.getLogger().debug("Lex: ))"),"NODE_DEND";case 40:return this.popState(),u.getLogger().debug("Lex: (("),"NODE_DEND";case 41:return this.popState(),u.getLogger().debug("Lex: (("),"NODE_DEND";case 42:return this.popState(),u.getLogger().debug("Lex: (-"),"NODE_DEND";case 43:return this.popState(),u.getLogger().debug("Lex: -)"),"NODE_DEND";case 44:return this.popState(),u.getLogger().debug("Lex: (("),"NODE_DEND";case 45:return this.popState(),u.getLogger().debug("Lex: ]]"),"NODE_DEND";case 46:return this.popState(),u.getLogger().debug("Lex: ("),"NODE_DEND";case 47:return this.popState(),u.getLogger().debug("Lex: ])"),"NODE_DEND";case 48:return this.popState(),u.getLogger().debug("Lex: /]"),"NODE_DEND";case 49:return this.popState(),u.getLogger().debug("Lex: /]"),"NODE_DEND";case 50:return this.popState(),u.getLogger().debug("Lex: )]"),"NODE_DEND";case 51:return this.popState(),u.getLogger().debug("Lex: )"),"NODE_DEND";case 52:return this.popState(),u.getLogger().debug("Lex: ]>"),"NODE_DEND";case 53:return this.popState(),u.getLogger().debug("Lex: ]"),"NODE_DEND";case 54:return u.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;case 55:return u.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;case 56:return u.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;case 57:return u.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 58:return u.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;case 59:return u.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 60:return u.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 61:return u.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 62:return u.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;case 63:return u.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;case 64:return u.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 65:return this.pushState("NODE"),35;case 66:return this.pushState("NODE"),35;case 67:return this.pushState("NODE"),35;case 68:return this.pushState("NODE"),35;case 69:return this.pushState("NODE"),35;case 70:return this.pushState("NODE"),35;case 71:return this.pushState("NODE"),35;case 72:return u.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;case 73:return this.pushState("BLOCK_ARROW"),u.getLogger().debug("LEX ARR START"),37;case 74:return u.getLogger().debug("Lex: NODE_ID",p.yytext),31;case 75:return u.getLogger().debug("Lex: EOF",p.yytext),8;case 76:this.pushState("md_string");break;case 77:this.pushState("md_string");break;case 78:return"NODE_DESCR";case 79:this.popState();break;case 80:u.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:u.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return u.getLogger().debug("LEX: NODE_DESCR:",p.yytext),"NODE_DESCR";case 83:u.getLogger().debug("LEX POPPING"),this.popState();break;case 84:u.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return p.yytext=p.yytext.replace(/^,\s*/,""),u.getLogger().debug("Lex (right): dir:",p.yytext),"DIR";case 86:return p.yytext=p.yytext.replace(/^,\s*/,""),u.getLogger().debug("Lex (left):",p.yytext),"DIR";case 87:return p.yytext=p.yytext.replace(/^,\s*/,""),u.getLogger().debug("Lex (x):",p.yytext),"DIR";case 88:return p.yytext=p.yytext.replace(/^,\s*/,""),u.getLogger().debug("Lex (y):",p.yytext),"DIR";case 89:return p.yytext=p.yytext.replace(/^,\s*/,""),u.getLogger().debug("Lex (up):",p.yytext),"DIR";case 90:return p.yytext=p.yytext.replace(/^,\s*/,""),u.getLogger().debug("Lex (down):",p.yytext),"DIR";case 91:return p.yytext="]>",u.getLogger().debug("Lex (ARROW_DIR end):",p.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 92:return u.getLogger().debug("Lex: LINK","#"+p.yytext+"#"),15;case 93:return u.getLogger().debug("Lex: LINK",p.yytext),15;case 94:return u.getLogger().debug("Lex: LINK",p.yytext),15;case 95:return u.getLogger().debug("Lex: LINK",p.yytext),15;case 96:return u.getLogger().debug("Lex: START_LINK",p.yytext),this.pushState("LLABEL"),16;case 97:return u.getLogger().debug("Lex: START_LINK",p.yytext),this.pushState("LLABEL"),16;case 98:return u.getLogger().debug("Lex: START_LINK",p.yytext),this.pushState("LLABEL"),16;case 99:this.pushState("md_string");break;case 100:return u.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 101:return this.popState(),u.getLogger().debug("Lex: LINK","#"+p.yytext+"#"),15;case 102:return this.popState(),u.getLogger().debug("Lex: LINK",p.yytext),15;case 103:return this.popState(),u.getLogger().debug("Lex: LINK",p.yytext),15;case 104:return u.getLogger().debug("Lex: COLON",p.yytext),p.yytext=p.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}}};return N})();L.lexer=B;function I(){this.yy={}}return d(I,"Parser"),I.prototype=L,L.Parser=I,new I})();bt.parser=bt;var _e=bt,Z=new Map,Et=[],wt=new Map,Ot="color",Rt="fill",ke="bgFill",Ut=",",De=M(),gt=new Map,Te=d(e=>ye.sanitizeText(e,De),"sanitizeText"),Ne=d(function(e,t=""){let a=gt.get(e);a||(a={id:e,styles:[],textStyles:[]},gt.set(e,a)),t!=null&&t.split(Ut).forEach(i=>{const l=i.replace(/([^;]*);/,"$1").trim();if(RegExp(Ot).exec(i)){const r=l.replace(Rt,ke).replace(Ot,Rt);a.textStyles.push(r)}a.styles.push(l)})},"addStyleClass"),Ie=d(function(e,t=""){const a=Z.get(e);t!=null&&(a.styles=t.split(Ut))},"addStyle2Node"),Be=d(function(e,t){e.split(",").forEach(function(a){let i=Z.get(a);if(i===void 0){const l=a.trim();i={id:l,type:"na",children:[]},Z.set(l,i)}i.classes||(i.classes=[]),i.classes.push(t)})},"setCssClass"),Xt=d((e,t)=>{const a=e.flat(),i=[],l=a.find(r=>(r==null?void 0:r.type)==="column-setting"),s=(l==null?void 0:l.columns)??-1;for(const r of a){if(typeof s=="number"&&s>0&&r.type!=="column-setting"&&typeof r.widthInColumns=="number"&&r.widthInColumns>s&&v.warn(`Block ${r.id} width ${r.widthInColumns} exceeds configured column width ${s}`),r.label&&(r.label=Te(r.label)),r.type==="classDef"){Ne(r.id,r.css);continue}if(r.type==="applyClass"){Be(r.id,(r==null?void 0:r.styleClass)??"");continue}if(r.type==="applyStyles"){r!=null&&r.stylesStr&&Ie(r.id,r==null?void 0:r.stylesStr);continue}if(r.type==="column-setting")t.columns=r.columns??-1;else if(r.type==="edge"){const n=(wt.get(r.id)??0)+1;wt.set(r.id,n),r.id=n+"-"+r.id,Et.push(r)}else{r.label||(r.type==="composite"?r.label="":r.label=r.id);const n=Z.get(r.id);if(n===void 0?Z.set(r.id,r):(r.type!=="na"&&(n.type=r.type),r.label!==r.id&&(n.label=r.label)),r.children&&Xt(r.children,r),r.type==="space"){const c=r.width??1;for(let x=0;x<c;x++){const h=me(r);h.id=h.id+"-"+x,Z.set(h.id,h),i.push(h)}}else n===void 0&&i.push(r)}}t.children=i},"populateBlockDatabase"),_t=[],nt={id:"root",type:"composite",children:[],columns:-1},Ce=d(()=>{v.debug("Clear called"),de(),nt={id:"root",type:"composite",children:[],columns:-1},Z=new Map([["root",nt]]),_t=[],gt=new Map,Et=[],wt=new Map},"clear");function jt(e){switch(v.debug("typeStr2Type",e),e){case"[]":return"square";case"()":return v.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"}}d(jt,"typeStr2Type");function Vt(e){switch(v.debug("typeStr2Type",e),e){case"==":return"thick";default:return"normal"}}d(Vt,"edgeTypeStr2Type");function Gt(e){switch(e.replace(/^[\s-]+|[\s-]+$/g,"")){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}d(Gt,"edgeStrToEdgeData");var zt=0,Oe=d(()=>(zt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+zt),"generateId"),Re=d(e=>{nt.children=e,Xt(e,nt),_t=nt.children},"setHierarchy"),ze=d(e=>{const t=Z.get(e);return t?t.columns?t.columns:t.children?t.children.length:-1:-1},"getColumns"),Ae=d(()=>[...Z.values()],"getBlocksFlat"),Me=d(()=>_t||[],"getBlocks"),Fe=d(()=>Et,"getEdges"),Pe=d(e=>Z.get(e),"getBlock"),We=d(e=>{Z.set(e.id,e)},"setBlock"),Ye=d(()=>v,"getLogger"),He=d(function(){return gt},"getClasses"),Ke={getConfig:d(()=>lt().block,"getConfig"),typeStr2Type:jt,edgeTypeStr2Type:Vt,edgeStrToEdgeData:Gt,getLogger:Ye,getBlocksFlat:Ae,getBlocks:Me,getEdges:Fe,setHierarchy:Re,getBlock:Pe,setBlock:We,getColumns:ze,getClasses:He,clear:Ce,generateId:Oe},Ue=Ke,yt=d((e,t)=>{const a=Se,i=a(e,"r"),l=a(e,"g"),s=a(e,"b");return ue(i,l,s,t)},"fade"),Xe=d(e=>`.label {
|
|
7
|
+
font-family: ${e.fontFamily};
|
|
8
|
+
color: ${e.nodeTextColor||e.textColor};
|
|
9
|
+
}
|
|
10
|
+
.cluster-label text {
|
|
11
|
+
fill: ${e.titleColor};
|
|
12
|
+
}
|
|
13
|
+
.cluster-label span,p {
|
|
14
|
+
color: ${e.titleColor};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
.label text,span,p {
|
|
20
|
+
fill: ${e.nodeTextColor||e.textColor};
|
|
21
|
+
color: ${e.nodeTextColor||e.textColor};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.node rect,
|
|
25
|
+
.node circle,
|
|
26
|
+
.node ellipse,
|
|
27
|
+
.node polygon,
|
|
28
|
+
.node path {
|
|
29
|
+
fill: ${e.mainBkg};
|
|
30
|
+
stroke: ${e.nodeBorder};
|
|
31
|
+
stroke-width: 1px;
|
|
32
|
+
}
|
|
33
|
+
.flowchart-label text {
|
|
34
|
+
text-anchor: middle;
|
|
35
|
+
}
|
|
36
|
+
// .flowchart-label .text-outer-tspan {
|
|
37
|
+
// text-anchor: middle;
|
|
38
|
+
// }
|
|
39
|
+
// .flowchart-label .text-inner-tspan {
|
|
40
|
+
// text-anchor: start;
|
|
41
|
+
// }
|
|
42
|
+
|
|
43
|
+
.node .label {
|
|
44
|
+
text-align: center;
|
|
45
|
+
}
|
|
46
|
+
.node.clickable {
|
|
47
|
+
cursor: pointer;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.arrowheadPath {
|
|
51
|
+
fill: ${e.arrowheadColor};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.edgePath .path {
|
|
55
|
+
stroke: ${e.lineColor};
|
|
56
|
+
stroke-width: 2.0px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.flowchart-link {
|
|
60
|
+
stroke: ${e.lineColor};
|
|
61
|
+
fill: none;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.edgeLabel {
|
|
65
|
+
background-color: ${e.edgeLabelBackground};
|
|
66
|
+
/*
|
|
67
|
+
* This is for backward compatibility with existing code that didn't
|
|
68
|
+
* add a \`<p>\` around edge labels.
|
|
69
|
+
*
|
|
70
|
+
* TODO: We should probably remove this in a future release.
|
|
71
|
+
*/
|
|
72
|
+
p {
|
|
73
|
+
margin: 0;
|
|
74
|
+
padding: 0;
|
|
75
|
+
display: inline;
|
|
76
|
+
}
|
|
77
|
+
rect {
|
|
78
|
+
opacity: 0.5;
|
|
79
|
+
background-color: ${e.edgeLabelBackground};
|
|
80
|
+
fill: ${e.edgeLabelBackground};
|
|
81
|
+
}
|
|
82
|
+
text-align: center;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* For html labels only */
|
|
86
|
+
.labelBkg {
|
|
87
|
+
background-color: ${e.edgeLabelBackground};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.node .cluster {
|
|
91
|
+
// fill: ${yt(e.mainBkg,.5)};
|
|
92
|
+
fill: ${yt(e.clusterBkg,.5)};
|
|
93
|
+
stroke: ${yt(e.clusterBorder,.2)};
|
|
94
|
+
box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;
|
|
95
|
+
stroke-width: 1px;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.cluster text {
|
|
99
|
+
fill: ${e.titleColor};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.cluster span,p {
|
|
103
|
+
color: ${e.titleColor};
|
|
104
|
+
}
|
|
105
|
+
/* .cluster div {
|
|
106
|
+
color: ${e.titleColor};
|
|
107
|
+
} */
|
|
108
|
+
|
|
109
|
+
div.mermaidTooltip {
|
|
110
|
+
position: absolute;
|
|
111
|
+
text-align: center;
|
|
112
|
+
max-width: 200px;
|
|
113
|
+
padding: 2px;
|
|
114
|
+
font-family: ${e.fontFamily};
|
|
115
|
+
font-size: 12px;
|
|
116
|
+
background: ${e.tertiaryColor};
|
|
117
|
+
border: 1px solid ${e.border2};
|
|
118
|
+
border-radius: 2px;
|
|
119
|
+
pointer-events: none;
|
|
120
|
+
z-index: 100;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.flowchartTitleText {
|
|
124
|
+
text-anchor: middle;
|
|
125
|
+
font-size: 18px;
|
|
126
|
+
fill: ${e.textColor};
|
|
127
|
+
}
|
|
128
|
+
${he()}
|
|
129
|
+
`,"getStyles"),je=Xe,Ve=d((e,t,a,i)=>{t.forEach(l=>{ar[l](e,a,i)})},"insertMarkers"),Ge=d((e,t,a)=>{v.trace("Making markers for ",a),e.append("defs").append("marker").attr("id",a+"_"+t+"-extensionStart").attr("class","marker extension "+t).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"),e.append("defs").append("marker").attr("id",a+"_"+t+"-extensionEnd").attr("class","marker extension "+t).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"),Ze=d((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-compositionStart").attr("class","marker composition "+t).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"),e.append("defs").append("marker").attr("id",a+"_"+t+"-compositionEnd").attr("class","marker composition "+t).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"),qe=d((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).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"),e.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).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"),Je=d((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).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"),e.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).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"),Qe=d((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).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),e.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).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"),$e=d((e,t,a)=>{e.append("marker").attr("id",a+"_"+t+"-pointEnd").attr("class","marker "+t).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"),e.append("marker").attr("id",a+"_"+t+"-pointStart").attr("class","marker "+t).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"),tr=d((e,t,a)=>{e.append("marker").attr("id",a+"_"+t+"-circleEnd").attr("class","marker "+t).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"),e.append("marker").attr("id",a+"_"+t+"-circleStart").attr("class","marker "+t).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"),er=d((e,t,a)=>{e.append("marker").attr("id",a+"_"+t+"-crossEnd").attr("class","marker cross "+t).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"),e.append("marker").attr("id",a+"_"+t+"-crossStart").attr("class","marker cross "+t).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"),rr=d((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-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"),ar={extension:Ge,composition:Ze,aggregation:qe,dependency:Je,lollipop:Qe,point:$e,circle:tr,cross:er,barb:rr},sr=Ve,Ht,Kt,A=((Kt=(Ht=M())==null?void 0:Ht.block)==null?void 0:Kt.padding)??8;function mt(e,t){if(e===0||!Number.isInteger(e))throw new Error("Columns must be an integer !== 0.");if(t<0||!Number.isInteger(t))throw new Error("Position must be a non-negative integer."+t);if(e<0)return{px:t,py:0};if(e===1)return{px:0,py:t};const a=t%e,i=Math.floor(t/e);return{px:a,py:i}}d(mt,"calculateBlockPosition");var ir=d(e=>{let t=0,a=0;for(const i of e.children){const{width:l,height:s,x:r,y:n}=i.size??{width:0,height:0,x:0,y:0};v.debug("getMaxChildSize abc95 child:",i.id,"width:",l,"height:",s,"x:",r,"y:",n,i.type),i.type!=="space"&&(l>t&&(t=l/(i.widthInColumns??1)),s>a&&(a=s))}return{width:t,height:a}},"getMaxChildSize");function dt(e,t,a=0,i=0){var r,n,c,x,h,f,w,b,m,k,L;v.debug("setBlockSizes abc95 (start)",e.id,(r=e==null?void 0:e.size)==null?void 0:r.x,"block width =",e==null?void 0:e.size,"siblingWidth",a),(n=e==null?void 0:e.size)!=null&&n.width||(e.size={width:a,height:i,x:0,y:0});let l=0,s=0;if(((c=e.children)==null?void 0:c.length)>0){for(const E of e.children)dt(E,t);const B=ir(e);l=B.width,s=B.height,v.debug("setBlockSizes abc95 maxWidth of",e.id,":s children is ",l,s);for(const E of e.children)E.size&&(v.debug(`abc95 Setting size of children of ${e.id} id=${E.id} ${l} ${s} ${JSON.stringify(E.size)}`),E.size.width=l*(E.widthInColumns??1)+A*((E.widthInColumns??1)-1),E.size.height=s,E.size.x=0,E.size.y=0,v.debug(`abc95 updating size of ${e.id} children child:${E.id} maxWidth:${l} maxHeight:${s}`));for(const E of e.children)dt(E,t,l,s);const I=e.columns??-1;let N=0;for(const E of e.children)N+=E.widthInColumns??1;let y=e.children.length;I>0&&I<N&&(y=I);const u=Math.ceil(N/y);let p=y*(l+A)+A,S=u*(s+A)+A;if(p<a){v.debug(`Detected to small sibling: abc95 ${e.id} siblingWidth ${a} siblingHeight ${i} width ${p}`),p=a,S=i;const E=(a-y*A-A)/y,o=(i-u*A-A)/u;v.debug("Size indata abc88",e.id,"childWidth",E,"maxWidth",l),v.debug("Size indata abc88",e.id,"childHeight",o,"maxHeight",s),v.debug("Size indata abc88 xSize",y,"padding",A);for(const _ of e.children)_.size&&(_.size.width=E,_.size.height=o,_.size.x=0,_.size.y=0)}if(v.debug(`abc95 (finale calc) ${e.id} xSize ${y} ySize ${u} columns ${I}${e.children.length} width=${Math.max(p,((x=e.size)==null?void 0:x.width)||0)}`),p<(((h=e==null?void 0:e.size)==null?void 0:h.width)||0)){p=((f=e==null?void 0:e.size)==null?void 0:f.width)||0;const E=I>0?Math.min(e.children.length,I):e.children.length;if(E>0){const o=(p-E*A-A)/E;v.debug("abc95 (growing to fit) width",e.id,p,(w=e.size)==null?void 0:w.width,o);for(const _ of e.children)_.size&&(_.size.width=o)}}e.size={width:p,height:S,x:0,y:0}}v.debug("setBlockSizes abc94 (done)",e.id,(b=e==null?void 0:e.size)==null?void 0:b.x,(m=e==null?void 0:e.size)==null?void 0:m.width,(k=e==null?void 0:e.size)==null?void 0:k.y,(L=e==null?void 0:e.size)==null?void 0:L.height)}d(dt,"setBlockSizes");function kt(e,t){var i,l,s,r,n,c,x,h,f,w,b,m,k,L,B,I,N;v.debug(`abc85 layout blocks (=>layoutBlocks) ${e.id} x: ${(i=e==null?void 0:e.size)==null?void 0:i.x} y: ${(l=e==null?void 0:e.size)==null?void 0:l.y} width: ${(s=e==null?void 0:e.size)==null?void 0:s.width}`);const a=e.columns??-1;if(v.debug("layoutBlocks columns abc95",e.id,"=>",a,e),e.children&&e.children.length>0){const y=((n=(r=e==null?void 0:e.children[0])==null?void 0:r.size)==null?void 0:n.width)??0,u=e.children.length*y+(e.children.length-1)*A;v.debug("widthOfChildren 88",u,"posX");const p=new Map;{let g=0;for(const D of e.children){if(!D.size)continue;const{py:T}=mt(a,g),K=p.get(T)??0;D.size.height>K&&p.set(T,D.size.height);let P=(D==null?void 0:D.widthInColumns)??1;a>0&&(P=Math.min(P,a-g%a)),g+=P}}const S=new Map;{let g=0;const D=[...p.keys()].sort((T,K)=>T-K);for(const T of D)S.set(T,g),g+=(p.get(T)??0)+A}let E=0;v.debug("abc91 block?.size?.x",e.id,(c=e==null?void 0:e.size)==null?void 0:c.x);let o=(x=e==null?void 0:e.size)!=null&&x.x?((h=e==null?void 0:e.size)==null?void 0:h.x)+(-((f=e==null?void 0:e.size)==null?void 0:f.width)/2||0):-A,_=0;for(const g of e.children){const D=e;if(!g.size)continue;const{width:T,height:K}=g.size,{px:P,py:Q}=mt(a,E);if(Q!=_&&(_=Q,o=(w=e==null?void 0:e.size)!=null&&w.x?((b=e==null?void 0:e.size)==null?void 0:b.x)+(-((m=e==null?void 0:e.size)==null?void 0:m.width)/2||0):-A,v.debug("New row in layout for block",e.id," and child ",g.id,_)),v.debug(`abc89 layout blocks (child) id: ${g.id} Pos: ${E} (px, py) ${P},${Q} (${(k=D==null?void 0:D.size)==null?void 0:k.x},${(L=D==null?void 0:D.size)==null?void 0:L.y}) parent: ${D.id} width: ${T}${A}`),D.size){const U=T/2;g.size.x=o+A+U,v.debug(`abc91 layout blocks (calc) px, pyid:${g.id} startingPos=X${o} new startingPosX${g.size.x} ${U} padding=${A} width=${T} halfWidth=${U} => x:${g.size.x} y:${g.size.y} ${g.widthInColumns} (width * (child?.w || 1)) / 2 ${T*((g==null?void 0:g.widthInColumns)??1)/2}`),o=g.size.x+U;const et=S.get(Q)??0,rt=p.get(Q)??K;g.size.y=D.size.y-D.size.height/2+et+rt/2+A,v.debug(`abc88 layout blocks (calc) px, pyid:${g.id}startingPosX${o}${A}${U}=>x:${g.size.x}y:${g.size.y}${g.widthInColumns}(width * (child?.w || 1)) / 2${T*((g==null?void 0:g.widthInColumns)??1)/2}`)}g.children&&kt(g);let R=(g==null?void 0:g.widthInColumns)??1;a>0&&(R=Math.min(R,a-E%a)),E+=R,v.debug("abc88 columnsPos",g,E)}}v.debug(`layout blocks (<==layoutBlocks) ${e.id} x: ${(B=e==null?void 0:e.size)==null?void 0:B.x} y: ${(I=e==null?void 0:e.size)==null?void 0:I.y} width: ${(N=e==null?void 0:e.size)==null?void 0:N.width}`)}d(kt,"layoutBlocks");function Dt(e,{minX:t,minY:a,maxX:i,maxY:l}={minX:0,minY:0,maxX:0,maxY:0}){if(e.size&&e.id!=="root"){const{x:s,y:r,width:n,height:c}=e.size;s-n/2<t&&(t=s-n/2),r-c/2<a&&(a=r-c/2),s+n/2>i&&(i=s+n/2),r+c/2>l&&(l=r+c/2)}if(e.children)for(const s of e.children)({minX:t,minY:a,maxX:i,maxY:l}=Dt(s,{minX:t,minY:a,maxX:i,maxY:l}));return{minX:t,minY:a,maxX:i,maxY:l}}d(Dt,"findBounds");function Zt(e){const t=e.getBlock("root");if(!t)return;dt(t,e,0,0),kt(t),v.debug("getBlocks",JSON.stringify(t,null,2));const{minX:a,minY:i,maxX:l,maxY:s}=Dt(t),r=s-i,n=l-a;return{x:a,y:i,width:n,height:r}}d(Zt,"layout");var nr=d(async(e,t,a,i=!1,l=!1)=>{let s=t||"";typeof s=="object"&&(s=s[0]);const r=M(),n=Y(r);return await vt(e,s,{style:a,isTitle:i,useHtmlLabels:n,markdown:!1,isNode:l,width:Number.POSITIVE_INFINITY},r)},"createLabel"),G=nr,lr=d((e,t,a,i,l)=>{t.arrowTypeStart&&At(e,"start",t.arrowTypeStart,a,i,l),t.arrowTypeEnd&&At(e,"end",t.arrowTypeEnd,a,i,l)},"addEdgeMarkers"),cr={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},At=d((e,t,a,i,l,s)=>{const r=cr[a];if(!r){v.warn(`Unknown arrow type: ${a}`);return}const n=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${i}#${l}_${s}-${r}${n})`)},"addEdgeMarker"),Lt={},W={},or=d(async(e,t)=>{const a=M(),i=Y(a),l=e.insert("g").attr("class","edgeLabel"),s=l.insert("g").attr("class","label"),r=t.labelType==="markdown",n=await vt(e,t.label,{style:t.labelStyle,useHtmlLabels:i,addSvgBackground:r,isNode:!1,markdown:r,width:r?void 0:Number.POSITIVE_INFINITY},a);s.node().appendChild(n);let c=n.getBBox(),x=c;if(i){const f=n.children[0],w=C(n);c=f.getBoundingClientRect(),x=c,w.attr("width",c.width),w.attr("height",c.height)}else{const f=C(n).select("text").node();f&&typeof f.getBBox=="function"&&(x=f.getBBox())}s.attr("transform",at(x,i)),Lt[t.id]=l,t.width=c.width,t.height=c.height;let h;if(t.startLabelLeft){const f=e.insert("g").attr("class","edgeTerminals"),w=f.insert("g").attr("class","inner"),b=await G(w,t.startLabelLeft,t.labelStyle);h=b;let m=b.getBBox();if(i){const k=b.children[0],L=C(b);m=k.getBoundingClientRect(),L.attr("width",m.width),L.attr("height",m.height)}w.attr("transform",at(m,i)),W[t.id]||(W[t.id]={}),W[t.id].startLeft=f,it(h,t.startLabelLeft)}if(t.startLabelRight){const f=e.insert("g").attr("class","edgeTerminals"),w=f.insert("g").attr("class","inner"),b=await G(f,t.startLabelRight,t.labelStyle);h=b,w.node().appendChild(b);let m=b.getBBox();if(i){const k=b.children[0],L=C(b);m=k.getBoundingClientRect(),L.attr("width",m.width),L.attr("height",m.height)}w.attr("transform",at(m,i)),W[t.id]||(W[t.id]={}),W[t.id].startRight=f,it(h,t.startLabelRight)}if(t.endLabelLeft){const f=e.insert("g").attr("class","edgeTerminals"),w=f.insert("g").attr("class","inner"),b=await G(w,t.endLabelLeft,t.labelStyle);h=b;let m=b.getBBox();if(i){const k=b.children[0],L=C(b);m=k.getBoundingClientRect(),L.attr("width",m.width),L.attr("height",m.height)}w.attr("transform",at(m,i)),f.node().appendChild(b),W[t.id]||(W[t.id]={}),W[t.id].endLeft=f,it(h,t.endLabelLeft)}if(t.endLabelRight){const f=e.insert("g").attr("class","edgeTerminals"),w=f.insert("g").attr("class","inner"),b=await G(w,t.endLabelRight,t.labelStyle);h=b;let m=b.getBBox();if(i){const k=b.children[0],L=C(b);m=k.getBoundingClientRect(),L.attr("width",m.width),L.attr("height",m.height)}w.attr("transform",at(m,i)),f.node().appendChild(b),W[t.id]||(W[t.id]={}),W[t.id].endRight=f,it(h,t.endLabelRight)}return n},"insertEdgeLabel");function it(e,t){Y(M())&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}d(it,"setTerminalWidth");var hr=d((e,t)=>{v.debug("Moving label abc88 ",e.id,e.label,Lt[e.id],t);let a=t.updatedPath?t.updatedPath:t.originalPath;const i=M(),{subGraphTitleTotalMargin:l}=xe(i);if(e.label){const s=Lt[e.id];let r=e.x,n=e.y;if(a){const c=st.calcLabelPosition(a);v.debug("Moving label "+e.label+" from (",r,",",n,") to (",c.x,",",c.y,") abc88"),t.updatedPath&&(r=c.x,n=c.y)}s.attr("transform",`translate(${r}, ${n+l/2})`)}if(e.startLabelLeft){const s=W[e.id].startLeft;let r=e.x,n=e.y;if(a){const c=st.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",a);r=c.x,n=c.y}s.attr("transform",`translate(${r}, ${n})`)}if(e.startLabelRight){const s=W[e.id].startRight;let r=e.x,n=e.y;if(a){const c=st.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",a);r=c.x,n=c.y}s.attr("transform",`translate(${r}, ${n})`)}if(e.endLabelLeft){const s=W[e.id].endLeft;let r=e.x,n=e.y;if(a){const c=st.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",a);r=c.x,n=c.y}s.attr("transform",`translate(${r}, ${n})`)}if(e.endLabelRight){const s=W[e.id].endRight;let r=e.x,n=e.y;if(a){const c=st.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",a);r=c.x,n=c.y}s.attr("transform",`translate(${r}, ${n})`)}},"positionEdgeLabel"),gr=d((e,t)=>{const a=e.x,i=e.y,l=Math.abs(t.x-a),s=Math.abs(t.y-i),r=e.width/2,n=e.height/2;return l>=r||s>=n},"outsideNode"),dr=d((e,t,a)=>{v.debug(`intersection calc abc89:
|
|
130
|
+
outsidePoint: ${JSON.stringify(t)}
|
|
131
|
+
insidePoint : ${JSON.stringify(a)}
|
|
132
|
+
node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);const i=e.x,l=e.y,s=Math.abs(i-a.x),r=e.width/2;let n=a.x<t.x?r-s:r+s;const c=e.height/2,x=Math.abs(t.y-a.y),h=Math.abs(t.x-a.x);if(Math.abs(l-t.y)*r>Math.abs(i-t.x)*c){let f=a.y<t.y?t.y-c-l:l-c-t.y;n=h*f/x;const w={x:a.x<t.x?a.x+n:a.x-h+n,y:a.y<t.y?a.y+x-f:a.y-x+f};return n===0&&(w.x=t.x,w.y=t.y),h===0&&(w.x=t.x),x===0&&(w.y=t.y),v.debug(`abc89 topp/bott calc, Q ${x}, q ${f}, R ${h}, r ${n}`,w),w}else{a.x<t.x?n=t.x-r-i:n=i-r-t.x;let f=x*n/h,w=a.x<t.x?a.x+h-n:a.x-h+n,b=a.y<t.y?a.y+f:a.y-f;return v.debug(`sides calc abc89, Q ${x}, q ${f}, R ${h}, r ${n}`,{_x:w,_y:b}),n===0&&(w=t.x,b=t.y),h===0&&(w=t.x),x===0&&(b=t.y),{x:w,y:b}}},"intersection"),Mt=d((e,t)=>{v.debug("abc88 cutPathAtIntersect",e,t);let a=[],i=e[0],l=!1;return e.forEach(s=>{if(!gr(t,s)&&!l){const r=dr(t,i,s);let n=!1;a.forEach(c=>{n=n||c.x===r.x&&c.y===r.y}),a.some(c=>c.x===r.x&&c.y===r.y)||a.push(r),l=!0}else i=s,l||a.push(s)}),a},"cutPathAtIntersect"),ur=d(function(e,t,a,i,l,s,r){let n=a.points;v.debug("abc88 InsertEdge: edge=",a,"e=",t);let c=!1;const x=s.node(t.v);var h=s.node(t.w);h!=null&&h.intersect&&(x!=null&&x.intersect)&&(n=n.slice(1,a.points.length-1),n.unshift(x.intersect(n[0])),n.push(h.intersect(n[n.length-1]))),a.toCluster&&(v.debug("to cluster abc88",i[a.toCluster]),n=Mt(a.points,i[a.toCluster].node),c=!0),a.fromCluster&&(v.debug("from cluster abc88",i[a.fromCluster]),n=Mt(n.reverse(),i[a.fromCluster].node).reverse(),c=!0);const f=n.filter(y=>!Number.isNaN(y.y));let w=Ee;a.curve&&(l==="graph"||l==="flowchart")&&(w=a.curve);const{x:b,y:m}=pe(a),k=ve().x(b).y(m).curve(w);let L;switch(a.thickness){case"normal":L="edge-thickness-normal";break;case"thick":L="edge-thickness-thick";break;case"invisible":L="edge-thickness-thick";break;default:L=""}switch(a.pattern){case"solid":L+=" edge-pattern-solid";break;case"dotted":L+=" edge-pattern-dotted";break;case"dashed":L+=" edge-pattern-dashed";break}const B=e.append("path").attr("d",k(f)).attr("id",a.id).attr("class"," "+L+(a.classes?" "+a.classes:"")).attr("style",a.style);let I="";(M().flowchart.arrowMarkerAbsolute||M().state.arrowMarkerAbsolute)&&(I=fe(!0)),lr(B,a,I,r,l);let N={};return c&&(N.updatedPath=n),N.originalPath=a.points,N},"insertEdge"),pr=d(e=>{const t=new Set;for(const a of e)switch(a){case"x":t.add("right"),t.add("left");break;case"y":t.add("up"),t.add("down");break;default:t.add(a);break}return t},"expandAndDeduplicateDirections"),fr=d((e,t,a)=>{const i=pr(e),l=2,s=t.height+2*a.padding,r=s/l,n=t.width+2*r+a.padding,c=a.padding/2;return i.has("right")&&i.has("left")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:r,y:0},{x:n/2,y:2*c},{x:n-r,y:0},{x:n,y:0},{x:n,y:-s/3},{x:n+2*c,y:-s/2},{x:n,y:-2*s/3},{x:n,y:-s},{x:n-r,y:-s},{x:n/2,y:-s-2*c},{x:r,y:-s},{x:0,y:-s},{x:0,y:-2*s/3},{x:-2*c,y:-s/2},{x:0,y:-s/3}]:i.has("right")&&i.has("left")&&i.has("up")?[{x:r,y:0},{x:n-r,y:0},{x:n,y:-s/2},{x:n-r,y:-s},{x:r,y:-s},{x:0,y:-s/2}]:i.has("right")&&i.has("left")&&i.has("down")?[{x:0,y:0},{x:r,y:-s},{x:n-r,y:-s},{x:n,y:0}]:i.has("right")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:n,y:-r},{x:n,y:-s+r},{x:0,y:-s}]:i.has("left")&&i.has("up")&&i.has("down")?[{x:n,y:0},{x:0,y:-r},{x:0,y:-s+r},{x:n,y:-s}]:i.has("right")&&i.has("left")?[{x:r,y:0},{x:r,y:-c},{x:n-r,y:-c},{x:n-r,y:0},{x:n,y:-s/2},{x:n-r,y:-s},{x:n-r,y:-s+c},{x:r,y:-s+c},{x:r,y:-s},{x:0,y:-s/2}]:i.has("up")&&i.has("down")?[{x:n/2,y:0},{x:0,y:-c},{x:r,y:-c},{x:r,y:-s+c},{x:0,y:-s+c},{x:n/2,y:-s},{x:n,y:-s+c},{x:n-r,y:-s+c},{x:n-r,y:-c},{x:n,y:-c}]:i.has("right")&&i.has("up")?[{x:0,y:0},{x:n,y:-r},{x:0,y:-s}]:i.has("right")&&i.has("down")?[{x:0,y:0},{x:n,y:0},{x:0,y:-s}]:i.has("left")&&i.has("up")?[{x:n,y:0},{x:0,y:-r},{x:n,y:-s}]:i.has("left")&&i.has("down")?[{x:n,y:0},{x:0,y:0},{x:n,y:-s}]:i.has("right")?[{x:r,y:-c},{x:r,y:-c},{x:n-r,y:-c},{x:n-r,y:0},{x:n,y:-s/2},{x:n-r,y:-s},{x:n-r,y:-s+c},{x:r,y:-s+c},{x:r,y:-s+c}]:i.has("left")?[{x:r,y:0},{x:r,y:-c},{x:n-r,y:-c},{x:n-r,y:-s+c},{x:r,y:-s+c},{x:r,y:-s},{x:0,y:-s/2}]:i.has("up")?[{x:r,y:-c},{x:r,y:-s+c},{x:0,y:-s+c},{x:n/2,y:-s},{x:n,y:-s+c},{x:n-r,y:-s+c},{x:n-r,y:-c}]:i.has("down")?[{x:n/2,y:0},{x:0,y:-c},{x:r,y:-c},{x:r,y:-s+c},{x:n-r,y:-s+c},{x:n-r,y:-c},{x:n,y:-c}]:[{x:0,y:0}]},"getArrowPoints");function qt(e,t){return e.intersect(t)}d(qt,"intersectNode");var xr=qt;function Jt(e,t,a,i){var l=e.x,s=e.y,r=l-i.x,n=s-i.y,c=Math.sqrt(t*t*n*n+a*a*r*r),x=Math.abs(t*a*r/c);i.x<l&&(x=-x);var h=Math.abs(t*a*n/c);return i.y<s&&(h=-h),{x:l+x,y:s+h}}d(Jt,"intersectEllipse");var Qt=Jt;function $t(e,t,a){return Qt(e,t,t,a)}d($t,"intersectCircle");var yr=$t;function te(e,t,a,i){var l,s,r,n,c,x,h,f,w,b,m,k,L,B,I;if(l=t.y-e.y,r=e.x-t.x,c=t.x*e.y-e.x*t.y,w=l*a.x+r*a.y+c,b=l*i.x+r*i.y+c,!(w!==0&&b!==0&&St(w,b))&&(s=i.y-a.y,n=a.x-i.x,x=i.x*a.y-a.x*i.y,h=s*e.x+n*e.y+x,f=s*t.x+n*t.y+x,!(h!==0&&f!==0&&St(h,f))&&(m=l*n-s*r,m!==0)))return k=Math.abs(m/2),L=r*x-n*c,B=L<0?(L-k)/m:(L+k)/m,L=s*c-l*x,I=L<0?(L-k)/m:(L+k)/m,{x:B,y:I}}d(te,"intersectLine");function St(e,t){return e*t>0}d(St,"sameSign");var br=te,wr=ee;function ee(e,t,a){var i=e.x,l=e.y,s=[],r=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(m){r=Math.min(r,m.x),n=Math.min(n,m.y)}):(r=Math.min(r,t.x),n=Math.min(n,t.y));for(var c=i-e.width/2-r,x=l-e.height/2-n,h=0;h<t.length;h++){var f=t[h],w=t[h<t.length-1?h+1:0],b=br(e,a,{x:c+f.x,y:x+f.y},{x:c+w.x,y:x+w.y});b&&s.push(b)}return s.length?(s.length>1&&s.sort(function(m,k){var L=m.x-a.x,B=m.y-a.y,I=Math.sqrt(L*L+B*B),N=k.x-a.x,y=k.y-a.y,u=Math.sqrt(N*N+y*y);return I<u?-1:I===u?0:1}),s[0]):e}d(ee,"intersectPolygon");var mr=d((e,t)=>{var a=e.x,i=e.y,l=t.x-a,s=t.y-i,r=e.width/2,n=e.height/2,c,x;return Math.abs(s)*r>Math.abs(l)*n?(s<0&&(n=-n),c=s===0?0:n*l/s,x=n):(l<0&&(r=-r),c=r,x=l===0?0:r*s/l),{x:a+c,y:i+x}},"intersectRect"),Lr=mr,O={node:xr,circle:yr,ellipse:Qt,polygon:wr,rect:Lr},F=d(async(e,t,a,i)=>{const l=M();let s;const r=t.useHtmlLabels||Y(l);a?s=a:s="node default";const n=e.insert("g").attr("class",s).attr("id",t.domId||t.id),c=n.insert("g").attr("class","label").attr("style",t.labelStyle);let x;t.labelText===void 0?x="":x=typeof t.labelText=="string"?t.labelText:t.labelText[0];let h;t.labelType==="markdown"?h=vt(c,Bt(Ct(x),l),{useHtmlLabels:r,width:t.width||l.flowchart.wrappingWidth,classes:"markdown-node-label"},l):h=await G(c,Bt(Ct(x),l),t.labelStyle,!1,i);let f=h.getBBox();const w=t.padding/2;if(Y(l)){const b=h.children[0],m=C(h);await we(b,x),f=b.getBoundingClientRect(),m.attr("width",f.width),m.attr("height",f.height)}return r?c.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):c.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&c.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),c.insert("rect",":first-child"),{shapeSvg:n,bbox:f,halfPadding:w,label:c}},"labelHelper"),z=d((e,t)=>{const a=t.node().getBBox();e.width=a.width,e.height=a.height},"updateNodeBounds");function q(e,t,a,i){return e.insert("polygon",":first-child").attr("points",i.map(function(l){return l.x+","+l.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+a/2+")")}d(q,"insertPolygonShape");var Sr=d(async(e,t)=>{t.useHtmlLabels||Y(M())||(t.centerLabel=!0);const{shapeSvg:i,bbox:l,halfPadding:s}=await F(e,t,"node "+t.classes,!0);v.info("Classes = ",t.classes);const r=i.insert("rect",":first-child");return r.attr("rx",t.rx).attr("ry",t.ry).attr("x",-l.width/2-s).attr("y",-l.height/2-s).attr("width",l.width+t.padding).attr("height",l.height+t.padding),z(t,r),t.intersect=function(n){return O.rect(t,n)},i},"note"),vr=Sr,Ft=d(e=>e?" "+e:"","formatClass"),j=d((e,t)=>`${t||"node default"}${Ft(e.classes)} ${Ft(e.class)}`,"getClassesFromNode"),Pt=d(async(e,t)=>{const{shapeSvg:a,bbox:i}=await F(e,t,j(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=l+s,n=[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}];v.info("Question main (Circle)");const c=q(a,r,r,n);return c.attr("style",t.style),z(t,c),t.intersect=function(x){return v.warn("Intersect called"),O.polygon(t,n,x)},a},"question"),Er=d((e,t)=>{const a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=28,l=[{x:0,y:i/2},{x:i/2,y:0},{x:0,y:-i/2},{x:-i/2,y:0}];return a.insert("polygon",":first-child").attr("points",l.map(function(r){return r.x+","+r.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(r){return O.circle(t,14,r)},a},"choice"),_r=d(async(e,t)=>{const{shapeSvg:a,bbox:i}=await F(e,t,j(t,void 0),!0),l=4,s=i.height+t.padding,r=s/l,n=i.width+2*r+t.padding,c=[{x:r,y:0},{x:n-r,y:0},{x:n,y:-s/2},{x:n-r,y:-s},{x:r,y:-s},{x:0,y:-s/2}],x=q(a,n,s,c);return x.attr("style",t.style),z(t,x),t.intersect=function(h){return O.polygon(t,c,h)},a},"hexagon"),kr=d(async(e,t)=>{const{shapeSvg:a,bbox:i}=await F(e,t,void 0,!0),l=2,s=i.height+2*t.padding,r=s/l,n=i.width+2*r+t.padding,c=fr(t.directions,i,t),x=q(a,n,s,c);return x.attr("style",t.style),z(t,x),t.intersect=function(h){return O.polygon(t,c,h)},a},"block_arrow"),Dr=d(async(e,t)=>{const{shapeSvg:a,bbox:i}=await F(e,t,j(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:-s/2,y:0},{x:l,y:0},{x:l,y:-s},{x:-s/2,y:-s},{x:0,y:-s/2}];return q(a,l,s,r).attr("style",t.style),t.width=l+s,t.height=s,t.intersect=function(c){return O.polygon(t,r,c)},a},"rect_left_inv_arrow"),Tr=d(async(e,t)=>{const{shapeSvg:a,bbox:i}=await F(e,t,j(t),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:-2*s/6,y:0},{x:l-s/6,y:0},{x:l+2*s/6,y:-s},{x:s/6,y:-s}],n=q(a,l,s,r);return n.attr("style",t.style),z(t,n),t.intersect=function(c){return O.polygon(t,r,c)},a},"lean_right"),Nr=d(async(e,t)=>{const{shapeSvg:a,bbox:i}=await F(e,t,j(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:2*s/6,y:0},{x:l+s/6,y:0},{x:l-2*s/6,y:-s},{x:-s/6,y:-s}],n=q(a,l,s,r);return n.attr("style",t.style),z(t,n),t.intersect=function(c){return O.polygon(t,r,c)},a},"lean_left"),Ir=d(async(e,t)=>{const{shapeSvg:a,bbox:i}=await F(e,t,j(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:-2*s/6,y:0},{x:l+2*s/6,y:0},{x:l-s/6,y:-s},{x:s/6,y:-s}],n=q(a,l,s,r);return n.attr("style",t.style),z(t,n),t.intersect=function(c){return O.polygon(t,r,c)},a},"trapezoid"),Br=d(async(e,t)=>{const{shapeSvg:a,bbox:i}=await F(e,t,j(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:s/6,y:0},{x:l-s/6,y:0},{x:l+2*s/6,y:-s},{x:-2*s/6,y:-s}],n=q(a,l,s,r);return n.attr("style",t.style),z(t,n),t.intersect=function(c){return O.polygon(t,r,c)},a},"inv_trapezoid"),Cr=d(async(e,t)=>{const{shapeSvg:a,bbox:i}=await F(e,t,j(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:0,y:0},{x:l+s/2,y:0},{x:l,y:-s/2},{x:l+s/2,y:-s},{x:0,y:-s}],n=q(a,l,s,r);return n.attr("style",t.style),z(t,n),t.intersect=function(c){return O.polygon(t,r,c)},a},"rect_right_inv_arrow"),Or=d(async(e,t)=>{const{shapeSvg:a,bbox:i}=await F(e,t,j(t,void 0),!0),l=i.width+t.padding,s=l/2,r=s/(2.5+l/50),n=i.height+r+t.padding,c="M 0,"+r+" a "+s+","+r+" 0,0,0 "+l+" 0 a "+s+","+r+" 0,0,0 "+-l+" 0 l 0,"+n+" a "+s+","+r+" 0,0,0 "+l+" 0 l 0,"+-n,x=a.attr("label-offset-y",r).insert("path",":first-child").attr("style",t.style).attr("d",c).attr("transform","translate("+-l/2+","+-(n/2+r)+")");return z(t,x),t.intersect=function(h){const f=O.rect(t,h),w=f.x-t.x;if(s!=0&&(Math.abs(w)<t.width/2||Math.abs(w)==t.width/2&&Math.abs(f.y-t.y)>t.height/2-r)){let b=r*r*(1-w*w/(s*s));b!=0&&(b=Math.sqrt(b)),b=r-b,h.y-t.y>0&&(b=-b),f.y+=b}return f},a},"cylinder"),Rr=d(async(e,t)=>{const{shapeSvg:a,bbox:i,halfPadding:l}=await F(e,t,"node "+t.classes+" "+t.class,!0),s=a.insert("rect",":first-child"),r=t.positioned?t.width:i.width+t.padding,n=t.positioned?t.height:i.height+t.padding,c=t.positioned?-r/2:-i.width/2-l,x=t.positioned?-n/2:-i.height/2-l;if(s.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",c).attr("y",x).attr("width",r).attr("height",n),t.props){const h=new Set(Object.keys(t.props));t.props.borders&&(ut(s,t.props.borders,r,n),h.delete("borders")),h.forEach(f=>{v.warn(`Unknown node property ${f}`)})}return z(t,s),t.intersect=function(h){return O.rect(t,h)},a},"rect"),zr=d(async(e,t)=>{const{shapeSvg:a,bbox:i,halfPadding:l}=await F(e,t,"node "+t.classes,!0),s=a.insert("rect",":first-child"),r=t.positioned?t.width:i.width+t.padding,n=t.positioned?t.height:i.height+t.padding,c=t.positioned?-r/2:-i.width/2-l,x=t.positioned?-n/2:-i.height/2-l;if(s.attr("class","basic cluster composite label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",c).attr("y",x).attr("width",r).attr("height",n),t.props){const h=new Set(Object.keys(t.props));t.props.borders&&(ut(s,t.props.borders,r,n),h.delete("borders")),h.forEach(f=>{v.warn(`Unknown node property ${f}`)})}return z(t,s),t.intersect=function(h){return O.rect(t,h)},a},"composite"),Ar=d(async(e,t)=>{const{shapeSvg:a}=await F(e,t,"label",!0);v.trace("Classes = ",t.class);const i=a.insert("rect",":first-child"),l=0,s=0;if(i.attr("width",l).attr("height",s),a.attr("class","label edgeLabel"),t.props){const r=new Set(Object.keys(t.props));t.props.borders&&(ut(i,t.props.borders,l,s),r.delete("borders")),r.forEach(n=>{v.warn(`Unknown node property ${n}`)})}return z(t,i),t.intersect=function(r){return O.rect(t,r)},a},"labelRect");function ut(e,t,a,i){const l=[],s=d(n=>{l.push(n,0)},"addBorder"),r=d(n=>{l.push(0,n)},"skipBorder");t.includes("t")?(v.debug("add top border"),s(a)):r(a),t.includes("r")?(v.debug("add right border"),s(i)):r(i),t.includes("b")?(v.debug("add bottom border"),s(a)):r(a),t.includes("l")?(v.debug("add left border"),s(i)):r(i),e.attr("stroke-dasharray",l.join(" "))}d(ut,"applyNodePropertyBorders");var Mr=d(async(e,t)=>{let a;t.classes?a="node "+t.classes:a="node default";const i=e.insert("g").attr("class",a).attr("id",t.domId||t.id),l=i.insert("rect",":first-child"),s=i.insert("line"),r=i.insert("g").attr("class","label"),n=t.labelText.flat?t.labelText.flat():t.labelText;let c="";typeof n=="object"?c=n[0]:c=n,v.info("Label text abc79",c,n,typeof n=="object");const x=await G(r,c,t.labelStyle,!0,!0);let h={width:0,height:0};if(Y(M())){const k=x.children[0],L=C(x);h=k.getBoundingClientRect(),L.attr("width",h.width),L.attr("height",h.height)}v.info("Text 2",n);const f=n.slice(1,n.length);let w=x.getBBox();const b=await G(r,f.join?f.join("<br/>"):f,t.labelStyle,!0,!0);if(Y(M())){const k=b.children[0],L=C(b);h=k.getBoundingClientRect(),L.attr("width",h.width),L.attr("height",h.height)}const m=t.padding/2;return C(b).attr("transform","translate( "+(h.width>w.width?0:(w.width-h.width)/2)+", "+(w.height+m+5)+")"),C(x).attr("transform","translate( "+(h.width<w.width?0:-(w.width-h.width)/2)+", 0)"),h=r.node().getBBox(),r.attr("transform","translate("+-h.width/2+", "+(-h.height/2-m+3)+")"),l.attr("class","outer title-state").attr("x",-h.width/2-m).attr("y",-h.height/2-m).attr("width",h.width+t.padding).attr("height",h.height+t.padding),s.attr("class","divider").attr("x1",-h.width/2-m).attr("x2",h.width/2+m).attr("y1",-h.height/2-m+w.height+m).attr("y2",-h.height/2-m+w.height+m),z(t,l),t.intersect=function(k){return O.rect(t,k)},i},"rectWithTitle"),Fr=d(async(e,t)=>{const{shapeSvg:a,bbox:i}=await F(e,t,j(t,void 0),!0),l=i.height+t.padding,s=i.width+l/4+t.padding,r=a.insert("rect",":first-child").attr("style",t.style).attr("rx",l/2).attr("ry",l/2).attr("x",-s/2).attr("y",-l/2).attr("width",s).attr("height",l);return z(t,r),t.intersect=function(n){return O.rect(t,n)},a},"stadium"),Pr=d(async(e,t)=>{const{shapeSvg:a,bbox:i,halfPadding:l}=await F(e,t,j(t,void 0),!0),s=a.insert("circle",":first-child");return s.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",i.width/2+l).attr("width",i.width+t.padding).attr("height",i.height+t.padding),v.info("Circle main"),z(t,s),t.intersect=function(r){return v.info("Circle intersect",t,i.width/2+l,r),O.circle(t,i.width/2+l,r)},a},"circle"),Wr=d(async(e,t)=>{const{shapeSvg:a,bbox:i,halfPadding:l}=await F(e,t,j(t,void 0),!0),s=5,r=a.insert("g",":first-child"),n=r.insert("circle"),c=r.insert("circle");return r.attr("class",t.class),n.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",i.width/2+l+s).attr("width",i.width+t.padding+s*2).attr("height",i.height+t.padding+s*2),c.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",i.width/2+l).attr("width",i.width+t.padding).attr("height",i.height+t.padding),v.info("DoubleCircle main"),z(t,n),t.intersect=function(x){return v.info("DoubleCircle intersect",t,i.width/2+l+s,x),O.circle(t,i.width/2+l+s,x)},a},"doublecircle"),Yr=d(async(e,t)=>{const{shapeSvg:a,bbox:i}=await F(e,t,j(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:0,y:0},{x:l,y:0},{x:l,y:-s},{x:0,y:-s},{x:0,y:0},{x:-8,y:0},{x:l+8,y:0},{x:l+8,y:-s},{x:-8,y:-s},{x:-8,y:0}],n=q(a,l,s,r);return n.attr("style",t.style),z(t,n),t.intersect=function(c){return O.polygon(t,r,c)},a},"subroutine"),Hr=d((e,t)=>{const a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=a.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),z(t,i),t.intersect=function(l){return O.circle(t,7,l)},a},"start"),Wt=d((e,t,a)=>{const i=e.insert("g").attr("class","node default").attr("id",t.domId||t.id);let l=70,s=10;a==="LR"&&(l=10,s=70);const r=i.append("rect").attr("x",-1*l/2).attr("y",-1*s/2).attr("width",l).attr("height",s).attr("class","fork-join");return z(t,r),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(n){return O.rect(t,n)},i},"forkJoin"),Kr=d((e,t)=>{const a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=a.insert("circle",":first-child"),l=a.insert("circle",":first-child");return l.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),i.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),z(t,l),t.intersect=function(s){return O.circle(t,7,s)},a},"end"),Ur=d(async(e,t)=>{var E;const a=t.padding/2,i=4,l=8;let s;t.classes?s="node "+t.classes:s="node default";const r=e.insert("g").attr("class",s).attr("id",t.domId||t.id),n=r.insert("rect",":first-child"),c=r.insert("line"),x=r.insert("line");let h=0,f=i;const w=r.insert("g").attr("class","label");let b=0;const m=(E=t.classData.annotations)==null?void 0:E[0],k=t.classData.annotations[0]?"«"+t.classData.annotations[0]+"»":"",L=await G(w,k,t.labelStyle,!0,!0);let B=L.getBBox();if(Y(M())){const o=L.children[0],_=C(L);B=o.getBoundingClientRect(),_.attr("width",B.width),_.attr("height",B.height)}t.classData.annotations[0]&&(f+=B.height+i,h+=B.width);let I=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(Y(M())?I+="<"+t.classData.type+">":I+="<"+t.classData.type+">");const N=await G(w,I,t.labelStyle,!0,!0);C(N).attr("class","classTitle");let y=N.getBBox();if(Y(M())){const o=N.children[0],_=C(N);y=o.getBoundingClientRect(),_.attr("width",y.width),_.attr("height",y.height)}f+=y.height+i,y.width>h&&(h=y.width);const u=[];t.classData.members.forEach(async o=>{const _=o.getDisplayDetails();let g=_.displayText;Y(M())&&(g=g.replace(/</g,"<").replace(/>/g,">"));const D=await G(w,g,_.cssStyle?_.cssStyle:t.labelStyle,!0,!0);let T=D.getBBox();if(Y(M())){const K=D.children[0],P=C(D);T=K.getBoundingClientRect(),P.attr("width",T.width),P.attr("height",T.height)}T.width>h&&(h=T.width),f+=T.height+i,u.push(D)}),f+=l;const p=[];if(t.classData.methods.forEach(async o=>{const _=o.getDisplayDetails();let g=_.displayText;Y(M())&&(g=g.replace(/</g,"<").replace(/>/g,">"));const D=await G(w,g,_.cssStyle?_.cssStyle:t.labelStyle,!0,!0);let T=D.getBBox();if(Y(M())){const K=D.children[0],P=C(D);T=K.getBoundingClientRect(),P.attr("width",T.width),P.attr("height",T.height)}T.width>h&&(h=T.width),f+=T.height+i,p.push(D)}),f+=l,m){let o=(h-B.width)/2;C(L).attr("transform","translate( "+(-1*h/2+o)+", "+-1*f/2+")"),b=B.height+i}let S=(h-y.width)/2;return C(N).attr("transform","translate( "+(-1*h/2+S)+", "+(-1*f/2+b)+")"),b+=y.height+i,c.attr("class","divider").attr("x1",-h/2-a).attr("x2",h/2+a).attr("y1",-f/2-a+l+b).attr("y2",-f/2-a+l+b),b+=l,u.forEach(o=>{C(o).attr("transform","translate( "+-h/2+", "+(-1*f/2+b+l/2)+")");const _=o==null?void 0:o.getBBox();b+=((_==null?void 0:_.height)??0)+i}),b+=l,x.attr("class","divider").attr("x1",-h/2-a).attr("x2",h/2+a).attr("y1",-f/2-a+l+b).attr("y2",-f/2-a+l+b),b+=l,p.forEach(o=>{C(o).attr("transform","translate( "+-h/2+", "+(-1*f/2+b)+")");const _=o==null?void 0:o.getBBox();b+=((_==null?void 0:_.height)??0)+i}),n.attr("style",t.style).attr("class","outer title-state").attr("x",-h/2-a).attr("y",-(f/2)-a).attr("width",h+t.padding).attr("height",f+t.padding),z(t,n),t.intersect=function(o){return O.rect(t,o)},r},"class_box"),Yt={rhombus:Pt,composite:zr,question:Pt,rect:Rr,labelRect:Ar,rectWithTitle:Mr,choice:Er,circle:Pr,doublecircle:Wr,stadium:Fr,hexagon:_r,block_arrow:kr,rect_left_inv_arrow:Dr,lean_right:Tr,lean_left:Nr,trapezoid:Ir,inv_trapezoid:Br,rect_right_inv_arrow:Cr,cylinder:Or,start:Hr,end:Kr,note:vr,subroutine:Yr,fork:Wt,join:Wt,class_box:Ur},ht={},re=d(async(e,t,a)=>{let i,l;if(t.link){let s;M().securityLevel==="sandbox"?s="_top":t.linkTarget&&(s=t.linkTarget||"_blank"),i=e.insert("svg:a").attr("xlink:href",t.link).attr("target",s),l=await Yt[t.shape](i,t,a)}else l=await Yt[t.shape](e,t,a),i=l;return t.tooltip&&l.attr("title",t.tooltip),t.class&&l.attr("class","node default "+t.class),ht[t.id]=i,t.haveCallback&&ht[t.id].attr("class",ht[t.id].attr("class")+" clickable"),i},"insertNode"),Xr=d(e=>{const t=ht[e.id];v.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");const a=8,i=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+i-e.width/2)+", "+(e.y-e.height/2-a)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),i},"positionNode");function Tt(e,t,a=!1){var w,b,m;const i=e;let l="default";(((w=i==null?void 0:i.classes)==null?void 0:w.length)||0)>0&&(l=((i==null?void 0:i.classes)??[]).join(" ")),l=l+" flowchart-label";let s=0,r="",n;switch(i.type){case"round":s=5,r="rect";break;case"composite":s=0,r="composite",n=0;break;case"square":r="rect";break;case"diamond":r="question";break;case"hexagon":r="hexagon";break;case"block_arrow":r="block_arrow";break;case"odd":r="rect_left_inv_arrow";break;case"lean_right":r="lean_right";break;case"lean_left":r="lean_left";break;case"trapezoid":r="trapezoid";break;case"inv_trapezoid":r="inv_trapezoid";break;case"rect_left_inv_arrow":r="rect_left_inv_arrow";break;case"circle":r="circle";break;case"ellipse":r="ellipse";break;case"stadium":r="stadium";break;case"subroutine":r="subroutine";break;case"cylinder":r="cylinder";break;case"group":r="rect";break;case"doublecircle":r="doublecircle";break;default:r="rect"}const c=be((i==null?void 0:i.styles)??[]),x=i.label,h=i.size??{width:0,height:0,x:0,y:0};return{labelStyle:c.labelStyle,shape:r,labelText:x,rx:s,ry:s,class:l,style:c.style,id:i.id,directions:i.directions,width:h.width,height:h.height,x:h.x,y:h.y,positioned:a,intersect:void 0,type:i.type,padding:n??((m=(b=lt())==null?void 0:b.block)==null?void 0:m.padding)??0}}d(Tt,"getNodeFromBlock");async function ae(e,t,a){const i=Tt(t,a,!1);if(i.type==="group")return;const l=lt(),s=await re(e,i,{config:l}),r=s.node().getBBox(),n=a.getBlock(i.id);n.size={width:r.width,height:r.height,x:0,y:0,node:s},a.setBlock(n),s.remove()}d(ae,"calculateBlockSize");async function se(e,t,a){const i=Tt(t,a,!0);if(a.getBlock(i.id).type!=="space"){const s=lt();await re(e,i,{config:s}),t.intersect=i==null?void 0:i.intersect,Xr(i)}}d(se,"insertBlockPositioned");async function pt(e,t,a,i){for(const l of t)await i(e,l,a),l.children&&await pt(e,l.children,a,i)}d(pt,"performOperations");async function ie(e,t,a){await pt(e,t,a,ae)}d(ie,"calculateBlockSizes");async function ne(e,t,a){await pt(e,t,a,se)}d(ne,"insertBlocks");async function le(e,t,a,i,l){const s=new Le({multigraph:!0,compound:!0});s.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(const r of a)r.size&&s.setNode(r.id,{width:r.size.width,height:r.size.height,intersect:r.intersect});for(const r of t)if(r.start&&r.end){const n=i.getBlock(r.start),c=i.getBlock(r.end);if(n!=null&&n.size&&(c!=null&&c.size)){const x=n.size,h=c.size,f=[{x:x.x,y:x.y},{x:x.x+(h.x-x.x)/2,y:x.y+(h.y-x.y)/2},{x:h.x,y:h.y}];ur(e,{v:r.start,w:r.end,name:r.id},{...r,arrowTypeEnd:r.arrowTypeEnd,arrowTypeStart:r.arrowTypeStart,points:f,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",s,l),r.label&&(await or(e,{...r,label:r.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:r.arrowTypeEnd,arrowTypeStart:r.arrowTypeStart,points:f,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),hr({...r,x:f[1].x,y:f[1].y},{originalPath:f}))}}}d(le,"insertEdges");var jr=d(function(e,t){return t.db.getClasses()},"getClasses"),Vr=d(async function(e,t,a,i){const{securityLevel:l,block:s}=lt(),r=i.db;let n;l==="sandbox"&&(n=C("#i"+t));const c=l==="sandbox"?C(n.nodes()[0].contentDocument.body):C("body"),x=l==="sandbox"?c.select(`[id="${t}"]`):C(`[id="${t}"]`);sr(x,["point","circle","cross"],i.type,t);const f=r.getBlocks(),w=r.getBlocksFlat(),b=r.getEdges(),m=x.insert("g").attr("class","block");await ie(m,f,r);const k=Zt(r);if(await ne(m,f,r),await le(m,b,w,r,t),k){const L=k,B=Math.max(1,Math.round(.125*(L.width/L.height))),I=L.height+B+10,N=L.width+10,{useMaxWidth:y}=s;ge(x,I,N,!!y),v.debug("Here Bounds",k,L),x.attr("viewBox",`${L.x-5} ${L.y-5} ${L.width+10} ${L.height+10}`)}},"draw"),Gr={draw:Vr,getClasses:jr},sa={parser:_e,db:Ue,renderer:Gr,styles:je};export{sa as diagram};
|
|
@@ -179,6 +179,10 @@ class PrefabApp(BaseModel):
|
|
|
179
179
|
default=None,
|
|
180
180
|
description="Custom JS action handlers: name → function expression",
|
|
181
181
|
)
|
|
182
|
+
on_mount: Any | None = Field(
|
|
183
|
+
default=None,
|
|
184
|
+
description="Action(s) to execute when the app mounts",
|
|
185
|
+
)
|
|
182
186
|
|
|
183
187
|
_context_root: Any = PrivateAttr(default=None)
|
|
184
188
|
|
|
@@ -259,7 +263,7 @@ class PrefabApp(BaseModel):
|
|
|
259
263
|
|
|
260
264
|
if isinstance(self.view, dict):
|
|
261
265
|
# Pre-serialized dict — wrap in a serialized Div
|
|
262
|
-
wrapper = Div(css_class=cls)
|
|
266
|
+
wrapper = Div(css_class=cls, on_mount=self.on_mount)
|
|
263
267
|
wrapper_json = wrapper.to_json()
|
|
264
268
|
wrapper_json["children"] = [self.view]
|
|
265
269
|
return wrapper_json
|
|
@@ -271,10 +275,14 @@ class PrefabApp(BaseModel):
|
|
|
271
275
|
):
|
|
272
276
|
# Bare Div from context manager — stamp the class directly
|
|
273
277
|
self.view.css_class = cls
|
|
278
|
+
if self.on_mount is not None:
|
|
279
|
+
self.view.on_mount = self.on_mount
|
|
274
280
|
return self.view.to_json()
|
|
275
281
|
|
|
276
282
|
# Wrap the user's view in a new Div
|
|
277
|
-
return Div(
|
|
283
|
+
return Div(
|
|
284
|
+
children=[self.view], css_class=cls, on_mount=self.on_mount
|
|
285
|
+
).to_json()
|
|
278
286
|
|
|
279
287
|
def to_json(
|
|
280
288
|
self,
|
|
@@ -1182,6 +1190,7 @@ from prefab_ui.components.image import Image
|
|
|
1182
1190
|
from prefab_ui.components.input import Input
|
|
1183
1191
|
from prefab_ui.components.label import Label
|
|
1184
1192
|
from prefab_ui.components.markdown import Markdown
|
|
1193
|
+
from prefab_ui.components.mermaid import Mermaid
|
|
1185
1194
|
from prefab_ui.components.metric import Metric
|
|
1186
1195
|
from prefab_ui.components.pages import Page, Pages
|
|
1187
1196
|
from prefab_ui.components.popover import Popover
|
|
@@ -1305,6 +1314,7 @@ __all__ = [
|
|
|
1305
1314
|
"Link",
|
|
1306
1315
|
"Loader",
|
|
1307
1316
|
"Markdown",
|
|
1317
|
+
"Mermaid",
|
|
1308
1318
|
"Metric",
|
|
1309
1319
|
"Muted",
|
|
1310
1320
|
"P",
|
|
@@ -2003,6 +2013,12 @@ class Component(BaseModel):
|
|
|
2003
2013
|
description="CSS/Tailwind classes for styling. Accepts a Responsive() for breakpoint-aware classes.",
|
|
2004
2014
|
)
|
|
2005
2015
|
|
|
2016
|
+
on_mount: Any | None = Field(
|
|
2017
|
+
default=None,
|
|
2018
|
+
alias="onMount",
|
|
2019
|
+
description="Action(s) to execute when this component mounts.",
|
|
2020
|
+
)
|
|
2021
|
+
|
|
2006
2022
|
def __init__(self, /, **kwargs: Any) -> None:
|
|
2007
2023
|
parent = kwargs.pop("parent", None)
|
|
2008
2024
|
if parent is not None:
|
|
@@ -2742,11 +2758,14 @@ class BarChart(Component):
|
|
|
2742
2758
|
default=4, alias="barRadius", description="Corner radius on bars"
|
|
2743
2759
|
)
|
|
2744
2760
|
show_legend: bool = Field(
|
|
2745
|
-
default=
|
|
2761
|
+
default=True, alias="showLegend", description="Show legend"
|
|
2746
2762
|
)
|
|
2747
2763
|
show_tooltip: bool = Field(
|
|
2748
2764
|
default=True, alias="showTooltip", description="Show tooltip on hover"
|
|
2749
2765
|
)
|
|
2766
|
+
animate: bool = Field(
|
|
2767
|
+
default=True, description="Animate transitions when data changes"
|
|
2768
|
+
)
|
|
2750
2769
|
show_grid: bool = Field(
|
|
2751
2770
|
default=True, alias="showGrid", description="Show cartesian grid"
|
|
2752
2771
|
)
|
|
@@ -2808,11 +2827,14 @@ class LineChart(Component):
|
|
|
2808
2827
|
default=False, alias="showDots", description="Show dots at data points"
|
|
2809
2828
|
)
|
|
2810
2829
|
show_legend: bool = Field(
|
|
2811
|
-
default=
|
|
2830
|
+
default=True, alias="showLegend", description="Show legend"
|
|
2812
2831
|
)
|
|
2813
2832
|
show_tooltip: bool = Field(
|
|
2814
2833
|
default=True, alias="showTooltip", description="Show tooltip on hover"
|
|
2815
2834
|
)
|
|
2835
|
+
animate: bool = Field(
|
|
2836
|
+
default=True, description="Animate transitions when data changes"
|
|
2837
|
+
)
|
|
2816
2838
|
show_grid: bool = Field(
|
|
2817
2839
|
default=True, alias="showGrid", description="Show cartesian grid"
|
|
2818
2840
|
)
|
|
@@ -2877,11 +2899,14 @@ class AreaChart(Component):
|
|
|
2877
2899
|
default=False, alias="showDots", description="Show dots at data points"
|
|
2878
2900
|
)
|
|
2879
2901
|
show_legend: bool = Field(
|
|
2880
|
-
default=
|
|
2902
|
+
default=True, alias="showLegend", description="Show legend"
|
|
2881
2903
|
)
|
|
2882
2904
|
show_tooltip: bool = Field(
|
|
2883
2905
|
default=True, alias="showTooltip", description="Show tooltip on hover"
|
|
2884
2906
|
)
|
|
2907
|
+
animate: bool = Field(
|
|
2908
|
+
default=True, description="Animate transitions when data changes"
|
|
2909
|
+
)
|
|
2885
2910
|
show_grid: bool = Field(
|
|
2886
2911
|
default=True, alias="showGrid", description="Show cartesian grid"
|
|
2887
2912
|
)
|
|
@@ -2941,11 +2966,14 @@ class PieChart(Component):
|
|
|
2941
2966
|
default=0, alias="paddingAngle", description="Gap between slices in degrees"
|
|
2942
2967
|
)
|
|
2943
2968
|
show_legend: bool = Field(
|
|
2944
|
-
default=
|
|
2969
|
+
default=True, alias="showLegend", description="Show legend"
|
|
2945
2970
|
)
|
|
2946
2971
|
show_tooltip: bool = Field(
|
|
2947
2972
|
default=True, alias="showTooltip", description="Show tooltip on hover"
|
|
2948
2973
|
)
|
|
2974
|
+
animate: bool = Field(
|
|
2975
|
+
default=True, description="Animate transitions when data changes"
|
|
2976
|
+
)
|
|
2949
2977
|
|
|
2950
2978
|
|
|
2951
2979
|
class ScatterChart(Component):
|
|
@@ -2995,11 +3023,14 @@ class ScatterChart(Component):
|
|
|
2995
3023
|
)
|
|
2996
3024
|
height: int = Field(default=300, description="Chart height in pixels")
|
|
2997
3025
|
show_legend: bool = Field(
|
|
2998
|
-
default=
|
|
3026
|
+
default=True, alias="showLegend", description="Show legend"
|
|
2999
3027
|
)
|
|
3000
3028
|
show_tooltip: bool = Field(
|
|
3001
3029
|
default=True, alias="showTooltip", description="Show tooltip on hover"
|
|
3002
3030
|
)
|
|
3031
|
+
animate: bool = Field(
|
|
3032
|
+
default=True, description="Animate transitions when data changes"
|
|
3033
|
+
)
|
|
3003
3034
|
show_grid: bool = Field(
|
|
3004
3035
|
default=True, alias="showGrid", description="Show cartesian grid"
|
|
3005
3036
|
)
|
|
@@ -3049,11 +3080,14 @@ class RadarChart(Component):
|
|
|
3049
3080
|
default=False, alias="showDots", description="Show dots at vertices"
|
|
3050
3081
|
)
|
|
3051
3082
|
show_legend: bool = Field(
|
|
3052
|
-
default=
|
|
3083
|
+
default=True, alias="showLegend", description="Show legend"
|
|
3053
3084
|
)
|
|
3054
3085
|
show_tooltip: bool = Field(
|
|
3055
3086
|
default=True, alias="showTooltip", description="Show tooltip on hover"
|
|
3056
3087
|
)
|
|
3088
|
+
animate: bool = Field(
|
|
3089
|
+
default=True, description="Animate transitions when data changes"
|
|
3090
|
+
)
|
|
3057
3091
|
show_grid: bool = Field(
|
|
3058
3092
|
default=True, alias="showGrid", description="Show polar grid"
|
|
3059
3093
|
)
|
|
@@ -3104,11 +3138,14 @@ class RadialChart(Component):
|
|
|
3104
3138
|
default=0, alias="endAngle", description="Arc end angle in degrees"
|
|
3105
3139
|
)
|
|
3106
3140
|
show_legend: bool = Field(
|
|
3107
|
-
default=
|
|
3141
|
+
default=True, alias="showLegend", description="Show legend"
|
|
3108
3142
|
)
|
|
3109
3143
|
show_tooltip: bool = Field(
|
|
3110
3144
|
default=True, alias="showTooltip", description="Show tooltip on hover"
|
|
3111
3145
|
)
|
|
3146
|
+
animate: bool = Field(
|
|
3147
|
+
default=True, description="Animate transitions when data changes"
|
|
3148
|
+
)
|
|
3112
3149
|
|
|
3113
3150
|
|
|
3114
3151
|
SparklineVariant = (
|
|
@@ -5640,8 +5677,11 @@ class Histogram(Component):
|
|
|
5640
5677
|
show_tooltip: bool = Field(
|
|
5641
5678
|
default=True, alias="showTooltip", description="Show tooltip on hover"
|
|
5642
5679
|
)
|
|
5680
|
+
animate: bool = Field(
|
|
5681
|
+
default=True, description="Animate transitions when data changes"
|
|
5682
|
+
)
|
|
5643
5683
|
show_legend: bool = Field(
|
|
5644
|
-
default=
|
|
5684
|
+
default=True, alias="showLegend", description="Show legend"
|
|
5645
5685
|
)
|
|
5646
5686
|
show_grid: bool = Field(
|
|
5647
5687
|
default=True, alias="showGrid", description="Show cartesian grid"
|
|
@@ -6108,6 +6148,53 @@ class Markdown(Component):
|
|
|
6108
6148
|
if content is not None:
|
|
6109
6149
|
kwargs["content"] = content
|
|
6110
6150
|
super().__init__(**kwargs)
|
|
6151
|
+
`,"prefab_ui/components/mermaid.py":`"""Mermaid diagram component."""
|
|
6152
|
+
|
|
6153
|
+
from __future__ import annotations
|
|
6154
|
+
|
|
6155
|
+
from typing import Any, Literal, overload
|
|
6156
|
+
|
|
6157
|
+
from pydantic import Field
|
|
6158
|
+
|
|
6159
|
+
from prefab_ui.components.base import Component
|
|
6160
|
+
from prefab_ui.rx import RxStr
|
|
6161
|
+
|
|
6162
|
+
|
|
6163
|
+
class Mermaid(Component):
|
|
6164
|
+
"""Render a Mermaid diagram from a text definition.
|
|
6165
|
+
|
|
6166
|
+
Supports flowcharts, sequence diagrams, state machines, ER diagrams,
|
|
6167
|
+
and all other Mermaid diagram types.
|
|
6168
|
+
|
|
6169
|
+
Args:
|
|
6170
|
+
chart: Mermaid diagram definition string.
|
|
6171
|
+
|
|
6172
|
+
**Example:**
|
|
6173
|
+
|
|
6174
|
+
\`\`\`python
|
|
6175
|
+
Mermaid('''
|
|
6176
|
+
graph LR
|
|
6177
|
+
A[Start] --> B{Decision}
|
|
6178
|
+
B -->|Yes| C[OK]
|
|
6179
|
+
B -->|No| D[Cancel]
|
|
6180
|
+
''')
|
|
6181
|
+
\`\`\`
|
|
6182
|
+
"""
|
|
6183
|
+
|
|
6184
|
+
type: Literal["Mermaid"] = "Mermaid"
|
|
6185
|
+
chart: RxStr = Field(description="Mermaid diagram definition")
|
|
6186
|
+
|
|
6187
|
+
@overload
|
|
6188
|
+
def __init__(self, chart: str, /, **kwargs: Any) -> None: ...
|
|
6189
|
+
|
|
6190
|
+
@overload
|
|
6191
|
+
def __init__(self, *, chart: str, **kwargs: Any) -> None: ...
|
|
6192
|
+
|
|
6193
|
+
def __init__(self, chart: str | None = None, **kwargs: Any) -> None:
|
|
6194
|
+
"""Accept chart as positional or keyword argument."""
|
|
6195
|
+
if chart is not None:
|
|
6196
|
+
kwargs["chart"] = chart
|
|
6197
|
+
super().__init__(**kwargs)
|
|
6111
6198
|
`,"prefab_ui/components/metric.py":`"""Metric/KPI card component for displaying headline numbers with optional deltas.
|
|
6112
6199
|
|
|
6113
6200
|
**Example:**
|
|
@@ -8824,7 +8911,9 @@ class SetInterval(Action):
|
|
|
8824
8911
|
"""
|
|
8825
8912
|
|
|
8826
8913
|
action: Literal["setInterval"] = "setInterval"
|
|
8827
|
-
duration: int = Field(
|
|
8914
|
+
duration: int | RxStr = Field(
|
|
8915
|
+
description="Interval between ticks, in milliseconds. Accepts Rx for reactive values.",
|
|
8916
|
+
)
|
|
8828
8917
|
while_: RxStr | None = Field(
|
|
8829
8918
|
default=None,
|
|
8830
8919
|
alias="while",
|
|
@@ -9261,6 +9350,10 @@ def _format_scalar(value: object) -> str:
|
|
|
9261
9350
|
"""Format a non-Rx Python value as an expression token.
|
|
9262
9351
|
|
|
9263
9352
|
Strings → single-quoted, numbers → bare, bools → true/false, None → null.
|
|
9353
|
+
|
|
9354
|
+
Strings containing \`\`{{ expr }}\`\` templates (e.g. from f-strings like
|
|
9355
|
+
\`\`f"{STATE.x}%"\`\`) are expanded into concatenation expressions so
|
|
9356
|
+
\`\`"{{ stats.cpu }}%"\`\` becomes \`\`stats.cpu + '%'\`\`.
|
|
9264
9357
|
"""
|
|
9265
9358
|
if isinstance(value, bool):
|
|
9266
9359
|
return "true" if value else "false"
|
|
@@ -9269,10 +9362,39 @@ def _format_scalar(value: object) -> str:
|
|
|
9269
9362
|
if value is None:
|
|
9270
9363
|
return "null"
|
|
9271
9364
|
if isinstance(value, str):
|
|
9365
|
+
if "{{" in value:
|
|
9366
|
+
return _expand_template_string(value)
|
|
9272
9367
|
return f"'{value}'"
|
|
9273
9368
|
return str(value)
|
|
9274
9369
|
|
|
9275
9370
|
|
|
9371
|
+
def _expand_template_string(s: str) -> str:
|
|
9372
|
+
"""Convert a string with \`\`{{ }}\`\` markers into a concatenation expression.
|
|
9373
|
+
|
|
9374
|
+
\`\`"{{ x }}%"\`\` → \`\`x + '%'\`\`
|
|
9375
|
+
\`\`"Hello {{ name }}, you have {{ count }} items"\`\`
|
|
9376
|
+
→ \`\`'Hello ' + name + ', you have ' + count + ' items'\`\`
|
|
9377
|
+
"""
|
|
9378
|
+
import re
|
|
9379
|
+
|
|
9380
|
+
parts: list[str] = []
|
|
9381
|
+
last_end = 0
|
|
9382
|
+
for m in re.finditer(r"\\{\\{\\s*(.*?)\\s*\\}\\}", s):
|
|
9383
|
+
# Text before this template
|
|
9384
|
+
before = s[last_end : m.start()]
|
|
9385
|
+
if before:
|
|
9386
|
+
parts.append(f"'{before}'")
|
|
9387
|
+
# The expression inside {{ }}
|
|
9388
|
+
parts.append(m.group(1))
|
|
9389
|
+
last_end = m.end()
|
|
9390
|
+
# Text after the last template
|
|
9391
|
+
after = s[last_end:]
|
|
9392
|
+
if after:
|
|
9393
|
+
parts.append(f"'{after}'")
|
|
9394
|
+
|
|
9395
|
+
return " + ".join(parts) if parts else "''"
|
|
9396
|
+
|
|
9397
|
+
|
|
9276
9398
|
def _resolve_operand(value: object, min_prec: int, *, strict: bool = False) -> str:
|
|
9277
9399
|
"""Resolve a child operand (Rx or scalar) for use in an expression.
|
|
9278
9400
|
|
|
@@ -9557,7 +9679,7 @@ class Rx:
|
|
|
9557
9679
|
# ── Ternary ──────────────────────────────────────────────────────
|
|
9558
9680
|
|
|
9559
9681
|
def then(self, if_true: object, if_false: object) -> Rx:
|
|
9560
|
-
"""Ternary conditional:
|
|
9682
|
+
"""Ternary conditional: \`\`condition ? if_true : if_false\`\`."""
|
|
9561
9683
|
return Rx(_Ternary(self, if_true, if_false), _PREC_TERNARY)
|
|
9562
9684
|
|
|
9563
9685
|
# ── Pipes ────────────────────────────────────────────────────────
|