summaryrefslogtreecommitdiff
path: root/themes/blowfish/assets/lib/mermaid/gitGraphDiagram-602e6108.js.map
blob: 0f41dd748ab75d2267004b0ab5e78fed69dba25d (plain)
1
{"version":3,"file":"gitGraphDiagram-602e6108.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<open_directive>((?:(?!\\}\\%\\%)[^:.])*)                          { this.begin('type_directive'); return 'type_directive'; }\n<type_directive>\":\"                                             { this.popState(); this.begin('arg_directive'); return ':'; }\n<type_directive,arg_directive>\\}\\%\\%                            { this.popState(); this.popState(); return 'close_directive'; }\n<arg_directive>((?:(?!\\}\\%\\%).|\\n)*)                            return 'arg_directive';\naccTitle\\s*\":\"\\s*                                               { this.begin(\"acc_title\");return 'acc_title'; }\n<acc_title>(?!\\n|;|#)*[^\\n]*                                    { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s*                                               { this.begin(\"acc_descr\");return 'acc_descr'; }\n<acc_descr>(?!\\n|;|#)*[^\\n]*                                    { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s*                                               { this.begin(\"acc_descr_multiline\");}\n<acc_descr_multiline>[\\}]                                       { this.popState(); }\n<acc_descr_multiline>[^\\}]*                                     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<options>[ \\r\\n\\t]+\"end\"                this.popState();       // not used anymore in the renderer, fixed for backward compatibility\n<options>[\\s\\S]+(?=[ \\r\\n\\t]+\"end\")     return 'OPT';          //\n[\"][\"]                                  return 'EMPTYSTR';\n[\"]                                     this.begin(\"string\");\n<string>[\"]                             this.popState();\n<string>[^\"]*                           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<<EOF>>                                 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|<br\\s*\\/?>/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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"}