keboola-cli 0.63.4__py3-none-any.whl
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.
- keboola_agent_cli/__init__.py +34 -0
- keboola_agent_cli/__main__.py +5 -0
- keboola_agent_cli/_ui_dist/assets/arc-DhFYIddx.js +2 -0
- keboola_agent_cli/_ui_dist/assets/arc-DhFYIddx.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/architecture-7EHR7CIX-hNCijx_H.js +1 -0
- keboola_agent_cli/_ui_dist/assets/architectureDiagram-3BPJPVTR-C6hUlprM.js +37 -0
- keboola_agent_cli/_ui_dist/assets/architectureDiagram-3BPJPVTR-C6hUlprM.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/array-BifhSqXX.js +2 -0
- keboola_agent_cli/_ui_dist/assets/array-BifhSqXX.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/blockDiagram-GPEHLZMM-DC7qY9i4.js +133 -0
- keboola_agent_cli/_ui_dist/assets/blockDiagram-GPEHLZMM-DC7qY9i4.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/c4Diagram-AAUBKEIU-5Lh44evt.js +11 -0
- keboola_agent_cli/_ui_dist/assets/c4Diagram-AAUBKEIU-5Lh44evt.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/channel-DBMrXlxx.js +2 -0
- keboola_agent_cli/_ui_dist/assets/channel-DBMrXlxx.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-2J33WTMH-Coy82EBh.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-2J33WTMH-Coy82EBh.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-3OPIFGDE-BQC5CRHI.js +63 -0
- keboola_agent_cli/_ui_dist/assets/chunk-3OPIFGDE-BQC5CRHI.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-4BX2VUAB-DUuEt70o.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-4BX2VUAB-DUuEt70o.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-55IACEB6-BvR-6chF.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-55IACEB6-BvR-6chF.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-5ZQYHXKU-BjcTN7ul.js +3 -0
- keboola_agent_cli/_ui_dist/assets/chunk-5ZQYHXKU-BjcTN7ul.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-727SXJPM-C0zxqqRN.js +207 -0
- keboola_agent_cli/_ui_dist/assets/chunk-727SXJPM-C0zxqqRN.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-AQP2D5EJ-CXf7rIlZ.js +232 -0
- keboola_agent_cli/_ui_dist/assets/chunk-AQP2D5EJ-CXf7rIlZ.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-BSJP7CBP-Oj_FO9Q7.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-BSJP7CBP-Oj_FO9Q7.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-CSCIHK7Q-CcTsLrFc.js +124 -0
- keboola_agent_cli/_ui_dist/assets/chunk-CSCIHK7Q-CcTsLrFc.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-FMBD7UC4-FH-zLkkW.js +16 -0
- keboola_agent_cli/_ui_dist/assets/chunk-FMBD7UC4-FH-zLkkW.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-L5ZTLDWV-B1Ky_e7O.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-L5ZTLDWV-B1Ky_e7O.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-ND2GUHAM-BHz1rpbm.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-ND2GUHAM-BHz1rpbm.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-NNHCCRGN-DlpIbxXb.js +160 -0
- keboola_agent_cli/_ui_dist/assets/chunk-NNHCCRGN-DlpIbxXb.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-NZK2D7GU-tnrSoegS.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-NZK2D7GU-tnrSoegS.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-O5CBEL6O-DxxqDH0l.js +71 -0
- keboola_agent_cli/_ui_dist/assets/chunk-O5CBEL6O-DxxqDH0l.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/chunk-QZHKN3VN-CSjc2gjj.js +2 -0
- keboola_agent_cli/_ui_dist/assets/chunk-QZHKN3VN-CSjc2gjj.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/classDiagram-4FO5ZUOK-BuZcZu85.js +2 -0
- keboola_agent_cli/_ui_dist/assets/classDiagram-4FO5ZUOK-BuZcZu85.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/classDiagram-v2-Q7XG4LA2-BuZcZu85.js +2 -0
- keboola_agent_cli/_ui_dist/assets/classDiagram-v2-Q7XG4LA2-BuZcZu85.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/cose-bilkent-S5V4N54A-Y0L8LDMa.js +2 -0
- keboola_agent_cli/_ui_dist/assets/cose-bilkent-S5V4N54A-Y0L8LDMa.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/cytoscape.esm-C8YCVR3_.js +322 -0
- keboola_agent_cli/_ui_dist/assets/cytoscape.esm-C8YCVR3_.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/dagre-BM42HDAG-UZ-9BTqF.js +5 -0
- keboola_agent_cli/_ui_dist/assets/dagre-BM42HDAG-UZ-9BTqF.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/dagre-Bx709z4p.js +2 -0
- keboola_agent_cli/_ui_dist/assets/dagre-Bx709z4p.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/defaultLocale-C8Fc0cco.js +2 -0
- keboola_agent_cli/_ui_dist/assets/defaultLocale-C8Fc0cco.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/diagram-2AECGRRQ-DoDQ60wi.js +44 -0
- keboola_agent_cli/_ui_dist/assets/diagram-2AECGRRQ-DoDQ60wi.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/diagram-5GNKFQAL-CMGFxpUs.js +11 -0
- keboola_agent_cli/_ui_dist/assets/diagram-5GNKFQAL-CMGFxpUs.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/diagram-KO2AKTUF-1uGDa-Iu.js +4 -0
- keboola_agent_cli/_ui_dist/assets/diagram-KO2AKTUF-1uGDa-Iu.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/diagram-LMA3HP47-XtFH7B51.js +25 -0
- keboola_agent_cli/_ui_dist/assets/diagram-LMA3HP47-XtFH7B51.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/diagram-OG6HWLK6-B4_Te1T5.js +25 -0
- keboola_agent_cli/_ui_dist/assets/diagram-OG6HWLK6-B4_Te1T5.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/dist-Di6zmlv0.js +2 -0
- keboola_agent_cli/_ui_dist/assets/dist-Di6zmlv0.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/erDiagram-TEJ5UH35-NjQkrdFt.js +86 -0
- keboola_agent_cli/_ui_dist/assets/erDiagram-TEJ5UH35-NjQkrdFt.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/eventmodeling-FCH6USID-BrJMIks8.js +1 -0
- keboola_agent_cli/_ui_dist/assets/flowDiagram-I6XJVG4X-CIr8DWl7.js +163 -0
- keboola_agent_cli/_ui_dist/assets/flowDiagram-I6XJVG4X-CIr8DWl7.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/ganttDiagram-6RSMTGT7-C1VY_xbQ.js +293 -0
- keboola_agent_cli/_ui_dist/assets/ganttDiagram-6RSMTGT7-C1VY_xbQ.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/gitGraph-WXDBUCRP-COacYjo-.js +1 -0
- keboola_agent_cli/_ui_dist/assets/gitGraphDiagram-PVQCEYII-DQT8-kg2.js +107 -0
- keboola_agent_cli/_ui_dist/assets/gitGraphDiagram-PVQCEYII-DQT8-kg2.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/graphlib-B8gBHxth.js +2 -0
- keboola_agent_cli/_ui_dist/assets/graphlib-B8gBHxth.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/index-CMq50kkV.css +1 -0
- keboola_agent_cli/_ui_dist/assets/index-D8W97DAz.js +118 -0
- keboola_agent_cli/_ui_dist/assets/index-D8W97DAz.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/info-J43DQDTF-DdCTRIzU.js +1 -0
- keboola_agent_cli/_ui_dist/assets/infoDiagram-5YYISTIA-C77rsoTp.js +3 -0
- keboola_agent_cli/_ui_dist/assets/infoDiagram-5YYISTIA-C77rsoTp.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/init-D6jRqBbL.js +2 -0
- keboola_agent_cli/_ui_dist/assets/init-D6jRqBbL.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/ishikawaDiagram-YF4QCWOH-BcTbXaLy.js +71 -0
- keboola_agent_cli/_ui_dist/assets/ishikawaDiagram-YF4QCWOH-BcTbXaLy.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/journeyDiagram-JHISSGLW-BejeAJQ_.js +140 -0
- keboola_agent_cli/_ui_dist/assets/journeyDiagram-JHISSGLW-BejeAJQ_.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/kanban-definition-UN3LZRKU-BRNz_UrH.js +90 -0
- keboola_agent_cli/_ui_dist/assets/kanban-definition-UN3LZRKU-BRNz_UrH.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/katex-C4eR7coU.js +258 -0
- keboola_agent_cli/_ui_dist/assets/katex-C4eR7coU.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/line-CzAQKFbJ.js +2 -0
- keboola_agent_cli/_ui_dist/assets/line-CzAQKFbJ.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/linear-DUNFFdck.js +2 -0
- keboola_agent_cli/_ui_dist/assets/linear-DUNFFdck.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/mermaid-parser.core-CpuBOkFa.js +5 -0
- keboola_agent_cli/_ui_dist/assets/mermaid-parser.core-CpuBOkFa.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/mindmap-definition-RKZ34NQL-9EJQNjH0.js +97 -0
- keboola_agent_cli/_ui_dist/assets/mindmap-definition-RKZ34NQL-9EJQNjH0.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/ordinal-hYBb2elL.js +2 -0
- keboola_agent_cli/_ui_dist/assets/ordinal-hYBb2elL.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/packet-YPE3B663-DLiiw_B2.js +1 -0
- keboola_agent_cli/_ui_dist/assets/path-BWPyau1x.js +2 -0
- keboola_agent_cli/_ui_dist/assets/path-BWPyau1x.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/pie-LRSECV5Y-CRoO8G1g.js +1 -0
- keboola_agent_cli/_ui_dist/assets/pieDiagram-4H26LBE5-XH4cy6Cb.js +31 -0
- keboola_agent_cli/_ui_dist/assets/pieDiagram-4H26LBE5-XH4cy6Cb.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/quadrantDiagram-W4KKPZXB-fdhc93U8.js +8 -0
- keboola_agent_cli/_ui_dist/assets/quadrantDiagram-W4KKPZXB-fdhc93U8.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/radar-GUYGQ44K-DAlLVJHm.js +1 -0
- keboola_agent_cli/_ui_dist/assets/requirementDiagram-4Y6WPE33-a94eP3R9.js +85 -0
- keboola_agent_cli/_ui_dist/assets/requirementDiagram-4Y6WPE33-a94eP3R9.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/rough.esm-CSKSodPl.js +2 -0
- keboola_agent_cli/_ui_dist/assets/rough.esm-CSKSodPl.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/sankeyDiagram-5OEKKPKP-jcBa02sp.js +41 -0
- keboola_agent_cli/_ui_dist/assets/sankeyDiagram-5OEKKPKP-jcBa02sp.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/sequenceDiagram-3UESZ5HK-A5-GGM-e.js +163 -0
- keboola_agent_cli/_ui_dist/assets/sequenceDiagram-3UESZ5HK-A5-GGM-e.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/src-ZI-V_AF0.js +2 -0
- keboola_agent_cli/_ui_dist/assets/src-ZI-V_AF0.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/stateDiagram-AJRCARHV-BKAA5rqE.js +2 -0
- keboola_agent_cli/_ui_dist/assets/stateDiagram-AJRCARHV-BKAA5rqE.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/stateDiagram-v2-BHNVJYJU-DnJwJBsE.js +2 -0
- keboola_agent_cli/_ui_dist/assets/stateDiagram-v2-BHNVJYJU-DnJwJBsE.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/timeline-definition-PNZ67QCA-Cy39jp8b.js +121 -0
- keboola_agent_cli/_ui_dist/assets/timeline-definition-PNZ67QCA-Cy39jp8b.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/treeView-BLDUP644-DbLYl23-.js +1 -0
- keboola_agent_cli/_ui_dist/assets/treemap-LRROVOQU-Bp0eGlOt.js +1 -0
- keboola_agent_cli/_ui_dist/assets/vennDiagram-CIIHVFJN-BGECKubd.js +35 -0
- keboola_agent_cli/_ui_dist/assets/vennDiagram-CIIHVFJN-BGECKubd.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/wardley-L42UT6IY-D4yH4jqS.js +1 -0
- keboola_agent_cli/_ui_dist/assets/wardleyDiagram-YWT4CUSO-D6XRG3cZ.js +79 -0
- keboola_agent_cli/_ui_dist/assets/wardleyDiagram-YWT4CUSO-D6XRG3cZ.js.map +1 -0
- keboola_agent_cli/_ui_dist/assets/xychartDiagram-2RQKCTM6-DRre-pfZ.js +8 -0
- keboola_agent_cli/_ui_dist/assets/xychartDiagram-2RQKCTM6-DRre-pfZ.js.map +1 -0
- keboola_agent_cli/_ui_dist/index.html +50 -0
- keboola_agent_cli/ai_client.py +83 -0
- keboola_agent_cli/auto_update.py +550 -0
- keboola_agent_cli/changelog.py +1198 -0
- keboola_agent_cli/cli.py +448 -0
- keboola_agent_cli/client.py +3422 -0
- keboola_agent_cli/commands/__init__.py +0 -0
- keboola_agent_cli/commands/_data_app_git.py +343 -0
- keboola_agent_cli/commands/_helpers.py +377 -0
- keboola_agent_cli/commands/_metadata_input.py +49 -0
- keboola_agent_cli/commands/_semantic_layer_crud.py +632 -0
- keboola_agent_cli/commands/_semantic_layer_helpers.py +44 -0
- keboola_agent_cli/commands/_semantic_layer_reference_data.py +247 -0
- keboola_agent_cli/commands/agent.py +968 -0
- keboola_agent_cli/commands/branch.py +423 -0
- keboola_agent_cli/commands/changelog.py +168 -0
- keboola_agent_cli/commands/component.py +216 -0
- keboola_agent_cli/commands/config.py +2442 -0
- keboola_agent_cli/commands/context.py +1481 -0
- keboola_agent_cli/commands/data_app.py +1279 -0
- keboola_agent_cli/commands/dev_portal.py +584 -0
- keboola_agent_cli/commands/doctor.py +37 -0
- keboola_agent_cli/commands/encrypt.py +145 -0
- keboola_agent_cli/commands/feature.py +311 -0
- keboola_agent_cli/commands/flow.py +948 -0
- keboola_agent_cli/commands/http_client.py +157 -0
- keboola_agent_cli/commands/init.py +279 -0
- keboola_agent_cli/commands/job.py +661 -0
- keboola_agent_cli/commands/kai.py +301 -0
- keboola_agent_cli/commands/lineage.py +1464 -0
- keboola_agent_cli/commands/org.py +292 -0
- keboola_agent_cli/commands/permissions.py +360 -0
- keboola_agent_cli/commands/project.py +1192 -0
- keboola_agent_cli/commands/repl.py +243 -0
- keboola_agent_cli/commands/schedule.py +340 -0
- keboola_agent_cli/commands/search.py +178 -0
- keboola_agent_cli/commands/semantic_layer.py +939 -0
- keboola_agent_cli/commands/serve.py +272 -0
- keboola_agent_cli/commands/sharing.py +340 -0
- keboola_agent_cli/commands/storage.py +2630 -0
- keboola_agent_cli/commands/stream.py +266 -0
- keboola_agent_cli/commands/sync.py +1277 -0
- keboola_agent_cli/commands/tool.py +206 -0
- keboola_agent_cli/commands/version.py +186 -0
- keboola_agent_cli/commands/workspace.py +635 -0
- keboola_agent_cli/config_store.py +582 -0
- keboola_agent_cli/constants.py +528 -0
- keboola_agent_cli/data_science_client.py +342 -0
- keboola_agent_cli/dev_portal_client.py +323 -0
- keboola_agent_cli/errors.py +248 -0
- keboola_agent_cli/http_base.py +315 -0
- keboola_agent_cli/json_utils.py +126 -0
- keboola_agent_cli/lib.py +536 -0
- keboola_agent_cli/manage_client.py +324 -0
- keboola_agent_cli/metastore_client.py +214 -0
- keboola_agent_cli/models.py +427 -0
- keboola_agent_cli/output.py +1084 -0
- keboola_agent_cli/permissions.py +469 -0
- keboola_agent_cli/py.typed +3 -0
- keboola_agent_cli/result_models.py +271 -0
- keboola_agent_cli/server/__init__.py +34 -0
- keboola_agent_cli/server/agent_runner.py +1289 -0
- keboola_agent_cli/server/agents_store.py +325 -0
- keboola_agent_cli/server/app.py +764 -0
- keboola_agent_cli/server/auth.py +117 -0
- keboola_agent_cli/server/dependencies.py +149 -0
- keboola_agent_cli/server/pricing.py +303 -0
- keboola_agent_cli/server/routers/__init__.py +1 -0
- keboola_agent_cli/server/routers/agents.py +616 -0
- keboola_agent_cli/server/routers/ai_chat.py +129 -0
- keboola_agent_cli/server/routers/branches.py +133 -0
- keboola_agent_cli/server/routers/components.py +48 -0
- keboola_agent_cli/server/routers/configs.py +507 -0
- keboola_agent_cli/server/routers/data_apps.py +384 -0
- keboola_agent_cli/server/routers/dev_portal.py +67 -0
- keboola_agent_cli/server/routers/encrypt.py +35 -0
- keboola_agent_cli/server/routers/feature.py +179 -0
- keboola_agent_cli/server/routers/flows.py +204 -0
- keboola_agent_cli/server/routers/health.py +53 -0
- keboola_agent_cli/server/routers/jobs.py +175 -0
- keboola_agent_cli/server/routers/kai.py +80 -0
- keboola_agent_cli/server/routers/lineage.py +226 -0
- keboola_agent_cli/server/routers/mcp.py +70 -0
- keboola_agent_cli/server/routers/members.py +170 -0
- keboola_agent_cli/server/routers/org.py +96 -0
- keboola_agent_cli/server/routers/projects.py +106 -0
- keboola_agent_cli/server/routers/schedules.py +54 -0
- keboola_agent_cli/server/routers/search.py +30 -0
- keboola_agent_cli/server/routers/semantic_layer.py +650 -0
- keboola_agent_cli/server/routers/sharing.py +86 -0
- keboola_agent_cli/server/routers/storage.py +574 -0
- keboola_agent_cli/server/routers/stream.py +100 -0
- keboola_agent_cli/server/routers/workspaces.py +302 -0
- keboola_agent_cli/server/run_broadcaster.py +329 -0
- keboola_agent_cli/server/sse.py +25 -0
- keboola_agent_cli/services/__init__.py +0 -0
- keboola_agent_cli/services/_encryption.py +217 -0
- keboola_agent_cli/services/_semantic_layer_cascade.py +147 -0
- keboola_agent_cli/services/_semantic_layer_crud.py +382 -0
- keboola_agent_cli/services/_semantic_layer_internals.py +1078 -0
- keboola_agent_cli/services/_semantic_layer_lookup.py +181 -0
- keboola_agent_cli/services/_semantic_layer_reference_data.py +217 -0
- keboola_agent_cli/services/_sync_bindings.py +456 -0
- keboola_agent_cli/services/_sync_branch.py +191 -0
- keboola_agent_cli/services/_sync_bulk.py +228 -0
- keboola_agent_cli/services/_sync_clone.py +163 -0
- keboola_agent_cli/services/_sync_models.py +97 -0
- keboola_agent_cli/services/_sync_push_ops.py +369 -0
- keboola_agent_cli/services/_sync_storage.py +376 -0
- keboola_agent_cli/services/_sync_writeback.py +167 -0
- keboola_agent_cli/services/agent_service.py +458 -0
- keboola_agent_cli/services/base.py +175 -0
- keboola_agent_cli/services/branch_service.py +588 -0
- keboola_agent_cli/services/component_service.py +694 -0
- keboola_agent_cli/services/config_service.py +2099 -0
- keboola_agent_cli/services/data_app_git_service.py +224 -0
- keboola_agent_cli/services/data_app_service.py +2082 -0
- keboola_agent_cli/services/deep_lineage_service.py +1322 -0
- keboola_agent_cli/services/dev_portal_service.py +345 -0
- keboola_agent_cli/services/doctor_service.py +445 -0
- keboola_agent_cli/services/encrypt_service.py +87 -0
- keboola_agent_cli/services/feature_service.py +268 -0
- keboola_agent_cli/services/flow_service.py +769 -0
- keboola_agent_cli/services/flow_validation.py +188 -0
- keboola_agent_cli/services/http_forwarder_service.py +236 -0
- keboola_agent_cli/services/job_idempotency_store.py +285 -0
- keboola_agent_cli/services/job_service.py +797 -0
- keboola_agent_cli/services/kai_service.py +367 -0
- keboola_agent_cli/services/lineage_service.py +274 -0
- keboola_agent_cli/services/mcp_service.py +1498 -0
- keboola_agent_cli/services/mcp_transport.py +259 -0
- keboola_agent_cli/services/member_service.py +593 -0
- keboola_agent_cli/services/org_service.py +619 -0
- keboola_agent_cli/services/project_service.py +947 -0
- keboola_agent_cli/services/repo_validate_service.py +767 -0
- keboola_agent_cli/services/schedule_service.py +731 -0
- keboola_agent_cli/services/search_service.py +331 -0
- keboola_agent_cli/services/semantic_layer_service.py +1497 -0
- keboola_agent_cli/services/sharing_service.py +307 -0
- keboola_agent_cli/services/storage_service.py +2524 -0
- keboola_agent_cli/services/stream_service.py +395 -0
- keboola_agent_cli/services/sync_service.py +2244 -0
- keboola_agent_cli/services/variables_service.py +447 -0
- keboola_agent_cli/services/version_service.py +1038 -0
- keboola_agent_cli/services/workspace_service.py +1103 -0
- keboola_agent_cli/stream_client.py +217 -0
- keboola_agent_cli/sync/__init__.py +1 -0
- keboola_agent_cli/sync/branch_mapping.py +174 -0
- keboola_agent_cli/sync/clone.py +211 -0
- keboola_agent_cli/sync/code_extraction.py +655 -0
- keboola_agent_cli/sync/config_format.py +290 -0
- keboola_agent_cli/sync/diff_engine.py +566 -0
- keboola_agent_cli/sync/git_utils.py +93 -0
- keboola_agent_cli/sync/manifest.py +162 -0
- keboola_agent_cli/sync/naming.py +90 -0
- keboola_agent_cli/sync/secrets.py +62 -0
- keboola_agent_cli/sync/sql_split.py +134 -0
- keboola_cli-0.63.4.dist-info/METADATA +308 -0
- keboola_cli-0.63.4.dist-info/RECORD +306 -0
- keboola_cli-0.63.4.dist-info/WHEEL +4 -0
- keboola_cli-0.63.4.dist-info/entry_points.txt +2 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import{g as e,h as t,p as n}from"./src-ZI-V_AF0.js";import{H as r,K as i,U as a,Y as o,a as s,b as c,f as l,s as u,v as d,w as f,x as p,y as m}from"./chunk-CSCIHK7Q-CcTsLrFc.js";import{g as h,i as g,m as _}from"./chunk-5ZQYHXKU-BjcTN7ul.js";import{t as v}from"./mermaid-parser.core-CpuBOkFa.js";import{t as y}from"./chunk-4BX2VUAB-DUuEt70o.js";import{t as b}from"./chunk-QZHKN3VN-CSjc2gjj.js";var x={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},ee=l.gitGraph,S=t(()=>g({...ee,...c().gitGraph}),`getConfig`),C=new b(()=>{let e=S(),t=e.mainBranchName,n=e.mainBranchOrder;return{mainBranchName:t,commits:new Map,head:null,branchConfig:new Map([[t,{name:t,order:n}]]),branches:new Map([[t,null]]),currBranch:t,direction:`LR`,seq:0,options:{}}});function w(){return _({length:7})}t(w,`getID`);function T(e,t){let n=Object.create(null);return e.reduce((e,r)=>{let i=t(r);return n[i]||(n[i]=!0,e.push(r)),e},[])}t(T,`uniqBy`);var te=t(function(e){C.records.direction=e},`setDirection`),ne=t(function(t){e.debug(`options str`,t),t=t?.trim(),t||=`{}`;try{C.records.options=JSON.parse(t)}catch(t){e.error(`error while parsing gitGraph options`,t.message)}},`setOptions`),re=t(function(){return C.records.options},`getOptions`),ie=t(function(t){let n=t.msg,r=t.id,i=t.type,a=t.tags;e.info(`commit`,n,r,i,a),e.debug(`Entering commit:`,n,r,i,a);let o=S();r=u.sanitizeText(r,o),n=u.sanitizeText(n,o),a=a?.map(e=>u.sanitizeText(e,o));let s={id:r||C.records.seq+`-`+w(),message:n,seq:C.records.seq++,type:i??x.NORMAL,tags:a??[],parents:C.records.head==null?[]:[C.records.head.id],branch:C.records.currBranch};C.records.head=s,e.info(`main branch`,o.mainBranchName),C.records.commits.has(s.id)&&e.warn(`Commit ID ${s.id} already exists`),C.records.commits.set(s.id,s),C.records.branches.set(C.records.currBranch,s.id),e.debug(`in pushCommit `+s.id)},`commit`),ae=t(function(t){let n=t.name,r=t.order;if(n=u.sanitizeText(n,S()),C.records.branches.has(n))throw Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${n}")`);C.records.branches.set(n,C.records.head==null?null:C.records.head.id),C.records.branchConfig.set(n,{name:n,order:r}),E(n),e.debug(`in createBranch`)},`branch`),oe=t(t=>{let n=t.branch,r=t.id,i=t.type,a=t.tags,o=S();n=u.sanitizeText(n,o),r&&=u.sanitizeText(r,o);let s=C.records.branches.get(C.records.currBranch),c=C.records.branches.get(n),l=s?C.records.commits.get(s):void 0,d=c?C.records.commits.get(c):void 0;if(l&&d&&l.branch===n)throw Error(`Cannot merge branch '${n}' into itself.`);if(C.records.currBranch===n){let e=Error(`Incorrect usage of "merge". Cannot merge a branch to itself`);throw e.hash={text:`merge ${n}`,token:`merge ${n}`,expected:[`branch abc`]},e}if(l===void 0||!l){let e=Error(`Incorrect usage of "merge". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`merge ${n}`,token:`merge ${n}`,expected:[`commit`]},e}if(!C.records.branches.has(n)){let e=Error(`Incorrect usage of "merge". Branch to be merged (`+n+`) does not exist`);throw e.hash={text:`merge ${n}`,token:`merge ${n}`,expected:[`branch ${n}`]},e}if(d===void 0||!d){let e=Error(`Incorrect usage of "merge". Branch to be merged (`+n+`) has no commits`);throw e.hash={text:`merge ${n}`,token:`merge ${n}`,expected:[`"commit"`]},e}if(l===d){let e=Error(`Incorrect usage of "merge". Both branches have same head`);throw e.hash={text:`merge ${n}`,token:`merge ${n}`,expected:[`branch abc`]},e}if(r&&C.records.commits.has(r)){let e=Error(`Incorrect usage of "merge". Commit with id:`+r+` already exists, use different custom id`);throw e.hash={text:`merge ${n} ${r} ${i} ${a?.join(` `)}`,token:`merge ${n} ${r} ${i} ${a?.join(` `)}`,expected:[`merge ${n} ${r}_UNIQUE ${i} ${a?.join(` `)}`]},e}let f=c||``,p={id:r||`${C.records.seq}-${w()}`,message:`merged branch ${n} into ${C.records.currBranch}`,seq:C.records.seq++,parents:C.records.head==null?[]:[C.records.head.id,f],branch:C.records.currBranch,type:x.MERGE,customType:i,customId:!!r,tags:a??[]};C.records.head=p,C.records.commits.set(p.id,p),C.records.branches.set(C.records.currBranch,p.id),e.debug(C.records.branches),e.debug(`in mergeBranch`)},`merge`),se=t(function(t){let n=t.id,r=t.targetId,i=t.tags,a=t.parent;e.debug(`Entering cherryPick:`,n,r,i);let o=S();if(n=u.sanitizeText(n,o),r=u.sanitizeText(r,o),i=i?.map(e=>u.sanitizeText(e,o)),a=u.sanitizeText(a,o),!n||!C.records.commits.has(n)){let e=Error(`Incorrect usage of "cherryPick". Source commit id should exist and provided`);throw e.hash={text:`cherryPick ${n} ${r}`,token:`cherryPick ${n} ${r}`,expected:[`cherry-pick abc`]},e}let s=C.records.commits.get(n);if(s===void 0||!s)throw Error(`Incorrect usage of "cherryPick". Source commit id should exist and provided`);if(a&&!(Array.isArray(s.parents)&&s.parents.includes(a)))throw Error(`Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.`);let c=s.branch;if(s.type===x.MERGE&&!a)throw Error(`Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.`);if(!r||!C.records.commits.has(r)){if(c===C.records.currBranch){let e=Error(`Incorrect usage of "cherryPick". Source commit is already on current branch`);throw e.hash={text:`cherryPick ${n} ${r}`,token:`cherryPick ${n} ${r}`,expected:[`cherry-pick abc`]},e}let t=C.records.branches.get(C.records.currBranch);if(t===void 0||!t){let e=Error(`Incorrect usage of "cherry-pick". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`cherryPick ${n} ${r}`,token:`cherryPick ${n} ${r}`,expected:[`cherry-pick abc`]},e}let o=C.records.commits.get(t);if(o===void 0||!o){let e=Error(`Incorrect usage of "cherry-pick". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`cherryPick ${n} ${r}`,token:`cherryPick ${n} ${r}`,expected:[`cherry-pick abc`]},e}let l={id:C.records.seq+`-`+w(),message:`cherry-picked ${s?.message} into ${C.records.currBranch}`,seq:C.records.seq++,parents:C.records.head==null?[]:[C.records.head.id,s.id],branch:C.records.currBranch,type:x.CHERRY_PICK,tags:i?i.filter(Boolean):[`cherry-pick:${s.id}${s.type===x.MERGE?`|parent:${a}`:``}`]};C.records.head=l,C.records.commits.set(l.id,l),C.records.branches.set(C.records.currBranch,l.id),e.debug(C.records.branches),e.debug(`in cherryPick`)}},`cherryPick`),E=t(function(e){if(e=u.sanitizeText(e,S()),C.records.branches.has(e)){C.records.currBranch=e;let t=C.records.branches.get(C.records.currBranch);t===void 0||!t?C.records.head=null:C.records.head=C.records.commits.get(t)??null}else{let t=Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw t.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},t}},`checkout`);function D(e,t,n){let r=e.indexOf(t);r===-1?e.push(n):e.splice(r,1,n)}t(D,`upsert`);function O(t){let n=t.reduce((e,t)=>e.seq>t.seq?e:t,t[0]),r=``;t.forEach(function(e){e===n?r+=` *`:r+=` |`});let i=[r,n.id,n.seq];for(let e in C.records.branches)C.records.branches.get(e)===n.id&&i.push(e);if(e.debug(i.join(` `)),n.parents&&n.parents.length==2&&n.parents[0]&&n.parents[1]){let e=C.records.commits.get(n.parents[0]);D(t,n,e),n.parents[1]&&t.push(C.records.commits.get(n.parents[1]))}else if(n.parents.length==0)return;else if(n.parents[0]){let e=C.records.commits.get(n.parents[0]);D(t,n,e)}t=T(t,e=>e.id),O(t)}t(O,`prettyPrintCommitHistory`);var ce=t(function(){e.debug(C.records.commits);let t=k()[0];O([t])},`prettyPrint`),le=t(function(){C.reset(),s()},`clear`),ue=t(function(){return[...C.records.branchConfig.values()].map((e,t)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${t}`)}).sort((e,t)=>(e.order??0)-(t.order??0)).map(({name:e})=>({name:e}))},`getBranchesAsObjArray`),de=t(function(){return C.records.branches},`getBranches`),fe=t(function(){return C.records.commits},`getCommits`),k=t(function(){let t=[...C.records.commits.values()];return t.forEach(function(t){e.debug(t.id)}),t.sort((e,t)=>e.seq-t.seq),t},`getCommitsArray`),A={commitType:x,getConfig:S,setDirection:te,setOptions:ne,getOptions:re,commit:ie,branch:ae,merge:oe,cherryPick:se,checkout:E,prettyPrint:ce,clear:le,getBranchesAsObjArray:ue,getBranches:de,getCommits:fe,getCommitsArray:k,getCurrentBranch:t(function(){return C.records.currBranch},`getCurrentBranch`),getDirection:t(function(){return C.records.direction},`getDirection`),getHead:t(function(){return C.records.head},`getHead`),setAccTitle:a,getAccTitle:m,getAccDescription:d,setAccDescription:r,setDiagramTitle:i,getDiagramTitle:f},pe=t((e,t)=>{y(e,t),e.dir&&t.setDirection(e.dir);for(let n of e.statements)me(n,t)},`populate`),me=t((n,r)=>{let i={Commit:t(e=>r.commit(he(e)),`Commit`),Branch:t(e=>r.branch(ge(e)),`Branch`),Merge:t(e=>r.merge(_e(e)),`Merge`),Checkout:t(e=>r.checkout(ve(e)),`Checkout`),CherryPicking:t(e=>r.cherryPick(ye(e)),`CherryPicking`)}[n.$type];i?i(n):e.error(`Unknown statement type: ${n.$type}`)},`parseStatement`),he=t(e=>({id:e.id,msg:e.message??``,type:e.type===void 0?x.NORMAL:x[e.type],tags:e.tags??void 0}),`parseCommit`),ge=t(e=>({name:e.name,order:e.order??0}),`parseBranch`),_e=t(e=>({branch:e.branch,id:e.id??``,type:e.type===void 0?void 0:x[e.type],tags:e.tags??void 0}),`parseMerge`),ve=t(e=>e.branch,`parseCheckout`),ye=t(e=>({id:e.id,targetId:``,tags:e.tags?.length===0?void 0:e.tags,parent:e.parent}),`parseCherryPicking`),be={parse:t(async t=>{let n=await v(`gitGraph`,t);e.debug(n),pe(n,A)},`parse`)},j=10,M=40,N=4,P=2,F=8,I=new Set([`redux`,`redux-dark`,`redux-color`,`redux-dark-color`]),L=12,R=new Set([`redux-color`,`redux-dark-color`]),xe=new Set([`dark`,`redux-dark`,`redux-dark-color`,`neo-dark`]),z=t((e,t,n=!1)=>n&&e>0?(e-1)%(t-1)+1:e%t,`calcColorIndex`),B=new Map,V=new Map,H=30,U=new Map,W=[],G=0,K=`LR`,q=t(()=>{B.clear(),V.clear(),U.clear(),G=0,W=[],K=`LR`},`clear`),J=t(e=>{let t=document.createElementNS(`http://www.w3.org/2000/svg`,`text`);return(typeof e==`string`?e.split(/\\n|\n|<br\s*\/?>/gi):e).forEach(e=>{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`tspan`);n.setAttributeNS(`http://www.w3.org/XML/1998/namespace`,`xml:space`,`preserve`),n.setAttribute(`dy`,`1em`),n.setAttribute(`x`,`0`),n.setAttribute(`class`,`row`),n.textContent=e.trim(),t.appendChild(n)}),t},`drawText`),Y=t(e=>{let n,r,i;return K===`BT`?(r=t((e,t)=>e<=t,`comparisonFunc`),i=1/0):(r=t((e,t)=>e>=t,`comparisonFunc`),i=0),e.forEach(e=>{let t=K===`TB`||K==`BT`?V.get(e)?.y:V.get(e)?.x;t!==void 0&&r(t,i)&&(n=e,i=t)}),n},`findClosestParent`),Se=t(e=>{let t=``,n=1/0;return e.forEach(e=>{let r=V.get(e).y;r<=n&&(t=e,n=r)}),t||void 0},`findClosestParentBT`),Ce=t((e,t,n)=>{let r=n,i=n,a=[];e.forEach(e=>{let n=t.get(e);if(!n)throw Error(`Commit not found for key ${e}`);n.parents.length?(r=Te(n),i=Math.max(r,i)):a.push(n),Ee(n,r)}),r=i,a.forEach(e=>{De(e,r,n)}),e.forEach(e=>{let n=t.get(e);if(n?.parents.length){let e=Se(n.parents);r=V.get(e).y-M,r<=i&&(i=r);let t=B.get(n.branch).pos,a=r-j;V.set(n.id,{x:t,y:a})}})},`setParallelBTPos`),we=t(e=>{let t=Y(e.parents.filter(e=>e!==null));if(!t)throw Error(`Closest parent not found for commit ${e.id}`);let n=V.get(t)?.y;if(n===void 0)throw Error(`Closest parent position not found for commit ${e.id}`);return n},`findClosestParentPos`),Te=t(e=>we(e)+M,`calculateCommitPosition`),Ee=t((e,t)=>{let n=B.get(e.branch);if(!n)throw Error(`Branch not found for commit ${e.id}`);let r=n.pos,i=t+j;return V.set(e.id,{x:r,y:i}),{x:r,y:i}},`setCommitPosition`),De=t((e,t,n)=>{let r=B.get(e.branch);if(!r)throw Error(`Branch not found for commit ${e.id}`);let i=t+n,a=r.pos;V.set(e.id,{x:a,y:i})},`setRootPosition`),Oe=t((e,t,n,r,i,a)=>{let{theme:o}=p(),s=I.has(o??``),c=R.has(o??``),l=xe.has(o??``);if(a===x.HIGHLIGHT)e.append(`rect`).attr(`x`,n.x-10+(s?3:0)).attr(`y`,n.y-10+(s?3:0)).attr(`width`,s?14:20).attr(`height`,s?14:20).attr(`class`,`commit ${t.id} commit-highlight${z(i,F,c)} ${r}-outer`),e.append(`rect`).attr(`x`,n.x-6+(s?2:0)).attr(`y`,n.y-6+(s?2:0)).attr(`width`,s?8:12).attr(`height`,s?8:12).attr(`class`,`commit ${t.id} commit${z(i,F,c)} ${r}-inner`);else if(a===x.CHERRY_PICK)e.append(`circle`).attr(`cx`,n.x).attr(`cy`,n.y).attr(`r`,s?7:10).attr(`class`,`commit ${t.id} ${r}`),e.append(`circle`).attr(`cx`,n.x-3).attr(`cy`,n.y+2).attr(`r`,s?2.5:2.75).attr(`fill`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`circle`).attr(`cx`,n.x+3).attr(`cy`,n.y+2).attr(`r`,s?2.5:2.75).attr(`fill`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`line`).attr(`x1`,n.x+3).attr(`y1`,n.y+1).attr(`x2`,n.x).attr(`y2`,n.y-5).attr(`stroke`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`line`).attr(`x1`,n.x-3).attr(`y1`,n.y+1).attr(`x2`,n.x).attr(`y2`,n.y-5).attr(`stroke`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`);else{let o=e.append(`circle`);if(o.attr(`cx`,n.x),o.attr(`cy`,n.y),o.attr(`r`,s?7:10),o.attr(`class`,`commit ${t.id} commit${z(i,F,c)}`),a===x.MERGE){let a=e.append(`circle`);a.attr(`cx`,n.x),a.attr(`cy`,n.y),a.attr(`r`,s?5:6),a.attr(`class`,`commit ${r} ${t.id} commit${z(i,F,c)}`)}if(a===x.REVERSE){let a=e.append(`path`),o=s?4:5;a.attr(`d`,`M ${n.x-o},${n.y-o}L${n.x+o},${n.y+o}M${n.x-o},${n.y+o}L${n.x+o},${n.y-o}`).attr(`class`,`commit ${r} ${t.id} commit${z(i,F,c)}`)}}},`drawCommitBullet`),ke=t((e,t,n,r,i)=>{if(t.type!==x.CHERRY_PICK&&(t.customId&&t.type===x.MERGE||t.type!==x.MERGE)&&i.showCommitLabel){let a=e.append(`g`),o=a.insert(`rect`).attr(`class`,`commit-label-bkg`),s=a.append(`text`).attr(`x`,r).attr(`y`,n.y+25).attr(`class`,`commit-label`).text(t.id),c=s.node()?.getBBox();if(c&&(o.attr(`x`,n.posWithOffset-c.width/2-P).attr(`y`,n.y+13.5).attr(`width`,c.width+2*P).attr(`height`,c.height+2*P),K===`TB`||K===`BT`?(o.attr(`x`,n.x-(c.width+4*N+5)).attr(`y`,n.y-12),s.attr(`x`,n.x-(c.width+4*N)).attr(`y`,n.y+c.height-12)):s.attr(`x`,n.posWithOffset-c.width/2),i.rotateCommitLabel))if(K===`TB`||K===`BT`)s.attr(`transform`,`rotate(-45, `+n.x+`, `+n.y+`)`),o.attr(`transform`,`rotate(-45, `+n.x+`, `+n.y+`)`);else{let e=-7.5-(c.width+10)/25*9.5,t=10+c.width/25*8.5;a.attr(`transform`,`translate(`+e+`, `+t+`) rotate(-45, `+r+`, `+n.y+`)`)}}},`drawCommitLabel`),Ae=t((e,t,n,r)=>{if(t.tags.length>0){let i=0,a=0,o=0,s=[];for(let r of t.tags.reverse()){let t=e.insert(`polygon`),c=e.append(`circle`),l=e.append(`text`).attr(`y`,n.y-16-i).attr(`class`,`tag-label`).text(r),u=l.node()?.getBBox();if(!u)throw Error(`Tag bbox not found`);a=Math.max(a,u.width),o=Math.max(o,u.height),l.attr(`x`,n.posWithOffset-u.width/2),s.push({tag:l,hole:c,rect:t,yOffset:i}),i+=20}for(let{tag:e,hole:t,rect:i,yOffset:c}of s){let s=o/2,l=n.y-19.2-c;if(i.attr(`class`,`tag-label-bkg`).attr(`points`,`
|
|
2
|
+
${r-a/2-N/2},${l+P}
|
|
3
|
+
${r-a/2-N/2},${l-P}
|
|
4
|
+
${n.posWithOffset-a/2-N},${l-s-P}
|
|
5
|
+
${n.posWithOffset+a/2+N},${l-s-P}
|
|
6
|
+
${n.posWithOffset+a/2+N},${l+s+P}
|
|
7
|
+
${n.posWithOffset-a/2-N},${l+s+P}`),t.attr(`cy`,l).attr(`cx`,r-a/2+N/2).attr(`r`,1.5).attr(`class`,`tag-hole`),K===`TB`||K===`BT`){let o=r+c;i.attr(`class`,`tag-label-bkg`).attr(`points`,`
|
|
8
|
+
${n.x},${o+2}
|
|
9
|
+
${n.x},${o-2}
|
|
10
|
+
${n.x+j},${o-s-2}
|
|
11
|
+
${n.x+j+a+4},${o-s-2}
|
|
12
|
+
${n.x+j+a+4},${o+s+2}
|
|
13
|
+
${n.x+j},${o+s+2}`).attr(`transform`,`translate(12,12) rotate(45, `+n.x+`,`+r+`)`),t.attr(`cx`,n.x+N/2).attr(`cy`,o).attr(`transform`,`translate(12,12) rotate(45, `+n.x+`,`+r+`)`),e.attr(`x`,n.x+5).attr(`y`,o+3).attr(`transform`,`translate(14,14) rotate(45, `+n.x+`,`+r+`)`)}}}},`drawCommitTags`),je=t(e=>{switch(e.customType??e.type){case x.NORMAL:return`commit-normal`;case x.REVERSE:return`commit-reverse`;case x.HIGHLIGHT:return`commit-highlight`;case x.MERGE:return`commit-merge`;case x.CHERRY_PICK:return`commit-cherry-pick`;default:return`commit-normal`}},`getCommitClassType`),Me=t((e,t,n,r)=>{let i={x:0,y:0};if(e.parents.length>0){let n=Y(e.parents);if(n){let a=r.get(n)??i;return t===`TB`?a.y+M:t===`BT`?(r.get(e.id)??i).y-M:a.x+M}}else if(t===`TB`)return H;else if(t===`BT`)return(r.get(e.id)??i).y-M;else return 0;return 0},`calculatePosition`),Ne=t((e,t,n)=>{let r=K===`BT`&&n?t:t+j,i=B.get(e.branch)?.pos,a=K===`TB`||K===`BT`?B.get(e.branch)?.pos:r;if(a===void 0||i===void 0)throw Error(`Position were undefined for commit ${e.id}`);let o=I.has(p().theme??``);return{x:a,y:K===`TB`||K===`BT`?r:i+(o?L/2+1:-2),posWithOffset:r}},`getCommitPosition`),X=t((e,n,r,i)=>{let a=e.append(`g`).attr(`class`,`commit-bullets`),o=e.append(`g`).attr(`class`,`commit-labels`),s=K===`TB`||K===`BT`?H:0,c=[...n.keys()],l=i.parallelCommits??!1,u=t((e,t)=>{let r=n.get(e)?.seq,i=n.get(t)?.seq;return r!==void 0&&i!==void 0?r-i:0},`sortKeys`),d=c.sort(u);K===`BT`&&(l&&Ce(d,n,s),d=d.reverse()),d.forEach(e=>{let t=n.get(e);if(!t)throw Error(`Commit not found for key ${e}`);l&&(s=Me(t,K,s,V));let c=Ne(t,s,l);if(r){let e=je(t),n=t.customType??t.type;Oe(a,t,c,e,B.get(t.branch)?.index??0,n),ke(o,t,c,s,i),Ae(o,t,c,s)}K===`TB`||K===`BT`?V.set(t.id,{x:c.x,y:c.posWithOffset}):V.set(t.id,{x:c.posWithOffset,y:c.y}),s=K===`BT`&&l?s+M:s+M+j,s>G&&(G=s)})},`drawCommits`),Pe=t((e,n,r,i,a)=>{let o=(K===`TB`||K===`BT`?r.x<i.x:r.y<i.y)?n.branch:e.branch,s=t(e=>e.branch===o,`isOnBranchToGetCurve`),c=t(t=>t.seq>e.seq&&t.seq<n.seq,`isBetweenCommits`);return[...a.values()].some(e=>c(e)&&s(e))},`shouldRerouteArrow`),Z=t((e,t,n=0)=>{let r=e+Math.abs(e-t)/2;return n>5?r:W.every(e=>Math.abs(e-r)>=10)?(W.push(r),r):Z(e,t-Math.abs(e-t)/5,n+1)},`findLane`),Fe=t((e,t,n,r)=>{let{theme:i}=p(),a=R.has(i??``),o=V.get(t.id),s=V.get(n.id);if(o===void 0||s===void 0)throw Error(`Commit positions not found for commits ${t.id} and ${n.id}`);let c=Pe(t,n,o,s,r),l=``,u=``,d=0,f=0,m=B.get(n.branch)?.index;n.type===x.MERGE&&t.id!==n.parents[0]&&(m=B.get(t.branch)?.index);let h;if(c){l=`A 10 10, 0, 0, 0,`,u=`A 10 10, 0, 0, 1,`,d=10,f=10;let e=o.y<s.y?Z(o.y,s.y):Z(s.y,o.y),n=o.x<s.x?Z(o.x,s.x):Z(s.x,o.x);K===`TB`?o.x<s.x?h=`M ${o.x} ${o.y} L ${n-d} ${o.y} ${u} ${n} ${o.y+f} L ${n} ${s.y-d} ${l} ${n+f} ${s.y} L ${s.x} ${s.y}`:(m=B.get(t.branch)?.index,h=`M ${o.x} ${o.y} L ${n+d} ${o.y} ${l} ${n} ${o.y+f} L ${n} ${s.y-d} ${u} ${n-f} ${s.y} L ${s.x} ${s.y}`):K===`BT`?o.x<s.x?h=`M ${o.x} ${o.y} L ${n-d} ${o.y} ${l} ${n} ${o.y-f} L ${n} ${s.y+d} ${u} ${n+f} ${s.y} L ${s.x} ${s.y}`:(m=B.get(t.branch)?.index,h=`M ${o.x} ${o.y} L ${n+d} ${o.y} ${u} ${n} ${o.y-f} L ${n} ${s.y+d} ${l} ${n-f} ${s.y} L ${s.x} ${s.y}`):o.y<s.y?h=`M ${o.x} ${o.y} L ${o.x} ${e-d} ${l} ${o.x+f} ${e} L ${s.x-d} ${e} ${u} ${s.x} ${e+f} L ${s.x} ${s.y}`:(m=B.get(t.branch)?.index,h=`M ${o.x} ${o.y} L ${o.x} ${e+d} ${u} ${o.x+f} ${e} L ${s.x-d} ${e} ${l} ${s.x} ${e-f} L ${s.x} ${s.y}`)}else l=`A 20 20, 0, 0, 0,`,u=`A 20 20, 0, 0, 1,`,d=20,f=20,K===`TB`?(o.x<s.x&&(h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${s.y-d} ${l} ${o.x+f} ${s.y} L ${s.x} ${s.y}`:`M ${o.x} ${o.y} L ${s.x-d} ${o.y} ${u} ${s.x} ${o.y+f} L ${s.x} ${s.y}`),o.x>s.x&&(l=`A 20 20, 0, 0, 0,`,u=`A 20 20, 0, 0, 1,`,d=20,f=20,h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${s.y-d} ${u} ${o.x-f} ${s.y} L ${s.x} ${s.y}`:`M ${o.x} ${o.y} L ${s.x+d} ${o.y} ${l} ${s.x} ${o.y+f} L ${s.x} ${s.y}`),o.x===s.x&&(h=`M ${o.x} ${o.y} L ${s.x} ${s.y}`)):K===`BT`?(o.x<s.x&&(h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${s.y+d} ${u} ${o.x+f} ${s.y} L ${s.x} ${s.y}`:`M ${o.x} ${o.y} L ${s.x-d} ${o.y} ${l} ${s.x} ${o.y-f} L ${s.x} ${s.y}`),o.x>s.x&&(l=`A 20 20, 0, 0, 0,`,u=`A 20 20, 0, 0, 1,`,d=20,f=20,h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${s.y+d} ${l} ${o.x-f} ${s.y} L ${s.x} ${s.y}`:`M ${o.x} ${o.y} L ${s.x+d} ${o.y} ${u} ${s.x} ${o.y-f} L ${s.x} ${s.y}`),o.x===s.x&&(h=`M ${o.x} ${o.y} L ${s.x} ${s.y}`)):(o.y<s.y&&(h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${o.x} ${o.y} L ${s.x-d} ${o.y} ${u} ${s.x} ${o.y+f} L ${s.x} ${s.y}`:`M ${o.x} ${o.y} L ${o.x} ${s.y-d} ${l} ${o.x+f} ${s.y} L ${s.x} ${s.y}`),o.y>s.y&&(h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${o.x} ${o.y} L ${s.x-d} ${o.y} ${l} ${s.x} ${o.y-f} L ${s.x} ${s.y}`:`M ${o.x} ${o.y} L ${o.x} ${s.y+d} ${u} ${o.x+f} ${s.y} L ${s.x} ${s.y}`),o.y===s.y&&(h=`M ${o.x} ${o.y} L ${s.x} ${s.y}`));if(h===void 0)throw Error(`Line definition not found`);e.append(`path`).attr(`d`,h).attr(`class`,`arrow arrow`+z(m,F,a))},`drawArrow`),Ie=t((e,t)=>{let n=e.append(`g`).attr(`class`,`commit-arrows`);[...t.keys()].forEach(e=>{let r=t.get(e);r.parents&&r.parents.length>0&&r.parents.forEach(e=>{Fe(n,t.get(e),r,t)})})},`drawArrows`),Le=t((e,t,n,r)=>{let{look:i,theme:a,themeVariables:o}=p(),{dropShadow:s,THEME_COLOR_LIMIT:c}=o,l=I.has(a??``),u=R.has(a??``),d=e.append(`g`);t.forEach((e,t)=>{let a=z(t,l?c:F,u),o=B.get(e.name)?.pos;if(o===void 0)throw Error(`Position not found for branch ${e.name}`);let f=K===`TB`||K===`BT`?o:l?o+L/2+1:o-2,p=d.append(`line`);p.attr(`x1`,0),p.attr(`y1`,f),p.attr(`x2`,G),p.attr(`y2`,f),p.attr(`class`,`branch branch`+a),K===`TB`?(p.attr(`y1`,H),p.attr(`x1`,o),p.attr(`y2`,G),p.attr(`x2`,o)):K===`BT`&&(p.attr(`y1`,G),p.attr(`x1`,o),p.attr(`y2`,H),p.attr(`x2`,o)),W.push(f);let m=e.name,h=J(m),g=d.insert(`rect`),_=d.insert(`g`).attr(`class`,`branchLabel`).insert(`g`).attr(`class`,`label branch-label`+a);_.node().appendChild(h);let v=h.getBBox(),y=l?0:4,b=l?16:0,x=l?L:0;i===`neo`&&g.attr(`data-look`,`neo`),g.attr(`class`,`branchLabelBkg label`+a).attr(`style`,i===`neo`?`filter:${l?`url(#${r}-drop-shadow)`:s}`:``).attr(`rx`,y).attr(`ry`,y).attr(`x`,-v.width-4-(n.rotateCommitLabel===!0?30:0)).attr(`y`,-v.height/2+10).attr(`width`,v.width+18+b).attr(`height`,v.height+4+x),_.attr(`transform`,`translate(`+(-v.width-14-(n.rotateCommitLabel===!0?30:0)+b/2)+`, `+(f-v.height/2-2)+`)`),K===`TB`?(g.attr(`x`,o-v.width/2-10).attr(`y`,0),_.attr(`transform`,`translate(`+(o-v.width/2-5)+`, 0)`),l&&(g.attr(`transform`,`translate(${-b/2-3}, ${-x-10})`),_.attr(`transform`,`translate(`+(o-v.width/2-5)+`, `+(-x*2+7)+`)`))):K===`BT`?(g.attr(`x`,o-v.width/2-10).attr(`y`,G),_.attr(`transform`,`translate(`+(o-v.width/2-5)+`, `+G+`)`),l&&(g.attr(`transform`,`translate(${-b/2-3}, ${x+10})`),_.attr(`transform`,`translate(`+(o-v.width/2-5)+`, `+(G+x*2+4)+`)`))):g.attr(`transform`,`translate(-19, `+(f-12-x/2)+`)`)})},`drawBranches`),Re=t(function(e,t,n,r,i){return B.set(e,{pos:t,index:n}),t+=50+(i?40:0)+(K===`TB`||K===`BT`?r.width/2:0),t},`setBranchPosition`),ze={draw:t(function(t,r,i,a){q(),e.debug(`in gitgraph renderer`,t+`
|
|
14
|
+
`,`id:`,r,i);let s=a.db;if(!s.getConfig){e.error(`getConfig method is not available on db`);return}let c=s.getConfig(),l=c.rotateCommitLabel??!1;U=s.getCommits();let u=s.getBranchesAsObjArray();K=s.getDirection();let d=n(`[id="${r}"]`),{look:f,theme:m,themeVariables:g}=p(),{useGradient:_,gradientStart:v,gradientStop:y,filterColor:b}=g;if(_){let e=d.append(`defs`).append(`linearGradient`).attr(`id`,r+`-gradient`).attr(`gradientUnits`,`objectBoundingBox`).attr(`x1`,`0%`).attr(`y1`,`0%`).attr(`x2`,`100%`).attr(`y2`,`0%`);e.append(`stop`).attr(`offset`,`0%`).attr(`stop-color`,v).attr(`stop-opacity`,1),e.append(`stop`).attr(`offset`,`100%`).attr(`stop-color`,y).attr(`stop-opacity`,1)}f===`neo`&&I.has(m??``)&&d.append(`defs`).append(`filter`).attr(`id`,r+`-drop-shadow`).attr(`height`,`130%`).attr(`width`,`130%`).append(`feDropShadow`).attr(`dx`,`4`).attr(`dy`,`4`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,b);let x=0;u.forEach((e,t)=>{let n=J(e.name),r=d.append(`g`),i=r.insert(`g`).attr(`class`,`branchLabel`),a=i.insert(`g`).attr(`class`,`label branch-label`);a.node()?.appendChild(n);let o=n.getBBox();x=Re(e.name,x,t,o,l),a.remove(),i.remove(),r.remove()}),X(d,U,!1,c),c.showBranches&&Le(d,u,c,r),Ie(d,U),X(d,U,!0,c),h.insertTitle(d,`gitTitleText`,c.titleTopMargin??0,s.getDiagramTitle()),o(void 0,d,c.diagramPadding,c.useMaxWidth)},`draw`)},Q=8,$=new Set([`redux`,`redux-dark`,`redux-color`,`redux-dark-color`]),Be=new Set([`redux-color`,`redux-dark-color`]),Ve=new Set([`neo`,`neo-dark`]),He=new Set([`dark`,`redux-dark`,`redux-dark-color`,`neo-dark`]),Ue=new Set([`redux`,`redux-dark`,`redux-color`,`redux-dark-color`,`neo`,`neo-dark`]),We=t(e=>{let{svgId:t}=e,n=``;if(e.useGradient&&t)for(let r=0;r<e.THEME_COLOR_LIMIT;r++)n+=`
|
|
15
|
+
.label${r} { fill: ${e.mainBkg}; stroke: url(${t}-gradient); stroke-width: ${e.strokeWidth};}
|
|
16
|
+
`;return n},`genGitGraphGradient`),Ge=t(e=>{let{theme:t,themeVariables:n}=c(),{borderColorArray:r}=n,i=$.has(t);if(Ve.has(t)){let t=``;for(let n=0;n<e.THEME_COLOR_LIMIT;n++)if(n===0)t+=`
|
|
17
|
+
.branch-label${n} { fill: ${e.nodeBorder};}
|
|
18
|
+
.commit${n} { stroke: ${e.nodeBorder}; }
|
|
19
|
+
.commit-highlight${n} { stroke: ${e.nodeBorder}; fill: ${e.nodeBorder}; }
|
|
20
|
+
.arrow${n} { stroke: ${e.nodeBorder}; }
|
|
21
|
+
.commit-bullets { fill: ${e.nodeBorder}; }
|
|
22
|
+
.commit-cherry-pick${n} { stroke: ${e.nodeBorder}; }
|
|
23
|
+
${We(e)}`;else{let r=n%Q;t+=`
|
|
24
|
+
.branch-label${n} { fill: ${e[`gitBranchLabel`+r]}; }
|
|
25
|
+
.commit${n} { stroke: ${e[`git`+r]}; fill: ${e[`git`+r]}; }
|
|
26
|
+
.commit-highlight${n} { stroke: ${e[`gitInv`+r]}; fill: ${e[`gitInv`+r]}; }
|
|
27
|
+
.arrow${n} { stroke: ${e[`git`+r]}; }
|
|
28
|
+
`}return t}else if(Be.has(t)){let n=``;for(let a=0;a<e.THEME_COLOR_LIMIT;a++)if(a===0)n+=`
|
|
29
|
+
.branch-label${a} { fill: ${e.nodeBorder}; ${i?`font-weight:${e.noteFontWeight}`:``} }
|
|
30
|
+
.commit${a} { stroke: ${e.nodeBorder}; }
|
|
31
|
+
.commit-highlight${a} { stroke: ${e.nodeBorder}; fill: ${e.mainBkg}; }
|
|
32
|
+
.label${a} { fill: ${e.mainBkg}; stroke: ${e.nodeBorder}; stroke-width: ${e.strokeWidth}; ${i?`font-weight:${e.noteFontWeight}`:``} }
|
|
33
|
+
.arrow${a} { stroke: ${e.nodeBorder}; }
|
|
34
|
+
.commit-bullets { fill: ${e.nodeBorder}; }
|
|
35
|
+
`;else{let o=a%r.length;n+=`
|
|
36
|
+
.branch-label${a} { fill: ${e.nodeBorder}; ${i?`font-weight:${e.noteFontWeight}`:``} }
|
|
37
|
+
.commit${a} { stroke: ${r[o]}; fill: ${r[o]}; }
|
|
38
|
+
.commit-highlight${a} { stroke: ${r[o]}; fill: ${r[o]}; }
|
|
39
|
+
.label${a} { fill: ${He.has(t)?e.mainBkg:r[o]}; stroke: ${r[o]}; stroke-width: ${e.strokeWidth}; }
|
|
40
|
+
.arrow${a} { stroke: ${r[o]}; }
|
|
41
|
+
`}return n}else{let t=``;for(let n=0;n<e.THEME_COLOR_LIMIT;n++)t+=`
|
|
42
|
+
.branch-label${n} { fill: ${e.nodeBorder}; ${i?`font-weight:${e.noteFontWeight}`:``} }
|
|
43
|
+
.commit${n} { stroke: ${e.nodeBorder}; }
|
|
44
|
+
.commit-highlight${n} { stroke: ${e.nodeBorder}; fill: ${e.nodeBorder}; }
|
|
45
|
+
.label${n} { fill: ${e.mainBkg}; stroke: ${e.nodeBorder}; stroke-width: ${e.strokeWidth}; ${i?`font-weight:${e.noteFontWeight}`:``}}
|
|
46
|
+
.arrow${n} { stroke: ${e.nodeBorder}; }
|
|
47
|
+
.commit-bullets { fill: ${e.nodeBorder}; }
|
|
48
|
+
.commit-cherry-pick${n} { stroke: ${e.nodeBorder}; }
|
|
49
|
+
`;return t}},`genColor`),Ke=t(e=>`${Array.from({length:e.THEME_COLOR_LIMIT},(e,t)=>t).map(t=>{let n=t%Q;return`
|
|
50
|
+
.branch-label${t} { fill: ${e[`gitBranchLabel`+n]}; }
|
|
51
|
+
.commit${t} { stroke: ${e[`git`+n]}; fill: ${e[`git`+n]}; }
|
|
52
|
+
.commit-highlight${t} { stroke: ${e[`gitInv`+n]}; fill: ${e[`gitInv`+n]}; }
|
|
53
|
+
.label${t} { fill: ${e[`git`+n]}; }
|
|
54
|
+
.arrow${t} { stroke: ${e[`git`+n]}; }
|
|
55
|
+
`}).join(`
|
|
56
|
+
`)}`,`normalTheme`),qe={parser:be,db:A,renderer:ze,styles:t(e=>{let{theme:t}=c(),n=Ue.has(t);return`
|
|
57
|
+
.commit-id,
|
|
58
|
+
.commit-msg,
|
|
59
|
+
.branch-label {
|
|
60
|
+
fill: lightgrey;
|
|
61
|
+
color: lightgrey;
|
|
62
|
+
font-family: 'trebuchet ms', verdana, arial, sans-serif;
|
|
63
|
+
font-family: var(--mermaid-font-family);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
${n?Ge(e):Ke(e)}
|
|
67
|
+
|
|
68
|
+
.branch {
|
|
69
|
+
stroke-width: ${e.strokeWidth};
|
|
70
|
+
stroke: ${e.commitLineColor??e.lineColor};
|
|
71
|
+
stroke-dasharray: ${n?`4 2`:`2`};
|
|
72
|
+
}
|
|
73
|
+
.commit-label { font-size: ${e.commitLabelFontSize}; fill: ${n?e.nodeBorder:e.commitLabelColor}; ${n?`font-weight:${e.noteFontWeight};`:``}}
|
|
74
|
+
.commit-label-bkg { font-size: ${e.commitLabelFontSize}; fill: ${n?`transparent`:e.commitLabelBackground}; opacity: ${n?``:.5}; }
|
|
75
|
+
.tag-label { font-size: ${e.tagLabelFontSize}; fill: ${e.tagLabelColor};}
|
|
76
|
+
.tag-label-bkg { fill: ${n?e.mainBkg:e.tagLabelBackground}; stroke: ${n?e.nodeBorder:e.tagLabelBorder}; ${n?`filter:${e.dropShadow}`:``} }
|
|
77
|
+
.tag-hole { fill: ${e.textColor}; }
|
|
78
|
+
|
|
79
|
+
.commit-merge {
|
|
80
|
+
stroke: ${n?e.mainBkg:e.primaryColor};
|
|
81
|
+
fill: ${n?e.mainBkg:e.primaryColor};
|
|
82
|
+
}
|
|
83
|
+
.commit-reverse {
|
|
84
|
+
stroke: ${n?e.mainBkg:e.primaryColor};
|
|
85
|
+
fill: ${n?e.mainBkg:e.primaryColor};
|
|
86
|
+
stroke-width: ${n?e.strokeWidth:3};
|
|
87
|
+
}
|
|
88
|
+
.commit-highlight-outer {
|
|
89
|
+
}
|
|
90
|
+
.commit-highlight-inner {
|
|
91
|
+
stroke: ${n?e.mainBkg:e.primaryColor};
|
|
92
|
+
fill: ${n?e.mainBkg:e.primaryColor};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.arrow {
|
|
96
|
+
/* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */
|
|
97
|
+
stroke-width: ${$.has(t)?e.strokeWidth:8};
|
|
98
|
+
stroke-linecap: round;
|
|
99
|
+
fill: none
|
|
100
|
+
}
|
|
101
|
+
.gitTitleText {
|
|
102
|
+
text-anchor: middle;
|
|
103
|
+
font-size: 18px;
|
|
104
|
+
fill: ${e.textColor};
|
|
105
|
+
}
|
|
106
|
+
`},`getStyles`)};export{qe as diagram};
|
|
107
|
+
//# sourceMappingURL=gitGraphDiagram-PVQCEYII-DQT8-kg2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitGraphDiagram-PVQCEYII-DQT8-kg2.js","names":["select"],"sources":["../../node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-PVQCEYII.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-5ZQYHXKU.mjs\";\nimport {\n clear,\n common_default,\n defaultConfig_default,\n getAccDescription,\n getAccTitle,\n getConfig,\n getConfig2,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n setupGraphViewbox2 as setupGraphViewbox\n} from \"./chunk-CSCIHK7Q.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 getConfig3 = /* @__PURE__ */ __name(() => {\n const config = cleanAndMerge({\n ...DEFAULT_GITGRAPH_CONFIG,\n ...getConfig().gitGraph\n });\n return config;\n}, \"getConfig\");\nvar state = new ImperativeState(() => {\n const config = getConfig3();\n const mainBranchName = config.mainBranchName;\n const mainBranchOrder = config.mainBranchOrder;\n return {\n mainBranchName,\n commits: /* @__PURE__ */ new Map(),\n head: null,\n branchConfig: /* @__PURE__ */ new Map([[mainBranchName, { name: mainBranchName, order: mainBranchOrder }]]),\n branches: /* @__PURE__ */ new Map([[mainBranchName, null]]),\n currBranch: mainBranchName,\n direction: \"LR\",\n seq: 0,\n options: {}\n };\n});\nfunction getID() {\n return random({ length: 7 });\n}\n__name(getID, \"getID\");\nfunction uniqBy(list, fn) {\n const recordMap = /* @__PURE__ */ Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\n__name(uniqBy, \"uniqBy\");\nvar setDirection = /* @__PURE__ */ __name(function(dir2) {\n state.records.direction = dir2;\n}, \"setDirection\");\nvar setOptions = /* @__PURE__ */ __name(function(rawOptString) {\n log.debug(\"options str\", rawOptString);\n rawOptString = rawOptString?.trim();\n rawOptString = rawOptString || \"{}\";\n try {\n state.records.options = JSON.parse(rawOptString);\n } catch (e) {\n log.error(\"error while parsing gitGraph options\", e.message);\n }\n}, \"setOptions\");\nvar getOptions = /* @__PURE__ */ __name(function() {\n return state.records.options;\n}, \"getOptions\");\nvar commit = /* @__PURE__ */ __name(function(commitDB) {\n let msg = commitDB.msg;\n let id = commitDB.id;\n const type = commitDB.type;\n let tags = commitDB.tags;\n log.info(\"commit\", msg, id, type, tags);\n log.debug(\"Entering commit:\", msg, id, type, tags);\n const config = getConfig3();\n id = common_default.sanitizeText(id, config);\n msg = common_default.sanitizeText(msg, config);\n tags = tags?.map((tag) => common_default.sanitizeText(tag, config));\n const newCommit = {\n id: id ? id : state.records.seq + \"-\" + getID(),\n message: msg,\n seq: state.records.seq++,\n type: type ?? commitType.NORMAL,\n tags: tags ?? [],\n parents: state.records.head == null ? [] : [state.records.head.id],\n branch: state.records.currBranch\n };\n state.records.head = newCommit;\n log.info(\"main branch\", config.mainBranchName);\n if (state.records.commits.has(newCommit.id)) {\n log.warn(`Commit ID ${newCommit.id} already exists`);\n }\n state.records.commits.set(newCommit.id, newCommit);\n state.records.branches.set(state.records.currBranch, newCommit.id);\n log.debug(\"in pushCommit \" + newCommit.id);\n}, \"commit\");\nvar branch = /* @__PURE__ */ __name(function(branchDB) {\n let name = branchDB.name;\n const order = branchDB.order;\n name = common_default.sanitizeText(name, getConfig3());\n if (state.records.branches.has(name)) {\n throw new Error(\n `Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using \"checkout ${name}\")`\n );\n }\n state.records.branches.set(name, state.records.head != null ? state.records.head.id : null);\n state.records.branchConfig.set(name, { name, order });\n checkout(name);\n log.debug(\"in createBranch\");\n}, \"branch\");\nvar merge = /* @__PURE__ */ __name((mergeDB) => {\n let otherBranch = mergeDB.branch;\n let customId = mergeDB.id;\n const overrideType = mergeDB.type;\n const customTags = mergeDB.tags;\n const config = getConfig3();\n otherBranch = common_default.sanitizeText(otherBranch, config);\n if (customId) {\n customId = common_default.sanitizeText(customId, config);\n }\n const currentBranchCheck = state.records.branches.get(state.records.currBranch);\n const otherBranchCheck = state.records.branches.get(otherBranch);\n const currentCommit = currentBranchCheck ? state.records.commits.get(currentBranchCheck) : void 0;\n const otherCommit = otherBranchCheck ? state.records.commits.get(otherBranchCheck) : void 0;\n if (currentCommit && otherCommit && currentCommit.branch === otherBranch) {\n throw new Error(`Cannot merge branch '${otherBranch}' into itself.`);\n }\n if (state.records.currBranch === otherBranch) {\n const error = new Error('Incorrect usage of \"merge\". Cannot merge a branch to itself');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"branch abc\"]\n };\n throw error;\n }\n if (currentCommit === void 0 || !currentCommit) {\n const error = new Error(\n `Incorrect usage of \"merge\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"commit\"]\n };\n throw error;\n }\n if (!state.records.branches.has(otherBranch)) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") does not exist\"\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [`branch ${otherBranch}`]\n };\n throw error;\n }\n if (otherCommit === void 0 || !otherCommit) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") has no commits\"\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: ['\"commit\"']\n };\n throw error;\n }\n if (currentCommit === otherCommit) {\n const error = new Error('Incorrect usage of \"merge\". Both branches have same head');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"branch abc\"]\n };\n throw error;\n }\n if (customId && state.records.commits.has(customId)) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Commit with id:' + customId + \" already exists, use different custom id\"\n );\n error.hash = {\n text: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(\" \")}`,\n token: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(\" \")}`,\n expected: [\n `merge ${otherBranch} ${customId}_UNIQUE ${overrideType} ${customTags?.join(\" \")}`\n ]\n };\n throw error;\n }\n const verifiedBranch = otherBranchCheck ? otherBranchCheck : \"\";\n const commit2 = {\n id: customId || `${state.records.seq}-${getID()}`,\n message: `merged branch ${otherBranch} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, verifiedBranch],\n branch: state.records.currBranch,\n type: commitType.MERGE,\n customType: overrideType,\n customId: customId ? true : false,\n tags: customTags ?? []\n };\n state.records.head = commit2;\n state.records.commits.set(commit2.id, commit2);\n state.records.branches.set(state.records.currBranch, commit2.id);\n log.debug(state.records.branches);\n log.debug(\"in mergeBranch\");\n}, \"merge\");\nvar cherryPick = /* @__PURE__ */ __name(function(cherryPickDB) {\n let sourceId = cherryPickDB.id;\n let targetId = cherryPickDB.targetId;\n let tags = cherryPickDB.tags;\n let parentCommitId = cherryPickDB.parent;\n log.debug(\"Entering cherryPick:\", sourceId, targetId, tags);\n const config = getConfig3();\n sourceId = common_default.sanitizeText(sourceId, config);\n targetId = common_default.sanitizeText(targetId, config);\n tags = tags?.map((tag) => common_default.sanitizeText(tag, config));\n parentCommitId = common_default.sanitizeText(parentCommitId, config);\n if (!sourceId || !state.records.commits.has(sourceId)) {\n const error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit id should exist and provided'\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const sourceCommit = state.records.commits.get(sourceId);\n if (sourceCommit === void 0 || !sourceCommit) {\n throw new Error('Incorrect usage of \"cherryPick\". Source commit id should exist and provided');\n }\n if (parentCommitId && !(Array.isArray(sourceCommit.parents) && sourceCommit.parents.includes(parentCommitId))) {\n const error = new Error(\n \"Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.\"\n );\n throw error;\n }\n const sourceCommitBranch = sourceCommit.branch;\n if (sourceCommit.type === commitType.MERGE && !parentCommitId) {\n const error = new Error(\n \"Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.\"\n );\n throw error;\n }\n if (!targetId || !state.records.commits.has(targetId)) {\n if (sourceCommitBranch === state.records.currBranch) {\n const error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit is already on current branch'\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommitId = state.records.branches.get(state.records.currBranch);\n if (currentCommitId === void 0 || !currentCommitId) {\n const error = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommit = state.records.commits.get(currentCommitId);\n if (currentCommit === void 0 || !currentCommit) {\n const error = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const commit2 = {\n id: state.records.seq + \"-\" + getID(),\n message: `cherry-picked ${sourceCommit?.message} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, sourceCommit.id],\n branch: state.records.currBranch,\n type: commitType.CHERRY_PICK,\n tags: tags ? tags.filter(Boolean) : [\n `cherry-pick:${sourceCommit.id}${sourceCommit.type === commitType.MERGE ? `|parent:${parentCommitId}` : \"\"}`\n ]\n };\n state.records.head = commit2;\n state.records.commits.set(commit2.id, commit2);\n state.records.branches.set(state.records.currBranch, commit2.id);\n log.debug(state.records.branches);\n log.debug(\"in cherryPick\");\n }\n}, \"cherryPick\");\nvar checkout = /* @__PURE__ */ __name(function(branch2) {\n branch2 = common_default.sanitizeText(branch2, getConfig3());\n if (!state.records.branches.has(branch2)) {\n const error = new Error(\n `Trying to checkout branch which is not yet created. (Help try using \"branch ${branch2}\")`\n );\n error.hash = {\n text: `checkout ${branch2}`,\n token: `checkout ${branch2}`,\n expected: [`branch ${branch2}`]\n };\n throw error;\n } else {\n state.records.currBranch = branch2;\n const id = state.records.branches.get(state.records.currBranch);\n if (id === void 0 || !id) {\n state.records.head = null;\n } else {\n state.records.head = state.records.commits.get(id) ?? null;\n }\n }\n}, \"checkout\");\nfunction upsert(arr, key, newVal) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newVal);\n } else {\n arr.splice(index, 1, newVal);\n }\n}\n__name(upsert, \"upsert\");\nfunction prettyPrintCommitHistory(commitArr) {\n const commit2 = commitArr.reduce((out, commit3) => {\n if (out.seq > commit3.seq) {\n return out;\n }\n return commit3;\n }, commitArr[0]);\n let line = \"\";\n commitArr.forEach(function(c) {\n if (c === commit2) {\n line += \"\t*\";\n } else {\n line += \"\t|\";\n }\n });\n const label = [line, commit2.id, commit2.seq];\n for (const branch2 in state.records.branches) {\n if (state.records.branches.get(branch2) === commit2.id) {\n label.push(branch2);\n }\n }\n log.debug(label.join(\" \"));\n if (commit2.parents && commit2.parents.length == 2 && commit2.parents[0] && commit2.parents[1]) {\n const newCommit = state.records.commits.get(commit2.parents[0]);\n upsert(commitArr, commit2, newCommit);\n if (commit2.parents[1]) {\n commitArr.push(state.records.commits.get(commit2.parents[1]));\n }\n } else if (commit2.parents.length == 0) {\n return;\n } else {\n if (commit2.parents[0]) {\n const newCommit = state.records.commits.get(commit2.parents[0]);\n upsert(commitArr, commit2, newCommit);\n }\n }\n commitArr = uniqBy(commitArr, (c) => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n__name(prettyPrintCommitHistory, \"prettyPrintCommitHistory\");\nvar prettyPrint = /* @__PURE__ */ __name(function() {\n log.debug(state.records.commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n}, \"prettyPrint\");\nvar clear2 = /* @__PURE__ */ __name(function() {\n state.reset();\n clear();\n}, \"clear\");\nvar getBranchesAsObjArray = /* @__PURE__ */ __name(function() {\n const branchesArray = [...state.records.branchConfig.values()].map((branchConfig, i) => {\n if (branchConfig.order !== null && branchConfig.order !== void 0) {\n return branchConfig;\n }\n return {\n ...branchConfig,\n order: parseFloat(`0.${i}`)\n };\n }).sort((a, b) => (a.order ?? 0) - (b.order ?? 0)).map(({ name }) => ({ name }));\n return branchesArray;\n}, \"getBranchesAsObjArray\");\nvar getBranches = /* @__PURE__ */ __name(function() {\n return state.records.branches;\n}, \"getBranches\");\nvar getCommits = /* @__PURE__ */ __name(function() {\n return state.records.commits;\n}, \"getCommits\");\nvar getCommitsArray = /* @__PURE__ */ __name(function() {\n const commitArr = [...state.records.commits.values()];\n commitArr.forEach(function(o) {\n log.debug(o.id);\n });\n commitArr.sort((a, b) => a.seq - b.seq);\n return commitArr;\n}, \"getCommitsArray\");\nvar getCurrentBranch = /* @__PURE__ */ __name(function() {\n return state.records.currBranch;\n}, \"getCurrentBranch\");\nvar getDirection = /* @__PURE__ */ __name(function() {\n return state.records.direction;\n}, \"getDirection\");\nvar getHead = /* @__PURE__ */ __name(function() {\n return state.records.head;\n}, \"getHead\");\nvar db = {\n commitType,\n getConfig: getConfig3,\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n cherryPick,\n checkout,\n //reset,\n prettyPrint,\n clear: clear2,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n setDiagramTitle,\n getDiagramTitle\n};\n\n// src/diagrams/git/gitGraphParser.ts\nvar populate = /* @__PURE__ */ __name((ast, db2) => {\n populateCommonDb(ast, db2);\n if (ast.dir) {\n db2.setDirection(ast.dir);\n }\n for (const statement of ast.statements) {\n parseStatement(statement, db2);\n }\n}, \"populate\");\nvar parseStatement = /* @__PURE__ */ __name((statement, db2) => {\n const parsers = {\n Commit: /* @__PURE__ */ __name((stmt) => db2.commit(parseCommit(stmt)), \"Commit\"),\n Branch: /* @__PURE__ */ __name((stmt) => db2.branch(parseBranch(stmt)), \"Branch\"),\n Merge: /* @__PURE__ */ __name((stmt) => db2.merge(parseMerge(stmt)), \"Merge\"),\n Checkout: /* @__PURE__ */ __name((stmt) => db2.checkout(parseCheckout(stmt)), \"Checkout\"),\n CherryPicking: /* @__PURE__ */ __name((stmt) => db2.cherryPick(parseCherryPicking(stmt)), \"CherryPicking\")\n };\n const parser2 = parsers[statement.$type];\n if (parser2) {\n parser2(statement);\n } else {\n log.error(`Unknown statement type: ${statement.$type}`);\n }\n}, \"parseStatement\");\nvar parseCommit = /* @__PURE__ */ __name((commit2) => {\n const commitDB = {\n id: commit2.id,\n msg: commit2.message ?? \"\",\n type: commit2.type !== void 0 ? commitType[commit2.type] : commitType.NORMAL,\n tags: commit2.tags ?? void 0\n };\n return commitDB;\n}, \"parseCommit\");\nvar parseBranch = /* @__PURE__ */ __name((branch2) => {\n const branchDB = {\n name: branch2.name,\n order: branch2.order ?? 0\n };\n return branchDB;\n}, \"parseBranch\");\nvar parseMerge = /* @__PURE__ */ __name((merge2) => {\n const mergeDB = {\n branch: merge2.branch,\n id: merge2.id ?? \"\",\n type: merge2.type !== void 0 ? commitType[merge2.type] : void 0,\n tags: merge2.tags ?? void 0\n };\n return mergeDB;\n}, \"parseMerge\");\nvar parseCheckout = /* @__PURE__ */ __name((checkout2) => {\n const branch2 = checkout2.branch;\n return branch2;\n}, \"parseCheckout\");\nvar parseCherryPicking = /* @__PURE__ */ __name((cherryPicking) => {\n const cherryPickDB = {\n id: cherryPicking.id,\n targetId: \"\",\n tags: cherryPicking.tags?.length === 0 ? void 0 : cherryPicking.tags,\n parent: cherryPicking.parent\n };\n return cherryPickDB;\n}, \"parseCherryPicking\");\nvar parser = {\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"gitGraph\", input);\n log.debug(ast);\n populate(ast, db);\n }, \"parse\")\n};\nif (void 0) {\n const { it, expect, describe } = void 0;\n const mockDB = {\n commitType,\n setDirection: vi.fn(),\n commit: vi.fn(),\n branch: vi.fn(),\n merge: vi.fn(),\n cherryPick: vi.fn(),\n checkout: vi.fn()\n };\n describe(\"GitGraph Parser\", () => {\n it(\"should parse a commit statement\", () => {\n const commit2 = {\n $type: \"Commit\",\n id: \"1\",\n message: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n };\n parseStatement(commit2, mockDB);\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: \"1\",\n msg: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n });\n it(\"should parse a branch statement\", () => {\n const branch2 = {\n $type: \"Branch\",\n name: \"newBranch\",\n order: 1\n };\n parseStatement(branch2, mockDB);\n expect(mockDB.branch).toHaveBeenCalledWith({ name: \"newBranch\", order: 1 });\n });\n it(\"should parse a checkout statement\", () => {\n const checkout2 = {\n $type: \"Checkout\",\n branch: \"newBranch\"\n };\n parseStatement(checkout2, mockDB);\n expect(mockDB.checkout).toHaveBeenCalledWith(\"newBranch\");\n });\n it(\"should parse a merge statement\", () => {\n const merge2 = {\n $type: \"Merge\",\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n };\n parseStatement(merge2, mockDB);\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n });\n it(\"should parse a cherry picking statement\", () => {\n const cherryPick2 = {\n $type: \"CherryPicking\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n parent: \"2\"\n };\n parseStatement(cherryPick2, mockDB);\n expect(mockDB.cherryPick).toHaveBeenCalledWith({\n id: \"1\",\n targetId: \"\",\n parent: \"2\",\n tags: [\"tag1\", \"tag2\"]\n });\n });\n it(\"should parse a langium generated gitGraph ast\", () => {\n const dummy = {\n $type: \"GitGraph\",\n statements: [],\n accDescr: \"\",\n accTitle: \"\",\n title: \"\"\n };\n const gitGraphAst = {\n $type: \"GitGraph\",\n statements: [\n {\n $container: dummy,\n $type: \"Commit\",\n id: \"1\",\n message: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n },\n {\n $container: dummy,\n $type: \"Branch\",\n name: \"newBranch\",\n order: 1\n },\n {\n $container: dummy,\n $type: \"Merge\",\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n },\n {\n $container: dummy,\n $type: \"Checkout\",\n branch: \"newBranch\"\n },\n {\n $container: dummy,\n $type: \"CherryPicking\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n parent: \"2\"\n }\n ],\n accDescr: \"\",\n accTitle: \"\",\n title: \"\"\n };\n populate(gitGraphAst, mockDB);\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: \"1\",\n msg: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n expect(mockDB.branch).toHaveBeenCalledWith({ name: \"newBranch\", order: 1 });\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n expect(mockDB.checkout).toHaveBeenCalledWith(\"newBranch\");\n });\n });\n}\n\n// src/diagrams/git/gitGraphRenderer.ts\nimport { select } from \"d3\";\nvar LAYOUT_OFFSET = 10;\nvar COMMIT_STEP = 40;\nvar PX = 4;\nvar PY = 2;\nvar THEME_COLOR_LIMIT = 8;\nvar REDUX_GEOMETRY_THEMES = /* @__PURE__ */ new Set([\"redux\", \"redux-dark\", \"redux-color\", \"redux-dark-color\"]);\nvar REDUX_BRANCH_LABEL_PADDING_Y = 12;\nvar COLOR_THEMES = /* @__PURE__ */ new Set([\"redux-color\", \"redux-dark-color\"]);\nvar DARK_THEMES = /* @__PURE__ */ new Set([\"dark\", \"redux-dark\", \"redux-dark-color\", \"neo-dark\"]);\nvar calcColorIndex = /* @__PURE__ */ __name((rawIndex, limit, avoidDefaultColor = false) => {\n if (avoidDefaultColor && rawIndex > 0) {\n return (rawIndex - 1) % (limit - 1) + 1;\n }\n return rawIndex % limit;\n}, \"calcColorIndex\");\nvar branchPos = /* @__PURE__ */ new Map();\nvar commitPos = /* @__PURE__ */ new Map();\nvar defaultPos = 30;\nvar allCommitsDict = /* @__PURE__ */ new Map();\nvar lanes = [];\nvar maxPos = 0;\nvar dir = \"LR\";\nvar clear3 = /* @__PURE__ */ __name(() => {\n branchPos.clear();\n commitPos.clear();\n allCommitsDict.clear();\n maxPos = 0;\n lanes = [];\n dir = \"LR\";\n}, \"clear\");\nvar drawText = /* @__PURE__ */ __name((txt) => {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n const rows = typeof txt === \"string\" ? txt.split(/\\\\n|\\n|<br\\s*\\/?>/gi) : txt;\n rows.forEach((row) => {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n tspan.setAttribute(\"class\", \"row\");\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n });\n return svgLabel;\n}, \"drawText\");\nvar findClosestParent = /* @__PURE__ */ __name((parents) => {\n let closestParent;\n let comparisonFunc;\n let targetPosition;\n if (dir === \"BT\") {\n comparisonFunc = /* @__PURE__ */ __name((a, b) => a <= b, \"comparisonFunc\");\n targetPosition = Infinity;\n } else {\n comparisonFunc = /* @__PURE__ */ __name((a, b) => a >= b, \"comparisonFunc\");\n targetPosition = 0;\n }\n parents.forEach((parent) => {\n const parentPosition = dir === \"TB\" || dir == \"BT\" ? commitPos.get(parent)?.y : commitPos.get(parent)?.x;\n if (parentPosition !== void 0 && comparisonFunc(parentPosition, targetPosition)) {\n closestParent = parent;\n targetPosition = parentPosition;\n }\n });\n return closestParent;\n}, \"findClosestParent\");\nvar findClosestParentBT = /* @__PURE__ */ __name((parents) => {\n let closestParent = \"\";\n let maxPosition = Infinity;\n parents.forEach((parent) => {\n const parentPosition = commitPos.get(parent).y;\n if (parentPosition <= maxPosition) {\n closestParent = parent;\n maxPosition = parentPosition;\n }\n });\n return closestParent || void 0;\n}, \"findClosestParentBT\");\nvar setParallelBTPos = /* @__PURE__ */ __name((sortedKeys, commits, defaultPos2) => {\n let curPos = defaultPos2;\n let maxPosition = defaultPos2;\n const roots = [];\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (!commit2) {\n throw new Error(`Commit not found for key ${key}`);\n }\n if (commit2.parents.length) {\n curPos = calculateCommitPosition(commit2);\n maxPosition = Math.max(curPos, maxPosition);\n } else {\n roots.push(commit2);\n }\n setCommitPosition(commit2, curPos);\n });\n curPos = maxPosition;\n roots.forEach((commit2) => {\n setRootPosition(commit2, curPos, defaultPos2);\n });\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (commit2?.parents.length) {\n const closestParent = findClosestParentBT(commit2.parents);\n curPos = commitPos.get(closestParent).y - COMMIT_STEP;\n if (curPos <= maxPosition) {\n maxPosition = curPos;\n }\n const x = branchPos.get(commit2.branch).pos;\n const y = curPos - LAYOUT_OFFSET;\n commitPos.set(commit2.id, { x, y });\n }\n });\n}, \"setParallelBTPos\");\nvar findClosestParentPos = /* @__PURE__ */ __name((commit2) => {\n const closestParent = findClosestParent(commit2.parents.filter((p) => p !== null));\n if (!closestParent) {\n throw new Error(`Closest parent not found for commit ${commit2.id}`);\n }\n const closestParentPos = commitPos.get(closestParent)?.y;\n if (closestParentPos === void 0) {\n throw new Error(`Closest parent position not found for commit ${commit2.id}`);\n }\n return closestParentPos;\n}, \"findClosestParentPos\");\nvar calculateCommitPosition = /* @__PURE__ */ __name((commit2) => {\n const closestParentPos = findClosestParentPos(commit2);\n return closestParentPos + COMMIT_STEP;\n}, \"calculateCommitPosition\");\nvar setCommitPosition = /* @__PURE__ */ __name((commit2, curPos) => {\n const branch2 = branchPos.get(commit2.branch);\n if (!branch2) {\n throw new Error(`Branch not found for commit ${commit2.id}`);\n }\n const x = branch2.pos;\n const y = curPos + LAYOUT_OFFSET;\n commitPos.set(commit2.id, { x, y });\n return { x, y };\n}, \"setCommitPosition\");\nvar setRootPosition = /* @__PURE__ */ __name((commit2, curPos, defaultPos2) => {\n const branch2 = branchPos.get(commit2.branch);\n if (!branch2) {\n throw new Error(`Branch not found for commit ${commit2.id}`);\n }\n const y = curPos + defaultPos2;\n const x = branch2.pos;\n commitPos.set(commit2.id, { x, y });\n}, \"setRootPosition\");\nvar drawCommitBullet = /* @__PURE__ */ __name((gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType) => {\n const { theme } = getConfig2();\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(theme ?? \"\");\n const useColorTheme = COLOR_THEMES.has(theme ?? \"\");\n const isDark = DARK_THEMES.has(theme ?? \"\");\n if (commitSymbolType === commitType.HIGHLIGHT) {\n gBullets.append(\"rect\").attr(\"x\", commitPosition.x - 10 + (useReduxGeometry ? 3 : 0)).attr(\"y\", commitPosition.y - 10 + (useReduxGeometry ? 3 : 0)).attr(\"width\", useReduxGeometry ? 14 : 20).attr(\"height\", useReduxGeometry ? 14 : 20).attr(\n \"class\",\n `commit ${commit2.id} commit-highlight${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)} ${typeClass}-outer`\n );\n gBullets.append(\"rect\").attr(\"x\", commitPosition.x - 6 + (useReduxGeometry ? 2 : 0)).attr(\"y\", commitPosition.y - 6 + (useReduxGeometry ? 2 : 0)).attr(\"width\", useReduxGeometry ? 8 : 12).attr(\"height\", useReduxGeometry ? 8 : 12).attr(\n \"class\",\n `commit ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)} ${typeClass}-inner`\n );\n } else if (commitSymbolType === commitType.CHERRY_PICK) {\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x).attr(\"cy\", commitPosition.y).attr(\"r\", useReduxGeometry ? 7 : 10).attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x - 3).attr(\"cy\", commitPosition.y + 2).attr(\"r\", useReduxGeometry ? 2.5 : 2.75).attr(\"fill\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x + 3).attr(\"cy\", commitPosition.y + 2).attr(\"r\", useReduxGeometry ? 2.5 : 2.75).attr(\"fill\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", commitPosition.x + 3).attr(\"y1\", commitPosition.y + 1).attr(\"x2\", commitPosition.x).attr(\"y2\", commitPosition.y - 5).attr(\"stroke\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", commitPosition.x - 3).attr(\"y1\", commitPosition.y + 1).attr(\"x2\", commitPosition.x).attr(\"y2\", commitPosition.y - 5).attr(\"stroke\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n } else {\n const circle = gBullets.append(\"circle\");\n circle.attr(\"cx\", commitPosition.x);\n circle.attr(\"cy\", commitPosition.y);\n circle.attr(\"r\", useReduxGeometry ? 7 : 10);\n circle.attr(\n \"class\",\n `commit ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n if (commitSymbolType === commitType.MERGE) {\n const circle2 = gBullets.append(\"circle\");\n circle2.attr(\"cx\", commitPosition.x);\n circle2.attr(\"cy\", commitPosition.y);\n circle2.attr(\"r\", useReduxGeometry ? 5 : 6);\n circle2.attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n }\n if (commitSymbolType === commitType.REVERSE) {\n const cross = gBullets.append(\"path\");\n const constValue = useReduxGeometry ? 4 : 5;\n cross.attr(\n \"d\",\n `M ${commitPosition.x - constValue},${commitPosition.y - constValue}L${commitPosition.x + constValue},${commitPosition.y + constValue}M${commitPosition.x - constValue},${commitPosition.y + constValue}L${commitPosition.x + constValue},${commitPosition.y - constValue}`\n ).attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n }\n }\n}, \"drawCommitBullet\");\nvar drawCommitLabel = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos, gitGraphConfig) => {\n if (commit2.type !== commitType.CHERRY_PICK && (commit2.customId && commit2.type === commitType.MERGE || commit2.type !== commitType.MERGE) && gitGraphConfig.showCommitLabel) {\n const wrapper = gLabels.append(\"g\");\n const labelBkg = wrapper.insert(\"rect\").attr(\"class\", \"commit-label-bkg\");\n const text = wrapper.append(\"text\").attr(\"x\", pos).attr(\"y\", commitPosition.y + 25).attr(\"class\", \"commit-label\").text(commit2.id);\n const bbox = text.node()?.getBBox();\n if (bbox) {\n labelBkg.attr(\"x\", commitPosition.posWithOffset - bbox.width / 2 - PY).attr(\"y\", commitPosition.y + 13.5).attr(\"width\", bbox.width + 2 * PY).attr(\"height\", bbox.height + 2 * PY);\n if (dir === \"TB\" || dir === \"BT\") {\n labelBkg.attr(\"x\", commitPosition.x - (bbox.width + 4 * PX + 5)).attr(\"y\", commitPosition.y - 12);\n text.attr(\"x\", commitPosition.x - (bbox.width + 4 * PX)).attr(\"y\", commitPosition.y + bbox.height - 12);\n } else {\n text.attr(\"x\", commitPosition.posWithOffset - bbox.width / 2);\n }\n if (gitGraphConfig.rotateCommitLabel) {\n if (dir === \"TB\" || dir === \"BT\") {\n text.attr(\n \"transform\",\n \"rotate(-45, \" + commitPosition.x + \", \" + commitPosition.y + \")\"\n );\n labelBkg.attr(\n \"transform\",\n \"rotate(-45, \" + commitPosition.x + \", \" + commitPosition.y + \")\"\n );\n } else {\n const r_x = -7.5 - (bbox.width + 10) / 25 * 9.5;\n const r_y = 10 + bbox.width / 25 * 8.5;\n wrapper.attr(\n \"transform\",\n \"translate(\" + r_x + \", \" + r_y + \") rotate(-45, \" + pos + \", \" + commitPosition.y + \")\"\n );\n }\n }\n }\n }\n}, \"drawCommitLabel\");\nvar drawCommitTags = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos) => {\n if (commit2.tags.length > 0) {\n let yOffset = 0;\n let maxTagBboxWidth = 0;\n let maxTagBboxHeight = 0;\n const tagElements = [];\n for (const tagValue of commit2.tags.reverse()) {\n const rect = gLabels.insert(\"polygon\");\n const hole = gLabels.append(\"circle\");\n const tag = gLabels.append(\"text\").attr(\"y\", commitPosition.y - 16 - yOffset).attr(\"class\", \"tag-label\").text(tagValue);\n const tagBbox = tag.node()?.getBBox();\n if (!tagBbox) {\n throw new Error(\"Tag bbox not found\");\n }\n maxTagBboxWidth = Math.max(maxTagBboxWidth, tagBbox.width);\n maxTagBboxHeight = Math.max(maxTagBboxHeight, tagBbox.height);\n tag.attr(\"x\", commitPosition.posWithOffset - tagBbox.width / 2);\n tagElements.push({\n tag,\n hole,\n rect,\n yOffset\n });\n yOffset += 20;\n }\n for (const { tag, hole, rect, yOffset: yOffset2 } of tagElements) {\n const h2 = maxTagBboxHeight / 2;\n const ly = commitPosition.y - 19.2 - yOffset2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly + PY} \n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly - PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly + h2 + PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly + h2 + PY}`\n );\n hole.attr(\"cy\", ly).attr(\"cx\", pos - maxTagBboxWidth / 2 + PX / 2).attr(\"r\", 1.5).attr(\"class\", \"tag-hole\");\n if (dir === \"TB\" || dir === \"BT\") {\n const yOrigin = pos + yOffset2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${commitPosition.x},${yOrigin + 2}\n ${commitPosition.x},${yOrigin - 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin + h2 + 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin + h2 + 2}`\n ).attr(\"transform\", \"translate(12,12) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n hole.attr(\"cx\", commitPosition.x + PX / 2).attr(\"cy\", yOrigin).attr(\"transform\", \"translate(12,12) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n tag.attr(\"x\", commitPosition.x + 5).attr(\"y\", yOrigin + 3).attr(\"transform\", \"translate(14,14) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n }\n }\n }\n}, \"drawCommitTags\");\nvar getCommitClassType = /* @__PURE__ */ __name((commit2) => {\n const commitSymbolType = commit2.customType ?? commit2.type;\n switch (commitSymbolType) {\n case commitType.NORMAL:\n return \"commit-normal\";\n case commitType.REVERSE:\n return \"commit-reverse\";\n case commitType.HIGHLIGHT:\n return \"commit-highlight\";\n case commitType.MERGE:\n return \"commit-merge\";\n case commitType.CHERRY_PICK:\n return \"commit-cherry-pick\";\n default:\n return \"commit-normal\";\n }\n}, \"getCommitClassType\");\nvar calculatePosition = /* @__PURE__ */ __name((commit2, dir2, pos, commitPos2) => {\n const defaultCommitPosition = { x: 0, y: 0 };\n if (commit2.parents.length > 0) {\n const closestParent = findClosestParent(commit2.parents);\n if (closestParent) {\n const parentPosition = commitPos2.get(closestParent) ?? defaultCommitPosition;\n if (dir2 === \"TB\") {\n return parentPosition.y + COMMIT_STEP;\n } else if (dir2 === \"BT\") {\n const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return parentPosition.x + COMMIT_STEP;\n }\n }\n } else {\n if (dir2 === \"TB\") {\n return defaultPos;\n } else if (dir2 === \"BT\") {\n const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return 0;\n }\n }\n return 0;\n}, \"calculatePosition\");\nvar getCommitPosition = /* @__PURE__ */ __name((commit2, pos, isParallelCommits) => {\n const posWithOffset = dir === \"BT\" && isParallelCommits ? pos : pos + LAYOUT_OFFSET;\n const branchY = branchPos.get(commit2.branch)?.pos;\n const x = dir === \"TB\" || dir === \"BT\" ? branchPos.get(commit2.branch)?.pos : posWithOffset;\n if (x === void 0 || branchY === void 0) {\n throw new Error(`Position were undefined for commit ${commit2.id}`);\n }\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(getConfig2().theme ?? \"\");\n const y = dir === \"TB\" || dir === \"BT\" ? posWithOffset : branchY + (useReduxGeometry ? REDUX_BRANCH_LABEL_PADDING_Y / 2 + 1 : -2);\n return { x, y, posWithOffset };\n}, \"getCommitPosition\");\nvar drawCommits = /* @__PURE__ */ __name((svg, commits, modifyGraph, gitGraphConfig) => {\n const gBullets = svg.append(\"g\").attr(\"class\", \"commit-bullets\");\n const gLabels = svg.append(\"g\").attr(\"class\", \"commit-labels\");\n let pos = dir === \"TB\" || dir === \"BT\" ? defaultPos : 0;\n const keys = [...commits.keys()];\n const isParallelCommits = gitGraphConfig.parallelCommits ?? false;\n const sortKeys = /* @__PURE__ */ __name((a, b) => {\n const seqA = commits.get(a)?.seq;\n const seqB = commits.get(b)?.seq;\n return seqA !== void 0 && seqB !== void 0 ? seqA - seqB : 0;\n }, \"sortKeys\");\n let sortedKeys = keys.sort(sortKeys);\n if (dir === \"BT\") {\n if (isParallelCommits) {\n setParallelBTPos(sortedKeys, commits, pos);\n }\n sortedKeys = sortedKeys.reverse();\n }\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (!commit2) {\n throw new Error(`Commit not found for key ${key}`);\n }\n if (isParallelCommits) {\n pos = calculatePosition(commit2, dir, pos, commitPos);\n }\n const commitPosition = getCommitPosition(commit2, pos, isParallelCommits);\n if (modifyGraph) {\n const typeClass = getCommitClassType(commit2);\n const commitSymbolType = commit2.customType ?? commit2.type;\n const branchIndex = branchPos.get(commit2.branch)?.index ?? 0;\n drawCommitBullet(gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType);\n drawCommitLabel(gLabels, commit2, commitPosition, pos, gitGraphConfig);\n drawCommitTags(gLabels, commit2, commitPosition, pos);\n }\n if (dir === \"TB\" || dir === \"BT\") {\n commitPos.set(commit2.id, { x: commitPosition.x, y: commitPosition.posWithOffset });\n } else {\n commitPos.set(commit2.id, { x: commitPosition.posWithOffset, y: commitPosition.y });\n }\n pos = dir === \"BT\" && isParallelCommits ? pos + COMMIT_STEP : pos + COMMIT_STEP + LAYOUT_OFFSET;\n if (pos > maxPos) {\n maxPos = pos;\n }\n });\n}, \"drawCommits\");\nvar shouldRerouteArrow = /* @__PURE__ */ __name((commitA, commitB, p1, p2, allCommits) => {\n const commitBIsFurthest = dir === \"TB\" || dir === \"BT\" ? p1.x < p2.x : p1.y < p2.y;\n const branchToGetCurve = commitBIsFurthest ? commitB.branch : commitA.branch;\n const isOnBranchToGetCurve = /* @__PURE__ */ __name((x) => x.branch === branchToGetCurve, \"isOnBranchToGetCurve\");\n const isBetweenCommits = /* @__PURE__ */ __name((x) => x.seq > commitA.seq && x.seq < commitB.seq, \"isBetweenCommits\");\n return [...allCommits.values()].some((commitX) => {\n return isBetweenCommits(commitX) && isOnBranchToGetCurve(commitX);\n });\n}, \"shouldRerouteArrow\");\nvar findLane = /* @__PURE__ */ __name((y1, y2, depth = 0) => {\n const candidate = y1 + Math.abs(y1 - y2) / 2;\n if (depth > 5) {\n return candidate;\n }\n const ok = lanes.every((lane) => Math.abs(lane - candidate) >= 10);\n if (ok) {\n lanes.push(candidate);\n return candidate;\n }\n const diff = Math.abs(y1 - y2);\n return findLane(y1, y2 - diff / 5, depth + 1);\n}, \"findLane\");\nvar drawArrow = /* @__PURE__ */ __name((svg, commitA, commitB, allCommits) => {\n const { theme: arrowTheme } = getConfig2();\n const useColorTheme = COLOR_THEMES.has(arrowTheme ?? \"\");\n const p1 = commitPos.get(commitA.id);\n const p2 = commitPos.get(commitB.id);\n if (p1 === void 0 || p2 === void 0) {\n throw new Error(`Commit positions not found for commits ${commitA.id} and ${commitB.id}`);\n }\n const arrowNeedsRerouting = shouldRerouteArrow(commitA, commitB, p1, p2, allCommits);\n let arc = \"\";\n let arc2 = \"\";\n let radius = 0;\n let offset = 0;\n let colorClassNum = branchPos.get(commitB.branch)?.index;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n }\n let lineDef;\n if (arrowNeedsRerouting) {\n arc = \"A 10 10, 0, 0, 0,\";\n arc2 = \"A 10 10, 0, 0, 1,\";\n radius = 10;\n offset = 10;\n const lineY = p1.y < p2.y ? findLane(p1.y, p2.y) : findLane(p2.y, p1.y);\n const lineX = p1.x < p2.x ? findLane(p1.x, p2.x) : findLane(p2.x, p1.x);\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc2} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc2} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === \"BT\") {\n if (p1.x < p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc2} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc2} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius} ${arc} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc2} ${p2.x} ${lineY + offset} L ${p2.x} ${p2.y}`;\n } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius} ${arc2} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc} ${p2.x} ${lineY - offset} L ${p2.x} ${p2.y}`;\n }\n }\n } else {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x > p2.x) {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc2} ${p1.x - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x + radius} ${p1.y} ${arc} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === \"BT\") {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x > p2.x) {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc} ${p1.x - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x + radius} ${p1.y} ${arc2} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.y > p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y + radius} ${arc2} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n }\n if (p1.y === p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n }\n }\n if (lineDef === void 0) {\n throw new Error(\"Line definition not found\");\n }\n svg.append(\"path\").attr(\"d\", lineDef).attr(\n \"class\",\n \"arrow arrow\" + calcColorIndex(colorClassNum, THEME_COLOR_LIMIT, useColorTheme)\n );\n}, \"drawArrow\");\nvar drawArrows = /* @__PURE__ */ __name((svg, commits) => {\n const gArrows = svg.append(\"g\").attr(\"class\", \"commit-arrows\");\n [...commits.keys()].forEach((key) => {\n const commit2 = commits.get(key);\n if (commit2.parents && commit2.parents.length > 0) {\n commit2.parents.forEach((parent) => {\n drawArrow(gArrows, commits.get(parent), commit2, commits);\n });\n }\n });\n}, \"drawArrows\");\nvar drawBranches = /* @__PURE__ */ __name((svg, branches, gitGraphConfig, id) => {\n const { look, theme, themeVariables } = getConfig2();\n const { dropShadow, THEME_COLOR_LIMIT: themeColorLimit } = themeVariables;\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(theme ?? \"\");\n const useColorTheme = COLOR_THEMES.has(theme ?? \"\");\n const g = svg.append(\"g\");\n branches.forEach((branch2, index) => {\n const adjustIndexForTheme = calcColorIndex(\n index,\n useReduxGeometry ? themeColorLimit : THEME_COLOR_LIMIT,\n useColorTheme\n );\n const pos = branchPos.get(branch2.name)?.pos;\n if (pos === void 0) {\n throw new Error(`Position not found for branch ${branch2.name}`);\n }\n const spineY = dir === \"TB\" || dir === \"BT\" ? pos : useReduxGeometry ? pos + REDUX_BRANCH_LABEL_PADDING_Y / 2 + 1 : pos - 2;\n const line = g.append(\"line\");\n line.attr(\"x1\", 0);\n line.attr(\"y1\", spineY);\n line.attr(\"x2\", maxPos);\n line.attr(\"y2\", spineY);\n line.attr(\"class\", \"branch branch\" + adjustIndexForTheme);\n if (dir === \"TB\") {\n line.attr(\"y1\", defaultPos);\n line.attr(\"x1\", pos);\n line.attr(\"y2\", maxPos);\n line.attr(\"x2\", pos);\n } else if (dir === \"BT\") {\n line.attr(\"y1\", maxPos);\n line.attr(\"x1\", pos);\n line.attr(\"y2\", defaultPos);\n line.attr(\"x2\", pos);\n }\n lanes.push(spineY);\n const name = branch2.name;\n const labelElement = drawText(name);\n const bkg = g.insert(\"rect\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\" + adjustIndexForTheme);\n label.node().appendChild(labelElement);\n const bbox = labelElement.getBBox();\n const borderRadius = useReduxGeometry ? 0 : 4;\n const labelPaddingX = useReduxGeometry ? 16 : 0;\n const labelPaddingY = useReduxGeometry ? REDUX_BRANCH_LABEL_PADDING_Y : 0;\n if (look === \"neo\") {\n bkg.attr(\"data-look\", `neo`);\n }\n bkg.attr(\"class\", \"branchLabelBkg label\" + adjustIndexForTheme).attr(\n \"style\",\n look === \"neo\" ? `filter:${useReduxGeometry ? `url(#${id}-drop-shadow)` : dropShadow}` : \"\"\n ).attr(\"rx\", borderRadius).attr(\"ry\", borderRadius).attr(\"x\", -bbox.width - 4 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)).attr(\"y\", -bbox.height / 2 + 10).attr(\"width\", bbox.width + 18 + labelPaddingX).attr(\"height\", bbox.height + 4 + labelPaddingY);\n label.attr(\n \"transform\",\n \"translate(\" + (-bbox.width - 14 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0) + labelPaddingX / 2) + \", \" + (spineY - bbox.height / 2 - 2) + \")\"\n );\n if (dir === \"TB\") {\n bkg.attr(\"x\", pos - bbox.width / 2 - 10).attr(\"y\", 0);\n label.attr(\"transform\", \"translate(\" + (pos - bbox.width / 2 - 5) + \", 0)\");\n if (useReduxGeometry) {\n bkg.attr(\"transform\", `translate(${-labelPaddingX / 2 - 3}, ${-labelPaddingY - 10})`);\n label.attr(\n \"transform\",\n \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + (-labelPaddingY * 2 + 7) + \")\"\n );\n }\n } else if (dir === \"BT\") {\n bkg.attr(\"x\", pos - bbox.width / 2 - 10).attr(\"y\", maxPos);\n label.attr(\"transform\", \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + maxPos + \")\");\n if (useReduxGeometry) {\n bkg.attr(\"transform\", `translate(${-labelPaddingX / 2 - 3}, ${labelPaddingY + 10})`);\n label.attr(\n \"transform\",\n \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + (maxPos + labelPaddingY * 2 + 4) + \")\"\n );\n }\n } else {\n bkg.attr(\"transform\", \"translate(-19, \" + (spineY - 12 - labelPaddingY / 2) + \")\");\n }\n });\n}, \"drawBranches\");\nvar setBranchPosition = /* @__PURE__ */ __name(function(name, pos, index, bbox, rotateCommitLabel) {\n branchPos.set(name, { pos, index });\n pos += 50 + (rotateCommitLabel ? 40 : 0) + (dir === \"TB\" || dir === \"BT\" ? bbox.width / 2 : 0);\n return pos;\n}, \"setBranchPosition\");\nvar draw = /* @__PURE__ */ __name(function(txt, id, ver, diagObj) {\n clear3();\n log.debug(\"in gitgraph renderer\", txt + \"\\n\", \"id:\", id, ver);\n const db2 = diagObj.db;\n if (!db2.getConfig) {\n log.error(\"getConfig method is not available on db\");\n return;\n }\n const gitGraphConfig = db2.getConfig();\n const rotateCommitLabel = gitGraphConfig.rotateCommitLabel ?? false;\n allCommitsDict = db2.getCommits();\n const branches = db2.getBranchesAsObjArray();\n dir = db2.getDirection();\n const diagram2 = select(`[id=\"${id}\"]`);\n const { look, theme, themeVariables } = getConfig2();\n const { useGradient, gradientStart, gradientStop, filterColor } = themeVariables;\n if (useGradient) {\n const gradient = diagram2.append(\"defs\").append(\"linearGradient\").attr(\"id\", id + \"-gradient\").attr(\"gradientUnits\", \"objectBoundingBox\").attr(\"x1\", \"0%\").attr(\"y1\", \"0%\").attr(\"x2\", \"100%\").attr(\"y2\", \"0%\");\n gradient.append(\"stop\").attr(\"offset\", \"0%\").attr(\"stop-color\", gradientStart).attr(\"stop-opacity\", 1);\n gradient.append(\"stop\").attr(\"offset\", \"100%\").attr(\"stop-color\", gradientStop).attr(\"stop-opacity\", 1);\n }\n if (look === \"neo\" && REDUX_GEOMETRY_THEMES.has(theme ?? \"\")) {\n diagram2.append(\"defs\").append(\"filter\").attr(\"id\", id + \"-drop-shadow\").attr(\"height\", \"130%\").attr(\"width\", \"130%\").append(\"feDropShadow\").attr(\"dx\", \"4\").attr(\"dy\", \"4\").attr(\"stdDeviation\", 0).attr(\"flood-opacity\", \"0.06\").attr(\"flood-color\", filterColor);\n }\n let pos = 0;\n branches.forEach((branch2, index) => {\n const labelElement = drawText(branch2.name);\n const g = diagram2.append(\"g\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\");\n label.node()?.appendChild(labelElement);\n const bbox = labelElement.getBBox();\n pos = setBranchPosition(branch2.name, pos, index, bbox, rotateCommitLabel);\n label.remove();\n branchLabel.remove();\n g.remove();\n });\n drawCommits(diagram2, allCommitsDict, false, gitGraphConfig);\n if (gitGraphConfig.showBranches) {\n drawBranches(diagram2, branches, gitGraphConfig, id);\n }\n drawArrows(diagram2, allCommitsDict);\n drawCommits(diagram2, allCommitsDict, true, gitGraphConfig);\n utils_default.insertTitle(\n diagram2,\n \"gitTitleText\",\n gitGraphConfig.titleTopMargin ?? 0,\n db2.getDiagramTitle()\n );\n setupGraphViewbox(void 0, diagram2, gitGraphConfig.diagramPadding, gitGraphConfig.useMaxWidth);\n}, \"draw\");\nvar gitGraphRenderer_default = {\n draw\n};\nif (void 0) {\n const { it, expect, describe } = void 0;\n describe(\"drawText\", () => {\n it(\"should drawText\", () => {\n const svgLabel = drawText(\"main\");\n expect(svgLabel).toBeDefined();\n expect(svgLabel.children[0].innerHTML).toBe(\"main\");\n });\n });\n describe(\"branchPosition\", () => {\n const bbox = {\n x: 0,\n y: 0,\n width: 10,\n height: 10,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n toJSON: /* @__PURE__ */ __name(() => \"\", \"toJSON\")\n };\n it(\"should setBranchPositions LR with two branches\", () => {\n dir = \"LR\";\n const pos = setBranchPosition(\"main\", 0, 0, bbox, true);\n expect(pos).toBe(90);\n expect(branchPos.get(\"main\")).toEqual({ pos: 0, index: 0 });\n const posNext = setBranchPosition(\"develop\", pos, 1, bbox, true);\n expect(posNext).toBe(180);\n expect(branchPos.get(\"develop\")).toEqual({ pos, index: 1 });\n });\n it(\"should setBranchPositions TB with two branches\", () => {\n dir = \"TB\";\n bbox.width = 34.9921875;\n const pos = setBranchPosition(\"main\", 0, 0, bbox, true);\n expect(pos).toBe(107.49609375);\n expect(branchPos.get(\"main\")).toEqual({ pos: 0, index: 0 });\n bbox.width = 56.421875;\n const posNext = setBranchPosition(\"develop\", pos, 1, bbox, true);\n expect(posNext).toBe(225.70703125);\n expect(branchPos.get(\"develop\")).toEqual({ pos, index: 1 });\n });\n });\n describe(\"commitPosition\", () => {\n const commits = /* @__PURE__ */ new Map([\n [\n \"commitZero\",\n {\n id: \"ZERO\",\n message: \"\",\n seq: 0,\n type: commitType.NORMAL,\n tags: [],\n parents: [],\n branch: \"main\"\n }\n ],\n [\n \"commitA\",\n {\n id: \"A\",\n message: \"\",\n seq: 1,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"ZERO\"],\n branch: \"feature\"\n }\n ],\n [\n \"commitB\",\n {\n id: \"B\",\n message: \"\",\n seq: 2,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"A\"],\n branch: \"feature\"\n }\n ],\n [\n \"commitM\",\n {\n id: \"M\",\n message: \"merged branch feature into main\",\n seq: 3,\n type: commitType.MERGE,\n tags: [],\n parents: [\"ZERO\", \"B\"],\n branch: \"main\",\n customId: true\n }\n ],\n [\n \"commitC\",\n {\n id: \"C\",\n message: \"\",\n seq: 4,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"ZERO\"],\n branch: \"release\"\n }\n ],\n [\n \"commit5_8928ea0\",\n {\n id: \"5-8928ea0\",\n message: \"cherry-picked [object Object] into release\",\n seq: 5,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: [\"C\", \"M\"],\n branch: \"release\"\n }\n ],\n [\n \"commitD\",\n {\n id: \"D\",\n message: \"\",\n seq: 6,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"5-8928ea0\"],\n branch: \"release\"\n }\n ],\n [\n \"commit7_ed848ba\",\n {\n id: \"7-ed848ba\",\n message: \"cherry-picked [object Object] into release\",\n seq: 7,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: [\"D\", \"M\"],\n branch: \"release\"\n }\n ]\n ]);\n let pos = 0;\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"feature\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"release\", { pos: 224.03515625, index: 2 });\n describe(\"TB\", () => {\n pos = 30;\n dir = \"TB\";\n const expectedCommitPositionTB = /* @__PURE__ */ new Map([\n [\"commitZero\", { x: 0, y: 40, posWithOffset: 40 }],\n [\"commitA\", { x: 107.49609375, y: 90, posWithOffset: 90 }],\n [\"commitB\", { x: 107.49609375, y: 140, posWithOffset: 140 }],\n [\"commitM\", { x: 0, y: 190, posWithOffset: 190 }],\n [\"commitC\", { x: 224.03515625, y: 240, posWithOffset: 240 }],\n [\"commit5_8928ea0\", { x: 224.03515625, y: 290, posWithOffset: 290 }],\n [\"commitD\", { x: 224.03515625, y: 340, posWithOffset: 340 }],\n [\"commit7_ed848ba\", { x: 224.03515625, y: 390, posWithOffset: 390 }]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit2, pos, false);\n expect(position).toEqual(expectedCommitPositionTB.get(key));\n pos += 50;\n });\n });\n });\n describe(\"LR\", () => {\n let pos2 = 30;\n dir = \"LR\";\n const expectedCommitPositionLR = /* @__PURE__ */ new Map([\n [\"commitZero\", { x: 0, y: 40, posWithOffset: 40 }],\n [\"commitA\", { x: 107.49609375, y: 90, posWithOffset: 90 }],\n [\"commitB\", { x: 107.49609375, y: 140, posWithOffset: 140 }],\n [\"commitM\", { x: 0, y: 190, posWithOffset: 190 }],\n [\"commitC\", { x: 224.03515625, y: 240, posWithOffset: 240 }],\n [\"commit5_8928ea0\", { x: 224.03515625, y: 290, posWithOffset: 290 }],\n [\"commitD\", { x: 224.03515625, y: 340, posWithOffset: 340 }],\n [\"commit7_ed848ba\", { x: 224.03515625, y: 390, posWithOffset: 390 }]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit2, pos2, false);\n expect(position).toEqual(expectedCommitPositionLR.get(key));\n pos2 += 50;\n });\n });\n });\n describe(\"getCommitClassType\", () => {\n const expectedCommitClassType = /* @__PURE__ */ new Map([\n [\"commitZero\", \"commit-normal\"],\n [\"commitA\", \"commit-normal\"],\n [\"commitB\", \"commit-normal\"],\n [\"commitM\", \"commit-merge\"],\n [\"commitC\", \"commit-normal\"],\n [\"commit5_8928ea0\", \"commit-cherry-pick\"],\n [\"commitD\", \"commit-normal\"],\n [\"commit7_ed848ba\", \"commit-cherry-pick\"]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct class type for commit ${key}`, () => {\n const classType = getCommitClassType(commit2);\n expect(classType).toBe(expectedCommitClassType.get(key));\n });\n });\n });\n });\n describe(\"building BT parallel commit diagram\", () => {\n const commits = /* @__PURE__ */ new Map([\n [\n \"1-abcdefg\",\n {\n id: \"1-abcdefg\",\n message: \"\",\n seq: 0,\n type: 0,\n tags: [],\n parents: [],\n branch: \"main\"\n }\n ],\n [\n \"2-abcdefg\",\n {\n id: \"2-abcdefg\",\n message: \"\",\n seq: 1,\n type: 0,\n tags: [],\n parents: [\"1-abcdefg\"],\n branch: \"main\"\n }\n ],\n [\n \"3-abcdefg\",\n {\n id: \"3-abcdefg\",\n message: \"\",\n seq: 2,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"develop\"\n }\n ],\n [\n \"4-abcdefg\",\n {\n id: \"4-abcdefg\",\n message: \"\",\n seq: 3,\n type: 0,\n tags: [],\n parents: [\"3-abcdefg\"],\n branch: \"develop\"\n }\n ],\n [\n \"5-abcdefg\",\n {\n id: \"5-abcdefg\",\n message: \"\",\n seq: 4,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"feature\"\n }\n ],\n [\n \"6-abcdefg\",\n {\n id: \"6-abcdefg\",\n message: \"\",\n seq: 5,\n type: 0,\n tags: [],\n parents: [\"5-abcdefg\"],\n branch: \"feature\"\n }\n ],\n [\n \"7-abcdefg\",\n {\n id: \"7-abcdefg\",\n message: \"\",\n seq: 6,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"main\"\n }\n ],\n [\n \"8-abcdefg\",\n {\n id: \"8-abcdefg\",\n message: \"\",\n seq: 7,\n type: 0,\n tags: [],\n parents: [\"7-abcdefg\"],\n branch: \"main\"\n }\n ]\n ]);\n const expectedCommitPosition = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", { x: 0, y: 40 }],\n [\"2-abcdefg\", { x: 0, y: 90 }],\n [\"3-abcdefg\", { x: 107.49609375, y: 140 }],\n [\"4-abcdefg\", { x: 107.49609375, y: 190 }],\n [\"5-abcdefg\", { x: 225.70703125, y: 140 }],\n [\"6-abcdefg\", { x: 225.70703125, y: 190 }],\n [\"7-abcdefg\", { x: 0, y: 140 }],\n [\"8-abcdefg\", { x: 0, y: 190 }]\n ]);\n const expectedCommitPositionAfterParallel = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", { x: 0, y: 210 }],\n [\"2-abcdefg\", { x: 0, y: 160 }],\n [\"3-abcdefg\", { x: 107.49609375, y: 110 }],\n [\"4-abcdefg\", { x: 107.49609375, y: 60 }],\n [\"5-abcdefg\", { x: 225.70703125, y: 110 }],\n [\"6-abcdefg\", { x: 225.70703125, y: 60 }],\n [\"7-abcdefg\", { x: 0, y: 110 }],\n [\"8-abcdefg\", { x: 0, y: 60 }]\n ]);\n const expectedCommitCurrentPosition = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", 30],\n [\"2-abcdefg\", 80],\n [\"3-abcdefg\", 130],\n [\"4-abcdefg\", 180],\n [\"5-abcdefg\", 130],\n [\"6-abcdefg\", 180],\n [\"7-abcdefg\", 130],\n [\"8-abcdefg\", 180]\n ]);\n const sortedKeys = [...expectedCommitPosition.keys()];\n it(\"should get the correct commit position and current position\", () => {\n dir = \"BT\";\n let curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"develop\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"feature\", { pos: 225.70703125, index: 2 });\n commits.forEach((commit2, key) => {\n if (commit2.parents.length > 0) {\n curPos = calculateCommitPosition(commit2);\n }\n const position = setCommitPosition(commit2, curPos);\n expect(position).toEqual(expectedCommitPosition.get(key));\n expect(curPos).toEqual(expectedCommitCurrentPosition.get(key));\n });\n });\n it(\"should get the correct commit position after parallel commits\", () => {\n commitPos.clear();\n branchPos.clear();\n dir = \"BT\";\n const curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"develop\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"feature\", { pos: 225.70703125, index: 2 });\n setParallelBTPos(sortedKeys, commits, curPos);\n sortedKeys.forEach((commit2) => {\n const position = commitPos.get(commit2);\n expect(position).toEqual(expectedCommitPositionAfterParallel.get(commit2));\n });\n });\n });\n it(\"add\", () => {\n commitPos.set(\"parent1\", { x: 1, y: 1 });\n commitPos.set(\"parent2\", { x: 2, y: 2 });\n commitPos.set(\"parent3\", { x: 3, y: 3 });\n dir = \"LR\";\n const parents = [\"parent1\", \"parent2\", \"parent3\"];\n const closestParent = findClosestParent(parents);\n expect(closestParent).toBe(\"parent3\");\n commitPos.clear();\n });\n}\n\n// src/diagrams/git/styles.js\nvar GIT_NAMED_COLOR_COUNT = 8;\nvar REDUX_GEOMETRY_THEMES2 = /* @__PURE__ */ new Set([\"redux\", \"redux-dark\", \"redux-color\", \"redux-dark-color\"]);\nvar COLOR_THEMES2 = /* @__PURE__ */ new Set([\"redux-color\", \"redux-dark-color\"]);\nvar NEO_THEMES = /* @__PURE__ */ new Set([\"neo\", \"neo-dark\"]);\nvar DARK_THEMES2 = /* @__PURE__ */ new Set([\"dark\", \"redux-dark\", \"redux-dark-color\", \"neo-dark\"]);\nvar NEO_COLOR_GEN_THEMES = /* @__PURE__ */ new Set([\n \"redux\",\n \"redux-dark\",\n \"redux-color\",\n \"redux-dark-color\",\n \"neo\",\n \"neo-dark\"\n]);\nvar genGitGraphGradient = /* @__PURE__ */ __name((options) => {\n const { svgId } = options;\n let sections = \"\";\n if (options.useGradient && svgId) {\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n sections += `\n .label${i} { fill: ${options.mainBkg}; stroke: url(${svgId}-gradient); stroke-width: ${options.strokeWidth};}\n `;\n }\n }\n return sections;\n}, \"genGitGraphGradient\");\nvar genColor = /* @__PURE__ */ __name((options) => {\n const config = getConfig();\n const { theme, themeVariables } = config;\n const { borderColorArray } = themeVariables;\n const useReduxGeometry = REDUX_GEOMETRY_THEMES2.has(theme);\n if (NEO_THEMES.has(theme)) {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n if (i === 0) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder};}\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.nodeBorder}; }\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n .commit-cherry-pick${i} { stroke: ${options.nodeBorder}; }\n ${genGitGraphGradient(options)}`;\n } else {\n const ci = i % GIT_NAMED_COLOR_COUNT;\n sections += `\n .branch-label${i} { fill: ${options[\"gitBranchLabel\" + ci]}; }\n .commit${i} { stroke: ${options[\"git\" + ci]}; fill: ${options[\"git\" + ci]}; }\n .commit-highlight${i} { stroke: ${options[\"gitInv\" + ci]}; fill: ${options[\"gitInv\" + ci]}; }\n .arrow${i} { stroke: ${options[\"git\" + ci]}; }\n `;\n }\n }\n return sections;\n } else if (!COLOR_THEMES2.has(theme)) {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.nodeBorder}; }\n .label${i} { fill: ${options.mainBkg}; stroke: ${options.nodeBorder}; stroke-width: ${options.strokeWidth}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"}}\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n .commit-cherry-pick${i} { stroke: ${options.nodeBorder}; }\n `;\n }\n return sections;\n } else {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n if (i === 0) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.mainBkg}; }\n .label${i} { fill: ${options.mainBkg}; stroke: ${options.nodeBorder}; stroke-width: ${options.strokeWidth}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n `;\n } else {\n const colorIndex = i % borderColorArray.length;\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .commit${i} { stroke: ${borderColorArray[colorIndex]}; fill: ${borderColorArray[colorIndex]}; }\n .commit-highlight${i} { stroke: ${borderColorArray[colorIndex]}; fill: ${borderColorArray[colorIndex]}; }\n .label${i} { fill: ${DARK_THEMES2.has(theme) ? options.mainBkg : borderColorArray[colorIndex]}; stroke: ${borderColorArray[colorIndex]}; stroke-width: ${options.strokeWidth}; }\n .arrow${i} { stroke: ${borderColorArray[colorIndex]}; }\n `;\n }\n }\n return sections;\n }\n}, \"genColor\");\nvar normalTheme = /* @__PURE__ */ __name((options) => {\n return `${Array.from({ length: options.THEME_COLOR_LIMIT }, (_, i) => i).map((i) => {\n const ci = i % GIT_NAMED_COLOR_COUNT;\n return `\n .branch-label${i} { fill: ${options[\"gitBranchLabel\" + ci]}; }\n .commit${i} { stroke: ${options[\"git\" + ci]}; fill: ${options[\"git\" + ci]}; }\n .commit-highlight${i} { stroke: ${options[\"gitInv\" + ci]}; fill: ${options[\"gitInv\" + ci]}; }\n .label${i} { fill: ${options[\"git\" + ci]}; }\n .arrow${i} { stroke: ${options[\"git\" + ci]}; }\n `;\n }).join(\"\\n\")}`;\n}, \"normalTheme\");\nvar getStyles = /* @__PURE__ */ __name((options) => {\n const config = getConfig();\n const { theme } = config;\n const useNeoColorGen = NEO_COLOR_GEN_THEMES.has(theme);\n return `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n \n ${useNeoColorGen ? genColor(options) : normalTheme(options)}\n\n .branch {\n stroke-width: ${options.strokeWidth};\n stroke: ${options.commitLineColor ?? options.lineColor};\n stroke-dasharray: ${useNeoColorGen ? \"4 2\" : \"2\"};\n }\n .commit-label { font-size: ${options.commitLabelFontSize}; fill: ${useNeoColorGen ? options.nodeBorder : options.commitLabelColor}; ${useNeoColorGen ? `font-weight:${options.noteFontWeight};` : \"\"}}\n .commit-label-bkg { font-size: ${options.commitLabelFontSize}; fill: ${useNeoColorGen ? \"transparent\" : options.commitLabelBackground}; opacity: ${useNeoColorGen ? \"\" : 0.5}; }\n .tag-label { font-size: ${options.tagLabelFontSize}; fill: ${options.tagLabelColor};}\n .tag-label-bkg { fill: ${useNeoColorGen ? options.mainBkg : options.tagLabelBackground}; stroke: ${useNeoColorGen ? options.nodeBorder : options.tagLabelBorder}; ${useNeoColorGen ? `filter:${options.dropShadow}` : \"\"} }\n .tag-hole { fill: ${options.textColor}; }\n\n .commit-merge {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n }\n .commit-reverse {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n stroke-width: ${useNeoColorGen ? options.strokeWidth : 3};\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n }\n\n .arrow {\n /* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */\n stroke-width: ${REDUX_GEOMETRY_THEMES2.has(theme) ? options.strokeWidth : 8};\n stroke-linecap: round;\n fill: none\n }\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n`;\n}, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/git/gitGraphDiagram.ts\nvar diagram = {\n parser,\n db,\n renderer: gitGraphRenderer_default,\n styles: styles_default\n};\nexport {\n diagram\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=typeof global==`object`&&global&&global.Object===Object&&global,t=typeof self==`object`&&self&&self.Object===Object&&self,n=e||t||Function(`return this`)(),r=n.Symbol,i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=r?r.toStringTag:void 0;function c(e){var t=a.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch{}var i=o.call(e);return r&&(t?e[s]=n:delete e[s]),i}var l=Object.prototype.toString;function u(e){return l.call(e)}var d=`[object Null]`,f=`[object Undefined]`,p=r?r.toStringTag:void 0;function m(e){return e==null?e===void 0?f:d:p&&p in Object(e)?c(e):u(e)}function h(e){return typeof e==`object`&&!!e}var g=`[object Symbol]`;function _(e){return typeof e==`symbol`||h(e)&&m(e)==g}function v(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}var y=Array.isArray,ee=1/0,te=r?r.prototype:void 0,ne=te?te.toString:void 0;function re(e){if(typeof e==`string`)return e;if(y(e))return v(e,re)+``;if(_(e))return ne?ne.call(e):``;var t=e+``;return t==`0`&&1/e==-ee?`-0`:t}function b(e){var t=typeof e;return e!=null&&(t==`object`||t==`function`)}function x(e){return e}var ie=`[object AsyncFunction]`,ae=`[object Function]`,oe=`[object GeneratorFunction]`,se=`[object Proxy]`;function S(e){if(!b(e))return!1;var t=m(e);return t==ae||t==oe||t==ie||t==se}var ce=n[`__core-js_shared__`],le=function(){var e=/[^.]+$/.exec(ce&&ce.keys&&ce.keys.IE_PROTO||``);return e?`Symbol(src)_1.`+e:``}();function ue(e){return!!le&&le in e}var de=Function.prototype.toString;function C(e){if(e!=null){try{return de.call(e)}catch{}try{return e+``}catch{}}return``}var fe=/[\\^$.*+?()[\]{}|]/g,pe=/^\[object .+?Constructor\]$/,me=Function.prototype,he=Object.prototype,ge=me.toString,_e=he.hasOwnProperty,ve=RegExp(`^`+ge.call(_e).replace(fe,`\\$&`).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,`$1.*?`)+`$`);function ye(e){return!b(e)||ue(e)?!1:(S(e)?ve:pe).test(C(e))}function be(e,t){return e?.[t]}function w(e,t){var n=be(e,t);return ye(n)?n:void 0}var xe=w(n,`WeakMap`);function Se(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Ce(){}var we=800,Te=16,Ee=Date.now;function De(e){var t=0,n=0;return function(){var r=Ee(),i=Te-(r-n);if(n=r,i>0){if(++t>=we)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function T(e){return function(){return e}}var Oe=function(){try{var e=w(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),ke=De(Oe?function(e,t){return Oe(e,`toString`,{configurable:!0,enumerable:!1,value:T(t),writable:!0})}:x);function Ae(e,t){for(var n=-1,r=e==null?0:e.length;++n<r&&t(e[n],n,e)!==!1;);return e}function je(e,t,n,r){for(var i=e.length,a=n+(r?1:-1);r?a--:++a<i;)if(t(e[a],a,e))return a;return-1}function Me(e){return e!==e}function Ne(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}function Pe(e,t,n){return t===t?Ne(e,t,n):je(e,Me,n)}function Fe(e,t){return!!(e!=null&&e.length)&&Pe(e,t,0)>-1}var Ie=9007199254740991,Le=/^(?:0|[1-9]\d*)$/;function Re(e,t){var n=typeof e;return t??=Ie,!!t&&(n==`number`||n!=`symbol`&&Le.test(e))&&e>-1&&e%1==0&&e<t}function ze(e,t){return e===t||e!==e&&t!==t}var Be=Math.max;function Ve(e,t,n){return t=Be(t===void 0?e.length-1:t,0),function(){for(var r=arguments,i=-1,a=Be(r.length-t,0),o=Array(a);++i<a;)o[i]=r[t+i];i=-1;for(var s=Array(t+1);++i<t;)s[i]=r[i];return s[t]=n(o),Se(e,this,s)}}function He(e,t){return ke(Ve(e,t,x),e+``)}var Ue=9007199254740991;function We(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=Ue}function E(e){return e!=null&&We(e.length)&&!S(e)}var Ge=Object.prototype;function Ke(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||Ge)}function qe(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var Je=`[object Arguments]`;function Ye(e){return h(e)&&m(e)==Je}var Xe=Object.prototype,Ze=Xe.hasOwnProperty,Qe=Xe.propertyIsEnumerable,D=Ye(function(){return arguments}())?Ye:function(e){return h(e)&&Ze.call(e,`callee`)&&!Qe.call(e,`callee`)};function $e(){return!1}var et=typeof exports==`object`&&exports&&!exports.nodeType&&exports,tt=et&&typeof module==`object`&&module&&!module.nodeType&&module,nt=tt&&tt.exports===et?n.Buffer:void 0,O=(nt?nt.isBuffer:void 0)||$e,rt=`[object Arguments]`,it=`[object Array]`,at=`[object Boolean]`,ot=`[object Date]`,st=`[object Error]`,ct=`[object Function]`,lt=`[object Map]`,ut=`[object Number]`,dt=`[object Object]`,ft=`[object RegExp]`,pt=`[object Set]`,mt=`[object String]`,ht=`[object WeakMap]`,gt=`[object ArrayBuffer]`,_t=`[object DataView]`,vt=`[object Float32Array]`,yt=`[object Float64Array]`,bt=`[object Int8Array]`,xt=`[object Int16Array]`,St=`[object Int32Array]`,Ct=`[object Uint8Array]`,wt=`[object Uint8ClampedArray]`,Tt=`[object Uint16Array]`,Et=`[object Uint32Array]`,k={};k[vt]=k[yt]=k[bt]=k[xt]=k[St]=k[Ct]=k[wt]=k[Tt]=k[Et]=!0,k[rt]=k[it]=k[gt]=k[at]=k[_t]=k[ot]=k[st]=k[ct]=k[lt]=k[ut]=k[dt]=k[ft]=k[pt]=k[mt]=k[ht]=!1;function Dt(e){return h(e)&&We(e.length)&&!!k[m(e)]}function Ot(e){return function(t){return e(t)}}var kt=typeof exports==`object`&&exports&&!exports.nodeType&&exports,A=kt&&typeof module==`object`&&module&&!module.nodeType&&module,At=A&&A.exports===kt&&e.process,jt=function(){try{return A&&A.require&&A.require(`util`).types||At&&At.binding&&At.binding(`util`)}catch{}}(),Mt=jt&&jt.isTypedArray,j=Mt?Ot(Mt):Dt,Nt=Object.prototype.hasOwnProperty;function Pt(e,t){var n=y(e),r=!n&&D(e),i=!n&&!r&&O(e),a=!n&&!r&&!i&&j(e),o=n||r||i||a,s=o?qe(e.length,String):[],c=s.length;for(var l in e)(t||Nt.call(e,l))&&!(o&&(l==`length`||i&&(l==`offset`||l==`parent`)||a&&(l==`buffer`||l==`byteLength`||l==`byteOffset`)||Re(l,c)))&&s.push(l);return s}function Ft(e,t){return function(n){return e(t(n))}}var It=Ft(Object.keys,Object),Lt=Object.prototype.hasOwnProperty;function Rt(e){if(!Ke(e))return It(e);var t=[];for(var n in Object(e))Lt.call(e,n)&&n!=`constructor`&&t.push(n);return t}function M(e){return E(e)?Pt(e):Rt(e)}var zt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Bt=/^\w*$/;function Vt(e,t){if(y(e))return!1;var n=typeof e;return n==`number`||n==`symbol`||n==`boolean`||e==null||_(e)?!0:Bt.test(e)||!zt.test(e)||t!=null&&e in Object(t)}var N=w(Object,`create`);function Ht(){this.__data__=N?N(null):{},this.size=0}function Ut(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=+!!t,t}var Wt=`__lodash_hash_undefined__`,Gt=Object.prototype.hasOwnProperty;function Kt(e){var t=this.__data__;if(N){var n=t[e];return n===Wt?void 0:n}return Gt.call(t,e)?t[e]:void 0}var qt=Object.prototype.hasOwnProperty;function Jt(e){var t=this.__data__;return N?t[e]!==void 0:qt.call(t,e)}var Yt=`__lodash_hash_undefined__`;function Xt(e,t){var n=this.__data__;return this.size+=+!this.has(e),n[e]=N&&t===void 0?Yt:t,this}function P(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}P.prototype.clear=Ht,P.prototype.delete=Ut,P.prototype.get=Kt,P.prototype.has=Jt,P.prototype.set=Xt;function Zt(){this.__data__=[],this.size=0}function F(e,t){for(var n=e.length;n--;)if(ze(e[n][0],t))return n;return-1}var Qt=Array.prototype.splice;function $t(e){var t=this.__data__,n=F(t,e);return n<0?!1:(n==t.length-1?t.pop():Qt.call(t,n,1),--this.size,!0)}function en(e){var t=this.__data__,n=F(t,e);return n<0?void 0:t[n][1]}function tn(e){return F(this.__data__,e)>-1}function nn(e,t){var n=this.__data__,r=F(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function I(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}I.prototype.clear=Zt,I.prototype.delete=$t,I.prototype.get=en,I.prototype.has=tn,I.prototype.set=nn;var L=w(n,`Map`);function rn(){this.size=0,this.__data__={hash:new P,map:new(L||I),string:new P}}function an(e){var t=typeof e;return t==`string`||t==`number`||t==`symbol`||t==`boolean`?e!==`__proto__`:e===null}function R(e,t){var n=e.__data__;return an(t)?n[typeof t==`string`?`string`:`hash`]:n.map}function on(e){var t=R(this,e).delete(e);return this.size-=+!!t,t}function sn(e){return R(this,e).get(e)}function cn(e){return R(this,e).has(e)}function ln(e,t){var n=R(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}function z(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}z.prototype.clear=rn,z.prototype.delete=on,z.prototype.get=sn,z.prototype.has=cn,z.prototype.set=ln;var un=`Expected a function`;function dn(e,t){if(typeof e!=`function`||t!=null&&typeof t!=`function`)throw TypeError(un);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(dn.Cache||z),n}dn.Cache=z;var fn=500;function pn(e){var t=dn(e,function(e){return n.size===fn&&n.clear(),e}),n=t.cache;return t}var mn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,hn=/\\(\\)?/g,gn=pn(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace(mn,function(e,n,r,i){t.push(r?i.replace(hn,`$1`):n||e)}),t});function _n(e){return e==null?``:re(e)}function vn(e,t){return y(e)?e:Vt(e,t)?[e]:gn(_n(e))}var yn=1/0;function B(e){if(typeof e==`string`||_(e))return e;var t=e+``;return t==`0`&&1/e==-yn?`-0`:t}function bn(e,t){t=vn(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[B(t[n++])];return n&&n==r?e:void 0}function xn(e,t,n){var r=e==null?void 0:bn(e,t);return r===void 0?n:r}function Sn(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}var Cn=r?r.isConcatSpreadable:void 0;function wn(e){return y(e)||D(e)||!!(Cn&&e&&e[Cn])}function Tn(e,t,n,r,i){var a=-1,o=e.length;for(n||=wn,i||=[];++a<o;){var s=e[a];t>0&&n(s)?t>1?Tn(s,t-1,n,r,i):Sn(i,s):r||(i[i.length]=s)}return i}function En(e,t,n,r){var i=-1,a=e==null?0:e.length;for(r&&a&&(n=e[++i]);++i<a;)n=t(n,e[i],i,e);return n}function Dn(){this.__data__=new I,this.size=0}function On(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function kn(e){return this.__data__.get(e)}function An(e){return this.__data__.has(e)}var jn=200;function Mn(e,t){var n=this.__data__;if(n instanceof I){var r=n.__data__;if(!L||r.length<jn-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new z(r)}return n.set(e,t),this.size=n.size,this}function V(e){var t=this.__data__=new I(e);this.size=t.size}V.prototype.clear=Dn,V.prototype.delete=On,V.prototype.get=kn,V.prototype.has=An,V.prototype.set=Mn;function Nn(e,t){for(var n=-1,r=e==null?0:e.length,i=0,a=[];++n<r;){var o=e[n];t(o,n,e)&&(a[i++]=o)}return a}function Pn(){return[]}var Fn=Object.prototype.propertyIsEnumerable,In=Object.getOwnPropertySymbols,Ln=In?function(e){return e==null?[]:(e=Object(e),Nn(In(e),function(t){return Fn.call(e,t)}))}:Pn;function Rn(e,t,n){var r=t(e);return y(e)?r:Sn(r,n(e))}function zn(e){return Rn(e,M,Ln)}var Bn=w(n,`DataView`),Vn=w(n,`Promise`),H=w(n,`Set`),Hn=`[object Map]`,Un=`[object Object]`,Wn=`[object Promise]`,Gn=`[object Set]`,Kn=`[object WeakMap]`,qn=`[object DataView]`,Jn=C(Bn),Yn=C(L),Xn=C(Vn),Zn=C(H),Qn=C(xe),U=m;(Bn&&U(new Bn(new ArrayBuffer(1)))!=qn||L&&U(new L)!=Hn||Vn&&U(Vn.resolve())!=Wn||H&&U(new H)!=Gn||xe&&U(new xe)!=Kn)&&(U=function(e){var t=m(e),n=t==Un?e.constructor:void 0,r=n?C(n):``;if(r)switch(r){case Jn:return qn;case Yn:return Hn;case Xn:return Wn;case Zn:return Gn;case Qn:return Kn}return t});var W=U,$n=n.Uint8Array,er=`__lodash_hash_undefined__`;function tr(e){return this.__data__.set(e,er),this}function nr(e){return this.__data__.has(e)}function G(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new z;++t<n;)this.add(e[t])}G.prototype.add=G.prototype.push=tr,G.prototype.has=nr;function rr(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}function ir(e,t){return e.has(t)}var ar=1,or=2;function sr(e,t,n,r,i,a){var o=n&ar,s=e.length,c=t.length;if(s!=c&&!(o&&c>s))return!1;var l=a.get(e),u=a.get(t);if(l&&u)return l==t&&u==e;var d=-1,f=!0,p=n&or?new G:void 0;for(a.set(e,t),a.set(t,e);++d<s;){var m=e[d],h=t[d];if(r)var g=o?r(h,m,d,t,e,a):r(m,h,d,e,t,a);if(g!==void 0){if(g)continue;f=!1;break}if(p){if(!rr(t,function(e,t){if(!ir(p,t)&&(m===e||i(m,e,n,r,a)))return p.push(t)})){f=!1;break}}else if(!(m===h||i(m,h,n,r,a))){f=!1;break}}return a.delete(e),a.delete(t),f}function cr(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}function lr(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var ur=1,dr=2,fr=`[object Boolean]`,pr=`[object Date]`,mr=`[object Error]`,hr=`[object Map]`,gr=`[object Number]`,_r=`[object RegExp]`,vr=`[object Set]`,yr=`[object String]`,br=`[object Symbol]`,xr=`[object ArrayBuffer]`,Sr=`[object DataView]`,Cr=r?r.prototype:void 0,wr=Cr?Cr.valueOf:void 0;function Tr(e,t,n,r,i,a,o){switch(n){case Sr:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case xr:return!(e.byteLength!=t.byteLength||!a(new $n(e),new $n(t)));case fr:case pr:case gr:return ze(+e,+t);case mr:return e.name==t.name&&e.message==t.message;case _r:case yr:return e==t+``;case hr:var s=cr;case vr:var c=r&ur;if(s||=lr,e.size!=t.size&&!c)return!1;var l=o.get(e);if(l)return l==t;r|=dr,o.set(e,t);var u=sr(s(e),s(t),r,i,a,o);return o.delete(e),u;case br:if(wr)return wr.call(e)==wr.call(t)}return!1}var Er=1,Dr=Object.prototype.hasOwnProperty;function Or(e,t,n,r,i,a){var o=n&Er,s=zn(e),c=s.length;if(c!=zn(t).length&&!o)return!1;for(var l=c;l--;){var u=s[l];if(!(o?u in t:Dr.call(t,u)))return!1}var d=a.get(e),f=a.get(t);if(d&&f)return d==t&&f==e;var p=!0;a.set(e,t),a.set(t,e);for(var m=o;++l<c;){u=s[l];var h=e[u],g=t[u];if(r)var _=o?r(g,h,u,t,e,a):r(h,g,u,e,t,a);if(!(_===void 0?h===g||i(h,g,n,r,a):_)){p=!1;break}m||=u==`constructor`}if(p&&!m){var v=e.constructor,y=t.constructor;v!=y&&`constructor`in e&&`constructor`in t&&!(typeof v==`function`&&v instanceof v&&typeof y==`function`&&y instanceof y)&&(p=!1)}return a.delete(e),a.delete(t),p}var kr=1,Ar=`[object Arguments]`,jr=`[object Array]`,K=`[object Object]`,Mr=Object.prototype.hasOwnProperty;function Nr(e,t,n,r,i,a){var o=y(e),s=y(t),c=o?jr:W(e),l=s?jr:W(t);c=c==Ar?K:c,l=l==Ar?K:l;var u=c==K,d=l==K,f=c==l;if(f&&O(e)){if(!O(t))return!1;o=!0,u=!1}if(f&&!u)return a||=new V,o||j(e)?sr(e,t,n,r,i,a):Tr(e,t,c,n,r,i,a);if(!(n&kr)){var p=u&&Mr.call(e,`__wrapped__`),m=d&&Mr.call(t,`__wrapped__`);if(p||m){var h=p?e.value():e,g=m?t.value():t;return a||=new V,i(h,g,n,r,a)}}return f?(a||=new V,Or(e,t,n,r,i,a)):!1}function Pr(e,t,n,r,i){return e===t?!0:e==null||t==null||!h(e)&&!h(t)?e!==e&&t!==t:Nr(e,t,n,r,Pr,i)}var Fr=1,Ir=2;function Lr(e,t,n,r){var i=n.length,a=i,o=!r;if(e==null)return!a;for(e=Object(e);i--;){var s=n[i];if(o&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++i<a;){s=n[i];var c=s[0],l=e[c],u=s[1];if(o&&s[2]){if(l===void 0&&!(c in e))return!1}else{var d=new V;if(r)var f=r(l,u,c,e,t,d);if(!(f===void 0?Pr(u,l,Fr|Ir,r,d):f))return!1}}return!0}function Rr(e){return e===e&&!b(e)}function zr(e){for(var t=M(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,Rr(i)]}return t}function Br(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}function Vr(e){var t=zr(e);return t.length==1&&t[0][2]?Br(t[0][0],t[0][1]):function(n){return n===e||Lr(n,e,t)}}function Hr(e,t){return e!=null&&t in Object(e)}function Ur(e,t,n){t=vn(t,e);for(var r=-1,i=t.length,a=!1;++r<i;){var o=B(t[r]);if(!(a=e!=null&&n(e,o)))break;e=e[o]}return a||++r!=i?a:(i=e==null?0:e.length,!!i&&We(i)&&Re(o,i)&&(y(e)||D(e)))}function Wr(e,t){return e!=null&&Ur(e,t,Hr)}var Gr=1,Kr=2;function qr(e,t){return Vt(e)&&Rr(t)?Br(B(e),t):function(n){var r=xn(n,e);return r===void 0&&r===t?Wr(n,e):Pr(t,r,Gr|Kr)}}function Jr(e){return function(t){return t?.[e]}}function Yr(e){return function(t){return bn(t,e)}}function Xr(e){return Vt(e)?Jr(B(e)):Yr(e)}function Zr(e){return typeof e==`function`?e:e==null?x:typeof e==`object`?y(e)?qr(e[0],e[1]):Vr(e):Xr(e)}function Qr(e){return function(t,n,r){for(var i=-1,a=Object(t),o=r(t),s=o.length;s--;){var c=o[e?s:++i];if(n(a[c],c,a)===!1)break}return t}}var $r=Qr();function ei(e,t){return e&&$r(e,t,M)}function ti(e,t){return function(n,r){if(n==null)return n;if(!E(n))return e(n,r);for(var i=n.length,a=t?i:-1,o=Object(n);(t?a--:++a<i)&&r(o[a],a,o)!==!1;);return n}}var q=ti(ei);function ni(e){return h(e)&&E(e)}function ri(e,t,n){for(var r=-1,i=e==null?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}function ii(e){return typeof e==`function`?e:x}function J(e,t){return(y(e)?Ae:q)(e,ii(t))}function ai(e,t){var n=[];return q(e,function(e,r,i){t(e,r,i)&&n.push(e)}),n}function Y(e,t){return(y(e)?Nn:ai)(e,Zr(t,3))}function oi(e,t){return v(t,function(t){return e[t]})}function X(e){return e==null?[]:oi(e,M(e))}var si=`[object Map]`,ci=`[object Set]`,li=Object.prototype.hasOwnProperty;function ui(e){if(e==null)return!0;if(E(e)&&(y(e)||typeof e==`string`||typeof e.splice==`function`||O(e)||j(e)||D(e)))return!e.length;var t=W(e);if(t==si||t==ci)return!e.size;if(Ke(e))return!Rt(e).length;for(var n in e)if(li.call(e,n))return!1;return!0}function Z(e){return e===void 0}function di(e,t,n,r,i){return i(e,function(e,i,a){n=r?(r=!1,e):t(n,e,i,a)}),n}function fi(e,t,n){var r=y(e)?En:di,i=arguments.length<3;return r(e,Zr(t,4),n,i,q)}var pi=H&&1/lr(new H([,-0]))[1]==1/0?function(e){return new H(e)}:Ce,mi=200;function hi(e,t,n){var r=-1,i=Fe,a=e.length,o=!0,s=[],c=s;if(n)o=!1,i=ri;else if(a>=mi){var l=t?null:pi(e);if(l)return lr(l);o=!1,i=ir,c=new G}else c=t?[]:s;outer:for(;++r<a;){var u=e[r],d=t?t(u):u;if(u=n||u!==0?u:0,o&&d===d){for(var f=c.length;f--;)if(c[f]===d)continue outer;t&&c.push(d),s.push(u)}else i(c,d,n)||(c!==s&&c.push(d),s.push(u))}return s}var gi=He(function(e){return hi(Tn(e,1,ni,!0))}),_i=`\0`,Q=`\0`,vi=``,yi=class{constructor(e={}){this._isDirected=Object.prototype.hasOwnProperty.call(e,`directed`)?e.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(e,`multigraph`)?e.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(e,`compound`)?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=T(void 0),this._defaultEdgeLabelFn=T(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[Q]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return S(e)||(e=T(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return M(this._nodes)}sources(){var e=this;return Y(this.nodes(),function(t){return ui(e._in[t])})}sinks(){var e=this;return Y(this.nodes(),function(t){return ui(e._out[t])})}setNodes(e,t){var n=arguments,r=this;return J(e,function(e){n.length>1?r.setNode(e,t):r.setNode(e)}),this}setNode(e,t){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=Q,this._children[e]={},this._children[Q][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var t=e=>this.removeEdge(this._edgeObjs[e]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],J(this.children(e),e=>{this.setParent(e)}),delete this._children[e]),J(M(this._in[e]),t),delete this._in[e],delete this._preds[e],J(M(this._out[e]),t),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,t){if(!this._isCompound)throw Error(`Cannot set parent in a non-compound graph`);if(Z(t))t=Q;else{t+=``;for(var n=t;!Z(n);n=this.parent(n))if(n===e)throw Error(`Setting `+t+` as parent of `+e+` would create a cycle`);this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var t=this._parent[e];if(t!==Q)return t}}children(e){if(Z(e)&&(e=Q),this._isCompound){var t=this._children[e];if(t)return M(t)}else if(e===Q)return this.nodes();else if(this.hasNode(e))return[]}predecessors(e){var t=this._preds[e];if(t)return M(t)}successors(e){var t=this._sucs[e];if(t)return M(t)}neighbors(e){var t=this.predecessors(e);if(t)return gi(t,this.successors(e))}isLeaf(e){return(this.isDirected()?this.successors(e):this.neighbors(e)).length===0}filterNodes(e){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var n=this;J(this._nodes,function(n,r){e(r)&&t.setNode(r,n)}),J(this._edgeObjs,function(e){t.hasNode(e.v)&&t.hasNode(e.w)&&t.setEdge(e,n.edge(e))});var r={};function i(e){var a=n.parent(e);return a===void 0||t.hasNode(a)?(r[e]=a,a):a in r?r[a]:i(a)}return this._isCompound&&J(t.nodes(),function(e){t.setParent(e,i(e))}),t}setDefaultEdgeLabel(e){return S(e)||(e=T(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return X(this._edgeObjs)}setPath(e,t){var n=this,r=arguments;return fi(e,function(e,i){return r.length>1?n.setEdge(e,i,t):n.setEdge(e,i),i}),this}setEdge(){var e,t,n,r,i=!1,a=arguments[0];typeof a==`object`&&a&&`v`in a?(e=a.v,t=a.w,n=a.name,arguments.length===2&&(r=arguments[1],i=!0)):(e=a,t=arguments[1],n=arguments[3],arguments.length>2&&(r=arguments[2],i=!0)),e=``+e,t=``+t,Z(n)||(n=``+n);var o=$(this._isDirected,e,t,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,o))return i&&(this._edgeLabels[o]=r),this;if(!Z(n)&&!this._isMultigraph)throw Error(`Cannot set a named edge when isMultigraph = false`);this.setNode(e),this.setNode(t),this._edgeLabels[o]=i?r:this._defaultEdgeLabelFn(e,t,n);var s=Si(this._isDirected,e,t,n);return e=s.v,t=s.w,Object.freeze(s),this._edgeObjs[o]=s,bi(this._preds[t],e),bi(this._sucs[e],t),this._in[t][o]=s,this._out[e][o]=s,this._edgeCount++,this}edge(e,t,n){var r=arguments.length===1?Ci(this._isDirected,arguments[0]):$(this._isDirected,e,t,n);return this._edgeLabels[r]}hasEdge(e,t,n){var r=arguments.length===1?Ci(this._isDirected,arguments[0]):$(this._isDirected,e,t,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,r)}removeEdge(e,t,n){var r=arguments.length===1?Ci(this._isDirected,arguments[0]):$(this._isDirected,e,t,n),i=this._edgeObjs[r];return i&&(e=i.v,t=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],xi(this._preds[t],e),xi(this._sucs[e],t),delete this._in[t][r],delete this._out[e][r],this._edgeCount--),this}inEdges(e,t){var n=this._in[e];if(n){var r=X(n);return t?Y(r,function(e){return e.v===t}):r}}outEdges(e,t){var n=this._out[e];if(n){var r=X(n);return t?Y(r,function(e){return e.w===t}):r}}nodeEdges(e,t){var n=this.inEdges(e,t);if(n)return n.concat(this.outEdges(e,t))}};yi.prototype._nodeCount=0,yi.prototype._edgeCount=0;function bi(e,t){e[t]?e[t]++:e[t]=1}function xi(e,t){--e[t]||delete e[t]}function $(e,t,n,r){var i=``+t,a=``+n;if(!e&&i>a){var o=i;i=a,a=o}return i+vi+a+vi+(Z(r)?_i:r)}function Si(e,t,n,r){var i=``+t,a=``+n;if(!e&&i>a){var o=i;i=a,a=o}var s={v:i,w:a};return r&&(s.name=r),s}function Ci(e,t){return $(e,t.v,t.w,t.name)}export{v as $,Rt as A,He as B,Tn as C,vn as D,B as E,Ot as F,Ae as G,ze as H,O as I,T as J,ke as K,D as L,Pt as M,j as N,_n as O,jt as P,y as Q,Ke as R,V as S,bn as T,Re as U,Ve as V,je as W,x as X,S as Y,b as Z,W as _,Y as a,Ln as b,ni as c,$r as d,_ as et,Zr as f,$n as g,Ur as h,X as i,n as it,Ft as j,M as k,q as l,Wr as m,fi as n,m as nt,J as o,Jr as p,Oe as q,Z as r,r as rt,ii as s,yi as t,h as tt,ei as u,zn as v,Sn as w,Pn as x,Rn as y,E as z};
|
|
2
|
+
//# sourceMappingURL=graphlib-B8gBHxth.js.map
|