@countermeasure-platform/web-components 1.2.1 → 1.2.2-dev.7.1

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 (302) hide show
  1. package/dist/{arc-jVbrWVYZ.js → arc-DOJ9myHo.js} +21 -21
  2. package/dist/{arc-jVbrWVYZ.js.map → arc-DOJ9myHo.js.map} +1 -1
  3. package/dist/architecture-7EHR7CIX-RjIwnEbG.js +3 -0
  4. package/dist/{architectureDiagram-2XIMDMQ5-D5q0ma9h.js → architectureDiagram-3BPJPVTR-cYFnhp15.js} +165 -152
  5. package/dist/{architectureDiagram-2XIMDMQ5-D5q0ma9h.js.map → architectureDiagram-3BPJPVTR-cYFnhp15.js.map} +1 -1
  6. package/dist/{array-DXadUs1s.js → array-BLp0zq5K.js} +1 -1
  7. package/dist/{array-DXadUs1s.js.map → array-BLp0zq5K.js.map} +1 -1
  8. package/dist/{blockDiagram-WCTKOSBZ-BH3jwWeU.js → blockDiagram-GPEHLZMM-DNLPMFXL.js} +994 -864
  9. package/dist/blockDiagram-GPEHLZMM-DNLPMFXL.js.map +1 -0
  10. package/dist/{c4Diagram-IC4MRINW-OFLrunYI.js → c4Diagram-AAUBKEIU-G8g3OBBg.js} +232 -235
  11. package/dist/c4Diagram-AAUBKEIU-G8g3OBBg.js.map +1 -0
  12. package/dist/channel-MTYqUJFm.js +7 -0
  13. package/dist/{channel-LRbq43st.js.map → channel-MTYqUJFm.js.map} +1 -1
  14. package/dist/{chunk-KX2RTZJC-d9jFqUAY.js → chunk-2J33WTMH-BKsVIUnb.js} +4 -4
  15. package/dist/{chunk-KX2RTZJC-d9jFqUAY.js.map → chunk-2J33WTMH-BKsVIUnb.js.map} +1 -1
  16. package/dist/chunk-3OPIFGDE-CcNRL44h.js +3669 -0
  17. package/dist/chunk-3OPIFGDE-CcNRL44h.js.map +1 -0
  18. package/dist/{chunk-4BX2VUAB-BS9gpN-y.js → chunk-4BX2VUAB-BeLKo9Pn.js} +2 -2
  19. package/dist/{chunk-4BX2VUAB-BS9gpN-y.js.map → chunk-4BX2VUAB-BeLKo9Pn.js.map} +1 -1
  20. package/dist/{chunk-R5LLSJPH-c1IfaK5D.js → chunk-4EGX6M5U-Bh9as06l.js} +13 -13
  21. package/dist/chunk-4EGX6M5U-Bh9as06l.js.map +1 -0
  22. package/dist/{chunk-55IACEB6-DZ-UBhHX.js → chunk-55IACEB6-CuKbiO89.js} +3 -3
  23. package/dist/{chunk-55IACEB6-DZ-UBhHX.js.map → chunk-55IACEB6-CuKbiO89.js.map} +1 -1
  24. package/dist/chunk-5DO6E6H7-CAB8pWf5.js +25 -0
  25. package/dist/chunk-5DO6E6H7-CAB8pWf5.js.map +1 -0
  26. package/dist/{chunk-GEFDOKGD-DGJJEGSm.js → chunk-5ZQYHXKU-CjOcwRY6.js} +570 -326
  27. package/dist/chunk-5ZQYHXKU-CjOcwRY6.js.map +1 -0
  28. package/dist/{chunk-WL4C6EOR-BV-op7zg.js → chunk-727SXJPM-kowsFLrz.js} +724 -569
  29. package/dist/chunk-727SXJPM-kowsFLrz.js.map +1 -0
  30. package/dist/{chunk-NQ4KR5QH-C0nWShNk.js → chunk-AQP2D5EJ-Bc1gUIeA.js} +384 -362
  31. package/dist/chunk-AQP2D5EJ-Bc1gUIeA.js.map +1 -0
  32. package/dist/{chunk-OZEHJAEY-BsQ56PV-.js → chunk-BR22UD5L-BCFxmd5-.js} +16 -16
  33. package/dist/chunk-BR22UD5L-BCFxmd5-.js.map +1 -0
  34. package/dist/{chunk-MX3YWQON-D43mcq1f.js → chunk-BSJP7CBP-Bl94i3-1.js} +7 -5
  35. package/dist/chunk-BSJP7CBP-Bl94i3-1.js.map +1 -0
  36. package/dist/chunk-CSCIHK7Q-DyRIc27i.js +2868 -0
  37. package/dist/chunk-CSCIHK7Q-DyRIc27i.js.map +1 -0
  38. package/dist/chunk-FHYWG6QK-kLWdRarG.js +25 -0
  39. package/dist/chunk-FHYWG6QK-kLWdRarG.js.map +1 -0
  40. package/dist/{chunk-FMBD7UC4-1IxrpdPX.js → chunk-FMBD7UC4-IdpWVRCU.js} +2 -2
  41. package/dist/{chunk-FMBD7UC4-1IxrpdPX.js.map → chunk-FMBD7UC4-IdpWVRCU.js.map} +1 -1
  42. package/dist/chunk-KSCS5N6A-CVcDS9QV.js +563 -0
  43. package/dist/chunk-KSCS5N6A-CVcDS9QV.js.map +1 -0
  44. package/dist/{chunk-YBOYWFTD-DkjEOcgZ.js → chunk-L5ZTLDWV-Day0EgsR.js} +9 -9
  45. package/dist/{chunk-YBOYWFTD-DkjEOcgZ.js.map → chunk-L5ZTLDWV-Day0EgsR.js.map} +1 -1
  46. package/dist/chunk-LZXEDZCA-BO_GpQSR.js +51 -0
  47. package/dist/chunk-LZXEDZCA-BO_GpQSR.js.map +1 -0
  48. package/dist/chunk-MPE355IW-BkN6MrMO.js +25 -0
  49. package/dist/chunk-MPE355IW-BkN6MrMO.js.map +1 -0
  50. package/dist/chunk-MZUSXYTE-94iWO-dh.js +32 -0
  51. package/dist/chunk-MZUSXYTE-94iWO-dh.js.map +1 -0
  52. package/dist/chunk-N66VUXT2-QbIUkiJZ.js +56 -0
  53. package/dist/chunk-N66VUXT2-QbIUkiJZ.js.map +1 -0
  54. package/dist/{chunk-JSJVCQXG-Do17yYig.js → chunk-ND2GUHAM-Boh7GenS.js} +6 -6
  55. package/dist/{chunk-JSJVCQXG-Do17yYig.js.map → chunk-ND2GUHAM-Boh7GenS.js.map} +1 -1
  56. package/dist/chunk-NNHCCRGN-CNU0zvRn.js +20603 -0
  57. package/dist/chunk-NNHCCRGN-CNU0zvRn.js.map +1 -0
  58. package/dist/{chunk-PQ6SQG4A-Cpfc5F4u.js → chunk-NZK2D7GU-D4Ird7wv.js} +4 -4
  59. package/dist/{chunk-PQ6SQG4A-Cpfc5F4u.js.map → chunk-NZK2D7GU-D4Ird7wv.js.map} +1 -1
  60. package/dist/{chunk-PU5JKC2W-DNpn_Yik.js → chunk-O5CBEL6O-DThtyjPO.js} +85 -74
  61. package/dist/{chunk-PU5JKC2W-DNpn_Yik.js.map → chunk-O5CBEL6O-DThtyjPO.js.map} +1 -1
  62. package/dist/chunk-PUPMXCY4-DsO2K8st.js +25 -0
  63. package/dist/chunk-PUPMXCY4-DsO2K8st.js.map +1 -0
  64. package/dist/{chunk-QZHKN3VN-kDNdTVLo.js → chunk-QZHKN3VN-DC5aJQQT.js} +2 -2
  65. package/dist/{chunk-QZHKN3VN-kDNdTVLo.js.map → chunk-QZHKN3VN-DC5aJQQT.js.map} +1 -1
  66. package/dist/chunk-UIBZB4QT-Cu3IcTk1.js +25 -0
  67. package/dist/chunk-UIBZB4QT-Cu3IcTk1.js.map +1 -0
  68. package/dist/chunk-WCWK7LTN-DpMt57Ty.js +33 -0
  69. package/dist/chunk-WCWK7LTN-DpMt57Ty.js.map +1 -0
  70. package/dist/chunk-WU5MYG2G-mzocEmS2.js +12 -0
  71. package/dist/{chunk-HHEYEP7N-DJ1b-gA8.js.map → chunk-WU5MYG2G-mzocEmS2.js.map} +1 -1
  72. package/dist/{chunk-XPW4576I-BqiPnb3d.js → chunk-XPW4576I-BwxN5U1_.js} +2 -2
  73. package/dist/{chunk-XPW4576I-BqiPnb3d.js.map → chunk-XPW4576I-BwxN5U1_.js.map} +1 -1
  74. package/dist/classDiagram-4FO5ZUOK-CZv04EX-.js +31 -0
  75. package/dist/{classDiagram-VBA2DB6C-DZfC0xPM.js.map → classDiagram-4FO5ZUOK-CZv04EX-.js.map} +1 -1
  76. package/dist/classDiagram-v2-Q7XG4LA2-aOPSPoxt.js +31 -0
  77. package/dist/{classDiagram-v2-RAHNMMFH-CtWRD1ax.js.map → classDiagram-v2-Q7XG4LA2-aOPSPoxt.js.map} +1 -1
  78. package/dist/component-Dye0I6sO.js +145 -0
  79. package/dist/component-Dye0I6sO.js.map +1 -0
  80. package/dist/components/brand/index.d.ts +8 -2
  81. package/dist/components/brand/index.d.ts.map +1 -1
  82. package/dist/components/brand/index.js +58 -31
  83. package/dist/components/brand/index.js.map +1 -1
  84. package/dist/components/brand/types.d.ts +8 -0
  85. package/dist/components/brand/types.d.ts.map +1 -1
  86. package/dist/{cose-bilkent-S5V4N54A-DxM02fly.js → cose-bilkent-S5V4N54A-D_hwzCJc.js} +7 -8
  87. package/dist/{cose-bilkent-S5V4N54A-DxM02fly.js.map → cose-bilkent-S5V4N54A-D_hwzCJc.js.map} +1 -1
  88. package/dist/{cytoscape.esm-2vKMh7AJ.js → cytoscape.esm-C85eXBIz.js} +1 -1
  89. package/dist/{cytoscape.esm-2vKMh7AJ.js.map → cytoscape.esm-C85eXBIz.js.map} +1 -1
  90. package/dist/dagre-BM42HDAG-DBqY2dVf.js +299 -0
  91. package/dist/dagre-BM42HDAG-DBqY2dVf.js.map +1 -0
  92. package/dist/dagre-IxFkiJHF.js +1938 -0
  93. package/dist/dagre-IxFkiJHF.js.map +1 -0
  94. package/dist/{defaultLocale-PLHpRrsr.js → defaultLocale-DSDxELFN.js} +1 -1
  95. package/dist/{defaultLocale-PLHpRrsr.js.map → defaultLocale-DSDxELFN.js.map} +1 -1
  96. package/dist/{diagram-IFDJBPK2-D-Enf1mK.js → diagram-2AECGRRQ-BwC5Qbme.js} +39 -39
  97. package/dist/{diagram-IFDJBPK2-D-Enf1mK.js.map → diagram-2AECGRRQ-BwC5Qbme.js.map} +1 -1
  98. package/dist/diagram-5GNKFQAL-BpJ9oZ4s.js +103 -0
  99. package/dist/diagram-5GNKFQAL-BpJ9oZ4s.js.map +1 -0
  100. package/dist/diagram-KO2AKTUF-kSLn21uw.js +434 -0
  101. package/dist/diagram-KO2AKTUF-kSLn21uw.js.map +1 -0
  102. package/dist/{diagram-P4PSJMXO-O8g_RIkM.js → diagram-LMA3HP47-BRqyGMLP.js} +43 -43
  103. package/dist/{diagram-P4PSJMXO-O8g_RIkM.js.map → diagram-LMA3HP47-BRqyGMLP.js.map} +1 -1
  104. package/dist/{diagram-E7M64L7V-Co7O3gub.js → diagram-OG6HWLK6-BsskLXHm.js} +171 -174
  105. package/dist/diagram-OG6HWLK6-BsskLXHm.js.map +1 -0
  106. package/dist/{dist-BrNloUiz.js → dist-BScrlPBC.js} +32 -23
  107. package/dist/dist-BScrlPBC.js.map +1 -0
  108. package/dist/{erDiagram-INFDFZHY-C42JeR9I.js → erDiagram-TEJ5UH35-DzB7hnCi.js} +198 -164
  109. package/dist/erDiagram-TEJ5UH35-DzB7hnCi.js.map +1 -0
  110. package/dist/eventmodeling-FCH6USID-HcA67HMu.js +3 -0
  111. package/dist/{flowDiagram-PKNHOUZH-DInJjOz3.js → flowDiagram-I6XJVG4X-RYkPtPRG.js} +453 -469
  112. package/dist/flowDiagram-I6XJVG4X-RYkPtPRG.js.map +1 -0
  113. package/dist/{ganttDiagram-A5KZAMGK-Dgp-4Yss.js → ganttDiagram-6RSMTGT7-BfjlFVNd.js} +340 -333
  114. package/dist/ganttDiagram-6RSMTGT7-BfjlFVNd.js.map +1 -0
  115. package/dist/gitGraph-WXDBUCRP-D60yP8mT.js +3 -0
  116. package/dist/gitGraphDiagram-PVQCEYII-DbUp_ElG.js +731 -0
  117. package/dist/gitGraphDiagram-PVQCEYII-DbUp_ElG.js.map +1 -0
  118. package/dist/graphlib-k-wJtbbK.js +1268 -0
  119. package/dist/graphlib-k-wJtbbK.js.map +1 -0
  120. package/dist/info-J43DQDTF-DDmtkMBG.js +3 -0
  121. package/dist/{infoDiagram-LFFYTUFH-DajJJRvc.js → infoDiagram-5YYISTIA-C0TqWTrr.js} +7 -7
  122. package/dist/{infoDiagram-LFFYTUFH-DajJJRvc.js.map → infoDiagram-5YYISTIA-C0TqWTrr.js.map} +1 -1
  123. package/dist/{init-DcLTaNW1.js → init-CGzIZb6J.js} +1 -1
  124. package/dist/{init-DcLTaNW1.js.map → init-CGzIZb6J.js.map} +1 -1
  125. package/dist/{ishikawaDiagram-PHBUUO56-qHBJm2LT.js → ishikawaDiagram-YF4QCWOH-Cyk_Antz.js} +98 -97
  126. package/dist/ishikawaDiagram-YF4QCWOH-Cyk_Antz.js.map +1 -0
  127. package/dist/{journeyDiagram-4ABVD52K-PgfYdoDM.js → journeyDiagram-JHISSGLW-CTl8eDDe.js} +78 -78
  128. package/dist/journeyDiagram-JHISSGLW-CTl8eDDe.js.map +1 -0
  129. package/dist/{kanban-definition-K7BYSVSG-DFRT8j7A.js → kanban-definition-UN3LZRKU-homeDoHF.js} +46 -44
  130. package/dist/{kanban-definition-K7BYSVSG-DFRT8j7A.js.map → kanban-definition-UN3LZRKU-homeDoHF.js.map} +1 -1
  131. package/dist/{katex-BZdHnXin.js → katex-CgkxVokH.js} +1 -1
  132. package/dist/{katex-BZdHnXin.js.map → katex-CgkxVokH.js.map} +1 -1
  133. package/dist/line-k_aZSToM.js +36 -0
  134. package/dist/{line-Cq1AZT4f.js.map → line-k_aZSToM.js.map} +1 -1
  135. package/dist/{linear-BnJD01Xn.js → linear-Dpcbf4VP.js} +5 -5
  136. package/dist/{linear-BnJD01Xn.js.map → linear-Dpcbf4VP.js.map} +1 -1
  137. package/dist/{mermaid-parser.core-Dz5qv4CI.js → mermaid-parser.core-B_q76LYz.js} +32 -17
  138. package/dist/mermaid-parser.core-B_q76LYz.js.map +1 -0
  139. package/dist/mermaid.core-DAh-gNcn.js +997 -0
  140. package/dist/mermaid.core-DAh-gNcn.js.map +1 -0
  141. package/dist/{mindmap-definition-YRQLILUH-D95OPRMh.js → mindmap-definition-RKZ34NQL-Cjglmmr7.js} +153 -108
  142. package/dist/mindmap-definition-RKZ34NQL-Cjglmmr7.js.map +1 -0
  143. package/dist/{ordinal-CC9tfh_g.js → ordinal-DHGdAr1Y.js} +2 -2
  144. package/dist/{ordinal-CC9tfh_g.js.map → ordinal-DHGdAr1Y.js.map} +1 -1
  145. package/dist/packet-YPE3B663-Bo9N32Mb.js +3 -0
  146. package/dist/{path-y0uQCOMW.js → path-D-DDb3Wo.js} +1 -1
  147. package/dist/{path-y0uQCOMW.js.map → path-D-DDb3Wo.js.map} +1 -1
  148. package/dist/pie-LRSECV5Y-DndCyILX.js +3 -0
  149. package/dist/pieDiagram-4H26LBE5-Swbny_uk.js +167 -0
  150. package/dist/pieDiagram-4H26LBE5-Swbny_uk.js.map +1 -0
  151. package/dist/{quadrantDiagram-337W2JSQ-CcKc-h2o.js → quadrantDiagram-W4KKPZXB-kyt1iJkC.js} +359 -332
  152. package/dist/quadrantDiagram-W4KKPZXB-kyt1iJkC.js.map +1 -0
  153. package/dist/radar-GUYGQ44K-DpLG1fRN.js +3 -0
  154. package/dist/react/brand/index.d.ts +13 -1
  155. package/dist/react/brand/index.d.ts.map +1 -1
  156. package/dist/react/brand.js +28 -3
  157. package/dist/react/brand.js.map +1 -1
  158. package/dist/react/sidebar.d.ts +22 -1
  159. package/dist/react/sidebar.d.ts.map +1 -1
  160. package/dist/react/sidebar.js +26 -2
  161. package/dist/react/sidebar.js.map +1 -1
  162. package/dist/react/topology.js +1 -1
  163. package/dist/react.js +100 -100
  164. package/dist/{requirementDiagram-Z7DCOOCP-aPcaPduF.js → requirementDiagram-4Y6WPE33-DWRks7dz.js} +153 -133
  165. package/dist/requirementDiagram-4Y6WPE33-DWRks7dz.js.map +1 -0
  166. package/dist/{rough.esm-C9rQ9YkE.js → rough.esm-C7tiDdBn.js} +1 -1
  167. package/dist/{rough.esm-C9rQ9YkE.js.map → rough.esm-C7tiDdBn.js.map} +1 -1
  168. package/dist/{sankeyDiagram-WA2Y5GQK-CO_lUqQX.js → sankeyDiagram-5OEKKPKP-J_SVMd-0.js} +125 -76
  169. package/dist/{sankeyDiagram-WA2Y5GQK-CO_lUqQX.js.map → sankeyDiagram-5OEKKPKP-J_SVMd-0.js.map} +1 -1
  170. package/dist/sequenceDiagram-3UESZ5HK-BMhjbe8U.js +4167 -0
  171. package/dist/sequenceDiagram-3UESZ5HK-BMhjbe8U.js.map +1 -0
  172. package/dist/sidebar/component.d.ts +4 -0
  173. package/dist/sidebar/component.d.ts.map +1 -1
  174. package/dist/sidebar/index.d.ts +1 -1
  175. package/dist/sidebar/index.d.ts.map +1 -1
  176. package/dist/sidebar/index.js +1 -1
  177. package/dist/sidebar/index.js.map +1 -1
  178. package/dist/sidebar/types.d.ts +39 -0
  179. package/dist/sidebar/types.d.ts.map +1 -1
  180. package/dist/{src-D1EMXotX.js → src-CWnvxuyh.js} +603 -591
  181. package/dist/{src-D1EMXotX.js.map → src-CWnvxuyh.js.map} +1 -1
  182. package/dist/{src-BhNgmpel.js → src-DngnQkx_.js} +4 -5
  183. package/dist/{src-BhNgmpel.js.map → src-DngnQkx_.js.map} +1 -1
  184. package/dist/stateDiagram-AJRCARHV-x4JHehDk.js +220 -0
  185. package/dist/stateDiagram-AJRCARHV-x4JHehDk.js.map +1 -0
  186. package/dist/stateDiagram-v2-BHNVJYJU-CO93vpHl.js +29 -0
  187. package/dist/{stateDiagram-v2-FVOUBMTO-CAWy0Pkh.js.map → stateDiagram-v2-BHNVJYJU-CO93vpHl.js.map} +1 -1
  188. package/dist/styles/components/brand.css +30 -0
  189. package/dist/styles/sidebar.css +495 -0
  190. package/dist/{timeline-definition-YZTLITO2-CjxxCuOg.js → timeline-definition-PNZ67QCA-rsiMN1-p.js} +517 -279
  191. package/dist/timeline-definition-PNZ67QCA-rsiMN1-p.js.map +1 -0
  192. package/dist/{topology-C8cyIHlB.js → topology-B9Lv-y1-.js} +181 -182
  193. package/dist/{topology-C8cyIHlB.js.map → topology-B9Lv-y1-.js.map} +1 -1
  194. package/dist/treeView-BLDUP644-mJdM3Q6x.js +3 -0
  195. package/dist/treemap-LRROVOQU-BbNMhR6z.js +3 -0
  196. package/dist/{value-gSPnIECy.js → value-CnwEagIg.js} +2 -2
  197. package/dist/{value-gSPnIECy.js.map → value-CnwEagIg.js.map} +1 -1
  198. package/dist/{vennDiagram-LZ73GAT5-FqpGoq2s.js → vennDiagram-CIIHVFJN-JUCgWboO.js} +98 -98
  199. package/dist/{vennDiagram-LZ73GAT5-FqpGoq2s.js.map → vennDiagram-CIIHVFJN-JUCgWboO.js.map} +1 -1
  200. package/dist/visualization/mermaid-diagram/index.js +1 -1
  201. package/dist/wardley-L42UT6IY-DB53GwcN.js +3 -0
  202. package/dist/wardleyDiagram-YWT4CUSO-D9ZPcSHL.js +646 -0
  203. package/dist/wardleyDiagram-YWT4CUSO-D9ZPcSHL.js.map +1 -0
  204. package/dist/{xychartDiagram-JWTSCODW-BNEAK79X.js → xychartDiagram-2RQKCTM6-D3ufsY0S.js} +146 -143
  205. package/dist/{xychartDiagram-JWTSCODW-BNEAK79X.js.map → xychartDiagram-2RQKCTM6-D3ufsY0S.js.map} +1 -1
  206. package/package.json +1 -1
  207. package/src/components/brand/index.ts +63 -0
  208. package/src/components/brand/types.ts +9 -0
  209. package/src/react/brand/index.test.tsx +28 -0
  210. package/src/react/brand/index.tsx +38 -0
  211. package/src/react/sidebar.test.tsx +30 -0
  212. package/src/react/sidebar.tsx +52 -1
  213. package/src/sidebar/component.test.ts +109 -0
  214. package/src/sidebar/component.ts +136 -4
  215. package/src/sidebar/index.ts +1 -0
  216. package/src/sidebar/types.ts +40 -0
  217. package/src/styles/components/brand.css +30 -0
  218. package/src/styles/sidebar.css +495 -0
  219. package/dist/_basePickBy-BQMPE4-n.js +0 -168
  220. package/dist/_basePickBy-BQMPE4-n.js.map +0 -1
  221. package/dist/_baseUniq-Bdp_vFUv.js +0 -684
  222. package/dist/_baseUniq-Bdp_vFUv.js.map +0 -1
  223. package/dist/architecture-PBZL5I3N-Zk3GmKE8.js +0 -3
  224. package/dist/blockDiagram-WCTKOSBZ-BH3jwWeU.js.map +0 -1
  225. package/dist/c4Diagram-IC4MRINW-OFLrunYI.js.map +0 -1
  226. package/dist/channel-LRbq43st.js +0 -7
  227. package/dist/chunk-7E7YKBS2-BsywoVTt.js +0 -25
  228. package/dist/chunk-7E7YKBS2-BsywoVTt.js.map +0 -1
  229. package/dist/chunk-7R4GIKGN-DJmroLCH.js +0 -2054
  230. package/dist/chunk-7R4GIKGN-DJmroLCH.js.map +0 -1
  231. package/dist/chunk-C72U2L5F-BwPwVDcP.js +0 -25
  232. package/dist/chunk-C72U2L5F-BwPwVDcP.js.map +0 -1
  233. package/dist/chunk-EGIJ26TM-DKd5cEgn.js +0 -25
  234. package/dist/chunk-EGIJ26TM-DKd5cEgn.js.map +0 -1
  235. package/dist/chunk-GEFDOKGD-DGJJEGSm.js.map +0 -1
  236. package/dist/chunk-GLR3WWYH-BDwmgwCA.js +0 -43
  237. package/dist/chunk-GLR3WWYH-BDwmgwCA.js.map +0 -1
  238. package/dist/chunk-HHEYEP7N-DJ1b-gA8.js +0 -12
  239. package/dist/chunk-KYZI473N-BXYCe83A.js +0 -3437
  240. package/dist/chunk-KYZI473N-BXYCe83A.js.map +0 -1
  241. package/dist/chunk-L3YUKLVL-Y5k8UNMf.js +0 -25
  242. package/dist/chunk-L3YUKLVL-Y5k8UNMf.js.map +0 -1
  243. package/dist/chunk-MX3YWQON-D43mcq1f.js.map +0 -1
  244. package/dist/chunk-NBPlniwU.js +0 -23
  245. package/dist/chunk-NQ4KR5QH-C0nWShNk.js.map +0 -1
  246. package/dist/chunk-O4XLMI2P-DtGEm9QX.js +0 -514
  247. package/dist/chunk-O4XLMI2P-DtGEm9QX.js.map +0 -1
  248. package/dist/chunk-OZEHJAEY-BsQ56PV-.js.map +0 -1
  249. package/dist/chunk-R5LLSJPH-c1IfaK5D.js.map +0 -1
  250. package/dist/chunk-WL4C6EOR-BV-op7zg.js.map +0 -1
  251. package/dist/chunk-XIRO2GV7-Bv1hlNLi.js +0 -32
  252. package/dist/chunk-XIRO2GV7-Bv1hlNLi.js.map +0 -1
  253. package/dist/chunk-XZSTWKYB-C7maKWEr.js +0 -15799
  254. package/dist/chunk-XZSTWKYB-C7maKWEr.js.map +0 -1
  255. package/dist/classDiagram-VBA2DB6C-DZfC0xPM.js +0 -31
  256. package/dist/classDiagram-v2-RAHNMMFH-CtWRD1ax.js +0 -31
  257. package/dist/clone-CliVdNc8.js +0 -10
  258. package/dist/clone-CliVdNc8.js.map +0 -1
  259. package/dist/component-C1Jiz1Ki.js +0 -103
  260. package/dist/component-C1Jiz1Ki.js.map +0 -1
  261. package/dist/dagre-BqC9mhMk.js +0 -1485
  262. package/dist/dagre-BqC9mhMk.js.map +0 -1
  263. package/dist/dagre-KLK3FWXG-DTKcsol6.js +0 -296
  264. package/dist/dagre-KLK3FWXG-DTKcsol6.js.map +0 -1
  265. package/dist/diagram-E7M64L7V-Co7O3gub.js.map +0 -1
  266. package/dist/dist-BrNloUiz.js.map +0 -1
  267. package/dist/erDiagram-INFDFZHY-C42JeR9I.js.map +0 -1
  268. package/dist/flowDiagram-PKNHOUZH-DInJjOz3.js.map +0 -1
  269. package/dist/ganttDiagram-A5KZAMGK-Dgp-4Yss.js.map +0 -1
  270. package/dist/gitGraph-HDMCJU4V-D_QsK6Rt.js +0 -3
  271. package/dist/gitGraphDiagram-K3NZZRJ6-Dr_X0dND.js +0 -628
  272. package/dist/gitGraphDiagram-K3NZZRJ6-Dr_X0dND.js.map +0 -1
  273. package/dist/graphlib-ecencZTG.js +0 -227
  274. package/dist/graphlib-ecencZTG.js.map +0 -1
  275. package/dist/info-3K5VOQVL-BbLiZXwn.js +0 -3
  276. package/dist/isArrayLikeObject-Bjsxaqj7.js +0 -580
  277. package/dist/isArrayLikeObject-Bjsxaqj7.js.map +0 -1
  278. package/dist/isEmpty-CeZZUVts.js +0 -37
  279. package/dist/isEmpty-CeZZUVts.js.map +0 -1
  280. package/dist/ishikawaDiagram-PHBUUO56-qHBJm2LT.js.map +0 -1
  281. package/dist/journeyDiagram-4ABVD52K-PgfYdoDM.js.map +0 -1
  282. package/dist/line-Cq1AZT4f.js +0 -36
  283. package/dist/math-D4gdAuwG.js +0 -12
  284. package/dist/math-D4gdAuwG.js.map +0 -1
  285. package/dist/mermaid-parser.core-Dz5qv4CI.js.map +0 -1
  286. package/dist/mermaid.core-DTiIXVKa.js +0 -923
  287. package/dist/mermaid.core-DTiIXVKa.js.map +0 -1
  288. package/dist/mindmap-definition-YRQLILUH-D95OPRMh.js.map +0 -1
  289. package/dist/packet-RMMSAZCW-D72DRs1N.js +0 -3
  290. package/dist/pie-UPGHQEXC-C8RDLrEi.js +0 -3
  291. package/dist/pieDiagram-SKSYHLDU-BREEn_Sk.js +0 -167
  292. package/dist/pieDiagram-SKSYHLDU-BREEn_Sk.js.map +0 -1
  293. package/dist/quadrantDiagram-337W2JSQ-CcKc-h2o.js.map +0 -1
  294. package/dist/radar-KQ55EAFF-DhmvjiyN.js +0 -3
  295. package/dist/requirementDiagram-Z7DCOOCP-aPcaPduF.js.map +0 -1
  296. package/dist/sequenceDiagram-2WXFIKYE-D7Vh1Zld.js +0 -4112
  297. package/dist/sequenceDiagram-2WXFIKYE-D7Vh1Zld.js.map +0 -1
  298. package/dist/stateDiagram-RAJIS63D-DdiY5cf3.js +0 -220
  299. package/dist/stateDiagram-RAJIS63D-DdiY5cf3.js.map +0 -1
  300. package/dist/stateDiagram-v2-FVOUBMTO-CAWy0Pkh.js +0 -29
  301. package/dist/timeline-definition-YZTLITO2-CjxxCuOg.js.map +0 -1
  302. package/dist/treemap-KZPCXAKY-BvLvHb2t.js +0 -3
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitGraphDiagram-K3NZZRJ6-Dr_X0dND.js","names":["select"],"sources":["../node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-K3NZZRJ6.mjs"],"sourcesContent":["import {\n populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n ImperativeState\n} from \"./chunk-QZHKN3VN.mjs\";\nimport {\n cleanAndMerge,\n random,\n utils_default\n} from \"./chunk-GEFDOKGD.mjs\";\nimport {\n clear,\n common_default,\n defaultConfig_default,\n getAccDescription,\n getAccTitle,\n getConfig,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n setupGraphViewbox2 as setupGraphViewbox\n} from \"./chunk-7R4GIKGN.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.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 getConfig2 = /* @__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 = getConfig2();\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 = getConfig2();\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, getConfig2());\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 = getConfig2();\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 = getConfig2();\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, getConfig2());\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: getConfig2,\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 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 if (commitSymbolType === commitType.HIGHLIGHT) {\n gBullets.append(\"rect\").attr(\"x\", commitPosition.x - 10).attr(\"y\", commitPosition.y - 10).attr(\"width\", 20).attr(\"height\", 20).attr(\n \"class\",\n `commit ${commit2.id} commit-highlight${branchIndex % THEME_COLOR_LIMIT} ${typeClass}-outer`\n );\n gBullets.append(\"rect\").attr(\"x\", commitPosition.x - 6).attr(\"y\", commitPosition.y - 6).attr(\"width\", 12).attr(\"height\", 12).attr(\n \"class\",\n `commit ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT} ${typeClass}-inner`\n );\n } else if (commitSymbolType === commitType.CHERRY_PICK) {\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x).attr(\"cy\", commitPosition.y).attr(\"r\", 10).attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x - 3).attr(\"cy\", commitPosition.y + 2).attr(\"r\", 2.75).attr(\"fill\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x + 3).attr(\"cy\", commitPosition.y + 2).attr(\"r\", 2.75).attr(\"fill\", \"#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\", \"#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\", \"#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\", commit2.type === commitType.MERGE ? 9 : 10);\n circle.attr(\"class\", `commit ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT}`);\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\", 6);\n circle2.attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT}`\n );\n }\n if (commitSymbolType === commitType.REVERSE) {\n const cross = gBullets.append(\"path\");\n cross.attr(\n \"d\",\n `M ${commitPosition.x - 5},${commitPosition.y - 5}L${commitPosition.x + 5},${commitPosition.y + 5}M${commitPosition.x - 5},${commitPosition.y + 5}L${commitPosition.x + 5},${commitPosition.y - 5}`\n ).attr(\"class\", `commit ${typeClass} ${commit2.id} commit${branchIndex % THEME_COLOR_LIMIT}`);\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 y = dir === \"TB\" || dir === \"BT\" ? posWithOffset : branchPos.get(commit2.branch)?.pos;\n const x = dir === \"TB\" || dir === \"BT\" ? branchPos.get(commit2.branch)?.pos : posWithOffset;\n if (x === void 0 || y === void 0) {\n throw new Error(`Position were undefined for commit ${commit2.id}`);\n }\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 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(\"class\", \"arrow arrow\" + colorClassNum % THEME_COLOR_LIMIT);\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) => {\n const g = svg.append(\"g\");\n branches.forEach((branch2, index) => {\n const adjustIndexForTheme = index % THEME_COLOR_LIMIT;\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 line = g.append(\"line\");\n line.attr(\"x1\", 0);\n line.attr(\"y1\", pos);\n line.attr(\"x2\", maxPos);\n line.attr(\"y2\", pos);\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(pos);\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 bkg.attr(\"class\", \"branchLabelBkg label\" + adjustIndexForTheme).attr(\"rx\", 4).attr(\"ry\", 4).attr(\"x\", -bbox.width - 4 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)).attr(\"y\", -bbox.height / 2 + 8).attr(\"width\", bbox.width + 18).attr(\"height\", bbox.height + 4);\n label.attr(\n \"transform\",\n \"translate(\" + (-bbox.width - 14 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)) + \", \" + (pos - bbox.height / 2 - 1) + \")\"\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 } 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 } else {\n bkg.attr(\"transform\", \"translate(-19, \" + (pos - bbox.height / 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 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);\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 getStyles = /* @__PURE__ */ __name((options) => `\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 ${[0, 1, 2, 3, 4, 5, 6, 7].map(\n (i) => `\n .branch-label${i} { fill: ${options[\"gitBranchLabel\" + i]}; }\n .commit${i} { stroke: ${options[\"git\" + i]}; fill: ${options[\"git\" + i]}; }\n .commit-highlight${i} { stroke: ${options[\"gitInv\" + i]}; fill: ${options[\"gitInv\" + i]}; }\n .label${i} { fill: ${options[\"git\" + i]}; }\n .arrow${i} { stroke: ${options[\"git\" + i]}; }\n `\n).join(\"\\n\")}\n\n .branch {\n stroke-width: 1;\n stroke: ${options.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${options.commitLabelFontSize}; fill: ${options.commitLabelColor};}\n .commit-label-bkg { font-size: ${options.commitLabelFontSize}; fill: ${options.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${options.tagLabelFontSize}; fill: ${options.tagLabelColor};}\n .tag-label-bkg { fill: ${options.tagLabelBackground}; stroke: ${options.tagLabelBorder}; }\n .tag-hole { fill: ${options.textColor}; }\n\n .commit-merge {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n }\n .commit-reverse {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\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"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,227 +0,0 @@
1
- import { E as e, P as t, R as n, t as r } from "./isArrayLikeObject-Bjsxaqj7.js";
2
- import { D as i, S as a, a as o, i as s, n as c, r as l, s as u, t as d } from "./_baseUniq-Bdp_vFUv.js";
3
- import { t as f } from "./isEmpty-CeZZUVts.js";
4
- //#region node_modules/lodash-es/union.js
5
- var p = e(function(e) {
6
- return d(a(e, 1, r, !0));
7
- }), m = "\0", h = "\0", g = "", _ = class {
8
- constructor(e = {}) {
9
- this._isDirected = Object.prototype.hasOwnProperty.call(e, "directed") ? e.directed : !0, this._isMultigraph = Object.prototype.hasOwnProperty.call(e, "multigraph") ? e.multigraph : !1, this._isCompound = Object.prototype.hasOwnProperty.call(e, "compound") ? e.compound : !1, this._label = void 0, this._defaultNodeLabelFn = t(void 0), this._defaultEdgeLabelFn = t(void 0), this._nodes = {}, this._isCompound && (this._parent = {}, this._children = {}, this._children[h] = {}), this._in = {}, this._preds = {}, this._out = {}, this._sucs = {}, this._edgeObjs = {}, this._edgeLabels = {};
10
- }
11
- isDirected() {
12
- return this._isDirected;
13
- }
14
- isMultigraph() {
15
- return this._isMultigraph;
16
- }
17
- isCompound() {
18
- return this._isCompound;
19
- }
20
- setGraph(e) {
21
- return this._label = e, this;
22
- }
23
- graph() {
24
- return this._label;
25
- }
26
- setDefaultNodeLabel(e) {
27
- return n(e) || (e = t(e)), this._defaultNodeLabelFn = e, this;
28
- }
29
- nodeCount() {
30
- return this._nodeCount;
31
- }
32
- nodes() {
33
- return i(this._nodes);
34
- }
35
- sources() {
36
- var e = this;
37
- return o(this.nodes(), function(t) {
38
- return f(e._in[t]);
39
- });
40
- }
41
- sinks() {
42
- var e = this;
43
- return o(this.nodes(), function(t) {
44
- return f(e._out[t]);
45
- });
46
- }
47
- setNodes(e, t) {
48
- var n = arguments, r = this;
49
- return u(e, function(e) {
50
- n.length > 1 ? r.setNode(e, t) : r.setNode(e);
51
- }), this;
52
- }
53
- setNode(e, t) {
54
- return Object.prototype.hasOwnProperty.call(this._nodes, e) ? (arguments.length > 1 && (this._nodes[e] = t), this) : (this._nodes[e] = arguments.length > 1 ? t : this._defaultNodeLabelFn(e), this._isCompound && (this._parent[e] = h, this._children[e] = {}, this._children[h][e] = !0), this._in[e] = {}, this._preds[e] = {}, this._out[e] = {}, this._sucs[e] = {}, ++this._nodeCount, this);
55
- }
56
- node(e) {
57
- return this._nodes[e];
58
- }
59
- hasNode(e) {
60
- return Object.prototype.hasOwnProperty.call(this._nodes, e);
61
- }
62
- removeNode(e) {
63
- if (Object.prototype.hasOwnProperty.call(this._nodes, e)) {
64
- var t = (e) => this.removeEdge(this._edgeObjs[e]);
65
- delete this._nodes[e], this._isCompound && (this._removeFromParentsChildList(e), delete this._parent[e], u(this.children(e), (e) => {
66
- this.setParent(e);
67
- }), delete this._children[e]), u(i(this._in[e]), t), delete this._in[e], delete this._preds[e], u(i(this._out[e]), t), delete this._out[e], delete this._sucs[e], --this._nodeCount;
68
- }
69
- return this;
70
- }
71
- setParent(e, t) {
72
- if (!this._isCompound) throw Error("Cannot set parent in a non-compound graph");
73
- if (l(t)) t = h;
74
- else {
75
- t += "";
76
- for (var n = t; !l(n); n = this.parent(n)) if (n === e) throw Error("Setting " + t + " as parent of " + e + " would create a cycle");
77
- this.setNode(t);
78
- }
79
- return this.setNode(e), this._removeFromParentsChildList(e), this._parent[e] = t, this._children[t][e] = !0, this;
80
- }
81
- _removeFromParentsChildList(e) {
82
- delete this._children[this._parent[e]][e];
83
- }
84
- parent(e) {
85
- if (this._isCompound) {
86
- var t = this._parent[e];
87
- if (t !== h) return t;
88
- }
89
- }
90
- children(e) {
91
- if (l(e) && (e = h), this._isCompound) {
92
- var t = this._children[e];
93
- if (t) return i(t);
94
- } else if (e === h) return this.nodes();
95
- else if (this.hasNode(e)) return [];
96
- }
97
- predecessors(e) {
98
- var t = this._preds[e];
99
- if (t) return i(t);
100
- }
101
- successors(e) {
102
- var t = this._sucs[e];
103
- if (t) return i(t);
104
- }
105
- neighbors(e) {
106
- var t = this.predecessors(e);
107
- if (t) return p(t, this.successors(e));
108
- }
109
- isLeaf(e) {
110
- return (this.isDirected() ? this.successors(e) : this.neighbors(e)).length === 0;
111
- }
112
- filterNodes(e) {
113
- var t = new this.constructor({
114
- directed: this._isDirected,
115
- multigraph: this._isMultigraph,
116
- compound: this._isCompound
117
- });
118
- t.setGraph(this.graph());
119
- var n = this;
120
- u(this._nodes, function(n, r) {
121
- e(r) && t.setNode(r, n);
122
- }), u(this._edgeObjs, function(e) {
123
- t.hasNode(e.v) && t.hasNode(e.w) && t.setEdge(e, n.edge(e));
124
- });
125
- var r = {};
126
- function i(e) {
127
- var a = n.parent(e);
128
- return a === void 0 || t.hasNode(a) ? (r[e] = a, a) : a in r ? r[a] : i(a);
129
- }
130
- return this._isCompound && u(t.nodes(), function(e) {
131
- t.setParent(e, i(e));
132
- }), t;
133
- }
134
- setDefaultEdgeLabel(e) {
135
- return n(e) || (e = t(e)), this._defaultEdgeLabelFn = e, this;
136
- }
137
- edgeCount() {
138
- return this._edgeCount;
139
- }
140
- edges() {
141
- return s(this._edgeObjs);
142
- }
143
- setPath(e, t) {
144
- var n = this, r = arguments;
145
- return c(e, function(e, i) {
146
- return r.length > 1 ? n.setEdge(e, i, t) : n.setEdge(e, i), i;
147
- }), this;
148
- }
149
- setEdge() {
150
- var e, t, n, r, i = !1, a = arguments[0];
151
- typeof a == "object" && a && "v" in a ? (e = a.v, t = a.w, n = a.name, arguments.length === 2 && (r = arguments[1], i = !0)) : (e = a, t = arguments[1], n = arguments[3], arguments.length > 2 && (r = arguments[2], i = !0)), e = "" + e, t = "" + t, l(n) || (n = "" + n);
152
- var o = b(this._isDirected, e, t, n);
153
- if (Object.prototype.hasOwnProperty.call(this._edgeLabels, o)) return i && (this._edgeLabels[o] = r), this;
154
- if (!l(n) && !this._isMultigraph) throw Error("Cannot set a named edge when isMultigraph = false");
155
- this.setNode(e), this.setNode(t), this._edgeLabels[o] = i ? r : this._defaultEdgeLabelFn(e, t, n);
156
- var s = x(this._isDirected, e, t, n);
157
- return e = s.v, t = s.w, Object.freeze(s), this._edgeObjs[o] = s, v(this._preds[t], e), v(this._sucs[e], t), this._in[t][o] = s, this._out[e][o] = s, this._edgeCount++, this;
158
- }
159
- edge(e, t, n) {
160
- var r = arguments.length === 1 ? S(this._isDirected, arguments[0]) : b(this._isDirected, e, t, n);
161
- return this._edgeLabels[r];
162
- }
163
- hasEdge(e, t, n) {
164
- var r = arguments.length === 1 ? S(this._isDirected, arguments[0]) : b(this._isDirected, e, t, n);
165
- return Object.prototype.hasOwnProperty.call(this._edgeLabels, r);
166
- }
167
- removeEdge(e, t, n) {
168
- var r = arguments.length === 1 ? S(this._isDirected, arguments[0]) : b(this._isDirected, e, t, n), i = this._edgeObjs[r];
169
- return i && (e = i.v, t = i.w, delete this._edgeLabels[r], delete this._edgeObjs[r], y(this._preds[t], e), y(this._sucs[e], t), delete this._in[t][r], delete this._out[e][r], this._edgeCount--), this;
170
- }
171
- inEdges(e, t) {
172
- var n = this._in[e];
173
- if (n) {
174
- var r = s(n);
175
- return t ? o(r, function(e) {
176
- return e.v === t;
177
- }) : r;
178
- }
179
- }
180
- outEdges(e, t) {
181
- var n = this._out[e];
182
- if (n) {
183
- var r = s(n);
184
- return t ? o(r, function(e) {
185
- return e.w === t;
186
- }) : r;
187
- }
188
- }
189
- nodeEdges(e, t) {
190
- var n = this.inEdges(e, t);
191
- if (n) return n.concat(this.outEdges(e, t));
192
- }
193
- };
194
- _.prototype._nodeCount = 0, _.prototype._edgeCount = 0;
195
- function v(e, t) {
196
- e[t] ? e[t]++ : e[t] = 1;
197
- }
198
- function y(e, t) {
199
- --e[t] || delete e[t];
200
- }
201
- function b(e, t, n, r) {
202
- var i = "" + t, a = "" + n;
203
- if (!e && i > a) {
204
- var o = i;
205
- i = a, a = o;
206
- }
207
- return i + g + a + g + (l(r) ? m : r);
208
- }
209
- function x(e, t, n, r) {
210
- var i = "" + t, a = "" + n;
211
- if (!e && i > a) {
212
- var o = i;
213
- i = a, a = o;
214
- }
215
- var s = {
216
- v: i,
217
- w: a
218
- };
219
- return r && (s.name = r), s;
220
- }
221
- function S(e, t) {
222
- return b(e, t.v, t.w, t.name);
223
- }
224
- //#endregion
225
- export { _ as t };
226
-
227
- //# sourceMappingURL=graphlib-ecencZTG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graphlib-ecencZTG.js","names":["_.constant","_.isFunction","_.keys","_.filter","_.isEmpty","_.isUndefined","_.union","_.values"],"sources":["../node_modules/lodash-es/union.js","../node_modules/dagre-d3-es/src/graphlib/graph.js"],"sourcesContent":["import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n","import * as _ from 'lodash-es';\n\nvar DEFAULT_EDGE_NAME = '\\x00';\nvar GRAPH_NODE = '\\x00';\nvar EDGE_KEY_DELIM = '\\x01';\n\n/**\n * @typedef {string} NodeID ID of a node.\n */\n\n/**\n * @typedef {`${string}${typeof EDGE_KEY_DELIM}${string}${typeof EDGE_KEY_DELIM}${string}`} EdgeID ID of an edge.\n * @internal - All public APIs use {@link EdgeObj} instead to refer to edges.\n */\n\n/**\n * @typedef {object} EdgeObj\n * @property {NodeID} v the id of the source or tail node of an edge\n * @property {NodeID} w the id of the target or head node of an edge\n * @property {string | number} [name] Name of the edge. Needed to uniquely identify\n * multiple edges between the same pair of nodes in a multigraph.\n */\n\n/**\n * @template {unknown} T\n * @typedef {T[] | Record<any, T>} Collection\n * Lodash object that can be iterated over with `_.each`.\n *\n * Beware, objects with `.length` are treated as arrays, see\n * https://lodash.com/docs/4.17.15#forEach\n */\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\n/**\n * @typedef {object} GraphOptions\n * @property {boolean | undefined} [directed] - set to `true` to get a\n * directed graph and `false` to get an undirected graph.\n * An undirected graph does not treat the order of nodes in an edge as\n * significant.\n * In other words, `g.edge(\"a\", \"b\") === g.edge(\"b\", \"a\")` for\n * an undirected graph.\n * Default: `true`\n * @property {boolean | undefined} [multigraph] - set to `true` to allow a\n * graph to have multiple edges between the same pair of nodes.\n * Default: `false`.\n * @property {boolean | undefined} [compound] - set to `true` to allow a\n * graph to have compound nodes - nodes which can be the parent of other\n * nodes.\n * Default: `false`.\n */\n\n/**\n * Graphlib has a single graph type: {@link Graph}. To create a new instance:\n *\n * ```js\n * var g = new Graph();\n * ```\n *\n * By default this will create a directed graph that does not allow multi-edges\n * or compound nodes.\n * The following options can be used when constructing a new graph:\n *\n * * {@link GraphOptions#directed}: set to `true` to get a directed graph and `false` to get an\n * undirected graph.\n * An undirected graph does not treat the order of nodes in an edge as\n * significant. In other words,\n * `g.edge(\"a\", \"b\") === g.edge(\"b\", \"a\")` for an undirected graph.\n * Default: `true`.\n * * {@link GraphOptions#multigraph}: set to `true` to allow a graph to have multiple edges\n * between the same pair of nodes. Default: `false`.\n * * {@link GraphOptions#compound}: set to `true` to allow a graph to have compound nodes -\n * nodes which can be the parent of other nodes. Default: `false`.\n *\n * To set the options, pass in an options object to the `Graph` constructor.\n * For example, to create a directed compound multigraph:\n *\n * ```js\n * var g = new Graph({ directed: true, compound: true, multigraph: true });\n * ```\n *\n * ### Node and Edge Representation\n *\n * In graphlib, a node is represented by a user-supplied String id.\n * All node related functions use this String id as a way to uniquely identify\n * the node. Here is an example of interacting with nodes:\n *\n * ```js\n * var g = new Graph();\n * g.setNode(\"my-id\", \"my-label\");\n * g.node(\"my-id\"); // returns \"my-label\"\n * ```\n *\n * Edges in graphlib are identified by the nodes they connect. For example:\n *\n * ```js\n * var g = new Graph();\n * g.setEdge(\"source\", \"target\", \"my-label\");\n * g.edge(\"source\", \"target\"); // returns \"my-label\"\n * ```\n *\n * However, we need a way to uniquely identify an edge in a single object for\n * various edge queries (e.g. {@link Graph#outEdges}).\n * We use {@link EdgeObj}s for this purpose.\n * They consist of the following properties:\n *\n * * {@link EdgeObj#v}: the id of the source or tail node of an edge\n * * {@link EdgeObj#w}: the id of the target or head node of an edge\n * * {@link EdgeObj#name} (optional): the name that uniquely identifies a multiedge.\n *\n * Any edge function that takes an edge id will also work with an {@link EdgeObj}. For example:\n *\n * ```js\n * var g = new Graph();\n * g.setEdge(\"source\", \"target\", \"my-label\");\n * g.edge({ v: \"source\", w: \"target\" }); // returns \"my-label\"\n * ```\n *\n * ### Multigraphs\n *\n * A [multigraph](https://en.wikipedia.org/wiki/Multigraph) is a graph that can\n * have more than one edge between the same pair of nodes.\n * By default graphlib graphs are not multigraphs, but a multigraph can be\n * constructed by setting the {@link GraphOptions#multigraph} property to true:\n *\n * ```js\n * var g = new Graph({ multigraph: true });\n * ```\n *\n * With multiple edges between two nodes we need some way to uniquely identify\n * each edge. We call this the {@link EdgeObj#name} property.\n * Here's an example of creating a couple of edges between the same nodes:\n *\n * ```js\n * var g = new Graph({ multigraph: true });\n * g.setEdge(\"a\", \"b\", \"edge1-label\", \"edge1\");\n * g.setEdge(\"a\", \"b\", \"edge2-label\", \"edge2\");\n * g.edge(\"a\", \"b\", \"edge1\"); // returns \"edge1-label\"\n * g.edge(\"a\", \"b\", \"edge2\"); // returns \"edge2-label\"\n * g.edges(); // returns [{ v: \"a\", w: \"b\", name: \"edge1\" },\n * // { v: \"a\", w: \"b\", name: \"edge2\" }]\n * ```\n *\n * A multigraph still allows an edge with no name to be created:\n *\n * ```js\n * var g = new Graph({ multigraph: true });\n * g.setEdge(\"a\", \"b\", \"my-label\");\n * g.edge({ v: \"a\", w: \"b\" }); // returns \"my-label\"\n * ```\n *\n * ### Compound Graphs\n *\n * A compound graph is one where a node can be the parent of other nodes.\n * The child nodes form a \"subgraph\".\n * Here's an example of constructing and interacting with a compound graph:\n *\n * ```js\n * var g = new Graph({ compound: true });\n * g.setParent(\"a\", \"parent\");\n * g.setParent(\"b\", \"parent\");\n * g.parent(\"a\"); // returns \"parent\"\n * g.parent(\"b\"); // returns \"parent\"\n * g.parent(\"parent\"); // returns undefined\n * ```\n *\n * ### Default Labels\n *\n * When a node or edge is created without a label, a default label can be assigned.\n * See {@link setDefaultNodeLabel} and {@link setDefaultEdgeLabel}.\n *\n * @template [GraphLabel=any] - Label of the graph.\n * @template [NodeLabel=any] - Label of a node.\n * Even though this is a \"label\", this could be any type that the user requires\n * (and may need to be an object for some layout/ranking algorithms in dagre).\n * @template [EdgeLabel=any] - Label of an edge.\n * Even though this is a \"label\", this could be any type that the user requires,\n * (and may need to be a object for ranking in dagre).\n */\nexport class Graph {\n /**\n * @param {GraphOptions} [opts] - Graph options.\n */\n constructor(opts = {}) {\n /**\n * @type {boolean}\n * @private\n */\n this._isDirected = Object.prototype.hasOwnProperty.call(opts, 'directed')\n ? opts.directed\n : true;\n /**\n * @type {boolean}\n * @private\n */\n this._isMultigraph = Object.prototype.hasOwnProperty.call(opts, 'multigraph')\n ? opts.multigraph\n : false;\n /**\n * @type {boolean}\n * @private\n */\n this._isCompound = Object.prototype.hasOwnProperty.call(opts, 'compound')\n ? opts.compound\n : false;\n\n /**\n * @type {GraphLabel | undefined}\n * Label for the graph itself\n */\n this._label = undefined;\n\n /**\n * Default label to be set when creating a new node.\n *\n * @private\n * @type {(v: NodeID | number) => NodeLabel}\n */\n this._defaultNodeLabelFn = _.constant(undefined);\n\n /**\n * Default label to be set when creating a new edge\n *\n * @private\n * @type {(v: NodeID, w: NodeID, name: string | undefined) => EdgeLabel}\n */\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n /**\n * @type {Record<NodeID, NodeLabel>}\n * @private\n *\n * v -> label\n */\n this._nodes = {};\n\n if (this._isCompound) {\n /**\n * @type {Record<NodeID, NodeID>}\n * @private\n * v -> parent\n */\n this._parent = {};\n\n /**\n * @type {Record<NodeID, Record<NodeID, true>>}\n * @private\n * v -> children\n */\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n /**\n * @type {Record<NodeID, Record<EdgeID, EdgeObj>>}\n * @private\n * v -> edgeObj\n */\n this._in = {};\n\n /**\n * @type {Record<NodeID, Record<NodeID, number>>}\n * @private\n * u -> v -> Number\n */\n this._preds = {};\n\n /**\n * @type {Record<NodeID, Record<EdgeID, EdgeObj>>}\n * @private\n * v -> edgeObj\n */\n this._out = {};\n\n /**\n * @type {Record<NodeID, Record<NodeID, number>>}\n * @private\n * v -> w -> Number\n */\n this._sucs = {};\n\n /**\n * @type {Record<EdgeID, EdgeObj>}\n * @private\n * e -> edgeObj\n */\n this._edgeObjs = {};\n\n /**\n * @type {Record<EdgeID, EdgeLabel>}\n * @private\n * e -> label\n */\n this._edgeLabels = {};\n }\n\n /* === Graph functions ========= */\n\n /**\n *\n * @returns {boolean} `true` if the graph is [directed](https://en.wikipedia.org/wiki/Directed_graph).\n * A directed graph treats the order of nodes in an edge as significant whereas an\n * [undirected](https://en.wikipedia.org/wiki/Graph_(mathematics)#Undirected_graph)\n * graph does not.\n * This example demonstrates the difference:\n *\n * @example\n *\n * ```js\n * var directed = new Graph({ directed: true });\n * directed.setEdge(\"a\", \"b\", \"my-label\");\n * directed.edge(\"a\", \"b\"); // returns \"my-label\"\n * directed.edge(\"b\", \"a\"); // returns undefined\n *\n * var undirected = new Graph({ directed: false });\n * undirected.setEdge(\"a\", \"b\", \"my-label\");\n * undirected.edge(\"a\", \"b\"); // returns \"my-label\"\n * undirected.edge(\"b\", \"a\"); // returns \"my-label\"\n * ```\n */\n isDirected() {\n return this._isDirected;\n }\n /**\n * @returns {boolean} `true` if the graph is a multigraph.\n */\n isMultigraph() {\n return this._isMultigraph;\n }\n /**\n * @returns {boolean} `true` if the graph is compound.\n */\n isCompound() {\n return this._isCompound;\n }\n\n /**\n * Sets the label for the graph to `label`.\n *\n * @param {GraphLabel} label - Label for the graph.\n * @returns {this}\n */\n setGraph(label) {\n this._label = label;\n return this;\n }\n\n /**\n * @returns {GraphLabel | undefined} the currently assigned label for the graph.\n * If no label has been assigned, returns `undefined`.\n *\n * @example\n *\n * ```js\n * var g = new Graph();\n * g.graph(); // returns undefined\n * g.setGraph(\"graph-label\");\n * g.graph(); // returns \"graph-label\"\n * ```\n */\n graph() {\n return this._label;\n }\n /* === Node functions ========== */\n\n /**\n * Sets a new default value that is assigned to nodes that are created without\n * a label.\n *\n * @param {typeof this._defaultNodeLabelFn | NodeLabel} newDefault - If a function,\n * it is called with the id of the node being created.\n * Otherwise, it is assigned as the label directly.\n * @returns {this}\n */\n setDefaultNodeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n }\n\n /**\n * @returns {number} the number of nodes in the graph.\n */\n nodeCount() {\n return this._nodeCount;\n }\n\n /**\n * @returns {NodeID[]} the ids of the nodes in the graph.\n *\n * @remarks\n * Use {@link node()} to get the label for each node.\n * Takes `O(|V|)` time.\n */\n nodes() {\n return _.keys(this._nodes);\n }\n /**\n * @returns {NodeID[]} those nodes in the graph that have no in-edges.\n * @remarks Takes `O(|V|)` time.\n */\n sources() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._in[v]);\n });\n }\n /**\n * @returns {NodeID[]} those nodes in the graph that have no out-edges.\n * @remarks Takes `O(|V|)` time.\n */\n sinks() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._out[v]);\n });\n }\n\n /**\n * Invokes setNode method for each node in `vs` list.\n *\n * @param {Collection<NodeID | number>} vs - List of node IDs to create/set.\n * @param {NodeLabel} [value] - If set, update all nodes with this value.\n * @returns {this}\n * @remarks Complexity: O(|names|).\n */\n setNodes(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function (v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n }\n\n /**\n * Creates or updates the value for the node `v` in the graph.\n *\n * @param {NodeID | number} v - ID of the node to create/set.\n * @param {NodeLabel} [value] - If supplied, it is set as the value for the node.\n * If not supplied and the node was created by this call then\n * {@link setDefaultNodeLabel} will be used to set the node's value.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @remarks Takes `O(1)` time.\n */\n setNode(v, value) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n }\n\n /**\n * Gets the label of node with specified name.\n *\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeLabel | undefined} the label assigned to the node with the id `v`\n * if it is in the graph.\n * Otherwise returns `undefined`.\n * @remarks Takes `O(1)` time.\n */\n node(v) {\n return this._nodes[v];\n }\n\n /**\n * Detects whether graph has a node with specified name or not.\n *\n * @param {NodeID | number} v - Node ID.\n * @returns {boolean} Returns `true` the graph has a node with the id.\n * @remarks Takes `O(1)` time.\n */\n hasNode(v) {\n return Object.prototype.hasOwnProperty.call(this._nodes, v);\n }\n\n /**\n * Remove the node with the id `v` in the graph or do nothing if the node is\n * not in the graph.\n *\n * If the node was removed this function also removes any incident edges.\n *\n * @param {NodeID | number} v - Node ID to remove.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @remarks Takes `O(|E|)` time.\n */\n removeNode(v) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n var removeEdge = (e) => this.removeEdge(this._edgeObjs[e]);\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), (child) => {\n this.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n }\n\n /**\n * Sets the parent for `v` to `parent` if it is defined or removes the parent\n * for `v` if `parent` is undefined.\n *\n * @param {NodeID | number} v - Node ID to set the parent for.\n * @param {NodeID | number} [parent] - Parent node ID. If not defined, removes the parent.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @throws if the graph is not compound.\n * @throws if setting the parent would create a cycle.\n * @remarks Takes `O(1)` time.\n */\n setParent(v, parent) {\n if (!this._isCompound) {\n throw new Error('Cannot set parent in a non-compound graph');\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += '';\n for (var ancestor = parent; !_.isUndefined(ancestor); ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error('Setting ' + parent + ' as parent of ' + v + ' would create a cycle');\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n // @ts-expect-error -- We coerced parent to a string above\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n }\n\n /**\n * @private\n * @param {NodeID | number} v - Node ID.\n */\n _removeFromParentsChildList(v) {\n delete this._children[this._parent[v]][v];\n }\n\n /**\n * Get parent node for node `v`.\n *\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeID | undefined} the node that is a parent of node `v`\n * or `undefined` if node `v` does not have a parent or is not a member of\n * the graph.\n * Always returns `undefined` for graphs that are not compound.\n * @remarks Takes `O(1)` time.\n */\n parent(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n }\n\n /**\n * Gets list of direct children of node v.\n *\n * @param {NodeID | number} [v] - Node ID. If not specified, gets nodes\n * with no parent (top-level nodes).\n * @returns {NodeID[] | undefined} all nodes that are children of node `v` or\n * `undefined` if node `v` is not in the graph.\n * Always returns `[]` for graphs that are not compound.\n * @remarks Takes `O(|V|)` time.\n */\n children(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n }\n\n /**\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeID[] | undefined} all nodes that are predecessors of the\n * specified node or `undefined` if node `v` is not in the graph.\n * @remarks\n * Behavior is undefined for undirected graphs - use {@link neighbors} instead.\n * Takes `O(|V|)` time.\n */\n predecessors(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n }\n\n /**\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeID[] | undefined} all nodes that are successors of the\n * specified node or `undefined` if node `v` is not in the graph.\n * @remarks\n * Behavior is undefined for undirected graphs - use {@link neighbors} instead.\n * Takes `O(|V|)` time.\n */\n successors(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n }\n\n /**\n * @param {NodeID | number} v - Node ID.\n * @returns {NodeID[] | undefined} all nodes that are predecessors or\n * successors of the specified node\n * or `undefined` if node `v` is not in the graph.\n * @remarks Takes `O(|V|)` time.\n */\n neighbors(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n }\n\n /**\n * @param {NodeID | number} v - Node ID.\n * @returns {boolean} True if the node is a leaf (has no successors), false otherwise.\n */\n isLeaf(v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n }\n\n /**\n * Creates new graph with nodes filtered via `filter`.\n * Edges incident to rejected node\n * are also removed.\n * \n * In case of compound graph, if parent is rejected by `filter`,\n * than all its children are rejected too.\n\n * @param {(v: NodeID) => boolean} filter - Function that returns `true` for nodes to keep.\n * @returns {Graph<GraphLabel, NodeLabel, EdgeLabel>} A new graph containing only the nodes for which `filter` returns `true`.\n * @remarks Average-case complexity: O(|E|+|V|).\n */\n filterNodes(filter) {\n /**\n * @type {Graph<GraphLabel, NodeLabel, EdgeLabel>}\n */\n // @ts-expect-error\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound,\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function (value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function (e) {\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function (v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n }\n\n /* === Edge functions ========== */\n\n /**\n * Sets a new default value that is assigned to edges that are created without\n * a label.\n *\n * @param {typeof this._defaultEdgeLabelFn | EdgeLabel} newDefault - If a function,\n * it is called with the parameters `(v, w, name)`.\n * Otherwise, it is assigned as the label directly.\n * @returns {this}\n */\n setDefaultEdgeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n }\n\n /**\n * @returns {number} the number of edges in the graph.\n * @remarks Complexity: O(1).\n */\n edgeCount() {\n return this._edgeCount;\n }\n\n /**\n * Gets edges of the graph.\n *\n * @returns {EdgeObj[]} the {@link EdgeObj} for each edge in the graph.\n *\n * @remarks\n * In case of compound graph subgraphs are not considered.\n * Use {@link edge()} to get the label for each edge.\n * Takes `O(|E|)` time.\n */\n edges() {\n return _.values(this._edgeObjs);\n }\n\n /**\n * Establish an edges path over the nodes in nodes list.\n *\n * If some edge is already exists, it will update its label, otherwise it will\n * create an edge between pair of nodes with label provided or default label\n * if no label provided.\n *\n * @param {Collection<NodeID>} vs - List of node IDs to create edges between.\n * @param {EdgeLabel} [value] - If set, update all edges with this value.\n * @returns {this}\n * @remarks Complexity: O(|nodes|).\n */\n setPath(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function (v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n }\n\n /**\n * Creates or updates the label for the edge (`v`, `w`) with the optionally\n * supplied `name`.\n *\n * @overload\n * @param {EdgeObj} arg0 - Edge object.\n * @param {EdgeLabel} [value] - If supplied, it is set as the label for the edge.\n * If not supplied and the edge was created by this call then\n * {@link setDefaultEdgeLabel} will be used to assign the edge's label.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @remarks Takes `O(1)` time.\n */\n /**\n * Creates or updates the label for the edge (`v`, `w`) with the optionally\n * supplied `name`.\n *\n * @overload\n * @param {NodeID | number} v - Source node ID. Number values will be coerced to strings.\n * @param {NodeID | number} w - Target node ID. Number values will be coerced to strings.\n * @param {EdgeLabel} [value] - If supplied, it is set as the label for the edge.\n * If not supplied and the edge was created by this call then\n * {@link setDefaultEdgeLabel} will be used to assign the edge's label.\n * @param {string | number} [name] - Edge name. Only useful with multigraphs.\n * @returns {this} the graph, allowing this to be chained with other functions.\n * @remarks Takes `O(1)` time.\n */\n setEdge() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = '' + v;\n w = '' + w;\n if (!_.isUndefined(name)) {\n name = '' + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (Object.prototype.hasOwnProperty.call(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error('Cannot set a named edge when isMultigraph = false');\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n }\n\n /**\n * Gets the label for the specified edge.\n *\n * @overload\n * @param {EdgeObj} v - Edge object.\n * @returns {EdgeLabel | undefined} the label for the edge (`v`, `w`) if the\n * graph has an edge between `v` and `w` with the optional `name`.\n * Returned `undefined` if there is no such edge in the graph.\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * Takes `O(1)` time.\n */\n /**\n * Gets the label for the specified edge.\n *\n * @overload\n * @param {NodeID | number} v - Source node ID.\n * @param {NodeID | number} w - Target node ID.\n * @param {string | number} [name] - Edge name. Only useful with multigraphs.\n * @returns {EdgeLabel | undefined} the label for the edge (`v`, `w`) if the\n * graph has an edge between `v` and `w` with the optional `name`.\n * Returned `undefined` if there is no such edge in the graph.\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * Takes `O(1)` time.\n */\n edge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return this._edgeLabels[e];\n }\n\n /**\n * Detects whether the graph contains specified edge or not.\n *\n * @overload\n * @param {EdgeObj} v - Edge object.\n * @returns {boolean} `true` if the graph has an edge between `v` and `w`\n * with the optional `name`.\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * No subgraphs are considered.\n * Takes `O(1)` time.\n */\n /**\n * Detects whether the graph contains specified edge or not.\n *\n * @overload\n * @param {NodeID | number} v - Source node ID.\n * @param {NodeID | number} w - Target node ID.\n * @param {string | number} [name] - Edge name. Only useful with multigraphs.\n * @returns {boolean} `true` if the graph has an edge between `v` and `w`\n * with the optional `name`.\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * No subgraphs are considered.\n * Takes `O(1)` time.\n */\n hasEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return Object.prototype.hasOwnProperty.call(this._edgeLabels, e);\n }\n\n /**\n * Removes the edge (`v`, `w`) if the graph has an edge between `v` and `w`\n * with the optional `name`. If not this function does nothing.\n *\n * @overload\n * @param {EdgeObj} v - Edge object.\n * @returns {this}\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * No subgraphs are considered.\n * Takes `O(1)` time.\n */\n /**\n * Removes the edge (`v`, `w`) if the graph has an edge between `v` and `w`\n * with the optional `name`. If not this function does nothing.\n *\n * @overload\n * @param {NodeID | number} v - Source node ID.\n * @param {NodeID | number} w - Target node ID.\n * @param {string | number} [name] - Edge name. Only useful with multigraphs.\n * @returns {this}\n * @remarks\n * `v` and `w` can be interchanged for undirected graphs.\n * Takes `O(1)` time.\n */\n removeEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n }\n\n /**\n * @param {NodeID | number} v - Target node ID.\n * @param {NodeID | number} [u] - Optionally filters edges down to just those\n * coming from node `u`.\n * @returns {EdgeObj[] | undefined} all edges that point to the node `v`.\n * Returns `undefined` if node `v` is not in the graph.\n * @remarks\n * Behavior is undefined for undirected graphs - use {@link nodeEdges} instead.\n * Takes `O(|E|)` time.\n */\n inEdges(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.v === u;\n });\n }\n }\n\n /**\n * @param {NodeID | number} v - Target node ID.\n * @param {NodeID | number} [w] - Optionally filters edges down to just those\n * that point to `w`.\n * @returns {EdgeObj[] | undefined} all edges that point to the node `v`.\n * Returns `undefined` if node `v` is not in the graph.\n * @remarks\n * Behavior is undefined for undirected graphs - use {@link nodeEdges} instead.\n * Takes `O(|E|)` time.\n */\n outEdges(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.w === w;\n });\n }\n }\n\n /**\n * @param {NodeID | number} v - Target Node ID.\n * @param {NodeID | number} [w] - If set, filters those edges down to just\n * those between nodes `v` and `w` regardless of direction\n * @returns {EdgeObj[] | undefined} all edges to or from node `v` regardless\n * of direction. Returns `undefined` if node `v` is not in the graph.\n * @remarks Takes `O(|E|)` time.\n */\n nodeEdges(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n }\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\n/**\n * @param {Record<NodeID, number>} map - Object mapping node IDs to counts.\n * @param {NodeID | number} k - Node ID.\n */\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\n/**\n * @param {Record<NodeID, number>} map - Object mapping node IDs to counts.\n * @param {NodeID | number} k - Node ID.\n */\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) {\n delete map[k];\n }\n}\n\n/**\n * @param {boolean} isDirected - If `false`, sorts v and w to ensure a consistent ID.\n * @param {EdgeObj['v'] | number} v_ - Source node ID.\n * @param {EdgeObj['w'] | number} w_ - Target node ID.\n * @param {EdgeObj['name']} [name] - Edge name (for multiple edges between the same nodes).\n * @returns {EdgeID} Unique ID for the edge.\n */\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\n/**\n * @param {boolean} isDirected - If `false`, sorts v and w to ensure a consistent ID.\n * @param {EdgeObj['v'] | number} v_ - Source node ID.\n * @param {EdgeObj['w'] | number} w_ - Target node ID.\n * @param {EdgeObj['name']} [name] - Edge name (for multiple edges between the same nodes).\n * @returns {EdgeObj}\n */\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\n/**\n * @param {boolean} isDirected - If `false`, sorts v and w to ensure a consistent ID.\n * @param {EdgeObj} edgeObj - Edge object.\n * @returns {EdgeID} Unique ID for the edge.\n */\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import "./chunk-XZSTWKYB-C7maKWEr.js";
2
- import { n as e } from "./chunk-EGIJ26TM-DKd5cEgn.js";
3
- export { e as createInfoServices };