qauMaWeb/node_modules/.cache/babel-loader/6bca9939d613f1497061c939961...

1 line
128 KiB
JSON

{"ast":null,"code":"import \"core-js/modules/es.array.slice.js\";\nimport \"core-js/modules/es.function.name.js\";\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 * AUTO-GENERATED FILE. DO NOT MODIFY.\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*/\nimport { __extends } from \"tslib\"; // FIXME step not support polar\n\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SymbolDraw from '../helper/SymbolDraw.js';\nimport SymbolClz from '../helper/Symbol.js';\nimport lineAnimationDiff from './lineAnimationDiff.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as modelUtil from '../../util/model.js';\nimport { ECPolyline, ECPolygon } from './poly.js';\nimport ChartView from '../../view/Chart.js';\nimport { prepareDataCoordInfo, getStackedOnPoint } from './helper.js';\nimport { createGridClipPath, createPolarClipPath } from '../helper/createClipPathFromCoordSys.js';\nimport { isCoordinateSystemType } from '../../coord/CoordinateSystem.js';\nimport { setStatesStylesFromModel, setStatesFlag, toggleHoverEmphasis, SPECIAL_STATES } from '../../util/states.js';\nimport { setLabelStyle, getLabelStatesModels, labelInner } from '../../label/labelStyle.js';\nimport { getDefaultLabel, getDefaultInterpolatedLabel } from '../helper/labelHelper.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createFloat32Array } from '../../util/vendor.js';\nimport { convertToColorString } from '../../util/format.js';\nimport { lerp } from 'zrender/lib/tool/color.js';\n\nfunction isPointsSame(points1, points2) {\n if (points1.length !== points2.length) {\n return;\n }\n\n for (var i = 0; i < points1.length; i++) {\n if (points1[i] !== points2[i]) {\n return;\n }\n }\n\n return true;\n}\n\nfunction bboxFromPoints(points) {\n var minX = Infinity;\n var minY = Infinity;\n var maxX = -Infinity;\n var maxY = -Infinity;\n\n for (var i = 0; i < points.length;) {\n var x = points[i++];\n var y = points[i++];\n\n if (!isNaN(x)) {\n minX = Math.min(x, minX);\n maxX = Math.max(x, maxX);\n }\n\n if (!isNaN(y)) {\n minY = Math.min(y, minY);\n maxY = Math.max(y, maxY);\n }\n }\n\n return [[minX, minY], [maxX, maxY]];\n}\n\nfunction getBoundingDiff(points1, points2) {\n var _a = bboxFromPoints(points1),\n min1 = _a[0],\n max1 = _a[1];\n\n var _b = bboxFromPoints(points2),\n min2 = _b[0],\n max2 = _b[1]; // Get a max value from each corner of two boundings.\n\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 zrUtil.isNumber(smooth) ? smooth : smooth ? 0.5 : 0;\n}\n\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\n if (!dataCoordInfo.valueDim) {\n return [];\n }\n\n var len = data.count();\n var points = createFloat32Array(len * 2);\n\n for (var idx = 0; idx < len; idx++) {\n var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx);\n points[idx * 2] = pt[0];\n points[idx * 2 + 1] = pt[1];\n }\n\n return points;\n}\n\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt, connectNulls) {\n var baseAxis = coordSys.getBaseAxis();\n var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n var stepPoints = [];\n var i = 0;\n var stepPt = [];\n var pt = [];\n var nextPt = [];\n var filteredPoints = [];\n\n if (connectNulls) {\n for (i = 0; i < points.length; i += 2) {\n if (!isNaN(points[i]) && !isNaN(points[i + 1])) {\n filteredPoints.push(points[i], points[i + 1]);\n }\n }\n\n points = filteredPoints;\n }\n\n for (i = 0; i < points.length - 2; i += 2) {\n nextPt[0] = points[i + 2];\n nextPt[1] = points[i + 3];\n pt[0] = points[i];\n pt[1] = points[i + 1];\n stepPoints.push(pt[0], pt[1]);\n\n switch (stepTurnAt) {\n case 'end':\n stepPt[baseIndex] = nextPt[baseIndex];\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\n stepPoints.push(stepPt[0], stepPt[1]);\n break;\n\n case 'middle':\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[0], stepPt[1]);\n stepPoints.push(stepPt2[0], stepPt2[1]);\n break;\n\n default:\n // default is start\n stepPt[baseIndex] = pt[baseIndex];\n stepPt[1 - baseIndex] = nextPt[1 - baseIndex];\n stepPoints.push(stepPt[0], stepPt[1]);\n }\n } // Last points\n\n\n stepPoints.push(points[i++], points[i++]);\n return stepPoints;\n}\n/**\n * Clip color stops to edge. Avoid creating too large gradients.\n * Which may lead to blurry when GPU acceleration is enabled. See #15680\n *\n * The stops has been sorted from small to large.\n */\n\n\nfunction clipColorStops(colorStops, maxSize) {\n var newColorStops = [];\n var len = colorStops.length; // coord will always < 0 in prevOutOfRangeColorStop.\n\n var prevOutOfRangeColorStop;\n var prevInRangeColorStop;\n\n function lerpStop(stop0, stop1, clippedCoord) {\n var coord0 = stop0.coord;\n var p = (clippedCoord - coord0) / (stop1.coord - coord0);\n var color = lerp(p, [stop0.color, stop1.color]);\n return {\n coord: clippedCoord,\n color: color\n };\n }\n\n for (var i = 0; i < len; i++) {\n var stop_1 = colorStops[i];\n var coord = stop_1.coord;\n\n if (coord < 0) {\n prevOutOfRangeColorStop = stop_1;\n } else if (coord > maxSize) {\n if (prevInRangeColorStop) {\n newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize));\n } else if (prevOutOfRangeColorStop) {\n // If there are two stops and coord range is between these two stops\n newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0), lerpStop(prevOutOfRangeColorStop, stop_1, maxSize));\n } // All following stop will be out of range. So just ignore them.\n\n\n break;\n } else {\n if (prevOutOfRangeColorStop) {\n newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0)); // Reset\n\n prevOutOfRangeColorStop = null;\n }\n\n newColorStops.push(stop_1);\n prevInRangeColorStop = stop_1;\n }\n }\n\n return newColorStops;\n}\n\nfunction getVisualGradient(data, coordSys, api) {\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 if (process.env.NODE_ENV !== 'production') {\n console.warn('Visual map on line style is only supported on cartesian2d.');\n }\n\n return;\n }\n\n var coordDim;\n var visualMeta;\n\n for (var i = visualMetaList.length - 1; i >= 0; i--) {\n var dimInfo = data.getDimensionInfo(visualMetaList[i].dimension);\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 if (process.env.NODE_ENV !== 'production') {\n console.warn('Visual map on line style only support x or y dimension.');\n }\n\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); // dataToCoord mapping may not be linear, but must be monotonic.\n\n var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n // offset will be calculated later.\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 colorStopsInRange = clipColorStops(colorStops, coordDim === 'x' ? api.getWidth() : api.getHeight());\n var inRangeStopLen = colorStopsInRange.length;\n\n if (!inRangeStopLen && stopLen) {\n // All stops are out of range. All will be the same color.\n return colorStops[0].coord < 0 ? outerColors[1] ? outerColors[1] : colorStops[stopLen - 1].color : outerColors[0] ? outerColors[0] : colorStops[0].color;\n }\n\n var tinyExtent = 10; // Arbitrary value: 10px\n\n var minCoord = colorStopsInRange[0].coord - tinyExtent;\n var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent;\n var coordSpan = maxCoord - minCoord;\n\n if (coordSpan < 1e-3) {\n return 'transparent';\n }\n\n zrUtil.each(colorStopsInRange, function (stop) {\n stop.offset = (stop.coord - minCoord) / coordSpan;\n });\n colorStopsInRange.push({\n // NOTE: inRangeStopLen may still be 0 if stoplen is zero.\n offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5,\n color: outerColors[1] || 'transparent'\n });\n colorStopsInRange.unshift({\n offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5,\n color: outerColors[0] || 'transparent'\n });\n var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStopsInRange, 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 var ordinalNumber = categoryAxis.scale.getRawOrdinalNumber(labelItem.tickValue);\n labelMap[ordinalNumber] = 1;\n });\n return function (dataIndex) {\n return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\n };\n}\n\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\n // In most 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 isPointNull(x, y) {\n return isNaN(x) || isNaN(y);\n}\n\nfunction getLastIndexNotNull(points) {\n var len = points.length / 2;\n\n for (; len > 0; len--) {\n if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\n break;\n }\n }\n\n return len - 1;\n}\n\nfunction getPointAtIndex(points, idx) {\n return [points[idx * 2], points[idx * 2 + 1]];\n}\n\nfunction getIndexRange(points, xOrY, dim) {\n var len = points.length / 2;\n var dimIdx = dim === 'x' ? 0 : 1;\n var a;\n var b;\n var prevIndex = 0;\n var nextIndex = -1;\n\n for (var i = 0; i < len; i++) {\n b = points[i * 2 + dimIdx];\n\n if (isNaN(b) || isNaN(points[i * 2 + 1 - dimIdx])) {\n continue;\n }\n\n if (i === 0) {\n a = b;\n continue;\n }\n\n if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) {\n nextIndex = i;\n break;\n }\n\n prevIndex = i;\n a = b;\n }\n\n return {\n range: [prevIndex, nextIndex],\n t: (xOrY - a) / (b - a)\n };\n}\n\nfunction anyStateShowEndLabel(seriesModel) {\n if (seriesModel.get(['endLabel', 'show'])) {\n return true;\n }\n\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n if (seriesModel.get([SPECIAL_STATES[i], 'endLabel', 'show'])) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {\n if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\n var endLabelModel_1 = seriesModel.getModel('endLabel');\n var valueAnimation_1 = endLabelModel_1.get('valueAnimation');\n var data_1 = seriesModel.getData();\n var labelAnimationRecord_1 = {\n lastFrameIndex: 0\n };\n var during = anyStateShowEndLabel(seriesModel) ? function (percent, clipRect) {\n lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys);\n } : null;\n var isHorizontal = coordSys.getBaseAxis().isHorizontal();\n var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function () {\n var endLabel = lineView._endLabel;\n\n if (endLabel && hasAnimation) {\n if (labelAnimationRecord_1.originalX != null) {\n endLabel.attr({\n x: labelAnimationRecord_1.originalX,\n y: labelAnimationRecord_1.originalY\n });\n }\n }\n }, during); // 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 } // Set to the final frame. To make sure label layout is right.\n\n\n if (during) {\n during(1, clipPath);\n }\n\n return clipPath;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n if (seriesModel.get(['endLabel', 'show'])) {\n console.warn('endLabel is not supported for lines in polar systems.');\n }\n }\n\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n }\n}\n\nfunction getEndLabelStateSpecified(endLabelModel, coordSys) {\n var baseAxis = coordSys.getBaseAxis();\n var isHorizontal = baseAxis.isHorizontal();\n var isBaseInversed = baseAxis.inverse;\n var align = isHorizontal ? isBaseInversed ? 'right' : 'left' : 'center';\n var verticalAlign = isHorizontal ? 'middle' : isBaseInversed ? 'top' : 'bottom';\n return {\n normal: {\n align: endLabelModel.get('align') || align,\n verticalAlign: endLabelModel.get('verticalAlign') || verticalAlign\n }\n };\n}\n\nvar LineView =\n/** @class */\nfunction (_super) {\n __extends(LineView, _super);\n\n function LineView() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n LineView.prototype.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\n LineView.prototype.render = function (seriesModel, ecModel, api) {\n var _this = this;\n\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.getLayout('points') || [];\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 = !ecModel.ssr && seriesModel.isAnimationEnabled();\n var isAreaChart = !areaStyleModel.isEmpty();\n var valueOrigin = areaStyleModel.get('origin');\n var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\n var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo);\n var showSymbol = seriesModel.get('showSymbol');\n var connectNulls = seriesModel.get('connectNulls');\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') : false;\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.r += 0.5;\n }\n }\n\n this._clipShapeForSymbol = clipShapeForSymbol;\n var visualColor = getVisualGradient(data, coordSys, api) || data.getVisual('style')[data.getVisual('drawType')]; // 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 disableAnimation: true,\n getSymbolPoint: function getSymbolPoint(idx) {\n return [points[idx * 2], points[idx * 2 + 1]];\n }\n });\n hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol);\n\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step, connectNulls);\n\n if (stackedOnPoints) {\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);\n }\n }\n\n polyline = this._newPolyline(points);\n\n if (isAreaChart) {\n polygon = this._newPolygon(points, stackedOnPoints);\n } // If areaStyle is removed\n else if (polygon) {\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n } // NOTE: Must update _endLabel before setClipPath.\n\n\n if (!isCoordSysPolar) {\n this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));\n }\n\n lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\n } else {\n if (isAreaChart && !polygon) {\n // If areaStyle is added\n polygon = this._newPolygon(points, stackedOnPoints);\n } else if (polygon && !isAreaChart) {\n // If areaStyle is removed\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n } // NOTE: Must update _endLabel before setClipPath.\n\n\n if (!isCoordSysPolar) {\n this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));\n } // Update clipPath\n\n\n var oldClipPath = lineGroup.getClipPath();\n\n if (oldClipPath) {\n var newClipPath = createLineClipPath(this, coordSys, false, seriesModel);\n graphic.initProps(oldClipPath, {\n shape: newClipPath.shape\n }, seriesModel);\n } else {\n lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\n } // Always update, or it is wrong in the case turning on legend\n // because points are not changed.\n\n\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol,\n disableAnimation: true,\n getSymbolPoint: function getSymbolPoint(idx) {\n return [points[idx * 2], points[idx * 2 + 1]];\n }\n }); // In the case data zoom triggered 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._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls);\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, connectNulls);\n\n if (stackedOnPoints) {\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);\n }\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 emphasisModel = seriesModel.getModel('emphasis');\n var focus = emphasisModel.get('focus');\n var blurScope = emphasisModel.get('blurScope');\n var emphasisDisabled = emphasisModel.get('disabled');\n polyline.useStyle(zrUtil.defaults( // Use color in lineStyle first\n lineStyleModel.getLineStyle(), {\n fill: 'none',\n stroke: visualColor,\n lineJoin: 'bevel'\n }));\n setStatesStylesFromModel(polyline, seriesModel, 'lineStyle');\n\n if (polyline.style.lineWidth > 0 && seriesModel.get(['emphasis', 'lineStyle', 'width']) === 'bolder') {\n var emphasisLineStyle = polyline.getState('emphasis').style;\n emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1;\n } // Needs seriesIndex for focus\n\n\n getECData(polyline).seriesIndex = seriesModel.seriesIndex;\n toggleHoverEmphasis(polyline, focus, blurScope, emphasisDisabled);\n var smooth = getSmooth(seriesModel.get('smooth'));\n var smoothMonotone = seriesModel.get('smoothMonotone');\n polyline.setShape({\n smooth: smooth,\n smoothMonotone: smoothMonotone,\n connectNulls: 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 decal: data.getVisual('style').decal\n }));\n\n if (stackedOnSeries) {\n stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n }\n\n polygon.setShape({\n smooth: smooth,\n stackedOnSmooth: stackedOnSmooth,\n smoothMonotone: smoothMonotone,\n connectNulls: connectNulls\n });\n setStatesStylesFromModel(polygon, seriesModel, 'areaStyle'); // Needs seriesIndex for focus\n\n getECData(polygon).seriesIndex = seriesModel.seriesIndex;\n toggleHoverEmphasis(polygon, focus, blurScope, emphasisDisabled);\n }\n\n var changePolyState = function changePolyState(toState) {\n _this._changePolyState(toState);\n };\n\n data.eachItemGraphicEl(function (el) {\n // Switch polyline / polygon state if element changed its state.\n el && (el.onHoverStateChange = changePolyState);\n });\n this._polyline.onHoverStateChange = changePolyState;\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 if (seriesModel.get('triggerLineEvent')) {\n this.packEventData(seriesModel, polyline);\n polygon && this.packEventData(seriesModel, polygon);\n }\n };\n\n LineView.prototype.packEventData = function (seriesModel, el) {\n getECData(el).eventData = {\n componentType: 'series',\n componentSubType: 'line',\n componentIndex: seriesModel.componentIndex,\n seriesIndex: seriesModel.seriesIndex,\n seriesName: seriesModel.name,\n seriesType: 'line'\n };\n };\n\n LineView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n this._changePolyState('emphasis');\n\n if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n var points = data.getLayout('points');\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (!symbol) {\n // Create a temporary symbol if it is not exists\n var x = points[dataIndex * 2];\n var y = points[dataIndex * 2 + 1];\n\n if (isNaN(x) || isNaN(y)) {\n // Null data\n return;\n } // fix #11360: shouldn't draw symbol outside clipShapeForSymbol\n\n\n if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) {\n return;\n }\n\n var zlevel = seriesModel.get('zlevel') || 0;\n var z = seriesModel.get('z') || 0;\n symbol = new SymbolClz(data, dataIndex);\n symbol.x = x;\n symbol.y = y;\n symbol.setZ(zlevel, z); // ensure label text of the temporary symbol is in front of line and area polygon\n\n var symbolLabel = symbol.getSymbolPath().getTextContent();\n\n if (symbolLabel) {\n symbolLabel.zlevel = zlevel;\n symbolLabel.z = z;\n symbolLabel.z2 = this._polyline.z2 + 1;\n }\n\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\n LineView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n this._changePolyState('normal');\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 LineView.prototype._changePolyState = function (toState) {\n var polygon = this._polygon;\n setStatesFlag(this._polyline, toState);\n polygon && setStatesFlag(polygon, toState);\n };\n\n LineView.prototype._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 ECPolyline({\n shape: {\n points: points\n },\n segmentIgnoreThreshold: 2,\n z2: 10\n });\n\n this._lineGroup.add(polyline);\n\n this._polyline = polyline;\n return polyline;\n };\n\n LineView.prototype._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 ECPolygon({\n shape: {\n points: points,\n stackedOnPoints: stackedOnPoints\n },\n segmentIgnoreThreshold: 2\n });\n\n this._lineGroup.add(polygon);\n\n this._polygon = polygon;\n return polygon;\n };\n\n LineView.prototype._initSymbolLabelAnimation = function (data, coordSys, clipShape) {\n var isHorizontalOrRadial;\n var isCoordSysPolar;\n var baseAxis = coordSys.getBaseAxis();\n var isAxisInverse = baseAxis.inverse;\n\n if (coordSys.type === 'cartesian2d') {\n isHorizontalOrRadial = baseAxis.isHorizontal();\n isCoordSysPolar = false;\n } else if (coordSys.type === 'polar') {\n isHorizontalOrRadial = baseAxis.dim === 'angle';\n isCoordSysPolar = true;\n }\n\n var seriesModel = data.hostModel;\n var seriesDuration = seriesModel.get('animationDuration');\n\n if (zrUtil.isFunction(seriesDuration)) {\n seriesDuration = seriesDuration(null);\n }\n\n var seriesDelay = seriesModel.get('animationDelay') || 0;\n var seriesDelayValue = zrUtil.isFunction(seriesDelay) ? seriesDelay(null) : seriesDelay;\n data.eachItemGraphicEl(function (symbol, idx) {\n var el = symbol;\n\n if (el) {\n var point = [symbol.x, symbol.y];\n var start = void 0;\n var end = void 0;\n var current = void 0;\n\n if (clipShape) {\n if (isCoordSysPolar) {\n var polarClip = clipShape;\n var coord = coordSys.pointToCoord(point);\n\n if (isHorizontalOrRadial) {\n start = polarClip.startAngle;\n end = polarClip.endAngle;\n current = -coord[1] / 180 * Math.PI;\n } else {\n start = polarClip.r0;\n end = polarClip.r;\n current = coord[0];\n }\n } else {\n var gridClip = clipShape;\n\n if (isHorizontalOrRadial) {\n start = gridClip.x;\n end = gridClip.x + gridClip.width;\n current = symbol.x;\n } else {\n start = gridClip.y + gridClip.height;\n end = gridClip.y;\n current = symbol.y;\n }\n }\n }\n\n var ratio = end === start ? 0 : (current - start) / (end - start);\n\n if (isAxisInverse) {\n ratio = 1 - ratio;\n }\n\n var delay = zrUtil.isFunction(seriesDelay) ? seriesDelay(idx) : seriesDuration * ratio + seriesDelayValue;\n var symbolPath = el.getSymbolPath();\n var text = symbolPath.getTextContent();\n el.attr({\n scaleX: 0,\n scaleY: 0\n });\n el.animateTo({\n scaleX: 1,\n scaleY: 1\n }, {\n duration: 200,\n setToFinal: true,\n delay: delay\n });\n\n if (text) {\n text.animateFrom({\n style: {\n opacity: 0\n }\n }, {\n duration: 300,\n delay: delay\n });\n }\n\n symbolPath.disableLabelAnimation = true;\n }\n });\n };\n\n LineView.prototype._initOrUpdateEndLabel = function (seriesModel, coordSys, inheritColor) {\n var endLabelModel = seriesModel.getModel('endLabel');\n\n if (anyStateShowEndLabel(seriesModel)) {\n var data_2 = seriesModel.getData();\n var polyline = this._polyline; // series may be filtered.\n\n var points = data_2.getLayout('points');\n\n if (!points) {\n polyline.removeTextContent();\n this._endLabel = null;\n return;\n }\n\n var endLabel = this._endLabel;\n\n if (!endLabel) {\n endLabel = this._endLabel = new graphic.Text({\n z2: 200 // should be higher than item symbol\n\n });\n endLabel.ignoreClip = true;\n polyline.setTextContent(this._endLabel);\n polyline.disableLabelAnimation = true;\n } // Find last non-NaN data to display data\n\n\n var dataIndex = getLastIndexNotNull(points);\n\n if (dataIndex >= 0) {\n setLabelStyle(polyline, getLabelStatesModels(seriesModel, 'endLabel'), {\n inheritColor: inheritColor,\n labelFetcher: seriesModel,\n labelDataIndex: dataIndex,\n defaultText: function defaultText(dataIndex, opt, interpolatedValue) {\n return interpolatedValue != null ? getDefaultInterpolatedLabel(data_2, interpolatedValue) : getDefaultLabel(data_2, dataIndex);\n },\n enableTextSetter: true\n }, getEndLabelStateSpecified(endLabelModel, coordSys));\n polyline.textConfig.position = null;\n }\n } else if (this._endLabel) {\n this._polyline.removeTextContent();\n\n this._endLabel = null;\n }\n };\n\n LineView.prototype._endLabelOnDuring = function (percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) {\n var endLabel = this._endLabel;\n var polyline = this._polyline;\n\n if (endLabel) {\n // NOTE: Don't remove percent < 1. percent === 1 means the first frame during render.\n // The label is not prepared at this time.\n if (percent < 1 && animationRecord.originalX == null) {\n animationRecord.originalX = endLabel.x;\n animationRecord.originalY = endLabel.y;\n }\n\n var points = data.getLayout('points');\n var seriesModel = data.hostModel;\n var connectNulls = seriesModel.get('connectNulls');\n var precision = endLabelModel.get('precision');\n var distance = endLabelModel.get('distance') || 0;\n var baseAxis = coordSys.getBaseAxis();\n var isHorizontal = baseAxis.isHorizontal();\n var isBaseInversed = baseAxis.inverse;\n var clipShape = clipRect.shape;\n var xOrY = isBaseInversed ? isHorizontal ? clipShape.x : clipShape.y + clipShape.height : isHorizontal ? clipShape.x + clipShape.width : clipShape.y;\n var distanceX = (isHorizontal ? distance : 0) * (isBaseInversed ? -1 : 1);\n var distanceY = (isHorizontal ? 0 : -distance) * (isBaseInversed ? -1 : 1);\n var dim = isHorizontal ? 'x' : 'y';\n var dataIndexRange = getIndexRange(points, xOrY, dim);\n var indices = dataIndexRange.range;\n var diff = indices[1] - indices[0];\n var value = void 0;\n\n if (diff >= 1) {\n // diff > 1 && connectNulls, which is on the null data.\n if (diff > 1 && !connectNulls) {\n var pt = getPointAtIndex(points, indices[0]);\n endLabel.attr({\n x: pt[0] + distanceX,\n y: pt[1] + distanceY\n });\n valueAnimation && (value = seriesModel.getRawValue(indices[0]));\n } else {\n var pt = polyline.getPointOn(xOrY, dim);\n pt && endLabel.attr({\n x: pt[0] + distanceX,\n y: pt[1] + distanceY\n });\n var startValue = seriesModel.getRawValue(indices[0]);\n var endValue = seriesModel.getRawValue(indices[1]);\n valueAnimation && (value = modelUtil.interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t));\n }\n\n animationRecord.lastFrameIndex = indices[0];\n } else {\n // If diff <= 0, which is the range is not found(Include NaN)\n // Choose the first point or last point.\n var idx = percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0;\n var pt = getPointAtIndex(points, idx);\n valueAnimation && (value = seriesModel.getRawValue(idx));\n endLabel.attr({\n x: pt[0] + distanceX,\n y: pt[1] + distanceY\n });\n }\n\n if (valueAnimation) {\n labelInner(endLabel).setLabelText(value);\n }\n }\n };\n /**\n * @private\n */\n // FIXME Two value axis\n\n\n LineView.prototype._doUpdateAnimation = function (data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls) {\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, connectNulls);\n stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step, connectNulls);\n next = turnPointsIntoStep(diff.next, coordSys, step, connectNulls);\n stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step, connectNulls);\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.stopAnimation();\n polyline.setShape({\n points: next\n });\n\n if (polygon) {\n polygon.stopAnimation();\n polygon.setShape({\n points: next,\n stackedOnPoints: stackedOnNext\n });\n }\n\n return;\n }\n\n polyline.shape.__points = diff.current;\n polyline.shape.points = current;\n var target = {\n shape: {\n points: next\n }\n }; // Also animate the original points.\n // If points reference is changed when turning into step line.\n\n if (diff.current !== current) {\n target.shape.__points = diff.next;\n } // Stop previous animation.\n\n\n polyline.stopAnimation();\n graphic.updateProps(polyline, target, seriesModel);\n\n if (polygon) {\n polygon.setShape({\n // Reuse the points with polyline.\n points: current,\n stackedOnPoints: stackedOnCurrent\n });\n polygon.stopAnimation();\n graphic.updateProps(polygon, {\n shape: {\n stackedOnPoints: stackedOnNext\n }\n }, seriesModel); // If use attr directly in updateProps.\n\n if (polyline.shape.points !== polygon.shape.points) {\n polygon.shape.points = polyline.shape.points;\n }\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 polygon && polygon.dirtyShape();\n var points = polyline.shape.__points;\n\n for (var i = 0; i < updatedDataInfo.length; i++) {\n var el = updatedDataInfo[i].el;\n var offset = updatedDataInfo[i].ptIdx * 2;\n el.x = points[offset];\n el.y = points[offset + 1];\n el.markRedraw();\n }\n });\n }\n };\n\n LineView.prototype.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._endLabel = this._data = null;\n };\n\n LineView.type = 'line';\n return LineView;\n}(ChartView);\n\nexport default LineView;","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/ElectronicMallVue/node_modules/echarts/lib/chart/line/LineView.js"],"names":["__extends","zrUtil","SymbolDraw","SymbolClz","lineAnimationDiff","graphic","modelUtil","ECPolyline","ECPolygon","ChartView","prepareDataCoordInfo","getStackedOnPoint","createGridClipPath","createPolarClipPath","isCoordinateSystemType","setStatesStylesFromModel","setStatesFlag","toggleHoverEmphasis","SPECIAL_STATES","setLabelStyle","getLabelStatesModels","labelInner","getDefaultLabel","getDefaultInterpolatedLabel","getECData","createFloat32Array","convertToColorString","lerp","isPointsSame","points1","points2","length","i","bboxFromPoints","points","minX","Infinity","minY","maxX","maxY","x","y","isNaN","Math","min","max","getBoundingDiff","_a","min1","max1","_b","min2","max2","abs","getSmooth","smooth","isNumber","getStackedOnPoints","coordSys","data","dataCoordInfo","valueDim","len","count","idx","pt","turnPointsIntoStep","stepTurnAt","connectNulls","baseAxis","getBaseAxis","baseIndex","dim","stepPoints","stepPt","nextPt","filteredPoints","push","middle","stepPt2","clipColorStops","colorStops","maxSize","newColorStops","prevOutOfRangeColorStop","prevInRangeColorStop","lerpStop","stop0","stop1","clippedCoord","coord0","coord","p","color","stop_1","getVisualGradient","api","visualMetaList","getVisual","type","process","env","NODE_ENV","console","warn","coordDim","visualMeta","dimInfo","getDimensionInfo","dimension","axis","getAxis","map","stops","stop","toGlobalCoord","dataToCoord","value","stopLen","outerColors","slice","reverse","colorStopsInRange","getWidth","getHeight","inRangeStopLen","tinyExtent","minCoord","maxCoord","coordSpan","each","offset","unshift","gradient","LinearGradient","getIsIgnoreFunc","seriesModel","showAllSymbol","get","isAuto","categoryAxis","getAxesByScale","canShowAllSymbolForCategory","categoryDataDim","mapDimension","labelMap","getViewLabels","labelItem","ordinalNumber","scale","getRawOrdinalNumber","tickValue","dataIndex","hasOwnProperty","axisExtent","getExtent","availSize","dataLen","step","round","getSymbolSize","isHorizontal","isPointNull","getLastIndexNotNull","getPointAtIndex","getIndexRange","xOrY","dimIdx","a","b","prevIndex","nextIndex","range","t","anyStateShowEndLabel","createLineClipPath","lineView","hasAnimation","endLabelModel_1","getModel","valueAnimation_1","data_1","getData","labelAnimationRecord_1","lastFrameIndex","during","percent","clipRect","_endLabelOnDuring","clipPath","endLabel","_endLabel","originalX","attr","originalY","rectShape","shape","expandSize","width","height","getEndLabelStateSpecified","endLabelModel","isBaseInversed","inverse","align","verticalAlign","normal","LineView","_super","apply","arguments","prototype","init","lineGroup","Group","symbolDraw","group","add","_symbolDraw","_lineGroup","render","ecModel","_this","coordinateSystem","lineStyleModel","areaStyleModel","getLayout","isCoordSysPolar","prevCoordSys","_coordSys","polyline","_polyline","polygon","_polygon","ssr","isAnimationEnabled","isAreaChart","isEmpty","valueOrigin","stackedOnPoints","showSymbol","isIgnoreFunc","oldData","_data","eachItemGraphicEl","el","__temp","remove","setItemGraphicEl","clipShapeForSymbol","getArea","r0","r","_clipShapeForSymbol","visualColor","_step","updateData","isIgnore","clipShape","disableAnimation","getSymbolPoint","_initSymbolLabelAnimation","_newPolyline","_newPolygon","_initOrUpdateEndLabel","setClipPath","oldClipPath","getClipPath","newClipPath","initProps","_stackedOnPoints","_points","_doUpdateAnimation","setShape","emphasisModel","focus","blurScope","emphasisDisabled","useStyle","defaults","getLineStyle","fill","stroke","lineJoin","style","lineWidth","emphasisLineStyle","getState","seriesIndex","smoothMonotone","stackedOnSeries","getCalculationInfo","stackedOnSmooth","getAreaStyle","opacity","decal","changePolyState","toState","_changePolyState","onHoverStateChange","_valueOrigin","packEventData","eventData","componentType","componentSubType","componentIndex","seriesName","name","seriesType","highlight","payload","queryDataIndex","Array","symbol","getItemGraphicEl","contain","zlevel","z","setZ","symbolLabel","getSymbolPath","getTextContent","z2","stopSymbolAnimation","call","downplay","segmentIgnoreThreshold","isHorizontalOrRadial","isAxisInverse","hostModel","seriesDuration","isFunction","seriesDelay","seriesDelayValue","point","start","end","current","polarClip","pointToCoord","startAngle","endAngle","PI","gridClip","ratio","delay","symbolPath","text","scaleX","scaleY","animateTo","duration","setToFinal","animateFrom","disableLabelAnimation","inheritColor","data_2","removeTextContent","Text","ignoreClip","setTextContent","labelFetcher","labelDataIndex","defaultText","opt","interpolatedValue","enableTextSetter","textConfig","position","animationRecord","valueAnimation","precision","distance","distanceX","distanceY","dataIndexRange","indices","diff","getRawValue","getPointOn","startValue","endValue","interpolateRawValues","setLabelText","stackedOnCurrent","next","stackedOnNext","stopAnimation","__points","target","updateProps","updatedDataInfo","diffStatus","status","cmd","idx1","ptIdx","animators","dirtyShape","markRedraw","removeAll"],"mappings":"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","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\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\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*/\nimport { __extends } from \"tslib\"; // FIXME step not support polar\n\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SymbolDraw from '../helper/SymbolDraw.js';\nimport SymbolClz from '../helper/Symbol.js';\nimport lineAnimationDiff from './lineAnimationDiff.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as modelUtil from '../../util/model.js';\nimport { ECPolyline, ECPolygon } from './poly.js';\nimport ChartView from '../../view/Chart.js';\nimport { prepareDataCoordInfo, getStackedOnPoint } from './helper.js';\nimport { createGridClipPath, createPolarClipPath } from '../helper/createClipPathFromCoordSys.js';\nimport { isCoordinateSystemType } from '../../coord/CoordinateSystem.js';\nimport { setStatesStylesFromModel, setStatesFlag, toggleHoverEmphasis, SPECIAL_STATES } from '../../util/states.js';\nimport { setLabelStyle, getLabelStatesModels, labelInner } from '../../label/labelStyle.js';\nimport { getDefaultLabel, getDefaultInterpolatedLabel } from '../helper/labelHelper.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { createFloat32Array } from '../../util/vendor.js';\nimport { convertToColorString } from '../../util/format.js';\nimport { lerp } from 'zrender/lib/tool/color.js';\n\nfunction isPointsSame(points1, points2) {\n if (points1.length !== points2.length) {\n return;\n }\n\n for (var i = 0; i < points1.length; i++) {\n if (points1[i] !== points2[i]) {\n return;\n }\n }\n\n return true;\n}\n\nfunction bboxFromPoints(points) {\n var minX = Infinity;\n var minY = Infinity;\n var maxX = -Infinity;\n var maxY = -Infinity;\n\n for (var i = 0; i < points.length;) {\n var x = points[i++];\n var y = points[i++];\n\n if (!isNaN(x)) {\n minX = Math.min(x, minX);\n maxX = Math.max(x, maxX);\n }\n\n if (!isNaN(y)) {\n minY = Math.min(y, minY);\n maxY = Math.max(y, maxY);\n }\n }\n\n return [[minX, minY], [maxX, maxY]];\n}\n\nfunction getBoundingDiff(points1, points2) {\n var _a = bboxFromPoints(points1),\n min1 = _a[0],\n max1 = _a[1];\n\n var _b = bboxFromPoints(points2),\n min2 = _b[0],\n max2 = _b[1]; // Get a max value from each corner of two boundings.\n\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 zrUtil.isNumber(smooth) ? smooth : smooth ? 0.5 : 0;\n}\n\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\n if (!dataCoordInfo.valueDim) {\n return [];\n }\n\n var len = data.count();\n var points = createFloat32Array(len * 2);\n\n for (var idx = 0; idx < len; idx++) {\n var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx);\n points[idx * 2] = pt[0];\n points[idx * 2 + 1] = pt[1];\n }\n\n return points;\n}\n\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt, connectNulls) {\n var baseAxis = coordSys.getBaseAxis();\n var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n var stepPoints = [];\n var i = 0;\n var stepPt = [];\n var pt = [];\n var nextPt = [];\n var filteredPoints = [];\n\n if (connectNulls) {\n for (i = 0; i < points.length; i += 2) {\n if (!isNaN(points[i]) && !isNaN(points[i + 1])) {\n filteredPoints.push(points[i], points[i + 1]);\n }\n }\n\n points = filteredPoints;\n }\n\n for (i = 0; i < points.length - 2; i += 2) {\n nextPt[0] = points[i + 2];\n nextPt[1] = points[i + 3];\n pt[0] = points[i];\n pt[1] = points[i + 1];\n stepPoints.push(pt[0], pt[1]);\n\n switch (stepTurnAt) {\n case 'end':\n stepPt[baseIndex] = nextPt[baseIndex];\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\n stepPoints.push(stepPt[0], stepPt[1]);\n break;\n\n case 'middle':\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[0], stepPt[1]);\n stepPoints.push(stepPt2[0], stepPt2[1]);\n break;\n\n default:\n // default is start\n stepPt[baseIndex] = pt[baseIndex];\n stepPt[1 - baseIndex] = nextPt[1 - baseIndex];\n stepPoints.push(stepPt[0], stepPt[1]);\n }\n } // Last points\n\n\n stepPoints.push(points[i++], points[i++]);\n return stepPoints;\n}\n/**\n * Clip color stops to edge. Avoid creating too large gradients.\n * Which may lead to blurry when GPU acceleration is enabled. See #15680\n *\n * The stops has been sorted from small to large.\n */\n\n\nfunction clipColorStops(colorStops, maxSize) {\n var newColorStops = [];\n var len = colorStops.length; // coord will always < 0 in prevOutOfRangeColorStop.\n\n var prevOutOfRangeColorStop;\n var prevInRangeColorStop;\n\n function lerpStop(stop0, stop1, clippedCoord) {\n var coord0 = stop0.coord;\n var p = (clippedCoord - coord0) / (stop1.coord - coord0);\n var color = lerp(p, [stop0.color, stop1.color]);\n return {\n coord: clippedCoord,\n color: color\n };\n }\n\n for (var i = 0; i < len; i++) {\n var stop_1 = colorStops[i];\n var coord = stop_1.coord;\n\n if (coord < 0) {\n prevOutOfRangeColorStop = stop_1;\n } else if (coord > maxSize) {\n if (prevInRangeColorStop) {\n newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize));\n } else if (prevOutOfRangeColorStop) {\n // If there are two stops and coord range is between these two stops\n newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0), lerpStop(prevOutOfRangeColorStop, stop_1, maxSize));\n } // All following stop will be out of range. So just ignore them.\n\n\n break;\n } else {\n if (prevOutOfRangeColorStop) {\n newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0)); // Reset\n\n prevOutOfRangeColorStop = null;\n }\n\n newColorStops.push(stop_1);\n prevInRangeColorStop = stop_1;\n }\n }\n\n return newColorStops;\n}\n\nfunction getVisualGradient(data, coordSys, api) {\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 if (process.env.NODE_ENV !== 'production') {\n console.warn('Visual map on line style is only supported on cartesian2d.');\n }\n\n return;\n }\n\n var coordDim;\n var visualMeta;\n\n for (var i = visualMetaList.length - 1; i >= 0; i--) {\n var dimInfo = data.getDimensionInfo(visualMetaList[i].dimension);\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 if (process.env.NODE_ENV !== 'production') {\n console.warn('Visual map on line style only support x or y dimension.');\n }\n\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); // dataToCoord mapping may not be linear, but must be monotonic.\n\n var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n // offset will be calculated later.\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 colorStopsInRange = clipColorStops(colorStops, coordDim === 'x' ? api.getWidth() : api.getHeight());\n var inRangeStopLen = colorStopsInRange.length;\n\n if (!inRangeStopLen && stopLen) {\n // All stops are out of range. All will be the same color.\n return colorStops[0].coord < 0 ? outerColors[1] ? outerColors[1] : colorStops[stopLen - 1].color : outerColors[0] ? outerColors[0] : colorStops[0].color;\n }\n\n var tinyExtent = 10; // Arbitrary value: 10px\n\n var minCoord = colorStopsInRange[0].coord - tinyExtent;\n var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent;\n var coordSpan = maxCoord - minCoord;\n\n if (coordSpan < 1e-3) {\n return 'transparent';\n }\n\n zrUtil.each(colorStopsInRange, function (stop) {\n stop.offset = (stop.coord - minCoord) / coordSpan;\n });\n colorStopsInRange.push({\n // NOTE: inRangeStopLen may still be 0 if stoplen is zero.\n offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5,\n color: outerColors[1] || 'transparent'\n });\n colorStopsInRange.unshift({\n offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5,\n color: outerColors[0] || 'transparent'\n });\n var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStopsInRange, 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 var ordinalNumber = categoryAxis.scale.getRawOrdinalNumber(labelItem.tickValue);\n labelMap[ordinalNumber] = 1;\n });\n return function (dataIndex) {\n return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\n };\n}\n\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\n // In most 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 isPointNull(x, y) {\n return isNaN(x) || isNaN(y);\n}\n\nfunction getLastIndexNotNull(points) {\n var len = points.length / 2;\n\n for (; len > 0; len--) {\n if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\n break;\n }\n }\n\n return len - 1;\n}\n\nfunction getPointAtIndex(points, idx) {\n return [points[idx * 2], points[idx * 2 + 1]];\n}\n\nfunction getIndexRange(points, xOrY, dim) {\n var len = points.length / 2;\n var dimIdx = dim === 'x' ? 0 : 1;\n var a;\n var b;\n var prevIndex = 0;\n var nextIndex = -1;\n\n for (var i = 0; i < len; i++) {\n b = points[i * 2 + dimIdx];\n\n if (isNaN(b) || isNaN(points[i * 2 + 1 - dimIdx])) {\n continue;\n }\n\n if (i === 0) {\n a = b;\n continue;\n }\n\n if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) {\n nextIndex = i;\n break;\n }\n\n prevIndex = i;\n a = b;\n }\n\n return {\n range: [prevIndex, nextIndex],\n t: (xOrY - a) / (b - a)\n };\n}\n\nfunction anyStateShowEndLabel(seriesModel) {\n if (seriesModel.get(['endLabel', 'show'])) {\n return true;\n }\n\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n if (seriesModel.get([SPECIAL_STATES[i], 'endLabel', 'show'])) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {\n if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\n var endLabelModel_1 = seriesModel.getModel('endLabel');\n var valueAnimation_1 = endLabelModel_1.get('valueAnimation');\n var data_1 = seriesModel.getData();\n var labelAnimationRecord_1 = {\n lastFrameIndex: 0\n };\n var during = anyStateShowEndLabel(seriesModel) ? function (percent, clipRect) {\n lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys);\n } : null;\n var isHorizontal = coordSys.getBaseAxis().isHorizontal();\n var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function () {\n var endLabel = lineView._endLabel;\n\n if (endLabel && hasAnimation) {\n if (labelAnimationRecord_1.originalX != null) {\n endLabel.attr({\n x: labelAnimationRecord_1.originalX,\n y: labelAnimationRecord_1.originalY\n });\n }\n }\n }, during); // 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 } // Set to the final frame. To make sure label layout is right.\n\n\n if (during) {\n during(1, clipPath);\n }\n\n return clipPath;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n if (seriesModel.get(['endLabel', 'show'])) {\n console.warn('endLabel is not supported for lines in polar systems.');\n }\n }\n\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n }\n}\n\nfunction getEndLabelStateSpecified(endLabelModel, coordSys) {\n var baseAxis = coordSys.getBaseAxis();\n var isHorizontal = baseAxis.isHorizontal();\n var isBaseInversed = baseAxis.inverse;\n var align = isHorizontal ? isBaseInversed ? 'right' : 'left' : 'center';\n var verticalAlign = isHorizontal ? 'middle' : isBaseInversed ? 'top' : 'bottom';\n return {\n normal: {\n align: endLabelModel.get('align') || align,\n verticalAlign: endLabelModel.get('verticalAlign') || verticalAlign\n }\n };\n}\n\nvar LineView =\n/** @class */\nfunction (_super) {\n __extends(LineView, _super);\n\n function LineView() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n LineView.prototype.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\n LineView.prototype.render = function (seriesModel, ecModel, api) {\n var _this = this;\n\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.getLayout('points') || [];\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 = !ecModel.ssr && seriesModel.isAnimationEnabled();\n var isAreaChart = !areaStyleModel.isEmpty();\n var valueOrigin = areaStyleModel.get('origin');\n var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\n var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo);\n var showSymbol = seriesModel.get('showSymbol');\n var connectNulls = seriesModel.get('connectNulls');\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') : false;\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.r += 0.5;\n }\n }\n\n this._clipShapeForSymbol = clipShapeForSymbol;\n var visualColor = getVisualGradient(data, coordSys, api) || data.getVisual('style')[data.getVisual('drawType')]; // 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 disableAnimation: true,\n getSymbolPoint: function (idx) {\n return [points[idx * 2], points[idx * 2 + 1]];\n }\n });\n hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol);\n\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step, connectNulls);\n\n if (stackedOnPoints) {\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);\n }\n }\n\n polyline = this._newPolyline(points);\n\n if (isAreaChart) {\n polygon = this._newPolygon(points, stackedOnPoints);\n } // If areaStyle is removed\n else if (polygon) {\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n } // NOTE: Must update _endLabel before setClipPath.\n\n\n if (!isCoordSysPolar) {\n this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));\n }\n\n lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\n } else {\n if (isAreaChart && !polygon) {\n // If areaStyle is added\n polygon = this._newPolygon(points, stackedOnPoints);\n } else if (polygon && !isAreaChart) {\n // If areaStyle is removed\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n } // NOTE: Must update _endLabel before setClipPath.\n\n\n if (!isCoordSysPolar) {\n this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));\n } // Update clipPath\n\n\n var oldClipPath = lineGroup.getClipPath();\n\n if (oldClipPath) {\n var newClipPath = createLineClipPath(this, coordSys, false, seriesModel);\n graphic.initProps(oldClipPath, {\n shape: newClipPath.shape\n }, seriesModel);\n } else {\n lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\n } // Always update, or it is wrong in the case turning on legend\n // because points are not changed.\n\n\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol,\n disableAnimation: true,\n getSymbolPoint: function (idx) {\n return [points[idx * 2], points[idx * 2 + 1]];\n }\n }); // In the case data zoom triggered 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._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls);\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, connectNulls);\n\n if (stackedOnPoints) {\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step, connectNulls);\n }\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 emphasisModel = seriesModel.getModel('emphasis');\n var focus = emphasisModel.get('focus');\n var blurScope = emphasisModel.get('blurScope');\n var emphasisDisabled = emphasisModel.get('disabled');\n polyline.useStyle(zrUtil.defaults( // Use color in lineStyle first\n lineStyleModel.getLineStyle(), {\n fill: 'none',\n stroke: visualColor,\n lineJoin: 'bevel'\n }));\n setStatesStylesFromModel(polyline, seriesModel, 'lineStyle');\n\n if (polyline.style.lineWidth > 0 && seriesModel.get(['emphasis', 'lineStyle', 'width']) === 'bolder') {\n var emphasisLineStyle = polyline.getState('emphasis').style;\n emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1;\n } // Needs seriesIndex for focus\n\n\n getECData(polyline).seriesIndex = seriesModel.seriesIndex;\n toggleHoverEmphasis(polyline, focus, blurScope, emphasisDisabled);\n var smooth = getSmooth(seriesModel.get('smooth'));\n var smoothMonotone = seriesModel.get('smoothMonotone');\n polyline.setShape({\n smooth: smooth,\n smoothMonotone: smoothMonotone,\n connectNulls: 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 decal: data.getVisual('style').decal\n }));\n\n if (stackedOnSeries) {\n stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n }\n\n polygon.setShape({\n smooth: smooth,\n stackedOnSmooth: stackedOnSmooth,\n smoothMonotone: smoothMonotone,\n connectNulls: connectNulls\n });\n setStatesStylesFromModel(polygon, seriesModel, 'areaStyle'); // Needs seriesIndex for focus\n\n getECData(polygon).seriesIndex = seriesModel.seriesIndex;\n toggleHoverEmphasis(polygon, focus, blurScope, emphasisDisabled);\n }\n\n var changePolyState = function (toState) {\n _this._changePolyState(toState);\n };\n\n data.eachItemGraphicEl(function (el) {\n // Switch polyline / polygon state if element changed its state.\n el && (el.onHoverStateChange = changePolyState);\n });\n this._polyline.onHoverStateChange = changePolyState;\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 if (seriesModel.get('triggerLineEvent')) {\n this.packEventData(seriesModel, polyline);\n polygon && this.packEventData(seriesModel, polygon);\n }\n };\n\n LineView.prototype.packEventData = function (seriesModel, el) {\n getECData(el).eventData = {\n componentType: 'series',\n componentSubType: 'line',\n componentIndex: seriesModel.componentIndex,\n seriesIndex: seriesModel.seriesIndex,\n seriesName: seriesModel.name,\n seriesType: 'line'\n };\n };\n\n LineView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n this._changePolyState('emphasis');\n\n if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n var points = data.getLayout('points');\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (!symbol) {\n // Create a temporary symbol if it is not exists\n var x = points[dataIndex * 2];\n var y = points[dataIndex * 2 + 1];\n\n if (isNaN(x) || isNaN(y)) {\n // Null data\n return;\n } // fix #11360: shouldn't draw symbol outside clipShapeForSymbol\n\n\n if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) {\n return;\n }\n\n var zlevel = seriesModel.get('zlevel') || 0;\n var z = seriesModel.get('z') || 0;\n symbol = new SymbolClz(data, dataIndex);\n symbol.x = x;\n symbol.y = y;\n symbol.setZ(zlevel, z); // ensure label text of the temporary symbol is in front of line and area polygon\n\n var symbolLabel = symbol.getSymbolPath().getTextContent();\n\n if (symbolLabel) {\n symbolLabel.zlevel = zlevel;\n symbolLabel.z = z;\n symbolLabel.z2 = this._polyline.z2 + 1;\n }\n\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\n LineView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n this._changePolyState('normal');\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 LineView.prototype._changePolyState = function (toState) {\n var polygon = this._polygon;\n setStatesFlag(this._polyline, toState);\n polygon && setStatesFlag(polygon, toState);\n };\n\n LineView.prototype._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 ECPolyline({\n shape: {\n points: points\n },\n segmentIgnoreThreshold: 2,\n z2: 10\n });\n\n this._lineGroup.add(polyline);\n\n this._polyline = polyline;\n return polyline;\n };\n\n LineView.prototype._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 ECPolygon({\n shape: {\n points: points,\n stackedOnPoints: stackedOnPoints\n },\n segmentIgnoreThreshold: 2\n });\n\n this._lineGroup.add(polygon);\n\n this._polygon = polygon;\n return polygon;\n };\n\n LineView.prototype._initSymbolLabelAnimation = function (data, coordSys, clipShape) {\n var isHorizontalOrRadial;\n var isCoordSysPolar;\n var baseAxis = coordSys.getBaseAxis();\n var isAxisInverse = baseAxis.inverse;\n\n if (coordSys.type === 'cartesian2d') {\n isHorizontalOrRadial = baseAxis.isHorizontal();\n isCoordSysPolar = false;\n } else if (coordSys.type === 'polar') {\n isHorizontalOrRadial = baseAxis.dim === 'angle';\n isCoordSysPolar = true;\n }\n\n var seriesModel = data.hostModel;\n var seriesDuration = seriesModel.get('animationDuration');\n\n if (zrUtil.isFunction(seriesDuration)) {\n seriesDuration = seriesDuration(null);\n }\n\n var seriesDelay = seriesModel.get('animationDelay') || 0;\n var seriesDelayValue = zrUtil.isFunction(seriesDelay) ? seriesDelay(null) : seriesDelay;\n data.eachItemGraphicEl(function (symbol, idx) {\n var el = symbol;\n\n if (el) {\n var point = [symbol.x, symbol.y];\n var start = void 0;\n var end = void 0;\n var current = void 0;\n\n if (clipShape) {\n if (isCoordSysPolar) {\n var polarClip = clipShape;\n var coord = coordSys.pointToCoord(point);\n\n if (isHorizontalOrRadial) {\n start = polarClip.startAngle;\n end = polarClip.endAngle;\n current = -coord[1] / 180 * Math.PI;\n } else {\n start = polarClip.r0;\n end = polarClip.r;\n current = coord[0];\n }\n } else {\n var gridClip = clipShape;\n\n if (isHorizontalOrRadial) {\n start = gridClip.x;\n end = gridClip.x + gridClip.width;\n current = symbol.x;\n } else {\n start = gridClip.y + gridClip.height;\n end = gridClip.y;\n current = symbol.y;\n }\n }\n }\n\n var ratio = end === start ? 0 : (current - start) / (end - start);\n\n if (isAxisInverse) {\n ratio = 1 - ratio;\n }\n\n var delay = zrUtil.isFunction(seriesDelay) ? seriesDelay(idx) : seriesDuration * ratio + seriesDelayValue;\n var symbolPath = el.getSymbolPath();\n var text = symbolPath.getTextContent();\n el.attr({\n scaleX: 0,\n scaleY: 0\n });\n el.animateTo({\n scaleX: 1,\n scaleY: 1\n }, {\n duration: 200,\n setToFinal: true,\n delay: delay\n });\n\n if (text) {\n text.animateFrom({\n style: {\n opacity: 0\n }\n }, {\n duration: 300,\n delay: delay\n });\n }\n\n symbolPath.disableLabelAnimation = true;\n }\n });\n };\n\n LineView.prototype._initOrUpdateEndLabel = function (seriesModel, coordSys, inheritColor) {\n var endLabelModel = seriesModel.getModel('endLabel');\n\n if (anyStateShowEndLabel(seriesModel)) {\n var data_2 = seriesModel.getData();\n var polyline = this._polyline; // series may be filtered.\n\n var points = data_2.getLayout('points');\n\n if (!points) {\n polyline.removeTextContent();\n this._endLabel = null;\n return;\n }\n\n var endLabel = this._endLabel;\n\n if (!endLabel) {\n endLabel = this._endLabel = new graphic.Text({\n z2: 200 // should be higher than item symbol\n\n });\n endLabel.ignoreClip = true;\n polyline.setTextContent(this._endLabel);\n polyline.disableLabelAnimation = true;\n } // Find last non-NaN data to display data\n\n\n var dataIndex = getLastIndexNotNull(points);\n\n if (dataIndex >= 0) {\n setLabelStyle(polyline, getLabelStatesModels(seriesModel, 'endLabel'), {\n inheritColor: inheritColor,\n labelFetcher: seriesModel,\n labelDataIndex: dataIndex,\n defaultText: function (dataIndex, opt, interpolatedValue) {\n return interpolatedValue != null ? getDefaultInterpolatedLabel(data_2, interpolatedValue) : getDefaultLabel(data_2, dataIndex);\n },\n enableTextSetter: true\n }, getEndLabelStateSpecified(endLabelModel, coordSys));\n polyline.textConfig.position = null;\n }\n } else if (this._endLabel) {\n this._polyline.removeTextContent();\n\n this._endLabel = null;\n }\n };\n\n LineView.prototype._endLabelOnDuring = function (percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) {\n var endLabel = this._endLabel;\n var polyline = this._polyline;\n\n if (endLabel) {\n // NOTE: Don't remove percent < 1. percent === 1 means the first frame during render.\n // The label is not prepared at this time.\n if (percent < 1 && animationRecord.originalX == null) {\n animationRecord.originalX = endLabel.x;\n animationRecord.originalY = endLabel.y;\n }\n\n var points = data.getLayout('points');\n var seriesModel = data.hostModel;\n var connectNulls = seriesModel.get('connectNulls');\n var precision = endLabelModel.get('precision');\n var distance = endLabelModel.get('distance') || 0;\n var baseAxis = coordSys.getBaseAxis();\n var isHorizontal = baseAxis.isHorizontal();\n var isBaseInversed = baseAxis.inverse;\n var clipShape = clipRect.shape;\n var xOrY = isBaseInversed ? isHorizontal ? clipShape.x : clipShape.y + clipShape.height : isHorizontal ? clipShape.x + clipShape.width : clipShape.y;\n var distanceX = (isHorizontal ? distance : 0) * (isBaseInversed ? -1 : 1);\n var distanceY = (isHorizontal ? 0 : -distance) * (isBaseInversed ? -1 : 1);\n var dim = isHorizontal ? 'x' : 'y';\n var dataIndexRange = getIndexRange(points, xOrY, dim);\n var indices = dataIndexRange.range;\n var diff = indices[1] - indices[0];\n var value = void 0;\n\n if (diff >= 1) {\n // diff > 1 && connectNulls, which is on the null data.\n if (diff > 1 && !connectNulls) {\n var pt = getPointAtIndex(points, indices[0]);\n endLabel.attr({\n x: pt[0] + distanceX,\n y: pt[1] + distanceY\n });\n valueAnimation && (value = seriesModel.getRawValue(indices[0]));\n } else {\n var pt = polyline.getPointOn(xOrY, dim);\n pt && endLabel.attr({\n x: pt[0] + distanceX,\n y: pt[1] + distanceY\n });\n var startValue = seriesModel.getRawValue(indices[0]);\n var endValue = seriesModel.getRawValue(indices[1]);\n valueAnimation && (value = modelUtil.interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t));\n }\n\n animationRecord.lastFrameIndex = indices[0];\n } else {\n // If diff <= 0, which is the range is not found(Include NaN)\n // Choose the first point or last point.\n var idx = percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0;\n var pt = getPointAtIndex(points, idx);\n valueAnimation && (value = seriesModel.getRawValue(idx));\n endLabel.attr({\n x: pt[0] + distanceX,\n y: pt[1] + distanceY\n });\n }\n\n if (valueAnimation) {\n labelInner(endLabel).setLabelText(value);\n }\n }\n };\n /**\n * @private\n */\n // FIXME Two value axis\n\n\n LineView.prototype._doUpdateAnimation = function (data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls) {\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, connectNulls);\n stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step, connectNulls);\n next = turnPointsIntoStep(diff.next, coordSys, step, connectNulls);\n stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step, connectNulls);\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.stopAnimation();\n polyline.setShape({\n points: next\n });\n\n if (polygon) {\n polygon.stopAnimation();\n polygon.setShape({\n points: next,\n stackedOnPoints: stackedOnNext\n });\n }\n\n return;\n }\n\n polyline.shape.__points = diff.current;\n polyline.shape.points = current;\n var target = {\n shape: {\n points: next\n }\n }; // Also animate the original points.\n // If points reference is changed when turning into step line.\n\n if (diff.current !== current) {\n target.shape.__points = diff.next;\n } // Stop previous animation.\n\n\n polyline.stopAnimation();\n graphic.updateProps(polyline, target, seriesModel);\n\n if (polygon) {\n polygon.setShape({\n // Reuse the points with polyline.\n points: current,\n stackedOnPoints: stackedOnCurrent\n });\n polygon.stopAnimation();\n graphic.updateProps(polygon, {\n shape: {\n stackedOnPoints: stackedOnNext\n }\n }, seriesModel); // If use attr directly in updateProps.\n\n if (polyline.shape.points !== polygon.shape.points) {\n polygon.shape.points = polyline.shape.points;\n }\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 polygon && polygon.dirtyShape();\n var points = polyline.shape.__points;\n\n for (var i = 0; i < updatedDataInfo.length; i++) {\n var el = updatedDataInfo[i].el;\n var offset = updatedDataInfo[i].ptIdx * 2;\n el.x = points[offset];\n el.y = points[offset + 1];\n el.markRedraw();\n }\n });\n }\n };\n\n LineView.prototype.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._endLabel = this._data = null;\n };\n\n LineView.type = 'line';\n return LineView;\n}(ChartView);\n\nexport default LineView;"]},"metadata":{},"sourceType":"module"}