@aiquants/markdown 1.6.1 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/dist/{abnfDiagram-VRR7QNED-DVICL1SS.cjs → abnfDiagram-VRR7QNED-BKvRUGcR.cjs} +2 -2
  2. package/dist/{abnfDiagram-VRR7QNED-DVICL1SS.cjs.map → abnfDiagram-VRR7QNED-BKvRUGcR.cjs.map} +1 -1
  3. package/dist/{abnfDiagram-VRR7QNED-RZnm_ZZC.js → abnfDiagram-VRR7QNED-C-27Yna6.js} +4 -4
  4. package/dist/{abnfDiagram-VRR7QNED-RZnm_ZZC.js.map → abnfDiagram-VRR7QNED-C-27Yna6.js.map} +1 -1
  5. package/dist/{arc-BmnitkkN.cjs → arc-CUOoCqkh.cjs} +2 -2
  6. package/dist/{arc-BmnitkkN.cjs.map → arc-CUOoCqkh.cjs.map} +1 -1
  7. package/dist/{arc-C-DBDbuo.js → arc-UxDDNW0x.js} +2 -2
  8. package/dist/{arc-C-DBDbuo.js.map → arc-UxDDNW0x.js.map} +1 -1
  9. package/dist/{architectureDiagram-ZJ3FMSHR-_FBgGrSC.js → architectureDiagram-ZJ3FMSHR-Ch5Nf0Ae.js} +3 -3
  10. package/dist/{architectureDiagram-ZJ3FMSHR-_FBgGrSC.js.map → architectureDiagram-ZJ3FMSHR-Ch5Nf0Ae.js.map} +1 -1
  11. package/dist/{architectureDiagram-ZJ3FMSHR-CCAJeMnU.cjs → architectureDiagram-ZJ3FMSHR-kO8dZQKK.cjs} +2 -2
  12. package/dist/{architectureDiagram-ZJ3FMSHR-CCAJeMnU.cjs.map → architectureDiagram-ZJ3FMSHR-kO8dZQKK.cjs.map} +1 -1
  13. package/dist/{blockDiagram-677ZJIJ3-W3Ryiu2c.cjs → blockDiagram-677ZJIJ3-BbjxBeAD.cjs} +2 -2
  14. package/dist/{blockDiagram-677ZJIJ3-W3Ryiu2c.cjs.map → blockDiagram-677ZJIJ3-BbjxBeAD.cjs.map} +1 -1
  15. package/dist/{blockDiagram-677ZJIJ3-CLkOcrVQ.js → blockDiagram-677ZJIJ3-CuCBVVNa.js} +4 -4
  16. package/dist/{blockDiagram-677ZJIJ3-CLkOcrVQ.js.map → blockDiagram-677ZJIJ3-CuCBVVNa.js.map} +1 -1
  17. package/dist/{c4Diagram-LMCZKHZV-FhSkJ7-q.js → c4Diagram-LMCZKHZV-BdJV5ivG.js} +3 -3
  18. package/dist/{c4Diagram-LMCZKHZV-FhSkJ7-q.js.map → c4Diagram-LMCZKHZV-BdJV5ivG.js.map} +1 -1
  19. package/dist/{c4Diagram-LMCZKHZV-B--cDHXw.cjs → c4Diagram-LMCZKHZV-BgTfc_W8.cjs} +2 -2
  20. package/dist/{c4Diagram-LMCZKHZV-B--cDHXw.cjs.map → c4Diagram-LMCZKHZV-BgTfc_W8.cjs.map} +1 -1
  21. package/dist/channel-BaZK7NhX.js +6 -0
  22. package/dist/{channel-B6gYWXtQ.js.map → channel-BaZK7NhX.js.map} +1 -1
  23. package/dist/channel-DcZBUEY6.cjs +2 -0
  24. package/dist/{channel-CZceKK2b.cjs.map → channel-DcZBUEY6.cjs.map} +1 -1
  25. package/dist/{chunk-2Q5K7J3B-CLA9LZQs.js → chunk-2Q5K7J3B-CSlHTmMh.js} +2 -2
  26. package/dist/{chunk-2Q5K7J3B-CLA9LZQs.js.map → chunk-2Q5K7J3B-CSlHTmMh.js.map} +1 -1
  27. package/dist/{chunk-2Q5K7J3B-UoZ4tiIj.cjs → chunk-2Q5K7J3B-D9s6eCoM.cjs} +2 -2
  28. package/dist/{chunk-2Q5K7J3B-UoZ4tiIj.cjs.map → chunk-2Q5K7J3B-D9s6eCoM.cjs.map} +1 -1
  29. package/dist/{chunk-32BRIVSS-CrDpazxa.js → chunk-32BRIVSS-CXH5EQUk.js} +2 -2
  30. package/dist/{chunk-32BRIVSS-CrDpazxa.js.map → chunk-32BRIVSS-CXH5EQUk.js.map} +1 -1
  31. package/dist/{chunk-32BRIVSS-CyUS1-2x.cjs → chunk-32BRIVSS-D2F2B9TZ.cjs} +2 -2
  32. package/dist/{chunk-32BRIVSS-CyUS1-2x.cjs.map → chunk-32BRIVSS-D2F2B9TZ.cjs.map} +1 -1
  33. package/dist/{chunk-5VM5RSS4-DnTlok-Z.js → chunk-5VM5RSS4-BhTMtA9l.js} +2 -2
  34. package/dist/{chunk-5VM5RSS4-DnTlok-Z.js.map → chunk-5VM5RSS4-BhTMtA9l.js.map} +1 -1
  35. package/dist/{chunk-5VM5RSS4-DCM2evxn.cjs → chunk-5VM5RSS4-CxjaLXsB.cjs} +2 -2
  36. package/dist/{chunk-5VM5RSS4-DCM2evxn.cjs.map → chunk-5VM5RSS4-CxjaLXsB.cjs.map} +1 -1
  37. package/dist/{chunk-EX3LRPZG-CDcYLfTb.cjs → chunk-EX3LRPZG-BCQ_eMbL.cjs} +2 -2
  38. package/dist/{chunk-EX3LRPZG-CDcYLfTb.cjs.map → chunk-EX3LRPZG-BCQ_eMbL.cjs.map} +1 -1
  39. package/dist/{chunk-EX3LRPZG-BXZN3BP6.js → chunk-EX3LRPZG-BOcBE4jP.js} +5 -5
  40. package/dist/{chunk-EX3LRPZG-BXZN3BP6.js.map → chunk-EX3LRPZG-BOcBE4jP.js.map} +1 -1
  41. package/dist/{chunk-JWPE2WC7-BOZsBb5v.js → chunk-JWPE2WC7-C20BXRVN.js} +2 -2
  42. package/dist/{chunk-JWPE2WC7-BOZsBb5v.js.map → chunk-JWPE2WC7-C20BXRVN.js.map} +1 -1
  43. package/dist/{chunk-JWPE2WC7-u2Y2E01t.cjs → chunk-JWPE2WC7-CLCAyxUO.cjs} +2 -2
  44. package/dist/{chunk-JWPE2WC7-u2Y2E01t.cjs.map → chunk-JWPE2WC7-CLCAyxUO.cjs.map} +1 -1
  45. package/dist/{chunk-MOJQB5TN-CODLoYka.js → chunk-MOJQB5TN-B_C5dwTy.js} +2 -2
  46. package/dist/{chunk-MOJQB5TN-CODLoYka.js.map → chunk-MOJQB5TN-B_C5dwTy.js.map} +1 -1
  47. package/dist/{chunk-MOJQB5TN-D9XmnzfN.cjs → chunk-MOJQB5TN-Bbpbi357.cjs} +2 -2
  48. package/dist/{chunk-MOJQB5TN-D9XmnzfN.cjs.map → chunk-MOJQB5TN-Bbpbi357.cjs.map} +1 -1
  49. package/dist/{chunk-PUDLZKDR-Vzafz0p_.js → chunk-PUDLZKDR-C0EKSRvH.js} +7 -7
  50. package/dist/{chunk-PUDLZKDR-Vzafz0p_.js.map → chunk-PUDLZKDR-C0EKSRvH.js.map} +1 -1
  51. package/dist/{chunk-PUDLZKDR-DIlJh7gW.cjs → chunk-PUDLZKDR-Cpp-nasK.cjs} +2 -2
  52. package/dist/{chunk-PUDLZKDR-DIlJh7gW.cjs.map → chunk-PUDLZKDR-Cpp-nasK.cjs.map} +1 -1
  53. package/dist/{chunk-RYQCIY6F-D7RgZ_ri.js → chunk-RYQCIY6F-BuIkG6A2.js} +2 -2
  54. package/dist/{chunk-RYQCIY6F-D7RgZ_ri.js.map → chunk-RYQCIY6F-BuIkG6A2.js.map} +1 -1
  55. package/dist/{chunk-RYQCIY6F-BgbNR_-2.cjs → chunk-RYQCIY6F-he5fUSYo.cjs} +2 -2
  56. package/dist/{chunk-RYQCIY6F-BgbNR_-2.cjs.map → chunk-RYQCIY6F-he5fUSYo.cjs.map} +1 -1
  57. package/dist/{chunk-V7JOEXUC-BtRbpCVo.cjs → chunk-V7JOEXUC-BcBXzffo.cjs} +2 -2
  58. package/dist/{chunk-V7JOEXUC-BtRbpCVo.cjs.map → chunk-V7JOEXUC-BcBXzffo.cjs.map} +1 -1
  59. package/dist/{chunk-V7JOEXUC-Csiot9oO.js → chunk-V7JOEXUC-DWnZRQBl.js} +6 -6
  60. package/dist/{chunk-V7JOEXUC-Csiot9oO.js.map → chunk-V7JOEXUC-DWnZRQBl.js.map} +1 -1
  61. package/dist/{chunk-VR4S4FIN-DH6f42Mu.js → chunk-VR4S4FIN-BWCLM0a0.js} +2 -2
  62. package/dist/{chunk-VR4S4FIN-DH6f42Mu.js.map → chunk-VR4S4FIN-BWCLM0a0.js.map} +1 -1
  63. package/dist/{chunk-VR4S4FIN-y0SDmoh2.cjs → chunk-VR4S4FIN-Bd3wwAe8.cjs} +2 -2
  64. package/dist/{chunk-VR4S4FIN-y0SDmoh2.cjs.map → chunk-VR4S4FIN-Bd3wwAe8.cjs.map} +1 -1
  65. package/dist/{chunk-XXDRQBXY-rC42S5QT.cjs → chunk-XXDRQBXY-C2UaLfce.cjs} +2 -2
  66. package/dist/{chunk-XXDRQBXY-rC42S5QT.cjs.map → chunk-XXDRQBXY-C2UaLfce.cjs.map} +1 -1
  67. package/dist/{chunk-XXDRQBXY-Csac6tCf.js → chunk-XXDRQBXY-qt9x9red.js} +2 -2
  68. package/dist/{chunk-XXDRQBXY-Csac6tCf.js.map → chunk-XXDRQBXY-qt9x9red.js.map} +1 -1
  69. package/dist/{classDiagram-OUVF2IWQ-Dd9EcDqY.js → classDiagram-OUVF2IWQ-B0lJPbAq.js} +3 -3
  70. package/dist/{classDiagram-OUVF2IWQ-Dd9EcDqY.js.map → classDiagram-OUVF2IWQ-B0lJPbAq.js.map} +1 -1
  71. package/dist/{classDiagram-OUVF2IWQ-Vq3KKBUy.cjs → classDiagram-OUVF2IWQ-BoGCNSIO.cjs} +2 -2
  72. package/dist/{classDiagram-OUVF2IWQ-Vq3KKBUy.cjs.map → classDiagram-OUVF2IWQ-BoGCNSIO.cjs.map} +1 -1
  73. package/dist/{classDiagram-v2-EOCWNBFH-Dd9EcDqY.js → classDiagram-v2-EOCWNBFH-B0lJPbAq.js} +3 -3
  74. package/dist/{classDiagram-v2-EOCWNBFH-Dd9EcDqY.js.map → classDiagram-v2-EOCWNBFH-B0lJPbAq.js.map} +1 -1
  75. package/dist/{classDiagram-v2-EOCWNBFH-Vq3KKBUy.cjs → classDiagram-v2-EOCWNBFH-BoGCNSIO.cjs} +2 -2
  76. package/dist/{classDiagram-v2-EOCWNBFH-Vq3KKBUy.cjs.map → classDiagram-v2-EOCWNBFH-BoGCNSIO.cjs.map} +1 -1
  77. package/dist/{cose-bilkent-JH36ORCC-BAYFBSur.js → cose-bilkent-JH36ORCC-BXH9dl_0.js} +2 -2
  78. package/dist/{cose-bilkent-JH36ORCC-BAYFBSur.js.map → cose-bilkent-JH36ORCC-BXH9dl_0.js.map} +1 -1
  79. package/dist/{cose-bilkent-JH36ORCC-CsHaaKi1.cjs → cose-bilkent-JH36ORCC-DRBzHIcA.cjs} +2 -2
  80. package/dist/{cose-bilkent-JH36ORCC-CsHaaKi1.cjs.map → cose-bilkent-JH36ORCC-DRBzHIcA.cjs.map} +1 -1
  81. package/dist/{cynefinDiagram-TSTJHNR4-CSZqIj_l.js → cynefinDiagram-TSTJHNR4-2jnqksgG.js} +3 -3
  82. package/dist/{cynefinDiagram-TSTJHNR4-CSZqIj_l.js.map → cynefinDiagram-TSTJHNR4-2jnqksgG.js.map} +1 -1
  83. package/dist/{cynefinDiagram-TSTJHNR4-BEPBV57_.cjs → cynefinDiagram-TSTJHNR4-Ge9B88rS.cjs} +2 -2
  84. package/dist/{cynefinDiagram-TSTJHNR4-BEPBV57_.cjs.map → cynefinDiagram-TSTJHNR4-Ge9B88rS.cjs.map} +1 -1
  85. package/dist/{dagre-VKFMJZFB-D9fBL_yM.js → dagre-VKFMJZFB-BqLynzOx.js} +3 -3
  86. package/dist/{dagre-VKFMJZFB-D9fBL_yM.js.map → dagre-VKFMJZFB-BqLynzOx.js.map} +1 -1
  87. package/dist/{dagre-VKFMJZFB-BlRE-U3S.cjs → dagre-VKFMJZFB-C7QheUvc.cjs} +2 -2
  88. package/dist/{dagre-VKFMJZFB-BlRE-U3S.cjs.map → dagre-VKFMJZFB-C7QheUvc.cjs.map} +1 -1
  89. package/dist/{diagram-FQU43EPY-Di26xB9f.cjs → diagram-FQU43EPY-CSPyECaU.cjs} +2 -2
  90. package/dist/{diagram-FQU43EPY-Di26xB9f.cjs.map → diagram-FQU43EPY-CSPyECaU.cjs.map} +1 -1
  91. package/dist/{diagram-FQU43EPY-DPR8KMs9.js → diagram-FQU43EPY-DUwsAw4u.js} +3 -3
  92. package/dist/{diagram-FQU43EPY-DPR8KMs9.js.map → diagram-FQU43EPY-DUwsAw4u.js.map} +1 -1
  93. package/dist/{diagram-G47NLZAW-71hjWkYs.cjs → diagram-G47NLZAW-BaP0Lyg0.cjs} +2 -2
  94. package/dist/{diagram-G47NLZAW-71hjWkYs.cjs.map → diagram-G47NLZAW-BaP0Lyg0.cjs.map} +1 -1
  95. package/dist/{diagram-G47NLZAW-BfL1Ut0H.js → diagram-G47NLZAW-h09HILJg.js} +4 -4
  96. package/dist/{diagram-G47NLZAW-BfL1Ut0H.js.map → diagram-G47NLZAW-h09HILJg.js.map} +1 -1
  97. package/dist/{diagram-NH7WQ7WH-BjJctDxT.js → diagram-NH7WQ7WH-BE3XRcGY.js} +3 -3
  98. package/dist/{diagram-NH7WQ7WH-BjJctDxT.js.map → diagram-NH7WQ7WH-BE3XRcGY.js.map} +1 -1
  99. package/dist/{diagram-NH7WQ7WH-B4uTamuE.cjs → diagram-NH7WQ7WH-DyJw7-Gl.cjs} +2 -2
  100. package/dist/{diagram-NH7WQ7WH-B4uTamuE.cjs.map → diagram-NH7WQ7WH-DyJw7-Gl.cjs.map} +1 -1
  101. package/dist/{diagram-OA4YK3LP-BoFOwiXF.js → diagram-OA4YK3LP-BfAM9MZv.js} +4 -4
  102. package/dist/{diagram-OA4YK3LP-BoFOwiXF.js.map → diagram-OA4YK3LP-BfAM9MZv.js.map} +1 -1
  103. package/dist/{diagram-OA4YK3LP-C1ORbLEL.cjs → diagram-OA4YK3LP-DqYpt5F6.cjs} +2 -2
  104. package/dist/{diagram-OA4YK3LP-C1ORbLEL.cjs.map → diagram-OA4YK3LP-DqYpt5F6.cjs.map} +1 -1
  105. package/dist/{diagram-WEI45ONY-COXEDGCZ.js → diagram-WEI45ONY-DtFOpBM4.js} +3 -3
  106. package/dist/{diagram-WEI45ONY-COXEDGCZ.js.map → diagram-WEI45ONY-DtFOpBM4.js.map} +1 -1
  107. package/dist/{diagram-WEI45ONY-BzuHWp9D.cjs → diagram-WEI45ONY-fz5dqgqy.cjs} +2 -2
  108. package/dist/{diagram-WEI45ONY-BzuHWp9D.cjs.map → diagram-WEI45ONY-fz5dqgqy.cjs.map} +1 -1
  109. package/dist/{ebnfDiagram-CCIWWBDH-N0w7QwtK.js → ebnfDiagram-CCIWWBDH-CyKVhKIb.js} +4 -4
  110. package/dist/{ebnfDiagram-CCIWWBDH-N0w7QwtK.js.map → ebnfDiagram-CCIWWBDH-CyKVhKIb.js.map} +1 -1
  111. package/dist/{ebnfDiagram-CCIWWBDH-DE7OPvSn.cjs → ebnfDiagram-CCIWWBDH-Haez4su4.cjs} +2 -2
  112. package/dist/{ebnfDiagram-CCIWWBDH-DE7OPvSn.cjs.map → ebnfDiagram-CCIWWBDH-Haez4su4.cjs.map} +1 -1
  113. package/dist/{erDiagram-Q63AITRT-CqsM_S0E.js → erDiagram-Q63AITRT-9hM3kPUW.js} +5 -5
  114. package/dist/{erDiagram-Q63AITRT-CqsM_S0E.js.map → erDiagram-Q63AITRT-9hM3kPUW.js.map} +1 -1
  115. package/dist/{erDiagram-Q63AITRT-KvBvwG4T.cjs → erDiagram-Q63AITRT-BGEWGa_b.cjs} +2 -2
  116. package/dist/{erDiagram-Q63AITRT-KvBvwG4T.cjs.map → erDiagram-Q63AITRT-BGEWGa_b.cjs.map} +1 -1
  117. package/dist/{extractHeadings-BiNpEj-K.js → extractHeadings-BH0T7P4n.js} +3834 -3824
  118. package/dist/{extractHeadings-BiNpEj-K.js.map → extractHeadings-BH0T7P4n.js.map} +1 -1
  119. package/dist/{extractHeadings-vnYM8Eet.cjs → extractHeadings-BsiIYa_e.cjs} +62 -62
  120. package/dist/{extractHeadings-vnYM8Eet.cjs.map → extractHeadings-BsiIYa_e.cjs.map} +1 -1
  121. package/dist/flowDiagram-23GEKE2U-B9LX4RXy.cjs +2 -0
  122. package/dist/flowDiagram-23GEKE2U-B9LX4RXy.cjs.map +1 -0
  123. package/dist/flowDiagram-23GEKE2U-Dk7STu-u.js +8 -0
  124. package/dist/flowDiagram-23GEKE2U-Dk7STu-u.js.map +1 -0
  125. package/dist/{ganttDiagram-NO4QXBWP-DvdToLYa.cjs → ganttDiagram-NO4QXBWP-4BbeHi64.cjs} +2 -2
  126. package/dist/{ganttDiagram-NO4QXBWP-DvdToLYa.cjs.map → ganttDiagram-NO4QXBWP-4BbeHi64.cjs.map} +1 -1
  127. package/dist/{ganttDiagram-NO4QXBWP-C2P9ON6O.js → ganttDiagram-NO4QXBWP-DtM5HL0C.js} +3 -3
  128. package/dist/{ganttDiagram-NO4QXBWP-C2P9ON6O.js.map → ganttDiagram-NO4QXBWP-DtM5HL0C.js.map} +1 -1
  129. package/dist/{gitGraphDiagram-IHSO6WYX-BkZsK9Hm.cjs → gitGraphDiagram-IHSO6WYX-D1NSh545.cjs} +2 -2
  130. package/dist/{gitGraphDiagram-IHSO6WYX-BkZsK9Hm.cjs.map → gitGraphDiagram-IHSO6WYX-D1NSh545.cjs.map} +1 -1
  131. package/dist/{gitGraphDiagram-IHSO6WYX-DVSslxqP.js → gitGraphDiagram-IHSO6WYX-DFSd1OPO.js} +4 -4
  132. package/dist/{gitGraphDiagram-IHSO6WYX-DVSslxqP.js.map → gitGraphDiagram-IHSO6WYX-DFSd1OPO.js.map} +1 -1
  133. package/dist/index.cjs +1 -1
  134. package/dist/index.client.cjs +1 -1
  135. package/dist/index.client.js +1 -1
  136. package/dist/index.js +1 -1
  137. package/dist/{infoDiagram-FWYZ7A6U-Cd3TPtAG.cjs → infoDiagram-FWYZ7A6U-4wrBBE6X.cjs} +2 -2
  138. package/dist/{infoDiagram-FWYZ7A6U-Cd3TPtAG.cjs.map → infoDiagram-FWYZ7A6U-4wrBBE6X.cjs.map} +1 -1
  139. package/dist/{infoDiagram-FWYZ7A6U-vPnKgn2w.js → infoDiagram-FWYZ7A6U-ZRUjO8nW.js} +2 -2
  140. package/dist/{infoDiagram-FWYZ7A6U-vPnKgn2w.js.map → infoDiagram-FWYZ7A6U-ZRUjO8nW.js.map} +1 -1
  141. package/dist/{ishikawaDiagram-FXEZZL3T-CR9ySQXh.cjs → ishikawaDiagram-FXEZZL3T-DE9GPbED.cjs} +2 -2
  142. package/dist/{ishikawaDiagram-FXEZZL3T-CR9ySQXh.cjs.map → ishikawaDiagram-FXEZZL3T-DE9GPbED.cjs.map} +1 -1
  143. package/dist/{ishikawaDiagram-FXEZZL3T-BkgUhFd7.js → ishikawaDiagram-FXEZZL3T-DNgqlFhZ.js} +2 -2
  144. package/dist/{ishikawaDiagram-FXEZZL3T-BkgUhFd7.js.map → ishikawaDiagram-FXEZZL3T-DNgqlFhZ.js.map} +1 -1
  145. package/dist/{journeyDiagram-5HDEW3XC-CeLukjGs.js → journeyDiagram-5HDEW3XC-BXlXmDhR.js} +5 -5
  146. package/dist/{journeyDiagram-5HDEW3XC-CeLukjGs.js.map → journeyDiagram-5HDEW3XC-BXlXmDhR.js.map} +1 -1
  147. package/dist/{journeyDiagram-5HDEW3XC-C_kouMqJ.cjs → journeyDiagram-5HDEW3XC-jcXDYbA9.cjs} +2 -2
  148. package/dist/{journeyDiagram-5HDEW3XC-C_kouMqJ.cjs.map → journeyDiagram-5HDEW3XC-jcXDYbA9.cjs.map} +1 -1
  149. package/dist/{kanban-definition-HUTT4EX6-B7sK7KKo.js → kanban-definition-HUTT4EX6-C9IdgWIg.js} +3 -3
  150. package/dist/{kanban-definition-HUTT4EX6-B7sK7KKo.js.map → kanban-definition-HUTT4EX6-C9IdgWIg.js.map} +1 -1
  151. package/dist/{kanban-definition-HUTT4EX6-C72m9SkW.cjs → kanban-definition-HUTT4EX6-D5_pDh9h.cjs} +2 -2
  152. package/dist/{kanban-definition-HUTT4EX6-C72m9SkW.cjs.map → kanban-definition-HUTT4EX6-D5_pDh9h.cjs.map} +1 -1
  153. package/dist/{linear-DA8CNisd.js → linear-CTibpBci.js} +2 -2
  154. package/dist/{linear-DA8CNisd.js.map → linear-CTibpBci.js.map} +1 -1
  155. package/dist/{linear-BgdXLHZt.cjs → linear-DDWdtbxq.cjs} +2 -2
  156. package/dist/{linear-BgdXLHZt.cjs.map → linear-DDWdtbxq.cjs.map} +1 -1
  157. package/dist/{mindmap-definition-LN4V7U3C-C7YrqUCf.js → mindmap-definition-LN4V7U3C-CXaKAu6n.js} +4 -4
  158. package/dist/{mindmap-definition-LN4V7U3C-C7YrqUCf.js.map → mindmap-definition-LN4V7U3C-CXaKAu6n.js.map} +1 -1
  159. package/dist/{mindmap-definition-LN4V7U3C-CirMzlY5.cjs → mindmap-definition-LN4V7U3C-gBn938NF.cjs} +2 -2
  160. package/dist/{mindmap-definition-LN4V7U3C-CirMzlY5.cjs.map → mindmap-definition-LN4V7U3C-gBn938NF.cjs.map} +1 -1
  161. package/dist/{pegDiagram-2B236MQR-DpzcFesN.js → pegDiagram-2B236MQR-BiQyejnD.js} +4 -4
  162. package/dist/{pegDiagram-2B236MQR-DpzcFesN.js.map → pegDiagram-2B236MQR-BiQyejnD.js.map} +1 -1
  163. package/dist/{pegDiagram-2B236MQR-BWo1kluM.cjs → pegDiagram-2B236MQR-fR_9AvHk.cjs} +2 -2
  164. package/dist/{pegDiagram-2B236MQR-BWo1kluM.cjs.map → pegDiagram-2B236MQR-fR_9AvHk.cjs.map} +1 -1
  165. package/dist/{pieDiagram-ENE6RG2P-iRoOiNc4.cjs → pieDiagram-ENE6RG2P-BZtqlfyU.cjs} +2 -2
  166. package/dist/{pieDiagram-ENE6RG2P-iRoOiNc4.cjs.map → pieDiagram-ENE6RG2P-BZtqlfyU.cjs.map} +1 -1
  167. package/dist/{pieDiagram-ENE6RG2P-B6RHvEHE.js → pieDiagram-ENE6RG2P-CZTZpVqy.js} +4 -4
  168. package/dist/{pieDiagram-ENE6RG2P-B6RHvEHE.js.map → pieDiagram-ENE6RG2P-CZTZpVqy.js.map} +1 -1
  169. package/dist/{quadrantDiagram-ABIIQ3AL-9Gb8LEQi.js → quadrantDiagram-ABIIQ3AL-ByHTxHrm.js} +3 -3
  170. package/dist/{quadrantDiagram-ABIIQ3AL-9Gb8LEQi.js.map → quadrantDiagram-ABIIQ3AL-ByHTxHrm.js.map} +1 -1
  171. package/dist/{quadrantDiagram-ABIIQ3AL-DKbTOjNz.cjs → quadrantDiagram-ABIIQ3AL-CC5w4CkE.cjs} +2 -2
  172. package/dist/{quadrantDiagram-ABIIQ3AL-DKbTOjNz.cjs.map → quadrantDiagram-ABIIQ3AL-CC5w4CkE.cjs.map} +1 -1
  173. package/dist/{railroadDiagram-RFXS5EU6-CXgCaCb_.js → railroadDiagram-RFXS5EU6-C99zfAzl.js} +4 -4
  174. package/dist/{railroadDiagram-RFXS5EU6-CXgCaCb_.js.map → railroadDiagram-RFXS5EU6-C99zfAzl.js.map} +1 -1
  175. package/dist/{railroadDiagram-RFXS5EU6-SOxzO7C3.cjs → railroadDiagram-RFXS5EU6-_YckPr2T.cjs} +2 -2
  176. package/dist/{railroadDiagram-RFXS5EU6-SOxzO7C3.cjs.map → railroadDiagram-RFXS5EU6-_YckPr2T.cjs.map} +1 -1
  177. package/dist/{requirementDiagram-TGXJPOKE-B6RQ9Kpp.cjs → requirementDiagram-TGXJPOKE-BCeWSLF4.cjs} +2 -2
  178. package/dist/{requirementDiagram-TGXJPOKE-B6RQ9Kpp.cjs.map → requirementDiagram-TGXJPOKE-BCeWSLF4.cjs.map} +1 -1
  179. package/dist/{requirementDiagram-TGXJPOKE-DbSm2ehr.js → requirementDiagram-TGXJPOKE-DBzuXzE9.js} +4 -4
  180. package/dist/{requirementDiagram-TGXJPOKE-DbSm2ehr.js.map → requirementDiagram-TGXJPOKE-DBzuXzE9.js.map} +1 -1
  181. package/dist/{sankeyDiagram-HTMAVEWB-BNqZ6R3H.js → sankeyDiagram-HTMAVEWB-ChQ2ozXn.js} +2 -2
  182. package/dist/{sankeyDiagram-HTMAVEWB-BNqZ6R3H.js.map → sankeyDiagram-HTMAVEWB-ChQ2ozXn.js.map} +1 -1
  183. package/dist/{sankeyDiagram-HTMAVEWB-DgGDy2eG.cjs → sankeyDiagram-HTMAVEWB-DQOfpr04.cjs} +2 -2
  184. package/dist/{sankeyDiagram-HTMAVEWB-DgGDy2eG.cjs.map → sankeyDiagram-HTMAVEWB-DQOfpr04.cjs.map} +1 -1
  185. package/dist/{sequenceDiagram-DBY2YBRQ-Bf3EtJcL.js → sequenceDiagram-DBY2YBRQ-CCzsdQ__.js} +4 -4
  186. package/dist/{sequenceDiagram-DBY2YBRQ-Bf3EtJcL.js.map → sequenceDiagram-DBY2YBRQ-CCzsdQ__.js.map} +1 -1
  187. package/dist/{sequenceDiagram-DBY2YBRQ-BuKDthxK.cjs → sequenceDiagram-DBY2YBRQ-D2R8WWiq.cjs} +2 -2
  188. package/dist/{sequenceDiagram-DBY2YBRQ-BuKDthxK.cjs.map → sequenceDiagram-DBY2YBRQ-D2R8WWiq.cjs.map} +1 -1
  189. package/dist/{sizeCapture-X5ZJPWSS-CNWx6elV.js → sizeCapture-X5ZJPWSS-9Q2RBacx.js} +2 -2
  190. package/dist/{sizeCapture-X5ZJPWSS-CNWx6elV.js.map → sizeCapture-X5ZJPWSS-9Q2RBacx.js.map} +1 -1
  191. package/dist/{sizeCapture-X5ZJPWSS-NRqA0pmT.cjs → sizeCapture-X5ZJPWSS-CedNWC9b.cjs} +2 -2
  192. package/dist/{sizeCapture-X5ZJPWSS-NRqA0pmT.cjs.map → sizeCapture-X5ZJPWSS-CedNWC9b.cjs.map} +1 -1
  193. package/dist/src/components/MarkdownRenderer.d.ts +31 -1
  194. package/dist/src/components/MarkdownRenderer.d.ts.map +1 -1
  195. package/dist/src/components/MarkdownViewer.d.ts +9 -1
  196. package/dist/src/components/MarkdownViewer.d.ts.map +1 -1
  197. package/dist/src/index.client.d.ts +1 -1
  198. package/dist/src/index.client.d.ts.map +1 -1
  199. package/dist/{stateDiagram-2N3HPSRC-DqhvonPY.cjs → stateDiagram-2N3HPSRC-BFjEDzN5.cjs} +2 -2
  200. package/dist/{stateDiagram-2N3HPSRC-DqhvonPY.cjs.map → stateDiagram-2N3HPSRC-BFjEDzN5.cjs.map} +1 -1
  201. package/dist/{stateDiagram-2N3HPSRC-Bdphi4r-.js → stateDiagram-2N3HPSRC-DVXBUdgS.js} +3 -3
  202. package/dist/{stateDiagram-2N3HPSRC-Bdphi4r-.js.map → stateDiagram-2N3HPSRC-DVXBUdgS.js.map} +1 -1
  203. package/dist/{stateDiagram-v2-6OUMAXLB-p9rvsC9-.cjs → stateDiagram-v2-6OUMAXLB-BpxIqbgw.cjs} +2 -2
  204. package/dist/{stateDiagram-v2-6OUMAXLB-p9rvsC9-.cjs.map → stateDiagram-v2-6OUMAXLB-BpxIqbgw.cjs.map} +1 -1
  205. package/dist/{stateDiagram-v2-6OUMAXLB-DdB47j1a.js → stateDiagram-v2-6OUMAXLB-etkgI8XE.js} +3 -3
  206. package/dist/{stateDiagram-v2-6OUMAXLB-DdB47j1a.js.map → stateDiagram-v2-6OUMAXLB-etkgI8XE.js.map} +1 -1
  207. package/dist/{swimlanes-5IMT3BWC-JZVn9oCR.cjs → swimlanes-5IMT3BWC-ByyaHYdJ.cjs} +2 -2
  208. package/dist/{swimlanes-5IMT3BWC-JZVn9oCR.cjs.map → swimlanes-5IMT3BWC-ByyaHYdJ.cjs.map} +1 -1
  209. package/dist/{swimlanes-5IMT3BWC-BMZk0Lp2.js → swimlanes-5IMT3BWC-CRF_hU5-.js} +4 -4
  210. package/dist/{swimlanes-5IMT3BWC-BMZk0Lp2.js.map → swimlanes-5IMT3BWC-CRF_hU5-.js.map} +1 -1
  211. package/dist/{swimlanesDiagram-G3AALYLV-DxEegQkl.cjs → swimlanesDiagram-G3AALYLV-DmAVTn1y.cjs} +2 -2
  212. package/dist/{swimlanesDiagram-G3AALYLV-DxEegQkl.cjs.map → swimlanesDiagram-G3AALYLV-DmAVTn1y.cjs.map} +1 -1
  213. package/dist/{swimlanesDiagram-G3AALYLV-DNhrqmqB.js → swimlanesDiagram-G3AALYLV-qE56wCfv.js} +3 -3
  214. package/dist/{swimlanesDiagram-G3AALYLV-DNhrqmqB.js.map → swimlanesDiagram-G3AALYLV-qE56wCfv.js.map} +1 -1
  215. package/dist/{timeline-definition-FHXFAJF6-BjxOaDZF.cjs → timeline-definition-FHXFAJF6-CYpydtqC.cjs} +2 -2
  216. package/dist/{timeline-definition-FHXFAJF6-BjxOaDZF.cjs.map → timeline-definition-FHXFAJF6-CYpydtqC.cjs.map} +1 -1
  217. package/dist/{timeline-definition-FHXFAJF6-C4kHuqGr.js → timeline-definition-FHXFAJF6-U6tU13YO.js} +3 -3
  218. package/dist/{timeline-definition-FHXFAJF6-C4kHuqGr.js.map → timeline-definition-FHXFAJF6-U6tU13YO.js.map} +1 -1
  219. package/dist/{vennDiagram-L72KCM5P-nQ40EeIj.cjs → vennDiagram-L72KCM5P-CfbVR5CF.cjs} +2 -2
  220. package/dist/{vennDiagram-L72KCM5P-nQ40EeIj.cjs.map → vennDiagram-L72KCM5P-CfbVR5CF.cjs.map} +1 -1
  221. package/dist/{vennDiagram-L72KCM5P-faE6oCYZ.js → vennDiagram-L72KCM5P-q79Xn7UV.js} +2 -2
  222. package/dist/{vennDiagram-L72KCM5P-faE6oCYZ.js.map → vennDiagram-L72KCM5P-q79Xn7UV.js.map} +1 -1
  223. package/dist/{wardleyDiagram-EHGQE667-COQa-JdJ.js → wardleyDiagram-EHGQE667-BG3W74MX.js} +3 -3
  224. package/dist/{wardleyDiagram-EHGQE667-COQa-JdJ.js.map → wardleyDiagram-EHGQE667-BG3W74MX.js.map} +1 -1
  225. package/dist/{wardleyDiagram-EHGQE667-ByYfznTT.cjs → wardleyDiagram-EHGQE667-CSJ22zfj.cjs} +2 -2
  226. package/dist/{wardleyDiagram-EHGQE667-ByYfznTT.cjs.map → wardleyDiagram-EHGQE667-CSJ22zfj.cjs.map} +1 -1
  227. package/dist/{xychartDiagram-FW5EYKEG-D7FhqNeM.js → xychartDiagram-FW5EYKEG-BISI4a7c.js} +3 -3
  228. package/dist/{xychartDiagram-FW5EYKEG-D7FhqNeM.js.map → xychartDiagram-FW5EYKEG-BISI4a7c.js.map} +1 -1
  229. package/dist/{xychartDiagram-FW5EYKEG-BHBIM0-w.cjs → xychartDiagram-FW5EYKEG-Df8hBgvh.cjs} +2 -2
  230. package/dist/{xychartDiagram-FW5EYKEG-BHBIM0-w.cjs.map → xychartDiagram-FW5EYKEG-Df8hBgvh.cjs.map} +1 -1
  231. package/package.json +1 -1
  232. package/dist/channel-B6gYWXtQ.js +0 -6
  233. package/dist/channel-CZceKK2b.cjs +0 -2
  234. package/dist/flowDiagram-23GEKE2U-BNIQEPQk.cjs +0 -2
  235. package/dist/flowDiagram-23GEKE2U-BNIQEPQk.cjs.map +0 -1
  236. package/dist/flowDiagram-23GEKE2U-Cu3z7Hd2.js +0 -8
  237. package/dist/flowDiagram-23GEKE2U-Cu3z7Hd2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"gitGraphDiagram-IHSO6WYX-DVSslxqP.js","sources":["../../../node_modules/.pnpm/mermaid@11.16.0/node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-IHSO6WYX.mjs"],"sourcesContent":["import {\n ImperativeState\n} from \"./chunk-2Q5K7J3B.mjs\";\nimport {\n populateCommonDb\n} from \"./chunk-JWPE2WC7.mjs\";\nimport {\n cleanAndMerge,\n random,\n utils_default\n} from \"./chunk-ICXQ74PX.mjs\";\nimport {\n clear,\n common_default,\n defaultConfig_default,\n getAccDescription,\n getAccTitle,\n getConfig,\n getConfig2,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n setupGraphViewbox2 as setupGraphViewbox\n} from \"./chunk-WYO6CB5R.mjs\";\nimport {\n log\n} from \"./chunk-X3CZISLH.mjs\";\nimport {\n __name\n} from \"./chunk-Y2CYZVJY.mjs\";\n\n// src/diagrams/git/gitGraphParser.ts\nimport { parse } from \"@mermaid-js/parser\";\n\n// src/diagrams/git/gitGraphTypes.ts\nvar commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4\n};\n\n// src/diagrams/git/gitGraphAst.ts\nvar DEFAULT_GITGRAPH_CONFIG = defaultConfig_default.gitGraph;\nvar getConfig3 = /* @__PURE__ */ __name(() => {\n const config = cleanAndMerge({\n ...DEFAULT_GITGRAPH_CONFIG,\n ...getConfig().gitGraph\n });\n return config;\n}, \"getConfig\");\nvar state = new ImperativeState(() => {\n const config = getConfig3();\n const mainBranchName = config.mainBranchName;\n const mainBranchOrder = config.mainBranchOrder;\n return {\n mainBranchName,\n commits: /* @__PURE__ */ new Map(),\n head: null,\n branchConfig: /* @__PURE__ */ new Map([[mainBranchName, { name: mainBranchName, order: mainBranchOrder }]]),\n branches: /* @__PURE__ */ new Map([[mainBranchName, null]]),\n currBranch: mainBranchName,\n direction: \"LR\",\n seq: 0,\n options: {}\n };\n});\nfunction getID() {\n return random({ length: 7 });\n}\n__name(getID, \"getID\");\nfunction uniqBy(list, fn) {\n const recordMap = /* @__PURE__ */ Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\n__name(uniqBy, \"uniqBy\");\nvar setDirection = /* @__PURE__ */ __name(function(dir2) {\n state.records.direction = dir2;\n}, \"setDirection\");\nvar setOptions = /* @__PURE__ */ __name(function(rawOptString) {\n log.debug(\"options str\", rawOptString);\n rawOptString = rawOptString?.trim();\n rawOptString = rawOptString || \"{}\";\n try {\n state.records.options = JSON.parse(rawOptString);\n } catch (e) {\n log.error(\"error while parsing gitGraph options\", e.message);\n }\n}, \"setOptions\");\nvar getOptions = /* @__PURE__ */ __name(function() {\n return state.records.options;\n}, \"getOptions\");\nvar commit = /* @__PURE__ */ __name(function(commitDB) {\n let msg = commitDB.msg;\n let id = commitDB.id;\n const type = commitDB.type;\n let tags = commitDB.tags;\n log.info(\"commit\", msg, id, type, tags);\n log.debug(\"Entering commit:\", msg, id, type, tags);\n const config = getConfig3();\n id = common_default.sanitizeText(id, config);\n msg = common_default.sanitizeText(msg, config);\n tags = tags?.map((tag) => common_default.sanitizeText(tag, config));\n const newCommit = {\n id: id ? id : state.records.seq + \"-\" + getID(),\n message: msg,\n seq: state.records.seq++,\n type: type ?? commitType.NORMAL,\n tags: tags ?? [],\n parents: state.records.head == null ? [] : [state.records.head.id],\n branch: state.records.currBranch\n };\n state.records.head = newCommit;\n log.info(\"main branch\", config.mainBranchName);\n if (state.records.commits.has(newCommit.id)) {\n log.warn(`Commit ID ${newCommit.id} already exists`);\n }\n state.records.commits.set(newCommit.id, newCommit);\n state.records.branches.set(state.records.currBranch, newCommit.id);\n log.debug(\"in pushCommit \" + newCommit.id);\n}, \"commit\");\nvar branch = /* @__PURE__ */ __name(function(branchDB) {\n let name = branchDB.name;\n const order = branchDB.order;\n name = common_default.sanitizeText(name, getConfig3());\n if (state.records.branches.has(name)) {\n throw new Error(\n `Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using \"checkout ${name}\")`\n );\n }\n state.records.branches.set(name, state.records.head != null ? state.records.head.id : null);\n state.records.branchConfig.set(name, { name, order });\n checkout(name);\n log.debug(\"in createBranch\");\n}, \"branch\");\nvar merge = /* @__PURE__ */ __name((mergeDB) => {\n let otherBranch = mergeDB.branch;\n let customId = mergeDB.id;\n const overrideType = mergeDB.type;\n const customTags = mergeDB.tags;\n const config = getConfig3();\n otherBranch = common_default.sanitizeText(otherBranch, config);\n if (customId) {\n customId = common_default.sanitizeText(customId, config);\n }\n const currentBranchCheck = state.records.branches.get(state.records.currBranch);\n const otherBranchCheck = state.records.branches.get(otherBranch);\n const currentCommit = currentBranchCheck ? state.records.commits.get(currentBranchCheck) : void 0;\n const otherCommit = otherBranchCheck ? state.records.commits.get(otherBranchCheck) : void 0;\n if (currentCommit && otherCommit && currentCommit.branch === otherBranch) {\n throw new Error(`Cannot merge branch '${otherBranch}' into itself.`);\n }\n if (state.records.currBranch === otherBranch) {\n const error = new Error('Incorrect usage of \"merge\". Cannot merge a branch to itself');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"branch abc\"]\n };\n throw error;\n }\n if (currentCommit === void 0 || !currentCommit) {\n const error = new Error(\n `Incorrect usage of \"merge\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"commit\"]\n };\n throw error;\n }\n if (!state.records.branches.has(otherBranch)) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") does not exist\"\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [`branch ${otherBranch}`]\n };\n throw error;\n }\n if (otherCommit === void 0 || !otherCommit) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") has no commits\"\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: ['\"commit\"']\n };\n throw error;\n }\n if (currentCommit === otherCommit) {\n const error = new Error('Incorrect usage of \"merge\". Both branches have same head');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"branch abc\"]\n };\n throw error;\n }\n if (customId && state.records.commits.has(customId)) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Commit with id:' + customId + \" already exists, use different custom id\"\n );\n error.hash = {\n text: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(\" \")}`,\n token: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(\" \")}`,\n expected: [\n `merge ${otherBranch} ${customId}_UNIQUE ${overrideType} ${customTags?.join(\" \")}`\n ]\n };\n throw error;\n }\n const verifiedBranch = otherBranchCheck ? otherBranchCheck : \"\";\n const commit2 = {\n id: customId || `${state.records.seq}-${getID()}`,\n message: `merged branch ${otherBranch} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, verifiedBranch],\n branch: state.records.currBranch,\n type: commitType.MERGE,\n customType: overrideType,\n customId: customId ? true : false,\n tags: customTags ?? []\n };\n state.records.head = commit2;\n state.records.commits.set(commit2.id, commit2);\n state.records.branches.set(state.records.currBranch, commit2.id);\n log.debug(state.records.branches);\n log.debug(\"in mergeBranch\");\n}, \"merge\");\nvar cherryPick = /* @__PURE__ */ __name(function(cherryPickDB) {\n let sourceId = cherryPickDB.id;\n let targetId = cherryPickDB.targetId;\n let tags = cherryPickDB.tags;\n let parentCommitId = cherryPickDB.parent;\n log.debug(\"Entering cherryPick:\", sourceId, targetId, tags);\n const config = getConfig3();\n sourceId = common_default.sanitizeText(sourceId, config);\n targetId = common_default.sanitizeText(targetId, config);\n tags = tags?.map((tag) => common_default.sanitizeText(tag, config));\n parentCommitId = common_default.sanitizeText(parentCommitId, config);\n if (!sourceId || !state.records.commits.has(sourceId)) {\n const error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit id should exist and provided'\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const sourceCommit = state.records.commits.get(sourceId);\n if (sourceCommit === void 0 || !sourceCommit) {\n throw new Error('Incorrect usage of \"cherryPick\". Source commit id should exist and provided');\n }\n if (parentCommitId && !(Array.isArray(sourceCommit.parents) && sourceCommit.parents.includes(parentCommitId))) {\n const error = new Error(\n \"Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.\"\n );\n throw error;\n }\n const sourceCommitBranch = sourceCommit.branch;\n if (sourceCommit.type === commitType.MERGE && !parentCommitId) {\n const error = new Error(\n \"Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.\"\n );\n throw error;\n }\n if (!targetId || !state.records.commits.has(targetId)) {\n if (sourceCommitBranch === state.records.currBranch) {\n const error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit is already on current branch'\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommitId = state.records.branches.get(state.records.currBranch);\n if (currentCommitId === void 0 || !currentCommitId) {\n const error = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommit = state.records.commits.get(currentCommitId);\n if (currentCommit === void 0 || !currentCommit) {\n const error = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const commit2 = {\n id: state.records.seq + \"-\" + getID(),\n message: `cherry-picked ${sourceCommit?.message} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, sourceCommit.id],\n branch: state.records.currBranch,\n type: commitType.CHERRY_PICK,\n tags: tags ? tags.filter(Boolean) : [\n `cherry-pick:${sourceCommit.id}${sourceCommit.type === commitType.MERGE ? `|parent:${parentCommitId}` : \"\"}`\n ]\n };\n state.records.head = commit2;\n state.records.commits.set(commit2.id, commit2);\n state.records.branches.set(state.records.currBranch, commit2.id);\n log.debug(state.records.branches);\n log.debug(\"in cherryPick\");\n }\n}, \"cherryPick\");\nvar checkout = /* @__PURE__ */ __name(function(branch2) {\n branch2 = common_default.sanitizeText(branch2, getConfig3());\n if (!state.records.branches.has(branch2)) {\n const error = new Error(\n `Trying to checkout branch which is not yet created. (Help try using \"branch ${branch2}\")`\n );\n error.hash = {\n text: `checkout ${branch2}`,\n token: `checkout ${branch2}`,\n expected: [`branch ${branch2}`]\n };\n throw error;\n } else {\n state.records.currBranch = branch2;\n const id = state.records.branches.get(state.records.currBranch);\n if (id === void 0 || !id) {\n state.records.head = null;\n } else {\n state.records.head = state.records.commits.get(id) ?? null;\n }\n }\n}, \"checkout\");\nfunction upsert(arr, key, newVal) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newVal);\n } else {\n arr.splice(index, 1, newVal);\n }\n}\n__name(upsert, \"upsert\");\nfunction prettyPrintCommitHistory(commitArr) {\n const commit2 = commitArr.reduce((out, commit3) => {\n if (out.seq > commit3.seq) {\n return out;\n }\n return commit3;\n }, commitArr[0]);\n let line = \"\";\n commitArr.forEach(function(c) {\n if (c === commit2) {\n line += \"\t*\";\n } else {\n line += \"\t|\";\n }\n });\n const label = [line, commit2.id, commit2.seq];\n for (const branch2 in state.records.branches) {\n if (state.records.branches.get(branch2) === commit2.id) {\n label.push(branch2);\n }\n }\n log.debug(label.join(\" \"));\n if (commit2.parents && commit2.parents.length == 2 && commit2.parents[0] && commit2.parents[1]) {\n const newCommit = state.records.commits.get(commit2.parents[0]);\n upsert(commitArr, commit2, newCommit);\n if (commit2.parents[1]) {\n commitArr.push(state.records.commits.get(commit2.parents[1]));\n }\n } else if (commit2.parents.length == 0) {\n return;\n } else {\n if (commit2.parents[0]) {\n const newCommit = state.records.commits.get(commit2.parents[0]);\n upsert(commitArr, commit2, newCommit);\n }\n }\n commitArr = uniqBy(commitArr, (c) => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n__name(prettyPrintCommitHistory, \"prettyPrintCommitHistory\");\nvar prettyPrint = /* @__PURE__ */ __name(function() {\n log.debug(state.records.commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n}, \"prettyPrint\");\nvar clear2 = /* @__PURE__ */ __name(function() {\n state.reset();\n clear();\n}, \"clear\");\nvar getBranchesAsObjArray = /* @__PURE__ */ __name(function() {\n const branchesArray = [...state.records.branchConfig.values()].map((branchConfig, i) => {\n if (branchConfig.order !== null && branchConfig.order !== void 0) {\n return branchConfig;\n }\n return {\n ...branchConfig,\n order: parseFloat(`0.${i}`)\n };\n }).sort((a, b) => (a.order ?? 0) - (b.order ?? 0)).map(({ name }) => ({ name }));\n return branchesArray;\n}, \"getBranchesAsObjArray\");\nvar getBranches = /* @__PURE__ */ __name(function() {\n return state.records.branches;\n}, \"getBranches\");\nvar getCommits = /* @__PURE__ */ __name(function() {\n return state.records.commits;\n}, \"getCommits\");\nvar getCommitsArray = /* @__PURE__ */ __name(function() {\n const commitArr = [...state.records.commits.values()];\n commitArr.forEach(function(o) {\n log.debug(o.id);\n });\n commitArr.sort((a, b) => a.seq - b.seq);\n return commitArr;\n}, \"getCommitsArray\");\nvar getCurrentBranch = /* @__PURE__ */ __name(function() {\n return state.records.currBranch;\n}, \"getCurrentBranch\");\nvar getDirection = /* @__PURE__ */ __name(function() {\n return state.records.direction;\n}, \"getDirection\");\nvar getHead = /* @__PURE__ */ __name(function() {\n return state.records.head;\n}, \"getHead\");\nvar db = {\n commitType,\n getConfig: getConfig3,\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n cherryPick,\n checkout,\n //reset,\n prettyPrint,\n clear: clear2,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n setDiagramTitle,\n getDiagramTitle\n};\n\n// src/diagrams/git/gitGraphParser.ts\nvar populate = /* @__PURE__ */ __name((ast, db2) => {\n populateCommonDb(ast, db2);\n if (ast.dir) {\n db2.setDirection(ast.dir);\n }\n for (const statement of ast.statements) {\n parseStatement(statement, db2);\n }\n}, \"populate\");\nvar parseStatement = /* @__PURE__ */ __name((statement, db2) => {\n const parsers = {\n Commit: /* @__PURE__ */ __name((stmt) => db2.commit(parseCommit(stmt)), \"Commit\"),\n Branch: /* @__PURE__ */ __name((stmt) => db2.branch(parseBranch(stmt)), \"Branch\"),\n Merge: /* @__PURE__ */ __name((stmt) => db2.merge(parseMerge(stmt)), \"Merge\"),\n Checkout: /* @__PURE__ */ __name((stmt) => db2.checkout(parseCheckout(stmt)), \"Checkout\"),\n CherryPicking: /* @__PURE__ */ __name((stmt) => db2.cherryPick(parseCherryPicking(stmt)), \"CherryPicking\")\n };\n const parser2 = parsers[statement.$type];\n if (parser2) {\n parser2(statement);\n } else {\n log.error(`Unknown statement type: ${statement.$type}`);\n }\n}, \"parseStatement\");\nvar parseCommit = /* @__PURE__ */ __name((commit2) => {\n const commitDB = {\n id: commit2.id,\n msg: commit2.message ?? \"\",\n type: commit2.type !== void 0 ? commitType[commit2.type] : commitType.NORMAL,\n tags: commit2.tags ?? void 0\n };\n return commitDB;\n}, \"parseCommit\");\nvar parseBranch = /* @__PURE__ */ __name((branch2) => {\n const branchDB = {\n name: branch2.name,\n order: branch2.order ?? 0\n };\n return branchDB;\n}, \"parseBranch\");\nvar parseMerge = /* @__PURE__ */ __name((merge2) => {\n const mergeDB = {\n branch: merge2.branch,\n id: merge2.id ?? \"\",\n type: merge2.type !== void 0 ? commitType[merge2.type] : void 0,\n tags: merge2.tags ?? void 0\n };\n return mergeDB;\n}, \"parseMerge\");\nvar parseCheckout = /* @__PURE__ */ __name((checkout2) => {\n const branch2 = checkout2.branch;\n return branch2;\n}, \"parseCheckout\");\nvar parseCherryPicking = /* @__PURE__ */ __name((cherryPicking) => {\n const cherryPickDB = {\n id: cherryPicking.id,\n targetId: \"\",\n tags: cherryPicking.tags?.length === 0 ? void 0 : cherryPicking.tags,\n parent: cherryPicking.parent\n };\n return cherryPickDB;\n}, \"parseCherryPicking\");\nvar parser = {\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"gitGraph\", input);\n log.debug(ast);\n populate(ast, db);\n }, \"parse\")\n};\nif (void 0) {\n const { it, expect, describe } = void 0;\n const mockDB = {\n commitType,\n setDirection: vi.fn(),\n commit: vi.fn(),\n branch: vi.fn(),\n merge: vi.fn(),\n cherryPick: vi.fn(),\n checkout: vi.fn()\n };\n describe(\"GitGraph Parser\", () => {\n it(\"should parse a commit statement\", () => {\n const commit2 = {\n $type: \"Commit\",\n id: \"1\",\n message: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n };\n parseStatement(commit2, mockDB);\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: \"1\",\n msg: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n });\n it(\"should parse a branch statement\", () => {\n const branch2 = {\n $type: \"Branch\",\n name: \"newBranch\",\n order: 1\n };\n parseStatement(branch2, mockDB);\n expect(mockDB.branch).toHaveBeenCalledWith({ name: \"newBranch\", order: 1 });\n });\n it(\"should parse a checkout statement\", () => {\n const checkout2 = {\n $type: \"Checkout\",\n branch: \"newBranch\"\n };\n parseStatement(checkout2, mockDB);\n expect(mockDB.checkout).toHaveBeenCalledWith(\"newBranch\");\n });\n it(\"should parse a merge statement\", () => {\n const merge2 = {\n $type: \"Merge\",\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n };\n parseStatement(merge2, mockDB);\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n });\n it(\"should parse a cherry picking statement\", () => {\n const cherryPick2 = {\n $type: \"CherryPicking\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n parent: \"2\"\n };\n parseStatement(cherryPick2, mockDB);\n expect(mockDB.cherryPick).toHaveBeenCalledWith({\n id: \"1\",\n targetId: \"\",\n parent: \"2\",\n tags: [\"tag1\", \"tag2\"]\n });\n });\n it(\"should parse a langium generated gitGraph ast\", () => {\n const dummy = {\n $type: \"GitGraph\",\n statements: [],\n accDescr: \"\",\n accTitle: \"\",\n title: \"\"\n };\n const gitGraphAst = {\n $type: \"GitGraph\",\n statements: [\n {\n $container: dummy,\n $type: \"Commit\",\n id: \"1\",\n message: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n },\n {\n $container: dummy,\n $type: \"Branch\",\n name: \"newBranch\",\n order: 1\n },\n {\n $container: dummy,\n $type: \"Merge\",\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n },\n {\n $container: dummy,\n $type: \"Checkout\",\n branch: \"newBranch\"\n },\n {\n $container: dummy,\n $type: \"CherryPicking\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n parent: \"2\"\n }\n ],\n accDescr: \"\",\n accTitle: \"\",\n title: \"\"\n };\n populate(gitGraphAst, mockDB);\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: \"1\",\n msg: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n expect(mockDB.branch).toHaveBeenCalledWith({ name: \"newBranch\", order: 1 });\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n expect(mockDB.checkout).toHaveBeenCalledWith(\"newBranch\");\n });\n });\n}\n\n// src/diagrams/git/gitGraphRenderer.ts\nimport { select } from \"d3\";\nvar LAYOUT_OFFSET = 10;\nvar COMMIT_STEP = 40;\nvar PX = 4;\nvar PY = 2;\nvar THEME_COLOR_LIMIT = 8;\nvar REDUX_GEOMETRY_THEMES = /* @__PURE__ */ new Set([\"redux\", \"redux-dark\", \"redux-color\", \"redux-dark-color\"]);\nvar REDUX_BRANCH_LABEL_PADDING_Y = 12;\nvar COLOR_THEMES = /* @__PURE__ */ new Set([\"redux-color\", \"redux-dark-color\"]);\nvar DARK_THEMES = /* @__PURE__ */ new Set([\"dark\", \"redux-dark\", \"redux-dark-color\", \"neo-dark\"]);\nvar calcColorIndex = /* @__PURE__ */ __name((rawIndex, limit, avoidDefaultColor = false) => {\n if (avoidDefaultColor && rawIndex > 0) {\n return (rawIndex - 1) % (limit - 1) + 1;\n }\n return rawIndex % limit;\n}, \"calcColorIndex\");\nvar branchPos = /* @__PURE__ */ new Map();\nvar commitPos = /* @__PURE__ */ new Map();\nvar defaultPos = 30;\nvar allCommitsDict = /* @__PURE__ */ new Map();\nvar lanes = [];\nvar maxPos = 0;\nvar dir = \"LR\";\nvar clear3 = /* @__PURE__ */ __name(() => {\n branchPos.clear();\n commitPos.clear();\n allCommitsDict.clear();\n maxPos = 0;\n lanes = [];\n dir = \"LR\";\n}, \"clear\");\nvar drawText = /* @__PURE__ */ __name((txt) => {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n const rows = typeof txt === \"string\" ? txt.split(/\\\\n|\\n|<br\\s*\\/?>/gi) : txt;\n rows.forEach((row) => {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n tspan.setAttribute(\"class\", \"row\");\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n });\n return svgLabel;\n}, \"drawText\");\nvar findClosestParent = /* @__PURE__ */ __name((parents) => {\n let closestParent;\n let comparisonFunc;\n let targetPosition;\n if (dir === \"BT\") {\n comparisonFunc = /* @__PURE__ */ __name((a, b) => a <= b, \"comparisonFunc\");\n targetPosition = Infinity;\n } else {\n comparisonFunc = /* @__PURE__ */ __name((a, b) => a >= b, \"comparisonFunc\");\n targetPosition = 0;\n }\n parents.forEach((parent) => {\n const parentPosition = dir === \"TB\" || dir == \"BT\" ? commitPos.get(parent)?.y : commitPos.get(parent)?.x;\n if (parentPosition !== void 0 && comparisonFunc(parentPosition, targetPosition)) {\n closestParent = parent;\n targetPosition = parentPosition;\n }\n });\n return closestParent;\n}, \"findClosestParent\");\nvar findClosestParentBT = /* @__PURE__ */ __name((parents) => {\n let closestParent = \"\";\n let maxPosition = Infinity;\n parents.forEach((parent) => {\n const parentPosition = commitPos.get(parent).y;\n if (parentPosition <= maxPosition) {\n closestParent = parent;\n maxPosition = parentPosition;\n }\n });\n return closestParent || void 0;\n}, \"findClosestParentBT\");\nvar setParallelBTPos = /* @__PURE__ */ __name((sortedKeys, commits, defaultPos2) => {\n let curPos = defaultPos2;\n let maxPosition = defaultPos2;\n const roots = [];\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (!commit2) {\n throw new Error(`Commit not found for key ${key}`);\n }\n if (commit2.parents.length) {\n curPos = calculateCommitPosition(commit2);\n maxPosition = Math.max(curPos, maxPosition);\n } else {\n roots.push(commit2);\n }\n setCommitPosition(commit2, curPos);\n });\n curPos = maxPosition;\n roots.forEach((commit2) => {\n setRootPosition(commit2, curPos, defaultPos2);\n });\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (commit2?.parents.length) {\n const closestParent = findClosestParentBT(commit2.parents);\n curPos = commitPos.get(closestParent).y - COMMIT_STEP;\n if (curPos <= maxPosition) {\n maxPosition = curPos;\n }\n const x = branchPos.get(commit2.branch).pos;\n const y = curPos - LAYOUT_OFFSET;\n commitPos.set(commit2.id, { x, y });\n }\n });\n}, \"setParallelBTPos\");\nvar findClosestParentPos = /* @__PURE__ */ __name((commit2) => {\n const closestParent = findClosestParent(commit2.parents.filter((p) => p !== null));\n if (!closestParent) {\n throw new Error(`Closest parent not found for commit ${commit2.id}`);\n }\n const closestParentPos = commitPos.get(closestParent)?.y;\n if (closestParentPos === void 0) {\n throw new Error(`Closest parent position not found for commit ${commit2.id}`);\n }\n return closestParentPos;\n}, \"findClosestParentPos\");\nvar calculateCommitPosition = /* @__PURE__ */ __name((commit2) => {\n const closestParentPos = findClosestParentPos(commit2);\n return closestParentPos + COMMIT_STEP;\n}, \"calculateCommitPosition\");\nvar setCommitPosition = /* @__PURE__ */ __name((commit2, curPos) => {\n const branch2 = branchPos.get(commit2.branch);\n if (!branch2) {\n throw new Error(`Branch not found for commit ${commit2.id}`);\n }\n const x = branch2.pos;\n const y = curPos + LAYOUT_OFFSET;\n commitPos.set(commit2.id, { x, y });\n return { x, y };\n}, \"setCommitPosition\");\nvar setRootPosition = /* @__PURE__ */ __name((commit2, curPos, defaultPos2) => {\n const branch2 = branchPos.get(commit2.branch);\n if (!branch2) {\n throw new Error(`Branch not found for commit ${commit2.id}`);\n }\n const y = curPos + defaultPos2;\n const x = branch2.pos;\n commitPos.set(commit2.id, { x, y });\n}, \"setRootPosition\");\nvar drawCommitBullet = /* @__PURE__ */ __name((gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType) => {\n const { theme } = getConfig2();\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(theme ?? \"\");\n const useColorTheme = COLOR_THEMES.has(theme ?? \"\");\n const isDark = DARK_THEMES.has(theme ?? \"\");\n if (commitSymbolType === commitType.HIGHLIGHT) {\n gBullets.append(\"rect\").attr(\"x\", commitPosition.x - 10 + (useReduxGeometry ? 3 : 0)).attr(\"y\", commitPosition.y - 10 + (useReduxGeometry ? 3 : 0)).attr(\"width\", useReduxGeometry ? 14 : 20).attr(\"height\", useReduxGeometry ? 14 : 20).attr(\n \"class\",\n `commit ${commit2.id} commit-highlight${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)} ${typeClass}-outer`\n );\n gBullets.append(\"rect\").attr(\"x\", commitPosition.x - 6 + (useReduxGeometry ? 2 : 0)).attr(\"y\", commitPosition.y - 6 + (useReduxGeometry ? 2 : 0)).attr(\"width\", useReduxGeometry ? 8 : 12).attr(\"height\", useReduxGeometry ? 8 : 12).attr(\n \"class\",\n `commit ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)} ${typeClass}-inner`\n );\n } else if (commitSymbolType === commitType.CHERRY_PICK) {\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x).attr(\"cy\", commitPosition.y).attr(\"r\", useReduxGeometry ? 7 : 10).attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x - 3).attr(\"cy\", commitPosition.y + 2).attr(\"r\", useReduxGeometry ? 2.5 : 2.75).attr(\"fill\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x + 3).attr(\"cy\", commitPosition.y + 2).attr(\"r\", useReduxGeometry ? 2.5 : 2.75).attr(\"fill\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", commitPosition.x + 3).attr(\"y1\", commitPosition.y + 1).attr(\"x2\", commitPosition.x).attr(\"y2\", commitPosition.y - 5).attr(\"stroke\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", commitPosition.x - 3).attr(\"y1\", commitPosition.y + 1).attr(\"x2\", commitPosition.x).attr(\"y2\", commitPosition.y - 5).attr(\"stroke\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n } else {\n const circle = gBullets.append(\"circle\");\n circle.attr(\"cx\", commitPosition.x);\n circle.attr(\"cy\", commitPosition.y);\n circle.attr(\"r\", useReduxGeometry ? 7 : 10);\n circle.attr(\n \"class\",\n `commit ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n if (commitSymbolType === commitType.MERGE) {\n const circle2 = gBullets.append(\"circle\");\n circle2.attr(\"cx\", commitPosition.x);\n circle2.attr(\"cy\", commitPosition.y);\n circle2.attr(\"r\", useReduxGeometry ? 5 : 6);\n circle2.attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n }\n if (commitSymbolType === commitType.REVERSE) {\n const cross = gBullets.append(\"path\");\n const constValue = useReduxGeometry ? 4 : 5;\n cross.attr(\n \"d\",\n `M ${commitPosition.x - constValue},${commitPosition.y - constValue}L${commitPosition.x + constValue},${commitPosition.y + constValue}M${commitPosition.x - constValue},${commitPosition.y + constValue}L${commitPosition.x + constValue},${commitPosition.y - constValue}`\n ).attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n }\n }\n}, \"drawCommitBullet\");\nvar drawCommitLabel = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos, gitGraphConfig) => {\n if (commit2.type !== commitType.CHERRY_PICK && (commit2.customId && commit2.type === commitType.MERGE || commit2.type !== commitType.MERGE) && gitGraphConfig.showCommitLabel) {\n const wrapper = gLabels.append(\"g\");\n const labelBkg = wrapper.insert(\"rect\").attr(\"class\", \"commit-label-bkg\");\n const text = wrapper.append(\"text\").attr(\"x\", pos).attr(\"y\", commitPosition.y + 25).attr(\"class\", \"commit-label\").text(commit2.id);\n const bbox = text.node()?.getBBox();\n if (bbox) {\n labelBkg.attr(\"x\", commitPosition.posWithOffset - bbox.width / 2 - PY).attr(\"y\", commitPosition.y + 13.5).attr(\"width\", bbox.width + 2 * PY).attr(\"height\", bbox.height + 2 * PY);\n if (dir === \"TB\" || dir === \"BT\") {\n labelBkg.attr(\"x\", commitPosition.x - (bbox.width + 4 * PX + 5)).attr(\"y\", commitPosition.y - 12);\n text.attr(\"x\", commitPosition.x - (bbox.width + 4 * PX)).attr(\"y\", commitPosition.y + bbox.height - 12);\n } else {\n text.attr(\"x\", commitPosition.posWithOffset - bbox.width / 2);\n }\n if (gitGraphConfig.rotateCommitLabel) {\n if (dir === \"TB\" || dir === \"BT\") {\n text.attr(\n \"transform\",\n \"rotate(-45, \" + commitPosition.x + \", \" + commitPosition.y + \")\"\n );\n labelBkg.attr(\n \"transform\",\n \"rotate(-45, \" + commitPosition.x + \", \" + commitPosition.y + \")\"\n );\n } else {\n const r_x = -7.5 - (bbox.width + 10) / 25 * 9.5;\n const r_y = 10 + bbox.width / 25 * 8.5;\n wrapper.attr(\n \"transform\",\n \"translate(\" + r_x + \", \" + r_y + \") rotate(-45, \" + pos + \", \" + commitPosition.y + \")\"\n );\n }\n }\n }\n }\n}, \"drawCommitLabel\");\nvar drawCommitTags = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos) => {\n if (commit2.tags.length > 0) {\n let yOffset = 0;\n let maxTagBboxWidth = 0;\n let maxTagBboxHeight = 0;\n const tagElements = [];\n for (const tagValue of commit2.tags.reverse()) {\n const rect = gLabels.insert(\"polygon\");\n const hole = gLabels.append(\"circle\");\n const tag = gLabels.append(\"text\").attr(\"y\", commitPosition.y - 16 - yOffset).attr(\"class\", \"tag-label\").text(tagValue);\n const tagBbox = tag.node()?.getBBox();\n if (!tagBbox) {\n throw new Error(\"Tag bbox not found\");\n }\n maxTagBboxWidth = Math.max(maxTagBboxWidth, tagBbox.width);\n maxTagBboxHeight = Math.max(maxTagBboxHeight, tagBbox.height);\n tag.attr(\"x\", commitPosition.posWithOffset - tagBbox.width / 2);\n tagElements.push({\n tag,\n hole,\n rect,\n yOffset\n });\n yOffset += 20;\n }\n for (const { tag, hole, rect, yOffset: yOffset2 } of tagElements) {\n const h2 = maxTagBboxHeight / 2;\n const ly = commitPosition.y - 19.2 - yOffset2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly + PY} \n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly - PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly + h2 + PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly + h2 + PY}`\n );\n hole.attr(\"cy\", ly).attr(\"cx\", pos - maxTagBboxWidth / 2 + PX / 2).attr(\"r\", 1.5).attr(\"class\", \"tag-hole\");\n if (dir === \"TB\" || dir === \"BT\") {\n const yOrigin = pos + yOffset2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${commitPosition.x},${yOrigin + 2}\n ${commitPosition.x},${yOrigin - 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin + h2 + 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin + h2 + 2}`\n ).attr(\"transform\", \"translate(12,12) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n hole.attr(\"cx\", commitPosition.x + PX / 2).attr(\"cy\", yOrigin).attr(\"transform\", \"translate(12,12) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n tag.attr(\"x\", commitPosition.x + 5).attr(\"y\", yOrigin + 3).attr(\"transform\", \"translate(14,14) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n }\n }\n }\n}, \"drawCommitTags\");\nvar getCommitClassType = /* @__PURE__ */ __name((commit2) => {\n const commitSymbolType = commit2.customType ?? commit2.type;\n switch (commitSymbolType) {\n case commitType.NORMAL:\n return \"commit-normal\";\n case commitType.REVERSE:\n return \"commit-reverse\";\n case commitType.HIGHLIGHT:\n return \"commit-highlight\";\n case commitType.MERGE:\n return \"commit-merge\";\n case commitType.CHERRY_PICK:\n return \"commit-cherry-pick\";\n default:\n return \"commit-normal\";\n }\n}, \"getCommitClassType\");\nvar calculatePosition = /* @__PURE__ */ __name((commit2, dir2, pos, commitPos2) => {\n const defaultCommitPosition = { x: 0, y: 0 };\n if (commit2.parents.length > 0) {\n const closestParent = findClosestParent(commit2.parents);\n if (closestParent) {\n const parentPosition = commitPos2.get(closestParent) ?? defaultCommitPosition;\n if (dir2 === \"TB\") {\n return parentPosition.y + COMMIT_STEP;\n } else if (dir2 === \"BT\") {\n const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return parentPosition.x + COMMIT_STEP;\n }\n }\n } else {\n if (dir2 === \"TB\") {\n return defaultPos;\n } else if (dir2 === \"BT\") {\n const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return 0;\n }\n }\n return 0;\n}, \"calculatePosition\");\nvar getCommitPosition = /* @__PURE__ */ __name((commit2, pos, isParallelCommits) => {\n const posWithOffset = dir === \"BT\" && isParallelCommits ? pos : pos + LAYOUT_OFFSET;\n const branchY = branchPos.get(commit2.branch)?.pos;\n const x = dir === \"TB\" || dir === \"BT\" ? branchPos.get(commit2.branch)?.pos : posWithOffset;\n if (x === void 0 || branchY === void 0) {\n throw new Error(`Position were undefined for commit ${commit2.id}`);\n }\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(getConfig2().theme ?? \"\");\n const y = dir === \"TB\" || dir === \"BT\" ? posWithOffset : branchY + (useReduxGeometry ? REDUX_BRANCH_LABEL_PADDING_Y / 2 + 1 : -2);\n return { x, y, posWithOffset };\n}, \"getCommitPosition\");\nvar drawCommits = /* @__PURE__ */ __name((svg, commits, modifyGraph, gitGraphConfig) => {\n const gBullets = svg.append(\"g\").attr(\"class\", \"commit-bullets\");\n const gLabels = svg.append(\"g\").attr(\"class\", \"commit-labels\");\n let pos = dir === \"TB\" || dir === \"BT\" ? defaultPos : 0;\n const keys = [...commits.keys()];\n const isParallelCommits = gitGraphConfig.parallelCommits ?? false;\n const sortKeys = /* @__PURE__ */ __name((a, b) => {\n const seqA = commits.get(a)?.seq;\n const seqB = commits.get(b)?.seq;\n return seqA !== void 0 && seqB !== void 0 ? seqA - seqB : 0;\n }, \"sortKeys\");\n let sortedKeys = keys.sort(sortKeys);\n if (dir === \"BT\") {\n if (isParallelCommits) {\n setParallelBTPos(sortedKeys, commits, pos);\n }\n sortedKeys = sortedKeys.reverse();\n }\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (!commit2) {\n throw new Error(`Commit not found for key ${key}`);\n }\n if (isParallelCommits) {\n pos = calculatePosition(commit2, dir, pos, commitPos);\n }\n const commitPosition = getCommitPosition(commit2, pos, isParallelCommits);\n if (modifyGraph) {\n const typeClass = getCommitClassType(commit2);\n const commitSymbolType = commit2.customType ?? commit2.type;\n const branchIndex = branchPos.get(commit2.branch)?.index ?? 0;\n drawCommitBullet(gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType);\n drawCommitLabel(gLabels, commit2, commitPosition, pos, gitGraphConfig);\n drawCommitTags(gLabels, commit2, commitPosition, pos);\n }\n if (dir === \"TB\" || dir === \"BT\") {\n commitPos.set(commit2.id, { x: commitPosition.x, y: commitPosition.posWithOffset });\n } else {\n commitPos.set(commit2.id, { x: commitPosition.posWithOffset, y: commitPosition.y });\n }\n pos = dir === \"BT\" && isParallelCommits ? pos + COMMIT_STEP : pos + COMMIT_STEP + LAYOUT_OFFSET;\n if (pos > maxPos) {\n maxPos = pos;\n }\n });\n}, \"drawCommits\");\nvar shouldRerouteArrow = /* @__PURE__ */ __name((commitA, commitB, p1, p2, allCommits) => {\n const commitBIsFurthest = dir === \"TB\" || dir === \"BT\" ? p1.x < p2.x : p1.y < p2.y;\n const branchToGetCurve = commitBIsFurthest ? commitB.branch : commitA.branch;\n const isOnBranchToGetCurve = /* @__PURE__ */ __name((x) => x.branch === branchToGetCurve, \"isOnBranchToGetCurve\");\n const isBetweenCommits = /* @__PURE__ */ __name((x) => x.seq > commitA.seq && x.seq < commitB.seq, \"isBetweenCommits\");\n return [...allCommits.values()].some((commitX) => {\n return isBetweenCommits(commitX) && isOnBranchToGetCurve(commitX);\n });\n}, \"shouldRerouteArrow\");\nvar findLane = /* @__PURE__ */ __name((y1, y2, depth = 0) => {\n const candidate = y1 + Math.abs(y1 - y2) / 2;\n if (depth > 5) {\n return candidate;\n }\n const ok = lanes.every((lane) => Math.abs(lane - candidate) >= 10);\n if (ok) {\n lanes.push(candidate);\n return candidate;\n }\n const diff = Math.abs(y1 - y2);\n return findLane(y1, y2 - diff / 5, depth + 1);\n}, \"findLane\");\nvar drawArrow = /* @__PURE__ */ __name((svg, commitA, commitB, allCommits) => {\n const { theme: arrowTheme } = getConfig2();\n const useColorTheme = COLOR_THEMES.has(arrowTheme ?? \"\");\n const p1 = commitPos.get(commitA.id);\n const p2 = commitPos.get(commitB.id);\n if (p1 === void 0 || p2 === void 0) {\n throw new Error(`Commit positions not found for commits ${commitA.id} and ${commitB.id}`);\n }\n const arrowNeedsRerouting = shouldRerouteArrow(commitA, commitB, p1, p2, allCommits);\n let arc = \"\";\n let arc2 = \"\";\n let radius = 0;\n let offset = 0;\n let colorClassNum = branchPos.get(commitB.branch)?.index;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n }\n let lineDef;\n if (arrowNeedsRerouting) {\n arc = \"A 10 10, 0, 0, 0,\";\n arc2 = \"A 10 10, 0, 0, 1,\";\n radius = 10;\n offset = 10;\n const lineY = p1.y < p2.y ? findLane(p1.y, p2.y) : findLane(p2.y, p1.y);\n const lineX = p1.x < p2.x ? findLane(p1.x, p2.x) : findLane(p2.x, p1.x);\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc2} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc2} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === \"BT\") {\n if (p1.x < p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc2} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc2} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius} ${arc} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc2} ${p2.x} ${lineY + offset} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius} ${arc2} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc} ${p2.x} ${lineY - offset} L ${p2.x} ${p2.y}`;\n }\n }\n } else {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x > p2.x) {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc2} ${p1.x - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x + radius} ${p1.y} ${arc} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === \"BT\") {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x > p2.x) {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc} ${p1.x - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x + radius} ${p1.y} ${arc2} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.y > p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.y === p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n }\n }\n if (lineDef === void 0) {\n throw new Error(\"Line definition not found\");\n }\n svg.append(\"path\").attr(\"d\", lineDef).attr(\n \"class\",\n \"arrow arrow\" + calcColorIndex(colorClassNum, THEME_COLOR_LIMIT, useColorTheme)\n );\n}, \"drawArrow\");\nvar drawArrows = /* @__PURE__ */ __name((svg, commits) => {\n const gArrows = svg.append(\"g\").attr(\"class\", \"commit-arrows\");\n [...commits.keys()].forEach((key) => {\n const commit2 = commits.get(key);\n if (commit2.parents && commit2.parents.length > 0) {\n commit2.parents.forEach((parent) => {\n drawArrow(gArrows, commits.get(parent), commit2, commits);\n });\n }\n });\n}, \"drawArrows\");\nvar drawBranches = /* @__PURE__ */ __name((svg, branches, gitGraphConfig, id) => {\n const { look, theme, themeVariables } = getConfig2();\n const { dropShadow, THEME_COLOR_LIMIT: themeColorLimit } = themeVariables;\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(theme ?? \"\");\n const useColorTheme = COLOR_THEMES.has(theme ?? \"\");\n const g = svg.append(\"g\");\n branches.forEach((branch2, index) => {\n const adjustIndexForTheme = calcColorIndex(\n index,\n useReduxGeometry ? themeColorLimit : THEME_COLOR_LIMIT,\n useColorTheme\n );\n const pos = branchPos.get(branch2.name)?.pos;\n if (pos === void 0) {\n throw new Error(`Position not found for branch ${branch2.name}`);\n }\n const spineY = dir === \"TB\" || dir === \"BT\" ? pos : useReduxGeometry ? pos + REDUX_BRANCH_LABEL_PADDING_Y / 2 + 1 : pos - 2;\n const line = g.append(\"line\");\n line.attr(\"x1\", 0);\n line.attr(\"y1\", spineY);\n line.attr(\"x2\", maxPos);\n line.attr(\"y2\", spineY);\n line.attr(\"class\", \"branch branch\" + adjustIndexForTheme);\n if (dir === \"TB\") {\n line.attr(\"y1\", defaultPos);\n line.attr(\"x1\", pos);\n line.attr(\"y2\", maxPos);\n line.attr(\"x2\", pos);\n } else if (dir === \"BT\") {\n line.attr(\"y1\", maxPos);\n line.attr(\"x1\", pos);\n line.attr(\"y2\", defaultPos);\n line.attr(\"x2\", pos);\n }\n lanes.push(spineY);\n const name = branch2.name;\n const labelElement = drawText(name);\n const bkg = g.insert(\"rect\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\" + adjustIndexForTheme);\n label.node().appendChild(labelElement);\n const bbox = labelElement.getBBox();\n const borderRadius = useReduxGeometry ? 0 : 4;\n const labelPaddingX = useReduxGeometry ? 16 : 0;\n const labelPaddingY = useReduxGeometry ? REDUX_BRANCH_LABEL_PADDING_Y : 0;\n if (look === \"neo\") {\n bkg.attr(\"data-look\", `neo`);\n }\n bkg.attr(\"class\", \"branchLabelBkg label\" + adjustIndexForTheme).attr(\n \"style\",\n look === \"neo\" ? `filter:${useReduxGeometry ? `url(#${id}-drop-shadow)` : dropShadow}` : \"\"\n ).attr(\"rx\", borderRadius).attr(\"ry\", borderRadius).attr(\"x\", -bbox.width - 4 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)).attr(\"y\", -bbox.height / 2 + 10).attr(\"width\", bbox.width + 18 + labelPaddingX).attr(\"height\", bbox.height + 4 + labelPaddingY);\n label.attr(\n \"transform\",\n \"translate(\" + (-bbox.width - 14 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0) + labelPaddingX / 2) + \", \" + (spineY - bbox.height / 2 - 2) + \")\"\n );\n if (dir === \"TB\") {\n bkg.attr(\"x\", pos - bbox.width / 2 - 10).attr(\"y\", 0);\n label.attr(\"transform\", \"translate(\" + (pos - bbox.width / 2 - 5) + \", 0)\");\n if (useReduxGeometry) {\n bkg.attr(\"transform\", `translate(${-labelPaddingX / 2 - 3}, ${-labelPaddingY - 10})`);\n label.attr(\n \"transform\",\n \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + (-labelPaddingY * 2 + 7) + \")\"\n );\n }\n } else if (dir === \"BT\") {\n bkg.attr(\"x\", pos - bbox.width / 2 - 10).attr(\"y\", maxPos);\n label.attr(\"transform\", \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + maxPos + \")\");\n if (useReduxGeometry) {\n bkg.attr(\"transform\", `translate(${-labelPaddingX / 2 - 3}, ${labelPaddingY + 10})`);\n label.attr(\n \"transform\",\n \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + (maxPos + labelPaddingY * 2 + 4) + \")\"\n );\n }\n } else {\n bkg.attr(\"transform\", \"translate(-19, \" + (spineY - 12 - labelPaddingY / 2) + \")\");\n }\n });\n}, \"drawBranches\");\nvar setBranchPosition = /* @__PURE__ */ __name(function(name, pos, index, bbox, rotateCommitLabel) {\n branchPos.set(name, { pos, index });\n pos += 50 + (rotateCommitLabel ? 40 : 0) + (dir === \"TB\" || dir === \"BT\" ? bbox.width / 2 : 0);\n return pos;\n}, \"setBranchPosition\");\nvar draw = /* @__PURE__ */ __name(function(txt, id, ver, diagObj) {\n clear3();\n log.debug(\"in gitgraph renderer\", txt + \"\\n\", \"id:\", id, ver);\n const db2 = diagObj.db;\n if (!db2.getConfig) {\n log.error(\"getConfig method is not available on db\");\n return;\n }\n const gitGraphConfig = db2.getConfig();\n const rotateCommitLabel = gitGraphConfig.rotateCommitLabel ?? false;\n allCommitsDict = db2.getCommits();\n const branches = db2.getBranchesAsObjArray();\n dir = db2.getDirection();\n const diagram2 = select(`[id=\"${id}\"]`);\n const { look, theme, themeVariables } = getConfig2();\n const { useGradient, gradientStart, gradientStop, filterColor } = themeVariables;\n if (useGradient) {\n const gradient = diagram2.append(\"defs\").append(\"linearGradient\").attr(\"id\", id + \"-gradient\").attr(\"gradientUnits\", \"objectBoundingBox\").attr(\"x1\", \"0%\").attr(\"y1\", \"0%\").attr(\"x2\", \"100%\").attr(\"y2\", \"0%\");\n gradient.append(\"stop\").attr(\"offset\", \"0%\").attr(\"stop-color\", gradientStart).attr(\"stop-opacity\", 1);\n gradient.append(\"stop\").attr(\"offset\", \"100%\").attr(\"stop-color\", gradientStop).attr(\"stop-opacity\", 1);\n }\n if (look === \"neo\" && REDUX_GEOMETRY_THEMES.has(theme ?? \"\")) {\n diagram2.append(\"defs\").append(\"filter\").attr(\"id\", id + \"-drop-shadow\").attr(\"height\", \"130%\").attr(\"width\", \"130%\").append(\"feDropShadow\").attr(\"dx\", \"4\").attr(\"dy\", \"4\").attr(\"stdDeviation\", 0).attr(\"flood-opacity\", \"0.06\").attr(\"flood-color\", filterColor);\n }\n let pos = 0;\n branches.forEach((branch2, index) => {\n const labelElement = drawText(branch2.name);\n const g = diagram2.append(\"g\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\");\n label.node()?.appendChild(labelElement);\n const bbox = labelElement.getBBox();\n pos = setBranchPosition(branch2.name, pos, index, bbox, rotateCommitLabel);\n label.remove();\n branchLabel.remove();\n g.remove();\n });\n drawCommits(diagram2, allCommitsDict, false, gitGraphConfig);\n if (gitGraphConfig.showBranches) {\n drawBranches(diagram2, branches, gitGraphConfig, id);\n }\n drawArrows(diagram2, allCommitsDict);\n drawCommits(diagram2, allCommitsDict, true, gitGraphConfig);\n utils_default.insertTitle(\n diagram2,\n \"gitTitleText\",\n gitGraphConfig.titleTopMargin ?? 0,\n db2.getDiagramTitle()\n );\n setupGraphViewbox(void 0, diagram2, gitGraphConfig.diagramPadding, gitGraphConfig.useMaxWidth);\n}, \"draw\");\nvar gitGraphRenderer_default = {\n draw\n};\nif (void 0) {\n const { it, expect, describe } = void 0;\n describe(\"drawText\", () => {\n it(\"should drawText\", () => {\n const svgLabel = drawText(\"main\");\n expect(svgLabel).toBeDefined();\n expect(svgLabel.children[0].innerHTML).toBe(\"main\");\n });\n });\n describe(\"branchPosition\", () => {\n const bbox = {\n x: 0,\n y: 0,\n width: 10,\n height: 10,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n toJSON: /* @__PURE__ */ __name(() => \"\", \"toJSON\")\n };\n it(\"should setBranchPositions LR with two branches\", () => {\n dir = \"LR\";\n const pos = setBranchPosition(\"main\", 0, 0, bbox, true);\n expect(pos).toBe(90);\n expect(branchPos.get(\"main\")).toEqual({ pos: 0, index: 0 });\n const posNext = setBranchPosition(\"develop\", pos, 1, bbox, true);\n expect(posNext).toBe(180);\n expect(branchPos.get(\"develop\")).toEqual({ pos, index: 1 });\n });\n it(\"should setBranchPositions TB with two branches\", () => {\n dir = \"TB\";\n bbox.width = 34.9921875;\n const pos = setBranchPosition(\"main\", 0, 0, bbox, true);\n expect(pos).toBe(107.49609375);\n expect(branchPos.get(\"main\")).toEqual({ pos: 0, index: 0 });\n bbox.width = 56.421875;\n const posNext = setBranchPosition(\"develop\", pos, 1, bbox, true);\n expect(posNext).toBe(225.70703125);\n expect(branchPos.get(\"develop\")).toEqual({ pos, index: 1 });\n });\n });\n describe(\"commitPosition\", () => {\n const commits = /* @__PURE__ */ new Map([\n [\n \"commitZero\",\n {\n id: \"ZERO\",\n message: \"\",\n seq: 0,\n type: commitType.NORMAL,\n tags: [],\n parents: [],\n branch: \"main\"\n }\n ],\n [\n \"commitA\",\n {\n id: \"A\",\n message: \"\",\n seq: 1,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"ZERO\"],\n branch: \"feature\"\n }\n ],\n [\n \"commitB\",\n {\n id: \"B\",\n message: \"\",\n seq: 2,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"A\"],\n branch: \"feature\"\n }\n ],\n [\n \"commitM\",\n {\n id: \"M\",\n message: \"merged branch feature into main\",\n seq: 3,\n type: commitType.MERGE,\n tags: [],\n parents: [\"ZERO\", \"B\"],\n branch: \"main\",\n customId: true\n }\n ],\n [\n \"commitC\",\n {\n id: \"C\",\n message: \"\",\n seq: 4,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"ZERO\"],\n branch: \"release\"\n }\n ],\n [\n \"commit5_8928ea0\",\n {\n id: \"5-8928ea0\",\n message: \"cherry-picked [object Object] into release\",\n seq: 5,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: [\"C\", \"M\"],\n branch: \"release\"\n }\n ],\n [\n \"commitD\",\n {\n id: \"D\",\n message: \"\",\n seq: 6,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"5-8928ea0\"],\n branch: \"release\"\n }\n ],\n [\n \"commit7_ed848ba\",\n {\n id: \"7-ed848ba\",\n message: \"cherry-picked [object Object] into release\",\n seq: 7,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: [\"D\", \"M\"],\n branch: \"release\"\n }\n ]\n ]);\n let pos = 0;\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"feature\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"release\", { pos: 224.03515625, index: 2 });\n describe(\"TB\", () => {\n pos = 30;\n dir = \"TB\";\n const expectedCommitPositionTB = /* @__PURE__ */ new Map([\n [\"commitZero\", { x: 0, y: 40, posWithOffset: 40 }],\n [\"commitA\", { x: 107.49609375, y: 90, posWithOffset: 90 }],\n [\"commitB\", { x: 107.49609375, y: 140, posWithOffset: 140 }],\n [\"commitM\", { x: 0, y: 190, posWithOffset: 190 }],\n [\"commitC\", { x: 224.03515625, y: 240, posWithOffset: 240 }],\n [\"commit5_8928ea0\", { x: 224.03515625, y: 290, posWithOffset: 290 }],\n [\"commitD\", { x: 224.03515625, y: 340, posWithOffset: 340 }],\n [\"commit7_ed848ba\", { x: 224.03515625, y: 390, posWithOffset: 390 }]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit2, pos, false);\n expect(position).toEqual(expectedCommitPositionTB.get(key));\n pos += 50;\n });\n });\n });\n describe(\"LR\", () => {\n let pos2 = 30;\n dir = \"LR\";\n const expectedCommitPositionLR = /* @__PURE__ */ new Map([\n [\"commitZero\", { x: 0, y: 40, posWithOffset: 40 }],\n [\"commitA\", { x: 107.49609375, y: 90, posWithOffset: 90 }],\n [\"commitB\", { x: 107.49609375, y: 140, posWithOffset: 140 }],\n [\"commitM\", { x: 0, y: 190, posWithOffset: 190 }],\n [\"commitC\", { x: 224.03515625, y: 240, posWithOffset: 240 }],\n [\"commit5_8928ea0\", { x: 224.03515625, y: 290, posWithOffset: 290 }],\n [\"commitD\", { x: 224.03515625, y: 340, posWithOffset: 340 }],\n [\"commit7_ed848ba\", { x: 224.03515625, y: 390, posWithOffset: 390 }]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit2, pos2, false);\n expect(position).toEqual(expectedCommitPositionLR.get(key));\n pos2 += 50;\n });\n });\n });\n describe(\"getCommitClassType\", () => {\n const expectedCommitClassType = /* @__PURE__ */ new Map([\n [\"commitZero\", \"commit-normal\"],\n [\"commitA\", \"commit-normal\"],\n [\"commitB\", \"commit-normal\"],\n [\"commitM\", \"commit-merge\"],\n [\"commitC\", \"commit-normal\"],\n [\"commit5_8928ea0\", \"commit-cherry-pick\"],\n [\"commitD\", \"commit-normal\"],\n [\"commit7_ed848ba\", \"commit-cherry-pick\"]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct class type for commit ${key}`, () => {\n const classType = getCommitClassType(commit2);\n expect(classType).toBe(expectedCommitClassType.get(key));\n });\n });\n });\n });\n describe(\"building BT parallel commit diagram\", () => {\n const commits = /* @__PURE__ */ new Map([\n [\n \"1-abcdefg\",\n {\n id: \"1-abcdefg\",\n message: \"\",\n seq: 0,\n type: 0,\n tags: [],\n parents: [],\n branch: \"main\"\n }\n ],\n [\n \"2-abcdefg\",\n {\n id: \"2-abcdefg\",\n message: \"\",\n seq: 1,\n type: 0,\n tags: [],\n parents: [\"1-abcdefg\"],\n branch: \"main\"\n }\n ],\n [\n \"3-abcdefg\",\n {\n id: \"3-abcdefg\",\n message: \"\",\n seq: 2,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"develop\"\n }\n ],\n [\n \"4-abcdefg\",\n {\n id: \"4-abcdefg\",\n message: \"\",\n seq: 3,\n type: 0,\n tags: [],\n parents: [\"3-abcdefg\"],\n branch: \"develop\"\n }\n ],\n [\n \"5-abcdefg\",\n {\n id: \"5-abcdefg\",\n message: \"\",\n seq: 4,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"feature\"\n }\n ],\n [\n \"6-abcdefg\",\n {\n id: \"6-abcdefg\",\n message: \"\",\n seq: 5,\n type: 0,\n tags: [],\n parents: [\"5-abcdefg\"],\n branch: \"feature\"\n }\n ],\n [\n \"7-abcdefg\",\n {\n id: \"7-abcdefg\",\n message: \"\",\n seq: 6,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"main\"\n }\n ],\n [\n \"8-abcdefg\",\n {\n id: \"8-abcdefg\",\n message: \"\",\n seq: 7,\n type: 0,\n tags: [],\n parents: [\"7-abcdefg\"],\n branch: \"main\"\n }\n ]\n ]);\n const expectedCommitPosition = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", { x: 0, y: 40 }],\n [\"2-abcdefg\", { x: 0, y: 90 }],\n [\"3-abcdefg\", { x: 107.49609375, y: 140 }],\n [\"4-abcdefg\", { x: 107.49609375, y: 190 }],\n [\"5-abcdefg\", { x: 225.70703125, y: 140 }],\n [\"6-abcdefg\", { x: 225.70703125, y: 190 }],\n [\"7-abcdefg\", { x: 0, y: 140 }],\n [\"8-abcdefg\", { x: 0, y: 190 }]\n ]);\n const expectedCommitPositionAfterParallel = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", { x: 0, y: 210 }],\n [\"2-abcdefg\", { x: 0, y: 160 }],\n [\"3-abcdefg\", { x: 107.49609375, y: 110 }],\n [\"4-abcdefg\", { x: 107.49609375, y: 60 }],\n [\"5-abcdefg\", { x: 225.70703125, y: 110 }],\n [\"6-abcdefg\", { x: 225.70703125, y: 60 }],\n [\"7-abcdefg\", { x: 0, y: 110 }],\n [\"8-abcdefg\", { x: 0, y: 60 }]\n ]);\n const expectedCommitCurrentPosition = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", 30],\n [\"2-abcdefg\", 80],\n [\"3-abcdefg\", 130],\n [\"4-abcdefg\", 180],\n [\"5-abcdefg\", 130],\n [\"6-abcdefg\", 180],\n [\"7-abcdefg\", 130],\n [\"8-abcdefg\", 180]\n ]);\n const sortedKeys = [...expectedCommitPosition.keys()];\n it(\"should get the correct commit position and current position\", () => {\n dir = \"BT\";\n let curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"develop\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"feature\", { pos: 225.70703125, index: 2 });\n commits.forEach((commit2, key) => {\n if (commit2.parents.length > 0) {\n curPos = calculateCommitPosition(commit2);\n }\n const position = setCommitPosition(commit2, curPos);\n expect(position).toEqual(expectedCommitPosition.get(key));\n expect(curPos).toEqual(expectedCommitCurrentPosition.get(key));\n });\n });\n it(\"should get the correct commit position after parallel commits\", () => {\n commitPos.clear();\n branchPos.clear();\n dir = \"BT\";\n const curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"develop\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"feature\", { pos: 225.70703125, index: 2 });\n setParallelBTPos(sortedKeys, commits, curPos);\n sortedKeys.forEach((commit2) => {\n const position = commitPos.get(commit2);\n expect(position).toEqual(expectedCommitPositionAfterParallel.get(commit2));\n });\n });\n });\n it(\"add\", () => {\n commitPos.set(\"parent1\", { x: 1, y: 1 });\n commitPos.set(\"parent2\", { x: 2, y: 2 });\n commitPos.set(\"parent3\", { x: 3, y: 3 });\n dir = \"LR\";\n const parents = [\"parent1\", \"parent2\", \"parent3\"];\n const closestParent = findClosestParent(parents);\n expect(closestParent).toBe(\"parent3\");\n commitPos.clear();\n });\n}\n\n// src/diagrams/git/styles.js\nvar GIT_NAMED_COLOR_COUNT = 8;\nvar REDUX_GEOMETRY_THEMES2 = /* @__PURE__ */ new Set([\"redux\", \"redux-dark\", \"redux-color\", \"redux-dark-color\"]);\nvar COLOR_THEMES2 = /* @__PURE__ */ new Set([\"redux-color\", \"redux-dark-color\"]);\nvar NEO_THEMES = /* @__PURE__ */ new Set([\"neo\", \"neo-dark\"]);\nvar DARK_THEMES2 = /* @__PURE__ */ new Set([\"dark\", \"redux-dark\", \"redux-dark-color\", \"neo-dark\"]);\nvar NEO_COLOR_GEN_THEMES = /* @__PURE__ */ new Set([\n \"redux\",\n \"redux-dark\",\n \"redux-color\",\n \"redux-dark-color\",\n \"neo\",\n \"neo-dark\"\n]);\nvar genGitGraphGradient = /* @__PURE__ */ __name((options) => {\n const { svgId } = options;\n let sections = \"\";\n if (options.useGradient && svgId) {\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n sections += `\n .label${i} { fill: ${options.mainBkg}; stroke: url(${svgId}-gradient); stroke-width: ${options.strokeWidth};}\n `;\n }\n }\n return sections;\n}, \"genGitGraphGradient\");\nvar genColor = /* @__PURE__ */ __name((options) => {\n const config = getConfig();\n const { theme, themeVariables } = config;\n const { borderColorArray } = themeVariables;\n const useReduxGeometry = REDUX_GEOMETRY_THEMES2.has(theme);\n if (NEO_THEMES.has(theme)) {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n if (i === 0) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder};}\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.nodeBorder}; }\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n .commit-cherry-pick${i} { stroke: ${options.nodeBorder}; }\n ${genGitGraphGradient(options)}`;\n } else {\n const ci = i % GIT_NAMED_COLOR_COUNT;\n sections += `\n .branch-label${i} { fill: ${options[\"gitBranchLabel\" + ci]}; }\n .commit${i} { stroke: ${options[\"git\" + ci]}; fill: ${options[\"git\" + ci]}; }\n .commit-highlight${i} { stroke: ${options[\"gitInv\" + ci]}; fill: ${options[\"gitInv\" + ci]}; }\n .arrow${i} { stroke: ${options[\"git\" + ci]}; }\n `;\n }\n }\n return sections;\n } else if (!COLOR_THEMES2.has(theme)) {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.nodeBorder}; }\n .label${i} { fill: ${options.mainBkg}; stroke: ${options.nodeBorder}; stroke-width: ${options.strokeWidth}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"}}\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n .commit-cherry-pick${i} { stroke: ${options.nodeBorder}; }\n `;\n }\n return sections;\n } else {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n if (i === 0) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.mainBkg}; }\n .label${i} { fill: ${options.mainBkg}; stroke: ${options.nodeBorder}; stroke-width: ${options.strokeWidth}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n `;\n } else {\n const colorIndex = i % borderColorArray.length;\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .commit${i} { stroke: ${borderColorArray[colorIndex]}; fill: ${borderColorArray[colorIndex]}; }\n .commit-highlight${i} { stroke: ${borderColorArray[colorIndex]}; fill: ${borderColorArray[colorIndex]}; }\n .label${i} { fill: ${DARK_THEMES2.has(theme) ? options.mainBkg : borderColorArray[colorIndex]}; stroke: ${borderColorArray[colorIndex]}; stroke-width: ${options.strokeWidth}; }\n .arrow${i} { stroke: ${borderColorArray[colorIndex]}; }\n `;\n }\n }\n return sections;\n }\n}, \"genColor\");\nvar normalTheme = /* @__PURE__ */ __name((options) => {\n return `${Array.from({ length: options.THEME_COLOR_LIMIT }, (_, i) => i).map((i) => {\n const ci = i % GIT_NAMED_COLOR_COUNT;\n return `\n .branch-label${i} { fill: ${options[\"gitBranchLabel\" + ci]}; }\n .commit${i} { stroke: ${options[\"git\" + ci]}; fill: ${options[\"git\" + ci]}; }\n .commit-highlight${i} { stroke: ${options[\"gitInv\" + ci]}; fill: ${options[\"gitInv\" + ci]}; }\n .label${i} { fill: ${options[\"git\" + ci]}; }\n .arrow${i} { stroke: ${options[\"git\" + ci]}; }\n `;\n }).join(\"\\n\")}`;\n}, \"normalTheme\");\nvar getStyles = /* @__PURE__ */ __name((options) => {\n const config = getConfig();\n const { theme } = config;\n const useNeoColorGen = NEO_COLOR_GEN_THEMES.has(theme);\n return `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n \n ${useNeoColorGen ? genColor(options) : normalTheme(options)}\n\n .branch {\n stroke-width: ${options.strokeWidth};\n stroke: ${options.commitLineColor ?? options.lineColor};\n stroke-dasharray: ${useNeoColorGen ? \"4 2\" : \"2\"};\n }\n .commit-label { font-size: ${options.commitLabelFontSize}; fill: ${useNeoColorGen ? options.nodeBorder : options.commitLabelColor}; ${useNeoColorGen ? `font-weight:${options.noteFontWeight};` : \"\"}}\n .commit-label-bkg { font-size: ${options.commitLabelFontSize}; fill: ${useNeoColorGen ? \"transparent\" : options.commitLabelBackground}; opacity: ${useNeoColorGen ? \"\" : 0.5}; }\n .tag-label { font-size: ${options.tagLabelFontSize}; fill: ${options.tagLabelColor};}\n .tag-label-bkg { fill: ${useNeoColorGen ? options.mainBkg : options.tagLabelBackground}; stroke: ${useNeoColorGen ? options.nodeBorder : options.tagLabelBorder}; ${useNeoColorGen ? `filter:${options.dropShadow}` : \"\"} }\n .tag-hole { fill: ${options.textColor}; }\n\n .commit-merge {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n }\n .commit-reverse {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n stroke-width: ${useNeoColorGen ? options.strokeWidth : 3};\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n }\n\n .arrow {\n /* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */\n stroke-width: ${REDUX_GEOMETRY_THEMES2.has(theme) ? options.strokeWidth : 8};\n stroke-linecap: round;\n fill: none\n }\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n`;\n}, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/git/gitGraphDiagram.ts\nvar diagram = {\n parser,\n db,\n renderer: gitGraphRenderer_default,\n styles: styles_default\n};\nexport {\n diagram\n};\n"],"names":["commitType","DEFAULT_GITGRAPH_CONFIG","defaultConfig_default","getConfig3","__name","cleanAndMerge","getConfig","state","ImperativeState","config","mainBranchName","mainBranchOrder","getID","random","uniqBy","list","fn","recordMap","out","item","key","setDirection","dir2","setOptions","rawOptString","log","e","getOptions","commit","commitDB","msg","id","type","tags","common_default","tag","newCommit","branch","branchDB","name","order","checkout","merge","mergeDB","otherBranch","customId","overrideType","customTags","currentBranchCheck","otherBranchCheck","currentCommit","otherCommit","error","verifiedBranch","commit2","cherryPick","cherryPickDB","sourceId","targetId","parentCommitId","sourceCommit","sourceCommitBranch","currentCommitId","branch2","upsert","arr","newVal","index","prettyPrintCommitHistory","commitArr","commit3","line","c","label","prettyPrint","node","getCommitsArray","clear2","clear","getBranchesAsObjArray","branchConfig","i","a","b","getBranches","getCommits","o","getCurrentBranch","getDirection","getHead","db","setAccTitle","getAccTitle","getAccDescription","setAccDescription","setDiagramTitle","getDiagramTitle","populate","ast","db2","populateCommonDb","statement","parseStatement","parser2","stmt","parseCommit","parseBranch","parseMerge","parseCheckout","parseCherryPicking","merge2","checkout2","cherryPicking","parser","input","parse","LAYOUT_OFFSET","COMMIT_STEP","PX","PY","THEME_COLOR_LIMIT","REDUX_GEOMETRY_THEMES","REDUX_BRANCH_LABEL_PADDING_Y","COLOR_THEMES","DARK_THEMES","calcColorIndex","rawIndex","limit","avoidDefaultColor","branchPos","commitPos","defaultPos","allCommitsDict","lanes","maxPos","dir","clear3","drawText","txt","svgLabel","row","tspan","findClosestParent","parents","closestParent","comparisonFunc","targetPosition","parent","parentPosition","findClosestParentBT","maxPosition","setParallelBTPos","sortedKeys","commits","defaultPos2","curPos","roots","calculateCommitPosition","setCommitPosition","setRootPosition","x","y","findClosestParentPos","p","closestParentPos","drawCommitBullet","gBullets","commitPosition","typeClass","branchIndex","commitSymbolType","theme","getConfig2","useReduxGeometry","useColorTheme","isDark","circle","circle2","cross","constValue","drawCommitLabel","gLabels","pos","gitGraphConfig","wrapper","labelBkg","text","bbox","r_x","r_y","drawCommitTags","yOffset","maxTagBboxWidth","maxTagBboxHeight","tagElements","tagValue","rect","hole","tagBbox","yOffset2","h2","ly","yOrigin","getCommitClassType","calculatePosition","commitPos2","defaultCommitPosition","getCommitPosition","isParallelCommits","posWithOffset","branchY","drawCommits","svg","modifyGraph","keys","sortKeys","seqA","seqB","shouldRerouteArrow","commitA","commitB","p1","p2","allCommits","branchToGetCurve","isOnBranchToGetCurve","isBetweenCommits","commitX","findLane","y1","y2","depth","candidate","lane","diff","drawArrow","arrowTheme","arrowNeedsRerouting","arc","arc2","radius","offset","colorClassNum","lineDef","lineY","lineX","drawArrows","gArrows","drawBranches","branches","look","themeVariables","dropShadow","themeColorLimit","g","adjustIndexForTheme","spineY","labelElement","bkg","borderRadius","labelPaddingX","labelPaddingY","setBranchPosition","rotateCommitLabel","draw","ver","diagObj","diagram2","select","useGradient","gradientStart","gradientStop","filterColor","gradient","branchLabel","utils_default","setupGraphViewbox","gitGraphRenderer_default","GIT_NAMED_COLOR_COUNT","REDUX_GEOMETRY_THEMES2","COLOR_THEMES2","NEO_THEMES","DARK_THEMES2","NEO_COLOR_GEN_THEMES","genGitGraphGradient","options","svgId","sections","genColor","borderColorArray","ci","colorIndex","normalTheme","_","getStyles","useNeoColorGen","styles_default","diagram"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"gitGraphDiagram-IHSO6WYX-DFSd1OPO.js","sources":["../../../node_modules/.pnpm/mermaid@11.16.0/node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-IHSO6WYX.mjs"],"sourcesContent":["import {\n ImperativeState\n} from \"./chunk-2Q5K7J3B.mjs\";\nimport {\n populateCommonDb\n} from \"./chunk-JWPE2WC7.mjs\";\nimport {\n cleanAndMerge,\n random,\n utils_default\n} from \"./chunk-ICXQ74PX.mjs\";\nimport {\n clear,\n common_default,\n defaultConfig_default,\n getAccDescription,\n getAccTitle,\n getConfig,\n getConfig2,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n setupGraphViewbox2 as setupGraphViewbox\n} from \"./chunk-WYO6CB5R.mjs\";\nimport {\n log\n} from \"./chunk-X3CZISLH.mjs\";\nimport {\n __name\n} from \"./chunk-Y2CYZVJY.mjs\";\n\n// src/diagrams/git/gitGraphParser.ts\nimport { parse } from \"@mermaid-js/parser\";\n\n// src/diagrams/git/gitGraphTypes.ts\nvar commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4\n};\n\n// src/diagrams/git/gitGraphAst.ts\nvar DEFAULT_GITGRAPH_CONFIG = defaultConfig_default.gitGraph;\nvar getConfig3 = /* @__PURE__ */ __name(() => {\n const config = cleanAndMerge({\n ...DEFAULT_GITGRAPH_CONFIG,\n ...getConfig().gitGraph\n });\n return config;\n}, \"getConfig\");\nvar state = new ImperativeState(() => {\n const config = getConfig3();\n const mainBranchName = config.mainBranchName;\n const mainBranchOrder = config.mainBranchOrder;\n return {\n mainBranchName,\n commits: /* @__PURE__ */ new Map(),\n head: null,\n branchConfig: /* @__PURE__ */ new Map([[mainBranchName, { name: mainBranchName, order: mainBranchOrder }]]),\n branches: /* @__PURE__ */ new Map([[mainBranchName, null]]),\n currBranch: mainBranchName,\n direction: \"LR\",\n seq: 0,\n options: {}\n };\n});\nfunction getID() {\n return random({ length: 7 });\n}\n__name(getID, \"getID\");\nfunction uniqBy(list, fn) {\n const recordMap = /* @__PURE__ */ Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\n__name(uniqBy, \"uniqBy\");\nvar setDirection = /* @__PURE__ */ __name(function(dir2) {\n state.records.direction = dir2;\n}, \"setDirection\");\nvar setOptions = /* @__PURE__ */ __name(function(rawOptString) {\n log.debug(\"options str\", rawOptString);\n rawOptString = rawOptString?.trim();\n rawOptString = rawOptString || \"{}\";\n try {\n state.records.options = JSON.parse(rawOptString);\n } catch (e) {\n log.error(\"error while parsing gitGraph options\", e.message);\n }\n}, \"setOptions\");\nvar getOptions = /* @__PURE__ */ __name(function() {\n return state.records.options;\n}, \"getOptions\");\nvar commit = /* @__PURE__ */ __name(function(commitDB) {\n let msg = commitDB.msg;\n let id = commitDB.id;\n const type = commitDB.type;\n let tags = commitDB.tags;\n log.info(\"commit\", msg, id, type, tags);\n log.debug(\"Entering commit:\", msg, id, type, tags);\n const config = getConfig3();\n id = common_default.sanitizeText(id, config);\n msg = common_default.sanitizeText(msg, config);\n tags = tags?.map((tag) => common_default.sanitizeText(tag, config));\n const newCommit = {\n id: id ? id : state.records.seq + \"-\" + getID(),\n message: msg,\n seq: state.records.seq++,\n type: type ?? commitType.NORMAL,\n tags: tags ?? [],\n parents: state.records.head == null ? [] : [state.records.head.id],\n branch: state.records.currBranch\n };\n state.records.head = newCommit;\n log.info(\"main branch\", config.mainBranchName);\n if (state.records.commits.has(newCommit.id)) {\n log.warn(`Commit ID ${newCommit.id} already exists`);\n }\n state.records.commits.set(newCommit.id, newCommit);\n state.records.branches.set(state.records.currBranch, newCommit.id);\n log.debug(\"in pushCommit \" + newCommit.id);\n}, \"commit\");\nvar branch = /* @__PURE__ */ __name(function(branchDB) {\n let name = branchDB.name;\n const order = branchDB.order;\n name = common_default.sanitizeText(name, getConfig3());\n if (state.records.branches.has(name)) {\n throw new Error(\n `Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using \"checkout ${name}\")`\n );\n }\n state.records.branches.set(name, state.records.head != null ? state.records.head.id : null);\n state.records.branchConfig.set(name, { name, order });\n checkout(name);\n log.debug(\"in createBranch\");\n}, \"branch\");\nvar merge = /* @__PURE__ */ __name((mergeDB) => {\n let otherBranch = mergeDB.branch;\n let customId = mergeDB.id;\n const overrideType = mergeDB.type;\n const customTags = mergeDB.tags;\n const config = getConfig3();\n otherBranch = common_default.sanitizeText(otherBranch, config);\n if (customId) {\n customId = common_default.sanitizeText(customId, config);\n }\n const currentBranchCheck = state.records.branches.get(state.records.currBranch);\n const otherBranchCheck = state.records.branches.get(otherBranch);\n const currentCommit = currentBranchCheck ? state.records.commits.get(currentBranchCheck) : void 0;\n const otherCommit = otherBranchCheck ? state.records.commits.get(otherBranchCheck) : void 0;\n if (currentCommit && otherCommit && currentCommit.branch === otherBranch) {\n throw new Error(`Cannot merge branch '${otherBranch}' into itself.`);\n }\n if (state.records.currBranch === otherBranch) {\n const error = new Error('Incorrect usage of \"merge\". Cannot merge a branch to itself');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"branch abc\"]\n };\n throw error;\n }\n if (currentCommit === void 0 || !currentCommit) {\n const error = new Error(\n `Incorrect usage of \"merge\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"commit\"]\n };\n throw error;\n }\n if (!state.records.branches.has(otherBranch)) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") does not exist\"\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [`branch ${otherBranch}`]\n };\n throw error;\n }\n if (otherCommit === void 0 || !otherCommit) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") has no commits\"\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: ['\"commit\"']\n };\n throw error;\n }\n if (currentCommit === otherCommit) {\n const error = new Error('Incorrect usage of \"merge\". Both branches have same head');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"branch abc\"]\n };\n throw error;\n }\n if (customId && state.records.commits.has(customId)) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Commit with id:' + customId + \" already exists, use different custom id\"\n );\n error.hash = {\n text: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(\" \")}`,\n token: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(\" \")}`,\n expected: [\n `merge ${otherBranch} ${customId}_UNIQUE ${overrideType} ${customTags?.join(\" \")}`\n ]\n };\n throw error;\n }\n const verifiedBranch = otherBranchCheck ? otherBranchCheck : \"\";\n const commit2 = {\n id: customId || `${state.records.seq}-${getID()}`,\n message: `merged branch ${otherBranch} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, verifiedBranch],\n branch: state.records.currBranch,\n type: commitType.MERGE,\n customType: overrideType,\n customId: customId ? true : false,\n tags: customTags ?? []\n };\n state.records.head = commit2;\n state.records.commits.set(commit2.id, commit2);\n state.records.branches.set(state.records.currBranch, commit2.id);\n log.debug(state.records.branches);\n log.debug(\"in mergeBranch\");\n}, \"merge\");\nvar cherryPick = /* @__PURE__ */ __name(function(cherryPickDB) {\n let sourceId = cherryPickDB.id;\n let targetId = cherryPickDB.targetId;\n let tags = cherryPickDB.tags;\n let parentCommitId = cherryPickDB.parent;\n log.debug(\"Entering cherryPick:\", sourceId, targetId, tags);\n const config = getConfig3();\n sourceId = common_default.sanitizeText(sourceId, config);\n targetId = common_default.sanitizeText(targetId, config);\n tags = tags?.map((tag) => common_default.sanitizeText(tag, config));\n parentCommitId = common_default.sanitizeText(parentCommitId, config);\n if (!sourceId || !state.records.commits.has(sourceId)) {\n const error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit id should exist and provided'\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const sourceCommit = state.records.commits.get(sourceId);\n if (sourceCommit === void 0 || !sourceCommit) {\n throw new Error('Incorrect usage of \"cherryPick\". Source commit id should exist and provided');\n }\n if (parentCommitId && !(Array.isArray(sourceCommit.parents) && sourceCommit.parents.includes(parentCommitId))) {\n const error = new Error(\n \"Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.\"\n );\n throw error;\n }\n const sourceCommitBranch = sourceCommit.branch;\n if (sourceCommit.type === commitType.MERGE && !parentCommitId) {\n const error = new Error(\n \"Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.\"\n );\n throw error;\n }\n if (!targetId || !state.records.commits.has(targetId)) {\n if (sourceCommitBranch === state.records.currBranch) {\n const error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit is already on current branch'\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommitId = state.records.branches.get(state.records.currBranch);\n if (currentCommitId === void 0 || !currentCommitId) {\n const error = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommit = state.records.commits.get(currentCommitId);\n if (currentCommit === void 0 || !currentCommit) {\n const error = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const commit2 = {\n id: state.records.seq + \"-\" + getID(),\n message: `cherry-picked ${sourceCommit?.message} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, sourceCommit.id],\n branch: state.records.currBranch,\n type: commitType.CHERRY_PICK,\n tags: tags ? tags.filter(Boolean) : [\n `cherry-pick:${sourceCommit.id}${sourceCommit.type === commitType.MERGE ? `|parent:${parentCommitId}` : \"\"}`\n ]\n };\n state.records.head = commit2;\n state.records.commits.set(commit2.id, commit2);\n state.records.branches.set(state.records.currBranch, commit2.id);\n log.debug(state.records.branches);\n log.debug(\"in cherryPick\");\n }\n}, \"cherryPick\");\nvar checkout = /* @__PURE__ */ __name(function(branch2) {\n branch2 = common_default.sanitizeText(branch2, getConfig3());\n if (!state.records.branches.has(branch2)) {\n const error = new Error(\n `Trying to checkout branch which is not yet created. (Help try using \"branch ${branch2}\")`\n );\n error.hash = {\n text: `checkout ${branch2}`,\n token: `checkout ${branch2}`,\n expected: [`branch ${branch2}`]\n };\n throw error;\n } else {\n state.records.currBranch = branch2;\n const id = state.records.branches.get(state.records.currBranch);\n if (id === void 0 || !id) {\n state.records.head = null;\n } else {\n state.records.head = state.records.commits.get(id) ?? null;\n }\n }\n}, \"checkout\");\nfunction upsert(arr, key, newVal) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newVal);\n } else {\n arr.splice(index, 1, newVal);\n }\n}\n__name(upsert, \"upsert\");\nfunction prettyPrintCommitHistory(commitArr) {\n const commit2 = commitArr.reduce((out, commit3) => {\n if (out.seq > commit3.seq) {\n return out;\n }\n return commit3;\n }, commitArr[0]);\n let line = \"\";\n commitArr.forEach(function(c) {\n if (c === commit2) {\n line += \"\t*\";\n } else {\n line += \"\t|\";\n }\n });\n const label = [line, commit2.id, commit2.seq];\n for (const branch2 in state.records.branches) {\n if (state.records.branches.get(branch2) === commit2.id) {\n label.push(branch2);\n }\n }\n log.debug(label.join(\" \"));\n if (commit2.parents && commit2.parents.length == 2 && commit2.parents[0] && commit2.parents[1]) {\n const newCommit = state.records.commits.get(commit2.parents[0]);\n upsert(commitArr, commit2, newCommit);\n if (commit2.parents[1]) {\n commitArr.push(state.records.commits.get(commit2.parents[1]));\n }\n } else if (commit2.parents.length == 0) {\n return;\n } else {\n if (commit2.parents[0]) {\n const newCommit = state.records.commits.get(commit2.parents[0]);\n upsert(commitArr, commit2, newCommit);\n }\n }\n commitArr = uniqBy(commitArr, (c) => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n__name(prettyPrintCommitHistory, \"prettyPrintCommitHistory\");\nvar prettyPrint = /* @__PURE__ */ __name(function() {\n log.debug(state.records.commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n}, \"prettyPrint\");\nvar clear2 = /* @__PURE__ */ __name(function() {\n state.reset();\n clear();\n}, \"clear\");\nvar getBranchesAsObjArray = /* @__PURE__ */ __name(function() {\n const branchesArray = [...state.records.branchConfig.values()].map((branchConfig, i) => {\n if (branchConfig.order !== null && branchConfig.order !== void 0) {\n return branchConfig;\n }\n return {\n ...branchConfig,\n order: parseFloat(`0.${i}`)\n };\n }).sort((a, b) => (a.order ?? 0) - (b.order ?? 0)).map(({ name }) => ({ name }));\n return branchesArray;\n}, \"getBranchesAsObjArray\");\nvar getBranches = /* @__PURE__ */ __name(function() {\n return state.records.branches;\n}, \"getBranches\");\nvar getCommits = /* @__PURE__ */ __name(function() {\n return state.records.commits;\n}, \"getCommits\");\nvar getCommitsArray = /* @__PURE__ */ __name(function() {\n const commitArr = [...state.records.commits.values()];\n commitArr.forEach(function(o) {\n log.debug(o.id);\n });\n commitArr.sort((a, b) => a.seq - b.seq);\n return commitArr;\n}, \"getCommitsArray\");\nvar getCurrentBranch = /* @__PURE__ */ __name(function() {\n return state.records.currBranch;\n}, \"getCurrentBranch\");\nvar getDirection = /* @__PURE__ */ __name(function() {\n return state.records.direction;\n}, \"getDirection\");\nvar getHead = /* @__PURE__ */ __name(function() {\n return state.records.head;\n}, \"getHead\");\nvar db = {\n commitType,\n getConfig: getConfig3,\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n cherryPick,\n checkout,\n //reset,\n prettyPrint,\n clear: clear2,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n setDiagramTitle,\n getDiagramTitle\n};\n\n// src/diagrams/git/gitGraphParser.ts\nvar populate = /* @__PURE__ */ __name((ast, db2) => {\n populateCommonDb(ast, db2);\n if (ast.dir) {\n db2.setDirection(ast.dir);\n }\n for (const statement of ast.statements) {\n parseStatement(statement, db2);\n }\n}, \"populate\");\nvar parseStatement = /* @__PURE__ */ __name((statement, db2) => {\n const parsers = {\n Commit: /* @__PURE__ */ __name((stmt) => db2.commit(parseCommit(stmt)), \"Commit\"),\n Branch: /* @__PURE__ */ __name((stmt) => db2.branch(parseBranch(stmt)), \"Branch\"),\n Merge: /* @__PURE__ */ __name((stmt) => db2.merge(parseMerge(stmt)), \"Merge\"),\n Checkout: /* @__PURE__ */ __name((stmt) => db2.checkout(parseCheckout(stmt)), \"Checkout\"),\n CherryPicking: /* @__PURE__ */ __name((stmt) => db2.cherryPick(parseCherryPicking(stmt)), \"CherryPicking\")\n };\n const parser2 = parsers[statement.$type];\n if (parser2) {\n parser2(statement);\n } else {\n log.error(`Unknown statement type: ${statement.$type}`);\n }\n}, \"parseStatement\");\nvar parseCommit = /* @__PURE__ */ __name((commit2) => {\n const commitDB = {\n id: commit2.id,\n msg: commit2.message ?? \"\",\n type: commit2.type !== void 0 ? commitType[commit2.type] : commitType.NORMAL,\n tags: commit2.tags ?? void 0\n };\n return commitDB;\n}, \"parseCommit\");\nvar parseBranch = /* @__PURE__ */ __name((branch2) => {\n const branchDB = {\n name: branch2.name,\n order: branch2.order ?? 0\n };\n return branchDB;\n}, \"parseBranch\");\nvar parseMerge = /* @__PURE__ */ __name((merge2) => {\n const mergeDB = {\n branch: merge2.branch,\n id: merge2.id ?? \"\",\n type: merge2.type !== void 0 ? commitType[merge2.type] : void 0,\n tags: merge2.tags ?? void 0\n };\n return mergeDB;\n}, \"parseMerge\");\nvar parseCheckout = /* @__PURE__ */ __name((checkout2) => {\n const branch2 = checkout2.branch;\n return branch2;\n}, \"parseCheckout\");\nvar parseCherryPicking = /* @__PURE__ */ __name((cherryPicking) => {\n const cherryPickDB = {\n id: cherryPicking.id,\n targetId: \"\",\n tags: cherryPicking.tags?.length === 0 ? void 0 : cherryPicking.tags,\n parent: cherryPicking.parent\n };\n return cherryPickDB;\n}, \"parseCherryPicking\");\nvar parser = {\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"gitGraph\", input);\n log.debug(ast);\n populate(ast, db);\n }, \"parse\")\n};\nif (void 0) {\n const { it, expect, describe } = void 0;\n const mockDB = {\n commitType,\n setDirection: vi.fn(),\n commit: vi.fn(),\n branch: vi.fn(),\n merge: vi.fn(),\n cherryPick: vi.fn(),\n checkout: vi.fn()\n };\n describe(\"GitGraph Parser\", () => {\n it(\"should parse a commit statement\", () => {\n const commit2 = {\n $type: \"Commit\",\n id: \"1\",\n message: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n };\n parseStatement(commit2, mockDB);\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: \"1\",\n msg: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n });\n it(\"should parse a branch statement\", () => {\n const branch2 = {\n $type: \"Branch\",\n name: \"newBranch\",\n order: 1\n };\n parseStatement(branch2, mockDB);\n expect(mockDB.branch).toHaveBeenCalledWith({ name: \"newBranch\", order: 1 });\n });\n it(\"should parse a checkout statement\", () => {\n const checkout2 = {\n $type: \"Checkout\",\n branch: \"newBranch\"\n };\n parseStatement(checkout2, mockDB);\n expect(mockDB.checkout).toHaveBeenCalledWith(\"newBranch\");\n });\n it(\"should parse a merge statement\", () => {\n const merge2 = {\n $type: \"Merge\",\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n };\n parseStatement(merge2, mockDB);\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n });\n it(\"should parse a cherry picking statement\", () => {\n const cherryPick2 = {\n $type: \"CherryPicking\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n parent: \"2\"\n };\n parseStatement(cherryPick2, mockDB);\n expect(mockDB.cherryPick).toHaveBeenCalledWith({\n id: \"1\",\n targetId: \"\",\n parent: \"2\",\n tags: [\"tag1\", \"tag2\"]\n });\n });\n it(\"should parse a langium generated gitGraph ast\", () => {\n const dummy = {\n $type: \"GitGraph\",\n statements: [],\n accDescr: \"\",\n accTitle: \"\",\n title: \"\"\n };\n const gitGraphAst = {\n $type: \"GitGraph\",\n statements: [\n {\n $container: dummy,\n $type: \"Commit\",\n id: \"1\",\n message: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n },\n {\n $container: dummy,\n $type: \"Branch\",\n name: \"newBranch\",\n order: 1\n },\n {\n $container: dummy,\n $type: \"Merge\",\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n },\n {\n $container: dummy,\n $type: \"Checkout\",\n branch: \"newBranch\"\n },\n {\n $container: dummy,\n $type: \"CherryPicking\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n parent: \"2\"\n }\n ],\n accDescr: \"\",\n accTitle: \"\",\n title: \"\"\n };\n populate(gitGraphAst, mockDB);\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: \"1\",\n msg: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n expect(mockDB.branch).toHaveBeenCalledWith({ name: \"newBranch\", order: 1 });\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n expect(mockDB.checkout).toHaveBeenCalledWith(\"newBranch\");\n });\n });\n}\n\n// src/diagrams/git/gitGraphRenderer.ts\nimport { select } from \"d3\";\nvar LAYOUT_OFFSET = 10;\nvar COMMIT_STEP = 40;\nvar PX = 4;\nvar PY = 2;\nvar THEME_COLOR_LIMIT = 8;\nvar REDUX_GEOMETRY_THEMES = /* @__PURE__ */ new Set([\"redux\", \"redux-dark\", \"redux-color\", \"redux-dark-color\"]);\nvar REDUX_BRANCH_LABEL_PADDING_Y = 12;\nvar COLOR_THEMES = /* @__PURE__ */ new Set([\"redux-color\", \"redux-dark-color\"]);\nvar DARK_THEMES = /* @__PURE__ */ new Set([\"dark\", \"redux-dark\", \"redux-dark-color\", \"neo-dark\"]);\nvar calcColorIndex = /* @__PURE__ */ __name((rawIndex, limit, avoidDefaultColor = false) => {\n if (avoidDefaultColor && rawIndex > 0) {\n return (rawIndex - 1) % (limit - 1) + 1;\n }\n return rawIndex % limit;\n}, \"calcColorIndex\");\nvar branchPos = /* @__PURE__ */ new Map();\nvar commitPos = /* @__PURE__ */ new Map();\nvar defaultPos = 30;\nvar allCommitsDict = /* @__PURE__ */ new Map();\nvar lanes = [];\nvar maxPos = 0;\nvar dir = \"LR\";\nvar clear3 = /* @__PURE__ */ __name(() => {\n branchPos.clear();\n commitPos.clear();\n allCommitsDict.clear();\n maxPos = 0;\n lanes = [];\n dir = \"LR\";\n}, \"clear\");\nvar drawText = /* @__PURE__ */ __name((txt) => {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n const rows = typeof txt === \"string\" ? txt.split(/\\\\n|\\n|<br\\s*\\/?>/gi) : txt;\n rows.forEach((row) => {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n tspan.setAttribute(\"class\", \"row\");\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n });\n return svgLabel;\n}, \"drawText\");\nvar findClosestParent = /* @__PURE__ */ __name((parents) => {\n let closestParent;\n let comparisonFunc;\n let targetPosition;\n if (dir === \"BT\") {\n comparisonFunc = /* @__PURE__ */ __name((a, b) => a <= b, \"comparisonFunc\");\n targetPosition = Infinity;\n } else {\n comparisonFunc = /* @__PURE__ */ __name((a, b) => a >= b, \"comparisonFunc\");\n targetPosition = 0;\n }\n parents.forEach((parent) => {\n const parentPosition = dir === \"TB\" || dir == \"BT\" ? commitPos.get(parent)?.y : commitPos.get(parent)?.x;\n if (parentPosition !== void 0 && comparisonFunc(parentPosition, targetPosition)) {\n closestParent = parent;\n targetPosition = parentPosition;\n }\n });\n return closestParent;\n}, \"findClosestParent\");\nvar findClosestParentBT = /* @__PURE__ */ __name((parents) => {\n let closestParent = \"\";\n let maxPosition = Infinity;\n parents.forEach((parent) => {\n const parentPosition = commitPos.get(parent).y;\n if (parentPosition <= maxPosition) {\n closestParent = parent;\n maxPosition = parentPosition;\n }\n });\n return closestParent || void 0;\n}, \"findClosestParentBT\");\nvar setParallelBTPos = /* @__PURE__ */ __name((sortedKeys, commits, defaultPos2) => {\n let curPos = defaultPos2;\n let maxPosition = defaultPos2;\n const roots = [];\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (!commit2) {\n throw new Error(`Commit not found for key ${key}`);\n }\n if (commit2.parents.length) {\n curPos = calculateCommitPosition(commit2);\n maxPosition = Math.max(curPos, maxPosition);\n } else {\n roots.push(commit2);\n }\n setCommitPosition(commit2, curPos);\n });\n curPos = maxPosition;\n roots.forEach((commit2) => {\n setRootPosition(commit2, curPos, defaultPos2);\n });\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (commit2?.parents.length) {\n const closestParent = findClosestParentBT(commit2.parents);\n curPos = commitPos.get(closestParent).y - COMMIT_STEP;\n if (curPos <= maxPosition) {\n maxPosition = curPos;\n }\n const x = branchPos.get(commit2.branch).pos;\n const y = curPos - LAYOUT_OFFSET;\n commitPos.set(commit2.id, { x, y });\n }\n });\n}, \"setParallelBTPos\");\nvar findClosestParentPos = /* @__PURE__ */ __name((commit2) => {\n const closestParent = findClosestParent(commit2.parents.filter((p) => p !== null));\n if (!closestParent) {\n throw new Error(`Closest parent not found for commit ${commit2.id}`);\n }\n const closestParentPos = commitPos.get(closestParent)?.y;\n if (closestParentPos === void 0) {\n throw new Error(`Closest parent position not found for commit ${commit2.id}`);\n }\n return closestParentPos;\n}, \"findClosestParentPos\");\nvar calculateCommitPosition = /* @__PURE__ */ __name((commit2) => {\n const closestParentPos = findClosestParentPos(commit2);\n return closestParentPos + COMMIT_STEP;\n}, \"calculateCommitPosition\");\nvar setCommitPosition = /* @__PURE__ */ __name((commit2, curPos) => {\n const branch2 = branchPos.get(commit2.branch);\n if (!branch2) {\n throw new Error(`Branch not found for commit ${commit2.id}`);\n }\n const x = branch2.pos;\n const y = curPos + LAYOUT_OFFSET;\n commitPos.set(commit2.id, { x, y });\n return { x, y };\n}, \"setCommitPosition\");\nvar setRootPosition = /* @__PURE__ */ __name((commit2, curPos, defaultPos2) => {\n const branch2 = branchPos.get(commit2.branch);\n if (!branch2) {\n throw new Error(`Branch not found for commit ${commit2.id}`);\n }\n const y = curPos + defaultPos2;\n const x = branch2.pos;\n commitPos.set(commit2.id, { x, y });\n}, \"setRootPosition\");\nvar drawCommitBullet = /* @__PURE__ */ __name((gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType) => {\n const { theme } = getConfig2();\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(theme ?? \"\");\n const useColorTheme = COLOR_THEMES.has(theme ?? \"\");\n const isDark = DARK_THEMES.has(theme ?? \"\");\n if (commitSymbolType === commitType.HIGHLIGHT) {\n gBullets.append(\"rect\").attr(\"x\", commitPosition.x - 10 + (useReduxGeometry ? 3 : 0)).attr(\"y\", commitPosition.y - 10 + (useReduxGeometry ? 3 : 0)).attr(\"width\", useReduxGeometry ? 14 : 20).attr(\"height\", useReduxGeometry ? 14 : 20).attr(\n \"class\",\n `commit ${commit2.id} commit-highlight${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)} ${typeClass}-outer`\n );\n gBullets.append(\"rect\").attr(\"x\", commitPosition.x - 6 + (useReduxGeometry ? 2 : 0)).attr(\"y\", commitPosition.y - 6 + (useReduxGeometry ? 2 : 0)).attr(\"width\", useReduxGeometry ? 8 : 12).attr(\"height\", useReduxGeometry ? 8 : 12).attr(\n \"class\",\n `commit ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)} ${typeClass}-inner`\n );\n } else if (commitSymbolType === commitType.CHERRY_PICK) {\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x).attr(\"cy\", commitPosition.y).attr(\"r\", useReduxGeometry ? 7 : 10).attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x - 3).attr(\"cy\", commitPosition.y + 2).attr(\"r\", useReduxGeometry ? 2.5 : 2.75).attr(\"fill\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x + 3).attr(\"cy\", commitPosition.y + 2).attr(\"r\", useReduxGeometry ? 2.5 : 2.75).attr(\"fill\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", commitPosition.x + 3).attr(\"y1\", commitPosition.y + 1).attr(\"x2\", commitPosition.x).attr(\"y2\", commitPosition.y - 5).attr(\"stroke\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", commitPosition.x - 3).attr(\"y1\", commitPosition.y + 1).attr(\"x2\", commitPosition.x).attr(\"y2\", commitPosition.y - 5).attr(\"stroke\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n } else {\n const circle = gBullets.append(\"circle\");\n circle.attr(\"cx\", commitPosition.x);\n circle.attr(\"cy\", commitPosition.y);\n circle.attr(\"r\", useReduxGeometry ? 7 : 10);\n circle.attr(\n \"class\",\n `commit ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n if (commitSymbolType === commitType.MERGE) {\n const circle2 = gBullets.append(\"circle\");\n circle2.attr(\"cx\", commitPosition.x);\n circle2.attr(\"cy\", commitPosition.y);\n circle2.attr(\"r\", useReduxGeometry ? 5 : 6);\n circle2.attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n }\n if (commitSymbolType === commitType.REVERSE) {\n const cross = gBullets.append(\"path\");\n const constValue = useReduxGeometry ? 4 : 5;\n cross.attr(\n \"d\",\n `M ${commitPosition.x - constValue},${commitPosition.y - constValue}L${commitPosition.x + constValue},${commitPosition.y + constValue}M${commitPosition.x - constValue},${commitPosition.y + constValue}L${commitPosition.x + constValue},${commitPosition.y - constValue}`\n ).attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n }\n }\n}, \"drawCommitBullet\");\nvar drawCommitLabel = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos, gitGraphConfig) => {\n if (commit2.type !== commitType.CHERRY_PICK && (commit2.customId && commit2.type === commitType.MERGE || commit2.type !== commitType.MERGE) && gitGraphConfig.showCommitLabel) {\n const wrapper = gLabels.append(\"g\");\n const labelBkg = wrapper.insert(\"rect\").attr(\"class\", \"commit-label-bkg\");\n const text = wrapper.append(\"text\").attr(\"x\", pos).attr(\"y\", commitPosition.y + 25).attr(\"class\", \"commit-label\").text(commit2.id);\n const bbox = text.node()?.getBBox();\n if (bbox) {\n labelBkg.attr(\"x\", commitPosition.posWithOffset - bbox.width / 2 - PY).attr(\"y\", commitPosition.y + 13.5).attr(\"width\", bbox.width + 2 * PY).attr(\"height\", bbox.height + 2 * PY);\n if (dir === \"TB\" || dir === \"BT\") {\n labelBkg.attr(\"x\", commitPosition.x - (bbox.width + 4 * PX + 5)).attr(\"y\", commitPosition.y - 12);\n text.attr(\"x\", commitPosition.x - (bbox.width + 4 * PX)).attr(\"y\", commitPosition.y + bbox.height - 12);\n } else {\n text.attr(\"x\", commitPosition.posWithOffset - bbox.width / 2);\n }\n if (gitGraphConfig.rotateCommitLabel) {\n if (dir === \"TB\" || dir === \"BT\") {\n text.attr(\n \"transform\",\n \"rotate(-45, \" + commitPosition.x + \", \" + commitPosition.y + \")\"\n );\n labelBkg.attr(\n \"transform\",\n \"rotate(-45, \" + commitPosition.x + \", \" + commitPosition.y + \")\"\n );\n } else {\n const r_x = -7.5 - (bbox.width + 10) / 25 * 9.5;\n const r_y = 10 + bbox.width / 25 * 8.5;\n wrapper.attr(\n \"transform\",\n \"translate(\" + r_x + \", \" + r_y + \") rotate(-45, \" + pos + \", \" + commitPosition.y + \")\"\n );\n }\n }\n }\n }\n}, \"drawCommitLabel\");\nvar drawCommitTags = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos) => {\n if (commit2.tags.length > 0) {\n let yOffset = 0;\n let maxTagBboxWidth = 0;\n let maxTagBboxHeight = 0;\n const tagElements = [];\n for (const tagValue of commit2.tags.reverse()) {\n const rect = gLabels.insert(\"polygon\");\n const hole = gLabels.append(\"circle\");\n const tag = gLabels.append(\"text\").attr(\"y\", commitPosition.y - 16 - yOffset).attr(\"class\", \"tag-label\").text(tagValue);\n const tagBbox = tag.node()?.getBBox();\n if (!tagBbox) {\n throw new Error(\"Tag bbox not found\");\n }\n maxTagBboxWidth = Math.max(maxTagBboxWidth, tagBbox.width);\n maxTagBboxHeight = Math.max(maxTagBboxHeight, tagBbox.height);\n tag.attr(\"x\", commitPosition.posWithOffset - tagBbox.width / 2);\n tagElements.push({\n tag,\n hole,\n rect,\n yOffset\n });\n yOffset += 20;\n }\n for (const { tag, hole, rect, yOffset: yOffset2 } of tagElements) {\n const h2 = maxTagBboxHeight / 2;\n const ly = commitPosition.y - 19.2 - yOffset2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly + PY} \n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly - PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly + h2 + PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly + h2 + PY}`\n );\n hole.attr(\"cy\", ly).attr(\"cx\", pos - maxTagBboxWidth / 2 + PX / 2).attr(\"r\", 1.5).attr(\"class\", \"tag-hole\");\n if (dir === \"TB\" || dir === \"BT\") {\n const yOrigin = pos + yOffset2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${commitPosition.x},${yOrigin + 2}\n ${commitPosition.x},${yOrigin - 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin + h2 + 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin + h2 + 2}`\n ).attr(\"transform\", \"translate(12,12) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n hole.attr(\"cx\", commitPosition.x + PX / 2).attr(\"cy\", yOrigin).attr(\"transform\", \"translate(12,12) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n tag.attr(\"x\", commitPosition.x + 5).attr(\"y\", yOrigin + 3).attr(\"transform\", \"translate(14,14) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n }\n }\n }\n}, \"drawCommitTags\");\nvar getCommitClassType = /* @__PURE__ */ __name((commit2) => {\n const commitSymbolType = commit2.customType ?? commit2.type;\n switch (commitSymbolType) {\n case commitType.NORMAL:\n return \"commit-normal\";\n case commitType.REVERSE:\n return \"commit-reverse\";\n case commitType.HIGHLIGHT:\n return \"commit-highlight\";\n case commitType.MERGE:\n return \"commit-merge\";\n case commitType.CHERRY_PICK:\n return \"commit-cherry-pick\";\n default:\n return \"commit-normal\";\n }\n}, \"getCommitClassType\");\nvar calculatePosition = /* @__PURE__ */ __name((commit2, dir2, pos, commitPos2) => {\n const defaultCommitPosition = { x: 0, y: 0 };\n if (commit2.parents.length > 0) {\n const closestParent = findClosestParent(commit2.parents);\n if (closestParent) {\n const parentPosition = commitPos2.get(closestParent) ?? defaultCommitPosition;\n if (dir2 === \"TB\") {\n return parentPosition.y + COMMIT_STEP;\n } else if (dir2 === \"BT\") {\n const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return parentPosition.x + COMMIT_STEP;\n }\n }\n } else {\n if (dir2 === \"TB\") {\n return defaultPos;\n } else if (dir2 === \"BT\") {\n const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return 0;\n }\n }\n return 0;\n}, \"calculatePosition\");\nvar getCommitPosition = /* @__PURE__ */ __name((commit2, pos, isParallelCommits) => {\n const posWithOffset = dir === \"BT\" && isParallelCommits ? pos : pos + LAYOUT_OFFSET;\n const branchY = branchPos.get(commit2.branch)?.pos;\n const x = dir === \"TB\" || dir === \"BT\" ? branchPos.get(commit2.branch)?.pos : posWithOffset;\n if (x === void 0 || branchY === void 0) {\n throw new Error(`Position were undefined for commit ${commit2.id}`);\n }\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(getConfig2().theme ?? \"\");\n const y = dir === \"TB\" || dir === \"BT\" ? posWithOffset : branchY + (useReduxGeometry ? REDUX_BRANCH_LABEL_PADDING_Y / 2 + 1 : -2);\n return { x, y, posWithOffset };\n}, \"getCommitPosition\");\nvar drawCommits = /* @__PURE__ */ __name((svg, commits, modifyGraph, gitGraphConfig) => {\n const gBullets = svg.append(\"g\").attr(\"class\", \"commit-bullets\");\n const gLabels = svg.append(\"g\").attr(\"class\", \"commit-labels\");\n let pos = dir === \"TB\" || dir === \"BT\" ? defaultPos : 0;\n const keys = [...commits.keys()];\n const isParallelCommits = gitGraphConfig.parallelCommits ?? false;\n const sortKeys = /* @__PURE__ */ __name((a, b) => {\n const seqA = commits.get(a)?.seq;\n const seqB = commits.get(b)?.seq;\n return seqA !== void 0 && seqB !== void 0 ? seqA - seqB : 0;\n }, \"sortKeys\");\n let sortedKeys = keys.sort(sortKeys);\n if (dir === \"BT\") {\n if (isParallelCommits) {\n setParallelBTPos(sortedKeys, commits, pos);\n }\n sortedKeys = sortedKeys.reverse();\n }\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (!commit2) {\n throw new Error(`Commit not found for key ${key}`);\n }\n if (isParallelCommits) {\n pos = calculatePosition(commit2, dir, pos, commitPos);\n }\n const commitPosition = getCommitPosition(commit2, pos, isParallelCommits);\n if (modifyGraph) {\n const typeClass = getCommitClassType(commit2);\n const commitSymbolType = commit2.customType ?? commit2.type;\n const branchIndex = branchPos.get(commit2.branch)?.index ?? 0;\n drawCommitBullet(gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType);\n drawCommitLabel(gLabels, commit2, commitPosition, pos, gitGraphConfig);\n drawCommitTags(gLabels, commit2, commitPosition, pos);\n }\n if (dir === \"TB\" || dir === \"BT\") {\n commitPos.set(commit2.id, { x: commitPosition.x, y: commitPosition.posWithOffset });\n } else {\n commitPos.set(commit2.id, { x: commitPosition.posWithOffset, y: commitPosition.y });\n }\n pos = dir === \"BT\" && isParallelCommits ? pos + COMMIT_STEP : pos + COMMIT_STEP + LAYOUT_OFFSET;\n if (pos > maxPos) {\n maxPos = pos;\n }\n });\n}, \"drawCommits\");\nvar shouldRerouteArrow = /* @__PURE__ */ __name((commitA, commitB, p1, p2, allCommits) => {\n const commitBIsFurthest = dir === \"TB\" || dir === \"BT\" ? p1.x < p2.x : p1.y < p2.y;\n const branchToGetCurve = commitBIsFurthest ? commitB.branch : commitA.branch;\n const isOnBranchToGetCurve = /* @__PURE__ */ __name((x) => x.branch === branchToGetCurve, \"isOnBranchToGetCurve\");\n const isBetweenCommits = /* @__PURE__ */ __name((x) => x.seq > commitA.seq && x.seq < commitB.seq, \"isBetweenCommits\");\n return [...allCommits.values()].some((commitX) => {\n return isBetweenCommits(commitX) && isOnBranchToGetCurve(commitX);\n });\n}, \"shouldRerouteArrow\");\nvar findLane = /* @__PURE__ */ __name((y1, y2, depth = 0) => {\n const candidate = y1 + Math.abs(y1 - y2) / 2;\n if (depth > 5) {\n return candidate;\n }\n const ok = lanes.every((lane) => Math.abs(lane - candidate) >= 10);\n if (ok) {\n lanes.push(candidate);\n return candidate;\n }\n const diff = Math.abs(y1 - y2);\n return findLane(y1, y2 - diff / 5, depth + 1);\n}, \"findLane\");\nvar drawArrow = /* @__PURE__ */ __name((svg, commitA, commitB, allCommits) => {\n const { theme: arrowTheme } = getConfig2();\n const useColorTheme = COLOR_THEMES.has(arrowTheme ?? \"\");\n const p1 = commitPos.get(commitA.id);\n const p2 = commitPos.get(commitB.id);\n if (p1 === void 0 || p2 === void 0) {\n throw new Error(`Commit positions not found for commits ${commitA.id} and ${commitB.id}`);\n }\n const arrowNeedsRerouting = shouldRerouteArrow(commitA, commitB, p1, p2, allCommits);\n let arc = \"\";\n let arc2 = \"\";\n let radius = 0;\n let offset = 0;\n let colorClassNum = branchPos.get(commitB.branch)?.index;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n }\n let lineDef;\n if (arrowNeedsRerouting) {\n arc = \"A 10 10, 0, 0, 0,\";\n arc2 = \"A 10 10, 0, 0, 1,\";\n radius = 10;\n offset = 10;\n const lineY = p1.y < p2.y ? findLane(p1.y, p2.y) : findLane(p2.y, p1.y);\n const lineX = p1.x < p2.x ? findLane(p1.x, p2.x) : findLane(p2.x, p1.x);\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc2} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc2} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === \"BT\") {\n if (p1.x < p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc2} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc2} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius} ${arc} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc2} ${p2.x} ${lineY + offset} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius} ${arc2} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc} ${p2.x} ${lineY - offset} L ${p2.x} ${p2.y}`;\n }\n }\n } else {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x > p2.x) {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc2} ${p1.x - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x + radius} ${p1.y} ${arc} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === \"BT\") {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x > p2.x) {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc} ${p1.x - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x + radius} ${p1.y} ${arc2} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.y > p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.y === p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n }\n }\n if (lineDef === void 0) {\n throw new Error(\"Line definition not found\");\n }\n svg.append(\"path\").attr(\"d\", lineDef).attr(\n \"class\",\n \"arrow arrow\" + calcColorIndex(colorClassNum, THEME_COLOR_LIMIT, useColorTheme)\n );\n}, \"drawArrow\");\nvar drawArrows = /* @__PURE__ */ __name((svg, commits) => {\n const gArrows = svg.append(\"g\").attr(\"class\", \"commit-arrows\");\n [...commits.keys()].forEach((key) => {\n const commit2 = commits.get(key);\n if (commit2.parents && commit2.parents.length > 0) {\n commit2.parents.forEach((parent) => {\n drawArrow(gArrows, commits.get(parent), commit2, commits);\n });\n }\n });\n}, \"drawArrows\");\nvar drawBranches = /* @__PURE__ */ __name((svg, branches, gitGraphConfig, id) => {\n const { look, theme, themeVariables } = getConfig2();\n const { dropShadow, THEME_COLOR_LIMIT: themeColorLimit } = themeVariables;\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(theme ?? \"\");\n const useColorTheme = COLOR_THEMES.has(theme ?? \"\");\n const g = svg.append(\"g\");\n branches.forEach((branch2, index) => {\n const adjustIndexForTheme = calcColorIndex(\n index,\n useReduxGeometry ? themeColorLimit : THEME_COLOR_LIMIT,\n useColorTheme\n );\n const pos = branchPos.get(branch2.name)?.pos;\n if (pos === void 0) {\n throw new Error(`Position not found for branch ${branch2.name}`);\n }\n const spineY = dir === \"TB\" || dir === \"BT\" ? pos : useReduxGeometry ? pos + REDUX_BRANCH_LABEL_PADDING_Y / 2 + 1 : pos - 2;\n const line = g.append(\"line\");\n line.attr(\"x1\", 0);\n line.attr(\"y1\", spineY);\n line.attr(\"x2\", maxPos);\n line.attr(\"y2\", spineY);\n line.attr(\"class\", \"branch branch\" + adjustIndexForTheme);\n if (dir === \"TB\") {\n line.attr(\"y1\", defaultPos);\n line.attr(\"x1\", pos);\n line.attr(\"y2\", maxPos);\n line.attr(\"x2\", pos);\n } else if (dir === \"BT\") {\n line.attr(\"y1\", maxPos);\n line.attr(\"x1\", pos);\n line.attr(\"y2\", defaultPos);\n line.attr(\"x2\", pos);\n }\n lanes.push(spineY);\n const name = branch2.name;\n const labelElement = drawText(name);\n const bkg = g.insert(\"rect\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\" + adjustIndexForTheme);\n label.node().appendChild(labelElement);\n const bbox = labelElement.getBBox();\n const borderRadius = useReduxGeometry ? 0 : 4;\n const labelPaddingX = useReduxGeometry ? 16 : 0;\n const labelPaddingY = useReduxGeometry ? REDUX_BRANCH_LABEL_PADDING_Y : 0;\n if (look === \"neo\") {\n bkg.attr(\"data-look\", `neo`);\n }\n bkg.attr(\"class\", \"branchLabelBkg label\" + adjustIndexForTheme).attr(\n \"style\",\n look === \"neo\" ? `filter:${useReduxGeometry ? `url(#${id}-drop-shadow)` : dropShadow}` : \"\"\n ).attr(\"rx\", borderRadius).attr(\"ry\", borderRadius).attr(\"x\", -bbox.width - 4 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)).attr(\"y\", -bbox.height / 2 + 10).attr(\"width\", bbox.width + 18 + labelPaddingX).attr(\"height\", bbox.height + 4 + labelPaddingY);\n label.attr(\n \"transform\",\n \"translate(\" + (-bbox.width - 14 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0) + labelPaddingX / 2) + \", \" + (spineY - bbox.height / 2 - 2) + \")\"\n );\n if (dir === \"TB\") {\n bkg.attr(\"x\", pos - bbox.width / 2 - 10).attr(\"y\", 0);\n label.attr(\"transform\", \"translate(\" + (pos - bbox.width / 2 - 5) + \", 0)\");\n if (useReduxGeometry) {\n bkg.attr(\"transform\", `translate(${-labelPaddingX / 2 - 3}, ${-labelPaddingY - 10})`);\n label.attr(\n \"transform\",\n \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + (-labelPaddingY * 2 + 7) + \")\"\n );\n }\n } else if (dir === \"BT\") {\n bkg.attr(\"x\", pos - bbox.width / 2 - 10).attr(\"y\", maxPos);\n label.attr(\"transform\", \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + maxPos + \")\");\n if (useReduxGeometry) {\n bkg.attr(\"transform\", `translate(${-labelPaddingX / 2 - 3}, ${labelPaddingY + 10})`);\n label.attr(\n \"transform\",\n \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + (maxPos + labelPaddingY * 2 + 4) + \")\"\n );\n }\n } else {\n bkg.attr(\"transform\", \"translate(-19, \" + (spineY - 12 - labelPaddingY / 2) + \")\");\n }\n });\n}, \"drawBranches\");\nvar setBranchPosition = /* @__PURE__ */ __name(function(name, pos, index, bbox, rotateCommitLabel) {\n branchPos.set(name, { pos, index });\n pos += 50 + (rotateCommitLabel ? 40 : 0) + (dir === \"TB\" || dir === \"BT\" ? bbox.width / 2 : 0);\n return pos;\n}, \"setBranchPosition\");\nvar draw = /* @__PURE__ */ __name(function(txt, id, ver, diagObj) {\n clear3();\n log.debug(\"in gitgraph renderer\", txt + \"\\n\", \"id:\", id, ver);\n const db2 = diagObj.db;\n if (!db2.getConfig) {\n log.error(\"getConfig method is not available on db\");\n return;\n }\n const gitGraphConfig = db2.getConfig();\n const rotateCommitLabel = gitGraphConfig.rotateCommitLabel ?? false;\n allCommitsDict = db2.getCommits();\n const branches = db2.getBranchesAsObjArray();\n dir = db2.getDirection();\n const diagram2 = select(`[id=\"${id}\"]`);\n const { look, theme, themeVariables } = getConfig2();\n const { useGradient, gradientStart, gradientStop, filterColor } = themeVariables;\n if (useGradient) {\n const gradient = diagram2.append(\"defs\").append(\"linearGradient\").attr(\"id\", id + \"-gradient\").attr(\"gradientUnits\", \"objectBoundingBox\").attr(\"x1\", \"0%\").attr(\"y1\", \"0%\").attr(\"x2\", \"100%\").attr(\"y2\", \"0%\");\n gradient.append(\"stop\").attr(\"offset\", \"0%\").attr(\"stop-color\", gradientStart).attr(\"stop-opacity\", 1);\n gradient.append(\"stop\").attr(\"offset\", \"100%\").attr(\"stop-color\", gradientStop).attr(\"stop-opacity\", 1);\n }\n if (look === \"neo\" && REDUX_GEOMETRY_THEMES.has(theme ?? \"\")) {\n diagram2.append(\"defs\").append(\"filter\").attr(\"id\", id + \"-drop-shadow\").attr(\"height\", \"130%\").attr(\"width\", \"130%\").append(\"feDropShadow\").attr(\"dx\", \"4\").attr(\"dy\", \"4\").attr(\"stdDeviation\", 0).attr(\"flood-opacity\", \"0.06\").attr(\"flood-color\", filterColor);\n }\n let pos = 0;\n branches.forEach((branch2, index) => {\n const labelElement = drawText(branch2.name);\n const g = diagram2.append(\"g\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\");\n label.node()?.appendChild(labelElement);\n const bbox = labelElement.getBBox();\n pos = setBranchPosition(branch2.name, pos, index, bbox, rotateCommitLabel);\n label.remove();\n branchLabel.remove();\n g.remove();\n });\n drawCommits(diagram2, allCommitsDict, false, gitGraphConfig);\n if (gitGraphConfig.showBranches) {\n drawBranches(diagram2, branches, gitGraphConfig, id);\n }\n drawArrows(diagram2, allCommitsDict);\n drawCommits(diagram2, allCommitsDict, true, gitGraphConfig);\n utils_default.insertTitle(\n diagram2,\n \"gitTitleText\",\n gitGraphConfig.titleTopMargin ?? 0,\n db2.getDiagramTitle()\n );\n setupGraphViewbox(void 0, diagram2, gitGraphConfig.diagramPadding, gitGraphConfig.useMaxWidth);\n}, \"draw\");\nvar gitGraphRenderer_default = {\n draw\n};\nif (void 0) {\n const { it, expect, describe } = void 0;\n describe(\"drawText\", () => {\n it(\"should drawText\", () => {\n const svgLabel = drawText(\"main\");\n expect(svgLabel).toBeDefined();\n expect(svgLabel.children[0].innerHTML).toBe(\"main\");\n });\n });\n describe(\"branchPosition\", () => {\n const bbox = {\n x: 0,\n y: 0,\n width: 10,\n height: 10,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n toJSON: /* @__PURE__ */ __name(() => \"\", \"toJSON\")\n };\n it(\"should setBranchPositions LR with two branches\", () => {\n dir = \"LR\";\n const pos = setBranchPosition(\"main\", 0, 0, bbox, true);\n expect(pos).toBe(90);\n expect(branchPos.get(\"main\")).toEqual({ pos: 0, index: 0 });\n const posNext = setBranchPosition(\"develop\", pos, 1, bbox, true);\n expect(posNext).toBe(180);\n expect(branchPos.get(\"develop\")).toEqual({ pos, index: 1 });\n });\n it(\"should setBranchPositions TB with two branches\", () => {\n dir = \"TB\";\n bbox.width = 34.9921875;\n const pos = setBranchPosition(\"main\", 0, 0, bbox, true);\n expect(pos).toBe(107.49609375);\n expect(branchPos.get(\"main\")).toEqual({ pos: 0, index: 0 });\n bbox.width = 56.421875;\n const posNext = setBranchPosition(\"develop\", pos, 1, bbox, true);\n expect(posNext).toBe(225.70703125);\n expect(branchPos.get(\"develop\")).toEqual({ pos, index: 1 });\n });\n });\n describe(\"commitPosition\", () => {\n const commits = /* @__PURE__ */ new Map([\n [\n \"commitZero\",\n {\n id: \"ZERO\",\n message: \"\",\n seq: 0,\n type: commitType.NORMAL,\n tags: [],\n parents: [],\n branch: \"main\"\n }\n ],\n [\n \"commitA\",\n {\n id: \"A\",\n message: \"\",\n seq: 1,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"ZERO\"],\n branch: \"feature\"\n }\n ],\n [\n \"commitB\",\n {\n id: \"B\",\n message: \"\",\n seq: 2,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"A\"],\n branch: \"feature\"\n }\n ],\n [\n \"commitM\",\n {\n id: \"M\",\n message: \"merged branch feature into main\",\n seq: 3,\n type: commitType.MERGE,\n tags: [],\n parents: [\"ZERO\", \"B\"],\n branch: \"main\",\n customId: true\n }\n ],\n [\n \"commitC\",\n {\n id: \"C\",\n message: \"\",\n seq: 4,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"ZERO\"],\n branch: \"release\"\n }\n ],\n [\n \"commit5_8928ea0\",\n {\n id: \"5-8928ea0\",\n message: \"cherry-picked [object Object] into release\",\n seq: 5,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: [\"C\", \"M\"],\n branch: \"release\"\n }\n ],\n [\n \"commitD\",\n {\n id: \"D\",\n message: \"\",\n seq: 6,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"5-8928ea0\"],\n branch: \"release\"\n }\n ],\n [\n \"commit7_ed848ba\",\n {\n id: \"7-ed848ba\",\n message: \"cherry-picked [object Object] into release\",\n seq: 7,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: [\"D\", \"M\"],\n branch: \"release\"\n }\n ]\n ]);\n let pos = 0;\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"feature\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"release\", { pos: 224.03515625, index: 2 });\n describe(\"TB\", () => {\n pos = 30;\n dir = \"TB\";\n const expectedCommitPositionTB = /* @__PURE__ */ new Map([\n [\"commitZero\", { x: 0, y: 40, posWithOffset: 40 }],\n [\"commitA\", { x: 107.49609375, y: 90, posWithOffset: 90 }],\n [\"commitB\", { x: 107.49609375, y: 140, posWithOffset: 140 }],\n [\"commitM\", { x: 0, y: 190, posWithOffset: 190 }],\n [\"commitC\", { x: 224.03515625, y: 240, posWithOffset: 240 }],\n [\"commit5_8928ea0\", { x: 224.03515625, y: 290, posWithOffset: 290 }],\n [\"commitD\", { x: 224.03515625, y: 340, posWithOffset: 340 }],\n [\"commit7_ed848ba\", { x: 224.03515625, y: 390, posWithOffset: 390 }]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit2, pos, false);\n expect(position).toEqual(expectedCommitPositionTB.get(key));\n pos += 50;\n });\n });\n });\n describe(\"LR\", () => {\n let pos2 = 30;\n dir = \"LR\";\n const expectedCommitPositionLR = /* @__PURE__ */ new Map([\n [\"commitZero\", { x: 0, y: 40, posWithOffset: 40 }],\n [\"commitA\", { x: 107.49609375, y: 90, posWithOffset: 90 }],\n [\"commitB\", { x: 107.49609375, y: 140, posWithOffset: 140 }],\n [\"commitM\", { x: 0, y: 190, posWithOffset: 190 }],\n [\"commitC\", { x: 224.03515625, y: 240, posWithOffset: 240 }],\n [\"commit5_8928ea0\", { x: 224.03515625, y: 290, posWithOffset: 290 }],\n [\"commitD\", { x: 224.03515625, y: 340, posWithOffset: 340 }],\n [\"commit7_ed848ba\", { x: 224.03515625, y: 390, posWithOffset: 390 }]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit2, pos2, false);\n expect(position).toEqual(expectedCommitPositionLR.get(key));\n pos2 += 50;\n });\n });\n });\n describe(\"getCommitClassType\", () => {\n const expectedCommitClassType = /* @__PURE__ */ new Map([\n [\"commitZero\", \"commit-normal\"],\n [\"commitA\", \"commit-normal\"],\n [\"commitB\", \"commit-normal\"],\n [\"commitM\", \"commit-merge\"],\n [\"commitC\", \"commit-normal\"],\n [\"commit5_8928ea0\", \"commit-cherry-pick\"],\n [\"commitD\", \"commit-normal\"],\n [\"commit7_ed848ba\", \"commit-cherry-pick\"]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct class type for commit ${key}`, () => {\n const classType = getCommitClassType(commit2);\n expect(classType).toBe(expectedCommitClassType.get(key));\n });\n });\n });\n });\n describe(\"building BT parallel commit diagram\", () => {\n const commits = /* @__PURE__ */ new Map([\n [\n \"1-abcdefg\",\n {\n id: \"1-abcdefg\",\n message: \"\",\n seq: 0,\n type: 0,\n tags: [],\n parents: [],\n branch: \"main\"\n }\n ],\n [\n \"2-abcdefg\",\n {\n id: \"2-abcdefg\",\n message: \"\",\n seq: 1,\n type: 0,\n tags: [],\n parents: [\"1-abcdefg\"],\n branch: \"main\"\n }\n ],\n [\n \"3-abcdefg\",\n {\n id: \"3-abcdefg\",\n message: \"\",\n seq: 2,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"develop\"\n }\n ],\n [\n \"4-abcdefg\",\n {\n id: \"4-abcdefg\",\n message: \"\",\n seq: 3,\n type: 0,\n tags: [],\n parents: [\"3-abcdefg\"],\n branch: \"develop\"\n }\n ],\n [\n \"5-abcdefg\",\n {\n id: \"5-abcdefg\",\n message: \"\",\n seq: 4,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"feature\"\n }\n ],\n [\n \"6-abcdefg\",\n {\n id: \"6-abcdefg\",\n message: \"\",\n seq: 5,\n type: 0,\n tags: [],\n parents: [\"5-abcdefg\"],\n branch: \"feature\"\n }\n ],\n [\n \"7-abcdefg\",\n {\n id: \"7-abcdefg\",\n message: \"\",\n seq: 6,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"main\"\n }\n ],\n [\n \"8-abcdefg\",\n {\n id: \"8-abcdefg\",\n message: \"\",\n seq: 7,\n type: 0,\n tags: [],\n parents: [\"7-abcdefg\"],\n branch: \"main\"\n }\n ]\n ]);\n const expectedCommitPosition = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", { x: 0, y: 40 }],\n [\"2-abcdefg\", { x: 0, y: 90 }],\n [\"3-abcdefg\", { x: 107.49609375, y: 140 }],\n [\"4-abcdefg\", { x: 107.49609375, y: 190 }],\n [\"5-abcdefg\", { x: 225.70703125, y: 140 }],\n [\"6-abcdefg\", { x: 225.70703125, y: 190 }],\n [\"7-abcdefg\", { x: 0, y: 140 }],\n [\"8-abcdefg\", { x: 0, y: 190 }]\n ]);\n const expectedCommitPositionAfterParallel = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", { x: 0, y: 210 }],\n [\"2-abcdefg\", { x: 0, y: 160 }],\n [\"3-abcdefg\", { x: 107.49609375, y: 110 }],\n [\"4-abcdefg\", { x: 107.49609375, y: 60 }],\n [\"5-abcdefg\", { x: 225.70703125, y: 110 }],\n [\"6-abcdefg\", { x: 225.70703125, y: 60 }],\n [\"7-abcdefg\", { x: 0, y: 110 }],\n [\"8-abcdefg\", { x: 0, y: 60 }]\n ]);\n const expectedCommitCurrentPosition = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", 30],\n [\"2-abcdefg\", 80],\n [\"3-abcdefg\", 130],\n [\"4-abcdefg\", 180],\n [\"5-abcdefg\", 130],\n [\"6-abcdefg\", 180],\n [\"7-abcdefg\", 130],\n [\"8-abcdefg\", 180]\n ]);\n const sortedKeys = [...expectedCommitPosition.keys()];\n it(\"should get the correct commit position and current position\", () => {\n dir = \"BT\";\n let curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"develop\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"feature\", { pos: 225.70703125, index: 2 });\n commits.forEach((commit2, key) => {\n if (commit2.parents.length > 0) {\n curPos = calculateCommitPosition(commit2);\n }\n const position = setCommitPosition(commit2, curPos);\n expect(position).toEqual(expectedCommitPosition.get(key));\n expect(curPos).toEqual(expectedCommitCurrentPosition.get(key));\n });\n });\n it(\"should get the correct commit position after parallel commits\", () => {\n commitPos.clear();\n branchPos.clear();\n dir = \"BT\";\n const curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"develop\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"feature\", { pos: 225.70703125, index: 2 });\n setParallelBTPos(sortedKeys, commits, curPos);\n sortedKeys.forEach((commit2) => {\n const position = commitPos.get(commit2);\n expect(position).toEqual(expectedCommitPositionAfterParallel.get(commit2));\n });\n });\n });\n it(\"add\", () => {\n commitPos.set(\"parent1\", { x: 1, y: 1 });\n commitPos.set(\"parent2\", { x: 2, y: 2 });\n commitPos.set(\"parent3\", { x: 3, y: 3 });\n dir = \"LR\";\n const parents = [\"parent1\", \"parent2\", \"parent3\"];\n const closestParent = findClosestParent(parents);\n expect(closestParent).toBe(\"parent3\");\n commitPos.clear();\n });\n}\n\n// src/diagrams/git/styles.js\nvar GIT_NAMED_COLOR_COUNT = 8;\nvar REDUX_GEOMETRY_THEMES2 = /* @__PURE__ */ new Set([\"redux\", \"redux-dark\", \"redux-color\", \"redux-dark-color\"]);\nvar COLOR_THEMES2 = /* @__PURE__ */ new Set([\"redux-color\", \"redux-dark-color\"]);\nvar NEO_THEMES = /* @__PURE__ */ new Set([\"neo\", \"neo-dark\"]);\nvar DARK_THEMES2 = /* @__PURE__ */ new Set([\"dark\", \"redux-dark\", \"redux-dark-color\", \"neo-dark\"]);\nvar NEO_COLOR_GEN_THEMES = /* @__PURE__ */ new Set([\n \"redux\",\n \"redux-dark\",\n \"redux-color\",\n \"redux-dark-color\",\n \"neo\",\n \"neo-dark\"\n]);\nvar genGitGraphGradient = /* @__PURE__ */ __name((options) => {\n const { svgId } = options;\n let sections = \"\";\n if (options.useGradient && svgId) {\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n sections += `\n .label${i} { fill: ${options.mainBkg}; stroke: url(${svgId}-gradient); stroke-width: ${options.strokeWidth};}\n `;\n }\n }\n return sections;\n}, \"genGitGraphGradient\");\nvar genColor = /* @__PURE__ */ __name((options) => {\n const config = getConfig();\n const { theme, themeVariables } = config;\n const { borderColorArray } = themeVariables;\n const useReduxGeometry = REDUX_GEOMETRY_THEMES2.has(theme);\n if (NEO_THEMES.has(theme)) {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n if (i === 0) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder};}\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.nodeBorder}; }\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n .commit-cherry-pick${i} { stroke: ${options.nodeBorder}; }\n ${genGitGraphGradient(options)}`;\n } else {\n const ci = i % GIT_NAMED_COLOR_COUNT;\n sections += `\n .branch-label${i} { fill: ${options[\"gitBranchLabel\" + ci]}; }\n .commit${i} { stroke: ${options[\"git\" + ci]}; fill: ${options[\"git\" + ci]}; }\n .commit-highlight${i} { stroke: ${options[\"gitInv\" + ci]}; fill: ${options[\"gitInv\" + ci]}; }\n .arrow${i} { stroke: ${options[\"git\" + ci]}; }\n `;\n }\n }\n return sections;\n } else if (!COLOR_THEMES2.has(theme)) {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.nodeBorder}; }\n .label${i} { fill: ${options.mainBkg}; stroke: ${options.nodeBorder}; stroke-width: ${options.strokeWidth}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"}}\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n .commit-cherry-pick${i} { stroke: ${options.nodeBorder}; }\n `;\n }\n return sections;\n } else {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n if (i === 0) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.mainBkg}; }\n .label${i} { fill: ${options.mainBkg}; stroke: ${options.nodeBorder}; stroke-width: ${options.strokeWidth}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n `;\n } else {\n const colorIndex = i % borderColorArray.length;\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .commit${i} { stroke: ${borderColorArray[colorIndex]}; fill: ${borderColorArray[colorIndex]}; }\n .commit-highlight${i} { stroke: ${borderColorArray[colorIndex]}; fill: ${borderColorArray[colorIndex]}; }\n .label${i} { fill: ${DARK_THEMES2.has(theme) ? options.mainBkg : borderColorArray[colorIndex]}; stroke: ${borderColorArray[colorIndex]}; stroke-width: ${options.strokeWidth}; }\n .arrow${i} { stroke: ${borderColorArray[colorIndex]}; }\n `;\n }\n }\n return sections;\n }\n}, \"genColor\");\nvar normalTheme = /* @__PURE__ */ __name((options) => {\n return `${Array.from({ length: options.THEME_COLOR_LIMIT }, (_, i) => i).map((i) => {\n const ci = i % GIT_NAMED_COLOR_COUNT;\n return `\n .branch-label${i} { fill: ${options[\"gitBranchLabel\" + ci]}; }\n .commit${i} { stroke: ${options[\"git\" + ci]}; fill: ${options[\"git\" + ci]}; }\n .commit-highlight${i} { stroke: ${options[\"gitInv\" + ci]}; fill: ${options[\"gitInv\" + ci]}; }\n .label${i} { fill: ${options[\"git\" + ci]}; }\n .arrow${i} { stroke: ${options[\"git\" + ci]}; }\n `;\n }).join(\"\\n\")}`;\n}, \"normalTheme\");\nvar getStyles = /* @__PURE__ */ __name((options) => {\n const config = getConfig();\n const { theme } = config;\n const useNeoColorGen = NEO_COLOR_GEN_THEMES.has(theme);\n return `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n \n ${useNeoColorGen ? genColor(options) : normalTheme(options)}\n\n .branch {\n stroke-width: ${options.strokeWidth};\n stroke: ${options.commitLineColor ?? options.lineColor};\n stroke-dasharray: ${useNeoColorGen ? \"4 2\" : \"2\"};\n }\n .commit-label { font-size: ${options.commitLabelFontSize}; fill: ${useNeoColorGen ? options.nodeBorder : options.commitLabelColor}; ${useNeoColorGen ? `font-weight:${options.noteFontWeight};` : \"\"}}\n .commit-label-bkg { font-size: ${options.commitLabelFontSize}; fill: ${useNeoColorGen ? \"transparent\" : options.commitLabelBackground}; opacity: ${useNeoColorGen ? \"\" : 0.5}; }\n .tag-label { font-size: ${options.tagLabelFontSize}; fill: ${options.tagLabelColor};}\n .tag-label-bkg { fill: ${useNeoColorGen ? options.mainBkg : options.tagLabelBackground}; stroke: ${useNeoColorGen ? options.nodeBorder : options.tagLabelBorder}; ${useNeoColorGen ? `filter:${options.dropShadow}` : \"\"} }\n .tag-hole { fill: ${options.textColor}; }\n\n .commit-merge {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n }\n .commit-reverse {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n stroke-width: ${useNeoColorGen ? options.strokeWidth : 3};\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n }\n\n .arrow {\n /* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */\n stroke-width: ${REDUX_GEOMETRY_THEMES2.has(theme) ? options.strokeWidth : 8};\n stroke-linecap: round;\n fill: none\n }\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n`;\n}, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/git/gitGraphDiagram.ts\nvar diagram = {\n parser,\n db,\n renderer: gitGraphRenderer_default,\n styles: styles_default\n};\nexport {\n diagram\n};\n"],"names":["commitType","DEFAULT_GITGRAPH_CONFIG","defaultConfig_default","getConfig3","__name","cleanAndMerge","getConfig","state","ImperativeState","config","mainBranchName","mainBranchOrder","getID","random","uniqBy","list","fn","recordMap","out","item","key","setDirection","dir2","setOptions","rawOptString","log","e","getOptions","commit","commitDB","msg","id","type","tags","common_default","tag","newCommit","branch","branchDB","name","order","checkout","merge","mergeDB","otherBranch","customId","overrideType","customTags","currentBranchCheck","otherBranchCheck","currentCommit","otherCommit","error","verifiedBranch","commit2","cherryPick","cherryPickDB","sourceId","targetId","parentCommitId","sourceCommit","sourceCommitBranch","currentCommitId","branch2","upsert","arr","newVal","index","prettyPrintCommitHistory","commitArr","commit3","line","c","label","prettyPrint","node","getCommitsArray","clear2","clear","getBranchesAsObjArray","branchConfig","i","a","b","getBranches","getCommits","o","getCurrentBranch","getDirection","getHead","db","setAccTitle","getAccTitle","getAccDescription","setAccDescription","setDiagramTitle","getDiagramTitle","populate","ast","db2","populateCommonDb","statement","parseStatement","parser2","stmt","parseCommit","parseBranch","parseMerge","parseCheckout","parseCherryPicking","merge2","checkout2","cherryPicking","parser","input","parse","LAYOUT_OFFSET","COMMIT_STEP","PX","PY","THEME_COLOR_LIMIT","REDUX_GEOMETRY_THEMES","REDUX_BRANCH_LABEL_PADDING_Y","COLOR_THEMES","DARK_THEMES","calcColorIndex","rawIndex","limit","avoidDefaultColor","branchPos","commitPos","defaultPos","allCommitsDict","lanes","maxPos","dir","clear3","drawText","txt","svgLabel","row","tspan","findClosestParent","parents","closestParent","comparisonFunc","targetPosition","parent","parentPosition","findClosestParentBT","maxPosition","setParallelBTPos","sortedKeys","commits","defaultPos2","curPos","roots","calculateCommitPosition","setCommitPosition","setRootPosition","x","y","findClosestParentPos","p","closestParentPos","drawCommitBullet","gBullets","commitPosition","typeClass","branchIndex","commitSymbolType","theme","getConfig2","useReduxGeometry","useColorTheme","isDark","circle","circle2","cross","constValue","drawCommitLabel","gLabels","pos","gitGraphConfig","wrapper","labelBkg","text","bbox","r_x","r_y","drawCommitTags","yOffset","maxTagBboxWidth","maxTagBboxHeight","tagElements","tagValue","rect","hole","tagBbox","yOffset2","h2","ly","yOrigin","getCommitClassType","calculatePosition","commitPos2","defaultCommitPosition","getCommitPosition","isParallelCommits","posWithOffset","branchY","drawCommits","svg","modifyGraph","keys","sortKeys","seqA","seqB","shouldRerouteArrow","commitA","commitB","p1","p2","allCommits","branchToGetCurve","isOnBranchToGetCurve","isBetweenCommits","commitX","findLane","y1","y2","depth","candidate","lane","diff","drawArrow","arrowTheme","arrowNeedsRerouting","arc","arc2","radius","offset","colorClassNum","lineDef","lineY","lineX","drawArrows","gArrows","drawBranches","branches","look","themeVariables","dropShadow","themeColorLimit","g","adjustIndexForTheme","spineY","labelElement","bkg","borderRadius","labelPaddingX","labelPaddingY","setBranchPosition","rotateCommitLabel","draw","ver","diagObj","diagram2","select","useGradient","gradientStart","gradientStop","filterColor","gradient","branchLabel","utils_default","setupGraphViewbox","gitGraphRenderer_default","GIT_NAMED_COLOR_COUNT","REDUX_GEOMETRY_THEMES2","COLOR_THEMES2","NEO_THEMES","DARK_THEMES2","NEO_COLOR_GEN_THEMES","genGitGraphGradient","options","svgId","sections","genColor","borderColorArray","ci","colorIndex","normalTheme","_","getStyles","useNeoColorGen","styles_default","diagram"],"mappings":"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","x_google_ignoreList":[0]}