chunk-vendors-98185b45.680b4590.js.map 111 KB

1
  1. {"version":3,"file":"js/chunk-vendors-98185b45.680b4590.js","mappings":"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","sources":["webpack://app/./node_modules/echarts/lib/chart/line.js","webpack://app/./node_modules/echarts/lib/chart/line/LineSeries.js","webpack://app/./node_modules/echarts/lib/chart/line/LineView.js","webpack://app/./node_modules/echarts/lib/chart/line/helper.js","webpack://app/./node_modules/echarts/lib/chart/line/lineAnimationDiff.js","webpack://app/./node_modules/echarts/lib/chart/line/poly.js","webpack://app/./node_modules/echarts/lib/chart/lines.js","webpack://app/./node_modules/echarts/lib/chart/lines/LinesSeries.js","webpack://app/./node_modules/echarts/lib/chart/lines/LinesView.js","webpack://app/./node_modules/echarts/lib/chart/lines/linesLayout.js","webpack://app/./node_modules/echarts/lib/chart/lines/linesVisual.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 echarts = require(\"../echarts\");\n\nrequire(\"./line/LineSeries\");\n\nrequire(\"./line/LineView\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar layoutPoints = require(\"../layout/points\");\n\nvar dataSample = require(\"../processor/dataSample\");\n\nrequire(\"../component/gridSimple\");\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// In case developer forget to include grid component\necharts.registerVisual(visualSymbol('line', 'circle', 'line'));\necharts.registerLayout(layoutPoints('line')); // Down sample after filter\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));","\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\nvar SeriesModel = require(\"../../model/Series\");\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 _default = SeriesModel.extend({\n type: 'series.line',\n dependencies: ['grid', 'polar'],\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // stack: null\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // polarIndex: 0,\n // If clip the overflow value\n clip: true,\n // cursor: null,\n label: {\n position: 'top'\n },\n // itemStyle: {\n // },\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n // areaStyle: {\n // origin of areaStyle. Valid values:\n // `'auto'/null/undefined`: from axisLine to data\n // `'start'`: from min to data\n // `'end'`: from data to max\n // origin: 'auto'\n // },\n // false, 'start', 'end', 'middle'\n step: false,\n // Disabled if step is true\n smooth: false,\n smoothMonotone: null,\n symbol: 'emptyCircle',\n symbolSize: 4,\n symbolRotate: null,\n showSymbol: true,\n // `false`: follow the label interval strategy.\n // `true`: show all symbols.\n // `'auto'`: If possible, show all symbols, otherwise\n // follow the label interval strategy.\n showAllSymbol: 'auto',\n // Whether to connect break point.\n connectNulls: false,\n // Sampling for large data. Can be: 'average', 'max', 'min', 'sum'.\n sampling: 'none',\n animationEasing: 'linear',\n // Disable progressive\n progressive: 0,\n hoverLayerThreshold: Infinity\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _bbox = require(\"zrender/lib/core/bbox\");\n\nvar fromPoints = _bbox.fromPoints;\n\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar SymbolClz = require(\"../helper/Symbol\");\n\nvar lineAnimationDiff = require(\"./lineAnimationDiff\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar _poly = require(\"./poly\");\n\nvar Polyline = _poly.Polyline;\nvar Polygon = _poly.Polygon;\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar _helper = require(\"./helper\");\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createGridClipPath = _createClipPathFromCoordSys.createGridClipPath;\nvar createPolarClipPath = _createClipPathFromCoordSys.createPolarClipPath;\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// FIXME step not support polar\nfunction isPointsSame(points1, points2) {\n if (points1.length !== points2.length) {\n return;\n }\n\n for (var i = 0; i < points1.length; i++) {\n var p1 = points1[i];\n var p2 = points2[i];\n\n if (p1[0] !== p2[0] || p1[1] !== p2[1]) {\n return;\n }\n }\n\n return true;\n}\n\nfunction getBoundingDiff(points1, points2) {\n var min1 = [];\n var max1 = [];\n var min2 = [];\n var max2 = [];\n fromPoints(points1, min1, max1);\n fromPoints(points2, min2, max2); // Get a max value from each corner of two boundings.\n\n return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\n}\n\nfunction getSmooth(smooth) {\n return typeof smooth === 'number' ? smooth : smooth ? 0.5 : 0;\n}\n/**\n * @param {module:echarts/coord/cartesian/Cartesian2D|module:echarts/coord/polar/Polar} coordSys\n * @param {module:echarts/data/List} data\n * @param {Object} dataCoordInfo\n * @param {Array.<Array.<number>>} points\n */\n\n\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\n if (!dataCoordInfo.valueDim) {\n return [];\n }\n\n var points = [];\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n points.push(getStackedOnPoint(dataCoordInfo, coordSys, data, idx));\n }\n\n return points;\n}\n\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt) {\n var baseAxis = coordSys.getBaseAxis();\n var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n var stepPoints = [];\n\n for (var i = 0; i < points.length - 1; i++) {\n var nextPt = points[i + 1];\n var pt = points[i];\n stepPoints.push(pt);\n var stepPt = [];\n\n switch (stepTurnAt) {\n case 'end':\n stepPt[baseIndex] = nextPt[baseIndex];\n stepPt[1 - baseIndex] = pt[1 - baseIndex]; // default is start\n\n stepPoints.push(stepPt);\n break;\n\n case 'middle':\n // default is start\n var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\n var stepPt2 = [];\n stepPt[baseIndex] = stepPt2[baseIndex] = middle;\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\n stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\n stepPoints.push(stepPt);\n stepPoints.push(stepPt2);\n break;\n\n default:\n stepPt[baseIndex] = pt[baseIndex];\n stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; // default is start\n\n stepPoints.push(stepPt);\n }\n } // Last points\n\n\n points[i] && stepPoints.push(points[i]);\n return stepPoints;\n}\n\nfunction getVisualGradient(data, coordSys) {\n var visualMetaList = data.getVisual('visualMeta');\n\n if (!visualMetaList || !visualMetaList.length || !data.count()) {\n // When data.count() is 0, gradient range can not be calculated.\n return;\n }\n\n if (coordSys.type !== 'cartesian2d') {\n return;\n }\n\n var coordDim;\n var visualMeta;\n\n for (var i = visualMetaList.length - 1; i >= 0; i--) {\n var dimIndex = visualMetaList[i].dimension;\n var dimName = data.dimensions[dimIndex];\n var dimInfo = data.getDimensionInfo(dimName);\n coordDim = dimInfo && dimInfo.coordDim; // Can only be x or y\n\n if (coordDim === 'x' || coordDim === 'y') {\n visualMeta = visualMetaList[i];\n break;\n }\n }\n\n if (!visualMeta) {\n return;\n } // If the area to be rendered is bigger than area defined by LinearGradient,\n // the canvas spec prescribes that the color of the first stop and the last\n // stop should be used. But if two stops are added at offset 0, in effect\n // browsers use the color of the second stop to render area outside\n // LinearGradient. So we can only infinitesimally extend area defined in\n // LinearGradient to render `outerColors`.\n\n\n var axis = coordSys.getAxis(coordDim); // dataToCoor mapping may not be linear, but must be monotonic.\n\n var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n return {\n coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\n color: stop.color\n };\n });\n var stopLen = colorStops.length;\n var outerColors = visualMeta.outerColors.slice();\n\n if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\n colorStops.reverse();\n outerColors.reverse();\n }\n\n var tinyExtent = 10; // Arbitrary value: 10px\n\n var minCoord = colorStops[0].coord - tinyExtent;\n var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\n var coordSpan = maxCoord - minCoord;\n\n if (coordSpan < 1e-3) {\n return 'transparent';\n }\n\n zrUtil.each(colorStops, function (stop) {\n stop.offset = (stop.coord - minCoord) / coordSpan;\n });\n colorStops.push({\n offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\n color: outerColors[1] || 'transparent'\n });\n colorStops.unshift({\n // notice colorStops.length have been changed.\n offset: stopLen ? colorStops[0].offset : 0.5,\n color: outerColors[0] || 'transparent'\n }); // zrUtil.each(colorStops, function (colorStop) {\n // // Make sure each offset has rounded px to avoid not sharp edge\n // colorStop.offset = (Math.round(colorStop.offset * (end - start) + start) - start) / (end - start);\n // });\n\n var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStops, true);\n gradient[coordDim] = minCoord;\n gradient[coordDim + '2'] = maxCoord;\n return gradient;\n}\n\nfunction getIsIgnoreFunc(seriesModel, data, coordSys) {\n var showAllSymbol = seriesModel.get('showAllSymbol');\n var isAuto = showAllSymbol === 'auto';\n\n if (showAllSymbol && !isAuto) {\n return;\n }\n\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n if (!categoryAxis) {\n return;\n } // Note that category label interval strategy might bring some weird effect\n // in some scenario: users may wonder why some of the symbols are not\n // displayed. So we show all symbols as possible as we can.\n\n\n if (isAuto // Simplify the logic, do not determine label overlap here.\n && canShowAllSymbolForCategory(categoryAxis, data)) {\n return;\n } // Otherwise follow the label interval strategy on category axis.\n\n\n var categoryDataDim = data.mapDimension(categoryAxis.dim);\n var labelMap = {};\n zrUtil.each(categoryAxis.getViewLabels(), function (labelItem) {\n labelMap[labelItem.tickValue] = 1;\n });\n return function (dataIndex) {\n return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\n };\n}\n\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\n // In mose cases, line is monotonous on category axis, and the label size\n // is close with each other. So we check the symbol size and some of the\n // label size alone with the category axis to estimate whether all symbol\n // can be shown without overlap.\n var axisExtent = categoryAxis.getExtent();\n var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\n isNaN(availSize) && (availSize = 0); // 0/0 is NaN.\n // Sampling some points, max 5.\n\n var dataLen = data.count();\n var step = Math.max(1, Math.round(dataLen / 5));\n\n for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\n if (SymbolClz.getSymbolSize(data, dataIndex // Only for cartesian, where `isHorizontal` exists.\n )[categoryAxis.isHorizontal() ? 1 : 0] // Empirical number\n * 1.5 > availSize) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction createLineClipPath(coordSys, hasAnimation, seriesModel) {\n if (coordSys.type === 'cartesian2d') {\n var isHorizontal = coordSys.getBaseAxis().isHorizontal();\n var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel); // Expand clip shape to avoid clipping when line value exceeds axis\n\n if (!seriesModel.get('clip', true)) {\n var rectShape = clipPath.shape;\n var expandSize = Math.max(rectShape.width, rectShape.height);\n\n if (isHorizontal) {\n rectShape.y -= expandSize;\n rectShape.height += expandSize * 2;\n } else {\n rectShape.x -= expandSize;\n rectShape.width += expandSize * 2;\n }\n }\n\n return clipPath;\n } else {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n }\n}\n\nvar _default = ChartView.extend({\n type: 'line',\n init: function () {\n var lineGroup = new graphic.Group();\n var symbolDraw = new SymbolDraw();\n this.group.add(symbolDraw.group);\n this._symbolDraw = symbolDraw;\n this._lineGroup = lineGroup;\n },\n render: function (seriesModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var group = this.group;\n var data = seriesModel.getData();\n var lineStyleModel = seriesModel.getModel('lineStyle');\n var areaStyleModel = seriesModel.getModel('areaStyle');\n var points = data.mapArray(data.getItemLayout);\n var isCoordSysPolar = coordSys.type === 'polar';\n var prevCoordSys = this._coordSys;\n var symbolDraw = this._symbolDraw;\n var polyline = this._polyline;\n var polygon = this._polygon;\n var lineGroup = this._lineGroup;\n var hasAnimation = seriesModel.get('animation');\n var isAreaChart = !areaStyleModel.isEmpty();\n var valueOrigin = areaStyleModel.get('origin');\n var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\n var stackedOnPoints = getStackedOnPoints(coordSys, data, dataCoordInfo);\n var showSymbol = seriesModel.get('showSymbol');\n var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys); // Remove temporary symbols\n\n var oldData = this._data;\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n }); // Remove previous created symbols if showSymbol changed to false\n\n if (!showSymbol) {\n symbolDraw.remove();\n }\n\n group.add(lineGroup); // FIXME step not support polar\n\n var step = !isCoordSysPolar && seriesModel.get('step');\n var clipShapeForSymbol;\n\n if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\n clipShapeForSymbol = coordSys.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n // See #7913 and `test/dataZoom-clip.html`.\n\n if (clipShapeForSymbol.width != null) {\n clipShapeForSymbol.x -= 0.1;\n clipShapeForSymbol.y -= 0.1;\n clipShapeForSymbol.width += 0.2;\n clipShapeForSymbol.height += 0.2;\n } else if (clipShapeForSymbol.r0) {\n clipShapeForSymbol.r0 -= 0.5;\n clipShapeForSymbol.r1 += 0.5;\n }\n }\n\n this._clipShapeForSymbol = clipShapeForSymbol; // Initialization animation or coordinate system changed\n\n if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol\n });\n\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step);\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n }\n\n polyline = this._newPolyline(points, coordSys, hasAnimation);\n\n if (isAreaChart) {\n polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n }\n\n lineGroup.setClipPath(createLineClipPath(coordSys, true, seriesModel));\n } else {\n if (isAreaChart && !polygon) {\n // If areaStyle is added\n polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n } else if (polygon && !isAreaChart) {\n // If areaStyle is removed\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n } // Update clipPath\n\n\n lineGroup.setClipPath(createLineClipPath(coordSys, false, seriesModel)); // Always update, or it is wrong in the case turning on legend\n // because points are not changed\n\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol\n }); // Stop symbol animation and sync with line points\n // FIXME performance?\n\n data.eachItemGraphicEl(function (el) {\n el.stopAnimation(true);\n }); // In the case data zoom triggerred refreshing frequently\n // Data may not change if line has a category axis. So it should animate nothing\n\n if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) {\n if (hasAnimation) {\n this._updateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin);\n } else {\n // Not do it in update with animation\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step);\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n }\n\n polyline.setShape({\n points: points\n });\n polygon && polygon.setShape({\n points: points,\n stackedOnPoints: stackedOnPoints\n });\n }\n }\n }\n\n var visualColor = getVisualGradient(data, coordSys) || data.getVisual('color');\n polyline.useStyle(zrUtil.defaults( // Use color in lineStyle first\n lineStyleModel.getLineStyle(), {\n fill: 'none',\n stroke: visualColor,\n lineJoin: 'bevel'\n }));\n var smooth = seriesModel.get('smooth');\n smooth = getSmooth(seriesModel.get('smooth'));\n polyline.setShape({\n smooth: smooth,\n smoothMonotone: seriesModel.get('smoothMonotone'),\n connectNulls: seriesModel.get('connectNulls')\n });\n\n if (polygon) {\n var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n var stackedOnSmooth = 0;\n polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n fill: visualColor,\n opacity: 0.7,\n lineJoin: 'bevel'\n }));\n\n if (stackedOnSeries) {\n stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n }\n\n polygon.setShape({\n smooth: smooth,\n stackedOnSmooth: stackedOnSmooth,\n smoothMonotone: seriesModel.get('smoothMonotone'),\n connectNulls: seriesModel.get('connectNulls')\n });\n }\n\n this._data = data; // Save the coordinate system for transition animation when data changed\n\n this._coordSys = coordSys;\n this._stackedOnPoints = stackedOnPoints;\n this._points = points;\n this._step = step;\n this._valueOrigin = valueOrigin;\n },\n dispose: function () {},\n highlight: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (!symbol) {\n // Create a temporary symbol if it is not exists\n var pt = data.getItemLayout(dataIndex);\n\n if (!pt) {\n // Null data\n return;\n } // fix #11360: should't draw symbol outside clipShapeForSymbol\n\n\n if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(pt[0], pt[1])) {\n return;\n }\n\n symbol = new SymbolClz(data, dataIndex);\n symbol.position = pt;\n symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\n symbol.ignore = isNaN(pt[0]) || isNaN(pt[1]);\n symbol.__temp = true;\n data.setItemGraphicEl(dataIndex, symbol); // Stop scale animation\n\n symbol.stopSymbolAnimation(true);\n this.group.add(symbol);\n }\n\n symbol.highlight();\n } else {\n // Highlight whole series\n ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\n }\n },\n downplay: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n if (dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (symbol) {\n if (symbol.__temp) {\n data.setItemGraphicEl(dataIndex, null);\n this.group.remove(symbol);\n } else {\n symbol.downplay();\n }\n }\n } else {\n // FIXME\n // can not downplay completely.\n // Downplay whole series\n ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\n }\n },\n\n /**\n * @param {module:zrender/container/Group} group\n * @param {Array.<Array.<number>>} points\n * @private\n */\n _newPolyline: function (points) {\n var polyline = this._polyline; // Remove previous created polyline\n\n if (polyline) {\n this._lineGroup.remove(polyline);\n }\n\n polyline = new Polyline({\n shape: {\n points: points\n },\n silent: true,\n z2: 10\n });\n\n this._lineGroup.add(polyline);\n\n this._polyline = polyline;\n return polyline;\n },\n\n /**\n * @param {module:zrender/container/Group} group\n * @param {Array.<Array.<number>>} stackedOnPoints\n * @param {Array.<Array.<number>>} points\n * @private\n */\n _newPolygon: function (points, stackedOnPoints) {\n var polygon = this._polygon; // Remove previous created polygon\n\n if (polygon) {\n this._lineGroup.remove(polygon);\n }\n\n polygon = new Polygon({\n shape: {\n points: points,\n stackedOnPoints: stackedOnPoints\n },\n silent: true\n });\n\n this._lineGroup.add(polygon);\n\n this._polygon = polygon;\n return polygon;\n },\n\n /**\n * @private\n */\n // FIXME Two value axis\n _updateAnimation: function (data, stackedOnPoints, coordSys, api, step, valueOrigin) {\n var polyline = this._polyline;\n var polygon = this._polygon;\n var seriesModel = data.hostModel;\n var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\n var current = diff.current;\n var stackedOnCurrent = diff.stackedOnCurrent;\n var next = diff.next;\n var stackedOnNext = diff.stackedOnNext;\n\n if (step) {\n // TODO If stacked series is not step\n current = turnPointsIntoStep(diff.current, coordSys, step);\n stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\n next = turnPointsIntoStep(diff.next, coordSys, step);\n stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\n } // Don't apply animation if diff is large.\n // For better result and avoid memory explosion problems like\n // https://github.com/apache/incubator-echarts/issues/12229\n\n\n if (getBoundingDiff(current, next) > 3000 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000) {\n polyline.setShape({\n points: next\n });\n\n if (polygon) {\n polygon.setShape({\n points: next,\n stackedOnPoints: stackedOnNext\n });\n }\n\n return;\n } // `diff.current` is subset of `current` (which should be ensured by\n // turnPointsIntoStep), so points in `__points` can be updated when\n // points in `current` are update during animation.\n\n\n polyline.shape.__points = diff.current;\n polyline.shape.points = current;\n graphic.updateProps(polyline, {\n shape: {\n points: next\n }\n }, seriesModel);\n\n if (polygon) {\n polygon.setShape({\n points: current,\n stackedOnPoints: stackedOnCurrent\n });\n graphic.updateProps(polygon, {\n shape: {\n points: next,\n stackedOnPoints: stackedOnNext\n }\n }, seriesModel);\n }\n\n var updatedDataInfo = [];\n var diffStatus = diff.status;\n\n for (var i = 0; i < diffStatus.length; i++) {\n var cmd = diffStatus[i].cmd;\n\n if (cmd === '=') {\n var el = data.getItemGraphicEl(diffStatus[i].idx1);\n\n if (el) {\n updatedDataInfo.push({\n el: el,\n ptIdx: i // Index of points\n\n });\n }\n }\n }\n\n if (polyline.animators && polyline.animators.length) {\n polyline.animators[0].during(function () {\n for (var i = 0; i < updatedDataInfo.length; i++) {\n var el = updatedDataInfo[i].el;\n el.attr('position', polyline.shape.__points[updatedDataInfo[i].ptIdx]);\n }\n });\n }\n },\n remove: function (ecModel) {\n var group = this.group;\n var oldData = this._data;\n\n this._lineGroup.removeAll();\n\n this._symbolDraw.remove(true); // Remove temporary created elements when highlighting\n\n\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n });\n this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null;\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 _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\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 {Object} coordSys\n * @param {module:echarts/data/List} data\n * @param {string} valueOrigin lineSeries.option.areaStyle.origin\n */\nfunction prepareDataCoordInfo(coordSys, data, valueOrigin) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var valueStart = getValueStart(valueAxis, valueOrigin);\n var baseAxisDim = baseAxis.dim;\n var valueAxisDim = valueAxis.dim;\n var valueDim = data.mapDimension(valueAxisDim);\n var baseDim = data.mapDimension(baseAxisDim);\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n var dims = map(coordSys.dimensions, function (coordDim) {\n return data.mapDimension(coordDim);\n });\n var stacked;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (stacked |= isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n // jshint ignore:line\n dims[0] = stackResultDim;\n }\n\n if (stacked |= isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n // jshint ignore:line\n dims[1] = stackResultDim;\n }\n\n return {\n dataDimsForPoint: dims,\n valueStart: valueStart,\n valueAxisDim: valueAxisDim,\n baseAxisDim: baseAxisDim,\n stacked: !!stacked,\n valueDim: valueDim,\n baseDim: baseDim,\n baseDataOffset: baseDataOffset,\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\n };\n}\n\nfunction getValueStart(valueAxis, valueOrigin) {\n var valueStart = 0;\n var extent = valueAxis.scale.getExtent();\n\n if (valueOrigin === 'start') {\n valueStart = extent[0];\n } else if (valueOrigin === 'end') {\n valueStart = extent[1];\n } // auto\n else {\n // Both positive\n if (extent[0] > 0) {\n valueStart = extent[0];\n } // Both negative\n else if (extent[1] < 0) {\n valueStart = extent[1];\n } // If is one positive, and one negative, onZero shall be true\n\n }\n\n return valueStart;\n}\n\nfunction getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\n var value = NaN;\n\n if (dataCoordInfo.stacked) {\n value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\n }\n\n if (isNaN(value)) {\n value = dataCoordInfo.valueStart;\n }\n\n var baseDataOffset = dataCoordInfo.baseDataOffset;\n var stackedData = [];\n stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\n stackedData[1 - baseDataOffset] = value;\n return coordSys.dataToPoint(stackedData);\n}\n\nexports.prepareDataCoordInfo = prepareDataCoordInfo;\nexports.getStackedOnPoint = getStackedOnPoint;","\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 _helper = require(\"./helper\");\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\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// var arrayDiff = require('zrender/src/core/arrayDiff');\n// 'zrender/src/core/arrayDiff' has been used before, but it did\n// not do well in performance when roam with fixed dataZoom window.\n// function convertToIntId(newIdList, oldIdList) {\n// // Generate int id instead of string id.\n// // Compare string maybe slow in score function of arrDiff\n// // Assume id in idList are all unique\n// var idIndicesMap = {};\n// var idx = 0;\n// for (var i = 0; i < newIdList.length; i++) {\n// idIndicesMap[newIdList[i]] = idx;\n// newIdList[i] = idx++;\n// }\n// for (var i = 0; i < oldIdList.length; i++) {\n// var oldId = oldIdList[i];\n// // Same with newIdList\n// if (idIndicesMap[oldId]) {\n// oldIdList[i] = idIndicesMap[oldId];\n// }\n// else {\n// oldIdList[i] = idx++;\n// }\n// }\n// }\nfunction diffData(oldData, newData) {\n var diffResult = [];\n newData.diff(oldData).add(function (idx) {\n diffResult.push({\n cmd: '+',\n idx: idx\n });\n }).update(function (newIdx, oldIdx) {\n diffResult.push({\n cmd: '=',\n idx: oldIdx,\n idx1: newIdx\n });\n }).remove(function (idx) {\n diffResult.push({\n cmd: '-',\n idx: idx\n });\n }).execute();\n return diffResult;\n}\n\nfunction _default(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\n var diff = diffData(oldData, newData); // var newIdList = newData.mapArray(newData.getId);\n // var oldIdList = oldData.mapArray(oldData.getId);\n // convertToIntId(newIdList, oldIdList);\n // // FIXME One data ?\n // diff = arrayDiff(oldIdList, newIdList);\n\n var currPoints = [];\n var nextPoints = []; // Points for stacking base line\n\n var currStackedPoints = [];\n var nextStackedPoints = [];\n var status = [];\n var sortedIndices = [];\n var rawIndices = [];\n var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\n var oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\n\n for (var i = 0; i < diff.length; i++) {\n var diffItem = diff[i];\n var pointAdded = true; // FIXME, animation is not so perfect when dataZoom window moves fast\n // Which is in case remvoing or add more than one data in the tail or head\n\n switch (diffItem.cmd) {\n case '=':\n var currentPt = oldData.getItemLayout(diffItem.idx);\n var nextPt = newData.getItemLayout(diffItem.idx1); // If previous data is NaN, use next point directly\n\n if (isNaN(currentPt[0]) || isNaN(currentPt[1])) {\n currentPt = nextPt.slice();\n }\n\n currPoints.push(currentPt);\n nextPoints.push(nextPt);\n currStackedPoints.push(oldStackedOnPoints[diffItem.idx]);\n nextStackedPoints.push(newStackedOnPoints[diffItem.idx1]);\n rawIndices.push(newData.getRawIndex(diffItem.idx1));\n break;\n\n case '+':\n var idx = diffItem.idx;\n currPoints.push(oldCoordSys.dataToPoint([newData.get(newDataOldCoordInfo.dataDimsForPoint[0], idx), newData.get(newDataOldCoordInfo.dataDimsForPoint[1], idx)]));\n nextPoints.push(newData.getItemLayout(idx).slice());\n currStackedPoints.push(getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, idx));\n nextStackedPoints.push(newStackedOnPoints[idx]);\n rawIndices.push(newData.getRawIndex(idx));\n break;\n\n case '-':\n var idx = diffItem.idx;\n var rawIndex = oldData.getRawIndex(idx); // Data is replaced. In the case of dynamic data queue\n // FIXME FIXME FIXME\n\n if (rawIndex !== idx) {\n currPoints.push(oldData.getItemLayout(idx));\n nextPoints.push(newCoordSys.dataToPoint([oldData.get(oldDataNewCoordInfo.dataDimsForPoint[0], idx), oldData.get(oldDataNewCoordInfo.dataDimsForPoint[1], idx)]));\n currStackedPoints.push(oldStackedOnPoints[idx]);\n nextStackedPoints.push(getStackedOnPoint(oldDataNewCoordInfo, newCoordSys, oldData, idx));\n rawIndices.push(rawIndex);\n } else {\n pointAdded = false;\n }\n\n } // Original indices\n\n\n if (pointAdded) {\n status.push(diffItem);\n sortedIndices.push(sortedIndices.length);\n }\n } // Diff result may be crossed if all items are changed\n // Sort by data index\n\n\n sortedIndices.sort(function (a, b) {\n return rawIndices[a] - rawIndices[b];\n });\n var sortedCurrPoints = [];\n var sortedNextPoints = [];\n var sortedCurrStackedPoints = [];\n var sortedNextStackedPoints = [];\n var sortedStatus = [];\n\n for (var i = 0; i < sortedIndices.length; i++) {\n var idx = sortedIndices[i];\n sortedCurrPoints[i] = currPoints[idx];\n sortedNextPoints[i] = nextPoints[idx];\n sortedCurrStackedPoints[i] = currStackedPoints[idx];\n sortedNextStackedPoints[i] = nextStackedPoints[idx];\n sortedStatus[i] = status[idx];\n }\n\n return {\n current: sortedCurrPoints,\n next: sortedNextPoints,\n stackedOnCurrent: sortedCurrStackedPoints,\n stackedOnNext: sortedNextStackedPoints,\n status: sortedStatus\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 Path = require(\"zrender/lib/graphic/Path\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar fixClipWithShadow = require(\"zrender/lib/graphic/helper/fixClipWithShadow\");\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// Poly path support NaN point\nvar vec2Min = vec2.min;\nvar vec2Max = vec2.max;\nvar scaleAndAdd = vec2.scaleAndAdd;\nvar v2Copy = vec2.copy; // Temporary variable\n\nvar v = [];\nvar cp0 = [];\nvar cp1 = [];\n\nfunction isPointNull(p) {\n return isNaN(p[0]) || isNaN(p[1]);\n}\n\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n // if (smoothMonotone == null) {\n // if (isMono(points, 'x')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'x', connectNulls);\n // }\n // else if (isMono(points, 'y')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'y', connectNulls);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n // }\n // else if (smoothMonotone !== 'none' && isMono(points, smoothMonotone)) {\n // return drawMono.apply(this, arguments);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n if (smoothMonotone === 'none' || !smoothMonotone) {\n return drawNonMono.apply(this, arguments);\n } else {\n return drawMono.apply(this, arguments);\n }\n}\n/**\n * Check if points is in monotone.\n *\n * @param {number[][]} points Array of points which is in [x, y] form\n * @param {string} smoothMonotone 'x', 'y', or 'none', stating for which\n * dimension that is checking.\n * If is 'none', `drawNonMono` should be\n * called.\n * If is undefined, either being monotone\n * in 'x' or 'y' will call `drawMono`.\n */\n// function isMono(points, smoothMonotone) {\n// if (points.length <= 1) {\n// return true;\n// }\n// var dim = smoothMonotone === 'x' ? 0 : 1;\n// var last = points[0][dim];\n// var lastDiff = 0;\n// for (var i = 1; i < points.length; ++i) {\n// var diff = points[i][dim] - last;\n// if (!isNaN(diff) && !isNaN(lastDiff)\n// && diff !== 0 && lastDiff !== 0\n// && ((diff >= 0) !== (lastDiff >= 0))\n// ) {\n// return false;\n// }\n// if (!isNaN(diff) && diff !== 0) {\n// lastDiff = diff;\n// last = points[i][dim];\n// }\n// }\n// return true;\n// }\n\n/**\n * Draw smoothed line in monotone, in which only vertical or horizontal bezier\n * control points will be used. This should be used when points are monotone\n * either in x or y dimension.\n */\n\n\nfunction drawMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n } else {\n if (smooth > 0) {\n var prevP = points[prevIdx];\n var dim = smoothMonotone === 'y' ? 1 : 0; // Length of control point to p, either in x or y, but not both\n\n var ctrlLen = (p[dim] - prevP[dim]) * smooth;\n v2Copy(cp0, prevP);\n cp0[dim] = prevP[dim] + ctrlLen;\n v2Copy(cp1, p);\n cp1[dim] = p[dim] - ctrlLen;\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n/**\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\n * situations. This should be used when points are non-monotone neither in x or\n * y dimension.\n */\n\n\nfunction drawNonMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n v2Copy(cp0, p);\n } else {\n if (smooth > 0) {\n var nextIdx = idx + dir;\n var nextP = points[nextIdx];\n\n if (connectNulls) {\n // Find next point not null\n while (nextP && isPointNull(points[nextIdx])) {\n nextIdx += dir;\n nextP = points[nextIdx];\n }\n }\n\n var ratioNextSeg = 0.5;\n var prevP = points[prevIdx];\n var nextP = points[nextIdx]; // Last point\n\n if (!nextP || isPointNull(nextP)) {\n v2Copy(cp1, p);\n } else {\n // If next data is null in not connect case\n if (isPointNull(nextP) && !connectNulls) {\n nextP = p;\n }\n\n vec2.sub(v, nextP, prevP);\n var lenPrevSeg;\n var lenNextSeg;\n\n if (smoothMonotone === 'x' || smoothMonotone === 'y') {\n var dim = smoothMonotone === 'x' ? 0 : 1;\n lenPrevSeg = Math.abs(p[dim] - prevP[dim]);\n lenNextSeg = Math.abs(p[dim] - nextP[dim]);\n } else {\n lenPrevSeg = vec2.dist(p, prevP);\n lenNextSeg = vec2.dist(p, nextP);\n } // Use ratio of seg length\n\n\n ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n scaleAndAdd(cp1, p, v, -smooth * (1 - ratioNextSeg));\n } // Smooth constraint\n\n\n vec2Min(cp0, cp0, smoothMax);\n vec2Max(cp0, cp0, smoothMin);\n vec2Min(cp1, cp1, smoothMax);\n vec2Max(cp1, cp1, smoothMin);\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]); // cp0 of next segment\n\n scaleAndAdd(cp0, p, v, smooth * ratioNextSeg);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n\nfunction getBoundingBox(points, smoothConstraint) {\n var ptMin = [Infinity, Infinity];\n var ptMax = [-Infinity, -Infinity];\n\n if (smoothConstraint) {\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n\n if (pt[0] < ptMin[0]) {\n ptMin[0] = pt[0];\n }\n\n if (pt[1] < ptMin[1]) {\n ptMin[1] = pt[1];\n }\n\n if (pt[0] > ptMax[0]) {\n ptMax[0] = pt[0];\n }\n\n if (pt[1] > ptMax[1]) {\n ptMax[1] = pt[1];\n }\n }\n }\n\n return {\n min: smoothConstraint ? ptMin : ptMax,\n max: smoothConstraint ? ptMax : ptMin\n };\n}\n\nvar Polyline = Path.extend({\n type: 'ec-polyline',\n shape: {\n points: [],\n smooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n style: {\n fill: null,\n stroke: '#000'\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var i = 0;\n var len = points.length;\n var result = getBoundingBox(points, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n i += drawSegment(ctx, points, i, len, len, 1, result.min, result.max, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n }\n }\n});\nvar Polygon = Path.extend({\n type: 'ec-polygon',\n shape: {\n points: [],\n // Offset between stacked base points and points\n stackedOnPoints: [],\n smooth: 0,\n stackedOnSmooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var stackedOnPoints = shape.stackedOnPoints;\n var i = 0;\n var len = points.length;\n var smoothMonotone = shape.smoothMonotone;\n var bbox = getBoundingBox(points, shape.smoothConstraint);\n var stackedOnBBox = getBoundingBox(stackedOnPoints, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n var k = drawSegment(ctx, points, i, len, len, 1, bbox.min, bbox.max, shape.smooth, smoothMonotone, shape.connectNulls);\n drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, stackedOnBBox.min, stackedOnBBox.max, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n i += k + 1;\n ctx.closePath();\n }\n }\n});\nexports.Polyline = Polyline;\nexports.Polygon = Polygon;","\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\nrequire(\"./lines/LinesSeries\");\n\nrequire(\"./lines/LinesView\");\n\nvar linesLayout = require(\"./lines/linesLayout\");\n\nvar linesVisual = require(\"./lines/linesVisual\");\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*/\necharts.registerLayout(linesLayout);\necharts.registerVisual(linesVisual);","\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar List = require(\"../../data/List\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar concatArray = _util.concatArray;\nvar mergeAll = _util.mergeAll;\nvar map = _util.map;\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\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 Uint32Array, Float64Array, Float32Array */\nvar Uint32Arr = typeof Uint32Array === 'undefined' ? Array : Uint32Array;\nvar Float64Arr = typeof Float64Array === 'undefined' ? Array : Float64Array;\n\nfunction compatEc2(seriesOpt) {\n var data = seriesOpt.data;\n\n if (data && data[0] && data[0][0] && data[0][0].coord) {\n seriesOpt.data = map(data, function (itemOpt) {\n var coords = [itemOpt[0].coord, itemOpt[1].coord];\n var target = {\n coords: coords\n };\n\n if (itemOpt[0].name) {\n target.fromName = itemOpt[0].name;\n }\n\n if (itemOpt[1].name) {\n target.toName = itemOpt[1].name;\n }\n\n return mergeAll([target, itemOpt[0], itemOpt[1]]);\n });\n }\n}\n\nvar LinesSeries = SeriesModel.extend({\n type: 'series.lines',\n dependencies: ['grid', 'polar'],\n visualColorAccessPath: 'lineStyle.color',\n init: function (option) {\n // The input data may be null/undefined.\n option.data = option.data || []; // Not using preprocessor because mergeOption may not have series.type\n\n compatEc2(option);\n\n var result = this._processFlatCoordsArray(option.data);\n\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n\n if (result.flatCoords) {\n option.data = new Float32Array(result.count);\n }\n\n LinesSeries.superApply(this, 'init', arguments);\n },\n mergeOption: function (option) {\n // The input data may be null/undefined.\n option.data = option.data || [];\n compatEc2(option);\n\n if (option.data) {\n // Only update when have option data to merge.\n var result = this._processFlatCoordsArray(option.data);\n\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n\n if (result.flatCoords) {\n option.data = new Float32Array(result.count);\n }\n }\n\n LinesSeries.superApply(this, 'mergeOption', arguments);\n },\n appendData: function (params) {\n var result = this._processFlatCoordsArray(params.data);\n\n if (result.flatCoords) {\n if (!this._flatCoords) {\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n } else {\n this._flatCoords = concatArray(this._flatCoords, result.flatCoords);\n this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);\n }\n\n params.data = new Float32Array(result.count);\n }\n\n this.getRawData().appendData(params.data);\n },\n _getCoordsFromItemModel: function (idx) {\n var itemModel = this.getData().getItemModel(idx);\n var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow('coords');\n return coords;\n },\n getLineCoordsCount: function (idx) {\n if (this._flatCoordsOffset) {\n return this._flatCoordsOffset[idx * 2 + 1];\n } else {\n return this._getCoordsFromItemModel(idx).length;\n }\n },\n getLineCoords: function (idx, out) {\n if (this._flatCoordsOffset) {\n var offset = this._flatCoordsOffset[idx * 2];\n var len = this._flatCoordsOffset[idx * 2 + 1];\n\n for (var i = 0; i < len; i++) {\n out[i] = out[i] || [];\n out[i][0] = this._flatCoords[offset + i * 2];\n out[i][1] = this._flatCoords[offset + i * 2 + 1];\n }\n\n return len;\n } else {\n var coords = this._getCoordsFromItemModel(idx);\n\n for (var i = 0; i < coords.length; i++) {\n out[i] = out[i] || [];\n out[i][0] = coords[i][0];\n out[i][1] = coords[i][1];\n }\n\n return coords.length;\n }\n },\n _processFlatCoordsArray: function (data) {\n var startOffset = 0;\n\n if (this._flatCoords) {\n startOffset = this._flatCoords.length;\n } // Stored as a typed array. In format\n // Points Count(2) | x | y | x | y | Points Count(3) | x | y | x | y | x | y |\n\n\n if (typeof data[0] === 'number') {\n var len = data.length; // Store offset and len of each segment\n\n var coordsOffsetAndLenStorage = new Uint32Arr(len);\n var coordsStorage = new Float64Arr(len);\n var coordsCursor = 0;\n var offsetCursor = 0;\n var dataCount = 0;\n\n for (var i = 0; i < len;) {\n dataCount++;\n var count = data[i++]; // Offset\n\n coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset; // Len\n\n coordsOffsetAndLenStorage[offsetCursor++] = count;\n\n for (var k = 0; k < count; k++) {\n var x = data[i++];\n var y = data[i++];\n coordsStorage[coordsCursor++] = x;\n coordsStorage[coordsCursor++] = y;\n\n if (i > len) {}\n }\n }\n\n return {\n flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),\n flatCoords: coordsStorage,\n count: dataCount\n };\n }\n\n return {\n flatCoordsOffset: null,\n flatCoords: null,\n count: data.length\n };\n },\n getInitialData: function (option, ecModel) {\n var lineData = new List(['value'], this);\n lineData.hasItemOption = false;\n lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) {\n // dataItem is simply coords\n if (dataItem instanceof Array) {\n return NaN;\n } else {\n lineData.hasItemOption = true;\n var value = dataItem.value;\n\n if (value != null) {\n return value instanceof Array ? value[dimIndex] : value;\n }\n }\n });\n return lineData;\n },\n formatTooltip: function (dataIndex) {\n var data = this.getData();\n var itemModel = data.getItemModel(dataIndex);\n var name = itemModel.get('name');\n\n if (name) {\n return name;\n }\n\n var fromName = itemModel.get('fromName');\n var toName = itemModel.get('toName');\n var html = [];\n fromName != null && html.push(fromName);\n toName != null && html.push(toName);\n return encodeHTML(html.join(' > '));\n },\n preventIncremental: function () {\n return !!this.get('effect.show');\n },\n getProgressive: function () {\n var progressive = this.option.progressive;\n\n if (progressive == null) {\n return this.option.large ? 1e4 : this.get('progressive');\n }\n\n return progressive;\n },\n getProgressiveThreshold: function () {\n var progressiveThreshold = this.option.progressiveThreshold;\n\n if (progressiveThreshold == null) {\n return this.option.large ? 2e4 : this.get('progressiveThreshold');\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n coordinateSystem: 'geo',\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n hoverAnimation: true,\n // Cartesian coordinate system\n xAxisIndex: 0,\n yAxisIndex: 0,\n symbol: ['none', 'none'],\n symbolSize: [10, 10],\n // Geo coordinate system\n geoIndex: 0,\n effect: {\n show: false,\n period: 4,\n // Animation delay. support callback\n // delay: 0,\n // If move with constant speed px/sec\n // period will be ignored if this property is > 0,\n constantSpeed: 0,\n symbol: 'circle',\n symbolSize: 3,\n loop: true,\n // Length of trail, 0 - 1\n trailLength: 0.2 // Same with lineStyle.color\n // color\n\n },\n large: false,\n // Available when large is true\n largeThreshold: 2000,\n // If lines are polyline\n // polyline not support curveness, label, animation\n polyline: false,\n // If clip the overflow.\n // Available when coordinateSystem is cartesian or polar.\n clip: true,\n label: {\n show: false,\n position: 'end' // distance: 5,\n // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n\n },\n lineStyle: {\n opacity: 0.5\n }\n }\n});\nvar _default = LinesSeries;\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar LineDraw = require(\"../helper/LineDraw\");\n\nvar EffectLine = require(\"../helper/EffectLine\");\n\nvar Line = require(\"../helper/Line\");\n\nvar Polyline = require(\"../helper/Polyline\");\n\nvar EffectPolyline = require(\"../helper/EffectPolyline\");\n\nvar LargeLineDraw = require(\"../helper/LargeLineDraw\");\n\nvar linesLayout = require(\"./linesLayout\");\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\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 _default = echarts.extendChartView({\n type: 'lines',\n init: function () {},\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var lineDraw = this._updateLineDraw(data, seriesModel);\n\n var zlevel = seriesModel.get('zlevel');\n var trailLength = seriesModel.get('effect.trailLength');\n var zr = api.getZr(); // Avoid the drag cause ghost shadow\n // FIXME Better way ?\n // SVG doesn't support\n\n var isSvg = zr.painter.getType() === 'svg';\n\n if (!isSvg) {\n zr.painter.getLayer(zlevel).clear(true);\n } // Config layer with motion blur\n\n\n if (this._lastZlevel != null && !isSvg) {\n zr.configLayer(this._lastZlevel, {\n motionBlur: false\n });\n }\n\n if (this._showEffect(seriesModel) && trailLength) {\n if (!isSvg) {\n zr.configLayer(zlevel, {\n motionBlur: true,\n lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)\n });\n }\n }\n\n lineDraw.updateData(data);\n var clipPath = seriesModel.get('clip', true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n\n this._lastZlevel = zlevel;\n this._finished = true;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var lineDraw = this._updateLineDraw(data, seriesModel);\n\n lineDraw.incrementalPrepareUpdate(data);\n\n this._clearLayer(api);\n\n this._finished = false;\n },\n incrementalRender: function (taskParams, seriesModel, ecModel) {\n this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());\n\n this._finished = taskParams.end === seriesModel.getData().count();\n },\n updateTransform: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var pipelineContext = seriesModel.pipelineContext;\n\n if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) {\n // TODO Don't have to do update in large mode. Only do it when there are millions of data.\n return {\n update: true\n };\n } else {\n // TODO Use same logic with ScatterView.\n // Manually update layout\n var res = linesLayout.reset(seriesModel);\n\n if (res.progress) {\n res.progress({\n start: 0,\n end: data.count()\n }, data);\n }\n\n this._lineDraw.updateLayout();\n\n this._clearLayer(api);\n }\n },\n _updateLineDraw: function (data, seriesModel) {\n var lineDraw = this._lineDraw;\n\n var hasEffect = this._showEffect(seriesModel);\n\n var isPolyline = !!seriesModel.get('polyline');\n var pipelineContext = seriesModel.pipelineContext;\n var isLargeDraw = pipelineContext.large;\n\n if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) {\n if (lineDraw) {\n lineDraw.remove();\n }\n\n lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw() : new LineDraw(isPolyline ? hasEffect ? EffectPolyline : Polyline : hasEffect ? EffectLine : Line);\n this._hasEffet = hasEffect;\n this._isPolyline = isPolyline;\n this._isLargeDraw = isLargeDraw;\n this.group.removeAll();\n }\n\n this.group.add(lineDraw.group);\n return lineDraw;\n },\n _showEffect: function (seriesModel) {\n return !!seriesModel.get('effect.show');\n },\n _clearLayer: function (api) {\n // Not use motion when dragging or zooming\n var zr = api.getZr();\n var isSvg = zr.painter.getType() === 'svg';\n\n if (!isSvg && this._lastZlevel != null) {\n zr.painter.getLayer(this._lastZlevel).clear(true);\n }\n },\n remove: function (ecModel, api) {\n this._lineDraw && this._lineDraw.remove();\n this._lineDraw = null; // Clear motion when lineDraw is removed\n\n this._clearLayer(api);\n },\n dispose: function () {}\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 createRenderPlanner = require(\"../helper/createRenderPlanner\");\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 */\nvar _default = {\n seriesType: 'lines',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var isPolyline = seriesModel.get('polyline');\n var isLarge = seriesModel.pipelineContext.large;\n\n function progress(params, lineData) {\n var lineCoords = [];\n\n if (isLarge) {\n var points;\n var segCount = params.end - params.start;\n\n if (isPolyline) {\n var totalCoordsCount = 0;\n\n for (var i = params.start; i < params.end; i++) {\n totalCoordsCount += seriesModel.getLineCoordsCount(i);\n }\n\n points = new Float32Array(segCount + totalCoordsCount * 2);\n } else {\n points = new Float32Array(segCount * 4);\n }\n\n var offset = 0;\n var pt = [];\n\n for (var i = params.start; i < params.end; i++) {\n var len = seriesModel.getLineCoords(i, lineCoords);\n\n if (isPolyline) {\n points[offset++] = len;\n }\n\n for (var k = 0; k < len; k++) {\n pt = coordSys.dataToPoint(lineCoords[k], false, pt);\n points[offset++] = pt[0];\n points[offset++] = pt[1];\n }\n }\n\n lineData.setLayout('linesPoints', points);\n } else {\n for (var i = params.start; i < params.end; i++) {\n var itemModel = lineData.getItemModel(i);\n var len = seriesModel.getLineCoords(i, lineCoords);\n var pts = [];\n\n if (isPolyline) {\n for (var j = 0; j < len; j++) {\n pts.push(coordSys.dataToPoint(lineCoords[j]));\n }\n } else {\n pts[0] = coordSys.dataToPoint(lineCoords[0]);\n pts[1] = coordSys.dataToPoint(lineCoords[1]);\n var curveness = itemModel.get('lineStyle.curveness');\n\n if (+curveness) {\n pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness];\n }\n }\n\n lineData.setItemLayout(i, pts);\n }\n }\n }\n\n return {\n progress: progress\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\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 normalize(a) {\n if (!(a instanceof Array)) {\n a = [a, a];\n }\n\n return a;\n}\n\nvar opacityQuery = 'lineStyle.opacity'.split('.');\nvar _default = {\n seriesType: 'lines',\n reset: function (seriesModel, ecModel, api) {\n var symbolType = normalize(seriesModel.get('symbol'));\n var symbolSize = normalize(seriesModel.get('symbolSize'));\n var data = seriesModel.getData();\n data.setVisual('fromSymbol', symbolType && symbolType[0]);\n data.setVisual('toSymbol', symbolType && symbolType[1]);\n data.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n data.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n data.setVisual('opacity', seriesModel.get(opacityQuery));\n\n function dataEach(data, idx) {\n var itemModel = data.getItemModel(idx);\n var symbolType = normalize(itemModel.getShallow('symbol', true));\n var symbolSize = normalize(itemModel.getShallow('symbolSize', true));\n var opacity = itemModel.get(opacityQuery);\n symbolType[0] && data.setItemVisual(idx, 'fromSymbol', symbolType[0]);\n symbolType[1] && data.setItemVisual(idx, 'toSymbol', symbolType[1]);\n symbolSize[0] && data.setItemVisual(idx, 'fromSymbolSize', symbolSize[0]);\n symbolSize[1] && data.setItemVisual(idx, 'toSymbolSize', symbolSize[1]);\n data.setItemVisual(idx, 'opacity', opacity);\n }\n\n return {\n dataEach: data.hasItemOption ? dataEach : null\n };\n }\n};\nmodule.exports = _default;"],"names":["echarts","visualSymbol","layoutPoints","dataSample","registerVisual","registerLayout","registerProcessor","PRIORITY","PROCESSOR","STATISTIC","_config","createListFromArray","__DEV__","SeriesModel","_default","extend","type","dependencies","getInitialData","option","ecModel","this","getSource","useEncodeDefaulter","defaultOption","zlevel","z","coordinateSystem","legendHoverLink","hoverAnimation","clip","label","position","lineStyle","width","step","smooth","smoothMonotone","symbol","symbolSize","symbolRotate","showSymbol","showAllSymbol","connectNulls","sampling","animationEasing","progressive","hoverLayerThreshold","Infinity","module","exports","zrUtil","_bbox","fromPoints","SymbolDraw","SymbolClz","lineAnimationDiff","graphic","modelUtil","_poly","Polyline","Polygon","ChartView","_helper","prepareDataCoordInfo","getStackedOnPoint","_createClipPathFromCoordSys","createGridClipPath","createPolarClipPath","isPointsSame","points1","points2","length","i","p1","p2","getBoundingDiff","min1","max1","min2","max2","Math","max","abs","getSmooth","getStackedOnPoints","coordSys","data","dataCoordInfo","valueDim","points","idx","len","count","push","turnPointsIntoStep","stepTurnAt","baseAxis","getBaseAxis","baseIndex","dim","stepPoints","nextPt","pt","stepPt","middle","stepPt2","getVisualGradient","visualMetaList","getVisual","coordDim","visualMeta","dimIndex","dimension","dimName","dimensions","dimInfo","getDimensionInfo","axis","getAxis","colorStops","map","stops","stop","coord","toGlobalCoord","dataToCoord","value","color","stopLen","outerColors","slice","reverse","tinyExtent","minCoord","maxCoord","coordSpan","each","offset","unshift","gradient","LinearGradient","getIsIgnoreFunc","seriesModel","get","isAuto","categoryAxis","getAxesByScale","canShowAllSymbolForCategory","categoryDataDim","mapDimension","labelMap","getViewLabels","labelItem","tickValue","dataIndex","hasOwnProperty","axisExtent","getExtent","availSize","scale","isNaN","dataLen","round","getSymbolSize","isHorizontal","createLineClipPath","hasAnimation","clipPath","rectShape","shape","expandSize","height","y","x","init","lineGroup","Group","symbolDraw","group","add","_symbolDraw","_lineGroup","render","api","getData","lineStyleModel","getModel","areaStyleModel","mapArray","getItemLayout","isCoordSysPolar","prevCoordSys","_coordSys","polyline","_polyline","polygon","_polygon","isAreaChart","isEmpty","valueOrigin","stackedOnPoints","isIgnoreFunc","oldData","_data","eachItemGraphicEl","el","__temp","remove","setItemGraphicEl","clipShapeForSymbol","getArea","r0","r1","_clipShapeForSymbol","_step","_newPolygon","setClipPath","updateData","isIgnore","clipShape","stopAnimation","_stackedOnPoints","_points","_updateAnimation","setShape","_newPolyline","visualColor","useStyle","defaults","getLineStyle","fill","stroke","lineJoin","stackedOnSeries","getCalculationInfo","stackedOnSmooth","getAreaStyle","opacity","_valueOrigin","dispose","highlight","payload","queryDataIndex","Array","getItemGraphicEl","contain","setZ","ignore","stopSymbolAnimation","prototype","call","downplay","silent","z2","hostModel","diff","current","stackedOnCurrent","next","stackedOnNext","__points","updateProps","updatedDataInfo","diffStatus","status","cmd","idx1","ptIdx","animators","during","attr","removeAll","_dataStackHelper","isDimensionStacked","_util","stacked","valueAxis","getOtherAxis","valueStart","getValueStart","baseAxisDim","valueAxisDim","baseDim","baseDataOffset","dims","stackResultDim","dataDimsForPoint","stackedOverDimension","extent","NaN","stackedData","dataToPoint","diffData","newData","diffResult","update","newIdx","oldIdx","execute","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","newDataOldCoordInfo","oldDataNewCoordInfo","diffItem","pointAdded","currentPt","getRawIndex","rawIndex","sort","a","b","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","Path","vec2","fixClipWithShadow","vec2Min","min","vec2Max","scaleAndAdd","v2Copy","copy","v","cp0","cp1","isPointNull","p","drawSegment","ctx","start","segLen","allLen","dir","smoothMin","smoothMax","drawMono","apply","arguments","drawNonMono","prevIdx","k","prevP","ctrlLen","bezierCurveTo","lineTo","nextIdx","nextP","ratioNextSeg","lenPrevSeg","lenNextSeg","sub","dist","getBoundingBox","smoothConstraint","ptMin","ptMax","style","brush","buildPath","result","bbox","stackedOnBBox","closePath","linesLayout","linesVisual","List","concatArray","mergeAll","_format","encodeHTML","Uint32Arr","Uint32Array","Float64Arr","Float64Array","compatEc2","seriesOpt","itemOpt","coords","target","name","fromName","toName","LinesSeries","visualColorAccessPath","_processFlatCoordsArray","_flatCoords","flatCoords","_flatCoordsOffset","flatCoordsOffset","Float32Array","superApply","mergeOption","appendData","params","getRawData","_getCoordsFromItemModel","itemModel","getItemModel","getShallow","getLineCoordsCount","getLineCoords","out","startOffset","coordsOffsetAndLenStorage","coordsStorage","coordsCursor","offsetCursor","dataCount","buffer","lineData","hasItemOption","initData","dataItem","formatTooltip","html","join","preventIncremental","getProgressive","large","getProgressiveThreshold","progressiveThreshold","xAxisIndex","yAxisIndex","geoIndex","effect","show","period","constantSpeed","loop","trailLength","largeThreshold","LineDraw","EffectLine","Line","EffectPolyline","LargeLineDraw","createClipPath","extendChartView","lineDraw","_updateLineDraw","zr","getZr","isSvg","painter","getType","getLayer","clear","_lastZlevel","configLayer","motionBlur","_showEffect","lastFrameAlpha","removeClipPath","_finished","incrementalPrepareRender","incrementalPrepareUpdate","_clearLayer","incrementalRender","taskParams","_lineDraw","incrementalUpdate","end","updateTransform","pipelineContext","progressiveRender","res","reset","progress","updateLayout","hasEffect","isPolyline","isLargeDraw","_hasEffet","_isPolyline","_isLargeDraw","createRenderPlanner","seriesType","plan","isLarge","lineCoords","segCount","totalCoordsCount","setLayout","pts","j","curveness","setItemLayout","normalize","opacityQuery","split","symbolType","dataEach","setItemVisual","setVisual"],"sourceRoot":""}