{"version":3,"sources":["webpack:///./node_modules/zrender/lib/tool/parseSVG.js","webpack:///./node_modules/zrender/lib/tool/path.js","webpack:///./node_modules/zrender/lib/tool/color.js","webpack:///./node_modules/zrender/lib/tool/transformPath.js"],"names":["Group","ZImage","Text","Circle","Rect","Ellipse","Line","Path","Polygon","Polyline","LinearGradient","Style","matrix","_path","createFromString","_util","isString","extend","defaults","trim","each","DILIMITER_REG","parseXML","svg","parser","DOMParser","parseFromString","nodeType","firstChild","nodeName","toLowerCase","nextSibling","SVGParser","this","_defs","_root","_isDefine","_isText","prototype","parse","xml","opt","Error","root","viewBox","getAttribute","width","parseFloat","height","isNaN","parseAttributes","viewBoxRect","viewBoxTransform","child","_parseNode","viewBoxArr","split","length","x","y","makeViewBoxTransform","ignoreViewBox","elRoot","add","scale","slice","position","ignoreRootClip","setClipPath","shape","xmlNode","parentGroup","el","defineParsers","def","call","id","nodeParsers","_parseText","dx","dy","_textX","_textY","text","style","textContent","transformText","inheritStyle","fontSize","rect","getBoundingRect","g","setShape","circle","cx","cy","r","line","x1","y1","x2","y2","ellipse","rx","ry","points","parsePoints","polygon","path","polyline","img","setStyle","image","d","parseInt","gradient","_parseGradientColorStops","stop","offset","indexOf","stopColor","addColorStop","parent","__inheritedStyle","pointsString","list","i","push","attributesMap","defs","onlyInlineStyle","zrStyle","isTextEl","type","parseTransformAttribute","parseStyleAttribute","svgAttrName","hasOwnProperty","attrValue","elFillProp","elStrokeProp","elStyle","fill","set","getPaint","stroke","propName","elPropName","textBaseline","textAlign","lineDash","urlRegex","str","urlMatch","match","url","transformRegex","node","transform","replace","m","transformOps","value","create","translate","rotate","console","warn","setLocalTransform","styleRegex","result","styleRegResult","styleList","lastIndex","exec","scaleX","scaleY","Math","min","viewBoxScale","viewBoxPosition","parseSVG","exports","PathProxy","transformPath","mathSqrt","sqrt","mathSin","sin","mathCos","cos","PI","vMag","v","vRatio","u","vAngle","acos","processArc","fa","fs","psiDeg","cmd","psi","xp","yp","lambda","f","cxp","cyp","theta","dTheta","addData","commandReg","numberReg","createPathProxyFromString","data","prevCmd","cpx","cpy","subpathX","subpathY","CMD","cmdList","l","cmdText","cmdStr","charAt","p","pLen","off","ctlPtx","ctlPty","L","M","C","len","pathData","Q","A","Z","toStatic","createPathOptions","opts","pathProxy","buildPath","setData","ctx","getContext","rebuildPath","applyTransform","dirty","extendFromString","mergePath","pathEls","pathList","pathEl","createPathProxy","__dirtyPath","pathBundle","appendPath","LRU","kCSSColorTable","clampCssByte","round","clampCssAngle","clampCssFloat","parseCssInt","parseCssFloat","cssHueToRgb","m1","m2","h","lerpNumber","a","b","setRgba","out","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","put","cached","get","op","ep","fname","substr","params","alpha","pop","hsla2rgba","iv","hsla","rgba","s","rgba2hsla","H","S","R","G","B","vMin","vMax","max","delta","deltaR","deltaG","deltaB","lift","color","level","colorArr","stringify","toHex","toString","fastLerp","normalizedValue","colors","leftIndex","floor","rightIndex","ceil","leftColor","rightColor","dv","fastMapToColor","lerp","fullOutput","mapToColor","modifyHSL","modifyAlpha","arrColor","_vector","v2ApplyTransform","mathAtan2","atan2","_default","nPoint","j","k","sx","sy","angle","module"],"mappings":"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","file":"js/chunk-64ddde2e.cce70456.js","sourcesContent":["var Group = require(\"../container/Group\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar Text = require(\"../graphic/Text\");\n\nvar Circle = require(\"../graphic/shape/Circle\");\n\nvar Rect = require(\"../graphic/shape/Rect\");\n\nvar Ellipse = require(\"../graphic/shape/Ellipse\");\n\nvar Line = require(\"../graphic/shape/Line\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar Polygon = require(\"../graphic/shape/Polygon\");\n\nvar Polyline = require(\"../graphic/shape/Polyline\");\n\nvar LinearGradient = require(\"../graphic/LinearGradient\");\n\nvar Style = require(\"../graphic/Style\");\n\nvar matrix = require(\"../core/matrix\");\n\nvar _path = require(\"./path\");\n\nvar createFromString = _path.createFromString;\n\nvar _util = require(\"../core/util\");\n\nvar isString = _util.isString;\nvar extend = _util.extend;\nvar defaults = _util.defaults;\nvar trim = _util.trim;\nvar each = _util.each;\n// import RadialGradient from '../graphic/RadialGradient';\n// import Pattern from '../graphic/Pattern';\n// import * as vector from '../core/vector';\n// Most of the values can be separated by comma and/or white space.\nvar DILIMITER_REG = /[\\s,]+/;\n/**\n * For big svg string, this method might be time consuming.\n *\n * @param {string} svg xml string\n * @return {Object} xml root.\n */\n\nfunction parseXML(svg) {\n if (isString(svg)) {\n var parser = new DOMParser();\n svg = parser.parseFromString(svg, 'text/xml');\n } // Document node. If using $.get, doc node may be input.\n\n\n if (svg.nodeType === 9) {\n svg = svg.firstChild;\n } // nodeName of is also 'svg'.\n\n\n while (svg.nodeName.toLowerCase() !== 'svg' || svg.nodeType !== 1) {\n svg = svg.nextSibling;\n }\n\n return svg;\n}\n\nfunction SVGParser() {\n this._defs = {};\n this._root = null;\n this._isDefine = false;\n this._isText = false;\n}\n\nSVGParser.prototype.parse = function (xml, opt) {\n opt = opt || {};\n var svg = parseXML(xml);\n\n if (!svg) {\n throw new Error('Illegal svg');\n }\n\n var root = new Group();\n this._root = root; // parse view port\n\n var viewBox = svg.getAttribute('viewBox') || ''; // If width/height not specified, means \"100%\" of `opt.width/height`.\n // TODO: Other percent value not supported yet.\n\n var width = parseFloat(svg.getAttribute('width') || opt.width);\n var height = parseFloat(svg.getAttribute('height') || opt.height); // If width/height not specified, set as null for output.\n\n isNaN(width) && (width = null);\n isNaN(height) && (height = null); // Apply inline style on svg element.\n\n parseAttributes(svg, root, null, true);\n var child = svg.firstChild;\n\n while (child) {\n this._parseNode(child, root);\n\n child = child.nextSibling;\n }\n\n var viewBoxRect;\n var viewBoxTransform;\n\n if (viewBox) {\n var viewBoxArr = trim(viewBox).split(DILIMITER_REG); // Some invalid case like viewBox: 'none'.\n\n if (viewBoxArr.length >= 4) {\n viewBoxRect = {\n x: parseFloat(viewBoxArr[0] || 0),\n y: parseFloat(viewBoxArr[1] || 0),\n width: parseFloat(viewBoxArr[2]),\n height: parseFloat(viewBoxArr[3])\n };\n }\n }\n\n if (viewBoxRect && width != null && height != null) {\n viewBoxTransform = makeViewBoxTransform(viewBoxRect, width, height);\n\n if (!opt.ignoreViewBox) {\n // If set transform on the output group, it probably bring trouble when\n // some users only intend to show the clipped content inside the viewBox,\n // but not intend to transform the output group. So we keep the output\n // group no transform. If the user intend to use the viewBox as a\n // camera, just set `opt.ignoreViewBox` as `true` and set transfrom\n // manually according to the viewBox info in the output of this method.\n var elRoot = root;\n root = new Group();\n root.add(elRoot);\n elRoot.scale = viewBoxTransform.scale.slice();\n elRoot.position = viewBoxTransform.position.slice();\n }\n } // Some shapes might be overflow the viewport, which should be\n // clipped despite whether the viewBox is used, as the SVG does.\n\n\n if (!opt.ignoreRootClip && width != null && height != null) {\n root.setClipPath(new Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n }));\n } // Set width/height on group just for output the viewport size.\n\n\n return {\n root: root,\n width: width,\n height: height,\n viewBoxRect: viewBoxRect,\n viewBoxTransform: viewBoxTransform\n };\n};\n\nSVGParser.prototype._parseNode = function (xmlNode, parentGroup) {\n var nodeName = xmlNode.nodeName.toLowerCase(); // TODO\n // support in svg, where nodeName is 'style',\n // CSS classes is defined globally wherever the style tags are declared.\n\n if (nodeName === 'defs') {\n // define flag\n this._isDefine = true;\n } else if (nodeName === 'text') {\n this._isText = true;\n }\n\n var el;\n\n if (this._isDefine) {\n var parser = defineParsers[nodeName];\n\n if (parser) {\n var def = parser.call(this, xmlNode);\n var id = xmlNode.getAttribute('id');\n\n if (id) {\n this._defs[id] = def;\n }\n }\n } else {\n var parser = nodeParsers[nodeName];\n\n if (parser) {\n el = parser.call(this, xmlNode, parentGroup);\n parentGroup.add(el);\n }\n }\n\n var child = xmlNode.firstChild;\n\n while (child) {\n if (child.nodeType === 1) {\n this._parseNode(child, el);\n } // Is text\n\n\n if (child.nodeType === 3 && this._isText) {\n this._parseText(child, el);\n }\n\n child = child.nextSibling;\n } // Quit define\n\n\n if (nodeName === 'defs') {\n this._isDefine = false;\n } else if (nodeName === 'text') {\n this._isText = false;\n }\n};\n\nSVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n if (xmlNode.nodeType === 1) {\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX += parseFloat(dx);\n this._textY += parseFloat(dy);\n }\n\n var text = new Text({\n style: {\n text: xmlNode.textContent,\n transformText: true\n },\n position: [this._textX || 0, this._textY || 0]\n });\n inheritStyle(parentGroup, text);\n parseAttributes(xmlNode, text, this._defs);\n var fontSize = text.style.fontSize;\n\n if (fontSize && fontSize < 9) {\n // PENDING\n text.style.fontSize = 9;\n text.scale = text.scale || [1, 1];\n text.scale[0] *= fontSize / 9;\n text.scale[1] *= fontSize / 9;\n }\n\n var rect = text.getBoundingRect();\n this._textX += rect.width;\n parentGroup.add(text);\n return text;\n};\n\nvar nodeParsers = {\n 'g': function (xmlNode, parentGroup) {\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'rect': function (xmlNode, parentGroup) {\n var rect = new Rect();\n inheritStyle(parentGroup, rect);\n parseAttributes(xmlNode, rect, this._defs);\n rect.setShape({\n x: parseFloat(xmlNode.getAttribute('x') || 0),\n y: parseFloat(xmlNode.getAttribute('y') || 0),\n width: parseFloat(xmlNode.getAttribute('width') || 0),\n height: parseFloat(xmlNode.getAttribute('height') || 0)\n }); // console.log(xmlNode.getAttribute('transform'));\n // console.log(rect.transform);\n\n return rect;\n },\n 'circle': function (xmlNode, parentGroup) {\n var circle = new Circle();\n inheritStyle(parentGroup, circle);\n parseAttributes(xmlNode, circle, this._defs);\n circle.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n r: parseFloat(xmlNode.getAttribute('r') || 0)\n });\n return circle;\n },\n 'line': function (xmlNode, parentGroup) {\n var line = new Line();\n inheritStyle(parentGroup, line);\n parseAttributes(xmlNode, line, this._defs);\n line.setShape({\n x1: parseFloat(xmlNode.getAttribute('x1') || 0),\n y1: parseFloat(xmlNode.getAttribute('y1') || 0),\n x2: parseFloat(xmlNode.getAttribute('x2') || 0),\n y2: parseFloat(xmlNode.getAttribute('y2') || 0)\n });\n return line;\n },\n 'ellipse': function (xmlNode, parentGroup) {\n var ellipse = new Ellipse();\n inheritStyle(parentGroup, ellipse);\n parseAttributes(xmlNode, ellipse, this._defs);\n ellipse.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n rx: parseFloat(xmlNode.getAttribute('rx') || 0),\n ry: parseFloat(xmlNode.getAttribute('ry') || 0)\n });\n return ellipse;\n },\n 'polygon': function (xmlNode, parentGroup) {\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polygon = new Polygon({\n shape: {\n points: points || []\n }\n });\n inheritStyle(parentGroup, polygon);\n parseAttributes(xmlNode, polygon, this._defs);\n return polygon;\n },\n 'polyline': function (xmlNode, parentGroup) {\n var path = new Path();\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polyline = new Polyline({\n shape: {\n points: points || []\n }\n });\n return polyline;\n },\n 'image': function (xmlNode, parentGroup) {\n var img = new ZImage();\n inheritStyle(parentGroup, img);\n parseAttributes(xmlNode, img, this._defs);\n img.setStyle({\n image: xmlNode.getAttribute('xlink:href'),\n x: xmlNode.getAttribute('x'),\n y: xmlNode.getAttribute('y'),\n width: xmlNode.getAttribute('width'),\n height: xmlNode.getAttribute('height')\n });\n return img;\n },\n 'text': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x') || 0;\n var y = xmlNode.getAttribute('y') || 0;\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX = parseFloat(x) + parseFloat(dx);\n this._textY = parseFloat(y) + parseFloat(dy);\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'tspan': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x');\n var y = xmlNode.getAttribute('y');\n\n if (x != null) {\n // new offset x\n this._textX = parseFloat(x);\n }\n\n if (y != null) {\n // new offset y\n this._textY = parseFloat(y);\n }\n\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n this._textX += dx;\n this._textY += dy;\n return g;\n },\n 'path': function (xmlNode, parentGroup) {\n // TODO svg fill rule\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule\n // path.style.globalCompositeOperation = 'xor';\n var d = xmlNode.getAttribute('d') || ''; // Performance sensitive.\n\n var path = createFromString(d);\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n return path;\n }\n};\nvar defineParsers = {\n 'lineargradient': function (xmlNode) {\n var x1 = parseInt(xmlNode.getAttribute('x1') || 0, 10);\n var y1 = parseInt(xmlNode.getAttribute('y1') || 0, 10);\n var x2 = parseInt(xmlNode.getAttribute('x2') || 10, 10);\n var y2 = parseInt(xmlNode.getAttribute('y2') || 0, 10);\n var gradient = new LinearGradient(x1, y1, x2, y2);\n\n _parseGradientColorStops(xmlNode, gradient);\n\n return gradient;\n },\n 'radialgradient': function (xmlNode) {}\n};\n\nfunction _parseGradientColorStops(xmlNode, gradient) {\n var stop = xmlNode.firstChild;\n\n while (stop) {\n if (stop.nodeType === 1) {\n var offset = stop.getAttribute('offset');\n\n if (offset.indexOf('%') > 0) {\n // percentage\n offset = parseInt(offset, 10) / 100;\n } else if (offset) {\n // number from 0 to 1\n offset = parseFloat(offset);\n } else {\n offset = 0;\n }\n\n var stopColor = stop.getAttribute('stop-color') || '#000000';\n gradient.addColorStop(offset, stopColor);\n }\n\n stop = stop.nextSibling;\n }\n}\n\nfunction inheritStyle(parent, child) {\n if (parent && parent.__inheritedStyle) {\n if (!child.__inheritedStyle) {\n child.__inheritedStyle = {};\n }\n\n defaults(child.__inheritedStyle, parent.__inheritedStyle);\n }\n}\n\nfunction parsePoints(pointsString) {\n var list = trim(pointsString).split(DILIMITER_REG);\n var points = [];\n\n for (var i = 0; i < list.length; i += 2) {\n var x = parseFloat(list[i]);\n var y = parseFloat(list[i + 1]);\n points.push([x, y]);\n }\n\n return points;\n}\n\nvar attributesMap = {\n 'fill': 'fill',\n 'stroke': 'stroke',\n 'stroke-width': 'lineWidth',\n 'opacity': 'opacity',\n 'fill-opacity': 'fillOpacity',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-dasharray': 'lineDash',\n 'stroke-dashoffset': 'lineDashOffset',\n 'stroke-linecap': 'lineCap',\n 'stroke-linejoin': 'lineJoin',\n 'stroke-miterlimit': 'miterLimit',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'text-align': 'textAlign',\n 'alignment-baseline': 'textBaseline'\n};\n\nfunction parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\n var zrStyle = el.__inheritedStyle || {};\n var isTextEl = el.type === 'text'; // TODO Shadow\n\n if (xmlNode.nodeType === 1) {\n parseTransformAttribute(xmlNode, el);\n extend(zrStyle, parseStyleAttribute(xmlNode));\n\n if (!onlyInlineStyle) {\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName)) {\n var attrValue = xmlNode.getAttribute(svgAttrName);\n\n if (attrValue != null) {\n zrStyle[attributesMap[svgAttrName]] = attrValue;\n }\n }\n }\n }\n }\n\n var elFillProp = isTextEl ? 'textFill' : 'fill';\n var elStrokeProp = isTextEl ? 'textStroke' : 'stroke';\n el.style = el.style || new Style();\n var elStyle = el.style;\n zrStyle.fill != null && elStyle.set(elFillProp, getPaint(zrStyle.fill, defs));\n zrStyle.stroke != null && elStyle.set(elStrokeProp, getPaint(zrStyle.stroke, defs));\n each(['lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'], function (propName) {\n var elPropName = propName === 'lineWidth' && isTextEl ? 'textStrokeWidth' : propName;\n zrStyle[propName] != null && elStyle.set(elPropName, parseFloat(zrStyle[propName]));\n });\n\n if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\n zrStyle.textBaseline = 'alphabetic';\n }\n\n if (zrStyle.textBaseline === 'alphabetic') {\n zrStyle.textBaseline = 'bottom';\n }\n\n if (zrStyle.textAlign === 'start') {\n zrStyle.textAlign = 'left';\n }\n\n if (zrStyle.textAlign === 'end') {\n zrStyle.textAlign = 'right';\n }\n\n each(['lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'], function (propName) {\n zrStyle[propName] != null && elStyle.set(propName, zrStyle[propName]);\n });\n\n if (zrStyle.lineDash) {\n el.style.lineDash = trim(zrStyle.lineDash).split(DILIMITER_REG);\n }\n\n if (elStyle[elStrokeProp] && elStyle[elStrokeProp] !== 'none') {\n // enable stroke\n el[elStrokeProp] = true;\n }\n\n el.__inheritedStyle = zrStyle;\n}\n\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\n\nfunction getPaint(str, defs) {\n // if (str === 'none') {\n // return;\n // }\n var urlMatch = defs && str && str.match(urlRegex);\n\n if (urlMatch) {\n var url = trim(urlMatch[1]);\n var def = defs[url];\n return def;\n }\n\n return str;\n}\n\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\n\nfunction parseTransformAttribute(xmlNode, node) {\n var transform = xmlNode.getAttribute('transform');\n\n if (transform) {\n transform = transform.replace(/,/g, ' ');\n var m = null;\n var transformOps = [];\n transform.replace(transformRegex, function (str, type, value) {\n transformOps.push(type, value);\n });\n\n for (var i = transformOps.length - 1; i > 0; i -= 2) {\n var value = transformOps[i];\n var type = transformOps[i - 1];\n m = m || matrix.create();\n\n switch (type) {\n case 'translate':\n value = trim(value).split(DILIMITER_REG);\n matrix.translate(m, m, [parseFloat(value[0]), parseFloat(value[1] || 0)]);\n break;\n\n case 'scale':\n value = trim(value).split(DILIMITER_REG);\n matrix.scale(m, m, [parseFloat(value[0]), parseFloat(value[1] || value[0])]);\n break;\n\n case 'rotate':\n value = trim(value).split(DILIMITER_REG);\n matrix.rotate(m, m, parseFloat(value[0]));\n break;\n\n case 'skew':\n value = trim(value).split(DILIMITER_REG);\n console.warn('Skew transform is not supported yet');\n break;\n\n case 'matrix':\n var value = trim(value).split(DILIMITER_REG);\n m[0] = parseFloat(value[0]);\n m[1] = parseFloat(value[1]);\n m[2] = parseFloat(value[2]);\n m[3] = parseFloat(value[3]);\n m[4] = parseFloat(value[4]);\n m[5] = parseFloat(value[5]);\n break;\n }\n }\n\n node.setLocalTransform(m);\n }\n} // Value may contain space.\n\n\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\n\nfunction parseStyleAttribute(xmlNode) {\n var style = xmlNode.getAttribute('style');\n var result = {};\n\n if (!style) {\n return result;\n }\n\n var styleList = {};\n styleRegex.lastIndex = 0;\n var styleRegResult;\n\n while ((styleRegResult = styleRegex.exec(style)) != null) {\n styleList[styleRegResult[1]] = styleRegResult[2];\n }\n\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\n result[attributesMap[svgAttrName]] = styleList[svgAttrName];\n }\n }\n\n return result;\n}\n/**\n * @param {Array.} viewBoxRect\n * @param {number} width\n * @param {number} height\n * @return {Object} {scale, position}\n */\n\n\nfunction makeViewBoxTransform(viewBoxRect, width, height) {\n var scaleX = width / viewBoxRect.width;\n var scaleY = height / viewBoxRect.height;\n var scale = Math.min(scaleX, scaleY); // preserveAspectRatio 'xMidYMid'\n\n var viewBoxScale = [scale, scale];\n var viewBoxPosition = [-(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2, -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2];\n return {\n scale: viewBoxScale,\n position: viewBoxPosition\n };\n}\n/**\n * @param {string|XMLElement} xml\n * @param {Object} [opt]\n * @param {number} [opt.width] Default width if svg width not specified or is a percent value.\n * @param {number} [opt.height] Default height if svg height not specified or is a percent value.\n * @param {boolean} [opt.ignoreViewBox]\n * @param {boolean} [opt.ignoreRootClip]\n * @return {Object} result:\n * {\n * root: Group, The root of the the result tree of zrender shapes,\n * width: number, the viewport width of the SVG,\n * height: number, the viewport height of the SVG,\n * viewBoxRect: {x, y, width, height}, the declared viewBox rect of the SVG, if exists,\n * viewBoxTransform: the {scale, position} calculated by viewBox and viewport, is exists.\n * }\n */\n\n\nfunction parseSVG(xml, opt) {\n var parser = new SVGParser();\n return parser.parse(xml, opt);\n}\n\nexports.parseXML = parseXML;\nexports.makeViewBoxTransform = makeViewBoxTransform;\nexports.parseSVG = parseSVG;","var Path = require(\"../graphic/Path\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar transformPath = require(\"./transformPath\");\n\n// command chars\n// var cc = [\n// 'm', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z',\n// 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A'\n// ];\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\n\nvar vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n};\n\nvar vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n};\n\nvar vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n};\n\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n var psi = psiDeg * (PI / 180.0);\n var xp = mathCos(psi) * (x1 - x2) / 2.0 + mathSin(psi) * (y1 - y2) / 2.0;\n var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0 + mathCos(psi) * (y1 - y2) / 2.0;\n var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n\n if (lambda > 1) {\n rx *= mathSqrt(lambda);\n ry *= mathSqrt(lambda);\n }\n\n var f = (fa === fs ? -1 : 1) * mathSqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0;\n var cxp = f * rx * yp / ry;\n var cyp = f * -ry * xp / rx;\n var cx = (x1 + x2) / 2.0 + mathCos(psi) * cxp - mathSin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + mathSin(psi) * cxp + mathCos(psi) * cyp;\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = PI;\n }\n\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * PI;\n }\n\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * PI;\n }\n\n path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\n\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; // Consider case:\n// (1) delimiter can be comma or space, where continuous commas\n// or spaces should be seen as one comma.\n// (2) value can be like:\n// '2e-4', 'l.5.9' (ignore 0), 'M-10-10', 'l-2.43e-1,34.9983',\n// 'l-.5E1,54', '121-23-44-11' (no delimiter)\n\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g; // var valueSplitReg = /[\\s,]+/;\n\nfunction createPathProxyFromString(data) {\n if (!data) {\n return new PathProxy();\n } // var data = data.replace(/-/g, ' -')\n // .replace(/ /g, ' ')\n // .replace(/ /g, ',')\n // .replace(/,,/g, ',');\n // var n;\n // create pipes so that we can split the data\n // for (n = 0; n < cc.length; n++) {\n // cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n // }\n // data = data.replace(/-/g, ',-');\n // create array\n // var arr = cs.split('|');\n // init context point\n\n\n var cpx = 0;\n var cpy = 0;\n var subpathX = cpx;\n var subpathY = cpy;\n var prevCmd;\n var path = new PathProxy();\n var CMD = PathProxy.CMD; // commandReg.lastIndex = 0;\n // var cmdResult;\n // while ((cmdResult = commandReg.exec(data)) != null) {\n // var cmdStr = cmdResult[1];\n // var cmdContent = cmdResult[2];\n\n var cmdList = data.match(commandReg);\n\n for (var l = 0; l < cmdList.length; l++) {\n var cmdText = cmdList[l];\n var cmdStr = cmdText.charAt(0);\n var cmd; // String#split is faster a little bit than String#replace or RegExp#exec.\n // var p = cmdContent.split(valueSplitReg);\n // var pLen = 0;\n // for (var i = 0; i < p.length; i++) {\n // // '' and other invalid str => NaN\n // var val = parseFloat(p[i]);\n // !isNaN(val) && (p[pLen++] = val);\n // }\n\n var p = cmdText.match(numberReg) || [];\n var pLen = p.length;\n\n for (var i = 0; i < pLen; i++) {\n p[i] = parseFloat(p[i]);\n }\n\n var off = 0;\n\n while (off < pLen) {\n var ctlPtx;\n var ctlPty;\n var rx;\n var ry;\n var psi;\n var fa;\n var fs;\n var x1 = cpx;\n var y1 = cpy; // convert l, H, h, V, and v to L\n\n switch (cmdStr) {\n case 'l':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'L':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'm':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'l';\n break;\n\n case 'M':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'L';\n break;\n\n case 'h':\n cpx += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'H':\n cpx = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'v':\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'V':\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'C':\n cmd = CMD.C;\n path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n cpx = p[off - 2];\n cpy = p[off - 1];\n break;\n\n case 'c':\n cmd = CMD.C;\n path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n cpx += p[off - 2];\n cpy += p[off - 1];\n break;\n\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = cpx + p[off++];\n y1 = cpy + p[off++];\n cpx += p[off++];\n cpy += p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 'Q':\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'q':\n x1 = p[off++] + cpx;\n y1 = p[off++] + cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 'A':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n\n case 'a':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n }\n }\n\n if (cmdStr === 'z' || cmdStr === 'Z') {\n cmd = CMD.Z;\n path.addData(cmd); // z may be in the middle of the path.\n\n cpx = subpathX;\n cpy = subpathY;\n }\n\n prevCmd = cmd;\n }\n\n path.toStatic();\n return path;\n} // TODO Optimize double memory cost problem\n\n\nfunction createPathOptions(str, opts) {\n var pathProxy = createPathProxyFromString(str);\n opts = opts || {};\n\n opts.buildPath = function (path) {\n if (path.setData) {\n path.setData(pathProxy.data); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n } else {\n var ctx = path;\n pathProxy.rebuildPath(ctx);\n }\n };\n\n opts.applyTransform = function (m) {\n transformPath(pathProxy, m);\n this.dirty(true);\n };\n\n return opts;\n}\n/**\n * Create a Path object from path string data\n * http://www.w3.org/TR/SVG/paths.html#PathData\n * @param {Object} opts Other options\n */\n\n\nfunction createFromString(str, opts) {\n return new Path(createPathOptions(str, opts));\n}\n/**\n * Create a Path class from path string data\n * @param {string} str\n * @param {Object} opts Other options\n */\n\n\nfunction extendFromString(str, opts) {\n return Path.extend(createPathOptions(str, opts));\n}\n/**\n * Merge multiple paths\n */\n// TODO Apply transform\n// TODO stroke dash\n// TODO Optimize double memory cost problem\n\n\nfunction mergePath(pathEls, opts) {\n var pathList = [];\n var len = pathEls.length;\n\n for (var i = 0; i < len; i++) {\n var pathEl = pathEls[i];\n\n if (!pathEl.path) {\n pathEl.createPathProxy();\n }\n\n if (pathEl.__dirtyPath) {\n pathEl.buildPath(pathEl.path, pathEl.shape, true);\n }\n\n pathList.push(pathEl.path);\n }\n\n var pathBundle = new Path(opts); // Need path proxy.\n\n pathBundle.createPathProxy();\n\n pathBundle.buildPath = function (path) {\n path.appendPath(pathList); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n };\n\n return pathBundle;\n}\n\nexports.createFromString = createFromString;\nexports.extendFromString = extendFromString;\nexports.mergePath = mergePath;","var LRU = require(\"../core/LRU\");\n\nvar kCSSColorTable = {\n 'transparent': [0, 0, 0, 0],\n 'aliceblue': [240, 248, 255, 1],\n 'antiquewhite': [250, 235, 215, 1],\n 'aqua': [0, 255, 255, 1],\n 'aquamarine': [127, 255, 212, 1],\n 'azure': [240, 255, 255, 1],\n 'beige': [245, 245, 220, 1],\n 'bisque': [255, 228, 196, 1],\n 'black': [0, 0, 0, 1],\n 'blanchedalmond': [255, 235, 205, 1],\n 'blue': [0, 0, 255, 1],\n 'blueviolet': [138, 43, 226, 1],\n 'brown': [165, 42, 42, 1],\n 'burlywood': [222, 184, 135, 1],\n 'cadetblue': [95, 158, 160, 1],\n 'chartreuse': [127, 255, 0, 1],\n 'chocolate': [210, 105, 30, 1],\n 'coral': [255, 127, 80, 1],\n 'cornflowerblue': [100, 149, 237, 1],\n 'cornsilk': [255, 248, 220, 1],\n 'crimson': [220, 20, 60, 1],\n 'cyan': [0, 255, 255, 1],\n 'darkblue': [0, 0, 139, 1],\n 'darkcyan': [0, 139, 139, 1],\n 'darkgoldenrod': [184, 134, 11, 1],\n 'darkgray': [169, 169, 169, 1],\n 'darkgreen': [0, 100, 0, 1],\n 'darkgrey': [169, 169, 169, 1],\n 'darkkhaki': [189, 183, 107, 1],\n 'darkmagenta': [139, 0, 139, 1],\n 'darkolivegreen': [85, 107, 47, 1],\n 'darkorange': [255, 140, 0, 1],\n 'darkorchid': [153, 50, 204, 1],\n 'darkred': [139, 0, 0, 1],\n 'darksalmon': [233, 150, 122, 1],\n 'darkseagreen': [143, 188, 143, 1],\n 'darkslateblue': [72, 61, 139, 1],\n 'darkslategray': [47, 79, 79, 1],\n 'darkslategrey': [47, 79, 79, 1],\n 'darkturquoise': [0, 206, 209, 1],\n 'darkviolet': [148, 0, 211, 1],\n 'deeppink': [255, 20, 147, 1],\n 'deepskyblue': [0, 191, 255, 1],\n 'dimgray': [105, 105, 105, 1],\n 'dimgrey': [105, 105, 105, 1],\n 'dodgerblue': [30, 144, 255, 1],\n 'firebrick': [178, 34, 34, 1],\n 'floralwhite': [255, 250, 240, 1],\n 'forestgreen': [34, 139, 34, 1],\n 'fuchsia': [255, 0, 255, 1],\n 'gainsboro': [220, 220, 220, 1],\n 'ghostwhite': [248, 248, 255, 1],\n 'gold': [255, 215, 0, 1],\n 'goldenrod': [218, 165, 32, 1],\n 'gray': [128, 128, 128, 1],\n 'green': [0, 128, 0, 1],\n 'greenyellow': [173, 255, 47, 1],\n 'grey': [128, 128, 128, 1],\n 'honeydew': [240, 255, 240, 1],\n 'hotpink': [255, 105, 180, 1],\n 'indianred': [205, 92, 92, 1],\n 'indigo': [75, 0, 130, 1],\n 'ivory': [255, 255, 240, 1],\n 'khaki': [240, 230, 140, 1],\n 'lavender': [230, 230, 250, 1],\n 'lavenderblush': [255, 240, 245, 1],\n 'lawngreen': [124, 252, 0, 1],\n 'lemonchiffon': [255, 250, 205, 1],\n 'lightblue': [173, 216, 230, 1],\n 'lightcoral': [240, 128, 128, 1],\n 'lightcyan': [224, 255, 255, 1],\n 'lightgoldenrodyellow': [250, 250, 210, 1],\n 'lightgray': [211, 211, 211, 1],\n 'lightgreen': [144, 238, 144, 1],\n 'lightgrey': [211, 211, 211, 1],\n 'lightpink': [255, 182, 193, 1],\n 'lightsalmon': [255, 160, 122, 1],\n 'lightseagreen': [32, 178, 170, 1],\n 'lightskyblue': [135, 206, 250, 1],\n 'lightslategray': [119, 136, 153, 1],\n 'lightslategrey': [119, 136, 153, 1],\n 'lightsteelblue': [176, 196, 222, 1],\n 'lightyellow': [255, 255, 224, 1],\n 'lime': [0, 255, 0, 1],\n 'limegreen': [50, 205, 50, 1],\n 'linen': [250, 240, 230, 1],\n 'magenta': [255, 0, 255, 1],\n 'maroon': [128, 0, 0, 1],\n 'mediumaquamarine': [102, 205, 170, 1],\n 'mediumblue': [0, 0, 205, 1],\n 'mediumorchid': [186, 85, 211, 1],\n 'mediumpurple': [147, 112, 219, 1],\n 'mediumseagreen': [60, 179, 113, 1],\n 'mediumslateblue': [123, 104, 238, 1],\n 'mediumspringgreen': [0, 250, 154, 1],\n 'mediumturquoise': [72, 209, 204, 1],\n 'mediumvioletred': [199, 21, 133, 1],\n 'midnightblue': [25, 25, 112, 1],\n 'mintcream': [245, 255, 250, 1],\n 'mistyrose': [255, 228, 225, 1],\n 'moccasin': [255, 228, 181, 1],\n 'navajowhite': [255, 222, 173, 1],\n 'navy': [0, 0, 128, 1],\n 'oldlace': [253, 245, 230, 1],\n 'olive': [128, 128, 0, 1],\n 'olivedrab': [107, 142, 35, 1],\n 'orange': [255, 165, 0, 1],\n 'orangered': [255, 69, 0, 1],\n 'orchid': [218, 112, 214, 1],\n 'palegoldenrod': [238, 232, 170, 1],\n 'palegreen': [152, 251, 152, 1],\n 'paleturquoise': [175, 238, 238, 1],\n 'palevioletred': [219, 112, 147, 1],\n 'papayawhip': [255, 239, 213, 1],\n 'peachpuff': [255, 218, 185, 1],\n 'peru': [205, 133, 63, 1],\n 'pink': [255, 192, 203, 1],\n 'plum': [221, 160, 221, 1],\n 'powderblue': [176, 224, 230, 1],\n 'purple': [128, 0, 128, 1],\n 'red': [255, 0, 0, 1],\n 'rosybrown': [188, 143, 143, 1],\n 'royalblue': [65, 105, 225, 1],\n 'saddlebrown': [139, 69, 19, 1],\n 'salmon': [250, 128, 114, 1],\n 'sandybrown': [244, 164, 96, 1],\n 'seagreen': [46, 139, 87, 1],\n 'seashell': [255, 245, 238, 1],\n 'sienna': [160, 82, 45, 1],\n 'silver': [192, 192, 192, 1],\n 'skyblue': [135, 206, 235, 1],\n 'slateblue': [106, 90, 205, 1],\n 'slategray': [112, 128, 144, 1],\n 'slategrey': [112, 128, 144, 1],\n 'snow': [255, 250, 250, 1],\n 'springgreen': [0, 255, 127, 1],\n 'steelblue': [70, 130, 180, 1],\n 'tan': [210, 180, 140, 1],\n 'teal': [0, 128, 128, 1],\n 'thistle': [216, 191, 216, 1],\n 'tomato': [255, 99, 71, 1],\n 'turquoise': [64, 224, 208, 1],\n 'violet': [238, 130, 238, 1],\n 'wheat': [245, 222, 179, 1],\n 'white': [255, 255, 255, 1],\n 'whitesmoke': [245, 245, 245, 1],\n 'yellow': [255, 255, 0, 1],\n 'yellowgreen': [154, 205, 50, 1]\n};\n\nfunction clampCssByte(i) {\n // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clampCssAngle(i) {\n // Clamp to integer 0 .. 360.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n return i < 0 ? 0 : i > 360 ? 360 : i;\n}\n\nfunction clampCssFloat(f) {\n // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parseCssInt(str) {\n // int or percentage.\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssByte(parseFloat(str) / 100 * 255);\n }\n\n return clampCssByte(parseInt(str, 10));\n}\n\nfunction parseCssFloat(str) {\n // float or percentage.\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssFloat(parseFloat(str) / 100);\n }\n\n return clampCssFloat(parseFloat(str));\n}\n\nfunction cssHueToRgb(m1, m2, h) {\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n\n if (h * 6 < 1) {\n return m1 + (m2 - m1) * h * 6;\n }\n\n if (h * 2 < 1) {\n return m2;\n }\n\n if (h * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n\n return m1;\n}\n\nfunction lerpNumber(a, b, p) {\n return a + (b - a) * p;\n}\n\nfunction setRgba(out, r, g, b, a) {\n out[0] = r;\n out[1] = g;\n out[2] = b;\n out[3] = a;\n return out;\n}\n\nfunction copyRgba(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n\nvar colorCache = new LRU(20);\nvar lastRemovedArr = null;\n\nfunction putToCache(colorStr, rgbaArr) {\n // Reuse removed array\n if (lastRemovedArr) {\n copyRgba(lastRemovedArr, rgbaArr);\n }\n\n lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || rgbaArr.slice());\n}\n/**\n * @param {string} colorStr\n * @param {Array.} out\n * @return {Array.}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction parse(colorStr, rgbaArr) {\n if (!colorStr) {\n return;\n }\n\n rgbaArr = rgbaArr || [];\n var cached = colorCache.get(colorStr);\n\n if (cached) {\n return copyRgba(rgbaArr, cached);\n } // colorStr may be not string\n\n\n colorStr = colorStr + ''; // Remove all whitespace, not compliant, but should just be more accepting.\n\n var str = colorStr.replace(/ /g, '').toLowerCase(); // Color keywords (and transparent) lookup.\n\n if (str in kCSSColorTable) {\n copyRgba(rgbaArr, kCSSColorTable[str]);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n } // #abc and #abc123 syntax.\n\n\n if (str.charAt(0) === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n if (!(iv >= 0 && iv <= 0xfff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return; // Covers NaN.\n }\n\n setRgba(rgbaArr, (iv & 0xf00) >> 4 | (iv & 0xf00) >> 8, iv & 0xf0 | (iv & 0xf0) >> 4, iv & 0xf | (iv & 0xf) << 4, 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n if (!(iv >= 0 && iv <= 0xffffff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return; // Covers NaN.\n }\n\n setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n\n return;\n }\n\n var op = str.indexOf('(');\n var ep = str.indexOf(')');\n\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op + 1, ep - (op + 1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n alpha = parseCssFloat(params.pop());\n // jshint ignore:line\n // Fall through.\n\n case 'rgb':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n case 'hsla':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n params[3] = parseCssFloat(params[3]);\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n case 'hsl':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n default:\n return;\n }\n }\n\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n}\n/**\n * @param {Array.} hsla\n * @param {Array.} rgba\n * @return {Array.} rgba\n */\n\n\nfunction hsla2rgba(hsla, rgba) {\n var h = (parseFloat(hsla[0]) % 360 + 360) % 360 / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n\n var s = parseCssFloat(hsla[1]);\n var l = parseCssFloat(hsla[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n rgba = rgba || [];\n setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\n\n if (hsla.length === 4) {\n rgba[3] = hsla[3];\n }\n\n return rgba;\n}\n/**\n * @param {Array.} rgba\n * @return {Array.} hsla\n */\n\n\nfunction rgba2hsla(rgba) {\n if (!rgba) {\n return;\n } // RGB from 0 to 255\n\n\n var R = rgba[0] / 255;\n var G = rgba[1] / 255;\n var B = rgba[2] / 255;\n var vMin = Math.min(R, G, B); // Min. value of RGB\n\n var vMax = Math.max(R, G, B); // Max. value of RGB\n\n var delta = vMax - vMin; // Delta RGB value\n\n var L = (vMax + vMin) / 2;\n var H;\n var S; // HSL results from 0 to 1\n\n if (delta === 0) {\n H = 0;\n S = 0;\n } else {\n if (L < 0.5) {\n S = delta / (vMax + vMin);\n } else {\n S = delta / (2 - vMax - vMin);\n }\n\n var deltaR = ((vMax - R) / 6 + delta / 2) / delta;\n var deltaG = ((vMax - G) / 6 + delta / 2) / delta;\n var deltaB = ((vMax - B) / 6 + delta / 2) / delta;\n\n if (R === vMax) {\n H = deltaB - deltaG;\n } else if (G === vMax) {\n H = 1 / 3 + deltaR - deltaB;\n } else if (B === vMax) {\n H = 2 / 3 + deltaG - deltaR;\n }\n\n if (H < 0) {\n H += 1;\n }\n\n if (H > 1) {\n H -= 1;\n }\n }\n\n var hsla = [H * 360, S, L];\n\n if (rgba[3] != null) {\n hsla.push(rgba[3]);\n }\n\n return hsla;\n}\n/**\n * @param {string} color\n * @param {number} level\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction lift(color, level) {\n var colorArr = parse(color);\n\n if (colorArr) {\n for (var i = 0; i < 3; i++) {\n if (level < 0) {\n colorArr[i] = colorArr[i] * (1 - level) | 0;\n } else {\n colorArr[i] = (255 - colorArr[i]) * level + colorArr[i] | 0;\n }\n\n if (colorArr[i] > 255) {\n colorArr[i] = 255;\n } else if (color[i] < 0) {\n colorArr[i] = 0;\n }\n }\n\n return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\n }\n}\n/**\n * @param {string} color\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction toHex(color) {\n var colorArr = parse(color);\n\n if (colorArr) {\n return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2]).toString(16).slice(1);\n }\n}\n/**\n * Map value to color. Faster than lerp methods because color is represented by rgba array.\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.>} colors List of rgba color array\n * @param {Array.} [out] Mapped gba color array\n * @return {Array.} will be null/undefined if input illegal.\n */\n\n\nfunction fastLerp(normalizedValue, colors, out) {\n if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n\n out = out || [];\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = colors[leftIndex];\n var rightColor = colors[rightIndex];\n var dv = value - leftIndex;\n out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\n out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\n out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\n out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\n return out;\n}\n/**\n * @deprecated\n */\n\n\nvar fastMapToColor = fastLerp;\n/**\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.} colors Color list.\n * @param {boolean=} fullOutput Default false.\n * @return {(string|Object)} Result color. If fullOutput,\n * return {color: ..., leftIndex: ..., rightIndex: ..., value: ...},\n * @memberOf module:zrender/util/color\n */\n\nfunction lerp(normalizedValue, colors, fullOutput) {\n if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = parse(colors[leftIndex]);\n var rightColor = parse(colors[rightIndex]);\n var dv = value - leftIndex;\n var color = stringify([clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)), clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)), clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)), clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))], 'rgba');\n return fullOutput ? {\n color: color,\n leftIndex: leftIndex,\n rightIndex: rightIndex,\n value: value\n } : color;\n}\n/**\n * @deprecated\n */\n\n\nvar mapToColor = lerp;\n/**\n * @param {string} color\n * @param {number=} h 0 ~ 360, ignore when null.\n * @param {number=} s 0 ~ 1, ignore when null.\n * @param {number=} l 0 ~ 1, ignore when null.\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\nfunction modifyHSL(color, h, s, l) {\n color = parse(color);\n\n if (color) {\n color = rgba2hsla(color);\n h != null && (color[0] = clampCssAngle(h));\n s != null && (color[1] = parseCssFloat(s));\n l != null && (color[2] = parseCssFloat(l));\n return stringify(hsla2rgba(color), 'rgba');\n }\n}\n/**\n * @param {string} color\n * @param {number=} alpha 0 ~ 1\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\n\nfunction modifyAlpha(color, alpha) {\n color = parse(color);\n\n if (color && alpha != null) {\n color[3] = clampCssFloat(alpha);\n return stringify(color, 'rgba');\n }\n}\n/**\n * @param {Array.} arrColor like [12,33,44,0.4]\n * @param {string} type 'rgba', 'hsva', ...\n * @return {string} Result color. (If input illegal, return undefined).\n */\n\n\nfunction stringify(arrColor, type) {\n if (!arrColor || !arrColor.length) {\n return;\n }\n\n var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\n\n if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\n colorStr += ',' + arrColor[3];\n }\n\n return type + '(' + colorStr + ')';\n}\n\nexports.parse = parse;\nexports.lift = lift;\nexports.toHex = toHex;\nexports.fastLerp = fastLerp;\nexports.fastMapToColor = fastMapToColor;\nexports.lerp = lerp;\nexports.mapToColor = mapToColor;\nexports.modifyHSL = modifyHSL;\nexports.modifyAlpha = modifyAlpha;\nexports.stringify = stringify;","var PathProxy = require(\"../core/PathProxy\");\n\nvar _vector = require(\"../core/vector\");\n\nvar v2ApplyTransform = _vector.applyTransform;\nvar CMD = PathProxy.CMD;\nvar points = [[], [], []];\nvar mathSqrt = Math.sqrt;\nvar mathAtan2 = Math.atan2;\n\nfunction _default(path, m) {\n var data = path.data;\n var cmd;\n var nPoint;\n var i;\n var j;\n var k;\n var p;\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var R = CMD.R;\n var A = CMD.A;\n var Q = CMD.Q;\n\n for (i = 0, j = 0; i < data.length;) {\n cmd = data[i++];\n j = i;\n nPoint = 0;\n\n switch (cmd) {\n case M:\n nPoint = 1;\n break;\n\n case L:\n nPoint = 1;\n break;\n\n case C:\n nPoint = 3;\n break;\n\n case Q:\n nPoint = 2;\n break;\n\n case A:\n var x = m[4];\n var y = m[5];\n var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);\n var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);\n var angle = mathAtan2(-m[1] / sy, m[0] / sx); // cx\n\n data[i] *= sx;\n data[i++] += x; // cy\n\n data[i] *= sy;\n data[i++] += y; // Scale rx and ry\n // FIXME Assume psi is 0 here\n\n data[i++] *= sx;\n data[i++] *= sy; // Start angle\n\n data[i++] += angle; // end angle\n\n data[i++] += angle; // FIXME psi\n\n i += 2;\n j = i;\n break;\n\n case R:\n // x0, y0\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1]; // x1, y1\n\n p[0] += data[i++];\n p[1] += data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1];\n }\n\n for (k = 0; k < nPoint; k++) {\n var p = points[k];\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m); // Write back\n\n data[j++] = p[0];\n data[j++] = p[1];\n }\n }\n}\n\nmodule.exports = _default;"],"sourceRoot":""}