{"version":3,"sources":["webpack:///./node_modules/echarts/lib/chart/bar/BarSeries.js","webpack:///./node_modules/echarts/lib/component/marker/MarkLineModel.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/echarts/lib/chart/line/LineSeries.js","webpack:///./node_modules/echarts/lib/chart/bar/BaseBarSeries.js","webpack:///./node_modules/echarts/lib/component/marker/MarkLineView.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/echarts/lib/chart/bar/BarView.js","webpack:///./node_modules/echarts/lib/chart/helper/LineDraw.js","webpack:///./node_modules/echarts/lib/chart/helper/Line.js","webpack:///./node_modules/echarts/lib/chart/helper/LinePath.js","webpack:///./node_modules/echarts/lib/visual/symbol.js","webpack:///./node_modules/echarts/lib/layout/points.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/echarts/lib/chart/bar.js","webpack:///./node_modules/echarts/lib/component/markLine.js","webpack:///./node_modules/echarts/lib/chart/line/helper.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/echarts/lib/chart/bar/barItemStyle.js","webpack:///./node_modules/echarts/lib/util/shape/sausage.js","webpack:///./src/pages/ioc/charts/GiaiNganCapDonViColChart.vue","webpack:///src/pages/ioc/charts/GiaiNganCapDonViColChart.vue","webpack:///./src/pages/ioc/charts/GiaiNganCapDonViColChart.vue?ca31","webpack:///./src/pages/ioc/charts/GiaiNganCapDonViColChart.vue?0cda","webpack:///./node_modules/echarts/lib/chart/line/poly.js","webpack:///./node_modules/echarts/lib/chart/bar/helper.js","webpack:///./node_modules/echarts/lib/chart/line.js","webpack:///./node_modules/echarts/lib/chart/line/lineAnimationDiff.js","webpack:///./node_modules/echarts/lib/chart/line/LineView.js","webpack:///./src/pages/ioc/charts/GiaiNganCapDonViColChart.vue?1341","webpack:///./node_modules/echarts/lib/processor/dataSample.js"],"names":["BaseBarSeries","_default","extend","type","dependencies","brushSelector","getProgressive","this","get","getProgressiveThreshold","progressiveThreshold","largeThreshold","defaultOption","clip","roundCap","showBackground","backgroundStyle","color","borderColor","borderWidth","borderType","borderRadius","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","opacity","module","exports","MarkerModel","zlevel","z","symbol","symbolSize","precision","tooltip","trigger","label","show","position","distance","lineStyle","emphasis","width","animationEasing","isObject","value","_config","createListFromArray","__DEV__","SeriesModel","getInitialData","option","ecModel","getSource","useEncodeDefaulter","coordinateSystem","legendHoverLink","hoverAnimation","step","smooth","smoothMonotone","symbolRotate","showSymbol","showAllSymbol","connectNulls","sampling","progressive","hoverLayerThreshold","Infinity","getMarkerPosition","coordSys","pt","dataToPoint","clampData","data","getData","offset","getLayout","size","offsetIndex","getBaseAxis","isHorizontal","NaN","barMinHeight","barMinAngle","large","progressiveChunkMode","itemStyle","zrUtil","List","numberUtil","markerHelper","LineDraw","MarkerView","_dataStackHelper","getStackedDimension","markLineTransform","seriesModel","mlModel","item","mlType","isArray","xAxis","yAxis","valueAxis","getAxis","retrieve","axisInfo","getAxisInfo","valueDataDim","numCalculate","valueIndex","dim","baseIndex","mlFrom","clone","mlTo","coord","toFixed","Math","min","dataTransform","merge","isInifinity","val","isNaN","isFinite","ifMarkLineHasOnlyDim","dimIndex","fromCoord","toCoord","otherDimIndex","dimName","dimensions","containData","markLineFilter","dataFilter","updateSingleMarkerEndLayout","idx","isFrom","api","point","itemModel","getItemModel","xPx","parsePercent","getWidth","yPx","getHeight","getValues","dims","x","y","toGlobalCoord","getExtent","setItemLayout","updateTransform","markLineModel","eachSeries","mlData","fromData","__from","toData","__to","each","getItemLayout","markerGroupMap","id","updateLayout","renderSeries","seriesId","seriesData","lineDrawMap","lineDraw","set","group","add","createList","from","to","lineData","line","setData","symbolType","updateDataVisualAndLayout","setItemVisual","getVisual","lineColor","getItemVisual","updateData","eachItemGraphicEl","el","traverse","child","dataModel","__keep","silent","coordDimsInfos","map","coordDim","info","getDimensionInfo","mapDimension","defaults","name","optData","curry","filter","dimValueGetter","initData","hasItemOption","root","now","Date","reWhitespace","trimmedEndIndex","string","index","length","test","charAt","echarts","graphic","_helper","setLabel","Model","barItemStyle","Path","Group","_throttle","throttle","_createClipPathFromCoordSys","createClipPath","Sausage","BAR_BORDER_WIDTH_QUERY","_eventPos","getClipArea","coordSysClipArea","getArea","baseAxis","onBand","expandWidth","height","prototype","extendChartView","render","_updateDrawMode","coordinateSystemType","_isLargeDraw","_renderLarge","_renderNormal","incrementalPrepareRender","_clear","incrementalRender","params","_incrementalRenderLarge","isLargeDraw","pipelineContext","isHorizontalOrRadial","oldData","_data","animationModel","isAnimationEnabled","needsClip","removeClipPath","drawBackground","backgroundModel","getModel","barBorderRadius","bgEls","oldBgEls","_backgroundEls","createBackground","dataIndex","bgLayout","bgEl","createBackgroundEl","useStyle","getBarItemStyle","setShape","diff","layout","hasValue","isClipped","remove","elementCreator","setItemGraphicEl","updateStyle","update","newIndex","oldIndex","shape","createBackgroundShape","updateProps","getItemGraphicEl","removeRect","removeSector","execute","bgGroup","_backgroundGroup","removeAll","i","createLarge","clipPath","setClipPath","_removeBackground","dispose","noop","mathMax","max","mathMin","cartesian2d","coordSysBoundingRect","signWidth","signHeight","x2","y2","clipped","polar","signR","r0","r","isUpdate","rect","Rect","z2","rectShape","animateProperty","animateTarget","isRadial","clockwise","startAngle","endAngle","ShapeClass","Sector","sector","sectorShape","style","text","parent","fixedLineWidth","getLineWidth","signX","signY","cx","cy","isZeroOnPolar","isPolar","stroke","itemStyleModel","hoverStyle","fill","cursorStyle","getShallow","attr","labelPositionOutside","setHoverStyle","rawLayout","lineWidth","Number","MAX_VALUE","abs","LargePath","points","buildPath","ctx","startPoint","__startPoint","baseDimIdx","__baseDimIdx","moveTo","lineTo","incremental","largeDataIndices","barWidth","backgroundStartPoint","__largeDataIndices","__barWidth","setLargeBackgroundStyle","setLargeStyle","seriesIndex","on","largePathUpdateDataIndex","event","largePath","largePathFindDataIndex","offsetX","offsetY","valueDimIdx","barWidthHalf","startValueVal","pointerBaseVal","pointerValueVal","baseLowerBound","baseUpperBound","len","ii","barBaseVal","barValueVal","getItemStyle","coordLayout","grid","getRect","PI","ElementClz","LineGroup","ctor","_ctor","lineDrawProto","doAdd","seriesScope","itemLayout","lineNeedsDraw","doUpdate","oldLineData","newLineData","oldIdx","newIdx","itemEl","isEffectObject","animators","makeSeriesScope","hostModel","getLineStyle","hoverLineStyle","labelModel","hoverLabelModel","isPointNaN","pts","isPersistent","_lineData","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","isGroup","useHoverLayer","start","end","_clearIncremental","_incremental","clearDisplaybles","vector","symbolUtil","LinePath","_number","round","SYMBOL_CATEGORIES","makeSymbolTypeKey","symbolCategory","createSymbol","symbolPath","__specifiedRotation","createLine","subPixelOptimize","setLinePoints","targetShape","x1","y1","percent","cp1","cpx1","cpy1","updateSymbolAndLabelBeforeLineUpdate","lineGroup","symbolFrom","childOfName","symbolTo","ignore","invScale","parentNode","scale","__dirty","fromPos","pointAt","toPos","d","sub","normalize","specifiedRotation","tangent","tangentAt","atan2","textPosition","textAlign","textVerticalAlign","textOrigin","__labelDistance","distanceX","distanceY","halfPercent","n","cp","dy","dir","__position","rotation","__verticalAlign","__textAlign","origin","Line","call","_createLine","lineProto","beforeUpdate","linePoints","initProps","Text","lineLabelOriginalOpacity","_updateCommonStl","target","key","visualColor","visualOpacity","retrieve3","strokeNoScale","setColor","setStyle","defaultLabelColor","baseText","showLabel","hoverShowLabel","getFormattedLabel","dataType","rawVal","getRawValue","getName","normalText","emphasisText","retrieve2","labelStyle","setTextStyle","autoColor","textFill","getTextColor","fontStyle","fontWeight","fontSize","fontFamily","highlight","downplay","linePath","dirty","inherits","vec2","straightLineProto","bezierCurveProto","BezierCurve","isLine","extendShape","_buildPathLine","_buildPathCurve","t","_pointAtLine","_pointAtCurve","p","_tangentAtCurve","_util","isFunction","seriesType","defaultSymbolType","legendSymbol","performRawSeries","reset","keepAspect","hasSymbolTypeCallback","hasSymbolSizeCallback","hasSymbolRotateCallback","hasCallback","seriesSymbol","seriesSymbolSize","setVisual","symbolKeepAspect","isSeriesFiltered","dataEach","rawValue","getDataParams","itemSymbolType","itemSymbolSize","itemSymbolRotate","itemSymbolKeepAspect","createRenderPlanner","isDimensionStacked","plan","isLargeRender","slice","dimLen","stackResultDim","getCalculationInfo","progress","segCount","Float32Array","tmpIn","tmpOut","setLayout","reTrimStart","baseTrim","replace","_barGrid","largeLayout","registerLayout","PRIORITY","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","registerVisual","registerPreprocessor","opt","markLine","prepareDataCoordInfo","valueOrigin","stacked","getOtherAxis","valueStart","getValueStart","baseAxisDim","valueAxisDim","valueDim","baseDim","baseDataOffset","dataDimsForPoint","stackedOverDimension","extent","getStackedOnPoint","dataCoordInfo","stackedData","toNumber","FUNC_ERROR_TEXT","nativeMax","nativeMin","debounce","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","leadingEdge","setTimeout","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","clearTimeout","flush","debounced","isInvoking","arguments","createGridClipPath","cartesian","hasAnimation","floor","createPolarClipPath","sectorArea","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","makeStyleMapper","excludes","getBorderLineDash","lineDash","_graphic","dr","rCenter","unitStartX","cos","unitStartY","sin","unitEndX","unitEndY","lessThanCircle","arc","closePath","_vm","_c","_self","staticClass","attrs","iChart","staticRenderFns","labelOption","rotate","align","verticalAlign","formatter","toLocaleString","components","ECharts","props","title","textStyle","subtext","subtextStyle","left","legend","bottom","right","containLabel","toolbox","feature","saveAsImage","boundaryGap","axisLabel","interval","nameTextStyle","series","valueFormatter","yAxisIndex","markPoint","created","subTitle","colors","component","fixClipWithShadow","vec2Min","vec2Max","scaleAndAdd","v2Copy","copy","v","cp0","isPointNull","drawSegment","segLen","allLen","smoothMin","smoothMax","drawMono","drawNonMono","prevIdx","k","prevP","ctrlLen","bezierCurveTo","nextIdx","nextP","ratioNextSeg","lenPrevSeg","lenNextSeg","dist","getBoundingBox","smoothConstraint","ptMin","ptMax","Polyline","brush","Polygon","stackedOnPoints","stackedOnSmooth","bbox","stackedOnBBox","_labelHelper","getDefaultLabel","normalStyle","setLabelStyle","labelFetcher","labelDataIndex","defaultText","isRectText","fixPosition","visualSymbol","layoutPoints","dataSample","registerProcessor","PROCESSOR","STATISTIC","diffData","newData","diffResult","push","cmd","idx1","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","currPoints","nextPoints","currStackedPoints","nextStackedPoints","status","sortedIndices","rawIndices","newDataOldCoordInfo","oldDataNewCoordInfo","diffItem","pointAdded","currentPt","nextPt","getRawIndex","rawIndex","sort","a","b","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","current","next","stackedOnCurrent","stackedOnNext","_bbox","fromPoints","SymbolDraw","SymbolClz","lineAnimationDiff","modelUtil","_poly","ChartView","isPointsSame","points1","points2","p1","p2","getBoundingDiff","min1","max1","min2","max2","getSmooth","getStackedOnPoints","count","turnPointsIntoStep","stepTurnAt","stepPoints","stepPt","middle","stepPt2","getVisualGradient","visualMetaList","visualMeta","dimension","dimInfo","axis","colorStops","stops","stop","dataToCoord","stopLen","outerColors","reverse","tinyExtent","minCoord","maxCoord","coordSpan","unshift","gradient","LinearGradient","getIsIgnoreFunc","isAuto","categoryAxis","getAxesByScale","canShowAllSymbolForCategory","categoryDataDim","labelMap","getViewLabels","labelItem","tickValue","hasOwnProperty","axisExtent","availSize","dataLen","getSymbolSize","createLineClipPath","expandSize","init","symbolDraw","_symbolDraw","_lineGroup","lineStyleModel","areaStyleModel","mapArray","isCoordSysPolar","prevCoordSys","_coordSys","polyline","_polyline","polygon","_polygon","isAreaChart","isEmpty","isIgnoreFunc","__temp","clipShapeForSymbol","r1","_clipShapeForSymbol","_step","_newPolygon","isIgnore","clipShape","stopAnimation","_stackedOnPoints","_points","_updateAnimation","_newPolyline","lineJoin","stackedOnSeries","getAreaStyle","_valueOrigin","payload","queryDataIndex","Array","contain","setZ","stopSymbolAnimation","__points","updatedDataInfo","diffStatus","ptIdx","during","samplers","average","frame","sum","nearest","indexSampler","modifyOutputEnd","sampler","rate","downSample"],"mappings":"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","file":"js/chunk-068268ba.94bcdd21.js","sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseBarSeries = require(\"./BaseBarSeries\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = BaseBarSeries.extend({\n type: 'series.bar',\n dependencies: ['grid', 'polar'],\n brushSelector: 'rect',\n\n /**\n * @override\n */\n getProgressive: function () {\n // Do not support progressive in normal mode.\n return this.get('large') ? this.get('progressive') : false;\n },\n\n /**\n * @override\n */\n 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 defaultOption: {\n // If clipped\n // Only available on cartesian2d\n clip: true,\n // If use caps on two sides of bars\n // Only available on tangential polar bar\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 }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar MarkerModel = require(\"./MarkerModel\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = MarkerModel.extend({\n type: 'markLine',\n defaultOption: {\n zlevel: 0,\n z: 5,\n symbol: ['circle', 'arrow'],\n symbolSize: [8, 16],\n //symbolRotate: 0,\n precision: 2,\n tooltip: {\n trigger: 'item'\n },\n label: {\n show: true,\n position: 'end',\n distance: 5\n },\n lineStyle: {\n type: 'dashed'\n },\n emphasis: {\n label: {\n show: true\n },\n lineStyle: {\n width: 3\n }\n },\n animationEasing: 'linear'\n }\n});\n\nmodule.exports = _default;","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.line',\n dependencies: ['grid', 'polar'],\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // stack: null\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // polarIndex: 0,\n // If clip the overflow value\n clip: true,\n // cursor: null,\n label: {\n position: 'top'\n },\n // itemStyle: {\n // },\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n // areaStyle: {\n // origin of areaStyle. Valid values:\n // `'auto'/null/undefined`: from axisLine to data\n // `'start'`: from min to data\n // `'end'`: from data to max\n // origin: 'auto'\n // },\n // false, 'start', 'end', 'middle'\n step: false,\n // Disabled if step is true\n smooth: false,\n smoothMonotone: null,\n symbol: 'emptyCircle',\n symbolSize: 4,\n symbolRotate: null,\n showSymbol: true,\n // `false`: follow the label interval strategy.\n // `true`: show all symbols.\n // `'auto'`: If possible, show all symbols, otherwise\n // follow the label interval strategy.\n showAllSymbol: 'auto',\n // Whether to connect break point.\n connectNulls: false,\n // Sampling for large data. Can be: 'average', 'max', 'min', 'sum'.\n sampling: 'none',\n animationEasing: 'linear',\n // Disable progressive\n progressive: 0,\n hoverLayerThreshold: Infinity\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.__base_bar__',\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n getMarkerPosition: function (value) {\n var coordSys = this.coordinateSystem;\n\n if (coordSys) {\n // PENDING if clamp ?\n var pt = coordSys.dataToPoint(coordSys.clampData(value));\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[offsetIndex] += offset + size / 2;\n return pt;\n }\n\n return [NaN, NaN];\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n // stack: null\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // 最小高度改为0\n barMinHeight: 0,\n // 最小角度为0,仅对极坐标系下的柱状图有效\n barMinAngle: 0,\n // cursor: null,\n large: false,\n largeThreshold: 400,\n progressive: 3e3,\n progressiveChunkMode: 'mod',\n // barMaxWidth: null,\n // In cartesian, the default value is 1. Otherwise null.\n // barMinWidth: null,\n // 默认自适应\n // barWidth: null,\n // 柱间距离,默认为柱形宽度的30%,可设固定值\n // barGap: '30%',\n // 类目间柱形距离,默认为类目间距的20%,可设固定值\n // barCategoryGap: '20%',\n // label: {\n // show: false\n // },\n itemStyle: {},\n emphasis: {}\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar markerHelper = require(\"./markerHelper\");\n\nvar LineDraw = require(\"../../chart/helper/LineDraw\");\n\nvar MarkerView = require(\"./MarkerView\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar markLineTransform = function (seriesModel, coordSys, mlModel, item) {\n var data = seriesModel.getData(); // Special type markLine like 'min', 'max', 'average', 'median'\n\n var mlType = item.type;\n\n if (!zrUtil.isArray(item) && (mlType === 'min' || mlType === 'max' || mlType === 'average' || mlType === 'median' // In case\n // data: [{\n // yAxis: 10\n // }]\n || item.xAxis != null || item.yAxis != null)) {\n var valueAxis;\n var value;\n\n if (item.yAxis != null || item.xAxis != null) {\n valueAxis = coordSys.getAxis(item.yAxis != null ? 'y' : 'x');\n value = zrUtil.retrieve(item.yAxis, item.xAxis);\n } else {\n var axisInfo = markerHelper.getAxisInfo(item, data, coordSys, seriesModel);\n valueAxis = axisInfo.valueAxis;\n var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim);\n value = markerHelper.numCalculate(data, valueDataDim, mlType);\n }\n\n var valueIndex = valueAxis.dim === 'x' ? 0 : 1;\n var baseIndex = 1 - valueIndex;\n var mlFrom = zrUtil.clone(item);\n var mlTo = {};\n mlFrom.type = null;\n mlFrom.coord = [];\n mlTo.coord = [];\n mlFrom.coord[baseIndex] = -Infinity;\n mlTo.coord[baseIndex] = Infinity;\n var precision = mlModel.get('precision');\n\n if (precision >= 0 && typeof value === 'number') {\n value = +value.toFixed(Math.min(precision, 20));\n }\n\n mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value;\n item = [mlFrom, mlTo, {\n // Extra option for tooltip and label\n type: mlType,\n valueIndex: item.valueIndex,\n // Force to use the value of calculated value.\n value: value\n }];\n }\n\n item = [markerHelper.dataTransform(seriesModel, item[0]), markerHelper.dataTransform(seriesModel, item[1]), zrUtil.extend({}, item[2])]; // Avoid line data type is extended by from(to) data type\n\n item[2].type = item[2].type || ''; // Merge from option and to option into line option\n\n zrUtil.merge(item[2], item[0]);\n zrUtil.merge(item[2], item[1]);\n return item;\n};\n\nfunction isInifinity(val) {\n return !isNaN(val) && !isFinite(val);\n} // If a markLine has one dim\n\n\nfunction ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\n var otherDimIndex = 1 - dimIndex;\n var dimName = coordSys.dimensions[dimIndex];\n return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]);\n}\n\nfunction markLineFilter(coordSys, item) {\n if (coordSys.type === 'cartesian2d') {\n var fromCoord = item[0].coord;\n var toCoord = item[1].coord; // In case\n // {\n // markLine: {\n // data: [{ yAxis: 2 }]\n // }\n // }\n\n if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\n return true;\n }\n }\n\n return markerHelper.dataFilter(coordSys, item[0]) && markerHelper.dataFilter(coordSys, item[1]);\n}\n\nfunction updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var itemModel = data.getItemModel(idx);\n var point;\n var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth());\n var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight());\n\n if (!isNaN(xPx) && !isNaN(yPx)) {\n point = [xPx, yPx];\n } else {\n // Chart like bar may have there own marker positioning logic\n if (seriesModel.getMarkerPosition) {\n // Use the getMarkerPoisition\n point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx));\n } else {\n var dims = coordSys.dimensions;\n var x = data.get(dims[0], idx);\n var y = data.get(dims[1], idx);\n point = coordSys.dataToPoint([x, y]);\n } // Expand line to the edge of grid if value on one axis is Inifnity\n // In case\n // markLine: {\n // data: [{\n // yAxis: 2\n // // or\n // type: 'average'\n // }]\n // }\n\n\n if (coordSys.type === 'cartesian2d') {\n var xAxis = coordSys.getAxis('x');\n var yAxis = coordSys.getAxis('y');\n var dims = coordSys.dimensions;\n\n if (isInifinity(data.get(dims[0], idx))) {\n point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]);\n } else if (isInifinity(data.get(dims[1], idx))) {\n point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]);\n }\n } // Use x, y if has any\n\n\n if (!isNaN(xPx)) {\n point[0] = xPx;\n }\n\n if (!isNaN(yPx)) {\n point[1] = yPx;\n }\n }\n\n data.setItemLayout(idx, point);\n}\n\nvar _default = MarkerView.extend({\n type: 'markLine',\n // updateLayout: function (markLineModel, ecModel, api) {\n // ecModel.eachSeries(function (seriesModel) {\n // var mlModel = seriesModel.markLineModel;\n // if (mlModel) {\n // var mlData = mlModel.getData();\n // var fromData = mlModel.__from;\n // var toData = mlModel.__to;\n // // Update visual and layout of from symbol and to symbol\n // fromData.each(function (idx) {\n // updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api);\n // updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api);\n // });\n // // Update layout of line\n // mlData.each(function (idx) {\n // mlData.setItemLayout(idx, [\n // fromData.getItemLayout(idx),\n // toData.getItemLayout(idx)\n // ]);\n // });\n // this.markerGroupMap.get(seriesModel.id).updateLayout();\n // }\n // }, this);\n // },\n updateTransform: function (markLineModel, ecModel, api) {\n ecModel.eachSeries(function (seriesModel) {\n var mlModel = seriesModel.markLineModel;\n\n if (mlModel) {\n var mlData = mlModel.getData();\n var fromData = mlModel.__from;\n var toData = mlModel.__to; // Update visual and layout of from symbol and to symbol\n\n fromData.each(function (idx) {\n updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api);\n updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api);\n }); // Update layout of line\n\n mlData.each(function (idx) {\n mlData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n });\n this.markerGroupMap.get(seriesModel.id).updateLayout();\n }\n }, this);\n },\n renderSeries: function (seriesModel, mlModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var seriesId = seriesModel.id;\n var seriesData = seriesModel.getData();\n var lineDrawMap = this.markerGroupMap;\n var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw());\n this.group.add(lineDraw.group);\n var mlData = createList(coordSys, seriesModel, mlModel);\n var fromData = mlData.from;\n var toData = mlData.to;\n var lineData = mlData.line;\n mlModel.__from = fromData;\n mlModel.__to = toData; // Line data for tooltip and formatter\n\n mlModel.setData(lineData);\n var symbolType = mlModel.get('symbol');\n var symbolSize = mlModel.get('symbolSize');\n\n if (!zrUtil.isArray(symbolType)) {\n symbolType = [symbolType, symbolType];\n }\n\n if (typeof symbolSize === 'number') {\n symbolSize = [symbolSize, symbolSize];\n } // Update visual and layout of from symbol and to symbol\n\n\n mlData.from.each(function (idx) {\n updateDataVisualAndLayout(fromData, idx, true);\n updateDataVisualAndLayout(toData, idx, false);\n }); // Update visual and layout of line\n\n lineData.each(function (idx) {\n var lineColor = lineData.getItemModel(idx).get('lineStyle.color');\n lineData.setItemVisual(idx, {\n color: lineColor || fromData.getItemVisual(idx, 'color')\n });\n lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n lineData.setItemVisual(idx, {\n 'fromSymbolRotate': fromData.getItemVisual(idx, 'symbolRotate'),\n 'fromSymbolSize': fromData.getItemVisual(idx, 'symbolSize'),\n 'fromSymbol': fromData.getItemVisual(idx, 'symbol'),\n 'toSymbolRotate': toData.getItemVisual(idx, 'symbolRotate'),\n 'toSymbolSize': toData.getItemVisual(idx, 'symbolSize'),\n 'toSymbol': toData.getItemVisual(idx, 'symbol')\n });\n });\n lineDraw.updateData(lineData); // Set host model for tooltip\n // FIXME\n\n mlData.line.eachItemGraphicEl(function (el, idx) {\n el.traverse(function (child) {\n child.dataModel = mlModel;\n });\n });\n\n function updateDataVisualAndLayout(data, idx, isFrom) {\n var itemModel = data.getItemModel(idx);\n updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api);\n data.setItemVisual(idx, {\n symbolRotate: itemModel.get('symbolRotate'),\n symbolSize: itemModel.get('symbolSize') || symbolSize[isFrom ? 0 : 1],\n symbol: itemModel.get('symbol', true) || symbolType[isFrom ? 0 : 1],\n color: itemModel.get('itemStyle.color') || seriesData.getVisual('color')\n });\n }\n\n lineDraw.__keep = true;\n lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent');\n }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} coordSys\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\n\nfunction createList(coordSys, seriesModel, mlModel) {\n var coordDimsInfos;\n\n if (coordSys) {\n coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n return zrUtil.defaults({\n name: coordDim\n }, info);\n });\n } else {\n coordDimsInfos = [{\n name: 'value',\n type: 'float'\n }];\n }\n\n var fromData = new List(coordDimsInfos, mlModel);\n var toData = new List(coordDimsInfos, mlModel); // No dimensions\n\n var lineData = new List([], mlModel);\n var optData = zrUtil.map(mlModel.get('data'), zrUtil.curry(markLineTransform, seriesModel, coordSys, mlModel));\n\n if (coordSys) {\n optData = zrUtil.filter(optData, zrUtil.curry(markLineFilter, coordSys));\n }\n\n var dimValueGetter = coordSys ? markerHelper.dimValueGetter : function (item) {\n return item.value;\n };\n fromData.initData(zrUtil.map(optData, function (item) {\n return item[0];\n }), null, dimValueGetter);\n toData.initData(zrUtil.map(optData, function (item) {\n return item[1];\n }), null, dimValueGetter);\n lineData.initData(zrUtil.map(optData, function (item) {\n return item[2];\n }));\n lineData.hasItemOption = true;\n return {\n from: fromData,\n to: toData,\n line: lineData\n };\n}\n\nmodule.exports = _default;","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\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\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _helper = require(\"./helper\");\n\nvar setLabel = _helper.setLabel;\n\nvar Model = require(\"../../model/Model\");\n\nvar barItemStyle = require(\"./barItemStyle\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar _throttle = require(\"../../util/throttle\");\n\nvar throttle = _throttle.throttle;\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\nvar Sausage = require(\"../../util/shape/sausage\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'barBorderWidth'];\nvar _eventPos = [0, 0]; // FIXME\n// Just for compatible with ec2.\n\nzrUtil.extend(Model.prototype, barItemStyle);\n\nfunction getClipArea(coord, data) {\n var coordSysClipArea = coord.getArea && coord.getArea();\n\n if (coord.type === '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 _default = echarts.extendChartView({\n type: 'bar',\n render: function (seriesModel, ecModel, api) {\n this._updateDrawMode(seriesModel);\n\n var coordinateSystemType = seriesModel.get('coordinateSystem');\n\n if (coordinateSystemType === 'cartesian2d' || coordinateSystemType === 'polar') {\n this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api);\n } else {}\n\n return this.group;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._clear();\n\n this._updateDrawMode(seriesModel);\n },\n incrementalRender: function (params, seriesModel, ecModel, api) {\n // Do not support progressive in normal mode.\n this._incrementalRenderLarge(params, seriesModel);\n },\n _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 _renderNormal: function (seriesModel, ecModel, api) {\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 needsClip = seriesModel.get('clip', true);\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('barBorderRadius') || 0;\n var bgEls = [];\n var oldBgEls = this._backgroundEls || [];\n\n var createBackground = function (dataIndex) {\n var bgLayout = getLayout[coord.type](data, dataIndex);\n var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\n bgEl.useStyle(backgroundModel.getBarItemStyle()); // Only cartesian2d support borderRadius.\n\n if (coord.type === 'cartesian2d') {\n bgEl.setShape('r', barBorderRadius);\n }\n\n bgEls[dataIndex] = bgEl;\n return bgEl;\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)) {\n return;\n }\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 var isClipped = clip[coord.type](coordSysClipArea, layout);\n\n if (isClipped) {\n group.remove(el);\n return;\n }\n }\n\n var el = elementCreator[coord.type](dataIndex, layout, isHorizontalOrRadial, animationModel, false, roundCap);\n data.setItemGraphicEl(dataIndex, el);\n group.add(el);\n updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\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;\n\n if (oldBgEls.length === 0) {\n bgEl = createBackground(oldIndex);\n } else {\n bgEl = oldBgEls[oldIndex];\n bgEl.useStyle(backgroundModel.getBarItemStyle()); // Only cartesian2d support borderRadius.\n\n if (coord.type === 'cartesian2d') {\n bgEl.setShape('r', 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 graphic.updateProps(bgEl, {\n shape: shape\n }, animationModel, newIndex);\n }\n\n var el = oldData.getItemGraphicEl(oldIndex);\n\n if (!data.hasValue(newIndex)) {\n group.remove(el);\n return;\n }\n\n if (needsClip) {\n var isClipped = clip[coord.type](coordSysClipArea, layout);\n\n if (isClipped) {\n group.remove(el);\n return;\n }\n }\n\n if (el) {\n graphic.updateProps(el, {\n shape: layout\n }, animationModel, newIndex);\n } else {\n el = elementCreator[coord.type](newIndex, layout, isHorizontalOrRadial, animationModel, true, roundCap);\n }\n\n data.setItemGraphicEl(newIndex, el); // Add back\n\n group.add(el);\n updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n }).remove(function (dataIndex) {\n var el = oldData.getItemGraphicEl(dataIndex);\n\n if (coord.type === 'cartesian2d') {\n el && removeRect(dataIndex, animationModel, el);\n } else {\n el && removeSector(dataIndex, animationModel, el);\n }\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 _renderLarge: function (seriesModel, ecModel, api) {\n this._clear();\n\n createLarge(seriesModel, this.group); // Use clipPath in large mode.\n\n var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n },\n _incrementalRenderLarge: function (params, seriesModel) {\n this._removeBackground();\n\n createLarge(seriesModel, this.group, true);\n },\n dispose: zrUtil.noop,\n remove: function (ecModel) {\n this._clear(ecModel);\n },\n _clear: function (ecModel) {\n var group = this.group;\n var data = this._data;\n\n if (ecModel && ecModel.get('animation') && data && !this._isLargeDraw) {\n this._removeBackground();\n\n this._backgroundEls = [];\n data.eachItemGraphicEl(function (el) {\n if (el.type === 'sector') {\n removeSector(el.dataIndex, ecModel, el);\n } else {\n removeRect(el.dataIndex, ecModel, el);\n }\n });\n } else {\n group.removeAll();\n }\n\n this._data = null;\n },\n _removeBackground: function () {\n this.group.remove(this._backgroundGroup);\n this._backgroundGroup = null;\n }\n});\n\nvar mathMax = Math.max;\nvar mathMin = Math.min;\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 x = mathMax(layout.x, coordSysBoundingRect.x);\n var x2 = mathMin(layout.x + layout.width, coordSysBoundingRect.x + coordSysBoundingRect.width);\n var y = mathMax(layout.y, coordSysBoundingRect.y);\n var y2 = mathMin(layout.y + layout.height, coordSysBoundingRect.y + coordSysBoundingRect.height);\n layout.x = x;\n layout.y = y;\n layout.width = x2 - x;\n layout.height = y2 - y;\n var clipped = layout.width < 0 || layout.height < 0; // 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 clipped;\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 r = layout.r;\n layout.r = layout.r0;\n layout.r0 = r;\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 r = layout.r;\n layout.r = layout.r0;\n layout.r0 = r;\n }\n\n return clipped;\n }\n};\nvar elementCreator = {\n cartesian2d: function (dataIndex, layout, isHorizontal, animationModel, isUpdate) {\n var rect = new graphic.Rect({\n shape: zrUtil.extend({}, layout),\n z2: 1\n });\n rect.name = 'item'; // Animation\n\n if (animationModel) {\n var rectShape = rect.shape;\n var animateProperty = isHorizontal ? 'height' : 'width';\n var animateTarget = {};\n rectShape[animateProperty] = 0;\n animateTarget[animateProperty] = layout[animateProperty];\n graphic[isUpdate ? 'updateProps' : 'initProps'](rect, {\n shape: animateTarget\n }, animationModel, dataIndex);\n }\n\n return rect;\n },\n polar: function (dataIndex, layout, isRadial, animationModel, isUpdate, roundCap) {\n // Keep the same logic with bar in catesion: use end value to control\n // direction. Notice that if clockwise is true (by default), the sector\n // will always draw clockwisely, no matter whether endAngle is greater\n // or less than startAngle.\n var clockwise = layout.startAngle < layout.endAngle;\n var ShapeClass = !isRadial && roundCap ? Sausage : graphic.Sector;\n var sector = new ShapeClass({\n shape: zrUtil.defaults({\n clockwise: clockwise\n }, layout),\n z2: 1\n });\n sector.name = 'item'; // Animation\n\n if (animationModel) {\n var sectorShape = sector.shape;\n var animateProperty = isRadial ? 'r' : 'endAngle';\n var animateTarget = {};\n sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle;\n animateTarget[animateProperty] = layout[animateProperty];\n graphic[isUpdate ? 'updateProps' : 'initProps'](sector, {\n shape: animateTarget\n }, animationModel, dataIndex);\n }\n\n return sector;\n }\n};\n\nfunction removeRect(dataIndex, animationModel, el) {\n // Not show text when animating\n el.style.text = null;\n graphic.updateProps(el, {\n shape: {\n width: 0\n }\n }, animationModel, dataIndex, function () {\n el.parent && el.parent.remove(el);\n });\n}\n\nfunction removeSector(dataIndex, animationModel, el) {\n // Not show text when animating\n el.style.text = null;\n graphic.updateProps(el, {\n shape: {\n r: el.shape.r0\n }\n }, animationModel, dataIndex, function () {\n el.parent && el.parent.remove(el);\n });\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 };\n }\n};\n\nfunction isZeroOnPolar(layout) {\n return layout.startAngle != null && layout.endAngle != null && layout.startAngle === layout.endAngle;\n}\n\nfunction updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar) {\n var color = data.getItemVisual(dataIndex, 'color');\n var opacity = data.getItemVisual(dataIndex, 'opacity');\n var stroke = data.getVisual('borderColor');\n var itemStyleModel = itemModel.getModel('itemStyle');\n var hoverStyle = itemModel.getModel('emphasis.itemStyle').getBarItemStyle();\n\n if (!isPolar) {\n el.setShape('r', itemStyleModel.get('barBorderRadius') || 0);\n }\n\n el.useStyle(zrUtil.defaults({\n stroke: isZeroOnPolar(layout) ? 'none' : stroke,\n fill: isZeroOnPolar(layout) ? 'none' : color,\n opacity: opacity\n }, itemStyleModel.getBarItemStyle()));\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && el.attr('cursor', cursorStyle);\n var labelPositionOutside = isHorizontal ? layout.height > 0 ? 'bottom' : 'top' : layout.width > 0 ? 'left' : 'right';\n\n if (!isPolar) {\n setLabel(el.style, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside);\n }\n\n if (isZeroOnPolar(layout)) {\n hoverStyle.fill = hoverStyle.stroke = 'none';\n }\n\n graphic.setHoverStyle(el, hoverStyle);\n} // In case width or height are too small.\n\n\nfunction getLineWidth(itemModel, rawLayout) {\n var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 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 LargePath = Path.extend({\n type: 'largeBar',\n shape: {\n points: []\n },\n 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 startPoint = this.__startPoint;\n var baseDimIdx = this.__baseDimIdx;\n\n for (var i = 0; i < points.length; i += 2) {\n startPoint[baseDimIdx] = points[i + baseDimIdx];\n ctx.moveTo(startPoint[0], startPoint[1]);\n ctx.lineTo(points[i], points[i + 1]);\n }\n }\n});\n\nfunction createLarge(seriesModel, group, incremental) {\n // TODO support polar\n var data = seriesModel.getData();\n var startPoint = [];\n var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\n startPoint[1 - baseDimIdx] = data.getLayout('valueAxisStart');\n var largeDataIndices = data.getLayout('largeDataIndices');\n var barWidth = data.getLayout('barWidth');\n var backgroundModel = seriesModel.getModel('backgroundStyle');\n var drawBackground = seriesModel.get('showBackground', true);\n\n if (drawBackground) {\n var points = data.getLayout('largeBackgroundPoints');\n var backgroundStartPoint = [];\n backgroundStartPoint[1 - baseDimIdx] = data.getLayout('backgroundStart');\n var bgEl = new LargePath({\n shape: {\n points: points\n },\n incremental: !!incremental,\n __startPoint: backgroundStartPoint,\n __baseDimIdx: baseDimIdx,\n __largeDataIndices: largeDataIndices,\n __barWidth: barWidth,\n silent: true,\n z2: 0\n });\n setLargeBackgroundStyle(bgEl, backgroundModel, data);\n group.add(bgEl);\n }\n\n var el = new LargePath({\n shape: {\n points: data.getLayout('largePoints')\n },\n incremental: !!incremental,\n __startPoint: startPoint,\n __baseDimIdx: baseDimIdx,\n __largeDataIndices: largeDataIndices,\n __barWidth: barWidth\n });\n group.add(el);\n setLargeStyle(el, seriesModel, data); // Enable tooltip and user mouse/touch event handlers.\n\n el.seriesIndex = seriesModel.seriesIndex;\n\n if (!seriesModel.get('silent')) {\n el.on('mousedown', largePathUpdateDataIndex);\n el.on('mousemove', largePathUpdateDataIndex);\n }\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 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 barWidthHalf = Math.abs(largePath.__barWidth / 2);\n var startValueVal = largePath.__startPoint[valueDimIdx];\n _eventPos[0] = x;\n _eventPos[1] = y;\n var pointerBaseVal = _eventPos[baseDimIdx];\n var pointerValueVal = _eventPos[1 - baseDimIdx];\n var baseLowerBound = pointerBaseVal - barWidthHalf;\n var baseUpperBound = pointerBaseVal + barWidthHalf;\n\n for (var i = 0, len = points.length / 2; i < len; i++) {\n var ii = i * 2;\n var barBaseVal = points[ii + baseDimIdx];\n var barValueVal = points[ii + valueDimIdx];\n\n if (barBaseVal >= baseLowerBound && barBaseVal <= baseUpperBound && (startValueVal <= barValueVal ? pointerValueVal >= startValueVal && pointerValueVal <= barValueVal : pointerValueVal >= barValueVal && pointerValueVal <= startValueVal)) {\n return largeDataIndices[i];\n }\n }\n\n return -1;\n}\n\nfunction setLargeStyle(el, seriesModel, data) {\n var borderColor = data.getVisual('borderColor') || data.getVisual('color');\n var itemStyle = seriesModel.getModel('itemStyle').getItemStyle(['color', 'borderColor']);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor;\n el.style.lineWidth = data.getLayout('barWidth');\n}\n\nfunction setLargeBackgroundStyle(el, backgroundModel, data) {\n var borderColor = backgroundModel.get('borderColor') || backgroundModel.get('color');\n var itemStyle = backgroundModel.getItemStyle(['color', 'borderColor']);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor;\n el.style.lineWidth = data.getLayout('barWidth');\n}\n\nfunction createBackgroundShape(isHorizontalOrRadial, layout, coord) {\n var coordLayout;\n var isPolar = coord.type === 'polar';\n\n if (isPolar) {\n coordLayout = coord.getArea();\n } else {\n coordLayout = coord.grid.getRect();\n }\n\n if (isPolar) {\n return {\n cx: coordLayout.cx,\n cy: coordLayout.cy,\n r0: isHorizontalOrRadial ? coordLayout.r0 : layout.r0,\n r: isHorizontalOrRadial ? coordLayout.r : layout.r,\n startAngle: isHorizontalOrRadial ? layout.startAngle : 0,\n endAngle: isHorizontalOrRadial ? layout.endAngle : Math.PI * 2\n };\n } else {\n return {\n x: isHorizontalOrRadial ? layout.x : coordLayout.x,\n y: isHorizontalOrRadial ? coordLayout.y : layout.y,\n width: isHorizontalOrRadial ? layout.width : coordLayout.width,\n height: isHorizontalOrRadial ? coordLayout.height : layout.height\n };\n }\n}\n\nfunction createBackgroundEl(coord, isHorizontalOrRadial, layout) {\n var ElementClz = coord.type === 'polar' ? graphic.Sector : graphic.Rect;\n return new ElementClz({\n shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\n silent: true,\n z2: 0\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar LineGroup = require(\"./Line\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/LineDraw\n */\n// import IncrementalDisplayable from 'zrender/src/graphic/IncrementalDisplayable';\n\n/**\n * @alias module:echarts/component/marker/LineDraw\n * @constructor\n */\nfunction LineDraw(ctor) {\n this._ctor = ctor || LineGroup;\n this.group = new graphic.Group();\n}\n\nvar lineDrawProto = LineDraw.prototype;\n\nlineDrawProto.isPersistent = function () {\n return true;\n};\n/**\n * @param {module:echarts/data/List} lineData\n */\n\n\nlineDrawProto.updateData = function (lineData) {\n var lineDraw = this;\n var group = lineDraw.group;\n var oldLineData = lineDraw._lineData;\n lineDraw._lineData = lineData; // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!oldLineData) {\n group.removeAll();\n }\n\n var seriesScope = makeSeriesScope(lineData);\n lineData.diff(oldLineData).add(function (idx) {\n doAdd(lineDraw, lineData, idx, seriesScope);\n }).update(function (newIdx, oldIdx) {\n doUpdate(lineDraw, oldLineData, lineData, oldIdx, newIdx, seriesScope);\n }).remove(function (idx) {\n group.remove(oldLineData.getItemGraphicEl(idx));\n }).execute();\n};\n\nfunction doAdd(lineDraw, lineData, idx, seriesScope) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (!lineNeedsDraw(itemLayout)) {\n return;\n }\n\n var el = new lineDraw._ctor(lineData, idx, seriesScope);\n lineData.setItemGraphicEl(idx, el);\n lineDraw.group.add(el);\n}\n\nfunction doUpdate(lineDraw, oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\n var itemEl = oldLineData.getItemGraphicEl(oldIdx);\n\n if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\n lineDraw.group.remove(itemEl);\n return;\n }\n\n if (!itemEl) {\n itemEl = new lineDraw._ctor(newLineData, newIdx, seriesScope);\n } else {\n itemEl.updateData(newLineData, newIdx, seriesScope);\n }\n\n newLineData.setItemGraphicEl(newIdx, itemEl);\n lineDraw.group.add(itemEl);\n}\n\nlineDrawProto.updateLayout = function () {\n var lineData = this._lineData; // Do not support update layout in incremental mode.\n\n if (!lineData) {\n return;\n }\n\n lineData.eachItemGraphicEl(function (el, idx) {\n el.updateLayout(lineData, idx);\n }, this);\n};\n\nlineDrawProto.incrementalPrepareUpdate = function (lineData) {\n this._seriesScope = makeSeriesScope(lineData);\n this._lineData = null;\n this.group.removeAll();\n};\n\nfunction isEffectObject(el) {\n return el.animators && el.animators.length > 0;\n}\n\nlineDrawProto.incrementalUpdate = function (taskParams, lineData) {\n function updateIncrementalAndHover(el) {\n if (!el.isGroup && !isEffectObject(el)) {\n el.incremental = el.useHoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (lineNeedsDraw(itemLayout)) {\n var el = new this._ctor(lineData, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n this.group.add(el);\n lineData.setItemGraphicEl(idx, el);\n }\n }\n};\n\nfunction makeSeriesScope(lineData) {\n var hostModel = lineData.hostModel;\n return {\n lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\n hoverLineStyle: hostModel.getModel('emphasis.lineStyle').getLineStyle(),\n labelModel: hostModel.getModel('label'),\n hoverLabelModel: hostModel.getModel('emphasis.label')\n };\n}\n\nlineDrawProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlineDrawProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\n }\n};\n\nfunction isPointNaN(pt) {\n return isNaN(pt[0]) || isNaN(pt[1]);\n}\n\nfunction lineNeedsDraw(pts) {\n return !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\n}\n\nvar _default = LineDraw;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar symbolUtil = require(\"../../util/symbol\");\n\nvar LinePath = require(\"./LinePath\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar round = _number.round;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Line\n */\nvar SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\n\nfunction makeSymbolTypeKey(symbolCategory) {\n return '_' + symbolCategory + 'Type';\n}\n/**\n * @inner\n */\n\n\nfunction createSymbol(name, lineData, idx) {\n var symbolType = lineData.getItemVisual(idx, name);\n\n if (!symbolType || symbolType === 'none') {\n return;\n }\n\n var color = lineData.getItemVisual(idx, 'color');\n var symbolSize = lineData.getItemVisual(idx, name + 'Size');\n var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');\n\n if (!zrUtil.isArray(symbolSize)) {\n symbolSize = [symbolSize, symbolSize];\n }\n\n var symbolPath = symbolUtil.createSymbol(symbolType, -symbolSize[0] / 2, -symbolSize[1] / 2, symbolSize[0], symbolSize[1], color); // rotate by default if symbolRotate is not specified or NaN\n\n symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0;\n symbolPath.name = name;\n return symbolPath;\n}\n\nfunction createLine(points) {\n var line = new LinePath({\n name: 'line',\n subPixelOptimize: true\n });\n setLinePoints(line.shape, points);\n return line;\n}\n\nfunction setLinePoints(targetShape, points) {\n targetShape.x1 = points[0][0];\n targetShape.y1 = points[0][1];\n targetShape.x2 = points[1][0];\n targetShape.y2 = points[1][1];\n targetShape.percent = 1;\n var cp1 = points[2];\n\n if (cp1) {\n targetShape.cpx1 = cp1[0];\n targetShape.cpy1 = cp1[1];\n } else {\n targetShape.cpx1 = NaN;\n targetShape.cpy1 = NaN;\n }\n}\n\nfunction updateSymbolAndLabelBeforeLineUpdate() {\n var lineGroup = this;\n var symbolFrom = lineGroup.childOfName('fromSymbol');\n var symbolTo = lineGroup.childOfName('toSymbol');\n var label = lineGroup.childOfName('label'); // Quick reject\n\n if (!symbolFrom && !symbolTo && label.ignore) {\n return;\n }\n\n var invScale = 1;\n var parentNode = this.parent;\n\n while (parentNode) {\n if (parentNode.scale) {\n invScale /= parentNode.scale[0];\n }\n\n parentNode = parentNode.parent;\n }\n\n var line = lineGroup.childOfName('line'); // If line not changed\n // FIXME Parent scale changed\n\n if (!this.__dirty && !line.__dirty) {\n return;\n }\n\n var percent = line.shape.percent;\n var fromPos = line.pointAt(0);\n var toPos = line.pointAt(percent);\n var d = vector.sub([], toPos, fromPos);\n vector.normalize(d, d);\n\n if (symbolFrom) {\n symbolFrom.attr('position', fromPos); // Fix #12388\n // when symbol is set to be 'arrow' in markLine,\n // symbolRotate value will be ignored, and compulsively use tangent angle.\n // rotate by default if symbol rotation is not specified\n\n var specifiedRotation = symbolFrom.__specifiedRotation;\n\n if (specifiedRotation == null) {\n var tangent = line.tangentAt(0);\n symbolFrom.attr('rotation', Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n } else {\n symbolFrom.attr('rotation', specifiedRotation);\n }\n\n symbolFrom.attr('scale', [invScale * percent, invScale * percent]);\n }\n\n if (symbolTo) {\n symbolTo.attr('position', toPos); // Fix #12388\n // when symbol is set to be 'arrow' in markLine,\n // symbolRotate value will be ignored, and compulsively use tangent angle.\n // rotate by default if symbol rotation is not specified\n\n var specifiedRotation = symbolTo.__specifiedRotation;\n\n if (specifiedRotation == null) {\n var tangent = line.tangentAt(1);\n symbolTo.attr('rotation', -Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n } else {\n symbolTo.attr('rotation', specifiedRotation);\n }\n\n symbolTo.attr('scale', [invScale * percent, invScale * percent]);\n }\n\n if (!label.ignore) {\n label.attr('position', toPos);\n var textPosition;\n var textAlign;\n var textVerticalAlign;\n var textOrigin;\n var distance = label.__labelDistance;\n var distanceX = distance[0] * invScale;\n var distanceY = distance[1] * invScale;\n var halfPercent = percent / 2;\n var tangent = line.tangentAt(halfPercent);\n var n = [tangent[1], -tangent[0]];\n var cp = line.pointAt(halfPercent);\n\n if (n[1] > 0) {\n n[0] = -n[0];\n n[1] = -n[1];\n }\n\n var dir = tangent[0] < 0 ? -1 : 1;\n\n if (label.__position !== 'start' && label.__position !== 'end') {\n var rotation = -Math.atan2(tangent[1], tangent[0]);\n\n if (toPos[0] < fromPos[0]) {\n rotation = Math.PI + rotation;\n }\n\n label.attr('rotation', rotation);\n }\n\n var dy;\n\n switch (label.__position) {\n case 'insideStartTop':\n case 'insideMiddleTop':\n case 'insideEndTop':\n case 'middle':\n dy = -distanceY;\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideStartBottom':\n case 'insideMiddleBottom':\n case 'insideEndBottom':\n dy = distanceY;\n textVerticalAlign = 'top';\n break;\n\n default:\n dy = 0;\n textVerticalAlign = 'middle';\n }\n\n switch (label.__position) {\n case 'end':\n textPosition = [d[0] * distanceX + toPos[0], d[1] * distanceY + toPos[1]];\n textAlign = d[0] > 0.8 ? 'left' : d[0] < -0.8 ? 'right' : 'center';\n textVerticalAlign = d[1] > 0.8 ? 'top' : d[1] < -0.8 ? 'bottom' : 'middle';\n break;\n\n case 'start':\n textPosition = [-d[0] * distanceX + fromPos[0], -d[1] * distanceY + fromPos[1]];\n textAlign = d[0] > 0.8 ? 'right' : d[0] < -0.8 ? 'left' : 'center';\n textVerticalAlign = d[1] > 0.8 ? 'bottom' : d[1] < -0.8 ? 'top' : 'middle';\n break;\n\n case 'insideStartTop':\n case 'insideStart':\n case 'insideStartBottom':\n textPosition = [distanceX * dir + fromPos[0], fromPos[1] + dy];\n textAlign = tangent[0] < 0 ? 'right' : 'left';\n textOrigin = [-distanceX * dir, -dy];\n break;\n\n case 'insideMiddleTop':\n case 'insideMiddle':\n case 'insideMiddleBottom':\n case 'middle':\n textPosition = [cp[0], cp[1] + dy];\n textAlign = 'center';\n textOrigin = [0, -dy];\n break;\n\n case 'insideEndTop':\n case 'insideEnd':\n case 'insideEndBottom':\n textPosition = [-distanceX * dir + toPos[0], toPos[1] + dy];\n textAlign = tangent[0] >= 0 ? 'right' : 'left';\n textOrigin = [distanceX * dir, -dy];\n break;\n }\n\n label.attr({\n style: {\n // Use the user specified text align and baseline first\n textVerticalAlign: label.__verticalAlign || textVerticalAlign,\n textAlign: label.__textAlign || textAlign\n },\n position: textPosition,\n scale: [invScale, invScale],\n origin: textOrigin\n });\n }\n}\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\n\n\nfunction Line(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n\n this._createLine(lineData, idx, seriesScope);\n}\n\nvar lineProto = Line.prototype; // Update symbol position and rotation\n\nlineProto.beforeUpdate = updateSymbolAndLabelBeforeLineUpdate;\n\nlineProto._createLine = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var linePoints = lineData.getItemLayout(idx);\n var line = createLine(linePoints);\n line.shape.percent = 0;\n graphic.initProps(line, {\n shape: {\n percent: 1\n }\n }, seriesModel, idx);\n this.add(line);\n var label = new graphic.Text({\n name: 'label',\n // FIXME\n // Temporary solution for `focusNodeAdjacency`.\n // line label do not use the opacity of lineStyle.\n lineLabelOriginalOpacity: 1\n });\n this.add(label);\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = createSymbol(symbolCategory, lineData, idx); // symbols must added after line to make sure\n // it will be updated after line#update.\n // Or symbol position and rotation update in line#beforeUpdate will be one frame slow\n\n this.add(symbol);\n this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory);\n }, this);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\nlineProto.updateData = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var linePoints = lineData.getItemLayout(idx);\n var target = {\n shape: {}\n };\n setLinePoints(target.shape, linePoints);\n graphic.updateProps(line, target, seriesModel, idx);\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbolType = lineData.getItemVisual(idx, symbolCategory);\n var key = makeSymbolTypeKey(symbolCategory); // Symbol changed\n\n if (this[key] !== symbolType) {\n this.remove(this.childOfName(symbolCategory));\n var symbol = createSymbol(symbolCategory, lineData, idx);\n this.add(symbol);\n }\n\n this[key] = symbolType;\n }, this);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\nlineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var lineStyle = seriesScope && seriesScope.lineStyle;\n var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n var labelModel = seriesScope && seriesScope.labelModel;\n var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel; // Optimization for large dataset\n\n if (!seriesScope || lineData.hasItemOption) {\n var itemModel = lineData.getItemModel(idx);\n lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n labelModel = itemModel.getModel('label');\n hoverLabelModel = itemModel.getModel('emphasis.label');\n }\n\n var visualColor = lineData.getItemVisual(idx, 'color');\n var visualOpacity = zrUtil.retrieve3(lineData.getItemVisual(idx, 'opacity'), lineStyle.opacity, 1);\n line.useStyle(zrUtil.defaults({\n strokeNoScale: true,\n fill: 'none',\n stroke: visualColor,\n opacity: visualOpacity\n }, lineStyle));\n line.hoverStyle = hoverLineStyle; // Update symbol\n\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = this.childOfName(symbolCategory);\n\n if (symbol) {\n symbol.setColor(visualColor);\n symbol.setStyle({\n opacity: visualOpacity\n });\n }\n }, this);\n var showLabel = labelModel.getShallow('show');\n var hoverShowLabel = hoverLabelModel.getShallow('show');\n var label = this.childOfName('label');\n var defaultLabelColor;\n var baseText; // FIXME: the logic below probably should be merged to `graphic.setLabelStyle`.\n\n if (showLabel || hoverShowLabel) {\n defaultLabelColor = visualColor || '#000';\n baseText = seriesModel.getFormattedLabel(idx, 'normal', lineData.dataType);\n\n if (baseText == null) {\n var rawVal = seriesModel.getRawValue(idx);\n baseText = rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal;\n }\n }\n\n var normalText = showLabel ? baseText : null;\n var emphasisText = hoverShowLabel ? zrUtil.retrieve2(seriesModel.getFormattedLabel(idx, 'emphasis', lineData.dataType), baseText) : null;\n var labelStyle = label.style; // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n\n if (normalText != null || emphasisText != null) {\n graphic.setTextStyle(label.style, labelModel, {\n text: normalText\n }, {\n autoColor: defaultLabelColor\n });\n label.__textAlign = labelStyle.textAlign;\n label.__verticalAlign = labelStyle.textVerticalAlign; // 'start', 'middle', 'end'\n\n label.__position = labelModel.get('position') || 'middle';\n var distance = labelModel.get('distance');\n\n if (!zrUtil.isArray(distance)) {\n distance = [distance, distance];\n }\n\n label.__labelDistance = distance;\n }\n\n if (emphasisText != null) {\n // Only these properties supported in this emphasis style here.\n label.hoverStyle = {\n text: emphasisText,\n textFill: hoverLabelModel.getTextColor(true),\n // For merging hover style to normal style, do not use\n // `hoverLabelModel.getFont()` here.\n fontStyle: hoverLabelModel.getShallow('fontStyle'),\n fontWeight: hoverLabelModel.getShallow('fontWeight'),\n fontSize: hoverLabelModel.getShallow('fontSize'),\n fontFamily: hoverLabelModel.getShallow('fontFamily')\n };\n } else {\n label.hoverStyle = {\n text: null\n };\n }\n\n label.ignore = !showLabel && !hoverShowLabel;\n graphic.setHoverStyle(this);\n};\n\nlineProto.highlight = function () {\n this.trigger('emphasis');\n};\n\nlineProto.downplay = function () {\n this.trigger('normal');\n};\n\nlineProto.updateLayout = function (lineData, idx) {\n this.setLinePoints(lineData.getItemLayout(idx));\n};\n\nlineProto.setLinePoints = function (points) {\n var linePath = this.childOfName('line');\n setLinePoints(linePath.shape, points);\n linePath.dirty();\n};\n\nzrUtil.inherits(Line, graphic.Group);\nvar _default = Line;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Line path for bezier and straight line draw\n */\nvar straightLineProto = graphic.Line.prototype;\nvar bezierCurveProto = graphic.BezierCurve.prototype;\n\nfunction isLine(shape) {\n return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\n}\n\nvar _default = graphic.extendShape({\n type: 'ec-line',\n style: {\n stroke: '#000',\n fill: null\n },\n shape: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n percent: 1,\n cpx1: null,\n cpy1: null\n },\n buildPath: function (ctx, shape) {\n this[isLine(shape) ? '_buildPathLine' : '_buildPathCurve'](ctx, shape);\n },\n _buildPathLine: straightLineProto.buildPath,\n _buildPathCurve: bezierCurveProto.buildPath,\n pointAt: function (t) {\n return this[isLine(this.shape) ? '_pointAtLine' : '_pointAtCurve'](t);\n },\n _pointAtLine: straightLineProto.pointAt,\n _pointAtCurve: bezierCurveProto.pointAt,\n tangentAt: function (t) {\n var shape = this.shape;\n var p = isLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : this._tangentAtCurve(t);\n return vec2.normalize(p, p);\n },\n _tangentAtCurve: bezierCurveProto.tangentAt\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isFunction = _util.isFunction;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(seriesType, defaultSymbolType, legendSymbol) {\n // Encoding visual for all series include which is filtered for legend drawing\n return {\n seriesType: seriesType,\n // For legend.\n performRawSeries: true,\n reset: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var symbolType = seriesModel.get('symbol');\n var symbolSize = seriesModel.get('symbolSize');\n var keepAspect = seriesModel.get('symbolKeepAspect');\n var symbolRotate = seriesModel.get('symbolRotate');\n var hasSymbolTypeCallback = isFunction(symbolType);\n var hasSymbolSizeCallback = isFunction(symbolSize);\n var hasSymbolRotateCallback = isFunction(symbolRotate);\n var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback || hasSymbolRotateCallback;\n var seriesSymbol = !hasSymbolTypeCallback && symbolType ? symbolType : defaultSymbolType;\n var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null;\n var seriesSymbolRotate = !hasSymbolRotateCallback ? seriesSymbolRotate : null;\n data.setVisual({\n legendSymbol: legendSymbol || seriesSymbol,\n // If seting callback functions on `symbol` or `symbolSize`, for simplicity and avoiding\n // to bring trouble, we do not pick a reuslt from one of its calling on data item here,\n // but just use the default value. Callback on `symbol` or `symbolSize` is convenient in\n // some cases but generally it is not recommanded.\n symbol: seriesSymbol,\n symbolSize: seriesSymbolSize,\n symbolKeepAspect: keepAspect,\n symbolRotate: symbolRotate\n }); // Only visible series has each data be visual encoded\n\n if (ecModel.isSeriesFiltered(seriesModel)) {\n return;\n }\n\n function dataEach(data, idx) {\n if (hasCallback) {\n var rawValue = seriesModel.getRawValue(idx);\n var params = seriesModel.getDataParams(idx);\n hasSymbolTypeCallback && data.setItemVisual(idx, 'symbol', symbolType(rawValue, params));\n hasSymbolSizeCallback && data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\n hasSymbolRotateCallback && data.setItemVisual(idx, 'symbolRotate', symbolRotate(rawValue, params));\n }\n\n if (data.hasItemOption) {\n var itemModel = data.getItemModel(idx);\n var itemSymbolType = itemModel.getShallow('symbol', true);\n var itemSymbolSize = itemModel.getShallow('symbolSize', true);\n var itemSymbolRotate = itemModel.getShallow('symbolRotate', true);\n var itemSymbolKeepAspect = itemModel.getShallow('symbolKeepAspect', true); // If has item symbol\n\n if (itemSymbolType != null) {\n data.setItemVisual(idx, 'symbol', itemSymbolType);\n }\n\n if (itemSymbolSize != null) {\n // PENDING Transform symbolSize ?\n data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\n }\n\n if (itemSymbolRotate != null) {\n data.setItemVisual(idx, 'symbolRotate', itemSymbolRotate);\n }\n\n if (itemSymbolKeepAspect != null) {\n data.setItemVisual(idx, 'symbolKeepAspect', itemSymbolKeepAspect);\n }\n }\n }\n\n return {\n dataEach: data.hasItemOption || hasCallback ? dataEach : null\n };\n }\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\nvar _dataStackHelper = require(\"../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nfunction _default(seriesType) {\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 isLargeRender = 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[1]*/\n )) {\n dims[0] = stackResultDim;\n }\n\n if (isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n dims[1] = stackResultDim;\n }\n\n function progress(params, data) {\n var segCount = params.end - params.start;\n var points = isLargeRender && new Float32Array(segCount * dimLen);\n\n for (var i = params.start, offset = 0, tmpIn = [], tmpOut = []; i < params.end; i++) {\n var point;\n\n if (dimLen === 1) {\n var x = data.get(dims[0], i);\n point = !isNaN(x) && coordSys.dataToPoint(x, null, tmpOut);\n } else {\n var x = tmpIn[0] = data.get(dims[0], i);\n var y = tmpIn[1] = data.get(dims[1], i); // Also {Array.}, not undefined to avoid if...else... statement\n\n point = !isNaN(x) && !isNaN(y) && coordSys.dataToPoint(tmpIn, null, tmpOut);\n }\n\n if (isLargeRender) {\n points[offset++] = point ? point[0] : NaN;\n points[offset++] = point ? point[1] : NaN;\n } else {\n data.setItemLayout(i, point && point.slice() || [NaN, NaN]);\n }\n }\n\n isLargeRender && data.setLayout('symbolPoints', points);\n }\n\n return dimLen && {\n progress: progress\n };\n }\n };\n}\n\nmodule.exports = _default;","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\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\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar layout = _barGrid.layout;\nvar largeLayout = _barGrid.largeLayout;\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./bar/BarSeries\");\n\nrequire(\"./bar/BarView\");\n\nrequire(\"../component/gridSimple\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// In case developer forget to include grid component\necharts.registerLayout(echarts.PRIORITY.VISUAL.LAYOUT, zrUtil.curry(layout, 'bar')); // Use higher prority to avoid to be blocked by other overall layout, which do not\n// only exist in this module, but probably also exist in other modules, like `barPolar`.\n\necharts.registerLayout(echarts.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout);\necharts.registerVisual({\n seriesType: 'bar',\n reset: function (seriesModel) {\n // Visual coding for legend\n seriesModel.getData().setVisual('legendSymbol', 'roundRect');\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\nvar echarts = require(\"../echarts\");\n\nrequire(\"./marker/MarkLineModel\");\n\nrequire(\"./marker/MarkLineView\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerPreprocessor(function (opt) {\n // Make sure markLine component is enabled\n opt.markLine = opt.markLine || {};\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\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} coordSys\n * @param {module:echarts/data/List} data\n * @param {string} valueOrigin lineSeries.option.areaStyle.origin\n */\nfunction prepareDataCoordInfo(coordSys, data, valueOrigin) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var valueStart = getValueStart(valueAxis, valueOrigin);\n var baseAxisDim = baseAxis.dim;\n var valueAxisDim = valueAxis.dim;\n var valueDim = data.mapDimension(valueAxisDim);\n var baseDim = data.mapDimension(baseAxisDim);\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n var dims = map(coordSys.dimensions, function (coordDim) {\n return data.mapDimension(coordDim);\n });\n var stacked;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (stacked |= isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n // jshint ignore:line\n dims[0] = stackResultDim;\n }\n\n if (stacked |= isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n // jshint ignore:line\n dims[1] = stackResultDim;\n }\n\n return {\n dataDimsForPoint: dims,\n valueStart: valueStart,\n valueAxisDim: valueAxisDim,\n baseAxisDim: baseAxisDim,\n stacked: !!stacked,\n valueDim: valueDim,\n baseDim: baseDim,\n baseDataOffset: baseDataOffset,\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\n };\n}\n\nfunction getValueStart(valueAxis, valueOrigin) {\n var valueStart = 0;\n var extent = valueAxis.scale.getExtent();\n\n if (valueOrigin === 'start') {\n valueStart = extent[0];\n } else if (valueOrigin === 'end') {\n valueStart = extent[1];\n } // auto\n else {\n // Both positive\n if (extent[0] > 0) {\n valueStart = extent[0];\n } // Both negative\n else if (extent[1] < 0) {\n valueStart = extent[1];\n } // If is one positive, and one negative, onZero shall be true\n\n }\n\n return valueStart;\n}\n\nfunction getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\n var value = NaN;\n\n if (dataCoordInfo.stacked) {\n value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\n }\n\n if (isNaN(value)) {\n value = dataCoordInfo.valueStart;\n }\n\n var baseDataOffset = dataCoordInfo.baseDataOffset;\n var stackedData = [];\n stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\n stackedData[1 - baseDataOffset] = value;\n return coordSys.dataToPoint(stackedData);\n}\n\nexports.prepareDataCoordInfo = prepareDataCoordInfo;\nexports.getStackedOnPoint = getStackedOnPoint;","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\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\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar round = _number.round;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction createGridClipPath(cartesian, hasAnimation, seriesModel) {\n var rect = cartesian.getArea();\n var isHorizontal = cartesian.getBaseAxis().isHorizontal();\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n var lineWidth = seriesModel.get('lineStyle.width') || 2; // Expand the clip path a bit to avoid the border is clipped and looks thinner\n\n x -= lineWidth / 2;\n y -= lineWidth / 2;\n width += lineWidth;\n height += lineWidth; // fix: https://github.com/apache/incubator-echarts/issues/11369\n\n x = Math.floor(x);\n width = Math.round(width);\n var clipPath = new graphic.Rect({\n shape: {\n x: x,\n y: y,\n width: width,\n height: height\n }\n });\n\n if (hasAnimation) {\n clipPath.shape[isHorizontal ? 'width' : 'height'] = 0;\n graphic.initProps(clipPath, {\n shape: {\n width: width,\n height: height\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createPolarClipPath(polar, hasAnimation, seriesModel) {\n var sectorArea = polar.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n\n var clipPath = new graphic.Sector({\n shape: {\n cx: round(polar.cx, 1),\n cy: round(polar.cy, 1),\n r0: round(sectorArea.r0, 1),\n r: round(sectorArea.r, 1),\n startAngle: sectorArea.startAngle,\n endAngle: sectorArea.endAngle,\n clockwise: sectorArea.clockwise\n }\n });\n\n if (hasAnimation) {\n clipPath.shape.endAngle = sectorArea.startAngle;\n graphic.initProps(clipPath, {\n shape: {\n endAngle: sectorArea.endAngle\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createClipPath(coordSys, hasAnimation, seriesModel) {\n if (!coordSys) {\n return null;\n } else if (coordSys.type === 'polar') {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n } else if (coordSys.type === 'cartesian2d') {\n return createGridClipPath(coordSys, hasAnimation, seriesModel);\n }\n\n return null;\n}\n\nexports.createGridClipPath = createGridClipPath;\nexports.createPolarClipPath = createPolarClipPath;\nexports.createClipPath = createClipPath;","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\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\nvar makeStyleMapper = require(\"../../model/mixin/makeStyleMapper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getBarItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], // Compatitable with 2\n['stroke', 'barBorderColor'], ['lineWidth', 'barBorderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n getBarItemStyle: function (excludes) {\n var style = getBarItemStyle(this, excludes);\n\n if (this.getBorderLineDash) {\n var lineDash = this.getBorderLineDash();\n lineDash && (style.lineDash = lineDash);\n }\n\n return style;\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _graphic = require(\"../graphic\");\n\nvar extendShape = _graphic.extendShape;\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 * Sausage: similar to sector, but have half circle on both sides\n * @public\n */\nvar _default = extendShape({\n type: 'sausage',\n shape: {\n cx: 0,\n cy: 0,\n r0: 0,\n r: 0,\n startAngle: 0,\n endAngle: Math.PI * 2,\n clockwise: true\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = 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 unitStartX = Math.cos(startAngle);\n var unitStartY = Math.sin(startAngle);\n var unitEndX = Math.cos(endAngle);\n var unitEndY = Math.sin(endAngle);\n var lessThanCircle = clockwise ? endAngle - startAngle < Math.PI * 2 : startAngle - endAngle < Math.PI * 2;\n\n if (lessThanCircle) {\n ctx.moveTo(unitStartX * r0 + x, unitStartY * r0 + y);\n ctx.arc(unitStartX * rCenter + x, unitStartY * rCenter + y, dr, -Math.PI + startAngle, startAngle, !clockwise);\n }\n\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n ctx.moveTo(unitEndX * r + x, unitEndY * r + y);\n ctx.arc(unitEndX * rCenter + x, unitEndY * rCenter + y, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);\n\n if (r0 !== 0) {\n ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\n ctx.moveTo(unitStartX * r0 + x, unitEndY * r0 + y);\n }\n\n ctx.closePath();\n }\n});\n\nmodule.exports = _default;","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-chart',{staticClass:\"iChart\",attrs:{\"options\":_vm.iChart,\"autoresize\":\"\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GiaiNganCapDonViColChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GiaiNganCapDonViColChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GiaiNganCapDonViColChart.vue?vue&type=template&id=06210a16&scoped=true&\"\nimport script from \"./GiaiNganCapDonViColChart.vue?vue&type=script&lang=js&\"\nexport * from \"./GiaiNganCapDonViColChart.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GiaiNganCapDonViColChart.vue?vue&type=style&index=0&id=06210a16&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"06210a16\",\n null\n \n)\n\nexport default component.exports","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar fixClipWithShadow = require(\"zrender/lib/graphic/helper/fixClipWithShadow\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Poly path support NaN point\nvar vec2Min = vec2.min;\nvar vec2Max = vec2.max;\nvar scaleAndAdd = vec2.scaleAndAdd;\nvar v2Copy = vec2.copy; // Temporary variable\n\nvar v = [];\nvar cp0 = [];\nvar cp1 = [];\n\nfunction isPointNull(p) {\n return isNaN(p[0]) || isNaN(p[1]);\n}\n\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n // if (smoothMonotone == null) {\n // if (isMono(points, 'x')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'x', connectNulls);\n // }\n // else if (isMono(points, 'y')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'y', connectNulls);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n // }\n // else if (smoothMonotone !== 'none' && isMono(points, smoothMonotone)) {\n // return drawMono.apply(this, arguments);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n if (smoothMonotone === 'none' || !smoothMonotone) {\n return drawNonMono.apply(this, arguments);\n } else {\n return drawMono.apply(this, arguments);\n }\n}\n/**\n * Check if points is in monotone.\n *\n * @param {number[][]} points Array of points which is in [x, y] form\n * @param {string} smoothMonotone 'x', 'y', or 'none', stating for which\n * dimension that is checking.\n * If is 'none', `drawNonMono` should be\n * called.\n * If is undefined, either being monotone\n * in 'x' or 'y' will call `drawMono`.\n */\n// function isMono(points, smoothMonotone) {\n// if (points.length <= 1) {\n// return true;\n// }\n// var dim = smoothMonotone === 'x' ? 0 : 1;\n// var last = points[0][dim];\n// var lastDiff = 0;\n// for (var i = 1; i < points.length; ++i) {\n// var diff = points[i][dim] - last;\n// if (!isNaN(diff) && !isNaN(lastDiff)\n// && diff !== 0 && lastDiff !== 0\n// && ((diff >= 0) !== (lastDiff >= 0))\n// ) {\n// return false;\n// }\n// if (!isNaN(diff) && diff !== 0) {\n// lastDiff = diff;\n// last = points[i][dim];\n// }\n// }\n// return true;\n// }\n\n/**\n * Draw smoothed line in monotone, in which only vertical or horizontal bezier\n * control points will be used. This should be used when points are monotone\n * either in x or y dimension.\n */\n\n\nfunction drawMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n } else {\n if (smooth > 0) {\n var prevP = points[prevIdx];\n var dim = smoothMonotone === 'y' ? 1 : 0; // Length of control point to p, either in x or y, but not both\n\n var ctrlLen = (p[dim] - prevP[dim]) * smooth;\n v2Copy(cp0, prevP);\n cp0[dim] = prevP[dim] + ctrlLen;\n v2Copy(cp1, p);\n cp1[dim] = p[dim] - ctrlLen;\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n/**\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\n * situations. This should be used when points are non-monotone neither in x or\n * y dimension.\n */\n\n\nfunction drawNonMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n v2Copy(cp0, p);\n } else {\n if (smooth > 0) {\n var nextIdx = idx + dir;\n var nextP = points[nextIdx];\n\n if (connectNulls) {\n // Find next point not null\n while (nextP && isPointNull(points[nextIdx])) {\n nextIdx += dir;\n nextP = points[nextIdx];\n }\n }\n\n var ratioNextSeg = 0.5;\n var prevP = points[prevIdx];\n var nextP = points[nextIdx]; // Last point\n\n if (!nextP || isPointNull(nextP)) {\n v2Copy(cp1, p);\n } else {\n // If next data is null in not connect case\n if (isPointNull(nextP) && !connectNulls) {\n nextP = p;\n }\n\n vec2.sub(v, nextP, prevP);\n var lenPrevSeg;\n var lenNextSeg;\n\n if (smoothMonotone === 'x' || smoothMonotone === 'y') {\n var dim = smoothMonotone === 'x' ? 0 : 1;\n lenPrevSeg = Math.abs(p[dim] - prevP[dim]);\n lenNextSeg = Math.abs(p[dim] - nextP[dim]);\n } else {\n lenPrevSeg = vec2.dist(p, prevP);\n lenNextSeg = vec2.dist(p, nextP);\n } // Use ratio of seg length\n\n\n ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n scaleAndAdd(cp1, p, v, -smooth * (1 - ratioNextSeg));\n } // Smooth constraint\n\n\n vec2Min(cp0, cp0, smoothMax);\n vec2Max(cp0, cp0, smoothMin);\n vec2Min(cp1, cp1, smoothMax);\n vec2Max(cp1, cp1, smoothMin);\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]); // cp0 of next segment\n\n scaleAndAdd(cp0, p, v, smooth * ratioNextSeg);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n\nfunction getBoundingBox(points, smoothConstraint) {\n var ptMin = [Infinity, Infinity];\n var ptMax = [-Infinity, -Infinity];\n\n if (smoothConstraint) {\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n\n if (pt[0] < ptMin[0]) {\n ptMin[0] = pt[0];\n }\n\n if (pt[1] < ptMin[1]) {\n ptMin[1] = pt[1];\n }\n\n if (pt[0] > ptMax[0]) {\n ptMax[0] = pt[0];\n }\n\n if (pt[1] > ptMax[1]) {\n ptMax[1] = pt[1];\n }\n }\n }\n\n return {\n min: smoothConstraint ? ptMin : ptMax,\n max: smoothConstraint ? ptMax : ptMin\n };\n}\n\nvar Polyline = Path.extend({\n type: 'ec-polyline',\n shape: {\n points: [],\n smooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n style: {\n fill: null,\n stroke: '#000'\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var i = 0;\n var len = points.length;\n var result = getBoundingBox(points, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n i += drawSegment(ctx, points, i, len, len, 1, result.min, result.max, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n }\n }\n});\nvar Polygon = Path.extend({\n type: 'ec-polygon',\n shape: {\n points: [],\n // Offset between stacked base points and points\n stackedOnPoints: [],\n smooth: 0,\n stackedOnSmooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var stackedOnPoints = shape.stackedOnPoints;\n var i = 0;\n var len = points.length;\n var smoothMonotone = shape.smoothMonotone;\n var bbox = getBoundingBox(points, shape.smoothConstraint);\n var stackedOnBBox = getBoundingBox(stackedOnPoints, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n var k = drawSegment(ctx, points, i, len, len, 1, bbox.min, bbox.max, shape.smooth, smoothMonotone, shape.connectNulls);\n drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, stackedOnBBox.min, stackedOnBBox.max, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n i += k + 1;\n ctx.closePath();\n }\n }\n});\nexports.Polyline = Polyline;\nexports.Polygon = Polygon;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _labelHelper = require(\"../helper/labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction setLabel(normalStyle, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside) {\n var labelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n graphic.setLabelStyle(normalStyle, hoverStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: dataIndex,\n defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\n isRectText: true,\n autoColor: color\n });\n fixPosition(normalStyle);\n fixPosition(hoverStyle);\n}\n\nfunction fixPosition(style, labelPositionOutside) {\n if (style.textPosition === 'outside') {\n style.textPosition = labelPositionOutside;\n }\n}\n\nexports.setLabel = setLabel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nrequire(\"./line/LineSeries\");\n\nrequire(\"./line/LineView\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar layoutPoints = require(\"../layout/points\");\n\nvar dataSample = require(\"../processor/dataSample\");\n\nrequire(\"../component/gridSimple\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// In case developer forget to include grid component\necharts.registerVisual(visualSymbol('line', 'circle', 'line'));\necharts.registerLayout(layoutPoints('line')); // Down sample after filter\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _helper = require(\"./helper\");\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// var arrayDiff = require('zrender/src/core/arrayDiff');\n// 'zrender/src/core/arrayDiff' has been used before, but it did\n// not do well in performance when roam with fixed dataZoom window.\n// function convertToIntId(newIdList, oldIdList) {\n// // Generate int id instead of string id.\n// // Compare string maybe slow in score function of arrDiff\n// // Assume id in idList are all unique\n// var idIndicesMap = {};\n// var idx = 0;\n// for (var i = 0; i < newIdList.length; i++) {\n// idIndicesMap[newIdList[i]] = idx;\n// newIdList[i] = idx++;\n// }\n// for (var i = 0; i < oldIdList.length; i++) {\n// var oldId = oldIdList[i];\n// // Same with newIdList\n// if (idIndicesMap[oldId]) {\n// oldIdList[i] = idIndicesMap[oldId];\n// }\n// else {\n// oldIdList[i] = idx++;\n// }\n// }\n// }\nfunction diffData(oldData, newData) {\n var diffResult = [];\n newData.diff(oldData).add(function (idx) {\n diffResult.push({\n cmd: '+',\n idx: idx\n });\n }).update(function (newIdx, oldIdx) {\n diffResult.push({\n cmd: '=',\n idx: oldIdx,\n idx1: newIdx\n });\n }).remove(function (idx) {\n diffResult.push({\n cmd: '-',\n idx: idx\n });\n }).execute();\n return diffResult;\n}\n\nfunction _default(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\n var diff = diffData(oldData, newData); // var newIdList = newData.mapArray(newData.getId);\n // var oldIdList = oldData.mapArray(oldData.getId);\n // convertToIntId(newIdList, oldIdList);\n // // FIXME One data ?\n // diff = arrayDiff(oldIdList, newIdList);\n\n var currPoints = [];\n var nextPoints = []; // Points for stacking base line\n\n var currStackedPoints = [];\n var nextStackedPoints = [];\n var status = [];\n var sortedIndices = [];\n var rawIndices = [];\n var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\n var oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\n\n for (var i = 0; i < diff.length; i++) {\n var diffItem = diff[i];\n var pointAdded = true; // FIXME, animation is not so perfect when dataZoom window moves fast\n // Which is in case remvoing or add more than one data in the tail or head\n\n switch (diffItem.cmd) {\n case '=':\n var currentPt = oldData.getItemLayout(diffItem.idx);\n var nextPt = newData.getItemLayout(diffItem.idx1); // If previous data is NaN, use next point directly\n\n if (isNaN(currentPt[0]) || isNaN(currentPt[1])) {\n currentPt = nextPt.slice();\n }\n\n currPoints.push(currentPt);\n nextPoints.push(nextPt);\n currStackedPoints.push(oldStackedOnPoints[diffItem.idx]);\n nextStackedPoints.push(newStackedOnPoints[diffItem.idx1]);\n rawIndices.push(newData.getRawIndex(diffItem.idx1));\n break;\n\n case '+':\n var idx = diffItem.idx;\n currPoints.push(oldCoordSys.dataToPoint([newData.get(newDataOldCoordInfo.dataDimsForPoint[0], idx), newData.get(newDataOldCoordInfo.dataDimsForPoint[1], idx)]));\n nextPoints.push(newData.getItemLayout(idx).slice());\n currStackedPoints.push(getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, idx));\n nextStackedPoints.push(newStackedOnPoints[idx]);\n rawIndices.push(newData.getRawIndex(idx));\n break;\n\n case '-':\n var idx = diffItem.idx;\n var rawIndex = oldData.getRawIndex(idx); // Data is replaced. In the case of dynamic data queue\n // FIXME FIXME FIXME\n\n if (rawIndex !== idx) {\n currPoints.push(oldData.getItemLayout(idx));\n nextPoints.push(newCoordSys.dataToPoint([oldData.get(oldDataNewCoordInfo.dataDimsForPoint[0], idx), oldData.get(oldDataNewCoordInfo.dataDimsForPoint[1], idx)]));\n currStackedPoints.push(oldStackedOnPoints[idx]);\n nextStackedPoints.push(getStackedOnPoint(oldDataNewCoordInfo, newCoordSys, oldData, idx));\n rawIndices.push(rawIndex);\n } else {\n pointAdded = false;\n }\n\n } // Original indices\n\n\n if (pointAdded) {\n status.push(diffItem);\n sortedIndices.push(sortedIndices.length);\n }\n } // Diff result may be crossed if all items are changed\n // Sort by data index\n\n\n sortedIndices.sort(function (a, b) {\n return rawIndices[a] - rawIndices[b];\n });\n var sortedCurrPoints = [];\n var sortedNextPoints = [];\n var sortedCurrStackedPoints = [];\n var sortedNextStackedPoints = [];\n var sortedStatus = [];\n\n for (var i = 0; i < sortedIndices.length; i++) {\n var idx = sortedIndices[i];\n sortedCurrPoints[i] = currPoints[idx];\n sortedNextPoints[i] = nextPoints[idx];\n sortedCurrStackedPoints[i] = currStackedPoints[idx];\n sortedNextStackedPoints[i] = nextStackedPoints[idx];\n sortedStatus[i] = status[idx];\n }\n\n return {\n current: sortedCurrPoints,\n next: sortedNextPoints,\n stackedOnCurrent: sortedCurrStackedPoints,\n stackedOnNext: sortedNextStackedPoints,\n status: sortedStatus\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _bbox = require(\"zrender/lib/core/bbox\");\n\nvar fromPoints = _bbox.fromPoints;\n\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar SymbolClz = require(\"../helper/Symbol\");\n\nvar lineAnimationDiff = require(\"./lineAnimationDiff\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar _poly = require(\"./poly\");\n\nvar Polyline = _poly.Polyline;\nvar Polygon = _poly.Polygon;\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar _helper = require(\"./helper\");\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createGridClipPath = _createClipPathFromCoordSys.createGridClipPath;\nvar createPolarClipPath = _createClipPathFromCoordSys.createPolarClipPath;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME step not support polar\nfunction isPointsSame(points1, points2) {\n if (points1.length !== points2.length) {\n return;\n }\n\n for (var i = 0; i < points1.length; i++) {\n var p1 = points1[i];\n var p2 = points2[i];\n\n if (p1[0] !== p2[0] || p1[1] !== p2[1]) {\n return;\n }\n }\n\n return true;\n}\n\nfunction getBoundingDiff(points1, points2) {\n var min1 = [];\n var max1 = [];\n var min2 = [];\n var max2 = [];\n fromPoints(points1, min1, max1);\n fromPoints(points2, min2, max2); // Get a max value from each corner of two boundings.\n\n return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\n}\n\nfunction getSmooth(smooth) {\n return typeof smooth === 'number' ? smooth : smooth ? 0.5 : 0;\n}\n/**\n * @param {module:echarts/coord/cartesian/Cartesian2D|module:echarts/coord/polar/Polar} coordSys\n * @param {module:echarts/data/List} data\n * @param {Object} dataCoordInfo\n * @param {Array.>} points\n */\n\n\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\n if (!dataCoordInfo.valueDim) {\n return [];\n }\n\n var points = [];\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n points.push(getStackedOnPoint(dataCoordInfo, coordSys, data, idx));\n }\n\n return points;\n}\n\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt) {\n var baseAxis = coordSys.getBaseAxis();\n var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n var stepPoints = [];\n\n for (var i = 0; i < points.length - 1; i++) {\n var nextPt = points[i + 1];\n var pt = points[i];\n stepPoints.push(pt);\n var stepPt = [];\n\n switch (stepTurnAt) {\n case 'end':\n stepPt[baseIndex] = nextPt[baseIndex];\n stepPt[1 - baseIndex] = pt[1 - baseIndex]; // default is start\n\n stepPoints.push(stepPt);\n break;\n\n case 'middle':\n // default is start\n var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\n var stepPt2 = [];\n stepPt[baseIndex] = stepPt2[baseIndex] = middle;\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\n stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\n stepPoints.push(stepPt);\n stepPoints.push(stepPt2);\n break;\n\n default:\n stepPt[baseIndex] = pt[baseIndex];\n stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; // default is start\n\n stepPoints.push(stepPt);\n }\n } // Last points\n\n\n points[i] && stepPoints.push(points[i]);\n return stepPoints;\n}\n\nfunction getVisualGradient(data, coordSys) {\n var visualMetaList = data.getVisual('visualMeta');\n\n if (!visualMetaList || !visualMetaList.length || !data.count()) {\n // When data.count() is 0, gradient range can not be calculated.\n return;\n }\n\n if (coordSys.type !== 'cartesian2d') {\n return;\n }\n\n var coordDim;\n var visualMeta;\n\n for (var i = visualMetaList.length - 1; i >= 0; i--) {\n var dimIndex = visualMetaList[i].dimension;\n var dimName = data.dimensions[dimIndex];\n var dimInfo = data.getDimensionInfo(dimName);\n coordDim = dimInfo && dimInfo.coordDim; // Can only be x or y\n\n if (coordDim === 'x' || coordDim === 'y') {\n visualMeta = visualMetaList[i];\n break;\n }\n }\n\n if (!visualMeta) {\n return;\n } // If the area to be rendered is bigger than area defined by LinearGradient,\n // the canvas spec prescribes that the color of the first stop and the last\n // stop should be used. But if two stops are added at offset 0, in effect\n // browsers use the color of the second stop to render area outside\n // LinearGradient. So we can only infinitesimally extend area defined in\n // LinearGradient to render `outerColors`.\n\n\n var axis = coordSys.getAxis(coordDim); // dataToCoor mapping may not be linear, but must be monotonic.\n\n var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n return {\n coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\n color: stop.color\n };\n });\n var stopLen = colorStops.length;\n var outerColors = visualMeta.outerColors.slice();\n\n if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\n colorStops.reverse();\n outerColors.reverse();\n }\n\n var tinyExtent = 10; // Arbitrary value: 10px\n\n var minCoord = colorStops[0].coord - tinyExtent;\n var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\n var coordSpan = maxCoord - minCoord;\n\n if (coordSpan < 1e-3) {\n return 'transparent';\n }\n\n zrUtil.each(colorStops, function (stop) {\n stop.offset = (stop.coord - minCoord) / coordSpan;\n });\n colorStops.push({\n offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\n color: outerColors[1] || 'transparent'\n });\n colorStops.unshift({\n // notice colorStops.length have been changed.\n offset: stopLen ? colorStops[0].offset : 0.5,\n color: outerColors[0] || 'transparent'\n }); // zrUtil.each(colorStops, function (colorStop) {\n // // Make sure each offset has rounded px to avoid not sharp edge\n // colorStop.offset = (Math.round(colorStop.offset * (end - start) + start) - start) / (end - start);\n // });\n\n var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStops, true);\n gradient[coordDim] = minCoord;\n gradient[coordDim + '2'] = maxCoord;\n return gradient;\n}\n\nfunction getIsIgnoreFunc(seriesModel, data, coordSys) {\n var showAllSymbol = seriesModel.get('showAllSymbol');\n var isAuto = showAllSymbol === 'auto';\n\n if (showAllSymbol && !isAuto) {\n return;\n }\n\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n if (!categoryAxis) {\n return;\n } // Note that category label interval strategy might bring some weird effect\n // in some scenario: users may wonder why some of the symbols are not\n // displayed. So we show all symbols as possible as we can.\n\n\n if (isAuto // Simplify the logic, do not determine label overlap here.\n && canShowAllSymbolForCategory(categoryAxis, data)) {\n return;\n } // Otherwise follow the label interval strategy on category axis.\n\n\n var categoryDataDim = data.mapDimension(categoryAxis.dim);\n var labelMap = {};\n zrUtil.each(categoryAxis.getViewLabels(), function (labelItem) {\n labelMap[labelItem.tickValue] = 1;\n });\n return function (dataIndex) {\n return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\n };\n}\n\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\n // In mose cases, line is monotonous on category axis, and the label size\n // is close with each other. So we check the symbol size and some of the\n // label size alone with the category axis to estimate whether all symbol\n // can be shown without overlap.\n var axisExtent = categoryAxis.getExtent();\n var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\n isNaN(availSize) && (availSize = 0); // 0/0 is NaN.\n // Sampling some points, max 5.\n\n var dataLen = data.count();\n var step = Math.max(1, Math.round(dataLen / 5));\n\n for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\n if (SymbolClz.getSymbolSize(data, dataIndex // Only for cartesian, where `isHorizontal` exists.\n )[categoryAxis.isHorizontal() ? 1 : 0] // Empirical number\n * 1.5 > availSize) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction createLineClipPath(coordSys, hasAnimation, seriesModel) {\n if (coordSys.type === 'cartesian2d') {\n var isHorizontal = coordSys.getBaseAxis().isHorizontal();\n var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel); // Expand clip shape to avoid clipping when line value exceeds axis\n\n if (!seriesModel.get('clip', true)) {\n var rectShape = clipPath.shape;\n var expandSize = Math.max(rectShape.width, rectShape.height);\n\n if (isHorizontal) {\n rectShape.y -= expandSize;\n rectShape.height += expandSize * 2;\n } else {\n rectShape.x -= expandSize;\n rectShape.width += expandSize * 2;\n }\n }\n\n return clipPath;\n } else {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n }\n}\n\nvar _default = ChartView.extend({\n type: 'line',\n init: function () {\n var lineGroup = new graphic.Group();\n var symbolDraw = new SymbolDraw();\n this.group.add(symbolDraw.group);\n this._symbolDraw = symbolDraw;\n this._lineGroup = lineGroup;\n },\n render: function (seriesModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var group = this.group;\n var data = seriesModel.getData();\n var lineStyleModel = seriesModel.getModel('lineStyle');\n var areaStyleModel = seriesModel.getModel('areaStyle');\n var points = data.mapArray(data.getItemLayout);\n var isCoordSysPolar = coordSys.type === 'polar';\n var prevCoordSys = this._coordSys;\n var symbolDraw = this._symbolDraw;\n var polyline = this._polyline;\n var polygon = this._polygon;\n var lineGroup = this._lineGroup;\n var hasAnimation = seriesModel.get('animation');\n var isAreaChart = !areaStyleModel.isEmpty();\n var valueOrigin = areaStyleModel.get('origin');\n var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\n var stackedOnPoints = getStackedOnPoints(coordSys, data, dataCoordInfo);\n var showSymbol = seriesModel.get('showSymbol');\n var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys); // Remove temporary symbols\n\n var oldData = this._data;\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n }); // Remove previous created symbols if showSymbol changed to false\n\n if (!showSymbol) {\n symbolDraw.remove();\n }\n\n group.add(lineGroup); // FIXME step not support polar\n\n var step = !isCoordSysPolar && seriesModel.get('step');\n var clipShapeForSymbol;\n\n if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\n clipShapeForSymbol = coordSys.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n // See #7913 and `test/dataZoom-clip.html`.\n\n if (clipShapeForSymbol.width != null) {\n clipShapeForSymbol.x -= 0.1;\n clipShapeForSymbol.y -= 0.1;\n clipShapeForSymbol.width += 0.2;\n clipShapeForSymbol.height += 0.2;\n } else if (clipShapeForSymbol.r0) {\n clipShapeForSymbol.r0 -= 0.5;\n clipShapeForSymbol.r1 += 0.5;\n }\n }\n\n this._clipShapeForSymbol = clipShapeForSymbol; // Initialization animation or coordinate system changed\n\n if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol\n });\n\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step);\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n }\n\n polyline = this._newPolyline(points, coordSys, hasAnimation);\n\n if (isAreaChart) {\n polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n }\n\n lineGroup.setClipPath(createLineClipPath(coordSys, true, seriesModel));\n } else {\n if (isAreaChart && !polygon) {\n // If areaStyle is added\n polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n } else if (polygon && !isAreaChart) {\n // If areaStyle is removed\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n } // Update clipPath\n\n\n lineGroup.setClipPath(createLineClipPath(coordSys, false, seriesModel)); // Always update, or it is wrong in the case turning on legend\n // because points are not changed\n\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol\n }); // Stop symbol animation and sync with line points\n // FIXME performance?\n\n data.eachItemGraphicEl(function (el) {\n el.stopAnimation(true);\n }); // In the case data zoom triggerred refreshing frequently\n // Data may not change if line has a category axis. So it should animate nothing\n\n if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) {\n if (hasAnimation) {\n this._updateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin);\n } else {\n // Not do it in update with animation\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step);\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n }\n\n polyline.setShape({\n points: points\n });\n polygon && polygon.setShape({\n points: points,\n stackedOnPoints: stackedOnPoints\n });\n }\n }\n }\n\n var visualColor = getVisualGradient(data, coordSys) || data.getVisual('color');\n polyline.useStyle(zrUtil.defaults( // Use color in lineStyle first\n lineStyleModel.getLineStyle(), {\n fill: 'none',\n stroke: visualColor,\n lineJoin: 'bevel'\n }));\n var smooth = seriesModel.get('smooth');\n smooth = getSmooth(seriesModel.get('smooth'));\n polyline.setShape({\n smooth: smooth,\n smoothMonotone: seriesModel.get('smoothMonotone'),\n connectNulls: seriesModel.get('connectNulls')\n });\n\n if (polygon) {\n var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n var stackedOnSmooth = 0;\n polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n fill: visualColor,\n opacity: 0.7,\n lineJoin: 'bevel'\n }));\n\n if (stackedOnSeries) {\n stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n }\n\n polygon.setShape({\n smooth: smooth,\n stackedOnSmooth: stackedOnSmooth,\n smoothMonotone: seriesModel.get('smoothMonotone'),\n connectNulls: seriesModel.get('connectNulls')\n });\n }\n\n this._data = data; // Save the coordinate system for transition animation when data changed\n\n this._coordSys = coordSys;\n this._stackedOnPoints = stackedOnPoints;\n this._points = points;\n this._step = step;\n this._valueOrigin = valueOrigin;\n },\n dispose: function () {},\n highlight: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (!symbol) {\n // Create a temporary symbol if it is not exists\n var pt = data.getItemLayout(dataIndex);\n\n if (!pt) {\n // Null data\n return;\n } // fix #11360: should't draw symbol outside clipShapeForSymbol\n\n\n if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(pt[0], pt[1])) {\n return;\n }\n\n symbol = new SymbolClz(data, dataIndex);\n symbol.position = pt;\n symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\n symbol.ignore = isNaN(pt[0]) || isNaN(pt[1]);\n symbol.__temp = true;\n data.setItemGraphicEl(dataIndex, symbol); // Stop scale animation\n\n symbol.stopSymbolAnimation(true);\n this.group.add(symbol);\n }\n\n symbol.highlight();\n } else {\n // Highlight whole series\n ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\n }\n },\n downplay: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n if (dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (symbol) {\n if (symbol.__temp) {\n data.setItemGraphicEl(dataIndex, null);\n this.group.remove(symbol);\n } else {\n symbol.downplay();\n }\n }\n } else {\n // FIXME\n // can not downplay completely.\n // Downplay whole series\n ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\n }\n },\n\n /**\n * @param {module:zrender/container/Group} group\n * @param {Array.>} points\n * @private\n */\n _newPolyline: function (points) {\n var polyline = this._polyline; // Remove previous created polyline\n\n if (polyline) {\n this._lineGroup.remove(polyline);\n }\n\n polyline = new Polyline({\n shape: {\n points: points\n },\n silent: true,\n z2: 10\n });\n\n this._lineGroup.add(polyline);\n\n this._polyline = polyline;\n return polyline;\n },\n\n /**\n * @param {module:zrender/container/Group} group\n * @param {Array.>} stackedOnPoints\n * @param {Array.>} points\n * @private\n */\n _newPolygon: function (points, stackedOnPoints) {\n var polygon = this._polygon; // Remove previous created polygon\n\n if (polygon) {\n this._lineGroup.remove(polygon);\n }\n\n polygon = new Polygon({\n shape: {\n points: points,\n stackedOnPoints: stackedOnPoints\n },\n silent: true\n });\n\n this._lineGroup.add(polygon);\n\n this._polygon = polygon;\n return polygon;\n },\n\n /**\n * @private\n */\n // FIXME Two value axis\n _updateAnimation: function (data, stackedOnPoints, coordSys, api, step, valueOrigin) {\n var polyline = this._polyline;\n var polygon = this._polygon;\n var seriesModel = data.hostModel;\n var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\n var current = diff.current;\n var stackedOnCurrent = diff.stackedOnCurrent;\n var next = diff.next;\n var stackedOnNext = diff.stackedOnNext;\n\n if (step) {\n // TODO If stacked series is not step\n current = turnPointsIntoStep(diff.current, coordSys, step);\n stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\n next = turnPointsIntoStep(diff.next, coordSys, step);\n stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\n } // Don't apply animation if diff is large.\n // For better result and avoid memory explosion problems like\n // https://github.com/apache/incubator-echarts/issues/12229\n\n\n if (getBoundingDiff(current, next) > 3000 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000) {\n polyline.setShape({\n points: next\n });\n\n if (polygon) {\n polygon.setShape({\n points: next,\n stackedOnPoints: stackedOnNext\n });\n }\n\n return;\n } // `diff.current` is subset of `current` (which should be ensured by\n // turnPointsIntoStep), so points in `__points` can be updated when\n // points in `current` are update during animation.\n\n\n polyline.shape.__points = diff.current;\n polyline.shape.points = current;\n graphic.updateProps(polyline, {\n shape: {\n points: next\n }\n }, seriesModel);\n\n if (polygon) {\n polygon.setShape({\n points: current,\n stackedOnPoints: stackedOnCurrent\n });\n graphic.updateProps(polygon, {\n shape: {\n points: next,\n stackedOnPoints: stackedOnNext\n }\n }, seriesModel);\n }\n\n var updatedDataInfo = [];\n var diffStatus = diff.status;\n\n for (var i = 0; i < diffStatus.length; i++) {\n var cmd = diffStatus[i].cmd;\n\n if (cmd === '=') {\n var el = data.getItemGraphicEl(diffStatus[i].idx1);\n\n if (el) {\n updatedDataInfo.push({\n el: el,\n ptIdx: i // Index of points\n\n });\n }\n }\n }\n\n if (polyline.animators && polyline.animators.length) {\n polyline.animators[0].during(function () {\n for (var i = 0; i < updatedDataInfo.length; i++) {\n var el = updatedDataInfo[i].el;\n el.attr('position', polyline.shape.__points[updatedDataInfo[i].ptIdx]);\n }\n });\n }\n },\n remove: function (ecModel) {\n var group = this.group;\n var oldData = this._data;\n\n this._lineGroup.removeAll();\n\n this._symbolDraw.remove(true); // Remove temporary created elements when highlighting\n\n\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n });\n this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null;\n }\n});\n\nmodule.exports = _default;","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GiaiNganCapDonViColChart.vue?vue&type=style&index=0&id=06210a16&prod&scoped=true&lang=css&\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\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, value) {\n return Math.round(frame.length / 2);\n};\n\nfunction _default(seriesType) {\n return {\n seriesType: seriesType,\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; // Only cartesian2d support down sampling\n\n if (coordSys.type === 'cartesian2d' && sampling) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var extent = baseAxis.getExtent(); // Coordinste system has been resized\n\n var size = Math.abs(extent[1] - extent[0]);\n var rate = Math.round(data.count() / size);\n\n if (rate > 1) {\n var sampler;\n\n if (typeof sampling === 'string') {\n sampler = samplers[sampling];\n } else if (typeof sampling === 'function') {\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}\n\nmodule.exports = _default;"],"sourceRoot":""}