{"version":3,"file":"js/chunk-vendors-4ff468b3-legacy.f47b3413.js","mappings":"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","sources":["webpack://i4proportal/./node_modules/echarts/lib/chart/helper/EffectLine.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/EffectPolyline.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/EffectSymbol.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/LargeLineDraw.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/Line.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/LineDraw.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/LinePath.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/Polyline.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/Symbol.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/SymbolDraw.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/createListFromArray.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/createListSimply.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/createRenderPlanner.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/focusNodeAdjacencyAction.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/labelHelper.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/treeHelper.js","webpack://i4proportal/./node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js"],"sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Line = require(\"./Line\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar curveUtil = require(\"zrender/lib/core/curve\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Provide effect for line\n * @module echarts/chart/helper/EffectLine\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\nfunction EffectLine(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n this.add(this.createLine(lineData, idx, seriesScope));\n\n this._updateEffectSymbol(lineData, idx);\n}\n\nvar effectLineProto = EffectLine.prototype;\n\neffectLineProto.createLine = function (lineData, idx, seriesScope) {\n return new Line(lineData, idx, seriesScope);\n};\n\neffectLineProto._updateEffectSymbol = function (lineData, idx) {\n var itemModel = lineData.getItemModel(idx);\n var effectModel = itemModel.getModel('effect');\n var size = effectModel.get('symbolSize');\n var symbolType = effectModel.get('symbol');\n\n if (!zrUtil.isArray(size)) {\n size = [size, size];\n }\n\n var color = effectModel.get('color') || lineData.getItemVisual(idx, 'color');\n var symbol = this.childAt(1);\n\n if (this._symbolType !== symbolType) {\n // Remove previous\n this.remove(symbol);\n symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color);\n symbol.z2 = 100;\n symbol.culling = true;\n this.add(symbol);\n } // Symbol may be removed if loop is false\n\n\n if (!symbol) {\n return;\n } // Shadow color is same with color in default\n\n\n symbol.setStyle('shadowColor', color);\n symbol.setStyle(effectModel.getItemStyle(['color']));\n symbol.attr('scale', size);\n symbol.setColor(color);\n symbol.attr('scale', size);\n this._symbolType = symbolType;\n this._symbolScale = size;\n\n this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\neffectLineProto._updateEffectAnimation = function (lineData, effectModel, idx) {\n var symbol = this.childAt(1);\n\n if (!symbol) {\n return;\n }\n\n var self = this;\n var points = lineData.getItemLayout(idx);\n var period = effectModel.get('period') * 1000;\n var loop = effectModel.get('loop');\n var constantSpeed = effectModel.get('constantSpeed');\n var delayExpr = zrUtil.retrieve(effectModel.get('delay'), function (idx) {\n return idx / lineData.count() * period / 3;\n });\n var isDelayFunc = typeof delayExpr === 'function'; // Ignore when updating\n\n symbol.ignore = true;\n this.updateAnimationPoints(symbol, points);\n\n if (constantSpeed > 0) {\n period = this.getLineLength(symbol) / constantSpeed * 1000;\n }\n\n if (period !== this._period || loop !== this._loop) {\n symbol.stopAnimation();\n var delay = delayExpr;\n\n if (isDelayFunc) {\n delay = delayExpr(idx);\n }\n\n if (symbol.__t > 0) {\n delay = -period * symbol.__t;\n }\n\n symbol.__t = 0;\n var animator = symbol.animate('', loop).when(period, {\n __t: 1\n }).delay(delay).during(function () {\n self.updateSymbolPosition(symbol);\n });\n\n if (!loop) {\n animator.done(function () {\n self.remove(symbol);\n });\n }\n\n animator.start();\n }\n\n this._period = period;\n this._loop = loop;\n};\n\neffectLineProto.getLineLength = function (symbol) {\n // Not so accurate\n return vec2.dist(symbol.__p1, symbol.__cp1) + vec2.dist(symbol.__cp1, symbol.__p2);\n};\n\neffectLineProto.updateAnimationPoints = function (symbol, points) {\n symbol.__p1 = points[0];\n symbol.__p2 = points[1];\n symbol.__cp1 = points[2] || [(points[0][0] + points[1][0]) / 2, (points[0][1] + points[1][1]) / 2];\n};\n\neffectLineProto.updateData = function (lineData, idx, seriesScope) {\n this.childAt(0).updateData(lineData, idx, seriesScope);\n\n this._updateEffectSymbol(lineData, idx);\n};\n\neffectLineProto.updateSymbolPosition = function (symbol) {\n var p1 = symbol.__p1;\n var p2 = symbol.__p2;\n var cp1 = symbol.__cp1;\n var t = symbol.__t;\n var pos = symbol.position;\n var lastPos = [pos[0], pos[1]];\n var quadraticAt = curveUtil.quadraticAt;\n var quadraticDerivativeAt = curveUtil.quadraticDerivativeAt;\n pos[0] = quadraticAt(p1[0], cp1[0], p2[0], t);\n pos[1] = quadraticAt(p1[1], cp1[1], p2[1], t); // Tangent\n\n var tx = quadraticDerivativeAt(p1[0], cp1[0], p2[0], t);\n var ty = quadraticDerivativeAt(p1[1], cp1[1], p2[1], t);\n symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; // enable continuity trail for 'line', 'rect', 'roundRect' symbolType\n\n if (this._symbolType === 'line' || this._symbolType === 'rect' || this._symbolType === 'roundRect') {\n if (symbol.__lastT !== undefined && symbol.__lastT < symbol.__t) {\n var scaleY = vec2.dist(lastPos, pos) * 1.05;\n symbol.attr('scale', [symbol.scale[0], scaleY]); // make sure the last segment render within endPoint\n\n if (t === 1) {\n pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2;\n pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2;\n }\n } else if (symbol.__lastT === 1) {\n // After first loop, symbol.__t does NOT start with 0, so connect p1 to pos directly.\n var scaleY = 2 * vec2.dist(p1, pos);\n symbol.attr('scale', [symbol.scale[0], scaleY]);\n } else {\n symbol.attr('scale', this._symbolScale);\n }\n }\n\n symbol.__lastT = symbol.__t;\n symbol.ignore = false;\n};\n\neffectLineProto.updateLayout = function (lineData, idx) {\n this.childAt(0).updateLayout(lineData, idx);\n var effectModel = lineData.getItemModel(idx).getModel('effect');\n\n this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\nzrUtil.inherits(EffectLine, graphic.Group);\nvar _default = EffectLine;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Polyline = require(\"./Polyline\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar EffectLine = require(\"./EffectLine\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Provide effect for line\n * @module echarts/chart/helper/EffectLine\n */\n\n/**\n * @constructor\n * @extends {module:echarts/chart/helper/EffectLine}\n * @alias {module:echarts/chart/helper/Polyline}\n */\nfunction EffectPolyline(lineData, idx, seriesScope) {\n EffectLine.call(this, lineData, idx, seriesScope);\n this._lastFrame = 0;\n this._lastFramePercent = 0;\n}\n\nvar effectPolylineProto = EffectPolyline.prototype; // Overwrite\n\neffectPolylineProto.createLine = function (lineData, idx, seriesScope) {\n return new Polyline(lineData, idx, seriesScope);\n}; // Overwrite\n\n\neffectPolylineProto.updateAnimationPoints = function (symbol, points) {\n this._points = points;\n var accLenArr = [0];\n var len = 0;\n\n for (var i = 1; i < points.length; i++) {\n var p1 = points[i - 1];\n var p2 = points[i];\n len += vec2.dist(p1, p2);\n accLenArr.push(len);\n }\n\n if (len === 0) {\n return;\n }\n\n for (var i = 0; i < accLenArr.length; i++) {\n accLenArr[i] /= len;\n }\n\n this._offsets = accLenArr;\n this._length = len;\n}; // Overwrite\n\n\neffectPolylineProto.getLineLength = function (symbol) {\n return this._length;\n}; // Overwrite\n\n\neffectPolylineProto.updateSymbolPosition = function (symbol) {\n var t = symbol.__t;\n var points = this._points;\n var offsets = this._offsets;\n var len = points.length;\n\n if (!offsets) {\n // Has length 0\n return;\n }\n\n var lastFrame = this._lastFrame;\n var frame;\n\n if (t < this._lastFramePercent) {\n // Start from the next frame\n // PENDING start from lastFrame ?\n var start = Math.min(lastFrame + 1, len - 1);\n\n for (frame = start; frame >= 0; frame--) {\n if (offsets[frame] <= t) {\n break;\n }\n } // PENDING really need to do this ?\n\n\n frame = Math.min(frame, len - 2);\n } else {\n for (var frame = lastFrame; frame < len; frame++) {\n if (offsets[frame] > t) {\n break;\n }\n }\n\n frame = Math.min(frame - 1, len - 2);\n }\n\n vec2.lerp(symbol.position, points[frame], points[frame + 1], (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]));\n var tx = points[frame + 1][0] - points[frame][0];\n var ty = points[frame + 1][1] - points[frame][1];\n symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;\n this._lastFrame = frame;\n this._lastFramePercent = t;\n symbol.ignore = false;\n};\n\nzrUtil.inherits(EffectPolyline, EffectLine);\nvar _default = EffectPolyline;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar _graphic = require(\"../../util/graphic\");\n\nvar Group = _graphic.Group;\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar SymbolClz = require(\"./Symbol\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Symbol with ripple effect\n * @module echarts/chart/helper/EffectSymbol\n */\nvar EFFECT_RIPPLE_NUMBER = 3;\n\nfunction normalizeSymbolSize(symbolSize) {\n if (!zrUtil.isArray(symbolSize)) {\n symbolSize = [+symbolSize, +symbolSize];\n }\n\n return symbolSize;\n}\n\nfunction updateRipplePath(rippleGroup, effectCfg) {\n var color = effectCfg.rippleEffectColor || effectCfg.color;\n rippleGroup.eachChild(function (ripplePath) {\n ripplePath.attr({\n z: effectCfg.z,\n zlevel: effectCfg.zlevel,\n style: {\n stroke: effectCfg.brushType === 'stroke' ? color : null,\n fill: effectCfg.brushType === 'fill' ? color : null\n }\n });\n });\n}\n/**\n * @constructor\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\n\n\nfunction EffectSymbol(data, idx) {\n Group.call(this);\n var symbol = new SymbolClz(data, idx);\n var rippleGroup = new Group();\n this.add(symbol);\n this.add(rippleGroup);\n\n rippleGroup.beforeUpdate = function () {\n this.attr(symbol.getScale());\n };\n\n this.updateData(data, idx);\n}\n\nvar effectSymbolProto = EffectSymbol.prototype;\n\neffectSymbolProto.stopEffectAnimation = function () {\n this.childAt(1).removeAll();\n};\n\neffectSymbolProto.startEffectAnimation = function (effectCfg) {\n var symbolType = effectCfg.symbolType;\n var color = effectCfg.color;\n var rippleGroup = this.childAt(1);\n\n for (var i = 0; i < EFFECT_RIPPLE_NUMBER; i++) {\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4136.\n var ripplePath = createSymbol(symbolType, -1, -1, 2, 2, color);\n ripplePath.attr({\n style: {\n strokeNoScale: true\n },\n z2: 99,\n silent: true,\n scale: [0.5, 0.5]\n });\n var delay = -i / EFFECT_RIPPLE_NUMBER * effectCfg.period + effectCfg.effectOffset; // TODO Configurable effectCfg.period\n\n ripplePath.animate('', true).when(effectCfg.period, {\n scale: [effectCfg.rippleScale / 2, effectCfg.rippleScale / 2]\n }).delay(delay).start();\n ripplePath.animateStyle(true).when(effectCfg.period, {\n opacity: 0\n }).delay(delay).start();\n rippleGroup.add(ripplePath);\n }\n\n updateRipplePath(rippleGroup, effectCfg);\n};\n/**\n * Update effect symbol\n */\n\n\neffectSymbolProto.updateEffectAnimation = function (effectCfg) {\n var oldEffectCfg = this._effectCfg;\n var rippleGroup = this.childAt(1); // Must reinitialize effect if following configuration changed\n\n var DIFFICULT_PROPS = ['symbolType', 'period', 'rippleScale'];\n\n for (var i = 0; i < DIFFICULT_PROPS.length; i++) {\n var propName = DIFFICULT_PROPS[i];\n\n if (oldEffectCfg[propName] !== effectCfg[propName]) {\n this.stopEffectAnimation();\n this.startEffectAnimation(effectCfg);\n return;\n }\n }\n\n updateRipplePath(rippleGroup, effectCfg);\n};\n/**\n * Highlight symbol\n */\n\n\neffectSymbolProto.highlight = function () {\n this.trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\neffectSymbolProto.downplay = function () {\n this.trigger('normal');\n};\n/**\n * Update symbol properties\n * @param {module:echarts/data/List} data\n * @param {number} idx\n */\n\n\neffectSymbolProto.updateData = function (data, idx) {\n var seriesModel = data.hostModel;\n this.childAt(0).updateData(data, idx);\n var rippleGroup = this.childAt(1);\n var itemModel = data.getItemModel(idx);\n var symbolType = data.getItemVisual(idx, 'symbol');\n var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n var color = data.getItemVisual(idx, 'color');\n rippleGroup.attr('scale', symbolSize);\n rippleGroup.traverse(function (ripplePath) {\n ripplePath.attr({\n fill: color\n });\n });\n var symbolOffset = itemModel.getShallow('symbolOffset');\n\n if (symbolOffset) {\n var pos = rippleGroup.position;\n pos[0] = parsePercent(symbolOffset[0], symbolSize[0]);\n pos[1] = parsePercent(symbolOffset[1], symbolSize[1]);\n }\n\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n var effectCfg = {};\n effectCfg.showEffectOn = seriesModel.get('showEffectOn');\n effectCfg.rippleScale = itemModel.get('rippleEffect.scale');\n effectCfg.brushType = itemModel.get('rippleEffect.brushType');\n effectCfg.period = itemModel.get('rippleEffect.period') * 1000;\n effectCfg.effectOffset = idx / data.count();\n effectCfg.z = itemModel.getShallow('z') || 0;\n effectCfg.zlevel = itemModel.getShallow('zlevel') || 0;\n effectCfg.symbolType = symbolType;\n effectCfg.color = color;\n effectCfg.rippleEffectColor = itemModel.get('rippleEffect.color');\n this.off('mouseover').off('mouseout').off('emphasis').off('normal');\n\n if (effectCfg.showEffectOn === 'render') {\n this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg);\n this._effectCfg = effectCfg;\n } else {\n // Not keep old effect config\n this._effectCfg = null;\n this.stopEffectAnimation();\n var symbol = this.childAt(0);\n\n var onEmphasis = function () {\n symbol.highlight();\n\n if (effectCfg.showEffectOn !== 'render') {\n this.startEffectAnimation(effectCfg);\n }\n };\n\n var onNormal = function () {\n symbol.downplay();\n\n if (effectCfg.showEffectOn !== 'render') {\n this.stopEffectAnimation();\n }\n };\n\n this.on('mouseover', onEmphasis, this).on('mouseout', onNormal, this).on('emphasis', onEmphasis, this).on('normal', onNormal, this);\n }\n\n this._effectCfg = effectCfg;\n};\n\neffectSymbolProto.fadeOut = function (cb) {\n this.off('mouseover').off('mouseout').off('emphasis').off('normal');\n cb && cb();\n};\n\nzrUtil.inherits(EffectSymbol, Group);\nvar _default = EffectSymbol;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\nvar lineContain = require(\"zrender/lib/contain/line\");\n\nvar quadraticContain = require(\"zrender/lib/contain/quadratic\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Batch by color\nvar LargeLineShape = graphic.extendShape({\n shape: {\n polyline: false,\n curveness: 0,\n segs: []\n },\n buildPath: function (path, shape) {\n var segs = shape.segs;\n var curveness = shape.curveness;\n\n if (shape.polyline) {\n for (var i = 0; i < segs.length;) {\n var count = segs[i++];\n\n if (count > 0) {\n path.moveTo(segs[i++], segs[i++]);\n\n for (var k = 1; k < count; k++) {\n path.lineTo(segs[i++], segs[i++]);\n }\n }\n }\n } else {\n for (var i = 0; i < segs.length;) {\n var x0 = segs[i++];\n var y0 = segs[i++];\n var x1 = segs[i++];\n var y1 = segs[i++];\n path.moveTo(x0, y0);\n\n if (curveness > 0) {\n var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\n var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\n path.quadraticCurveTo(x2, y2, x1, y1);\n } else {\n path.lineTo(x1, y1);\n }\n }\n }\n },\n findDataIndex: function (x, y) {\n var shape = this.shape;\n var segs = shape.segs;\n var curveness = shape.curveness;\n\n if (shape.polyline) {\n var dataIndex = 0;\n\n for (var i = 0; i < segs.length;) {\n var count = segs[i++];\n\n if (count > 0) {\n var x0 = segs[i++];\n var y0 = segs[i++];\n\n for (var k = 1; k < count; k++) {\n var x1 = segs[i++];\n var y1 = segs[i++];\n\n if (lineContain.containStroke(x0, y0, x1, y1)) {\n return dataIndex;\n }\n }\n }\n\n dataIndex++;\n }\n } else {\n var dataIndex = 0;\n\n for (var i = 0; i < segs.length;) {\n var x0 = segs[i++];\n var y0 = segs[i++];\n var x1 = segs[i++];\n var y1 = segs[i++];\n\n if (curveness > 0) {\n var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\n var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\n\n if (quadraticContain.containStroke(x0, y0, x2, y2, x1, y1)) {\n return dataIndex;\n }\n } else {\n if (lineContain.containStroke(x0, y0, x1, y1)) {\n return dataIndex;\n }\n }\n\n dataIndex++;\n }\n }\n\n return -1;\n }\n});\n\nfunction LargeLineDraw() {\n this.group = new graphic.Group();\n}\n\nvar largeLineProto = LargeLineDraw.prototype;\n\nlargeLineProto.isPersistent = function () {\n return !this._incremental;\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n */\n\n\nlargeLineProto.updateData = function (data) {\n this.group.removeAll();\n var lineEl = new LargeLineShape({\n rectHover: true,\n cursor: 'default'\n });\n lineEl.setShape({\n segs: data.getLayout('linesPoints')\n });\n\n this._setCommon(lineEl, data); // Add back\n\n\n this.group.add(lineEl);\n this._incremental = null;\n};\n/**\n * @override\n */\n\n\nlargeLineProto.incrementalPrepareUpdate = function (data) {\n this.group.removeAll();\n\n this._clearIncremental();\n\n if (data.count() > 5e5) {\n if (!this._incremental) {\n this._incremental = new IncrementalDisplayable({\n silent: true\n });\n }\n\n this.group.add(this._incremental);\n } else {\n this._incremental = null;\n }\n};\n/**\n * @override\n */\n\n\nlargeLineProto.incrementalUpdate = function (taskParams, data) {\n var lineEl = new LargeLineShape();\n lineEl.setShape({\n segs: data.getLayout('linesPoints')\n });\n\n this._setCommon(lineEl, data, !!this._incremental);\n\n if (!this._incremental) {\n lineEl.rectHover = true;\n lineEl.cursor = 'default';\n lineEl.__startIndex = taskParams.start;\n this.group.add(lineEl);\n } else {\n this._incremental.addDisplayable(lineEl, true);\n }\n};\n/**\n * @override\n */\n\n\nlargeLineProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlargeLineProto._setCommon = function (lineEl, data, isIncremental) {\n var hostModel = data.hostModel;\n lineEl.setShape({\n polyline: hostModel.get('polyline'),\n curveness: hostModel.get('lineStyle.curveness')\n });\n lineEl.useStyle(hostModel.getModel('lineStyle').getLineStyle());\n lineEl.style.strokeNoScale = true;\n var visualColor = data.getVisual('color');\n\n if (visualColor) {\n lineEl.setStyle('stroke', visualColor);\n }\n\n lineEl.setStyle('fill');\n\n if (!isIncremental) {\n // Enable tooltip\n // PENDING May have performance issue when path is extremely large\n lineEl.seriesIndex = hostModel.seriesIndex;\n lineEl.on('mousemove', function (e) {\n lineEl.dataIndex = null;\n var dataIndex = lineEl.findDataIndex(e.offsetX, e.offsetY);\n\n if (dataIndex > 0) {\n // Provide dataIndex for tooltip\n lineEl.dataIndex = dataIndex + lineEl.__startIndex;\n }\n });\n }\n};\n\nlargeLineProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\n }\n};\n\nvar _default = LargeLineDraw;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\n// TODO Batch by color\nvar BOOST_SIZE_THRESHOLD = 4;\nvar LargeSymbolPath = graphic.extendShape({\n shape: {\n points: null\n },\n symbolProxy: null,\n softClipShape: null,\n buildPath: function (path, shape) {\n var points = shape.points;\n var size = shape.size;\n var symbolProxy = this.symbolProxy;\n var symbolProxyShape = symbolProxy.shape;\n var ctx = path.getContext ? path.getContext() : path;\n var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD; // Do draw in afterBrush.\n\n if (canBoost) {\n return;\n }\n\n for (var i = 0; i < points.length;) {\n var x = points[i++];\n var y = points[i++];\n\n if (isNaN(x) || isNaN(y)) {\n continue;\n }\n\n if (this.softClipShape && !this.softClipShape.contain(x, y)) {\n continue;\n }\n\n symbolProxyShape.x = x - size[0] / 2;\n symbolProxyShape.y = y - size[1] / 2;\n symbolProxyShape.width = size[0];\n symbolProxyShape.height = size[1];\n symbolProxy.buildPath(path, symbolProxyShape, true);\n }\n },\n afterBrush: function (ctx) {\n var shape = this.shape;\n var points = shape.points;\n var size = shape.size;\n var canBoost = size[0] < BOOST_SIZE_THRESHOLD;\n\n if (!canBoost) {\n return;\n }\n\n this.setTransform(ctx); // PENDING If style or other canvas status changed?\n\n for (var i = 0; i < points.length;) {\n var x = points[i++];\n var y = points[i++];\n\n if (isNaN(x) || isNaN(y)) {\n continue;\n }\n\n if (this.softClipShape && !this.softClipShape.contain(x, y)) {\n continue;\n } // fillRect is faster than building a rect path and draw.\n // And it support light globalCompositeOperation.\n\n\n ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);\n }\n\n this.restoreTransform(ctx);\n },\n findDataIndex: function (x, y) {\n // TODO ???\n // Consider transform\n var shape = this.shape;\n var points = shape.points;\n var size = shape.size;\n var w = Math.max(size[0], 4);\n var h = Math.max(size[1], 4); // Not consider transform\n // Treat each element as a rect\n // top down traverse\n\n for (var idx = points.length / 2 - 1; idx >= 0; idx--) {\n var i = idx * 2;\n var x0 = points[i] - w / 2;\n var y0 = points[i + 1] - h / 2;\n\n if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) {\n return idx;\n }\n }\n\n return -1;\n }\n});\n\nfunction LargeSymbolDraw() {\n this.group = new graphic.Group();\n}\n\nvar largeSymbolProto = LargeSymbolDraw.prototype;\n\nlargeSymbolProto.isPersistent = function () {\n return !this._incremental;\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} opt\n * @param {Object} [opt.clipShape]\n */\n\n\nlargeSymbolProto.updateData = function (data, opt) {\n this.group.removeAll();\n var symbolEl = new LargeSymbolPath({\n rectHover: true,\n cursor: 'default'\n });\n symbolEl.setShape({\n points: data.getLayout('symbolPoints')\n });\n\n this._setCommon(symbolEl, data, false, opt);\n\n this.group.add(symbolEl);\n this._incremental = null;\n};\n\nlargeSymbolProto.updateLayout = function (data) {\n if (this._incremental) {\n return;\n }\n\n var points = data.getLayout('symbolPoints');\n this.group.eachChild(function (child) {\n if (child.startIndex != null) {\n var len = (child.endIndex - child.startIndex) * 2;\n var byteOffset = child.startIndex * 4 * 2;\n points = new Float32Array(points.buffer, byteOffset, len);\n }\n\n child.setShape('points', points);\n });\n};\n\nlargeSymbolProto.incrementalPrepareUpdate = function (data) {\n this.group.removeAll();\n\n this._clearIncremental(); // Only use incremental displayables when data amount is larger than 2 million.\n // PENDING Incremental data?\n\n\n if (data.count() > 2e6) {\n if (!this._incremental) {\n this._incremental = new IncrementalDisplayable({\n silent: true\n });\n }\n\n this.group.add(this._incremental);\n } else {\n this._incremental = null;\n }\n};\n\nlargeSymbolProto.incrementalUpdate = function (taskParams, data, opt) {\n var symbolEl;\n\n if (this._incremental) {\n symbolEl = new LargeSymbolPath();\n\n this._incremental.addDisplayable(symbolEl, true);\n } else {\n symbolEl = new LargeSymbolPath({\n rectHover: true,\n cursor: 'default',\n startIndex: taskParams.start,\n endIndex: taskParams.end\n });\n symbolEl.incremental = true;\n this.group.add(symbolEl);\n }\n\n symbolEl.setShape({\n points: data.getLayout('symbolPoints')\n });\n\n this._setCommon(symbolEl, data, !!this._incremental, opt);\n};\n\nlargeSymbolProto._setCommon = function (symbolEl, data, isIncremental, opt) {\n var hostModel = data.hostModel;\n opt = opt || {}; // TODO\n // if (data.hasItemVisual.symbolSize) {\n // // TODO typed array?\n // symbolEl.setShape('sizes', data.mapArray(\n // function (idx) {\n // var size = data.getItemVisual(idx, 'symbolSize');\n // return (size instanceof Array) ? size : [size, size];\n // }\n // ));\n // }\n // else {\n\n var size = data.getVisual('symbolSize');\n symbolEl.setShape('size', size instanceof Array ? size : [size, size]); // }\n\n symbolEl.softClipShape = opt.clipShape || null; // Create symbolProxy to build path for each data\n\n symbolEl.symbolProxy = createSymbol(data.getVisual('symbol'), 0, 0, 0, 0); // Use symbolProxy setColor method\n\n symbolEl.setColor = symbolEl.symbolProxy.setColor;\n var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;\n symbolEl.useStyle( // Draw shadow when doing fillRect is extremely slow.\n hostModel.getModel('itemStyle').getItemStyle(extrudeShadow ? ['color', 'shadowBlur', 'shadowColor'] : ['color']));\n var visualColor = data.getVisual('color');\n\n if (visualColor) {\n symbolEl.setColor(visualColor);\n }\n\n if (!isIncremental) {\n // Enable tooltip\n // PENDING May have performance issue when path is extremely large\n symbolEl.seriesIndex = hostModel.seriesIndex;\n symbolEl.on('mousemove', function (e) {\n symbolEl.dataIndex = null;\n var dataIndex = symbolEl.findDataIndex(e.offsetX, e.offsetY);\n\n if (dataIndex >= 0) {\n // Provide dataIndex for tooltip\n symbolEl.dataIndex = dataIndex + (symbolEl.startIndex || 0);\n }\n });\n }\n};\n\nlargeSymbolProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlargeSymbolProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\n }\n};\n\nvar _default = LargeSymbolDraw;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar symbolUtil = require(\"../../util/symbol\");\n\nvar LinePath = require(\"./LinePath\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar round = _number.round;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Line\n */\nvar SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\n\nfunction makeSymbolTypeKey(symbolCategory) {\n return '_' + symbolCategory + 'Type';\n}\n/**\n * @inner\n */\n\n\nfunction createSymbol(name, lineData, idx) {\n var symbolType = lineData.getItemVisual(idx, name);\n\n if (!symbolType || symbolType === 'none') {\n return;\n }\n\n var color = lineData.getItemVisual(idx, 'color');\n var symbolSize = lineData.getItemVisual(idx, name + 'Size');\n var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');\n\n if (!zrUtil.isArray(symbolSize)) {\n symbolSize = [symbolSize, symbolSize];\n }\n\n var symbolPath = symbolUtil.createSymbol(symbolType, -symbolSize[0] / 2, -symbolSize[1] / 2, symbolSize[0], symbolSize[1], color); // rotate by default if symbolRotate is not specified or NaN\n\n symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0;\n symbolPath.name = name;\n return symbolPath;\n}\n\nfunction createLine(points) {\n var line = new LinePath({\n name: 'line',\n subPixelOptimize: true\n });\n setLinePoints(line.shape, points);\n return line;\n}\n\nfunction setLinePoints(targetShape, points) {\n targetShape.x1 = points[0][0];\n targetShape.y1 = points[0][1];\n targetShape.x2 = points[1][0];\n targetShape.y2 = points[1][1];\n targetShape.percent = 1;\n var cp1 = points[2];\n\n if (cp1) {\n targetShape.cpx1 = cp1[0];\n targetShape.cpy1 = cp1[1];\n } else {\n targetShape.cpx1 = NaN;\n targetShape.cpy1 = NaN;\n }\n}\n\nfunction updateSymbolAndLabelBeforeLineUpdate() {\n var lineGroup = this;\n var symbolFrom = lineGroup.childOfName('fromSymbol');\n var symbolTo = lineGroup.childOfName('toSymbol');\n var label = lineGroup.childOfName('label'); // Quick reject\n\n if (!symbolFrom && !symbolTo && label.ignore) {\n return;\n }\n\n var invScale = 1;\n var parentNode = this.parent;\n\n while (parentNode) {\n if (parentNode.scale) {\n invScale /= parentNode.scale[0];\n }\n\n parentNode = parentNode.parent;\n }\n\n var line = lineGroup.childOfName('line'); // If line not changed\n // FIXME Parent scale changed\n\n if (!this.__dirty && !line.__dirty) {\n return;\n }\n\n var percent = line.shape.percent;\n var fromPos = line.pointAt(0);\n var toPos = line.pointAt(percent);\n var d = vector.sub([], toPos, fromPos);\n vector.normalize(d, d);\n\n if (symbolFrom) {\n symbolFrom.attr('position', fromPos); // Fix #12388\n // when symbol is set to be 'arrow' in markLine,\n // symbolRotate value will be ignored, and compulsively use tangent angle.\n // rotate by default if symbol rotation is not specified\n\n var specifiedRotation = symbolFrom.__specifiedRotation;\n\n if (specifiedRotation == null) {\n var tangent = line.tangentAt(0);\n symbolFrom.attr('rotation', Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n } else {\n symbolFrom.attr('rotation', specifiedRotation);\n }\n\n symbolFrom.attr('scale', [invScale * percent, invScale * percent]);\n }\n\n if (symbolTo) {\n symbolTo.attr('position', toPos); // Fix #12388\n // when symbol is set to be 'arrow' in markLine,\n // symbolRotate value will be ignored, and compulsively use tangent angle.\n // rotate by default if symbol rotation is not specified\n\n var specifiedRotation = symbolTo.__specifiedRotation;\n\n if (specifiedRotation == null) {\n var tangent = line.tangentAt(1);\n symbolTo.attr('rotation', -Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n } else {\n symbolTo.attr('rotation', specifiedRotation);\n }\n\n symbolTo.attr('scale', [invScale * percent, invScale * percent]);\n }\n\n if (!label.ignore) {\n label.attr('position', toPos);\n var textPosition;\n var textAlign;\n var textVerticalAlign;\n var textOrigin;\n var distance = label.__labelDistance;\n var distanceX = distance[0] * invScale;\n var distanceY = distance[1] * invScale;\n var halfPercent = percent / 2;\n var tangent = line.tangentAt(halfPercent);\n var n = [tangent[1], -tangent[0]];\n var cp = line.pointAt(halfPercent);\n\n if (n[1] > 0) {\n n[0] = -n[0];\n n[1] = -n[1];\n }\n\n var dir = tangent[0] < 0 ? -1 : 1;\n\n if (label.__position !== 'start' && label.__position !== 'end') {\n var rotation = -Math.atan2(tangent[1], tangent[0]);\n\n if (toPos[0] < fromPos[0]) {\n rotation = Math.PI + rotation;\n }\n\n label.attr('rotation', rotation);\n }\n\n var dy;\n\n switch (label.__position) {\n case 'insideStartTop':\n case 'insideMiddleTop':\n case 'insideEndTop':\n case 'middle':\n dy = -distanceY;\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideStartBottom':\n case 'insideMiddleBottom':\n case 'insideEndBottom':\n dy = distanceY;\n textVerticalAlign = 'top';\n break;\n\n default:\n dy = 0;\n textVerticalAlign = 'middle';\n }\n\n switch (label.__position) {\n case 'end':\n textPosition = [d[0] * distanceX + toPos[0], d[1] * distanceY + toPos[1]];\n textAlign = d[0] > 0.8 ? 'left' : d[0] < -0.8 ? 'right' : 'center';\n textVerticalAlign = d[1] > 0.8 ? 'top' : d[1] < -0.8 ? 'bottom' : 'middle';\n break;\n\n case 'start':\n textPosition = [-d[0] * distanceX + fromPos[0], -d[1] * distanceY + fromPos[1]];\n textAlign = d[0] > 0.8 ? 'right' : d[0] < -0.8 ? 'left' : 'center';\n textVerticalAlign = d[1] > 0.8 ? 'bottom' : d[1] < -0.8 ? 'top' : 'middle';\n break;\n\n case 'insideStartTop':\n case 'insideStart':\n case 'insideStartBottom':\n textPosition = [distanceX * dir + fromPos[0], fromPos[1] + dy];\n textAlign = tangent[0] < 0 ? 'right' : 'left';\n textOrigin = [-distanceX * dir, -dy];\n break;\n\n case 'insideMiddleTop':\n case 'insideMiddle':\n case 'insideMiddleBottom':\n case 'middle':\n textPosition = [cp[0], cp[1] + dy];\n textAlign = 'center';\n textOrigin = [0, -dy];\n break;\n\n case 'insideEndTop':\n case 'insideEnd':\n case 'insideEndBottom':\n textPosition = [-distanceX * dir + toPos[0], toPos[1] + dy];\n textAlign = tangent[0] >= 0 ? 'right' : 'left';\n textOrigin = [distanceX * dir, -dy];\n break;\n }\n\n label.attr({\n style: {\n // Use the user specified text align and baseline first\n textVerticalAlign: label.__verticalAlign || textVerticalAlign,\n textAlign: label.__textAlign || textAlign\n },\n position: textPosition,\n scale: [invScale, invScale],\n origin: textOrigin\n });\n }\n}\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\n\n\nfunction Line(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n\n this._createLine(lineData, idx, seriesScope);\n}\n\nvar lineProto = Line.prototype; // Update symbol position and rotation\n\nlineProto.beforeUpdate = updateSymbolAndLabelBeforeLineUpdate;\n\nlineProto._createLine = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var linePoints = lineData.getItemLayout(idx);\n var line = createLine(linePoints);\n line.shape.percent = 0;\n graphic.initProps(line, {\n shape: {\n percent: 1\n }\n }, seriesModel, idx);\n this.add(line);\n var label = new graphic.Text({\n name: 'label',\n // FIXME\n // Temporary solution for `focusNodeAdjacency`.\n // line label do not use the opacity of lineStyle.\n lineLabelOriginalOpacity: 1\n });\n this.add(label);\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = createSymbol(symbolCategory, lineData, idx); // symbols must added after line to make sure\n // it will be updated after line#update.\n // Or symbol position and rotation update in line#beforeUpdate will be one frame slow\n\n this.add(symbol);\n this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory);\n }, this);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\nlineProto.updateData = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var linePoints = lineData.getItemLayout(idx);\n var target = {\n shape: {}\n };\n setLinePoints(target.shape, linePoints);\n graphic.updateProps(line, target, seriesModel, idx);\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbolType = lineData.getItemVisual(idx, symbolCategory);\n var key = makeSymbolTypeKey(symbolCategory); // Symbol changed\n\n if (this[key] !== symbolType) {\n this.remove(this.childOfName(symbolCategory));\n var symbol = createSymbol(symbolCategory, lineData, idx);\n this.add(symbol);\n }\n\n this[key] = symbolType;\n }, this);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\nlineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var lineStyle = seriesScope && seriesScope.lineStyle;\n var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n var labelModel = seriesScope && seriesScope.labelModel;\n var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel; // Optimization for large dataset\n\n if (!seriesScope || lineData.hasItemOption) {\n var itemModel = lineData.getItemModel(idx);\n lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n labelModel = itemModel.getModel('label');\n hoverLabelModel = itemModel.getModel('emphasis.label');\n }\n\n var visualColor = lineData.getItemVisual(idx, 'color');\n var visualOpacity = zrUtil.retrieve3(lineData.getItemVisual(idx, 'opacity'), lineStyle.opacity, 1);\n line.useStyle(zrUtil.defaults({\n strokeNoScale: true,\n fill: 'none',\n stroke: visualColor,\n opacity: visualOpacity\n }, lineStyle));\n line.hoverStyle = hoverLineStyle; // Update symbol\n\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = this.childOfName(symbolCategory);\n\n if (symbol) {\n symbol.setColor(visualColor);\n symbol.setStyle({\n opacity: visualOpacity\n });\n }\n }, this);\n var showLabel = labelModel.getShallow('show');\n var hoverShowLabel = hoverLabelModel.getShallow('show');\n var label = this.childOfName('label');\n var defaultLabelColor;\n var baseText; // FIXME: the logic below probably should be merged to `graphic.setLabelStyle`.\n\n if (showLabel || hoverShowLabel) {\n defaultLabelColor = visualColor || '#000';\n baseText = seriesModel.getFormattedLabel(idx, 'normal', lineData.dataType);\n\n if (baseText == null) {\n var rawVal = seriesModel.getRawValue(idx);\n baseText = rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal;\n }\n }\n\n var normalText = showLabel ? baseText : null;\n var emphasisText = hoverShowLabel ? zrUtil.retrieve2(seriesModel.getFormattedLabel(idx, 'emphasis', lineData.dataType), baseText) : null;\n var labelStyle = label.style; // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n\n if (normalText != null || emphasisText != null) {\n graphic.setTextStyle(label.style, labelModel, {\n text: normalText\n }, {\n autoColor: defaultLabelColor\n });\n label.__textAlign = labelStyle.textAlign;\n label.__verticalAlign = labelStyle.textVerticalAlign; // 'start', 'middle', 'end'\n\n label.__position = labelModel.get('position') || 'middle';\n var distance = labelModel.get('distance');\n\n if (!zrUtil.isArray(distance)) {\n distance = [distance, distance];\n }\n\n label.__labelDistance = distance;\n }\n\n if (emphasisText != null) {\n // Only these properties supported in this emphasis style here.\n label.hoverStyle = {\n text: emphasisText,\n textFill: hoverLabelModel.getTextColor(true),\n // For merging hover style to normal style, do not use\n // `hoverLabelModel.getFont()` here.\n fontStyle: hoverLabelModel.getShallow('fontStyle'),\n fontWeight: hoverLabelModel.getShallow('fontWeight'),\n fontSize: hoverLabelModel.getShallow('fontSize'),\n fontFamily: hoverLabelModel.getShallow('fontFamily')\n };\n } else {\n label.hoverStyle = {\n text: null\n };\n }\n\n label.ignore = !showLabel && !hoverShowLabel;\n graphic.setHoverStyle(this);\n};\n\nlineProto.highlight = function () {\n this.trigger('emphasis');\n};\n\nlineProto.downplay = function () {\n this.trigger('normal');\n};\n\nlineProto.updateLayout = function (lineData, idx) {\n this.setLinePoints(lineData.getItemLayout(idx));\n};\n\nlineProto.setLinePoints = function (points) {\n var linePath = this.childOfName('line');\n setLinePoints(linePath.shape, points);\n linePath.dirty();\n};\n\nzrUtil.inherits(Line, graphic.Group);\nvar _default = Line;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar LineGroup = require(\"./Line\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/LineDraw\n */\n// import IncrementalDisplayable from 'zrender/src/graphic/IncrementalDisplayable';\n\n/**\n * @alias module:echarts/component/marker/LineDraw\n * @constructor\n */\nfunction LineDraw(ctor) {\n this._ctor = ctor || LineGroup;\n this.group = new graphic.Group();\n}\n\nvar lineDrawProto = LineDraw.prototype;\n\nlineDrawProto.isPersistent = function () {\n return true;\n};\n/**\n * @param {module:echarts/data/List} lineData\n */\n\n\nlineDrawProto.updateData = function (lineData) {\n var lineDraw = this;\n var group = lineDraw.group;\n var oldLineData = lineDraw._lineData;\n lineDraw._lineData = lineData; // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!oldLineData) {\n group.removeAll();\n }\n\n var seriesScope = makeSeriesScope(lineData);\n lineData.diff(oldLineData).add(function (idx) {\n doAdd(lineDraw, lineData, idx, seriesScope);\n }).update(function (newIdx, oldIdx) {\n doUpdate(lineDraw, oldLineData, lineData, oldIdx, newIdx, seriesScope);\n }).remove(function (idx) {\n group.remove(oldLineData.getItemGraphicEl(idx));\n }).execute();\n};\n\nfunction doAdd(lineDraw, lineData, idx, seriesScope) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (!lineNeedsDraw(itemLayout)) {\n return;\n }\n\n var el = new lineDraw._ctor(lineData, idx, seriesScope);\n lineData.setItemGraphicEl(idx, el);\n lineDraw.group.add(el);\n}\n\nfunction doUpdate(lineDraw, oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\n var itemEl = oldLineData.getItemGraphicEl(oldIdx);\n\n if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\n lineDraw.group.remove(itemEl);\n return;\n }\n\n if (!itemEl) {\n itemEl = new lineDraw._ctor(newLineData, newIdx, seriesScope);\n } else {\n itemEl.updateData(newLineData, newIdx, seriesScope);\n }\n\n newLineData.setItemGraphicEl(newIdx, itemEl);\n lineDraw.group.add(itemEl);\n}\n\nlineDrawProto.updateLayout = function () {\n var lineData = this._lineData; // Do not support update layout in incremental mode.\n\n if (!lineData) {\n return;\n }\n\n lineData.eachItemGraphicEl(function (el, idx) {\n el.updateLayout(lineData, idx);\n }, this);\n};\n\nlineDrawProto.incrementalPrepareUpdate = function (lineData) {\n this._seriesScope = makeSeriesScope(lineData);\n this._lineData = null;\n this.group.removeAll();\n};\n\nfunction isEffectObject(el) {\n return el.animators && el.animators.length > 0;\n}\n\nlineDrawProto.incrementalUpdate = function (taskParams, lineData) {\n function updateIncrementalAndHover(el) {\n if (!el.isGroup && !isEffectObject(el)) {\n el.incremental = el.useHoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (lineNeedsDraw(itemLayout)) {\n var el = new this._ctor(lineData, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n this.group.add(el);\n lineData.setItemGraphicEl(idx, el);\n }\n }\n};\n\nfunction makeSeriesScope(lineData) {\n var hostModel = lineData.hostModel;\n return {\n lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\n hoverLineStyle: hostModel.getModel('emphasis.lineStyle').getLineStyle(),\n labelModel: hostModel.getModel('label'),\n hoverLabelModel: hostModel.getModel('emphasis.label')\n };\n}\n\nlineDrawProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlineDrawProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\n }\n};\n\nfunction isPointNaN(pt) {\n return isNaN(pt[0]) || isNaN(pt[1]);\n}\n\nfunction lineNeedsDraw(pts) {\n return !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\n}\n\nvar _default = LineDraw;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Line path for bezier and straight line draw\n */\nvar straightLineProto = graphic.Line.prototype;\nvar bezierCurveProto = graphic.BezierCurve.prototype;\n\nfunction isLine(shape) {\n return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\n}\n\nvar _default = graphic.extendShape({\n type: 'ec-line',\n style: {\n stroke: '#000',\n fill: null\n },\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n percent: 1,\n cpx1: null,\n cpy1: null\n },\n buildPath: function (ctx, shape) {\n this[isLine(shape) ? '_buildPathLine' : '_buildPathCurve'](ctx, shape);\n },\n _buildPathLine: straightLineProto.buildPath,\n _buildPathCurve: bezierCurveProto.buildPath,\n pointAt: function (t) {\n return this[isLine(this.shape) ? '_pointAtLine' : '_pointAtCurve'](t);\n },\n _pointAtLine: straightLineProto.pointAt,\n _pointAtCurve: bezierCurveProto.pointAt,\n tangentAt: function (t) {\n var shape = this.shape;\n var p = isLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : this._tangentAtCurve(t);\n return vec2.normalize(p, p);\n },\n _tangentAtCurve: bezierCurveProto.tangentAt\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Line\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Polyline}\n */\nfunction Polyline(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n\n this._createPolyline(lineData, idx, seriesScope);\n}\n\nvar polylineProto = Polyline.prototype;\n\npolylineProto._createPolyline = function (lineData, idx, seriesScope) {\n // var seriesModel = lineData.hostModel;\n var points = lineData.getItemLayout(idx);\n var line = new graphic.Polyline({\n shape: {\n points: points\n }\n });\n this.add(line);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\npolylineProto.updateData = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childAt(0);\n var target = {\n shape: {\n points: lineData.getItemLayout(idx)\n }\n };\n graphic.updateProps(line, target, seriesModel, idx);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\npolylineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n var line = this.childAt(0);\n var itemModel = lineData.getItemModel(idx);\n var visualColor = lineData.getItemVisual(idx, 'color');\n var lineStyle = seriesScope && seriesScope.lineStyle;\n var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n\n if (!seriesScope || lineData.hasItemOption) {\n lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n }\n\n line.useStyle(zrUtil.defaults({\n strokeNoScale: true,\n fill: 'none',\n stroke: visualColor\n }, lineStyle));\n line.hoverStyle = hoverLineStyle;\n graphic.setHoverStyle(this);\n};\n\npolylineProto.updateLayout = function (lineData, idx) {\n var polyline = this.childAt(0);\n polyline.setShape('points', lineData.getItemLayout(idx));\n};\n\nzrUtil.inherits(Polyline, graphic.Group);\nvar _default = Polyline;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _labelHelper = require(\"./labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Symbol\n */\n\n/**\n * @constructor\n * @alias {module:echarts/chart/helper/Symbol}\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\nfunction SymbolClz(data, idx, seriesScope) {\n graphic.Group.call(this);\n this.updateData(data, idx, seriesScope);\n}\n\nvar symbolProto = SymbolClz.prototype;\n/**\n * @public\n * @static\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {Array.} [width, height]\n */\n\nvar getSymbolSize = SymbolClz.getSymbolSize = function (data, idx) {\n var symbolSize = data.getItemVisual(idx, 'symbolSize');\n return symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n};\n\nfunction getScale(symbolSize) {\n return [symbolSize[0] / 2, symbolSize[1] / 2];\n}\n\nfunction driftSymbol(dx, dy) {\n this.parent.drift(dx, dy);\n}\n\nsymbolProto._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n // Remove paths created before\n this.removeAll();\n var color = data.getItemVisual(idx, 'color'); // var symbolPath = createSymbol(\n // symbolType, -0.5, -0.5, 1, 1, color\n // );\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4150.\n\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, color, keepAspect);\n symbolPath.attr({\n z2: 100,\n culling: true,\n scale: getScale(symbolSize)\n }); // Rewrite drift method\n\n symbolPath.drift = driftSymbol;\n this._symbolType = symbolType;\n this.add(symbolPath);\n};\n/**\n * Stop animation\n * @param {boolean} toLastFrame\n */\n\n\nsymbolProto.stopSymbolAnimation = function (toLastFrame) {\n this.childAt(0).stopAnimation(toLastFrame);\n};\n/**\n * FIXME:\n * Caution: This method breaks the encapsulation of this module,\n * but it indeed brings convenience. So do not use the method\n * unless you detailedly know all the implements of `Symbol`,\n * especially animation.\n *\n * Get symbol path element.\n */\n\n\nsymbolProto.getSymbolPath = function () {\n return this.childAt(0);\n};\n/**\n * Get scale(aka, current symbol size).\n * Including the change caused by animation\n */\n\n\nsymbolProto.getScale = function () {\n return this.childAt(0).scale;\n};\n/**\n * Highlight symbol\n */\n\n\nsymbolProto.highlight = function () {\n this.childAt(0).trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\nsymbolProto.downplay = function () {\n this.childAt(0).trigger('normal');\n};\n/**\n * @param {number} zlevel\n * @param {number} z\n */\n\n\nsymbolProto.setZ = function (zlevel, z) {\n var symbolPath = this.childAt(0);\n symbolPath.zlevel = zlevel;\n symbolPath.z = z;\n};\n\nsymbolProto.setDraggable = function (draggable) {\n var symbolPath = this.childAt(0);\n symbolPath.draggable = draggable;\n symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\n};\n/**\n * Update symbol properties\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Object} [seriesScope]\n * @param {Object} [seriesScope.itemStyle]\n * @param {Object} [seriesScope.hoverItemStyle]\n * @param {Object} [seriesScope.symbolRotate]\n * @param {Object} [seriesScope.symbolOffset]\n * @param {module:echarts/model/Model} [seriesScope.labelModel]\n * @param {module:echarts/model/Model} [seriesScope.hoverLabelModel]\n * @param {boolean} [seriesScope.hoverAnimation]\n * @param {Object} [seriesScope.cursorStyle]\n * @param {module:echarts/model/Model} [seriesScope.itemModel]\n * @param {string} [seriesScope.symbolInnerColor]\n * @param {Object} [seriesScope.fadeIn=false]\n */\n\n\nsymbolProto.updateData = function (data, idx, seriesScope) {\n this.silent = false;\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var seriesModel = data.hostModel;\n var symbolSize = getSymbolSize(data, idx);\n var isInit = symbolType !== this._symbolType;\n\n if (isInit) {\n var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n\n this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n } else {\n var symbolPath = this.childAt(0);\n symbolPath.silent = false;\n graphic.updateProps(symbolPath, {\n scale: getScale(symbolSize)\n }, seriesModel, idx);\n }\n\n this._updateCommon(data, idx, symbolSize, seriesScope);\n\n if (isInit) {\n var symbolPath = this.childAt(0);\n var fadeIn = seriesScope && seriesScope.fadeIn;\n var target = {\n scale: symbolPath.scale.slice()\n };\n fadeIn && (target.style = {\n opacity: symbolPath.style.opacity\n });\n symbolPath.scale = [0, 0];\n fadeIn && (symbolPath.style.opacity = 0);\n graphic.initProps(symbolPath, target, seriesModel, idx);\n }\n\n this._seriesModel = seriesModel;\n}; // Update common properties\n\n\nvar normalStyleAccessPath = ['itemStyle'];\nvar emphasisStyleAccessPath = ['emphasis', 'itemStyle'];\nvar normalLabelAccessPath = ['label'];\nvar emphasisLabelAccessPath = ['emphasis', 'label'];\n/**\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Array.} symbolSize\n * @param {Object} [seriesScope]\n */\n\nsymbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {\n var symbolPath = this.childAt(0);\n var seriesModel = data.hostModel;\n var color = data.getItemVisual(idx, 'color'); // Reset style\n\n if (symbolPath.type !== 'image') {\n symbolPath.useStyle({\n strokeNoScale: true\n });\n } else {\n symbolPath.setStyle({\n opacity: 1,\n shadowBlur: null,\n shadowOffsetX: null,\n shadowOffsetY: null,\n shadowColor: null\n });\n }\n\n var itemStyle = seriesScope && seriesScope.itemStyle;\n var hoverItemStyle = seriesScope && seriesScope.hoverItemStyle;\n var symbolOffset = seriesScope && seriesScope.symbolOffset;\n var labelModel = seriesScope && seriesScope.labelModel;\n var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel;\n var hoverAnimation = seriesScope && seriesScope.hoverAnimation;\n var cursorStyle = seriesScope && seriesScope.cursorStyle;\n\n if (!seriesScope || data.hasItemOption) {\n var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n itemStyle = itemModel.getModel(normalStyleAccessPath).getItemStyle(['color']);\n hoverItemStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle();\n symbolOffset = itemModel.getShallow('symbolOffset');\n labelModel = itemModel.getModel(normalLabelAccessPath);\n hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath);\n hoverAnimation = itemModel.getShallow('hoverAnimation');\n cursorStyle = itemModel.getShallow('cursor');\n } else {\n hoverItemStyle = zrUtil.extend({}, hoverItemStyle);\n }\n\n var elStyle = symbolPath.style;\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n\n if (symbolOffset) {\n symbolPath.attr('position', [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])]);\n }\n\n cursorStyle && symbolPath.attr('cursor', cursorStyle); // PENDING setColor before setStyle!!!\n\n symbolPath.setColor(color, seriesScope && seriesScope.symbolInnerColor);\n symbolPath.setStyle(itemStyle);\n var opacity = data.getItemVisual(idx, 'opacity');\n\n if (opacity != null) {\n elStyle.opacity = opacity;\n }\n\n var liftZ = data.getItemVisual(idx, 'liftZ');\n var z2Origin = symbolPath.__z2Origin;\n\n if (liftZ != null) {\n if (z2Origin == null) {\n symbolPath.__z2Origin = symbolPath.z2;\n symbolPath.z2 += liftZ;\n }\n } else if (z2Origin != null) {\n symbolPath.z2 = z2Origin;\n symbolPath.__z2Origin = null;\n }\n\n var useNameLabel = seriesScope && seriesScope.useNameLabel;\n graphic.setLabelStyle(elStyle, hoverItemStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: getLabelDefaultText,\n isRectText: true,\n autoColor: color\n }); // Do not execute util needed.\n\n function getLabelDefaultText(idx, opt) {\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n }\n\n symbolPath.__symbolOriginalScale = getScale(symbolSize);\n symbolPath.hoverStyle = hoverItemStyle;\n symbolPath.highDownOnUpdate = hoverAnimation && seriesModel.isAnimationEnabled() ? highDownOnUpdate : null;\n graphic.setHoverStyle(symbolPath);\n};\n\nfunction highDownOnUpdate(fromState, toState) {\n // Do not support this hover animation util some scenario required.\n // Animation can only be supported in hover layer when using `el.incremetal`.\n if (this.incremental || this.useHoverLayer) {\n return;\n }\n\n if (toState === 'emphasis') {\n var scale = this.__symbolOriginalScale;\n var ratio = scale[1] / scale[0];\n var emphasisOpt = {\n scale: [Math.max(scale[0] * 1.1, scale[0] + 3), Math.max(scale[1] * 1.1, scale[1] + 3 * ratio)]\n }; // FIXME\n // modify it after support stop specified animation.\n // toState === fromState\n // ? (this.stopAnimation(), this.attr(emphasisOpt))\n\n this.animateTo(emphasisOpt, 400, 'elasticOut');\n } else if (toState === 'normal') {\n this.animateTo({\n scale: this.__symbolOriginalScale\n }, 400, 'elasticOut');\n }\n}\n/**\n * @param {Function} cb\n * @param {Object} [opt]\n * @param {Object} [opt.keepLabel=true]\n */\n\n\nsymbolProto.fadeOut = function (cb, opt) {\n var symbolPath = this.childAt(0); // Avoid mistaken hover when fading out\n\n this.silent = symbolPath.silent = true; // Not show text when animating\n\n !(opt && opt.keepLabel) && (symbolPath.style.text = null);\n graphic.updateProps(symbolPath, {\n style: {\n opacity: 0\n },\n scale: [0, 0]\n }, this._seriesModel, this.dataIndex, cb);\n};\n\nzrUtil.inherits(SymbolClz, graphic.Group);\nvar _default = SymbolClz;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar SymbolClz = require(\"./Symbol\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isObject = _util.isObject;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/SymbolDraw\n */\n\n/**\n * @constructor\n * @alias module:echarts/chart/helper/SymbolDraw\n * @param {module:zrender/graphic/Group} [symbolCtor]\n */\nfunction SymbolDraw(symbolCtor) {\n this.group = new graphic.Group();\n this._symbolCtor = symbolCtor || SymbolClz;\n}\n\nvar symbolDrawProto = SymbolDraw.prototype;\n\nfunction symbolNeedsDraw(data, point, idx, opt) {\n return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) // We do not set clipShape on group, because it will cut part of\n // the symbol element shape. We use the same clip shape here as\n // the line clip.\n && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.updateData = function (data, opt) {\n opt = normalizeUpdateOpt(opt);\n var group = this.group;\n var seriesModel = data.hostModel;\n var oldData = this._data;\n var SymbolCtor = this._symbolCtor;\n var seriesScope = makeSeriesScope(data); // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!oldData) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n var point = data.getItemLayout(newIdx);\n\n if (symbolNeedsDraw(data, point, newIdx, opt)) {\n var symbolEl = new SymbolCtor(data, newIdx, seriesScope);\n symbolEl.attr('position', point);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\n var point = data.getItemLayout(newIdx);\n\n if (!symbolNeedsDraw(data, point, newIdx, opt)) {\n group.remove(symbolEl);\n return;\n }\n\n if (!symbolEl) {\n symbolEl = new SymbolCtor(data, newIdx);\n symbolEl.attr('position', point);\n } else {\n symbolEl.updateData(data, newIdx, seriesScope);\n graphic.updateProps(symbolEl, {\n position: point\n }, seriesModel);\n } // Add back\n\n\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && el.fadeOut(function () {\n group.remove(el);\n });\n }).execute();\n this._data = data;\n};\n\nsymbolDrawProto.isPersistent = function () {\n return true;\n};\n\nsymbolDrawProto.updateLayout = function () {\n var data = this._data;\n\n if (data) {\n // Not use animation\n data.eachItemGraphicEl(function (el, idx) {\n var point = data.getItemLayout(idx);\n el.attr('position', point);\n });\n }\n};\n\nsymbolDrawProto.incrementalPrepareUpdate = function (data) {\n this._seriesScope = makeSeriesScope(data);\n this._data = null;\n this.group.removeAll();\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.incrementalUpdate = function (taskParams, data, opt) {\n opt = normalizeUpdateOpt(opt);\n\n function updateIncrementalAndHover(el) {\n if (!el.isGroup) {\n el.incremental = el.useHoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var point = data.getItemLayout(idx);\n\n if (symbolNeedsDraw(data, point, idx, opt)) {\n var el = new this._symbolCtor(data, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n el.attr('position', point);\n this.group.add(el);\n data.setItemGraphicEl(idx, el);\n }\n }\n};\n\nfunction normalizeUpdateOpt(opt) {\n if (opt != null && !isObject(opt)) {\n opt = {\n isIgnore: opt\n };\n }\n\n return opt || {};\n}\n\nsymbolDrawProto.remove = function (enableAnimation) {\n var group = this.group;\n var data = this._data; // Incremental model do not have this._data.\n\n if (data && enableAnimation) {\n data.eachItemGraphicEl(function (el) {\n el.fadeOut(function () {\n group.remove(el);\n });\n });\n } else {\n group.removeAll();\n }\n};\n\nfunction makeSeriesScope(data) {\n var seriesModel = data.hostModel;\n return {\n itemStyle: seriesModel.getModel('itemStyle').getItemStyle(['color']),\n hoverItemStyle: seriesModel.getModel('emphasis.itemStyle').getItemStyle(),\n symbolRotate: seriesModel.get('symbolRotate'),\n symbolOffset: seriesModel.get('symbolOffset'),\n hoverAnimation: seriesModel.get('hoverAnimation'),\n labelModel: seriesModel.getModel('label'),\n hoverLabelModel: seriesModel.getModel('emphasis.label'),\n cursorStyle: seriesModel.get('cursor')\n };\n}\n\nvar _default = SymbolDraw;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar round = _number.round;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction createGridClipPath(cartesian, hasAnimation, seriesModel) {\n var rect = cartesian.getArea();\n var isHorizontal = cartesian.getBaseAxis().isHorizontal();\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n var lineWidth = seriesModel.get('lineStyle.width') || 2; // Expand the clip path a bit to avoid the border is clipped and looks thinner\n\n x -= lineWidth / 2;\n y -= lineWidth / 2;\n width += lineWidth;\n height += lineWidth; // fix: https://github.com/apache/incubator-echarts/issues/11369\n\n x = Math.floor(x);\n width = Math.round(width);\n var clipPath = new graphic.Rect({\n shape: {\n x: x,\n y: y,\n width: width,\n height: height\n }\n });\n\n if (hasAnimation) {\n clipPath.shape[isHorizontal ? 'width' : 'height'] = 0;\n graphic.initProps(clipPath, {\n shape: {\n width: width,\n height: height\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createPolarClipPath(polar, hasAnimation, seriesModel) {\n var sectorArea = polar.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n\n var clipPath = new graphic.Sector({\n shape: {\n cx: round(polar.cx, 1),\n cy: round(polar.cy, 1),\n r0: round(sectorArea.r0, 1),\n r: round(sectorArea.r, 1),\n startAngle: sectorArea.startAngle,\n endAngle: sectorArea.endAngle,\n clockwise: sectorArea.clockwise\n }\n });\n\n if (hasAnimation) {\n clipPath.shape.endAngle = sectorArea.startAngle;\n graphic.initProps(clipPath, {\n shape: {\n endAngle: sectorArea.endAngle\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createClipPath(coordSys, hasAnimation, seriesModel) {\n if (!coordSys) {\n return null;\n } else if (coordSys.type === 'polar') {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n } else if (coordSys.type === 'cartesian2d') {\n return createGridClipPath(coordSys, hasAnimation, seriesModel);\n }\n\n return null;\n}\n\nexports.createGridClipPath = createGridClipPath;\nexports.createPolarClipPath = createPolarClipPath;\nexports.createClipPath = createClipPath;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar Graph = require(\"../../data/Graph\");\n\nvar linkList = require(\"../../data/helper/linkList\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar createListFromArray = require(\"./createListFromArray\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(nodes, edges, seriesModel, directed, beforeLink) {\n // ??? TODO\n // support dataset?\n var graph = new Graph(directed);\n\n for (var i = 0; i < nodes.length; i++) {\n graph.addNode(zrUtil.retrieve( // Id, name, dataIndex\n nodes[i].id, nodes[i].name, i), i);\n }\n\n var linkNameList = [];\n var validEdges = [];\n var linkCount = 0;\n\n for (var i = 0; i < edges.length; i++) {\n var link = edges[i];\n var source = link.source;\n var target = link.target; // addEdge may fail when source or target not exists\n\n if (graph.addEdge(source, target, linkCount)) {\n validEdges.push(link);\n linkNameList.push(zrUtil.retrieve(link.id, source + ' > ' + target));\n linkCount++;\n }\n }\n\n var coordSys = seriesModel.get('coordinateSystem');\n var nodeData;\n\n if (coordSys === 'cartesian2d' || coordSys === 'polar') {\n nodeData = createListFromArray(nodes, seriesModel);\n } else {\n var coordSysCtor = CoordinateSystem.get(coordSys);\n var coordDimensions = coordSysCtor && coordSysCtor.type !== 'view' ? coordSysCtor.dimensions || [] : []; // FIXME: Some geo do not need `value` dimenson, whereas `calendar` needs\n // `value` dimension, but graph need `value` dimension. It's better to\n // uniform this behavior.\n\n if (zrUtil.indexOf(coordDimensions, 'value') < 0) {\n coordDimensions.concat(['value']);\n }\n\n var dimensionNames = createDimensions(nodes, {\n coordDimensions: coordDimensions\n });\n nodeData = new List(dimensionNames, seriesModel);\n nodeData.initData(nodes);\n }\n\n var edgeData = new List(['value'], seriesModel);\n edgeData.initData(validEdges, linkNameList);\n beforeLink && beforeLink(nodeData, edgeData);\n linkList({\n mainData: nodeData,\n struct: graph,\n structAttr: 'graph',\n datas: {\n node: nodeData,\n edge: edgeData\n },\n datasAttr: {\n node: 'data',\n edge: 'edgeData'\n }\n }); // Update dataIndex of nodes and edges because invalid edge may be removed\n\n graph.update();\n return graph;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar _sourceType = require(\"../../data/helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _referHelper = require(\"../../model/referHelper\");\n\nvar getCoordSysInfoBySeries = _referHelper.getCoordSysInfoBySeries;\n\nvar Source = require(\"../../data/Source\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/data/Source|Array} source Or raw data.\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object} [opt]\n * @param {string} [opt.generateCoord]\n * @param {boolean} [opt.useEncodeDefaulter]\n */\nfunction createListFromArray(source, seriesModel, opt) {\n opt = opt || {};\n\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n var coordSysName = seriesModel.get('coordinateSystem');\n var registeredCoordSys = CoordinateSystem.get(coordSysName);\n var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n var coordSysDimDefs;\n\n if (coordSysInfo) {\n coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n var dimInfo = {\n name: dim\n };\n var axisModel = coordSysInfo.axisMap.get(dim);\n\n if (axisModel) {\n var axisType = axisModel.get('type');\n dimInfo.type = getDimensionTypeByAxis(axisType); // dimInfo.stackable = isStackable(axisType);\n }\n\n return dimInfo;\n });\n }\n\n if (!coordSysDimDefs) {\n // Get dimensions from registered coordinate system\n coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n }\n\n var dimInfoList = createDimensions(source, {\n coordDimensions: coordSysDimDefs,\n generateCoord: opt.generateCoord,\n encodeDefaulter: opt.useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null\n });\n var firstCategoryDimIndex;\n var hasNameEncode;\n coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n var coordDim = dimInfo.coordDim;\n var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n if (categoryAxisModel) {\n if (firstCategoryDimIndex == null) {\n firstCategoryDimIndex = dimIndex;\n }\n\n dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n }\n\n if (dimInfo.otherDims.itemName != null) {\n hasNameEncode = true;\n }\n });\n\n if (!hasNameEncode && firstCategoryDimIndex != null) {\n dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n }\n\n var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\n var list = new List(dimInfoList, seriesModel);\n list.setCalculationInfo(stackCalculationInfo);\n var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n // Use dataIndex as ordinal value in categoryAxis\n return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n } : null;\n list.hasItemOption = false;\n list.initData(source, null, dimValueGetter);\n return list;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var sampleItem = firstDataNotNull(source.data || []);\n return sampleItem != null && !zrUtil.isArray(getDataItemValue(sampleItem));\n }\n}\n\nfunction firstDataNotNull(data) {\n var i = 0;\n\n while (i < data.length && data[i] == null) {\n i++;\n }\n\n return data[i];\n}\n\nvar _default = createListFromArray;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar List = require(\"../../data/List\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar extend = _util.extend;\nvar isArray = _util.isArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [Usage]:\n * (1)\n * createListSimply(seriesModel, ['value']);\n * (2)\n * createListSimply(seriesModel, {\n * coordDimensions: ['value'],\n * dimensionsCount: 5\n * });\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object|Array.} opt opt or coordDimensions\n * The options in opt, see `echarts/data/helper/createDimensions`\n * @param {Array.} [nameList]\n * @return {module:echarts/data/List}\n */\nfunction _default(seriesModel, opt, nameList) {\n opt = isArray(opt) && {\n coordDimensions: opt\n } || extend({}, opt);\n var source = seriesModel.getSource();\n var dimensionsInfo = createDimensions(source, opt);\n var list = new List(dimensionsInfo, seriesModel);\n list.initData(source, nameList);\n return list;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @return {string} If large mode changed, return string 'reset';\n */\nfunction _default() {\n var inner = makeInner();\n return function (seriesModel) {\n var fields = inner(seriesModel);\n var pipelineContext = seriesModel.pipelineContext;\n var originalLarge = fields.large;\n var originalProgressive = fields.progressiveRender; // FIXME: if the planner works on a filtered series, `pipelineContext` does not\n // exists. See #11611 . Probably we need to modify this structure, see the comment\n // on `performRawSeries` in `Schedular.js`.\n\n var large = fields.large = pipelineContext && pipelineContext.large;\n var progressive = fields.progressiveRender = pipelineContext && pipelineContext.progressiveRender;\n return !!(originalLarge ^ large || originalProgressive ^ progressive) && 'reset';\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n * @property {number} [dataIndex]\n */\necharts.registerAction({\n type: 'focusNodeAdjacency',\n event: 'focusNodeAdjacency',\n update: 'series:focusNodeAdjacency'\n}, function () {});\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n */\n\necharts.registerAction({\n type: 'unfocusNodeAdjacency',\n event: 'unfocusNodeAdjacency',\n update: 'series:unfocusNodeAdjacency'\n}, function () {});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {string} label string. Not null/undefined\n */\nfunction getDefaultLabel(data, dataIndex) {\n var labelDims = data.mapDimension('defaultedLabel', true);\n var len = labelDims.length; // Simple optimization (in lots of cases, label dims length is 1)\n\n if (len === 1) {\n return retrieveRawValue(data, dataIndex, labelDims[0]);\n } else if (len) {\n var vals = [];\n\n for (var i = 0; i < labelDims.length; i++) {\n var val = retrieveRawValue(data, dataIndex, labelDims[i]);\n vals.push(val);\n }\n\n return vals.join(' ');\n }\n}\n\nexports.getDefaultLabel = getDefaultLabel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar KEY_DELIMITER = '-->';\n/**\n * params handler\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {*}\n */\n\nvar getAutoCurvenessParams = function (seriesModel) {\n return seriesModel.get('autoCurveness') || null;\n};\n/**\n * Generate a list of edge curvatures, 20 is the default\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} appendLength\n * @return 20 => [0, -0.2, 0.2, -0.4, 0.4, -0.6, 0.6, -0.8, 0.8, -1, 1, -1.2, 1.2, -1.4, 1.4, -1.6, 1.6, -1.8, 1.8, -2]\n */\n\n\nvar createCurveness = function (seriesModel, appendLength) {\n var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);\n var length = 20;\n var curvenessList = []; // handler the function set\n\n if (typeof autoCurvenessParmas === 'number') {\n length = autoCurvenessParmas;\n } else if (zrUtil.isArray(autoCurvenessParmas)) {\n seriesModel.__curvenessList = autoCurvenessParmas;\n return;\n } // append length\n\n\n if (appendLength > length) {\n length = appendLength;\n } // make sure the length is even\n\n\n var len = length % 2 ? length + 2 : length + 3;\n curvenessList = [];\n\n for (var i = 0; i < len; i++) {\n curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));\n }\n\n seriesModel.__curvenessList = curvenessList;\n};\n/**\n * Create different cache key data in the positive and negative directions, in order to set the curvature later\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {string} key\n */\n\n\nvar getKeyOfEdges = function (n1, n2, seriesModel) {\n var source = [n1.id, n1.dataIndex].join('.');\n var target = [n2.id, n2.dataIndex].join('.');\n return [seriesModel.uid, source, target].join(KEY_DELIMITER);\n};\n/**\n * get opposite key\n * @param {string} key\n * @returns {string}\n */\n\n\nvar getOppositeKey = function (key) {\n var keys = key.split(KEY_DELIMITER);\n return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);\n};\n/**\n * get edgeMap with key\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nvar getEdgeFromMap = function (edge, seriesModel) {\n var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n return seriesModel.__edgeMap[key];\n};\n/**\n * calculate all cases total length\n * @param edge\n * @param seriesModel\n * @returns {number}\n */\n\n\nvar getTotalLengthBetweenNodes = function (edge, seriesModel) {\n var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);\n var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);\n return len + lenV;\n};\n/**\n *\n * @param key\n */\n\n\nvar getEdgeMapLengthWithKey = function (key, seriesModel) {\n var edgeMap = seriesModel.__edgeMap;\n return edgeMap[key] ? edgeMap[key].length : 0;\n};\n/**\n * Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge\n * @see /graph/GraphSeries.js@getInitialData\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nfunction initCurvenessList(seriesModel) {\n if (!getAutoCurvenessParams(seriesModel)) {\n return;\n }\n\n seriesModel.__curvenessList = [];\n seriesModel.__edgeMap = {}; // calc the array of curveness List\n\n createCurveness(seriesModel);\n}\n/**\n * set edgeMap with key\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} index\n */\n\n\nfunction createEdgeMapForCurveness(n1, n2, seriesModel, index) {\n if (!getAutoCurvenessParams(seriesModel)) {\n return;\n }\n\n var key = getKeyOfEdges(n1, n2, seriesModel);\n var edgeMap = seriesModel.__edgeMap;\n var oppositeEdges = edgeMap[getOppositeKey(key)]; // set direction\n\n if (edgeMap[key] && !oppositeEdges) {\n edgeMap[key].isForward = true;\n } else if (oppositeEdges && edgeMap[key]) {\n oppositeEdges.isForward = true;\n edgeMap[key].isForward = false;\n }\n\n edgeMap[key] = edgeMap[key] || [];\n edgeMap[key].push(index);\n}\n/**\n * get curvature for edge\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param index\n */\n\n\nfunction getCurvenessForEdge(edge, seriesModel, index, needReverse) {\n var autoCurvenessParams = getAutoCurvenessParams(seriesModel);\n var isArrayParam = zrUtil.isArray(autoCurvenessParams);\n\n if (!autoCurvenessParams) {\n return null;\n }\n\n var edgeArray = getEdgeFromMap(edge, seriesModel);\n\n if (!edgeArray) {\n return null;\n }\n\n var edgeIndex = -1;\n\n for (var i = 0; i < edgeArray.length; i++) {\n if (edgeArray[i] === index) {\n edgeIndex = i;\n break;\n }\n } // if totalLen is Longer createCurveness\n\n\n var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);\n createCurveness(seriesModel, totalLen);\n edge.lineStyle = edge.lineStyle || {}; // if is opposite edge, must set curvenss to opposite number\n\n var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n var curvenessList = seriesModel.__curvenessList; // if pass array no need parity\n\n var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;\n\n if (!edgeArray.isForward) {\n // the opposite edge show outside\n var oppositeKey = getOppositeKey(curKey);\n var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);\n var resValue = curvenessList[edgeIndex + len + parityCorrection]; // isNeedReverse, simple, force type need reverse the curveness in the junction of the forword and the opposite\n\n if (needReverse) {\n // set as array may make the parity handle with the len of opposite\n if (isArrayParam) {\n if (autoCurvenessParams && autoCurvenessParams[0] === 0) {\n return (len + parityCorrection) % 2 ? resValue : -resValue;\n } else {\n return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;\n }\n } else {\n return (len + parityCorrection) % 2 ? resValue : -resValue;\n }\n } else {\n return curvenessList[edgeIndex + len + parityCorrection];\n }\n } else {\n return curvenessList[parityCorrection + edgeIndex];\n }\n}\n\nexports.initCurvenessList = initCurvenessList;\nexports.createEdgeMapForCurveness = createEdgeMapForCurveness;\nexports.getCurvenessForEdge = getCurvenessForEdge;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {\n if (payload && zrUtil.indexOf(validPayloadTypes, payload.type) >= 0) {\n var root = seriesModel.getData().tree.root;\n var targetNode = payload.targetNode;\n\n if (typeof targetNode === 'string') {\n targetNode = root.getNodeById(targetNode);\n }\n\n if (targetNode && root.contains(targetNode)) {\n return {\n node: targetNode\n };\n }\n\n var targetNodeId = payload.targetNodeId;\n\n if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) {\n return {\n node: targetNode\n };\n }\n }\n} // Not includes the given node at the last item.\n\n\nfunction getPathToRoot(node) {\n var path = [];\n\n while (node) {\n node = node.parentNode;\n node && path.push(node);\n }\n\n return path.reverse();\n}\n\nfunction aboveViewRoot(viewRoot, node) {\n var viewPath = getPathToRoot(viewRoot);\n return zrUtil.indexOf(viewPath, node) >= 0;\n} // From root to the input node (the input node will be included).\n\n\nfunction wrapTreePathInfo(node, seriesModel) {\n var treePathInfo = [];\n\n while (node) {\n var nodeDataIndex = node.dataIndex;\n treePathInfo.push({\n name: node.name,\n dataIndex: nodeDataIndex,\n value: seriesModel.getRawValue(nodeDataIndex)\n });\n node = node.parentNode;\n }\n\n treePathInfo.reverse();\n return treePathInfo;\n}\n\nexports.retrieveTargetInfo = retrieveTargetInfo;\nexports.getPathToRoot = getPathToRoot;\nexports.aboveViewRoot = aboveViewRoot;\nexports.wrapTreePathInfo = wrapTreePathInfo;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar seriesModelMixin = {\n /**\n * @private\n * @type {string}\n */\n _baseAxisDim: null,\n\n /**\n * @override\n */\n getInitialData: function (option, ecModel) {\n // When both types of xAxis and yAxis are 'value', layout is\n // needed to be specified by user. Otherwise, layout can be\n // judged by which axis is category.\n var ordinalMeta;\n var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'));\n var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'));\n var xAxisType = xAxisModel.get('type');\n var yAxisType = yAxisModel.get('type');\n var addOrdinal; // FIXME\n // Consider time axis.\n\n if (xAxisType === 'category') {\n option.layout = 'horizontal';\n ordinalMeta = xAxisModel.getOrdinalMeta();\n addOrdinal = true;\n } else if (yAxisType === 'category') {\n option.layout = 'vertical';\n ordinalMeta = yAxisModel.getOrdinalMeta();\n addOrdinal = true;\n } else {\n option.layout = option.layout || 'horizontal';\n }\n\n var coordDims = ['x', 'y'];\n var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1;\n var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];\n var otherAxisDim = coordDims[1 - baseAxisDimIndex];\n var axisModels = [xAxisModel, yAxisModel];\n var baseAxisType = axisModels[baseAxisDimIndex].get('type');\n var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type');\n var data = option.data; // ??? FIXME make a stage to perform data transfrom.\n // MUST create a new data, consider setOption({}) again.\n\n if (data && addOrdinal) {\n var newOptionData = [];\n zrUtil.each(data, function (item, index) {\n var newItem;\n\n if (item.value && zrUtil.isArray(item.value)) {\n newItem = item.value.slice();\n item.value.unshift(index);\n } else if (zrUtil.isArray(item)) {\n newItem = item.slice();\n item.unshift(index);\n } else {\n newItem = item;\n }\n\n newOptionData.push(newItem);\n });\n option.data = newOptionData;\n }\n\n var defaultValueDimensions = this.defaultValueDimensions;\n var coordDimensions = [{\n name: baseAxisDim,\n type: getDimensionTypeByAxis(baseAxisType),\n ordinalMeta: ordinalMeta,\n otherDims: {\n tooltip: false,\n itemName: 0\n },\n dimsDef: ['base']\n }, {\n name: otherAxisDim,\n type: getDimensionTypeByAxis(otherAxisType),\n dimsDef: defaultValueDimensions.slice()\n }];\n return createListSimply(this, {\n coordDimensions: coordDimensions,\n dimensionsCount: defaultValueDimensions.length + 1,\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)\n });\n },\n\n /**\n * If horizontal, base axis is x, otherwise y.\n * @override\n */\n getBaseAxis: function () {\n var dim = this._baseAxisDim;\n return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis;\n }\n};\nexports.seriesModelMixin = seriesModelMixin;"],"names":["graphic","Line","zrUtil","_symbol","createSymbol","vec2","curveUtil","EffectLine","lineData","idx","seriesScope","Group","call","this","add","createLine","_updateEffectSymbol","effectLineProto","prototype","itemModel","getItemModel","effectModel","getModel","size","get","symbolType","isArray","color","getItemVisual","symbol","childAt","_symbolType","remove","z2","culling","setStyle","getItemStyle","attr","setColor","_symbolScale","_updateEffectAnimation","self","points","getItemLayout","period","loop","constantSpeed","delayExpr","retrieve","count","isDelayFunc","ignore","updateAnimationPoints","getLineLength","_period","_loop","stopAnimation","delay","__t","animator","animate","when","during","updateSymbolPosition","done","start","dist","__p1","__cp1","__p2","updateData","p1","p2","cp1","t","pos","position","lastPos","quadraticAt","quadraticDerivativeAt","tx","ty","rotation","Math","atan2","PI","undefined","__lastT","scaleY","scale","updateLayout","inherits","_default","module","exports","Polyline","EffectPolyline","_lastFrame","_lastFramePercent","effectPolylineProto","_points","accLenArr","len","i","length","push","_offsets","_length","offsets","lastFrame","min","frame","lerp","_graphic","_number","parsePercent","SymbolClz","EFFECT_RIPPLE_NUMBER","normalizeSymbolSize","symbolSize","updateRipplePath","rippleGroup","effectCfg","rippleEffectColor","eachChild","ripplePath","z","zlevel","style","stroke","brushType","fill","EffectSymbol","data","beforeUpdate","getScale","effectSymbolProto","stopEffectAnimation","removeAll","startEffectAnimation","strokeNoScale","silent","effectOffset","rippleScale","animateStyle","opacity","updateEffectAnimation","oldEffectCfg","_effectCfg","DIFFICULT_PROPS","propName","highlight","trigger","downplay","seriesModel","hostModel","traverse","symbolOffset","getShallow","symbolRotate","showEffectOn","off","onEmphasis","onNormal","on","fadeOut","cb","IncrementalDisplayable","lineContain","quadraticContain","LargeLineShape","extendShape","shape","polyline","curveness","segs","buildPath","path","moveTo","k","lineTo","x0","y0","x1","y1","x2","y2","quadraticCurveTo","findDataIndex","x","y","dataIndex","containStroke","LargeLineDraw","group","largeLineProto","isPersistent","_incremental","lineEl","rectHover","cursor","setShape","getLayout","_setCommon","incrementalPrepareUpdate","_clearIncremental","incrementalUpdate","taskParams","addDisplayable","__startIndex","isIncremental","useStyle","getLineStyle","visualColor","getVisual","seriesIndex","e","offsetX","offsetY","incremental","clearDisplaybles","BOOST_SIZE_THRESHOLD","LargeSymbolPath","symbolProxy","softClipShape","symbolProxyShape","ctx","getContext","canBoost","isNaN","contain","width","height","afterBrush","setTransform","fillRect","restoreTransform","w","max","h","LargeSymbolDraw","largeSymbolProto","opt","symbolEl","child","startIndex","endIndex","byteOffset","Float32Array","buffer","end","Array","clipShape","extrudeShadow","vector","symbolUtil","LinePath","round","SYMBOL_CATEGORIES","makeSymbolTypeKey","symbolCategory","name","symbolPath","__specifiedRotation","line","subPixelOptimize","setLinePoints","targetShape","percent","cpx1","cpy1","NaN","updateSymbolAndLabelBeforeLineUpdate","lineGroup","symbolFrom","childOfName","symbolTo","label","invScale","parentNode","parent","__dirty","fromPos","pointAt","toPos","d","sub","normalize","specifiedRotation","tangent","tangentAt","textPosition","textAlign","textVerticalAlign","textOrigin","distance","__labelDistance","distanceX","distanceY","halfPercent","n","cp","dy","dir","__position","__verticalAlign","__textAlign","origin","_createLine","lineProto","linePoints","initProps","Text","lineLabelOriginalOpacity","each","_updateCommonStl","target","updateProps","key","lineStyle","hoverLineStyle","labelModel","hoverLabelModel","hasItemOption","visualOpacity","retrieve3","defaults","hoverStyle","defaultLabelColor","baseText","showLabel","hoverShowLabel","getFormattedLabel","dataType","rawVal","getRawValue","getName","isFinite","normalText","emphasisText","retrieve2","labelStyle","setTextStyle","text","autoColor","textFill","getTextColor","fontStyle","fontWeight","fontSize","fontFamily","setHoverStyle","linePath","dirty","LineGroup","LineDraw","ctor","_ctor","lineDrawProto","doAdd","lineDraw","itemLayout","lineNeedsDraw","el","setItemGraphicEl","doUpdate","oldLineData","newLineData","oldIdx","newIdx","itemEl","getItemGraphicEl","isEffectObject","animators","makeSeriesScope","isPointNaN","pt","pts","_lineData","diff","update","execute","eachItemGraphicEl","_seriesScope","updateIncrementalAndHover","isGroup","useHoverLayer","straightLineProto","bezierCurveProto","BezierCurve","isLine","type","_buildPathLine","_buildPathCurve","_pointAtLine","_pointAtCurve","p","_tangentAtCurve","_createPolyline","polylineProto","_labelHelper","getDefaultLabel","symbolProto","getSymbolSize","slice","driftSymbol","dx","drift","_createSymbol","keepAspect","stopSymbolAnimation","toLastFrame","getSymbolPath","setZ","setDraggable","draggable","isInit","_updateCommon","fadeIn","_seriesModel","normalStyleAccessPath","emphasisStyleAccessPath","normalLabelAccessPath","emphasisLabelAccessPath","highDownOnUpdate","fromState","toState","__symbolOriginalScale","ratio","emphasisOpt","animateTo","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","itemStyle","hoverItemStyle","hoverAnimation","cursorStyle","extend","elStyle","symbolInnerColor","liftZ","z2Origin","__z2Origin","useNameLabel","getLabelDefaultText","setLabelStyle","labelFetcher","labelDataIndex","defaultText","isRectText","isAnimationEnabled","keepLabel","_util","isObject","SymbolDraw","symbolCtor","_symbolCtor","symbolDrawProto","symbolNeedsDraw","point","isIgnore","normalizeUpdateOpt","oldData","_data","SymbolCtor","enableAnimation","createGridClipPath","cartesian","hasAnimation","rect","getArea","isHorizontal","getBaseAxis","lineWidth","floor","clipPath","Rect","createPolarClipPath","polar","sectorArea","Sector","cx","cy","r0","r","startAngle","endAngle","clockwise","createClipPath","coordSys","List","Graph","linkList","createDimensions","CoordinateSystem","createListFromArray","nodes","edges","directed","beforeLink","graph","addNode","id","linkNameList","validEdges","linkCount","link","source","addEdge","nodeData","coordSysCtor","coordDimensions","dimensions","indexOf","concat","dimensionNames","initData","edgeData","mainData","struct","structAttr","datas","node","edge","datasAttr","_sourceType","SOURCE_FORMAT_ORIGINAL","_dimensionHelper","getDimensionTypeByAxis","_model","getDataItemValue","_referHelper","getCoordSysInfoBySeries","Source","_dataStackHelper","enableDataStack","_sourceHelper","makeSeriesEncodeForAxisCoordSys","isInstance","seriesDataToSource","coordSysDimDefs","coordSysName","registeredCoordSys","coordSysInfo","map","coordSysDims","dim","dimInfo","axisModel","axisMap","axisType","getDimensionsInfo","firstCategoryDimIndex","hasNameEncode","dimInfoList","generateCoord","encodeDefaulter","useEncodeDefaulter","curry","dimIndex","coordDim","categoryAxisModel","categoryAxisMap","ordinalMeta","getOrdinalMeta","otherDims","itemName","stackCalculationInfo","list","setCalculationInfo","dimValueGetter","isNeedCompleteOrdinalData","itemOpt","dimName","defaultDimValueGetter","sourceFormat","sampleItem","firstDataNotNull","nameList","getSource","dimensionsInfo","makeInner","inner","fields","pipelineContext","originalLarge","large","originalProgressive","progressiveRender","progressive","echarts","registerAction","event","_dataProvider","retrieveRawValue","labelDims","mapDimension","vals","val","join","KEY_DELIMITER","getAutoCurvenessParams","createCurveness","appendLength","autoCurvenessParmas","curvenessList","__curvenessList","getKeyOfEdges","n1","n2","uid","getOppositeKey","keys","split","getEdgeFromMap","node1","node2","__edgeMap","getTotalLengthBetweenNodes","getEdgeMapLengthWithKey","lenV","edgeMap","initCurvenessList","createEdgeMapForCurveness","index","oppositeEdges","isForward","getCurvenessForEdge","needReverse","autoCurvenessParams","isArrayParam","edgeArray","edgeIndex","totalLen","curKey","parityCorrection","oppositeKey","resValue","retrieveTargetInfo","payload","validPayloadTypes","root","getData","tree","targetNode","getNodeById","contains","targetNodeId","getPathToRoot","reverse","aboveViewRoot","viewRoot","viewPath","wrapTreePathInfo","treePathInfo","nodeDataIndex","value","createListSimply","seriesModelMixin","_baseAxisDim","getInitialData","option","ecModel","addOrdinal","xAxisModel","getComponent","yAxisModel","xAxisType","yAxisType","layout","coordDims","baseAxisDimIndex","baseAxisDim","otherAxisDim","axisModels","baseAxisType","otherAxisType","newOptionData","item","newItem","unshift","defaultValueDimensions","tooltip","dimsDef","dimensionsCount","axis"],"sourceRoot":""}