mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-23 20:17:03 +01:00
f8bd90ba60
- moved gitgraph.js to web_src and made it importable and es6-compatible - created new webpack chunk for gitgraph - enabled CSS loader in webpack - enabled async/await syntax via regenerator-runtime - added script to ensure webpack chunks are loaded correctly - disable terser's comment extraction to prevent .LICENCE files gitgraph.js has many issues: 1. it is incompatible with ES6 because of strict-mode violations 1. it does not export anything 1. it's css has weird styles like for `body` 1. it is not available on npm I fixed points 1-3 in our version so it's now loadable in webpack. We should eventually consider alternatives.
1 line
No EOL
36 KiB
Text
1 line
No EOL
36 KiB
Text
{"version":3,"sources":["webpack:///./web_src/vendor/gitgraph.js/gitgraph.custom.css","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./web_src/vendor/gitgraph.js/gitgraph.custom.js","webpack:///./web_src/vendor/gitgraph.js/gitgraph.custom.css?a09e"],"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, \"#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};","/*\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 if (condensePrevLength < condenseCurrentLength\n && ((nodePos = findColomn('*', currentRow)) !== -1\n && (findColomn('_', currentRow) === -1))) {\n flows.splice(nodePos - 1, 0, genNewFlow());\n }\n\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 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 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.custom.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":""} |