{"version":3,"sources":["webpack:///./node_modules/echarts/lib/model/referHelper.js","webpack:///./node_modules/echarts/lib/chart/helper/createSeriesData.js","webpack:///./node_modules/echarts/lib/chart/line/LineSeries.js","webpack:///./node_modules/echarts/lib/chart/helper/Symbol.js","webpack:///./node_modules/echarts/lib/chart/helper/SymbolDraw.js","webpack:///./node_modules/echarts/lib/chart/line/helper.js","webpack:///./node_modules/echarts/lib/chart/line/lineAnimationDiff.js","webpack:///./node_modules/echarts/lib/chart/line/poly.js","webpack:///./node_modules/echarts/lib/chart/line/LineView.js","webpack:///./node_modules/echarts/lib/layout/points.js","webpack:///./node_modules/echarts/lib/chart/line/install.js","webpack:///./node_modules/echarts/lib/chart/bar/BaseBarSeries.js","webpack:///./node_modules/echarts/lib/chart/bar/BarSeries.js","webpack:///./node_modules/echarts/lib/label/sectorLabel.js","webpack:///./node_modules/echarts/lib/chart/bar/BarView.js","webpack:///./node_modules/echarts/lib/chart/bar/install.js","webpack:///./node_modules/echarts/lib/coord/CoordinateSystem.js","webpack:///./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js","webpack:///./node_modules/echarts/lib/util/shape/sausage.js","webpack:///./node_modules/echarts/lib/chart/helper/labelHelper.js","webpack:///./node_modules/echarts/lib/processor/dataSample.js"],"names":["CoordSysInfo","coordSysName","this","coordSysDims","axisMap","categoryAxisMap","getCoordSysInfoBySeries","seriesModel","get","result","fetch","fetchers","cartesian2d","xAxisModel","getReferringComponents","models","yAxisModel","set","isCategory","firstCategoryDimIndex","singleAxis","singleAxisModel","polar","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","geo","parallel","ecModel","parallelModel","getComponent","dimensions","slice","parallelAxisIndex","axisIndex","index","axisModel","axisDim","getCoordSysDimDefs","coordSysInfo","coordSysDimDefs","registeredCoordSys","CoordinateSystem","dim","dimInfo","name","axisType","type","getDimensionsInfo","injectOrdinalMeta","dimInfoList","createInvertedIndices","hasNameEncode","dimIndex","coordDim","categoryAxisModel","ordinalMeta","getOrdinalMeta","otherDims","itemName","createSeriesData","sourceRaw","opt","source","sourceManager","getSourceManager","isOriginalSource","getSource","sourceFormat","useEncodeDefaulter","encodeDefaulter","createDimensionOptions","coordDimensions","generateCoord","encodeDefine","getEncode","canOmitUnusedDimensions","schema","store","getSharedDataStore","stackCalculationInfo","data","SeriesData","setCalculationInfo","dimValueGetter","isNeedCompleteOrdinalData","itemOpt","dimName","dataIndex","defaultDimValueGetter","hasItemOption","initData","sampleItem","firstDataNotNull","arr","i","length","_super","LineSeriesModel","_this","apply","arguments","hasSymbolVisual","prototype","getInitialData","option","getLegendIcon","group","Group","line","itemHeight","itemWidth","lineStyle","stroke","add","setStyle","visualType","getData","getVisual","visualRotate","symbolType","size","symbol","itemStyle","fill","symbolRotate","iconRotate","rotation","Math","PI","setOrigin","indexOf","style","lineWidth","dependencies","defaultOption","z","coordinateSystem","legendHoverLink","clip","label","position","endLabel","show","valueAnimation","distance","width","emphasis","scale","step","smooth","smoothMonotone","symbolSize","showSymbol","showAllSymbol","connectNulls","sampling","animationEasing","progressive","hoverLayerThreshold","Infinity","universalTransition","divideShape","triggerLineEvent","Series","LineSeries","Symbol","idx","seriesScope","opts","call","updateData","_createSymbol","keepAspect","removeAll","symbolPath","attr","z2","culling","scaleX","scaleY","drift","driftSymbol","_symbolType","stopSymbolAnimation","toLastFrame","childAt","stopAnimation","getSymbolType","getSymbolPath","highlight","downplay","setZ","zlevel","setDraggable","draggable","hasCursorOption","cursor","silent","getItemVisual","hostModel","getSymbolSize","isInit","disableAnimation","target","_updateCommon","_sizeX","_sizeY","opacity","emphasisItemStyle","blurItemStyle","selectItemStyle","focus","blurScope","emphasisDisabled","labelStatesModels","hoverScale","cursorStyle","itemModel","getItemModel","emphasisModel","getModel","getItemStyle","getShallow","symbolOffset","x","y","symbolStyle","visualColor","pathStyle","useStyle","image","height","__isEmptyBrush","decal","setColor","symbolInnerColor","strokeNoScale","liftZ","z2Origin","_z2","useNameLabel","getLabelDefaultText","getName","labelFetcher","labelDataIndex","defaultText","inheritColor","defaultOpacity","emphasisState","ensureState","scaleRatio","max","isFinite","setSymbolScale","fadeOut","cb","animationOpt","animation","fadeLabel","textContent","getTextContent","removeOpt","removeTextContent","dx","dy","parent","symbolNeedsDraw","point","isNaN","isIgnore","clipShape","contain","normalizeUpdateOpt","makeSeriesScope","SymbolDraw","SymbolCtor","_SymbolCtor","_progressiveEls","oldData","_data","symbolUpdateOpt","getSymbolPoint","getItemLayout","diff","newIdx","symbolEl","setPosition","setItemGraphicEl","update","oldIdx","getItemGraphicEl","newSymbolType","oldSymbolType","remove","el","execute","_getSymbolPoint","updateLayout","eachItemGraphicEl","markRedraw","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","isGroup","incremental","hoverLayer","start","end","traverse","push","eachRendered","graphic","enableAnimation","prepareDataCoordInfo","coordSys","valueOrigin","baseAxis","getBaseAxis","valueAxis","getOtherAxis","valueStart","getValueStart","baseAxisDim","valueAxisDim","valueDim","mapDimension","baseDim","baseDataOffset","dims","stacked","stackResultDim","getCalculationInfo","dataDimsForPoint","stackedOverDimension","extent","getExtent","getStackedOnPoint","dataCoordInfo","value","NaN","stackedData","dataToPoint","diffData","newData","diffResult","cmd","idx1","lineAnimationDiff","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","currPoints","nextPoints","currStackedPoints","nextStackedPoints","status","sortedIndices","rawIndices","newDataOldCoordInfo","oldPoints","getLayout","newPoints","diffItem","pointAdded","oldIdx2","newIdx2","currentX","currentY","nextX","nextY","getRawIndex","newDataDimsForPoint","oldPt","stackedOnPoint","sort","a","b","len","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","i2","idx2","current","next","stackedOnCurrent","stackedOnNext","mathMin","min","mathMax","isPointNull","drawSegment","ctx","points","segLen","allLen","dir","prevX","prevY","cpx0","cpy0","cpx1","cpy1","k","nextIdx","tmpK","ratioNextSeg","vx","vy","nextCpx0","nextCpy0","dx0","dx1","dy0","dy1","lenPrevSeg","lenNextSeg","abs","dir_1","dir_2","sqrt","bezierCurveTo","lineTo","ECPolylineShape","smoothConstraint","ECPolyline","getDefaultStyle","getDefaultShape","buildPath","shape","getPointOn","xOrY","path","createPathProxy","x0","y0","CMD","PathProxy","isDimX","roots","x2","y2","x3","y3","t","M","L","val","C","nRoot","i_1","t_1","Path","ECPolygonShape","ECPolygon","stackedOnPoints","stackedOnSmooth","closePath","isPointsSame","points1","points2","bboxFromPoints","minX","minY","maxX","maxY","getBoundingDiff","_a","min1","max1","_b","min2","max2","getSmooth","getStackedOnPoints","count","pt","turnPointsIntoStep","stepTurnAt","baseIndex","stepPoints","stepPt","nextPt","filteredPoints","middle","stepPt2","clipColorStops","colorStops","maxSize","prevOutOfRangeColorStop","prevInRangeColorStop","newColorStops","lerpStop","stop0","stop1","clippedCoord","coord0","coord","p","color","stop_1","getVisualGradient","api","visualMetaList","visualMeta","getDimensionInfo","dimension","axis","getAxis","stops","stop","toGlobalCoord","dataToCoord","stopLen","outerColors","reverse","colorStopsInRange","getWidth","getHeight","inRangeStopLen","tinyExtent","minCoord","maxCoord","coordSpan","offset","unshift","gradient","getIsIgnoreFunc","isAuto","categoryAxis","getAxesByScale","canShowAllSymbolForCategory","categoryDataDim","labelMap","getViewLabels","labelItem","ordinalNumber","getRawOrdinalNumber","tickValue","hasOwnProperty","axisExtent","availSize","dataLen","round","isHorizontal","getLastIndexNotNull","getPointAtIndex","getIndexRange","dimIdx","prevIndex","nextIndex","range","anyStateShowEndLabel","createLineClipPath","lineView","hasAnimation","endLabelModel_1","valueAnimation_1","data_1","labelAnimationRecord_1","lastFrameIndex","during","percent","clipRect","_endLabelOnDuring","clipPath","_endLabel","originalX","originalY","rectShape","expandSize","getEndLabelStateSpecified","endLabelModel","isBaseInversed","inverse","align","verticalAlign","normal","LineView","init","lineGroup","symbolDraw","_symbolDraw","_lineGroup","render","lineStyleModel","areaStyleModel","isCoordSysPolar","prevCoordSys","_coordSys","polyline","_polyline","polygon","_polygon","ssr","isAnimationEnabled","isAreaChart","isEmpty","isIgnoreFunc","__temp","clipShapeForSymbol","getArea","r0","r","_clipShapeForSymbol","_step","_newPolygon","_initOrUpdateEndLabel","oldClipPath","getClipPath","newClipPath","setClipPath","_stackedOnPoints","_points","_doUpdateAnimation","setShape","_initSymbolLabelAnimation","_newPolyline","getLineStyle","lineJoin","emphasisLineStyle","getState","seriesIndex","stackedOnSeries","getAreaStyle","changePolyState","toState","_changePolyState","onHoverStateChange","_valueOrigin","packEventData","eventData","componentType","componentSubType","componentIndex","seriesName","seriesType","payload","model","Array","symbolLabel","Chart","segmentIgnoreThreshold","isHorizontalOrRadial","isAxisInverse","seriesDuration","seriesDelay","seriesDelayValue","polarClip","pointToCoord","startAngle","endAngle","gridClip","ratio","delay","text","animateTo","duration","setToFinal","animateFrom","disableLabelAnimation","data_2","ignoreClip","setTextContent","interpolatedValue","enableTextSetter","textConfig","animationRecord","precision","distanceX","distanceY","dataIndexRange","indices","getRawValue","startValue","endValue","inner","setLabelText","__points","updatedDataInfo","diffStatus","ptIdx","animators","dirtyShape","pointsLayout","forceStoreInTypedArray","plan","createRenderPlanner","reset","pipelineContext","useTypedArray","large","dimLen","getStore","dimIdx0","getDimensionIndex","dimIdx1","progress","params","segCount","tmpIn","tmpOut","setItemLayout","setLayout","install","registers","registerChartView","registerSeriesModel","registerLayout","registerVisual","setVisual","registerProcessor","PRIORITY","PROCESSOR","STATISTIC","dataSample","BaseBarSeriesModel","getMarkerPosition","startingAtTick","clampData","clampData_1","pt_1","getAxes","tickCoords","getTicksCoords","targetTickId","isEnd","leftCoord","stepTickValue","tickCoord","offsetIndex","barMinHeight","barMinAngle","largeThreshold","progressiveChunkMode","registerClass","BaseBarSeries","BarSeriesModel","getProgressive","getProgressiveThreshold","progressiveThreshold","brushSelector","selectors","rect","roundCap","showBackground","backgroundStyle","borderColor","borderWidth","borderType","borderRadius","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","select","realtimeSort","BarSeries","createSectorCalculateTextPosition","positionMapping","isRoundCap","out","boundingRect","textPosition","mappedSectorPosition","sector","cx","cy","middleR","middleAngle","extraDist","mathCos","cos","mathSin","sin","textAlign","textVerticalAlign","adjustAngleDistanceX","adjustAngleDistanceY","setSectorTextRotation","rotateType","setTextConfig","anchorAngle","clockwise","rotate","angle","getClipArea","coordSysClipArea","onBand","expandWidth","BarView","_isFirstFrame","_model","_removeOnRenderedListener","_updateDrawMode","coordinateSystemType","_isLargeDraw","_renderLarge","_renderNormal","incrementalPrepareRender","_clear","_updateLargeClip","incrementalRender","_incrementalRenderLarge","isLargeDraw","animationModel","realtimeSortCfg","shouldRealtimeSort","_enableRealtimeSort","needsClip","removeClipPath","drawBackground","backgroundModel","barBorderRadius","bgEls","oldBgEls","_backgroundEls","isInitSort","isChangeOrder","createBackground","bgLayout","bgEl","createBackgroundEl","layout","hasValue","isValidLayout","isClipped","elementCreator","forceLabelAnimation","updateStyle","updateRealtimeAnimation","ignore","newIndex","oldIndex","createBackgroundShape","textEl","labelInnerStore","prevValue","bgGroup","_backgroundGroup","createLarge","_removeBackground","_dispatchInitSort","orderMapping_1","_onRendered","_updateSortWithinSameData","getZr","on","_dataSort","orderMapping","info","each","dataIdx","mappedValue","ordinalNumbers","item","_isOrderChangedWithinSameData","ordinalDataDim","lastValue","Number","MAX_VALUE","tickNum","categories","rawIdx","rawIndexOf","MIN_VALUE","indexOfRawIndex","_isOrderDifferentInView","orderInfo","tickMax","sortInfo","dispatchAction","axisId","sortResult","otherAxis","dispose","off","coordSysBoundingRect","signWidth","signHeight","coordSysX2","coordSysY2","xClipped","yClipped","signR","tmp","clipped","isUpdate","Rect","__dataIndex","animateProperty","isRadial","ShapeClass","Sector","positionMap","createPolarPositionMapping","calculateTextPosition","sectorShape","animateTarget","realtimeSortOption","seriesAnimationModel","seriesTarget","axisTarget","axisAnimationModel","checkPropertiesNotValid","obj","props","rectPropties","polarPropties","fixedLineWidth","getLineWidth","signX","signY","isZeroOnPolar","arcOrAngle","isPolar","cornerRadius","labelPositionOutside","defaultOutsidePosition","inside","states","state","rawLayout","LagePathShape","LargePath","baseDimIdx","valueDimIdx","startPoint","barWidth","progressiveEls","largeDataIndices","bgPoints","ignoreCoarsePointer","largePathUpdateDataIndex","throttle","event","largePath","largePathFindDataIndex","offsetX","offsetY","ii","coordLayout","ElementClz","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","registerAction","eachComponent","mainType","query","componentModel","setCategorySortInfo","isCoordinateSystemType","createGridClipPath","cartesian","done","floor","isAxisInversed","duringCb","createPolarClipPath","sectorArea","createClipPath","SausageShape","SausagePath","dr","rCenter","PI2","lessThanCircle","unitStartX","unitStartY","unitEndX","unitEndY","moveTo","arc","getDefaultLabel","labelDims","mapDimensionsAll","rawVal","vals","join","getDefaultInterpolatedLabel","samplers","average","frame","sum","nearest","indexSampler","dpr","getDevicePixelRatio","rate","setData","lttbDownSample","sampler","downSample"],"mappings":"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","file":"js/chunk-cbe5e828.608f0897.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\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * Helper for model references.\r\n * There are many manners to refer axis/coordSys.\r\n */\n// TODO\n// merge relevant logic to this file?\n// check: \"modelHelper\" of tooltip and \"BrushTargetManager\".\nimport { createHashMap, retrieve, each } from 'zrender/lib/core/util.js';\nimport { SINGLE_REFERRING } from '../util/model.js';\n/**\r\n * @class\r\n * For example:\r\n * {\r\n * coordSysName: 'cartesian2d',\r\n * coordSysDims: ['x', 'y', ...],\r\n * axisMap: HashMap({\r\n * x: xAxisModel,\r\n * y: yAxisModel\r\n * }),\r\n * categoryAxisMap: HashMap({\r\n * x: xAxisModel,\r\n * y: undefined\r\n * }),\r\n * // The index of the first category axis in `coordSysDims`.\r\n * // `null/undefined` means no category axis exists.\r\n * firstCategoryDimIndex: 1,\r\n * // To replace user specified encode.\r\n * }\r\n */\n\nvar CoordSysInfo =\n/** @class */\nfunction () {\n function CoordSysInfo(coordSysName) {\n this.coordSysDims = [];\n this.axisMap = createHashMap();\n this.categoryAxisMap = createHashMap();\n this.coordSysName = coordSysName;\n }\n\n return CoordSysInfo;\n}();\n\nexport function getCoordSysInfoBySeries(seriesModel) {\n var coordSysName = seriesModel.get('coordinateSystem');\n var result = new CoordSysInfo(coordSysName);\n var fetch = fetchers[coordSysName];\n\n if (fetch) {\n fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\n return result;\n }\n}\nvar fetchers = {\n cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\n var xAxisModel = seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0];\n var yAxisModel = seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0];\n\n if (process.env.NODE_ENV !== 'production') {\n if (!xAxisModel) {\n throw new Error('xAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('xAxisId'), 0) + '\" not found');\n }\n\n if (!yAxisModel) {\n throw new Error('yAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('yAxisId'), 0) + '\" not found');\n }\n }\n\n result.coordSysDims = ['x', 'y'];\n axisMap.set('x', xAxisModel);\n axisMap.set('y', yAxisModel);\n\n if (isCategory(xAxisModel)) {\n categoryAxisMap.set('x', xAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(yAxisModel)) {\n categoryAxisMap.set('y', yAxisModel);\n result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n }\n },\n singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\n var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\n\n if (process.env.NODE_ENV !== 'production') {\n if (!singleAxisModel) {\n throw new Error('singleAxis should be specified.');\n }\n }\n\n result.coordSysDims = ['single'];\n axisMap.set('single', singleAxisModel);\n\n if (isCategory(singleAxisModel)) {\n categoryAxisMap.set('single', singleAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n },\n polar: function (seriesModel, result, axisMap, categoryAxisMap) {\n var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0];\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\n\n if (process.env.NODE_ENV !== 'production') {\n if (!angleAxisModel) {\n throw new Error('angleAxis option not found');\n }\n\n if (!radiusAxisModel) {\n throw new Error('radiusAxis option not found');\n }\n }\n\n result.coordSysDims = ['radius', 'angle'];\n axisMap.set('radius', radiusAxisModel);\n axisMap.set('angle', angleAxisModel);\n\n if (isCategory(radiusAxisModel)) {\n categoryAxisMap.set('radius', radiusAxisModel);\n result.firstCategoryDimIndex = 0;\n }\n\n if (isCategory(angleAxisModel)) {\n categoryAxisMap.set('angle', angleAxisModel);\n result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n }\n },\n geo: function (seriesModel, result, axisMap, categoryAxisMap) {\n result.coordSysDims = ['lng', 'lat'];\n },\n parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\n var ecModel = seriesModel.ecModel;\n var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\n each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\n var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n var axisDim = coordSysDims[index];\n axisMap.set(axisDim, axisModel);\n\n if (isCategory(axisModel)) {\n categoryAxisMap.set(axisDim, axisModel);\n\n if (result.firstCategoryDimIndex == null) {\n result.firstCategoryDimIndex = index;\n }\n }\n });\n }\n};\n\nfunction isCategory(axisModel) {\n return axisModel.get('type') === 'category';\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/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport prepareSeriesDataSchema from '../../data/helper/createDimensions.js';\nimport { getDimensionTypeByAxis } from '../../data/helper/dimensionHelper.js';\nimport { getDataItemValue } from '../../util/model.js';\nimport CoordinateSystem from '../../core/CoordinateSystem.js';\nimport { getCoordSysInfoBySeries } from '../../model/referHelper.js';\nimport { createSourceFromSeriesDataOption } from '../../data/Source.js';\nimport { enableDataStack } from '../../data/helper/dataStackHelper.js';\nimport { makeSeriesEncodeForAxisCoordSys } from '../../data/helper/sourceHelper.js';\nimport { SOURCE_FORMAT_ORIGINAL } from '../../util/types.js';\n\nfunction getCoordSysDimDefs(seriesModel, coordSysInfo) {\n var coordSysName = seriesModel.get('coordinateSystem');\n var registeredCoordSys = CoordinateSystem.get(coordSysName);\n var coordSysDimDefs;\n\n if (coordSysInfo && coordSysInfo.coordSysDims) {\n coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n var dimInfo = {\n name: dim\n };\n var axisModel = coordSysInfo.axisMap.get(dim);\n\n if (axisModel) {\n var axisType = axisModel.get('type');\n dimInfo.type = getDimensionTypeByAxis(axisType);\n }\n\n return dimInfo;\n });\n }\n\n if (!coordSysDimDefs) {\n // Get dimensions from registered coordinate system\n coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n }\n\n return coordSysDimDefs;\n}\n\nfunction injectOrdinalMeta(dimInfoList, createInvertedIndices, coordSysInfo) {\n var firstCategoryDimIndex;\n var hasNameEncode;\n coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n var coordDim = dimInfo.coordDim;\n var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n if (categoryAxisModel) {\n if (firstCategoryDimIndex == null) {\n firstCategoryDimIndex = dimIndex;\n }\n\n dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n\n if (createInvertedIndices) {\n dimInfo.createInvertedIndices = true;\n }\n }\n\n if (dimInfo.otherDims.itemName != null) {\n hasNameEncode = true;\n }\n });\n\n if (!hasNameEncode && firstCategoryDimIndex != null) {\n dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n }\n\n return firstCategoryDimIndex;\n}\n/**\r\n * Caution: there are side effects to `sourceManager` in this method.\r\n * Should better only be called in `Series['getInitialData']`.\r\n */\n\n\nfunction createSeriesData(sourceRaw, seriesModel, opt) {\n opt = opt || {};\n var sourceManager = seriesModel.getSourceManager();\n var source;\n var isOriginalSource = false;\n\n if (sourceRaw) {\n isOriginalSource = true;\n source = createSourceFromSeriesDataOption(sourceRaw);\n } else {\n source = sourceManager.getSource(); // Is series.data. not dataset.\n\n isOriginalSource = source.sourceFormat === SOURCE_FORMAT_ORIGINAL;\n }\n\n var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n var coordSysDimDefs = getCoordSysDimDefs(seriesModel, coordSysInfo);\n var useEncodeDefaulter = opt.useEncodeDefaulter;\n var encodeDefaulter = zrUtil.isFunction(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null;\n var createDimensionOptions = {\n coordDimensions: coordSysDimDefs,\n generateCoord: opt.generateCoord,\n encodeDefine: seriesModel.getEncode(),\n encodeDefaulter: encodeDefaulter,\n canOmitUnusedDimensions: !isOriginalSource\n };\n var schema = prepareSeriesDataSchema(source, createDimensionOptions);\n var firstCategoryDimIndex = injectOrdinalMeta(schema.dimensions, opt.createInvertedIndices, coordSysInfo);\n var store = !isOriginalSource ? sourceManager.getSharedDataStore(schema) : null;\n var stackCalculationInfo = enableDataStack(seriesModel, {\n schema: schema,\n store: store\n });\n var data = new SeriesData(schema, seriesModel);\n data.setCalculationInfo(stackCalculationInfo);\n var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n // Use dataIndex as ordinal value in categoryAxis\n return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n } : null;\n data.hasItemOption = false;\n data.initData( // Try to reuse the data store in sourceManager if using dataset.\n isOriginalSource ? source : store, null, dimValueGetter);\n return data;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var sampleItem = firstDataNotNull(source.data || []);\n return !zrUtil.isArray(getDataItemValue(sampleItem));\n }\n}\n\nfunction firstDataNotNull(arr) {\n var i = 0;\n\n while (i < arr.length && arr[i] == null) {\n i++;\n }\n\n return arr[i];\n}\n\nexport default createSeriesData;","\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/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesData from '../helper/createSeriesData.js';\nimport SeriesModel from '../../model/Series.js';\nimport { createSymbol } from '../../util/symbol.js';\nimport { Group } from '../../util/graphic.js';\n\nvar LineSeriesModel =\n/** @class */\nfunction (_super) {\n __extends(LineSeriesModel, _super);\n\n function LineSeriesModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = LineSeriesModel.type;\n _this.hasSymbolVisual = true;\n return _this;\n }\n\n LineSeriesModel.prototype.getInitialData = function (option) {\n if (process.env.NODE_ENV !== 'production') {\n var coordSys = option.coordinateSystem;\n\n if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {\n throw new Error('Line not support coordinateSystem besides cartesian and polar');\n }\n }\n\n return createSeriesData(null, this, {\n useEncodeDefaulter: true\n });\n };\n\n LineSeriesModel.prototype.getLegendIcon = function (opt) {\n var group = new Group();\n var line = createSymbol('line', 0, opt.itemHeight / 2, opt.itemWidth, 0, opt.lineStyle.stroke, false);\n group.add(line);\n line.setStyle(opt.lineStyle);\n var visualType = this.getData().getVisual('symbol');\n var visualRotate = this.getData().getVisual('symbolRotate');\n var symbolType = visualType === 'none' ? 'circle' : visualType; // Symbol size is 80% when there is a line\n\n var size = opt.itemHeight * 0.8;\n var symbol = createSymbol(symbolType, (opt.itemWidth - size) / 2, (opt.itemHeight - size) / 2, size, size, opt.itemStyle.fill);\n group.add(symbol);\n symbol.setStyle(opt.itemStyle);\n var symbolRotate = opt.iconRotate === 'inherit' ? visualRotate : opt.iconRotate || 0;\n symbol.rotation = symbolRotate * Math.PI / 180;\n symbol.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]);\n\n if (symbolType.indexOf('empty') > -1) {\n symbol.style.stroke = symbol.style.fill;\n symbol.style.fill = '#fff';\n symbol.style.lineWidth = 2;\n }\n\n return group;\n };\n\n LineSeriesModel.type = 'series.line';\n LineSeriesModel.dependencies = ['grid', 'polar'];\n LineSeriesModel.defaultOption = {\n // zlevel: 0,\n z: 3,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n clip: true,\n label: {\n position: 'top'\n },\n // itemStyle: {\n // },\n endLabel: {\n show: false,\n valueAnimation: true,\n distance: 8\n },\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n emphasis: {\n scale: true\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', 'lttb'.\n sampling: 'none',\n animationEasing: 'linear',\n // Disable progressive\n progressive: 0,\n hoverLayerThreshold: Infinity,\n universalTransition: {\n divideShape: 'clone'\n },\n triggerLineEvent: false\n };\n return LineSeriesModel;\n}(SeriesModel);\n\nexport default LineSeriesModel;","\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/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { createSymbol, normalizeSymbolOffset, normalizeSymbolSize } from '../../util/symbol.js';\nimport * as graphic from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { enterEmphasis, leaveEmphasis, toggleHoverEmphasis } from '../../util/states.js';\nimport { getDefaultLabel } from './labelHelper.js';\nimport { extend } from 'zrender/lib/core/util.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport ZRImage from 'zrender/lib/graphic/Image.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\n\nvar Symbol =\n/** @class */\nfunction (_super) {\n __extends(Symbol, _super);\n\n function Symbol(data, idx, seriesScope, opts) {\n var _this = _super.call(this) || this;\n\n _this.updateData(data, idx, seriesScope, opts);\n\n return _this;\n }\n\n Symbol.prototype._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n // Remove paths created before\n this.removeAll(); // let symbolPath = createSymbol(\n // symbolType, -0.5, -0.5, 1, 1, color\n // );\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4150.\n\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect);\n symbolPath.attr({\n z2: 100,\n culling: true,\n scaleX: symbolSize[0] / 2,\n scaleY: symbolSize[1] / 2\n }); // Rewrite drift method\n\n symbolPath.drift = driftSymbol;\n this._symbolType = symbolType;\n this.add(symbolPath);\n };\n /**\r\n * Stop animation\r\n * @param {boolean} toLastFrame\r\n */\n\n\n Symbol.prototype.stopSymbolAnimation = function (toLastFrame) {\n this.childAt(0).stopAnimation(null, toLastFrame);\n };\n\n Symbol.prototype.getSymbolType = function () {\n return this._symbolType;\n };\n /**\r\n * FIXME:\r\n * Caution: This method breaks the encapsulation of this module,\r\n * but it indeed brings convenience. So do not use the method\r\n * unless you detailedly know all the implements of `Symbol`,\r\n * especially animation.\r\n *\r\n * Get symbol path element.\r\n */\n\n\n Symbol.prototype.getSymbolPath = function () {\n return this.childAt(0);\n };\n /**\r\n * Highlight symbol\r\n */\n\n\n Symbol.prototype.highlight = function () {\n enterEmphasis(this.childAt(0));\n };\n /**\r\n * Downplay symbol\r\n */\n\n\n Symbol.prototype.downplay = function () {\n leaveEmphasis(this.childAt(0));\n };\n /**\r\n * @param {number} zlevel\r\n * @param {number} z\r\n */\n\n\n Symbol.prototype.setZ = function (zlevel, z) {\n var symbolPath = this.childAt(0);\n symbolPath.zlevel = zlevel;\n symbolPath.z = z;\n };\n\n Symbol.prototype.setDraggable = function (draggable, hasCursorOption) {\n var symbolPath = this.childAt(0);\n symbolPath.draggable = draggable;\n symbolPath.cursor = !hasCursorOption && draggable ? 'move' : symbolPath.cursor;\n };\n /**\r\n * Update symbol properties\r\n */\n\n\n Symbol.prototype.updateData = function (data, idx, seriesScope, opts) {\n this.silent = false;\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var seriesModel = data.hostModel;\n var symbolSize = Symbol.getSymbolSize(data, idx);\n var isInit = symbolType !== this._symbolType;\n var disableAnimation = opts && opts.disableAnimation;\n\n if (isInit) {\n var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n\n this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n } else {\n var symbolPath = this.childAt(0);\n symbolPath.silent = false;\n var target = {\n scaleX: symbolSize[0] / 2,\n scaleY: symbolSize[1] / 2\n };\n disableAnimation ? symbolPath.attr(target) : graphic.updateProps(symbolPath, target, seriesModel, idx);\n saveOldStyle(symbolPath);\n }\n\n this._updateCommon(data, idx, symbolSize, seriesScope, opts);\n\n if (isInit) {\n var symbolPath = this.childAt(0);\n\n if (!disableAnimation) {\n var target = {\n scaleX: this._sizeX,\n scaleY: this._sizeY,\n style: {\n // Always fadeIn. Because it has fadeOut animation when symbol is removed..\n opacity: symbolPath.style.opacity\n }\n };\n symbolPath.scaleX = symbolPath.scaleY = 0;\n symbolPath.style.opacity = 0;\n graphic.initProps(symbolPath, target, seriesModel, idx);\n }\n }\n\n if (disableAnimation) {\n // Must stop leave transition manually if don't call initProps or updateProps.\n this.childAt(0).stopAnimation('leave');\n }\n };\n\n Symbol.prototype._updateCommon = function (data, idx, symbolSize, seriesScope, opts) {\n var symbolPath = this.childAt(0);\n var seriesModel = data.hostModel;\n var emphasisItemStyle;\n var blurItemStyle;\n var selectItemStyle;\n var focus;\n var blurScope;\n var emphasisDisabled;\n var labelStatesModels;\n var hoverScale;\n var cursorStyle;\n\n if (seriesScope) {\n emphasisItemStyle = seriesScope.emphasisItemStyle;\n blurItemStyle = seriesScope.blurItemStyle;\n selectItemStyle = seriesScope.selectItemStyle;\n focus = seriesScope.focus;\n blurScope = seriesScope.blurScope;\n labelStatesModels = seriesScope.labelStatesModels;\n hoverScale = seriesScope.hoverScale;\n cursorStyle = seriesScope.cursorStyle;\n emphasisDisabled = seriesScope.emphasisDisabled;\n }\n\n if (!seriesScope || data.hasItemOption) {\n var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx);\n var emphasisModel = itemModel.getModel('emphasis');\n emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle();\n selectItemStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\n blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\n focus = emphasisModel.get('focus');\n blurScope = emphasisModel.get('blurScope');\n emphasisDisabled = emphasisModel.get('disabled');\n labelStatesModels = getLabelStatesModels(itemModel);\n hoverScale = emphasisModel.getShallow('scale');\n cursorStyle = itemModel.getShallow('cursor');\n }\n\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, 'symbolOffset'), symbolSize);\n\n if (symbolOffset) {\n symbolPath.x = symbolOffset[0];\n symbolPath.y = symbolOffset[1];\n }\n\n cursorStyle && symbolPath.attr('cursor', cursorStyle);\n var symbolStyle = data.getItemVisual(idx, 'style');\n var visualColor = symbolStyle.fill;\n\n if (symbolPath instanceof ZRImage) {\n var pathStyle = symbolPath.style;\n symbolPath.useStyle(extend({\n // TODO other properties like x, y ?\n image: pathStyle.image,\n x: pathStyle.x,\n y: pathStyle.y,\n width: pathStyle.width,\n height: pathStyle.height\n }, symbolStyle));\n } else {\n if (symbolPath.__isEmptyBrush) {\n // fill and stroke will be swapped if it's empty.\n // So we cloned a new style to avoid it affecting the original style in visual storage.\n // TODO Better implementation. No empty logic!\n symbolPath.useStyle(extend({}, symbolStyle));\n } else {\n symbolPath.useStyle(symbolStyle);\n } // Disable decal because symbol scale will been applied on the decal.\n\n\n symbolPath.style.decal = null;\n symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);\n symbolPath.style.strokeNoScale = true;\n }\n\n var liftZ = data.getItemVisual(idx, 'liftZ');\n var z2Origin = this._z2;\n\n if (liftZ != null) {\n if (z2Origin == null) {\n this._z2 = symbolPath.z2;\n symbolPath.z2 += liftZ;\n }\n } else if (z2Origin != null) {\n symbolPath.z2 = z2Origin;\n this._z2 = null;\n }\n\n var useNameLabel = opts && opts.useNameLabel;\n setLabelStyle(symbolPath, labelStatesModels, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: getLabelDefaultText,\n inheritColor: visualColor,\n defaultOpacity: symbolStyle.opacity\n }); // Do not execute util needed.\n\n function getLabelDefaultText(idx) {\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n }\n\n this._sizeX = symbolSize[0] / 2;\n this._sizeY = symbolSize[1] / 2;\n var emphasisState = symbolPath.ensureState('emphasis');\n emphasisState.style = emphasisItemStyle;\n symbolPath.ensureState('select').style = selectItemStyle;\n symbolPath.ensureState('blur').style = blurItemStyle; // null / undefined / true means to use default strategy.\n // 0 / false / negative number / NaN / Infinity means no scale.\n\n var scaleRatio = hoverScale == null || hoverScale === true ? Math.max(1.1, 3 / this._sizeY) // PENDING: restrict hoverScale > 1? It seems unreasonable to scale down\n : isFinite(hoverScale) && hoverScale > 0 ? +hoverScale : 1; // always set scale to allow resetting\n\n emphasisState.scaleX = this._sizeX * scaleRatio;\n emphasisState.scaleY = this._sizeY * scaleRatio;\n this.setSymbolScale(1);\n toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);\n };\n\n Symbol.prototype.setSymbolScale = function (scale) {\n this.scaleX = this.scaleY = scale;\n };\n\n Symbol.prototype.fadeOut = function (cb, seriesModel, opt) {\n var symbolPath = this.childAt(0);\n var dataIndex = getECData(this).dataIndex;\n var animationOpt = opt && opt.animation; // Avoid mistaken hover when fading out\n\n this.silent = symbolPath.silent = true; // Not show text when animating\n\n if (opt && opt.fadeLabel) {\n var textContent = symbolPath.getTextContent();\n\n if (textContent) {\n graphic.removeElement(textContent, {\n style: {\n opacity: 0\n }\n }, seriesModel, {\n dataIndex: dataIndex,\n removeOpt: animationOpt,\n cb: function () {\n symbolPath.removeTextContent();\n }\n });\n }\n } else {\n symbolPath.removeTextContent();\n }\n\n graphic.removeElement(symbolPath, {\n style: {\n opacity: 0\n },\n scaleX: 0,\n scaleY: 0\n }, seriesModel, {\n dataIndex: dataIndex,\n cb: cb,\n removeOpt: animationOpt\n });\n };\n\n Symbol.getSymbolSize = function (data, idx) {\n return normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n };\n\n return Symbol;\n}(graphic.Group);\n\nfunction driftSymbol(dx, dy) {\n this.parent.drift(dx, dy);\n}\n\nexport default Symbol;","\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/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as graphic from '../../util/graphic.js';\nimport SymbolClz from './Symbol.js';\nimport { isObject } from 'zrender/lib/core/util.js';\nimport { getLabelStatesModels } from '../../label/labelStyle.js';\n\nfunction symbolNeedsDraw(data, point, idx, opt) {\n return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) // We do not set clipShape on group, because it will cut part of\n // the symbol element shape. We use the same clip shape here as\n // the line clip.\n && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\n\nfunction normalizeUpdateOpt(opt) {\n if (opt != null && !isObject(opt)) {\n opt = {\n isIgnore: opt\n };\n }\n\n return opt || {};\n}\n\nfunction makeSeriesScope(data) {\n var seriesModel = data.hostModel;\n var emphasisModel = seriesModel.getModel('emphasis');\n return {\n emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(),\n blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(),\n selectItemStyle: seriesModel.getModel(['select', 'itemStyle']).getItemStyle(),\n focus: emphasisModel.get('focus'),\n blurScope: emphasisModel.get('blurScope'),\n emphasisDisabled: emphasisModel.get('disabled'),\n hoverScale: emphasisModel.get('scale'),\n labelStatesModels: getLabelStatesModels(seriesModel),\n cursorStyle: seriesModel.get('cursor')\n };\n}\n\nvar SymbolDraw =\n/** @class */\nfunction () {\n function SymbolDraw(SymbolCtor) {\n this.group = new graphic.Group();\n this._SymbolCtor = SymbolCtor || SymbolClz;\n }\n /**\r\n * Update symbols draw by new data\r\n */\n\n\n SymbolDraw.prototype.updateData = function (data, opt) {\n // Remove progressive els.\n this._progressiveEls = null;\n opt = normalizeUpdateOpt(opt);\n var group = this.group;\n var seriesModel = data.hostModel;\n var oldData = this._data;\n var SymbolCtor = this._SymbolCtor;\n var disableAnimation = opt.disableAnimation;\n var seriesScope = makeSeriesScope(data);\n var symbolUpdateOpt = {\n disableAnimation: disableAnimation\n };\n\n var getSymbolPoint = opt.getSymbolPoint || function (idx) {\n return data.getItemLayout(idx);\n }; // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n\n if (!oldData) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n var point = getSymbolPoint(newIdx);\n\n if (symbolNeedsDraw(data, point, newIdx, opt)) {\n var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\n symbolEl.setPosition(point);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\n var point = getSymbolPoint(newIdx);\n\n if (!symbolNeedsDraw(data, point, newIdx, opt)) {\n group.remove(symbolEl);\n return;\n }\n\n var newSymbolType = data.getItemVisual(newIdx, 'symbol') || 'circle';\n var oldSymbolType = symbolEl && symbolEl.getSymbolType && symbolEl.getSymbolType();\n\n if (!symbolEl // Create a new if symbol type changed.\n || oldSymbolType && oldSymbolType !== newSymbolType) {\n group.remove(symbolEl);\n symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\n symbolEl.setPosition(point);\n } else {\n symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt);\n var target = {\n x: point[0],\n y: point[1]\n };\n disableAnimation ? symbolEl.attr(target) : graphic.updateProps(symbolEl, target, seriesModel);\n } // Add back\n\n\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && el.fadeOut(function () {\n group.remove(el);\n }, seriesModel);\n }).execute();\n this._getSymbolPoint = getSymbolPoint;\n this._data = data;\n };\n\n ;\n\n SymbolDraw.prototype.updateLayout = function () {\n var _this = this;\n\n var data = this._data;\n\n if (data) {\n // Not use animation\n data.eachItemGraphicEl(function (el, idx) {\n var point = _this._getSymbolPoint(idx);\n\n el.setPosition(point);\n el.markRedraw();\n });\n }\n };\n\n ;\n\n SymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\n this._seriesScope = makeSeriesScope(data);\n this._data = null;\n this.group.removeAll();\n };\n\n ;\n /**\r\n * Update symbols draw by new data\r\n */\n\n SymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\n // Clear\n this._progressiveEls = [];\n opt = normalizeUpdateOpt(opt);\n\n function updateIncrementalAndHover(el) {\n if (!el.isGroup) {\n el.incremental = true;\n el.ensureState('emphasis').hoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var point = data.getItemLayout(idx);\n\n if (symbolNeedsDraw(data, point, idx, opt)) {\n var el = new this._SymbolCtor(data, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n el.setPosition(point);\n this.group.add(el);\n data.setItemGraphicEl(idx, el);\n\n this._progressiveEls.push(el);\n }\n }\n };\n\n ;\n\n SymbolDraw.prototype.eachRendered = function (cb) {\n graphic.traverseElements(this._progressiveEls || this.group, cb);\n };\n\n SymbolDraw.prototype.remove = function (enableAnimation) {\n var group = this.group;\n var data = this._data; // Incremental model do not have this._data.\n\n if (data && enableAnimation) {\n data.eachItemGraphicEl(function (el) {\n el.fadeOut(function () {\n group.remove(el);\n }, data.hostModel);\n });\n } else {\n group.removeAll();\n }\n };\n\n ;\n return SymbolDraw;\n}();\n\nexport default SymbolDraw;","\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/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isDimensionStacked } from '../../data/helper/dataStackHelper.js';\nimport { isNumber, map } from 'zrender/lib/core/util.js';\nexport function 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 = false;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (isDimensionStacked(data, dims[0]\n /* , dims[1] */\n )) {\n // jshint ignore:line\n stacked = true;\n dims[0] = stackResultDim;\n }\n\n if (isDimensionStacked(data, dims[1]\n /* , dims[0] */\n )) {\n // jshint ignore:line\n stacked = true;\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 } // If origin is specified as a number, use it as\n // valueStart directly\n else if (isNumber(valueOrigin) && !isNaN(valueOrigin)) {\n valueStart = valueOrigin;\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\nexport function 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/*\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/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { prepareDataCoordInfo, getStackedOnPoint } from './helper.js';\nimport { createFloat32Array } from '../../util/vendor.js';\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\nexport default function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\n var diff = diffData(oldData, newData); // let newIdList = newData.mapArray(newData.getId);\n // let 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); // const oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\n\n var oldPoints = oldData.getLayout('points') || [];\n var newPoints = newData.getLayout('points') || [];\n\n for (var i = 0; i < diff.length; i++) {\n var diffItem = diff[i];\n var pointAdded = true;\n var oldIdx2 = void 0;\n var newIdx2 = void 0; // 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 oldIdx2 = diffItem.idx * 2;\n newIdx2 = diffItem.idx1 * 2;\n var currentX = oldPoints[oldIdx2];\n var currentY = oldPoints[oldIdx2 + 1];\n var nextX = newPoints[newIdx2];\n var nextY = newPoints[newIdx2 + 1]; // If previous data is NaN, use next point directly\n\n if (isNaN(currentX) || isNaN(currentY)) {\n currentX = nextX;\n currentY = nextY;\n }\n\n currPoints.push(currentX, currentY);\n nextPoints.push(nextX, nextY);\n currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);\n nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\n rawIndices.push(newData.getRawIndex(diffItem.idx1));\n break;\n\n case '+':\n var newIdx = diffItem.idx;\n var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint;\n var oldPt = oldCoordSys.dataToPoint([newData.get(newDataDimsForPoint[0], newIdx), newData.get(newDataDimsForPoint[1], newIdx)]);\n newIdx2 = newIdx * 2;\n currPoints.push(oldPt[0], oldPt[1]);\n nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]);\n var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx);\n currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]);\n nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\n rawIndices.push(newData.getRawIndex(newIdx));\n break;\n\n case '-':\n pointAdded = false;\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 len = currPoints.length;\n var sortedCurrPoints = createFloat32Array(len);\n var sortedNextPoints = createFloat32Array(len);\n var sortedCurrStackedPoints = createFloat32Array(len);\n var sortedNextStackedPoints = createFloat32Array(len);\n var sortedStatus = [];\n\n for (var i = 0; i < sortedIndices.length; i++) {\n var idx = sortedIndices[i];\n var i2 = i * 2;\n var idx2 = idx * 2;\n sortedCurrPoints[i2] = currPoints[idx2];\n sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1];\n sortedNextPoints[i2] = nextPoints[idx2];\n sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1];\n sortedCurrStackedPoints[i2] = currStackedPoints[idx2];\n sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1];\n sortedNextStackedPoints[i2] = nextStackedPoints[idx2];\n sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1];\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/*\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/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\"; // Poly path support NaN point\n\nimport Path from 'zrender/lib/graphic/Path.js';\nimport PathProxy from 'zrender/lib/core/PathProxy.js';\nimport { cubicRootAt, cubicAt } from 'zrender/lib/core/curve.js';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\n\nfunction isPointNull(x, y) {\n return isNaN(x) || isNaN(y);\n}\n/**\r\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\r\n * situations. This should be used when points are non-monotone neither in x or\r\n * y dimension.\r\n */\n\n\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smooth, smoothMonotone, connectNulls) {\n var prevX;\n var prevY;\n var cpx0;\n var cpy0;\n var cpx1;\n var cpy1;\n var idx = start;\n var k = 0;\n\n for (; k < segLen; k++) {\n var x = points[idx * 2];\n var y = points[idx * 2 + 1];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(x, y)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](x, y);\n cpx0 = x;\n cpy0 = y;\n } else {\n var dx = x - prevX;\n var dy = y - prevY; // Ignore tiny segment.\n\n if (dx * dx + dy * dy < 0.5) {\n idx += dir;\n continue;\n }\n\n if (smooth > 0) {\n var nextIdx = idx + dir;\n var nextX = points[nextIdx * 2];\n var nextY = points[nextIdx * 2 + 1]; // Ignore duplicate point\n\n while (nextX === x && nextY === y && k < segLen) {\n k++;\n nextIdx += dir;\n idx += dir;\n nextX = points[nextIdx * 2];\n nextY = points[nextIdx * 2 + 1];\n x = points[idx * 2];\n y = points[idx * 2 + 1];\n dx = x - prevX;\n dy = y - prevY;\n }\n\n var tmpK = k + 1;\n\n if (connectNulls) {\n // Find next point not null\n while (isPointNull(nextX, nextY) && tmpK < segLen) {\n tmpK++;\n nextIdx += dir;\n nextX = points[nextIdx * 2];\n nextY = points[nextIdx * 2 + 1];\n }\n }\n\n var ratioNextSeg = 0.5;\n var vx = 0;\n var vy = 0;\n var nextCpx0 = void 0;\n var nextCpy0 = void 0; // Is last point\n\n if (tmpK >= segLen || isPointNull(nextX, nextY)) {\n cpx1 = x;\n cpy1 = y;\n } else {\n vx = nextX - prevX;\n vy = nextY - prevY;\n var dx0 = x - prevX;\n var dx1 = nextX - x;\n var dy0 = y - prevY;\n var dy1 = nextY - y;\n var lenPrevSeg = void 0;\n var lenNextSeg = void 0;\n\n if (smoothMonotone === 'x') {\n lenPrevSeg = Math.abs(dx0);\n lenNextSeg = Math.abs(dx1);\n var dir_1 = vx > 0 ? 1 : -1;\n cpx1 = x - dir_1 * lenPrevSeg * smooth;\n cpy1 = y;\n nextCpx0 = x + dir_1 * lenNextSeg * smooth;\n nextCpy0 = y;\n } else if (smoothMonotone === 'y') {\n lenPrevSeg = Math.abs(dy0);\n lenNextSeg = Math.abs(dy1);\n var dir_2 = vy > 0 ? 1 : -1;\n cpx1 = x;\n cpy1 = y - dir_2 * lenPrevSeg * smooth;\n nextCpx0 = x;\n nextCpy0 = y + dir_2 * lenNextSeg * smooth;\n } else {\n lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0);\n lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1); // Use ratio of seg length\n\n ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n cpx1 = x - vx * smooth * (1 - ratioNextSeg);\n cpy1 = y - vy * smooth * (1 - ratioNextSeg); // cp0 of next segment\n\n nextCpx0 = x + vx * smooth * ratioNextSeg;\n nextCpy0 = y + vy * smooth * ratioNextSeg; // Smooth constraint between point and next point.\n // Avoid exceeding extreme after smoothing.\n\n nextCpx0 = mathMin(nextCpx0, mathMax(nextX, x));\n nextCpy0 = mathMin(nextCpy0, mathMax(nextY, y));\n nextCpx0 = mathMax(nextCpx0, mathMin(nextX, x));\n nextCpy0 = mathMax(nextCpy0, mathMin(nextY, y)); // Reclaculate cp1 based on the adjusted cp0 of next seg.\n\n vx = nextCpx0 - x;\n vy = nextCpy0 - y;\n cpx1 = x - vx * lenPrevSeg / lenNextSeg;\n cpy1 = y - vy * lenPrevSeg / lenNextSeg; // Smooth constraint between point and prev point.\n // Avoid exceeding extreme after smoothing.\n\n cpx1 = mathMin(cpx1, mathMax(prevX, x));\n cpy1 = mathMin(cpy1, mathMax(prevY, y));\n cpx1 = mathMax(cpx1, mathMin(prevX, x));\n cpy1 = mathMax(cpy1, mathMin(prevY, y)); // Adjust next cp0 again.\n\n vx = x - cpx1;\n vy = y - cpy1;\n nextCpx0 = x + vx * lenNextSeg / lenPrevSeg;\n nextCpy0 = y + vy * lenNextSeg / lenPrevSeg;\n }\n }\n\n ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y);\n cpx0 = nextCpx0;\n cpy0 = nextCpy0;\n } else {\n ctx.lineTo(x, y);\n }\n }\n\n prevX = x;\n prevY = y;\n idx += dir;\n }\n\n return k;\n}\n\nvar ECPolylineShape =\n/** @class */\nfunction () {\n function ECPolylineShape() {\n this.smooth = 0;\n this.smoothConstraint = true;\n }\n\n return ECPolylineShape;\n}();\n\nvar ECPolyline =\n/** @class */\nfunction (_super) {\n __extends(ECPolyline, _super);\n\n function ECPolyline(opts) {\n var _this = _super.call(this, opts) || this;\n\n _this.type = 'ec-polyline';\n return _this;\n }\n\n ECPolyline.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n\n ECPolyline.prototype.getDefaultShape = function () {\n return new ECPolylineShape();\n };\n\n ECPolyline.prototype.buildPath = function (ctx, shape) {\n var points = shape.points;\n var i = 0;\n var len = points.length / 2; // const 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 * 2 - 2], points[len * 2 - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\n break;\n }\n }\n }\n\n while (i < len) {\n i += drawSegment(ctx, points, i, len, len, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n }\n };\n\n ECPolyline.prototype.getPointOn = function (xOrY, dim) {\n if (!this.path) {\n this.createPathProxy();\n this.buildPath(this.path, this.shape);\n }\n\n var path = this.path;\n var data = path.data;\n var CMD = PathProxy.CMD;\n var x0;\n var y0;\n var isDimX = dim === 'x';\n var roots = [];\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n var x = void 0;\n var y = void 0;\n var x2 = void 0;\n var y2 = void 0;\n var x3 = void 0;\n var y3 = void 0;\n var t = void 0;\n\n switch (cmd) {\n case CMD.M:\n x0 = data[i++];\n y0 = data[i++];\n break;\n\n case CMD.L:\n x = data[i++];\n y = data[i++];\n t = isDimX ? (xOrY - x0) / (x - x0) : (xOrY - y0) / (y - y0);\n\n if (t <= 1 && t >= 0) {\n var val = isDimX ? (y - y0) * t + y0 : (x - x0) * t + x0;\n return isDimX ? [xOrY, val] : [val, xOrY];\n }\n\n x0 = x;\n y0 = y;\n break;\n\n case CMD.C:\n x = data[i++];\n y = data[i++];\n x2 = data[i++];\n y2 = data[i++];\n x3 = data[i++];\n y3 = data[i++];\n var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots) : cubicRootAt(y0, y, y2, y3, xOrY, roots);\n\n if (nRoot > 0) {\n for (var i_1 = 0; i_1 < nRoot; i_1++) {\n var t_1 = roots[i_1];\n\n if (t_1 <= 1 && t_1 >= 0) {\n var val = isDimX ? cubicAt(y0, y, y2, y3, t_1) : cubicAt(x0, x, x2, x3, t_1);\n return isDimX ? [xOrY, val] : [val, xOrY];\n }\n }\n }\n\n x0 = x3;\n y0 = y3;\n break;\n }\n }\n };\n\n return ECPolyline;\n}(Path);\n\nexport { ECPolyline };\n\nvar ECPolygonShape =\n/** @class */\nfunction (_super) {\n __extends(ECPolygonShape, _super);\n\n function ECPolygonShape() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return ECPolygonShape;\n}(ECPolylineShape);\n\nvar ECPolygon =\n/** @class */\nfunction (_super) {\n __extends(ECPolygon, _super);\n\n function ECPolygon(opts) {\n var _this = _super.call(this, opts) || this;\n\n _this.type = 'ec-polygon';\n return _this;\n }\n\n ECPolygon.prototype.getDefaultShape = function () {\n return new ECPolygonShape();\n };\n\n ECPolygon.prototype.buildPath = function (ctx, shape) {\n var points = shape.points;\n var stackedOnPoints = shape.stackedOnPoints;\n var i = 0;\n var len = points.length / 2;\n var smoothMonotone = shape.smoothMonotone;\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 * 2 - 2], points[len * 2 - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\n break;\n }\n }\n }\n\n while (i < len) {\n var k = drawSegment(ctx, points, i, len, len, 1, shape.smooth, smoothMonotone, shape.connectNulls);\n drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n i += k + 1;\n ctx.closePath();\n }\n };\n\n return ECPolygon;\n}(Path);\n\nexport { ECPolygon };","\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/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\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/**\r\n * Clip color stops to edge. Avoid creating too large gradients.\r\n * Which may lead to blurry when GPU acceleration is enabled. See #15680\r\n *\r\n * The stops has been sorted from small to large.\r\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 var inner = labelInner(endLabel);\n\n if (typeof inner.setLabelText === 'function') {\n inner.setLabelText(value);\n }\n }\n }\n };\n /**\r\n * @private\r\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;","\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/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { map } from 'zrender/lib/core/util.js';\nimport createRenderPlanner from '../chart/helper/createRenderPlanner.js';\nimport { isDimensionStacked } from '../data/helper/dataStackHelper.js';\nimport { createFloat32Array } from '../util/vendor.js';\nexport default function pointsLayout(seriesType, forceStoreInTypedArray) {\n return {\n seriesType: seriesType,\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem;\n var pipelineContext = seriesModel.pipelineContext;\n var useTypedArray = forceStoreInTypedArray || pipelineContext.large;\n\n if (!coordSys) {\n return;\n }\n\n var dims = map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }).slice(0, 2);\n var dimLen = dims.length;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (isDimensionStacked(data, dims[0])) {\n dims[0] = stackResultDim;\n }\n\n if (isDimensionStacked(data, dims[1])) {\n dims[1] = stackResultDim;\n }\n\n var store = data.getStore();\n var dimIdx0 = data.getDimensionIndex(dims[0]);\n var dimIdx1 = data.getDimensionIndex(dims[1]);\n return dimLen && {\n progress: function (params, data) {\n var segCount = params.end - params.start;\n var points = useTypedArray && createFloat32Array(segCount * dimLen);\n var tmpIn = [];\n var tmpOut = [];\n\n for (var i = params.start, offset = 0; i < params.end; i++) {\n var point = void 0;\n\n if (dimLen === 1) {\n var x = store.get(dimIdx0, i); // NOTE: Make sure the second parameter is null to use default strategy.\n\n point = coordSys.dataToPoint(x, null, tmpOut);\n } else {\n tmpIn[0] = store.get(dimIdx0, i);\n tmpIn[1] = store.get(dimIdx1, i); // Let coordinate system to handle the NaN data.\n\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n }\n\n if (useTypedArray) {\n points[offset++] = point[0];\n points[offset++] = point[1];\n } else {\n data.setItemLayout(i, point.slice());\n }\n }\n\n useTypedArray && data.setLayout('points', points);\n }\n };\n }\n };\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*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport LineSeries from './LineSeries.js';\nimport LineView from './LineView.js'; // In case developer forget to include grid component\n\nimport layoutPoints from '../../layout/points.js';\nimport dataSample from '../../processor/dataSample.js';\nexport function install(registers) {\n registers.registerChartView(LineView);\n registers.registerSeriesModel(LineSeries);\n registers.registerLayout(layoutPoints('line', true));\n registers.registerVisual({\n seriesType: 'line',\n reset: function (seriesModel) {\n var data = seriesModel.getData(); // Visual coding for legend\n\n var lineStyle = seriesModel.getModel('lineStyle').getLineStyle();\n\n if (lineStyle && !lineStyle.stroke) {\n // Fill in visual should be palette color if\n // has color callback\n lineStyle.stroke = data.getVisual('style').fill;\n }\n\n data.setVisual('legendLineStyle', lineStyle);\n }\n }); // Down sample after filter\n\n registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport SeriesModel from '../../model/Series.js';\nimport createSeriesData from '../helper/createSeriesData.js';\nimport { each } from 'zrender/lib/core/util.js';\n\nvar BaseBarSeriesModel =\n/** @class */\nfunction (_super) {\n __extends(BaseBarSeriesModel, _super);\n\n function BaseBarSeriesModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = BaseBarSeriesModel.type;\n return _this;\n }\n\n BaseBarSeriesModel.prototype.getInitialData = function (option, ecModel) {\n return createSeriesData(null, this, {\n useEncodeDefaulter: true\n });\n };\n\n BaseBarSeriesModel.prototype.getMarkerPosition = function (value, dims, startingAtTick) {\n var coordSys = this.coordinateSystem;\n\n if (coordSys && coordSys.clampData) {\n // PENDING if clamp ?\n var clampData_1 = coordSys.clampData(value);\n var pt_1 = coordSys.dataToPoint(clampData_1);\n\n if (startingAtTick) {\n each(coordSys.getAxes(), function (axis, idx) {\n // If axis type is category, use tick coords instead\n if (axis.type === 'category' && dims != null) {\n var tickCoords = axis.getTicksCoords();\n var targetTickId = clampData_1[idx]; // The index of rightmost tick of markArea is 1 larger than x1/y1 index\n\n var isEnd = dims[idx] === 'x1' || dims[idx] === 'y1';\n\n if (isEnd) {\n targetTickId += 1;\n } // The only contains one tick, tickCoords is\n // like [{coord: 0, tickValue: 0}, {coord: 0}]\n // to the length should always be larger than 1\n\n\n if (tickCoords.length < 2) {\n return;\n } else if (tickCoords.length === 2) {\n // The left value and right value of the axis are\n // the same. coord is 0 in both items. Use the max\n // value of the axis as the coord\n pt_1[idx] = axis.toGlobalCoord(axis.getExtent()[isEnd ? 1 : 0]);\n return;\n }\n\n var leftCoord = void 0;\n var coord = void 0;\n var stepTickValue = 1;\n\n for (var i = 0; i < tickCoords.length; i++) {\n var tickCoord = tickCoords[i].coord; // The last item of tickCoords doesn't contain\n // tickValue\n\n var tickValue = i === tickCoords.length - 1 ? tickCoords[i - 1].tickValue + stepTickValue : tickCoords[i].tickValue;\n\n if (tickValue === targetTickId) {\n coord = tickCoord;\n break;\n } else if (tickValue < targetTickId) {\n leftCoord = tickCoord;\n } else if (leftCoord != null && tickValue > targetTickId) {\n coord = (tickCoord + leftCoord) / 2;\n break;\n }\n\n if (i === 1) {\n // Here we assume the step of category axes is\n // the same\n stepTickValue = tickValue - tickCoords[0].tickValue;\n }\n }\n\n if (coord == null) {\n if (!leftCoord) {\n // targetTickId is smaller than all tick ids in the\n // visible area, use the leftmost tick coord\n coord = tickCoords[0].coord;\n } else if (leftCoord) {\n // targetTickId is larger than all tick ids in the\n // visible area, use the rightmost tick coord\n coord = tickCoords[tickCoords.length - 1].coord;\n }\n }\n\n pt_1[idx] = axis.toGlobalCoord(coord);\n }\n });\n } else {\n var data = this.getData();\n var offset = data.getLayout('offset');\n var size = data.getLayout('size');\n var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\n pt_1[offsetIndex] += offset + size / 2;\n }\n\n return pt_1;\n }\n\n return [NaN, NaN];\n };\n\n BaseBarSeriesModel.type = 'series.__base_bar__';\n BaseBarSeriesModel.defaultOption = {\n // zlevel: 0,\n z: 2,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n // stack: null\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n barMinHeight: 0,\n barMinAngle: 0,\n // cursor: null,\n large: false,\n largeThreshold: 400,\n progressive: 3e3,\n progressiveChunkMode: 'mod'\n };\n return BaseBarSeriesModel;\n}(SeriesModel);\n\nSeriesModel.registerClass(BaseBarSeriesModel);\nexport default BaseBarSeriesModel;","\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/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport BaseBarSeriesModel from './BaseBarSeries.js';\nimport createSeriesData from '../helper/createSeriesData.js';\nimport { inheritDefaultOption } from '../../util/component.js';\n\nvar BarSeriesModel =\n/** @class */\nfunction (_super) {\n __extends(BarSeriesModel, _super);\n\n function BarSeriesModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = BarSeriesModel.type;\n return _this;\n }\n\n BarSeriesModel.prototype.getInitialData = function () {\n return createSeriesData(null, this, {\n useEncodeDefaulter: true,\n createInvertedIndices: !!this.get('realtimeSort', true) || null\n });\n };\n /**\r\n * @override\r\n */\n\n\n BarSeriesModel.prototype.getProgressive = function () {\n // Do not support progressive in normal mode.\n return this.get('large') ? this.get('progressive') : false;\n };\n /**\r\n * @override\r\n */\n\n\n BarSeriesModel.prototype.getProgressiveThreshold = function () {\n // Do not support progressive in normal mode.\n var progressiveThreshold = this.get('progressiveThreshold');\n var largeThreshold = this.get('largeThreshold');\n\n if (largeThreshold > progressiveThreshold) {\n progressiveThreshold = largeThreshold;\n }\n\n return progressiveThreshold;\n };\n\n BarSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\n return selectors.rect(data.getItemLayout(dataIndex));\n };\n\n BarSeriesModel.type = 'series.bar';\n BarSeriesModel.dependencies = ['grid', 'polar'];\n BarSeriesModel.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, {\n // If clipped\n // Only available on cartesian2d\n clip: true,\n roundCap: false,\n showBackground: false,\n backgroundStyle: {\n color: 'rgba(180, 180, 180, 0.2)',\n borderColor: null,\n borderWidth: 0,\n borderType: 'solid',\n borderRadius: 0,\n shadowBlur: 0,\n shadowColor: null,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n opacity: 1\n },\n select: {\n itemStyle: {\n borderColor: '#212121'\n }\n },\n realtimeSort: false\n });\n return BarSeriesModel;\n}(BaseBarSeriesModel);\n\nexport default BarSeriesModel;","\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/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { calculateTextPosition } from 'zrender/lib/contain/text.js';\nimport { isArray, isNumber } from 'zrender/lib/core/util.js';\nexport function createSectorCalculateTextPosition(positionMapping, opts) {\n opts = opts || {};\n var isRoundCap = opts.isRoundCap;\n return function (out, opts, boundingRect) {\n var textPosition = opts.position;\n\n if (!textPosition || textPosition instanceof Array) {\n return calculateTextPosition(out, opts, boundingRect);\n }\n\n var mappedSectorPosition = positionMapping(textPosition);\n var distance = opts.distance != null ? opts.distance : 5;\n var sector = this.shape;\n var cx = sector.cx;\n var cy = sector.cy;\n var r = sector.r;\n var r0 = sector.r0;\n var middleR = (r + r0) / 2;\n var startAngle = sector.startAngle;\n var endAngle = sector.endAngle;\n var middleAngle = (startAngle + endAngle) / 2;\n var extraDist = isRoundCap ? Math.abs(r - r0) / 2 : 0;\n var mathCos = Math.cos;\n var mathSin = Math.sin; // base position: top-left\n\n var x = cx + r * mathCos(startAngle);\n var y = cy + r * mathSin(startAngle);\n var textAlign = 'left';\n var textVerticalAlign = 'top';\n\n switch (mappedSectorPosition) {\n case 'startArc':\n x = cx + (r0 - distance) * mathCos(middleAngle);\n y = cy + (r0 - distance) * mathSin(middleAngle);\n textAlign = 'center';\n textVerticalAlign = 'top';\n break;\n\n case 'insideStartArc':\n x = cx + (r0 + distance) * mathCos(middleAngle);\n y = cy + (r0 + distance) * mathSin(middleAngle);\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n\n case 'startAngle':\n x = cx + middleR * mathCos(startAngle) + adjustAngleDistanceX(startAngle, distance + extraDist, false);\n y = cy + middleR * mathSin(startAngle) + adjustAngleDistanceY(startAngle, distance + extraDist, false);\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n\n case 'insideStartAngle':\n x = cx + middleR * mathCos(startAngle) + adjustAngleDistanceX(startAngle, -distance + extraDist, false);\n y = cy + middleR * mathSin(startAngle) + adjustAngleDistanceY(startAngle, -distance + extraDist, false);\n textAlign = 'left';\n textVerticalAlign = 'middle';\n break;\n\n case 'middle':\n x = cx + middleR * mathCos(middleAngle);\n y = cy + middleR * mathSin(middleAngle);\n textAlign = 'center';\n textVerticalAlign = 'middle';\n break;\n\n case 'endArc':\n x = cx + (r + distance) * mathCos(middleAngle);\n y = cy + (r + distance) * mathSin(middleAngle);\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideEndArc':\n x = cx + (r - distance) * mathCos(middleAngle);\n y = cy + (r - distance) * mathSin(middleAngle);\n textAlign = 'center';\n textVerticalAlign = 'top';\n break;\n\n case 'endAngle':\n x = cx + middleR * mathCos(endAngle) + adjustAngleDistanceX(endAngle, distance + extraDist, true);\n y = cy + middleR * mathSin(endAngle) + adjustAngleDistanceY(endAngle, distance + extraDist, true);\n textAlign = 'left';\n textVerticalAlign = 'middle';\n break;\n\n case 'insideEndAngle':\n x = cx + middleR * mathCos(endAngle) + adjustAngleDistanceX(endAngle, -distance + extraDist, true);\n y = cy + middleR * mathSin(endAngle) + adjustAngleDistanceY(endAngle, -distance + extraDist, true);\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n\n default:\n return calculateTextPosition(out, opts, boundingRect);\n }\n\n out = out || {};\n out.x = x;\n out.y = y;\n out.align = textAlign;\n out.verticalAlign = textVerticalAlign;\n return out;\n };\n}\nexport function setSectorTextRotation(sector, textPosition, positionMapping, rotateType) {\n if (isNumber(rotateType)) {\n // user-set rotation\n sector.setTextConfig({\n rotation: rotateType\n });\n return;\n } else if (isArray(textPosition)) {\n // user-set position, use 0 as auto rotation\n sector.setTextConfig({\n rotation: 0\n });\n return;\n }\n\n var shape = sector.shape;\n var startAngle = shape.clockwise ? shape.startAngle : shape.endAngle;\n var endAngle = shape.clockwise ? shape.endAngle : shape.startAngle;\n var middleAngle = (startAngle + endAngle) / 2;\n var anchorAngle;\n var mappedSectorPosition = positionMapping(textPosition);\n\n switch (mappedSectorPosition) {\n case 'startArc':\n case 'insideStartArc':\n case 'middle':\n case 'insideEndArc':\n case 'endArc':\n anchorAngle = middleAngle;\n break;\n\n case 'startAngle':\n case 'insideStartAngle':\n anchorAngle = startAngle;\n break;\n\n case 'endAngle':\n case 'insideEndAngle':\n anchorAngle = endAngle;\n break;\n\n default:\n sector.setTextConfig({\n rotation: 0\n });\n return;\n }\n\n var rotate = Math.PI * 1.5 - anchorAngle;\n /**\r\n * TODO: labels with rotate > Math.PI / 2 should be rotate another\r\n * half round flipped to increase readability. However, only middle\r\n * position supports this for now, because in other positions, the\r\n * anchor point is not at the center of the text, so the positions\r\n * after rotating is not as expected.\r\n */\n\n if (mappedSectorPosition === 'middle' && rotate > Math.PI / 2 && rotate < Math.PI * 1.5) {\n rotate -= Math.PI;\n }\n\n sector.setTextConfig({\n rotation: rotate\n });\n}\n\nfunction adjustAngleDistanceX(angle, distance, isEnd) {\n return distance * Math.sin(angle) * (isEnd ? -1 : 1);\n}\n\nfunction adjustAngleDistanceY(angle, distance, isEnd) {\n return distance * Math.cos(angle) * (isEnd ? 1 : -1);\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/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport Path from 'zrender/lib/graphic/Path.js';\nimport Group from 'zrender/lib/graphic/Group.js';\nimport { extend, each, map } from 'zrender/lib/core/util.js';\nimport { Rect, Sector, updateProps, initProps, removeElementWithFadeOut, traverseElements } from '../../util/graphic.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport { setLabelStyle, getLabelStatesModels, setLabelValueAnimation, labelInner } from '../../label/labelStyle.js';\nimport { throttle } from '../../util/throttle.js';\nimport { createClipPath } from '../helper/createClipPathFromCoordSys.js';\nimport Sausage from '../../util/shape/sausage.js';\nimport ChartView from '../../view/Chart.js';\nimport { isCoordinateSystemType } from '../../coord/CoordinateSystem.js';\nimport { getDefaultLabel, getDefaultInterpolatedLabel } from '../helper/labelHelper.js';\nimport { warn } from '../../util/log.js';\nimport { createSectorCalculateTextPosition, setSectorTextRotation } from '../../label/sectorLabel.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nimport { getSectorCornerRadius } from '../helper/sectorHelper.js';\nvar mathMax = Math.max;\nvar mathMin = Math.min;\n\nfunction getClipArea(coord, data) {\n var coordSysClipArea = coord.getArea && coord.getArea();\n\n if (isCoordinateSystemType(coord, 'cartesian2d')) {\n var baseAxis = coord.getBaseAxis(); // When boundaryGap is false or using time axis. bar may exceed the grid.\n // We should not clip this part.\n // See test/bar2.html\n\n if (baseAxis.type !== 'category' || !baseAxis.onBand) {\n var expandWidth = data.getLayout('bandWidth');\n\n if (baseAxis.isHorizontal()) {\n coordSysClipArea.x -= expandWidth;\n coordSysClipArea.width += expandWidth * 2;\n } else {\n coordSysClipArea.y -= expandWidth;\n coordSysClipArea.height += expandWidth * 2;\n }\n }\n }\n\n return coordSysClipArea;\n}\n\nvar BarView =\n/** @class */\nfunction (_super) {\n __extends(BarView, _super);\n\n function BarView() {\n var _this = _super.call(this) || this;\n\n _this.type = BarView.type;\n _this._isFirstFrame = true;\n return _this;\n }\n\n BarView.prototype.render = function (seriesModel, ecModel, api, payload) {\n this._model = seriesModel;\n\n this._removeOnRenderedListener(api);\n\n this._updateDrawMode(seriesModel);\n\n var coordinateSystemType = seriesModel.get('coordinateSystem');\n\n if (coordinateSystemType === 'cartesian2d' || coordinateSystemType === 'polar') {\n // Clear previously rendered progressive elements.\n this._progressiveEls = null;\n this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api, payload);\n } else if (process.env.NODE_ENV !== 'production') {\n warn('Only cartesian2d and polar supported for bar.');\n }\n };\n\n BarView.prototype.incrementalPrepareRender = function (seriesModel) {\n this._clear();\n\n this._updateDrawMode(seriesModel); // incremental also need to clip, otherwise might be overlow.\n // But must not set clip in each frame, otherwise all of the children will be marked redraw.\n\n\n this._updateLargeClip(seriesModel);\n };\n\n BarView.prototype.incrementalRender = function (params, seriesModel) {\n // Reset\n this._progressiveEls = []; // Do not support progressive in normal mode.\n\n this._incrementalRenderLarge(params, seriesModel);\n };\n\n BarView.prototype.eachRendered = function (cb) {\n traverseElements(this._progressiveEls || this.group, cb);\n };\n\n BarView.prototype._updateDrawMode = function (seriesModel) {\n var isLargeDraw = seriesModel.pipelineContext.large;\n\n if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {\n this._isLargeDraw = isLargeDraw;\n\n this._clear();\n }\n };\n\n BarView.prototype._renderNormal = function (seriesModel, ecModel, api, payload) {\n var group = this.group;\n var data = seriesModel.getData();\n var oldData = this._data;\n var coord = seriesModel.coordinateSystem;\n var baseAxis = coord.getBaseAxis();\n var isHorizontalOrRadial;\n\n if (coord.type === 'cartesian2d') {\n isHorizontalOrRadial = baseAxis.isHorizontal();\n } else if (coord.type === 'polar') {\n isHorizontalOrRadial = baseAxis.dim === 'angle';\n }\n\n var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\n var realtimeSortCfg = shouldRealtimeSort(seriesModel, coord);\n\n if (realtimeSortCfg) {\n this._enableRealtimeSort(realtimeSortCfg, data, api);\n }\n\n var needsClip = seriesModel.get('clip', true) || realtimeSortCfg;\n var coordSysClipArea = getClipArea(coord, data); // If there is clipPath created in large mode. Remove it.\n\n group.removeClipPath(); // We don't use clipPath in normal mode because we needs a perfect animation\n // And don't want the label are clipped.\n\n var roundCap = seriesModel.get('roundCap', true);\n var drawBackground = seriesModel.get('showBackground', true);\n var backgroundModel = seriesModel.getModel('backgroundStyle');\n var barBorderRadius = backgroundModel.get('borderRadius') || 0;\n var bgEls = [];\n var oldBgEls = this._backgroundEls;\n var isInitSort = payload && payload.isInitSort;\n var isChangeOrder = payload && payload.type === 'changeAxisOrder';\n\n function createBackground(dataIndex) {\n var bgLayout = getLayout[coord.type](data, dataIndex);\n var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\n bgEl.useStyle(backgroundModel.getItemStyle()); // Only cartesian2d support borderRadius.\n\n if (coord.type === 'cartesian2d') {\n bgEl.setShape('r', barBorderRadius);\n } else {\n bgEl.setShape('cornerRadius', barBorderRadius);\n }\n\n bgEls[dataIndex] = bgEl;\n return bgEl;\n }\n\n ;\n data.diff(oldData).add(function (dataIndex) {\n var itemModel = data.getItemModel(dataIndex);\n var layout = getLayout[coord.type](data, dataIndex, itemModel);\n\n if (drawBackground) {\n createBackground(dataIndex);\n } // If dataZoom in filteMode: 'empty', the baseValue can be set as NaN in \"axisProxy\".\n\n\n if (!data.hasValue(dataIndex) || !isValidLayout[coord.type](layout)) {\n return;\n }\n\n var isClipped = false;\n\n if (needsClip) {\n // Clip will modify the layout params.\n // And return a boolean to determine if the shape are fully clipped.\n isClipped = clip[coord.type](coordSysClipArea, layout);\n }\n\n var el = elementCreator[coord.type](seriesModel, data, dataIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap);\n\n if (realtimeSortCfg) {\n /**\r\n * Force label animation because even if the element is\r\n * ignored because it's clipped, it may not be clipped after\r\n * changing order. Then, if not using forceLabelAnimation,\r\n * the label animation was never started, in which case,\r\n * the label will be the final value and doesn't have label\r\n * animation.\r\n */\n el.forceLabelAnimation = true;\n }\n\n updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n\n if (isInitSort) {\n el.attr({\n shape: layout\n });\n } else if (realtimeSortCfg) {\n updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout, dataIndex, isHorizontalOrRadial, false, false);\n } else {\n initProps(el, {\n shape: layout\n }, seriesModel, dataIndex);\n }\n\n data.setItemGraphicEl(dataIndex, el);\n group.add(el);\n el.ignore = isClipped;\n }).update(function (newIndex, oldIndex) {\n var itemModel = data.getItemModel(newIndex);\n var layout = getLayout[coord.type](data, newIndex, itemModel);\n\n if (drawBackground) {\n var bgEl = void 0;\n\n if (oldBgEls.length === 0) {\n bgEl = createBackground(oldIndex);\n } else {\n bgEl = oldBgEls[oldIndex];\n bgEl.useStyle(backgroundModel.getItemStyle()); // Only cartesian2d support borderRadius.\n\n if (coord.type === 'cartesian2d') {\n bgEl.setShape('r', barBorderRadius);\n } else {\n bgEl.setShape('cornerRadius', barBorderRadius);\n }\n\n bgEls[newIndex] = bgEl;\n }\n\n var bgLayout = getLayout[coord.type](data, newIndex);\n var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);\n updateProps(bgEl, {\n shape: shape\n }, animationModel, newIndex);\n }\n\n var el = oldData.getItemGraphicEl(oldIndex);\n\n if (!data.hasValue(newIndex) || !isValidLayout[coord.type](layout)) {\n group.remove(el);\n return;\n }\n\n var isClipped = false;\n\n if (needsClip) {\n isClipped = clip[coord.type](coordSysClipArea, layout);\n\n if (isClipped) {\n group.remove(el);\n }\n }\n\n if (!el) {\n el = elementCreator[coord.type](seriesModel, data, newIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap);\n } else {\n saveOldStyle(el);\n }\n\n if (realtimeSortCfg) {\n el.forceLabelAnimation = true;\n }\n\n if (isChangeOrder) {\n var textEl = el.getTextContent();\n\n if (textEl) {\n var labelInnerStore = labelInner(textEl);\n\n if (labelInnerStore.prevValue != null) {\n /**\r\n * Set preValue to be value so that no new label\r\n * should be started, otherwise, it will take a full\r\n * `animationDurationUpdate` time to finish the\r\n * animation, which is not expected.\r\n */\n labelInnerStore.prevValue = labelInnerStore.value;\n }\n }\n } // Not change anything if only order changed.\n // Especially not change label.\n else {\n updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n }\n\n if (isInitSort) {\n el.attr({\n shape: layout\n });\n } else if (realtimeSortCfg) {\n updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout, newIndex, isHorizontalOrRadial, true, isChangeOrder);\n } else {\n updateProps(el, {\n shape: layout\n }, seriesModel, newIndex, null);\n }\n\n data.setItemGraphicEl(newIndex, el);\n el.ignore = isClipped;\n group.add(el);\n }).remove(function (dataIndex) {\n var el = oldData.getItemGraphicEl(dataIndex);\n el && removeElementWithFadeOut(el, seriesModel, dataIndex);\n }).execute();\n var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group());\n bgGroup.removeAll();\n\n for (var i = 0; i < bgEls.length; ++i) {\n bgGroup.add(bgEls[i]);\n }\n\n group.add(bgGroup);\n this._backgroundEls = bgEls;\n this._data = data;\n };\n\n BarView.prototype._renderLarge = function (seriesModel, ecModel, api) {\n this._clear();\n\n createLarge(seriesModel, this.group);\n\n this._updateLargeClip(seriesModel);\n };\n\n BarView.prototype._incrementalRenderLarge = function (params, seriesModel) {\n this._removeBackground();\n\n createLarge(seriesModel, this.group, this._progressiveEls, true);\n };\n\n BarView.prototype._updateLargeClip = function (seriesModel) {\n // Use clipPath in large mode.\n var clipPath = seriesModel.get('clip', true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);\n var group = this.group;\n\n if (clipPath) {\n group.setClipPath(clipPath);\n } else {\n group.removeClipPath();\n }\n };\n\n BarView.prototype._enableRealtimeSort = function (realtimeSortCfg, data, api) {\n var _this = this; // If no data in the first frame, wait for data to initSort\n\n\n if (!data.count()) {\n return;\n }\n\n var baseAxis = realtimeSortCfg.baseAxis;\n\n if (this._isFirstFrame) {\n this._dispatchInitSort(data, realtimeSortCfg, api);\n\n this._isFirstFrame = false;\n } else {\n var orderMapping_1 = function (idx) {\n var el = data.getItemGraphicEl(idx);\n var shape = el && el.shape;\n return shape && // The result should be consistent with the initial sort by data value.\n // Do not support the case that both positive and negative exist.\n Math.abs(baseAxis.isHorizontal() ? shape.height : shape.width) // If data is NaN, shape.xxx may be NaN, so use || 0 here in case\n || 0;\n };\n\n this._onRendered = function () {\n _this._updateSortWithinSameData(data, orderMapping_1, baseAxis, api);\n };\n\n api.getZr().on('rendered', this._onRendered);\n }\n };\n\n BarView.prototype._dataSort = function (data, baseAxis, orderMapping) {\n var info = [];\n data.each(data.mapDimension(baseAxis.dim), function (ordinalNumber, dataIdx) {\n var mappedValue = orderMapping(dataIdx);\n mappedValue = mappedValue == null ? NaN : mappedValue;\n info.push({\n dataIndex: dataIdx,\n mappedValue: mappedValue,\n ordinalNumber: ordinalNumber\n });\n });\n info.sort(function (a, b) {\n // If NaN, it will be treated as min val.\n return b.mappedValue - a.mappedValue;\n });\n return {\n ordinalNumbers: map(info, function (item) {\n return item.ordinalNumber;\n })\n };\n };\n\n BarView.prototype._isOrderChangedWithinSameData = function (data, orderMapping, baseAxis) {\n var scale = baseAxis.scale;\n var ordinalDataDim = data.mapDimension(baseAxis.dim);\n var lastValue = Number.MAX_VALUE;\n\n for (var tickNum = 0, len = scale.getOrdinalMeta().categories.length; tickNum < len; ++tickNum) {\n var rawIdx = data.rawIndexOf(ordinalDataDim, scale.getRawOrdinalNumber(tickNum));\n var value = rawIdx < 0 // If some tick have no bar, the tick will be treated as min.\n ? Number.MIN_VALUE // PENDING: if dataZoom on baseAxis exits, is it a performance issue?\n : orderMapping(data.indexOfRawIndex(rawIdx));\n\n if (value > lastValue) {\n return true;\n }\n\n lastValue = value;\n }\n\n return false;\n };\n /*\r\n * Consider the case when A and B changed order, whose representing\r\n * bars are both out of sight, we don't wish to trigger reorder action\r\n * as long as the order in the view doesn't change.\r\n */\n\n\n BarView.prototype._isOrderDifferentInView = function (orderInfo, baseAxis) {\n var scale = baseAxis.scale;\n var extent = scale.getExtent();\n var tickNum = Math.max(0, extent[0]);\n var tickMax = Math.min(extent[1], scale.getOrdinalMeta().categories.length - 1);\n\n for (; tickNum <= tickMax; ++tickNum) {\n if (orderInfo.ordinalNumbers[tickNum] !== scale.getRawOrdinalNumber(tickNum)) {\n return true;\n }\n }\n };\n\n BarView.prototype._updateSortWithinSameData = function (data, orderMapping, baseAxis, api) {\n if (!this._isOrderChangedWithinSameData(data, orderMapping, baseAxis)) {\n return;\n }\n\n var sortInfo = this._dataSort(data, baseAxis, orderMapping);\n\n if (this._isOrderDifferentInView(sortInfo, baseAxis)) {\n this._removeOnRenderedListener(api);\n\n api.dispatchAction({\n type: 'changeAxisOrder',\n componentType: baseAxis.dim + 'Axis',\n axisId: baseAxis.index,\n sortInfo: sortInfo\n });\n }\n };\n\n BarView.prototype._dispatchInitSort = function (data, realtimeSortCfg, api) {\n var baseAxis = realtimeSortCfg.baseAxis;\n\n var sortResult = this._dataSort(data, baseAxis, function (dataIdx) {\n return data.get(data.mapDimension(realtimeSortCfg.otherAxis.dim), dataIdx);\n });\n\n api.dispatchAction({\n type: 'changeAxisOrder',\n componentType: baseAxis.dim + 'Axis',\n isInitSort: true,\n axisId: baseAxis.index,\n sortInfo: sortResult\n });\n };\n\n BarView.prototype.remove = function (ecModel, api) {\n this._clear(this._model);\n\n this._removeOnRenderedListener(api);\n };\n\n BarView.prototype.dispose = function (ecModel, api) {\n this._removeOnRenderedListener(api);\n };\n\n BarView.prototype._removeOnRenderedListener = function (api) {\n if (this._onRendered) {\n api.getZr().off('rendered', this._onRendered);\n this._onRendered = null;\n }\n };\n\n BarView.prototype._clear = function (model) {\n var group = this.group;\n var data = this._data;\n\n if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) {\n this._removeBackground();\n\n this._backgroundEls = [];\n data.eachItemGraphicEl(function (el) {\n removeElementWithFadeOut(el, model, getECData(el).dataIndex);\n });\n } else {\n group.removeAll();\n }\n\n this._data = null;\n this._isFirstFrame = true;\n };\n\n BarView.prototype._removeBackground = function () {\n this.group.remove(this._backgroundGroup);\n this._backgroundGroup = null;\n };\n\n BarView.type = 'bar';\n return BarView;\n}(ChartView);\n\nvar clip = {\n cartesian2d: function (coordSysBoundingRect, layout) {\n var signWidth = layout.width < 0 ? -1 : 1;\n var signHeight = layout.height < 0 ? -1 : 1; // Needs positive width and height\n\n if (signWidth < 0) {\n layout.x += layout.width;\n layout.width = -layout.width;\n }\n\n if (signHeight < 0) {\n layout.y += layout.height;\n layout.height = -layout.height;\n }\n\n var coordSysX2 = coordSysBoundingRect.x + coordSysBoundingRect.width;\n var coordSysY2 = coordSysBoundingRect.y + coordSysBoundingRect.height;\n var x = mathMax(layout.x, coordSysBoundingRect.x);\n var x2 = mathMin(layout.x + layout.width, coordSysX2);\n var y = mathMax(layout.y, coordSysBoundingRect.y);\n var y2 = mathMin(layout.y + layout.height, coordSysY2);\n var xClipped = x2 < x;\n var yClipped = y2 < y; // When xClipped or yClipped, the element will be marked as `ignore`.\n // But we should also place the element at the edge of the coord sys bounding rect.\n // Because if data changed and the bar shows again, its transition animation\n // will begin at this place.\n\n layout.x = xClipped && x > coordSysX2 ? x2 : x;\n layout.y = yClipped && y > coordSysY2 ? y2 : y;\n layout.width = xClipped ? 0 : x2 - x;\n layout.height = yClipped ? 0 : y2 - y; // Reverse back\n\n if (signWidth < 0) {\n layout.x += layout.width;\n layout.width = -layout.width;\n }\n\n if (signHeight < 0) {\n layout.y += layout.height;\n layout.height = -layout.height;\n }\n\n return xClipped || yClipped;\n },\n polar: function (coordSysClipArea, layout) {\n var signR = layout.r0 <= layout.r ? 1 : -1; // Make sure r is larger than r0\n\n if (signR < 0) {\n var tmp = layout.r;\n layout.r = layout.r0;\n layout.r0 = tmp;\n }\n\n var r = mathMin(layout.r, coordSysClipArea.r);\n var r0 = mathMax(layout.r0, coordSysClipArea.r0);\n layout.r = r;\n layout.r0 = r0;\n var clipped = r - r0 < 0; // Reverse back\n\n if (signR < 0) {\n var tmp = layout.r;\n layout.r = layout.r0;\n layout.r0 = tmp;\n }\n\n return clipped;\n }\n};\nvar elementCreator = {\n cartesian2d: function (seriesModel, data, newIndex, layout, isHorizontal, animationModel, axisModel, isUpdate, roundCap) {\n var rect = new Rect({\n shape: extend({}, layout),\n z2: 1\n });\n rect.__dataIndex = newIndex;\n rect.name = 'item';\n\n if (animationModel) {\n var rectShape = rect.shape;\n var animateProperty = isHorizontal ? 'height' : 'width';\n rectShape[animateProperty] = 0;\n }\n\n return rect;\n },\n polar: function (seriesModel, data, newIndex, layout, isRadial, animationModel, axisModel, isUpdate, roundCap) {\n var ShapeClass = !isRadial && roundCap ? Sausage : Sector;\n var sector = new ShapeClass({\n shape: layout,\n z2: 1\n });\n sector.name = 'item';\n var positionMap = createPolarPositionMapping(isRadial);\n sector.calculateTextPosition = createSectorCalculateTextPosition(positionMap, {\n isRoundCap: ShapeClass === Sausage\n }); // Animation\n\n if (animationModel) {\n var sectorShape = sector.shape;\n var animateProperty = isRadial ? 'r' : 'endAngle';\n var animateTarget = {};\n sectorShape[animateProperty] = isRadial ? layout.r0 : layout.startAngle;\n animateTarget[animateProperty] = layout[animateProperty];\n (isUpdate ? updateProps : initProps)(sector, {\n shape: animateTarget // __value: typeof dataValue === 'string' ? parseInt(dataValue, 10) : dataValue\n\n }, animationModel);\n }\n\n return sector;\n }\n};\n\nfunction shouldRealtimeSort(seriesModel, coordSys) {\n var realtimeSortOption = seriesModel.get('realtimeSort', true);\n var baseAxis = coordSys.getBaseAxis();\n\n if (process.env.NODE_ENV !== 'production') {\n if (realtimeSortOption) {\n if (baseAxis.type !== 'category') {\n warn('`realtimeSort` will not work because this bar series is not based on a category axis.');\n }\n\n if (coordSys.type !== 'cartesian2d') {\n warn('`realtimeSort` will not work because this bar series is not on cartesian2d.');\n }\n }\n }\n\n if (realtimeSortOption && baseAxis.type === 'category' && coordSys.type === 'cartesian2d') {\n return {\n baseAxis: baseAxis,\n otherAxis: coordSys.getOtherAxis(baseAxis)\n };\n }\n}\n\nfunction updateRealtimeAnimation(realtimeSortCfg, seriesAnimationModel, el, layout, newIndex, isHorizontal, isUpdate, isChangeOrder) {\n var seriesTarget;\n var axisTarget;\n\n if (isHorizontal) {\n axisTarget = {\n x: layout.x,\n width: layout.width\n };\n seriesTarget = {\n y: layout.y,\n height: layout.height\n };\n } else {\n axisTarget = {\n y: layout.y,\n height: layout.height\n };\n seriesTarget = {\n x: layout.x,\n width: layout.width\n };\n }\n\n if (!isChangeOrder) {\n // Keep the original growth animation if only axis order changed.\n // Not start a new animation.\n (isUpdate ? updateProps : initProps)(el, {\n shape: seriesTarget\n }, seriesAnimationModel, newIndex, null);\n }\n\n var axisAnimationModel = seriesAnimationModel ? realtimeSortCfg.baseAxis.model : null;\n (isUpdate ? updateProps : initProps)(el, {\n shape: axisTarget\n }, axisAnimationModel, newIndex);\n}\n\nfunction checkPropertiesNotValid(obj, props) {\n for (var i = 0; i < props.length; i++) {\n if (!isFinite(obj[props[i]])) {\n return true;\n }\n }\n\n return false;\n}\n\nvar rectPropties = ['x', 'y', 'width', 'height'];\nvar polarPropties = ['cx', 'cy', 'r', 'startAngle', 'endAngle'];\nvar isValidLayout = {\n cartesian2d: function (layout) {\n return !checkPropertiesNotValid(layout, rectPropties);\n },\n polar: function (layout) {\n return !checkPropertiesNotValid(layout, polarPropties);\n }\n};\nvar getLayout = {\n // itemModel is only used to get borderWidth, which is not needed\n // when calculating bar background layout.\n cartesian2d: function (data, dataIndex, itemModel) {\n var layout = data.getItemLayout(dataIndex);\n var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0; // fix layout with lineWidth\n\n var signX = layout.width > 0 ? 1 : -1;\n var signY = layout.height > 0 ? 1 : -1;\n return {\n x: layout.x + signX * fixedLineWidth / 2,\n y: layout.y + signY * fixedLineWidth / 2,\n width: layout.width - signX * fixedLineWidth,\n height: layout.height - signY * fixedLineWidth\n };\n },\n polar: function (data, dataIndex, itemModel) {\n var layout = data.getItemLayout(dataIndex);\n return {\n cx: layout.cx,\n cy: layout.cy,\n r0: layout.r0,\n r: layout.r,\n startAngle: layout.startAngle,\n endAngle: layout.endAngle,\n clockwise: layout.clockwise\n };\n }\n};\n\nfunction isZeroOnPolar(layout) {\n return layout.startAngle != null && layout.endAngle != null && layout.startAngle === layout.endAngle;\n}\n\nfunction createPolarPositionMapping(isRadial) {\n return function (isRadial) {\n var arcOrAngle = isRadial ? 'Arc' : 'Angle';\n return function (position) {\n switch (position) {\n case 'start':\n case 'insideStart':\n case 'end':\n case 'insideEnd':\n return position + arcOrAngle;\n\n default:\n return position;\n }\n };\n }(isRadial);\n}\n\nfunction updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, isPolar) {\n var style = data.getItemVisual(dataIndex, 'style');\n\n if (!isPolar) {\n var borderRadius = itemModel.get(['itemStyle', 'borderRadius']) || 0;\n el.setShape('r', borderRadius);\n } else if (!seriesModel.get('roundCap')) {\n var sectorShape = el.shape;\n var cornerRadius = getSectorCornerRadius(itemModel.getModel('itemStyle'), sectorShape, true);\n extend(sectorShape, cornerRadius);\n el.setShape(sectorShape);\n }\n\n el.useStyle(style);\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && el.attr('cursor', cursorStyle);\n var labelPositionOutside = isPolar ? isHorizontalOrRadial ? layout.r >= layout.r0 ? 'endArc' : 'startArc' : layout.endAngle >= layout.startAngle ? 'endAngle' : 'startAngle' : isHorizontalOrRadial ? layout.height >= 0 ? 'bottom' : 'top' : layout.width >= 0 ? 'right' : 'left';\n var labelStatesModels = getLabelStatesModels(itemModel);\n setLabelStyle(el, labelStatesModels, {\n labelFetcher: seriesModel,\n labelDataIndex: dataIndex,\n defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\n inheritColor: style.fill,\n defaultOpacity: style.opacity,\n defaultOutsidePosition: labelPositionOutside\n });\n var label = el.getTextContent();\n\n if (isPolar && label) {\n var position = itemModel.get(['label', 'position']);\n el.textConfig.inside = position === 'middle' ? true : null;\n setSectorTextRotation(el, position === 'outside' ? labelPositionOutside : position, createPolarPositionMapping(isHorizontalOrRadial), itemModel.get(['label', 'rotate']));\n }\n\n setLabelValueAnimation(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function (value) {\n return getDefaultInterpolatedLabel(data, value);\n });\n var emphasisModel = itemModel.getModel(['emphasis']);\n toggleHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n setStatesStylesFromModel(el, itemModel);\n\n if (isZeroOnPolar(layout)) {\n el.style.fill = 'none';\n el.style.stroke = 'none';\n each(el.states, function (state) {\n if (state.style) {\n state.style.fill = state.style.stroke = 'none';\n }\n });\n }\n} // In case width or height are too small.\n\n\nfunction getLineWidth(itemModel, rawLayout) {\n // Has no border.\n var borderColor = itemModel.get(['itemStyle', 'borderColor']);\n\n if (!borderColor || borderColor === 'none') {\n return 0;\n }\n\n var lineWidth = itemModel.get(['itemStyle', 'borderWidth']) || 0; // width or height may be NaN for empty data\n\n var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);\n var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);\n return Math.min(lineWidth, width, height);\n}\n\nvar LagePathShape =\n/** @class */\nfunction () {\n function LagePathShape() {}\n\n return LagePathShape;\n}();\n\nvar LargePath =\n/** @class */\nfunction (_super) {\n __extends(LargePath, _super);\n\n function LargePath(opts) {\n var _this = _super.call(this, opts) || this;\n\n _this.type = 'largeBar';\n return _this;\n }\n\n LargePath.prototype.getDefaultShape = function () {\n return new LagePathShape();\n };\n\n LargePath.prototype.buildPath = function (ctx, shape) {\n // Drawing lines is more efficient than drawing\n // a whole line or drawing rects.\n var points = shape.points;\n var baseDimIdx = this.baseDimIdx;\n var valueDimIdx = 1 - this.baseDimIdx;\n var startPoint = [];\n var size = [];\n var barWidth = this.barWidth;\n\n for (var i = 0; i < points.length; i += 3) {\n size[baseDimIdx] = barWidth;\n size[valueDimIdx] = points[i + 2];\n startPoint[baseDimIdx] = points[i + baseDimIdx];\n startPoint[valueDimIdx] = points[i + valueDimIdx];\n ctx.rect(startPoint[0], startPoint[1], size[0], size[1]);\n }\n };\n\n return LargePath;\n}(Path);\n\nfunction createLarge(seriesModel, group, progressiveEls, incremental) {\n // TODO support polar\n var data = seriesModel.getData();\n var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\n var largeDataIndices = data.getLayout('largeDataIndices');\n var barWidth = data.getLayout('size');\n var backgroundModel = seriesModel.getModel('backgroundStyle');\n var bgPoints = data.getLayout('largeBackgroundPoints');\n\n if (bgPoints) {\n var bgEl = new LargePath({\n shape: {\n points: bgPoints\n },\n incremental: !!incremental,\n silent: true,\n z2: 0\n });\n bgEl.baseDimIdx = baseDimIdx;\n bgEl.largeDataIndices = largeDataIndices;\n bgEl.barWidth = barWidth;\n bgEl.useStyle(backgroundModel.getItemStyle());\n group.add(bgEl);\n progressiveEls && progressiveEls.push(bgEl);\n }\n\n var el = new LargePath({\n shape: {\n points: data.getLayout('largePoints')\n },\n incremental: !!incremental,\n ignoreCoarsePointer: true,\n z2: 1\n });\n el.baseDimIdx = baseDimIdx;\n el.largeDataIndices = largeDataIndices;\n el.barWidth = barWidth;\n group.add(el);\n el.useStyle(data.getVisual('style')); // Enable tooltip and user mouse/touch event handlers.\n\n getECData(el).seriesIndex = seriesModel.seriesIndex;\n\n if (!seriesModel.get('silent')) {\n el.on('mousedown', largePathUpdateDataIndex);\n el.on('mousemove', largePathUpdateDataIndex);\n }\n\n progressiveEls && progressiveEls.push(el);\n} // Use throttle to avoid frequently traverse to find dataIndex.\n\n\nvar largePathUpdateDataIndex = throttle(function (event) {\n var largePath = this;\n var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);\n getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null;\n}, 30, false);\n\nfunction largePathFindDataIndex(largePath, x, y) {\n var baseDimIdx = largePath.baseDimIdx;\n var valueDimIdx = 1 - baseDimIdx;\n var points = largePath.shape.points;\n var largeDataIndices = largePath.largeDataIndices;\n var startPoint = [];\n var size = [];\n var barWidth = largePath.barWidth;\n\n for (var i = 0, len = points.length / 3; i < len; i++) {\n var ii = i * 3;\n size[baseDimIdx] = barWidth;\n size[valueDimIdx] = points[ii + 2];\n startPoint[baseDimIdx] = points[ii + baseDimIdx];\n startPoint[valueDimIdx] = points[ii + valueDimIdx];\n\n if (size[valueDimIdx] < 0) {\n startPoint[valueDimIdx] += size[valueDimIdx];\n size[valueDimIdx] = -size[valueDimIdx];\n }\n\n if (x >= startPoint[0] && x <= startPoint[0] + size[0] && y >= startPoint[1] && y <= startPoint[1] + size[1]) {\n return largeDataIndices[i];\n }\n }\n\n return -1;\n}\n\nfunction createBackgroundShape(isHorizontalOrRadial, layout, coord) {\n if (isCoordinateSystemType(coord, 'cartesian2d')) {\n var rectShape = layout;\n var coordLayout = coord.getArea();\n return {\n x: isHorizontalOrRadial ? rectShape.x : coordLayout.x,\n y: isHorizontalOrRadial ? coordLayout.y : rectShape.y,\n width: isHorizontalOrRadial ? rectShape.width : coordLayout.width,\n height: isHorizontalOrRadial ? coordLayout.height : rectShape.height\n };\n } else {\n var coordLayout = coord.getArea();\n var sectorShape = layout;\n return {\n cx: coordLayout.cx,\n cy: coordLayout.cy,\n r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0,\n r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r,\n startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0,\n endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2\n };\n }\n}\n\nfunction createBackgroundEl(coord, isHorizontalOrRadial, layout) {\n var ElementClz = coord.type === 'polar' ? Sector : Rect;\n return new ElementClz({\n shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\n silent: true,\n z2: 0\n });\n}\n\nexport default BarView;","\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/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { layout, createProgressiveLayout } from '../../layout/barGrid.js';\nimport dataSample from '../../processor/dataSample.js';\nimport BarSeries from './BarSeries.js';\nimport BarView from './BarView.js';\nexport function install(registers) {\n registers.registerChartView(BarView);\n registers.registerSeriesModel(BarSeries);\n registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, zrUtil.curry(layout, 'bar')); // Do layout after other overall layout, which can prepare some information.\n\n registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout('bar')); // Down sample after filter\n\n registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample('bar'));\n /**\r\n * @payload\r\n * @property {string} [componentType=series]\r\n * @property {number} [dx]\r\n * @property {number} [dy]\r\n * @property {number} [zoom]\r\n * @property {number} [originX]\r\n * @property {number} [originY]\r\n */\n\n registers.registerAction({\n type: 'changeAxisOrder',\n event: 'changeAxisOrder',\n update: 'update'\n }, function (payload, ecModel) {\n var componentType = payload.componentType || 'series';\n ecModel.eachComponent({\n mainType: componentType,\n query: payload\n }, function (componentModel) {\n if (payload.sortInfo) {\n componentModel.axis.setCategorySortInfo(payload.sortInfo);\n }\n });\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*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nexport function isCoordinateSystemType(coordSys, type) {\n return coordSys.type === type;\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/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as graphic from '../../util/graphic.js';\nimport { round } from '../../util/number.js';\nimport { isFunction } from 'zrender/lib/core/util.js';\n\nfunction createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) {\n var rect = cartesian.getArea();\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n var lineWidth = seriesModel.get(['lineStyle', 'width']) || 2; // Expand the clip path a bit to avoid the border is clipped and looks thinner\n\n x -= lineWidth / 2;\n y -= lineWidth / 2;\n width += lineWidth;\n height += lineWidth; // fix: https://github.com/apache/incubator-echarts/issues/11369\n\n x = Math.floor(x);\n width = Math.round(width);\n var clipPath = new graphic.Rect({\n shape: {\n x: x,\n y: y,\n width: width,\n height: height\n }\n });\n\n if (hasAnimation) {\n var baseAxis = cartesian.getBaseAxis();\n var isHorizontal = baseAxis.isHorizontal();\n var isAxisInversed = baseAxis.inverse;\n\n if (isHorizontal) {\n if (isAxisInversed) {\n clipPath.shape.x += width;\n }\n\n clipPath.shape.width = 0;\n } else {\n if (!isAxisInversed) {\n clipPath.shape.y += height;\n }\n\n clipPath.shape.height = 0;\n }\n\n var duringCb = isFunction(during) ? function (percent) {\n during(percent, clipPath);\n } : null;\n graphic.initProps(clipPath, {\n shape: {\n width: width,\n height: height,\n x: x,\n y: y\n }\n }, seriesModel, null, done, duringCb);\n }\n\n return clipPath;\n}\n\nfunction createPolarClipPath(polar, hasAnimation, seriesModel) {\n var sectorArea = polar.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n\n var r0 = round(sectorArea.r0, 1);\n var r = round(sectorArea.r, 1);\n var clipPath = new graphic.Sector({\n shape: {\n cx: round(polar.cx, 1),\n cy: round(polar.cy, 1),\n r0: r0,\n r: r,\n startAngle: sectorArea.startAngle,\n endAngle: sectorArea.endAngle,\n clockwise: sectorArea.clockwise\n }\n });\n\n if (hasAnimation) {\n var isRadial = polar.getBaseAxis().dim === 'angle';\n\n if (isRadial) {\n clipPath.shape.endAngle = sectorArea.startAngle;\n } else {\n clipPath.shape.r = r0;\n }\n\n graphic.initProps(clipPath, {\n shape: {\n endAngle: sectorArea.endAngle,\n r: r\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createClipPath(coordSys, hasAnimation, seriesModel, done, during) {\n if (!coordSys) {\n return null;\n } else if (coordSys.type === 'polar') {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n } else if (coordSys.type === 'cartesian2d') {\n return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during);\n }\n\n return null;\n}\n\nexport { createGridClipPath, createPolarClipPath, createClipPath };","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { Path } from '../graphic.js';\n/**\r\n * Sausage: similar to sector, but have half circle on both sides\r\n */\n\nvar SausageShape =\n/** @class */\nfunction () {\n function SausageShape() {\n this.cx = 0;\n this.cy = 0;\n this.r0 = 0;\n this.r = 0;\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.clockwise = true;\n }\n\n return SausageShape;\n}();\n\nvar SausagePath =\n/** @class */\nfunction (_super) {\n __extends(SausagePath, _super);\n\n function SausagePath(opts) {\n var _this = _super.call(this, opts) || this;\n\n _this.type = 'sausage';\n return _this;\n }\n\n SausagePath.prototype.getDefaultShape = function () {\n return new SausageShape();\n };\n\n SausagePath.prototype.buildPath = function (ctx, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var r0 = Math.max(shape.r0 || 0, 0);\n var r = Math.max(shape.r, 0);\n var dr = (r - r0) * 0.5;\n var rCenter = r0 + dr;\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var PI2 = Math.PI * 2;\n var lessThanCircle = clockwise ? endAngle - startAngle < PI2 : startAngle - endAngle < PI2;\n\n if (!lessThanCircle) {\n // Normalize angles\n startAngle = endAngle - (clockwise ? PI2 : -PI2);\n }\n\n var unitStartX = Math.cos(startAngle);\n var unitStartY = Math.sin(startAngle);\n var unitEndX = Math.cos(endAngle);\n var unitEndY = Math.sin(endAngle);\n\n if (lessThanCircle) {\n ctx.moveTo(unitStartX * r0 + cx, unitStartY * r0 + cy);\n ctx.arc(unitStartX * rCenter + cx, unitStartY * rCenter + cy, dr, -Math.PI + startAngle, startAngle, !clockwise);\n } else {\n ctx.moveTo(unitStartX * r + cx, unitStartY * r + cy);\n }\n\n ctx.arc(cx, cy, r, startAngle, endAngle, !clockwise);\n ctx.arc(unitEndX * rCenter + cx, unitEndY * rCenter + cy, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);\n\n if (r0 !== 0) {\n ctx.arc(cx, cy, r0, endAngle, startAngle, clockwise);\n } // ctx.closePath();\n\n };\n\n return SausagePath;\n}(Path);\n\nexport default SausagePath;","\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/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { retrieveRawValue } from '../../data/helper/dataProvider.js';\nimport { isArray } from 'zrender/lib/core/util.js';\n/**\r\n * @return label string. Not null/undefined\r\n */\n\nexport function getDefaultLabel(data, dataIndex) {\n var labelDims = data.mapDimensionsAll('defaultedLabel');\n var len = labelDims.length; // Simple optimization (in lots of cases, label dims length is 1)\n\n if (len === 1) {\n var rawVal = retrieveRawValue(data, dataIndex, labelDims[0]);\n return rawVal != null ? rawVal + '' : null;\n } else if (len) {\n var vals = [];\n\n for (var i = 0; i < labelDims.length; i++) {\n vals.push(retrieveRawValue(data, dataIndex, labelDims[i]));\n }\n\n return vals.join(' ');\n }\n}\nexport function getDefaultInterpolatedLabel(data, interpolatedValue) {\n var labelDims = data.mapDimensionsAll('defaultedLabel');\n\n if (!isArray(interpolatedValue)) {\n return interpolatedValue + '';\n }\n\n var vals = [];\n\n for (var i = 0; i < labelDims.length; i++) {\n var dimIndex = data.getDimensionIndex(labelDims[i]);\n\n if (dimIndex >= 0) {\n vals.push(interpolatedValue[dimIndex]);\n }\n }\n\n return vals.join(' ');\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/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isFunction, isString } from 'zrender/lib/core/util.js';\nvar samplers = {\n average: function (frame) {\n var sum = 0;\n var count = 0;\n\n for (var i = 0; i < frame.length; i++) {\n if (!isNaN(frame[i])) {\n sum += frame[i];\n count++;\n }\n } // Return NaN if count is 0\n\n\n return count === 0 ? NaN : sum / count;\n },\n sum: function (frame) {\n var sum = 0;\n\n for (var i = 0; i < frame.length; i++) {\n // Ignore NaN\n sum += frame[i] || 0;\n }\n\n return sum;\n },\n max: function (frame) {\n var max = -Infinity;\n\n for (var i = 0; i < frame.length; i++) {\n frame[i] > max && (max = frame[i]);\n } // NaN will cause illegal axis extent.\n\n\n return isFinite(max) ? max : NaN;\n },\n min: function (frame) {\n var min = Infinity;\n\n for (var i = 0; i < frame.length; i++) {\n frame[i] < min && (min = frame[i]);\n } // NaN will cause illegal axis extent.\n\n\n return isFinite(min) ? min : NaN;\n },\n // TODO\n // Median\n nearest: function (frame) {\n return frame[0];\n }\n};\n\nvar indexSampler = function (frame) {\n return Math.round(frame.length / 2);\n};\n\nexport default function dataSample(seriesType) {\n return {\n seriesType: seriesType,\n // FIXME:TS never used, so comment it\n // modifyOutputEnd: true,\n reset: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var sampling = seriesModel.get('sampling');\n var coordSys = seriesModel.coordinateSystem;\n var count = data.count(); // Only cartesian2d support down sampling. Disable it when there is few data.\n\n if (count > 10 && coordSys.type === 'cartesian2d' && sampling) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var extent = baseAxis.getExtent();\n var dpr = api.getDevicePixelRatio(); // Coordinste system has been resized\n\n var size = Math.abs(extent[1] - extent[0]) * (dpr || 1);\n var rate = Math.round(count / size);\n\n if (isFinite(rate) && rate > 1) {\n if (sampling === 'lttb') {\n seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis.dim), 1 / rate));\n }\n\n var sampler = void 0;\n\n if (isString(sampling)) {\n sampler = samplers[sampling];\n } else if (isFunction(sampling)) {\n sampler = sampling;\n }\n\n if (sampler) {\n // Only support sample the first dim mapped from value axis.\n seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\n }\n }\n }\n }\n };\n}"],"sourceRoot":""}