agentic-mermaid 0.5.3 → 0.5.4

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 (135) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/agent-core.d.ts +7 -7
  3. package/dist/agent-core.js +1 -1
  4. package/dist/agent.d.ts +7 -7
  5. package/dist/agent.js +1 -1
  6. package/dist/agentic-mermaid-mcp.js +1 -1
  7. package/dist/am.js +1 -1
  8. package/dist/browser-lazy/chunks/{agentic-producer-core-CC6OOLDW.js → agentic-producer-core-ECZ3CMZM.js} +1 -1
  9. package/dist/browser-lazy/chunks/{architecture-QUFVKYJR.js → architecture-H5LTMKQW.js} +6 -6
  10. package/dist/browser-lazy/chunks/{block-6J3Q63BO.js → block-566X6FNV.js} +5 -5
  11. package/dist/browser-lazy/chunks/{builtin-backends-7SOZZHPF.js → builtin-backends-VAFEZXKY.js} +6 -6
  12. package/dist/browser-lazy/chunks/{c4-SQVBZAKJ.js → c4-ZXFDLBFK.js} +5 -5
  13. package/dist/browser-lazy/chunks/{chunk-5X6MJX3H.js → chunk-2JQXRKBC.js} +1 -1
  14. package/dist/browser-lazy/chunks/{chunk-E2WMJZNM.js → chunk-37FZNMPR.js} +1 -1
  15. package/dist/browser-lazy/chunks/{chunk-TYZOZXUJ.js → chunk-3JTYTXA6.js} +6 -6
  16. package/dist/browser-lazy/chunks/{chunk-PQGPS2YV.js → chunk-4NILRBC7.js} +1 -1
  17. package/dist/browser-lazy/chunks/{chunk-AMJLVPUB.js → chunk-5LKPDHPC.js} +2 -2
  18. package/dist/browser-lazy/chunks/{chunk-BY2CPG6B.js → chunk-62MR3LWJ.js} +1 -1
  19. package/dist/browser-lazy/chunks/{chunk-J7FFAFQF.js → chunk-64JFHCJC.js} +1 -1
  20. package/dist/browser-lazy/chunks/chunk-6GPDLZFQ.js +1 -0
  21. package/dist/browser-lazy/chunks/{chunk-VWVZGQE2.js → chunk-6UOOATQR.js} +1 -1
  22. package/dist/browser-lazy/chunks/chunk-7TTFBJYA.js +1 -0
  23. package/dist/browser-lazy/chunks/chunk-7UFOFWBA.js +20 -0
  24. package/dist/browser-lazy/chunks/{chunk-5B2Z7575.js → chunk-A7V5VDKN.js} +1 -1
  25. package/dist/browser-lazy/chunks/chunk-CPO5P4L2.js +1 -0
  26. package/dist/browser-lazy/chunks/chunk-EIYLJ4FI.js +20 -0
  27. package/dist/browser-lazy/chunks/{chunk-X2UYKWKM.js → chunk-G4JBA7HU.js} +3 -3
  28. package/dist/browser-lazy/chunks/{chunk-2UIA2IME.js → chunk-IUI4DYC3.js} +1 -1
  29. package/dist/browser-lazy/chunks/{chunk-QA6GJQ4X.js → chunk-J57YRC2M.js} +1 -1
  30. package/dist/browser-lazy/chunks/{chunk-BU5LHXNJ.js → chunk-LBXXKLIR.js} +3 -3
  31. package/dist/browser-lazy/chunks/chunk-NKW2ZNCD.js +1 -0
  32. package/dist/browser-lazy/chunks/{chunk-ICC7HBJX.js → chunk-O34YYEQV.js} +1 -1
  33. package/dist/browser-lazy/chunks/{chunk-UL6NDWLL.js → chunk-OBI5U5XU.js} +1 -1
  34. package/dist/browser-lazy/chunks/{chunk-YCEICNM6.js → chunk-OFOS57WQ.js} +1 -1
  35. package/dist/browser-lazy/chunks/{chunk-OZ443IVJ.js → chunk-PSZEE64O.js} +7 -7
  36. package/dist/browser-lazy/chunks/{chunk-SZELX2EJ.js → chunk-PXTLV57R.js} +1 -1
  37. package/dist/browser-lazy/chunks/{chunk-HLWUNUCM.js → chunk-QVSZOF5M.js} +1 -1
  38. package/dist/browser-lazy/chunks/{chunk-2GPK4VFF.js → chunk-TT5GR5EJ.js} +1 -1
  39. package/dist/browser-lazy/chunks/{chunk-DF6765YX.js → chunk-V6I2VGNQ.js} +5 -5
  40. package/dist/browser-lazy/chunks/{chunk-CN7WTBWB.js → chunk-VRZKI33U.js} +1 -1
  41. package/dist/browser-lazy/chunks/{chunk-2SH76OTH.js → chunk-XHU3A432.js} +1 -1
  42. package/dist/browser-lazy/chunks/{chunk-NO7ZIVRU.js → chunk-YVNJDVQO.js} +1 -1
  43. package/dist/browser-lazy/chunks/chunk-Z7UHFVKN.js +6 -0
  44. package/dist/browser-lazy/chunks/{class-5QA4SCTS.js → class-XIFNVBFE.js} +8 -8
  45. package/dist/{zenuml/chunks/decode-BWERFDGK.js → browser-lazy/chunks/decode-5MFOG3AZ.js} +1 -1
  46. package/dist/browser-lazy/chunks/{elk.bundled-L4CADV5W.js → elk.bundled-RYWHIS5N.js} +8 -8
  47. package/dist/browser-lazy/chunks/er-VEUYJBGG.js +11 -0
  48. package/dist/browser-lazy/chunks/{eventmodeling-2BPLHWRN.js → eventmodeling-G7DITZX7.js} +10 -10
  49. package/dist/browser-lazy/chunks/{flowchart-NEIMZTB5.js → flowchart-SSFIU4EU.js} +1 -1
  50. package/dist/browser-lazy/chunks/{forest-implementation-AEP24AIP.js → forest-implementation-RWFF7XDV.js} +1 -1
  51. package/dist/browser-lazy/chunks/{gantt-RDPIFYAF.js → gantt-HQNVDX2B.js} +6 -6
  52. package/dist/browser-lazy/chunks/{gitgraph-N4Y5RYB7.js → gitgraph-Z5MN6M6L.js} +4 -4
  53. package/dist/browser-lazy/chunks/{ishikawa-LD3YBDJN.js → ishikawa-UEERNFQV.js} +2 -2
  54. package/dist/browser-lazy/chunks/{journey-6YQR5DJX.js → journey-3BEWWGB5.js} +6 -6
  55. package/dist/browser-lazy/chunks/{kanban-PLMJ7NBW.js → kanban-2WFNCWLB.js} +10 -10
  56. package/dist/browser-lazy/chunks/{mermaid-yaml-runtime-QVYX4EWK.js → mermaid-yaml-runtime-IK4ET4BT.js} +8 -8
  57. package/dist/browser-lazy/chunks/{mindmap-K2UBFO3Y.js → mindmap-R2C6SNYR.js} +4 -4
  58. package/dist/browser-lazy/chunks/{packet-CUW4QY6Y.js → packet-GMVCI5YZ.js} +3 -3
  59. package/dist/browser-lazy/chunks/{pie-7F7UUCG3.js → pie-WER45DKC.js} +7 -7
  60. package/dist/browser-lazy/chunks/{quadrant-TOONO2WC.js → quadrant-NCUPSFKN.js} +4 -4
  61. package/dist/browser-lazy/chunks/{radar-J6JVWVAX.js → radar-WLYS4YC5.js} +8 -8
  62. package/dist/browser-lazy/chunks/render-core-42UVWIPF.js +3 -0
  63. package/dist/browser-lazy/chunks/{requirement-CMAKDJPO.js → requirement-AK3NWMJ6.js} +7 -7
  64. package/dist/browser-lazy/chunks/{sankey-AWXQEP3F.js → sankey-C2DY6WVU.js} +4 -4
  65. package/dist/browser-lazy/chunks/{sequence-Q2RJRB4L.js → sequence-D4WJB44W.js} +1 -1
  66. package/dist/browser-lazy/chunks/{state-WRBFQEDX.js → state-YUQVESE7.js} +2 -2
  67. package/dist/browser-lazy/chunks/{timeline-D2KILFXM.js → timeline-BMBJJXWR.js} +4 -4
  68. package/dist/browser-lazy/chunks/{treemap-N3VYX5D4.js → treemap-B66XBZZ6.js} +3 -3
  69. package/dist/browser-lazy/chunks/{xychart-G73OGK66.js → xychart-HAVFROGT.js} +6 -6
  70. package/dist/browser-lazy/chunks/{zenuml-H4BXNYXR.js → zenuml-62RLYFWP.js} +7 -7
  71. package/dist/browser-lazy/index.js +1 -1
  72. package/dist/browser.global.js +507 -507
  73. package/dist/{chunk-DQDKA5ND.js → chunk-2DNGDTJD.js} +2 -2
  74. package/dist/{chunk-GVCHLSHH.js → chunk-4F2UGYTM.js} +2 -2
  75. package/dist/{chunk-H3NCS2XZ.js → chunk-7XYB2LNC.js} +2 -2
  76. package/dist/chunk-DOFB572I.js +58 -0
  77. package/dist/chunk-EHJI3QYE.js +52 -0
  78. package/dist/{chunk-UA234O4M.js → chunk-HINRNKPO.js} +2 -2
  79. package/dist/{chunk-JZOJ4YGS.js → chunk-KXMANAST.js} +33 -33
  80. package/dist/{chunk-7CRDX2QR.js → chunk-U4MT3RRE.js} +2 -2
  81. package/dist/{chunk-NKNFOREZ.js → chunk-WYIB6BUR.js} +2 -2
  82. package/dist/{cli-YGGTJZH7.js → cli-ZYIDBYNS.js} +2 -2
  83. package/dist/{index-EeXqJXr5.d.ts → index-Bvhprdxz.d.ts} +3 -3
  84. package/dist/index.d.ts +4 -4
  85. package/dist/index.js +1 -1
  86. package/dist/{mcp-cli-63DYXTVD.js → mcp-cli-YVDCORWA.js} +2 -2
  87. package/dist/{paint-certification-6rwQjIv_.d.ts → paint-certification-BoLyr006.d.ts} +2 -2
  88. package/dist/{server-5NEOHOFS.js → server-4JGAVXR3.js} +2 -2
  89. package/dist/{svg-styles-BdnoM7AT.d.ts → svg-styles-BnCoXyYe.d.ts} +1 -1
  90. package/dist/svg-styles.d.ts +1 -1
  91. package/dist/svg-styles.js +1 -1
  92. package/dist/svg.d.ts +4 -4
  93. package/dist/svg.js +1 -1
  94. package/dist/{types-BcS52Mjt.d.ts → types-CLVJCaH2.d.ts} +1 -1
  95. package/dist/zenuml/chunks/{appearance-UOQ5KA6O.js → appearance-5RM5MVM2.js} +1 -1
  96. package/dist/zenuml/chunks/{builtin-backends-KDKE7YHO.js → builtin-backends-UTNWL4N3.js} +11 -11
  97. package/dist/zenuml/chunks/{chunk-QWX77U7G.js → chunk-3A6S6GNB.js} +2 -2
  98. package/dist/zenuml/chunks/{chunk-OXQWRSBM.js → chunk-55WS466K.js} +11 -11
  99. package/dist/zenuml/chunks/chunk-6J4BGPB2.js +29 -0
  100. package/dist/zenuml/chunks/chunk-CNLL4BGF.js +1 -0
  101. package/dist/zenuml/chunks/{chunk-RZ6XK5CD.js → chunk-IARQ24W3.js} +13 -13
  102. package/dist/zenuml/chunks/{chunk-42DXZ5C6.js → chunk-ZNZRIISS.js} +2 -2
  103. package/dist/{browser-lazy/chunks/decode-63UIZGD2.js → zenuml/chunks/decode-LDNNXEAO.js} +1 -1
  104. package/dist/zenuml/chunks/{mermaid-yaml-runtime-KZVU74WU.js → mermaid-yaml-runtime-A5CNJ3IE.js} +8 -8
  105. package/dist/zenuml/chunks/render-core-ECIWU5ZS.js +3 -0
  106. package/dist/zenuml/chunks/{zenuml-EA2ZFRUX.js → zenuml-N3LZMB2G.js} +8 -8
  107. package/dist/zenuml.d.ts +2 -2
  108. package/dist/zenuml.js +1 -1
  109. package/docs/MCP-DIRECTORY-LISTINGS.md +81 -12
  110. package/docs/api.md +1 -1
  111. package/package.json +1 -1
  112. package/server.json +2 -2
  113. package/dist/browser-lazy/chunks/chunk-4LHYF3BS.js +0 -1
  114. package/dist/browser-lazy/chunks/chunk-FAIMVOX5.js +0 -6
  115. package/dist/browser-lazy/chunks/chunk-GVOEAY52.js +0 -1
  116. package/dist/browser-lazy/chunks/chunk-J35HAQQF.js +0 -20
  117. package/dist/browser-lazy/chunks/chunk-RIVTHZAQ.js +0 -1
  118. package/dist/browser-lazy/chunks/chunk-Z3FDIVLN.js +0 -20
  119. package/dist/browser-lazy/chunks/er-7ZSKGN7Y.js +0 -11
  120. package/dist/browser-lazy/chunks/render-core-BZOM3K7D.js +0 -3
  121. package/dist/chunk-EHCMJUMD.js +0 -52
  122. package/dist/chunk-OMY6NRQD.js +0 -58
  123. package/dist/zenuml/chunks/chunk-7TVYPTDW.js +0 -1
  124. package/dist/zenuml/chunks/chunk-RLJEI7YN.js +0 -29
  125. package/dist/zenuml/chunks/render-core-V5RQ737O.js +0 -3
  126. /package/dist/browser-lazy/chunks/{chunk-5FQ534HP.js → chunk-BMZ24VPS.js} +0 -0
  127. /package/dist/browser-lazy/chunks/{chunk-2I4UPL7Q.js → chunk-D6MQ7QSU.js} +0 -0
  128. /package/dist/browser-lazy/chunks/{chunk-CQE4HQEW.js → chunk-HJVO5VC3.js} +0 -0
  129. /package/dist/browser-lazy/chunks/{chunk-LH7HUDKW.js → chunk-L4UC3KGS.js} +0 -0
  130. /package/dist/browser-lazy/chunks/{chunk-NMQQMRIR.js → chunk-MFTQWHUB.js} +0 -0
  131. /package/dist/browser-lazy/chunks/{chunk-N5ELX7LR.js → chunk-PJJSDGLB.js} +0 -0
  132. /package/dist/browser-lazy/chunks/{chunk-CSFUKSU6.js → chunk-QCU5G5PZ.js} +0 -0
  133. /package/dist/browser-lazy/chunks/{chunk-VQYYGAXP.js → chunk-TLFX3U6S.js} +0 -0
  134. /package/dist/browser-lazy/chunks/{chunk-5UVGUSD6.js → chunk-YHMTSXIR.js} +0 -0
  135. /package/dist/zenuml/chunks/{chunk-EVPSMEKN.js → chunk-GC7IPQ5P.js} +0 -0
