@countermeasure-platform/web-components 1.2.1-dev.4.1 → 1.2.1-dev.6.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.
- package/dist/{_basePickBy-BlpD3CIQ.js → _basePickBy-BQMPE4-n.js} +3 -3
- package/dist/{_basePickBy-BlpD3CIQ.js.map → _basePickBy-BQMPE4-n.js.map} +1 -1
- package/dist/{_baseUniq-CO35kH5B.js → _baseUniq-Bdp_vFUv.js} +3 -3
- package/dist/{_baseUniq-CO35kH5B.js.map → _baseUniq-Bdp_vFUv.js.map} +1 -1
- package/dist/{alert-dialog-DXa-O6E4.js → alert-dialog-C4dLk25S.js} +5 -5
- package/dist/{alert-dialog-DXa-O6E4.js.map → alert-dialog-C4dLk25S.js.map} +1 -1
- package/dist/{arc-DyfKNDOh.js → arc-jVbrWVYZ.js} +3 -3
- package/dist/{arc-DyfKNDOh.js.map → arc-jVbrWVYZ.js.map} +1 -1
- package/dist/architecture-PBZL5I3N-Zk3GmKE8.js +3 -0
- package/dist/{architectureDiagram-2XIMDMQ5-B4qk6eh9.js → architectureDiagram-2XIMDMQ5-D5q0ma9h.js} +10 -10
- package/dist/{architectureDiagram-2XIMDMQ5-B4qk6eh9.js.map → architectureDiagram-2XIMDMQ5-D5q0ma9h.js.map} +1 -1
- package/dist/{array-DPBIBG3p.js → array-DXadUs1s.js} +1 -1
- package/dist/{array-DPBIBG3p.js.map → array-DXadUs1s.js.map} +1 -1
- package/dist/{arrow-up-BhjinjWg.js → arrow-up-CJJ5q2ht.js} +2 -2
- package/dist/{arrow-up-BhjinjWg.js.map → arrow-up-CJJ5q2ht.js.map} +1 -1
- package/dist/{avatar-CZGZhjvv.js → avatar-DIhd5zYT.js} +1 -1
- package/dist/{avatar-CZGZhjvv.js.map → avatar-DIhd5zYT.js.map} +1 -1
- package/dist/{badge-CAvV5GE2.js → badge-C2kAwL41.js} +1 -1
- package/dist/{badge-CAvV5GE2.js.map → badge-C2kAwL41.js.map} +1 -1
- package/dist/{blockDiagram-WCTKOSBZ-DdPMGZ7X.js → blockDiagram-WCTKOSBZ-BH3jwWeU.js} +13 -13
- package/dist/{blockDiagram-WCTKOSBZ-DdPMGZ7X.js.map → blockDiagram-WCTKOSBZ-BH3jwWeU.js.map} +1 -1
- package/dist/{button-19KWzy7c.js → button-BtTc7Ncu.js} +1 -1
- package/dist/{button-19KWzy7c.js.map → button-BtTc7Ncu.js.map} +1 -1
- package/dist/{c4Diagram-IC4MRINW-Du1j-C4R.js → c4Diagram-IC4MRINW-OFLrunYI.js} +7 -7
- package/dist/{c4Diagram-IC4MRINW-Du1j-C4R.js.map → c4Diagram-IC4MRINW-OFLrunYI.js.map} +1 -1
- package/dist/{carousel-CJ5lxMYs.js → carousel-T96UFALA.js} +3 -3
- package/dist/{carousel-CJ5lxMYs.js.map → carousel-T96UFALA.js.map} +1 -1
- package/dist/{channel-BHvJxX8j.js → channel-LRbq43st.js} +2 -2
- package/dist/{channel-BHvJxX8j.js.map → channel-LRbq43st.js.map} +1 -1
- package/dist/charts/area/index.js +1 -1
- package/dist/charts/bar/index.js +1 -1
- package/dist/charts/index.js +2 -2
- package/dist/charts/line/index.js +1 -1
- package/dist/charts/pie/index.js +1 -1
- package/dist/charts/radar/index.js +1 -1
- package/dist/charts/scatter/index.js +1 -1
- package/dist/charts/waterfall/index.js +1 -1
- package/dist/{check-CybgTpDT.js → check-cGnuDoWp.js} +2 -2
- package/dist/{check-CybgTpDT.js.map → check-cGnuDoWp.js.map} +1 -1
- package/dist/{chevron-down-C_008JAH.js → chevron-down-m05raooX.js} +2 -2
- package/dist/{chevron-down-C_008JAH.js.map → chevron-down-m05raooX.js.map} +1 -1
- package/dist/{chevron-right-DuHRAn8w.js → chevron-right-ByWVa5XY.js} +2 -2
- package/dist/{chevron-right-DuHRAn8w.js.map → chevron-right-ByWVa5XY.js.map} +1 -1
- package/dist/{chevron-up-BY5jyuW2.js → chevron-up-CtvY7fRK.js} +2 -2
- package/dist/{chevron-up-BY5jyuW2.js.map → chevron-up-CtvY7fRK.js.map} +1 -1
- package/dist/{chunk-4BX2VUAB-CL-dnlxR.js → chunk-4BX2VUAB-BS9gpN-y.js} +2 -2
- package/dist/{chunk-4BX2VUAB-CL-dnlxR.js.map → chunk-4BX2VUAB-BS9gpN-y.js.map} +1 -1
- package/dist/{chunk-55IACEB6-DxNTqHZ8.js → chunk-55IACEB6-DZ-UBhHX.js} +3 -3
- package/dist/{chunk-55IACEB6-DxNTqHZ8.js.map → chunk-55IACEB6-DZ-UBhHX.js.map} +1 -1
- package/dist/{chunk-7E7YKBS2-Bewg8t99.js → chunk-7E7YKBS2-BsywoVTt.js} +2 -2
- package/dist/{chunk-7E7YKBS2-Bewg8t99.js.map → chunk-7E7YKBS2-BsywoVTt.js.map} +1 -1
- package/dist/{chunk-7R4GIKGN-DiZ1HYFd.js → chunk-7R4GIKGN-DJmroLCH.js} +3 -3
- package/dist/{chunk-7R4GIKGN-DiZ1HYFd.js.map → chunk-7R4GIKGN-DJmroLCH.js.map} +1 -1
- package/dist/{chunk-C72U2L5F-BqOejReq.js → chunk-C72U2L5F-BwPwVDcP.js} +2 -2
- package/dist/{chunk-C72U2L5F-BqOejReq.js.map → chunk-C72U2L5F-BwPwVDcP.js.map} +1 -1
- package/dist/{chunk-EGIJ26TM-1-wU_wPi.js → chunk-EGIJ26TM-DKd5cEgn.js} +2 -2
- package/dist/{chunk-EGIJ26TM-1-wU_wPi.js.map → chunk-EGIJ26TM-DKd5cEgn.js.map} +1 -1
- package/dist/{chunk-FMBD7UC4-7bd068zf.js → chunk-FMBD7UC4-1IxrpdPX.js} +2 -2
- package/dist/{chunk-FMBD7UC4-7bd068zf.js.map → chunk-FMBD7UC4-1IxrpdPX.js.map} +1 -1
- package/dist/{chunk-GEFDOKGD-bXEkwPrJ.js → chunk-GEFDOKGD-DGJJEGSm.js} +7 -7
- package/dist/{chunk-GEFDOKGD-bXEkwPrJ.js.map → chunk-GEFDOKGD-DGJJEGSm.js.map} +1 -1
- package/dist/{chunk-GLR3WWYH-GIQ55uMn.js → chunk-GLR3WWYH-BDwmgwCA.js} +8 -8
- package/dist/{chunk-GLR3WWYH-GIQ55uMn.js.map → chunk-GLR3WWYH-BDwmgwCA.js.map} +1 -1
- package/dist/{chunk-HHEYEP7N-BdiTBCvb.js → chunk-HHEYEP7N-DJ1b-gA8.js} +4 -4
- package/dist/{chunk-HHEYEP7N-BdiTBCvb.js.map → chunk-HHEYEP7N-DJ1b-gA8.js.map} +1 -1
- package/dist/{chunk-JSJVCQXG-p-BUVvps.js → chunk-JSJVCQXG-Do17yYig.js} +5 -5
- package/dist/{chunk-JSJVCQXG-p-BUVvps.js.map → chunk-JSJVCQXG-Do17yYig.js.map} +1 -1
- package/dist/{chunk-KX2RTZJC-DopwIbE1.js → chunk-KX2RTZJC-d9jFqUAY.js} +3 -3
- package/dist/{chunk-KX2RTZJC-DopwIbE1.js.map → chunk-KX2RTZJC-d9jFqUAY.js.map} +1 -1
- package/dist/{chunk-KYZI473N-4Y4_4kXL.js → chunk-KYZI473N-BXYCe83A.js} +9 -9
- package/dist/{chunk-KYZI473N-4Y4_4kXL.js.map → chunk-KYZI473N-BXYCe83A.js.map} +1 -1
- package/dist/{chunk-L3YUKLVL-U6LYvPh7.js → chunk-L3YUKLVL-Y5k8UNMf.js} +2 -2
- package/dist/{chunk-L3YUKLVL-U6LYvPh7.js.map → chunk-L3YUKLVL-Y5k8UNMf.js.map} +1 -1
- package/dist/{chunk-MX3YWQON-DnBlqD44.js → chunk-MX3YWQON-D43mcq1f.js} +2 -2
- package/dist/{chunk-MX3YWQON-DnBlqD44.js.map → chunk-MX3YWQON-D43mcq1f.js.map} +1 -1
- package/dist/{chunk-NQ4KR5QH-BSylMz0X.js → chunk-NQ4KR5QH-C0nWShNk.js} +7 -7
- package/dist/{chunk-NQ4KR5QH-BSylMz0X.js.map → chunk-NQ4KR5QH-C0nWShNk.js.map} +1 -1
- package/dist/{chunk-O4XLMI2P-BcKxBhcn.js → chunk-O4XLMI2P-DtGEm9QX.js} +12 -12
- package/dist/{chunk-O4XLMI2P-BcKxBhcn.js.map → chunk-O4XLMI2P-DtGEm9QX.js.map} +1 -1
- package/dist/{chunk-OZEHJAEY-D6S6KbwY.js → chunk-OZEHJAEY-BsQ56PV-.js} +2 -2
- package/dist/{chunk-OZEHJAEY-D6S6KbwY.js.map → chunk-OZEHJAEY-BsQ56PV-.js.map} +1 -1
- package/dist/{chunk-PQ6SQG4A-DPz_e-Es.js → chunk-PQ6SQG4A-Cpfc5F4u.js} +3 -3
- package/dist/{chunk-PQ6SQG4A-DPz_e-Es.js.map → chunk-PQ6SQG4A-Cpfc5F4u.js.map} +1 -1
- package/dist/{chunk-PU5JKC2W-CAfe4Tg3.js → chunk-PU5JKC2W-DNpn_Yik.js} +5 -5
- package/dist/{chunk-PU5JKC2W-CAfe4Tg3.js.map → chunk-PU5JKC2W-DNpn_Yik.js.map} +1 -1
- package/dist/{chunk-QZHKN3VN-DMkPzlbH.js → chunk-QZHKN3VN-kDNdTVLo.js} +2 -2
- package/dist/{chunk-QZHKN3VN-DMkPzlbH.js.map → chunk-QZHKN3VN-kDNdTVLo.js.map} +1 -1
- package/dist/{chunk-R5LLSJPH-C90VQC8y.js → chunk-R5LLSJPH-c1IfaK5D.js} +2 -2
- package/dist/{chunk-R5LLSJPH-C90VQC8y.js.map → chunk-R5LLSJPH-c1IfaK5D.js.map} +1 -1
- package/dist/{chunk-WL4C6EOR-B2OMxQLL.js → chunk-WL4C6EOR-BV-op7zg.js} +10 -10
- package/dist/{chunk-WL4C6EOR-B2OMxQLL.js.map → chunk-WL4C6EOR-BV-op7zg.js.map} +1 -1
- package/dist/{chunk-XIRO2GV7-D1_jT4ch.js → chunk-XIRO2GV7-Bv1hlNLi.js} +2 -2
- package/dist/{chunk-XIRO2GV7-D1_jT4ch.js.map → chunk-XIRO2GV7-Bv1hlNLi.js.map} +1 -1
- package/dist/{chunk-XPW4576I-DkznIIIK.js → chunk-XPW4576I-BqiPnb3d.js} +2 -2
- package/dist/{chunk-XPW4576I-DkznIIIK.js.map → chunk-XPW4576I-BqiPnb3d.js.map} +1 -1
- package/dist/{chunk-XZSTWKYB-BZB_wvbZ.js → chunk-XZSTWKYB-C7maKWEr.js} +6 -6
- package/dist/{chunk-XZSTWKYB-BZB_wvbZ.js.map → chunk-XZSTWKYB-C7maKWEr.js.map} +1 -1
- package/dist/{chunk-YBOYWFTD-DVqQ1pen.js → chunk-YBOYWFTD-DkjEOcgZ.js} +4 -4
- package/dist/{chunk-YBOYWFTD-DVqQ1pen.js.map → chunk-YBOYWFTD-DkjEOcgZ.js.map} +1 -1
- package/dist/classDiagram-VBA2DB6C-DZfC0xPM.js +31 -0
- package/dist/{classDiagram-VBA2DB6C-DFfohpM0.js.map → classDiagram-VBA2DB6C-DZfC0xPM.js.map} +1 -1
- package/dist/classDiagram-v2-RAHNMMFH-CtWRD1ax.js +31 -0
- package/dist/{classDiagram-v2-RAHNMMFH-kUMm28FB.js.map → classDiagram-v2-RAHNMMFH-CtWRD1ax.js.map} +1 -1
- package/dist/{clone-DxI1nSTP.js → clone-CliVdNc8.js} +2 -2
- package/dist/{clone-DxI1nSTP.js.map → clone-CliVdNc8.js.map} +1 -1
- package/dist/{component-x2UxdKEC.js → component-C1Jiz1Ki.js} +1 -1
- package/dist/{component-x2UxdKEC.js.map → component-C1Jiz1Ki.js.map} +1 -1
- package/dist/components/index.js +3 -3
- package/dist/components/theme/accent-switcher.d.ts +2 -0
- package/dist/components/theme/accent-switcher.d.ts.map +1 -1
- package/dist/components/theme/accent-switcher.js +5 -1
- package/dist/components/theme/accent-switcher.js.map +1 -1
- package/dist/components/theme/density-switcher.d.ts +2 -0
- package/dist/components/theme/density-switcher.d.ts.map +1 -1
- package/dist/components/theme/density-switcher.js +5 -1
- package/dist/components/theme/density-switcher.js.map +1 -1
- package/dist/components/theme/font-stack-picker.d.ts +2 -0
- package/dist/components/theme/font-stack-picker.d.ts.map +1 -1
- package/dist/components/theme/font-stack-picker.js +5 -1
- package/dist/components/theme/font-stack-picker.js.map +1 -1
- package/dist/components/theme/glass-slider.d.ts +2 -0
- package/dist/components/theme/glass-slider.d.ts.map +1 -1
- package/dist/components/theme/glass-slider.js +21 -15
- package/dist/components/theme/glass-slider.js.map +1 -1
- package/dist/components/theme/icon-gallery-browser.d.ts +16 -0
- package/dist/components/theme/icon-gallery-browser.d.ts.map +1 -0
- package/dist/components/theme/icon-set-picker.d.ts +2 -0
- package/dist/components/theme/icon-set-picker.d.ts.map +1 -1
- package/dist/components/theme/icon-set-picker.js +29 -24
- package/dist/components/theme/icon-set-picker.js.map +1 -1
- package/dist/components/theme/icon-usage-matrix.d.ts +2 -0
- package/dist/components/theme/icon-usage-matrix.d.ts.map +1 -1
- package/dist/components/theme/icon-usage-matrix.js +11 -7
- package/dist/components/theme/icon-usage-matrix.js.map +1 -1
- package/dist/components/theme/index.js +3 -3
- package/dist/components/theme/radius-slider.d.ts +2 -0
- package/dist/components/theme/radius-slider.d.ts.map +1 -1
- package/dist/components/theme/radius-slider.js +17 -12
- package/dist/components/theme/radius-slider.js.map +1 -1
- package/dist/components/theme/theme-preset-grid.d.ts +2 -0
- package/dist/components/theme/theme-preset-grid.d.ts.map +1 -1
- package/dist/components/theme/theme-preset-grid.js +6 -2
- package/dist/components/theme/theme-preset-grid.js.map +1 -1
- package/dist/components/theme/theme-preview-tile.d.ts +2 -0
- package/dist/components/theme/theme-preview-tile.d.ts.map +1 -1
- package/dist/components/theme/theme-preview-tile.js +9 -5
- package/dist/components/theme/theme-preview-tile.js.map +1 -1
- package/dist/components/theme/theme-studio.d.ts +4 -0
- package/dist/components/theme/theme-studio.d.ts.map +1 -1
- package/dist/components/theme/theme-studio.js +2 -93
- package/dist/components/theme/theme-switcher.d.ts +2 -0
- package/dist/components/theme/theme-switcher.d.ts.map +1 -1
- package/dist/components/theme/theme-switcher.js +5 -1
- package/dist/components/theme/theme-switcher.js.map +1 -1
- package/dist/composites/metrics-card.js +1 -1
- package/dist/composites/per-case-stats-table.js +1 -1
- package/dist/composites/run-monitor.js +2 -2
- package/dist/{copy-Hv8btfHH.js → copy-CP6UzCoj.js} +2 -2
- package/dist/{copy-Hv8btfHH.js.map → copy-CP6UzCoj.js.map} +1 -1
- package/dist/{cose-bilkent-S5V4N54A-DSIl5_e8.js → cose-bilkent-S5V4N54A-DxM02fly.js} +4 -4
- package/dist/{cose-bilkent-S5V4N54A-DSIl5_e8.js.map → cose-bilkent-S5V4N54A-DxM02fly.js.map} +1 -1
- package/dist/{createLucideIcon-wKpAnzBe.js → createLucideIcon-Cfb5CZJx.js} +1 -1
- package/dist/{createLucideIcon-wKpAnzBe.js.map → createLucideIcon-Cfb5CZJx.js.map} +1 -1
- package/dist/{cytoscape.esm-klxrH6H1.js → cytoscape.esm-2vKMh7AJ.js} +1 -1
- package/dist/{cytoscape.esm-klxrH6H1.js.map → cytoscape.esm-2vKMh7AJ.js.map} +1 -1
- package/dist/{dagre-Bm7BZZKB.js → dagre-BqC9mhMk.js} +7 -7
- package/dist/{dagre-Bm7BZZKB.js.map → dagre-BqC9mhMk.js.map} +1 -1
- package/dist/{dagre-KLK3FWXG-B0rbfsw9.js → dagre-KLK3FWXG-DTKcsol6.js} +15 -15
- package/dist/{dagre-KLK3FWXG-B0rbfsw9.js.map → dagre-KLK3FWXG-DTKcsol6.js.map} +1 -1
- package/dist/{defaultLocale-Cql_qCPq.js → defaultLocale-PLHpRrsr.js} +1 -1
- package/dist/{defaultLocale-Cql_qCPq.js.map → defaultLocale-PLHpRrsr.js.map} +1 -1
- package/dist/{diagram-E7M64L7V-DWS26Zbm.js → diagram-E7M64L7V-Co7O3gub.js} +12 -12
- package/dist/{diagram-E7M64L7V-DWS26Zbm.js.map → diagram-E7M64L7V-Co7O3gub.js.map} +1 -1
- package/dist/{diagram-IFDJBPK2--zOQrB5O.js → diagram-IFDJBPK2-D-Enf1mK.js} +7 -7
- package/dist/{diagram-IFDJBPK2--zOQrB5O.js.map → diagram-IFDJBPK2-D-Enf1mK.js.map} +1 -1
- package/dist/{diagram-P4PSJMXO-DjNveg1t.js → diagram-P4PSJMXO-O8g_RIkM.js} +7 -7
- package/dist/{diagram-P4PSJMXO-DjNveg1t.js.map → diagram-P4PSJMXO-O8g_RIkM.js.map} +1 -1
- package/dist/display/avatar/index.js +1 -1
- package/dist/display/badge/index.js +1 -1
- package/dist/display/index.js +3 -3
- package/dist/display/markdown-viewer/index.js +1 -1
- package/dist/{dist-Dq1IoZXt.js → dist-B-HCSak9.js} +13 -13
- package/dist/{dist-Dq1IoZXt.js.map → dist-B-HCSak9.js.map} +1 -1
- package/dist/{dist-CbqFryer.js → dist-BhO08NBU.js} +5 -5
- package/dist/{dist-CbqFryer.js.map → dist-BhO08NBU.js.map} +1 -1
- package/dist/{dist-D0fg6pif.js → dist-BlNMcPtC.js} +2 -2
- package/dist/{dist-D0fg6pif.js.map → dist-BlNMcPtC.js.map} +1 -1
- package/dist/{dist-CSE7pO-4.js → dist-BrNloUiz.js} +1 -1
- package/dist/{dist-CSE7pO-4.js.map → dist-BrNloUiz.js.map} +1 -1
- package/dist/{dist-CcNjOWyQ.js → dist-Br_I_YIY.js} +2 -2
- package/dist/{dist-CcNjOWyQ.js.map → dist-Br_I_YIY.js.map} +1 -1
- package/dist/{dist-D0hHNX_3.js → dist-CDa1xTf4.js} +9 -9
- package/dist/{dist-D0hHNX_3.js.map → dist-CDa1xTf4.js.map} +1 -1
- package/dist/{dist-BCCeHAQm.js → dist-CWPamCJD.js} +2 -2
- package/dist/{dist-BCCeHAQm.js.map → dist-CWPamCJD.js.map} +1 -1
- package/dist/{dist-CVCn7F_m.js → dist-CetkIu6m.js} +1 -1
- package/dist/{dist-CVCn7F_m.js.map → dist-CetkIu6m.js.map} +1 -1
- package/dist/{dist-koa_pEtu.js → dist-CjZz16VT.js} +2 -2
- package/dist/{dist-koa_pEtu.js.map → dist-CjZz16VT.js.map} +1 -1
- package/dist/{dist-D5o6xae2.js → dist-DDlxLS_M.js} +2 -2
- package/dist/{dist-D5o6xae2.js.map → dist-DDlxLS_M.js.map} +1 -1
- package/dist/{dist-Cao8o5bZ.js → dist-DFW2ymX5.js} +1 -1
- package/dist/{dist-Cao8o5bZ.js.map → dist-DFW2ymX5.js.map} +1 -1
- package/dist/{dist-Dm7Xaded.js → dist-DHTh2jaC.js} +1 -1
- package/dist/{dist-Dm7Xaded.js.map → dist-DHTh2jaC.js.map} +1 -1
- package/dist/{dist-BBVMDH9A.js → dist-DN5XnB8I.js} +4 -4
- package/dist/{dist-BBVMDH9A.js.map → dist-DN5XnB8I.js.map} +1 -1
- package/dist/{dist-C0wG5dwG.js → dist-DYQiYO9a.js} +2 -2
- package/dist/{dist-C0wG5dwG.js.map → dist-DYQiYO9a.js.map} +1 -1
- package/dist/{dist-RmXz0NYF.js → dist-GA_FAY5r.js} +1 -1
- package/dist/{dist-RmXz0NYF.js.map → dist-GA_FAY5r.js.map} +1 -1
- package/dist/{dist-cMlzVrN6.js → dist-M-TigQUP.js} +3 -3
- package/dist/{dist-cMlzVrN6.js.map → dist-M-TigQUP.js.map} +1 -1
- package/dist/{dist-DxtM7vvP.js → dist-QzxcNtrD.js} +3 -3
- package/dist/{dist-DxtM7vvP.js.map → dist-QzxcNtrD.js.map} +1 -1
- package/dist/{dist-CTlQcJNK.js → dist-W53Bo1BJ.js} +1 -1
- package/dist/{dist-CTlQcJNK.js.map → dist-W53Bo1BJ.js.map} +1 -1
- package/dist/{dist-B1veE5DO.js → dist-bUQfhez2.js} +8 -8
- package/dist/{dist-B1veE5DO.js.map → dist-bUQfhez2.js.map} +1 -1
- package/dist/{dist-DGayZ3ok2.js → dist-e5OOjxMa.js} +2 -2
- package/dist/dist-e5OOjxMa.js.map +1 -0
- package/dist/{dist-CpMqmV-i.js → dist-r_mYhsAH.js} +2 -2
- package/dist/{dist-CpMqmV-i.js.map → dist-r_mYhsAH.js.map} +1 -1
- package/dist/{dropdown-menu-ChWWguC6.js → dropdown-menu-CxFMDZns.js} +7 -7
- package/dist/{dropdown-menu-ChWWguC6.js.map → dropdown-menu-CxFMDZns.js.map} +1 -1
- package/dist/{ellipsis-QzwbUxFu.js → ellipsis-CLIG9-2m.js} +2 -2
- package/dist/{ellipsis-QzwbUxFu.js.map → ellipsis-CLIG9-2m.js.map} +1 -1
- package/dist/{erDiagram-INFDFZHY-Ccs6kW39.js → erDiagram-INFDFZHY-C42JeR9I.js} +15 -15
- package/dist/{erDiagram-INFDFZHY-Ccs6kW39.js.map → erDiagram-INFDFZHY-C42JeR9I.js.map} +1 -1
- package/dist/{es2015-Bv2aaatg.js → es2015-CJnm4_FQ.js} +4 -4
- package/dist/{es2015-Bv2aaatg.js.map → es2015-CJnm4_FQ.js.map} +1 -1
- package/dist/{flowDiagram-PKNHOUZH-BFdCj6uy.js → flowDiagram-PKNHOUZH-DInJjOz3.js} +18 -18
- package/dist/{flowDiagram-PKNHOUZH-BFdCj6uy.js.map → flowDiagram-PKNHOUZH-DInJjOz3.js.map} +1 -1
- package/dist/{ganttDiagram-A5KZAMGK-11X4ChEO.js → ganttDiagram-A5KZAMGK-Dgp-4Yss.js} +8 -8
- package/dist/{ganttDiagram-A5KZAMGK-11X4ChEO.js.map → ganttDiagram-A5KZAMGK-Dgp-4Yss.js.map} +1 -1
- package/dist/gitGraph-HDMCJU4V-D_QsK6Rt.js +3 -0
- package/dist/{gitGraphDiagram-K3NZZRJ6-BaZX5GA5.js → gitGraphDiagram-K3NZZRJ6-Dr_X0dND.js} +8 -8
- package/dist/{gitGraphDiagram-K3NZZRJ6-BaZX5GA5.js.map → gitGraphDiagram-K3NZZRJ6-Dr_X0dND.js.map} +1 -1
- package/dist/{graphlib-DmFENmkJ.js → graphlib-ecencZTG.js} +4 -4
- package/dist/{graphlib-DmFENmkJ.js.map → graphlib-ecencZTG.js.map} +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +121 -121
- package/dist/info-3K5VOQVL-BbLiZXwn.js +3 -0
- package/dist/{infoDiagram-LFFYTUFH-iswGOIAk.js → infoDiagram-LFFYTUFH-DajJJRvc.js} +5 -5
- package/dist/{infoDiagram-LFFYTUFH-iswGOIAk.js.map → infoDiagram-LFFYTUFH-DajJJRvc.js.map} +1 -1
- package/dist/{init-Bdvvvy1Z.js → init-DcLTaNW1.js} +1 -1
- package/dist/{init-Bdvvvy1Z.js.map → init-DcLTaNW1.js.map} +1 -1
- package/dist/{input-DwHjxF_w.js → input-BrmncNsd.js} +1 -1
- package/dist/{input-DwHjxF_w.js.map → input-BrmncNsd.js.map} +1 -1
- package/dist/{interactive-C6OMqZhG.js → interactive-CXfIDzyh.js} +1 -1
- package/dist/{interactive-C6OMqZhG.js.map → interactive-CXfIDzyh.js.map} +1 -1
- package/dist/{isArrayLikeObject-uEhZQuCW.js → isArrayLikeObject-Bjsxaqj7.js} +1 -1
- package/dist/{isArrayLikeObject-uEhZQuCW.js.map → isArrayLikeObject-Bjsxaqj7.js.map} +1 -1
- package/dist/{isEmpty-SB7gHWzg.js → isEmpty-CeZZUVts.js} +2 -2
- package/dist/{isEmpty-SB7gHWzg.js.map → isEmpty-CeZZUVts.js.map} +1 -1
- package/dist/{ishikawaDiagram-PHBUUO56-BYrA8GRt.js → ishikawaDiagram-PHBUUO56-qHBJm2LT.js} +6 -6
- package/dist/{ishikawaDiagram-PHBUUO56-BYrA8GRt.js.map → ishikawaDiagram-PHBUUO56-qHBJm2LT.js.map} +1 -1
- package/dist/{journeyDiagram-4ABVD52K-BlCQNVun.js → journeyDiagram-4ABVD52K-PgfYdoDM.js} +7 -7
- package/dist/{journeyDiagram-4ABVD52K-BlCQNVun.js.map → journeyDiagram-4ABVD52K-PgfYdoDM.js.map} +1 -1
- package/dist/{kanban-definition-K7BYSVSG-85hLaVO4.js → kanban-definition-K7BYSVSG-DFRT8j7A.js} +11 -11
- package/dist/{kanban-definition-K7BYSVSG-85hLaVO4.js.map → kanban-definition-K7BYSVSG-DFRT8j7A.js.map} +1 -1
- package/dist/{katex-DyctUUDD.js → katex-BZdHnXin.js} +1 -1
- package/dist/{katex-DyctUUDD.js.map → katex-BZdHnXin.js.map} +1 -1
- package/dist/{label-DaoC8KCo.js → label-D_TX0q0F.js} +4 -4
- package/dist/{label-DaoC8KCo.js.map → label-D_TX0q0F.js.map} +1 -1
- package/dist/layout-DJ2E8nU0.js +135 -0
- package/dist/layout-DJ2E8nU0.js.map +1 -0
- package/dist/{line-xLJn8e8J.js → line-Cq1AZT4f.js} +4 -4
- package/dist/{line-xLJn8e8J.js.map → line-Cq1AZT4f.js.map} +1 -1
- package/dist/{linear-BePtLBEt.js → linear-BnJD01Xn.js} +5 -5
- package/dist/{linear-BePtLBEt.js.map → linear-BnJD01Xn.js.map} +1 -1
- package/dist/{markdown-viewer-DrwjEcXp.js → markdown-viewer-CBRQVRMp.js} +1 -1
- package/dist/{markdown-viewer-DrwjEcXp.js.map → markdown-viewer-CBRQVRMp.js.map} +1 -1
- package/dist/{math--xT1IZMK.js → math-D4gdAuwG.js} +1 -1
- package/dist/{math--xT1IZMK.js.map → math-D4gdAuwG.js.map} +1 -1
- package/dist/{menubar-CZie7LCj.js → menubar-lQZ-0ckw.js} +13 -13
- package/dist/{menubar-CZie7LCj.js.map → menubar-lQZ-0ckw.js.map} +1 -1
- package/dist/{mermaid-parser.core-Bd7Ghv5c.js → mermaid-parser.core-Dz5qv4CI.js} +16 -16
- package/dist/{mermaid-parser.core-Bd7Ghv5c.js.map → mermaid-parser.core-Dz5qv4CI.js.map} +1 -1
- package/dist/{mermaid.core-beWmNAWY.js → mermaid.core-DTiIXVKa.js} +44 -44
- package/dist/{mermaid.core-beWmNAWY.js.map → mermaid.core-DTiIXVKa.js.map} +1 -1
- package/dist/{mindmap-definition-YRQLILUH-CNBsYwDI.js → mindmap-definition-YRQLILUH-D95OPRMh.js} +13 -13
- package/dist/{mindmap-definition-YRQLILUH-CNBsYwDI.js.map → mindmap-definition-YRQLILUH-D95OPRMh.js.map} +1 -1
- package/dist/{navigation-menu-Db2QQ70P.js → navigation-menu-BpZTlEU0.js} +14 -14
- package/dist/{navigation-menu-Db2QQ70P.js.map → navigation-menu-BpZTlEU0.js.map} +1 -1
- package/dist/{ordinal-BKo-UFaW.js → ordinal-CC9tfh_g.js} +2 -2
- package/dist/{ordinal-BKo-UFaW.js.map → ordinal-CC9tfh_g.js.map} +1 -1
- package/dist/packet-RMMSAZCW-D72DRs1N.js +3 -0
- package/dist/{pagination-BmFjVnmV.js → pagination-CCjNavtQ.js} +5 -5
- package/dist/{pagination-BmFjVnmV.js.map → pagination-CCjNavtQ.js.map} +1 -1
- package/dist/{path-Z-HG_8i_.js → path-y0uQCOMW.js} +1 -1
- package/dist/{path-Z-HG_8i_.js.map → path-y0uQCOMW.js.map} +1 -1
- package/dist/pie-UPGHQEXC-C8RDLrEi.js +3 -0
- package/dist/{pieDiagram-SKSYHLDU-BMrGgUAv.js → pieDiagram-SKSYHLDU-BREEn_Sk.js} +12 -12
- package/dist/{pieDiagram-SKSYHLDU-BMrGgUAv.js.map → pieDiagram-SKSYHLDU-BREEn_Sk.js.map} +1 -1
- package/dist/primitives/button/index.js +1 -1
- package/dist/primitives/index.js +3 -3
- package/dist/primitives/input/index.js +1 -1
- package/dist/primitives/live-log-tail.js +1 -1
- package/dist/primitives/phase-progress.js +1 -1
- package/dist/primitives/sse-live-badge.js +1 -1
- package/dist/primitives/toggle/index.js +1 -1
- package/dist/primitives/yaml-override-editor.js +1 -1
- package/dist/primitives-BzQ6EvIx.js +380 -0
- package/dist/primitives-BzQ6EvIx.js.map +1 -0
- package/dist/{quadrantDiagram-337W2JSQ-kFO50yPy.js → quadrantDiagram-337W2JSQ-CcKc-h2o.js} +5 -5
- package/dist/{quadrantDiagram-337W2JSQ-kFO50yPy.js.map → quadrantDiagram-337W2JSQ-CcKc-h2o.js.map} +1 -1
- package/dist/radar-KQ55EAFF-DhmvjiyN.js +3 -0
- package/dist/{radio-group-Dum8cfXo.js → radio-group-8GO9_jRN.js} +10 -10
- package/dist/{radio-group-Dum8cfXo.js.map → radio-group-8GO9_jRN.js.map} +1 -1
- package/dist/react/app-switcher.js +1 -1
- package/dist/react/brand.js +1 -1
- package/dist/react/consent/preferences.js +1 -1
- package/dist/react/editors/code-editor.js +1 -1
- package/dist/react/editors/diff-viewer.js +1 -1
- package/dist/react/editors/json-viewer.js +1 -1
- package/dist/react/editors/log-viewer.js +1 -1
- package/dist/react/editors/yaml-editor.js +1 -1
- package/dist/react/feedback/notification-banner.js +2 -2
- package/dist/react/hooks/useSSE.js +1 -1
- package/dist/react/hooks/useStorage.js +1 -1
- package/dist/react/layout/app-shell.js +1 -1
- package/dist/react/layout/browser-layout.d.ts +12 -0
- package/dist/react/layout/browser-layout.d.ts.map +1 -0
- package/dist/react/layout/detail-header.d.ts +13 -0
- package/dist/react/layout/detail-header.d.ts.map +1 -0
- package/dist/react/layout/index.d.ts +4 -0
- package/dist/react/layout/index.d.ts.map +1 -1
- package/dist/react/layout/index.js +3 -2
- package/dist/react/layout/page-frame.d.ts +11 -0
- package/dist/react/layout/page-frame.d.ts.map +1 -0
- package/dist/react/layout/page-header.js +1 -1
- package/dist/react/layout/sub-nav.d.ts +15 -0
- package/dist/react/layout/sub-nav.d.ts.map +1 -0
- package/dist/react/primitives/alert-dialog.js +1 -1
- package/dist/react/primitives/alert.js +3 -3
- package/dist/react/primitives/animated-counter.js +1 -1
- package/dist/react/primitives/aspect-ratio.js +1 -1
- package/dist/react/primitives/attack-path.d.ts +1 -1
- package/dist/react/primitives/attack-path.js +2 -2
- package/dist/react/primitives/avatar.js +2 -2
- package/dist/react/primitives/badge.d.ts +1 -1
- package/dist/react/primitives/badge.js +3 -3
- package/dist/react/primitives/breadcrumb.js +3 -3
- package/dist/react/primitives/button.js +3 -3
- package/dist/react/primitives/calendar.js +1 -1
- package/dist/react/primitives/card.js +1 -1
- package/dist/react/primitives/carousel.js +1 -1
- package/dist/react/primitives/chart-area.js +1 -1
- package/dist/react/primitives/chart-bar.js +1 -1
- package/dist/react/primitives/chart-candlestick.js +1 -1
- package/dist/react/primitives/chart-frame.d.ts +14 -0
- package/dist/react/primitives/chart-frame.d.ts.map +1 -0
- package/dist/react/primitives/chart-funnel.js +1 -1
- package/dist/react/primitives/chart-gauge.js +1 -1
- package/dist/react/primitives/chart-heatmap.js +1 -1
- package/dist/react/primitives/chart-line.js +1 -1
- package/dist/react/primitives/chart-pie.js +1 -1
- package/dist/react/primitives/chart-radar.js +1 -1
- package/dist/react/primitives/chart-sankey.js +1 -1
- package/dist/react/primitives/chart-scatter.js +1 -1
- package/dist/react/primitives/chart-sparkline.js +1 -1
- package/dist/react/primitives/chart-treemap.js +1 -1
- package/dist/react/primitives/chart-waterfall.js +1 -1
- package/dist/react/primitives/chat-drawer.d.ts +13 -0
- package/dist/react/primitives/chat-drawer.d.ts.map +1 -0
- package/dist/react/primitives/chat-input.d.ts +10 -0
- package/dist/react/primitives/chat-input.d.ts.map +1 -0
- package/dist/react/primitives/checkbox.js +1 -1
- package/dist/react/primitives/code-block.js +3 -3
- package/dist/react/primitives/code-viewer.js +3 -3
- package/dist/react/primitives/collapsible.js +3 -3
- package/dist/react/primitives/color-picker.js +1 -1
- package/dist/react/primitives/context-menu.js +1 -1
- package/dist/react/primitives/copy-button.js +4 -4
- package/dist/react/primitives/cron-editor.js +1 -1
- package/dist/react/primitives/cvss-badge.d.ts +1 -1
- package/dist/react/primitives/cvss-badge.js +2 -2
- package/dist/react/primitives/dashboard-metric-card.d.ts +18 -0
- package/dist/react/primitives/dashboard-metric-card.d.ts.map +1 -0
- package/dist/react/primitives/data-field.d.ts +13 -0
- package/dist/react/primitives/data-field.d.ts.map +1 -0
- package/dist/react/primitives/data-grid.js +4 -4
- package/dist/react/primitives/data-table.js +2 -2
- package/dist/react/primitives/date-picker.js +1 -1
- package/dist/react/primitives/detection-status.d.ts +1 -1
- package/dist/react/primitives/detection-status.js +2 -2
- package/dist/react/primitives/dialog.js +3 -3
- package/dist/react/primitives/drawer.js +3 -3
- package/dist/react/primitives/dropdown-menu.js +1 -1
- package/dist/react/primitives/empty-state.js +1 -1
- package/dist/react/primitives/field.js +1 -1
- package/dist/react/primitives/file-tree.js +1 -1
- package/dist/react/primitives/flow-diagram.js +1 -1
- package/dist/react/primitives/heatmap-legend.js +1 -1
- package/dist/react/primitives/heatmap-toolbar.js +2 -2
- package/dist/react/primitives/hover-card.js +1 -1
- package/dist/react/primitives/index.d.ts +8 -0
- package/dist/react/primitives/index.d.ts.map +1 -1
- package/dist/react/primitives/index.js +84 -83
- package/dist/react/primitives/input.js +1 -1
- package/dist/react/primitives/json-path-browser.js +1 -1
- package/dist/react/primitives/kanban.js +1 -1
- package/dist/react/primitives/kbd.js +1 -1
- package/dist/react/primitives/label.js +1 -1
- package/dist/react/primitives/map.js +1 -1
- package/dist/react/primitives/markdown-viewer.js +0 -0
- package/dist/react/primitives/menubar.js +1 -1
- package/dist/react/primitives/mermaid-diagram.js +1 -1
- package/dist/react/primitives/metric-tile.js +1 -1
- package/dist/react/primitives/mitre-matrix.d.ts +1 -1
- package/dist/react/primitives/mitre-matrix.js +2 -2
- package/dist/react/primitives/modal.js +3 -3
- package/dist/react/primitives/navigation-menu.js +1 -1
- package/dist/react/primitives/network-graph.js +1 -1
- package/dist/react/primitives/notification-center.js +4 -4
- package/dist/react/primitives/notification-center.js.map +1 -1
- package/dist/react/primitives/pagination.js +1 -1
- package/dist/react/primitives/popover.js +1 -1
- package/dist/react/primitives/progress.js +2 -2
- package/dist/react/primitives/query-boundary.d.ts +15 -0
- package/dist/react/primitives/query-boundary.d.ts.map +1 -0
- package/dist/react/primitives/radio-group.js +1 -1
- package/dist/react/primitives/rule-editor.js +1 -1
- package/dist/react/primitives/score-ring.d.ts +13 -0
- package/dist/react/primitives/score-ring.d.ts.map +1 -0
- package/dist/react/primitives/scroll-area.js +1 -1
- package/dist/react/primitives/search.js +3 -3
- package/dist/react/primitives/section-panel.d.ts +11 -0
- package/dist/react/primitives/section-panel.d.ts.map +1 -0
- package/dist/react/primitives/select.js +1 -1
- package/dist/react/primitives/separator.js +1 -1
- package/dist/react/primitives/severity-indicator.d.ts +1 -1
- package/dist/react/primitives/severity-indicator.js +2 -2
- package/dist/react/primitives/sheet.js +3 -3
- package/dist/react/primitives/skeleton.js +1 -1
- package/dist/react/primitives/slide-panel.js +2 -2
- package/dist/react/primitives/slider.js +1 -1
- package/dist/react/primitives/spinner.js +1 -1
- package/dist/react/primitives/split-pane.js +1 -1
- package/dist/react/primitives/stat-card.js +2 -2
- package/dist/react/primitives/status-bar.js +1 -1
- package/dist/react/primitives/status-dot.js +1 -1
- package/dist/react/primitives/stepper.js +3 -3
- package/dist/react/primitives/switch.js +1 -1
- package/dist/react/primitives/table.js +1 -1
- package/dist/react/primitives/tabs.js +1 -1
- package/dist/react/primitives/tag-input.js +1 -1
- package/dist/react/primitives/terminal.js +1 -1
- package/dist/react/primitives/textarea.js +1 -1
- package/dist/react/primitives/timeline.js +1 -1
- package/dist/react/primitives/toast.js +1 -1
- package/dist/react/primitives/toggle.js +1 -1
- package/dist/react/primitives/tooltip.js +1 -1
- package/dist/react/primitives/tree-view.js +2 -2
- package/dist/react/primitives/typography.js +1 -1
- package/dist/react/primitives/uptime-bar.js +1 -1
- package/dist/react/primitives/vulnerability-card.d.ts +1 -1
- package/dist/react/primitives/vulnerability-card.js +2 -2
- package/dist/react/sidebar.js +2 -2
- package/dist/react/theme-studio.js +1 -1
- package/dist/react/theme-toggle.js +1 -1
- package/dist/react/topology.js +1 -1
- package/dist/react.js +103 -103
- package/dist/{requirementDiagram-Z7DCOOCP-D2Oxfw6G.js → requirementDiagram-Z7DCOOCP-aPcaPduF.js} +13 -13
- package/dist/{requirementDiagram-Z7DCOOCP-D2Oxfw6G.js.map → requirementDiagram-Z7DCOOCP-aPcaPduF.js.map} +1 -1
- package/dist/{rough.esm-Czyj4U3Q.js → rough.esm-C9rQ9YkE.js} +1 -1
- package/dist/{rough.esm-Czyj4U3Q.js.map → rough.esm-C9rQ9YkE.js.map} +1 -1
- package/dist/{sankeyDiagram-WA2Y5GQK-q1_lwNBY.js → sankeyDiagram-WA2Y5GQK-CO_lUqQX.js} +5 -5
- package/dist/{sankeyDiagram-WA2Y5GQK-q1_lwNBY.js.map → sankeyDiagram-WA2Y5GQK-CO_lUqQX.js.map} +1 -1
- package/dist/{scroll-area-CR1iK8Af.js → scroll-area-C_oeG0js.js} +8 -8
- package/dist/{scroll-area-CR1iK8Af.js.map → scroll-area-C_oeG0js.js.map} +1 -1
- package/dist/{search-CrxnZfZ5.js → search-Cu20LdaQ.js} +2 -2
- package/dist/{search-CrxnZfZ5.js.map → search-Cu20LdaQ.js.map} +1 -1
- package/dist/security/index.d.ts +2 -0
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +7 -6
- package/dist/security/mitre-data.d.ts +38 -0
- package/dist/security/mitre-data.d.ts.map +1 -0
- package/dist/security-AzmGrY2-.js +77 -0
- package/dist/security-AzmGrY2-.js.map +1 -0
- package/dist/{select-BX7KT3VP.js → select-Bc7Gn3Oa.js} +19 -19
- package/dist/{select-BX7KT3VP.js.map → select-Bc7Gn3Oa.js.map} +1 -1
- package/dist/{separator-C6KfB7ww.js → separator-C-OWzLst.js} +3 -3
- package/dist/{separator-C6KfB7ww.js.map → separator-C-OWzLst.js.map} +1 -1
- package/dist/{sequenceDiagram-2WXFIKYE-BCEaH0s_.js → sequenceDiagram-2WXFIKYE-D7Vh1Zld.js} +9 -9
- package/dist/{sequenceDiagram-2WXFIKYE-BCEaH0s_.js.map → sequenceDiagram-2WXFIKYE-D7Vh1Zld.js.map} +1 -1
- package/dist/{series-DMc2ZYyj.js → series-DrBALkNS.js} +2 -2
- package/dist/{series-DMc2ZYyj.js.map → series-DrBALkNS.js.map} +1 -1
- package/dist/services/index.js +2 -2
- package/dist/services/sse-react.js +1 -1
- package/dist/services/sse.js +1 -1
- package/dist/services/theme-engine/engine.d.ts.map +1 -1
- package/dist/services/theme-engine/fonts.d.ts.map +1 -1
- package/dist/services/theme-engine/icons.d.ts.map +1 -1
- package/dist/services/theme-engine/index.js +120 -48
- package/dist/services/theme-engine/index.js.map +1 -1
- package/dist/services/theme-engine/test-helpers.d.ts +13 -0
- package/dist/services/theme-engine/test-helpers.d.ts.map +1 -0
- package/dist/services/toast-react.js +2 -2
- package/dist/sidebar/index.js +1 -1
- package/dist/{slider-CLgdcoKC.js → slider-CJoWbXQt.js} +10 -10
- package/dist/{slider-CLgdcoKC.js.map → slider-CJoWbXQt.js.map} +1 -1
- package/dist/{src-hxErHTV1.js → src-BhNgmpel.js} +2 -2
- package/dist/{src-hxErHTV1.js.map → src-BhNgmpel.js.map} +1 -1
- package/dist/{src-BEYP07TO.js → src-D1EMXotX.js} +1 -1
- package/dist/{src-BEYP07TO.js.map → src-D1EMXotX.js.map} +1 -1
- package/dist/{sse-D0HLjufB.js → sse-DCaj9UFJ.js} +1 -1
- package/dist/{sse-D0HLjufB.js.map → sse-DCaj9UFJ.js.map} +1 -1
- package/dist/{stateDiagram-RAJIS63D-B-Mu-_BR.js → stateDiagram-RAJIS63D-DdiY5cf3.js} +18 -18
- package/dist/{stateDiagram-RAJIS63D-B-Mu-_BR.js.map → stateDiagram-RAJIS63D-DdiY5cf3.js.map} +1 -1
- package/dist/stateDiagram-v2-FVOUBMTO-CAWy0Pkh.js +29 -0
- package/dist/{stateDiagram-v2-FVOUBMTO-Cnp2uGxd.js.map → stateDiagram-v2-FVOUBMTO-CAWy0Pkh.js.map} +1 -1
- package/dist/{storage-B-gK537W.js → storage-BUlr2J4R.js} +1 -1
- package/dist/{storage-B-gK537W.js.map → storage-BUlr2J4R.js.map} +1 -1
- package/dist/styles/layout.css +18 -18
- package/dist/styles/sidebar.css +31 -19
- package/dist/styles/tenant-ui.css +34 -34
- package/dist/styles/theme-engine.css +546 -23
- package/dist/styles/theme.css +1 -0
- package/dist/styles/tokens.css +69 -34
- package/dist/styles/ui.css +5 -5
- package/dist/{switch-CoTkNGEB.js → switch-Dcd3Fyw_.js} +7 -7
- package/dist/{switch-CoTkNGEB.js.map → switch-Dcd3Fyw_.js.map} +1 -1
- package/dist/{tabs-BT2WAQcK.js → tabs-8AT2ntg_.js} +8 -8
- package/dist/{tabs-BT2WAQcK.js.map → tabs-8AT2ntg_.js.map} +1 -1
- package/dist/theme-studio-CN9Ipb9W.js +236 -0
- package/dist/theme-studio-CN9Ipb9W.js.map +1 -0
- package/dist/{theme-toggle-Csyj-tLm.js → theme-toggle-glKWbKG8.js} +2 -2
- package/dist/{theme-toggle-Csyj-tLm.js.map → theme-toggle-glKWbKG8.js.map} +1 -1
- package/dist/{timeline-definition-YZTLITO2-B0SegHNN.js → timeline-definition-YZTLITO2-CjxxCuOg.js} +5 -5
- package/dist/{timeline-definition-YZTLITO2-B0SegHNN.js.map → timeline-definition-YZTLITO2-CjxxCuOg.js.map} +1 -1
- package/dist/{toast-DRNPdj-R.js → toast-CawTm-7V.js} +6 -6
- package/dist/{toast-DRNPdj-R.js.map → toast-CawTm-7V.js.map} +1 -1
- package/dist/{toggle-DJJEPXXE.js → toggle-C8sazHXX.js} +7 -7
- package/dist/{toggle-DJJEPXXE.js.map → toggle-C8sazHXX.js.map} +1 -1
- package/dist/{toggle-D-WMiAg3.js → toggle-IUUynh_v.js} +1 -1
- package/dist/{toggle-D-WMiAg3.js.map → toggle-IUUynh_v.js.map} +1 -1
- package/dist/{tooltip-DuC73a5E.js → tooltip-NKOSxS28.js} +11 -11
- package/dist/{tooltip-DuC73a5E.js.map → tooltip-NKOSxS28.js.map} +1 -1
- package/dist/{topology-C4Q_kT9X.js → topology-C8cyIHlB.js} +5 -5
- package/dist/{topology-C4Q_kT9X.js.map → topology-C8cyIHlB.js.map} +1 -1
- package/dist/treemap-KZPCXAKY-BvLvHb2t.js +3 -0
- package/dist/{triangle-alert-CKjGAvtd.js → triangle-alert-BtwDDOUp.js} +2 -2
- package/dist/{triangle-alert-CKjGAvtd.js.map → triangle-alert-BtwDDOUp.js.map} +1 -1
- package/dist/types/confidence.d.ts +66 -0
- package/dist/types/confidence.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +6 -6
- package/dist/utils/sage-analysis.d.ts +51 -0
- package/dist/utils/sage-analysis.d.ts.map +1 -0
- package/dist/utils/score.d.ts +58 -0
- package/dist/utils/score.d.ts.map +1 -0
- package/dist/utils/status-tone.d.ts +4 -0
- package/dist/utils/status-tone.d.ts.map +1 -0
- package/dist/{utils-B7XIe3qq.js → utils-DcOSDVkb.js} +1 -1
- package/dist/{utils-B7XIe3qq.js.map → utils-DcOSDVkb.js.map} +1 -1
- package/dist/{utils-CHEq9Vpx.js → utils-JB2cYPor.js} +120 -2
- package/dist/utils-JB2cYPor.js.map +1 -0
- package/dist/{value-CybtvyUg.js → value-gSPnIECy.js} +2 -2
- package/dist/{value-CybtvyUg.js.map → value-gSPnIECy.js.map} +1 -1
- package/dist/{vennDiagram-LZ73GAT5-ClN0stHq.js → vennDiagram-LZ73GAT5-FqpGoq2s.js} +7 -7
- package/dist/{vennDiagram-LZ73GAT5-ClN0stHq.js.map → vennDiagram-LZ73GAT5-FqpGoq2s.js.map} +1 -1
- package/dist/visualization/mermaid-diagram/index.js +1 -1
- package/dist/{x-BleQvk5v.js → x-D2ovnRiN.js} +2 -2
- package/dist/{x-BleQvk5v.js.map → x-D2ovnRiN.js.map} +1 -1
- package/dist/{xychartDiagram-JWTSCODW-DjFaG2VD.js → xychartDiagram-JWTSCODW-BNEAK79X.js} +10 -10
- package/dist/{xychartDiagram-JWTSCODW-DjFaG2VD.js.map → xychartDiagram-JWTSCODW-BNEAK79X.js.map} +1 -1
- package/package.json +1 -1
- package/src/components/theme/accent-switcher.ts +9 -2
- package/src/components/theme/density-switcher.ts +7 -1
- package/src/components/theme/font-stack-picker.ts +7 -1
- package/src/components/theme/glass-slider.ts +19 -8
- package/src/components/theme/icon-gallery-browser.ts +191 -0
- package/src/components/theme/icon-set-picker.ts +19 -8
- package/src/components/theme/icon-usage-matrix.ts +15 -1
- package/src/components/theme/radius-slider.ts +14 -6
- package/src/components/theme/theme-preset-grid.ts +8 -2
- package/src/components/theme/theme-preview-tile.ts +11 -3
- package/src/components/theme/theme-studio-review.test.ts +253 -0
- package/src/components/theme/theme-studio.ts +100 -61
- package/src/components/theme/theme-switcher.ts +7 -1
- package/src/index.ts +11 -0
- package/src/react/layout/browser-layout.tsx +54 -0
- package/src/react/layout/detail-header.tsx +42 -0
- package/src/react/layout/index.ts +4 -0
- package/src/react/layout/page-frame.tsx +32 -0
- package/src/react/layout/sub-nav.tsx +72 -0
- package/src/react/primitives/chart-frame.tsx +51 -0
- package/src/react/primitives/chat-drawer.tsx +94 -0
- package/src/react/primitives/chat-input.tsx +134 -0
- package/src/react/primitives/dashboard-metric-card.tsx +78 -0
- package/src/react/primitives/data-field.tsx +54 -0
- package/src/react/primitives/index.ts +13 -0
- package/src/react/primitives/notification-center.tsx +3 -3
- package/src/react/primitives/query-boundary.tsx +71 -0
- package/src/react/primitives/score-ring.tsx +78 -0
- package/src/react/primitives/section-panel.tsx +42 -0
- package/src/security/index.ts +4 -0
- package/src/security/mitre-data.ts +60 -0
- package/src/services/theme-engine/engine.test.ts +3 -25
- package/src/services/theme-engine/engine.ts +35 -9
- package/src/services/theme-engine/fonts.ts +4 -0
- package/src/services/theme-engine/icons.ts +76 -9
- package/src/services/theme-engine/palettes.ts +2 -2
- package/src/services/theme-engine/test-helpers.ts +37 -0
- package/src/styles/layout.css +18 -18
- package/src/styles/sidebar.css +31 -19
- package/src/styles/tenant-ui.css +34 -34
- package/src/styles/theme-engine.css +546 -23
- package/src/styles/theme.css +1 -0
- package/src/styles/tokens.css +69 -34
- package/src/styles/ui.css +5 -5
- package/src/types/confidence.ts +72 -0
- package/src/types/index.ts +9 -0
- package/src/utils/__tests__/sage-analysis.test.ts +41 -0
- package/src/utils/__tests__/score.test.ts +232 -0
- package/src/utils/__tests__/status-tone.test.ts +164 -0
- package/src/utils/index.ts +29 -0
- package/src/utils/sage-analysis.ts +62 -0
- package/src/utils/score.ts +123 -0
- package/src/utils/status-tone.ts +48 -0
- package/dist/architecture-PBZL5I3N-gCfUhEfQ.js +0 -3
- package/dist/classDiagram-VBA2DB6C-DFfohpM0.js +0 -31
- package/dist/classDiagram-v2-RAHNMMFH-kUMm28FB.js +0 -31
- package/dist/components/theme/theme-studio.js.map +0 -1
- package/dist/dist-DGayZ3ok2.js.map +0 -1
- package/dist/gitGraph-HDMCJU4V--53HTu2M.js +0 -3
- package/dist/info-3K5VOQVL-CmVeZuiG.js +0 -3
- package/dist/packet-RMMSAZCW-jFj7IW8A.js +0 -3
- package/dist/pie-UPGHQEXC-osqmeuax.js +0 -3
- package/dist/radar-KQ55EAFF-Dj2g5Z-W.js +0 -3
- package/dist/stateDiagram-v2-FVOUBMTO-Cnp2uGxd.js +0 -29
- package/dist/treemap-KZPCXAKY-DQ1GEudW.js +0 -3
- package/dist/utils-CHEq9Vpx.js.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { w as e } from "./src-
|
|
2
|
-
import { h as t, p as n, r } from "./chunk-GEFDOKGD-
|
|
3
|
-
import { n as i, r as a } from "./src-
|
|
4
|
-
import { B as o, C as s, V as c, W as l, _ as u, a as d, d as f, q as ee, s as p, v as te, y as m } from "./chunk-7R4GIKGN-
|
|
5
|
-
import { t as h } from "./chunk-4BX2VUAB-
|
|
6
|
-
import { t as g } from "./mermaid-parser.core-
|
|
7
|
-
import { t as ne } from "./chunk-QZHKN3VN-
|
|
1
|
+
import { w as e } from "./src-D1EMXotX.js";
|
|
2
|
+
import { h as t, p as n, r } from "./chunk-GEFDOKGD-DGJJEGSm.js";
|
|
3
|
+
import { n as i, r as a } from "./src-BhNgmpel.js";
|
|
4
|
+
import { B as o, C as s, V as c, W as l, _ as u, a as d, d as f, q as ee, s as p, v as te, y as m } from "./chunk-7R4GIKGN-DJmroLCH.js";
|
|
5
|
+
import { t as h } from "./chunk-4BX2VUAB-BS9gpN-y.js";
|
|
6
|
+
import { t as g } from "./mermaid-parser.core-Dz5qv4CI.js";
|
|
7
|
+
import { t as ne } from "./chunk-QZHKN3VN-kDNdTVLo.js";
|
|
8
8
|
//#region node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-K3NZZRJ6.mjs
|
|
9
9
|
var _ = {
|
|
10
10
|
NORMAL: 0,
|
|
@@ -625,4 +625,4 @@ var le = /* @__PURE__ */ i(function() {
|
|
|
625
625
|
//#endregion
|
|
626
626
|
export { je as diagram };
|
|
627
627
|
|
|
628
|
-
//# sourceMappingURL=gitGraphDiagram-K3NZZRJ6-
|
|
628
|
+
//# sourceMappingURL=gitGraphDiagram-K3NZZRJ6-Dr_X0dND.js.map
|
package/dist/{gitGraphDiagram-K3NZZRJ6-BaZX5GA5.js.map → gitGraphDiagram-K3NZZRJ6-Dr_X0dND.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitGraphDiagram-K3NZZRJ6-BaZX5GA5.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
|
+
{"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,6 +1,6 @@
|
|
|
1
|
-
import { E as e, P as t, R as n, t as r } from "./isArrayLikeObject-
|
|
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-
|
|
3
|
-
import { t as f } from "./isEmpty-
|
|
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
4
|
//#region node_modules/lodash-es/union.js
|
|
5
5
|
var p = e(function(e) {
|
|
6
6
|
return d(a(e, 1, r, !0));
|
|
@@ -224,4 +224,4 @@ function S(e, t) {
|
|
|
224
224
|
//#endregion
|
|
225
225
|
export { _ as t };
|
|
226
226
|
|
|
227
|
-
//# sourceMappingURL=graphlib-
|
|
227
|
+
//# sourceMappingURL=graphlib-ecencZTG.js.map
|