{"version":3,"file":"gitGraphDiagram-21b66b97.js","sources":["../src/diagrams/git/parser/gitGraph.jison","../src/diagrams/git/gitGraphAst.js","../src/diagrams/git/gitGraphRenderer.js","../src/diagrams/git/styles.js","../src/diagrams/git/gitGraphDiagram.ts"],"sourcesContent":["/*\n * Parse following\n * gitGraph:\n * commit\n * commit\n * branch\n */\n%lex\n\n%x string\n%x options\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n%options case-insensitive\n\n\n%%\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n[\\}] { this.popState(); }\n[^\\}]* return \"acc_descr_multiline_value\";\n(\\r?\\n)+ /*{console.log('New line');return 'NL';}*/ return 'NL';\n\\#[^\\n]* /* skip comments */\n\\%%[^\\n]* /* skip comments */\n\"gitGraph\" return 'GG';\ncommit(?=\\s|$) return 'COMMIT';\n\"id:\" return 'COMMIT_ID';\n\"type:\" return 'COMMIT_TYPE';\n\"msg:\" return 'COMMIT_MSG';\n\"NORMAL\" return 'NORMAL';\n\"REVERSE\" return 'REVERSE';\n\"HIGHLIGHT\" return 'HIGHLIGHT';\n\"tag:\" return 'COMMIT_TAG';\nbranch(?=\\s|$) return 'BRANCH';\n\"order:\" return 'ORDER';\nmerge(?=\\s|$) return 'MERGE';\ncherry\\-pick(?=\\s|$) return 'CHERRY_PICK';\n// \"reset\" return 'RESET';\ncheckout(?=\\s|$) return 'CHECKOUT';\n\"LR\" return 'DIR';\n\"BT\" return 'DIR';\n\":\" return ':';\n\"^\" return 'CARET'\n\"options\"\\r?\\n this.begin(\"options\"); //\n[ \\r\\n\\t]+\"end\" this.popState(); // not used anymore in the renderer, fixed for backward compatibility\n[\\s\\S]+(?=[ \\r\\n\\t]+\"end\") return 'OPT'; //\n[\"][\"] return 'EMPTYSTR';\n[\"] this.begin(\"string\");\n[\"] this.popState();\n[^\"]* return 'STR';\n[0-9]+(?=\\s|$) return 'NUM';\n\\w([-\\./\\w]*[-\\w])? return 'ID'; // only a subset of https://git-scm.com/docs/git-check-ref-format\n<> return 'EOF';\n\\s+ /* skip all whitespace */ // lowest priority so we can use lookaheads in earlier regex\n\n/lex\n\n%left '^'\n\n%start start\n\n%% /* language grammar */\n\nstart\n : eol start\n | directive start\n | GG document EOF{ return $3; }\n | GG ':' document EOF{ return $3; }\n | GG DIR ':' document EOF {yy.setDirection($2); return $4;}\n ;\n\n\ndocument\n : /*empty*/\n | options body { yy.setOptions($1); $$ = $2}\n ;\n\noptions\n : options OPT {$1 +=$2; $$=$1}\n | NL\n ;\nbody\n : /*emmpty*/ {$$ = []}\n | body line {$1.push($2); $$=$1;}\n ;\nline\n : statement eol {$$ =$1}\n | NL\n ;\n\nstatement\n : commitStatement\n | mergeStatement\n | cherryPickStatement\n | acc_title acc_title_value { $$=$2.trim();yy.setAccTitle($$); }\n | acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); }\n | acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); } | section {yy.addSection($1.substr(8));$$=$1.substr(8);}\n | branchStatement\n | CHECKOUT ref {yy.checkout($2)}\n // | RESET reset_arg {yy.reset($2)}\n ;\nbranchStatement\n : BRANCH ref {yy.branch($2)}\n | BRANCH ref ORDER NUM {yy.branch($2, $4)}\n ;\n\ncherryPickStatement\n : CHERRY_PICK COMMIT_ID STR {yy.cherryPick($3, '', undefined)}\n | CHERRY_PICK COMMIT_ID STR COMMIT_TAG STR {yy.cherryPick($3, '', $5)}\n | CHERRY_PICK COMMIT_ID STR COMMIT_TAG EMPTYSTR {yy.cherryPick($3, '', '')}\n | CHERRY_PICK COMMIT_TAG STR COMMIT_ID STR {yy.cherryPick($5, '', $3)}\n | CHERRY_PICK COMMIT_TAG EMPTYSTR COMMIT_ID STR {yy.cherryPick($3, '', '')}\n ;\n\nmergeStatement\n : MERGE ref {yy.merge($2,'','','')}\n | MERGE ref COMMIT_ID STR {yy.merge($2, $4,'','')}\n | MERGE ref COMMIT_TYPE commitType {yy.merge($2,'', $4,'')}\n | MERGE ref COMMIT_TAG STR {yy.merge($2, '','',$4)}\n | MERGE ref COMMIT_TAG STR COMMIT_ID STR {yy.merge($2, $6,'', $4)}\n | MERGE ref COMMIT_TAG STR COMMIT_TYPE commitType {yy.merge($2, '',$6, $4)}\n | MERGE ref COMMIT_TYPE commitType COMMIT_TAG STR {yy.merge($2, '',$4, $6)}\n | MERGE ref COMMIT_ID STR COMMIT_TYPE commitType {yy.merge($2, $4, $6, '')}\n | MERGE ref COMMIT_ID STR COMMIT_TAG STR {yy.merge($2, $4, '', $6)}\n | MERGE ref COMMIT_TYPE commitType COMMIT_ID STR {yy.merge($2, $6,$4, '')}\n | MERGE ref COMMIT_ID STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.merge($2, $4, $6, $8)}\n | MERGE ref COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_ID STR {yy.merge($2, $8, $4, $6)}\n | MERGE ref COMMIT_ID STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.merge($2, $4, $8, $6)}\n | MERGE ref COMMIT_TYPE commitType COMMIT_ID STR COMMIT_TAG STR {yy.merge($2, $6, $4, $8)}\n | MERGE ref COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.merge($2, $8, $6, $4)}\n | MERGE ref COMMIT_TAG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.merge($2, $6, $8, $4)}\n ;\n\ncommitStatement\n : COMMIT commit_arg {yy.commit($2)}\n | COMMIT COMMIT_TAG STR {yy.commit('','',yy.commitType.NORMAL,$3)}\n | COMMIT COMMIT_TYPE commitType {yy.commit('','',$3,'')}\n | COMMIT COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit('','',$5,$3)}\n | COMMIT COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit('','',$3,$5)}\n | COMMIT COMMIT_ID STR {yy.commit('',$3,yy.commitType.NORMAL,'')}\n | COMMIT COMMIT_ID STR COMMIT_TAG STR {yy.commit('',$3,yy.commitType.NORMAL,$5)}\n | COMMIT COMMIT_TAG STR COMMIT_ID STR {yy.commit('',$5,yy.commitType.NORMAL,$3)}\n | COMMIT COMMIT_ID STR COMMIT_TYPE commitType {yy.commit('',$3,$5,'')}\n | COMMIT COMMIT_TYPE commitType COMMIT_ID STR {yy.commit('',$5,$3,'')}\n | COMMIT COMMIT_ID STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit('',$3,$5,$7)}\n | COMMIT COMMIT_ID STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit('',$3,$7,$5)}\n | COMMIT COMMIT_TYPE commitType COMMIT_ID STR COMMIT_TAG STR {yy.commit('',$5,$3,$7)}\n | COMMIT COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_ID STR {yy.commit('',$7,$3,$5)}\n | COMMIT COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.commit('',$7,$5,$3)}\n | COMMIT COMMIT_TAG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.commit('',$5,$7,$3)}\n | COMMIT COMMIT_MSG STR {yy.commit($3,'',yy.commitType.NORMAL,'')}\n | COMMIT COMMIT_TAG STR COMMIT_MSG STR {yy.commit($5,'',yy.commitType.NORMAL,$3)}\n | COMMIT COMMIT_MSG STR COMMIT_TAG STR {yy.commit($3,'',yy.commitType.NORMAL,$5)}\n | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($3,'',$5,'')}\n | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($5,'',$3,'')}\n | COMMIT COMMIT_ID STR COMMIT_MSG STR {yy.commit($5,$3,yy.commitType.NORMAL,'')}\n | COMMIT COMMIT_MSG STR COMMIT_ID STR {yy.commit($3,$5,yy.commitType.NORMAL,'')}\n\n | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit($3,'',$5,$7)}\n | COMMIT COMMIT_MSG STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit($3,'',$7,$5)}\n | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_TAG STR {yy.commit($5,'',$3,$7)}\n | COMMIT COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_MSG STR {yy.commit($7,'',$3,$5)}\n | COMMIT COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($7,'',$5,$3)}\n | COMMIT COMMIT_TAG STR COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($5,'',$7,$3)}\n\n | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.commit($3,$7,$5,'')}\n | COMMIT COMMIT_MSG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.commit($3,$5,$7,'')}\n | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_ID STR {yy.commit($5,$7,$3,'')}\n | COMMIT COMMIT_TYPE commitType COMMIT_ID STR COMMIT_MSG STR {yy.commit($7,$5,$3,'')}\n | COMMIT COMMIT_ID STR COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($7,$3,$5,'')}\n | COMMIT COMMIT_ID STR COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($5,$3,$7,'')}\n\n | COMMIT COMMIT_MSG STR COMMIT_TAG STR COMMIT_ID STR {yy.commit($3,$7,yy.commitType.NORMAL,$5)}\n | COMMIT COMMIT_MSG STR COMMIT_ID STR COMMIT_TAG STR {yy.commit($3,$5,yy.commitType.NORMAL,$7)}\n | COMMIT COMMIT_TAG STR COMMIT_MSG STR COMMIT_ID STR {yy.commit($5,$7,yy.commitType.NORMAL,$3)}\n | COMMIT COMMIT_TAG STR COMMIT_ID STR COMMIT_MSG STR {yy.commit($7,$5,yy.commitType.NORMAL,$3)}\n | COMMIT COMMIT_ID STR COMMIT_TAG STR COMMIT_MSG STR {yy.commit($7,$3,yy.commitType.NORMAL,$5)}\n | COMMIT COMMIT_ID STR COMMIT_MSG STR COMMIT_TAG STR {yy.commit($5,$3,yy.commitType.NORMAL,$7)}\n\n | COMMIT COMMIT_MSG STR COMMIT_ID STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit($3,$5,$7,$9)}\n | COMMIT COMMIT_MSG STR COMMIT_ID STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit($3,$5,$9,$7)}\n | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_ID STR COMMIT_TAG STR {yy.commit($3,$7,$5,$9)}\n | COMMIT COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_ID STR {yy.commit($3,$9,$5,$7)}\n | COMMIT COMMIT_MSG STR COMMIT_TAG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.commit($3,$7,$9,$5)}\n | COMMIT COMMIT_MSG STR COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.commit($3,$9,$7,$5)}\n\n | COMMIT COMMIT_ID STR COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit($5,$3,$7,$9)}\n | COMMIT COMMIT_ID STR COMMIT_MSG STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit($5,$3,$9,$7)}\n | COMMIT COMMIT_ID STR COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_TAG STR {yy.commit($7,$3,$5,$9)}\n | COMMIT COMMIT_ID STR COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_MSG STR {yy.commit($9,$3,$5,$7)}\n | COMMIT COMMIT_ID STR COMMIT_TAG STR COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($7,$3,$9,$5)}\n | COMMIT COMMIT_ID STR COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($9,$3,$7,$5)}\n\n | COMMIT COMMIT_TAG STR COMMIT_ID STR COMMIT_TYPE commitType COMMIT_MSG STR {yy.commit($9,$5,$7,$3)}\n | COMMIT COMMIT_TAG STR COMMIT_ID STR COMMIT_MSG STR COMMIT_TYPE commitType {yy.commit($7,$5,$9,$3)}\n | COMMIT COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_ID STR COMMIT_MSG STR {yy.commit($9,$7,$5,$3)}\n | COMMIT COMMIT_TAG STR COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_ID STR {yy.commit($7,$9,$5,$3)}\n | COMMIT COMMIT_TAG STR COMMIT_MSG STR COMMIT_ID STR COMMIT_TYPE commitType {yy.commit($5,$7,$9,$3)}\n | COMMIT COMMIT_TAG STR COMMIT_MSG STR COMMIT_TYPE commitType COMMIT_ID STR {yy.commit($5,$9,$7,$3)}\n\n | COMMIT COMMIT_TYPE commitType COMMIT_ID STR COMMIT_MSG STR COMMIT_TAG STR {yy.commit($7,$5,$3,$9)}\n | COMMIT COMMIT_TYPE commitType COMMIT_ID STR COMMIT_TAG STR COMMIT_MSG STR {yy.commit($9,$5,$3,$7)}\n | COMMIT COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_MSG STR COMMIT_ID STR {yy.commit($7,$9,$3,$5)}\n | COMMIT COMMIT_TYPE commitType COMMIT_TAG STR COMMIT_ID STR COMMIT_MSG STR {yy.commit($9,$7,$3,$5)}\n | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_ID STR COMMIT_TAG STR {yy.commit($5,$7,$3,$9)}\n | COMMIT COMMIT_TYPE commitType COMMIT_MSG STR COMMIT_TAG STR COMMIT_ID STR {yy.commit($5,$9,$3,$7)}\n\n\n // | COMMIT COMMIT_ID STR {yy.commit('',$3,yy.commitType.NORMAL,'')}\n // | COMMIT COMMIT_TYPE commitType {yy.commit('','',$3,'')}\n // | COMMIT COMMIT_TAG STR {yy.commit('','',yy.commitType.NORMAL,$3)}\n // | COMMIT COMMIT_MSG STR {yy.commit($3,'',yy.commitType.NORMAL,'')}\n // | COMMIT COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit('','',$5,$3)}\n // | COMMIT COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit('','',$3,$5)}\n // | COMMIT COMMIT_ID STR COMMIT_TYPE commitType {yy.commit('',$3,$5,'')}\n // | COMMIT COMMIT_ID STR COMMIT_TAG STR {yy.commit('',$3,yy.commitType.NORMAL,$5)}\n // | COMMIT COMMIT_ID STR COMMIT_TYPE commitType COMMIT_TAG STR {yy.commit('',$3,$5,$7)}\n // | COMMIT COMMIT_ID STR COMMIT_TAG STR COMMIT_TYPE commitType {yy.commit('',$3,$7,$5)}\n ;\ncommit_arg\n : /* empty */ {$$ = \"\"}\n | STR {$$=$1}\n ;\ncommitType\n : NORMAL { $$=yy.commitType.NORMAL;}\n | REVERSE { $$=yy.commitType.REVERSE;}\n | HIGHLIGHT { $$=yy.commitType.HIGHLIGHT;}\n ;\n\ndirective\n : openDirective typeDirective closeDirective\n | openDirective typeDirective ':' argDirective closeDirective\n ;\n\nopenDirective\n : open_directive { yy.parseDirective('%%{', 'open_directive'); }\n ;\n\ntypeDirective\n : type_directive { yy.parseDirective($1, 'type_directive'); }\n ;\n\nargDirective\n : arg_directive { $1 = $1.trim().replace(/'/g, '\"'); yy.parseDirective($1, 'arg_directive'); }\n ;\n\ncloseDirective\n : close_directive { yy.parseDirective('}%%', 'close_directive', 'gitGraph'); }\n ;\n\nref\n : ID\n | STR\n ;\n\neol\n : NL\n | ';'\n | EOF\n ;\n// reset_arg\n// : 'HEAD' reset_parents{$$ = $1+ \":\" + $2 }\n// | ID reset_parents{$$ = $1+ \":\" + yy.count; yy.count = 0}\n// ;\n// reset_parents\n// : /* empty */ {yy.count = 0}\n// | CARET reset_parents { yy.count += 1 }\n// ;\n","import { log } from '../../logger';\nimport { random } from '../../utils';\nimport mermaidAPI from '../../mermaidAPI';\nimport * as configApi from '../../config';\nimport { getConfig } from '../../config';\nimport common from '../common/common';\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../../commonDb';\n\nlet mainBranchName = getConfig().gitGraph.mainBranchName;\nlet mainBranchOrder = getConfig().gitGraph.mainBranchOrder;\nlet commits = {};\nlet head = null;\nlet branchesConfig = {};\nbranchesConfig[mainBranchName] = { name: mainBranchName, order: mainBranchOrder };\nlet branches = {};\nbranches[mainBranchName] = head;\nlet curBranch = mainBranchName;\nlet direction = 'LR';\nlet seq = 0;\n\n/**\n *\n */\nfunction getId() {\n return random({ length: 7 });\n}\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\n// /**\n// * @param currentCommit\n// * @param otherCommit\n// */\n// eslint-disable-next-line @cspell/spellchecker\n// function isfastforwardable(currentCommit, otherCommit) {\n// log.debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id);\n// let cnt = 0;\n// while (currentCommit.seq <= otherCommit.seq && currentCommit !== otherCommit && cnt < 1000) {\n// cnt++;\n// // only if other branch has more commits\n// if (otherCommit.parent == null) break;\n// if (Array.isArray(otherCommit.parent)) {\n// log.debug('In merge commit:', otherCommit.parent);\n// return (\n// isfastforwardable(currentCommit, commits[otherCommit.parent[0]]) ||\n// isfastforwardable(currentCommit, commits[otherCommit.parent[1]])\n// );\n// } else {\n// otherCommit = commits[otherCommit.parent];\n// }\n// }\n// log.debug(currentCommit.id, otherCommit.id);\n// return currentCommit.id === otherCommit.id;\n// }\n\n/**\n * @param currentCommit\n * @param otherCommit\n */\n// function isReachableFrom(currentCommit, otherCommit) {\n// const currentSeq = currentCommit.seq;\n// const otherSeq = otherCommit.seq;\n// if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit);\n// return false;\n// }\n\n/**\n * @param list\n * @param fn\n */\nfunction uniqBy(list, fn) {\n const recordMap = 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\nexport const setDirection = function (dir) {\n direction = dir;\n};\nlet options = {};\nexport const setOptions = function (rawOptString) {\n log.debug('options str', rawOptString);\n rawOptString = rawOptString && rawOptString.trim();\n rawOptString = rawOptString || '{}';\n try {\n options = JSON.parse(rawOptString);\n } catch (e) {\n log.error('error while parsing gitGraph options', e.message);\n }\n};\n\nexport const getOptions = function () {\n return options;\n};\n\nexport const commit = function (msg, id, type, tag) {\n log.debug('Entering commit:', msg, id, type, tag);\n id = common.sanitizeText(id, configApi.getConfig());\n msg = common.sanitizeText(msg, configApi.getConfig());\n tag = common.sanitizeText(tag, configApi.getConfig());\n const commit = {\n id: id ? id : seq + '-' + getId(),\n message: msg,\n seq: seq++,\n type: type ? type : commitType.NORMAL,\n tag: tag ? tag : '',\n parents: head == null ? [] : [head.id],\n branch: curBranch,\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n log.debug('in pushCommit ' + commit.id);\n};\n\nexport const branch = function (name, order) {\n name = common.sanitizeText(name, configApi.getConfig());\n if (branches[name] === undefined) {\n branches[name] = head != null ? head.id : null;\n branchesConfig[name] = { name, order: order ? parseInt(order, 10) : null };\n checkout(name);\n log.debug('in createBranch');\n } else {\n let error = 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 ' +\n name +\n '\")'\n );\n error.hash = {\n text: 'branch ' + name,\n token: 'branch ' + name,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"checkout ' + name + '\"'],\n };\n throw error;\n }\n};\n\nexport const merge = function (otherBranch, custom_id, override_type, custom_tag) {\n otherBranch = common.sanitizeText(otherBranch, configApi.getConfig());\n custom_id = common.sanitizeText(custom_id, configApi.getConfig());\n\n const currentCommit = commits[branches[curBranch]];\n const otherCommit = commits[branches[otherBranch]];\n if (curBranch === otherBranch) {\n let 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 line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['branch abc'],\n };\n throw error;\n } else if (currentCommit === undefined || !currentCommit) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Current branch (' + curBranch + ')has no commits'\n );\n error.hash = {\n text: 'merge ' + otherBranch,\n token: 'merge ' + otherBranch,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['commit'],\n };\n throw error;\n } else if (branches[otherBranch] === undefined) {\n let 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 line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['branch ' + otherBranch],\n };\n throw error;\n } else if (otherCommit === undefined || !otherCommit) {\n let 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 line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"commit\"'],\n };\n throw error;\n } else if (currentCommit === otherCommit) {\n let error = new Error('Incorrect usage of \"merge\". Both branches have same head');\n error.hash = {\n text: 'merge ' + otherBranch,\n token: 'merge ' + otherBranch,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['branch abc'],\n };\n throw error;\n } else if (custom_id && commits[custom_id] !== undefined) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Commit with id:' +\n custom_id +\n ' already exists, use different custom Id'\n );\n error.hash = {\n text: 'merge ' + otherBranch + custom_id + override_type + custom_tag,\n token: 'merge ' + otherBranch + custom_id + override_type + custom_tag,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\n 'merge ' + otherBranch + ' ' + custom_id + '_UNIQUE ' + override_type + ' ' + custom_tag,\n ],\n };\n\n throw error;\n }\n // if (isReachableFrom(currentCommit, otherCommit)) {\n // log.debug('Already merged');\n // return;\n // }\n // if (isfastforwardable(currentCommit, otherCommit)) {\n // branches[curBranch] = branches[otherBranch];\n // head = commits[branches[curBranch]];\n // } else {\n // create merge commit\n const commit = {\n id: custom_id ? custom_id : seq + '-' + getId(),\n message: 'merged branch ' + otherBranch + ' into ' + curBranch,\n seq: seq++,\n parents: [head == null ? null : head.id, branches[otherBranch]],\n branch: curBranch,\n type: commitType.MERGE,\n customType: override_type,\n customId: custom_id ? true : false,\n tag: custom_tag ? custom_tag : '',\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n // }\n log.debug(branches);\n log.debug('in mergeBranch');\n};\n\nexport const cherryPick = function (sourceId, targetId, tag) {\n log.debug('Entering cherryPick:', sourceId, targetId, tag);\n sourceId = common.sanitizeText(sourceId, configApi.getConfig());\n targetId = common.sanitizeText(targetId, configApi.getConfig());\n tag = common.sanitizeText(tag, configApi.getConfig());\n\n if (!sourceId || commits[sourceId] === undefined) {\n let 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 line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['cherry-pick abc'],\n };\n throw error;\n }\n\n let sourceCommit = commits[sourceId];\n let sourceCommitBranch = sourceCommit.branch;\n if (sourceCommit.type === commitType.MERGE) {\n let error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit should not be a merge commit'\n );\n error.hash = {\n text: 'cherryPick ' + sourceId + ' ' + targetId,\n token: 'cherryPick ' + sourceId + ' ' + targetId,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['cherry-pick abc'],\n };\n throw error;\n }\n if (!targetId || commits[targetId] === undefined) {\n // cherry-pick source commit to current branch\n\n if (sourceCommitBranch === curBranch) {\n let 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 line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['cherry-pick abc'],\n };\n throw error;\n }\n const currentCommit = commits[branches[curBranch]];\n if (currentCommit === undefined || !currentCommit) {\n let error = new Error(\n 'Incorrect usage of \"cherry-pick\". Current branch (' + curBranch + ')has no commits'\n );\n error.hash = {\n text: 'cherryPick ' + sourceId + ' ' + targetId,\n token: 'cherryPick ' + sourceId + ' ' + targetId,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['cherry-pick abc'],\n };\n throw error;\n }\n const commit = {\n id: seq + '-' + getId(),\n message: 'cherry-picked ' + sourceCommit + ' into ' + curBranch,\n seq: seq++,\n parents: [head == null ? null : head.id, sourceCommit.id],\n branch: curBranch,\n type: commitType.CHERRY_PICK,\n tag: tag ?? 'cherry-pick:' + sourceCommit.id,\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n log.debug(branches);\n log.debug('in cherryPick');\n }\n};\nexport const checkout = function (branch) {\n branch = common.sanitizeText(branch, configApi.getConfig());\n if (branches[branch] === undefined) {\n let error = new Error(\n 'Trying to checkout branch which is not yet created. (Help try using \"branch ' + branch + '\")'\n );\n error.hash = {\n text: 'checkout ' + branch,\n token: 'checkout ' + branch,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"branch ' + branch + '\"'],\n };\n throw error;\n //branches[branch] = head != null ? head.id : null;\n //log.debug('in createBranch');\n } else {\n curBranch = branch;\n const id = branches[curBranch];\n head = commits[id];\n }\n};\n\n// export const reset = function (commitRef) {\n// log.debug('in reset', commitRef);\n// const ref = commitRef.split(':')[0];\n// let parentCount = parseInt(commitRef.split(':')[1]);\n// let commit = ref === 'HEAD' ? head : commits[branches[ref]];\n// log.debug(commit, parentCount);\n// while (parentCount > 0) {\n// commit = commits[commit.parent];\n// parentCount--;\n// if (!commit) {\n// const err = 'Critical error - unique parent commit not found during reset';\n// log.error(err);\n// throw err;\n// }\n// }\n// head = commit;\n// branches[curBranch] = commit.id;\n// };\n\n/**\n * @param arr\n * @param key\n * @param newVal\n */\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\n/** @param commitArr */\nfunction prettyPrintCommitHistory(commitArr) {\n const commit = commitArr.reduce((out, commit) => {\n if (out.seq > commit.seq) {\n return out;\n }\n return commit;\n }, commitArr[0]);\n let line = '';\n commitArr.forEach(function (c) {\n if (c === commit) {\n line += '\\t*';\n } else {\n line += '\\t|';\n }\n });\n const label = [line, commit.id, commit.seq];\n for (let branch in branches) {\n if (branches[branch] === commit.id) {\n label.push(branch);\n }\n }\n log.debug(label.join(' '));\n if (commit.parents && commit.parents.length == 2) {\n const newCommit = commits[commit.parents[0]];\n upsert(commitArr, commit, newCommit);\n commitArr.push(commits[commit.parents[1]]);\n } else if (commit.parents.length == 0) {\n return;\n } else {\n const nextCommit = commits[commit.parents];\n upsert(commitArr, commit, nextCommit);\n }\n commitArr = uniqBy(commitArr, (c) => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n\nexport const prettyPrint = function () {\n log.debug(commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n};\n\nexport const clear = function () {\n commits = {};\n head = null;\n let mainBranch = getConfig().gitGraph.mainBranchName;\n let mainBranchOrder = getConfig().gitGraph.mainBranchOrder;\n branches = {};\n branches[mainBranch] = null;\n branchesConfig = {};\n branchesConfig[mainBranch] = { name: mainBranch, order: mainBranchOrder };\n curBranch = mainBranch;\n seq = 0;\n commonClear();\n};\n\nexport const getBranchesAsObjArray = function () {\n const branchesArray = Object.values(branchesConfig)\n .map((branchConfig, i) => {\n if (branchConfig.order !== null) {\n return branchConfig;\n }\n return {\n ...branchConfig,\n order: parseFloat(`0.${i}`, 10),\n };\n })\n .sort((a, b) => a.order - b.order)\n .map(({ name }) => ({ name }));\n\n return branchesArray;\n};\n\nexport const getBranches = function () {\n return branches;\n};\nexport const getCommits = function () {\n return commits;\n};\nexport const getCommitsArray = function () {\n const commitArr = Object.keys(commits).map(function (key) {\n return commits[key];\n });\n commitArr.forEach(function (o) {\n log.debug(o.id);\n });\n commitArr.sort((a, b) => a.seq - b.seq);\n return commitArr;\n};\nexport const getCurrentBranch = function () {\n return curBranch;\n};\nexport const getDirection = function () {\n return direction;\n};\nexport const getHead = function () {\n return head;\n};\n\nexport const commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4,\n};\n\nexport default {\n parseDirective,\n getConfig: () => configApi.getConfig().gitGraph,\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n cherryPick,\n checkout,\n //reset,\n prettyPrint,\n clear,\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 commitType,\n};\n","import { select } from 'd3';\nimport { getConfig, setupGraphViewbox } from '../../diagram-api/diagramAPI';\nimport { log } from '../../logger';\nimport utils from '../../utils';\n\nlet allCommitsDict = {};\n\nconst commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4,\n};\n\nconst THEME_COLOR_LIMIT = 8;\n\nlet branchPos = {};\nlet commitPos = {};\nlet lanes = [];\nlet maxPos = 0;\nconst clear = () => {\n branchPos = {};\n commitPos = {};\n allCommitsDict = {};\n maxPos = 0;\n lanes = [];\n};\n\n/**\n * Draws a text, used for labels of the branches\n *\n * @param {string} txt The text\n * @returns {SVGElement}\n */\nconst drawText = (txt) => {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n let rows = [];\n\n // Handling of new lines in the label\n if (typeof txt === 'string') {\n rows = txt.split(/\\\\n|\\n|/gi);\n } else if (Array.isArray(txt)) {\n rows = txt;\n } else {\n rows = [];\n }\n\n for (const row of rows) {\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 /**\n * @param svg\n * @param selector\n */\n return svgLabel;\n};\n\n/**\n * Draws the commits with its symbol and labels. The function has two modes, one which only\n * calculates the positions and one that does the actual drawing. This for a simple way getting the\n * vertical layering correct in the graph.\n *\n * @param {any} svg\n * @param {any} commits\n * @param {any} modifyGraph\n */\nconst drawCommits = (svg, commits, modifyGraph) => {\n const gitGraphConfig = getConfig().gitGraph;\n const gBullets = svg.append('g').attr('class', 'commit-bullets');\n const gLabels = svg.append('g').attr('class', 'commit-labels');\n let pos = 0;\n\n const keys = Object.keys(commits);\n const sortedKeys = keys.sort((a, b) => {\n return commits[a].seq - commits[b].seq;\n });\n sortedKeys.forEach((key) => {\n const commit = commits[key];\n\n const y = branchPos[commit.branch].pos;\n const x = pos + 10;\n // Don't draw the commits now but calculate the positioning which is used by the branch lines etc.\n if (modifyGraph) {\n let typeClass;\n let commitSymbolType =\n commit.customType !== undefined && commit.customType !== ''\n ? commit.customType\n : commit.type;\n switch (commitSymbolType) {\n case commitType.NORMAL:\n typeClass = 'commit-normal';\n break;\n case commitType.REVERSE:\n typeClass = 'commit-reverse';\n break;\n case commitType.HIGHLIGHT:\n typeClass = 'commit-highlight';\n break;\n case commitType.MERGE:\n typeClass = 'commit-merge';\n break;\n case commitType.CHERRY_PICK:\n typeClass = 'commit-cherry-pick';\n break;\n default:\n typeClass = 'commit-normal';\n }\n\n if (commitSymbolType === commitType.HIGHLIGHT) {\n const circle = gBullets.append('rect');\n circle.attr('x', x - 10);\n circle.attr('y', y - 10);\n circle.attr('height', 20);\n circle.attr('width', 20);\n circle.attr(\n 'class',\n `commit ${commit.id} commit-highlight${\n branchPos[commit.branch].index % THEME_COLOR_LIMIT\n } ${typeClass}-outer`\n );\n gBullets\n .append('rect')\n .attr('x', x - 6)\n .attr('y', y - 6)\n .attr('height', 12)\n .attr('width', 12)\n .attr(\n 'class',\n `commit ${commit.id} commit${\n branchPos[commit.branch].index % THEME_COLOR_LIMIT\n } ${typeClass}-inner`\n );\n } else if (commitSymbolType === commitType.CHERRY_PICK) {\n gBullets\n .append('circle')\n .attr('cx', x)\n .attr('cy', y)\n .attr('r', 10)\n .attr('class', `commit ${commit.id} ${typeClass}`);\n gBullets\n .append('circle')\n .attr('cx', x - 3)\n .attr('cy', y + 2)\n .attr('r', 2.75)\n .attr('fill', '#fff')\n .attr('class', `commit ${commit.id} ${typeClass}`);\n gBullets\n .append('circle')\n .attr('cx', x + 3)\n .attr('cy', y + 2)\n .attr('r', 2.75)\n .attr('fill', '#fff')\n .attr('class', `commit ${commit.id} ${typeClass}`);\n gBullets\n .append('line')\n .attr('x1', x + 3)\n .attr('y1', y + 1)\n .attr('x2', x)\n .attr('y2', y - 5)\n .attr('stroke', '#fff')\n .attr('class', `commit ${commit.id} ${typeClass}`);\n gBullets\n .append('line')\n .attr('x1', x - 3)\n .attr('y1', y + 1)\n .attr('x2', x)\n .attr('y2', y - 5)\n .attr('stroke', '#fff')\n .attr('class', `commit ${commit.id} ${typeClass}`);\n } else {\n const circle = gBullets.append('circle');\n circle.attr('cx', x);\n circle.attr('cy', y);\n circle.attr('r', commit.type === commitType.MERGE ? 9 : 10);\n circle.attr(\n 'class',\n `commit ${commit.id} commit${branchPos[commit.branch].index % THEME_COLOR_LIMIT}`\n );\n if (commitSymbolType === commitType.MERGE) {\n const circle2 = gBullets.append('circle');\n circle2.attr('cx', x);\n circle2.attr('cy', y);\n circle2.attr('r', 6);\n circle2.attr(\n 'class',\n `commit ${typeClass} ${commit.id} commit${\n branchPos[commit.branch].index % THEME_COLOR_LIMIT\n }`\n );\n }\n if (commitSymbolType === commitType.REVERSE) {\n const cross = gBullets.append('path');\n cross\n .attr('d', `M ${x - 5},${y - 5}L${x + 5},${y + 5}M${x - 5},${y + 5}L${x + 5},${y - 5}`)\n .attr(\n 'class',\n `commit ${typeClass} ${commit.id} commit${\n branchPos[commit.branch].index % THEME_COLOR_LIMIT\n }`\n );\n }\n }\n }\n commitPos[commit.id] = { x: pos + 10, y: y };\n\n // The first iteration over the commits are for positioning purposes, this\n // is required for drawing the lines. The circles and labels is drawn after the labels\n // placing them on top of the lines.\n if (modifyGraph) {\n const px = 4;\n const py = 2;\n // Draw the commit label\n if (\n commit.type !== commitType.CHERRY_PICK &&\n ((commit.customId && commit.type === commitType.MERGE) ||\n commit.type !== commitType.MERGE) &&\n gitGraphConfig.showCommitLabel\n ) {\n const wrapper = gLabels.append('g');\n const labelBkg = wrapper.insert('rect').attr('class', 'commit-label-bkg');\n\n const text = wrapper\n .append('text')\n .attr('x', pos)\n .attr('y', y + 25)\n .attr('class', 'commit-label')\n .text(commit.id);\n let bbox = text.node().getBBox();\n\n // Now we have the label, lets position the background\n labelBkg\n .attr('x', pos + 10 - bbox.width / 2 - py)\n .attr('y', y + 13.5)\n .attr('width', bbox.width + 2 * py)\n .attr('height', bbox.height + 2 * py);\n text.attr('x', pos + 10 - bbox.width / 2);\n if (gitGraphConfig.rotateCommitLabel) {\n let r_x = -7.5 - ((bbox.width + 10) / 25) * 9.5;\n let r_y = 10 + (bbox.width / 25) * 8.5;\n wrapper.attr(\n 'transform',\n 'translate(' + r_x + ', ' + r_y + ') rotate(' + -45 + ', ' + pos + ', ' + y + ')'\n );\n }\n }\n if (commit.tag) {\n const rect = gLabels.insert('polygon');\n const hole = gLabels.append('circle');\n const tag = gLabels\n .append('text')\n // Note that we are delaying setting the x position until we know the width of the text\n .attr('y', y - 16)\n .attr('class', 'tag-label')\n .text(commit.tag);\n let tagBbox = tag.node().getBBox();\n tag.attr('x', pos + 10 - tagBbox.width / 2);\n\n const h2 = tagBbox.height / 2;\n const ly = y - 19.2;\n rect.attr('class', 'tag-label-bkg').attr(\n 'points',\n `\n ${pos - tagBbox.width / 2 - px / 2},${ly + py}\n ${pos - tagBbox.width / 2 - px / 2},${ly - py}\n ${pos + 10 - tagBbox.width / 2 - px},${ly - h2 - py}\n ${pos + 10 + tagBbox.width / 2 + px},${ly - h2 - py}\n ${pos + 10 + tagBbox.width / 2 + px},${ly + h2 + py}\n ${pos + 10 - tagBbox.width / 2 - px},${ly + h2 + py}`\n );\n\n hole\n .attr('cx', pos - tagBbox.width / 2 + px / 2)\n .attr('cy', ly)\n .attr('r', 1.5)\n .attr('class', 'tag-hole');\n }\n }\n pos += 50;\n if (pos > maxPos) {\n maxPos = pos;\n }\n });\n};\n\n/**\n * Detect if there are other commits between commit1's x-position and commit2's x-position on the\n * same branch as commit2.\n *\n * @param {any} commit1\n * @param {any} commit2\n * @param allCommits\n * @returns {boolean} If there are commits between commit1's x-position and commit2's x-position\n */\nconst hasOverlappingCommits = (commit1, commit2, allCommits) => {\n // Find commits on the same branch as commit2\n const keys = Object.keys(allCommits);\n const overlappingComits = keys.filter((key) => {\n return (\n allCommits[key].branch === commit2.branch &&\n allCommits[key].seq > commit1.seq &&\n allCommits[key].seq < commit2.seq\n );\n });\n\n return overlappingComits.length > 0;\n};\n\n/**\n * This function find a lane in the y-axis that is not overlapping with any other lanes. This is\n * used for drawing the lines between commits.\n *\n * @param {any} y1\n * @param {any} y2\n * @param {any} depth\n * @returns {number} Y value between y1 and y2\n */\nconst findLane = (y1, y2, depth = 0) => {\n const candidate = y1 + Math.abs(y1 - y2) / 2;\n if (depth > 5) {\n return candidate;\n }\n\n let 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};\n\n/**\n * Draw the lines between the commits. They were arrows initially.\n *\n * @param {any} svg\n * @param {any} commit1\n * @param {any} commit2\n * @param {any} allCommits\n */\nconst drawArrow = (svg, commit1, commit2, allCommits) => {\n const p1 = commitPos[commit1.id];\n const p2 = commitPos[commit2.id];\n const overlappingCommits = hasOverlappingCommits(commit1, commit2, allCommits);\n // log.debug('drawArrow', p1, p2, overlappingCommits, commit1.id, commit2.id);\n\n let arc = '';\n let arc2 = '';\n let radius = 0;\n let offset = 0;\n let colorClassNum = branchPos[commit2.branch].index;\n let lineDef;\n if (overlappingCommits) {\n arc = 'A 10 10, 0, 0, 0,';\n arc2 = 'A 10 10, 0, 0, 1,';\n radius = 10;\n offset = 10;\n // Figure out the color of the arrow,arrows going down take the color from the destination branch\n colorClassNum = branchPos[commit2.branch].index;\n\n const lineY = p1.y < p2.y ? findLane(p1.y, p2.y) : findLane(p2.y, p1.y);\n\n if (p1.y < p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius} ${arc} ${p1.x + offset} ${lineY} L ${\n p2.x - radius\n } ${lineY} ${arc2} ${p2.x} ${lineY + offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius} ${arc2} ${\n p1.x + offset\n } ${lineY} L ${p2.x - radius} ${lineY} ${arc} ${p2.x} ${lineY - offset} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n arc = 'A 20 20, 0, 0, 0,';\n radius = 20;\n offset = 20;\n\n // Figure out the color of the arrow,arrows going down take the color from the destination branch\n colorClassNum = branchPos[commit2.branch].index;\n\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${\n p2.x\n } ${p2.y}`;\n }\n if (p1.y > p2.y) {\n arc = 'A 20 20, 0, 0, 0,';\n radius = 20;\n offset = 20;\n\n // Arrows going up take the color from the source branch\n colorClassNum = branchPos[commit1.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${\n p2.x\n } ${p2.y}`;\n }\n\n if (p1.y === p2.y) {\n colorClassNum = branchPos[commit1.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${\n p2.x\n } ${p2.y}`;\n }\n }\n svg\n .append('path')\n .attr('d', lineDef)\n .attr('class', 'arrow arrow' + (colorClassNum % THEME_COLOR_LIMIT));\n};\n\nconst drawArrows = (svg, commits) => {\n const gArrows = svg.append('g').attr('class', 'commit-arrows');\n Object.keys(commits).forEach((key) => {\n const commit = commits[key];\n if (commit.parents && commit.parents.length > 0) {\n commit.parents.forEach((parent) => {\n drawArrow(gArrows, commits[parent], commit, commits);\n });\n }\n });\n};\n\n/**\n * Adds the branches and the branches' labels to the svg.\n *\n * @param svg\n * @param branches\n */\nconst drawBranches = (svg, branches) => {\n const gitGraphConfig = getConfig().gitGraph;\n const g = svg.append('g');\n branches.forEach((branch, index) => {\n const adjustIndexForTheme = index % THEME_COLOR_LIMIT;\n\n const pos = branchPos[branch.name].pos;\n const line = g.append('line');\n line.attr('x1', 0);\n line.attr('y1', pos);\n line.attr('x2', maxPos);\n line.attr('y2', pos);\n line.attr('class', 'branch branch' + adjustIndexForTheme);\n\n lanes.push(pos);\n\n let name = branch.name;\n\n // Create the actual text element\n const labelElement = drawText(name);\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const bkg = g.insert('rect');\n const branchLabel = g.insert('g').attr('class', 'branchLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = branchLabel.insert('g').attr('class', 'label branch-label' + adjustIndexForTheme);\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n bkg\n .attr('class', 'branchLabelBkg label' + adjustIndexForTheme)\n .attr('rx', 4)\n .attr('ry', 4)\n .attr('x', -bbox.width - 4 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0))\n .attr('y', -bbox.height / 2 + 8)\n .attr('width', bbox.width + 18)\n .attr('height', bbox.height + 4);\n\n label.attr(\n 'transform',\n 'translate(' +\n (-bbox.width - 14 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)) +\n ', ' +\n (pos - bbox.height / 2 - 1) +\n ')'\n );\n bkg.attr('transform', 'translate(' + -19 + ', ' + (pos - bbox.height / 2) + ')');\n });\n};\n\n/**\n * @param txt\n * @param id\n * @param ver\n * @param diagObj\n */\nexport const draw = function (txt, id, ver, diagObj) {\n clear();\n const conf = getConfig();\n const gitGraphConfig = conf.gitGraph;\n // try {\n log.debug('in gitgraph renderer', txt + '\\n', 'id:', id, ver);\n\n allCommitsDict = diagObj.db.getCommits();\n const branches = diagObj.db.getBranchesAsObjArray();\n\n // Position branches vertically\n let pos = 0;\n branches.forEach((branch, index) => {\n branchPos[branch.name] = { pos, index };\n pos += 50 + (gitGraphConfig.rotateCommitLabel ? 40 : 0);\n });\n\n const diagram = select(`[id=\"${id}\"]`);\n\n drawCommits(diagram, allCommitsDict, false);\n if (gitGraphConfig.showBranches) {\n drawBranches(diagram, branches);\n }\n drawArrows(diagram, allCommitsDict);\n drawCommits(diagram, allCommitsDict, true);\n utils.insertTitle(\n diagram,\n 'gitTitleText',\n gitGraphConfig.titleTopMargin,\n diagObj.db.getDiagramTitle()\n );\n\n // Setup the view box and size of the svg element\n setupGraphViewbox(\n undefined,\n diagram,\n gitGraphConfig.diagramPadding,\n gitGraphConfig.useMaxWidth ?? conf.useMaxWidth\n );\n};\n\nexport default {\n draw,\n};\n","const getStyles = (options) =>\n `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0, 1, 2, 3, 4, 5, 6, 7]\n .map(\n (i) =>\n `\n .branch-label${i} { fill: ${options['gitBranchLabel' + i]}; }\n .commit${i} { stroke: ${options['git' + i]}; fill: ${options['git' + i]}; }\n .commit-highlight${i} { stroke: ${options['gitInv' + i]}; fill: ${options['gitInv' + i]}; }\n .label${i} { fill: ${options['git' + i]}; }\n .arrow${i} { stroke: ${options['git' + i]}; }\n `\n )\n .join('\\n')}\n\n .branch {\n stroke-width: 1;\n stroke: ${options.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${options.commitLabelFontSize}; fill: ${options.commitLabelColor};}\n .commit-label-bkg { font-size: ${options.commitLabelFontSize}; fill: ${\n options.commitLabelBackground\n }; opacity: 0.5; }\n .tag-label { font-size: ${options.tagLabelFontSize}; fill: ${options.tagLabelColor};}\n .tag-label-bkg { fill: ${options.tagLabelBackground}; stroke: ${options.tagLabelBorder}; }\n .tag-hole { fill: ${options.textColor}; }\n\n .commit-merge {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n }\n .commit-reverse {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n }\n`;\n\nexport default getStyles;\n","// @ts-ignore: TODO Fix ts errors\nimport gitGraphParser from './parser/gitGraph';\nimport gitGraphDb from './gitGraphAst';\nimport gitGraphRenderer from './gitGraphRenderer';\nimport gitGraphStyles from './styles';\nimport { DiagramDefinition } from '../../diagram-api/types';\n\nexport const diagram: DiagramDefinition = {\n parser: gitGraphParser,\n db: gitGraphDb,\n renderer: gitGraphRenderer,\n styles: gitGraphStyles,\n};\n"],"names":["parser","o","k","v","l","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","str","hash","error","input","self","stack","tstack","vstack","lstack","table","TERROR","EOF","args","lexer","sharedState","yyloc","ranges","lex","token","symbol","state","action","r","yyval","p","len","newState","expected","errStr","ch","lines","oldLines","n","past","next","pre","c","match","indexed_rule","backup","tempMatch","index","rules","i","condition","yy_","$avoiding_name_collisions","YY_START","Parser","mainBranchName","getConfig","mainBranchOrder","commits","head","branchesConfig","branches","curBranch","direction","seq","getId","random","parseDirective","statement","context","type","mermaidAPI","uniqBy","list","fn","recordMap","out","item","key","setDirection","dir","options","setOptions","rawOptString","log","e","getOptions","commit","msg","id","tag","common","configApi.getConfig","commitType","branch","name","order","checkout","merge","otherBranch","custom_id","override_type","custom_tag","currentCommit","otherCommit","cherryPick","sourceId","targetId","sourceCommit","sourceCommitBranch","upsert","arr","newVal","prettyPrintCommitHistory","commitArr","line","label","newCommit","nextCommit","prettyPrint","node","getCommitsArray","clear","mainBranch","commonClear","getBranchesAsObjArray","branchConfig","a","b","getBranches","getCommits","getCurrentBranch","getDirection","getHead","gitGraphDb","setAccTitle","getAccTitle","getAccDescription","setAccDescription","setDiagramTitle","getDiagramTitle","allCommitsDict","THEME_COLOR_LIMIT","branchPos","commitPos","lanes","maxPos","drawText","txt","svgLabel","rows","row","tspan","drawCommits","svg","modifyGraph","gitGraphConfig","gBullets","gLabels","pos","y","x","typeClass","commitSymbolType","circle","circle2","wrapper","labelBkg","text","bbox","r_x","r_y","rect","hole","tagBbox","h2","ly","hasOverlappingCommits","commit1","commit2","allCommits","findLane","y1","y2","depth","candidate","lane","diff","drawArrow","p1","p2","overlappingCommits","arc","arc2","radius","offset","colorClassNum","lineDef","lineY","drawArrows","gArrows","parent","drawBranches","g","adjustIndexForTheme","labelElement","bkg","draw","ver","diagObj","conf","diagram","select","utils","setupGraphViewbox","gitGraphRenderer","getStyles","gitGraphStyles","gitGraphParser"],"mappings":"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,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC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EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,G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,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAEhB,EAAEgB,GAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,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"}