@@ -1,11 +1,11 @@
1
- import{a as e}from"./chunk-BY2CPG6B.js";import"./chunk-SZELX2EJ.js";import{d as t}from"./chunk-QA6GJQ4X.js";import{a as i,b as a}from"./chunk-2I4UPL7Q.js";import{a as n,b as l,e as r,g as o,k as s}from"./chunk-2SH76OTH.js";import{d as d}from"./chunk-AMJLVPUB.js";import{y as c,z as u}from"./chunk-DF6765YX.js";import"./chunk-J35HAQQF.js";import{a as h,c as f,d as m,h as p}from"./chunk-CN7WTBWB.js";import{D as g,a as k,b as x,c as y,d as b,e as v,g as w,i as M}from"./chunk-HLWUNUCM.js";import{aa as S,c as T,ca as F,x as L}from"./chunk-X2UYKWKM.js";import{i as $,j as I,k as C,u as _}from"./chunk-TYZOZXUJ.js";import{c as D,g as A,h as W}from"./chunk-NO7ZIVRU.js";import{K as z,Tb as B,Z as E,_ as U,o as N}from"./chunk-Z3FDIVLN.js";import{A as H,B as Y}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var O=Object.freeze({id:"gantt",upstreamId:"gantt",maturity:"stable",label:"Gantt",headers:["gantt"],aliases:[],config:{section:"gantt",keys:["displayMode","barHeight","topAxis","tickInterval","axisFormat","barGap","topPadding","leftPadding","gridLineStartPadding","fontSize","sectionFontSize","numberSectionStyles","todayMarker","weekday","rightPadding","titleTopMargin"],noopKeys:["barGap","topPadding","leftPadding","rightPadding","titleTopMargin","gridLineStartPadding","fontSize","sectionFontSize","numberSectionStyles","todayMarker","weekday"]},identity:{id:"family:gantt",kind:"family",version:"1.0.0",compatibility:{core:"0.5.3"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["status","progress","emphasis","category"],semanticRoles:["prelude","defs","chrome","section","grid","axis","label","task","milestone","edge","marker-line","title"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"section",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"section",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"grid",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"axis",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"task",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"milestone",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"marker-line",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`gantt
1
+ import{a as e}from"./chunk-62MR3LWJ.js";import"./chunk-PXTLV57R.js";import{d as t}from"./chunk-J57YRC2M.js";import{a as i,b as a}from"./chunk-D6MQ7QSU.js";import{a as n,b as l,e as r,g as o,k as s}from"./chunk-XHU3A432.js";import{d as d}from"./chunk-5LKPDHPC.js";import{y as c,z as u}from"./chunk-V6I2VGNQ.js";import"./chunk-7UFOFWBA.js";import{a as h,c as f,d as m,h as p}from"./chunk-VRZKI33U.js";import{D as g,a as k,b as x,c as y,d as b,e as v,g as w,i as M}from"./chunk-QVSZOF5M.js";import{aa as S,c as T,ca as F,x as L}from"./chunk-G4JBA7HU.js";import{i as I,j as $,k as C,u as _}from"./chunk-3JTYTXA6.js";import{c as D,g as A,h as W}from"./chunk-YVNJDVQO.js";import{$ as z,K as B,Vb as E,_ as H,o as N}from"./chunk-EIYLJ4FI.js";import{A as U,B as Y}from"./chunk-PJJSDGLB.js";import"./chunk-YHMTSXIR.js";import"./chunk-QCU5G5PZ.js";var O=Object.freeze({id:"gantt",upstreamId:"gantt",maturity:"stable",label:"Gantt",headers:["gantt"],aliases:[],config:{section:"gantt",keys:["displayMode","barHeight","topAxis","tickInterval","axisFormat","barGap","topPadding","leftPadding","gridLineStartPadding","fontSize","sectionFontSize","numberSectionStyles","todayMarker","weekday","rightPadding","titleTopMargin"],noopKeys:["barGap","topPadding","leftPadding","rightPadding","titleTopMargin","gridLineStartPadding","fontSize","sectionFontSize","numberSectionStyles","todayMarker","weekday"]},identity:{id:"family:gantt",kind:"family",version:"1.0.0",compatibility:{core:"0.5.4"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["status","progress","emphasis","category"],semanticRoles:["prelude","defs","chrome","section","grid","axis","label","task","milestone","edge","marker-line","title"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"section",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"section",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"grid",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"axis",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"task",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"milestone",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"marker-line",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`gantt
2
2
  title Plan
3
3
  dateFormat YYYY-MM-DD
4
4
  section Build
5
5
  Implement :a1, 2026-01-05, 5d
6
- Review :after a1, 2d`,detect:H,detectLoose:Y}),P={displayMode:s("compact"),barHeight:l,topAxis:r,axisFormat:o,tickInterval:n('a positive Mermaid interval such as "1day" or "2week"',e=>"string"==typeof e&&/^[1-9]\d*(?:millisecond|second|minute|hour|day|week|month)$/i.test(e.trim()))},j=class extends Error{code;line;constructor(e,t,i){super(`${e}: ${t}`),this.name="GanttError",this.code=e,this.line=i}},X=["stroke","stroke-width","opacity","stroke-dasharray"],G=/^[#\w][\w#(),.%\s/-]*$/;function R(e){let t=[],i=[],a=S(e,{caseInsensitive:!0});for(let[e,n]of(F(void 0===a.stroke?{}:{stroke:a.stroke},"todayMarker"),Object.entries(a))){if(!X.includes(e)||"stroke"!==e&&!G.test(n)){i.push(e);continue}t.push([e,n])}return{applied:t,ignored:i}}var J=["active","done","crit","milestone","vert"],K=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],V=/^(\d+(?:\.\d+)?)(ms|s|m|h|d|w|M|y)$/,Z=/^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/;function Q(e){return e.split(/[,\s]+/).filter(Boolean).map(e=>{let t=e.toLowerCase();return"weekends"===t?{kind:"weekends"}:K.includes(t)?{kind:"weekday",day:t}:{kind:"date",raw:e}})}var q={title:/^title\s+(.+)$/i,dateFormat:/^dateFormat\s+(.+)$/i,axisFormat:/^axisFormat\s+(.+)$/i,tickInterval:/^tickInterval\s+(.+)$/i,excludes:/^excludes\s+(.+)$/i,includes:/^includes\s+(.+)$/i,todayMarker:/^todayMarker\s+(.+)$/i,weekday:/^weekday\s+(.+)$/i,weekend:/^weekend\s+(.+)$/i,section:/^section\s+(.+)$/i,click:/^click\s+([\w-]+)\s+(href|call)\s+(.+)$/i},ee=/^(?:dateFormat|axisFormat|tickInterval|excludes|includes)\s/i,et=/^(?:title|section|click|todayMarker|weekday|weekend|acc(?:Title|Descr))\b/i;function ei(e){if(ee.test(e))return e.indexOf(";");let t=e.indexOf(":");if(et.test(e)||t<=0)return -1;let a=e.indexOf(";",t+1),n=i(e.slice(t+1));return n>=0&&a>t+n?-1:a}var ea=/^click\s+[\w-]+$/i,en=/^(?:href|call)\s/i;function el(e){if(!e)return{};let t={},i=u(e,["title"]);"string"==typeof i&&""!==i.trim()&&(t.title=i);let a=u(e,["displayMode"]),n=(c(e,["gantt"])?u(e,["gantt","displayMode"]):void 0)??a;"string"==typeof n&&"compact"===n.toLowerCase()&&(t.displayMode="compact");let l=u(e,["gantt","barHeight"]);"number"==typeof l&&Number.isFinite(l)&&l>0&&(t.barHeight=l),!0===u(e,["gantt","topAxis"])&&(t.topAxis=!0);let r=u(e,["gantt","axisFormat"]);"string"==typeof r&&(t.axisFormat=r);let o=u(e,["gantt","tickInterval"]);if("string"==typeof o){let e=o.match(Z);e&&(t.tickInterval={count:Number(e[1]),unit:e[2]})}return t}function er(e){return Math.floor(e/864e5)}function eo(e){return 864e5*er(e)}function es(e){return((er(e)+4)%7+7)%7}var ed={sunday:0,monday:1,tuesday:2,wednesday:3,thursday:4,friday:5,saturday:6},ec=["YYYY","YY","MM","M","DD","D","HH","H","mm","m","ss","s","SSS","X","x"],eu=new Set(["HH","H","mm","m","ss","s","SSS","X","x"]);function eh(e){let t=[],i=0;e:for(;i<e.length;){for(let a of ec)if(e.startsWith(a,i)){t.push({kind:"field",field:a}),i+=a.length;continue e}t.push({kind:"literal",text:e[i]}),i++}return t}function ef(e,t){let i=eh(t),a=0,n={},l=(t,i)=>{let n=0;for(;n<i&&a+n<e.length&&e[a+n]>="0"&&e[a+n]<="9";)n++;if(n<t)return null;let l=Number(e.slice(a,a+n));return a+=n,l};for(let t of i){if("literal"===t.kind){if(e[a]!==t.text)return null;a++;continue}switch(t.field){case"YYYY":{let e=l(4,4);if(null===e)return null;n.year=e;break}case"YY":{let e=l(2,2);if(null===e)return null;n.year=2e3+e;break}case"MM":{let e=l(2,2);if(null===e)return null;n.month=e;break}case"M":{let e=l(1,2);if(null===e)return null;n.month=e;break}case"DD":{let e=l(2,2);if(null===e)return null;n.day=e;break}case"D":{let e=l(1,2);if(null===e)return null;n.day=e;break}case"HH":{let e=l(2,2);if(null===e)return null;n.hour=e;break}case"H":{let e=l(1,2);if(null===e)return null;n.hour=e;break}case"mm":{let e=l(2,2);if(null===e)return null;n.minute=e;break}case"m":{let e=l(1,2);if(null===e)return null;n.minute=e;break}case"ss":{let e=l(2,2);if(null===e)return null;n.second=e;break}case"s":{let e=l(1,2);if(null===e)return null;n.second=e;break}case"SSS":{let e=l(3,3);if(null===e)return null;n.msec=e;break}case"X":{let e=l(1,11);if(null===e)return null;n.unix=e;break}case"x":{let e=l(1,14);if(null===e)return null;n.unixMs=e}}}return a!==e.length?null:void 0!==n.unixMs?n.unixMs:void 0!==n.unix?1e3*n.unix:function(e,t,i,a=0,n=0,l=0,r=0){if(t<1||t>12||i<1||i>31||a<0||a>23||n<0||n>59||l<0||l>59)return null;let o=Date.UTC(e,t-1,i,a,n,l,r),s=new Date(o);return s.getUTCFullYear()!==e||s.getUTCMonth()!==t-1||s.getUTCDate()!==i?null:o}(n.year??1970,n.month??1,n.day??1,n.hour??0,n.minute??0,n.second??0,n.msec??0)}var em={ms:1,s:1e3,m:6e4,h:36e5,d:864e5,w:6048e5};function ep(e,t){let i=new Set,a=new Set,n=!1;for(let l of e){if("weekends"===l.kind){n=!0;continue}if("weekday"===l.kind){a.add(ed[l.day]);continue}let e=ef(l.raw,t.dateFormat)??ef(l.raw,"YYYY-MM-DD");if(null===e)throw new j("GANTT_BAD_DATE",`Invalid calendar date "${l.raw}" for dateFormat "${t.dateFormat}"`);i.add(er(e))}return{days:i,weekdays:a,weekends:n}}var eg=new WeakMap,ek=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ex=["January","February","March","April","May","June","July","August","September","October","November","December"],ey=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],eb=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function ev(e,t){let i=new Date(e),a=(e,t=2)=>String(e).padStart(t,"0"),n=()=>Math.floor((e-Date.UTC(i.getUTCFullYear(),0,1))/864e5)+1,l=e=>{let t=(7+es(Date.UTC(i.getUTCFullYear(),0,1))-e)%7;return Math.floor((n()-1+t)/7)},r="";for(let o=0;o<t.length;o++){let s=t[o];if("%"!==s){r+=s;continue}let d=t[++o];switch(d){case"Y":r+=String(i.getUTCFullYear());break;case"y":r+=a(i.getUTCFullYear()%100);break;case"m":r+=a(i.getUTCMonth()+1);break;case"d":r+=a(i.getUTCDate());break;case"e":r+=String(i.getUTCDate()).padStart(2," ");break;case"b":r+=ek[i.getUTCMonth()];break;case"B":r+=ex[i.getUTCMonth()];break;case"a":r+=ey[es(e)];break;case"A":r+=eb[es(e)];break;case"H":r+=a(i.getUTCHours());break;case"I":r+=a((i.getUTCHours()+11)%12+1);break;case"M":r+=a(i.getUTCMinutes());break;case"S":r+=a(i.getUTCSeconds());break;case"L":r+=a(i.getUTCMilliseconds(),3);break;case"p":r+=12>i.getUTCHours()?"AM":"PM";break;case"j":r+=a(n(),3);break;case"U":r+=a(l(0));break;case"W":r+=a(l(1));break;case"%":r+="%";break;default:r+=void 0===d?"%":`%${d}`}}return r}function ew(e,t){return{id:e,shape:"arrow",size:{width:8,height:7},ref:{x:8,y:3.5},orient:"auto",geometry:{kind:"path",d:"M0,0 L8,3.5 L0,7 Z"},paint:{fill:t}}}var eM=(e,t)=>t?Math.max(1.8,1.5*e):Math.max(1.2,e),eS=e([ew("dependency","black")]),eT=e=>eS("dependency",e,"end"),eF={nodeLabelFontSize:13,edgeLabelFontSize:11,groupHeaderFontSize:13,nodeLabelFontWeight:500,edgeLabelFontWeight:500,groupHeaderFontWeight:600,nodePaddingX:0,nodePaddingY:0,nodeLineWidth:D.innerBox,edgeLineWidth:D.connector,groupCornerRadius:0,groupPaddingX:0,groupPaddingY:0,groupLineWidth:D.outerBox},eL={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:2592e6},e$=[{unit:"minute",count:1,format:"%H:%M"},{unit:"minute",count:15,format:"%H:%M"},{unit:"hour",count:1,format:"%H:%M"},{unit:"hour",count:6,format:"%H:%M"},{unit:"day",count:1,format:"%m-%d"},{unit:"week",count:1,format:"%m-%d"},{unit:"week",count:2,format:"%m-%d"},{unit:"month",count:1,format:"%b %Y"},{unit:"month",count:3,format:"%b %Y"},{unit:"month",count:12,format:"%Y"}];function eI(e={},t){return W(e,eF,t)}function eC(e){return Math.max(17,e.groupHeaderFontSize)}function e_(e){return Math.max(e.groupHeaderFontWeight,600)}function eD(e){let t=eW(e);return Math.max(34===t?18:t/2,eC(e)+1)}function eA(e){return Math.max(10,.75*e.edgeLabelFontSize)}function eW(e){return Math.max(34,Math.ceil(1.5*eC(e))+8)}function ez(e){return void 0!==e.milestoneX?{x:e.milestoneX-e.h/2,y:e.y,w:e.h,h:e.h}:{x:e.x,y:e.y,w:e.w,h:e.h}}function eB(e,t,i,a){let[n,l]=t<=i?[t,i]:[i,t];return e>a.x+.01&&e<a.x+a.w-.01&&l>a.y+.01&&n<a.y+a.h-.01}function eE(e,t,i){return .01>=Math.abs(e.x-t.x)?i.some(i=>eB(e.x,e.y,t.y,i)):i.some(i=>(function(e,t,i,a){let[n,l]=t<=i?[t,i]:[i,t];return e>a.y+.01&&e<a.y+a.h-.01&&l>a.x+.01&&n<a.x+a.w-.01})(e.y,e.x,t.x,i))}function eU(e,t){return e.findIndex(e=>t>=e.y-.01&&t<=e.y+e.h+.01)}function eN(e,t,i){return(e[t].y+e[t].h+(t+1<e.length?e[t+1].y:i.y+i.h))/2}function eH(e,t,i){let a=e[t].y;return((t>0?e[t-1].y+e[t-1].h:i.y)+a)/2}function eY(e,t,i,a,n){let l=E(e,{display:"literal",transform:t,fontSize:i,fontWeight:a,letterSpacing:n,maxWidth:220});return{lines:[...l.lines],width:l.width,block:l}}function eO(e){return e.includes("crit")?"crit":e.includes("active")?"active":e.includes("done")?"done":void 0}function eP(e,t,i,a,n,l,r,o,s,d,c="start",u=0,h,f){return e.text({id:t,role:i,text:l,x:eG(a),y:eG(n),fontSize:o,block:f,fontWeight:s,letterSpacing:u,display:"literal",anchor:c,paint:{fill:d},channels:h,attributes:{className:r},...f?{}:{baselineShift:0,dominantBaseline:"middle"}})}function ej(e){if(!e)return{};let t=void 0===e.lineWidth?void 0:"outline"===e.cue?e.lineWidth+1:"double-line"===e.cue?e.lineWidth+2:e.lineWidth,i="pattern"===e.cue?"3 2":"double-line"===e.cue?"8 2 2 2":void 0;return{...void 0!==e.fillColor?{fill:e.fillColor}:{},...e.strokeColor??e.borderColor?{stroke:e.strokeColor??e.borderColor}:{},...void 0!==t?{strokeWidth:String(t)}:{},...void 0!==i?{strokeDasharray:i}:{}}}function eX(e,t,i,a){return{className:e,data:{task:t,...i?.cue&&"none"!==i.cue?{"brand-cue":i.cue}:{},...a?{href:a}:{}}}}function eG(e){return Math.round(100*e)/100}function eR(e){return void 0===e?"":e.id??e.label}var eJ=T(function(e,t){var i;let{positioned:a,colors:n,resolved:l}=t,r=l.renderOptions,o=n.font??"Inter",s=r.transparent??!1,d=eI(r,l.styleFace),c={groupFill:d.groupFillColor??"var(--surface, var(--fg))",groupOpacity:d.groupFillColor?"1":"0.07",excludedFill:d.edgeStrokeColor??"var(--muted, var(--line, var(--fg)))",edgeStroke:d.edgeStrokeColor??"var(--line, var(--border, var(--fg)))",nodeFill:d.nodeFillColor??"var(--accent, var(--fg))",nodeBorder:d.nodeBorderColor??"var(--fg)",doneFill:d.nodeFillColor??"var(--muted, var(--line, var(--fg)))",criticalFill:d.nodeFillColor??"var(--fg)",criticalStroke:d.nodeBorderColor??d.edgeStrokeColor??"var(--accent, var(--fg))",titleFill:d.groupTextColor??d.nodeTextColor??"var(--_text)",groupText:d.groupTextColor??d.nodeTextColor??"var(--_text)",taskText:d.nodeTextColor??"var(--_text)",axisText:d.edgeTextColor??d.groupTextColor??"var(--_text-muted)"},u=[],h=r.gantt??{},f={dependencyArrows:!0===h.dependencyArrows&&a.dependencies.length>0,criticalBars:!0===h.criticalPath&&a.criticalTaskIndexes.length>0,criticalArrows:!0===h.dependencyArrows&&!0===h.criticalPath&&a.dependencies.some(e=>e.critical)},m=new Set(f.criticalBars?a.criticalTaskIndexes:[]);u.push(e.documentOpen({id:"prelude",width:a.width,height:a.height,colors:n,transparent:s,font:o,hasMonoFont:!1},C(a.width,a.height,n,s)+`
7
- `+I(o,!1,n.shadow,n.embedFontImport)));let p=$(n);p&&u.push(e.definitions({id:"shadow-defs"},`<defs>${p}</defs>`));let g=`gantt-${B(a.width,a.height,...a.bars.map(e=>`${e.taskIndex}:${e.id??e.label}`),...a.dependencies.map(e=>`${e.fromTaskIndex}>${e.toTaskIndex}:${e.kind}`))}-dep-arrow`,k=`${g}-crit`,x=[ew(g,c.edgeStroke),...f.criticalArrows?[ew(k,c.criticalStroke)]:[]];f.dependencyArrows&&u.push(e.definitions({id:"defs",markerResources:x},`<defs>
6
+ Review :after a1, 2d`,detect:U,detectLoose:Y}),P={displayMode:s("compact"),barHeight:l,topAxis:r,axisFormat:o,tickInterval:n('a positive Mermaid interval such as "1day" or "2week"',e=>"string"==typeof e&&/^[1-9]\d*(?:millisecond|second|minute|hour|day|week|month)$/i.test(e.trim()))},j=class extends Error{code;line;constructor(e,t,i){super(`${e}: ${t}`),this.name="GanttError",this.code=e,this.line=i}},X=["stroke","stroke-width","opacity","stroke-dasharray"],G=/^[#\w][\w#(),.%\s/-]*$/;function R(e){let t=[],i=[],a=S(e,{caseInsensitive:!0});for(let[e,n]of(F(void 0===a.stroke?{}:{stroke:a.stroke},"todayMarker"),Object.entries(a))){if(!X.includes(e)||"stroke"!==e&&!G.test(n)){i.push(e);continue}t.push([e,n])}return{applied:t,ignored:i}}var J=["active","done","crit","milestone","vert"],V=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],K=/^(\d+(?:\.\d+)?)(ms|s|m|h|d|w|M|y)$/,Q=/^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/;function Z(e){return e.split(/[,\s]+/).filter(Boolean).map(e=>{let t=e.toLowerCase();return"weekends"===t?{kind:"weekends"}:V.includes(t)?{kind:"weekday",day:t}:{kind:"date",raw:e}})}var q={title:/^title\s+(.+)$/i,dateFormat:/^dateFormat\s+(.+)$/i,axisFormat:/^axisFormat\s+(.+)$/i,tickInterval:/^tickInterval\s+(.+)$/i,excludes:/^excludes\s+(.+)$/i,includes:/^includes\s+(.+)$/i,todayMarker:/^todayMarker\s+(.+)$/i,weekday:/^weekday\s+(.+)$/i,weekend:/^weekend\s+(.+)$/i,section:/^section\s+(.+)$/i,click:/^click\s+([\w-]+)\s+(href|call)\s+(.+)$/i},ee=/^(?:dateFormat|axisFormat|tickInterval|excludes|includes)\s/i,et=/^(?:title|section|click|todayMarker|weekday|weekend|acc(?:Title|Descr))\b/i;function ei(e){if(ee.test(e))return e.indexOf(";");let t=e.indexOf(":");if(et.test(e)||t<=0)return -1;let a=e.indexOf(";",t+1),n=i(e.slice(t+1));return n>=0&&a>t+n?-1:a}var ea=/^click\s+[\w-]+$/i,en=/^(?:href|call)\s/i;function el(e){if(!e)return{};let t={},i=u(e,["title"]);"string"==typeof i&&""!==i.trim()&&(t.title=i);let a=u(e,["displayMode"]),n=(c(e,["gantt"])?u(e,["gantt","displayMode"]):void 0)??a;"string"==typeof n&&"compact"===n.toLowerCase()&&(t.displayMode="compact");let l=u(e,["gantt","barHeight"]);"number"==typeof l&&Number.isFinite(l)&&l>0&&(t.barHeight=l),!0===u(e,["gantt","topAxis"])&&(t.topAxis=!0);let r=u(e,["gantt","axisFormat"]);"string"==typeof r&&(t.axisFormat=r);let o=u(e,["gantt","tickInterval"]);if("string"==typeof o){let e=o.match(Q);e&&(t.tickInterval={count:Number(e[1]),unit:e[2]})}return t}function er(e){return Math.floor(e/864e5)}function eo(e){return 864e5*er(e)}function es(e){return((er(e)+4)%7+7)%7}var ed={sunday:0,monday:1,tuesday:2,wednesday:3,thursday:4,friday:5,saturday:6},ec=["YYYY","YY","MM","M","DD","D","HH","H","mm","m","ss","s","SSS","X","x"],eu=new Set(["HH","H","mm","m","ss","s","SSS","X","x"]);function eh(e){let t=[],i=0;e:for(;i<e.length;){for(let a of ec)if(e.startsWith(a,i)){t.push({kind:"field",field:a}),i+=a.length;continue e}t.push({kind:"literal",text:e[i]}),i++}return t}function ef(e,t){let i=eh(t),a=0,n={},l=(t,i)=>{let n=0;for(;n<i&&a+n<e.length&&e[a+n]>="0"&&e[a+n]<="9";)n++;if(n<t)return null;let l=Number(e.slice(a,a+n));return a+=n,l};for(let t of i){if("literal"===t.kind){if(e[a]!==t.text)return null;a++;continue}switch(t.field){case"YYYY":{let e=l(4,4);if(null===e)return null;n.year=e;break}case"YY":{let e=l(2,2);if(null===e)return null;n.year=2e3+e;break}case"MM":{let e=l(2,2);if(null===e)return null;n.month=e;break}case"M":{let e=l(1,2);if(null===e)return null;n.month=e;break}case"DD":{let e=l(2,2);if(null===e)return null;n.day=e;break}case"D":{let e=l(1,2);if(null===e)return null;n.day=e;break}case"HH":{let e=l(2,2);if(null===e)return null;n.hour=e;break}case"H":{let e=l(1,2);if(null===e)return null;n.hour=e;break}case"mm":{let e=l(2,2);if(null===e)return null;n.minute=e;break}case"m":{let e=l(1,2);if(null===e)return null;n.minute=e;break}case"ss":{let e=l(2,2);if(null===e)return null;n.second=e;break}case"s":{let e=l(1,2);if(null===e)return null;n.second=e;break}case"SSS":{let e=l(3,3);if(null===e)return null;n.msec=e;break}case"X":{let e=l(1,11);if(null===e)return null;n.unix=e;break}case"x":{let e=l(1,14);if(null===e)return null;n.unixMs=e}}}return a!==e.length?null:void 0!==n.unixMs?n.unixMs:void 0!==n.unix?1e3*n.unix:function(e,t,i,a=0,n=0,l=0,r=0){if(t<1||t>12||i<1||i>31||a<0||a>23||n<0||n>59||l<0||l>59)return null;let o=Date.UTC(e,t-1,i,a,n,l,r),s=new Date(o);return s.getUTCFullYear()!==e||s.getUTCMonth()!==t-1||s.getUTCDate()!==i?null:o}(n.year??1970,n.month??1,n.day??1,n.hour??0,n.minute??0,n.second??0,n.msec??0)}var em={ms:1,s:1e3,m:6e4,h:36e5,d:864e5,w:6048e5};function ep(e,t){let i=new Set,a=new Set,n=!1;for(let l of e){if("weekends"===l.kind){n=!0;continue}if("weekday"===l.kind){a.add(ed[l.day]);continue}let e=ef(l.raw,t.dateFormat)??ef(l.raw,"YYYY-MM-DD");if(null===e)throw new j("GANTT_BAD_DATE",`Invalid calendar date "${l.raw}" for dateFormat "${t.dateFormat}"`);i.add(er(e))}return{days:i,weekdays:a,weekends:n}}var eg=new WeakMap,ek=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ex=["January","February","March","April","May","June","July","August","September","October","November","December"],ey=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],eb=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function ev(e,t){let i=new Date(e),a=(e,t=2)=>String(e).padStart(t,"0"),n=()=>Math.floor((e-Date.UTC(i.getUTCFullYear(),0,1))/864e5)+1,l=e=>{let t=(7+es(Date.UTC(i.getUTCFullYear(),0,1))-e)%7;return Math.floor((n()-1+t)/7)},r="";for(let o=0;o<t.length;o++){let s=t[o];if("%"!==s){r+=s;continue}let d=t[++o];switch(d){case"Y":r+=String(i.getUTCFullYear());break;case"y":r+=a(i.getUTCFullYear()%100);break;case"m":r+=a(i.getUTCMonth()+1);break;case"d":r+=a(i.getUTCDate());break;case"e":r+=String(i.getUTCDate()).padStart(2," ");break;case"b":r+=ek[i.getUTCMonth()];break;case"B":r+=ex[i.getUTCMonth()];break;case"a":r+=ey[es(e)];break;case"A":r+=eb[es(e)];break;case"H":r+=a(i.getUTCHours());break;case"I":r+=a((i.getUTCHours()+11)%12+1);break;case"M":r+=a(i.getUTCMinutes());break;case"S":r+=a(i.getUTCSeconds());break;case"L":r+=a(i.getUTCMilliseconds(),3);break;case"p":r+=12>i.getUTCHours()?"AM":"PM";break;case"j":r+=a(n(),3);break;case"U":r+=a(l(0));break;case"W":r+=a(l(1));break;case"%":r+="%";break;default:r+=void 0===d?"%":`%${d}`}}return r}function ew(e,t){return{id:e,shape:"arrow",size:{width:8,height:7},ref:{x:8,y:3.5},orient:"auto",geometry:{kind:"path",d:"M0,0 L8,3.5 L0,7 Z"},paint:{fill:t}}}var eM=(e,t)=>t?Math.max(1.8,1.5*e):Math.max(1.2,e),eS=e([ew("dependency","black")]),eT=e=>eS("dependency",e,"end"),eF={nodeLabelFontSize:13,edgeLabelFontSize:11,groupHeaderFontSize:13,nodeLabelFontWeight:500,edgeLabelFontWeight:500,groupHeaderFontWeight:600,nodePaddingX:0,nodePaddingY:0,nodeLineWidth:D.innerBox,edgeLineWidth:D.connector,groupCornerRadius:0,groupPaddingX:0,groupPaddingY:0,groupLineWidth:D.outerBox},eL={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:2592e6},eI=[{unit:"minute",count:1,format:"%H:%M"},{unit:"minute",count:15,format:"%H:%M"},{unit:"hour",count:1,format:"%H:%M"},{unit:"hour",count:6,format:"%H:%M"},{unit:"day",count:1,format:"%m-%d"},{unit:"week",count:1,format:"%m-%d"},{unit:"week",count:2,format:"%m-%d"},{unit:"month",count:1,format:"%b %Y"},{unit:"month",count:3,format:"%b %Y"},{unit:"month",count:12,format:"%Y"}];function e$(e={},t){return W(e,eF,t)}function eC(e){return Math.max(17,e.groupHeaderFontSize)}function e_(e){return Math.max(e.groupHeaderFontWeight,600)}function eD(e){let t=eW(e);return Math.max(34===t?18:t/2,eC(e)+1)}function eA(e){return Math.max(10,.75*e.edgeLabelFontSize)}function eW(e){return Math.max(34,Math.ceil(1.5*eC(e))+8)}function ez(e){return void 0!==e.milestoneX?{x:e.milestoneX-e.h/2,y:e.y,w:e.h,h:e.h}:{x:e.x,y:e.y,w:e.w,h:e.h}}function eB(e,t,i,a){let[n,l]=t<=i?[t,i]:[i,t];return e>a.x+.01&&e<a.x+a.w-.01&&l>a.y+.01&&n<a.y+a.h-.01}function eE(e,t,i){return .01>=Math.abs(e.x-t.x)?i.some(i=>eB(e.x,e.y,t.y,i)):i.some(i=>(function(e,t,i,a){let[n,l]=t<=i?[t,i]:[i,t];return e>a.y+.01&&e<a.y+a.h-.01&&l>a.x+.01&&n<a.x+a.w-.01})(e.y,e.x,t.x,i))}function eH(e,t){return e.findIndex(e=>t>=e.y-.01&&t<=e.y+e.h+.01)}function eN(e,t,i){return(e[t].y+e[t].h+(t+1<e.length?e[t+1].y:i.y+i.h))/2}function eU(e,t,i){let a=e[t].y;return((t>0?e[t-1].y+e[t-1].h:i.y)+a)/2}function eY(e,t,i,a,n){let l=H(e,{display:"literal",transform:t,fontSize:i,fontWeight:a,letterSpacing:n,maxWidth:220});return{lines:[...l.lines],width:l.width,block:l}}function eO(e){return e.includes("crit")?"crit":e.includes("active")?"active":e.includes("done")?"done":void 0}function eP(e,t,i,a,n,l,r,o,s,d,c="start",u=0,h,f){return e.text({id:t,role:i,text:l,x:eG(a),y:eG(n),fontSize:o,block:f,fontWeight:s,letterSpacing:u,display:"literal",anchor:c,paint:{fill:d},channels:h,attributes:{className:r},...f?{}:{baselineShift:0,dominantBaseline:"middle"}})}function ej(e){if(!e)return{};let t=void 0===e.lineWidth?void 0:"outline"===e.cue?e.lineWidth+1:"double-line"===e.cue?e.lineWidth+2:e.lineWidth,i="pattern"===e.cue?"3 2":"double-line"===e.cue?"8 2 2 2":void 0;return{...void 0!==e.fillColor?{fill:e.fillColor}:{},...e.strokeColor??e.borderColor?{stroke:e.strokeColor??e.borderColor}:{},...void 0!==t?{strokeWidth:String(t)}:{},...void 0!==i?{strokeDasharray:i}:{}}}function eX(e,t,i,a){return{className:e,data:{task:t,...i?.cue&&"none"!==i.cue?{"brand-cue":i.cue}:{},...a?{href:a}:{}}}}function eG(e){return Math.round(100*e)/100}function eR(e){return void 0===e?"":e.id??e.label}var eJ=T(function(e,t){var i;let{positioned:a,colors:n,resolved:l}=t,r=l.renderOptions,o=n.font??"Inter",s=r.transparent??!1,d=e$(r,l.styleFace),c={groupFill:d.groupFillColor??"var(--surface, var(--fg))",groupOpacity:d.groupFillColor?"1":"0.07",excludedFill:d.edgeStrokeColor??"var(--muted, var(--line, var(--fg)))",edgeStroke:d.edgeStrokeColor??"var(--line, var(--border, var(--fg)))",nodeFill:d.nodeFillColor??"var(--accent, var(--fg))",nodeBorder:d.nodeBorderColor??"var(--fg)",doneFill:d.nodeFillColor??"var(--muted, var(--line, var(--fg)))",criticalFill:d.nodeFillColor??"var(--fg)",criticalStroke:d.nodeBorderColor??d.edgeStrokeColor??"var(--accent, var(--fg))",titleFill:d.groupTextColor??d.nodeTextColor??"var(--_text)",groupText:d.groupTextColor??d.nodeTextColor??"var(--_text)",taskText:d.nodeTextColor??"var(--_text)",axisText:d.edgeTextColor??d.groupTextColor??"var(--_text-muted)"},u=[],h=r.gantt??{},f={dependencyArrows:!0===h.dependencyArrows&&a.dependencies.length>0,criticalBars:!0===h.criticalPath&&a.criticalTaskIndexes.length>0,criticalArrows:!0===h.dependencyArrows&&!0===h.criticalPath&&a.dependencies.some(e=>e.critical)},m=new Set(f.criticalBars?a.criticalTaskIndexes:[]);u.push(e.documentOpen({id:"prelude",width:a.width,height:a.height,colors:n,transparent:s,font:o,hasMonoFont:!1},C(a.width,a.height,n,s)+`
7
+ `+$(o,!1,n.shadow,n.embedFontImport)));let p=I(n);p&&u.push(e.definitions({id:"shadow-defs"},`<defs>${p}</defs>`));let g=`gantt-${E(a.width,a.height,...a.bars.map(e=>`${e.taskIndex}:${e.id??e.label}`),...a.dependencies.map(e=>`${e.fromTaskIndex}>${e.toTaskIndex}:${e.kind}`))}-dep-arrow`,k=`${g}-crit`,x=[ew(g,c.edgeStroke),...f.criticalArrows?[ew(k,c.criticalStroke)]:[]];f.dependencyArrows&&u.push(e.definitions({id:"defs",markerResources:x},`<defs>
8
8
  ${_(x)}
9
- </defs>`));let y=a.plot,b=y.y+y.h,v=new Map;a.sections.forEach((t,i)=>{if(i%2==0){let i=t.label??"",a=v.get(i)??0;v.set(i,a+1),u.push(e.shape({id:`section-band:${i}#${a}`,role:"section",geometry:{kind:"rect",x:eG(y.x),y:eG(t.y),width:eG(y.w),height:eG(t.h)},paint:{fill:c.groupFill,opacity:c.groupOpacity},channels:void 0!==t.label?{category:t.label}:void 0,attributes:{className:"gantt-section-band"}}))}});let w={fill:c.excludedFill,opacity:"0.1"};for(let t of a.excludedBands)u.push(e.shape({id:`excluded:${t.start}`,role:"grid",geometry:{kind:"rect",x:eG(t.x),y:eG(y.y),width:eG(t.w),height:eG(y.h)},paint:w,attributes:{className:"gantt-excluded-band"}}));let M={stroke:c.edgeStroke,strokeWidth:String(d.lineWidth),opacity:d.edgeStrokeColor?"0.6":"0.45"};for(let t of a.ticks)u.push(e.shape({id:`grid:${t.time}`,role:"grid",geometry:{kind:"line",x1:eG(t.x),y1:eG(y.y),x2:eG(t.x),y2:eG(b)},paint:M,attributes:{className:"gantt-grid-line"}}));let S=eA(d),T=10===S&&11===d.edgeLabelFontSize?12:Math.max(12,S);for(let t of a.ticks){let i=t.labelBlock?.text??A(t.label,d.edgeTextTransform);u.push(eP(e,`axis:${t.time}:bottom`,"axis",t.x,b+T,i,"gantt-axis-label",d.edgeLabelFontSize,d.edgeLabelFontWeight,c.axisText,"middle",d.edgeLetterSpacing,void 0,t.labelBlock)),a.topAxis&&u.push(eP(e,`axis:${t.time}:top`,"axis",t.x,y.y-S,i,"gantt-axis-label",d.edgeLabelFontSize,d.edgeLabelFontWeight,c.axisText,"middle",d.edgeLetterSpacing,void 0,t.labelBlock))}let F=1.3*d.groupHeaderFontSize,L=1.3*d.nodeLabelFontSize,D=new Map;for(let t of a.sections)if(void 0!==t.label){let i=D.get(t.label)??0;D.set(t.label,i+1),(t.labelBlock?.lines??t.labelLines??[A(t.label,d.groupTextTransform)]).forEach((n,l)=>{let r=0===l?`section-label:${t.label}#${i}`:`section-label:${t.label}#${i}/${l}`;u.push(eP(e,r,"section",8,t.y+a.barHeight/2+4+l*(t.labelBlock?.lineHeight??F),n,"gantt-section-label",d.groupHeaderFontSize,d.groupHeaderFontWeight,c.groupText,"start",d.groupLetterSpacing,{category:t.label},U(t.labelBlock,l)))})}let W=new Map,z=e=>{let t=W.get(e)??0;return W.set(e,t+1),0===t?`task-label:${e}`:`task-label:${e}#${t}`};if(a.compact){let t=new Map;for(let e of a.bars){let i=t.get(e.y)??[];i.push(e),t.set(e.y,i)}for(let i of t.values())i.sort((e,t)=>e.x-t.x),i.forEach((t,n)=>{let l=t.labelBlock??E(t.label,{display:"literal",transform:d.nodeTextTransform,fontSize:d.nodeLabelFontSize,fontWeight:d.nodeLabelFontWeight,letterSpacing:d.nodeLetterSpacing}),r=l.text,o=l.width,s=t.y+t.h/2;if(t.labelPosition)return void u.push(eP(e,z(t.id??t.label),"label",t.labelPosition.x,t.labelPosition.y,r,"gantt-task-label",d.nodeLabelFontSize,d.nodeLabelFontWeight,c.taskText,t.labelPosition.anchor,d.nodeLetterSpacing,void 0,l));let h=n>0?i[n-1].x+i[n-1].w+4:2,f=n+1<i.length?i[n+1].x-4:a.width-2;t.x-6-o>=h?u.push(eP(e,z(t.id??t.label),"label",t.x-6,s,r,"gantt-task-label",d.nodeLabelFontSize,d.nodeLabelFontWeight,c.taskText,"end",d.nodeLetterSpacing,void 0,l)):t.x+t.w+6+o<=f?u.push(eP(e,z(t.id??t.label),"label",t.x+t.w+6,s,r,"gantt-task-label",d.nodeLabelFontSize,d.nodeLabelFontWeight,c.taskText,"start",d.nodeLetterSpacing,void 0,l)):u.push(eP(e,z(t.id??t.label),"label",16,s,r,"gantt-task-label",d.nodeLabelFontSize,d.nodeLabelFontWeight,c.taskText,"start",d.nodeLetterSpacing,void 0,l))})}else for(let t of a.bars){let i=t.labelBlock?.lines??t.labelLines??[A(t.label,d.nodeTextTransform)],a=z(t.id??t.label);i.forEach((i,n)=>{let l=0===n?a:`${a}/${n}`;u.push(eP(e,l,"label",t.labelPosition?.x??16,(t.labelPosition?.y??t.y+t.h/2)+n*(t.labelBlock?.lineHeight??L),i,"gantt-task-label",d.nodeLabelFontSize,d.nodeLabelFontWeight,c.taskText,"start",d.nodeLetterSpacing,void 0,U(t.labelBlock,n)))})}let H=new Map,Y=e=>{let t=H.get(e)??0;return H.set(e,t+1),0===t?`task:${e}`:`task:${e}#${t}`},O=new Map(a.links.map(e=>[e.taskIndex,e.href]));for(let t of a.bars){let n=a.sections[t.sectionIndex]?.label,o="strict"===r.security?void 0:O.get(t.taskIndex),s=t.id??t.label,h=m.has(t.taskIndex),f=h?" gantt-bar-critical-path":"",p=h?{stroke:c.criticalStroke,strokeWidth:String(Math.max(2,1.5*d.nodeLineWidth))}:{};if(void 0!==t.milestoneX){let i=t.milestoneX,a=t.y+t.h/2,r=t.h/2,m=eO(t.tags),g="gantt-milestone"+(void 0!==m?` gantt-milestone-${m}`:"")+f,k=`M ${eG(i)} ${eG(a-r)} L ${eG(i+r)} ${eG(a)} L ${eG(i)} ${eG(a+r)} L ${eG(i-r)} ${eG(a)} Z`,x="crit"===m?{fill:c.criticalFill,stroke:c.criticalStroke,strokeWidth:String(Math.max(1.5,d.nodeLineWidth))}:"active"===m?{fill:c.nodeFill,stroke:c.nodeBorder,strokeWidth:String(Math.max(1.5,d.nodeLineWidth)),opacity:"1"}:"done"===m?{fill:c.doneFill,stroke:c.nodeBorder,strokeWidth:String(Math.max(1,d.nodeLineWidth)),opacity:d.nodeFillColor?"0.72":"0.55"}:{fill:c.nodeFill,stroke:c.nodeBorder,strokeWidth:String(Math.max(1,d.nodeLineWidth))},y={...void 0!==m?{status:m}:{},..."done"===m?{progress:1}:{},...h?{emphasis:!0}:{},...void 0!==n?{category:n}:{}},b=N(l.styleFace,"milestone",y,{includeFallback:!1}),v={...x,...ej(b),...p};u.push(e.shape({id:Y(s),role:"milestone",geometry:{kind:"path",d:k},paint:v,channels:y,attributes:eX(g,s,b,o)}));continue}let g=eO(t.tags),k={...void 0!==g?{status:g}:{},..."done"===g?{progress:1}:{},...h?{emphasis:!0}:{},...void 0!==n?{category:n}:{}},x=N(l.styleFace,"task",k,{includeFallback:!1}),y={...function(e,t,i){let a={stroke:i.nodeBorderColor?t.nodeBorder:"none",...i.nodeBorderColor?{strokeWidth:String(i.nodeLineWidth)}:{}};switch(e){case"crit":return{fill:t.criticalFill,stroke:t.criticalStroke,strokeWidth:String(Math.max(1.5,i.nodeLineWidth)),opacity:"0.95"};case"active":return{fill:t.nodeFill,stroke:t.nodeBorder,strokeWidth:String(Math.max(1.5,i.nodeLineWidth)),opacity:"1"};case"done":return{fill:t.doneFill,...a,opacity:i.nodeFillColor?"0.72":"0.55"};default:return{fill:t.nodeFill,...a,opacity:"0.92"}}}(g,c,d),...ej(x),...p};u.push(e.shape({id:Y(s),role:"task",geometry:{kind:"rect",x:eG(t.x),y:eG(t.y),width:eG(Math.max(2,t.w)),height:eG(t.h),rx:3,ry:3},paint:y,channels:k,attributes:eX(`${(i=t.tags).includes("crit")?"gantt-bar gantt-bar-crit":i.includes("active")?"gantt-bar gantt-bar-active":i.includes("done")?"gantt-bar gantt-bar-done":"gantt-bar"}${f}`,s,x,o)}))}if(f.dependencyArrows){let t=new Map(a.bars.map(e=>[e.taskIndex,e])),i=new Map;for(let n of a.dependencies){let a=eR(t.get(n.fromTaskIndex)),l=eR(t.get(n.toTaskIndex)),r=`${a}->${l}:${n.kind}`,o=i.get(r)??0;i.set(r,o+1);let s=f.criticalArrows&&n.critical,h=s?"gantt-dep-arrow gantt-dep-arrow-crit":"gantt-dep-arrow",m=s?k:g,p=n.points.map(e=>({x:eG(e.x),y:eG(e.y)})),y=p.map((e,t)=>`${0===t?"M":"L"} ${e.x} ${e.y}`).join(" "),b=0===o?`dep:${r}`:`dep:${r}#${o}`,v=e.connector({id:b,role:"edge",geometry:{kind:"path",d:y,points:p},lineStyle:"solid",paint:s?{stroke:c.criticalStroke,strokeWidth:String(eM(d.lineWidth,!0))}:{stroke:c.edgeStroke,strokeWidth:String(eM(d.lineWidth,!1))},markers:{mid:[],end:x.find(e=>e.id===m)},endpoints:{from:a,to:l},relationship:{kind:n.kind,direction:"forward"},route:{ownership:"layout"},channels:s?{status:"crit",emphasis:!0}:void 0,attributes:{className:h}});u.push(e.group({id:`${b}:fade`,role:"chrome",open:"<g>",close:"</g>",paint:{opacity:s?"0.95":"0.6"},children:[{node:v,indent:0}]}))}}let P={stroke:c.edgeStroke,strokeWidth:String(Math.max(2,d.lineWidth)),strokeDasharray:"6 3"},j=new Map;for(let t of a.verts){let i=j.get(t.label)??0;j.set(t.label,i+1),u.push(e.shape({id:`vert:${t.label}#${i}`,role:"marker-line",geometry:{kind:"line",x1:eG(t.x),y1:eG(y.y),x2:eG(t.x),y2:eG(b)},paint:P,attributes:{className:"gantt-vert-marker"}}));let n=t.labelBlock?.text??A(t.label,d.edgeTextTransform),l=a.topAxis?Math.max(24,S+1.25*d.edgeLabelFontSize):10===S&&11===d.edgeLabelFontSize?8:S;u.push(eP(e,`vert-label:${t.label}#${i}`,"axis",t.x,y.y-l,n,"gantt-axis-label",d.edgeLabelFontSize,Math.max(d.edgeLabelFontWeight,600),c.axisText,"middle",d.edgeLetterSpacing,void 0,t.labelBlock))}if(void 0!==a.todayX){let t=void 0!==a.todayMarkerStyle?R(a.todayMarkerStyle):void 0,i=Object.fromEntries(t?.applied??[]);u.push(e.shape({id:"today-marker",role:"marker-line",geometry:{kind:"line",x1:eG(a.todayX),y1:eG(y.y),x2:eG(a.todayX),y2:eG(b)},paint:{stroke:i.stroke??d.edgeStrokeColor??"var(--accent, var(--fg))",strokeWidth:i["stroke-width"]??String(Math.max(2,d.lineWidth)),strokeDasharray:i["stroke-dasharray"]??"4 3",...void 0!==i.opacity?{opacity:i.opacity}:{}},attributes:{className:"gantt-today-marker"}}))}if(a.title){let t=a.titleBlock?.text??A(a.title,d.groupTextTransform),i=a.titleY??eD(d);u.push(eP(e,"title","title",a.width/2,i,t,"gantt-title",eC(d),e_(d),c.titleFill,"middle",d.groupLetterSpacing,void 0,a.titleBlock))}if(a.emptyLabel){let t=a.emptyLabel;u.push(eP(e,"empty-state","label",y.x+y.w/2,y.y+y.h/2,t.text,"gantt-empty-state",t.fontSize,t.fontWeight,c.axisText,"middle",t.letterSpacing,void 0,t))}return u.push(e.documentClose()),{family:"gantt",width:a.width,height:a.height,colors:n,transparent:s,parts:u}}),eK=b(O,{configDiagnostics:e=>d("gantt",e,P),normalizeRequest:e=>({familyConfig:{config:el(e.source.frontmatter)}}),layout:e=>{let n=e.familyConfig?.config??el(void 0);return y(function(e,n,l={}){var r;let o=(r=function(e){let n=a((e[0]??"").trim());if(!/^gantt\s*$/i.test(n))throw new j("GANTT_BAD_DIRECTIVE",`Expected "gantt" header, got "${n}"`,1);v("gantt")&&w("gantt","header",e[0]??"",{line:1,unit:"normalized"});let l={dateFormat:"YYYY-MM-DD",inclusiveEndDates:!1,topAxis:!1,excludes:[],includes:[],weekendStart:"saturday",weekStart:"sunday",sections:[{taskIndexes:[]}],tasks:[],clicks:[]};v("gantt")&&M("gantt","initialize",l);let r=new Set,o=0;for(let n of function e(n){let l=[];for(let r=0;r<n.length;r++){let o=r,s=n[r],d=s.trim(),c=(e,t=n.slice(o,r+1))=>{let i="section"===e.kind||"title"===e.kind?s.indexOf(e.value,s.search(/\S/)+e.kind.length)+1:"task"===e.kind?s.search(/\S/)+1:void 0;l.push({...e,raw:t,startLine:o+1,endLine:r+1,valueColumn:i})};if(!d||d.startsWith("%%")){c({kind:d?"comment":"blank"});continue}let u=L(n,r);if(void 0===u){let e=n.slice(r);r=n.length-1,c({kind:"invalid",code:"GANTT_BAD_DIRECTIVE",message:"Unclosed accDescr block",structural:!0},e);break}if(null!==u){r=u.endIndex;let t=n.slice(o,r+1);if(u.suffixLine&&(t[t.length-1]=t.at(-1).slice(0,t.at(-1).indexOf("}")+1)),c({kind:"accessibility",directive:u},t),u.suffixLine){let t=n[r],i=t.indexOf("}")+1,a=e([t.slice(i)]);l.push(...a.map(e=>({...e,startLine:r+1,endLine:r+1,valueColumn:void 0===e.valueColumn?void 0:e.valueColumn+i})))}continue}if(ei(d)>=0){let t=s,i=0;for(let a=0;;a++){let n=ei(t.trim()),o=n<0?t.length:t.length-t.trimStart().length+n;if(l.push(...e([t.slice(0,o)]).map((e,t)=>({...e,startLine:r+1,endLine:r+1,valueColumn:void 0===e.valueColumn?void 0:e.valueColumn+i,...a>0&&0===t?{afterSemicolon:!0}:{}}))),n<0)break;i+=o+1,t=t.slice(o+1)}continue}let h=function(e,t){if(!ea.test(e[t].trim()))return -1;let i=t+1;for(;i<e.length&&(!e[i].trim()||e[i].trim().startsWith("%%"));)i++;return i<e.length&&en.test(e[i].trim())?i:-1}(n,r);h>r&&(r=h,d=`${d}
10
- ${n[r].trim()}`);let f=!1;for(let[e,t]of Object.entries(q)){let i=("weekday"===e||"weekend"===e?a(d):d).match(t);if(!i)continue;f=!0;let n=i[1].trim();c("title"===e||"section"===e?{kind:e,value:n}:"click"===e?{kind:"click",taskId:n,action:i[2].toLowerCase(),rest:i[3].trim()}:"weekday"!==e||K.includes(n.toLowerCase())?"weekend"!==e||["friday","saturday"].includes(n.toLowerCase())?{kind:"directive",name:e,value:n}:{kind:"invalid",code:"GANTT_BAD_DIRECTIVE",message:`Invalid weekend "${n}" (friday or saturday)`}:{kind:"invalid",code:"GANTT_BAD_DIRECTIVE",message:`Invalid weekday "${n}"`});break}if(f)continue;let m=a(d);if(/^(inclusiveEndDates|topAxis)\s*$/i.test(m)){c({kind:"directive",name:/^topAxis/i.test(m)?"topAxis":"inclusiveEndDates",value:""});continue}let p=d.indexOf(":");if(!/^(dateFormat|axisFormat|tickInterval|inclusiveEndDates|topAxis|excludes|includes|todayMarker|weekday|weekend|click)\b/i.test(d)&&p>0&&p<d.length-1){let e=d.slice(0,p).trim(),n=s.indexOf(":"),l=i(s.slice(n+1)),r=l<0?-1:n+1+l,o=a(d.slice(p+1)).trim(),u=function(e){let t=e.split(",").map(e=>e.trim());if(t.some(e=>0===e.length))return null;let i=[],a=0;for(;a<t.length&&J.includes(t[a]);){let e=t[a];if(i.includes(e))return null;i.push(e),a++}let n=t.slice(a);if(0===n.length||n.length>3)return null;let l=e=>{let t=e.match(/^after\s+(.+)$/);return t?{kind:"after",refs:t[1].split(/\s+/).filter(Boolean)}:{kind:"date",raw:e}},r=e=>{let t=e.match(/^until\s+(.+)$/);return t?{kind:"until",refs:t[1].split(/\s+/).filter(Boolean)}:V.test(e)?{kind:"duration",raw:e}:{kind:"date",raw:e}};if(1===n.length)return{tags:i,end:r(n[0])};if(2===n.length)return{tags:i,start:l(n[0]),end:r(n[1])};let o=n[0];return/^[\w-]+$/.test(o)?{tags:i,id:o,start:l(n[1]),end:r(n[2])}:null}(o);u?(c({kind:"task",label:t(e,{subject:"Gantt task text entity",example:"Task #35;1 : 1d"}),labelSource:e,meta:u},[r<0?s:s.slice(0,r)]),r>=0&&c({kind:"comment"},[s.slice(r)])):c({kind:"invalid",code:"GANTT_BAD_TASK",message:`Invalid task metadata "${o}"`})}else c({kind:"invalid",code:"GANTT_BAD_DIRECTIVE",message:`Unrecognized gantt line "${d}"`})}return l}(e.slice(1))){let e=n.startLine+1;if(v("gantt")&&w("gantt","directive"===n.kind?n.name:n.kind,n.raw.join(`
11
- `),{line:e,unit:"normalized"}),"invalid"===n.kind)throw new j(n.code,n.message,e);if("accessibility"===n.kind)n.directive.title?l.accTitle=n.directive.value:l.accDescr=n.directive.value.replace(/\s*\n\s*/g," "),v("gantt")&&M("gantt",n.directive.title?"setAccessibilityTitle":"setAccessibilityDescription",n.directive.title?l.accTitle:l.accDescr,{line:e,unit:"normalized"});else if("title"===n.kind)l.title=n.value,v("gantt")&&M("gantt","setTitle",l.title,{line:e,unit:"normalized"});else if("directive"===n.kind){let t=n.value;switch(n.name){case"dateFormat":l.dateFormat=t;break;case"axisFormat":l.axisFormat=t;break;case"tickInterval":{let e=t.match(Z);e&&(l.tickInterval={count:Number(e[1]),unit:e[2]});break}case"inclusiveEndDates":l.inclusiveEndDates=!0;break;case"topAxis":l.topAxis=!0;break;case"excludes":{let i=Q(t);l.excludes.push(...i),v("gantt")&&M("gantt","appendExcludes",i,{line:e,unit:"normalized"});break}case"includes":{let i=Q(t);l.includes.push(...i),v("gantt")&&M("gantt","appendIncludes",i,{line:e,unit:"normalized"});break}case"todayMarker":l.todayMarker="off"===t.toLowerCase()?{off:!0}:{off:!1,style:t};break;case"weekday":l.weekStart=t.toLowerCase();break;case"weekend":l.weekendStart=t.toLowerCase()}if(v("gantt")){let i="weekday"===n.name?"weekStart":"weekend"===n.name?"weekendStart":n.name;"excludes"!==n.name&&"includes"!==n.name&&("tickInterval"!==n.name||Z.test(t))&&M("gantt",`set:${i}`,l[i],{line:e,unit:"normalized"})}}else if("click"===n.kind)l.clicks.push({taskId:n.taskId,action:n.action,rest:n.rest,line:e}),v("gantt")&&M("gantt","addClick",l.clicks.at(-1),{line:e,unit:"normalized"});else if("section"===n.kind)l.sections.push({label:n.value,taskIndexes:[],line:e}),o=l.sections.length-1,v("gantt")&&M("gantt","addSection",{index:o,...l.sections[o]},{line:e,unit:"normalized"});else if("task"===n.kind){let{label:t,meta:i}=n;if(void 0!==i.id){if(r.has(i.id))throw new j("GANTT_DUPLICATE_TASK_ID",`Duplicate task id "${i.id}"`,e);r.add(i.id)}let a={index:l.tasks.length,id:i.id,label:t,tags:i.tags,start:i.start,end:i.end,sectionIndex:o,line:e};l.tasks.push(a),v("gantt")&&M("gantt","addTask",a,{line:e,unit:"normalized"}),l.sections[o].taskIndexes.push(a.index),v("gantt")&&M("gantt","attachTask",{sectionIndex:o,taskIndex:a.index,taskId:a.id},{line:e,unit:"normalized"})}}return l.todayMarker?.style!==void 0&&R(l.todayMarker.style),l}(e),void 0!==n.title&&void 0===r.title&&(r.title=n.title),n.displayMode&&(r.displayMode=n.displayMode),void 0!==n.barHeight&&(r.barHeight=n.barHeight),n.topAxis&&(r.topAxis=!0),void 0!==n.axisFormat&&void 0===r.axisFormat&&(r.axisFormat=n.axisFormat),void 0!==n.tickInterval&&void 0===r.tickInterval&&(r.tickInterval=n.tickInterval),r),s=function(e,t={}){let i,a={dateFormat:e.dateFormat,inclusiveEndDates:e.inclusiveEndDates,excludes:e.excludes,includes:e.includes,weekendStart:e.weekendStart,weekStart:e.weekStart},n=function(e){let t=ep(e.excludes,e),i=ep(e.includes,e),a="friday"===e.weekendStart?[5,6]:[6,0],n=e=>{let n=er(e),l=es(e);return!(i.days.has(n)||i.weekdays.has(l)||i.weekends&&a.includes(l))&&!!(t.days.has(n)||t.weekdays.has(l)||t.weekends&&a.includes(l))};if(e.excludes.length){let e;eg.set(n,()=>e??={weekdays:Array.from({length:7},(e,n)=>!(i.weekdays.has(n)||i.weekends&&a.includes(n))&&(t.weekdays.has(n)||t.weekends&&a.includes(n))),exceptions:[...new Set([...t.days,...i.days])].sort((e,t)=>e-t)})}return n}(a),l=!eh(e.dateFormat).some(e=>"field"===e.kind&&eu.has(e.field)),r=new Map;for(let t of e.tasks)void 0!==t.id&&r.set(t.id,t);let o=e.tasks.map((t,i)=>(function(e,t,i){let a=[];if(void 0===e.start&&i&&a.push(i.index),e.start?.kind==="after")for(let i of e.start.refs){let n=t.get(i);if(!n)throw new j("GANTT_UNKNOWN_TASK_REF",`Task "${e.label}" starts after unknown id "${i}"`,e.line);a.push(n.index)}if("until"===e.end.kind)for(let i of e.end.refs){let n=t.get(i);if(!n)throw new j("GANTT_UNKNOWN_TASK_REF",`Task "${e.label}" runs until unknown id "${i}"`,e.line);a.push(n.index)}return a})(t,r,e.tasks[i-1])),s=function(e,t,i){let a=Array(e).fill(0),n=[],l=Array(e).fill(0),r=[];for(let o=0;o<e;o++)if(0===a[o])for(a[o]=1,n.push(o);n.length;){let e=n.at(-1);if(l[e]<t[e].length){let r=t[e][l[e]];if(l[e]=l[e]+1,0===a[r])a[r]=1,n.push(r);else if(1===a[r]){let e=n.indexOf(r),t=n.slice(e).concat(r).map(i);throw new j("GANTT_DEPENDENCY_CYCLE",`Dependency cycle: ${t.join(" -> ")}`)}}else n.pop(),a[e]=2,r.push(e)}return r}(e.tasks.length,o,t=>e.tasks[t].id??e.tasks[t].label),d=Array(e.tasks.length),c=t=>{let i;if(d[t.index])return d[t.index];if(void 0===t.start){let e=t.index>0?d[t.index-1]:void 0;if(!e)throw new j("GANTT_NO_START",`Task "${t.label}" has no start date and no previous task to follow`,t.line);i=e.end}else if("after"===t.start.kind)i=Math.max(...t.start.refs.map(e=>d[r.get(e).index].end));else{let a=ef(t.start.raw,e.dateFormat);if(null===a)throw new j("GANTT_BAD_DATE",`Invalid start date "${t.start.raw}" for dateFormat "${e.dateFormat}"`,t.line);i=a}let o,s=!1;if("until"===t.end.kind)o=Math.min(...t.end.refs.map(e=>d[r.get(e).index].start)),s=!0;else if("duration"===t.end.kind){let e=function(e,t){let i=t.match(V);if(!i)return null;let a=Number(i[1]),n=i[2];if(!Number.isFinite(a))return null;if("M"===n||"y"===n){let t="y"===n?12*a:a,i=Math.trunc(t),l=t-i,r=new Date(e),o=r.getUTCMonth()+i,s=new Date(Date.UTC(r.getUTCFullYear(),o,1,r.getUTCHours(),r.getUTCMinutes(),r.getUTCSeconds(),r.getUTCMilliseconds())),d=new Date(Date.UTC(s.getUTCFullYear(),s.getUTCMonth()+1,0)).getUTCDate();s.setUTCDate(Math.min(r.getUTCDate(),d));let c=s.getTime();return l>0&&(c+=Math.round(30*l*864e5)),c}return e+Math.round(a*em[n])}(i,t.end.raw);if(null===e)throw new j("GANTT_BAD_DURATION",`Invalid duration "${t.end.raw}"`,t.line);o=e}else{let i=ef(t.end.raw,e.dateFormat);if(null===i)throw new j("GANTT_BAD_DATE",`Invalid end date "${t.end.raw}" for dateFormat "${e.dateFormat}"`,t.line);o=a.inclusiveEndDates&&l?i+864e5:i,s=!0}let c=o;if(!s&&a.excludes.length>0){let e=function(e,t,i,a){let n=e+864e5,l=t,r=t,o=!1,s=0,d=t-e>=12096e5&&Number.isSafeInteger(e)&&Number.isSafeInteger(t)&&Math.max(Math.abs(e),Math.abs(t))+864e9<Number.MAX_SAFE_INTEGER?eg.get(i)?.():void 0;for(;n<=l;){if(d){let e=er(n),t=0,i=d.exceptions.length;for(;t<i;){let a=t+i>>>1;d.exceptions[a]<e?t=a+1:i=a}let a=Math.floor(Math.min(Math.floor((l-n)/864e5)+1,1e4-s,t<d.exceptions.length?d.exceptions[t]-e:1/0)/7);if(a>0){let e=es(n),t=0,i,c,u=o,h=d.weekdays[(e+6)%7];for(let a=0;a<7;a++)u||(i=t),h||(c=t),(u=h=d.weekdays[(e+a)%7])&&t++;let f=a>1&&void 0!==c?(a-1)*t+c:i;void 0!==f&&(r=l+864e5*f),l+=a*t*864e5,n+=7*a*864e5,s+=7*a,o=u;continue}}if(++s>1e4)throw new j("GANTT_SCHEDULE_OVERFLOW","Calendar exclusion walk exceeded 10000 days (is every day excluded?)",a);o||(r=l),(o=i(n))&&(l+=864e5),n+=864e5}return{end:l,renderEnd:r}}(i,o,n,t.line);o=e.end,c=e.renderEnd}o<i&&(o=i),c<i&&(c=i),c>o&&(c=o);let u={index:t.index,id:t.id,label:t.label,tags:t.tags,sectionIndex:t.sectionIndex,start:i,end:o,renderEnd:c,manualEnd:s,line:t.line};return d[t.index]=u,u};for(let t of s)c(e.tasks[t]);if(0===d.length)return{tasks:d,timeMin:0,timeMax:0,dateOnly:l,isExcludedDay:n};let u=1/0,h=-1/0;for(let e of d)u=Math.min(u,e.start),h=Math.max(h,e.renderEnd);if(h===u&&(h=u+(l?864e5:36e5)),void 0!==t.today&&!e.todayMarker?.off){let a=ef(t.today,e.dateFormat)??ef(t.today,"YYYY-MM-DD");if(null===a)throw new j("GANTT_BAD_DATE",`Invalid clock value "${t.today}" for dateFormat "${e.dateFormat}"`);i=a}return{tasks:d,timeMin:u,timeMax:h,dateOnly:l,today:i,analysis:function(e,t,i,a){let n=[],l=new Set;for(let t of e.tasks){if(t.start?.kind==="after")for(let e of t.start.refs){let a=i.get(e);n.push({from:a.index,to:t.index}),l.add(a.index)}if("until"===t.end.kind)for(let e of t.end.refs)l.add(i.get(e).index)}if(0===n.length)return;let r=Math.min(...t.map(e=>e.start)),o=Math.max(...t.map(e=>e.end)),s=t.map(()=>[]);for(let e of n)s[e.from].push(e.to);let d=Array(t.length).fill(NaN);for(let e=a.length-1;e>=0;e--){let i=a[e],n=s[i],l=o;for(let e of n){let i=t[e].end-t[e].start;l=Math.min(l,d[e]-i)}d[i]=l}let c={},u=new Set;for(let e of n)u.add(e.from),u.add(e.to);let h=[];for(let e of t){let t=d[e.index]-e.end;void 0!==e.id&&(c[e.id]=t),u.has(e.index)&&0===t&&void 0!==e.id&&h.push(e.id)}let f=new Set(n.map(e=>e.to));return{criticalPathTaskIds:h,slackByTaskId:c,projectStart:r,projectEnd:o,entryTaskIds:t.filter(e=>void 0!==e.id&&!f.has(e.index)).map(e=>e.id),sinkTaskIds:t.filter(e=>void 0!==e.id&&!l.has(e.index)).map(e=>e.id)}}(e,d,r,s),isExcludedDay:n}}(o,l.clock),d=function(e,t,i={}){let a,n=eI(i.renderOptions,i.styleFace),l=i.compact??"compact"===e.displayMode,r=0===t.tasks.length?E("No tasks scheduled",{fontSize:n.nodeLabelFontSize,fontWeight:n.nodeLabelFontWeight,transform:n.nodeTextTransform,letterSpacing:n.nodeLetterSpacing}):void 0,o=i.barHeight??e.barHeight??22,s=Math.ceil(Math.max(o,1.3*Math.max(n.nodeLabelFontSize,n.groupHeaderFontSize)))+8,d=t.tasks.filter(e=>e.tags.includes("vert")),c=t.tasks.filter(e=>!e.tags.includes("vert")),u=function(e){let t=new Map;for(let i of e){let e=t.get(i.sectionIndex);e||t.set(i.sectionIndex,e=[]),e.push(i)}return t}(c),h=new Map,f=new Map,m=0;for(let e of c)if(l){let t=E(e.label,{display:"literal",transform:n.nodeTextTransform,fontSize:n.nodeLabelFontSize,fontWeight:n.nodeLabelFontWeight,letterSpacing:n.nodeLetterSpacing});h.set(e.index,{lines:t.lines,width:t.width,block:t}),m=Math.max(m,t.width)}else{let t=eY(e.label,n.nodeTextTransform,n.nodeLabelFontSize,n.nodeLabelFontWeight,n.nodeLetterSpacing);h.set(e.index,t),m=Math.max(m,t.width)}for(let t=0;t<e.sections.length;t++){let i=e.sections[t];if(i.label){let e=eY(z(i.label),n.groupTextTransform,n.groupHeaderFontSize,n.groupHeaderFontWeight,n.groupLetterSpacing);f.set(t,e),m=Math.max(m,e.width)}}m=Math.ceil(m)+Math.max(12,i.renderOptions?.gantt?.dependencyArrows?eT(eM(n.lineWidth,!0===i.renderOptions.gantt.criticalPath))+4:0),l&&(s=Math.max(s,...[...h.values()].map(e=>Math.ceil(e.block.height)+8)));let p=new Map(d.map(e=>[e.index,E(e.label,{display:"literal",transform:n.edgeTextTransform,fontSize:n.edgeLabelFontSize,fontWeight:Math.max(n.edgeLabelFontWeight,600),letterSpacing:n.edgeLetterSpacing})])),g=Math.max(1,t.timeMax-t.timeMin),k=(function(e,t,i=8){if(0===e.tasks.length)return[];let a=function(e,t,i=8){let a=e.timeMax-e.timeMin;if(t.tickInterval&&a/(eL[t.tickInterval.unit]*t.tickInterval.count)<=120)return{...t.tickInterval,format:t.axisFormat??function(e){switch(e){case"millisecond":case"second":return"%H:%M:%S";case"minute":case"hour":return"%H:%M";case"day":case"week":return"%m-%d";case"month":return"%b %Y"}}(t.tickInterval.unit)};for(let e of e$)if(a/(eL[e.unit]*e.count)<=i)return{unit:e.unit,count:e.count,format:t.axisFormat??e.format};let n=e$[e$.length-1],l=n.count;for(;a/(eL.month*l)>120;)l*=2;return{unit:"month",count:l,format:t.axisFormat??n.format}}(e,t,i),n=ed[t.weekStart],l=[],r=function(e,t,i){if("week"===t.unit){let t=eo(e),a=0;for(;es(t)!==i&&a++<7;)t-=864e5;return t}if("month"===t.unit){let t=new Date(e);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1)}if("day"===t.unit)return eo(e);let a=eL[t.unit]*t.count;return Math.floor(e/a)*a}(e.timeMin,a,n),o=0;for(;r<=e.timeMax&&o++<=120;)r>=e.timeMin&&l.push({time:r,label:ev(r,a.format)}),r=function(e,t){if("month"===t.unit){let i=new Date(e);return Date.UTC(i.getUTCFullYear(),i.getUTCMonth()+t.count,1)}return e+eL[t.unit]*t.count}(r,a);return 0===l.length&&l.push({time:e.timeMin,label:ev(e.timeMin,a.format)}),l})(t,e).map(e=>({...e,block:E(e.label,{display:"literal",transform:n.edgeTextTransform,fontSize:n.edgeLabelFontSize,fontWeight:n.edgeLabelFontWeight,letterSpacing:n.edgeLetterSpacing})})),x=16+m,y=i.width??32+m+600,b=Math.max(16,Math.ceil((a=Math.max(120,y-x-16),Math.max(0,...k.map(e=>e.block.width/2-(t.timeMax-e.time)/g*a))+2))),v=e.title?E(e.title,{display:"literal",transform:n.groupTextTransform,fontSize:eC(n),fontWeight:e_(n),letterSpacing:n.groupLetterSpacing,...void 0===i.width?{}:{maxWidth:Math.max(1,i.width-32)}}):void 0,w=v?.width??0,M=v?v.height-v.lineHeight:0,S=i.width??Math.max(y+b-16,Math.ceil(w)+32),T=Math.max(120,S-x-b),F=v?Math.max(eW(n)+M,v.height):0,L=Math.max(24,Math.ceil(eA(n)+.65*n.edgeLabelFontSize+4)),$=16+F+(e.topAxis?L:0)+Math.max(0,...[...p.values()].map(e=>(e.height-e.lineHeight)/2)),I=e=>x+(e-t.timeMin)/g*T,C=[],_=[],D=[],A=$,W=(e,t)=>Math.max(s,Math.ceil(o/2+(e-.5)*t)+8),B=Math.max(1.3*n.nodeLabelFontSize,...[...h.values()].map(e=>e.block.lineHeight)),U=Math.max(1.3*n.groupHeaderFontSize,...[...f.values()].map(e=>e.block.lineHeight));for(let t=0;t<e.sections.length;t++){let i=e.sections[t],a=u.get(t)??[];if(0===a.length&&void 0===i.label)continue;let n=D.length,r=A,d=_.length,c=f.get(t)?.lines;void 0!==i.label&&(A+=W(c?.length??1,U));let m=l?function(e){let t=[],i=[],a=0,n;for(let l of e){let r=-1;if(n){if(n[1]<=l.start){let e=1;for(;e<a;)e=n[2*e]<=l.start?2*e:2*e+1;r=e-a}}else r=t.findIndex(e=>e<=l.start);-1===r&&(r=t.length);let o=r===t.length;if(t[r]=l.end,i.push(r),n&&t.length<=a){let e=a+r;for(n[e]=t[r];(e>>=1)>0;)n[e]=Math.min(n[2*e],n[2*e+1])}else if(n||o&&33===t.length&&i.length<e.length&&e.every(e=>Number.isFinite(e.start)&&Number.isFinite(e.end))){n=Array(2*(a=0===a?64:2*a)).fill(1/0);for(let e=0;e<t.length;e++)n[a+e]=t[e];for(let e=a-1;e>0;e--)n[e]=Math.min(n[2*e],n[2*e+1])}}return i}(a):a.map((e,t)=>t),p=0===a.length?0:Math.max(...m)+1,g=[];if(l)for(let e=0;e<p;e++)g.push({barIndexes:[],sectionIndex:n,y:A+e*s,h:o});else{let e=A;for(let t of a)g.push({barIndexes:[],sectionIndex:n,y:e,h:o}),e+=W(h.get(t.index)?.lines.length??1,B)}if(a.forEach((e,t)=>{let a=m[t],l=g[a],r=I(e.start),s=Math.max(2*(e.renderEnd>e.start),I(e.renderEnd)-r),c;if(e.tags.includes("milestone")){let e=o/2,t=x+e;c=Math.min(Math.max(t,x+T-e),Math.max(t,r+s/2))}let u=h.get(e.index)?.lines;C.push({taskIndex:e.index,id:e.id,label:e.label,labelBlock:h.get(e.index)?.block,tags:e.tags,sectionIndex:n,x:r,y:l.y,w:s,h:o,milestoneX:c,rowIndex:d+ +(void 0!==i.label)+a,start:e.start,end:e.renderEnd,...u&&u.length>1?{labelLines:u}:{}}),l.barIndexes.push(C.length-1)}),_.push(...g),l)A+=p*s;else for(let e of a)A+=W(h.get(e.index)?.lines.length??1,B);D.push({label:i.label,labelBlock:f.get(t)?.block,y:r,h:A-r,rowStart:d,rowEnd:_.length,...c&&c.length>1?{labelLines:c}:{}}),A+=6}let N=Math.max(s,A-$,r?r.height+16:0),H=$+N+L+16,Y=k.map(e=>({time:e.time,x:I(e.time),label:e.label,labelBlock:e.block})),O=d.map(e=>({taskIndex:e.index,label:e.label,labelBlock:p.get(e.index),x:I(e.start+(e.renderEnd-e.start)/2),time:e.start})),P=void 0!==i.today&&i.today>=t.timeMin&&i.today<=t.timeMax?I(i.today):void 0,j=[];if(e.excludes.length>0&&t.dateOnly&&(t.timeMax-eo(t.timeMin))/864e5<=1e4){let e,i=i=>{if(void 0===e)return;let a=Math.max(e,t.timeMin),n=Math.min(i,t.timeMax);n>a&&j.push({x:I(a),w:I(n)-I(a),start:a,end:n}),e=void 0};for(let a=eo(t.timeMin);a<t.timeMax;a+=864e5)t.isExcludedDay(a)?void 0===e&&(e=a):i(a);i(t.timeMax)}let X=new Set(t.analysis?.criticalPathTaskIds??[]),G=t.tasks.filter(e=>void 0!==e.id&&X.has(e.id)).map(e=>e.index),R=function(e,t,i,a,n,l,r={}){let o=function(e){let t=new Map;for(let i of e.tasks)void 0!==i.id&&t.set(i.id,i);let i=[],a=new Set,n=(e,t,n)=>{let l=`${e}>${t}:${n}`;a.has(l)||(a.add(l),i.push({from:e,to:t,kind:n}))};for(let i of e.tasks){if(i.start?.kind==="after")for(let e of i.start.refs){let a=t.get(e);a&&n(a.index,i.index,"after")}if("until"===i.end.kind)for(let e of i.end.refs){let a=t.get(e);a&&n(i.index,a.index,"until")}}return i}(e);if(0===o.length)return[];let s=new Map(i.map(e=>[e.taskIndex,e])),d=i.map(ez),c=a.map(e=>({y:e.y,h:e.h})).sort((e,t)=>e.y-t.y),u=new Set(t.analysis?.criticalPathTaskIds??[]),h=[];for(let e of o){let i=s.get(e.from),a=s.get(e.to);if(!i||!a)continue;let o=t.tasks[e.from],f=t.tasks[e.to],m="after"===e.kind&&void 0!==o.id&&void 0!==f.id&&u.has(o.id)&&u.has(f.id)&&o.end===f.start,p=function(e,t,i,a,n,l=8){let r=e.rect,o=t.rect,s=r.y+r.h/2,d=o.y+o.h/2,c=eU(a,s),u=eU(a,d);if(-1===c||-1===u)return null;let h=c===u,f=h||u>c,m=f?eN(a,c,n):eH(a,c,n),p=h?m:f?eH(a,u,n):eN(a,u,n),g=[],k=r.x+r.w,x=[{x:k,y:s},{x:k+l,y:s},{x:k+l,y:m}];if(eE(x[0],x[1],i)||eE(x[1],x[2],i)){let t=e.tipX??(r.w>=2*l?k-l:r.x+r.w/2);g.push({x:t,y:f?r.y+r.h:r.y},{x:t,y:m})}else g.push(...x);let y=g[g.length-1].x,b=o.x-l;if(!h){let e=f?1:-1;for(let t=c+e;t!==u;t+=e){let e=a[t];if(i.some(t=>eB(y,e.y-1,e.y+e.h+1,t))){let l=f?eH(a,t,n):eN(a,t,n),r=function(e,t,i,a){let n=i.x-8,l=i.x+i.w+8,r=t.filter(t=>t.y<e.y+e.h-.01&&t.y+t.h>e.y+.01),o=new Set([n]);for(let e of r)o.add(Math.max(n,Math.min(l,e.x-8))),o.add(Math.max(n,Math.min(l,e.x+e.w+8)));let s=n,d=1/0;for(let t of o){if(r.some(i=>eB(t,e.y-1,e.y+e.h+1,i)))continue;let i=Math.abs(t-a);(i<d-.01||.01>=Math.abs(i-d)&&t<s)&&(s=t,d=i)}return s}(e,i,n,b);g.push({x:y,y:l},{x:r,y:l}),y=r}}}let v=o.x-l,w=[{x:v,y:p},{x:v,y:d},{x:o.x,y:d}],M,S;if(eE(w[0],w[1],i)||eE(w[1],w[2],i)){let e=t.tipX??(o.w>=2*l?o.x+l:o.x+o.w/2),i=p<o.y;S=[{x:e,y:p},{x:e,y:i?o.y:o.y+o.h}],M=i?"down":"up"}else S=w,M="right";g.push({x:y,y:p},...S);let T=function(e){let t=[];for(let i of e){let e=t[t.length-1];if(e&&.01>=Math.abs(e.x-i.x)&&.01>=Math.abs(e.y-i.y))continue;t.push({x:i.x,y:i.y});let a=t.length;if(a>=3){let e=t[a-3],i=t[a-2],n=t[a-1];(.01>=Math.abs(e.x-i.x)&&.01>=Math.abs(i.x-n.x)||.01>=Math.abs(e.y-i.y)&&.01>=Math.abs(i.y-n.y))&&t.splice(a-2,1)}}return t}(g);for(let e=1;e<T.length;e++)if(eE(T[e-1],T[e],i))return null;return{points:T,arrowDir:M}}({rect:ez(i),tipX:i.milestoneX},{rect:ez(a),tipX:a.milestoneX},d,c,n,r.gantt?.dependencyArrows?eT(eM(l.lineWidth,!0===r.gantt.criticalPath&&m)):8);p&&h.push({fromTaskIndex:e.from,toTaskIndex:e.to,kind:e.kind,critical:m,points:p.points,arrowDir:p.arrowDir})}return h}(e,t,C,_,{x:x,y:$,w:T,h:N},n,i.renderOptions),J=new Map(e.tasks.flatMap(e=>e.id?[[e.id,e.index]]:[])),K=e.clicks.flatMap(e=>{if("href"!==e.action)return[];let t=J.get(e.taskId),i=e.rest.match(/^"((?:\\.|[^"])*)"|^(\S+)/)?.slice(1).find(Boolean);return void 0!==t&&i&&/^(?:https?:|mailto:)/i.test(i)?[{taskIndex:t,href:i.replace(/\\(["\\])/g,"$1")}]:[]}),V=new Map;for(let e of C){let t=V.get(e.y)??[];t.push(e),V.set(e.y,t)}for(let e of V.values())e.sort((e,t)=>e.x-t.x),e.forEach((t,i)=>{let a=t.labelBlock;if(!a)return;let n=t.y+t.h/2,r=i>0?e[i-1].x+e[i-1].w+4:2,o=i+1<e.length?e[i+1].x-4:S-2;t.labelPosition=l?t.x-6-a.width>=r?{x:t.x-6,y:n,anchor:"end"}:t.x+t.w+6+a.width<=o?{x:t.x+t.w+6,y:n,anchor:"start"}:{x:16,y:n,anchor:"start"}:{x:16,y:n,anchor:"start"}});return{...r?{emptyLabel:r}:{},title:v?.text,titleBlock:v,titleY:Math.max(eD(n),(v?.lineHeight??0)/2)+M/2,width:S,height:H,plot:{x:x,y:$,w:T,h:N},labelColumnWidth:m,rows:_,sections:D,bars:C,links:K,verts:O,ticks:Y,dependencies:R,criticalTaskIndexes:G,excludedBands:j,topAxis:e.topAxis,todayX:P,...e.todayMarker?.style!==void 0?{todayMarkerStyle:e.todayMarker.style}:{},timeMin:t.timeMin,timeMax:t.timeMax,dateOnly:t.dateOnly,compact:l,barHeight:o}}(o,s,{...l.layout,today:s.today});return{model:o,schedule:s,positioned:d}}(e.source.familyLines,n,{clock:{today:e.renderOptions.ganttToday},layout:{renderOptions:e.renderOptions,...e.styleFace?{styleFace:e.styleFace}:{}}}).positioned)},projectPositioned:k(function({positioned:e,options:t}){let i=e.plot.x+e.plot.w,a={version:1,nodes:e.bars.map(t=>{let a=t.id??`task#${t.taskIndex}`,n=t.labelPosition,l=n&&!e.compact&&t.labelBlock?n.y+(t.labelBlock.height-t.labelBlock.lineHeight)/2:n?.y,r=n&&void 0!==l?g(t.labelBlock,n.x,l,h(e),n.anchor):{};if(void 0!==t.milestoneX){let e=t.h/2;return{id:a,x:f(t.milestoneX-e),y:f(t.y),w:m(t.milestoneX-e,t.h),h:m(t.y,t.h),shape:"diamond",label:t.label,...r}}let o=Math.max(2,t.w),s=Math.min(t.x,i-o);return{id:a,x:f(s),y:f(t.y),w:m(s,o),h:m(t.y,t.h),shape:"rectangle",label:t.label,...r}}),edges:[],groups:e.sections.map((t,i)=>({id:`section#${i}`,x:f(e.plot.x),y:f(t.y),w:m(e.plot.x,e.plot.w),h:m(t.y,t.h),members:e.bars.filter(e=>e.sectionIndex===i).map(e=>e.id??`task#${e.taskIndex}`),label:t.label})),bounds:{w:f(e.width),h:f(e.height)}};return t.debug&&(a.certificates=p("gantt",a,"section-contained")),a}),lowerScene:x(eJ)});export{eK as default};
9
+ </defs>`));let y=a.plot,b=y.y+y.h,v=new Map;a.sections.forEach((t,i)=>{if(i%2==0){let i=t.label??"",a=v.get(i)??0;v.set(i,a+1),u.push(e.shape({id:`section-band:${i}#${a}`,role:"section",geometry:{kind:"rect",x:eG(y.x),y:eG(t.y),width:eG(y.w),height:eG(t.h)},paint:{fill:c.groupFill,opacity:c.groupOpacity},channels:void 0!==t.label?{category:t.label}:void 0,attributes:{className:"gantt-section-band"}}))}});let w={fill:c.excludedFill,opacity:"0.1"};for(let t of a.excludedBands)u.push(e.shape({id:`excluded:${t.start}`,role:"grid",geometry:{kind:"rect",x:eG(t.x),y:eG(y.y),width:eG(t.w),height:eG(y.h)},paint:w,attributes:{className:"gantt-excluded-band"}}));let M={stroke:c.edgeStroke,strokeWidth:String(d.lineWidth),opacity:d.edgeStrokeColor?"0.6":"0.45"};for(let t of a.ticks)u.push(e.shape({id:`grid:${t.time}`,role:"grid",geometry:{kind:"line",x1:eG(t.x),y1:eG(y.y),x2:eG(t.x),y2:eG(b)},paint:M,attributes:{className:"gantt-grid-line"}}));let S=eA(d),T=10===S&&11===d.edgeLabelFontSize?12:Math.max(12,S);for(let t of a.ticks){let i=t.labelBlock?.text??A(t.label,d.edgeTextTransform);u.push(eP(e,`axis:${t.time}:bottom`,"axis",t.x,b+T,i,"gantt-axis-label",d.edgeLabelFontSize,d.edgeLabelFontWeight,c.axisText,"middle",d.edgeLetterSpacing,void 0,t.labelBlock)),a.topAxis&&u.push(eP(e,`axis:${t.time}:top`,"axis",t.x,y.y-S,i,"gantt-axis-label",d.edgeLabelFontSize,d.edgeLabelFontWeight,c.axisText,"middle",d.edgeLetterSpacing,void 0,t.labelBlock))}let F=1.3*d.groupHeaderFontSize,L=1.3*d.nodeLabelFontSize,D=new Map;for(let t of a.sections)if(void 0!==t.label){let i=D.get(t.label)??0;D.set(t.label,i+1),(t.labelBlock?.lines??t.labelLines??[A(t.label,d.groupTextTransform)]).forEach((n,l)=>{let r=0===l?`section-label:${t.label}#${i}`:`section-label:${t.label}#${i}/${l}`;u.push(eP(e,r,"section",8,t.y+a.barHeight/2+4+l*(t.labelBlock?.lineHeight??F),n,"gantt-section-label",d.groupHeaderFontSize,d.groupHeaderFontWeight,c.groupText,"start",d.groupLetterSpacing,{category:t.label},z(t.labelBlock,l)))})}let W=new Map,B=e=>{let t=W.get(e)??0;return W.set(e,t+1),0===t?`task-label:${e}`:`task-label:${e}#${t}`};if(a.compact){let t=new Map;for(let e of a.bars){let i=t.get(e.y)??[];i.push(e),t.set(e.y,i)}for(let i of t.values())i.sort((e,t)=>e.x-t.x),i.forEach((t,n)=>{let l=t.labelBlock??H(t.label,{display:"literal",transform:d.nodeTextTransform,fontSize:d.nodeLabelFontSize,fontWeight:d.nodeLabelFontWeight,letterSpacing:d.nodeLetterSpacing}),r=l.text,o=l.width,s=t.y+t.h/2;if(t.labelPosition)return void u.push(eP(e,B(t.id??t.label),"label",t.labelPosition.x,t.labelPosition.y,r,"gantt-task-label",d.nodeLabelFontSize,d.nodeLabelFontWeight,c.taskText,t.labelPosition.anchor,d.nodeLetterSpacing,void 0,l));let h=n>0?i[n-1].x+i[n-1].w+4:2,f=n+1<i.length?i[n+1].x-4:a.width-2;t.x-6-o>=h?u.push(eP(e,B(t.id??t.label),"label",t.x-6,s,r,"gantt-task-label",d.nodeLabelFontSize,d.nodeLabelFontWeight,c.taskText,"end",d.nodeLetterSpacing,void 0,l)):t.x+t.w+6+o<=f?u.push(eP(e,B(t.id??t.label),"label",t.x+t.w+6,s,r,"gantt-task-label",d.nodeLabelFontSize,d.nodeLabelFontWeight,c.taskText,"start",d.nodeLetterSpacing,void 0,l)):u.push(eP(e,B(t.id??t.label),"label",16,s,r,"gantt-task-label",d.nodeLabelFontSize,d.nodeLabelFontWeight,c.taskText,"start",d.nodeLetterSpacing,void 0,l))})}else for(let t of a.bars){let i=t.labelBlock?.lines??t.labelLines??[A(t.label,d.nodeTextTransform)],a=B(t.id??t.label);i.forEach((i,n)=>{let l=0===n?a:`${a}/${n}`;u.push(eP(e,l,"label",t.labelPosition?.x??16,(t.labelPosition?.y??t.y+t.h/2)+n*(t.labelBlock?.lineHeight??L),i,"gantt-task-label",d.nodeLabelFontSize,d.nodeLabelFontWeight,c.taskText,"start",d.nodeLetterSpacing,void 0,z(t.labelBlock,n)))})}let U=new Map,Y=e=>{let t=U.get(e)??0;return U.set(e,t+1),0===t?`task:${e}`:`task:${e}#${t}`},O=new Map(a.links.map(e=>[e.taskIndex,e.href]));for(let t of a.bars){let n=a.sections[t.sectionIndex]?.label,o="strict"===r.security?void 0:O.get(t.taskIndex),s=t.id??t.label,h=m.has(t.taskIndex),f=h?" gantt-bar-critical-path":"",p=h?{stroke:c.criticalStroke,strokeWidth:String(Math.max(2,1.5*d.nodeLineWidth))}:{};if(void 0!==t.milestoneX){let i=t.milestoneX,a=t.y+t.h/2,r=t.h/2,m=eO(t.tags),g="gantt-milestone"+(void 0!==m?` gantt-milestone-${m}`:"")+f,k=`M ${eG(i)} ${eG(a-r)} L ${eG(i+r)} ${eG(a)} L ${eG(i)} ${eG(a+r)} L ${eG(i-r)} ${eG(a)} Z`,x="crit"===m?{fill:c.criticalFill,stroke:c.criticalStroke,strokeWidth:String(Math.max(1.5,d.nodeLineWidth))}:"active"===m?{fill:c.nodeFill,stroke:c.nodeBorder,strokeWidth:String(Math.max(1.5,d.nodeLineWidth)),opacity:"1"}:"done"===m?{fill:c.doneFill,stroke:c.nodeBorder,strokeWidth:String(Math.max(1,d.nodeLineWidth)),opacity:d.nodeFillColor?"0.72":"0.55"}:{fill:c.nodeFill,stroke:c.nodeBorder,strokeWidth:String(Math.max(1,d.nodeLineWidth))},y={...void 0!==m?{status:m}:{},..."done"===m?{progress:1}:{},...h?{emphasis:!0}:{},...void 0!==n?{category:n}:{}},b=N(l.styleFace,"milestone",y,{includeFallback:!1}),v={...x,...ej(b),...p};u.push(e.shape({id:Y(s),role:"milestone",geometry:{kind:"path",d:k},paint:v,channels:y,attributes:eX(g,s,b,o)}));continue}let g=eO(t.tags),k={...void 0!==g?{status:g}:{},..."done"===g?{progress:1}:{},...h?{emphasis:!0}:{},...void 0!==n?{category:n}:{}},x=N(l.styleFace,"task",k,{includeFallback:!1}),y={...function(e,t,i){let a={stroke:i.nodeBorderColor?t.nodeBorder:"none",...i.nodeBorderColor?{strokeWidth:String(i.nodeLineWidth)}:{}};switch(e){case"crit":return{fill:t.criticalFill,stroke:t.criticalStroke,strokeWidth:String(Math.max(1.5,i.nodeLineWidth)),opacity:"0.95"};case"active":return{fill:t.nodeFill,stroke:t.nodeBorder,strokeWidth:String(Math.max(1.5,i.nodeLineWidth)),opacity:"1"};case"done":return{fill:t.doneFill,...a,opacity:i.nodeFillColor?"0.72":"0.55"};default:return{fill:t.nodeFill,...a,opacity:"0.92"}}}(g,c,d),...ej(x),...p};u.push(e.shape({id:Y(s),role:"task",geometry:{kind:"rect",x:eG(t.x),y:eG(t.y),width:eG(Math.max(2,t.w)),height:eG(t.h),rx:3,ry:3},paint:y,channels:k,attributes:eX(`${(i=t.tags).includes("crit")?"gantt-bar gantt-bar-crit":i.includes("active")?"gantt-bar gantt-bar-active":i.includes("done")?"gantt-bar gantt-bar-done":"gantt-bar"}${f}`,s,x,o)}))}if(f.dependencyArrows){let t=new Map(a.bars.map(e=>[e.taskIndex,e])),i=new Map;for(let n of a.dependencies){let a=eR(t.get(n.fromTaskIndex)),l=eR(t.get(n.toTaskIndex)),r=`${a}->${l}:${n.kind}`,o=i.get(r)??0;i.set(r,o+1);let s=f.criticalArrows&&n.critical,h=s?"gantt-dep-arrow gantt-dep-arrow-crit":"gantt-dep-arrow",m=s?k:g,p=n.points.map(e=>({x:eG(e.x),y:eG(e.y)})),y=p.map((e,t)=>`${0===t?"M":"L"} ${e.x} ${e.y}`).join(" "),b=0===o?`dep:${r}`:`dep:${r}#${o}`,v=e.connector({id:b,role:"edge",geometry:{kind:"path",d:y,points:p},lineStyle:"solid",paint:s?{stroke:c.criticalStroke,strokeWidth:String(eM(d.lineWidth,!0))}:{stroke:c.edgeStroke,strokeWidth:String(eM(d.lineWidth,!1))},markers:{mid:[],end:x.find(e=>e.id===m)},endpoints:{from:a,to:l},relationship:{kind:n.kind,direction:"forward"},route:{ownership:"layout"},channels:s?{status:"crit",emphasis:!0}:void 0,attributes:{className:h}});u.push(e.group({id:`${b}:fade`,role:"chrome",open:"<g>",close:"</g>",paint:{opacity:s?"0.95":"0.6"},children:[{node:v,indent:0}]}))}}let P={stroke:c.edgeStroke,strokeWidth:String(Math.max(2,d.lineWidth)),strokeDasharray:"6 3"},j=new Map;for(let t of a.verts){let i=j.get(t.label)??0;j.set(t.label,i+1),u.push(e.shape({id:`vert:${t.label}#${i}`,role:"marker-line",geometry:{kind:"line",x1:eG(t.x),y1:eG(y.y),x2:eG(t.x),y2:eG(b)},paint:P,attributes:{className:"gantt-vert-marker"}}));let n=t.labelBlock?.text??A(t.label,d.edgeTextTransform),l=a.topAxis?Math.max(24,S+1.25*d.edgeLabelFontSize):10===S&&11===d.edgeLabelFontSize?8:S;u.push(eP(e,`vert-label:${t.label}#${i}`,"axis",t.x,y.y-l,n,"gantt-axis-label",d.edgeLabelFontSize,Math.max(d.edgeLabelFontWeight,600),c.axisText,"middle",d.edgeLetterSpacing,void 0,t.labelBlock))}if(void 0!==a.todayX){let t=void 0!==a.todayMarkerStyle?R(a.todayMarkerStyle):void 0,i=Object.fromEntries(t?.applied??[]);u.push(e.shape({id:"today-marker",role:"marker-line",geometry:{kind:"line",x1:eG(a.todayX),y1:eG(y.y),x2:eG(a.todayX),y2:eG(b)},paint:{stroke:i.stroke??d.edgeStrokeColor??"var(--accent, var(--fg))",strokeWidth:i["stroke-width"]??String(Math.max(2,d.lineWidth)),strokeDasharray:i["stroke-dasharray"]??"4 3",...void 0!==i.opacity?{opacity:i.opacity}:{}},attributes:{className:"gantt-today-marker"}}))}if(a.title){let t=a.titleBlock?.text??A(a.title,d.groupTextTransform),i=a.titleY??eD(d);u.push(eP(e,"title","title",a.width/2,i,t,"gantt-title",eC(d),e_(d),c.titleFill,"middle",d.groupLetterSpacing,void 0,a.titleBlock))}if(a.emptyLabel){let t=a.emptyLabel;u.push(eP(e,"empty-state","label",y.x+y.w/2,y.y+y.h/2,t.text,"gantt-empty-state",t.fontSize,t.fontWeight,c.axisText,"middle",t.letterSpacing,void 0,t))}return u.push(e.documentClose()),{family:"gantt",width:a.width,height:a.height,colors:n,transparent:s,parts:u}}),eV=b(O,{configDiagnostics:e=>d("gantt",e,P),normalizeRequest:e=>({familyConfig:{config:el(e.source.frontmatter)}}),layout:e=>{let n=e.familyConfig?.config??el(void 0);return y(function(e,n,l={}){var r;let o=(r=function(e){let n=a((e[0]??"").trim());if(!/^gantt\s*$/i.test(n))throw new j("GANTT_BAD_DIRECTIVE",`Expected "gantt" header, got "${n}"`,1);v("gantt")&&w("gantt","header",e[0]??"",{line:1,unit:"normalized"});let l={dateFormat:"YYYY-MM-DD",inclusiveEndDates:!1,topAxis:!1,excludes:[],includes:[],weekendStart:"saturday",weekStart:"sunday",sections:[{taskIndexes:[]}],tasks:[],clicks:[]};v("gantt")&&M("gantt","initialize",l);let r=new Set,o=0;for(let n of function e(n){let l=[];for(let r=0;r<n.length;r++){let o=r,s=n[r],d=s.trim(),c=(e,t=n.slice(o,r+1))=>{let i="section"===e.kind||"title"===e.kind?s.indexOf(e.value,s.search(/\S/)+e.kind.length)+1:"task"===e.kind?s.search(/\S/)+1:void 0;l.push({...e,raw:t,startLine:o+1,endLine:r+1,valueColumn:i})};if(!d||d.startsWith("%%")){c({kind:d?"comment":"blank"});continue}let u=L(n,r);if(void 0===u){let e=n.slice(r);r=n.length-1,c({kind:"invalid",code:"GANTT_BAD_DIRECTIVE",message:"Unclosed accDescr block",structural:!0},e);break}if(null!==u){r=u.endIndex;let t=n.slice(o,r+1);if(u.suffixLine&&(t[t.length-1]=t.at(-1).slice(0,t.at(-1).indexOf("}")+1)),c({kind:"accessibility",directive:u},t),u.suffixLine){let t=n[r],i=t.indexOf("}")+1,a=e([t.slice(i)]);l.push(...a.map(e=>({...e,startLine:r+1,endLine:r+1,valueColumn:void 0===e.valueColumn?void 0:e.valueColumn+i})))}continue}if(ei(d)>=0){let t=s,i=0;for(let a=0;;a++){let n=ei(t.trim()),o=n<0?t.length:t.length-t.trimStart().length+n;if(l.push(...e([t.slice(0,o)]).map((e,t)=>({...e,startLine:r+1,endLine:r+1,valueColumn:void 0===e.valueColumn?void 0:e.valueColumn+i,...a>0&&0===t?{afterSemicolon:!0}:{}}))),n<0)break;i+=o+1,t=t.slice(o+1)}continue}let h=function(e,t){if(!ea.test(e[t].trim()))return -1;let i=t+1;for(;i<e.length&&(!e[i].trim()||e[i].trim().startsWith("%%"));)i++;return i<e.length&&en.test(e[i].trim())?i:-1}(n,r);h>r&&(r=h,d=`${d}
10
+ ${n[r].trim()}`);let f=!1;for(let[e,t]of Object.entries(q)){let i=("weekday"===e||"weekend"===e?a(d):d).match(t);if(!i)continue;f=!0;let n=i[1].trim();c("title"===e||"section"===e?{kind:e,value:n}:"click"===e?{kind:"click",taskId:n,action:i[2].toLowerCase(),rest:i[3].trim()}:"weekday"!==e||V.includes(n.toLowerCase())?"weekend"!==e||["friday","saturday"].includes(n.toLowerCase())?{kind:"directive",name:e,value:n}:{kind:"invalid",code:"GANTT_BAD_DIRECTIVE",message:`Invalid weekend "${n}" (friday or saturday)`}:{kind:"invalid",code:"GANTT_BAD_DIRECTIVE",message:`Invalid weekday "${n}"`});break}if(f)continue;let m=a(d);if(/^(inclusiveEndDates|topAxis)\s*$/i.test(m)){c({kind:"directive",name:/^topAxis/i.test(m)?"topAxis":"inclusiveEndDates",value:""});continue}let p=d.indexOf(":");if(!/^(dateFormat|axisFormat|tickInterval|inclusiveEndDates|topAxis|excludes|includes|todayMarker|weekday|weekend|click)\b/i.test(d)&&p>0&&p<d.length-1){let e=d.slice(0,p).trim(),n=s.indexOf(":"),l=i(s.slice(n+1)),r=l<0?-1:n+1+l,o=a(d.slice(p+1)).trim(),u=function(e){let t=e.split(",").map(e=>e.trim());if(t.some(e=>0===e.length))return null;let i=[],a=0;for(;a<t.length&&J.includes(t[a]);){let e=t[a];if(i.includes(e))return null;i.push(e),a++}let n=t.slice(a);if(0===n.length||n.length>3)return null;let l=e=>{let t=e.match(/^after\s+(.+)$/);return t?{kind:"after",refs:t[1].split(/\s+/).filter(Boolean)}:{kind:"date",raw:e}},r=e=>{let t=e.match(/^until\s+(.+)$/);return t?{kind:"until",refs:t[1].split(/\s+/).filter(Boolean)}:K.test(e)?{kind:"duration",raw:e}:{kind:"date",raw:e}};if(1===n.length)return{tags:i,end:r(n[0])};if(2===n.length)return{tags:i,start:l(n[0]),end:r(n[1])};let o=n[0];return/^[\w-]+$/.test(o)?{tags:i,id:o,start:l(n[1]),end:r(n[2])}:null}(o);u?(c({kind:"task",label:t(e,{subject:"Gantt task text entity",example:"Task #35;1 : 1d"}),labelSource:e,meta:u},[r<0?s:s.slice(0,r)]),r>=0&&c({kind:"comment"},[s.slice(r)])):c({kind:"invalid",code:"GANTT_BAD_TASK",message:`Invalid task metadata "${o}"`})}else c({kind:"invalid",code:"GANTT_BAD_DIRECTIVE",message:`Unrecognized gantt line "${d}"`})}return l}(e.slice(1))){let e=n.startLine+1;if(v("gantt")&&w("gantt","directive"===n.kind?n.name:n.kind,n.raw.join(`
11
+ `),{line:e,unit:"normalized"}),"invalid"===n.kind)throw new j(n.code,n.message,e);if("accessibility"===n.kind)n.directive.title?l.accTitle=n.directive.value:l.accDescr=n.directive.value.replace(/\s*\n\s*/g," "),v("gantt")&&M("gantt",n.directive.title?"setAccessibilityTitle":"setAccessibilityDescription",n.directive.title?l.accTitle:l.accDescr,{line:e,unit:"normalized"});else if("title"===n.kind)l.title=n.value,v("gantt")&&M("gantt","setTitle",l.title,{line:e,unit:"normalized"});else if("directive"===n.kind){let t=n.value;switch(n.name){case"dateFormat":l.dateFormat=t;break;case"axisFormat":l.axisFormat=t;break;case"tickInterval":{let e=t.match(Q);e&&(l.tickInterval={count:Number(e[1]),unit:e[2]});break}case"inclusiveEndDates":l.inclusiveEndDates=!0;break;case"topAxis":l.topAxis=!0;break;case"excludes":{let i=Z(t);l.excludes.push(...i),v("gantt")&&M("gantt","appendExcludes",i,{line:e,unit:"normalized"});break}case"includes":{let i=Z(t);l.includes.push(...i),v("gantt")&&M("gantt","appendIncludes",i,{line:e,unit:"normalized"});break}case"todayMarker":l.todayMarker="off"===t.toLowerCase()?{off:!0}:{off:!1,style:t};break;case"weekday":l.weekStart=t.toLowerCase();break;case"weekend":l.weekendStart=t.toLowerCase()}if(v("gantt")){let i="weekday"===n.name?"weekStart":"weekend"===n.name?"weekendStart":n.name;"excludes"!==n.name&&"includes"!==n.name&&("tickInterval"!==n.name||Q.test(t))&&M("gantt",`set:${i}`,l[i],{line:e,unit:"normalized"})}}else if("click"===n.kind)l.clicks.push({taskId:n.taskId,action:n.action,rest:n.rest,line:e}),v("gantt")&&M("gantt","addClick",l.clicks.at(-1),{line:e,unit:"normalized"});else if("section"===n.kind)l.sections.push({label:n.value,taskIndexes:[],line:e}),o=l.sections.length-1,v("gantt")&&M("gantt","addSection",{index:o,...l.sections[o]},{line:e,unit:"normalized"});else if("task"===n.kind){let{label:t,meta:i}=n;if(void 0!==i.id){if(r.has(i.id))throw new j("GANTT_DUPLICATE_TASK_ID",`Duplicate task id "${i.id}"`,e);r.add(i.id)}let a={index:l.tasks.length,id:i.id,label:t,tags:i.tags,start:i.start,end:i.end,sectionIndex:o,line:e};l.tasks.push(a),v("gantt")&&M("gantt","addTask",a,{line:e,unit:"normalized"}),l.sections[o].taskIndexes.push(a.index),v("gantt")&&M("gantt","attachTask",{sectionIndex:o,taskIndex:a.index,taskId:a.id},{line:e,unit:"normalized"})}}return l.todayMarker?.style!==void 0&&R(l.todayMarker.style),l}(e),void 0!==n.title&&void 0===r.title&&(r.title=n.title),n.displayMode&&(r.displayMode=n.displayMode),void 0!==n.barHeight&&(r.barHeight=n.barHeight),n.topAxis&&(r.topAxis=!0),void 0!==n.axisFormat&&void 0===r.axisFormat&&(r.axisFormat=n.axisFormat),void 0!==n.tickInterval&&void 0===r.tickInterval&&(r.tickInterval=n.tickInterval),r),s=function(e,t={}){let i,a={dateFormat:e.dateFormat,inclusiveEndDates:e.inclusiveEndDates,excludes:e.excludes,includes:e.includes,weekendStart:e.weekendStart,weekStart:e.weekStart},n=function(e){let t=ep(e.excludes,e),i=ep(e.includes,e),a="friday"===e.weekendStart?[5,6]:[6,0],n=e=>{let n=er(e),l=es(e);return!(i.days.has(n)||i.weekdays.has(l)||i.weekends&&a.includes(l))&&!!(t.days.has(n)||t.weekdays.has(l)||t.weekends&&a.includes(l))};if(e.excludes.length){let e;eg.set(n,()=>e??={weekdays:Array.from({length:7},(e,n)=>!(i.weekdays.has(n)||i.weekends&&a.includes(n))&&(t.weekdays.has(n)||t.weekends&&a.includes(n))),exceptions:[...new Set([...t.days,...i.days])].sort((e,t)=>e-t)})}return n}(a),l=!eh(e.dateFormat).some(e=>"field"===e.kind&&eu.has(e.field)),r=new Map;for(let t of e.tasks)void 0!==t.id&&r.set(t.id,t);let o=e.tasks.map((t,i)=>(function(e,t,i){let a=[];if(void 0===e.start&&i&&a.push(i.index),e.start?.kind==="after")for(let i of e.start.refs){let n=t.get(i);if(!n)throw new j("GANTT_UNKNOWN_TASK_REF",`Task "${e.label}" starts after unknown id "${i}"`,e.line);a.push(n.index)}if("until"===e.end.kind)for(let i of e.end.refs){let n=t.get(i);if(!n)throw new j("GANTT_UNKNOWN_TASK_REF",`Task "${e.label}" runs until unknown id "${i}"`,e.line);a.push(n.index)}return a})(t,r,e.tasks[i-1])),s=function(e,t,i){let a=Array(e).fill(0),n=[],l=Array(e).fill(0),r=[];for(let o=0;o<e;o++)if(0===a[o])for(a[o]=1,n.push(o);n.length;){let e=n.at(-1);if(l[e]<t[e].length){let r=t[e][l[e]];if(l[e]=l[e]+1,0===a[r])a[r]=1,n.push(r);else if(1===a[r]){let e=n.indexOf(r),t=n.slice(e).concat(r).map(i);throw new j("GANTT_DEPENDENCY_CYCLE",`Dependency cycle: ${t.join(" -> ")}`)}}else n.pop(),a[e]=2,r.push(e)}return r}(e.tasks.length,o,t=>e.tasks[t].id??e.tasks[t].label),d=Array(e.tasks.length),c=t=>{let i;if(d[t.index])return d[t.index];if(void 0===t.start){let e=t.index>0?d[t.index-1]:void 0;if(!e)throw new j("GANTT_NO_START",`Task "${t.label}" has no start date and no previous task to follow`,t.line);i=e.end}else if("after"===t.start.kind)i=Math.max(...t.start.refs.map(e=>d[r.get(e).index].end));else{let a=ef(t.start.raw,e.dateFormat);if(null===a)throw new j("GANTT_BAD_DATE",`Invalid start date "${t.start.raw}" for dateFormat "${e.dateFormat}"`,t.line);i=a}let o,s=!1;if("until"===t.end.kind)o=Math.min(...t.end.refs.map(e=>d[r.get(e).index].start)),s=!0;else if("duration"===t.end.kind){let e=function(e,t){let i=t.match(K);if(!i)return null;let a=Number(i[1]),n=i[2];if(!Number.isFinite(a))return null;if("M"===n||"y"===n){let t="y"===n?12*a:a,i=Math.trunc(t),l=t-i,r=new Date(e),o=r.getUTCMonth()+i,s=new Date(Date.UTC(r.getUTCFullYear(),o,1,r.getUTCHours(),r.getUTCMinutes(),r.getUTCSeconds(),r.getUTCMilliseconds())),d=new Date(Date.UTC(s.getUTCFullYear(),s.getUTCMonth()+1,0)).getUTCDate();s.setUTCDate(Math.min(r.getUTCDate(),d));let c=s.getTime();return l>0&&(c+=Math.round(30*l*864e5)),c}return e+Math.round(a*em[n])}(i,t.end.raw);if(null===e)throw new j("GANTT_BAD_DURATION",`Invalid duration "${t.end.raw}"`,t.line);o=e}else{let i=ef(t.end.raw,e.dateFormat);if(null===i)throw new j("GANTT_BAD_DATE",`Invalid end date "${t.end.raw}" for dateFormat "${e.dateFormat}"`,t.line);o=a.inclusiveEndDates&&l?i+864e5:i,s=!0}let c=o;if(!s&&a.excludes.length>0){let e=function(e,t,i,a){let n=e+864e5,l=t,r=t,o=!1,s=0,d=t-e>=12096e5&&Number.isSafeInteger(e)&&Number.isSafeInteger(t)&&Math.max(Math.abs(e),Math.abs(t))+864e9<Number.MAX_SAFE_INTEGER?eg.get(i)?.():void 0;for(;n<=l;){if(d){let e=er(n),t=0,i=d.exceptions.length;for(;t<i;){let a=t+i>>>1;d.exceptions[a]<e?t=a+1:i=a}let a=Math.floor(Math.min(Math.floor((l-n)/864e5)+1,1e4-s,t<d.exceptions.length?d.exceptions[t]-e:1/0)/7);if(a>0){let e=es(n),t=0,i,c,u=o,h=d.weekdays[(e+6)%7];for(let a=0;a<7;a++)u||(i=t),h||(c=t),(u=h=d.weekdays[(e+a)%7])&&t++;let f=a>1&&void 0!==c?(a-1)*t+c:i;void 0!==f&&(r=l+864e5*f),l+=a*t*864e5,n+=7*a*864e5,s+=7*a,o=u;continue}}if(++s>1e4)throw new j("GANTT_SCHEDULE_OVERFLOW","Calendar exclusion walk exceeded 10000 days (is every day excluded?)",a);o||(r=l),(o=i(n))&&(l+=864e5),n+=864e5}return{end:l,renderEnd:r}}(i,o,n,t.line);o=e.end,c=e.renderEnd}o<i&&(o=i),c<i&&(c=i),c>o&&(c=o);let u={index:t.index,id:t.id,label:t.label,tags:t.tags,sectionIndex:t.sectionIndex,start:i,end:o,renderEnd:c,manualEnd:s,line:t.line};return d[t.index]=u,u};for(let t of s)c(e.tasks[t]);if(0===d.length)return{tasks:d,timeMin:0,timeMax:0,dateOnly:l,isExcludedDay:n};let u=1/0,h=-1/0;for(let e of d)u=Math.min(u,e.start),h=Math.max(h,e.renderEnd);if(h===u&&(h=u+(l?864e5:36e5)),void 0!==t.today&&!e.todayMarker?.off){let a=ef(t.today,e.dateFormat)??ef(t.today,"YYYY-MM-DD");if(null===a)throw new j("GANTT_BAD_DATE",`Invalid clock value "${t.today}" for dateFormat "${e.dateFormat}"`);i=a}return{tasks:d,timeMin:u,timeMax:h,dateOnly:l,today:i,analysis:function(e,t,i,a){let n=[],l=new Set;for(let t of e.tasks){if(t.start?.kind==="after")for(let e of t.start.refs){let a=i.get(e);n.push({from:a.index,to:t.index}),l.add(a.index)}if("until"===t.end.kind)for(let e of t.end.refs)l.add(i.get(e).index)}if(0===n.length)return;let r=Math.min(...t.map(e=>e.start)),o=Math.max(...t.map(e=>e.end)),s=t.map(()=>[]);for(let e of n)s[e.from].push(e.to);let d=Array(t.length).fill(NaN);for(let e=a.length-1;e>=0;e--){let i=a[e],n=s[i],l=o;for(let e of n){let i=t[e].end-t[e].start;l=Math.min(l,d[e]-i)}d[i]=l}let c={},u=new Set;for(let e of n)u.add(e.from),u.add(e.to);let h=[];for(let e of t){let t=d[e.index]-e.end;void 0!==e.id&&(c[e.id]=t),u.has(e.index)&&0===t&&void 0!==e.id&&h.push(e.id)}let f=new Set(n.map(e=>e.to));return{criticalPathTaskIds:h,slackByTaskId:c,projectStart:r,projectEnd:o,entryTaskIds:t.filter(e=>void 0!==e.id&&!f.has(e.index)).map(e=>e.id),sinkTaskIds:t.filter(e=>void 0!==e.id&&!l.has(e.index)).map(e=>e.id)}}(e,d,r,s),isExcludedDay:n}}(o,l.clock),d=function(e,t,i={}){let a,n=e$(i.renderOptions,i.styleFace),l=i.compact??"compact"===e.displayMode,r=0===t.tasks.length?H("No tasks scheduled",{fontSize:n.nodeLabelFontSize,fontWeight:n.nodeLabelFontWeight,transform:n.nodeTextTransform,letterSpacing:n.nodeLetterSpacing}):void 0,o=i.barHeight??e.barHeight??22,s=Math.ceil(Math.max(o,1.3*Math.max(n.nodeLabelFontSize,n.groupHeaderFontSize)))+8,d=t.tasks.filter(e=>e.tags.includes("vert")),c=t.tasks.filter(e=>!e.tags.includes("vert")),u=function(e){let t=new Map;for(let i of e){let e=t.get(i.sectionIndex);e||t.set(i.sectionIndex,e=[]),e.push(i)}return t}(c),h=new Map,f=new Map,m=0;for(let e of c)if(l){let t=H(e.label,{display:"literal",transform:n.nodeTextTransform,fontSize:n.nodeLabelFontSize,fontWeight:n.nodeLabelFontWeight,letterSpacing:n.nodeLetterSpacing});h.set(e.index,{lines:t.lines,width:t.width,block:t}),m=Math.max(m,t.width)}else{let t=eY(e.label,n.nodeTextTransform,n.nodeLabelFontSize,n.nodeLabelFontWeight,n.nodeLetterSpacing);h.set(e.index,t),m=Math.max(m,t.width)}for(let t=0;t<e.sections.length;t++){let i=e.sections[t];if(i.label){let e=eY(B(i.label),n.groupTextTransform,n.groupHeaderFontSize,n.groupHeaderFontWeight,n.groupLetterSpacing);f.set(t,e),m=Math.max(m,e.width)}}m=Math.ceil(m)+Math.max(12,i.renderOptions?.gantt?.dependencyArrows?eT(eM(n.lineWidth,!0===i.renderOptions.gantt.criticalPath))+4:0),l&&(s=Math.max(s,...[...h.values()].map(e=>Math.ceil(e.block.height)+8)));let p=new Map(d.map(e=>[e.index,H(e.label,{display:"literal",transform:n.edgeTextTransform,fontSize:n.edgeLabelFontSize,fontWeight:Math.max(n.edgeLabelFontWeight,600),letterSpacing:n.edgeLetterSpacing})])),g=Math.max(1,t.timeMax-t.timeMin),k=(function(e,t,i=8){if(0===e.tasks.length)return[];let a=function(e,t,i=8){let a=e.timeMax-e.timeMin;if(t.tickInterval&&a/(eL[t.tickInterval.unit]*t.tickInterval.count)<=120)return{...t.tickInterval,format:t.axisFormat??function(e){switch(e){case"millisecond":case"second":return"%H:%M:%S";case"minute":case"hour":return"%H:%M";case"day":case"week":return"%m-%d";case"month":return"%b %Y"}}(t.tickInterval.unit)};for(let e of eI)if(a/(eL[e.unit]*e.count)<=i)return{unit:e.unit,count:e.count,format:t.axisFormat??e.format};let n=eI[eI.length-1],l=n.count;for(;a/(eL.month*l)>120;)l*=2;return{unit:"month",count:l,format:t.axisFormat??n.format}}(e,t,i),n=ed[t.weekStart],l=[],r=function(e,t,i){if("week"===t.unit){let t=eo(e),a=0;for(;es(t)!==i&&a++<7;)t-=864e5;return t}if("month"===t.unit){let t=new Date(e);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1)}if("day"===t.unit)return eo(e);let a=eL[t.unit]*t.count;return Math.floor(e/a)*a}(e.timeMin,a,n),o=0;for(;r<=e.timeMax&&o++<=120;)r>=e.timeMin&&l.push({time:r,label:ev(r,a.format)}),r=function(e,t){if("month"===t.unit){let i=new Date(e);return Date.UTC(i.getUTCFullYear(),i.getUTCMonth()+t.count,1)}return e+eL[t.unit]*t.count}(r,a);return 0===l.length&&l.push({time:e.timeMin,label:ev(e.timeMin,a.format)}),l})(t,e).map(e=>({...e,block:H(e.label,{display:"literal",transform:n.edgeTextTransform,fontSize:n.edgeLabelFontSize,fontWeight:n.edgeLabelFontWeight,letterSpacing:n.edgeLetterSpacing})})),x=16+m,y=i.width??32+m+600,b=Math.max(16,Math.ceil((a=Math.max(120,y-x-16),Math.max(0,...k.map(e=>e.block.width/2-(t.timeMax-e.time)/g*a))+2))),v=e.title?H(e.title,{display:"literal",transform:n.groupTextTransform,fontSize:eC(n),fontWeight:e_(n),letterSpacing:n.groupLetterSpacing,...void 0===i.width?{}:{maxWidth:Math.max(1,i.width-32)}}):void 0,w=v?.width??0,M=v?v.height-v.lineHeight:0,S=i.width??Math.max(y+b-16,Math.ceil(w)+32),T=Math.max(120,S-x-b),F=v?Math.max(eW(n)+M,v.height):0,L=Math.max(24,Math.ceil(eA(n)+.65*n.edgeLabelFontSize+4)),I=16+F+(e.topAxis?L:0)+Math.max(0,...[...p.values()].map(e=>(e.height-e.lineHeight)/2)),$=e=>x+(e-t.timeMin)/g*T,C=[],_=[],D=[],A=I,W=(e,t)=>Math.max(s,Math.ceil(o/2+(e-.5)*t)+8),z=Math.max(1.3*n.nodeLabelFontSize,...[...h.values()].map(e=>e.block.lineHeight)),E=Math.max(1.3*n.groupHeaderFontSize,...[...f.values()].map(e=>e.block.lineHeight));for(let t=0;t<e.sections.length;t++){let i=e.sections[t],a=u.get(t)??[];if(0===a.length&&void 0===i.label)continue;let n=D.length,r=A,d=_.length,c=f.get(t)?.lines;void 0!==i.label&&(A+=W(c?.length??1,E));let m=l?function(e){let t=[],i=[],a=0,n;for(let l of e){let r=-1;if(n){if(n[1]<=l.start){let e=1;for(;e<a;)e=n[2*e]<=l.start?2*e:2*e+1;r=e-a}}else r=t.findIndex(e=>e<=l.start);-1===r&&(r=t.length);let o=r===t.length;if(t[r]=l.end,i.push(r),n&&t.length<=a){let e=a+r;for(n[e]=t[r];(e>>=1)>0;)n[e]=Math.min(n[2*e],n[2*e+1])}else if(n||o&&33===t.length&&i.length<e.length&&e.every(e=>Number.isFinite(e.start)&&Number.isFinite(e.end))){n=Array(2*(a=0===a?64:2*a)).fill(1/0);for(let e=0;e<t.length;e++)n[a+e]=t[e];for(let e=a-1;e>0;e--)n[e]=Math.min(n[2*e],n[2*e+1])}}return i}(a):a.map((e,t)=>t),p=0===a.length?0:Math.max(...m)+1,g=[];if(l)for(let e=0;e<p;e++)g.push({barIndexes:[],sectionIndex:n,y:A+e*s,h:o});else{let e=A;for(let t of a)g.push({barIndexes:[],sectionIndex:n,y:e,h:o}),e+=W(h.get(t.index)?.lines.length??1,z)}if(a.forEach((e,t)=>{let a=m[t],l=g[a],r=$(e.start),s=Math.max(2*(e.renderEnd>e.start),$(e.renderEnd)-r),c;if(e.tags.includes("milestone")){let e=o/2,t=x+e;c=Math.min(Math.max(t,x+T-e),Math.max(t,r+s/2))}let u=h.get(e.index)?.lines;C.push({taskIndex:e.index,id:e.id,label:e.label,labelBlock:h.get(e.index)?.block,tags:e.tags,sectionIndex:n,x:r,y:l.y,w:s,h:o,milestoneX:c,rowIndex:d+ +(void 0!==i.label)+a,start:e.start,end:e.renderEnd,...u&&u.length>1?{labelLines:u}:{}}),l.barIndexes.push(C.length-1)}),_.push(...g),l)A+=p*s;else for(let e of a)A+=W(h.get(e.index)?.lines.length??1,z);D.push({label:i.label,labelBlock:f.get(t)?.block,y:r,h:A-r,rowStart:d,rowEnd:_.length,...c&&c.length>1?{labelLines:c}:{}}),A+=6}let N=Math.max(s,A-I,r?r.height+16:0),U=I+N+L+16,Y=k.map(e=>({time:e.time,x:$(e.time),label:e.label,labelBlock:e.block})),O=d.map(e=>({taskIndex:e.index,label:e.label,labelBlock:p.get(e.index),x:$(e.start+(e.renderEnd-e.start)/2),time:e.start})),P=void 0!==i.today&&i.today>=t.timeMin&&i.today<=t.timeMax?$(i.today):void 0,j=[];if(e.excludes.length>0&&t.dateOnly&&(t.timeMax-eo(t.timeMin))/864e5<=1e4){let e,i=i=>{if(void 0===e)return;let a=Math.max(e,t.timeMin),n=Math.min(i,t.timeMax);n>a&&j.push({x:$(a),w:$(n)-$(a),start:a,end:n}),e=void 0};for(let a=eo(t.timeMin);a<t.timeMax;a+=864e5)t.isExcludedDay(a)?void 0===e&&(e=a):i(a);i(t.timeMax)}let X=new Set(t.analysis?.criticalPathTaskIds??[]),G=t.tasks.filter(e=>void 0!==e.id&&X.has(e.id)).map(e=>e.index),R=function(e,t,i,a,n,l,r={}){let o=function(e){let t=new Map;for(let i of e.tasks)void 0!==i.id&&t.set(i.id,i);let i=[],a=new Set,n=(e,t,n)=>{let l=`${e}>${t}:${n}`;a.has(l)||(a.add(l),i.push({from:e,to:t,kind:n}))};for(let i of e.tasks){if(i.start?.kind==="after")for(let e of i.start.refs){let a=t.get(e);a&&n(a.index,i.index,"after")}if("until"===i.end.kind)for(let e of i.end.refs){let a=t.get(e);a&&n(i.index,a.index,"until")}}return i}(e);if(0===o.length)return[];let s=new Map(i.map(e=>[e.taskIndex,e])),d=i.map(ez),c=a.map(e=>({y:e.y,h:e.h})).sort((e,t)=>e.y-t.y),u=new Set(t.analysis?.criticalPathTaskIds??[]),h=[];for(let e of o){let i=s.get(e.from),a=s.get(e.to);if(!i||!a)continue;let o=t.tasks[e.from],f=t.tasks[e.to],m="after"===e.kind&&void 0!==o.id&&void 0!==f.id&&u.has(o.id)&&u.has(f.id)&&o.end===f.start,p=function(e,t,i,a,n,l=8){let r=e.rect,o=t.rect,s=r.y+r.h/2,d=o.y+o.h/2,c=eH(a,s),u=eH(a,d);if(-1===c||-1===u)return null;let h=c===u,f=h||u>c,m=f?eN(a,c,n):eU(a,c,n),p=h?m:f?eU(a,u,n):eN(a,u,n),g=[],k=r.x+r.w,x=[{x:k,y:s},{x:k+l,y:s},{x:k+l,y:m}];if(eE(x[0],x[1],i)||eE(x[1],x[2],i)){let t=e.tipX??(r.w>=2*l?k-l:r.x+r.w/2);g.push({x:t,y:f?r.y+r.h:r.y},{x:t,y:m})}else g.push(...x);let y=g[g.length-1].x,b=o.x-l;if(!h){let e=f?1:-1;for(let t=c+e;t!==u;t+=e){let e=a[t];if(i.some(t=>eB(y,e.y-1,e.y+e.h+1,t))){let l=f?eU(a,t,n):eN(a,t,n),r=function(e,t,i,a){let n=i.x-8,l=i.x+i.w+8,r=t.filter(t=>t.y<e.y+e.h-.01&&t.y+t.h>e.y+.01),o=new Set([n]);for(let e of r)o.add(Math.max(n,Math.min(l,e.x-8))),o.add(Math.max(n,Math.min(l,e.x+e.w+8)));let s=n,d=1/0;for(let t of o){if(r.some(i=>eB(t,e.y-1,e.y+e.h+1,i)))continue;let i=Math.abs(t-a);(i<d-.01||.01>=Math.abs(i-d)&&t<s)&&(s=t,d=i)}return s}(e,i,n,b);g.push({x:y,y:l},{x:r,y:l}),y=r}}}let v=o.x-l,w=[{x:v,y:p},{x:v,y:d},{x:o.x,y:d}],M,S;if(eE(w[0],w[1],i)||eE(w[1],w[2],i)){let e=t.tipX??(o.w>=2*l?o.x+l:o.x+o.w/2),i=p<o.y;S=[{x:e,y:p},{x:e,y:i?o.y:o.y+o.h}],M=i?"down":"up"}else S=w,M="right";g.push({x:y,y:p},...S);let T=function(e){let t=[];for(let i of e){let e=t[t.length-1];if(e&&.01>=Math.abs(e.x-i.x)&&.01>=Math.abs(e.y-i.y))continue;t.push({x:i.x,y:i.y});let a=t.length;if(a>=3){let e=t[a-3],i=t[a-2],n=t[a-1];(.01>=Math.abs(e.x-i.x)&&.01>=Math.abs(i.x-n.x)||.01>=Math.abs(e.y-i.y)&&.01>=Math.abs(i.y-n.y))&&t.splice(a-2,1)}}return t}(g);for(let e=1;e<T.length;e++)if(eE(T[e-1],T[e],i))return null;return{points:T,arrowDir:M}}({rect:ez(i),tipX:i.milestoneX},{rect:ez(a),tipX:a.milestoneX},d,c,n,r.gantt?.dependencyArrows?eT(eM(l.lineWidth,!0===r.gantt.criticalPath&&m)):8);p&&h.push({fromTaskIndex:e.from,toTaskIndex:e.to,kind:e.kind,critical:m,points:p.points,arrowDir:p.arrowDir})}return h}(e,t,C,_,{x:x,y:I,w:T,h:N},n,i.renderOptions),J=new Map(e.tasks.flatMap(e=>e.id?[[e.id,e.index]]:[])),V=e.clicks.flatMap(e=>{if("href"!==e.action)return[];let t=J.get(e.taskId),i=e.rest.match(/^"((?:\\.|[^"])*)"|^(\S+)/)?.slice(1).find(Boolean);return void 0!==t&&i&&/^(?:https?:|mailto:)/i.test(i)?[{taskIndex:t,href:i.replace(/\\(["\\])/g,"$1")}]:[]}),K=new Map;for(let e of C){let t=K.get(e.y)??[];t.push(e),K.set(e.y,t)}for(let e of K.values())e.sort((e,t)=>e.x-t.x),e.forEach((t,i)=>{let a=t.labelBlock;if(!a)return;let n=t.y+t.h/2,r=i>0?e[i-1].x+e[i-1].w+4:2,o=i+1<e.length?e[i+1].x-4:S-2;t.labelPosition=l?t.x-6-a.width>=r?{x:t.x-6,y:n,anchor:"end"}:t.x+t.w+6+a.width<=o?{x:t.x+t.w+6,y:n,anchor:"start"}:{x:16,y:n,anchor:"start"}:{x:16,y:n,anchor:"start"}});return{...r?{emptyLabel:r}:{},title:v?.text,titleBlock:v,titleY:Math.max(eD(n),(v?.lineHeight??0)/2)+M/2,width:S,height:U,plot:{x:x,y:I,w:T,h:N},labelColumnWidth:m,rows:_,sections:D,bars:C,links:V,verts:O,ticks:Y,dependencies:R,criticalTaskIndexes:G,excludedBands:j,topAxis:e.topAxis,todayX:P,...e.todayMarker?.style!==void 0?{todayMarkerStyle:e.todayMarker.style}:{},timeMin:t.timeMin,timeMax:t.timeMax,dateOnly:t.dateOnly,compact:l,barHeight:o}}(o,s,{...l.layout,today:s.today});return{model:o,schedule:s,positioned:d}}(e.source.familyLines,n,{clock:{today:e.renderOptions.ganttToday},layout:{renderOptions:e.renderOptions,...e.styleFace?{styleFace:e.styleFace}:{}}}).positioned)},projectPositioned:k(function({positioned:e,options:t}){let i=e.plot.x+e.plot.w,a={version:1,nodes:e.bars.map(t=>{let a=t.id??`task#${t.taskIndex}`,n=t.labelPosition,l=n&&!e.compact&&t.labelBlock?n.y+(t.labelBlock.height-t.labelBlock.lineHeight)/2:n?.y,r=n&&void 0!==l?g(t.labelBlock,n.x,l,h(e),n.anchor):{};if(void 0!==t.milestoneX){let e=t.h/2;return{id:a,x:f(t.milestoneX-e),y:f(t.y),w:m(t.milestoneX-e,t.h),h:m(t.y,t.h),shape:"diamond",label:t.label,...r}}let o=Math.max(2,t.w),s=Math.min(t.x,i-o);return{id:a,x:f(s),y:f(t.y),w:m(s,o),h:m(t.y,t.h),shape:"rectangle",label:t.label,...r}}),edges:[],groups:e.sections.map((t,i)=>({id:`section#${i}`,x:f(e.plot.x),y:f(t.y),w:m(e.plot.x,e.plot.w),h:m(t.y,t.h),members:e.bars.filter(e=>e.sectionIndex===i).map(e=>e.id??`task#${e.taskIndex}`),label:t.label})),bounds:{w:f(e.width),h:f(e.height)}};return t.debug&&(a.certificates=p("gantt",a,"section-contained")),a}),lowerScene:x(eJ)});export{eV as default};
@@ -1,9 +1,9 @@
1
- import{h as e}from"./chunk-J7FFAFQF.js";import{b as t,c as i,f as a}from"./chunk-2I4UPL7Q.js";import{d as r,e as n,g as o}from"./chunk-2SH76OTH.js";import{d as l}from"./chunk-AMJLVPUB.js";import"./chunk-DF6765YX.js";import"./chunk-J35HAQQF.js";import{a as s,b as c,c as m,d as h}from"./chunk-CN7WTBWB.js";import{C as d,a as p,b as g,c as f,d as u,e as y,g as b,i as x}from"./chunk-HLWUNUCM.js";import{C as k,c as w,y as L}from"./chunk-X2UYKWKM.js";import{e as v,i as B,j as z,k as M,q as S}from"./chunk-TYZOZXUJ.js";import{f as $,h as C}from"./chunk-NO7ZIVRU.js";import{Da as R,N as F,Qb as _,S as T,T as G,U as I,Z as H,na as N,ob as Y,ra as X,wa as E,x as O}from"./chunk-Z3FDIVLN.js";import{E as j,F as A}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var W=Object.freeze({id:"gitgraph",upstreamId:"gitGraph",maturity:"stable",label:"GitGraph",headers:["gitGraph"],aliases:[],config:{section:"gitGraph",keys:["showBranches","showCommitLabel","mainBranchName","mainBranchOrder","parallelCommits","rotateCommitLabel","arrowMarkerAbsolute","diagramPadding","nodeLabel","titleTopMargin"],noopKeys:["arrowMarkerAbsolute","diagramPadding","nodeLabel","titleTopMargin"]},identity:{id:"family:gitgraph",kind:"family",version:"1.0.0",compatibility:{core:"0.5.3"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["status","category"],semanticRoles:["prelude","chrome","title","group","rail","edge","node","label"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"rail",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`gitGraph
1
+ import{h as e}from"./chunk-64JFHCJC.js";import{b as t,c as i,f as a}from"./chunk-D6MQ7QSU.js";import{d as r,e as n,g as o}from"./chunk-XHU3A432.js";import{d as l}from"./chunk-5LKPDHPC.js";import"./chunk-V6I2VGNQ.js";import"./chunk-7UFOFWBA.js";import{a as s,b as c,c as m,d as h}from"./chunk-VRZKI33U.js";import{C as d,a as p,b as g,c as f,d as u,e as y,g as b,i as x}from"./chunk-QVSZOF5M.js";import{C as k,c as w,y as L}from"./chunk-G4JBA7HU.js";import{e as v,i as B,j as z,k as M,q as S}from"./chunk-3JTYTXA6.js";import{f as $,h as C}from"./chunk-YVNJDVQO.js";import{Ea as R,N as _,S as F,Sb as G,T as I,U as T,_ as H,oa as Y,pb as N,sa as E,x as X,xa as A}from"./chunk-EIYLJ4FI.js";import{E as O,F as j}from"./chunk-PJJSDGLB.js";import"./chunk-YHMTSXIR.js";import"./chunk-QCU5G5PZ.js";var D=Object.freeze({id:"gitgraph",upstreamId:"gitGraph",maturity:"stable",label:"GitGraph",headers:["gitGraph"],aliases:[],config:{section:"gitGraph",keys:["showBranches","showCommitLabel","mainBranchName","mainBranchOrder","parallelCommits","rotateCommitLabel","arrowMarkerAbsolute","diagramPadding","nodeLabel","titleTopMargin"],noopKeys:["arrowMarkerAbsolute","diagramPadding","nodeLabel","titleTopMargin"]},identity:{id:"family:gitgraph",kind:"family",version:"1.0.0",compatibility:{core:"0.5.4"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["status","category"],semanticRoles:["prelude","chrome","title","group","rail","edge","node","label"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"rail",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`gitGraph
2
2
  commit id:"base"
3
3
  branch feature
4
4
  commit id:"work"
5
5
  checkout main
6
6
  commit id:"release"
7
- merge feature id:"merge"`,detect:j,detectLoose:A}),D={showBranches:n,showCommitLabel:n,parallelCommits:n,rotateCommitLabel:n,mainBranchName:o,mainBranchOrder:r};function U(e){return"merge"===e.source&&e.customId?e.sourceId||e.id:e.message||e.sourceId||e.id}function P(e,t,i,a={}){return H(e,{display:"literal",fontSize:t,fontWeight:i,...a})}function q(e,t){return -6-e[t].fontSize-e.slice(0,t).reduce((e,t)=>e+t.height+5,0)-(e[t].height-e[t].lineHeight)/2}function V(e,t){let i=e.height-e.lineHeight;return"LR"===t?24+i:4+i/2}function K(e,t,i,a,r){let n=[{minX:-10,minY:-10,maxX:10,maxY:10}];if(r){let r=e.labelBlock??P(U(e),a,500);n.push(Z(r,14*("LR"!==t),V(r,t),a,"LR"===t?"middle":"start","LR"===t&&i?45:0))}let o=e.tagBlocks??e.tags.map(e=>P(e,10,600));for(let[t,i]of e.tags.entries()){let e=Q(o[t],14,q(o,t),10,600,"start",0);n.push({...e,minX:e.minX-4,maxX:e.maxX+6,minY:e.minY-2,maxY:e.maxY+2})}return{minX:Math.min(...n.map(e=>e.minX)),minY:Math.min(...n.map(e=>e.minY)),maxX:Math.max(...n.map(e=>e.maxX)),maxY:Math.max(...n.map(e=>e.maxY))}}function Z(e,t,i,a,r,n){let o="string"==typeof e?P(e,a,500):e;a=o.fontSize;let l=o.height-o.lineHeight,s=Math.max(18,o.width+24),c="middle"===r?-s/2:-12,m=R({x0:t+c,y0:i-a-l/2,x1:t+c+s,y1:i+6+l/2},{x:t,y:i},n);return{minX:m.x0,minY:m.y0,maxX:m.x1,maxY:m.y1}}function Q(e,t,i,a,r,n,o){let l="string"==typeof e?P(e,a,r):e;a=l.fontSize;let s=l.height-l.lineHeight,c=l.width,m="middle"===n?-c/2:"end"===n?-c:0,h=R({x0:t+m,y0:i+(-a-s/2),x1:t+m+c,y1:i+(.28*a+s/2)},{x:t,y:i},o);return{minX:h.x0,minY:h.y0,maxX:h.x1,maxY:h.y1}}function J(e){return Math.round(1e3*e)/1e3}var ee=class extends Error{constructor(e,t){super(e),this.line=t,this.name="GitGraphParseError"}line},et=class extends ee{constructor(e,t){super(`Duplicate gitGraph commit id '${e}' on line ${t}; commit IDs must be unique.`,t),this.id=e}id;code="GITGRAPH_DUPLICATE_COMMIT_ID"},ei={spanning:"\"'",wholeLine:e=>/^title(?:\s|$)/i.test(e)};function ea(e){return i(e,ei)}var er=/^commit(?:\s+(.*))?$/is,en=/^merge\s+("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\S+)(?:\s+(.*))?$/is;function eo(e,t,i){let a={tags:[]},r=0,n=/([A-Za-z][\w-]*)\s*:\s*("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\S+)/gy;for(;r<e.length;){for(;/\s/.test(e[r]??"");)r++;if(r>=e.length)break;n.lastIndex=r;let o=n.exec(e);if(!o)throw new ee(`Invalid gitGraph attribute syntax near '${e.slice(r)}'.`,t);let l=o[1].toLowerCase();if(!i.includes(l))throw new ee(`Attribute '${l}' is not valid for this gitGraph statement.`,t);let s=el(o[2]);if("id"===l)a.id=s;else if("msg"===l)a.msg=s;else if("tag"===l)a.tags.push(s);else if("parent"===l)a.parent=s;else{let e=s.toUpperCase();if(!["NORMAL","REVERSE","HIGHLIGHT"].includes(e))throw new ee(`Invalid commit type '${s}'.`,t);a.type=e}r=n.lastIndex}return a}function el(e){if(!/^(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')$/.test(e))return e;let t={b:"\b",f:"\f",n:`
8
- `,r:"\r",t:" ",v:"\v",0:"\0"};return e.slice(1,-1).replace(/\\(.)/g,(e,i)=>t[i]??i)}var es=function(e){let t={"\b":"b","\f":"f","\n":"n","\r":"r"," ":"t","\v":"v","\0":"0"};return`"${e.replace(/[\\"%\b\f\n\r\t\v\0]/g,e=>`\\${t[e]??e}`).replace(/#\w+;/g,e=>`${e.slice(0,-1)}\\;`).replace(/style/g,"sty\\le").replace(/classDef/g,"class\\Def")}"`};function ec(e){let t=(e&&"object"==typeof e&&!Array.isArray(e)?e:{}).commitLabelFontSize,i="number"==typeof t?t:"string"==typeof t?Number.parseFloat(t):11;return Number.isFinite(i)&&i>0?i:11}function em(e,t){let i={commitLabelFontSize:ec(t)};if(!e||"object"!=typeof e||Array.isArray(e))return i;for(let t of["showBranches","showCommitLabel","rotateCommitLabel","parallelCommits"])"boolean"==typeof e[t]&&(i[t]=e[t]);return"string"==typeof e.mainBranchName&&e.mainBranchName.trim()&&(i.mainBranchName=e.mainBranchName.trim()),"number"==typeof e.mainBranchOrder&&Number.isFinite(e.mainBranchOrder)&&(i.mainBranchOrder=e.mainBranchOrder),i}function eh(e){return Math.round(1e3*e)/1e3}var ed=w(function(t,i){var a;let r,n,o,l,s,c,m,h,{positioned:d,colors:p,resolved:g}=i,f=g.renderOptions,u=p.font??"Inter",y=f.transparent??!1,b="gitgraph-title",x="gitgraph-desc",k=S(d.accessibilityTitle??"Git graph",d.accessibilityDescription,b,x,"git graph"),w=[M(d.width,d.height,p,y,{attrs:k}),z(u,!1,p.shadow,p.embedFontImport)],L=B(p);L&&w.push(`<defs>${L}</defs>`);let $=g.familyAppearance;if(!$)throw Error("GitGraph rendering requires request-boundary family appearance resolution");let C=(a=$.themeVariables,r=a&&"object"==typeof a&&!Array.isArray(a)?a:{},n="string"==typeof p.accent?p.accent:"#3b82f6",o="string"==typeof p.bg?p.bg:"#ffffff",l=/^#[0-9a-f]{6}$/i.test(n)?n:"#3b82f6",s=/^#[0-9a-f]{6}$/i.test(o)?o:"#ffffff",c=e(d.branches.length,d.branches.length<=6?{accent:l,bg:s}:{accent:n,bg:o}),m=new Map,d.branches.forEach((e,t)=>{let i=t%8,a=v(r[`git${i}`])??c[t],n=v(r[`gitBranchLabel${i}`])??a,o=v(r[`gitInv${i}`])??a,l=E(a)&&E(s)?N(a,s,18):"var(--_node-fill)",h=E(a)&&E(s)?N(a,s,9):"var(--bg)",d=X(n,h,4.5,p.fg);m.set(e.name,{line:a,label:d,highlight:o,normalFill:l,labelBackground:h})}),h=ec(r),{branches:m,commitLabelColor:v(r.commitLabelColor)??"var(--_text-sec)",commitLabelBackground:v(r.commitLabelBackground)??(E(s)?s:"var(--bg)"),commitLabelFontSize:h}),R=[t.documentOpen({id:"prelude",width:d.width,height:d.height,colors:p,transparent:y,font:u,hasMonoFont:!1},w.join(`
9
- `))];if(R.push(t.documentText({id:"acc-title",element:"title",domId:b,text:d.accessibilityTitle??"Git graph"})),d.accessibilityDescription&&R.push(t.documentText({id:"acc-desc",element:"description",domId:x,text:d.accessibilityDescription})),d.title){let e=d.titleBlock??P(d.title,16,600);R.push(t.text({id:"gitgraph-visible-title",role:"title",identity:{id:"gitgraph-title",classNames:["gitgraph-title"]},text:e.text,block:e,x:d.width/2,y:8+(d.titleBlock?.fontSize??16)*.65+((d.titleBlock?.height??0)-(d.titleBlock?.lineHeight??0))/2,fontSize:e.fontSize,anchor:"middle",paint:{fill:"var(--_text)"},attributes:{className:"gitgraph-title"}}))}if(d.showBranches)for(let e of d.branches){let i=I("branch",e.name),a=C.branches.get(e.name),r=eh("LR"===d.direction?e.x1-10:e.x1),n=eh("LR"===d.direction?e.y1:e.y1-16),o=e.labelBlock??P(e.name,12,600),l=o.height-o.lineHeight,s=eh(o.width+10),c=eh("LR"===d.direction?r-s:r-s/2);R.push(t.group({id:i,role:"group",channels:{category:e.name},open:`<g class="git-branch" data-id="${F(i)}" data-branch="${F(e.name)}">`,close:"</g>",children:[{node:t.shape({id:G(i,"label-bg"),role:"chrome",geometry:{kind:"rect",x:c,y:eh(n-o.fontSize-1-l/2),width:s,height:eh(o.fontSize+6+l),rx:4,ry:4},paint:{fill:a.labelBackground,stroke:a.line,strokeWidth:"1"},attributes:{className:"git-branch-label-background"}}),indent:2},{node:t.shape({id:G(i,"line"),role:"rail",geometry:{kind:"line",x1:eh(e.x1),y1:eh(e.y1),x2:eh(e.x2),y2:eh(e.y2)},paint:{stroke:a.line,strokeWidth:"3"},channels:{category:e.name},attributes:{className:"git-branch-line",data:{branch:e.name}}}),indent:2},{node:t.text({id:G(i,"label"),role:"label",text:o.text,block:o,x:r,y:n-.35*o.fontSize,fontSize:o.fontSize,anchor:"LR"===d.direction?"end":"middle",paint:{fill:a.label},channels:{category:e.name},attributes:{className:"git-branch-label",data:{branch:e.name}}}),indent:2}]}))}let _=new Map(d.commits.map(e=>[e.id,e]));for(let e of d.edges){let i=_.get(e.to)?.branch,a=i?C.branches.get(i)?.line??"var(--_line)":"var(--_line)";R.push(t.connector({id:T(e.from,e.to),role:"edge",geometry:{kind:"polyline",points:e.points.map(e=>({x:eh(e.x),y:eh(e.y)}))},lineStyle:"cherry-pick"===e.kind?"dashed":"solid",paint:{fill:"none",stroke:a,strokeWidth:"parent"===e.kind?"2":"2.5",..."cherry-pick"===e.kind?{strokeDasharray:"4 3"}:{}},endpoints:{from:e.from,to:e.to},relationship:{kind:e.kind,direction:"forward"},route:{ownership:"layout"},channels:{category:e.kind},attributes:{className:`git-edge git-edge-${e.kind}`}}))}for(let e of d.commits)R.push(function(e,t,i,a){let r=t.customType??t.type,n=function(e){let t=e.customType??e.type;return"HIGHLIGHT"===t?{kind:"rect",x:eh(e.x-9),y:eh(e.y-9),width:18,height:18,rx:2,ry:2}:"CHERRY_PICK"===t?{kind:"polygon",points:[{x:eh(e.x),y:eh(e.y-10)},{x:eh(e.x+10),y:eh(e.y)},{x:eh(e.x),y:eh(e.y+10)},{x:eh(e.x-10),y:eh(e.y)}]}:{kind:"circle",cx:eh(e.x),cy:eh(e.y),r:"MERGE"===t?10:8}}(t),o=a.branches.get(t.branch),l="HIGHLIGHT"===r?o.highlight:"MERGE"===r?o.line:o.normalFill,s=o.line,c=[{node:e.shape({id:G(t.id,"shape"),role:"chrome",geometry:n,paint:{fill:l,stroke:s,strokeWidth:"2"},channels:{status:r.toLowerCase(),category:t.branch}}),indent:2}];if("MERGE"===r&&c.push({node:e.shape({id:G(t.id,"inner"),role:"chrome",geometry:{kind:"circle",cx:eh(t.x),cy:eh(t.y),r:5},paint:{fill:"none",stroke:"var(--bg)",strokeWidth:"1.5"}}),indent:2}),"REVERSE"===r)for(let i of[-1,1])c.push({node:e.shape({id:G(t.id,"cross",i),role:"chrome",geometry:{kind:"line",x1:eh(t.x-6),y1:eh(t.y+6*i),x2:eh(t.x+6),y2:eh(t.y-6*i)},paint:{stroke:"var(--_arrow)",strokeWidth:"2"}}),indent:2});if(i.showCommitLabel){let r=t.labelBlock??P(U(t),a.commitLabelFontSize,500),n=r.text,l=r.height-r.lineHeight,s="LR"===i.direction?t.x:t.x+14,m=t.y+V(r,i.direction),h="LR"===i.direction?"middle":"start",d="LR"===i.direction&&i.rotateCommitLabel?{kind:"rotate",angle:45,cx:eh(s),cy:eh(m)}:void 0;if(a.commitLabelBackground){let i=eh(Math.max(18,r.width+24)),n=eh("middle"===h?s-i/2:s-12);c.push({node:e.shape({id:G(t.id,"label-bg"),role:"chrome",geometry:{kind:"rect",x:n,y:eh(m-r.fontSize-l/2),width:i,height:eh(r.fontSize+6+l),rx:3,ry:3},paint:{fill:a.commitLabelBackground,fillOpacity:"0.94",stroke:o.line,strokeWidth:"0.75"},transform:d,attributes:{className:"git-commit-label-background"}}),indent:2})}c.push({node:e.text({id:G(t.id,"label"),role:"label",text:n,block:r,x:s,y:m-.35*r.fontSize,fontSize:r.fontSize,anchor:h,paint:{fill:a.commitLabelColor},transform:d,attributes:{className:"git-commit-label"}}),indent:2})}let m=t.tagBlocks??t.tags.map(e=>P(e,10,600));return t.tags.forEach((i,a)=>{let r=m[a],n=r.height-r.lineHeight,l=t.x+14,s=t.y+q(m,a),h=eh(r.width+10);c.push({node:e.shape({id:G(t.id,"tag-bg",a),role:"chrome",geometry:{kind:"rect",x:eh(l-4),y:eh(s-r.fontSize-1-n/2),width:h,height:eh(r.fontSize+5+n),rx:4,ry:4},paint:{fill:o.labelBackground,stroke:o.line,strokeWidth:"0.75"},attributes:{className:"git-tag-background"}}),indent:2}),c.push({node:e.text({id:G(t.id,"tag",a),role:"label",text:r.text,block:r,x:l,y:s-.35*r.fontSize,fontSize:r.fontSize,anchor:"start",paint:{fill:o.label},attributes:{className:"git-tag"}}),indent:2})}),e.group({id:t.id,role:"node",channels:{status:r.toLowerCase(),category:t.branch},open:`<g class="git-commit type-${r.toLowerCase()}" data-id="${F(t.id)}" data-branch="${F(t.branch)}" data-commit-type="${t.type}"${r!==t.type?` data-visual-type="${r}"`:""}>`,close:"</g>",children:c})}(t,e,d,C));return R.push(t.documentClose()),{family:"gitgraph",width:d.width,height:d.height,colors:p,transparent:y,parts:R}}),ep=u(W,{configDiagnostics:e=>l("gitgraph",e,D),statementEnds:ea,normalizeRequest:e=>({familyConfig:{position:em(e.source.config.gitGraph,e.source.config.themeVariables),..."string"==typeof e.source.frontmatter.title?{title:e.source.frontmatter.title}:{}},appearance:{family:{themeVariables:function(e){let t=e&&"object"==typeof e&&!Array.isArray(e)?e:{},i={commitLabelFontSize:ec(t)};for(let e=0;e<8;e++)for(let a of[`git${e}`,`gitBranchLabel${e}`,`gitInv${e}`]){let e=v(t[a]);void 0!==e&&(i[a]=e)}for(let e of["commitLabelColor","commitLabelBackground"]){let a=v(t[e]);void 0!==a&&(i[e]=a)}return i}(e.source.config.themeVariables)}}}),layout:e=>{let i=e.familyConfig,r=i?.position??em(void 0);return f(function(e,t,i={},a){return function(e,t={}){var i,a;let r="number"==typeof(i=t.padding)&&Number.isFinite(i)&&i>=0?i:44,n=!1!==t.showBranches,o=!1!==t.showCommitLabel,l=!1!==t.rotateCommitLabel,s="number"==typeof(a=t.commitLabelFontSize)&&Number.isFinite(a)&&a>0?a:11,c=C(t.renderOptions??{},{...$,nodeLabelFontSize:s,nodeLabelFontWeight:500,groupHeaderFontSize:12,groupHeaderFontWeight:600},t.styleFace),m=C(t.renderOptions??{},{...$,nodeLabelFontSize:10,nodeLabelFontWeight:600},t.styleFace),h=C(t.renderOptions??{},{...$,groupHeaderFontSize:16,groupHeaderFontWeight:600},t.styleFace),d=e.commits.map(e=>({...e,labelBlock:P(U(e),c.nodeLabelFontSize,c.nodeLabelFontWeight,{transform:c.nodeTextTransform,letterSpacing:c.nodeLetterSpacing}),tagBlocks:e.tags.map(e=>P(e,m.nodeLabelFontSize,m.nodeLabelFontWeight,{transform:m.nodeTextTransform,letterSpacing:m.nodeLetterSpacing}))})),p=e.title?P(e.title,h.groupHeaderFontSize,h.groupHeaderFontWeight,{transform:h.groupTextTransform,letterSpacing:h.groupLetterSpacing}):void 0,g=p?40-16*O+p.height:0,f=e.branches.map(e=>({...e,labelBlock:P(e.name,c.groupHeaderFontSize,c.groupHeaderFontWeight,{transform:c.groupTextTransform,letterSpacing:c.groupLetterSpacing})})).sort((e,t)=>e.order-t.order||e.sequence-t.sequence||Y(e.name,t.name)),u=new Map(f.map((e,t)=>[e.name,t])),y=(d.map(e=>[e.id,e]),new Map);for(let e of d){let t=0===e.parents.length?0:Math.max(...e.parents.map(e=>y.get(e)??0))+1;y.set(e.id,t)}let b=e=>t.parallelCommits?y.get(e.id):e.sequence,x=Math.max(0,...d.map(b)),k=Math.max(82,...f.map(e=>e.labelBlock.height+20),...d.map(t=>{let i=K(t,e.direction,l,s,o);return i.maxY-i.minY+20})),w=Math.max(150,...f.map(e=>e.labelBlock.width+20)),L=n?Math.max(80,...f.map(e=>e.labelBlock.width+24)):20,v=new Map;for(let t of d){let i=b(t),a=K(t,e.direction,l,s,o),r=v.get(i);v.set(i,r?{minX:Math.min(r.minX,a.minX),minY:Math.min(r.minY,a.minY),maxX:Math.max(r.maxX,a.maxX),maxY:Math.max(r.maxY,a.maxY)}:a)}let B=new Map,z=Array.from({length:x+1},(t,i)=>"BT"===e.direction?x-i:i);for(let[t,i]of z.entries()){let a=v.get(i)??{minX:-10,minY:-10,maxX:10,maxY:10},r="LR"===e.direction?a.minX:a.minY;if(0===t){B.set(i,"LR"===e.direction?Math.max(0,-r):0);continue}let n=z[t-1],o=v.get(n)??{minX:-10,minY:-10,maxX:10,maxY:10},l=B.get(n),s="LR"===e.direction?o.maxX:o.maxY;B.set(i,Math.max(l+94,l+s-r+18))}let M=r+L+20,S=r+g+38,R=d.map(t=>{let i=u.get(t.branch)??0,a=b(t);return"LR"===e.direction?{...t,lane:i,x:M+B.get(a),y:r+g+i*k}:{...t,lane:i,x:r+L+i*w,y:S+B.get(a)}}),F=new Map(R.map(e=>[e.id,e])),_=[],T=new Map;for(let t of R){let i="LR"===e.direction?t.x:t.y;for(let[a,r]of(T.set(t.branch,Math.max(T.get(t.branch)??-1/0,i)),[...new Set(t.parents)].entries())){let i=F.get(r);if(!i)continue;let n="LR"===e.direction?(i.x+t.x)/2:(i.y+t.y)/2,o="LR"===e.direction?[{x:i.x,y:i.y},{x:n,y:i.y},{x:n,y:t.y},{x:t.x,y:t.y}]:[{x:i.x,y:i.y},{x:i.x,y:n},{x:t.x,y:n},{x:t.x,y:t.y}],l=0===a?"parent":"cherry-pick"===t.source?"cherry-pick":"merge";_.push({from:i.id,to:t.id,kind:l,points:o})}}let G=f.map((t,i)=>{let a=T.get(t.name)??-1/0;if("LR"===e.direction){let e=r+g+i*k;return{...t,lane:i,x1:M-14,y1:e,x2:Math.max(M,a),y2:e}}let n=r+L+i*w;return{...t,lane:i,x1:n,y1:r+g-14,x2:n,y2:Math.max(S,a)}}),I,H;"LR"===e.direction?(I=Math.max(2*r+L+80,...R.map(e=>e.x+(o?Math.max(26,.75*e.labelBlock.width):18)))+r,H=2*r+g+Math.max(0,f.length-1)*k+82+(o?2*s+26:0)):(I=2*r+L+Math.max(1,f.length)*w,H=Math.max(2*r+g+80,...R.map(e=>e.y+(o?38:18)))+r),e.title&&(I=Math.max(I,p.width+2*r));let N=[...R.flatMap(t=>{var i;let a;return[...o?[(i=e.direction,a=t.labelBlock??P(U(t),s,500),"LR"===i?Z(a,t.x,t.y+V(a,i),s,"middle",45*!!l):Z(a,t.x+14,t.y+V(a,i),s,"start",0))]:[],...t.tags.map((e,i)=>Q(t.tagBlocks[i],t.x+14,t.y+q(t.tagBlocks,i),10,600,"start",0))]}),...n?G.map(t=>Q(t.labelBlock,"LR"===e.direction?t.x1-10:t.x1,"LR"===e.direction?t.y1:t.y1-16,12,600,"LR"===e.direction?"end":"middle",0)):[]];if(N.length>0){let e=Math.min(...N.map(e=>e.minX)),t=Math.min(...N.map(e=>e.minY)),i=Math.max(...N.map(e=>e.maxX)),a=Math.max(...N.map(e=>e.maxY)),n=e<r?r-e:0,o=r+g,l=t<o?o-t:0;if(0!==n||0!==l){for(let e of R)e.x+=n,e.y+=l;for(let e of G)e.x1+=n,e.x2+=n,e.y1+=l,e.y2+=l;for(let e of _)for(let t of e.points)t.x+=n,t.y+=l}I=Math.max(I+n,i+n+r),H=Math.max(H+l,a+l+r)}for(let e of R)e.x=J(e.x),e.y=J(e.y);for(let e of G)e.x1=J(e.x1),e.y1=J(e.y1),e.x2=J(e.x2),e.y2=J(e.y2);for(let e of _)for(let t of e.points)t.x=J(t.x),t.y=J(t.y);return{width:J(I),height:J(H),direction:e.direction,...e.title?{title:e.title,titleBlock:p}:{},commits:R,branches:G,edges:_,accessibilityTitle:e.accessibilityTitle,accessibilityDescription:e.accessibilityDescription,showBranches:n,showCommitLabel:o,rotateCommitLabel:l}}(e,{...t,renderOptions:i,styleFace:a})}(k(function(e,i={}){var r,n;let o=e.replace(/^\uFEFF/,"").split(/\r?\n/),l=L(o,ea(o));if(void 0!==l.unclosedIndex)throw new ee("Unclosed accDescr block",l.unclosedIndex+1);let s=a(l.familyLines,ei).map(t),c=s.findIndex(e=>/^\s*gitgraph\b/i.test(e));if(c<0)throw new ee("gitGraph source must start with a gitGraph header");let m=s[c].trim().match(/^gitGraph(?:\s+(LR|TB|BT))?\s*:?[ \t]*$/i);if(!m)throw new ee("Invalid gitGraph header; expected gitGraph, gitGraph LR:, gitGraph TB:, or gitGraph BT:",c+1);y("gitgraph")&&b("gitgraph","header",s[c],{line:c+1,unit:"normalized"});let h=m[1]?.toUpperCase()??"LR",d="string"==typeof i.mainBranchName&&i.mainBranchName.trim()?i.mainBranchName.trim():"main",p="number"==typeof(r=i.mainBranchOrder)&&Number.isFinite(r)?r:0,g="string"==typeof i.title&&i.title.trim()?i.title.trim():void 0,f=[],u=new Map([[d,{name:d,order:p,sequence:0}]]),k=[],w=new Map,v=[],B=new Map;for(let e=c+1;e<s.length;e++){let t=s[e].trim(),i=t.match(er),a=i?void 0:t.match(en);if(!i&&!a)continue;let r=i?i[1]??"":a[2]??"";if(!(i&&/^(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')$/.test(r)))try{let t=eo(r,e+1,i?["id","tag","type","msg"]:["id","tag","type"]);B.set(e,t),void 0!==t.id&&v.push(t.id)}catch{}}let z=_(v),M=new Map,S=d,$=0,C=l.accessibility.title,R=l.accessibility.descr;y("gitgraph")&&x("gitgraph","initialize",{direction:h,mainBranchName:d,title:g,branch:u.get(d),currentBranch:S,accessibilityTitle:C,accessibilityDescription:R});let F=(e,t,i,a={},r)=>{let n=void 0!==e.id,o=e.id??`c${$}`;if("merge"===t&&n&&M.has(o))throw new et(o,i);let l=n&&!w.has(o)?o:z(o,["commit",$]),s="merge"===t?"MERGE":"cherry-pick"===t?"CHERRY_PICK":e.type??"NORMAL",c=u.get(S),m={id:l,...n&&l!==e.id?{sourceId:e.id}:{},...e.msg?{message:e.msg}:{},type:s,tags:e.tags,branch:S,parents:r??(c.head?[c.head]:[]),sequence:$++,source:t,customId:n,...a};return f.push(m),y("gitgraph")&&x("gitgraph","addCommit",m,{line:i,unit:"normalized"}),w.set(l,m),M.set(e.id??l,m),c.head=l,y("gitgraph")&&x("gitgraph","setBranchHead",{branch:S,head:l},{line:i,unit:"normalized"}),m};for(let e=c+1;e<s.length;e++){let t=s[e].trim();if(!t||t.startsWith("%%"))continue;let i=t.match(er);if(i){y("gitgraph")&&b("gitgraph","commit",t,{line:e+1,unit:"normalized"});let a=i[1]??"",r=F(/^(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')$/.test(a)?{tags:[],msg:el(a)}:B.get(e)??eo(a,e+1,["id","tag","type","msg"]),"commit",e+1);k.push({kind:"commit",ref:r.id}),y("gitgraph")&&x("gitgraph","appendStatement",k.at(-1),{line:e+1,unit:"normalized"});continue}let a=t.match(/^branch\s+("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\S+)(?:\s+order\s*:\s*(-?\d+))?$/i);if(a){y("gitgraph")&&b("gitgraph","branch",t,{line:e+1,unit:"normalized"});let i=el(a[1]);if(u.has(i))throw new ee(`Trying to create existing branch '${i}'; use checkout ${/^[A-Za-z_](?:[-./\w]*[-\w])?$/.test(i)&&!/^(?:title|(?:gitGraph|commit|branch|checkout|switch|merge|cherry-pick|LR|TB|BT|NORMAL|REVERSE|HIGHLIGHT)$)/i.test(i)?i:es(i)} instead.`,e+1);let r=void 0===a[2]?void 0:Number(a[2]);if(void 0!==r&&r<=0)throw new ee("Branch order must be a positive integer.",e+1);let o=r??((n=u.size)<=9?n/10:1-1/(n+1));u.set(i,{name:i,order:o,sequence:u.size,...u.get(S)?.head?{head:u.get(S).head}:{}}),y("gitgraph")&&x("gitgraph","addBranch",u.get(i),{line:e+1,unit:"normalized"}),S=i,y("gitgraph")&&x("gitgraph","setCurrentBranch",i,{line:e+1,unit:"normalized"}),k.push({kind:"branch",name:i,...void 0!==a[2]?{order:o}:{}}),y("gitgraph")&&x("gitgraph","appendStatement",k.at(-1),{line:e+1,unit:"normalized"});continue}let r=t.match(/^(checkout|switch)\s+("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\S+)$/i);if(r){y("gitgraph")&&b("gitgraph","checkout",t,{line:e+1,unit:"normalized"});let i=el(r[2]);if(!u.has(i))throw new ee(`Trying to checkout branch '${i}' before it is created.`,e+1);S=i,y("gitgraph")&&x("gitgraph","setCurrentBranch",i,{line:e+1,unit:"normalized"}),k.push({kind:"checkout",branch:i,keyword:r[1].toLowerCase()}),y("gitgraph")&&x("gitgraph","appendStatement",k.at(-1),{line:e+1,unit:"normalized"});continue}let o=t.match(en);if(o){y("gitgraph")&&b("gitgraph","merge",t,{line:e+1,unit:"normalized"});let i=el(o[1]),a=B.get(e)??eo(o[2]??"",e+1,["id","tag","type"]);if(i===S)throw new ee(`Cannot merge branch '${i}' into itself.`,e+1);let r=u.get(S),n=u.get(i);if(!n)throw new ee(`Branch to be merged ('${i}') does not exist.`,e+1);if(!r.head)throw new ee(`Current branch '${S}' has no commits.`,e+1);if(!n.head)throw new ee(`Branch to be merged ('${i}') has no commits.`,e+1);if(n.head===r.head)throw new ee("Cannot merge branches with the same head commit.",e+1);let l=F(a,"merge",e+1,{mergeBranch:i,message:`merged branch ${i} into ${S}`,...a.type?{customType:a.type}:{}},[r.head,n.head]);k.push({kind:"merge",ref:l.id,branch:i}),y("gitgraph")&&x("gitgraph","appendStatement",k.at(-1),{line:e+1,unit:"normalized"});continue}let l=t.match(/^cherry-pick\s+(.+)$/is);if(l){y("gitgraph")&&b("gitgraph","cherry-pick",t,{line:e+1,unit:"normalized"});let i=eo(l[1],e+1,["id","tag","parent"]);if(!i.id)throw new ee('cherry-pick requires id:"existing commit".',e+1);let a=M.get(i.id);if(!a)throw new ee(`Cherry-pick source commit '${i.id}' does not exist.`,e+1);let r=u.get(S);if(!r.head)throw new ee(`Current branch '${S}' has no commits.`,e+1);if(function(e,t,i){let a=[e],r=new Set;for(;a.length>0;){let e=a.pop();if(e===t)return!0;if(r.has(e))continue;r.add(e);let n=i.get(e);n&&a.push(..."cherry-pick"===n.source?n.parents.slice(0,1):n.parents)}return!1}(r.head,a.id,w))throw new ee(`Cherry-pick source '${a.id}' is already reachable from current branch '${S}'.`,e+1);let n=i.parent?M.get(i.parent)?.id:void 0;if(2===a.parents.length){if(!i.parent)throw new ee(`Cherry-picking merge commit '${a.id}' requires parent:"immediate parent".`,e+1);if(!n||!a.parents.includes(n))throw new ee(`Cherry-pick parent '${i.parent}' is not an immediate parent of '${a.id}'.`,e+1)}let o=0===i.tags.length?`cherry-pick:${a.sourceId??a.id}${i.parent?`|parent:${i.parent}`:""}`:void 0,s=F({tags:o?[o]:i.tags},"cherry-pick",e+1,{message:`cherry-picked ${U(a)} into ${S}`,cherrySource:a.id,...n?{cherryParent:n}:{},...o?{syntheticCherryTag:o}:{}},[r.head,a.id]);k.push({kind:"cherry-pick",ref:s.id,source:a.id,...n?{parent:n}:{}}),y("gitgraph")&&x("gitgraph","appendStatement",k.at(-1),{line:e+1,unit:"normalized"});continue}throw y("gitgraph")&&b("gitgraph","invalid",t,{line:e+1,unit:"normalized"}),new ee(`Unsupported gitGraph statement on line ${e+1}: ${t}`,e+1)}return{direction:h,mainBranchName:d,...g?{title:g}:{},commits:f,branches:[...u.values()],statements:k,...C?{accessibilityTitle:C}:{},...R?{accessibilityDescription:R}:{}}}(e.source.familyBody,{mainBranchName:r.mainBranchName,mainBranchOrder:r.mainBranchOrder,title:i?.title}),e.source.accessibility),r,e.renderOptions,e.styleFace),{injectAccessibility:!1})},projectPositioned:p(function({positioned:e}){return{version:1,nodes:e.commits.map(t=>{let i=t.customType??t.type,a=t.labelBlock,r=a&&e.showCommitLabel?d(a,"LR"===e.direction?t.x:t.x+14,t.y+V(a,e.direction)-.35*a.fontSize,"LR"===e.direction?"middle":"start"):void 0;if(r&&"LR"===e.direction&&e.rotateCommitLabel&&a){let i=R({x0:r.x,y0:r.y,x1:r.x+r.w,y1:r.y+r.h},{x:t.x,y:t.y+V(a,e.direction)},45);r=c({x:i.x0,y:i.y0,width:i.x1-i.x0,height:i.y1-i.y0})}return{id:t.id,x:m(t.x-10),y:m(t.y-10),w:m(20),h:m(20),shape:"CHERRY_PICK"===i?"diamond":"HIGHLIGHT"===i?"rectangle":"ellipse",label:t.message||t.id,labelVisibility:e.showCommitLabel?"visible":"hidden",labelBounds:r,labelContainer:c(s(e))}}),edges:e.edges.map((e,t)=>({id:`edge#${t}:${e.from}->${e.to}`,from:e.from,to:e.to,path:e.points.map(e=>[m(e.x),m(e.y)])})),groups:e.showBranches?e.branches.map(t=>{let i=e.commits.filter(e=>e.branch===t.name),a=Math.min(t.x1,t.x2,...i.map(e=>e.x-10)),r=Math.min(t.y1,t.y2,...i.map(e=>e.y-10)),n=Math.max(t.x1,t.x2,...i.map(e=>e.x+10)),o=Math.max(t.y1,t.y2,...i.map(e=>e.y+10));return{id:`branch:${t.name}`,x:m(a),y:m(r),w:h(a,Math.max(1,n-a)),h:h(r,Math.max(1,o-r)),members:i.map(e=>e.id),label:t.name}}):[],bounds:{w:m(e.width),h:m(e.height)}}}),lowerScene:g(ed)});export{ep as default};
7
+ merge feature id:"merge"`,detect:O,detectLoose:j}),W={showBranches:n,showCommitLabel:n,parallelCommits:n,rotateCommitLabel:n,mainBranchName:o,mainBranchOrder:r};function P(e){return"merge"===e.source&&e.customId?e.sourceId||e.id:e.message||e.sourceId||e.id}function V(e,t,i,a={}){return H(e,{display:"literal",fontSize:t,fontWeight:i,...a})}function q(e,t){return -6-e[t].fontSize-e.slice(0,t).reduce((e,t)=>e+t.height+5,0)-(e[t].height-e[t].lineHeight)/2}function U(e,t){let i=e.height-e.lineHeight;return"LR"===t?24+i:4+i/2}function J(e,t,i,a,r){let n=[{minX:-10,minY:-10,maxX:10,maxY:10}];if(r){let r=e.labelBlock??V(P(e),a,500);n.push(K(r,14*("LR"!==t),U(r,t),a,"LR"===t?"middle":"start","LR"===t&&i?45:0))}let o=e.tagBlocks??e.tags.map(e=>V(e,10,600));for(let[t,i]of e.tags.entries()){let e=Q(o[t],14,q(o,t),10,600,"start",0);n.push({...e,minX:e.minX-4,maxX:e.maxX+6,minY:e.minY-2,maxY:e.maxY+2})}return{minX:Math.min(...n.map(e=>e.minX)),minY:Math.min(...n.map(e=>e.minY)),maxX:Math.max(...n.map(e=>e.maxX)),maxY:Math.max(...n.map(e=>e.maxY))}}function K(e,t,i,a,r,n){let o="string"==typeof e?V(e,a,500):e;a=o.fontSize;let l=o.height-o.lineHeight,s=Math.max(18,o.width+24),c="middle"===r?-s/2:-12,m=R({x0:t+c,y0:i-a-l/2,x1:t+c+s,y1:i+6+l/2},{x:t,y:i},n);return{minX:m.x0,minY:m.y0,maxX:m.x1,maxY:m.y1}}function Q(e,t,i,a,r,n,o){let l="string"==typeof e?V(e,a,r):e;a=l.fontSize;let s=l.height-l.lineHeight,c=l.width,m="middle"===n?-c/2:"end"===n?-c:0,h=R({x0:t+m,y0:i+(-a-s/2),x1:t+m+c,y1:i+(.28*a+s/2)},{x:t,y:i},o);return{minX:h.x0,minY:h.y0,maxX:h.x1,maxY:h.y1}}function Z(e){return Math.round(1e3*e)/1e3}var ee=class extends Error{constructor(e,t){super(e),this.line=t,this.name="GitGraphParseError"}line},et=class extends ee{constructor(e,t){super(`Duplicate gitGraph commit id '${e}' on line ${t}; commit IDs must be unique.`,t),this.id=e}id;code="GITGRAPH_DUPLICATE_COMMIT_ID"},ei={spanning:"\"'",wholeLine:e=>/^title(?:\s|$)/i.test(e)};function ea(e){return i(e,ei)}var er=/^commit(?:\s+(.*))?$/is,en=/^merge\s+("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\S+)(?:\s+(.*))?$/is;function eo(e,t,i){let a={tags:[]},r=0,n=/([A-Za-z][\w-]*)\s*:\s*("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\S+)/gy;for(;r<e.length;){for(;/\s/.test(e[r]??"");)r++;if(r>=e.length)break;n.lastIndex=r;let o=n.exec(e);if(!o)throw new ee(`Invalid gitGraph attribute syntax near '${e.slice(r)}'.`,t);let l=o[1].toLowerCase();if(!i.includes(l))throw new ee(`Attribute '${l}' is not valid for this gitGraph statement.`,t);let s=el(o[2]);if("id"===l)a.id=s;else if("msg"===l)a.msg=s;else if("tag"===l)a.tags.push(s);else if("parent"===l)a.parent=s;else{let e=s.toUpperCase();if(!["NORMAL","REVERSE","HIGHLIGHT"].includes(e))throw new ee(`Invalid commit type '${s}'.`,t);a.type=e}r=n.lastIndex}return a}function el(e){if(!/^(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')$/.test(e))return e;let t={b:"\b",f:"\f",n:`
8
+ `,r:"\r",t:" ",v:"\v",0:"\0"};return e.slice(1,-1).replace(/\\(.)/g,(e,i)=>t[i]??i)}var es=function(e){let t={"\b":"b","\f":"f","\n":"n","\r":"r"," ":"t","\v":"v","\0":"0"};return`"${e.replace(/[\\"%\b\f\n\r\t\v\0]/g,e=>`\\${t[e]??e}`).replace(/#\w+;/g,e=>`${e.slice(0,-1)}\\;`).replace(/style/g,"sty\\le").replace(/classDef/g,"class\\Def")}"`};function ec(e){let t=(e&&"object"==typeof e&&!Array.isArray(e)?e:{}).commitLabelFontSize,i="number"==typeof t?t:"string"==typeof t?Number.parseFloat(t):11;return Number.isFinite(i)&&i>0?i:11}function em(e,t){let i={commitLabelFontSize:ec(t)};if(!e||"object"!=typeof e||Array.isArray(e))return i;for(let t of["showBranches","showCommitLabel","rotateCommitLabel","parallelCommits"])"boolean"==typeof e[t]&&(i[t]=e[t]);return"string"==typeof e.mainBranchName&&e.mainBranchName.trim()&&(i.mainBranchName=e.mainBranchName.trim()),"number"==typeof e.mainBranchOrder&&Number.isFinite(e.mainBranchOrder)&&(i.mainBranchOrder=e.mainBranchOrder),i}function eh(e){return Math.round(1e3*e)/1e3}var ed=w(function(t,i){var a;let r,n,o,l,s,c,m,h,{positioned:d,colors:p,resolved:g}=i,f=g.renderOptions,u=p.font??"Inter",y=f.transparent??!1,b="gitgraph-title",x="gitgraph-desc",k=S(d.accessibilityTitle??"Git graph",d.accessibilityDescription,b,x,"git graph"),w=[M(d.width,d.height,p,y,{attrs:k}),z(u,!1,p.shadow,p.embedFontImport)],L=B(p);L&&w.push(`<defs>${L}</defs>`);let $=g.familyAppearance;if(!$)throw Error("GitGraph rendering requires request-boundary family appearance resolution");let C=(r=(a=$.themeVariables)&&"object"==typeof a&&!Array.isArray(a)?a:{},n="string"==typeof p.accent?p.accent:"#3b82f6",o="string"==typeof p.bg?p.bg:"#ffffff",l=/^#[0-9a-f]{6}$/i.test(n)?n:"#3b82f6",s=/^#[0-9a-f]{6}$/i.test(o)?o:"#ffffff",c=e(d.branches.length,d.branches.length<=6?{accent:l,bg:s}:{accent:n,bg:o}),m=new Map,d.branches.forEach((e,t)=>{let i=t%8,a=v(r[`git${i}`])??c[t],n=v(r[`gitBranchLabel${i}`])??a,o=v(r[`gitInv${i}`])??a,l=A(a)&&A(s)?Y(a,s,18):"var(--_node-fill)",h=A(a)&&A(s)?Y(a,s,9):"var(--bg)",d=E(n,h,4.5,p.fg);m.set(e.name,{line:a,label:d,highlight:o,normalFill:l,labelBackground:h})}),h=ec(r),{branches:m,commitLabelColor:v(r.commitLabelColor)??"var(--_text-sec)",commitLabelBackground:v(r.commitLabelBackground)??(A(s)?s:"var(--bg)"),commitLabelFontSize:h}),R=[t.documentOpen({id:"prelude",width:d.width,height:d.height,colors:p,transparent:y,font:u,hasMonoFont:!1},w.join(`
9
+ `))];if(R.push(t.documentText({id:"acc-title",element:"title",domId:b,text:d.accessibilityTitle??"Git graph"})),d.accessibilityDescription&&R.push(t.documentText({id:"acc-desc",element:"description",domId:x,text:d.accessibilityDescription})),d.title){let e=d.titleBlock??V(d.title,16,600);R.push(t.text({id:"gitgraph-visible-title",role:"title",identity:{id:"gitgraph-title",classNames:["gitgraph-title"]},text:e.text,block:e,x:d.width/2,y:8+(d.titleBlock?.fontSize??16)*.65+((d.titleBlock?.height??0)-(d.titleBlock?.lineHeight??0))/2,fontSize:e.fontSize,anchor:"middle",paint:{fill:"var(--_text)"},attributes:{className:"gitgraph-title"}}))}if(d.showBranches)for(let e of d.branches){let i=T("branch",e.name),a=C.branches.get(e.name),r=eh("LR"===d.direction?e.x1-10:e.x1),n=eh("LR"===d.direction?e.y1:e.y1-16),o=e.labelBlock??V(e.name,12,600),l=o.height-o.lineHeight,s=eh(o.width+10),c=eh("LR"===d.direction?r-s:r-s/2);R.push(t.group({id:i,role:"group",channels:{category:e.name},open:`<g class="git-branch" data-id="${_(i)}" data-branch="${_(e.name)}">`,close:"</g>",children:[{node:t.shape({id:I(i,"label-bg"),role:"chrome",geometry:{kind:"rect",x:c,y:eh(n-o.fontSize-1-l/2),width:s,height:eh(o.fontSize+6+l),rx:4,ry:4},paint:{fill:a.labelBackground,stroke:a.line,strokeWidth:"1"},attributes:{className:"git-branch-label-background"}}),indent:2},{node:t.shape({id:I(i,"line"),role:"rail",geometry:{kind:"line",x1:eh(e.x1),y1:eh(e.y1),x2:eh(e.x2),y2:eh(e.y2)},paint:{stroke:a.line,strokeWidth:"3"},channels:{category:e.name},attributes:{className:"git-branch-line",data:{branch:e.name}}}),indent:2},{node:t.text({id:I(i,"label"),role:"label",text:o.text,block:o,x:r,y:n-.35*o.fontSize,fontSize:o.fontSize,anchor:"LR"===d.direction?"end":"middle",paint:{fill:a.label},channels:{category:e.name},attributes:{className:"git-branch-label",data:{branch:e.name}}}),indent:2}]}))}let G=new Map(d.commits.map(e=>[e.id,e]));for(let e of d.edges){let i=G.get(e.to)?.branch,a=i?C.branches.get(i)?.line??"var(--_line)":"var(--_line)";R.push(t.connector({id:F(e.from,e.to),role:"edge",geometry:{kind:"polyline",points:e.points.map(e=>({x:eh(e.x),y:eh(e.y)}))},lineStyle:"cherry-pick"===e.kind?"dashed":"solid",paint:{fill:"none",stroke:a,strokeWidth:"parent"===e.kind?"2":"2.5",..."cherry-pick"===e.kind?{strokeDasharray:"4 3"}:{}},endpoints:{from:e.from,to:e.to},relationship:{kind:e.kind,direction:"forward"},route:{ownership:"layout"},channels:{category:e.kind},attributes:{className:`git-edge git-edge-${e.kind}`}}))}for(let e of d.commits)R.push(function(e,t,i,a){let r=t.customType??t.type,n=function(e){let t=e.customType??e.type;return"HIGHLIGHT"===t?{kind:"rect",x:eh(e.x-9),y:eh(e.y-9),width:18,height:18,rx:2,ry:2}:"CHERRY_PICK"===t?{kind:"polygon",points:[{x:eh(e.x),y:eh(e.y-10)},{x:eh(e.x+10),y:eh(e.y)},{x:eh(e.x),y:eh(e.y+10)},{x:eh(e.x-10),y:eh(e.y)}]}:{kind:"circle",cx:eh(e.x),cy:eh(e.y),r:"MERGE"===t?10:8}}(t),o=a.branches.get(t.branch),l="HIGHLIGHT"===r?o.highlight:"MERGE"===r?o.line:o.normalFill,s=o.line,c=[{node:e.shape({id:I(t.id,"shape"),role:"chrome",geometry:n,paint:{fill:l,stroke:s,strokeWidth:"2"},channels:{status:r.toLowerCase(),category:t.branch}}),indent:2}];if("MERGE"===r&&c.push({node:e.shape({id:I(t.id,"inner"),role:"chrome",geometry:{kind:"circle",cx:eh(t.x),cy:eh(t.y),r:5},paint:{fill:"none",stroke:"var(--bg)",strokeWidth:"1.5"}}),indent:2}),"REVERSE"===r)for(let i of[-1,1])c.push({node:e.shape({id:I(t.id,"cross",i),role:"chrome",geometry:{kind:"line",x1:eh(t.x-6),y1:eh(t.y+6*i),x2:eh(t.x+6),y2:eh(t.y-6*i)},paint:{stroke:"var(--_arrow)",strokeWidth:"2"}}),indent:2});if(i.showCommitLabel){let r=t.labelBlock??V(P(t),a.commitLabelFontSize,500),n=r.text,l=r.height-r.lineHeight,s="LR"===i.direction?t.x:t.x+14,m=t.y+U(r,i.direction),h="LR"===i.direction?"middle":"start",d="LR"===i.direction&&i.rotateCommitLabel?{kind:"rotate",angle:45,cx:eh(s),cy:eh(m)}:void 0;if(a.commitLabelBackground){let i=eh(Math.max(18,r.width+24)),n=eh("middle"===h?s-i/2:s-12);c.push({node:e.shape({id:I(t.id,"label-bg"),role:"chrome",geometry:{kind:"rect",x:n,y:eh(m-r.fontSize-l/2),width:i,height:eh(r.fontSize+6+l),rx:3,ry:3},paint:{fill:a.commitLabelBackground,fillOpacity:"0.94",stroke:o.line,strokeWidth:"0.75"},transform:d,attributes:{className:"git-commit-label-background"}}),indent:2})}c.push({node:e.text({id:I(t.id,"label"),role:"label",text:n,block:r,x:s,y:m-.35*r.fontSize,fontSize:r.fontSize,anchor:h,paint:{fill:a.commitLabelColor},transform:d,attributes:{className:"git-commit-label"}}),indent:2})}let m=t.tagBlocks??t.tags.map(e=>V(e,10,600));return t.tags.forEach((i,a)=>{let r=m[a],n=r.height-r.lineHeight,l=t.x+14,s=t.y+q(m,a),h=eh(r.width+10);c.push({node:e.shape({id:I(t.id,"tag-bg",a),role:"chrome",geometry:{kind:"rect",x:eh(l-4),y:eh(s-r.fontSize-1-n/2),width:h,height:eh(r.fontSize+5+n),rx:4,ry:4},paint:{fill:o.labelBackground,stroke:o.line,strokeWidth:"0.75"},attributes:{className:"git-tag-background"}}),indent:2}),c.push({node:e.text({id:I(t.id,"tag",a),role:"label",text:r.text,block:r,x:l,y:s-.35*r.fontSize,fontSize:r.fontSize,anchor:"start",paint:{fill:o.label},attributes:{className:"git-tag"}}),indent:2})}),e.group({id:t.id,role:"node",channels:{status:r.toLowerCase(),category:t.branch},open:`<g class="git-commit type-${r.toLowerCase()}" data-id="${_(t.id)}" data-branch="${_(t.branch)}" data-commit-type="${t.type}"${r!==t.type?` data-visual-type="${r}"`:""}>`,close:"</g>",children:c})}(t,e,d,C));return R.push(t.documentClose()),{family:"gitgraph",width:d.width,height:d.height,colors:p,transparent:y,parts:R}}),ep=u(D,{configDiagnostics:e=>l("gitgraph",e,W),statementEnds:ea,normalizeRequest:e=>({familyConfig:{position:em(e.source.config.gitGraph,e.source.config.themeVariables),..."string"==typeof e.source.frontmatter.title?{title:e.source.frontmatter.title}:{}},appearance:{family:{themeVariables:function(e){let t=e&&"object"==typeof e&&!Array.isArray(e)?e:{},i={commitLabelFontSize:ec(t)};for(let e=0;e<8;e++)for(let a of[`git${e}`,`gitBranchLabel${e}`,`gitInv${e}`]){let e=v(t[a]);void 0!==e&&(i[a]=e)}for(let e of["commitLabelColor","commitLabelBackground"]){let a=v(t[e]);void 0!==a&&(i[e]=a)}return i}(e.source.config.themeVariables)}}}),layout:e=>{let i=e.familyConfig,r=i?.position??em(void 0);return f(function(e,t,i={},a){return function(e,t={}){var i,a;let r="number"==typeof(i=t.padding)&&Number.isFinite(i)&&i>=0?i:44,n=!1!==t.showBranches,o=!1!==t.showCommitLabel,l=!1!==t.rotateCommitLabel,s="number"==typeof(a=t.commitLabelFontSize)&&Number.isFinite(a)&&a>0?a:11,c=C(t.renderOptions??{},{...$,nodeLabelFontSize:s,nodeLabelFontWeight:500,groupHeaderFontSize:12,groupHeaderFontWeight:600},t.styleFace),m=C(t.renderOptions??{},{...$,nodeLabelFontSize:10,nodeLabelFontWeight:600},t.styleFace),h=C(t.renderOptions??{},{...$,groupHeaderFontSize:16,groupHeaderFontWeight:600},t.styleFace),d=e.commits.map(e=>({...e,labelBlock:V(P(e),c.nodeLabelFontSize,c.nodeLabelFontWeight,{transform:c.nodeTextTransform,letterSpacing:c.nodeLetterSpacing}),tagBlocks:e.tags.map(e=>V(e,m.nodeLabelFontSize,m.nodeLabelFontWeight,{transform:m.nodeTextTransform,letterSpacing:m.nodeLetterSpacing}))})),p=e.title?V(e.title,h.groupHeaderFontSize,h.groupHeaderFontWeight,{transform:h.groupTextTransform,letterSpacing:h.groupLetterSpacing}):void 0,g=p?40-16*X+p.height:0,f=e.branches.map(e=>({...e,labelBlock:V(e.name,c.groupHeaderFontSize,c.groupHeaderFontWeight,{transform:c.groupTextTransform,letterSpacing:c.groupLetterSpacing})})).sort((e,t)=>e.order-t.order||e.sequence-t.sequence||N(e.name,t.name)),u=new Map(f.map((e,t)=>[e.name,t])),y=(d.map(e=>[e.id,e]),new Map);for(let e of d){let t=0===e.parents.length?0:Math.max(...e.parents.map(e=>y.get(e)??0))+1;y.set(e.id,t)}let b=e=>t.parallelCommits?y.get(e.id):e.sequence,x=Math.max(0,...d.map(b)),k=Math.max(82,...f.map(e=>e.labelBlock.height+20),...d.map(t=>{let i=J(t,e.direction,l,s,o);return i.maxY-i.minY+20})),w=Math.max(150,...f.map(e=>e.labelBlock.width+20)),L=n?Math.max(80,...f.map(e=>e.labelBlock.width+24)):20,v=new Map;for(let t of d){let i=b(t),a=J(t,e.direction,l,s,o),r=v.get(i);v.set(i,r?{minX:Math.min(r.minX,a.minX),minY:Math.min(r.minY,a.minY),maxX:Math.max(r.maxX,a.maxX),maxY:Math.max(r.maxY,a.maxY)}:a)}let B=new Map,z=Array.from({length:x+1},(t,i)=>"BT"===e.direction?x-i:i);for(let[t,i]of z.entries()){let a=v.get(i)??{minX:-10,minY:-10,maxX:10,maxY:10},r="LR"===e.direction?a.minX:a.minY;if(0===t){B.set(i,"LR"===e.direction?Math.max(0,-r):0);continue}let n=z[t-1],o=v.get(n)??{minX:-10,minY:-10,maxX:10,maxY:10},l=B.get(n),s="LR"===e.direction?o.maxX:o.maxY;B.set(i,Math.max(l+94,l+s-r+18))}let M=r+L+20,S=r+g+38,R=d.map(t=>{let i=u.get(t.branch)??0,a=b(t);return"LR"===e.direction?{...t,lane:i,x:M+B.get(a),y:r+g+i*k}:{...t,lane:i,x:r+L+i*w,y:S+B.get(a)}}),_=new Map(R.map(e=>[e.id,e])),F=[],G=new Map;for(let t of R){let i="LR"===e.direction?t.x:t.y;for(let[a,r]of(G.set(t.branch,Math.max(G.get(t.branch)??-1/0,i)),[...new Set(t.parents)].entries())){let i=_.get(r);if(!i)continue;let n="LR"===e.direction?(i.x+t.x)/2:(i.y+t.y)/2,o="LR"===e.direction?[{x:i.x,y:i.y},{x:n,y:i.y},{x:n,y:t.y},{x:t.x,y:t.y}]:[{x:i.x,y:i.y},{x:i.x,y:n},{x:t.x,y:n},{x:t.x,y:t.y}],l=0===a?"parent":"cherry-pick"===t.source?"cherry-pick":"merge";F.push({from:i.id,to:t.id,kind:l,points:o})}}let I=f.map((t,i)=>{let a=G.get(t.name)??-1/0;if("LR"===e.direction){let e=r+g+i*k;return{...t,lane:i,x1:M-14,y1:e,x2:Math.max(M,a),y2:e}}let n=r+L+i*w;return{...t,lane:i,x1:n,y1:r+g-14,x2:n,y2:Math.max(S,a)}}),T,H;"LR"===e.direction?(T=Math.max(2*r+L+80,...R.map(e=>e.x+(o?Math.max(26,.75*e.labelBlock.width):18)))+r,H=2*r+g+Math.max(0,f.length-1)*k+82+(o?2*s+26:0)):(T=2*r+L+Math.max(1,f.length)*w,H=Math.max(2*r+g+80,...R.map(e=>e.y+(o?38:18)))+r),e.title&&(T=Math.max(T,p.width+2*r));let Y=[...R.flatMap(t=>{var i;let a;return[...o?[(i=e.direction,a=t.labelBlock??V(P(t),s,500),"LR"===i?K(a,t.x,t.y+U(a,i),s,"middle",45*!!l):K(a,t.x+14,t.y+U(a,i),s,"start",0))]:[],...t.tags.map((e,i)=>Q(t.tagBlocks[i],t.x+14,t.y+q(t.tagBlocks,i),10,600,"start",0))]}),...n?I.map(t=>Q(t.labelBlock,"LR"===e.direction?t.x1-10:t.x1,"LR"===e.direction?t.y1:t.y1-16,12,600,"LR"===e.direction?"end":"middle",0)):[]];if(Y.length>0){let e=Math.min(...Y.map(e=>e.minX)),t=Math.min(...Y.map(e=>e.minY)),i=Math.max(...Y.map(e=>e.maxX)),a=Math.max(...Y.map(e=>e.maxY)),n=e<r?r-e:0,o=r+g,l=t<o?o-t:0;if(0!==n||0!==l){for(let e of R)e.x+=n,e.y+=l;for(let e of I)e.x1+=n,e.x2+=n,e.y1+=l,e.y2+=l;for(let e of F)for(let t of e.points)t.x+=n,t.y+=l}T=Math.max(T+n,i+n+r),H=Math.max(H+l,a+l+r)}for(let e of R)e.x=Z(e.x),e.y=Z(e.y);for(let e of I)e.x1=Z(e.x1),e.y1=Z(e.y1),e.x2=Z(e.x2),e.y2=Z(e.y2);for(let e of F)for(let t of e.points)t.x=Z(t.x),t.y=Z(t.y);return{width:Z(T),height:Z(H),direction:e.direction,...e.title?{title:e.title,titleBlock:p}:{},commits:R,branches:I,edges:F,accessibilityTitle:e.accessibilityTitle,accessibilityDescription:e.accessibilityDescription,showBranches:n,showCommitLabel:o,rotateCommitLabel:l}}(e,{...t,renderOptions:i,styleFace:a})}(k(function(e,i={}){var r,n;let o=e.replace(/^\uFEFF/,"").split(/\r?\n/),l=L(o,ea(o));if(void 0!==l.unclosedIndex)throw new ee("Unclosed accDescr block",l.unclosedIndex+1);let s=a(l.familyLines,ei).map(t),c=s.findIndex(e=>/^\s*gitgraph\b/i.test(e));if(c<0)throw new ee("gitGraph source must start with a gitGraph header");let m=s[c].trim().match(/^gitGraph(?:\s+(LR|TB|BT))?\s*:?[ \t]*$/i);if(!m)throw new ee("Invalid gitGraph header; expected gitGraph, gitGraph LR:, gitGraph TB:, or gitGraph BT:",c+1);y("gitgraph")&&b("gitgraph","header",s[c],{line:c+1,unit:"normalized"});let h=m[1]?.toUpperCase()??"LR",d="string"==typeof i.mainBranchName&&i.mainBranchName.trim()?i.mainBranchName.trim():"main",p="number"==typeof(r=i.mainBranchOrder)&&Number.isFinite(r)?r:0,g="string"==typeof i.title&&i.title.trim()?i.title.trim():void 0,f=[],u=new Map([[d,{name:d,order:p,sequence:0}]]),k=[],w=new Map,v=[],B=new Map;for(let e=c+1;e<s.length;e++){let t=s[e].trim(),i=t.match(er),a=i?void 0:t.match(en);if(!i&&!a)continue;let r=i?i[1]??"":a[2]??"";if(!(i&&/^(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')$/.test(r)))try{let t=eo(r,e+1,i?["id","tag","type","msg"]:["id","tag","type"]);B.set(e,t),void 0!==t.id&&v.push(t.id)}catch{}}let z=G(v),M=new Map,S=d,$=0,C=l.accessibility.title,R=l.accessibility.descr;y("gitgraph")&&x("gitgraph","initialize",{direction:h,mainBranchName:d,title:g,branch:u.get(d),currentBranch:S,accessibilityTitle:C,accessibilityDescription:R});let _=(e,t,i,a={},r)=>{let n=void 0!==e.id,o=e.id??`c${$}`;if("merge"===t&&n&&M.has(o))throw new et(o,i);let l=n&&!w.has(o)?o:z(o,["commit",$]),s="merge"===t?"MERGE":"cherry-pick"===t?"CHERRY_PICK":e.type??"NORMAL",c=u.get(S),m={id:l,...n&&l!==e.id?{sourceId:e.id}:{},...e.msg?{message:e.msg}:{},type:s,tags:e.tags,branch:S,parents:r??(c.head?[c.head]:[]),sequence:$++,source:t,customId:n,...a};return f.push(m),y("gitgraph")&&x("gitgraph","addCommit",m,{line:i,unit:"normalized"}),w.set(l,m),M.set(e.id??l,m),c.head=l,y("gitgraph")&&x("gitgraph","setBranchHead",{branch:S,head:l},{line:i,unit:"normalized"}),m};for(let e=c+1;e<s.length;e++){let t=s[e].trim();if(!t||t.startsWith("%%"))continue;let i=t.match(er);if(i){y("gitgraph")&&b("gitgraph","commit",t,{line:e+1,unit:"normalized"});let a=i[1]??"",r=_(/^(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')$/.test(a)?{tags:[],msg:el(a)}:B.get(e)??eo(a,e+1,["id","tag","type","msg"]),"commit",e+1);k.push({kind:"commit",ref:r.id}),y("gitgraph")&&x("gitgraph","appendStatement",k.at(-1),{line:e+1,unit:"normalized"});continue}let a=t.match(/^branch\s+("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\S+)(?:\s+order\s*:\s*(-?\d+))?$/i);if(a){y("gitgraph")&&b("gitgraph","branch",t,{line:e+1,unit:"normalized"});let i=el(a[1]);if(u.has(i))throw new ee(`Trying to create existing branch '${i}'; use checkout ${/^[A-Za-z_](?:[-./\w]*[-\w])?$/.test(i)&&!/^(?:title|(?:gitGraph|commit|branch|checkout|switch|merge|cherry-pick|LR|TB|BT|NORMAL|REVERSE|HIGHLIGHT)$)/i.test(i)?i:es(i)} instead.`,e+1);let r=void 0===a[2]?void 0:Number(a[2]);if(void 0!==r&&r<=0)throw new ee("Branch order must be a positive integer.",e+1);let o=r??((n=u.size)<=9?n/10:1-1/(n+1));u.set(i,{name:i,order:o,sequence:u.size,...u.get(S)?.head?{head:u.get(S).head}:{}}),y("gitgraph")&&x("gitgraph","addBranch",u.get(i),{line:e+1,unit:"normalized"}),S=i,y("gitgraph")&&x("gitgraph","setCurrentBranch",i,{line:e+1,unit:"normalized"}),k.push({kind:"branch",name:i,...void 0!==a[2]?{order:o}:{}}),y("gitgraph")&&x("gitgraph","appendStatement",k.at(-1),{line:e+1,unit:"normalized"});continue}let r=t.match(/^(checkout|switch)\s+("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\S+)$/i);if(r){y("gitgraph")&&b("gitgraph","checkout",t,{line:e+1,unit:"normalized"});let i=el(r[2]);if(!u.has(i))throw new ee(`Trying to checkout branch '${i}' before it is created.`,e+1);S=i,y("gitgraph")&&x("gitgraph","setCurrentBranch",i,{line:e+1,unit:"normalized"}),k.push({kind:"checkout",branch:i,keyword:r[1].toLowerCase()}),y("gitgraph")&&x("gitgraph","appendStatement",k.at(-1),{line:e+1,unit:"normalized"});continue}let o=t.match(en);if(o){y("gitgraph")&&b("gitgraph","merge",t,{line:e+1,unit:"normalized"});let i=el(o[1]),a=B.get(e)??eo(o[2]??"",e+1,["id","tag","type"]);if(i===S)throw new ee(`Cannot merge branch '${i}' into itself.`,e+1);let r=u.get(S),n=u.get(i);if(!n)throw new ee(`Branch to be merged ('${i}') does not exist.`,e+1);if(!r.head)throw new ee(`Current branch '${S}' has no commits.`,e+1);if(!n.head)throw new ee(`Branch to be merged ('${i}') has no commits.`,e+1);if(n.head===r.head)throw new ee("Cannot merge branches with the same head commit.",e+1);let l=_(a,"merge",e+1,{mergeBranch:i,message:`merged branch ${i} into ${S}`,...a.type?{customType:a.type}:{}},[r.head,n.head]);k.push({kind:"merge",ref:l.id,branch:i}),y("gitgraph")&&x("gitgraph","appendStatement",k.at(-1),{line:e+1,unit:"normalized"});continue}let l=t.match(/^cherry-pick\s+(.+)$/is);if(l){y("gitgraph")&&b("gitgraph","cherry-pick",t,{line:e+1,unit:"normalized"});let i=eo(l[1],e+1,["id","tag","parent"]);if(!i.id)throw new ee('cherry-pick requires id:"existing commit".',e+1);let a=M.get(i.id);if(!a)throw new ee(`Cherry-pick source commit '${i.id}' does not exist.`,e+1);let r=u.get(S);if(!r.head)throw new ee(`Current branch '${S}' has no commits.`,e+1);if(function(e,t,i){let a=[e],r=new Set;for(;a.length>0;){let e=a.pop();if(e===t)return!0;if(r.has(e))continue;r.add(e);let n=i.get(e);n&&a.push(..."cherry-pick"===n.source?n.parents.slice(0,1):n.parents)}return!1}(r.head,a.id,w))throw new ee(`Cherry-pick source '${a.id}' is already reachable from current branch '${S}'.`,e+1);let n=i.parent?M.get(i.parent)?.id:void 0;if(2===a.parents.length){if(!i.parent)throw new ee(`Cherry-picking merge commit '${a.id}' requires parent:"immediate parent".`,e+1);if(!n||!a.parents.includes(n))throw new ee(`Cherry-pick parent '${i.parent}' is not an immediate parent of '${a.id}'.`,e+1)}let o=0===i.tags.length?`cherry-pick:${a.sourceId??a.id}${i.parent?`|parent:${i.parent}`:""}`:void 0,s=_({tags:o?[o]:i.tags},"cherry-pick",e+1,{message:`cherry-picked ${P(a)} into ${S}`,cherrySource:a.id,...n?{cherryParent:n}:{},...o?{syntheticCherryTag:o}:{}},[r.head,a.id]);k.push({kind:"cherry-pick",ref:s.id,source:a.id,...n?{parent:n}:{}}),y("gitgraph")&&x("gitgraph","appendStatement",k.at(-1),{line:e+1,unit:"normalized"});continue}throw y("gitgraph")&&b("gitgraph","invalid",t,{line:e+1,unit:"normalized"}),new ee(`Unsupported gitGraph statement on line ${e+1}: ${t}`,e+1)}return{direction:h,mainBranchName:d,...g?{title:g}:{},commits:f,branches:[...u.values()],statements:k,...C?{accessibilityTitle:C}:{},...R?{accessibilityDescription:R}:{}}}(e.source.familyBody,{mainBranchName:r.mainBranchName,mainBranchOrder:r.mainBranchOrder,title:i?.title}),e.source.accessibility),r,e.renderOptions,e.styleFace),{injectAccessibility:!1})},projectPositioned:p(function({positioned:e}){return{version:1,nodes:e.commits.map(t=>{let i=t.customType??t.type,a=t.labelBlock,r=a&&e.showCommitLabel?d(a,"LR"===e.direction?t.x:t.x+14,t.y+U(a,e.direction)-.35*a.fontSize,"LR"===e.direction?"middle":"start"):void 0;if(r&&"LR"===e.direction&&e.rotateCommitLabel&&a){let i=R({x0:r.x,y0:r.y,x1:r.x+r.w,y1:r.y+r.h},{x:t.x,y:t.y+U(a,e.direction)},45);r=c({x:i.x0,y:i.y0,width:i.x1-i.x0,height:i.y1-i.y0})}return{id:t.id,x:m(t.x-10),y:m(t.y-10),w:m(20),h:m(20),shape:"CHERRY_PICK"===i?"diamond":"HIGHLIGHT"===i?"rectangle":"ellipse",label:t.message||t.id,labelVisibility:e.showCommitLabel?"visible":"hidden",labelBounds:r,labelContainer:c(s(e))}}),edges:e.edges.map((e,t)=>({id:`edge#${t}:${e.from}->${e.to}`,from:e.from,to:e.to,path:e.points.map(e=>[m(e.x),m(e.y)])})),groups:e.showBranches?e.branches.map(t=>{let i=e.commits.filter(e=>e.branch===t.name),a=Math.min(t.x1,t.x2,...i.map(e=>e.x-10)),r=Math.min(t.y1,t.y2,...i.map(e=>e.y-10)),n=Math.max(t.x1,t.x2,...i.map(e=>e.x+10)),o=Math.max(t.y1,t.y2,...i.map(e=>e.y+10));return{id:`branch:${t.name}`,x:m(a),y:m(r),w:h(a,Math.max(1,n-a)),h:h(r,Math.max(1,o-r)),members:i.map(e=>e.id),label:t.name}}):[],bounds:{w:m(e.width),h:m(e.height)}}}),lowerScene:g(ed)});export{ep as default};
@@ -1,6 +1,6 @@
1
- import{a as e,b as t}from"./chunk-5B2Z7575.js";import{c as i,e as o}from"./chunk-2SH76OTH.js";import{d as n}from"./chunk-AMJLVPUB.js";import"./chunk-DF6765YX.js";import"./chunk-J35HAQQF.js";import{a as a}from"./chunk-2UIA2IME.js";import{a as s,b as r,c as d}from"./chunk-CN7WTBWB.js";import{C as l,D as h,a as c,b as p,c as m,d as f,g as g,i as b}from"./chunk-HLWUNUCM.js";import{A as u,B as k,M as y,c as x,n as w,o as v,q as _,qa as M,y as S}from"./chunk-X2UYKWKM.js";import{r as W,u as j}from"./chunk-TYZOZXUJ.js";import{f as z,h as C,l as F,n as L,o as P}from"./chunk-NO7ZIVRU.js";import{Z as U}from"./chunk-Z3FDIVLN.js";import{P as E}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var I=Object.freeze({id:"ishikawa",upstreamId:"ishikawa",maturity:"stable",label:"Ishikawa",headers:["ishikawa","ishikawa-beta"],aliases:[],config:{section:"ishikawa",keys:["diagramPadding","useMaxWidth"],noopKeys:["useMaxWidth"]},identity:{id:"family:ishikawa",kind:"family",version:"1.0.0",compatibility:{core:"0.5.3"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:[],semanticRoles:["prelude","chrome","title","node","label","defs","edge","rail"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"rail",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`ishikawa
1
+ import{a as e,b as t}from"./chunk-A7V5VDKN.js";import{c as i,e as o}from"./chunk-XHU3A432.js";import{d as n}from"./chunk-5LKPDHPC.js";import"./chunk-V6I2VGNQ.js";import"./chunk-7UFOFWBA.js";import{a as a}from"./chunk-IUI4DYC3.js";import{a as s,b as r,c as d}from"./chunk-VRZKI33U.js";import{C as l,D as h,a as c,b as p,c as m,d as f,g as g,i as b}from"./chunk-QVSZOF5M.js";import{A as u,B as k,M as y,c as x,n as w,o as v,q as _,qa as M,y as S}from"./chunk-G4JBA7HU.js";import{r as W,u as j}from"./chunk-3JTYTXA6.js";import{f as z,h as P,l as C,n as F,o as I}from"./chunk-YVNJDVQO.js";import{_ as L}from"./chunk-EIYLJ4FI.js";import{P as E}from"./chunk-PJJSDGLB.js";import"./chunk-YHMTSXIR.js";import"./chunk-QCU5G5PZ.js";var O=Object.freeze({id:"ishikawa",upstreamId:"ishikawa",maturity:"stable",label:"Ishikawa",headers:["ishikawa","ishikawa-beta"],aliases:[],config:{section:"ishikawa",keys:["diagramPadding","useMaxWidth"],noopKeys:["useMaxWidth"]},identity:{id:"family:ishikawa",kind:"family",version:"1.0.0",compatibility:{core:"0.5.4"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:[],semanticRoles:["prelude","chrome","title","node","label","defs","edge","rail"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"rail",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`ishikawa
2
2
  Slow release
3
3
  Process
4
4
  Manual checks
5
5
  Tooling
6
- Slow builds`,detect:E,detectLoose:E}),B=W("ishikawa-arrow",{width:8,height:8},"end",{fill:"var(--_line)"},"userSpaceOnUse"),O=x(function(e,{positioned:t,colors:i,resolved:o}){let n=C(o.renderOptions,z,o.styleFace),s=M(i),r=n.edgeStrokeColor?{...B,paint:{...B.paint,fill:n.edgeStrokeColor}}:B,d=[];d.push(e.definitions({id:"defs",markerResources:[r]},`<defs>${j([r])}</defs>`)),t.title&&d.push(e.text(P(t.title,n)));let l=t.nodes.find(e=>0===e.depth);for(let i of(t.spine.length&&d.push(e.connector({id:"spine",role:"rail",geometry:{kind:"polyline",points:t.spine},lineStyle:"solid",paint:{stroke:n.edgeStrokeColor??"var(--_line)",strokeWidth:String(n.lineWidth)},...l?{endpoints:{to:l.node.id,end:{owner:{id:l.node.id,role:"node"},point:t.spine.at(-1)}}}:{},relationship:{kind:"effect-spine",direction:"forward"},markers:{end:r}})),t.branches))d.push(e.connector({id:i.id,role:"edge",geometry:{kind:"polyline",points:i.points},lineStyle:"solid",paint:{stroke:n.edgeStrokeColor??"var(--_line)",strokeWidth:String(n.lineWidth)},endpoints:{from:i.from,to:i.to},relationship:{kind:"cause",direction:"forward"}}));for(let i of t.nodes){let t={id:i.node.id,role:"node"},o=[],a=n.nodeFillColor??"var(--_node-fill)",r=n.nodeTextColor??(i.depth<=1?s("var(--_text)",a):"var(--_text)");i.depth<=1&&o.push(e.shape({id:`box:${i.node.id}`,role:"node",identity:!1,owner:t,geometry:{kind:"rect",x:i.x,y:i.y,width:i.width,height:i.height,rx:n.cornerRadius??(0===i.depth?8:3)},paint:{fill:n.nodeFillColor??"var(--_node-fill)",stroke:n.nodeBorderColor??"var(--_node-stroke)",strokeWidth:String(n.nodeLineWidth)}})),o.push(e.text({id:`label:${i.node.id}`,role:"label",owner:t,text:i.block.text,block:i.block,x:i.x+i.width/2,y:i.y+i.height/2,fontSize:i.block.fontSize,fontWeight:i.block.fontWeight,anchor:"middle",paint:{fill:r}})),d.push(e.group({id:i.node.id,role:"node",open:"<g>",close:"</g>",children:o.map(e=>({node:e,indent:2}))}))}return a(e,"ishikawa",t,i,o.renderOptions.transparent??!1,d)}),T=f(I,{configDiagnostics:e=>n("ishikawa",e,{diagramPadding:i,useMaxWidth:o}),layout:i=>{let o=i.source.config.ishikawa;return m(function(i,o={},n,a,s=24){t(i.nodes);let r=C(o,z,n),d=n?.node?.paddingX??12,l=n?.node?.paddingY??8,h=n?.node?.paddingX??16,c=n?.node?.paddingY??12,p=e(i.nodes),m=(e,t=!1)=>U(e,{fontSize:r.nodeLabelFontSize,fontWeight:t&&n?.node?.fontWeight===void 0&&n?.text?.fontWeight===void 0?Math.max(600,r.nodeLabelFontWeight):r.nodeLabelFontWeight,letterSpacing:r.nodeLetterSpacing,transform:r.nodeTextTransform,maxWidth:220}),f=F(a,r),g=i.nodes[0];if(!g)return{width:Math.max(100,(f?.width??0)+2*s),height:80+(f?.height??0),body:i,nodes:[],branches:[],spine:[],options:o,...f?{title:L(f,Math.max(100,f.width+2*s),s)}:{}};let b=(p.get(g.id)??[]).map((e,t)=>((e,t)=>{let i=m(e.label,!0),o=[],n=[],a=[],s=(e,i,o)=>{for(let n=e.length-1;n>=0;n--)a.push({node:e[t?e.length-1-n:n],depth:i,parent:o,slot:n,bone:-1})};for(s(p.get(e.id)??[],2,-1);a.length;){let e=a.pop();if(-1!==e.bone){n.push(e.bone);continue}let t=o.length,i=p.get(e.node.id)??[];o.push({node:e.node,block:m(e.node.label),depth:e.depth,parent:e.parent,slot:e.slot,kids:i.length,rise:0,at:0,textEnd:0}),e.depth%2==0?n.push(t):a.push({...e,bone:t}),s(i,e.depth+1,t)}let r=16;for(let e of n){let t=o[e].block.height+14;o[e].rise=r+t/2,r+=t}let h=(i.width+2*d)/2;for(let e of o){let t=e.parent<0?void 0:o[e.parent];e.depth%2==0?(e.at=t?.at??0,e.textEnd=e.at-(e.kids?(e.kids+1)*24:20)-6):(e.at=t.at-(t.kids-e.slot)*24,e.textEnd=e.at-6),h=Math.max(h,e.block.width-e.textEnd)}return{node:e,block:i,width:i.width+2*d,height:i.height+2*l,bones:o,rise:Math.max(64,r+12),reach:h}})(e,t%2==0)),u=m(g.label,!0),k=u.width+2*h,y=Math.max(52,u.height+2*c),x=[{node:g,block:u,x:0,y:-y/2,width:k,height:y,depth:0}],w=[],v=-40,_=k,M=-y/2,S=y/2,W=-40,j=[];for(let e=0;e<b.length;e+=2){if(e>0){let t=0;for(let i=0;i<2;i++){let o=b[e-2+i],n=b[e+i];o&&(t=Math.max(t,o.reach+(n?.width??0)/2+Math.abs((n?.rise??0)-o.rise)/2))}W-=t+32}j.push(W,W)}let P=(e,t,i,o,n,a,s)=>{x.push({node:e,block:t,x:i,y:o,width:n,height:a,depth:s}),v=Math.min(v,i),_=Math.max(_,i+n),M=Math.min(M,o),S=Math.max(S,o+a)};b.forEach((e,t)=>{let i=t%2==0?-1:1,o=j[t],n=(e,t)=>o+e-t/2,a=n(0,e.rise),s=i*e.rise;for(let t of(P(e.node,e.block,a-e.width/2,s+(i<0?-e.height:0),e.width,e.height,1),w.push({id:`branch:${e.node.id}`,from:e.node.id,to:g.id,points:[{x:a,y:s},{x:o,y:0}]}),e.bones)){let o=i*t.rise,a=n(t.textEnd,t.rise);P(t.node,t.block,a-t.block.width,o-t.block.height/2,t.block.width,t.block.height,t.depth);let s=t.depth%2==0?[{x:a+6,y:o},{x:n(t.at,t.rise),y:o}]:[{x:n(t.at,t.rise),y:o},{x:n(t.at,e.bones[t.parent].rise),y:i*e.bones[t.parent].rise}];w.push({id:`branch:${t.node.id}`,from:t.node.id,to:t.node.parentId,points:s})}});let E=Math.min(v-28,W-28),I=Math.max(_-(v=Math.min(v,E)),f?.width??0),B=Math.ceil(I+2*s),O=Math.ceil(S-M+(f?.height??0)+2*s),T=s-v+(I-(_-v))/2,$=s-M+(f?.height??0);for(let e of x)e.x+=T,e.y+=$;for(let e of w)for(let t of e.points)t.x+=T,t.y+=$;return{width:B,height:O,body:i,nodes:x,branches:w,spine:[{x:E+T,y:$},{x:T,y:$}],options:o,...f?{title:L(f,B,s)}:{}}}(function(e){let t,i=S("string"==typeof e?e.split(/\r?\n/):e);u(i);let o=i.familyLines,n=o.findIndex(e=>e.trim()&&!e.trim().startsWith("%%"));if(t=o[n]??"",!/^ishikawa(?:-beta)?\s*(?:%%.*)?$/i.test(t.trim()))throw Error("Ishikawa source must start with ishikawa");let a={kind:"ishikawa",nodes:[],...k(_(i.accessibility))},s=[],r;for(let e=n+1;e<o.length;e++){let t=o[e],i=t.trim();if(!i||i.startsWith("%%"))continue;let n=v(w(i));g("ishikawa","node",t,{line:e+1,unit:"normalized"}),y("nodes",a.nodes.length+1);let d=t.match(/^[\t ]*/)?.[0].length??0;if(0===a.nodes.length){let e={id:"effect",label:n};a.nodes.push(e),b("ishikawa","add-node",e),s.push({level:0,node:e});continue}r??=d;let l=Math.max(1,d-r+1);for(;s.length>1&&s.at(-1).level>=l;)s.pop();y("nesting",s.length);let h={id:`cause-${a.nodes.length}`,label:n,parentId:s.at(-1).node.id};a.nodes.push(h),s.push({level:l,node:h}),b("ishikawa","add-node",h)}return a}(i.source.authoredFamilyBody??i.source.familyBody),i.renderOptions,i.styleFace,"string"==typeof i.source.frontmatter.title?i.source.frontmatter.title:void 0,"number"==typeof o?.diagramPadding&&Number.isFinite(o.diagramPadding)&&o.diagramPadding>=0?o.diagramPadding:void 0))},projectPositioned:c(function({positioned:e}){return{version:1,bounds:{w:d(e.width),h:d(e.height)},nodes:e.nodes.map(e=>({id:e.node.id,x:d(e.x),y:d(e.y),w:d(e.width),h:d(e.height),shape:"rectangle",label:e.node.label,role:e.depth<=1?"box":"labelled-mark",...h(e.block,e.x+e.width/2,e.y+e.height/2,e)})),edges:e.branches.map(e=>({id:e.id,from:e.from,to:e.to,path:e.points.map(e=>[d(e.x),d(e.y)])})),groups:[],labels:e.title?[{id:"title",text:e.title.text,bounds:l(e.title.block,e.title.x,e.title.y),container:r(s(e))}]:[]}}),lowerScene:p(O)});export{T as default};
6
+ Slow builds`,detect:E,detectLoose:E}),V=W("ishikawa-arrow",{width:8,height:8},"end",{fill:"var(--_line)"},"userSpaceOnUse"),B=x(function(e,{positioned:t,colors:i,resolved:o}){let n=P(o.renderOptions,z,o.styleFace),s=M(i),r=n.edgeStrokeColor?{...V,paint:{...V.paint,fill:n.edgeStrokeColor}}:V,d=[];d.push(e.definitions({id:"defs",markerResources:[r]},`<defs>${j([r])}</defs>`)),t.title&&d.push(e.text(I(t.title,n)));let l=t.nodes.find(e=>0===e.depth);for(let i of(t.spine.length&&d.push(e.connector({id:"spine",role:"rail",geometry:{kind:"polyline",points:t.spine},lineStyle:"solid",paint:{stroke:n.edgeStrokeColor??"var(--_line)",strokeWidth:String(n.lineWidth)},...l?{endpoints:{to:l.node.id,end:{owner:{id:l.node.id,role:"node"},point:t.spine.at(-1)}}}:{},relationship:{kind:"effect-spine",direction:"forward"},markers:{end:r}})),t.branches))d.push(e.connector({id:i.id,role:"edge",geometry:{kind:"polyline",points:i.points},lineStyle:"solid",paint:{stroke:n.edgeStrokeColor??"var(--_line)",strokeWidth:String(n.lineWidth)},endpoints:{from:i.from,to:i.to},relationship:{kind:"cause",direction:"forward"}}));for(let i of t.nodes){let t={id:i.node.id,role:"node"},o=[],a=n.nodeFillColor??"var(--_node-fill)",r=n.nodeTextColor??(i.depth<=1?s("var(--_text)",a):"var(--_text)");i.depth<=1&&o.push(e.shape({id:`box:${i.node.id}`,role:"node",identity:!1,owner:t,geometry:{kind:"rect",x:i.x,y:i.y,width:i.width,height:i.height,rx:n.cornerRadius??(0===i.depth?8:3)},paint:{fill:n.nodeFillColor??"var(--_node-fill)",stroke:n.nodeBorderColor??"var(--_node-stroke)",strokeWidth:String(n.nodeLineWidth)}})),o.push(e.text({id:`label:${i.node.id}`,role:"label",owner:t,text:i.block.text,block:i.block,x:i.x+i.width/2,y:i.y+i.height/2,fontSize:i.block.fontSize,fontWeight:i.block.fontWeight,anchor:"middle",paint:{fill:r}})),d.push(e.group({id:i.node.id,role:"node",open:"<g>",close:"</g>",children:o.map(e=>({node:e,indent:2}))}))}return a(e,"ishikawa",t,i,o.renderOptions.transparent??!1,d)}),D=f(O,{configDiagnostics:e=>n("ishikawa",e,{diagramPadding:i,useMaxWidth:o}),layout:i=>{let o=i.source.config.ishikawa;return m(function(i,o={},n,a,s=24){t(i.nodes);let r=P(o,z,n),d=n?.node?.paddingX??12,l=n?.node?.paddingY??8,h=n?.node?.paddingX??16,c=n?.node?.paddingY??12,p=e(i.nodes),m=(e,t=!1)=>L(e,{fontSize:r.nodeLabelFontSize,fontWeight:t&&n?.node?.fontWeight===void 0&&n?.text?.fontWeight===void 0?Math.max(600,r.nodeLabelFontWeight):r.nodeLabelFontWeight,letterSpacing:r.nodeLetterSpacing,transform:r.nodeTextTransform,maxWidth:220}),f=C(a,r),g=i.nodes[0];if(!g)return{width:Math.max(100,(f?.width??0)+2*s),height:80+(f?.height??0),body:i,nodes:[],branches:[],spine:[],options:o,...f?{title:F(f,Math.max(100,f.width+2*s),s)}:{}};let b=(p.get(g.id)??[]).map((e,t)=>((e,t)=>{let i=m(e.label,!0),o=[],n=[],a=[],s=(e,i,o)=>{for(let n=e.length-1;n>=0;n--)a.push({node:e[t?e.length-1-n:n],depth:i,parent:o,slot:n,bone:-1})};for(s(p.get(e.id)??[],2,-1);a.length;){let e=a.pop();if(-1!==e.bone){n.push(e.bone);continue}let t=o.length,i=p.get(e.node.id)??[];o.push({node:e.node,block:m(e.node.label),depth:e.depth,parent:e.parent,slot:e.slot,kids:i.length,rise:0,at:0,textEnd:0}),e.depth%2==0?n.push(t):a.push({...e,bone:t}),s(i,e.depth+1,t)}let r=16;for(let e of n){let t=o[e].block.height+14;o[e].rise=r+t/2,r+=t}let h=(i.width+2*d)/2;for(let e of o){let t=e.parent<0?void 0:o[e.parent];e.depth%2==0?(e.at=t?.at??0,e.textEnd=e.at-(e.kids?(e.kids+1)*24:20)-6):(e.at=t.at-(t.kids-e.slot)*24,e.textEnd=e.at-6),h=Math.max(h,e.block.width-e.textEnd)}return{node:e,block:i,width:i.width+2*d,height:i.height+2*l,bones:o,rise:Math.max(64,r+12),reach:h}})(e,t%2==0)),u=m(g.label,!0),k=u.width+2*h,y=Math.max(52,u.height+2*c),x=[{node:g,block:u,x:0,y:-y/2,width:k,height:y,depth:0}],w=[],v=-40,_=k,M=-y/2,S=y/2,W=-40,j=[];for(let e=0;e<b.length;e+=2){if(e>0){let t=0;for(let i=0;i<2;i++){let o=b[e-2+i],n=b[e+i];o&&(t=Math.max(t,o.reach+(n?.width??0)/2+Math.abs((n?.rise??0)-o.rise)/2))}W-=t+32}j.push(W,W)}let I=(e,t,i,o,n,a,s)=>{x.push({node:e,block:t,x:i,y:o,width:n,height:a,depth:s}),v=Math.min(v,i),_=Math.max(_,i+n),M=Math.min(M,o),S=Math.max(S,o+a)};b.forEach((e,t)=>{let i=t%2==0?-1:1,o=j[t],n=(e,t)=>o+e-t/2,a=n(0,e.rise),s=i*e.rise;for(let t of(I(e.node,e.block,a-e.width/2,s+(i<0?-e.height:0),e.width,e.height,1),w.push({id:`branch:${e.node.id}`,from:e.node.id,to:g.id,points:[{x:a,y:s},{x:o,y:0}]}),e.bones)){let o=i*t.rise,a=n(t.textEnd,t.rise);I(t.node,t.block,a-t.block.width,o-t.block.height/2,t.block.width,t.block.height,t.depth);let s=t.depth%2==0?[{x:a+6,y:o},{x:n(t.at,t.rise),y:o}]:[{x:n(t.at,t.rise),y:o},{x:n(t.at,e.bones[t.parent].rise),y:i*e.bones[t.parent].rise}];w.push({id:`branch:${t.node.id}`,from:t.node.id,to:t.node.parentId,points:s})}});let E=Math.min(v-28,W-28),O=Math.max(_-(v=Math.min(v,E)),f?.width??0),V=Math.ceil(O+2*s),B=Math.ceil(S-M+(f?.height??0)+2*s),D=s-v+(O-(_-v))/2,T=s-M+(f?.height??0);for(let e of x)e.x+=D,e.y+=T;for(let e of w)for(let t of e.points)t.x+=D,t.y+=T;return{width:V,height:B,body:i,nodes:x,branches:w,spine:[{x:E+D,y:T},{x:D,y:T}],options:o,...f?{title:F(f,V,s)}:{}}}(function(e){let t,i=S("string"==typeof e?e.split(/\r?\n/):e);u(i);let o=i.familyLines,n=o.findIndex(e=>e.trim()&&!e.trim().startsWith("%%"));if(t=o[n]??"",!/^ishikawa(?:-beta)?\s*(?:%%.*)?$/i.test(t.trim()))throw Error("Ishikawa source must start with ishikawa");let a={kind:"ishikawa",nodes:[],...k(_(i.accessibility))},s=[],r;for(let e=n+1;e<o.length;e++){let t=o[e],i=t.trim();if(!i||i.startsWith("%%"))continue;let n=v(w(i));g("ishikawa","node",t,{line:e+1,unit:"normalized"}),y("nodes",a.nodes.length+1);let d=t.match(/^[\t ]*/)?.[0].length??0;if(0===a.nodes.length){let e={id:"effect",label:n};a.nodes.push(e),b("ishikawa","add-node",e),s.push({level:0,node:e});continue}r??=d;let l=Math.max(1,d-r+1);for(;s.length>1&&s.at(-1).level>=l;)s.pop();y("nesting",s.length);let h={id:`cause-${a.nodes.length}`,label:n,parentId:s.at(-1).node.id};a.nodes.push(h),s.push({level:l,node:h}),b("ishikawa","add-node",h)}return a}(i.source.authoredFamilyBody??i.source.familyBody),i.renderOptions,i.styleFace,"string"==typeof i.source.frontmatter.title?i.source.frontmatter.title:void 0,"number"==typeof o?.diagramPadding&&Number.isFinite(o.diagramPadding)&&o.diagramPadding>=0?o.diagramPadding:void 0))},projectPositioned:c(function({positioned:e}){return{version:1,bounds:{w:d(e.width),h:d(e.height)},nodes:e.nodes.map(e=>({id:e.node.id,x:d(e.x),y:d(e.y),w:d(e.width),h:d(e.height),shape:"rectangle",label:e.node.label,role:e.depth<=1?"box":"labelled-mark",...h(e.block,e.x+e.width/2,e.y+e.height/2,e)})),edges:e.branches.map(e=>({id:e.id,from:e.from,to:e.to,path:e.points.map(e=>[d(e.x),d(e.y)])})),groups:[],labels:e.title?[{id:"title",text:e.title.text,bounds:l(e.title.block,e.title.x,e.title.y),container:r(s(e))}]:[]}}),lowerScene:p(B)});export{D as default};