{"version":3,"sources":["webpack:///./web_src/css/gitGraph.css","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./web_src/js/gitGraph.js","webpack:///./web_src/css/gitGraph.css?6696"],"names":["module","exports","push","i","useSourceMap","list","toString","this","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","concat","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","modules","mediaQuery","alreadyImportedModules","length","id","_i","memo","stylesInDom","isOldIE","Boolean","window","document","all","atob","getTarget","target","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","e","listToStyles","options","styles","newStyles","base","part","css","media","parts","addStylesToDom","domStyle","j","refs","addStyle","insertStyleElement","style","createElement","attributes","nonce","Object","keys","forEach","key","setAttribute","insert","Error","appendChild","textStore","replaceText","index","replacement","filter","applyToSingletonTag","remove","obj","styleSheet","cssText","cssNode","createTextNode","childNodes","removeChild","insertBefore","applyToTag","firstChild","singleton","singletonCounter","update","styleIndex","bind","parentNode","removeStyleElement","newObj","newList","mayRemove","_domStyle","gitGraph","canvas","rawGraphList","config","getContext","unitSize","lineWidth","nodeRadius","flows","graphList","ctx","ratio","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","genRandomStr","rnum","chars","randomString","Math","floor","random","substring","findFlow","findColomn","symbol","row","findBranchOut","findLineBreak","genNewFlow","newId","color","drawLine","moveX","moveY","lineX","lineY","strokeStyle","beginPath","moveTo","lineTo","stroke","drawLineRight","x","y","drawLineUp","drawNode","arc","PI","fill","drawLineIn","drawLineOut","midStr","maxWidth","l","replace","max","split","unshift","width","height","lineJoin","lineCap","scale","init","colomn","colomnIndex","prevColomn","condenseIndex","nodePos","tempFlow","lastLinePos","condenseCurrentLength","breakIndex","prevRowLength","flowSwapPos","condensePrevLength","inlineIntersect","currentRow","nextRow","prevRow","val","splice","draw","locals"],"mappings":"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","file":"gitgraph.js","sourcesContent":["exports = module.exports = require(\"../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* This is a customized version of https://github.com/bluef/gitgraph.js/blob/master/gitgraph.css\\n   Changes include the removal of `body` and `em` styles */\\n#git-graph-container, #rel-container {float:left;}\\n#rel-container {max-width:30%; overflow-x:auto;}\\n#git-graph-container {overflow-x:auto; width:100%}\\n#git-graph-container li {list-style-type:none;height:20px;line-height:20px; white-space:nowrap;}\\n#git-graph-container li .node-relation {font-family:'Bitstream Vera Sans Mono', 'Courier', monospace;}\\n#git-graph-container li .author {color:#666666;}\\n#git-graph-container li .time {color:#999999;font-size:80%}\\n#git-graph-container li a {color:#000000;}\\n#git-graph-container li a:hover {text-decoration:underline;}\\n#git-graph-container li a em {color:#BB0000;border-bottom:1px dotted #BBBBBB;text-decoration:none;font-style:normal;}\\n#rev-container {width:100%}\\n#rev-list {margin:0;padding:0 5px 0 5px;min-width:95%}\\n#graph-raw-list {margin:0px;}\\n\", \"\"]);\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \"{\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    for (var i = 0; i < this.length; i++) {\n      // eslint-disable-next-line prefer-destructuring\n      var id = this[i][0];\n\n      if (id != null) {\n        alreadyImportedModules[id] = true;\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = modules[_i]; // skip already imported module\n      // this implementation is not 100% perfect for weird media query combinations\n      // when a module is imported multiple times with different media queries.\n      // I hope this will never occur (Hey this way we have smaller bundles)\n\n      if (item[0] == null || !alreadyImportedModules[item[0]]) {\n        if (mediaQuery && !item[2]) {\n          item[2] = mediaQuery;\n        } else if (mediaQuery) {\n          item[2] = \"(\".concat(item[2], \") and (\").concat(mediaQuery, \")\");\n        }\n\n        list.push(item);\n      }\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot).concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","\"use strict\";\n\nvar stylesInDom = {};\n\nvar isOldIE = function isOldIE() {\n  var memo;\n  return function memorize() {\n    if (typeof memo === 'undefined') {\n      // Test for IE <= 9 as proposed by Browserhacks\n      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n      // Tests for existence of standard globals is to allow style-loader\n      // to operate correctly into non-standard environments\n      // @see https://github.com/webpack-contrib/style-loader/issues/177\n      memo = Boolean(window && document && document.all && !window.atob);\n    }\n\n    return memo;\n  };\n}();\n\nvar getTarget = function getTarget() {\n  var memo = {};\n  return function memorize(target) {\n    if (typeof memo[target] === 'undefined') {\n      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n        try {\n          // This will throw an exception if access to iframe is blocked\n          // due to cross-origin restrictions\n          styleTarget = styleTarget.contentDocument.head;\n        } catch (e) {\n          // istanbul ignore next\n          styleTarget = null;\n        }\n      }\n\n      memo[target] = styleTarget;\n    }\n\n    return memo[target];\n  };\n}();\n\nfunction listToStyles(list, options) {\n  var styles = [];\n  var newStyles = {};\n\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var css = item[1];\n    var media = item[2];\n    var sourceMap = item[3];\n    var part = {\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    };\n\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = {\n        id: id,\n        parts: [part]\n      });\n    } else {\n      newStyles[id].parts.push(part);\n    }\n  }\n\n  return styles;\n}\n\nfunction addStylesToDom(styles, options) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i];\n    var domStyle = stylesInDom[item.id];\n    var j = 0;\n\n    if (domStyle) {\n      domStyle.refs++;\n\n      for (; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j]);\n      }\n\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j], options));\n      }\n    } else {\n      var parts = [];\n\n      for (; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j], options));\n      }\n\n      stylesInDom[item.id] = {\n        id: item.id,\n        refs: 1,\n        parts: parts\n      };\n    }\n  }\n}\n\nfunction insertStyleElement(options) {\n  var style = document.createElement('style');\n\n  if (typeof options.attributes.nonce === 'undefined') {\n    var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n    if (nonce) {\n      options.attributes.nonce = nonce;\n    }\n  }\n\n  Object.keys(options.attributes).forEach(function (key) {\n    style.setAttribute(key, options.attributes[key]);\n  });\n\n  if (typeof options.insert === 'function') {\n    options.insert(style);\n  } else {\n    var target = getTarget(options.insert || 'head');\n\n    if (!target) {\n      throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n    }\n\n    target.appendChild(style);\n  }\n\n  return style;\n}\n\nfunction removeStyleElement(style) {\n  // istanbul ignore if\n  if (style.parentNode === null) {\n    return false;\n  }\n\n  style.parentNode.removeChild(style);\n}\n/* istanbul ignore next  */\n\n\nvar replaceText = function replaceText() {\n  var textStore = [];\n  return function replace(index, replacement) {\n    textStore[index] = replacement;\n    return textStore.filter(Boolean).join('\\n');\n  };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n  var css = remove ? '' : obj.css; // For old IE\n\n  /* istanbul ignore if  */\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = replaceText(index, css);\n  } else {\n    var cssNode = document.createTextNode(css);\n    var childNodes = style.childNodes;\n\n    if (childNodes[index]) {\n      style.removeChild(childNodes[index]);\n    }\n\n    if (childNodes.length) {\n      style.insertBefore(cssNode, childNodes[index]);\n    } else {\n      style.appendChild(cssNode);\n    }\n  }\n}\n\nfunction applyToTag(style, options, obj) {\n  var css = obj.css;\n  var media = obj.media;\n  var sourceMap = obj.sourceMap;\n\n  if (media) {\n    style.setAttribute('media', media);\n  }\n\n  if (sourceMap && btoa) {\n    css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n  } // For old IE\n\n  /* istanbul ignore if  */\n\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    while (style.firstChild) {\n      style.removeChild(style.firstChild);\n    }\n\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n  var style;\n  var update;\n  var remove;\n\n  if (options.singleton) {\n    var styleIndex = singletonCounter++;\n    style = singleton || (singleton = insertStyleElement(options));\n    update = applyToSingletonTag.bind(null, style, styleIndex, false);\n    remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n  } else {\n    style = insertStyleElement(options);\n    update = applyToTag.bind(null, style, options);\n\n    remove = function remove() {\n      removeStyleElement(style);\n    };\n  }\n\n  update(obj);\n  return function updateStyle(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n        return;\n      }\n\n      update(obj = newObj);\n    } else {\n      remove();\n    }\n  };\n}\n\nmodule.exports = function (list, options) {\n  options = options || {};\n  options.attributes = typeof options.attributes === 'object' ? options.attributes : {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n  // tags it will allow on a page\n\n  if (!options.singleton && typeof options.singleton !== 'boolean') {\n    options.singleton = isOldIE();\n  }\n\n  var styles = listToStyles(list, options);\n  addStylesToDom(styles, options);\n  return function update(newList) {\n    var mayRemove = [];\n\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i];\n      var domStyle = stylesInDom[item.id];\n\n      if (domStyle) {\n        domStyle.refs--;\n        mayRemove.push(domStyle);\n      }\n    }\n\n    if (newList) {\n      var newStyles = listToStyles(newList, options);\n      addStylesToDom(newStyles, options);\n    }\n\n    for (var _i = 0; _i < mayRemove.length; _i++) {\n      var _domStyle = mayRemove[_i];\n\n      if (_domStyle.refs === 0) {\n        for (var j = 0; j < _domStyle.parts.length; j++) {\n          _domStyle.parts[j]();\n        }\n\n        delete stylesInDom[_domStyle.id];\n      }\n    }\n  };\n};","/* This is a customized version of https://github.com/bluef/gitgraph.js/blob/master/gitgraph.js\n   Changes include conversion to ES6 and linting fixes */\n\n/*\n * @license magnet:?xt=urn:btih:c80d50af7d3db9be66a4d0a86db0286e4fd33292&dn=bsd-3-clause.txt BSD 3-Clause\n * Copyright (c) 2011, Terrence Lee <kill889@gmail.com>\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *     * Redistributions of source code must retain the above copyright\n *       notice, this list of conditions and the following disclaimer.\n *     * Redistributions in binary form must reproduce the above copyright\n *       notice, this list of conditions and the following disclaimer in the\n *       documentation and/or other materials provided with the distribution.\n *     * Neither the name of the <organization> nor the\n *       names of its contributors may be used to endorse or promote products\n *       derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nexport default function gitGraph(canvas, rawGraphList, config) {\n  if (!canvas.getContext) {\n    return;\n  }\n\n  if (typeof config === 'undefined') {\n    config = {\n      unitSize: 20,\n      lineWidth: 3,\n      nodeRadius: 4\n    };\n  }\n\n  const flows = [];\n  const graphList = [];\n\n  const ctx = canvas.getContext('2d');\n\n  const devicePixelRatio = window.devicePixelRatio || 1;\n  const backingStoreRatio = ctx.webkitBackingStorePixelRatio\n                          || ctx.mozBackingStorePixelRatio\n                          || ctx.msBackingStorePixelRatio\n                          || ctx.oBackingStorePixelRatio\n                          || ctx.backingStorePixelRatio || 1;\n\n  const ratio = devicePixelRatio / backingStoreRatio;\n\n  const init = function () {\n    let maxWidth = 0;\n    let i;\n    const l = rawGraphList.length;\n    let row;\n    let midStr;\n\n    for (i = 0; i < l; i++) {\n      midStr = rawGraphList[i].replace(/\\s+/g, ' ').replace(/^\\s+|\\s+$/g, '');\n\n      maxWidth = Math.max(midStr.replace(/(_|\\s)/g, '').length, maxWidth);\n\n      row = midStr.split('');\n\n      graphList.unshift(row);\n    }\n\n    const width = maxWidth * config.unitSize;\n    const height = graphList.length * config.unitSize;\n\n    canvas.width = width * ratio;\n    canvas.height = height * ratio;\n\n    canvas.style.width = `${width}px`;\n    canvas.style.height = `${height}px`;\n\n    ctx.lineWidth = config.lineWidth;\n    ctx.lineJoin = 'round';\n    ctx.lineCap = 'round';\n\n    ctx.scale(ratio, ratio);\n  };\n\n  const genRandomStr = function () {\n    const chars = '0123456789ABCDEF';\n    const stringLength = 6;\n    let randomString = '', rnum, i;\n    for (i = 0; i < stringLength; i++) {\n      rnum = Math.floor(Math.random() * chars.length);\n      randomString += chars.substring(rnum, rnum + 1);\n    }\n\n    return randomString;\n  };\n\n  const findFlow = function (id) {\n    let i = flows.length;\n\n    while (i-- && flows[i].id !== id);\n\n    return i;\n  };\n\n  const findColomn = function (symbol, row) {\n    let i = row.length;\n\n    while (i-- && row[i] !== symbol);\n\n    return i;\n  };\n\n  const findBranchOut = function (row) {\n    if (!row) {\n      return -1;\n    }\n\n    let i = row.length;\n\n    while (i--\n      && !(row[i - 1] && row[i] === '/' && row[i - 1] === '|')\n      && !(row[i - 2] && row[i] === '_' && row[i - 2] === '|'));\n\n    return i;\n  };\n\n  const findLineBreak = function (row) {\n    if (!row) {\n      return -1;\n    }\n\n    let i = row.length;\n\n    while (i--\n    && !(row[i - 1] && row[i - 2] && row[i] === ' ' && row[i - 1] === '|' && row[i - 2] === '_'));\n\n    return i;\n  };\n\n  const genNewFlow = function () {\n    let newId;\n\n    do {\n      newId = genRandomStr();\n    } while (findFlow(newId) !== -1);\n\n    return { id: newId, color: `#${newId}` };\n  };\n\n  // Draw methods\n  const drawLine = function (moveX, moveY, lineX, lineY, color) {\n    ctx.strokeStyle = color;\n    ctx.beginPath();\n    ctx.moveTo(moveX, moveY);\n    ctx.lineTo(lineX, lineY);\n    ctx.stroke();\n  };\n\n  const drawLineRight = function (x, y, color) {\n    drawLine(x, y + config.unitSize / 2, x + config.unitSize, y + config.unitSize / 2, color);\n  };\n\n  const drawLineUp = function (x, y, color) {\n    drawLine(x, y + config.unitSize / 2, x, y - config.unitSize / 2, color);\n  };\n\n  const drawNode = function (x, y, color) {\n    ctx.strokeStyle = color;\n\n    drawLineUp(x, y, color);\n\n    ctx.beginPath();\n    ctx.arc(x, y, config.nodeRadius, 0, Math.PI * 2, true);\n    ctx.fill();\n  };\n\n  const drawLineIn = function (x, y, color) {\n    drawLine(x + config.unitSize, y + config.unitSize / 2, x, y - config.unitSize / 2, color);\n  };\n\n  const drawLineOut = function (x, y, color) {\n    drawLine(x, y + config.unitSize / 2, x + config.unitSize, y - config.unitSize / 2, color);\n  };\n\n  const draw = function (graphList) {\n    let colomn, colomnIndex, prevColomn, condenseIndex, breakIndex = -1;\n    let x, y;\n    let color;\n    let nodePos;\n    let tempFlow;\n    let prevRowLength = 0;\n    let flowSwapPos = -1;\n    let lastLinePos;\n    let i, l;\n    let condenseCurrentLength, condensePrevLength = 0;\n\n    let inlineIntersect = false;\n\n    // initiate color array for first row\n    for (i = 0, l = graphList[0].length; i < l; i++) {\n      if (graphList[0][i] !== '_' && graphList[0][i] !== ' ') {\n        flows.push(genNewFlow());\n      }\n    }\n\n    y = (canvas.height / ratio) - config.unitSize * 0.5;\n\n    // iterate\n    for (i = 0, l = graphList.length; i < l; i++) {\n      x = config.unitSize * 0.5;\n\n      const currentRow = graphList[i];\n      const nextRow = graphList[i + 1];\n      const prevRow = graphList[i - 1];\n\n      flowSwapPos = -1;\n\n      condenseCurrentLength = currentRow.filter((val) => {\n        return (val !== ' ' && val !== '_');\n      }).length;\n\n      // pre process begin\n      // use last row for analysing\n      if (prevRow) {\n        if (!inlineIntersect) {\n          // intersect might happen\n          for (colomnIndex = 0; colomnIndex < prevRowLength; colomnIndex++) {\n            if (prevRow[colomnIndex + 1]\n              && (prevRow[colomnIndex] === '/' && prevRow[colomnIndex + 1] === '|')\n              || ((prevRow[colomnIndex] === '_' && prevRow[colomnIndex + 1] === '|')\n              && (prevRow[colomnIndex + 2] === '/'))) {\n              flowSwapPos = colomnIndex;\n\n              // swap two flow\n              tempFlow = { id: flows[flowSwapPos].id, color: flows[flowSwapPos].color };\n\n              flows[flowSwapPos].id = flows[flowSwapPos + 1].id;\n              flows[flowSwapPos].color = flows[flowSwapPos + 1].color;\n\n              flows[flowSwapPos + 1].id = tempFlow.id;\n              flows[flowSwapPos + 1].color = tempFlow.color;\n            }\n          }\n        }\n\n        /* eslint-disable-next-line */\n        if (condensePrevLength < condenseCurrentLength\n          && ((nodePos = findColomn('*', currentRow)) !== -1\n          && (findColomn('_', currentRow) === -1))) {\n          flows.splice(nodePos - 1, 0, genNewFlow());\n        }\n\n        /* eslint-disable-next-line */\n        if (prevRowLength > currentRow.length\n          && (nodePos = findColomn('*', prevRow)) !== -1) {\n          if (findColomn('_', currentRow) === -1\n            && findColomn('/', currentRow) === -1\n            && findColomn('\\\\', currentRow) === -1) {\n            flows.splice(nodePos + 1, 1);\n          }\n        }\n      } // done with the previous row\n\n      prevRowLength = currentRow.length; // store for next round\n      colomnIndex = 0; // reset index\n      condenseIndex = 0;\n      condensePrevLength = 0;\n      breakIndex = -1; // reset break index\n      while (colomnIndex < currentRow.length) {\n        colomn = currentRow[colomnIndex];\n\n        if (colomn !== ' ' && colomn !== '_') {\n          ++condensePrevLength;\n        }\n\n        // check and fix line break in next row\n        if (colomn === '/' && currentRow[colomnIndex - 1] && currentRow[colomnIndex - 1] === '|') {\n          /* eslint-disable-next-line */\n          if ((breakIndex = findLineBreak(nextRow)) !== -1) {\n            nextRow.splice(breakIndex, 1);\n          }\n        }\n        // if line break found replace all '/' with '|' after breakIndex in previous row\n        if (breakIndex !== -1 && colomn === '/' && colomnIndex > breakIndex) {\n          currentRow[colomnIndex] = '|';\n          colomn = '|';\n        }\n\n        if (colomn === ' '\n          && currentRow[colomnIndex + 1]\n          && currentRow[colomnIndex + 1] === '_'\n          && currentRow[colomnIndex - 1]\n          && currentRow[colomnIndex - 1] === '|') {\n          currentRow.splice(colomnIndex, 1);\n\n          currentRow[colomnIndex] = '/';\n          colomn = '/';\n        }\n\n        // create new flow only when no intersect happened\n        if (flowSwapPos === -1\n          && colomn === '/'\n          && currentRow[colomnIndex - 1]\n          && currentRow[colomnIndex - 1] === '|') {\n          flows.splice(condenseIndex, 0, genNewFlow());\n        }\n\n        // change \\ and / to | when it's in the last position of the whole row\n        if (colomn === '/' || colomn === '\\\\') {\n          if (!(colomn === '/' && findBranchOut(nextRow) === -1)) {\n            /* eslint-disable-next-line */\n            if ((lastLinePos = Math.max(findColomn('|', currentRow),\n              findColomn('*', currentRow))) !== -1\n              && (lastLinePos < colomnIndex - 1)) {\n              while (currentRow[++lastLinePos] === ' ');\n\n              if (lastLinePos === colomnIndex) {\n                currentRow[colomnIndex] = '|';\n              }\n            }\n          }\n        }\n\n        if (colomn === '*'\n          && prevRow\n          && prevRow[condenseIndex + 1] === '\\\\') {\n          flows.splice(condenseIndex + 1, 1);\n        }\n\n        if (colomn !== ' ') {\n          ++condenseIndex;\n        }\n\n        ++colomnIndex;\n      }\n\n      condenseCurrentLength = currentRow.filter((val) => {\n        return (val !== ' ' && val !== '_');\n      }).length;\n\n      // do some clean up\n      if (flows.length > condenseCurrentLength) {\n        flows.splice(condenseCurrentLength, flows.length - condenseCurrentLength);\n      }\n\n      colomnIndex = 0;\n\n      // a little inline analysis and draw process\n      while (colomnIndex < currentRow.length) {\n        colomn = currentRow[colomnIndex];\n        prevColomn = currentRow[colomnIndex - 1];\n\n        if (currentRow[colomnIndex] === ' ') {\n          currentRow.splice(colomnIndex, 1);\n          x += config.unitSize;\n\n          continue;\n        }\n\n        // inline interset\n        if ((colomn === '_' || colomn === '/')\n          && currentRow[colomnIndex - 1] === '|'\n          && currentRow[colomnIndex - 2] === '_') {\n          inlineIntersect = true;\n\n          tempFlow = flows.splice(colomnIndex - 2, 1)[0];\n          flows.splice(colomnIndex - 1, 0, tempFlow);\n          currentRow.splice(colomnIndex - 2, 1);\n\n          colomnIndex -= 1;\n        } else {\n          inlineIntersect = false;\n        }\n\n        color = flows[colomnIndex].color;\n\n        switch (colomn) {\n          case '_':\n            drawLineRight(x, y, color);\n\n            x += config.unitSize;\n            break;\n\n          case '*':\n            drawNode(x, y, color);\n            break;\n\n          case '|':\n            drawLineUp(x, y, color);\n            break;\n\n          case '/':\n            if (prevColomn\n              && (prevColomn === '/'\n              || prevColomn === ' ')) {\n              x -= config.unitSize;\n            }\n\n            drawLineOut(x, y, color);\n\n            x += config.unitSize;\n            break;\n\n          case '\\\\':\n            drawLineIn(x, y, color);\n            break;\n        }\n\n        ++colomnIndex;\n      }\n\n      y -= config.unitSize;\n    }\n  };\n\n  init();\n  draw(graphList);\n}\n// @end-license\n","var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!./gitGraph.css\");\n\nif (typeof content === 'string') {\n  content = [[module.id, content, '']];\n}\n\nvar options = {}\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\")(content, options);\n\nif (content.locals) {\n  module.exports = content.locals;\n}\n"],"sourceRoot":""}