forked from adrai/flowchart.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflowchart.js.map
1 lines (1 loc) · 211 KB
/
flowchart.js.map
1
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///flowchart.js","webpack:///webpack/bootstrap 519494f9e366d139a59e","webpack:///./index.js","webpack:///./src/flowchart.helpers.js","webpack:///./src/flowchart.symbol.js","webpack:///./src/flowchart.functions.js","webpack:///./src/flowchart.parse.js","webpack:///./src/flowchart.symbol.condition.js","webpack:///./src/flowchart.symbol.parallel.js","webpack:///./src/flowchart.chart.js","webpack:///./src/flowchart.defaults.js","webpack:///./src/flowchart.shim.js","webpack:///./src/flowchart.symbol.end.js","webpack:///./src/flowchart.symbol.input.js","webpack:///./src/flowchart.symbol.inputoutput.js","webpack:///./src/flowchart.symbol.operation.js","webpack:///./src/flowchart.symbol.output.js","webpack:///./src/flowchart.symbol.start.js","webpack:///./src/flowchart.symbol.subroutine.js","webpack:///./src/jquery-plugin.js","webpack:///external \"Raphael\""],"names":["root","factory","exports","module","require","define","amd","a","i","this","__WEBPACK_EXTERNAL_MODULE_18__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","parse","FlowChart","window","flowchart","_defaults","options","defaultOptions","merged","attrname","_inherits","ctor","superCtor","Object","super_","prototype","create","constructor","value","enumerable","writable","configurable","TempCtor","defaults","inherits","Symbol","chart","symbol","group","paper","set","connectedTo","symbolType","flowstate","lineStyle","key","leftLines","rightLines","topLines","bottomLines","params","next_direction","next","undefined","text","node","setAttribute","getAttr","attr","text-anchor","x","fill","font-size","font","fontF","fontW","font-family","font-weight","link","function","cursor","addEventListener","evt","target","maxWidth","words","split","tempText","ii","length","word","getBBox","width","substring","push","tmpMargin","stroke","stroke-width","height","roundness","isNaN","insertBefore","y","initialize","drawAPI","drawLine","checkLineIntersection","attName","opt1","opt3","opt2","symbols","transform","getCenter","getX","getY","shiftX","setX","shiftY","setY","getTop","getBottom","getLeft","getRight","render","self","lineLength","rightPoint","isPositioned","shift","symb","hasSymbolUnder","len","diff","Math","abs","leftPoint","bottomPoint","renderLines","drawLineTo","origin","indexOf","line","yOffset","right","bottom","top","left","symbolX","symbolY","symbolTop","symbolRight","symbolLeft","isOnSameColumn","isOnSameLine","isUnder","isUpper","isLeft","isRight","maxX","lineWith","max","rightStart","topEnd","bottomStart","diffX","leftStart","topStart","leftEnd","rightEnd","l","llen","lines","otherLine","ePath","lPath","iP","lenP","newPath","line1_from_x","line1_from_y","line1_to_x","line1_to_y","lP","lenlP","newLinePath","line2_from_x","line2_from_y","line2_to_x","line2_to_y","res","onLine1","onLine2","newSegment","splice","minXFromSymbols","maxXFromLine","drawPath","location","points","path","pathValues","from","to","toString","arrow-end","centerText","textPath","textAnchor","isHorizontal","firstTo","line1StartX","line1StartY","line1EndX","line1EndY","line2StartX","line2StartY","line2EndX","line2EndY","denominator","b","numerator1","numerator2","result","input","getStyle","s","startIndex","endIndex","getSymbValue","getSymbol","getNextPath","flowSymb","getAnnotation","tmp","tmp_split","trim","start","drawSVG","container","getDisplaySymbol","dispSymbols","Start","diagram","End","Operation","InputOutput","Input","Output","Subroutine","Condition","Parallel","Error","clean","constructChart","prevDisp","prev","dispSymb","startWith","pathOk","yes","no","path1","path2","path3","then","prevBreak","i0","i0len","line0","replace","substr","currentLine","parts","match","entries","entry","sub","join","txtAndState","pop","ann","flowSymbols","iS","lenS","symbVal","realSymb","direction","condOpt","yes_annotation","no_annotation","path1_annotation","path2_annotation","path3_annotation","nextSymb","lineStyleSymbols","iSS","lenSS","curSymb","nextSymbol","JSON","textMargin","yes_direction","direction_yes","no_direction","direction_no","startX","startY","yes_symbol","no_symbol","bottom_symbol","right_symbol","left_symbol","rect","path1_direction","path2_direction","path3_direction","direction_next","direction_path1","direction_path2","direction_path3","path1_symbol","path2_symbol","path3_symbol","top_symbol","topPoint","Raphael","handle","flowChart","maxHeight","maxY","minX","minY","leftX","x2","y2","scale","lineWidth","setSize","setViewBox","paperDom","canvas","parentNode","removeChild","line-width","line-length","text-margin","font-color","line-color","element-color","yes-text","no-text","class","end","condition","inputoutput","output","operation","subroutine","parallel","Array","searchElement","TypeError","t","n","arguments","Number","Infinity","floor","k","lastIndexOf","min","String","innerWrap","jQuery","$","paramFit","needle","haystack","isArray","includes","methods","init","each","$this","html","setFlowStateByParam","param","paramValue","newFlowState","nextSymbolKeys","property","hasOwnProperty","val","nski","nextSymbolKey","clearFlowState","fn","methodOrOptions","apply","slice","error"],"mappings":"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","file":"flowchart.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"Raphael\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"Raphael\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"Raphael\")) : factory(root[\"Raphael\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function(__WEBPACK_EXTERNAL_MODULE_18__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"Raphael\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"Raphael\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"Raphael\")) : factory(root[\"Raphael\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function(__WEBPACK_EXTERNAL_MODULE_18__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/*!******************!*\\\n !*** ./index.js ***!\n \\******************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(/*! ./src/flowchart.shim */ 9);\n\tvar parse = __webpack_require__(/*! ./src/flowchart.parse */ 4);\n\t__webpack_require__(/*! ./src/jquery-plugin */ 17);\n\t\n\tvar FlowChart = {\n\t\tparse: parse\n\t};\n\t\n\tif (typeof window !== 'undefined') {\n\t\twindow.flowchart = FlowChart;\n\t}\n\t\n\tmodule.exports = FlowChart;\n\n\n/***/ }),\n/* 1 */\n/*!**********************************!*\\\n !*** ./src/flowchart.helpers.js ***!\n \\**********************************/\n/***/ (function(module, exports) {\n\n\tfunction _defaults(options, defaultOptions) {\n\t if (!options || typeof options === 'function') {\n\t return defaultOptions;\n\t }\n\t\n\t var merged = {};\n\t for (var attrname in defaultOptions) {\n\t merged[attrname] = defaultOptions[attrname];\n\t }\n\t\n\t for (attrname in options) {\n\t if (options[attrname]) {\n\t if (typeof merged[attrname] === 'object') {\n\t merged[attrname] = _defaults(merged[attrname], options[attrname]);\n\t } else {\n\t merged[attrname] = options[attrname];\n\t }\n\t }\n\t }\n\t return merged;\n\t}\n\t\n\tfunction _inherits(ctor, superCtor) {\n\t if (typeof(Object.create) === 'function') {\n\t // implementation from standard node.js 'util' module\n\t ctor.super_ = superCtor;\n\t ctor.prototype = Object.create(superCtor.prototype, {\n\t constructor: {\n\t value: ctor,\n\t enumerable: false,\n\t writable: true,\n\t configurable: true\n\t }\n\t });\n\t } else {\n\t // old school shim for old browsers\n\t ctor.super_ = superCtor;\n\t var TempCtor = function () {};\n\t TempCtor.prototype = superCtor.prototype;\n\t ctor.prototype = new TempCtor();\n\t ctor.prototype.constructor = ctor;\n\t }\n\t}\n\t\n\t// move dependent functions to a container so that\n\t// they can be overriden easier in no jquery environment (node.js)\n\tmodule.exports = {\n\t defaults: _defaults,\n\t inherits: _inherits\n\t};\n\n\n/***/ }),\n/* 2 */\n/*!*********************************!*\\\n !*** ./src/flowchart.symbol.js ***!\n \\*********************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar drawAPI = __webpack_require__(/*! ./flowchart.functions */ 3);\n\tvar drawLine = drawAPI.drawLine;\n\tvar checkLineIntersection = drawAPI.checkLineIntersection;\n\t\n\tfunction Symbol(chart, options, symbol) {\n\t this.chart = chart;\n\t this.group = this.chart.paper.set();\n\t this.symbol = symbol;\n\t this.connectedTo = [];\n\t this.symbolType = options.symbolType;\n\t this.flowstate = (options.flowstate || 'future');\n\t this.lineStyle = (options.lineStyle || {});\n\t this.key = (options.key || '');\n\t this.leftLines = [];\n\t this.rightLines = [];\n\t this.topLines = [];\n\t this.bottomLines = [];\n\t this.params = options.params;\n\t\n\t this.next_direction = options.next && options['direction_next'] ? options['direction_next'] : undefined;\n\t\n\t this.text = this.chart.paper.text(0, 0, options.text);\n\t //Raphael does not support the svg group tag so setting the text node id to the symbol node id plus t\n\t if (options.key) { this.text.node.id = options.key + 't'; }\n\t this.text.node.setAttribute('class', this.getAttr('class') + 't');\n\t\n\t this.text.attr({\n\t 'text-anchor': 'start',\n\t 'x' : this.getAttr('text-margin'),\n\t 'fill' : this.getAttr('font-color'),\n\t 'font-size' : this.getAttr('font-size')\n\t });\n\t\n\t var font = this.getAttr('font');\n\t var fontF = this.getAttr('font-family');\n\t var fontW = this.getAttr('font-weight');\n\t\n\t if (font) this.text.attr({ 'font': font });\n\t if (fontF) this.text.attr({ 'font-family': fontF });\n\t if (fontW) this.text.attr({ 'font-weight': fontW });\n\t\n\t if (options.link) { this.text.attr('href', options.link); }\n\t \n\t //ndrqu Add click function with event and options params\n\t if (options.function) { \n\t this.text.attr({ 'cursor' : 'pointer' });\n\t\n\t this.text.node.addEventListener(\"click\", function(evt) {\n\t window[options.function](evt,options);\n\t }, false);\n\t }\n\t\n\t if (options.target) { this.text.attr('target', options.target); }\n\t\n\t var maxWidth = this.getAttr('maxWidth');\n\t if (maxWidth) {\n\t // using this approach: http://stackoverflow.com/a/3153457/22466\n\t var words = options.text.split(' ');\n\t var tempText = \"\";\n\t for (var i=0, ii=words.length; i<ii; i++) {\n\t var word = words[i];\n\t this.text.attr(\"text\", tempText + \" \" + word);\n\t if (this.text.getBBox().width > maxWidth) {\n\t tempText += \"\\n\" + word;\n\t } else {\n\t tempText += \" \" + word;\n\t }\n\t }\n\t this.text.attr(\"text\", tempText.substring(1));\n\t }\n\t\n\t this.group.push(this.text);\n\t\n\t if (symbol) {\n\t var tmpMargin = this.getAttr('text-margin');\n\t\n\t symbol.attr({\n\t 'fill' : this.getAttr('fill'),\n\t 'stroke' : this.getAttr('element-color'),\n\t 'stroke-width' : this.getAttr('line-width'),\n\t 'width' : this.text.getBBox().width + 2 * tmpMargin,\n\t 'height' : this.text.getBBox().height + 2 * tmpMargin\n\t });\n\t\n\t symbol.node.setAttribute('class', this.getAttr('class'));\n\t var roundness = this.getAttr('roundness');\n\t if (!isNaN(roundness)) {\n\t symbol.node.setAttribute('ry', roundness);\n\t symbol.node.setAttribute('rx', roundness);\n\t }\n\t\n\t if (options.link) { symbol.attr('href', options.link); }\n\t if (options.target) { symbol.attr('target', options.target); }\n\t\n\t //ndrqu Add click function with event and options params\n\t if (options.function) { \n\t symbol.node.addEventListener(\"click\", function(evt) {\n\t window[options.function](evt,options);\n\t }, false);\n\t symbol.attr({ 'cursor' : 'pointer' });\n\t }\n\t if (options.key) { symbol.node.id = options.key; }\n\t\n\t this.group.push(symbol);\n\t symbol.insertBefore(this.text);\n\t\n\t this.text.attr({\n\t 'y': symbol.getBBox().height/2\n\t });\n\t\n\t this.initialize();\n\t }\n\t\n\t}\n\t\n\t/* Gets the attribute based on Flowstate, Symbol-Name and default, first found wins */\n\tSymbol.prototype.getAttr = function(attName) {\n\t if (!this.chart) {\n\t return undefined;\n\t }\n\t var opt3 = (this.chart.options) ? this.chart.options[attName] : undefined;\n\t var opt2 = (this.chart.options.symbols) ? this.chart.options.symbols[this.symbolType][attName] : undefined;\n\t var opt1;\n\t if (this.chart.options.flowstate && this.chart.options.flowstate[this.flowstate]) {\n\t opt1 = this.chart.options.flowstate[this.flowstate][attName];\n\t }\n\t return (opt1 || opt2 || opt3);\n\t};\n\t\n\tSymbol.prototype.initialize = function() {\n\t this.group.transform('t' + this.getAttr('line-width') + ',' + this.getAttr('line-width'));\n\t\n\t this.width = this.group.getBBox().width;\n\t this.height = this.group.getBBox().height;\n\t};\n\t\n\tSymbol.prototype.getCenter = function() {\n\t return {x: this.getX() + this.width/2,\n\t y: this.getY() + this.height/2};\n\t};\n\t\n\tSymbol.prototype.getX = function() {\n\t return this.group.getBBox().x;\n\t};\n\t\n\tSymbol.prototype.getY = function() {\n\t return this.group.getBBox().y;\n\t};\n\t\n\tSymbol.prototype.shiftX = function(x) {\n\t this.group.transform('t' + (this.getX() + x) + ',' + this.getY());\n\t};\n\t\n\tSymbol.prototype.setX = function(x) {\n\t this.group.transform('t' + x + ',' + this.getY());\n\t};\n\t\n\tSymbol.prototype.shiftY = function(y) {\n\t this.group.transform('t' + this.getX() + ',' + (this.getY() + y));\n\t};\n\t\n\tSymbol.prototype.setY = function(y) {\n\t this.group.transform('t' + this.getX() + ',' + y);\n\t};\n\t\n\tSymbol.prototype.getTop = function() {\n\t var y = this.getY();\n\t var x = this.getX() + this.width/2;\n\t return {x: x, y: y};\n\t};\n\t\n\tSymbol.prototype.getBottom = function() {\n\t var y = this.getY() + this.height;\n\t var x = this.getX() + this.width/2;\n\t return {x: x, y: y};\n\t};\n\t\n\tSymbol.prototype.getLeft = function() {\n\t var y = this.getY() + this.group.getBBox().height/2;\n\t var x = this.getX();\n\t return {x: x, y: y};\n\t};\n\t\n\tSymbol.prototype.getRight = function() {\n\t var y = this.getY() + this.group.getBBox().height/2;\n\t var x = this.getX() + this.group.getBBox().width;\n\t return {x: x, y: y};\n\t};\n\t\n\tSymbol.prototype.render = function() {\n\t if (this.next) {\n\t\n\t var self = this;\n\t var lineLength = this.getAttr('line-length');\n\t\n\t if (this.next_direction === 'right') {\n\t\n\t var rightPoint = this.getRight();\n\t\n\t if (!this.next.isPositioned) {\n\t this.next.setY(rightPoint.y - this.next.height/2);\n\t this.next.shiftX(this.group.getBBox().x + this.width + lineLength);\n\t\n\t (function shift() {\n\t var hasSymbolUnder = false;\n\t var symb;\n\t for (var i = 0, len = self.chart.symbols.length; i < len; i++) {\n\t symb = self.chart.symbols[i];\n\t\n\t var diff = Math.abs(symb.getCenter().x - self.next.getCenter().x);\n\t if (symb.getCenter().y > self.next.getCenter().y && diff <= self.next.width/2) {\n\t hasSymbolUnder = true;\n\t break;\n\t }\n\t }\n\t\n\t if (hasSymbolUnder) {\n\t if (self.next.symbolType === 'end') return;\n\t self.next.setX(symb.getX() + symb.width + lineLength);\n\t shift();\n\t }\n\t })();\n\t\n\t this.next.isPositioned = true;\n\t\n\t this.next.render();\n\t }\n\t } else if (this.next_direction === 'left') {\n\t\n\t var leftPoint = this.getLeft();\n\t\n\t if (!this.next.isPositioned) {\n\t this.next.setY(leftPoint.y - this.next.height/2);\n\t this.next.shiftX(-(this.group.getBBox().x + this.width + lineLength));\n\t\n\t (function shift() {\n\t var hasSymbolUnder = false;\n\t var symb;\n\t for (var i = 0, len = self.chart.symbols.length; i < len; i++) {\n\t symb = self.chart.symbols[i];\n\t\n\t var diff = Math.abs(symb.getCenter().x - self.next.getCenter().x);\n\t if (symb.getCenter().y > self.next.getCenter().y && diff <= self.next.width/2) {\n\t hasSymbolUnder = true;\n\t break;\n\t }\n\t }\n\t\n\t if (hasSymbolUnder) {\n\t if (self.next.symbolType === 'end') return;\n\t self.next.setX(symb.getX() + symb.width + lineLength);\n\t shift();\n\t }\n\t })();\n\t\n\t this.next.isPositioned = true;\n\t\n\t this.next.render();\n\t }\n\t } else {\n\t var bottomPoint = this.getBottom();\n\t\n\t if (!this.next.isPositioned) {\n\t this.next.shiftY(this.getY() + this.height + lineLength);\n\t this.next.setX(bottomPoint.x - this.next.width/2);\n\t this.next.isPositioned = true;\n\t\n\t this.next.render();\n\t }\n\t }\n\t }\n\t};\n\t\n\tSymbol.prototype.renderLines = function() {\n\t if (this.next) {\n\t if (this.next_direction) {\n\t this.drawLineTo(this.next, this.getAttr('arrow-text') || '', this.next_direction);\n\t } else {\n\t this.drawLineTo(this.next, this.getAttr('arrow-text') || '');\n\t }\n\t }\n\t};\n\t\n\tSymbol.prototype.drawLineTo = function(symbol, text, origin) {\n\t if (this.connectedTo.indexOf(symbol) < 0) {\n\t this.connectedTo.push(symbol);\n\t }\n\t\n\t var x = this.getCenter().x,\n\t y = this.getCenter().y,\n\t right = this.getRight(),\n\t bottom = this.getBottom(),\n\t top = this.getTop(),\n\t left = this.getLeft();\n\t\n\t var symbolX = symbol.getCenter().x,\n\t symbolY = symbol.getCenter().y,\n\t symbolTop = symbol.getTop(),\n\t symbolRight = symbol.getRight(),\n\t symbolLeft = symbol.getLeft();\n\t\n\t var isOnSameColumn = x === symbolX,\n\t isOnSameLine = y === symbolY,\n\t isUnder = y < symbolY,\n\t isUpper = y > symbolY || this === symbol,\n\t isLeft = x > symbolX,\n\t isRight = x < symbolX;\n\t\n\t var maxX = 0,\n\t line,\n\t yOffset,\n\t lineLength = this.getAttr('line-length'),\n\t lineWith = this.getAttr('line-width');\n\t\n\t if ((!origin || origin === 'bottom') && isOnSameColumn && isUnder) {\n\t if (symbol.topLines.length === 0 && this.bottomLines.length === 0) {\n\t line = drawLine(this.chart, bottom, symbolTop, text);\n\t } else {\n\t yOffset = Math.max(symbol.topLines.length, this.bottomLines.length) * 10;\n\t line = drawLine(this.chart, bottom, [\n\t {x: symbolTop.x, y: symbolTop.y - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y}\n\t ], text);\n\t }\n\t this.bottomLines.push(line);\n\t symbol.topLines.push(line);\n\t this.bottomStart = true;\n\t symbol.topEnd = true;\n\t maxX = bottom.x;\n\t } else if ((!origin || origin === 'right') && isOnSameLine && isRight) {\n\t if (symbol.leftLines.length === 0 && this.rightLines.length === 0) {\n\t line = drawLine(this.chart, right, symbolLeft, text);\n\t } else {\n\t yOffset = Math.max(symbol.leftLines.length, this.rightLines.length) * 10;\n\t line = drawLine(this.chart, right, [\n\t {x: right.x, y: right.y - yOffset},\n\t {x: right.x, y: symbolLeft.y - yOffset},\n\t {x: symbolLeft.x, y: symbolLeft.y - yOffset},\n\t {x: symbolLeft.x, y: symbolLeft.y}\n\t ], text);\n\t }\n\t this.rightLines.push(line);\n\t symbol.leftLines.push(line);\n\t this.rightStart = true;\n\t symbol.leftEnd = true;\n\t maxX = symbolLeft.x;\n\t } else if ((!origin || origin === 'left') && isOnSameLine && isLeft) {\n\t if (symbol.rightLines.length === 0 && this.leftLines.length === 0) {\n\t line = drawLine(this.chart, left, symbolRight, text);\n\t } else {\n\t yOffset = Math.max(symbol.rightLines.length, this.leftLines.length) * 10;\n\t line = drawLine(this.chart, right, [\n\t {x: right.x, y: right.y - yOffset},\n\t {x: right.x, y: symbolRight.y - yOffset},\n\t {x: symbolRight.x, y: symbolRight.y - yOffset},\n\t {x: symbolRight.x, y: symbolRight.y}\n\t ], text);\n\t }\n\t this.leftLines.push(line);\n\t symbol.rightLines.push(line);\n\t this.leftStart = true;\n\t symbol.rightEnd = true;\n\t maxX = symbolRight.x;\n\t } else if ((!origin || origin === 'right') && isOnSameColumn && isUpper) {\n\t yOffset = Math.max(symbol.topLines.length, this.rightLines.length) * 10;\n\t line = drawLine(this.chart, right, [\n\t {x: right.x + lineLength/2, y: right.y - yOffset},\n\t {x: right.x + lineLength/2, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y}\n\t ], text);\n\t this.rightLines.push(line);\n\t symbol.topLines.push(line);\n\t this.rightStart = true;\n\t symbol.topEnd = true;\n\t maxX = right.x + lineLength/2;\n\t } else if ((!origin || origin === 'right') && isOnSameColumn && isUnder) {\n\t yOffset = Math.max(symbol.topLines.length, this.rightLines.length) * 10;\n\t line = drawLine(this.chart, right, [\n\t {x: right.x + lineLength/2, y: right.y - yOffset},\n\t {x: right.x + lineLength/2, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y}\n\t ], text);\n\t this.rightLines.push(line);\n\t symbol.topLines.push(line);\n\t this.rightStart = true;\n\t symbol.topEnd = true;\n\t maxX = right.x + lineLength/2;\n\t } else if ((!origin || origin === 'bottom') && isLeft) {\n\t yOffset = Math.max(symbol.topLines.length, this.bottomLines.length) * 10;\n\t if (this.leftEnd && isUpper) {\n\t line = drawLine(this.chart, bottom, [\n\t {x: bottom.x, y: bottom.y + lineLength/2 - yOffset},\n\t {x: bottom.x + (bottom.x - symbolTop.x)/2, y: bottom.y + lineLength/2 - yOffset},\n\t {x: bottom.x + (bottom.x - symbolTop.x)/2, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y}\n\t ], text);\n\t } else {\n\t line = drawLine(this.chart, bottom, [\n\t {x: bottom.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y}\n\t ], text);\n\t }\n\t this.bottomLines.push(line);\n\t symbol.topLines.push(line);\n\t this.bottomStart = true;\n\t symbol.topEnd = true;\n\t maxX = bottom.x + (bottom.x - symbolTop.x)/2;\n\t } else if ((!origin || origin === 'bottom') && isRight && isUnder) {\n\t yOffset = Math.max(symbol.topLines.length, this.bottomLines.length) * 10;\n\t line = drawLine(this.chart, bottom, [\n\t {x: bottom.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y}\n\t ], text);\n\t this.bottomLines.push(line);\n\t symbol.topLines.push(line);\n\t this.bottomStart = true;\n\t symbol.topEnd = true;\n\t maxX = bottom.x;\n\t if (symbolTop.x > maxX) maxX = symbolTop.x;\n\t } else if ((!origin || origin === 'bottom') && isRight) {\n\t yOffset = Math.max(symbol.topLines.length, this.bottomLines.length) * 10;\n\t line = drawLine(this.chart, bottom, [\n\t {x: bottom.x, y: bottom.y + lineLength/2 - yOffset},\n\t {x: bottom.x + (bottom.x - symbolTop.x)/2, y: bottom.y + lineLength/2 - yOffset},\n\t {x: bottom.x + (bottom.x - symbolTop.x)/2, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y}\n\t ], text);\n\t this.bottomLines.push(line);\n\t symbol.topLines.push(line);\n\t this.bottomStart = true;\n\t symbol.topEnd = true;\n\t maxX = bottom.x + (bottom.x - symbolTop.x)/2;\n\t } else if ((origin && origin === 'right') && isLeft) {\n\t yOffset = Math.max(symbol.topLines.length, this.rightLines.length) * 10;\n\t line = drawLine(this.chart, right, [\n\t {x: right.x + lineLength/2, y: right.y},\n\t {x: right.x + lineLength/2, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y}\n\t ], text);\n\t this.rightLines.push(line);\n\t symbol.topLines.push(line);\n\t this.rightStart = true;\n\t symbol.topEnd = true;\n\t maxX = right.x + lineLength/2;\n\t } else if ((origin && origin === 'right') && isRight) {\n\t yOffset = Math.max(symbol.topLines.length, this.rightLines.length) * 10;\n\t line = drawLine(this.chart, right, [\n\t {x: symbolTop.x, y: right.y - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y - yOffset}\n\t ], text);\n\t this.rightLines.push(line);\n\t symbol.topLines.push(line);\n\t this.rightStart = true;\n\t symbol.topEnd = true;\n\t maxX = right.x + lineLength/2;\n\t } else if ((origin && origin === 'bottom') && isOnSameColumn && isUpper) {\n\t yOffset = Math.max(symbol.topLines.length, this.bottomLines.length) * 10;\n\t line = drawLine(this.chart, bottom, [\n\t {x: bottom.x, y: bottom.y + lineLength/2 - yOffset},\n\t {x: right.x + lineLength/2, y: bottom.y + lineLength/2 - yOffset},\n\t {x: right.x + lineLength/2, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y}\n\t ], text);\n\t this.bottomLines.push(line);\n\t symbol.topLines.push(line);\n\t this.bottomStart = true;\n\t symbol.topEnd = true;\n\t maxX = bottom.x + lineLength/2;\n\t } else if ((origin === 'left') && isOnSameColumn && isUpper) {\n\t var diffX = left.x - lineLength/2;\n\t if (symbolLeft.x < left.x) {\n\t diffX = symbolLeft.x - lineLength/2;\n\t }\n\t yOffset = Math.max(symbol.topLines.length, this.leftLines.length) * 10;\n\t line = drawLine(this.chart, left, [\n\t {x: diffX, y: left.y - yOffset},\n\t {x: diffX, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y}\n\t ], text);\n\t this.leftLines.push(line);\n\t symbol.topLines.push(line);\n\t this.leftStart = true;\n\t symbol.topEnd = true;\n\t maxX = left.x;\n\t } else if ((origin === 'left')) {\n\t yOffset = Math.max(symbol.topLines.length, this.leftLines.length) * 10;\n\t line = drawLine(this.chart, left, [\n\t {x: symbolTop.x + (left.x - symbolTop.x)/2, y: left.y},\n\t {x: symbolTop.x + (left.x - symbolTop.x)/2, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y}\n\t ], text);\n\t this.leftLines.push(line);\n\t symbol.topLines.push(line);\n\t this.leftStart = true;\n\t symbol.topEnd = true;\n\t maxX = left.x;\n\t } else if ((origin === 'top')) {\n\t yOffset = Math.max(symbol.topLines.length, this.topLines.length) * 10;\n\t line = drawLine(this.chart, top, [\n\t {x: top.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n\t {x: symbolTop.x, y: symbolTop.y}\n\t ], text);\n\t this.topLines.push(line);\n\t symbol.topLines.push(line);\n\t this.topStart = true;\n\t symbol.topEnd = true;\n\t maxX = top.x;\n\t }\n\t\n\t //update line style\n\t if (this.lineStyle[symbol.key] && line){\n\t line.attr(this.lineStyle[symbol.key]);\n\t }\n\t\n\t if (line) {\n\t for (var l = 0, llen = this.chart.lines.length; l < llen; l++) {\n\t var otherLine = this.chart.lines[l];\n\t\n\t var ePath = otherLine.attr('path'),\n\t lPath = line.attr('path');\n\t\n\t for (var iP = 0, lenP = ePath.length - 1; iP < lenP; iP++) {\n\t var newPath = [];\n\t newPath.push(['M', ePath[iP][1], ePath[iP][2]]);\n\t newPath.push(['L', ePath[iP + 1][1], ePath[iP + 1][2]]);\n\t\n\t var line1_from_x = newPath[0][1];\n\t var line1_from_y = newPath[0][2];\n\t var line1_to_x = newPath[1][1];\n\t var line1_to_y = newPath[1][2];\n\t\n\t for (var lP = 0, lenlP = lPath.length - 1; lP < lenlP; lP++) {\n\t var newLinePath = [];\n\t newLinePath.push(['M', lPath[lP][1], lPath[lP][2]]);\n\t newLinePath.push(['L', lPath[lP + 1][1], lPath[lP + 1][2]]);\n\t\n\t var line2_from_x = newLinePath[0][1];\n\t var line2_from_y = newLinePath[0][2];\n\t var line2_to_x = newLinePath[1][1];\n\t var line2_to_y = newLinePath[1][2];\n\t\n\t var res = checkLineIntersection(line1_from_x, line1_from_y, line1_to_x, line1_to_y, line2_from_x, line2_from_y, line2_to_x, line2_to_y);\n\t if (res.onLine1 && res.onLine2) {\n\t\n\t var newSegment;\n\t if (line2_from_y === line2_to_y) {\n\t if (line2_from_x > line2_to_x) {\n\t newSegment = ['L', res.x + lineWith * 2, line2_from_y];\n\t lPath.splice(lP + 1, 0, newSegment);\n\t newSegment = ['C', res.x + lineWith * 2, line2_from_y, res.x, line2_from_y - lineWith * 4, res.x - lineWith * 2, line2_from_y];\n\t lPath.splice(lP + 2, 0, newSegment);\n\t line.attr('path', lPath);\n\t } else {\n\t newSegment = ['L', res.x - lineWith * 2, line2_from_y];\n\t lPath.splice(lP + 1, 0, newSegment);\n\t newSegment = ['C', res.x - lineWith * 2, line2_from_y, res.x, line2_from_y - lineWith * 4, res.x + lineWith * 2, line2_from_y];\n\t lPath.splice(lP + 2, 0, newSegment);\n\t line.attr('path', lPath);\n\t }\n\t } else {\n\t if (line2_from_y > line2_to_y) {\n\t newSegment = ['L', line2_from_x, res.y + lineWith * 2];\n\t lPath.splice(lP + 1, 0, newSegment);\n\t newSegment = ['C', line2_from_x, res.y + lineWith * 2, line2_from_x + lineWith * 4, res.y, line2_from_x, res.y - lineWith * 2];\n\t lPath.splice(lP + 2, 0, newSegment);\n\t line.attr('path', lPath);\n\t } else {\n\t newSegment = ['L', line2_from_x, res.y - lineWith * 2];\n\t lPath.splice(lP + 1, 0, newSegment);\n\t newSegment = ['C', line2_from_x, res.y - lineWith * 2, line2_from_x + lineWith * 4, res.y, line2_from_x, res.y + lineWith * 2];\n\t lPath.splice(lP + 2, 0, newSegment);\n\t line.attr('path', lPath);\n\t }\n\t }\n\t\n\t lP += 2;\n\t }\n\t }\n\t }\n\t }\n\t\n\t this.chart.lines.push(line);\n\t if (this.chart.minXFromSymbols === undefined || this.chart.minXFromSymbols > left.x) {\n\t this.chart.minXFromSymbols = left.x;\n\t }\n\t }\n\t\n\t if (!this.chart.maxXFromLine || (this.chart.maxXFromLine && maxX > this.chart.maxXFromLine)) {\n\t this.chart.maxXFromLine = maxX;\n\t }\n\t};\n\t\n\tmodule.exports = Symbol;\n\n\n/***/ }),\n/* 3 */\n/*!************************************!*\\\n !*** ./src/flowchart.functions.js ***!\n \\************************************/\n/***/ (function(module, exports) {\n\n\tfunction drawPath(chart, location, points) {\n\t var i, len;\n\t var path = 'M{0},{1}';\n\t for (i = 2, len = 2 * points.length + 2; i < len; i+=2) {\n\t path += ' L{' + i + '},{' + (i + 1) + '}';\n\t }\n\t var pathValues = [location.x, location.y];\n\t for (i = 0, len = points.length; i < len; i++) {\n\t pathValues.push(points[i].x);\n\t pathValues.push(points[i].y);\n\t }\n\t var symbol = chart.paper.path(path, pathValues);\n\t symbol.attr('stroke', chart.options['element-color']);\n\t symbol.attr('stroke-width', chart.options['line-width']);\n\t\n\t var font = chart.options.font;\n\t var fontF = chart.options['font-family'];\n\t var fontW = chart.options['font-weight'];\n\t\n\t if (font) symbol.attr({ 'font': font });\n\t if (fontF) symbol.attr({ 'font-family': fontF });\n\t if (fontW) symbol.attr({ 'font-weight': fontW });\n\t\n\t return symbol;\n\t}\n\t\n\tfunction drawLine(chart, from, to, text) {\n\t var i, len;\n\t\n\t if (Object.prototype.toString.call(to) !== '[object Array]') {\n\t to = [to];\n\t }\n\t\n\t var path = 'M{0},{1}';\n\t for (i = 2, len = 2 * to.length + 2; i < len; i+=2) {\n\t path += ' L{' + i + '},{' + (i + 1) + '}';\n\t }\n\t var pathValues = [from.x, from.y];\n\t for (i = 0, len = to.length; i < len; i++) {\n\t pathValues.push(to[i].x);\n\t pathValues.push(to[i].y);\n\t }\n\t\n\t var line = chart.paper.path(path, pathValues);\n\t line.attr({\n\t stroke: chart.options['line-color'],\n\t 'stroke-width': chart.options['line-width'],\n\t 'arrow-end': chart.options['arrow-end']\n\t });\n\t\n\t var font = chart.options.font;\n\t var fontF = chart.options['font-family'];\n\t var fontW = chart.options['font-weight'];\n\t\n\t if (font) line.attr({ 'font': font });\n\t if (fontF) line.attr({ 'font-family': fontF });\n\t if (fontW) line.attr({ 'font-weight': fontW });\n\t\n\t if (text) {\n\t\n\t var centerText = false;\n\t\n\t var textPath = chart.paper.text(0, 0, text);\n\t var textAnchor = 'start';\n\t\n\t var isHorizontal = false;\n\t var firstTo = to[0];\n\t\n\t if (from.y === firstTo.y) {\n\t isHorizontal = true;\n\t }\n\t\n\t var x = 0,\n\t y = 0;\n\t\n\t if (centerText) {\n\t if (from.x > firstTo.x) {\n\t x = from.x - (from.x - firstTo.x)/2;\n\t } else {\n\t x = firstTo.x - (firstTo.x - from.x)/2;\n\t }\n\t\n\t if (from.y > firstTo.y) {\n\t y = from.y - (from.y - firstTo.y)/2;\n\t } else {\n\t y = firstTo.y - (firstTo.y - from.y)/2;\n\t }\n\t\n\t if (isHorizontal) {\n\t x -= textPath.getBBox().width/2;\n\t y -= chart.options['text-margin'];\n\t } else {\n\t x += chart.options['text-margin'];\n\t y -= textPath.getBBox().height/2;\n\t }\n\t } else {\n\t x = from.x;\n\t y = from.y;\n\t\n\t if (isHorizontal) {\n\t if (from.x > firstTo.x) {\n\t x -= chart.options['text-margin']/2;\n\t textAnchor = 'end';\n\t } else {\n\t x += chart.options['text-margin']/2;\n\t }\n\t y -= chart.options['text-margin'];\n\t } else {\n\t x += chart.options['text-margin']/2;\n\t y += chart.options['text-margin'];\n\t if (from.y > firstTo.y) {\n\t y -= chart.options['text-margin']*2;\n\t }\n\t }\n\t }\n\t\n\t textPath.attr({\n\t 'text-anchor': textAnchor,\n\t 'font-size': chart.options['font-size'],\n\t 'fill': chart.options['font-color'],\n\t x: x,\n\t y: y\n\t });\n\t\n\t if (font) textPath.attr({ 'font': font });\n\t if (fontF) textPath.attr({ 'font-family': fontF });\n\t if (fontW) textPath.attr({ 'font-weight': fontW });\n\t }\n\t\n\t return line;\n\t}\n\t\n\tfunction checkLineIntersection(line1StartX, line1StartY, line1EndX, line1EndY, line2StartX, line2StartY, line2EndX, line2EndY) {\n\t // if the lines intersect, the result contains the x and y of the intersection (treating the lines as infinite) and booleans for whether line segment 1 or line segment 2 contain the point\n\t var denominator, a, b, numerator1, numerator2, result = {\n\t x: null,\n\t y: null,\n\t onLine1: false,\n\t onLine2: false\n\t };\n\t denominator = ((line2EndY - line2StartY) * (line1EndX - line1StartX)) - ((line2EndX - line2StartX) * (line1EndY - line1StartY));\n\t if (denominator === 0) {\n\t return result;\n\t }\n\t a = line1StartY - line2StartY;\n\t b = line1StartX - line2StartX;\n\t numerator1 = ((line2EndX - line2StartX) * a) - ((line2EndY - line2StartY) * b);\n\t numerator2 = ((line1EndX - line1StartX) * a) - ((line1EndY - line1StartY) * b);\n\t a = numerator1 / denominator;\n\t b = numerator2 / denominator;\n\t\n\t // if we cast these lines infinitely in both directions, they intersect here:\n\t result.x = line1StartX + (a * (line1EndX - line1StartX));\n\t result.y = line1StartY + (a * (line1EndY - line1StartY));\n\t /*\n\t // it is worth noting that this should be the same as:\n\t x = line2StartX + (b * (line2EndX - line2StartX));\n\t y = line2StartX + (b * (line2EndY - line2StartY));\n\t */\n\t // if line1 is a segment and line2 is infinite, they intersect if:\n\t if (a > 0 && a < 1) {\n\t result.onLine1 = true;\n\t }\n\t // if line2 is a segment and line1 is infinite, they intersect if:\n\t if (b > 0 && b < 1) {\n\t result.onLine2 = true;\n\t }\n\t // if line1 and line2 are segments, they intersect if both of the above are true\n\t return result;\n\t}\n\t\n\tmodule.exports = {\n\t\tdrawPath: drawPath,\n\t\tdrawLine: drawLine,\n\t\tcheckLineIntersection: checkLineIntersection\n\t};\n\n\n/***/ }),\n/* 4 */\n/*!********************************!*\\\n !*** ./src/flowchart.parse.js ***!\n \\********************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar FlowChart = __webpack_require__(/*! ./flowchart.chart */ 7);\n\tvar Start = __webpack_require__(/*! ./flowchart.symbol.start */ 15);\n\tvar End = __webpack_require__(/*! ./flowchart.symbol.end */ 10);\n\tvar Operation = __webpack_require__(/*! ./flowchart.symbol.operation */ 13);\n\tvar InputOutput = __webpack_require__(/*! ./flowchart.symbol.inputoutput */ 12);\n\tvar Input = __webpack_require__(/*! ./flowchart.symbol.input */ 11); //tds\n\tvar Output = __webpack_require__(/*! ./flowchart.symbol.output */ 14); //tds\n\tvar Subroutine = __webpack_require__(/*! ./flowchart.symbol.subroutine */ 16);\n\tvar Condition = __webpack_require__(/*! ./flowchart.symbol.condition */ 5);\n\tvar Parallel = __webpack_require__(/*! ./flowchart.symbol.parallel */ 6);\n\t\n\t\n\tfunction parse(input) {\n\t input = input || '';\n\t input = input.trim();\n\t\n\t var chart = {\n\t symbols: {},\n\t start: null,\n\t drawSVG: function(container, options) {\n\t var self = this;\n\t\n\t if (this.diagram) {\n\t this.diagram.clean();\n\t }\n\t\n\t var diagram = new FlowChart(container, options);\n\t this.diagram = diagram;\n\t var dispSymbols = {};\n\t\n\t function getDisplaySymbol(s) {\n\t if (dispSymbols[s.key]) {\n\t return dispSymbols[s.key];\n\t }\n\t\n\t switch (s.symbolType) {\n\t case 'start':\n\t dispSymbols[s.key] = new Start(diagram, s);\n\t break;\n\t case 'end':\n\t dispSymbols[s.key] = new End(diagram, s);\n\t break;\n\t case 'operation':\n\t dispSymbols[s.key] = new Operation(diagram, s);\n\t break;\n\t case 'inputoutput':\n\t dispSymbols[s.key] = new InputOutput(diagram, s);\n\t break;\n\t case 'input':\n\t dispSymbols[s.key] = new Input(diagram, s); //tds\n\t break; \n\t case 'output':\n\t dispSymbols[s.key] = new Output(diagram, s); //tds\n\t break; \n\t case 'subroutine':\n\t dispSymbols[s.key] = new Subroutine(diagram, s);\n\t break;\n\t case 'condition':\n\t dispSymbols[s.key] = new Condition(diagram, s);\n\t break;\n\t case 'parallel':\n\t dispSymbols[s.key] = new Parallel(diagram, s);\n\t break;\n\t default:\n\t return new Error('Wrong symbol type!');\n\t }\n\t\n\t return dispSymbols[s.key];\n\t }\n\t\n\t (function constructChart(s, prevDisp, prev) {\n\t var dispSymb = getDisplaySymbol(s);\n\t\n\t if (self.start === s) {\n\t diagram.startWith(dispSymb);\n\t } else if (prevDisp && prev && !prevDisp.pathOk) {\n\t if (prevDisp instanceof(Condition)) {\n\t if (prev.yes === s) {\n\t prevDisp.yes(dispSymb);\n\t }\n\t if (prev.no === s) {\n\t prevDisp.no(dispSymb);\n\t }\n\t } else if (prevDisp instanceof(Parallel)) {\n\t if (prev.path1 === s) {\n\t prevDisp.path1(dispSymb);\n\t }\n\t if (prev.path2 === s) {\n\t prevDisp.path2(dispSymb);\n\t }\n\t if (prev.path3 === s) {\n\t prevDisp.path3(dispSymb);\n\t }\n\t } else {\n\t prevDisp.then(dispSymb);\n\t }\n\t }\n\t\n\t if (dispSymb.pathOk) {\n\t return dispSymb;\n\t }\n\t\n\t if (dispSymb instanceof(Condition)) {\n\t if (s.yes) {\n\t constructChart(s.yes, dispSymb, s);\n\t }\n\t if (s.no) {\n\t constructChart(s.no, dispSymb, s);\n\t }\n\t } else if (dispSymb instanceof(Parallel)) {\n\t if (s.path1) {\n\t constructChart(s.path1, dispSymb, s);\n\t }\n\t if (s.path2) {\n\t constructChart(s.path2, dispSymb, s);\n\t }\n\t if (s.path3) {\n\t constructChart(s.path3, dispSymb, s);\n\t }\n\t } else if (s.next) {\n\t constructChart(s.next, dispSymb, s);\n\t }\n\t\n\t return dispSymb;\n\t })(this.start);\n\t\n\t diagram.render();\n\t },\n\t clean: function() {\n\t this.diagram.clean();\n\t },\n\t options: function() {\n\t return this.diagram.options;\n\t }\n\t };\n\t\n\t var lines = [];\n\t var prevBreak = 0;\n\t for (var i0 = 1, i0len = input.length; i0 < i0len; i0++) {\n\t if(input[i0] === '\\n' && input[i0 - 1] !== '\\\\') {\n\t var line0 = input.substring(prevBreak, i0);\n\t prevBreak = i0 + 1;\n\t lines.push(line0.replace(/\\\\\\n/g, '\\n'));\n\t }\n\t }\n\t\n\t if (prevBreak < input.length) {\n\t lines.push(input.substr(prevBreak));\n\t }\n\t\n\t for (var l = 1, len = lines.length; l < len;) {\n\t var currentLine = lines[l];\n\t\n\t if (currentLine.indexOf('->') < 0 && currentLine.indexOf('=>') < 0 && currentLine.indexOf('@>') < 0) {\n\t lines[l - 1] += '\\n' + currentLine;\n\t lines.splice(l, 1);\n\t len--;\n\t } else {\n\t l++;\n\t }\n\t }\n\t\n\t function getStyle(s){\n\t var startIndex = s.indexOf('(') + 1;\n\t var endIndex = s.indexOf(')');\n\t if (startIndex >= 0 && endIndex >= 0) {\n\t return s.substring(startIndex,endIndex);\n\t }\n\t return '{}';\n\t }\n\t\n\t function getSymbValue(s){\n\t var startIndex = s.indexOf('(') + 1;\n\t var endIndex = s.indexOf(')');\n\t if (startIndex >= 0 && endIndex >= 0) {\n\t return s.substring(startIndex,endIndex);\n\t }\n\t return '';\n\t }\n\t\n\t function getSymbol(s) {\n\t var startIndex = s.indexOf('(') + 1;\n\t var endIndex = s.indexOf(')');\n\t if (startIndex >= 0 && endIndex >= 0) {\n\t return chart.symbols[s.substring(0, startIndex - 1)];\n\t }\n\t return chart.symbols[s];\n\t }\n\t\n\t function getNextPath(s) {\n\t var next = 'next';\n\t var startIndex = s.indexOf('(') + 1;\n\t var endIndex = s.indexOf(')');\n\t if (startIndex >= 0 && endIndex >= 0) {\n\t next = flowSymb.substring(startIndex, endIndex);\n\t if (next.indexOf(',') < 0) {\n\t if (next !== 'yes' && next !== 'no') {\n\t next = 'next, ' + next;\n\t }\n\t }\n\t }\n\t return next;\n\t }\n\t \n\t function getAnnotation(s) {\n\t\tvar startIndex = s.indexOf(\"(\") + 1, endIndex = s.indexOf(\")\");\n\t\tvar tmp = s.substring(startIndex, endIndex);\n\t\tif(tmp.indexOf(\",\") > 0) { tmp = tmp.substring(0, tmp.indexOf(\",\")); }\n\t\tvar tmp_split = tmp.split(\"@\");\n\t\tif(tmp_split.length > 1)\n\t\t\treturn startIndex >= 0 && endIndex >= 0 ? tmp_split[1] : \"\";\n\t }\n\t\n\t while (lines.length > 0) {\n\t var line = lines.splice(0, 1)[0].trim();\n\t\n\t if (line.indexOf('=>') >= 0) {\n\t // definition\n\t var parts = line.split('=>');\n\t var symbol = {\n\t key: parts[0].replace(/\\(.*\\)/, ''),\n\t symbolType: parts[1],\n\t text: null,\n\t link: null,\n\t target: null,\n\t flowstate: null,\n\t function: null,\n\t lineStyle: {},\n\t params: {}\n\t };\n\t\n\t //parse parameters\n\t var params = parts[0].match(/\\((.*)\\)/);\n\t if (params && params.length > 1){\n\t var entries = params[1].split(',');\n\t for(var i = 0; i < entries.length; i++) {\n\t var entry = entries[i].split('=');\n\t if (entry.length == 2) {\n\t symbol.params[entry[0]] = entry[1];\n\t }\n\t }\n\t }\n\t\n\t var sub;\n\t\n\t if (symbol.symbolType.indexOf(': ') >= 0) {\n\t sub = symbol.symbolType.split(': ');\n\t symbol.symbolType = sub.shift();\n\t symbol.text = sub.join(': ');\n\t }\n\t\n\t if (symbol.text && symbol.text.indexOf(':$') >= 0) {\n\t sub = symbol.text.split(':$');\n\t symbol.text = sub.shift();\n\t symbol.function = sub.join(':$');\n\t } else if (symbol.symbolType.indexOf(':$') >= 0) {\n\t sub = symbol.symbolType.split(':$');\n\t symbol.symbolType = sub.shift();\n\t symbol.function = sub.join(':$');\n\t } else if (symbol.text && symbol.text.indexOf(':>') >= 0) {\n\t sub = symbol.text.split(':>');\n\t symbol.text = sub.shift();\n\t symbol.link = sub.join(':>');\n\t } else if (symbol.symbolType.indexOf(':>') >= 0) {\n\t sub = symbol.symbolType.split(':>');\n\t symbol.symbolType = sub.shift();\n\t symbol.link = sub.join(':>');\n\t }\n\t\n\t if (symbol.symbolType.indexOf('\\n') >= 0) {\n\t symbol.symbolType = symbol.symbolType.split('\\n')[0];\n\t }\n\t\n\t /* adding support for links */\n\t if (symbol.link) {\n\t var startIndex = symbol.link.indexOf('[') + 1;\n\t var endIndex = symbol.link.indexOf(']');\n\t if (startIndex >= 0 && endIndex >= 0) {\n\t symbol.target = symbol.link.substring(startIndex, endIndex);\n\t symbol.link = symbol.link.substring(0, startIndex - 1);\n\t }\n\t }\n\t /* end of link support */\n\t\n\t /* adding support for flowstates */\n\t if (symbol.text) {\n\t if (symbol.text.indexOf('|') >= 0) {\n\t var txtAndState = symbol.text.split('|');\n\t symbol.flowstate = txtAndState.pop().trim();\n\t symbol.text = txtAndState.join('|');\n\t }\n\t }\n\t /* end of flowstate support */\n\t\n\t chart.symbols[symbol.key] = symbol;\n\t\n\t } else if (line.indexOf('->') >= 0) {\n\t var ann = getAnnotation(line);\n\t if (ann) {\n\t line = line.replace('@' + ann, ''); \n\t }\n\t // flow\n\t var flowSymbols = line.split('->');\n\t for (var iS = 0, lenS = flowSymbols.length; iS < lenS; iS++) {\n\t var flowSymb = flowSymbols[iS];\n\t var symbVal = getSymbValue(flowSymb);\n\t\n\t if (symbVal === 'true' || symbVal === 'false') {\n\t // map true or false to yes or no respectively\n\t flowSymb = flowSymb.replace('true', 'yes');\n\t flowSymb = flowSymb.replace('false', 'no');\n\t }\n\t \n\t var next = getNextPath(flowSymb);\n\t var realSymb = getSymbol(flowSymb);\n\t\n\t var direction = null;\n\t if (next.indexOf(',') >= 0) {\n\t var condOpt = next.split(',');\n\t next = condOpt[0];\n\t direction = condOpt[1].trim();\n\t }\n\t\n\t if (ann) {\n\t if (realSymb.symbolType === 'condition') {\n\t if (next === \"yes\" || next === \"true\") {\n\t realSymb.yes_annotation = ann;\n\t } else {\n\t realSymb.no_annotation = ann;\n\t }\n\t } else if (realSymb.symbolType === 'parallel') {\n\t if (next === 'path1') {\n\t realSymb.path1_annotation = ann;\n\t } else if (next === 'path2') {\n\t realSymb.path2_annotation = ann;\n\t } else if (next === 'path3') {\n\t realSymb.path3_annotation = ann;\n\t }\n\t }\n\t ann = null;\n\t }\n\t\n\t if (!chart.start) {\n\t chart.start = realSymb;\n\t }\n\t\n\t if (iS + 1 < lenS) {\n\t var nextSymb = flowSymbols[iS + 1];\n\t realSymb[next] = getSymbol(nextSymb);\n\t realSymb['direction_' + next] = direction;\n\t direction = null;\n\t }\n\t }\n\t } else if (line.indexOf('@>') >= 0) {\n\t\n\t // line style\n\t var lineStyleSymbols = line.split('@>');\n\t for (var iSS = 0, lenSS = lineStyleSymbols.length; iSS < lenSS; iSS++) {\n\t if ((iSS + 1) !== lenSS) {\n\t var curSymb = getSymbol(lineStyleSymbols[iSS]);\n\t var nextSymbol = getSymbol(lineStyleSymbols[iSS+1]);\n\t\n\t curSymb['lineStyle'][nextSymbol.key] = JSON.parse(getStyle(lineStyleSymbols[iSS + 1]));\n\t }\n\t }\n\t }\n\t\n\t }\n\t return chart;\n\t}\n\t\n\tmodule.exports = parse;\n\n\n/***/ }),\n/* 5 */\n/*!*******************************************!*\\\n !*** ./src/flowchart.symbol.condition.js ***!\n \\*******************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(/*! ./flowchart.symbol */ 2);\n\tvar inherits = __webpack_require__(/*! ./flowchart.helpers */ 1).inherits;\n\tvar drawAPI = __webpack_require__(/*! ./flowchart.functions */ 3);\n\tvar drawPath = drawAPI.drawPath;\n\t\n\tfunction Condition(chart, options) {\n\t options = options || {};\n\t Symbol.call(this, chart, options);\n\t this.yes_annotation = options.yes_annotation;\n\t this.no_annotation = options.no_annotation;\n\t this.textMargin = this.getAttr('text-margin');\n\t this.yes_direction = options.direction_yes;\n\t this.no_direction = options.direction_no;\n\t if (!this.no_direction && this.yes_direction === 'right') {\n\t this.no_direction = 'bottom';\n\t } else if (!this.yes_direction && this.no_direction === 'bottom') {\n\t this.yes_direction = 'right'\n\t }\n\t this.yes_direction = this.yes_direction || 'bottom';\n\t this.no_direction = this.no_direction || 'right';\n\t\n\t this.text.attr({\n\t x: this.textMargin * 2\n\t });\n\t\n\t var width = this.text.getBBox().width + 3 * this.textMargin;\n\t width += width/2;\n\t var height = this.text.getBBox().height + 2 * this.textMargin;\n\t height += height/2;\n\t height = Math.max(width * 0.5, height);\n\t var startX = width/4;\n\t var startY = height/4;\n\t\n\t this.text.attr({\n\t x: startX + this.textMargin/2\n\t });\n\t\n\t var start = {x: startX, y: startY};\n\t var points = [\n\t {x: startX - width/4, y: startY + height/4},\n\t {x: startX - width/4 + width/2, y: startY + height/4 + height/2},\n\t {x: startX - width/4 + width, y: startY + height/4},\n\t {x: startX - width/4 + width/2, y: startY + height/4 - height/2},\n\t {x: startX - width/4, y: startY + height/4}\n\t ];\n\t\n\t var symbol = drawPath(chart, start, points);\n\t\n\t symbol.attr({\n\t stroke: this.getAttr('element-color'),\n\t 'stroke-width': this.getAttr('line-width'),\n\t fill: this.getAttr('fill')\n\t });\n\t if (options.link) { symbol.attr('href', options.link); }\n\t if (options.target) { symbol.attr('target', options.target); }\n\t if (options.key) { symbol.node.id = options.key; }\n\t symbol.node.setAttribute('class', this.getAttr('class'));\n\t\n\t this.text.attr({\n\t y: symbol.getBBox().height/2\n\t });\n\t\n\t this.group.push(symbol);\n\t symbol.insertBefore(this.text);\n\t this.symbol = symbol\n\t\n\t this.initialize();\n\t}\n\tinherits(Condition, Symbol);\n\t\n\tCondition.prototype.render = function() {\n\t var self = this;\n\t if (this.yes_direction) {\n\t this[this.yes_direction + '_symbol'] = this.yes_symbol;\n\t }\n\t\n\t if (this.no_direction) {\n\t this[this.no_direction + '_symbol'] = this.no_symbol;\n\t }\n\t\n\t var lineLength = this.getAttr('line-length');\n\t\n\t if (this.bottom_symbol) {\n\t var bottomPoint = this.getBottom();\n\t\n\t if (!this.bottom_symbol.isPositioned) {\n\t this.bottom_symbol.shiftY(this.getY() + this.height + lineLength);\n\t this.bottom_symbol.setX(bottomPoint.x - this.bottom_symbol.width/2);\n\t this.bottom_symbol.isPositioned = true;\n\t\n\t this.bottom_symbol.render();\n\t }\n\t }\n\t\n\t if (this.right_symbol) {\n\t var rightPoint = this.getRight();\n\t\n\t if (!this.right_symbol.isPositioned) {\n\t\n\t this.right_symbol.setY(rightPoint.y - this.right_symbol.height/2);\n\t this.right_symbol.shiftX(this.group.getBBox().x + this.width + lineLength);\n\t\n\t (function shift() {\n\t var hasSymbolUnder = false;\n\t var symb;\n\t for (var i = 0, len = self.chart.symbols.length; i < len; i++) {\n\t symb = self.chart.symbols[i];\n\t\n\t if (!self.params['align-next'] || self.params['align-next'] !== 'no') { \n\t var diff = Math.abs(symb.getCenter().x - self.right_symbol.getCenter().x);\n\t if (symb.getCenter().y > self.right_symbol.getCenter().y && diff <= self.right_symbol.width/2) {\n\t hasSymbolUnder = true;\n\t break;\n\t }\n\t }\n\t }\n\t\n\t if (hasSymbolUnder) {\n\t if (self.right_symbol.symbolType === 'end') return;\n\t self.right_symbol.setX(symb.getX() + symb.width + lineLength);\n\t shift();\n\t }\n\t })();\n\t\n\t this.right_symbol.isPositioned = true;\n\t\n\t this.right_symbol.render();\n\t }\n\t }\n\t \n\t if (this.left_symbol) {\n\t var leftPoint = this.getLeft();\n\t \n\t if (!this.left_symbol.isPositioned) {\n\t this.left_symbol.setY(leftPoint.y - this.left_symbol.height / 2);\n\t this.left_symbol.shiftX(-(this.group.getBBox().x + this.width + lineLength));\n\t\n\t (function shift() {\n\t var hasSymbolUnder = false;\n\t var symb;\n\t for (var i = 0, len = self.chart.symbols.length; i < len; i++) {\n\t symb = self.chart.symbols[i];\n\t \n\t if (!self.params['align-next'] || self.params['align-next'] !== 'no') {\n\t var diff = Math.abs(symb.getCenter().x - self.left_symbol.getCenter().x);\n\t if (symb.getCenter().y > self.left_symbol.getCenter().y && diff <= self.left_symbol.width / 2) {\n\t hasSymbolUnder = true;\n\t break;\n\t }\n\t }\n\t }\n\t \n\t if (hasSymbolUnder) {\n\t if (self.left_symbol.symbolType === 'end') return;\n\t self.left_symbol.setX(symb.getX() + symb.width + lineLength);\n\t shift();\n\t }\n\t })();\n\t \n\t this.left_symbol.isPositioned = true;\n\t \n\t this.left_symbol.render();\n\t }\n\t }\n\t};\n\t\n\tCondition.prototype.renderLines = function() {\n\t if (this.yes_symbol) {\n\t this.drawLineTo(this.yes_symbol, this.yes_annotation ? this.yes_annotation : this.getAttr('yes-text'), this.yes_direction);\n\t }\n\t\n\t if (this.no_symbol) {\n\t this.drawLineTo(this.no_symbol, this.no_annotation ? this.no_annotation : this.getAttr('no-text'), this.no_direction);\n\t }\n\t};\n\t\n\tmodule.exports = Condition;\n\n\n/***/ }),\n/* 6 */\n/*!******************************************!*\\\n !*** ./src/flowchart.symbol.parallel.js ***!\n \\******************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(/*! ./flowchart.symbol */ 2);\n\tvar inherits = __webpack_require__(/*! ./flowchart.helpers */ 1).inherits;\n\t\n\tfunction Parallel(chart, options) {\n\t var symbol = chart.paper.rect(0, 0, 0, 0);\n\t options = options || {};\n\t Symbol.call(this, chart, options, symbol);\n\t this.path1_annotation = options.path1_annotation || '';\n\t this.path2_annotation = options.path2_annotation || '';\n\t this.path3_annotation = options.path3_annotation || '';\n\t this.textMargin = this.getAttr('text-margin');\n\t this.path1_direction = 'bottom';\n\t this.path2_direction = 'right';\n\t this.path3_direction = 'top';\n\t this.params = options.params;\n\t if (options.direction_next === 'path1' && !options[options.direction_next] && options.next) {\n\t options[options.direction_next] = options.next;\n\t }\n\t if (options.direction_next === 'path2' && !options[options.direction_next] && options.next) {\n\t options[options.direction_next] = options.next;\n\t }\n\t if (options.direction_next === 'path3' && !options[options.direction_next] && options.next) {\n\t options[options.direction_next] = options.next;\n\t }\n\t\n\t if (options.path1 && options.direction_path1 && options.path2 && !options.direction_path2 && options.path3 && !options.direction_path3) {\n\t if (options.direction_path1 === 'right') {\n\t this.path2_direction = 'bottom';\n\t this.path1_direction = 'right';\n\t this.path3_direction = 'top';\n\t } else if (options.direction_path1 === 'top') {\n\t this.path2_direction = 'right';\n\t this.path1_direction = 'top';\n\t this.path3_direction = 'bottom';\n\t } else if (options.direction_path1 === 'left') {\n\t this.path2_direction = 'right';\n\t this.path1_direction = 'left';\n\t this.path3_direction = 'bottom';\n\t } else {\n\t this.path2_direction = 'right';\n\t this.path1_direction = 'bottom';\n\t this.path3_direction = 'top';\n\t }\n\t } else if (options.path1 && !options.direction_path1 && options.path2 && options.direction_path2 && options.path3 && !options.direction_path3) {\n\t if (options.direction_path2 === 'right') {\n\t this.path1_direction = 'bottom';\n\t this.path2_direction = 'right';\n\t this.path3_direction = 'top';\n\t } else if (options.direction_path2 === 'left') {\n\t this.path1_direction = 'bottom';\n\t this.path2_direction = 'left';\n\t this.path3_direction = 'right';\n\t } else {\n\t this.path1_direction = 'right';\n\t this.path2_direction = 'bottom';\n\t this.path3_direction = 'top';\n\t }\n\t } else if (options.path1 && !options.direction_path1 && options.path2 && !options.direction_path2 && options.path3 && options.direction_path3) {\n\t if (options.direction_path2 === 'right') {\n\t this.path1_direction = 'bottom';\n\t this.path2_direction = 'top';\n\t this.path3_direction = 'right';\n\t } else if (options.direction_path2 === 'left') {\n\t this.path1_direction = 'bottom';\n\t this.path2_direction = 'right';\n\t this.path3_direction = 'left';\n\t } else {\n\t this.path1_direction = 'right';\n\t this.path2_direction = 'bottom';\n\t this.path3_direction = 'top';\n\t }\n\t } else {\n\t this.path1_direction = options.direction_path1;\n\t this.path2_direction = options.direction_path2;\n\t this.path3_direction = options.direction_path3;\n\t }\n\t\n\t this.path1_direction = this.path1_direction || 'bottom';\n\t this.path2_direction = this.path2_direction || 'right';\n\t this.path3_direction = this.path3_direction || 'top';\n\t\n\t this.initialize();\n\t}\n\tinherits(Parallel, Symbol);\n\t\n\tParallel.prototype.render = function() {\n\t if (this.path1_direction) {\n\t this[this.path1_direction + '_symbol'] = this.path1_symbol;\n\t }\n\t\n\t if (this.path2_direction) {\n\t this[this.path2_direction + '_symbol'] = this.path2_symbol;\n\t }\n\t\n\t if (this.path3_direction) {\n\t this[this.path3_direction + '_symbol'] = this.path3_symbol;\n\t }\n\t\n\t var lineLength = this.getAttr('line-length');\n\t\n\t if (this.bottom_symbol) {\n\t var bottomPoint = this.getBottom();\n\t\n\t if (!this.bottom_symbol.isPositioned) {\n\t this.bottom_symbol.shiftY(this.getY() + this.height + lineLength);\n\t this.bottom_symbol.setX(bottomPoint.x - this.bottom_symbol.width / 2);\n\t this.bottom_symbol.isPositioned = true;\n\t\n\t this.bottom_symbol.render();\n\t }\n\t }\n\t\n\t if (this.top_symbol) {\n\t var topPoint = this.getTop();\n\t\n\t if (!this.top_symbol.isPositioned) {\n\t this.top_symbol.shiftY(this.getY() - this.top_symbol.height - lineLength);\n\t this.top_symbol.setX(topPoint.x + this.top_symbol.width);\n\t this.top_symbol.isPositioned = true;\n\t\n\t this.top_symbol.render();\n\t }\n\t }\n\t\n\t var self = this;\n\t\n\t if (this.left_symbol) {\n\t var leftPoint = this.getLeft();\n\t\n\t if (!this.left_symbol.isPositioned) {\n\t this.left_symbol.setY(leftPoint.y - this.left_symbol.height / 2);\n\t this.left_symbol.shiftX(-(this.group.getBBox().x + this.width + lineLength));\n\t (function shift() {\n\t var hasSymbolUnder = false;\n\t var symb;\n\t for (var i = 0, len = self.chart.symbols.length; i < len; i++) {\n\t symb = self.chart.symbols[i];\n\t\n\t if (!self.params['align-next'] || self.params['align-next'] !== 'no') {\n\t var diff = Math.abs(symb.getCenter().x - self.left_symbol.getCenter().x);\n\t if (symb.getCenter().y > self.left_symbol.getCenter().y && diff <= self.left_symbol.width / 2) {\n\t hasSymbolUnder = true;\n\t break;\n\t }\n\t }\n\t }\n\t\n\t if (hasSymbolUnder) {\n\t if (self.left_symbol.symbolType === 'end') return;\n\t self.left_symbol.setX(symb.getX() + symb.width + lineLength);\n\t shift();\n\t }\n\t })();\n\t\n\t this.left_symbol.isPositioned = true;\n\t\n\t this.left_symbol.render();\n\t }\n\t }\n\t\n\t if (this.right_symbol) {\n\t var rightPoint = this.getRight();\n\t\n\t if (!this.right_symbol.isPositioned) {\n\t this.right_symbol.setY(rightPoint.y - this.right_symbol.height / 2);\n\t this.right_symbol.shiftX(this.group.getBBox().x + this.width + lineLength);\n\t (function shift() {\n\t var hasSymbolUnder = false;\n\t var symb;\n\t for (var i = 0, len = self.chart.symbols.length; i < len; i++) {\n\t symb = self.chart.symbols[i];\n\t\n\t if (!self.params['align-next'] || self.params['align-next'] !== 'no') {\n\t var diff = Math.abs(symb.getCenter().x - self.right_symbol.getCenter().x);\n\t if (symb.getCenter().y > self.right_symbol.getCenter().y && diff <= self.right_symbol.width / 2) {\n\t hasSymbolUnder = true;\n\t break;\n\t }\n\t }\n\t }\n\t\n\t if (hasSymbolUnder) {\n\t if (self.right_symbol.symbolType === 'end') return;\n\t self.right_symbol.setX(symb.getX() + symb.width + lineLength);\n\t shift();\n\t }\n\t })();\n\t\n\t this.right_symbol.isPositioned = true;\n\t\n\t this.right_symbol.render();\n\t }\n\t }\n\t};\n\t\n\tParallel.prototype.renderLines = function() {\n\t if (this.path1_symbol) {\n\t this.drawLineTo(this.path1_symbol, this.path1_annotation, this.path1_direction);\n\t }\n\t\n\t if (this.path2_symbol) {\n\t this.drawLineTo(this.path2_symbol, this.path2_annotation, this.path2_direction);\n\t }\n\t\n\t if (this.path3_symbol) {\n\t this.drawLineTo(this.path3_symbol, this.path3_annotation, this.path3_direction);\n\t }\n\t};\n\t\n\tmodule.exports = Parallel;\n\n/***/ }),\n/* 7 */\n/*!********************************!*\\\n !*** ./src/flowchart.chart.js ***!\n \\********************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar Raphael = __webpack_require__(/*! raphael */ 18);\n\tvar defaults = __webpack_require__(/*! ./flowchart.helpers */ 1).defaults;\n\tvar defaultOptions = __webpack_require__(/*! ./flowchart.defaults */ 8);\n\tvar Condition = __webpack_require__(/*! ./flowchart.symbol.condition */ 5);\n\tvar Parallel = __webpack_require__(/*! ./flowchart.symbol.parallel */ 6);\n\t\n\tfunction FlowChart(container, options) {\n\t options = options || {};\n\t\n\t this.paper = new Raphael(container);\n\t\n\t this.options = defaults(options, defaultOptions);\n\t\n\t this.symbols = [];\n\t this.lines = [];\n\t this.start = null;\n\t}\n\t\n\tFlowChart.prototype.handle = function(symbol) {\n\t if (this.symbols.indexOf(symbol) <= -1) {\n\t this.symbols.push(symbol);\n\t }\n\t\n\t var flowChart = this;\n\t\n\t if (symbol instanceof(Condition)) {\n\t symbol.yes = function(nextSymbol) {\n\t symbol.yes_symbol = nextSymbol;\n\t if(symbol.no_symbol) {\n\t symbol.pathOk = true;\n\t }\n\t return flowChart.handle(nextSymbol);\n\t };\n\t symbol.no = function(nextSymbol) {\n\t symbol.no_symbol = nextSymbol;\n\t if (symbol.yes_symbol) {\n\t symbol.pathOk = true;\n\t }\n\t return flowChart.handle(nextSymbol);\n\t };\n\t } else if (symbol instanceof(Parallel)) {\n\t symbol.path1 = function(nextSymbol) {\n\t symbol.path1_symbol = nextSymbol;\n\t if (symbol.path2_symbol) {\n\t symbol.pathOk = true;\n\t }\n\t return flowChart.handle(nextSymbol);\n\t };\n\t symbol.path2 = function(nextSymbol) {\n\t symbol.path2_symbol = nextSymbol;\n\t if (symbol.path3_symbol) {\n\t symbol.pathOk = true;\n\t }\n\t return flowChart.handle(nextSymbol);\n\t };\n\t symbol.path3 = function(nextSymbol) {\n\t symbol.path3_symbol = nextSymbol;\n\t if (symbol.path1_symbol) {\n\t symbol.pathOk = true;\n\t }\n\t return flowChart.handle(nextSymbol);\n\t };\n\t } else {\n\t symbol.then = function(nextSymbol) {\n\t symbol.next = nextSymbol;\n\t symbol.pathOk = true;\n\t return flowChart.handle(nextSymbol);\n\t };\n\t }\n\t\n\t return symbol;\n\t};\n\t\n\tFlowChart.prototype.startWith = function(symbol) {\n\t this.start = symbol;\n\t return this.handle(symbol);\n\t};\n\t\n\tFlowChart.prototype.render = function() {\n\t var maxWidth = 0,\n\t maxHeight = 0,\n\t i = 0,\n\t len = 0,\n\t maxX = 0,\n\t maxY = 0,\n\t minX = 0,\n\t minY = 0,\n\t symbol,\n\t line;\n\t\n\t for (i = 0, len = this.symbols.length; i < len; i++) {\n\t symbol = this.symbols[i];\n\t if (symbol.width > maxWidth) {\n\t maxWidth = symbol.width;\n\t }\n\t if (symbol.height > maxHeight) {\n\t maxHeight = symbol.height;\n\t }\n\t }\n\t\n\t for (i = 0, len = this.symbols.length; i < len; i++) {\n\t symbol = this.symbols[i];\n\t symbol.shiftX(this.options.x + (maxWidth - symbol.width)/2 + this.options['line-width']);\n\t symbol.shiftY(this.options.y + (maxHeight - symbol.height)/2 + this.options['line-width']);\n\t }\n\t\n\t this.start.render();\n\t // for (i = 0, len = this.symbols.length; i < len; i++) {\n\t // symbol = this.symbols[i];\n\t // symbol.render();\n\t // }\n\t\n\t for (i = 0, len = this.symbols.length; i < len; i++) {\n\t symbol = this.symbols[i];\n\t symbol.renderLines();\n\t }\n\t\n\t maxX = this.maxXFromLine;\n\t\n\t var x;\n\t var y;\n\t\n\t for (i = 0, len = this.symbols.length; i < len; i++) {\n\t symbol = this.symbols[i];\n\t var leftX = symbol.getX()\n\t x = leftX + symbol.width;\n\t y = symbol.getY() + symbol.height;\n\t if (leftX < minX) {\n\t minX = leftX;\n\t }\n\t if (x > maxX) {\n\t maxX = x;\n\t }\n\t if (y > maxY) {\n\t maxY = y;\n\t }\n\t }\n\t\n\t for (i = 0, len = this.lines.length; i < len; i++) {\n\t line = this.lines[i].getBBox();\n\t x = line.x;\n\t y = line.y;\n\t var x2 = line.x2;\n\t var y2 = line.y2;\n\t if (x < minX) {\n\t minX = x;\n\t }\n\t if (y < minY) {\n\t minY = y;\n\t }\n\t if (x2 > maxX) {\n\t maxX = x2;\n\t }\n\t if (y2 > maxY) {\n\t maxY = y2;\n\t }\n\t }\n\t\n\t var scale = this.options['scale'];\n\t var lineWidth = this.options['line-width'];\n\t\n\t if (this.minXFromSymbols < minX) minX = this.minXFromSymbols;\n\t\n\t if (minX < 0) minX -= lineWidth;\n\t if (minY < 0) minY -= lineWidth;\n\t\n\t var width = maxX + lineWidth - minX;\n\t var height = maxY + lineWidth - minY;\n\t\n\t this.paper.setSize(width * scale, height * scale);\n\t this.paper.setViewBox(minX, minY, width, height, true);\n\t};\n\t\n\tFlowChart.prototype.clean = function() {\n\t if (this.paper) {\n\t var paperDom = this.paper.canvas;\n\t paperDom.parentNode && paperDom.parentNode.removeChild(paperDom);\n\t }\n\t};\n\t\n\tmodule.exports = FlowChart;\n\n/***/ }),\n/* 8 */\n/*!***********************************!*\\\n !*** ./src/flowchart.defaults.js ***!\n \\***********************************/\n/***/ (function(module, exports) {\n\n\t// defaults\n\tmodule.exports = {\n\t 'x': 0,\n\t 'y': 0,\n\t // 'roundness': 0,\n\t 'line-width': 3,\n\t 'line-length': 50,\n\t 'text-margin': 10,\n\t 'font-size': 14,\n\t 'font-color': 'black',\n\t // 'font': 'normal',\n\t // 'font-family': 'calibri',\n\t // 'font-weight': 'normal',\n\t 'line-color': 'black',\n\t 'element-color': 'black',\n\t 'fill': 'white',\n\t 'yes-text': 'yes',\n\t 'no-text': 'no',\n\t 'arrow-end': 'block',\n\t 'class': 'flowchart',\n\t 'scale': 1,\n\t 'symbols': {\n\t 'start': {},\n\t 'end': {},\n\t 'condition': {},\n\t 'inputoutput': {},\n\t 'input': {}, //tds\n\t 'output': {}, //tds \n\t 'operation': {},\n\t 'subroutine': {},\n\t 'parallel': {}\n\t } //,\n\t // 'flowstate' : {\n\t // 'past' : { 'fill': '#CCCCCC', 'font-size': 12},\n\t // 'current' : {'fill': 'yellow', 'font-color': 'red', 'font-weight': 'bold'},\n\t // 'future' : { 'fill': '#FFFF99'},\n\t // 'invalid': {'fill': '#444444'}\n\t // }\n\t};\n\n/***/ }),\n/* 9 */\n/*!*******************************!*\\\n !*** ./src/flowchart.shim.js ***!\n \\*******************************/\n/***/ (function(module, exports) {\n\n\t// add indexOf to non ECMA-262 standard compliant browsers\n\tif (!Array.prototype.indexOf) {\n\t Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {\n\t \"use strict\";\n\t if (this === null) {\n\t throw new TypeError();\n\t }\n\t var t = Object(this);\n\t var len = t.length >>> 0;\n\t if (len === 0) {\n\t return -1;\n\t }\n\t var n = 0;\n\t if (arguments.length > 0) {\n\t n = Number(arguments[1]);\n\t if (n != n) { // shortcut for verifying if it's NaN\n\t n = 0;\n\t } else if (n !== 0 && n != Infinity && n != -Infinity) {\n\t n = (n > 0 || -1) * Math.floor(Math.abs(n));\n\t }\n\t }\n\t if (n >= len) {\n\t return -1;\n\t }\n\t var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);\n\t for (; k < len; k++) {\n\t if (k in t && t[k] === searchElement) {\n\t return k;\n\t }\n\t }\n\t return -1;\n\t };\n\t}\n\t\n\t// add lastIndexOf to non ECMA-262 standard compliant browsers\n\tif (!Array.prototype.lastIndexOf) {\n\t Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/) {\n\t \"use strict\";\n\t if (this === null) {\n\t throw new TypeError();\n\t }\n\t var t = Object(this);\n\t var len = t.length >>> 0;\n\t if (len === 0) {\n\t return -1;\n\t }\n\t var n = len;\n\t if (arguments.length > 1) {\n\t n = Number(arguments[1]);\n\t if (n != n) {\n\t n = 0;\n\t } else if (n !== 0 && n != (1 / 0) && n != -(1 / 0)) {\n\t n = (n > 0 || -1) * Math.floor(Math.abs(n));\n\t }\n\t }\n\t var k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n);\n\t for (; k >= 0; k--) {\n\t if (k in t && t[k] === searchElement) {\n\t return k;\n\t }\n\t }\n\t return -1;\n\t };\n\t}\n\t\n\tif (!String.prototype.trim) {\n\t String.prototype.trim = function() {\n\t return this.replace(/^\\s+|\\s+$/g, '');\n\t };\n\t}\n\n/***/ }),\n/* 10 */\n/*!*************************************!*\\\n !*** ./src/flowchart.symbol.end.js ***!\n \\*************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(/*! ./flowchart.symbol */ 2);\n\tvar inherits = __webpack_require__(/*! ./flowchart.helpers */ 1).inherits;\n\t\n\tfunction End(chart, options) {\n\t var symbol = chart.paper.rect(0, 0, 0, 0, 20);\n\t options = options || {};\n\t options.text = options.text || 'End';\n\t Symbol.call(this, chart, options, symbol);\n\t}\n\tinherits(End, Symbol);\n\t\n\tmodule.exports = End;\n\n\n/***/ }),\n/* 11 */\n/*!***************************************!*\\\n !*** ./src/flowchart.symbol.input.js ***!\n \\***************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(/*! ./flowchart.symbol */ 2);\n\tvar inherits = __webpack_require__(/*! ./flowchart.helpers */ 1).inherits;\n\tvar drawAPI = __webpack_require__(/*! ./flowchart.functions */ 3);\n\tvar drawPath = drawAPI.drawPath;\n\t\n\tfunction Input(chart, options) {\n\t options = options || {};\n\t Symbol.call(this, chart, options);\n\t this.textMargin = this.getAttr('text-margin');\n\t\n\t this.text.attr({\n\t x: this.textMargin * 3\n\t });\n\t\n\t var width = this.text.getBBox().width + 4 * this.textMargin;\n\t var height = this.text.getBBox().height + 2 * this.textMargin;\n\t var startX = this.textMargin;\n\t var startY = height/2;\n\t\n\t var start = {x: startX, y: startY};\n\t var points = [\n\t {x: startX - this.textMargin + 2 * this.textMargin, y: height},\n\t {x: startX - this.textMargin + width, y: height},\n\t {x: startX - this.textMargin + width + 2 * this.textMargin, y: 0},\n\t {x: startX - this.textMargin, y: 0},\n\t {x: startX, y: startY}\n\t ];\n\t\n\t var symbol = drawPath(chart, start, points);\n\t\n\t symbol.attr({\n\t stroke: this.getAttr('element-color'),\n\t 'stroke-width': this.getAttr('line-width'),\n\t fill: this.getAttr('fill')\n\t });\n\t if (options.link) { symbol.attr('href', options.link); }\n\t if (options.target) { symbol.attr('target', options.target); }\n\t if (options.key) { symbol.node.id = options.key; }\n\t symbol.node.setAttribute('class', this.getAttr('class'));\n\t\n\t this.text.attr({\n\t y: symbol.getBBox().height/2\n\t });\n\t\n\t this.group.push(symbol);\n\t symbol.insertBefore(this.text);\n\t this.symbol = symbol\n\t\n\t this.initialize();\n\t}\n\tinherits(Input, Symbol);\n\t\n\tInput.prototype.getLeft = function() {\n\t var y = this.getY() + this.group.getBBox().height/2;\n\t var x = this.getX() + this.textMargin;\n\t return {x: x, y: y};\n\t};\n\t\n\tInput.prototype.getRight = function() {\n\t var y = this.getY() + this.group.getBBox().height/2;\n\t var x = this.getX() + this.group.getBBox().width - this.textMargin;\n\t return {x: x, y: y};\n\t};\n\t\n\tmodule.exports = Input;\n\t\n\t\n\n\n/***/ }),\n/* 12 */\n/*!*********************************************!*\\\n !*** ./src/flowchart.symbol.inputoutput.js ***!\n \\*********************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(/*! ./flowchart.symbol */ 2);\n\tvar inherits = __webpack_require__(/*! ./flowchart.helpers */ 1).inherits;\n\tvar drawAPI = __webpack_require__(/*! ./flowchart.functions */ 3);\n\tvar drawPath = drawAPI.drawPath;\n\t\n\tfunction InputOutput(chart, options) {\n\t options = options || {};\n\t Symbol.call(this, chart, options);\n\t this.textMargin = this.getAttr('text-margin');\n\t\n\t this.text.attr({\n\t x: this.textMargin * 3\n\t });\n\t\n\t var width = this.text.getBBox().width + 4 * this.textMargin;\n\t var height = this.text.getBBox().height + 2 * this.textMargin;\n\t var startX = this.textMargin;\n\t var startY = height/2;\n\t\n\t var start = {x: startX, y: startY};\n\t var points = [\n\t {x: startX - this.textMargin, y: height},\n\t {x: startX - this.textMargin + width, y: height},\n\t {x: startX - this.textMargin + width + 2 * this.textMargin, y: 0},\n\t {x: startX - this.textMargin + 2 * this.textMargin, y: 0},\n\t {x: startX, y: startY}\n\t ];\n\t\n\t var symbol = drawPath(chart, start, points);\n\t\n\t symbol.attr({\n\t stroke: this.getAttr('element-color'),\n\t 'stroke-width': this.getAttr('line-width'),\n\t fill: this.getAttr('fill')\n\t });\n\t if (options.link) { symbol.attr('href', options.link); }\n\t if (options.target) { symbol.attr('target', options.target); }\n\t if (options.key) { symbol.node.id = options.key; }\n\t symbol.node.setAttribute('class', this.getAttr('class'));\n\t\n\t this.text.attr({\n\t y: symbol.getBBox().height/2\n\t });\n\t\n\t this.group.push(symbol);\n\t symbol.insertBefore(this.text);\n\t this.symbol = symbol\n\t\n\t this.initialize();\n\t}\n\tinherits(InputOutput, Symbol);\n\t\n\tInputOutput.prototype.getLeft = function() {\n\t var y = this.getY() + this.group.getBBox().height/2;\n\t var x = this.getX() + this.textMargin;\n\t return {x: x, y: y};\n\t};\n\t\n\tInputOutput.prototype.getRight = function() {\n\t var y = this.getY() + this.group.getBBox().height/2;\n\t var x = this.getX() + this.group.getBBox().width - this.textMargin;\n\t return {x: x, y: y};\n\t};\n\t\n\tmodule.exports = InputOutput;\n\n\n/***/ }),\n/* 13 */\n/*!*******************************************!*\\\n !*** ./src/flowchart.symbol.operation.js ***!\n \\*******************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(/*! ./flowchart.symbol */ 2);\n\tvar inherits = __webpack_require__(/*! ./flowchart.helpers */ 1).inherits;\n\t\n\tfunction Operation(chart, options) {\n\t var symbol = chart.paper.rect(0, 0, 0, 0);\n\t options = options || {};\n\t Symbol.call(this, chart, options, symbol);\n\t}\n\tinherits(Operation, Symbol);\n\t\n\tmodule.exports = Operation;\n\n\n/***/ }),\n/* 14 */\n/*!****************************************!*\\\n !*** ./src/flowchart.symbol.output.js ***!\n \\****************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(/*! ./flowchart.symbol */ 2);\n\tvar inherits = __webpack_require__(/*! ./flowchart.helpers */ 1).inherits;\n\tvar drawAPI = __webpack_require__(/*! ./flowchart.functions */ 3);\n\tvar drawPath = drawAPI.drawPath;\n\t\n\tfunction Output(chart, options) {\n\t options = options || {};\n\t Symbol.call(this, chart, options);\n\t this.textMargin = this.getAttr('text-margin');\n\t\n\t this.text.attr({\n\t x: this.textMargin * 3\n\t });\n\t\n\t var width = this.text.getBBox().width + 4 * this.textMargin;\n\t var height = this.text.getBBox().height + 2 * this.textMargin;\n\t var startX = this.textMargin;\n\t var startY = height/2;\n\t\n\t var start = {x: startX, y: startY};\n\t var points = [\n\t {x: startX - this.textMargin, y: height},\n\t {x: startX - this.textMargin + width + 2 * this.textMargin, y: height},\n\t {x: startX - this.textMargin + width, y: 0},\n\t {x: startX - this.textMargin + 2 * this.textMargin, y: 0},\n\t {x: startX, y: startY}\n\t ];\n\t\n\t var symbol = drawPath(chart, start, points);\n\t\n\t symbol.attr({\n\t stroke: this.getAttr('element-color'),\n\t 'stroke-width': this.getAttr('line-width'),\n\t fill: this.getAttr('fill')\n\t });\n\t if (options.link) { symbol.attr('href', options.link); }\n\t if (options.target) { symbol.attr('target', options.target); }\n\t if (options.key) { symbol.node.id = options.key; }\n\t symbol.node.setAttribute('class', this.getAttr('class'));\n\t\n\t this.text.attr({\n\t y: symbol.getBBox().height/2\n\t });\n\t\n\t this.group.push(symbol);\n\t symbol.insertBefore(this.text);\n\t this.symbol = symbol\n\t\n\t this.initialize();\n\t}\n\tinherits(Output, Symbol);\n\t\n\tOutput.prototype.getLeft = function() {\n\t var y = this.getY() + this.group.getBBox().height/2;\n\t var x = this.getX() + this.textMargin;\n\t return {x: x, y: y};\n\t};\n\t\n\tOutput.prototype.getRight = function() {\n\t var y = this.getY() + this.group.getBBox().height/2;\n\t var x = this.getX() + this.group.getBBox().width - this.textMargin;\n\t return {x: x, y: y};\n\t};\n\t\n\tmodule.exports = Output;\n\t\n\t\n\t\n\t/*\n\t//var Symbol = require('./flowchart.symbol');\n\tvar inherits = require('./flowchart.helpers').inherits;\n\tvar drawAPI = require('./flowchart.functions');\n\tvar InputOutput = require('./flowchart.symbol.inputoutput');\n\tvar drawPath = drawAPI.drawPath;\n\t\n\tfunction Output(chart, options) {\n\t options = options || {};\n\t InputOutput.call(this, chart, options);\n\t\n\t var width = this.text.getBBox().width + 4 * this.textMargin;\n\t var height = this.text.getBBox().height + 2 * this.textMargin;\n\t var startX = this.textMargin;\n\t var startY = height/2;\n\t\n\t var start = {x: startX, y: startY};\n\t var points = [\n\t {x: startX - this.textMargin + 2 * this.textMargin, y: height},\n\t {x: startX - this.textMargin + width, y: height},\n\t {x: startX - this.textMargin + width + 2 * this.textMargin, y: 0},\n\t {x: startX - this.textMargin, y: 0},\n\t {x: startX, y: startY}\n\t ];\n\t\n\t var symbol = drawPath(chart, start, points);\n\t\n\t symbol.attr({\n\t stroke: this.getAttr('element-color'),\n\t 'stroke-width': this.getAttr('line-width'),\n\t fill: this.getAttr('fill')\n\t });\n\t if (options.link) { symbol.attr('href', options.link); }\n\t if (options.target) { symbol.attr('target', options.target); }\n\t if (options.key) { symbol.node.id = options.key; }\n\t symbol.node.setAttribute('class', this.getAttr('class'));\n\t\n\t this.text.attr({\n\t y: symbol.getBBox().height/2\n\t });\n\t\n\t this.group.push(symbol);\n\t symbol.insertBefore(this.text);\n\t \n\t if (this.symbol){\n\t this.group.remove(this.symbol); //tds\n\t this.symbol.parentNode.removeChild(this.symbol); //tds\n\t }\n\t this.symbol = symbol\n\t\n\t this.initialize();\n\t}\n\tinherits(Output, InputOutput);\n\t\n\tmodule.exports = Output;\n\t*/\n\n\n/***/ }),\n/* 15 */\n/*!***************************************!*\\\n !*** ./src/flowchart.symbol.start.js ***!\n \\***************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(/*! ./flowchart.symbol */ 2);\n\tvar inherits = __webpack_require__(/*! ./flowchart.helpers */ 1).inherits;\n\t\n\tfunction Start(chart, options) {\n\t var symbol = chart.paper.rect(0, 0, 0, 0, 20);\n\t options = options || {};\n\t options.text = options.text || 'Start';\n\t Symbol.call(this, chart, options, symbol);\n\t}\n\tinherits(Start, Symbol);\n\t\n\tmodule.exports = Start;\n\t\n\t// Start.prototype.render = function() {\n\t// if (this.next) {\n\t// var lineLength = this.chart.options.symbols[this.symbolType]['line-length'] || this.chart.options['line-length'];\n\t\n\t// var bottomPoint = this.getBottom();\n\t// var topPoint = this.next.getTop();\n\t\n\t// if (!this.next.isPositioned) {\n\t// this.next.shiftY(this.getY() + this.height + lineLength);\n\t// this.next.setX(bottomPoint.x - this.next.width/2);\n\t// this.next.isPositioned = true;\n\t\n\t// this.next.render();\n\t// }\n\t// }\n\t// };\n\t\n\t// Start.prototype.renderLines = function() {\n\t// if (this.next) {\n\t// this.drawLineTo(this.next);\n\t// }\n\t// };\n\n\n/***/ }),\n/* 16 */\n/*!********************************************!*\\\n !*** ./src/flowchart.symbol.subroutine.js ***!\n \\********************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(/*! ./flowchart.symbol */ 2);\n\tvar inherits = __webpack_require__(/*! ./flowchart.helpers */ 1).inherits;\n\t\n\tfunction Subroutine(chart, options) {\n\t var symbol = chart.paper.rect(0, 0, 0, 0);\n\t options = options || {};\n\t Symbol.call(this, chart, options, symbol);\n\t\n\t symbol.attr({\n\t width: this.text.getBBox().width + 4 * this.getAttr('text-margin')\n\t });\n\t\n\t this.text.attr({\n\t 'x': 2 * this.getAttr('text-margin')\n\t });\n\t\n\t var innerWrap = chart.paper.rect(0, 0, 0, 0);\n\t innerWrap.attr({\n\t x: this.getAttr('text-margin'),\n\t stroke: this.getAttr('element-color'),\n\t 'stroke-width': this.getAttr('line-width'),\n\t width: this.text.getBBox().width + 2 * this.getAttr('text-margin'),\n\t height: this.text.getBBox().height + 2 * this.getAttr('text-margin'),\n\t fill: this.getAttr('fill')\n\t });\n\t if (options.key) { innerWrap.node.id = options.key + 'i'; }\n\t\n\t var font = this.getAttr('font');\n\t var fontF = this.getAttr('font-family');\n\t var fontW = this.getAttr('font-weight');\n\t\n\t if (font) innerWrap.attr({ 'font': font });\n\t if (fontF) innerWrap.attr({ 'font-family': fontF });\n\t if (fontW) innerWrap.attr({ 'font-weight': fontW });\n\t\n\t if (options.link) { innerWrap.attr('href', options.link); }\n\t if (options.target) { innerWrap.attr('target', options.target); }\n\t this.group.push(innerWrap);\n\t innerWrap.insertBefore(this.text);\n\t\n\t this.initialize();\n\t}\n\tinherits(Subroutine, Symbol);\n\t\n\tmodule.exports = Subroutine;\n\n\n/***/ }),\n/* 17 */\n/*!******************************!*\\\n !*** ./src/jquery-plugin.js ***!\n \\******************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\tif (typeof jQuery != 'undefined') {\n\t\tvar parse = __webpack_require__(/*! ./flowchart.parse */ 4);\n\t\n\t\t(function( $ ) {\n\t\t\tfunction paramFit(needle, haystack) {\n\t\t\t\treturn needle == haystack ||\n\t\t\t\t( Array.isArray(haystack) && (haystack.includes(needle) || haystack.includes(Number(needle)) ))\n\t\t\t}\n\t\t\tvar methods = {\n\t\t\t\tinit : function(options) {\n\t\t\t\t\treturn this.each(function() {\n\t\t\t\t\t\tvar $this = $(this);\n\t\t\t\t\t\tthis.chart = parse($this.text());\n\t\t\t\t\t\t$this.html('');\n\t\t\t\t\t\tthis.chart.drawSVG(this, options);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tsetFlowStateByParam : function(param, paramValue, newFlowState) {\n\t\t\t\t\treturn this.each(function() {\n\t\t\t\t\t\tvar chart = this.chart;\n\t\n\t\t\t\t\t\t// @todo this should be part of Symbol API\n\t\t\t\t\t\tvar nextSymbolKeys = ['next', 'yes', 'no', 'path1', 'path2', 'path3'];\n\t\n\t\t\t\t\t\tfor (var property in chart.symbols) {\n\t\t\t\t\t\t\tif (chart.symbols.hasOwnProperty(property)) {\n\t\t\t\t\t\t\t\tvar symbol = chart.symbols[property];\n\t\t\t\t\t\t\t\tvar val = symbol.params[param];\n\t\t\t\t\t\t\t\tif (paramFit(val, paramValue)) {\n\t\t\t\t\t\t\t\t\tsymbol.flowstate = newFlowState;\n\t\t\t\t\t\t\t\t\tfor (var nski = 0; nski < nextSymbolKeys.length; nski++) {\n\t\t\t\t\t\t\t\t\t\tvar nextSymbolKey = nextSymbolKeys[nski];\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tsymbol[nextSymbolKey] &&\n\t\t\t\t\t\t\t\t\t\t\tsymbol[nextSymbolKey]['params'] &&\n\t\t\t\t\t\t\t\t\t\t\tsymbol[nextSymbolKey]['params'][param] &&\n\t\t\t\t\t\t\t\t\t\t\tparamFit(symbol[nextSymbolKey]['params'][param], paramValue)\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tsymbol.lineStyle[symbol[nextSymbolKey]['key']] = {stroke: chart.options()['flowstate'][newFlowState]['fill']};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tchart.clean();\n\t\t\t\t\t\tchart.drawSVG(this);\n\t\t\t\t\t});\n\t\n\t\t\t\t},\n\t\t\t\tclearFlowState: function () {\n\t\t\t\t\treturn this.each(function() {\n\t\t\t\t\t\tvar chart = this.chart;\n\t\n\t\t\t\t\t\tfor (var property in chart.symbols) {\n\t\t\t\t\t\t\tif (chart.symbols.hasOwnProperty(property)) {\n\t\t\t\t\t\t\t\tvar node = chart.symbols[property];\n\t\t\t\t\t\t\t\tnode.flowstate = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tchart.clean();\n\t\t\t\t\t\tchart.drawSVG(this);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t\t$.fn.flowChart = function(methodOrOptions) {\n\t\t\t\tif ( methods[methodOrOptions] ) {\n\t\t\t\t\treturn methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));\n\t\t\t\t} else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {\n\t\t\t\t\t// Default to \"init\"\n\t\t\t\t\treturn methods.init.apply( this, arguments );\n\t\t\t\t} else {\n\t\t\t\t\t$.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.flowChart' );\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t})(jQuery); // eslint-disable-line\n\t}\n\n\n/***/ }),\n/* 18 */\n/*!**************************!*\\\n !*** external \"Raphael\" ***!\n \\**************************/\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_18__;\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// flowchart.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 519494f9e366d139a59e","require('./src/flowchart.shim');\nvar parse = require('./src/flowchart.parse');\nrequire('./src/jquery-plugin');\n\nvar FlowChart = {\n\tparse: parse\n};\n\nif (typeof window !== 'undefined') {\n\twindow.flowchart = FlowChart;\n}\n\nmodule.exports = FlowChart;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./index.js\n// module id = 0\n// module chunks = 0","function _defaults(options, defaultOptions) {\n if (!options || typeof options === 'function') {\n return defaultOptions;\n }\n\n var merged = {};\n for (var attrname in defaultOptions) {\n merged[attrname] = defaultOptions[attrname];\n }\n\n for (attrname in options) {\n if (options[attrname]) {\n if (typeof merged[attrname] === 'object') {\n merged[attrname] = _defaults(merged[attrname], options[attrname]);\n } else {\n merged[attrname] = options[attrname];\n }\n }\n }\n return merged;\n}\n\nfunction _inherits(ctor, superCtor) {\n if (typeof(Object.create) === 'function') {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n } else {\n // old school shim for old browsers\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n}\n\n// move dependent functions to a container so that\n// they can be overriden easier in no jquery environment (node.js)\nmodule.exports = {\n defaults: _defaults,\n inherits: _inherits\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.helpers.js\n// module id = 1\n// module chunks = 0","var drawAPI = require('./flowchart.functions');\nvar drawLine = drawAPI.drawLine;\nvar checkLineIntersection = drawAPI.checkLineIntersection;\n\nfunction Symbol(chart, options, symbol) {\n this.chart = chart;\n this.group = this.chart.paper.set();\n this.symbol = symbol;\n this.connectedTo = [];\n this.symbolType = options.symbolType;\n this.flowstate = (options.flowstate || 'future');\n this.lineStyle = (options.lineStyle || {});\n this.key = (options.key || '');\n this.leftLines = [];\n this.rightLines = [];\n this.topLines = [];\n this.bottomLines = [];\n this.params = options.params;\n\n this.next_direction = options.next && options['direction_next'] ? options['direction_next'] : undefined;\n\n this.text = this.chart.paper.text(0, 0, options.text);\n //Raphael does not support the svg group tag so setting the text node id to the symbol node id plus t\n if (options.key) { this.text.node.id = options.key + 't'; }\n this.text.node.setAttribute('class', this.getAttr('class') + 't');\n\n this.text.attr({\n 'text-anchor': 'start',\n 'x' : this.getAttr('text-margin'),\n 'fill' : this.getAttr('font-color'),\n 'font-size' : this.getAttr('font-size')\n });\n\n var font = this.getAttr('font');\n var fontF = this.getAttr('font-family');\n var fontW = this.getAttr('font-weight');\n\n if (font) this.text.attr({ 'font': font });\n if (fontF) this.text.attr({ 'font-family': fontF });\n if (fontW) this.text.attr({ 'font-weight': fontW });\n\n if (options.link) { this.text.attr('href', options.link); }\n \n //ndrqu Add click function with event and options params\n if (options.function) { \n this.text.attr({ 'cursor' : 'pointer' });\n\n this.text.node.addEventListener(\"click\", function(evt) {\n window[options.function](evt,options);\n }, false);\n }\n\n if (options.target) { this.text.attr('target', options.target); }\n\n var maxWidth = this.getAttr('maxWidth');\n if (maxWidth) {\n // using this approach: http://stackoverflow.com/a/3153457/22466\n var words = options.text.split(' ');\n var tempText = \"\";\n for (var i=0, ii=words.length; i<ii; i++) {\n var word = words[i];\n this.text.attr(\"text\", tempText + \" \" + word);\n if (this.text.getBBox().width > maxWidth) {\n tempText += \"\\n\" + word;\n } else {\n tempText += \" \" + word;\n }\n }\n this.text.attr(\"text\", tempText.substring(1));\n }\n\n this.group.push(this.text);\n\n if (symbol) {\n var tmpMargin = this.getAttr('text-margin');\n\n symbol.attr({\n 'fill' : this.getAttr('fill'),\n 'stroke' : this.getAttr('element-color'),\n 'stroke-width' : this.getAttr('line-width'),\n 'width' : this.text.getBBox().width + 2 * tmpMargin,\n 'height' : this.text.getBBox().height + 2 * tmpMargin\n });\n\n symbol.node.setAttribute('class', this.getAttr('class'));\n var roundness = this.getAttr('roundness');\n if (!isNaN(roundness)) {\n symbol.node.setAttribute('ry', roundness);\n symbol.node.setAttribute('rx', roundness);\n }\n\n if (options.link) { symbol.attr('href', options.link); }\n if (options.target) { symbol.attr('target', options.target); }\n\n //ndrqu Add click function with event and options params\n if (options.function) { \n symbol.node.addEventListener(\"click\", function(evt) {\n window[options.function](evt,options);\n }, false);\n symbol.attr({ 'cursor' : 'pointer' });\n }\n if (options.key) { symbol.node.id = options.key; }\n\n this.group.push(symbol);\n symbol.insertBefore(this.text);\n\n this.text.attr({\n 'y': symbol.getBBox().height/2\n });\n\n this.initialize();\n }\n\n}\n\n/* Gets the attribute based on Flowstate, Symbol-Name and default, first found wins */\nSymbol.prototype.getAttr = function(attName) {\n if (!this.chart) {\n return undefined;\n }\n var opt3 = (this.chart.options) ? this.chart.options[attName] : undefined;\n var opt2 = (this.chart.options.symbols) ? this.chart.options.symbols[this.symbolType][attName] : undefined;\n var opt1;\n if (this.chart.options.flowstate && this.chart.options.flowstate[this.flowstate]) {\n opt1 = this.chart.options.flowstate[this.flowstate][attName];\n }\n return (opt1 || opt2 || opt3);\n};\n\nSymbol.prototype.initialize = function() {\n this.group.transform('t' + this.getAttr('line-width') + ',' + this.getAttr('line-width'));\n\n this.width = this.group.getBBox().width;\n this.height = this.group.getBBox().height;\n};\n\nSymbol.prototype.getCenter = function() {\n return {x: this.getX() + this.width/2,\n y: this.getY() + this.height/2};\n};\n\nSymbol.prototype.getX = function() {\n return this.group.getBBox().x;\n};\n\nSymbol.prototype.getY = function() {\n return this.group.getBBox().y;\n};\n\nSymbol.prototype.shiftX = function(x) {\n this.group.transform('t' + (this.getX() + x) + ',' + this.getY());\n};\n\nSymbol.prototype.setX = function(x) {\n this.group.transform('t' + x + ',' + this.getY());\n};\n\nSymbol.prototype.shiftY = function(y) {\n this.group.transform('t' + this.getX() + ',' + (this.getY() + y));\n};\n\nSymbol.prototype.setY = function(y) {\n this.group.transform('t' + this.getX() + ',' + y);\n};\n\nSymbol.prototype.getTop = function() {\n var y = this.getY();\n var x = this.getX() + this.width/2;\n return {x: x, y: y};\n};\n\nSymbol.prototype.getBottom = function() {\n var y = this.getY() + this.height;\n var x = this.getX() + this.width/2;\n return {x: x, y: y};\n};\n\nSymbol.prototype.getLeft = function() {\n var y = this.getY() + this.group.getBBox().height/2;\n var x = this.getX();\n return {x: x, y: y};\n};\n\nSymbol.prototype.getRight = function() {\n var y = this.getY() + this.group.getBBox().height/2;\n var x = this.getX() + this.group.getBBox().width;\n return {x: x, y: y};\n};\n\nSymbol.prototype.render = function() {\n if (this.next) {\n\n var self = this;\n var lineLength = this.getAttr('line-length');\n\n if (this.next_direction === 'right') {\n\n var rightPoint = this.getRight();\n\n if (!this.next.isPositioned) {\n this.next.setY(rightPoint.y - this.next.height/2);\n this.next.shiftX(this.group.getBBox().x + this.width + lineLength);\n\n (function shift() {\n var hasSymbolUnder = false;\n var symb;\n for (var i = 0, len = self.chart.symbols.length; i < len; i++) {\n symb = self.chart.symbols[i];\n\n var diff = Math.abs(symb.getCenter().x - self.next.getCenter().x);\n if (symb.getCenter().y > self.next.getCenter().y && diff <= self.next.width/2) {\n hasSymbolUnder = true;\n break;\n }\n }\n\n if (hasSymbolUnder) {\n if (self.next.symbolType === 'end') return;\n self.next.setX(symb.getX() + symb.width + lineLength);\n shift();\n }\n })();\n\n this.next.isPositioned = true;\n\n this.next.render();\n }\n } else if (this.next_direction === 'left') {\n\n var leftPoint = this.getLeft();\n\n if (!this.next.isPositioned) {\n this.next.setY(leftPoint.y - this.next.height/2);\n this.next.shiftX(-(this.group.getBBox().x + this.width + lineLength));\n\n (function shift() {\n var hasSymbolUnder = false;\n var symb;\n for (var i = 0, len = self.chart.symbols.length; i < len; i++) {\n symb = self.chart.symbols[i];\n\n var diff = Math.abs(symb.getCenter().x - self.next.getCenter().x);\n if (symb.getCenter().y > self.next.getCenter().y && diff <= self.next.width/2) {\n hasSymbolUnder = true;\n break;\n }\n }\n\n if (hasSymbolUnder) {\n if (self.next.symbolType === 'end') return;\n self.next.setX(symb.getX() + symb.width + lineLength);\n shift();\n }\n })();\n\n this.next.isPositioned = true;\n\n this.next.render();\n }\n } else {\n var bottomPoint = this.getBottom();\n\n if (!this.next.isPositioned) {\n this.next.shiftY(this.getY() + this.height + lineLength);\n this.next.setX(bottomPoint.x - this.next.width/2);\n this.next.isPositioned = true;\n\n this.next.render();\n }\n }\n }\n};\n\nSymbol.prototype.renderLines = function() {\n if (this.next) {\n if (this.next_direction) {\n this.drawLineTo(this.next, this.getAttr('arrow-text') || '', this.next_direction);\n } else {\n this.drawLineTo(this.next, this.getAttr('arrow-text') || '');\n }\n }\n};\n\nSymbol.prototype.drawLineTo = function(symbol, text, origin) {\n if (this.connectedTo.indexOf(symbol) < 0) {\n this.connectedTo.push(symbol);\n }\n\n var x = this.getCenter().x,\n y = this.getCenter().y,\n right = this.getRight(),\n bottom = this.getBottom(),\n top = this.getTop(),\n left = this.getLeft();\n\n var symbolX = symbol.getCenter().x,\n symbolY = symbol.getCenter().y,\n symbolTop = symbol.getTop(),\n symbolRight = symbol.getRight(),\n symbolLeft = symbol.getLeft();\n\n var isOnSameColumn = x === symbolX,\n isOnSameLine = y === symbolY,\n isUnder = y < symbolY,\n isUpper = y > symbolY || this === symbol,\n isLeft = x > symbolX,\n isRight = x < symbolX;\n\n var maxX = 0,\n line,\n yOffset,\n lineLength = this.getAttr('line-length'),\n lineWith = this.getAttr('line-width');\n\n if ((!origin || origin === 'bottom') && isOnSameColumn && isUnder) {\n if (symbol.topLines.length === 0 && this.bottomLines.length === 0) {\n line = drawLine(this.chart, bottom, symbolTop, text);\n } else {\n yOffset = Math.max(symbol.topLines.length, this.bottomLines.length) * 10;\n line = drawLine(this.chart, bottom, [\n {x: symbolTop.x, y: symbolTop.y - yOffset},\n {x: symbolTop.x, y: symbolTop.y}\n ], text);\n }\n this.bottomLines.push(line);\n symbol.topLines.push(line);\n this.bottomStart = true;\n symbol.topEnd = true;\n maxX = bottom.x;\n } else if ((!origin || origin === 'right') && isOnSameLine && isRight) {\n if (symbol.leftLines.length === 0 && this.rightLines.length === 0) {\n line = drawLine(this.chart, right, symbolLeft, text);\n } else {\n yOffset = Math.max(symbol.leftLines.length, this.rightLines.length) * 10;\n line = drawLine(this.chart, right, [\n {x: right.x, y: right.y - yOffset},\n {x: right.x, y: symbolLeft.y - yOffset},\n {x: symbolLeft.x, y: symbolLeft.y - yOffset},\n {x: symbolLeft.x, y: symbolLeft.y}\n ], text);\n }\n this.rightLines.push(line);\n symbol.leftLines.push(line);\n this.rightStart = true;\n symbol.leftEnd = true;\n maxX = symbolLeft.x;\n } else if ((!origin || origin === 'left') && isOnSameLine && isLeft) {\n if (symbol.rightLines.length === 0 && this.leftLines.length === 0) {\n line = drawLine(this.chart, left, symbolRight, text);\n } else {\n yOffset = Math.max(symbol.rightLines.length, this.leftLines.length) * 10;\n line = drawLine(this.chart, right, [\n {x: right.x, y: right.y - yOffset},\n {x: right.x, y: symbolRight.y - yOffset},\n {x: symbolRight.x, y: symbolRight.y - yOffset},\n {x: symbolRight.x, y: symbolRight.y}\n ], text);\n }\n this.leftLines.push(line);\n symbol.rightLines.push(line);\n this.leftStart = true;\n symbol.rightEnd = true;\n maxX = symbolRight.x;\n } else if ((!origin || origin === 'right') && isOnSameColumn && isUpper) {\n yOffset = Math.max(symbol.topLines.length, this.rightLines.length) * 10;\n line = drawLine(this.chart, right, [\n {x: right.x + lineLength/2, y: right.y - yOffset},\n {x: right.x + lineLength/2, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y}\n ], text);\n this.rightLines.push(line);\n symbol.topLines.push(line);\n this.rightStart = true;\n symbol.topEnd = true;\n maxX = right.x + lineLength/2;\n } else if ((!origin || origin === 'right') && isOnSameColumn && isUnder) {\n yOffset = Math.max(symbol.topLines.length, this.rightLines.length) * 10;\n line = drawLine(this.chart, right, [\n {x: right.x + lineLength/2, y: right.y - yOffset},\n {x: right.x + lineLength/2, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y}\n ], text);\n this.rightLines.push(line);\n symbol.topLines.push(line);\n this.rightStart = true;\n symbol.topEnd = true;\n maxX = right.x + lineLength/2;\n } else if ((!origin || origin === 'bottom') && isLeft) {\n yOffset = Math.max(symbol.topLines.length, this.bottomLines.length) * 10;\n if (this.leftEnd && isUpper) {\n line = drawLine(this.chart, bottom, [\n {x: bottom.x, y: bottom.y + lineLength/2 - yOffset},\n {x: bottom.x + (bottom.x - symbolTop.x)/2, y: bottom.y + lineLength/2 - yOffset},\n {x: bottom.x + (bottom.x - symbolTop.x)/2, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y}\n ], text);\n } else {\n line = drawLine(this.chart, bottom, [\n {x: bottom.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y}\n ], text);\n }\n this.bottomLines.push(line);\n symbol.topLines.push(line);\n this.bottomStart = true;\n symbol.topEnd = true;\n maxX = bottom.x + (bottom.x - symbolTop.x)/2;\n } else if ((!origin || origin === 'bottom') && isRight && isUnder) {\n yOffset = Math.max(symbol.topLines.length, this.bottomLines.length) * 10;\n line = drawLine(this.chart, bottom, [\n {x: bottom.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y}\n ], text);\n this.bottomLines.push(line);\n symbol.topLines.push(line);\n this.bottomStart = true;\n symbol.topEnd = true;\n maxX = bottom.x;\n if (symbolTop.x > maxX) maxX = symbolTop.x;\n } else if ((!origin || origin === 'bottom') && isRight) {\n yOffset = Math.max(symbol.topLines.length, this.bottomLines.length) * 10;\n line = drawLine(this.chart, bottom, [\n {x: bottom.x, y: bottom.y + lineLength/2 - yOffset},\n {x: bottom.x + (bottom.x - symbolTop.x)/2, y: bottom.y + lineLength/2 - yOffset},\n {x: bottom.x + (bottom.x - symbolTop.x)/2, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y}\n ], text);\n this.bottomLines.push(line);\n symbol.topLines.push(line);\n this.bottomStart = true;\n symbol.topEnd = true;\n maxX = bottom.x + (bottom.x - symbolTop.x)/2;\n } else if ((origin && origin === 'right') && isLeft) {\n yOffset = Math.max(symbol.topLines.length, this.rightLines.length) * 10;\n line = drawLine(this.chart, right, [\n {x: right.x + lineLength/2, y: right.y},\n {x: right.x + lineLength/2, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y}\n ], text);\n this.rightLines.push(line);\n symbol.topLines.push(line);\n this.rightStart = true;\n symbol.topEnd = true;\n maxX = right.x + lineLength/2;\n } else if ((origin && origin === 'right') && isRight) {\n yOffset = Math.max(symbol.topLines.length, this.rightLines.length) * 10;\n line = drawLine(this.chart, right, [\n {x: symbolTop.x, y: right.y - yOffset},\n {x: symbolTop.x, y: symbolTop.y - yOffset}\n ], text);\n this.rightLines.push(line);\n symbol.topLines.push(line);\n this.rightStart = true;\n symbol.topEnd = true;\n maxX = right.x + lineLength/2;\n } else if ((origin && origin === 'bottom') && isOnSameColumn && isUpper) {\n yOffset = Math.max(symbol.topLines.length, this.bottomLines.length) * 10;\n line = drawLine(this.chart, bottom, [\n {x: bottom.x, y: bottom.y + lineLength/2 - yOffset},\n {x: right.x + lineLength/2, y: bottom.y + lineLength/2 - yOffset},\n {x: right.x + lineLength/2, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y}\n ], text);\n this.bottomLines.push(line);\n symbol.topLines.push(line);\n this.bottomStart = true;\n symbol.topEnd = true;\n maxX = bottom.x + lineLength/2;\n } else if ((origin === 'left') && isOnSameColumn && isUpper) {\n var diffX = left.x - lineLength/2;\n if (symbolLeft.x < left.x) {\n diffX = symbolLeft.x - lineLength/2;\n }\n yOffset = Math.max(symbol.topLines.length, this.leftLines.length) * 10;\n line = drawLine(this.chart, left, [\n {x: diffX, y: left.y - yOffset},\n {x: diffX, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y}\n ], text);\n this.leftLines.push(line);\n symbol.topLines.push(line);\n this.leftStart = true;\n symbol.topEnd = true;\n maxX = left.x;\n } else if ((origin === 'left')) {\n yOffset = Math.max(symbol.topLines.length, this.leftLines.length) * 10;\n line = drawLine(this.chart, left, [\n {x: symbolTop.x + (left.x - symbolTop.x)/2, y: left.y},\n {x: symbolTop.x + (left.x - symbolTop.x)/2, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y}\n ], text);\n this.leftLines.push(line);\n symbol.topLines.push(line);\n this.leftStart = true;\n symbol.topEnd = true;\n maxX = left.x;\n } else if ((origin === 'top')) {\n yOffset = Math.max(symbol.topLines.length, this.topLines.length) * 10;\n line = drawLine(this.chart, top, [\n {x: top.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y - lineLength/2 - yOffset},\n {x: symbolTop.x, y: symbolTop.y}\n ], text);\n this.topLines.push(line);\n symbol.topLines.push(line);\n this.topStart = true;\n symbol.topEnd = true;\n maxX = top.x;\n }\n\n //update line style\n if (this.lineStyle[symbol.key] && line){\n line.attr(this.lineStyle[symbol.key]);\n }\n\n if (line) {\n for (var l = 0, llen = this.chart.lines.length; l < llen; l++) {\n var otherLine = this.chart.lines[l];\n\n var ePath = otherLine.attr('path'),\n lPath = line.attr('path');\n\n for (var iP = 0, lenP = ePath.length - 1; iP < lenP; iP++) {\n var newPath = [];\n newPath.push(['M', ePath[iP][1], ePath[iP][2]]);\n newPath.push(['L', ePath[iP + 1][1], ePath[iP + 1][2]]);\n\n var line1_from_x = newPath[0][1];\n var line1_from_y = newPath[0][2];\n var line1_to_x = newPath[1][1];\n var line1_to_y = newPath[1][2];\n\n for (var lP = 0, lenlP = lPath.length - 1; lP < lenlP; lP++) {\n var newLinePath = [];\n newLinePath.push(['M', lPath[lP][1], lPath[lP][2]]);\n newLinePath.push(['L', lPath[lP + 1][1], lPath[lP + 1][2]]);\n\n var line2_from_x = newLinePath[0][1];\n var line2_from_y = newLinePath[0][2];\n var line2_to_x = newLinePath[1][1];\n var line2_to_y = newLinePath[1][2];\n\n var res = checkLineIntersection(line1_from_x, line1_from_y, line1_to_x, line1_to_y, line2_from_x, line2_from_y, line2_to_x, line2_to_y);\n if (res.onLine1 && res.onLine2) {\n\n var newSegment;\n if (line2_from_y === line2_to_y) {\n if (line2_from_x > line2_to_x) {\n newSegment = ['L', res.x + lineWith * 2, line2_from_y];\n lPath.splice(lP + 1, 0, newSegment);\n newSegment = ['C', res.x + lineWith * 2, line2_from_y, res.x, line2_from_y - lineWith * 4, res.x - lineWith * 2, line2_from_y];\n lPath.splice(lP + 2, 0, newSegment);\n line.attr('path', lPath);\n } else {\n newSegment = ['L', res.x - lineWith * 2, line2_from_y];\n lPath.splice(lP + 1, 0, newSegment);\n newSegment = ['C', res.x - lineWith * 2, line2_from_y, res.x, line2_from_y - lineWith * 4, res.x + lineWith * 2, line2_from_y];\n lPath.splice(lP + 2, 0, newSegment);\n line.attr('path', lPath);\n }\n } else {\n if (line2_from_y > line2_to_y) {\n newSegment = ['L', line2_from_x, res.y + lineWith * 2];\n lPath.splice(lP + 1, 0, newSegment);\n newSegment = ['C', line2_from_x, res.y + lineWith * 2, line2_from_x + lineWith * 4, res.y, line2_from_x, res.y - lineWith * 2];\n lPath.splice(lP + 2, 0, newSegment);\n line.attr('path', lPath);\n } else {\n newSegment = ['L', line2_from_x, res.y - lineWith * 2];\n lPath.splice(lP + 1, 0, newSegment);\n newSegment = ['C', line2_from_x, res.y - lineWith * 2, line2_from_x + lineWith * 4, res.y, line2_from_x, res.y + lineWith * 2];\n lPath.splice(lP + 2, 0, newSegment);\n line.attr('path', lPath);\n }\n }\n\n lP += 2;\n }\n }\n }\n }\n\n this.chart.lines.push(line);\n if (this.chart.minXFromSymbols === undefined || this.chart.minXFromSymbols > left.x) {\n this.chart.minXFromSymbols = left.x;\n }\n }\n\n if (!this.chart.maxXFromLine || (this.chart.maxXFromLine && maxX > this.chart.maxXFromLine)) {\n this.chart.maxXFromLine = maxX;\n }\n};\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.symbol.js\n// module id = 2\n// module chunks = 0","function drawPath(chart, location, points) {\n var i, len;\n var path = 'M{0},{1}';\n for (i = 2, len = 2 * points.length + 2; i < len; i+=2) {\n path += ' L{' + i + '},{' + (i + 1) + '}';\n }\n var pathValues = [location.x, location.y];\n for (i = 0, len = points.length; i < len; i++) {\n pathValues.push(points[i].x);\n pathValues.push(points[i].y);\n }\n var symbol = chart.paper.path(path, pathValues);\n symbol.attr('stroke', chart.options['element-color']);\n symbol.attr('stroke-width', chart.options['line-width']);\n\n var font = chart.options.font;\n var fontF = chart.options['font-family'];\n var fontW = chart.options['font-weight'];\n\n if (font) symbol.attr({ 'font': font });\n if (fontF) symbol.attr({ 'font-family': fontF });\n if (fontW) symbol.attr({ 'font-weight': fontW });\n\n return symbol;\n}\n\nfunction drawLine(chart, from, to, text) {\n var i, len;\n\n if (Object.prototype.toString.call(to) !== '[object Array]') {\n to = [to];\n }\n\n var path = 'M{0},{1}';\n for (i = 2, len = 2 * to.length + 2; i < len; i+=2) {\n path += ' L{' + i + '},{' + (i + 1) + '}';\n }\n var pathValues = [from.x, from.y];\n for (i = 0, len = to.length; i < len; i++) {\n pathValues.push(to[i].x);\n pathValues.push(to[i].y);\n }\n\n var line = chart.paper.path(path, pathValues);\n line.attr({\n stroke: chart.options['line-color'],\n 'stroke-width': chart.options['line-width'],\n 'arrow-end': chart.options['arrow-end']\n });\n\n var font = chart.options.font;\n var fontF = chart.options['font-family'];\n var fontW = chart.options['font-weight'];\n\n if (font) line.attr({ 'font': font });\n if (fontF) line.attr({ 'font-family': fontF });\n if (fontW) line.attr({ 'font-weight': fontW });\n\n if (text) {\n\n var centerText = false;\n\n var textPath = chart.paper.text(0, 0, text);\n var textAnchor = 'start';\n\n var isHorizontal = false;\n var firstTo = to[0];\n\n if (from.y === firstTo.y) {\n isHorizontal = true;\n }\n\n var x = 0,\n y = 0;\n\n if (centerText) {\n if (from.x > firstTo.x) {\n x = from.x - (from.x - firstTo.x)/2;\n } else {\n x = firstTo.x - (firstTo.x - from.x)/2;\n }\n\n if (from.y > firstTo.y) {\n y = from.y - (from.y - firstTo.y)/2;\n } else {\n y = firstTo.y - (firstTo.y - from.y)/2;\n }\n\n if (isHorizontal) {\n x -= textPath.getBBox().width/2;\n y -= chart.options['text-margin'];\n } else {\n x += chart.options['text-margin'];\n y -= textPath.getBBox().height/2;\n }\n } else {\n x = from.x;\n y = from.y;\n\n if (isHorizontal) {\n if (from.x > firstTo.x) {\n x -= chart.options['text-margin']/2;\n textAnchor = 'end';\n } else {\n x += chart.options['text-margin']/2;\n }\n y -= chart.options['text-margin'];\n } else {\n x += chart.options['text-margin']/2;\n y += chart.options['text-margin'];\n if (from.y > firstTo.y) {\n y -= chart.options['text-margin']*2;\n }\n }\n }\n\n textPath.attr({\n 'text-anchor': textAnchor,\n 'font-size': chart.options['font-size'],\n 'fill': chart.options['font-color'],\n x: x,\n y: y\n });\n\n if (font) textPath.attr({ 'font': font });\n if (fontF) textPath.attr({ 'font-family': fontF });\n if (fontW) textPath.attr({ 'font-weight': fontW });\n }\n\n return line;\n}\n\nfunction checkLineIntersection(line1StartX, line1StartY, line1EndX, line1EndY, line2StartX, line2StartY, line2EndX, line2EndY) {\n // if the lines intersect, the result contains the x and y of the intersection (treating the lines as infinite) and booleans for whether line segment 1 or line segment 2 contain the point\n var denominator, a, b, numerator1, numerator2, result = {\n x: null,\n y: null,\n onLine1: false,\n onLine2: false\n };\n denominator = ((line2EndY - line2StartY) * (line1EndX - line1StartX)) - ((line2EndX - line2StartX) * (line1EndY - line1StartY));\n if (denominator === 0) {\n return result;\n }\n a = line1StartY - line2StartY;\n b = line1StartX - line2StartX;\n numerator1 = ((line2EndX - line2StartX) * a) - ((line2EndY - line2StartY) * b);\n numerator2 = ((line1EndX - line1StartX) * a) - ((line1EndY - line1StartY) * b);\n a = numerator1 / denominator;\n b = numerator2 / denominator;\n\n // if we cast these lines infinitely in both directions, they intersect here:\n result.x = line1StartX + (a * (line1EndX - line1StartX));\n result.y = line1StartY + (a * (line1EndY - line1StartY));\n /*\n // it is worth noting that this should be the same as:\n x = line2StartX + (b * (line2EndX - line2StartX));\n y = line2StartX + (b * (line2EndY - line2StartY));\n */\n // if line1 is a segment and line2 is infinite, they intersect if:\n if (a > 0 && a < 1) {\n result.onLine1 = true;\n }\n // if line2 is a segment and line1 is infinite, they intersect if:\n if (b > 0 && b < 1) {\n result.onLine2 = true;\n }\n // if line1 and line2 are segments, they intersect if both of the above are true\n return result;\n}\n\nmodule.exports = {\n\tdrawPath: drawPath,\n\tdrawLine: drawLine,\n\tcheckLineIntersection: checkLineIntersection\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.functions.js\n// module id = 3\n// module chunks = 0","var FlowChart = require('./flowchart.chart');\nvar Start = require('./flowchart.symbol.start');\nvar End = require('./flowchart.symbol.end');\nvar Operation = require('./flowchart.symbol.operation');\nvar InputOutput = require('./flowchart.symbol.inputoutput');\nvar Input = require('./flowchart.symbol.input'); //tds\nvar Output = require('./flowchart.symbol.output'); //tds\nvar Subroutine = require('./flowchart.symbol.subroutine');\nvar Condition = require('./flowchart.symbol.condition');\nvar Parallel = require('./flowchart.symbol.parallel');\n\n\nfunction parse(input) {\n input = input || '';\n input = input.trim();\n\n var chart = {\n symbols: {},\n start: null,\n drawSVG: function(container, options) {\n var self = this;\n\n if (this.diagram) {\n this.diagram.clean();\n }\n\n var diagram = new FlowChart(container, options);\n this.diagram = diagram;\n var dispSymbols = {};\n\n function getDisplaySymbol(s) {\n if (dispSymbols[s.key]) {\n return dispSymbols[s.key];\n }\n\n switch (s.symbolType) {\n case 'start':\n dispSymbols[s.key] = new Start(diagram, s);\n break;\n case 'end':\n dispSymbols[s.key] = new End(diagram, s);\n break;\n case 'operation':\n dispSymbols[s.key] = new Operation(diagram, s);\n break;\n case 'inputoutput':\n dispSymbols[s.key] = new InputOutput(diagram, s);\n break;\n case 'input':\n dispSymbols[s.key] = new Input(diagram, s); //tds\n break; \n case 'output':\n dispSymbols[s.key] = new Output(diagram, s); //tds\n break; \n case 'subroutine':\n dispSymbols[s.key] = new Subroutine(diagram, s);\n break;\n case 'condition':\n dispSymbols[s.key] = new Condition(diagram, s);\n break;\n case 'parallel':\n dispSymbols[s.key] = new Parallel(diagram, s);\n break;\n default:\n return new Error('Wrong symbol type!');\n }\n\n return dispSymbols[s.key];\n }\n\n (function constructChart(s, prevDisp, prev) {\n var dispSymb = getDisplaySymbol(s);\n\n if (self.start === s) {\n diagram.startWith(dispSymb);\n } else if (prevDisp && prev && !prevDisp.pathOk) {\n if (prevDisp instanceof(Condition)) {\n if (prev.yes === s) {\n prevDisp.yes(dispSymb);\n }\n if (prev.no === s) {\n prevDisp.no(dispSymb);\n }\n } else if (prevDisp instanceof(Parallel)) {\n if (prev.path1 === s) {\n prevDisp.path1(dispSymb);\n }\n if (prev.path2 === s) {\n prevDisp.path2(dispSymb);\n }\n if (prev.path3 === s) {\n prevDisp.path3(dispSymb);\n }\n } else {\n prevDisp.then(dispSymb);\n }\n }\n\n if (dispSymb.pathOk) {\n return dispSymb;\n }\n\n if (dispSymb instanceof(Condition)) {\n if (s.yes) {\n constructChart(s.yes, dispSymb, s);\n }\n if (s.no) {\n constructChart(s.no, dispSymb, s);\n }\n } else if (dispSymb instanceof(Parallel)) {\n if (s.path1) {\n constructChart(s.path1, dispSymb, s);\n }\n if (s.path2) {\n constructChart(s.path2, dispSymb, s);\n }\n if (s.path3) {\n constructChart(s.path3, dispSymb, s);\n }\n } else if (s.next) {\n constructChart(s.next, dispSymb, s);\n }\n\n return dispSymb;\n })(this.start);\n\n diagram.render();\n },\n clean: function() {\n this.diagram.clean();\n },\n options: function() {\n return this.diagram.options;\n }\n };\n\n var lines = [];\n var prevBreak = 0;\n for (var i0 = 1, i0len = input.length; i0 < i0len; i0++) {\n if(input[i0] === '\\n' && input[i0 - 1] !== '\\\\') {\n var line0 = input.substring(prevBreak, i0);\n prevBreak = i0 + 1;\n lines.push(line0.replace(/\\\\\\n/g, '\\n'));\n }\n }\n\n if (prevBreak < input.length) {\n lines.push(input.substr(prevBreak));\n }\n\n for (var l = 1, len = lines.length; l < len;) {\n var currentLine = lines[l];\n\n if (currentLine.indexOf('->') < 0 && currentLine.indexOf('=>') < 0 && currentLine.indexOf('@>') < 0) {\n lines[l - 1] += '\\n' + currentLine;\n lines.splice(l, 1);\n len--;\n } else {\n l++;\n }\n }\n\n function getStyle(s){\n var startIndex = s.indexOf('(') + 1;\n var endIndex = s.indexOf(')');\n if (startIndex >= 0 && endIndex >= 0) {\n return s.substring(startIndex,endIndex);\n }\n return '{}';\n }\n\n function getSymbValue(s){\n var startIndex = s.indexOf('(') + 1;\n var endIndex = s.indexOf(')');\n if (startIndex >= 0 && endIndex >= 0) {\n return s.substring(startIndex,endIndex);\n }\n return '';\n }\n\n function getSymbol(s) {\n var startIndex = s.indexOf('(') + 1;\n var endIndex = s.indexOf(')');\n if (startIndex >= 0 && endIndex >= 0) {\n return chart.symbols[s.substring(0, startIndex - 1)];\n }\n return chart.symbols[s];\n }\n\n function getNextPath(s) {\n var next = 'next';\n var startIndex = s.indexOf('(') + 1;\n var endIndex = s.indexOf(')');\n if (startIndex >= 0 && endIndex >= 0) {\n next = flowSymb.substring(startIndex, endIndex);\n if (next.indexOf(',') < 0) {\n if (next !== 'yes' && next !== 'no') {\n next = 'next, ' + next;\n }\n }\n }\n return next;\n }\n \n function getAnnotation(s) {\n\tvar startIndex = s.indexOf(\"(\") + 1, endIndex = s.indexOf(\")\");\n\tvar tmp = s.substring(startIndex, endIndex);\n\tif(tmp.indexOf(\",\") > 0) { tmp = tmp.substring(0, tmp.indexOf(\",\")); }\n\tvar tmp_split = tmp.split(\"@\");\n\tif(tmp_split.length > 1)\n\t\treturn startIndex >= 0 && endIndex >= 0 ? tmp_split[1] : \"\";\n }\n\n while (lines.length > 0) {\n var line = lines.splice(0, 1)[0].trim();\n\n if (line.indexOf('=>') >= 0) {\n // definition\n var parts = line.split('=>');\n var symbol = {\n key: parts[0].replace(/\\(.*\\)/, ''),\n symbolType: parts[1],\n text: null,\n link: null,\n target: null,\n flowstate: null,\n function: null,\n lineStyle: {},\n params: {}\n };\n\n //parse parameters\n var params = parts[0].match(/\\((.*)\\)/);\n if (params && params.length > 1){\n var entries = params[1].split(',');\n for(var i = 0; i < entries.length; i++) {\n var entry = entries[i].split('=');\n if (entry.length == 2) {\n symbol.params[entry[0]] = entry[1];\n }\n }\n }\n\n var sub;\n\n if (symbol.symbolType.indexOf(': ') >= 0) {\n sub = symbol.symbolType.split(': ');\n symbol.symbolType = sub.shift();\n symbol.text = sub.join(': ');\n }\n\n if (symbol.text && symbol.text.indexOf(':$') >= 0) {\n sub = symbol.text.split(':$');\n symbol.text = sub.shift();\n symbol.function = sub.join(':$');\n } else if (symbol.symbolType.indexOf(':$') >= 0) {\n sub = symbol.symbolType.split(':$');\n symbol.symbolType = sub.shift();\n symbol.function = sub.join(':$');\n } else if (symbol.text && symbol.text.indexOf(':>') >= 0) {\n sub = symbol.text.split(':>');\n symbol.text = sub.shift();\n symbol.link = sub.join(':>');\n } else if (symbol.symbolType.indexOf(':>') >= 0) {\n sub = symbol.symbolType.split(':>');\n symbol.symbolType = sub.shift();\n symbol.link = sub.join(':>');\n }\n\n if (symbol.symbolType.indexOf('\\n') >= 0) {\n symbol.symbolType = symbol.symbolType.split('\\n')[0];\n }\n\n /* adding support for links */\n if (symbol.link) {\n var startIndex = symbol.link.indexOf('[') + 1;\n var endIndex = symbol.link.indexOf(']');\n if (startIndex >= 0 && endIndex >= 0) {\n symbol.target = symbol.link.substring(startIndex, endIndex);\n symbol.link = symbol.link.substring(0, startIndex - 1);\n }\n }\n /* end of link support */\n\n /* adding support for flowstates */\n if (symbol.text) {\n if (symbol.text.indexOf('|') >= 0) {\n var txtAndState = symbol.text.split('|');\n symbol.flowstate = txtAndState.pop().trim();\n symbol.text = txtAndState.join('|');\n }\n }\n /* end of flowstate support */\n\n chart.symbols[symbol.key] = symbol;\n\n } else if (line.indexOf('->') >= 0) {\n var ann = getAnnotation(line);\n if (ann) {\n line = line.replace('@' + ann, ''); \n }\n // flow\n var flowSymbols = line.split('->');\n for (var iS = 0, lenS = flowSymbols.length; iS < lenS; iS++) {\n var flowSymb = flowSymbols[iS];\n var symbVal = getSymbValue(flowSymb);\n\n if (symbVal === 'true' || symbVal === 'false') {\n // map true or false to yes or no respectively\n flowSymb = flowSymb.replace('true', 'yes');\n flowSymb = flowSymb.replace('false', 'no');\n }\n \n var next = getNextPath(flowSymb);\n var realSymb = getSymbol(flowSymb);\n\n var direction = null;\n if (next.indexOf(',') >= 0) {\n var condOpt = next.split(',');\n next = condOpt[0];\n direction = condOpt[1].trim();\n }\n\n if (ann) {\n if (realSymb.symbolType === 'condition') {\n if (next === \"yes\" || next === \"true\") {\n realSymb.yes_annotation = ann;\n } else {\n realSymb.no_annotation = ann;\n }\n } else if (realSymb.symbolType === 'parallel') {\n if (next === 'path1') {\n realSymb.path1_annotation = ann;\n } else if (next === 'path2') {\n realSymb.path2_annotation = ann;\n } else if (next === 'path3') {\n realSymb.path3_annotation = ann;\n }\n }\n ann = null;\n }\n\n if (!chart.start) {\n chart.start = realSymb;\n }\n\n if (iS + 1 < lenS) {\n var nextSymb = flowSymbols[iS + 1];\n realSymb[next] = getSymbol(nextSymb);\n realSymb['direction_' + next] = direction;\n direction = null;\n }\n }\n } else if (line.indexOf('@>') >= 0) {\n\n // line style\n var lineStyleSymbols = line.split('@>');\n for (var iSS = 0, lenSS = lineStyleSymbols.length; iSS < lenSS; iSS++) {\n if ((iSS + 1) !== lenSS) {\n var curSymb = getSymbol(lineStyleSymbols[iSS]);\n var nextSymbol = getSymbol(lineStyleSymbols[iSS+1]);\n\n curSymb['lineStyle'][nextSymbol.key] = JSON.parse(getStyle(lineStyleSymbols[iSS + 1]));\n }\n }\n }\n\n }\n return chart;\n}\n\nmodule.exports = parse;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.parse.js\n// module id = 4\n// module chunks = 0","var Symbol = require('./flowchart.symbol');\nvar inherits = require('./flowchart.helpers').inherits;\nvar drawAPI = require('./flowchart.functions');\nvar drawPath = drawAPI.drawPath;\n\nfunction Condition(chart, options) {\n options = options || {};\n Symbol.call(this, chart, options);\n this.yes_annotation = options.yes_annotation;\n this.no_annotation = options.no_annotation;\n this.textMargin = this.getAttr('text-margin');\n this.yes_direction = options.direction_yes;\n this.no_direction = options.direction_no;\n if (!this.no_direction && this.yes_direction === 'right') {\n this.no_direction = 'bottom';\n } else if (!this.yes_direction && this.no_direction === 'bottom') {\n this.yes_direction = 'right'\n }\n this.yes_direction = this.yes_direction || 'bottom';\n this.no_direction = this.no_direction || 'right';\n\n this.text.attr({\n x: this.textMargin * 2\n });\n\n var width = this.text.getBBox().width + 3 * this.textMargin;\n width += width/2;\n var height = this.text.getBBox().height + 2 * this.textMargin;\n height += height/2;\n height = Math.max(width * 0.5, height);\n var startX = width/4;\n var startY = height/4;\n\n this.text.attr({\n x: startX + this.textMargin/2\n });\n\n var start = {x: startX, y: startY};\n var points = [\n {x: startX - width/4, y: startY + height/4},\n {x: startX - width/4 + width/2, y: startY + height/4 + height/2},\n {x: startX - width/4 + width, y: startY + height/4},\n {x: startX - width/4 + width/2, y: startY + height/4 - height/2},\n {x: startX - width/4, y: startY + height/4}\n ];\n\n var symbol = drawPath(chart, start, points);\n\n symbol.attr({\n stroke: this.getAttr('element-color'),\n 'stroke-width': this.getAttr('line-width'),\n fill: this.getAttr('fill')\n });\n if (options.link) { symbol.attr('href', options.link); }\n if (options.target) { symbol.attr('target', options.target); }\n if (options.key) { symbol.node.id = options.key; }\n symbol.node.setAttribute('class', this.getAttr('class'));\n\n this.text.attr({\n y: symbol.getBBox().height/2\n });\n\n this.group.push(symbol);\n symbol.insertBefore(this.text);\n this.symbol = symbol\n\n this.initialize();\n}\ninherits(Condition, Symbol);\n\nCondition.prototype.render = function() {\n var self = this;\n if (this.yes_direction) {\n this[this.yes_direction + '_symbol'] = this.yes_symbol;\n }\n\n if (this.no_direction) {\n this[this.no_direction + '_symbol'] = this.no_symbol;\n }\n\n var lineLength = this.getAttr('line-length');\n\n if (this.bottom_symbol) {\n var bottomPoint = this.getBottom();\n\n if (!this.bottom_symbol.isPositioned) {\n this.bottom_symbol.shiftY(this.getY() + this.height + lineLength);\n this.bottom_symbol.setX(bottomPoint.x - this.bottom_symbol.width/2);\n this.bottom_symbol.isPositioned = true;\n\n this.bottom_symbol.render();\n }\n }\n\n if (this.right_symbol) {\n var rightPoint = this.getRight();\n\n if (!this.right_symbol.isPositioned) {\n\n this.right_symbol.setY(rightPoint.y - this.right_symbol.height/2);\n this.right_symbol.shiftX(this.group.getBBox().x + this.width + lineLength);\n\n (function shift() {\n var hasSymbolUnder = false;\n var symb;\n for (var i = 0, len = self.chart.symbols.length; i < len; i++) {\n symb = self.chart.symbols[i];\n\n if (!self.params['align-next'] || self.params['align-next'] !== 'no') { \n var diff = Math.abs(symb.getCenter().x - self.right_symbol.getCenter().x);\n if (symb.getCenter().y > self.right_symbol.getCenter().y && diff <= self.right_symbol.width/2) {\n hasSymbolUnder = true;\n break;\n }\n }\n }\n\n if (hasSymbolUnder) {\n if (self.right_symbol.symbolType === 'end') return;\n self.right_symbol.setX(symb.getX() + symb.width + lineLength);\n shift();\n }\n })();\n\n this.right_symbol.isPositioned = true;\n\n this.right_symbol.render();\n }\n }\n \n if (this.left_symbol) {\n var leftPoint = this.getLeft();\n \n if (!this.left_symbol.isPositioned) {\n this.left_symbol.setY(leftPoint.y - this.left_symbol.height / 2);\n this.left_symbol.shiftX(-(this.group.getBBox().x + this.width + lineLength));\n\n (function shift() {\n var hasSymbolUnder = false;\n var symb;\n for (var i = 0, len = self.chart.symbols.length; i < len; i++) {\n symb = self.chart.symbols[i];\n \n if (!self.params['align-next'] || self.params['align-next'] !== 'no') {\n var diff = Math.abs(symb.getCenter().x - self.left_symbol.getCenter().x);\n if (symb.getCenter().y > self.left_symbol.getCenter().y && diff <= self.left_symbol.width / 2) {\n hasSymbolUnder = true;\n break;\n }\n }\n }\n \n if (hasSymbolUnder) {\n if (self.left_symbol.symbolType === 'end') return;\n self.left_symbol.setX(symb.getX() + symb.width + lineLength);\n shift();\n }\n })();\n \n this.left_symbol.isPositioned = true;\n \n this.left_symbol.render();\n }\n }\n};\n\nCondition.prototype.renderLines = function() {\n if (this.yes_symbol) {\n this.drawLineTo(this.yes_symbol, this.yes_annotation ? this.yes_annotation : this.getAttr('yes-text'), this.yes_direction);\n }\n\n if (this.no_symbol) {\n this.drawLineTo(this.no_symbol, this.no_annotation ? this.no_annotation : this.getAttr('no-text'), this.no_direction);\n }\n};\n\nmodule.exports = Condition;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.symbol.condition.js\n// module id = 5\n// module chunks = 0","var Symbol = require('./flowchart.symbol');\nvar inherits = require('./flowchart.helpers').inherits;\n\nfunction Parallel(chart, options) {\n var symbol = chart.paper.rect(0, 0, 0, 0);\n options = options || {};\n Symbol.call(this, chart, options, symbol);\n this.path1_annotation = options.path1_annotation || '';\n this.path2_annotation = options.path2_annotation || '';\n this.path3_annotation = options.path3_annotation || '';\n this.textMargin = this.getAttr('text-margin');\n this.path1_direction = 'bottom';\n this.path2_direction = 'right';\n this.path3_direction = 'top';\n this.params = options.params;\n if (options.direction_next === 'path1' && !options[options.direction_next] && options.next) {\n options[options.direction_next] = options.next;\n }\n if (options.direction_next === 'path2' && !options[options.direction_next] && options.next) {\n options[options.direction_next] = options.next;\n }\n if (options.direction_next === 'path3' && !options[options.direction_next] && options.next) {\n options[options.direction_next] = options.next;\n }\n\n if (options.path1 && options.direction_path1 && options.path2 && !options.direction_path2 && options.path3 && !options.direction_path3) {\n if (options.direction_path1 === 'right') {\n this.path2_direction = 'bottom';\n this.path1_direction = 'right';\n this.path3_direction = 'top';\n } else if (options.direction_path1 === 'top') {\n this.path2_direction = 'right';\n this.path1_direction = 'top';\n this.path3_direction = 'bottom';\n } else if (options.direction_path1 === 'left') {\n this.path2_direction = 'right';\n this.path1_direction = 'left';\n this.path3_direction = 'bottom';\n } else {\n this.path2_direction = 'right';\n this.path1_direction = 'bottom';\n this.path3_direction = 'top';\n }\n } else if (options.path1 && !options.direction_path1 && options.path2 && options.direction_path2 && options.path3 && !options.direction_path3) {\n if (options.direction_path2 === 'right') {\n this.path1_direction = 'bottom';\n this.path2_direction = 'right';\n this.path3_direction = 'top';\n } else if (options.direction_path2 === 'left') {\n this.path1_direction = 'bottom';\n this.path2_direction = 'left';\n this.path3_direction = 'right';\n } else {\n this.path1_direction = 'right';\n this.path2_direction = 'bottom';\n this.path3_direction = 'top';\n }\n } else if (options.path1 && !options.direction_path1 && options.path2 && !options.direction_path2 && options.path3 && options.direction_path3) {\n if (options.direction_path2 === 'right') {\n this.path1_direction = 'bottom';\n this.path2_direction = 'top';\n this.path3_direction = 'right';\n } else if (options.direction_path2 === 'left') {\n this.path1_direction = 'bottom';\n this.path2_direction = 'right';\n this.path3_direction = 'left';\n } else {\n this.path1_direction = 'right';\n this.path2_direction = 'bottom';\n this.path3_direction = 'top';\n }\n } else {\n this.path1_direction = options.direction_path1;\n this.path2_direction = options.direction_path2;\n this.path3_direction = options.direction_path3;\n }\n\n this.path1_direction = this.path1_direction || 'bottom';\n this.path2_direction = this.path2_direction || 'right';\n this.path3_direction = this.path3_direction || 'top';\n\n this.initialize();\n}\ninherits(Parallel, Symbol);\n\nParallel.prototype.render = function() {\n if (this.path1_direction) {\n this[this.path1_direction + '_symbol'] = this.path1_symbol;\n }\n\n if (this.path2_direction) {\n this[this.path2_direction + '_symbol'] = this.path2_symbol;\n }\n\n if (this.path3_direction) {\n this[this.path3_direction + '_symbol'] = this.path3_symbol;\n }\n\n var lineLength = this.getAttr('line-length');\n\n if (this.bottom_symbol) {\n var bottomPoint = this.getBottom();\n\n if (!this.bottom_symbol.isPositioned) {\n this.bottom_symbol.shiftY(this.getY() + this.height + lineLength);\n this.bottom_symbol.setX(bottomPoint.x - this.bottom_symbol.width / 2);\n this.bottom_symbol.isPositioned = true;\n\n this.bottom_symbol.render();\n }\n }\n\n if (this.top_symbol) {\n var topPoint = this.getTop();\n\n if (!this.top_symbol.isPositioned) {\n this.top_symbol.shiftY(this.getY() - this.top_symbol.height - lineLength);\n this.top_symbol.setX(topPoint.x + this.top_symbol.width);\n this.top_symbol.isPositioned = true;\n\n this.top_symbol.render();\n }\n }\n\n var self = this;\n\n if (this.left_symbol) {\n var leftPoint = this.getLeft();\n\n if (!this.left_symbol.isPositioned) {\n this.left_symbol.setY(leftPoint.y - this.left_symbol.height / 2);\n this.left_symbol.shiftX(-(this.group.getBBox().x + this.width + lineLength));\n (function shift() {\n var hasSymbolUnder = false;\n var symb;\n for (var i = 0, len = self.chart.symbols.length; i < len; i++) {\n symb = self.chart.symbols[i];\n\n if (!self.params['align-next'] || self.params['align-next'] !== 'no') {\n var diff = Math.abs(symb.getCenter().x - self.left_symbol.getCenter().x);\n if (symb.getCenter().y > self.left_symbol.getCenter().y && diff <= self.left_symbol.width / 2) {\n hasSymbolUnder = true;\n break;\n }\n }\n }\n\n if (hasSymbolUnder) {\n if (self.left_symbol.symbolType === 'end') return;\n self.left_symbol.setX(symb.getX() + symb.width + lineLength);\n shift();\n }\n })();\n\n this.left_symbol.isPositioned = true;\n\n this.left_symbol.render();\n }\n }\n\n if (this.right_symbol) {\n var rightPoint = this.getRight();\n\n if (!this.right_symbol.isPositioned) {\n this.right_symbol.setY(rightPoint.y - this.right_symbol.height / 2);\n this.right_symbol.shiftX(this.group.getBBox().x + this.width + lineLength);\n (function shift() {\n var hasSymbolUnder = false;\n var symb;\n for (var i = 0, len = self.chart.symbols.length; i < len; i++) {\n symb = self.chart.symbols[i];\n\n if (!self.params['align-next'] || self.params['align-next'] !== 'no') {\n var diff = Math.abs(symb.getCenter().x - self.right_symbol.getCenter().x);\n if (symb.getCenter().y > self.right_symbol.getCenter().y && diff <= self.right_symbol.width / 2) {\n hasSymbolUnder = true;\n break;\n }\n }\n }\n\n if (hasSymbolUnder) {\n if (self.right_symbol.symbolType === 'end') return;\n self.right_symbol.setX(symb.getX() + symb.width + lineLength);\n shift();\n }\n })();\n\n this.right_symbol.isPositioned = true;\n\n this.right_symbol.render();\n }\n }\n};\n\nParallel.prototype.renderLines = function() {\n if (this.path1_symbol) {\n this.drawLineTo(this.path1_symbol, this.path1_annotation, this.path1_direction);\n }\n\n if (this.path2_symbol) {\n this.drawLineTo(this.path2_symbol, this.path2_annotation, this.path2_direction);\n }\n\n if (this.path3_symbol) {\n this.drawLineTo(this.path3_symbol, this.path3_annotation, this.path3_direction);\n }\n};\n\nmodule.exports = Parallel;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.symbol.parallel.js\n// module id = 6\n// module chunks = 0","var Raphael = require('raphael');\nvar defaults = require('./flowchart.helpers').defaults;\nvar defaultOptions = require('./flowchart.defaults');\nvar Condition = require('./flowchart.symbol.condition');\nvar Parallel = require('./flowchart.symbol.parallel');\n\nfunction FlowChart(container, options) {\n options = options || {};\n\n this.paper = new Raphael(container);\n\n this.options = defaults(options, defaultOptions);\n\n this.symbols = [];\n this.lines = [];\n this.start = null;\n}\n\nFlowChart.prototype.handle = function(symbol) {\n if (this.symbols.indexOf(symbol) <= -1) {\n this.symbols.push(symbol);\n }\n\n var flowChart = this;\n\n if (symbol instanceof(Condition)) {\n symbol.yes = function(nextSymbol) {\n symbol.yes_symbol = nextSymbol;\n if(symbol.no_symbol) {\n symbol.pathOk = true;\n }\n return flowChart.handle(nextSymbol);\n };\n symbol.no = function(nextSymbol) {\n symbol.no_symbol = nextSymbol;\n if (symbol.yes_symbol) {\n symbol.pathOk = true;\n }\n return flowChart.handle(nextSymbol);\n };\n } else if (symbol instanceof(Parallel)) {\n symbol.path1 = function(nextSymbol) {\n symbol.path1_symbol = nextSymbol;\n if (symbol.path2_symbol) {\n symbol.pathOk = true;\n }\n return flowChart.handle(nextSymbol);\n };\n symbol.path2 = function(nextSymbol) {\n symbol.path2_symbol = nextSymbol;\n if (symbol.path3_symbol) {\n symbol.pathOk = true;\n }\n return flowChart.handle(nextSymbol);\n };\n symbol.path3 = function(nextSymbol) {\n symbol.path3_symbol = nextSymbol;\n if (symbol.path1_symbol) {\n symbol.pathOk = true;\n }\n return flowChart.handle(nextSymbol);\n };\n } else {\n symbol.then = function(nextSymbol) {\n symbol.next = nextSymbol;\n symbol.pathOk = true;\n return flowChart.handle(nextSymbol);\n };\n }\n\n return symbol;\n};\n\nFlowChart.prototype.startWith = function(symbol) {\n this.start = symbol;\n return this.handle(symbol);\n};\n\nFlowChart.prototype.render = function() {\n var maxWidth = 0,\n maxHeight = 0,\n i = 0,\n len = 0,\n maxX = 0,\n maxY = 0,\n minX = 0,\n minY = 0,\n symbol,\n line;\n\n for (i = 0, len = this.symbols.length; i < len; i++) {\n symbol = this.symbols[i];\n if (symbol.width > maxWidth) {\n maxWidth = symbol.width;\n }\n if (symbol.height > maxHeight) {\n maxHeight = symbol.height;\n }\n }\n\n for (i = 0, len = this.symbols.length; i < len; i++) {\n symbol = this.symbols[i];\n symbol.shiftX(this.options.x + (maxWidth - symbol.width)/2 + this.options['line-width']);\n symbol.shiftY(this.options.y + (maxHeight - symbol.height)/2 + this.options['line-width']);\n }\n\n this.start.render();\n // for (i = 0, len = this.symbols.length; i < len; i++) {\n // symbol = this.symbols[i];\n // symbol.render();\n // }\n\n for (i = 0, len = this.symbols.length; i < len; i++) {\n symbol = this.symbols[i];\n symbol.renderLines();\n }\n\n maxX = this.maxXFromLine;\n\n var x;\n var y;\n\n for (i = 0, len = this.symbols.length; i < len; i++) {\n symbol = this.symbols[i];\n var leftX = symbol.getX()\n x = leftX + symbol.width;\n y = symbol.getY() + symbol.height;\n if (leftX < minX) {\n minX = leftX;\n }\n if (x > maxX) {\n maxX = x;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n\n for (i = 0, len = this.lines.length; i < len; i++) {\n line = this.lines[i].getBBox();\n x = line.x;\n y = line.y;\n var x2 = line.x2;\n var y2 = line.y2;\n if (x < minX) {\n minX = x;\n }\n if (y < minY) {\n minY = y;\n }\n if (x2 > maxX) {\n maxX = x2;\n }\n if (y2 > maxY) {\n maxY = y2;\n }\n }\n\n var scale = this.options['scale'];\n var lineWidth = this.options['line-width'];\n\n if (this.minXFromSymbols < minX) minX = this.minXFromSymbols;\n\n if (minX < 0) minX -= lineWidth;\n if (minY < 0) minY -= lineWidth;\n\n var width = maxX + lineWidth - minX;\n var height = maxY + lineWidth - minY;\n\n this.paper.setSize(width * scale, height * scale);\n this.paper.setViewBox(minX, minY, width, height, true);\n};\n\nFlowChart.prototype.clean = function() {\n if (this.paper) {\n var paperDom = this.paper.canvas;\n paperDom.parentNode && paperDom.parentNode.removeChild(paperDom);\n }\n};\n\nmodule.exports = FlowChart;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.chart.js\n// module id = 7\n// module chunks = 0","// defaults\nmodule.exports = {\n 'x': 0,\n 'y': 0,\n // 'roundness': 0,\n 'line-width': 3,\n 'line-length': 50,\n 'text-margin': 10,\n 'font-size': 14,\n 'font-color': 'black',\n // 'font': 'normal',\n // 'font-family': 'calibri',\n // 'font-weight': 'normal',\n 'line-color': 'black',\n 'element-color': 'black',\n 'fill': 'white',\n 'yes-text': 'yes',\n 'no-text': 'no',\n 'arrow-end': 'block',\n 'class': 'flowchart',\n 'scale': 1,\n 'symbols': {\n 'start': {},\n 'end': {},\n 'condition': {},\n 'inputoutput': {},\n 'input': {}, //tds\n 'output': {}, //tds \n 'operation': {},\n 'subroutine': {},\n 'parallel': {}\n } //,\n // 'flowstate' : {\n // 'past' : { 'fill': '#CCCCCC', 'font-size': 12},\n // 'current' : {'fill': 'yellow', 'font-color': 'red', 'font-weight': 'bold'},\n // 'future' : { 'fill': '#FFFF99'},\n // 'invalid': {'fill': '#444444'}\n // }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.defaults.js\n// module id = 8\n// module chunks = 0","// add indexOf to non ECMA-262 standard compliant browsers\nif (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {\n \"use strict\";\n if (this === null) {\n throw new TypeError();\n }\n var t = Object(this);\n var len = t.length >>> 0;\n if (len === 0) {\n return -1;\n }\n var n = 0;\n if (arguments.length > 0) {\n n = Number(arguments[1]);\n if (n != n) { // shortcut for verifying if it's NaN\n n = 0;\n } else if (n !== 0 && n != Infinity && n != -Infinity) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n }\n if (n >= len) {\n return -1;\n }\n var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);\n for (; k < len; k++) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n };\n}\n\n// add lastIndexOf to non ECMA-262 standard compliant browsers\nif (!Array.prototype.lastIndexOf) {\n Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/) {\n \"use strict\";\n if (this === null) {\n throw new TypeError();\n }\n var t = Object(this);\n var len = t.length >>> 0;\n if (len === 0) {\n return -1;\n }\n var n = len;\n if (arguments.length > 1) {\n n = Number(arguments[1]);\n if (n != n) {\n n = 0;\n } else if (n !== 0 && n != (1 / 0) && n != -(1 / 0)) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n }\n var k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n);\n for (; k >= 0; k--) {\n if (k in t && t[k] === searchElement) {\n return k;\n }\n }\n return -1;\n };\n}\n\nif (!String.prototype.trim) {\n String.prototype.trim = function() {\n return this.replace(/^\\s+|\\s+$/g, '');\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.shim.js\n// module id = 9\n// module chunks = 0","var Symbol = require('./flowchart.symbol');\nvar inherits = require('./flowchart.helpers').inherits;\n\nfunction End(chart, options) {\n var symbol = chart.paper.rect(0, 0, 0, 0, 20);\n options = options || {};\n options.text = options.text || 'End';\n Symbol.call(this, chart, options, symbol);\n}\ninherits(End, Symbol);\n\nmodule.exports = End;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.symbol.end.js\n// module id = 10\n// module chunks = 0","var Symbol = require('./flowchart.symbol');\nvar inherits = require('./flowchart.helpers').inherits;\nvar drawAPI = require('./flowchart.functions');\nvar drawPath = drawAPI.drawPath;\n\nfunction Input(chart, options) {\n options = options || {};\n Symbol.call(this, chart, options);\n this.textMargin = this.getAttr('text-margin');\n\n this.text.attr({\n x: this.textMargin * 3\n });\n\n var width = this.text.getBBox().width + 4 * this.textMargin;\n var height = this.text.getBBox().height + 2 * this.textMargin;\n var startX = this.textMargin;\n var startY = height/2;\n\n var start = {x: startX, y: startY};\n var points = [\n {x: startX - this.textMargin + 2 * this.textMargin, y: height},\n {x: startX - this.textMargin + width, y: height},\n {x: startX - this.textMargin + width + 2 * this.textMargin, y: 0},\n {x: startX - this.textMargin, y: 0},\n {x: startX, y: startY}\n ];\n\n var symbol = drawPath(chart, start, points);\n\n symbol.attr({\n stroke: this.getAttr('element-color'),\n 'stroke-width': this.getAttr('line-width'),\n fill: this.getAttr('fill')\n });\n if (options.link) { symbol.attr('href', options.link); }\n if (options.target) { symbol.attr('target', options.target); }\n if (options.key) { symbol.node.id = options.key; }\n symbol.node.setAttribute('class', this.getAttr('class'));\n\n this.text.attr({\n y: symbol.getBBox().height/2\n });\n\n this.group.push(symbol);\n symbol.insertBefore(this.text);\n this.symbol = symbol\n\n this.initialize();\n}\ninherits(Input, Symbol);\n\nInput.prototype.getLeft = function() {\n var y = this.getY() + this.group.getBBox().height/2;\n var x = this.getX() + this.textMargin;\n return {x: x, y: y};\n};\n\nInput.prototype.getRight = function() {\n var y = this.getY() + this.group.getBBox().height/2;\n var x = this.getX() + this.group.getBBox().width - this.textMargin;\n return {x: x, y: y};\n};\n\nmodule.exports = Input;\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.symbol.input.js\n// module id = 11\n// module chunks = 0","var Symbol = require('./flowchart.symbol');\nvar inherits = require('./flowchart.helpers').inherits;\nvar drawAPI = require('./flowchart.functions');\nvar drawPath = drawAPI.drawPath;\n\nfunction InputOutput(chart, options) {\n options = options || {};\n Symbol.call(this, chart, options);\n this.textMargin = this.getAttr('text-margin');\n\n this.text.attr({\n x: this.textMargin * 3\n });\n\n var width = this.text.getBBox().width + 4 * this.textMargin;\n var height = this.text.getBBox().height + 2 * this.textMargin;\n var startX = this.textMargin;\n var startY = height/2;\n\n var start = {x: startX, y: startY};\n var points = [\n {x: startX - this.textMargin, y: height},\n {x: startX - this.textMargin + width, y: height},\n {x: startX - this.textMargin + width + 2 * this.textMargin, y: 0},\n {x: startX - this.textMargin + 2 * this.textMargin, y: 0},\n {x: startX, y: startY}\n ];\n\n var symbol = drawPath(chart, start, points);\n\n symbol.attr({\n stroke: this.getAttr('element-color'),\n 'stroke-width': this.getAttr('line-width'),\n fill: this.getAttr('fill')\n });\n if (options.link) { symbol.attr('href', options.link); }\n if (options.target) { symbol.attr('target', options.target); }\n if (options.key) { symbol.node.id = options.key; }\n symbol.node.setAttribute('class', this.getAttr('class'));\n\n this.text.attr({\n y: symbol.getBBox().height/2\n });\n\n this.group.push(symbol);\n symbol.insertBefore(this.text);\n this.symbol = symbol\n\n this.initialize();\n}\ninherits(InputOutput, Symbol);\n\nInputOutput.prototype.getLeft = function() {\n var y = this.getY() + this.group.getBBox().height/2;\n var x = this.getX() + this.textMargin;\n return {x: x, y: y};\n};\n\nInputOutput.prototype.getRight = function() {\n var y = this.getY() + this.group.getBBox().height/2;\n var x = this.getX() + this.group.getBBox().width - this.textMargin;\n return {x: x, y: y};\n};\n\nmodule.exports = InputOutput;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.symbol.inputoutput.js\n// module id = 12\n// module chunks = 0","var Symbol = require('./flowchart.symbol');\nvar inherits = require('./flowchart.helpers').inherits;\n\nfunction Operation(chart, options) {\n var symbol = chart.paper.rect(0, 0, 0, 0);\n options = options || {};\n Symbol.call(this, chart, options, symbol);\n}\ninherits(Operation, Symbol);\n\nmodule.exports = Operation;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.symbol.operation.js\n// module id = 13\n// module chunks = 0","var Symbol = require('./flowchart.symbol');\nvar inherits = require('./flowchart.helpers').inherits;\nvar drawAPI = require('./flowchart.functions');\nvar drawPath = drawAPI.drawPath;\n\nfunction Output(chart, options) {\n options = options || {};\n Symbol.call(this, chart, options);\n this.textMargin = this.getAttr('text-margin');\n\n this.text.attr({\n x: this.textMargin * 3\n });\n\n var width = this.text.getBBox().width + 4 * this.textMargin;\n var height = this.text.getBBox().height + 2 * this.textMargin;\n var startX = this.textMargin;\n var startY = height/2;\n\n var start = {x: startX, y: startY};\n var points = [\n {x: startX - this.textMargin, y: height},\n {x: startX - this.textMargin + width + 2 * this.textMargin, y: height},\n {x: startX - this.textMargin + width, y: 0},\n {x: startX - this.textMargin + 2 * this.textMargin, y: 0},\n {x: startX, y: startY}\n ];\n\n var symbol = drawPath(chart, start, points);\n\n symbol.attr({\n stroke: this.getAttr('element-color'),\n 'stroke-width': this.getAttr('line-width'),\n fill: this.getAttr('fill')\n });\n if (options.link) { symbol.attr('href', options.link); }\n if (options.target) { symbol.attr('target', options.target); }\n if (options.key) { symbol.node.id = options.key; }\n symbol.node.setAttribute('class', this.getAttr('class'));\n\n this.text.attr({\n y: symbol.getBBox().height/2\n });\n\n this.group.push(symbol);\n symbol.insertBefore(this.text);\n this.symbol = symbol\n\n this.initialize();\n}\ninherits(Output, Symbol);\n\nOutput.prototype.getLeft = function() {\n var y = this.getY() + this.group.getBBox().height/2;\n var x = this.getX() + this.textMargin;\n return {x: x, y: y};\n};\n\nOutput.prototype.getRight = function() {\n var y = this.getY() + this.group.getBBox().height/2;\n var x = this.getX() + this.group.getBBox().width - this.textMargin;\n return {x: x, y: y};\n};\n\nmodule.exports = Output;\n\n\n\n/*\n//var Symbol = require('./flowchart.symbol');\nvar inherits = require('./flowchart.helpers').inherits;\nvar drawAPI = require('./flowchart.functions');\nvar InputOutput = require('./flowchart.symbol.inputoutput');\nvar drawPath = drawAPI.drawPath;\n\nfunction Output(chart, options) {\n options = options || {};\n InputOutput.call(this, chart, options);\n\n var width = this.text.getBBox().width + 4 * this.textMargin;\n var height = this.text.getBBox().height + 2 * this.textMargin;\n var startX = this.textMargin;\n var startY = height/2;\n\n var start = {x: startX, y: startY};\n var points = [\n {x: startX - this.textMargin + 2 * this.textMargin, y: height},\n {x: startX - this.textMargin + width, y: height},\n {x: startX - this.textMargin + width + 2 * this.textMargin, y: 0},\n {x: startX - this.textMargin, y: 0},\n {x: startX, y: startY}\n ];\n\n var symbol = drawPath(chart, start, points);\n\n symbol.attr({\n stroke: this.getAttr('element-color'),\n 'stroke-width': this.getAttr('line-width'),\n fill: this.getAttr('fill')\n });\n if (options.link) { symbol.attr('href', options.link); }\n if (options.target) { symbol.attr('target', options.target); }\n if (options.key) { symbol.node.id = options.key; }\n symbol.node.setAttribute('class', this.getAttr('class'));\n\n this.text.attr({\n y: symbol.getBBox().height/2\n });\n\n this.group.push(symbol);\n symbol.insertBefore(this.text);\n \n if (this.symbol){\n this.group.remove(this.symbol); //tds\n this.symbol.parentNode.removeChild(this.symbol); //tds\n }\n this.symbol = symbol\n\n this.initialize();\n}\ninherits(Output, InputOutput);\n\nmodule.exports = Output;\n*/\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.symbol.output.js\n// module id = 14\n// module chunks = 0","var Symbol = require('./flowchart.symbol');\nvar inherits = require('./flowchart.helpers').inherits;\n\nfunction Start(chart, options) {\n var symbol = chart.paper.rect(0, 0, 0, 0, 20);\n options = options || {};\n options.text = options.text || 'Start';\n Symbol.call(this, chart, options, symbol);\n}\ninherits(Start, Symbol);\n\nmodule.exports = Start;\n\n// Start.prototype.render = function() {\n// if (this.next) {\n// var lineLength = this.chart.options.symbols[this.symbolType]['line-length'] || this.chart.options['line-length'];\n\n// var bottomPoint = this.getBottom();\n// var topPoint = this.next.getTop();\n\n// if (!this.next.isPositioned) {\n// this.next.shiftY(this.getY() + this.height + lineLength);\n// this.next.setX(bottomPoint.x - this.next.width/2);\n// this.next.isPositioned = true;\n\n// this.next.render();\n// }\n// }\n// };\n\n// Start.prototype.renderLines = function() {\n// if (this.next) {\n// this.drawLineTo(this.next);\n// }\n// };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.symbol.start.js\n// module id = 15\n// module chunks = 0","var Symbol = require('./flowchart.symbol');\nvar inherits = require('./flowchart.helpers').inherits;\n\nfunction Subroutine(chart, options) {\n var symbol = chart.paper.rect(0, 0, 0, 0);\n options = options || {};\n Symbol.call(this, chart, options, symbol);\n\n symbol.attr({\n width: this.text.getBBox().width + 4 * this.getAttr('text-margin')\n });\n\n this.text.attr({\n 'x': 2 * this.getAttr('text-margin')\n });\n\n var innerWrap = chart.paper.rect(0, 0, 0, 0);\n innerWrap.attr({\n x: this.getAttr('text-margin'),\n stroke: this.getAttr('element-color'),\n 'stroke-width': this.getAttr('line-width'),\n width: this.text.getBBox().width + 2 * this.getAttr('text-margin'),\n height: this.text.getBBox().height + 2 * this.getAttr('text-margin'),\n fill: this.getAttr('fill')\n });\n if (options.key) { innerWrap.node.id = options.key + 'i'; }\n\n var font = this.getAttr('font');\n var fontF = this.getAttr('font-family');\n var fontW = this.getAttr('font-weight');\n\n if (font) innerWrap.attr({ 'font': font });\n if (fontF) innerWrap.attr({ 'font-family': fontF });\n if (fontW) innerWrap.attr({ 'font-weight': fontW });\n\n if (options.link) { innerWrap.attr('href', options.link); }\n if (options.target) { innerWrap.attr('target', options.target); }\n this.group.push(innerWrap);\n innerWrap.insertBefore(this.text);\n\n this.initialize();\n}\ninherits(Subroutine, Symbol);\n\nmodule.exports = Subroutine;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/flowchart.symbol.subroutine.js\n// module id = 16\n// module chunks = 0","if (typeof jQuery != 'undefined') {\n\tvar parse = require('./flowchart.parse');\n\n\t(function( $ ) {\n\t\tfunction paramFit(needle, haystack) {\n\t\t\treturn needle == haystack ||\n\t\t\t( Array.isArray(haystack) && (haystack.includes(needle) || haystack.includes(Number(needle)) ))\n\t\t}\n\t\tvar methods = {\n\t\t\tinit : function(options) {\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\tvar $this = $(this);\n\t\t\t\t\tthis.chart = parse($this.text());\n\t\t\t\t\t$this.html('');\n\t\t\t\t\tthis.chart.drawSVG(this, options);\n\t\t\t\t});\n\t\t\t},\n\t\t\tsetFlowStateByParam : function(param, paramValue, newFlowState) {\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\tvar chart = this.chart;\n\n\t\t\t\t\t// @todo this should be part of Symbol API\n\t\t\t\t\tvar nextSymbolKeys = ['next', 'yes', 'no', 'path1', 'path2', 'path3'];\n\n\t\t\t\t\tfor (var property in chart.symbols) {\n\t\t\t\t\t\tif (chart.symbols.hasOwnProperty(property)) {\n\t\t\t\t\t\t\tvar symbol = chart.symbols[property];\n\t\t\t\t\t\t\tvar val = symbol.params[param];\n\t\t\t\t\t\t\tif (paramFit(val, paramValue)) {\n\t\t\t\t\t\t\t\tsymbol.flowstate = newFlowState;\n\t\t\t\t\t\t\t\tfor (var nski = 0; nski < nextSymbolKeys.length; nski++) {\n\t\t\t\t\t\t\t\t\tvar nextSymbolKey = nextSymbolKeys[nski];\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tsymbol[nextSymbolKey] &&\n\t\t\t\t\t\t\t\t\t\tsymbol[nextSymbolKey]['params'] &&\n\t\t\t\t\t\t\t\t\t\tsymbol[nextSymbolKey]['params'][param] &&\n\t\t\t\t\t\t\t\t\t\tparamFit(symbol[nextSymbolKey]['params'][param], paramValue)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tsymbol.lineStyle[symbol[nextSymbolKey]['key']] = {stroke: chart.options()['flowstate'][newFlowState]['fill']};\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tchart.clean();\n\t\t\t\t\tchart.drawSVG(this);\n\t\t\t\t});\n\n\t\t\t},\n\t\t\tclearFlowState: function () {\n\t\t\t\treturn this.each(function() {\n\t\t\t\t\tvar chart = this.chart;\n\n\t\t\t\t\tfor (var property in chart.symbols) {\n\t\t\t\t\t\tif (chart.symbols.hasOwnProperty(property)) {\n\t\t\t\t\t\t\tvar node = chart.symbols[property];\n\t\t\t\t\t\t\tnode.flowstate = '';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tchart.clean();\n\t\t\t\t\tchart.drawSVG(this);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\t$.fn.flowChart = function(methodOrOptions) {\n\t\t\tif ( methods[methodOrOptions] ) {\n\t\t\t\treturn methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));\n\t\t\t} else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {\n\t\t\t\t// Default to \"init\"\n\t\t\t\treturn methods.init.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\t$.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.flowChart' );\n\t\t\t}\n\t\t};\n\n\t})(jQuery); // eslint-disable-line\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/jquery-plugin.js\n// module id = 17\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_18__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"Raphael\"\n// module id = 18\n// module chunks = 0"],"sourceRoot":""}