@markee/diagrams 0.1.0 → 0.3.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.
Files changed (108) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +39 -0
  3. package/_assets/_head/assets/{_api-BbxJBqLU.js → _api-m6XYvA-0.js} +1 -1
  4. package/_assets/_head/assets/_architecture-PBZL5I3N-xnhut1Pa.js +1 -0
  5. package/_assets/_head/assets/{_architectureDiagram-2XIMDMQ5-B6NKHtRx.js → _architectureDiagram-2XIMDMQ5-CmZPhLbM.js} +1 -1
  6. package/_assets/_head/assets/{_blockDiagram-WCTKOSBZ-Dqnb6UUE.js → _blockDiagram-WCTKOSBZ-C3Asu6Kw.js} +1 -1
  7. package/_assets/_head/assets/{_c4Diagram-IC4MRINW-BZcM5On4.js → _c4Diagram-IC4MRINW-BK3_s_bR.js} +1 -1
  8. package/_assets/_head/assets/_channel-DT33mbtw.js +1 -0
  9. package/_assets/_head/assets/{_chunk-4BX2VUAB-zqTDmcBB.js → _chunk-4BX2VUAB-u7GuGTlH.js} +1 -1
  10. package/_assets/_head/assets/_chunk-55IACEB6-BhegayeB.js +1 -0
  11. package/_assets/_head/assets/{_chunk-7E7YKBS2-BfdwzEwB.js → _chunk-7E7YKBS2-DRw7IFmq.js} +1 -1
  12. package/_assets/_head/assets/{_chunk-7R4GIKGN-CixjX2hF.js → _chunk-7R4GIKGN-CEEB8leR.js} +1 -1
  13. package/_assets/_head/assets/{_chunk-C72U2L5F-Ju1rEIdN.js → _chunk-C72U2L5F-q7txozuq.js} +1 -1
  14. package/_assets/_head/assets/{_chunk-EGIJ26TM-CCUYcH6V.js → _chunk-EGIJ26TM-yYSCEksb.js} +1 -1
  15. package/_assets/_head/assets/{_chunk-FMBD7UC4-D6coRtDw.js → _chunk-FMBD7UC4-Dm6s76j7.js} +1 -1
  16. package/_assets/_head/assets/{_chunk-GEFDOKGD-hedaaI_B.js → _chunk-GEFDOKGD-DinyCumL.js} +1 -1
  17. package/_assets/_head/assets/_chunk-GLR3WWYH-BnCkIl1j.js +2 -0
  18. package/_assets/_head/assets/_chunk-HHEYEP7N-2k_uWfJ-.js +1 -0
  19. package/_assets/_head/assets/{_chunk-JSJVCQXG-CJ2rQuP0.js → _chunk-JSJVCQXG-BwRzsZaf.js} +1 -1
  20. package/_assets/_head/assets/{_chunk-KX2RTZJC-C6_Rew8h.js → _chunk-KX2RTZJC-CU2wfNBA.js} +1 -1
  21. package/_assets/_head/assets/{_chunk-KYZI473N-HFloJmj0.js → _chunk-KYZI473N-DFGZfQqH.js} +1 -1
  22. package/_assets/_head/assets/{_chunk-L3YUKLVL-BZnSrFqZ.js → _chunk-L3YUKLVL-8ZFAhWTa.js} +1 -1
  23. package/_assets/_head/assets/{_chunk-MX3YWQON-DTYOrezi.js → _chunk-MX3YWQON-OBQAAB3N.js} +1 -1
  24. package/_assets/_head/assets/{_chunk-NQ4KR5QH-BUplpEk2.js → _chunk-NQ4KR5QH-DJwRvUSa.js} +1 -1
  25. package/_assets/_head/assets/{_chunk-O4XLMI2P-Dmj7UqP5.js → _chunk-O4XLMI2P-C5stF2lf.js} +1 -1
  26. package/_assets/_head/assets/{_chunk-OZEHJAEY-BSk-0ei6.js → _chunk-OZEHJAEY-C-6Mr0rV.js} +1 -1
  27. package/_assets/_head/assets/{_chunk-PQ6SQG4A-d07SUR0W.js → _chunk-PQ6SQG4A-Ce4yqK2U.js} +1 -1
  28. package/_assets/_head/assets/{_chunk-PU5JKC2W-B7Fh0LIt.js → _chunk-PU5JKC2W-DjhZtVq8.js} +1 -1
  29. package/_assets/_head/assets/_chunk-QZHKN3VN-Bhpn6rDK.js +1 -0
  30. package/_assets/_head/assets/{_chunk-R5LLSJPH-CoKBj2D6.js → _chunk-R5LLSJPH-DzG3FAck.js} +1 -1
  31. package/_assets/_head/assets/{_chunk-WL4C6EOR-bOFxg0ID.js → _chunk-WL4C6EOR-DjvVjER2.js} +1 -1
  32. package/_assets/_head/assets/{_chunk-XIRO2GV7-COC85g2g.js → _chunk-XIRO2GV7-DYEpFn3-.js} +1 -1
  33. package/_assets/_head/assets/{_chunk-XPW4576I-CW6DI-1k.js → _chunk-XPW4576I-CRDcKYn5.js} +1 -1
  34. package/_assets/_head/assets/{_chunk-XZSTWKYB-DNV9pfMo.js → _chunk-XZSTWKYB-Dnmcdxn2.js} +1 -1
  35. package/_assets/_head/assets/{_chunk-YBOYWFTD-nZYHIeRV.js → _chunk-YBOYWFTD-C0sy-tkc.js} +1 -1
  36. package/_assets/_head/assets/_classDiagram-VBA2DB6C-DDvYM7vU.js +1 -0
  37. package/_assets/_head/assets/_classDiagram-v2-RAHNMMFH-BPF9HrXj.js +1 -0
  38. package/_assets/_head/assets/{_cose-bilkent-S5V4N54A-DzNIP-ES.js → _cose-bilkent-S5V4N54A-pwuuIbv2.js} +1 -1
  39. package/_assets/_head/assets/{_d3-graphviz-D-OeP-Hi.js → _d3-graphviz-DcMtfIhp.js} +1 -1
  40. package/_assets/_head/assets/{_dagre-D4f1FF8i.js → _dagre-CA4z7MrA.js} +1 -1
  41. package/_assets/_head/assets/{_dagre-KLK3FWXG-BkNMp9M0.js → _dagre-KLK3FWXG-CoqulaDf.js} +1 -1
  42. package/_assets/_head/assets/{_diagram-E7M64L7V-D6PZVOLB.js → _diagram-E7M64L7V-B-3RYN0e.js} +1 -1
  43. package/_assets/_head/assets/{_diagram-IFDJBPK2-QApacJ5c.js → _diagram-IFDJBPK2-BeCxbGXv.js} +1 -1
  44. package/_assets/_head/assets/{_diagram-P4PSJMXO-CNMUKotv.js → _diagram-P4PSJMXO-CvQRbCi5.js} +1 -1
  45. package/_assets/_head/assets/{_dist-Dk49gvBM.js → _dist-BO11r0fr.js} +1 -1
  46. package/_assets/_head/assets/{_erDiagram-INFDFZHY-Bpnx05jC.js → _erDiagram-INFDFZHY-Zh2XbqbT.js} +1 -1
  47. package/_assets/_head/assets/{_flowDiagram-PKNHOUZH-BdAdScRO.js → _flowDiagram-PKNHOUZH-DrDi74q1.js} +1 -1
  48. package/_assets/_head/assets/{_ganttDiagram-A5KZAMGK-DzEPJRcF.js → _ganttDiagram-A5KZAMGK-DZA6377B.js} +1 -1
  49. package/_assets/_head/assets/_gitGraph-HDMCJU4V-Ec_hDt6_.js +1 -0
  50. package/_assets/_head/assets/{_gitGraphDiagram-K3NZZRJ6-BMvgx1jL.js → _gitGraphDiagram-K3NZZRJ6-Br5Sirqq.js} +1 -1
  51. package/_assets/_head/assets/_info-3K5VOQVL-CENtZRFH.js +1 -0
  52. package/_assets/_head/assets/_infoDiagram-LFFYTUFH-C2swHr78.js +2 -0
  53. package/_assets/_head/assets/{_ishikawaDiagram-PHBUUO56-ye8wu7pU.js → _ishikawaDiagram-PHBUUO56-ETOK-LOw.js} +1 -1
  54. package/_assets/_head/assets/{_journeyDiagram-4ABVD52K-D5OtlO2S.js → _journeyDiagram-4ABVD52K-3Odci6Ma.js} +1 -1
  55. package/_assets/_head/assets/{_kanban-definition-K7BYSVSG-DtUEcx7s.js → _kanban-definition-K7BYSVSG-C-x5I47z.js} +1 -1
  56. package/_assets/_head/assets/{_line-Bn73e1DS.js → _line-BMsgmPE5.js} +1 -1
  57. package/_assets/_head/assets/{_linear-DLy__jWx.js → _linear-D1vf9RD0.js} +1 -1
  58. package/_assets/_head/assets/{_mermaid-parser.core-_H6Clr87.js → _mermaid-parser.core-DZbZ9Nt1.js} +2 -2
  59. package/_assets/_head/assets/{_mermaid.core-CN_dW3wB.js → _mermaid.core-B6JDNx3m.js} +3 -3
  60. package/_assets/_head/assets/{_mindmap-definition-YRQLILUH-Bj6WNjT2.js → _mindmap-definition-YRQLILUH-CY8Mkbyf.js} +1 -1
  61. package/_assets/_head/assets/_packet-RMMSAZCW-HsVTCE5M.js +1 -0
  62. package/_assets/_head/assets/_pie-UPGHQEXC-ClCegNAN.js +1 -0
  63. package/_assets/_head/assets/{_pieDiagram-SKSYHLDU-B7n7B95W.js → _pieDiagram-SKSYHLDU-CYJI9Scd.js} +1 -1
  64. package/_assets/_head/assets/{_quadrantDiagram-337W2JSQ-C_OD8wEG.js → _quadrantDiagram-337W2JSQ-BGW8PhOJ.js} +1 -1
  65. package/_assets/_head/assets/_radar-KQ55EAFF-ugGxOkwG.js +1 -0
  66. package/_assets/_head/assets/{_requirementDiagram-Z7DCOOCP-C8HzXf-7.js → _requirementDiagram-Z7DCOOCP-BbV78NhX.js} +1 -1
  67. package/_assets/_head/assets/{_sankeyDiagram-WA2Y5GQK-Ctpgy26F.js → _sankeyDiagram-WA2Y5GQK-ByyrJf1U.js} +1 -1
  68. package/_assets/_head/assets/{_sequenceDiagram-2WXFIKYE-BrWWYecj.js → _sequenceDiagram-2WXFIKYE-CUwOGuhQ.js} +1 -1
  69. package/_assets/_head/assets/{_src-COkbRRdF.js → _src-Bi8wryCV.js} +1 -1
  70. package/_assets/_head/assets/{_src-EY2faTVt.js → _src-D_0f55rL.js} +1 -1
  71. package/_assets/_head/assets/{_src-DGaYM9rN.js → _src-SNUCTSwP.js} +1 -1
  72. package/_assets/_head/assets/{_stateDiagram-RAJIS63D-DHDYVq4g.js → _stateDiagram-RAJIS63D-Dxv3HBdz.js} +1 -1
  73. package/_assets/_head/assets/_stateDiagram-v2-FVOUBMTO-brNar02G.js +1 -0
  74. package/_assets/_head/assets/{_timeline-definition-YZTLITO2-Baqh8Zr3.js → _timeline-definition-YZTLITO2-COgTpWBR.js} +1 -1
  75. package/_assets/_head/assets/_treemap-KZPCXAKY-CXR7h5hT.js +1 -0
  76. package/_assets/_head/assets/{_value-BHMRaafc.js → _value-NcYKFvkN.js} +1 -1
  77. package/_assets/_head/assets/{_vennDiagram-LZ73GAT5-DT2MLRvW.js → _vennDiagram-LZ73GAT5-CFvtr6ch.js} +1 -1
  78. package/_assets/_head/assets/{_xychartDiagram-JWTSCODW-B4O2dc9N.js → _xychartDiagram-JWTSCODW-DtHVB6Xo.js} +1 -1
  79. package/_assets/_head/assets/{main-GvJmWKsI.js → main-Bgz5KRxr.js} +3 -3
  80. package/_assets/_head/assets/main-DTgc_eyw.css +1 -0
  81. package/package.json +13 -4
  82. package/src/element.test.ts +319 -0
  83. package/src/helpers.test.ts +51 -0
  84. package/src/index.css +4 -4
  85. package/src/main.test.ts +29 -0
  86. package/src/remark.test.ts +196 -0
  87. package/src/remark.ts +4 -5
  88. package/src/runtime.test.ts +78 -0
  89. package/tsconfig.json +3 -10
  90. package/vitest.config.ts +4 -0
  91. package/vitest.setup.ts +6 -0
  92. package/_assets/_head/assets/_architecture-PBZL5I3N-BPxfLoEK.js +0 -1
  93. package/_assets/_head/assets/_channel-CfD3KTsT.js +0 -1
  94. package/_assets/_head/assets/_chunk-55IACEB6-x7bSLf7B.js +0 -1
  95. package/_assets/_head/assets/_chunk-GLR3WWYH-CADHj0Af.js +0 -2
  96. package/_assets/_head/assets/_chunk-HHEYEP7N-yDnzeL6u.js +0 -1
  97. package/_assets/_head/assets/_chunk-QZHKN3VN-OrU_cr5J.js +0 -1
  98. package/_assets/_head/assets/_classDiagram-VBA2DB6C-C9oLPafD.js +0 -1
  99. package/_assets/_head/assets/_classDiagram-v2-RAHNMMFH-Dgh8T6Nh.js +0 -1
  100. package/_assets/_head/assets/_gitGraph-HDMCJU4V-bzhcDRU8.js +0 -1
  101. package/_assets/_head/assets/_info-3K5VOQVL-DO8S_2BK.js +0 -1
  102. package/_assets/_head/assets/_infoDiagram-LFFYTUFH-V27XJ0e-.js +0 -2
  103. package/_assets/_head/assets/_packet-RMMSAZCW-BQu67kO8.js +0 -1
  104. package/_assets/_head/assets/_pie-UPGHQEXC-Bq1eDF5N.js +0 -1
  105. package/_assets/_head/assets/_radar-KQ55EAFF-BVJblTdI.js +0 -1
  106. package/_assets/_head/assets/_stateDiagram-v2-FVOUBMTO-C3RKEofw.js +0 -1
  107. package/_assets/_head/assets/_treemap-KZPCXAKY-DnDBABML.js +0 -1
  108. package/_assets/_head/assets/main-CSvXzq1b.css +0 -1
@@ -1,4 +1,4 @@
1
- import{r as e}from"./_chunk-GEFDOKGD-hedaaI_B.js";import"./_src-EY2faTVt.js";import{t}from"./_linear-DLy__jWx.js";import"./_defaultLocale-CTKA0Sod.js";import{n,r}from"./_src-DGaYM9rN.js";import{B as i,C as a,E as o,L as s,V as c,W as l,_ as u,a as d,c as f,d as p,v as m,y as h}from"./_chunk-7R4GIKGN-CixjX2hF.js";import{t as g}from"./_ordinal-CxoIAYU5.js";import{t as _}from"./_init-B0zvuhbV.js";import{t as v}from"./_line-Bn73e1DS.js";import{t as y}from"./_chunk-HHEYEP7N-yDnzeL6u.js";import"./_dist-Dk49gvBM.js";import{t as b}from"./_chunk-PU5JKC2W-B7Fh0LIt.js";function x(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r<i;)a[r]=e+r*n;return a}function S(){var e=g().unknown(void 0),t=e.domain,n=e.range,r=0,i=1,a,o,s=!1,c=0,l=0,u=.5;delete e.unknown;function d(){var e=t().length,d=i<r,f=d?i:r,p=d?r:i;a=(p-f)/Math.max(1,e-c+l*2),s&&(a=Math.floor(a)),f+=(p-f-a*(e-c))*u,o=a*(1-c),s&&(f=Math.round(f),o=Math.round(o));var m=x(e).map(function(e){return f+a*e});return n(d?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),d()):t()},e.range=function(e){return arguments.length?([r,i]=e,r=+r,i=+i,d()):[r,i]},e.rangeRound=function(e){return[r,i]=e,r=+r,i=+i,s=!0,d()},e.bandwidth=function(){return o},e.step=function(){return a},e.round=function(e){return arguments.length?(s=!!e,d()):s},e.padding=function(e){return arguments.length?(c=Math.min(1,l=+e),d()):c},e.paddingInner=function(e){return arguments.length?(c=Math.min(1,e),d()):c},e.paddingOuter=function(e){return arguments.length?(l=+e,d()):l},e.align=function(e){return arguments.length?(u=Math.max(0,Math.min(1,e)),d()):u},e.copy=function(){return S(t(),[r,i]).round(s).paddingInner(c).paddingOuter(l).align(u)},_.apply(d(),arguments)}var C=(function(){var e=n(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,10,12,14,16,18,19,21,23],r=[2,6],i=[1,3],a=[1,5],o=[1,6],s=[1,7],c=[1,5,10,12,14,16,18,19,21,23,34,35,36],l=[1,25],u=[1,26],d=[1,28],f=[1,29],p=[1,30],m=[1,31],h=[1,32],g=[1,33],_=[1,34],v=[1,35],y=[1,36],b=[1,37],x=[1,43],S=[1,42],C=[1,47],w=[1,50],T=[1,10,12,14,16,18,19,21,23,34,35,36],E=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],D=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],O=[1,64],k={trace:n(function(){},`trace`),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:`error`,5:`XYCHART`,8:`CHART_ORIENTATION`,10:`title`,12:`X_AXIS`,14:`Y_AXIS`,16:`LINE`,18:`BAR`,19:`acc_title`,20:`acc_title_value`,21:`acc_descr`,22:`acc_descr_value`,23:`acc_descr_multiline_value`,24:`SQUARE_BRACES_START`,26:`SQUARE_BRACES_END`,27:`NUMBER_WITH_DECIMAL`,28:`COMMA`,31:`ARROW_DELIMITER`,34:`NEWLINE`,35:`SEMI`,36:`EOF`,38:`STR`,39:`MD_STR`,41:`AMP`,42:`NUM`,43:`ALPHA`,44:`PLUS`,45:`EQUALS`,46:`MULT`,47:`DOT`,48:`BRKT`,49:`MINUS`,50:`UNDERSCORE`},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:n(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 5:r.setOrientation(a[s]);break;case 9:r.setDiagramTitle(a[s].text.trim());break;case 12:r.setLineData({text:``,type:`text`},a[s]);break;case 13:r.setLineData(a[s-1],a[s]);break;case 14:r.setBarData({text:``,type:`text`},a[s]);break;case 15:r.setBarData(a[s-1],a[s]);break;case 16:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 17:case 18:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 19:this.$=a[s-1];break;case 20:this.$=[Number(a[s-2]),...a[s]];break;case 21:this.$=[Number(a[s])];break;case 22:r.setXAxisTitle(a[s]);break;case 23:r.setXAxisTitle(a[s-1]);break;case 24:r.setXAxisTitle({type:`text`,text:``});break;case 25:r.setXAxisBand(a[s]);break;case 26:r.setXAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 27:this.$=a[s-1];break;case 28:this.$=[a[s-2],...a[s]];break;case 29:this.$=[a[s]];break;case 30:r.setYAxisTitle(a[s]);break;case 31:r.setYAxisTitle(a[s-1]);break;case 32:r.setYAxisTitle({type:`text`,text:``});break;case 33:r.setYAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 37:this.$={text:a[s],type:`text`};break;case 38:this.$={text:a[s],type:`text`};break;case 39:this.$={text:a[s],type:`markdown`};break;case 40:this.$=a[s];break;case 41:this.$=a[s-1]+``+a[s];break}},`anonymous`),table:[e(t,r,{3:1,4:2,7:4,5:i,34:a,35:o,36:s}),{1:[3]},e(t,r,{4:2,7:4,3:8,5:i,34:a,35:o,36:s}),e(t,r,{4:2,7:4,6:9,3:10,5:i,8:[1,11],34:a,35:o,36:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(c,[2,34]),e(c,[2,35]),e(c,[2,36]),{1:[2,1]},e(t,r,{4:2,7:4,3:21,5:i,34:a,35:o,36:s}),{1:[2,3]},e(c,[2,5]),e(t,[2,7],{4:22,34:a,35:o,36:s}),{11:23,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:39,13:38,24:x,27:S,29:40,30:41,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:45,15:44,27:C,33:46,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:49,17:48,24:w,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:52,17:51,24:w,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{20:[1,53]},{22:[1,54]},e(T,[2,18]),{1:[2,2]},e(T,[2,8]),e(T,[2,9]),e(E,[2,37],{40:55,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b}),e(E,[2,38]),e(E,[2,39]),e(D,[2,40]),e(D,[2,42]),e(D,[2,43]),e(D,[2,44]),e(D,[2,45]),e(D,[2,46]),e(D,[2,47]),e(D,[2,48]),e(D,[2,49]),e(D,[2,50]),e(D,[2,51]),e(T,[2,10]),e(T,[2,22],{30:41,29:56,24:x,27:S}),e(T,[2,24]),e(T,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},e(T,[2,11]),e(T,[2,30],{33:60,27:C}),e(T,[2,32]),{31:[1,61]},e(T,[2,12]),{17:62,24:w},{25:63,27:O},e(T,[2,14]),{17:65,24:w},e(T,[2,16]),e(T,[2,17]),e(D,[2,41]),e(T,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(T,[2,31]),{27:[1,69]},e(T,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(T,[2,15]),e(T,[2,26]),e(T,[2,27]),{11:59,32:72,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},e(T,[2,33]),e(T,[2,19]),{25:73,27:O},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:n(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:n(function(e){var t=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}n(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=t.symbols_[e]||e),e}n(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
1
+ import{r as e}from"./_chunk-GEFDOKGD-DinyCumL.js";import"./_src-D_0f55rL.js";import{t}from"./_linear-D1vf9RD0.js";import"./_defaultLocale-CTKA0Sod.js";import{n,r}from"./_src-SNUCTSwP.js";import{B as i,C as a,E as o,L as s,V as c,W as l,_ as u,a as d,c as f,d as p,v as m,y as h}from"./_chunk-7R4GIKGN-CEEB8leR.js";import{t as g}from"./_ordinal-CxoIAYU5.js";import{t as _}from"./_init-B0zvuhbV.js";import{t as v}from"./_line-BMsgmPE5.js";import{t as y}from"./_chunk-HHEYEP7N-2k_uWfJ-.js";import"./_dist-BO11r0fr.js";import{t as b}from"./_chunk-PU5JKC2W-DjhZtVq8.js";function x(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r<i;)a[r]=e+r*n;return a}function S(){var e=g().unknown(void 0),t=e.domain,n=e.range,r=0,i=1,a,o,s=!1,c=0,l=0,u=.5;delete e.unknown;function d(){var e=t().length,d=i<r,f=d?i:r,p=d?r:i;a=(p-f)/Math.max(1,e-c+l*2),s&&(a=Math.floor(a)),f+=(p-f-a*(e-c))*u,o=a*(1-c),s&&(f=Math.round(f),o=Math.round(o));var m=x(e).map(function(e){return f+a*e});return n(d?m.reverse():m)}return e.domain=function(e){return arguments.length?(t(e),d()):t()},e.range=function(e){return arguments.length?([r,i]=e,r=+r,i=+i,d()):[r,i]},e.rangeRound=function(e){return[r,i]=e,r=+r,i=+i,s=!0,d()},e.bandwidth=function(){return o},e.step=function(){return a},e.round=function(e){return arguments.length?(s=!!e,d()):s},e.padding=function(e){return arguments.length?(c=Math.min(1,l=+e),d()):c},e.paddingInner=function(e){return arguments.length?(c=Math.min(1,e),d()):c},e.paddingOuter=function(e){return arguments.length?(l=+e,d()):l},e.align=function(e){return arguments.length?(u=Math.max(0,Math.min(1,e)),d()):u},e.copy=function(){return S(t(),[r,i]).round(s).paddingInner(c).paddingOuter(l).align(u)},_.apply(d(),arguments)}var C=(function(){var e=n(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,10,12,14,16,18,19,21,23],r=[2,6],i=[1,3],a=[1,5],o=[1,6],s=[1,7],c=[1,5,10,12,14,16,18,19,21,23,34,35,36],l=[1,25],u=[1,26],d=[1,28],f=[1,29],p=[1,30],m=[1,31],h=[1,32],g=[1,33],_=[1,34],v=[1,35],y=[1,36],b=[1,37],x=[1,43],S=[1,42],C=[1,47],w=[1,50],T=[1,10,12,14,16,18,19,21,23,34,35,36],E=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],D=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],O=[1,64],k={trace:n(function(){},`trace`),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:`error`,5:`XYCHART`,8:`CHART_ORIENTATION`,10:`title`,12:`X_AXIS`,14:`Y_AXIS`,16:`LINE`,18:`BAR`,19:`acc_title`,20:`acc_title_value`,21:`acc_descr`,22:`acc_descr_value`,23:`acc_descr_multiline_value`,24:`SQUARE_BRACES_START`,26:`SQUARE_BRACES_END`,27:`NUMBER_WITH_DECIMAL`,28:`COMMA`,31:`ARROW_DELIMITER`,34:`NEWLINE`,35:`SEMI`,36:`EOF`,38:`STR`,39:`MD_STR`,41:`AMP`,42:`NUM`,43:`ALPHA`,44:`PLUS`,45:`EQUALS`,46:`MULT`,47:`DOT`,48:`BRKT`,49:`MINUS`,50:`UNDERSCORE`},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:n(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 5:r.setOrientation(a[s]);break;case 9:r.setDiagramTitle(a[s].text.trim());break;case 12:r.setLineData({text:``,type:`text`},a[s]);break;case 13:r.setLineData(a[s-1],a[s]);break;case 14:r.setBarData({text:``,type:`text`},a[s]);break;case 15:r.setBarData(a[s-1],a[s]);break;case 16:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 17:case 18:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 19:this.$=a[s-1];break;case 20:this.$=[Number(a[s-2]),...a[s]];break;case 21:this.$=[Number(a[s])];break;case 22:r.setXAxisTitle(a[s]);break;case 23:r.setXAxisTitle(a[s-1]);break;case 24:r.setXAxisTitle({type:`text`,text:``});break;case 25:r.setXAxisBand(a[s]);break;case 26:r.setXAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 27:this.$=a[s-1];break;case 28:this.$=[a[s-2],...a[s]];break;case 29:this.$=[a[s]];break;case 30:r.setYAxisTitle(a[s]);break;case 31:r.setYAxisTitle(a[s-1]);break;case 32:r.setYAxisTitle({type:`text`,text:``});break;case 33:r.setYAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 37:this.$={text:a[s],type:`text`};break;case 38:this.$={text:a[s],type:`text`};break;case 39:this.$={text:a[s],type:`markdown`};break;case 40:this.$=a[s];break;case 41:this.$=a[s-1]+``+a[s];break}},`anonymous`),table:[e(t,r,{3:1,4:2,7:4,5:i,34:a,35:o,36:s}),{1:[3]},e(t,r,{4:2,7:4,3:8,5:i,34:a,35:o,36:s}),e(t,r,{4:2,7:4,6:9,3:10,5:i,8:[1,11],34:a,35:o,36:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(c,[2,34]),e(c,[2,35]),e(c,[2,36]),{1:[2,1]},e(t,r,{4:2,7:4,3:21,5:i,34:a,35:o,36:s}),{1:[2,3]},e(c,[2,5]),e(t,[2,7],{4:22,34:a,35:o,36:s}),{11:23,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:39,13:38,24:x,27:S,29:40,30:41,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:45,15:44,27:C,33:46,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:49,17:48,24:w,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{11:52,17:51,24:w,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},{20:[1,53]},{22:[1,54]},e(T,[2,18]),{1:[2,2]},e(T,[2,8]),e(T,[2,9]),e(E,[2,37],{40:55,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b}),e(E,[2,38]),e(E,[2,39]),e(D,[2,40]),e(D,[2,42]),e(D,[2,43]),e(D,[2,44]),e(D,[2,45]),e(D,[2,46]),e(D,[2,47]),e(D,[2,48]),e(D,[2,49]),e(D,[2,50]),e(D,[2,51]),e(T,[2,10]),e(T,[2,22],{30:41,29:56,24:x,27:S}),e(T,[2,24]),e(T,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},e(T,[2,11]),e(T,[2,30],{33:60,27:C}),e(T,[2,32]),{31:[1,61]},e(T,[2,12]),{17:62,24:w},{25:63,27:O},e(T,[2,14]),{17:65,24:w},e(T,[2,16]),e(T,[2,17]),e(D,[2,41]),e(T,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(T,[2,31]),{27:[1,69]},e(T,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(T,[2,15]),e(T,[2,26]),e(T,[2,27]),{11:59,32:72,37:24,38:l,39:u,40:27,41:d,42:f,43:p,44:m,45:h,46:g,47:_,48:v,49:y,50:b},e(T,[2,33]),e(T,[2,19]),{25:73,27:O},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:n(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:n(function(e){var t=this,r=[0],i=[],a=[null],o=[],s=this.table,c=``,l=0,u=0,d=0,f=2,p=1,m=o.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;o.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){r.length-=2*e,a.length-=e,o.length-=e}n(b,`popStack`);function x(){var e=i.pop()||h.lex()||p;return typeof e!=`number`&&(e instanceof Array&&(i=e,e=i.pop()),e=t.symbols_[e]||e),e}n(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=r[r.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=s[w]&&s[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],s[w])this.terminals_[O]&&O>f&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(l+1)+`:
2
2
  `+h.showPosition()+`
3
3
  Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(l+1)+`: Unexpected `+(S==p?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:r.push(S),a.push(h.yytext),o.push(h.yylloc),r.push(T[1]),S=null,C?(S=C,C=null):(u=h.yyleng,c=h.yytext,l=h.yylineno,v=h.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[T[1]][1],D.$=a[a.length-k],D._$={first_line:o[o.length-(k||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(k||1)].first_column,last_column:o[o.length-1].last_column},y&&(D._$.range=[o[o.length-(k||1)].range[0],o[o.length-1].range[1]]),E=this.performAction.apply(D,[c,u,l,g.yy,T[1],a,o].concat(m)),E!==void 0)return E;k&&(r=r.slice(0,-1*k*2),a=a.slice(0,-1*k),o=o.slice(0,-1*k)),r.push(this.productions_[T[1]][0]),a.push(D.$),o.push(D._$),A=s[r[r.length-2]][r[r.length-1]],r.push(A);break;case 3:return!0}}return!0},`parse`)};k.lexer=(function(){return{EOF:1,parseError:n(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:n(function(e,t){return this.yy=t||this.yy||{},this._input=e,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:n(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.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),e},`input`),unput:n(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=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),n.length-1&&(this.yylineno-=n.length-1);var i=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:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:n(function(){return this._more=!0,this},`more`),reject:n(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
4
  `+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:n(function(e){this.unput(this.match.slice(e))},`less`),pastInput:n(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:n(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:n(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+`
@@ -1,9 +1,9 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./_mermaid.core-CN_dW3wB.js","./_dist-Dk49gvBM.js","./_chunk-PU5JKC2W-B7Fh0LIt.js","./_src-DGaYM9rN.js","./_src-COkbRRdF.js","./_chunk-GEFDOKGD-hedaaI_B.js","./_math-CyywJguE.js","./_chunk-7R4GIKGN-CixjX2hF.js","./_isArrayLikeObject-B62EgjVm.js","./_src-EY2faTVt.js","./_isEmpty-DwnoWLeP.js","./_chunk-GLR3WWYH-CADHj0Af.js","./_chunk-KYZI473N-HFloJmj0.js","./_chunk-PQ6SQG4A-d07SUR0W.js","./_chunk-YBOYWFTD-nZYHIeRV.js","./_rough.esm-B-x7cSr_.js","./_chunk-O4XLMI2P-Dmj7UqP5.js","./_line-Bn73e1DS.js","./_array-1ZLHT4IW.js","./_path-DqxJfpv2.js","./_path-e1ZUMOO_.js","./_chunk-MX3YWQON-DTYOrezi.js","./_chunk-HHEYEP7N-yDnzeL6u.js","./_chunk-XPW4576I-CW6DI-1k.js","./_d3-graphviz-D-OeP-Hi.js","./_defaultLocale-CTKA0Sod.js","./_value-BHMRaafc.js"])))=>i.map(i=>d[i]);
2
- import{extend as e}from"@markee/runtime";var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(e&&(t=e(e=0)),t),c=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),l=(e,t)=>{let r={};for(var i in e)n(r,i,{get:e[i],enumerable:!0});return t||n(r,Symbol.toStringTag,{value:`Module`}),r},u=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},d=(e,t,n)=>(u(e,t,`default`),n&&u(n,t,`default`)),f=(e,r,i)=>(i=e==null?{}:t(a(e)),u(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e)),p=e=>o.call(e,`module.exports`)?e[`module.exports`]:u(n({},`__esModule`,{value:!0}),e);function m(e){let t=new TextEncoder().encode(e),n=``;return t.forEach(e=>{n+=String.fromCharCode(e)}),btoa(n)}function h(e){let t=atob(e),n=Uint8Array.from(t,e=>e.charCodeAt(0));return new TextDecoder().decode(n)}function g(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`)}function _(e){return e instanceof Error?e.message:typeof e==`string`?e:`Unknown error`}function v(e,t){let n=e[t];return n===void 0?``:typeof n==`string`?n.trim():typeof n==`number`||typeof n==`boolean`?String(n):``}function y(e){let t=v(e,`class`);return t?t.split(/\s+/).filter(Boolean):[]}function b(e,t,n=!1){let r=v(e,t);if(!r)return n;switch(r.toLowerCase()){case t.toLowerCase():case`1`:case`true`:case`yes`:case`on`:return!0;case`0`:case`false`:case`no`:case`off`:return!1;default:return n}}function x(e,t){let n=e.class;return typeof n==`string`?n.split(/\s+/).includes(t):!1}var S=`modulepreload`,C=function(e,t){return new URL(e,t).href},w={},T=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=C(t,n),t in w)return;w[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:S,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},E=null,D=null;function O(){return E||=T(()=>import(`./_mermaid.core-CN_dW3wB.js`).then(e=>(e.default.initialize({startOnLoad:!1}),e.default)),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]),import.meta.url),E}function k(){return D||=Promise.all([T(()=>import(`./_api-BbxJBqLU.js`).then(e=>f(e.default)),[],import.meta.url),T(()=>import(`./_src-COkbRRdF.js`).then(e=>e.t),[],import.meta.url),T(()=>import(`./_d3-graphviz-D-OeP-Hi.js`),__vite__mapDeps([24,9,4,25,26,20]),import.meta.url)]).then(([e,t])=>{let n=t,r=n.select?n:n.default;if(!r||typeof r.select!=`function`)throw Error(`Could not load d3-selection runtime.`);return{dbmlRun:e.run,select:r.select}}),D}var A=0,j=class extends HTMLElement{#e=0;#t=null;connectedCallback(){this.#r(`Loading diagram runtime...`),this.#n()}disconnectedCallback(){this.#e++,this.#t?.(),this.#t=null}async#n(){let e=++this.#e;this.#t?.(),this.#t=null;let t=this.dataset.source,n=this.dataset.kind?.trim()?.toLowerCase();if(!n||n!==`mermaid`&&n!==`dbml`){this.#i(`Unsupported diagram type.`);return}if(!t){this.#i(`Missing diagram source.`);return}let r=``;try{r=h(t)}catch{this.#i(`Could not decode diagram source.`);return}try{if(n===`mermaid`){let t=await O();if(e!==this.#e)return;let n=document.createElement(`div`);n.className=`markee-diagram-mermaid`,this.replaceChildren(n);let i=`markee-diagram-mermaid-${A++}`,a=await t.render(i,r);if(e!==this.#e)return;n.innerHTML=a.svg,a.bindFunctions?.(n);return}let t=await k();if(e!==this.#e)return;let i=t.dbmlRun(r,`dot`);if(!i.trim()){this.#i(`DBML rendering produced an empty graph.`);return}let a=document.createElement(`div`);if(a.className=`markee-diagram-dbml`,this.replaceChildren(a),await new Promise((e,n)=>{try{let r=t.select(a).graphviz({useWorker:!0,fit:!0,zoom:!1});this.#t=()=>{r.destroy?.()},r.onerror(e=>{n(Error(e))}),r.renderDot(i,()=>{e()})}catch(e){n(e)}}),e!==this.#e)return}catch(e){this.#i(`${n.toUpperCase()} rendering failed.\n${_(e)}`)}}#r(e){this.innerHTML=`<div class="markee-diagram-status">${g(e)}</div>`}#i(e){this.#t?.(),this.#t=null,this.innerHTML=[`<div class="markee-diagram-error">`,`<strong>Diagram error</strong>`,`<pre>${g(e)}</pre>`,`</div>`].join(``)}};function M(){window.customElements.define(`markee-diagram`,j)}var N=f(c(((e,t)=>{(function(e,n){typeof define==`function`&&define.amd?define([],n):typeof t==`object`&&t.exports?t.exports=n():e.moo=n()})(e,function(){var e=Object.prototype.hasOwnProperty,t=Object.prototype.toString,n=typeof RegExp().sticky==`boolean`;function r(e){return e&&t.call(e)===`[object RegExp]`}function i(e){return e&&typeof e==`object`&&!r(e)&&!Array.isArray(e)}function a(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,`\\$&`)}function o(e){return RegExp(`|`+e).exec(``).length-1}function s(e){return`(`+e+`)`}function c(e){return e.length?`(?:`+e.map(function(e){return`(?:`+e+`)`}).join(`|`)+`)`:`(?!)`}function l(e){if(typeof e==`string`)return`(?:`+a(e)+`)`;if(r(e)){if(e.ignoreCase)throw Error(`RegExp /i flag not allowed`);if(e.global)throw Error(`RegExp /g flag is implied`);if(e.sticky)throw Error(`RegExp /y flag is implied`);if(e.multiline)throw Error(`RegExp /m flag is implied`);return e.source}else throw Error(`Not a pattern: `+e)}function u(e,t){return e.length>t?e:Array(t-e.length+1).join(` `)+e}function d(e,t){for(var n=e.length,r=0;;){var i=e.lastIndexOf(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./_mermaid.core-B6JDNx3m.js","./_dist-BO11r0fr.js","./_chunk-PU5JKC2W-DjhZtVq8.js","./_src-SNUCTSwP.js","./_src-Bi8wryCV.js","./_chunk-GEFDOKGD-DinyCumL.js","./_math-CyywJguE.js","./_chunk-7R4GIKGN-CEEB8leR.js","./_isArrayLikeObject-B62EgjVm.js","./_src-D_0f55rL.js","./_isEmpty-DwnoWLeP.js","./_chunk-GLR3WWYH-BnCkIl1j.js","./_chunk-KYZI473N-DFGZfQqH.js","./_chunk-PQ6SQG4A-Ce4yqK2U.js","./_chunk-YBOYWFTD-C0sy-tkc.js","./_rough.esm-B-x7cSr_.js","./_chunk-O4XLMI2P-C5stF2lf.js","./_line-BMsgmPE5.js","./_array-1ZLHT4IW.js","./_path-DqxJfpv2.js","./_path-e1ZUMOO_.js","./_chunk-MX3YWQON-OBQAAB3N.js","./_chunk-HHEYEP7N-2k_uWfJ-.js","./_chunk-XPW4576I-CRDcKYn5.js","./_d3-graphviz-DcMtfIhp.js","./_defaultLocale-CTKA0Sod.js","./_value-NcYKFvkN.js"])))=>i.map(i=>d[i]);
2
+ import{extend as e}from"@markee/runtime";var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(e&&(t=e(e=0)),t),c=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),l=(e,t)=>{let r={};for(var i in e)n(r,i,{get:e[i],enumerable:!0});return t||n(r,Symbol.toStringTag,{value:`Module`}),r},u=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},d=(e,t,n)=>(u(e,t,`default`),n&&u(n,t,`default`)),f=(e,r,i)=>(i=e==null?{}:t(a(e)),u(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e)),p=e=>o.call(e,`module.exports`)?e[`module.exports`]:u(n({},`__esModule`,{value:!0}),e);function m(e){let t=new TextEncoder().encode(e),n=``;return t.forEach(e=>{n+=String.fromCharCode(e)}),btoa(n)}function h(e){let t=atob(e),n=Uint8Array.from(t,e=>e.charCodeAt(0));return new TextDecoder().decode(n)}function g(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`)}function _(e){return e instanceof Error?e.message:typeof e==`string`?e:`Unknown error`}function v(e,t){let n=e[t];return n===void 0?``:typeof n==`string`?n.trim():typeof n==`number`||typeof n==`boolean`?String(n):``}function y(e){let t=v(e,`class`);return t?t.split(/\s+/).filter(Boolean):[]}function b(e,t,n=!1){let r=v(e,t);if(!r)return n;switch(r.toLowerCase()){case t.toLowerCase():case`1`:case`true`:case`yes`:case`on`:return!0;case`0`:case`false`:case`no`:case`off`:return!1;default:return n}}function x(e,t){let n=e.class;return typeof n==`string`?n.split(/\s+/).includes(t):!1}var S=`modulepreload`,C=function(e,t){return new URL(e,t).href},w={},T=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=C(t,n),t in w)return;w[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:S,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},E=null,D=null;function O(){return E||=T(()=>import(`./_mermaid.core-B6JDNx3m.js`).then(e=>(e.default.initialize({startOnLoad:!1}),e.default)),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]),import.meta.url),E}function k(){return D||=Promise.all([T(()=>import(`./_api-m6XYvA-0.js`).then(e=>f(e.default)),[],import.meta.url),T(()=>import(`./_src-Bi8wryCV.js`).then(e=>e.t),[],import.meta.url),T(()=>import(`./_d3-graphviz-DcMtfIhp.js`),__vite__mapDeps([24,9,4,25,26,20]),import.meta.url)]).then(([e,t])=>{let n=t,r=n.select?n:n.default;if(!r||typeof r.select!=`function`)throw Error(`Could not load d3-selection runtime.`);return{dbmlRun:e.run,select:r.select}}),D}var A=0,j=class extends HTMLElement{#e=0;#t=null;connectedCallback(){this.#r(`Loading diagram runtime...`),this.#n()}disconnectedCallback(){this.#e++,this.#t?.(),this.#t=null}async#n(){let e=++this.#e;this.#t?.(),this.#t=null;let t=this.dataset.source,n=this.dataset.kind?.trim()?.toLowerCase();if(!n||n!==`mermaid`&&n!==`dbml`){this.#i(`Unsupported diagram type.`);return}if(!t){this.#i(`Missing diagram source.`);return}let r=``;try{r=h(t)}catch{this.#i(`Could not decode diagram source.`);return}try{if(n===`mermaid`){let t=await O();if(e!==this.#e)return;let n=document.createElement(`div`);n.className=`markee-diagram-mermaid`,this.replaceChildren(n);let i=`markee-diagram-mermaid-${A++}`,a=await t.render(i,r);if(e!==this.#e)return;n.innerHTML=a.svg,a.bindFunctions?.(n);return}let t=await k();if(e!==this.#e)return;let i=t.dbmlRun(r,`dot`);if(!i.trim()){this.#i(`DBML rendering produced an empty graph.`);return}let a=document.createElement(`div`);if(a.className=`markee-diagram-dbml`,this.replaceChildren(a),await new Promise((e,n)=>{try{let r=t.select(a).graphviz({useWorker:!0,fit:!0,zoom:!1});this.#t=()=>{r.destroy?.()},r.onerror(e=>{n(Error(e))}),r.renderDot(i,()=>{e()})}catch(e){n(e)}}),e!==this.#e)return}catch(e){this.#i(`${n.toUpperCase()} rendering failed.\n${_(e)}`)}}#r(e){this.innerHTML=`<div class="markee-diagram-status">${g(e)}</div>`}#i(e){this.#t?.(),this.#t=null,this.innerHTML=[`<div class="markee-diagram-error">`,`<strong>Diagram error</strong>`,`<pre>${g(e)}</pre>`,`</div>`].join(``)}};function M(){window.customElements.define(`markee-diagram`,j)}var N=f(c(((e,t)=>{(function(e,n){typeof define==`function`&&define.amd?define([],n):typeof t==`object`&&t.exports?t.exports=n():e.moo=n()})(e,function(){var e=Object.prototype.hasOwnProperty,t=Object.prototype.toString,n=typeof RegExp().sticky==`boolean`;function r(e){return e&&t.call(e)===`[object RegExp]`}function i(e){return e&&typeof e==`object`&&!r(e)&&!Array.isArray(e)}function a(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,`\\$&`)}function o(e){return RegExp(`|`+e).exec(``).length-1}function s(e){return`(`+e+`)`}function c(e){return e.length?`(?:`+e.map(function(e){return`(?:`+e+`)`}).join(`|`)+`)`:`(?!)`}function l(e){if(typeof e==`string`)return`(?:`+a(e)+`)`;if(r(e)){if(e.ignoreCase)throw Error(`RegExp /i flag not allowed`);if(e.global)throw Error(`RegExp /g flag is implied`);if(e.sticky)throw Error(`RegExp /y flag is implied`);if(e.multiline)throw Error(`RegExp /m flag is implied`);return e.source}else throw Error(`Not a pattern: `+e)}function u(e,t){return e.length>t?e:Array(t-e.length+1).join(` `)+e}function d(e,t){for(var n=e.length,r=0;;){var i=e.lastIndexOf(`
3
3
  `,n-1);if(i===-1||(r++,n=i,r===t)||n===0)break}var a=r<t?0:n+1;return e.substring(a).split(`
4
4
  `)}function f(e){for(var t=Object.getOwnPropertyNames(e),n=[],r=0;r<t.length;r++){var a=t[r],o=e[a],s=[].concat(o);if(a===`include`){for(var c=0;c<s.length;c++)n.push({include:s[c]});continue}var l=[];s.forEach(function(e){i(e)?(l.length&&n.push(m(a,l)),n.push(m(a,e)),l=[]):l.push(e)}),l.length&&n.push(m(a,l))}return n}function p(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];if(r.include){for(var i=[].concat(r.include),a=0;a<i.length;a++)t.push({include:i[a]});continue}if(!r.type)throw Error(`Rule has no type: `+JSON.stringify(r));t.push(m(r.type,r))}return t}function m(t,n){if(i(n)||(n={match:n}),n.include)throw Error(`Matching rules cannot also include states`);var a={defaultType:t,lineBreaks:!!n.error||!!n.fallback,pop:!1,next:null,push:null,error:!1,fallback:!1,value:null,type:null,shouldThrow:!1};for(var o in n)e.call(n,o)&&(a[o]=n[o]);if(typeof a.type==`string`&&t!==a.type)throw Error(`Type transform cannot be a string (type '`+a.type+`' for token '`+t+`')`);var s=a.match;return a.match=Array.isArray(s)?s:s?[s]:[],a.match.sort(function(e,t){return r(e)&&r(t)?0:r(t)?-1:r(e)?1:t.length-e.length}),a}function h(e){return Array.isArray(e)?p(e):f(e)}var g=m(`error`,{lineBreaks:!0,shouldThrow:!0});function _(e,t){for(var i=null,a=Object.create(null),u=!0,d=null,f=[],p=[],m=0;m<e.length;m++)e[m].fallback&&(u=!1);for(var m=0;m<e.length;m++){var h=e[m];if(h.include)throw Error(`Inheritance is not allowed in stateless lexers`);if(h.error||h.fallback){if(i)throw!h.fallback==!i.fallback?Error(`Multiple `+(h.fallback?`fallback`:`error`)+` rules not allowed (for token '`+h.defaultType+`')`):Error(`fallback and error are mutually exclusive (for token '`+h.defaultType+`')`);i=h}var _=h.match.slice();if(u)for(;_.length&&typeof _[0]==`string`&&_[0].length===1;){var v=_.shift();a[v.charCodeAt(0)]=h}if(h.pop||h.push||h.next){if(!t)throw Error(`State-switching options are not allowed in stateless lexers (for token '`+h.defaultType+`')`);if(h.fallback)throw Error(`State-switching options are not allowed on fallback tokens (for token '`+h.defaultType+`')`)}if(_.length!==0){u=!1,f.push(h);for(var y=0;y<_.length;y++){var b=_[y];if(r(b)){if(d===null)d=b.unicode;else if(d!==b.unicode&&h.fallback===!1)throw Error(`If one rule is /u then all must be`)}}var x=c(_.map(l)),S=new RegExp(x);if(S.test(``))throw Error(`RegExp matches empty string: `+S);if(o(x)>0)throw Error(`RegExp has capture groups: `+S+`
5
5
  Use (?: … ) instead`);if(!h.lineBreaks&&S.test(`
6
6
  `))throw Error(`Rule should declare lineBreaks: `+S);p.push(s(x))}}var C=i&&i.fallback,w=n&&!C?`ym`:`gm`,T=n||C?``:`|`;return d===!0&&(w+=`u`),{regexp:new RegExp(c(p)+T,w),groups:f,fast:a,error:i||g}}function v(e){return new S({start:_(h(e))},`start`)}function y(e,t,n){var r=e&&(e.push||e.next);if(r&&!n[r])throw Error(`Missing state '`+r+`' (in token '`+e.defaultType+`' of state '`+t+`')`);if(e&&e.pop&&+e.pop!=1)throw Error(`pop must be 1 (in token '`+e.defaultType+`' of state '`+t+`')`)}function b(e,t){var n=e.$all?h(e.$all):[];delete e.$all;var r=Object.getOwnPropertyNames(e);t||=r[0];for(var i=Object.create(null),a=0;a<r.length;a++){var o=r[a];i[o]=h(e[o]).concat(n)}for(var a=0;a<r.length;a++)for(var o=r[a],s=i[o],c=Object.create(null),l=0;l<s.length;l++){var u=s[l];if(u.include){var d=[l,1];if(u.include!==o&&!c[u.include]){c[u.include]=!0;var f=i[u.include];if(!f)throw Error(`Cannot include nonexistent state '`+u.include+`' (in state '`+o+`')`);for(var p=0;p<f.length;p++){var m=f[p];s.indexOf(m)===-1&&d.push(m)}}s.splice.apply(s,d),l--}}for(var g=Object.create(null),a=0;a<r.length;a++){var o=r[a];g[o]=_(i[o],!0)}for(var a=0;a<r.length;a++){for(var v=r[a],b=g[v],x=b.groups,l=0;l<x.length;l++)y(x[l],v,g);for(var C=Object.getOwnPropertyNames(b.fast),l=0;l<C.length;l++)y(b.fast[C[l]],v,g)}return new S(g,t)}function x(e){for(var t=typeof Map<`u`,n=t?new Map:Object.create(null),r=Object.getOwnPropertyNames(e),i=0;i<r.length;i++){var a=r[i],o=e[a];(Array.isArray(o)?o:[o]).forEach(function(e){if(typeof e!=`string`)throw Error(`keyword must be string (in keyword '`+a+`')`);t?n.set(e,a):n[e]=a})}return function(e){return t?n.get(e):n[e]}}var S=function(e,t){this.startState=t,this.states=e,this.buffer=``,this.stack=[],this.reset()};S.prototype.reset=function(e,t){return this.buffer=e||``,this.index=0,this.line=t?t.line:1,this.col=t?t.col:1,this.queuedToken=t?t.queuedToken:null,this.queuedText=t?t.queuedText:``,this.queuedThrow=t?t.queuedThrow:null,this.setState(t?t.state:this.startState),this.stack=t&&t.stack?t.stack.slice():[],this},S.prototype.save=function(){return{line:this.line,col:this.col,state:this.state,stack:this.stack.slice(),queuedToken:this.queuedToken,queuedText:this.queuedText,queuedThrow:this.queuedThrow}},S.prototype.setState=function(e){if(!(!e||this.state===e)){this.state=e;var t=this.states[e];this.groups=t.groups,this.error=t.error,this.re=t.regexp,this.fast=t.fast}},S.prototype.popState=function(){this.setState(this.stack.pop())},S.prototype.pushState=function(e){this.stack.push(this.state),this.setState(e)};var C=n?function(e,t){return e.exec(t)}:function(e,t){var n=e.exec(t);return n[0].length===0?null:n};S.prototype._getGroup=function(e){for(var t=this.groups.length,n=0;n<t;n++)if(e[n+1]!==void 0)return this.groups[n];throw Error(`Cannot find token type for matched text`)};function w(){return this.value}if(S.prototype.next=function(){var e=this.index;if(this.queuedGroup){var t=this._token(this.queuedGroup,this.queuedText,e);return this.queuedGroup=null,this.queuedText=``,t}var n=this.buffer;if(e!==n.length){var r=this.fast[n.charCodeAt(e)];if(r)return this._token(r,n.charAt(e),e);var i=this.re;i.lastIndex=e;var a=C(i,n),o=this.error;if(a==null)return this._token(o,n.slice(e,n.length),e);var r=this._getGroup(a),s=a[0];return o.fallback&&a.index!==e?(this.queuedGroup=r,this.queuedText=s,this._token(o,n.slice(e,a.index),e)):this._token(r,s,e)}},S.prototype._token=function(e,t,n){var r=0;if(e.lineBreaks){var i=/\n/g,a=1;if(t===`
7
7
  `)r=1;else for(;i.exec(t);)r++,a=i.lastIndex}var o={type:typeof e.type==`function`&&e.type(t)||e.defaultType,value:typeof e.value==`function`?e.value(t):t,text:t,toString:w,offset:n,lineBreaks:r,line:this.line,col:this.col},s=t.length;if(this.index+=s,this.line+=r,r===0?this.col+=s:this.col=s-a+1,e.shouldThrow)throw Error(this.formatError(o,`invalid syntax`));return e.pop?this.popState():e.push?this.pushState(e.push):e.next&&this.setState(e.next),o},typeof Symbol<`u`&&Symbol.iterator){var T=function(e){this.lexer=e};T.prototype.next=function(){var e=this.lexer.next();return{value:e,done:!e}},T.prototype[Symbol.iterator]=function(){return this},S.prototype[Symbol.iterator]=function(){return new T(this)}}return S.prototype.formatError=function(e,t){if(e==null)var n=this.buffer.slice(this.index),e={text:n,offset:this.index,lineBreaks:n.indexOf(`
8
8
  `)===-1?0:1,line:this.line,col:this.col};var r=2,i=Math.max(e.line-r,1),a=e.line+r,o=String(a).length,s=d(this.buffer,this.line-e.line+r+1).slice(0,5),c=[];c.push(t+` at line `+e.line+` col `+e.col+`:`),c.push(``);for(var l=0;l<s.length;l++){var f=s[l],p=i+l;c.push(u(String(p),o)+` `+f),p===e.line&&c.push(u(``,o+e.col+1)+`^`)}return c.join(`
9
- `)},S.prototype.clone=function(){return new S(this.states,this.state)},S.prototype.has=function(e){return!0},{compile:v,states:b,error:Object.freeze({error:!0}),fallback:Object.freeze({fallback:!0}),keywords:x}})}))(),1),P=N.default.compile({WhiteSpace:{match:/[\t\v\f\ufeff\p{Zs}]+/u,lineBreaks:!0},Lines:{match:/\r?\n|[\r\u2028\u2029]/u,lineBreaks:!0},ObjectKey:/\[?(?:\x23)?(?=[$_\p{ID_Start}\\])(?:[$_\u200C\u200D\p{ID_Continue}]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+\]?(?=:)/u,Punctuator:/--|\+\+|=>|\.{3}|\??\.(?!\d)|(?:&&|\|\||\?\?|[+\-%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2}|\/(?![/*]))=?|[?~,:;[\](){}]/u,BooleanLiteral:/true|false/u,NumericLiteral:/(?:0[xX][\da-fA-F](?:_?[\da-fA-F])*|0[oO][0-7](?:_?[0-7])*|0[bB][01](?:_?[01])*)n?|0n|[1-9](?:_?\d)*n|(?:(?:0(?!\d)|0\d*[89]\d*|[1-9](?:_?\d)*)(?:\.(?:\d(?:_?\d)*)?)?|\.\d(?:_?\d)*)(?:[eE][+-]?\d(?:_?\d)*)?|0[0-7]+/u,StringLiteral:{match:/(?:'(?:(?!')[^\\\n\r]|\\(?:\r\n|[^]))*')|(?:"(?:(?!")[^\\\n\r]|\\(?:\r\n|[^]))*")/u,value:e=>`"${e.slice(1,-1)}"`},Identifier:/(?:\x23)?(?=[$_\p{ID_Start}\\])(?:[$_\u200C\u200D\p{ID_Continue}]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+/u});function F(e,t={}){let n=e.trim().replace(/[,]+$/,``);if(n===``)return`{}`;if(!I(n))throw TypeError(`Unexpected input format`);let r=``;P.reset(n);for(let e of P)if(!(e.type===`WhiteSpace`||e.type===`Lines`)){switch(e.type){case`Identifier`:e.value=`"${t[e.value]||e.value}"`;break;case`ObjectKey`:e.value.slice(0,1)===`[`&&e.value.slice(-1)===`]`?e.value=`"${t[e.value.slice(1,-1)]||e.value.slice(1,-1)}"`:e.value=`"${e.value}"`;break}r+=e.value}return r.replace(/,([}\]])/g,`$1`)}function I(e){return e.startsWith(`{`)&&e.endsWith(`}`)||e.startsWith(`[`)&&e.endsWith(`]`)}var L=/[ \t\v\f\ufeff]+/,R=/(?:(?![\s\x00\x22\x27\x3E\x2F\x3D\x00-\x1F\x7F-\x9F])[^\s\x00-\x1F\x7F-\x9F\x22\x27\x3E\x2F\x3D])+/,z=/[.#](?:(?!-?\d)(?:[a-zA-Z0-9\xA0-\uFFFF_-])+)/,B=RegExp(`(?<==)(?:true|false)`),V=RegExp(`(?<==)-?(?:(?:0[xX][\\da-fA-F](?:_?[\\da-fA-F])*|0[oO][0-7](?:_?[0-7])*|0[bB][01](?:_?[01])*)n?|-?0n|-?[1-9](?:_?\\d)*n|(?:(?:0(?!\\d)|0\\d*[89]\\d*|[1-9](?:_?\\d)*)(?:\\.(?:\\d(?:_?\\d)*)?)?|\\.\\d(?:_?\\d)*)(?:[eE][+-]?\\d(?:_?\\d)*)?|-?0[0-7]+)`),H=RegExp(`(?<==)'(?!.*&[0-9a-zA-Z]+;)[^'\\\\]*(?:\\\\.|\\\\n[^"\\\\]*|&[^0-9a-zA-Z;]*)*'`),U=RegExp(`(?<==)"(?!.*&[0-9a-zA-Z]+;)[^"\\\\]*(?:\\\\.|\\\\n[^"\\\\]*|&[^0-9a-zA-Z;]*)*"`),W=RegExp(`(?<==)[^"\\s'\`=<>\\x00]+`);function G(e){let t=typeof e==`string`&&/^(['"]).*?\1$/.test(e)?e.slice(1,-1):e;return t.startsWith(`[`)&&t.endsWith(`]`)||t.startsWith(`{`)&&t.endsWith(`}`)?JSON.parse(F(t)):t}function K(e){let t=``;for(let n in e){let r=e[n];switch(typeof r){case`object`:t+=` ${n}='${JSON.stringify(r)}'`;break;case`string`:t+=` ${n}="${r}"`;break;case`number`:case`boolean`:t+=` ${n}=${r}`;break}}return t.slice(1)}var q=N.default.states({main:{WhiteSpace:L,AttributeShorthand:z,BooleanLiteral:{match:B,value(e){return e===`true`}},NumericLiteral:{match:V,value(e){let t=Number(e);return Number.isNaN(t)?Number(e.replace(/_|n$/g,``)):Number(e)}},SingleQuotedValue:{match:H,value:G,type:()=>`StringLiteral`},DoubleQuotedLiteral:{match:U,value:G,type:()=>`StringLiteral`},UnquotedLiteral:{match:W,value:G,type:()=>`StringLiteral`},AttributeName:R,Separator:`=`}});function J(e){let t=null,n=q.reset(e),r={};Object.defineProperties(r,{toString:{writable:!1,enumerable:!1,configurable:!1,value:()=>K(r)},getTokens:{writable:!1,enumerable:!1,configurable:!1,value:()=>Array.from(q.reset(e))}});let i=[];for(let{type:e,value:a}of n)switch(e){case`AttributeName`:t=a,r[t]=t;break;case`AttributeShorthand`:a[0]===`.`?i.push(a.slice(1)):a[0]===`#`&&(r.id=a.slice(1));break;case`BooleanLiteral`:case`NumericLiteral`:case`StringLiteral`:t&&=(t===`class`&&i.push(a),r[t]=a,null);break}return i.length&&(r.class=i.join(` `)),r}function Y(){e.markdownPipeline.remark(`markee-diagrams`,function(){return t=>{let n=this.data().pluginConfig(`lightbox`),r=typeof n==`boolean`?n:n?.enabled??!0,i=0;e.markdownPipeline.visit(t,`code`,(e,t,n)=>{let a=e.lang?.trim()?.toLowerCase();if(!n||t===void 0||a!==`mermaid`&&a!==`dbml`||(e.meta??``).trim().startsWith(`kroki`))return;let o=m(e.value??``),s=J(e.meta??``),c=e.data?.hProperties?.id,l=v(s,`id`),u=x(s,`skip-lightbox`)||x(s,`off-glb`),d=x(s,`force-lightbox`)||x(s,`on-glb`),f=b(s,`lightbox`,r);u?f=!1:d&&(f=!0);let p=(c?String(c):l)||`markee-diagram-${i++}`,h=[a,`diagram`,...y(s).filter(e=>e!==a)].join(` `),_=`<markee-diagram id="${g(p)}" class="${g(h)}" data-kind="${a}" data-source="${o}"></markee-diagram>`,S=`<a class='glightbox' href='#' data-content='${`<markee-diagram class="${g(h)}" data-kind="${a}" data-source="${o}"></markee-diagram>`.replaceAll(`'`,`&#39;`)}' data-width='100vw' data-height='auto' data-draggable='false'>${_}</a>`;n.children.splice(t,1,{type:`html`,value:f?S:_})})}})}M(),Y();export{d as a,l as i,c as n,p as o,s as r,f as s,T as t};
9
+ `)},S.prototype.clone=function(){return new S(this.states,this.state)},S.prototype.has=function(e){return!0},{compile:v,states:b,error:Object.freeze({error:!0}),fallback:Object.freeze({fallback:!0}),keywords:x}})}))(),1),P=N.default.compile({WhiteSpace:{match:/[\t\v\f\ufeff\p{Zs}]+/u,lineBreaks:!0},Lines:{match:/\r?\n|[\r\u2028\u2029]/u,lineBreaks:!0},ObjectKey:/\[?(?:\x23)?(?=[$_\p{ID_Start}\\])(?:[$_\u200C\u200D\p{ID_Continue}]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+\]?(?=:)/u,Punctuator:/--|\+\+|=>|\.{3}|\??\.(?!\d)|(?:&&|\|\||\?\?|[+\-%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2}|\/(?![/*]))=?|[?~,:;[\](){}]/u,BooleanLiteral:/true|false/u,NumericLiteral:/(?:0[xX][\da-fA-F](?:_?[\da-fA-F])*|0[oO][0-7](?:_?[0-7])*|0[bB][01](?:_?[01])*)n?|0n|[1-9](?:_?\d)*n|(?:(?:0(?!\d)|0\d*[89]\d*|[1-9](?:_?\d)*)(?:\.(?:\d(?:_?\d)*)?)?|\.\d(?:_?\d)*)(?:[eE][+-]?\d(?:_?\d)*)?|0[0-7]+/u,StringLiteral:{match:/(?:'(?:(?!')[^\\\n\r]|\\(?:\r\n|[^]))*')|(?:"(?:(?!")[^\\\n\r]|\\(?:\r\n|[^]))*")/u,value:e=>`"${e.slice(1,-1)}"`},Identifier:/(?:\x23)?(?=[$_\p{ID_Start}\\])(?:[$_\u200C\u200D\p{ID_Continue}]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+/u});function F(e,t={}){let n=e.trim().replace(/[,]+$/,``);if(n===``)return`{}`;if(!I(n))throw TypeError(`Unexpected input format`);let r=``;P.reset(n);for(let e of P)if(!(e.type===`WhiteSpace`||e.type===`Lines`)){switch(e.type){case`Identifier`:e.value=`"${t[e.value]||e.value}"`;break;case`ObjectKey`:e.value.slice(0,1)===`[`&&e.value.slice(-1)===`]`?e.value=`"${t[e.value.slice(1,-1)]||e.value.slice(1,-1)}"`:e.value=`"${e.value}"`;break}r+=e.value}return r.replace(/,([}\]])/g,`$1`)}function I(e){return e.startsWith(`{`)&&e.endsWith(`}`)||e.startsWith(`[`)&&e.endsWith(`]`)}var L=/[ \t\v\f\ufeff]+/,R=/(?:(?![\s\x00\x22\x27\x3E\x2F\x3D\x00-\x1F\x7F-\x9F])[^\s\x00-\x1F\x7F-\x9F\x22\x27\x3E\x2F\x3D])+/,z=/[.#](?:(?!-?\d)(?:[a-zA-Z0-9\xA0-\uFFFF_-])+)/,B=RegExp(`(?<==)(?:true|false)`),V=RegExp(`(?<==)-?(?:(?:0[xX][\\da-fA-F](?:_?[\\da-fA-F])*|0[oO][0-7](?:_?[0-7])*|0[bB][01](?:_?[01])*)n?|-?0n|-?[1-9](?:_?\\d)*n|(?:(?:0(?!\\d)|0\\d*[89]\\d*|[1-9](?:_?\\d)*)(?:\\.(?:\\d(?:_?\\d)*)?)?|\\.\\d(?:_?\\d)*)(?:[eE][+-]?\\d(?:_?\\d)*)?|-?0[0-7]+)`),H=RegExp(`(?<==)'(?!.*&[0-9a-zA-Z]+;)[^'\\\\]*(?:\\\\.|\\\\n[^"\\\\]*|&[^0-9a-zA-Z;]*)*'`),U=RegExp(`(?<==)"(?!.*&[0-9a-zA-Z]+;)[^"\\\\]*(?:\\\\.|\\\\n[^"\\\\]*|&[^0-9a-zA-Z;]*)*"`),W=RegExp(`(?<==)[^"\\s'\`=<>\\x00]+`);function G(e){let t=typeof e==`string`&&/^(['"]).*?\1$/.test(e)?e.slice(1,-1):e;return t.startsWith(`[`)&&t.endsWith(`]`)||t.startsWith(`{`)&&t.endsWith(`}`)?JSON.parse(F(t)):t}function K(e){let t=``;for(let n in e){let r=e[n];switch(typeof r){case`object`:t+=` ${n}='${JSON.stringify(r)}'`;break;case`string`:t+=` ${n}="${r}"`;break;case`number`:case`boolean`:t+=` ${n}=${r}`;break}}return t.slice(1)}var q=N.default.states({main:{WhiteSpace:L,AttributeShorthand:z,BooleanLiteral:{match:B,value(e){return e===`true`}},NumericLiteral:{match:V,value(e){let t=Number(e);return Number.isNaN(t)?Number(e.replace(/_|n$/g,``)):Number(e)}},SingleQuotedValue:{match:H,value:G,type:()=>`StringLiteral`},DoubleQuotedLiteral:{match:U,value:G,type:()=>`StringLiteral`},UnquotedLiteral:{match:W,value:G,type:()=>`StringLiteral`},AttributeName:R,Separator:`=`}});function J(e){let t=null,n=q.reset(e),r={};Object.defineProperties(r,{toString:{writable:!1,enumerable:!1,configurable:!1,value:()=>K(r)},getTokens:{writable:!1,enumerable:!1,configurable:!1,value:()=>Array.from(q.reset(e))}});let i=[];for(let{type:e,value:a}of n)switch(e){case`AttributeName`:t=a,r[t]=t;break;case`AttributeShorthand`:a[0]===`.`?i.push(a.slice(1)):a[0]===`#`&&(r.id=a.slice(1));break;case`BooleanLiteral`:case`NumericLiteral`:case`StringLiteral`:t&&=(t===`class`&&i.push(a),r[t]=a,null);break}return i.length&&(r.class=i.join(` `)),r}function Y(){e.markdownPipeline.remark(`markee-diagrams`,function(){return t=>{let{pluginConfig:n}=this.data(),r=n(`lightbox`),i=typeof r==`boolean`?r:r?.enabled??!0,a=0;e.markdownPipeline.visit(t,`code`,(e,t,n)=>{let r=e.lang?.trim()?.toLowerCase();if(!n||t===void 0||r!==`mermaid`&&r!==`dbml`||(e.meta??``).trim().startsWith(`kroki`))return;let o=m(e.value??``),s=J(e.meta??``),c=e.data?.hProperties?.id,l=v(s,`id`),u=x(s,`skip-lightbox`)||x(s,`off-glb`),d=x(s,`force-lightbox`)||x(s,`on-glb`),f=b(s,`lightbox`,i);u?f=!1:d&&(f=!0);let p=(c?String(c):l)||`markee-diagram-${a++}`,h=[r,`diagram`,...y(s).filter(e=>e!==r)].join(` `),_=`<markee-diagram id="${g(p)}" class="${g(h)}" data-kind="${r}" data-source="${o}"></markee-diagram>`,S=`<a class='glightbox' href='#' data-content='${`<markee-diagram class="${g(h)}" data-kind="${r}" data-source="${o}"></markee-diagram>`.replaceAll(`'`,`&#39;`)}' data-width='100vw' data-height='auto' data-draggable='false'>${_}</a>`;n.children.splice(t,1,{type:`html`,value:f?S:_})})}})}M(),Y();export{d as a,l as i,c as n,p as o,s as r,f as s,T as t};
@@ -0,0 +1 @@
1
+ @layer markee-extension{markee-diagram{margin:1.2rem 0;display:block}a.glightbox>markee-diagram{position:relative}a.glightbox>markee-diagram:after{content:"";z-index:1;cursor:pointer;background:0 0;position:absolute;inset:0}.ginlined-content.diagram{text-align:center;min-width:100vw;padding:1rem 6rem}markee-diagram .markee-diagram-status,markee-diagram .markee-diagram-error{border:1px solid var(--mk-color-border,oklch(88.5% 0 0));background:var(--mk-color-background,oklch(98.5% 0 0));color:var(--mk-color-text,oklch(32% 0 0));border-radius:.5rem;padding:.75rem .9rem}markee-diagram .markee-diagram-status{font-style:italic}markee-diagram .markee-diagram-error{border-inline-start:.25rem solid var(--mk-admonition-color-danger)}markee-diagram .markee-diagram-error pre{white-space:pre-wrap;margin:.6rem 0 0;font-size:.875rem;overflow:auto}markee-diagram .markee-diagram-mermaid,markee-diagram .markee-diagram-dbml{overflow-x:auto}markee-diagram .markee-diagram-mermaid>svg,markee-diagram .markee-diagram-dbml>svg{max-width:100%;height:auto;margin:0 auto;display:block}markee-diagram .markee-diagram-dbml,markee-diagram .markee-diagram-dbml *{pointer-events:none!important}[data-color-scheme=dark] markee-diagram{filter:invert(88%)hue-rotate(180deg)}}
package/package.json CHANGED
@@ -1,23 +1,32 @@
1
1
  {
2
2
  "name": "@markee/diagrams",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Markee Mermaid and DBML diagram support",
5
5
  "license": "MIT",
6
+ "repository": "https://github.com/markeejs/markee",
6
7
  "main": "extension.yaml",
7
8
  "publishConfig": {
8
9
  "access": "public"
9
10
  },
11
+ "dependencies": {
12
+ "@markee/pipeline": "0.3.0"
13
+ },
10
14
  "devDependencies": {
11
- "@markee/vite": "0.1.0",
15
+ "@markee/tsconfig": "0.1.0",
16
+ "@markee/vite": "0.3.0",
17
+ "@markee/vitest": "0.1.0",
12
18
  "@softwaretechnik/dbml-renderer": "^1.0.31",
13
19
  "attributes-parser": "^2.2.3",
14
20
  "d3-graphviz": "^5.6.0",
15
21
  "d3-selection": "^3.0.0",
22
+ "jsdom": "^29.0.0",
16
23
  "mermaid": "^11.13.0",
17
- "vite": "^8.0.0"
24
+ "vite": "^8.0.0",
25
+ "vitest": "^3.2.4"
18
26
  },
19
27
  "scripts": {
20
28
  "build": "vite build",
21
- "lint:tsc": "tsc --noEmit"
29
+ "lint:tsc": "tsc --noEmit",
30
+ "test": "vitest run --coverage"
22
31
  }
23
32
  }
@@ -0,0 +1,319 @@
1
+ import { describe, expect, it, vi } from 'vitest'
2
+
3
+ import { encodeText } from './helpers.js'
4
+
5
+ const runtime = vi.hoisted(() => ({
6
+ loadMermaid: vi.fn(),
7
+ loadDiagramRuntime: vi.fn(),
8
+ }))
9
+
10
+ vi.mock('./runtime.js', () => ({
11
+ loadMermaid: runtime.loadMermaid,
12
+ loadDiagramRuntime: runtime.loadDiagramRuntime,
13
+ }))
14
+
15
+ let elementImport: Promise<void> | null = null
16
+
17
+ async function ensureElementImported() {
18
+ elementImport ??= import('./element.js').then(
19
+ ({ registerDiagramElement }) => {
20
+ registerDiagramElement()
21
+ },
22
+ )
23
+ await elementImport
24
+ }
25
+
26
+ function createDeferred<T>() {
27
+ let resolve!: (value: T) => void
28
+ let reject!: (reason?: unknown) => void
29
+ const promise = new Promise<T>((res, rej) => {
30
+ resolve = res
31
+ reject = rej
32
+ })
33
+ return { promise, resolve, reject }
34
+ }
35
+
36
+ async function flushAsyncWork(iterations = 6) {
37
+ for (let index = 0; index < iterations; index++) {
38
+ await Promise.resolve()
39
+ }
40
+ }
41
+
42
+ function createDiagram(dataset: Record<string, string>) {
43
+ const element = document.createElement('markee-diagram') as HTMLElement & {
44
+ connectedCallback(): void
45
+ disconnectedCallback(): void
46
+ }
47
+ Object.assign(element.dataset, dataset)
48
+ return element
49
+ }
50
+
51
+ describe('@markee/diagrams element', () => {
52
+ it('loads the custom element definition and handles basic input errors', async () => {
53
+ runtime.loadMermaid.mockReset()
54
+ runtime.loadDiagramRuntime.mockReset()
55
+ await ensureElementImported()
56
+
57
+ expect(
58
+ window.customElements.get('markee-diagram') as CustomElementConstructor,
59
+ ).toBeDefined()
60
+
61
+ const unsupported = createDiagram({ source: encodeText('graph TD;A-->B') })
62
+ document.body.append(unsupported)
63
+ await flushAsyncWork()
64
+ expect(unsupported.textContent).toContain('Unsupported diagram type.')
65
+
66
+ const missingSource = createDiagram({ kind: 'mermaid' })
67
+ document.body.append(missingSource)
68
+ await flushAsyncWork()
69
+ expect(missingSource.textContent).toContain('Missing diagram source.')
70
+
71
+ const invalidSource = createDiagram({ kind: 'dbml', source: '%' })
72
+ document.body.append(invalidSource)
73
+ await flushAsyncWork()
74
+ expect(invalidSource.textContent).toContain(
75
+ 'Could not decode diagram source.',
76
+ )
77
+ })
78
+
79
+ it('renders mermaid diagrams with and without bind hooks', async () => {
80
+ runtime.loadMermaid.mockReset()
81
+ runtime.loadDiagramRuntime.mockReset()
82
+
83
+ const bindFunctions = vi.fn()
84
+ const firstRender = vi.fn().mockResolvedValue({
85
+ svg: '<svg>first</svg>',
86
+ bindFunctions,
87
+ })
88
+ const secondRender = vi.fn().mockResolvedValue({
89
+ svg: '<svg>second</svg>',
90
+ })
91
+
92
+ runtime.loadMermaid
93
+ .mockResolvedValueOnce({ render: firstRender })
94
+ .mockResolvedValueOnce({ render: secondRender })
95
+
96
+ await ensureElementImported()
97
+
98
+ const first = createDiagram({
99
+ kind: 'mermaid',
100
+ source: encodeText('graph TD;A-->B'),
101
+ })
102
+ document.body.append(first)
103
+ await flushAsyncWork()
104
+
105
+ expect(first.innerHTML).toContain('<svg>first</svg>')
106
+ expect(bindFunctions).toHaveBeenCalledWith(
107
+ first.querySelector('.markee-diagram-mermaid'),
108
+ )
109
+
110
+ const second = createDiagram({
111
+ kind: 'mermaid',
112
+ source: encodeText('graph LR;A-->B'),
113
+ })
114
+ document.body.append(second)
115
+ await flushAsyncWork()
116
+
117
+ expect(second.innerHTML).toContain('<svg>second</svg>')
118
+ })
119
+
120
+ it('stops stale mermaid work before and after async rendering and reports failures', async () => {
121
+ runtime.loadMermaid.mockReset()
122
+ runtime.loadDiagramRuntime.mockReset()
123
+
124
+ const beforeLoad = createDeferred<{ render: ReturnType<typeof vi.fn> }>()
125
+ const renderBeforeLoad = vi.fn()
126
+ const afterRender = createDeferred<{
127
+ svg: string
128
+ bindFunctions?: Function
129
+ }>()
130
+ const renderAfterLoad = vi.fn(() => afterRender.promise)
131
+ const renderFailure = vi.fn().mockRejectedValue(new Error('boom'))
132
+
133
+ runtime.loadMermaid
134
+ .mockReturnValueOnce(beforeLoad.promise)
135
+ .mockResolvedValueOnce({ render: renderAfterLoad })
136
+ .mockResolvedValueOnce({ render: renderFailure })
137
+
138
+ await ensureElementImported()
139
+
140
+ const staleBeforeLoad = createDiagram({
141
+ kind: 'mermaid',
142
+ source: encodeText('graph TD;A-->B'),
143
+ })
144
+ document.body.append(staleBeforeLoad)
145
+ staleBeforeLoad.disconnectedCallback()
146
+ beforeLoad.resolve({ render: renderBeforeLoad })
147
+ await flushAsyncWork()
148
+
149
+ expect(renderBeforeLoad).not.toHaveBeenCalled()
150
+
151
+ const staleAfterRender = createDiagram({
152
+ kind: 'mermaid',
153
+ source: encodeText('graph TD;B-->C'),
154
+ })
155
+ document.body.append(staleAfterRender)
156
+ await flushAsyncWork(3)
157
+ staleAfterRender.disconnectedCallback()
158
+ afterRender.resolve({ svg: '<svg>late</svg>' })
159
+ await flushAsyncWork()
160
+
161
+ expect(staleAfterRender.innerHTML).not.toContain('late')
162
+
163
+ const failure = createDiagram({
164
+ kind: 'mermaid',
165
+ source: encodeText('graph TD;C-->D'),
166
+ })
167
+ document.body.append(failure)
168
+ await flushAsyncWork()
169
+
170
+ expect(failure.textContent).toContain('MERMAID rendering failed.')
171
+ expect(failure.textContent).toContain('boom')
172
+ })
173
+
174
+ it('renders dbml diagrams, rerenders with cleanup, and reports empty output', async () => {
175
+ runtime.loadMermaid.mockReset()
176
+ runtime.loadDiagramRuntime.mockReset()
177
+
178
+ const destroy = vi.fn()
179
+ const onerror = vi.fn()
180
+ const renderDot = vi.fn((_dot: string, done: () => void) => done())
181
+ const graphviz = { onerror, renderDot, destroy }
182
+ const graphvizFactory = vi.fn(() => graphviz)
183
+ const select = vi.fn(() => ({ graphviz: graphvizFactory }))
184
+
185
+ runtime.loadDiagramRuntime
186
+ .mockResolvedValueOnce({
187
+ dbmlRun: vi.fn(() => 'digraph { a -> b }'),
188
+ select,
189
+ })
190
+ .mockResolvedValueOnce({
191
+ dbmlRun: vi.fn(() => 'digraph { a -> c }'),
192
+ select,
193
+ })
194
+ .mockResolvedValueOnce({
195
+ dbmlRun: vi.fn(() => ' '),
196
+ select: vi.fn(),
197
+ })
198
+
199
+ await ensureElementImported()
200
+
201
+ const element = createDiagram({
202
+ kind: 'dbml',
203
+ source: encodeText('Table users {}'),
204
+ })
205
+ document.body.append(element)
206
+ await flushAsyncWork()
207
+
208
+ expect(element.querySelector('.markee-diagram-dbml')).not.toBeNull()
209
+ expect(select).toHaveBeenCalled()
210
+ expect(onerror).toHaveBeenCalled()
211
+
212
+ element.connectedCallback()
213
+ await flushAsyncWork()
214
+ expect(destroy).toHaveBeenCalled()
215
+
216
+ const empty = createDiagram({
217
+ kind: 'dbml',
218
+ source: encodeText('Table posts {}'),
219
+ })
220
+ document.body.append(empty)
221
+ await flushAsyncWork()
222
+
223
+ expect(empty.textContent).toContain(
224
+ 'DBML rendering produced an empty graph.',
225
+ )
226
+ })
227
+
228
+ it('handles stale dbml work and graphviz failures', async () => {
229
+ runtime.loadMermaid.mockReset()
230
+ runtime.loadDiagramRuntime.mockReset()
231
+
232
+ const beforeRuntime = createDeferred<{
233
+ dbmlRun: ReturnType<typeof vi.fn>
234
+ select: ReturnType<typeof vi.fn>
235
+ }>()
236
+ const dbmlRun = vi.fn(() => 'digraph { a -> b }')
237
+ const afterRenderDone = createDeferred<void>()
238
+ const destroy = vi.fn()
239
+ const lateGraphviz = {
240
+ onerror: vi.fn(),
241
+ renderDot: vi.fn((_dot: string, done: () => void) => {
242
+ afterRenderDone.promise.then(done)
243
+ }),
244
+ destroy,
245
+ }
246
+ const selectLate = vi.fn(() => ({
247
+ graphviz: vi.fn(() => lateGraphviz),
248
+ }))
249
+ const errorGraphviz = {
250
+ onerror(handler: (message: string) => void) {
251
+ handler('bad graph')
252
+ },
253
+ renderDot: vi.fn(),
254
+ }
255
+
256
+ runtime.loadDiagramRuntime
257
+ .mockReturnValueOnce(beforeRuntime.promise)
258
+ .mockResolvedValueOnce({
259
+ dbmlRun: vi.fn(() => 'digraph { b -> c }'),
260
+ select: selectLate,
261
+ })
262
+ .mockResolvedValueOnce({
263
+ dbmlRun: vi.fn(() => 'digraph { c -> d }'),
264
+ select: vi.fn(() => ({
265
+ graphviz: vi.fn(() => errorGraphviz),
266
+ })),
267
+ })
268
+ .mockResolvedValueOnce({
269
+ dbmlRun,
270
+ select: vi.fn(() => {
271
+ throw new Error('select failed')
272
+ }),
273
+ })
274
+
275
+ await ensureElementImported()
276
+
277
+ const staleBeforeRuntime = createDiagram({
278
+ kind: 'dbml',
279
+ source: encodeText('Table stale {}'),
280
+ })
281
+ document.body.append(staleBeforeRuntime)
282
+ staleBeforeRuntime.disconnectedCallback()
283
+ beforeRuntime.resolve({ dbmlRun, select: vi.fn() })
284
+ await flushAsyncWork()
285
+ expect(dbmlRun).not.toHaveBeenCalled()
286
+
287
+ const staleAfterRender = createDiagram({
288
+ kind: 'dbml',
289
+ source: encodeText('Table late {}'),
290
+ })
291
+ document.body.append(staleAfterRender)
292
+ await flushAsyncWork(3)
293
+ staleAfterRender.disconnectedCallback()
294
+ afterRenderDone.resolve()
295
+ await flushAsyncWork()
296
+
297
+ expect(destroy).toHaveBeenCalled()
298
+ expect(staleAfterRender.textContent).not.toContain('Diagram error')
299
+
300
+ const graphvizFailure = createDiagram({
301
+ kind: 'dbml',
302
+ source: encodeText('Table broken {}'),
303
+ })
304
+ document.body.append(graphvizFailure)
305
+ await flushAsyncWork()
306
+
307
+ expect(graphvizFailure.textContent).toContain('DBML rendering failed.')
308
+ expect(graphvizFailure.textContent).toContain('bad graph')
309
+
310
+ const selectFailure = createDiagram({
311
+ kind: 'dbml',
312
+ source: encodeText('Table explode {}'),
313
+ })
314
+ document.body.append(selectFailure)
315
+ await flushAsyncWork()
316
+
317
+ expect(selectFailure.textContent).toContain('select failed')
318
+ })
319
+ })
@@ -0,0 +1,51 @@
1
+ import { describe, expect, it } from 'vitest'
2
+
3
+ import {
4
+ decodeText,
5
+ encodeText,
6
+ escapeHtml,
7
+ getBooleanFromMeta,
8
+ getClassList,
9
+ getStringFromMeta,
10
+ hasClass,
11
+ toErrorMessage,
12
+ } from './helpers.js'
13
+
14
+ describe('@markee/diagrams helpers', () => {
15
+ it('encodes and decodes text values', () => {
16
+ const encoded = encodeText('héllo <diagram>')
17
+ expect(decodeText(encoded)).toBe('héllo <diagram>')
18
+ })
19
+
20
+ it('formats errors and escapes html', () => {
21
+ expect(escapeHtml('&<>"')).toBe('&amp;&lt;&gt;&quot;')
22
+ expect(toErrorMessage(new Error('boom'))).toBe('boom')
23
+ expect(toErrorMessage('oops')).toBe('oops')
24
+ expect(toErrorMessage({})).toBe('Unknown error')
25
+ })
26
+
27
+ it('reads metadata strings, classes, booleans, and class presence', () => {
28
+ const meta = {
29
+ class: 'one two on-glb',
30
+ truthy: 'yes',
31
+ falsy: 'off',
32
+ num: 3,
33
+ invalid: {},
34
+ }
35
+
36
+ expect(getStringFromMeta(meta, 'class')).toBe('one two on-glb')
37
+ expect(getStringFromMeta(meta, 'num')).toBe('3')
38
+ expect(getStringFromMeta(meta, 'missing')).toBe('')
39
+ expect(getStringFromMeta(meta, 'invalid')).toBe('')
40
+ expect(getClassList(meta)).toEqual(['one', 'two', 'on-glb'])
41
+ expect(getClassList({})).toEqual([])
42
+ expect(getBooleanFromMeta(meta, 'truthy')).toBe(true)
43
+ expect(getBooleanFromMeta({ enabled: 'enabled' }, 'enabled')).toBe(true)
44
+ expect(getBooleanFromMeta({ disabled: '0' }, 'disabled', true)).toBe(false)
45
+ expect(getBooleanFromMeta(meta, 'falsy', true)).toBe(false)
46
+ expect(getBooleanFromMeta({ maybe: 'unknown' }, 'maybe', true)).toBe(true)
47
+ expect(hasClass(meta, 'two')).toBe(true)
48
+ expect(hasClass(meta, 'missing')).toBe(false)
49
+ expect(hasClass({ class: true }, 'two')).toBe(false)
50
+ })
51
+ })
package/src/index.css CHANGED
@@ -25,10 +25,10 @@
25
25
 
26
26
  markee-diagram .markee-diagram-status,
27
27
  markee-diagram .markee-diagram-error {
28
- border: 1px solid var(--mk-color-border, #d9d9d9);
28
+ border: 1px solid var(--mk-color-border, oklch(88.5% 0 0));
29
29
  border-radius: 0.5rem;
30
- background: var(--mk-color-background, #fafafa);
31
- color: var(--mk-color-text, #333);
30
+ background: var(--mk-color-background, oklch(98.5% 0 0));
31
+ color: var(--mk-color-text, oklch(32% 0 0));
32
32
  padding: 0.75rem 0.9rem;
33
33
  }
34
34
 
@@ -37,7 +37,7 @@
37
37
  }
38
38
 
39
39
  markee-diagram .markee-diagram-error {
40
- border-left: 4px solid var(--mk-admonition-color-danger);
40
+ border-inline-start: 0.25rem solid var(--mk-admonition-color-danger);
41
41
  }
42
42
 
43
43
  markee-diagram .markee-diagram-error pre {
@@ -0,0 +1,29 @@
1
+ import { describe, expect, it, vi } from 'vitest'
2
+
3
+ async function importMain() {
4
+ vi.resetModules()
5
+
6
+ const registerDiagramElement = vi.fn()
7
+ const registerDiagramsRemark = vi.fn()
8
+
9
+ vi.doMock('./element.js', () => ({
10
+ registerDiagramElement,
11
+ }))
12
+ vi.doMock('./remark.js', () => ({
13
+ registerDiagramsRemark,
14
+ }))
15
+
16
+ await import('./main.js')
17
+
18
+ return { registerDiagramElement, registerDiagramsRemark }
19
+ }
20
+
21
+ describe('@markee/diagrams main', () => {
22
+ it('registers the diagram element and remark plugin on import', async () => {
23
+ const { registerDiagramElement, registerDiagramsRemark } =
24
+ await importMain()
25
+
26
+ expect(registerDiagramElement).toHaveBeenCalledTimes(1)
27
+ expect(registerDiagramsRemark).toHaveBeenCalledTimes(1)
28
+ })
29
+ })