{"version":3,"sources":["webpack:///./node_modules/echarts/lib/component/tooltip.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/echarts/lib/component/tooltip/TooltipContent.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js","webpack:///./node_modules/echarts/lib/chart/helper/Symbol.js","webpack:///./node_modules/echarts/lib/chart/radar/RadarView.js","webpack:///./node_modules/echarts/lib/chart/scatter.js","webpack:///./node_modules/echarts/lib/coord/radar/RadarModel.js","webpack:///./node_modules/echarts/lib/component/axisPointer/globalListener.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/echarts/lib/chart/pie/PieView.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-img.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card.js","webpack:///./node_modules/echarts/lib/chart/line/LineSeries.js","webpack:///./node_modules/echarts/lib/coord/radar/Radar.js","webpack:///./node_modules/echarts/lib/chart/pie/pieLayout.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/echarts/lib/component/tooltip/TooltipView.js","webpack:///./node_modules/echarts/lib/component/legend/legendAction.js","webpack:///./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js","webpack:///./node_modules/bootstrap-vue/esm/components/image/img.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-title.js","webpack:///./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/echarts/lib/component/radar.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./src/@core/components/charts/echart/AppEchartLine.vue?cfee","webpack:///./node_modules/echarts/lib/component/legend/LegendView.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-body.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-footer.js","webpack:///./node_modules/echarts/lib/component/radar/RadarView.js","webpack:///./node_modules/echarts/lib/component/helper/selectableMixin.js","webpack:///./node_modules/echarts/lib/action/createDataSelectAction.js","webpack:///./node_modules/echarts/lib/coord/radar/IndicatorAxis.js","webpack:///./node_modules/echarts/lib/chart/radar/backwardCompat.js","webpack:///./node_modules/echarts/lib/component/helper/listComponent.js","webpack:///./node_modules/vue-echarts/components/ECharts.vue?2205","webpack:///./node_modules/echarts/lib/visual/symbol.js","webpack:///./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js","webpack:///./node_modules/echarts/lib/component/legend/LegendModel.js","webpack:///./node_modules/echarts/lib/chart/radar/radarLayout.js","webpack:///./node_modules/echarts/lib/layout/points.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/echarts/lib/chart/radar.js","webpack:///./node_modules/echarts/lib/component/legend/legendFilter.js","webpack:///./src/views/charts-and-maps/charts/echart/Echart.vue?4745","webpack:///./src/views/charts-and-maps/charts/echart/EchartLine.vue?47e9","webpack:///./src/@core/components/charts/echart/AppEchartLine.vue?4843","webpack:///./node_modules/vue-echarts/components/ECharts.vue?139d","webpack:///./node_modules/resize-detector/esm/index.js","webpack:///node_modules/vue-echarts/components/ECharts.vue","webpack:///./node_modules/vue-echarts/components/ECharts.vue?2a78","webpack:///./node_modules/vue-echarts/components/ECharts.vue","webpack:///src/@core/components/charts/echart/AppEchartLine.vue","webpack:///./src/@core/components/charts/echart/AppEchartLine.vue?edf8","webpack:///./src/@core/components/charts/echart/AppEchartLine.vue","webpack:///src/views/charts-and-maps/charts/echart/EchartLine.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartLine.vue?1e16","webpack:///./src/views/charts-and-maps/charts/echart/EchartLine.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartStackedArea.vue?cd6a","webpack:///./src/@core/components/charts/echart/AppEchartStackedArea.vue?3d65","webpack:///src/@core/components/charts/echart/AppEchartStackedArea.vue","webpack:///./src/@core/components/charts/echart/AppEchartStackedArea.vue?4e8c","webpack:///./src/@core/components/charts/echart/AppEchartStackedArea.vue","webpack:///src/views/charts-and-maps/charts/echart/EchartStackedArea.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartStackedArea.vue?89f7","webpack:///./src/views/charts-and-maps/charts/echart/EchartStackedArea.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartArea.vue?08d3","webpack:///src/views/charts-and-maps/charts/echart/EchartArea.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartArea.vue?a5de","webpack:///./src/views/charts-and-maps/charts/echart/EchartArea.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartBar.vue?b1f8","webpack:///./src/@core/components/charts/echart/AppEchartBar.vue?3ee6","webpack:///src/@core/components/charts/echart/AppEchartBar.vue","webpack:///./src/@core/components/charts/echart/AppEchartBar.vue?14ae","webpack:///./src/@core/components/charts/echart/AppEchartBar.vue","webpack:///src/views/charts-and-maps/charts/echart/EchartBar.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartBar.vue?af6d","webpack:///./src/views/charts-and-maps/charts/echart/EchartBar.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartBarHorizontal.vue?ac8f","webpack:///src/views/charts-and-maps/charts/echart/EchartBarHorizontal.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartBarHorizontal.vue?d57b","webpack:///./src/views/charts-and-maps/charts/echart/EchartBarHorizontal.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartDoughnut.vue?f907","webpack:///./src/@core/components/charts/echart/AppEchartDoughnut.vue?4309","webpack:///src/@core/components/charts/echart/AppEchartDoughnut.vue","webpack:///./src/@core/components/charts/echart/AppEchartDoughnut.vue?40f3","webpack:///./src/@core/components/charts/echart/AppEchartDoughnut.vue","webpack:///src/views/charts-and-maps/charts/echart/EchartDoughnut.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartDoughnut.vue?4c66","webpack:///./src/views/charts-and-maps/charts/echart/EchartDoughnut.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartRadar.vue?f5be","webpack:///./src/@core/components/charts/echart/AppEchartRadar.vue?e010","webpack:///src/@core/components/charts/echart/AppEchartRadar.vue","webpack:///./src/@core/components/charts/echart/AppEchartRadar.vue?bec6","webpack:///./src/@core/components/charts/echart/AppEchartRadar.vue","webpack:///src/views/charts-and-maps/charts/echart/EchartRadar.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartRadar.vue?554d","webpack:///./src/views/charts-and-maps/charts/echart/EchartRadar.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartScatter.vue?68c8","webpack:///./src/@core/components/charts/echart/AppEchartScatter.vue?5bc9","webpack:///src/@core/components/charts/echart/AppEchartScatter.vue","webpack:///./src/@core/components/charts/echart/AppEchartScatter.vue?db2f","webpack:///./src/@core/components/charts/echart/AppEchartScatter.vue","webpack:///src/views/charts-and-maps/charts/echart/EchartScatter.vue","webpack:///./src/views/charts-and-maps/charts/echart/EchartScatter.vue?d931","webpack:///./src/views/charts-and-maps/charts/echart/EchartScatter.vue","webpack:///src/views/charts-and-maps/charts/echart/Echart.vue","webpack:///./src/views/charts-and-maps/charts/echart/Echart.vue?59c7","webpack:///./src/views/charts-and-maps/charts/echart/Echart.vue","webpack:///./node_modules/echarts/lib/visual/dataColor.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/echarts/lib/chart/line/helper.js","webpack:///./node_modules/echarts/lib/chart/radar/RadarSeries.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/row.js","webpack:///./node_modules/echarts/lib/component/tooltip/TooltipModel.js","webpack:///./node_modules/echarts/lib/chart/scatter/ScatterView.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-size.js","webpack:///./src/views/charts-and-maps/charts/echart/EchartScatter.vue?bac4","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-header.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-sub-title.js","webpack:///./node_modules/echarts/lib/chart/pie/labelLayout.js","webpack:///./node_modules/echarts/lib/chart/pie.js","webpack:///./node_modules/echarts/lib/visual/LegendVisualProvider.js","webpack:///./src/views/charts-and-maps/charts/echart/EchartDoughnut.vue?e5fc","webpack:///./node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js","webpack:///./node_modules/echarts/lib/chart/scatter/ScatterSeries.js","webpack:///./node_modules/echarts/lib/component/axisPointer.js","webpack:///./node_modules/echarts/lib/component/legend.js","webpack:///./node_modules/echarts/lib/processor/dataFilter.js","webpack:///./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js","webpack:///./node_modules/echarts/lib/chart/line/poly.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/card.js","webpack:///./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-control.js","webpack:///./node_modules/echarts/lib/chart/helper/createListSimply.js","webpack:///./node_modules/bootstrap-vue/esm/components/badge/badge.js","webpack:///./node_modules/echarts/lib/component/axisPointer/axisTrigger.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:///./node_modules/echarts/lib/chart/helper/SymbolDraw.js","webpack:///./node_modules/echarts/lib/chart/pie/PieSeries.js","webpack:///./node_modules/echarts/lib/processor/dataSample.js","webpack:///./node_modules/echarts/lib/component/axisPointer/viewHelper.js","webpack:///./node_modules/lodash/isSymbol.js"],"names":["echarts","registerAction","type","event","update","Symbol","objectProto","Object","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","getRawTag","value","isOwn","call","tag","unmasked","e","result","module","exports","zrUtil","zrColor","eventUtil","domUtil","env","formatUtil","each","toCamelCase","vendors","gCssText","assembleTransition","duration","transitionCurve","transitionText","map","vendorPrefix","join","assembleFont","textStyleModel","cssText","fontSize","get","color","getTextColor","push","getFont","Math","round","name","val","assembleCssText","tooltipModel","transitionDuration","backgroundColor","getModel","padding","canvasSupported","toHex","borderName","camelCase","normalizeCssArray","makeStyleCoord","out","zr","appendToBody","zrX","zrY","zrPainter","painter","zrViewportRoot","getViewportRoot","transformLocalCoord","document","body","viewportRootOffset","getViewportRootOffset","offsetLeft","offsetTop","TooltipContent","container","api","opt","wxa","el","createElement","domBelongToZr","this","_zr","getZr","_appendToBody","_styleCoord","getWidth","getHeight","appendChild","_container","_show","_hideTimeout","self","onmouseenter","_enterable","clearTimeout","_inContent","onmousemove","window","handler","normalizeEvent","dispatch","onmouseleave","hideLater","_hideDelay","constructor","stl","currentStyle","defaultView","getComputedStyle","domStyle","style","position","show","styleCoord","display","innerHTML","pointerEvents","setContent","content","setEnterable","enterable","getSize","clientWidth","clientHeight","moveTo","left","top","hide","time","setTimeout","bind","isShow","dispose","parentNode","removeChild","getOuterSize","width","height","parseInt","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","_default","isObjectLike","modelUtil","finder","ecModel","seriesModel","point","seriesIndex","getSeriesByIndex","data","getData","dataIndex","queryDataIndex","isArray","getItemGraphicEl","coordSys","coordinateSystem","getTooltipPosition","dataToPoint","getValues","dimensions","dim","mapDimension","rect","getBoundingRect","clone","applyTransform","transform","x","y","_symbol","createSymbol","graphic","_number","parsePercent","_labelHelper","getDefaultLabel","SymbolClz","idx","seriesScope","Group","updateData","symbolProto","getSymbolSize","symbolSize","getItemVisual","Array","slice","getScale","driftSymbol","dx","dy","parent","drift","_createSymbol","symbolType","keepAspect","removeAll","symbolPath","attr","z2","culling","scale","_symbolType","add","stopSymbolAnimation","toLastFrame","childAt","stopAnimation","getSymbolPath","highlight","trigger","downplay","setZ","zlevel","z","setDraggable","draggable","cursor","silent","hostModel","isInit","updateProps","_updateCommon","fadeIn","target","opacity","initProps","_seriesModel","normalStyleAccessPath","emphasisStyleAccessPath","normalLabelAccessPath","emphasisLabelAccessPath","highDownOnUpdate","fromState","toState","incremental","useHoverLayer","__symbolOriginalScale","ratio","emphasisOpt","max","animateTo","useStyle","strokeNoScale","setStyle","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","itemStyle","hoverItemStyle","symbolOffset","labelModel","hoverLabelModel","hoverAnimation","cursorStyle","hasItemOption","itemModel","getItemModel","getItemStyle","getShallow","extend","elStyle","symbolRotate","PI","setColor","symbolInnerColor","liftZ","z2Origin","__z2Origin","useNameLabel","getLabelDefaultText","getName","setLabelStyle","labelFetcher","labelDataIndex","defaultText","isRectText","autoColor","hoverStyle","isAnimationEnabled","setHoverStyle","fadeOut","cb","keepLabel","text","inherits","symbolUtil","normalizeSymbolSize","extendChartView","render","polar","group","oldData","_data","updateSymbols","oldPoints","newPoints","symbolGroup","i","length","__dimIdx","getInitialPoints","points","pt","cx","cy","diff","getItemLayout","polygon","Polygon","polyline","Polyline","shape","itemGroup","setItemGraphicEl","newIdx","oldIdx","remove","execute","eachItemGraphicEl","defaults","getLineStyle","fill","stroke","areaStyleModel","hoverAreaStyleModel","polygonIgnore","isEmpty","parentModel","hoverPolygonIgnore","ignore","getAreaStyle","itemHoverStyle","labelHoverModel","eachChild","isNaN","labelDimIndex","visualSymbol","layoutPoints","registerVisual","registerLayout","axisDefault","Model","axisModelCommonMixin","valueAxisDefault","valueAxis","defaultsShow","RadarModel","extendComponentModel","optionUpdated","boundaryGap","splitNumber","axisLine","axisTick","axisType","axisLabel","nameTextStyle","showName","nameFormatter","nameGap","triggerEvent","indicatorModels","indicatorOpt","min","iNameTextStyle","merge","nameLocation","indName","replace","model","mainType","componentIndex","getIndicatorModels","defaultOption","center","radius","startAngle","lineStyle","splitLine","splitArea","indicator","_model","makeInner","inner","register","key","node","records","initGlobalListeners","record","useHandler","eventType","on","dis","makeDispatchAction","dispatchAction","dispatchTooltipFinally","pendings","initialized","curry","doEnter","onLeave","actuallyPayload","showLen","showTip","hideLen","hideTip","currTrigger","payload","pendingList","unregister","isObject","ChartView","updateDataSelected","uid","hasAnimation","selectedOffset","from","seriesId","id","toggleItemSelected","isSelected","layout","midAngle","endAngle","cos","sin","offset","animate","when","start","PiePiece","sector","Sector","Text","piePieceProto","firstCreate","labelLine","labelText","sectorShape","label","animationTypeUpdate","setShape","animationType","r","r0","visualColor","lineJoin","withAnimation","_updateLabel","hoverIgnore","normalIgnore","labelLayout","targetLineShape","linePoints","targetTextStyle","rotation","origin","labelLineModel","labelLineHoverModel","useInsideStyle","inside","textAlign","textVerticalAlign","verticalAlign","smooth","PieView","init","sectorGroup","_sectorGroup","isFirstRender","onSectorClick","selectedMode","piePiece","child","off","count","s","removeClipPath","setClipPath","_createClipPath","clockwise","clipPath","initOrUpdate","containPoint","itemLayout","sqrt","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","configurable","writable","bottom","end","BCardImg","functional","props","h","_ref","src","alt","baseClass","right","class","attrs","cardImgProps","imgSrc","required","card","align","noBody","BCard","_class","slots","scopedSlots","imgLeft","imgRight","imgStart","imgEnd","imgBottom","header","headerHtml","footer","footerHtml","textVariant","bgVariant","borderVariant","$scopedSlots","$slots","slotScope","$imgFirst","$imgLast","$img","$header","hasHeaderSlot","domProps","html","$content","overlay","staticClass","$footer","hasFooterSlot","concat","_config","createListFromArray","__DEV__","SeriesModel","dependencies","getInitialData","option","getSource","useEncodeDefaulter","legendHoverLink","clip","step","smoothMonotone","symbol","showSymbol","showAllSymbol","connectNulls","sampling","animationEasing","progressive","hoverLayerThreshold","Infinity","IndicatorAxis","IntervalScale","numberUtil","_axisHelper","getScaleExtent","niceScaleExtent","CoordinateSystem","LogScale","Radar","radarModel","_indicatorAxes","indicatorModel","indicatorAxis","axis","resize","getIndicatorAxes","indicatorIndex","coordToPoint","dataToCoord","coord","angle","pointToData","closestAxis","radian","atan2","minRadianDiff","closestAxisIdx","abs","coordToData","viewWidth","viewHeight","viewSize","setExtent","indicatorAxes","eachSeriesByType","radarSeries","getComponent","unionExtentFromData","increaseInterval","interval","exp10","pow","floor","log","LN10","f","rawExtent","extent","axisModel","fixedMin","getMin","fixedMax","getMax","getInterval","setInterval","isFinite","nicedSplitNumber","getTicks","ceil","create","radarList","eachComponent","radar","linearMap","PI2","RADIAN","getViewRect","getLayoutRect","getBoxLayoutParams","seriesType","valueDim","viewRect","size","minAngle","validDataCount","sum","getSum","unitRadian","roseType","stillShowZeroSum","getDataExtent","restAngle","valueSumLargerThanMinAngle","currentAngle","dir","setItemLayout","NaN","objectToString","freeGlobal","freeSelf","root","Function","nullTag","undefinedTag","baseGetTag","now","Date","TooltipRichContent","findPointFromSeries","layoutUtil","globalListener","axisHelper","axisPointerViewHelper","getTooltipRenderMode","proxyRect","Rect","extendComponentView","tooltipContent","renderMode","_renderMode","getDom","_newLine","_tooltipContent","_tooltipModel","_ecModel","_api","_lastDataByCoordSys","_alwaysShowContent","_initGlobalListener","_keepShow","triggerOn","indexOf","_tryShow","_hide","_lastX","_lastY","_refreshUpdateTimeout","isDisposed","manuallyShowTip","_ticket","dataByCoordSys","tooltip","offsetX","offsetY","tooltipOption","_manuallyAxisShowTip","pointInfo","findHover","manuallyHideTip","coordSysAxesInfo","buildTooltipModel","_showAxisTooltip","_showSeriesItemTooltip","_showComponentItemTooltip","_showOrMove","delay","_showTimout","globalTooltipModel","singleDefaultHTML","singleParamsList","singleTooltipModel","newLine","markers","itemCoordSys","dataByAxis","item","axisDim","axisIndex","axisValue","seriesDefaultHTML","valueLabel","getValueLabel","seriesDataIndices","valueLabelOpt","idxItem","series","dataIndexInside","dataParams","getDataParams","axisId","getAxisRawValue","axisValueLabel","seriesTooltip","formatTooltip","newMarkers","firstLine","encodeHTML","reverse","positionExpr","_updateContentNotChangedOnAxis","_updatePosition","_showTooltipContent","random","dataModel","dataType","tooltipTrigger","defaultHtml","params","asyncTicket","getRawIndex","tooltipOpt","formatter","subTooltipModel","formatTpl","callback","cbTicket","contentSize","vAlign","layoutRect","pos","calcTooltipPosition","refixTooltipPosition","isCenterAlign","confineTooltipPosition","lastCoordSys","contentNotChanged","lastItemCoordSys","indexCoordSys","lastDataByAxis","thisItemCoordSys","thisDataByAxis","lastItem","indexAxis","thisItem","lastIndices","newIndices","lastIdxItem","j","newIdxItem","modelCascade","resultModel","pop","isInstance","gapH","gapV","domWidth","domHeight","gap","rectWidth","rectHeight","legendSelectActionHandler","methodName","selectedMap","isToggleSelect","legendModel","legendData","isItemSelected","selected","AxisPointerModel","snap","triggerTooltip","status","link","animation","animationDurationUpdate","shadowStyle","precision","margin","borderColor","borderWidth","handle","icon","throttle","BLANK_TEMPLATE","makeBlankImgSrc","encodeURIComponent","blank","blankColor","block","fluid","fluidGrow","rounded","sizes","srcset","thumbnail","BImg","title","titleTag","BCardTitle","children","BaseAxisPointer","viewHelper","cartesianAxisHelper","AxisView","CartesianAxisPointer","makeElOption","elOption","axisPointerModel","grid","axisPointerType","otherExtent","getCartesian","getOtherAxis","getGlobalExtent","pixelValue","toGlobalCoord","buildElStyle","pointerOption","pointerShapeBuilder","graphicKey","pointer","layoutInfo","buildCartesianSingleLabelElOption","getHandleTransform","labelInside","labelMargin","getTransformedPosition","labelDirection","updateHandleTransform","delta","axisExtent","dimIndex","currPosition","cursorOtherValue","cursorPoint","tooltipOptions","index","line","targetShape","makeLineShape","getAxisDimIndex","subPixelOptimize","shadow","bandWidth","getBandWidth","span","makeRectShape","registerAxisPointerClass","reWhitespace","trimmedEndIndex","string","test","charAt","global","_listComponent","makeBackground","newlineDisabled","_contentGroup","_backgroundEl","_selectorGroup","_isFirstRender","getContentGroup","getSelectorGroup","resetInner","itemAlign","orient","selector","selectorPosition","renderInner","positionInfo","viewportSize","maxSize","mainRect","layoutInner","contentGroup","legendDrawnMap","createHashMap","selectMode","excludeSeriesId","eachRawSeries","getSeriesByName","getVisual","legendSymbolType","_createItem","dispatchSelectAction","dispatchHighlightAction","dispatchDownplayAction","set","legendVisualProvider","provider","containName","indexOfName","newline","_createSelector","selectorGroup","createSelectorButton","selectorItem","onclick","emphasisLabelModel","itemWidth","itemHeight","inactiveColor","inactiveBorderColor","symbolKeepAspect","legendModelItemStyle","itemIcon","legendGlobalTooltipModel","legendSymbol","setSymbolStyle","legendSymbolCenter","textX","setTextStyle","textFill","hitRect","invisible","formatterParams","componentType","legendIndex","$vars","__legendDataIndex","box","contentRect","contentPos","selectorRect","selectorPos","selectorButtonGap","orientIdx","getOrient","wh","hw","yx","seriesName","dataName","storage","getDisplayList","bodyClass","BCardBody","_ref2","bodyBgVariant","bodyBorderVariant","bodyTextVariant","$title","$subTitle","subTitle","bodyTag","footerClass","BCardFooter","footerBgVariant","footerBorderVariant","footerTextVariant","footerTag","AxisBuilder","axisBuilderAttrs","_buildAxes","_buildSplitLineAndArea","axisBuilders","axisBuilder","tickDirection","nameDirection","getGroup","splitLineModel","splitAreaModel","lineStyleModel","showSplitLine","showSplitArea","splitLineColors","splitAreaColors","splitLines","splitAreas","ticksRadius","getTicksCoords","colorIndex","getColorIndex","Circle","Ring","realSplitNumber","axesTicksPoints","ticksCoords","tickCoord","prevPoints","areaStyle","mergePath","areaOrLine","areaOrLineColorList","updateSelectedMap","targetList","_targetList","_selectTargetMap","reduce","targetMap","select","unSelect","toggleSelected","actionInfos","actionInfo","subType","query","method","Axis","radiusExtent","polarOptArr","polarNotRadar","polarOpt","seriesOpt","polarIndex","radarIndex","_layout","layoutBox","positionElement","componentModel","boxLayoutParams","_util","isFunction","defaultSymbolType","performRawSeries","reset","hasSymbolTypeCallback","hasSymbolSizeCallback","hasSymbolRotateCallback","hasCallback","seriesSymbol","seriesSymbolSize","setVisual","isSeriesFiltered","dataEach","rawValue","getRawValue","setItemVisual","itemSymbolType","itemSymbolSize","itemSymbolRotate","itemSymbolKeepAspect","markerRich","prefix","suffix","startId","endId","substr","textWidth","textHeight","textBorderRadius","textBackgroundColor","textOffset","rich","textLineHeight","textPadding","bounding","isNameSpecified","lang","langSelector","legend","defaultSelectorOption","all","inverse","LegendModel","layoutMode","ignoreSize","mergeDefaultAndTheme","_updateSelector","mergeOption","superCall","isString","_updateData","hasSelected","potentialData","availableNames","isPotential","names","getAllNames","_availableNames","rawData","dataItem","allSelect","inverseSelect","borderRadius","itemGap","textStyle","selectorLabel","fontFamily","emphasis","selectorItemGap","axes","isValidPoint","getValueMissingPoint","firstPoint","find","createRenderPlanner","_dataStackHelper","isDimensionStacked","plan","pipelineContext","isLargeRender","large","dims","dimLen","stackResultDim","getCalculationInfo","progress","segCount","Float32Array","tmpIn","tmpOut","setLayout","reTrimStart","baseTrim","dataColor","radarLayout","dataFilter","backwardCompat","registerProcessor","registerPreprocessor","legendModels","findComponents","filterSeries","_vm","_h","$createElement","_c","_self","staticRenderFns","_v","ref","raf","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","caf","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","createStyles","styleText","styleSheet","createTextNode","querySelector","tagName","elem","prop","pseudo","computedStyle","getRenderInfo","documentElement","contains","detached","rendered","current","css","total","addListener","__resize_mutation_handler__","handleMutation","listeners","__resize_listeners__","ResizeObserver","offsetWidth","offsetHeight","ro","__resize_observer_triggered__","runCallbacks","__resize_observer__","observe","attachEvent","addEventListener","__resize_legacy_resize_handler__","initTriggers","__resize_rendered__","MutationObserver","mo","attributes","childList","characterData","subtree","__resize_mutation_observer__","removeListener","detachEvent","removeEventListener","splice","unobserve","disconnect","handleScroll","__resize_triggers__","triggers","getUpdatedSize","__resize_last__","resetTriggers","__resize_raf__","updated","__resize_old_position__","className","expand","expandChild","contract","csw","scrollWidth","csh","scrollHeight","eow","eoh","esw","esh","scrollLeft","scrollTop","options","theme","initOptions","autoresize","watchShallow","manualUpdate","lastArea","watch","methods","mergeOptions","appendData","convertToPixel","convertFromPixel","containPixel","showLoading","hideLoading","getDataURL","getConnectedDataURL","clear","delegateMethod","args","delegateGet","getArea","chart","leading","computedOptions","initOptionsWatcher","deep","destroy","refresh","created","INIT_TRIGGERS","REWATCH_TRIGGERS","mounted","activated","destroyed","connect","registerMap","registerTheme","component","ECharts","components","optionData","default","visualMap","xAxis","yAxis","AppEchartLine","BBadge","xAxisData","axisPointer","containLabel","AppEchartStackedArea","stack","AppEchartBar","barMaxWidth","barMinWidth","barBorderRadius","barWidth","AppEchartDoughnut","avoidLabelOverlap","fontWeight","AppEchartRadar","radioOption","$$v","expression","enable","AppEchartScatter","BFormRadioGroup","BFormGroup","BRow","BCol","EchartLine","EchartStackedArea","EchartArea","EchartBar","EchartBarHorizontal","EchartDoughnut","EchartRadar","EchartScatter","getTargetSeries","paletteScope","seiresModelMap","__paletteScope","dataAll","getRawData","idxMap","rawIdx","filteredIdx","singleDataColor","singleDataBorderColor","getColorFromPalette","prepareDataCoordInfo","valueOrigin","stacked","baseAxis","getBaseAxis","valueStart","getValueStart","baseAxisDim","valueAxisDim","baseDim","baseDataOffset","coordDim","dataDimsForPoint","stackedOverDimension","getExtent","getStackedOnPoint","dataCoordInfo","stackedData","createListSimply","_format","LegendVisualProvider","RadarSeries","superApply","generateCoord","generateCoordCount","values","len","COMMON_ALIGNMENT","computeRowColsClass","breakpoint","cols","computeRowColsBreakpoint","rowColsPropList","generateProps","rowColsProps","alignContent","alignH","alignV","noGutters","_classList$push","classList","c","showContent","alwaysShowContent","displayMode","confine","showDelay","hideDelay","extraCssText","animationEasingUpdate","crossStyle","SymbolDraw","LargeSymbolDraw","pointsLayout","symbolDraw","_updateSymbolDraw","clipShape","_getClipShape","_finished","incrementalPrepareRender","incrementalPrepareUpdate","incrementalRender","taskParams","_symbolDraw","incrementalUpdate","updateTransform","dirty","isPersistent","res","updateLayout","clipArea","isLargeDraw","_isLargeDraw","formSizeMixin","computed","sizeFormClass","toNumber","FUNC_ERROR_TEXT","nativeMax","nativeMin","debounce","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","trailing","TypeError","invokeFunc","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","isBinary","headerClass","BCardHeader","headerBgVariant","headerBorderVariant","headerTextVariant","headerTag","subTitleTag","subTitleTextVariant","BCardSubTitle","textContain","adjustSingleSide","list","viewLeft","viewTop","farthestX","shiftDown","shiftUp","changeX","isDownList","lastDeltaX","Number","MAX_VALUE","l","labelAlignTo","deltaY","length2","len2","deltaX","sort","a","b","lastY","upList","downList","avoidOverlap","labelLayoutList","leftList","rightList","leftmostX","rightmostX","isPositionCenter","targetTextWidth","isAlignToEdge","realTextWidth","textRect","labelDistance","bleedMargin","truncateText","font","dist","hasLabelRotate","minShowLabelRadian","labelPosition","labelLineLen","labelLineLen2","textY","labelRotate","getFormattedLabel","isLabelInside","x1","y1","x2","y2","x3","y3","rotate","createDataSelectAction","pieLayout","getDataWithEncodedVisual","mapArray","dataWithEncodedVisual","IncrementalDisplayable","BOOST_SIZE_THRESHOLD","LargeSymbolPath","extendShape","symbolProxy","softClipShape","buildPath","path","symbolProxyShape","ctx","getContext","canBoost","contain","afterBrush","setTransform","fillRect","restoreTransform","findDataIndex","w","x0","y0","largeSymbolProto","_incremental","symbolEl","rectHover","getLayout","_setCommon","startIndex","endIndex","byteOffset","buffer","_clearIncremental","addDisplayable","isIncremental","extrudeShadow","clearDisplaybles","brushSelector","getProgressive","getProgressiveThreshold","progressiveThreshold","largeThreshold","axisPointerModelHelper","axisTrigger","PRIORITY","PROCESSOR","STATISTIC","collect","legendFilter","Component","SERIES_FILTER","registerSubTypeDefaulter","filterSelf","AxisPointerView","globalAxisPointerModel","Path","vec2","fixClipWithShadow","vec2Min","vec2Max","scaleAndAdd","v2Copy","copy","v","cp0","cp1","isPointNull","p","drawSegment","segLen","allLen","smoothMin","smoothMax","drawMono","drawNonMono","prevIdx","k","prevP","ctrlLen","bezierCurveTo","lineTo","nextIdx","nextP","ratioNextSeg","lenPrevSeg","lenNextSeg","sub","getBoundingBox","smoothConstraint","ptMin","ptMax","brush","stackedOnPoints","stackedOnSmooth","bbox","stackedOnBBox","closePath","clazzUtil","eventTool","throttleUtil","animationModel","moveAnimation","propsEqual","lastProp","lastProps","newProps","equals","updateLabelShowHide","labelEl","getHandleTransProps","trans","updateMandatoryProps","traverse","_group","_lastGraphicKey","_handle","_dragging","_lastValue","_lastStatus","_payloadInfo","animationThreshold","forceRender","_axisModel","_axisPointerModel","_moveAnimation","determineAnimation","doUpdateProps","updatePointerEl","updateLabelEl","createPointerEl","createLabelEl","_renderHandle","isCategoryAxis","useSnap","seriesDataCount","getAxisInfo","pointerEl","handleModel","createIcon","stop","onmousedown","_onHandleDragMove","ondragend","_onHandleDragEnd","includeStyles","handleSize","createOrUpdate","_moveHandleToValue","_doDispatchAxisPointer","payloadInfo","axesInfo","doClear","buildLabel","xy","xDimIndex","enableClassExtend","SELECTOR","autofocus","disabled","form","formControlMixin","handleAutofocus","_this","$nextTick","$el","createDimensions","List","nameList","coordDimensions","dimensionsInfo","initData","linkProps","href","to","pill","variant","active","modelHelper","illegalPoint","isIllegalPoint","inputAxesInfo","shouldHide","outputFinder","showValueMap","updaters","showPointer","showTooltip","coordSysMap","coordSysKey","coordSysContainsPoint","axisInfo","inputAxisInfo","findInputAxisInfo","processOnAxis","linkTriggers","tarAxisInfo","tarKey","linkGroup","srcAxisInfo","srcKey","srcValItem","mapper","parse","makeMapperParam","updateModelActually","dispatchTooltipActually","dispatchHighDownActually","newValue","dontSnap","isBlank","containData","involveSeries","buildPayloadsBySeries","payloadBatch","snapToValue","minDist","minDiff","seriesModels","seriesNestestValue","dataIndices","dataDim","getAxisTooltipData","nestestValue","indicesOfNearest","coordSysModel","makeKey","coordSysItem","coordSysId","coordSysIndex","coordSysType","coordSysMainType","outputAxesInfo","valItem","useHandle","sampleItem","escapeConnect","highDownKey","lastHighlights","newHighlights","batchItem","toHighlight","toDownplay","batch","axisName","dataSample","_helper","diffData","newData","diffResult","cmd","idx1","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","newDataOldCoordInfo","oldDataNewCoordInfo","diffItem","pointAdded","currentPt","nextPt","rawIndex","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","next","stackedOnCurrent","stackedOnNext","_bbox","fromPoints","lineAnimationDiff","_poly","_createClipPathFromCoordSys","createGridClipPath","createPolarClipPath","isPointsSame","points1","points2","p1","p2","getBoundingDiff","min1","max1","min2","max2","getSmooth","getStackedOnPoints","turnPointsIntoStep","stepTurnAt","baseIndex","stepPoints","stepPt","middle","stepPt2","getVisualGradient","visualMetaList","visualMeta","dimension","dimName","dimInfo","getDimensionInfo","getAxis","colorStops","stops","stopLen","outerColors","tinyExtent","minCoord","maxCoord","coordSpan","unshift","gradient","LinearGradient","getIsIgnoreFunc","isAuto","categoryAxis","getAxesByScale","canShowAllSymbolForCategory","categoryDataDim","labelMap","getViewLabels","labelItem","tickValue","availSize","dataLen","isHorizontal","createLineClipPath","rectShape","expandSize","lineGroup","_lineGroup","isCoordSysPolar","prevCoordSys","_coordSys","_polyline","_polygon","isAreaChart","isIgnoreFunc","__temp","clipShapeForSymbol","r1","_clipShapeForSymbol","_step","_newPolygon","isIgnore","_stackedOnPoints","_points","_updateAnimation","_newPolyline","stackedOnSeries","_valueOrigin","__points","updatedDataInfo","diffStatus","ptIdx","animators","during","symbolCtor","_symbolCtor","symbolDrawProto","symbolNeedsDraw","normalizeUpdateOpt","makeSeriesScope","SymbolCtor","_seriesScope","updateIncrementalAndHover","isGroup","enableAnimation","getPercentWithPrecision","dataSelectableMixin","_dataProvider","retrieveRawAttr","_sourceHelper","makeSeriesEncodeForNameBased","PieSeries","extendSeriesModel","_createSelectableList","_defaultLabelLine","newOption","encodeDefaulter","valueList","percent","defaultEmphasis","labelLineNormalOpt","labelLineEmphasisOpt","minShowLabelAngle","hoverOffset","percentPrecision","alignTo","distanceToLabelLine","mixin","samplers","average","frame","nearest","indexSampler","modifyOutputEnd","sampler","rate","setData","downSample","matrix","styleModel","buildLabelElOption","labelPos","paddings","confineInContainer","bgColor","textFont","textPosition","lineWidth","getLabel","axisDimension","seriesData","translate","labelOffset","textLayout","innerTextLayout","makeSectorShape","symbolTag"],"mappings":"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","file":"js/chunk-1fa9fa0a.c372f72e.js","sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nrequire(\"./axisPointer\");\n\nrequire(\"./tooltip/TooltipModel\");\n\nrequire(\"./tooltip/TooltipView\");\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 Better way to pack data in graphic element\n\n/**\n * @action\n * @property {string} type\n * @property {number} seriesIndex\n * @property {number} dataIndex\n * @property {number} [x]\n * @property {number} [y]\n */\necharts.registerAction({\n type: 'showTip',\n event: 'showTip',\n update: 'tooltip:manuallyShowTip'\n}, // noop\nfunction () {});\necharts.registerAction({\n type: 'hideTip',\n event: 'hideTip',\n update: 'tooltip:manuallyHideTip'\n}, // noop\nfunction () {});","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar zrColor = require(\"zrender/lib/tool/color\");\n\nvar eventUtil = require(\"zrender/lib/core/event\");\n\nvar domUtil = require(\"zrender/lib/core/dom\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar formatUtil = require(\"../../util/format\");\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 each = zrUtil.each;\nvar toCamelCase = formatUtil.toCamelCase;\nvar vendors = ['', '-webkit-', '-moz-', '-o-'];\nvar gCssText = 'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;';\n/**\n * @param {number} duration\n * @return {string}\n * @inner\n */\n\nfunction assembleTransition(duration) {\n var transitionCurve = 'cubic-bezier(0.23, 1, 0.32, 1)';\n var transitionText = 'left ' + duration + 's ' + transitionCurve + ',' + 'top ' + duration + 's ' + transitionCurve;\n return zrUtil.map(vendors, function (vendorPrefix) {\n return vendorPrefix + 'transition:' + transitionText;\n }).join(';');\n}\n/**\n * @param {Object} textStyle\n * @return {string}\n * @inner\n */\n\n\nfunction assembleFont(textStyleModel) {\n var cssText = [];\n var fontSize = textStyleModel.get('fontSize');\n var color = textStyleModel.getTextColor();\n color && cssText.push('color:' + color);\n cssText.push('font:' + textStyleModel.getFont());\n fontSize && cssText.push('line-height:' + Math.round(fontSize * 3 / 2) + 'px');\n each(['decoration', 'align'], function (name) {\n var val = textStyleModel.get(name);\n val && cssText.push('text-' + name + ':' + val);\n });\n return cssText.join(';');\n}\n/**\n * @param {Object} tooltipModel\n * @return {string}\n * @inner\n */\n\n\nfunction assembleCssText(tooltipModel) {\n var cssText = [];\n var transitionDuration = tooltipModel.get('transitionDuration');\n var backgroundColor = tooltipModel.get('backgroundColor');\n var textStyleModel = tooltipModel.getModel('textStyle');\n var padding = tooltipModel.get('padding'); // Animation transition. Do not animate when transitionDuration is 0.\n\n transitionDuration && cssText.push(assembleTransition(transitionDuration));\n\n if (backgroundColor) {\n if (env.canvasSupported) {\n cssText.push('background-Color:' + backgroundColor);\n } else {\n // for ie\n cssText.push('background-Color:#' + zrColor.toHex(backgroundColor));\n cssText.push('filter:alpha(opacity=70)');\n }\n } // Border style\n\n\n each(['width', 'color', 'radius'], function (name) {\n var borderName = 'border-' + name;\n var camelCase = toCamelCase(borderName);\n var val = tooltipModel.get(camelCase);\n val != null && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px'));\n }); // Text style\n\n cssText.push(assembleFont(textStyleModel)); // Padding\n\n if (padding != null) {\n cssText.push('padding:' + formatUtil.normalizeCssArray(padding).join('px ') + 'px');\n }\n\n return cssText.join(';') + ';';\n} // If not able to make, do not modify the input `out`.\n\n\nfunction makeStyleCoord(out, zr, appendToBody, zrX, zrY) {\n var zrPainter = zr && zr.painter;\n\n if (appendToBody) {\n var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();\n\n if (zrViewportRoot) {\n // Some APPs might use scale on body, so we support CSS transform here.\n domUtil.transformLocalCoord(out, zrViewportRoot, document.body, zrX, zrY);\n }\n } else {\n out[0] = zrX;\n out[1] = zrY; // xy should be based on canvas root. But tooltipContent is\n // the sibling of canvas root. So padding of ec container\n // should be considered here.\n\n var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();\n\n if (viewportRootOffset) {\n out[0] += viewportRootOffset.offsetLeft;\n out[1] += viewportRootOffset.offsetTop;\n }\n }\n}\n/**\n * @alias module:echarts/component/tooltip/TooltipContent\n * @param {HTMLElement} container\n * @param {ExtensionAPI} api\n * @param {Object} [opt]\n * @param {boolean} [opt.appendToBody]\n * `false`: the DOM element will be inside the container. Default value.\n * `true`: the DOM element will be appended to HTML body, which avoid\n * some overflow clip but intrude outside of the container.\n * @constructor\n */\n\n\nfunction TooltipContent(container, api, opt) {\n if (env.wxa) {\n return null;\n }\n\n var el = document.createElement('div');\n el.domBelongToZr = true;\n this.el = el;\n var zr = this._zr = api.getZr();\n var appendToBody = this._appendToBody = opt && opt.appendToBody;\n this._styleCoord = [0, 0];\n makeStyleCoord(this._styleCoord, zr, appendToBody, api.getWidth() / 2, api.getHeight() / 2);\n\n if (appendToBody) {\n document.body.appendChild(el);\n } else {\n container.appendChild(el);\n }\n\n this._container = container;\n this._show = false;\n /**\n * @private\n */\n\n this._hideTimeout; // FIXME\n // Is it needed to trigger zr event manually if\n // the browser do not support `pointer-events: none`.\n\n var self = this;\n\n el.onmouseenter = function () {\n // clear the timeout in hideLater and keep showing tooltip\n if (self._enterable) {\n clearTimeout(self._hideTimeout);\n self._show = true;\n }\n\n self._inContent = true;\n };\n\n el.onmousemove = function (e) {\n e = e || window.event;\n\n if (!self._enterable) {\n // `pointer-events: none` is set to tooltip content div\n // if `enterable` is set as `false`, and `el.onmousemove`\n // can not be triggered. But in browser that do not\n // support `pointer-events`, we need to do this:\n // Try trigger zrender event to avoid mouse\n // in and out shape too frequently\n var handler = zr.handler;\n var zrViewportRoot = zr.painter.getViewportRoot();\n eventUtil.normalizeEvent(zrViewportRoot, e, true);\n handler.dispatch('mousemove', e);\n }\n };\n\n el.onmouseleave = function () {\n if (self._enterable) {\n if (self._show) {\n self.hideLater(self._hideDelay);\n }\n }\n\n self._inContent = false;\n };\n}\n\nTooltipContent.prototype = {\n constructor: TooltipContent,\n\n /**\n * @private\n * @type {boolean}\n */\n _enterable: true,\n\n /**\n * Update when tooltip is rendered\n */\n update: function () {\n // FIXME\n // Move this logic to ec main?\n var container = this._container;\n var stl = container.currentStyle || document.defaultView.getComputedStyle(container);\n var domStyle = container.style;\n\n if (domStyle.position !== 'absolute' && stl.position !== 'absolute') {\n domStyle.position = 'relative';\n } // Hide the tooltip\n // PENDING\n // this.hide();\n\n },\n show: function (tooltipModel) {\n clearTimeout(this._hideTimeout);\n var el = this.el;\n var styleCoord = this._styleCoord;\n el.style.cssText = gCssText + assembleCssText(tooltipModel) // Because of the reason described in:\n // http://stackoverflow.com/questions/21125587/css3-transition-not-working-in-chrome-anymore\n // we should set initial value to `left` and `top`.\n + ';left:' + styleCoord[0] + 'px;top:' + styleCoord[1] + 'px;' + (tooltipModel.get('extraCssText') || '');\n el.style.display = el.innerHTML ? 'block' : 'none'; // If mouse occsionally move over the tooltip, a mouseout event will be\n // triggered by canvas, and cuase some unexpectable result like dragging\n // stop, \"unfocusAdjacency\". Here `pointer-events: none` is used to solve\n // it. Although it is not suppored by IE8~IE10, fortunately it is a rare\n // scenario.\n\n el.style.pointerEvents = this._enterable ? 'auto' : 'none';\n this._show = true;\n },\n setContent: function (content) {\n this.el.innerHTML = content == null ? '' : content;\n },\n setEnterable: function (enterable) {\n this._enterable = enterable;\n },\n getSize: function () {\n var el = this.el;\n return [el.clientWidth, el.clientHeight];\n },\n moveTo: function (zrX, zrY) {\n var styleCoord = this._styleCoord;\n makeStyleCoord(styleCoord, this._zr, this._appendToBody, zrX, zrY);\n var style = this.el.style;\n style.left = styleCoord[0] + 'px';\n style.top = styleCoord[1] + 'px';\n },\n hide: function () {\n this.el.style.display = 'none';\n this._show = false;\n },\n hideLater: function (time) {\n if (this._show && !(this._inContent && this._enterable)) {\n if (time) {\n this._hideDelay = time; // Set show false to avoid invoke hideLater mutiple times\n\n this._show = false;\n this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n } else {\n this.hide();\n }\n }\n },\n isShow: function () {\n return this._show;\n },\n dispose: function () {\n this.el.parentNode.removeChild(this.el);\n },\n getOuterSize: function () {\n var width = this.el.clientWidth;\n var height = this.el.clientHeight; // Consider browser compatibility.\n // IE8 does not support getComputedStyle.\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n var stl = document.defaultView.getComputedStyle(this.el);\n\n if (stl) {\n width += parseInt(stl.borderLeftWidth, 10) + parseInt(stl.borderRightWidth, 10);\n height += parseInt(stl.borderTopWidth, 10) + parseInt(stl.borderBottomWidth, 10);\n }\n }\n\n return {\n width: width,\n height: height\n };\n }\n};\nvar _default = TooltipContent;\nmodule.exports = _default;","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\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} finder contains {seriesIndex, dataIndex, dataIndexInside}\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} {point: [x, y], el: ...} point Will not be null.\n */\nfunction _default(finder, ecModel) {\n var point = [];\n var seriesIndex = finder.seriesIndex;\n var seriesModel;\n\n if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\n return {\n point: []\n };\n }\n\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, finder);\n\n if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) {\n return {\n point: []\n };\n }\n\n var el = data.getItemGraphicEl(dataIndex);\n var coordSys = seriesModel.coordinateSystem;\n\n if (seriesModel.getTooltipPosition) {\n point = seriesModel.getTooltipPosition(dataIndex) || [];\n } else if (coordSys && coordSys.dataToPoint) {\n point = coordSys.dataToPoint(data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }), dataIndex, true)) || [];\n } else if (el) {\n // Use graphic bounding rect\n var rect = el.getBoundingRect().clone();\n rect.applyTransform(el.transform);\n point = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n }\n\n return {\n point: point,\n el: el\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 _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _labelHelper = require(\"./labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Symbol\n */\n\n/**\n * @constructor\n * @alias {module:echarts/chart/helper/Symbol}\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\nfunction SymbolClz(data, idx, seriesScope) {\n graphic.Group.call(this);\n this.updateData(data, idx, seriesScope);\n}\n\nvar symbolProto = SymbolClz.prototype;\n/**\n * @public\n * @static\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {Array.} [width, height]\n */\n\nvar getSymbolSize = SymbolClz.getSymbolSize = function (data, idx) {\n var symbolSize = data.getItemVisual(idx, 'symbolSize');\n return symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n};\n\nfunction getScale(symbolSize) {\n return [symbolSize[0] / 2, symbolSize[1] / 2];\n}\n\nfunction driftSymbol(dx, dy) {\n this.parent.drift(dx, dy);\n}\n\nsymbolProto._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n // Remove paths created before\n this.removeAll();\n var color = data.getItemVisual(idx, 'color'); // var symbolPath = createSymbol(\n // symbolType, -0.5, -0.5, 1, 1, color\n // );\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4150.\n\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, color, keepAspect);\n symbolPath.attr({\n z2: 100,\n culling: true,\n scale: getScale(symbolSize)\n }); // Rewrite drift method\n\n symbolPath.drift = driftSymbol;\n this._symbolType = symbolType;\n this.add(symbolPath);\n};\n/**\n * Stop animation\n * @param {boolean} toLastFrame\n */\n\n\nsymbolProto.stopSymbolAnimation = function (toLastFrame) {\n this.childAt(0).stopAnimation(toLastFrame);\n};\n/**\n * FIXME:\n * Caution: This method breaks the encapsulation of this module,\n * but it indeed brings convenience. So do not use the method\n * unless you detailedly know all the implements of `Symbol`,\n * especially animation.\n *\n * Get symbol path element.\n */\n\n\nsymbolProto.getSymbolPath = function () {\n return this.childAt(0);\n};\n/**\n * Get scale(aka, current symbol size).\n * Including the change caused by animation\n */\n\n\nsymbolProto.getScale = function () {\n return this.childAt(0).scale;\n};\n/**\n * Highlight symbol\n */\n\n\nsymbolProto.highlight = function () {\n this.childAt(0).trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\nsymbolProto.downplay = function () {\n this.childAt(0).trigger('normal');\n};\n/**\n * @param {number} zlevel\n * @param {number} z\n */\n\n\nsymbolProto.setZ = function (zlevel, z) {\n var symbolPath = this.childAt(0);\n symbolPath.zlevel = zlevel;\n symbolPath.z = z;\n};\n\nsymbolProto.setDraggable = function (draggable) {\n var symbolPath = this.childAt(0);\n symbolPath.draggable = draggable;\n symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\n};\n/**\n * Update symbol properties\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Object} [seriesScope]\n * @param {Object} [seriesScope.itemStyle]\n * @param {Object} [seriesScope.hoverItemStyle]\n * @param {Object} [seriesScope.symbolRotate]\n * @param {Object} [seriesScope.symbolOffset]\n * @param {module:echarts/model/Model} [seriesScope.labelModel]\n * @param {module:echarts/model/Model} [seriesScope.hoverLabelModel]\n * @param {boolean} [seriesScope.hoverAnimation]\n * @param {Object} [seriesScope.cursorStyle]\n * @param {module:echarts/model/Model} [seriesScope.itemModel]\n * @param {string} [seriesScope.symbolInnerColor]\n * @param {Object} [seriesScope.fadeIn=false]\n */\n\n\nsymbolProto.updateData = function (data, idx, seriesScope) {\n this.silent = false;\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var seriesModel = data.hostModel;\n var symbolSize = getSymbolSize(data, idx);\n var isInit = symbolType !== this._symbolType;\n\n if (isInit) {\n var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n\n this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n } else {\n var symbolPath = this.childAt(0);\n symbolPath.silent = false;\n graphic.updateProps(symbolPath, {\n scale: getScale(symbolSize)\n }, seriesModel, idx);\n }\n\n this._updateCommon(data, idx, symbolSize, seriesScope);\n\n if (isInit) {\n var symbolPath = this.childAt(0);\n var fadeIn = seriesScope && seriesScope.fadeIn;\n var target = {\n scale: symbolPath.scale.slice()\n };\n fadeIn && (target.style = {\n opacity: symbolPath.style.opacity\n });\n symbolPath.scale = [0, 0];\n fadeIn && (symbolPath.style.opacity = 0);\n graphic.initProps(symbolPath, target, seriesModel, idx);\n }\n\n this._seriesModel = seriesModel;\n}; // Update common properties\n\n\nvar normalStyleAccessPath = ['itemStyle'];\nvar emphasisStyleAccessPath = ['emphasis', 'itemStyle'];\nvar normalLabelAccessPath = ['label'];\nvar emphasisLabelAccessPath = ['emphasis', 'label'];\n/**\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Array.} symbolSize\n * @param {Object} [seriesScope]\n */\n\nsymbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {\n var symbolPath = this.childAt(0);\n var seriesModel = data.hostModel;\n var color = data.getItemVisual(idx, 'color'); // Reset style\n\n if (symbolPath.type !== 'image') {\n symbolPath.useStyle({\n strokeNoScale: true\n });\n } else {\n symbolPath.setStyle({\n opacity: null,\n shadowBlur: null,\n shadowOffsetX: null,\n shadowOffsetY: null,\n shadowColor: null\n });\n }\n\n var itemStyle = seriesScope && seriesScope.itemStyle;\n var hoverItemStyle = seriesScope && seriesScope.hoverItemStyle;\n var symbolOffset = seriesScope && seriesScope.symbolOffset;\n var labelModel = seriesScope && seriesScope.labelModel;\n var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel;\n var hoverAnimation = seriesScope && seriesScope.hoverAnimation;\n var cursorStyle = seriesScope && seriesScope.cursorStyle;\n\n if (!seriesScope || data.hasItemOption) {\n var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n itemStyle = itemModel.getModel(normalStyleAccessPath).getItemStyle(['color']);\n hoverItemStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle();\n symbolOffset = itemModel.getShallow('symbolOffset');\n labelModel = itemModel.getModel(normalLabelAccessPath);\n hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath);\n hoverAnimation = itemModel.getShallow('hoverAnimation');\n cursorStyle = itemModel.getShallow('cursor');\n } else {\n hoverItemStyle = zrUtil.extend({}, hoverItemStyle);\n }\n\n var elStyle = symbolPath.style;\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n\n if (symbolOffset) {\n symbolPath.attr('position', [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])]);\n }\n\n cursorStyle && symbolPath.attr('cursor', cursorStyle); // PENDING setColor before setStyle!!!\n\n symbolPath.setColor(color, seriesScope && seriesScope.symbolInnerColor);\n symbolPath.setStyle(itemStyle);\n var opacity = data.getItemVisual(idx, 'opacity');\n\n if (opacity != null) {\n elStyle.opacity = opacity;\n }\n\n var liftZ = data.getItemVisual(idx, 'liftZ');\n var z2Origin = symbolPath.__z2Origin;\n\n if (liftZ != null) {\n if (z2Origin == null) {\n symbolPath.__z2Origin = symbolPath.z2;\n symbolPath.z2 += liftZ;\n }\n } else if (z2Origin != null) {\n symbolPath.z2 = z2Origin;\n symbolPath.__z2Origin = null;\n }\n\n var useNameLabel = seriesScope && seriesScope.useNameLabel;\n graphic.setLabelStyle(elStyle, hoverItemStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: getLabelDefaultText,\n isRectText: true,\n autoColor: color\n }); // Do not execute util needed.\n\n function getLabelDefaultText(idx, opt) {\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n }\n\n symbolPath.__symbolOriginalScale = getScale(symbolSize);\n symbolPath.hoverStyle = hoverItemStyle;\n symbolPath.highDownOnUpdate = hoverAnimation && seriesModel.isAnimationEnabled() ? highDownOnUpdate : null;\n graphic.setHoverStyle(symbolPath);\n};\n\nfunction highDownOnUpdate(fromState, toState) {\n // Do not support this hover animation util some scenario required.\n // Animation can only be supported in hover layer when using `el.incremetal`.\n if (this.incremental || this.useHoverLayer) {\n return;\n }\n\n if (toState === 'emphasis') {\n var scale = this.__symbolOriginalScale;\n var ratio = scale[1] / scale[0];\n var emphasisOpt = {\n scale: [Math.max(scale[0] * 1.1, scale[0] + 3), Math.max(scale[1] * 1.1, scale[1] + 3 * ratio)]\n }; // FIXME\n // modify it after support stop specified animation.\n // toState === fromState\n // ? (this.stopAnimation(), this.attr(emphasisOpt))\n\n this.animateTo(emphasisOpt, 400, 'elasticOut');\n } else if (toState === 'normal') {\n this.animateTo({\n scale: this.__symbolOriginalScale\n }, 400, 'elasticOut');\n }\n}\n/**\n * @param {Function} cb\n * @param {Object} [opt]\n * @param {Object} [opt.keepLabel=true]\n */\n\n\nsymbolProto.fadeOut = function (cb, opt) {\n var symbolPath = this.childAt(0); // Avoid mistaken hover when fading out\n\n this.silent = symbolPath.silent = true; // Not show text when animating\n\n !(opt && opt.keepLabel) && (symbolPath.style.text = null);\n graphic.updateProps(symbolPath, {\n style: {\n opacity: 0\n },\n scale: [0, 0]\n }, this._seriesModel, this.dataIndex, cb);\n};\n\nzrUtil.inherits(SymbolClz, graphic.Group);\nvar _default = SymbolClz;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar symbolUtil = require(\"../../util/symbol\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction normalizeSymbolSize(symbolSize) {\n if (!zrUtil.isArray(symbolSize)) {\n symbolSize = [+symbolSize, +symbolSize];\n }\n\n return symbolSize;\n}\n\nvar _default = echarts.extendChartView({\n type: 'radar',\n render: function (seriesModel, ecModel, api) {\n var polar = seriesModel.coordinateSystem;\n var group = this.group;\n var data = seriesModel.getData();\n var oldData = this._data;\n\n function createSymbol(data, idx) {\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var color = data.getItemVisual(idx, 'color');\n\n if (symbolType === 'none') {\n return;\n }\n\n var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n var symbolPath = symbolUtil.createSymbol(symbolType, -1, -1, 2, 2, color);\n symbolPath.attr({\n style: {\n strokeNoScale: true\n },\n z2: 100,\n scale: [symbolSize[0] / 2, symbolSize[1] / 2]\n });\n return symbolPath;\n }\n\n function updateSymbols(oldPoints, newPoints, symbolGroup, data, idx, isInit) {\n // Simply rerender all\n symbolGroup.removeAll();\n\n for (var i = 0; i < newPoints.length - 1; i++) {\n var symbolPath = createSymbol(data, idx);\n\n if (symbolPath) {\n symbolPath.__dimIdx = i;\n\n if (oldPoints[i]) {\n symbolPath.attr('position', oldPoints[i]);\n graphic[isInit ? 'initProps' : 'updateProps'](symbolPath, {\n position: newPoints[i]\n }, seriesModel, idx);\n } else {\n symbolPath.attr('position', newPoints[i]);\n }\n\n symbolGroup.add(symbolPath);\n }\n }\n }\n\n function getInitialPoints(points) {\n return zrUtil.map(points, function (pt) {\n return [polar.cx, polar.cy];\n });\n }\n\n data.diff(oldData).add(function (idx) {\n var points = data.getItemLayout(idx);\n\n if (!points) {\n return;\n }\n\n var polygon = new graphic.Polygon();\n var polyline = new graphic.Polyline();\n var target = {\n shape: {\n points: points\n }\n };\n polygon.shape.points = getInitialPoints(points);\n polyline.shape.points = getInitialPoints(points);\n graphic.initProps(polygon, target, seriesModel, idx);\n graphic.initProps(polyline, target, seriesModel, idx);\n var itemGroup = new graphic.Group();\n var symbolGroup = new graphic.Group();\n itemGroup.add(polyline);\n itemGroup.add(polygon);\n itemGroup.add(symbolGroup);\n updateSymbols(polyline.shape.points, points, symbolGroup, data, idx, true);\n data.setItemGraphicEl(idx, itemGroup);\n }).update(function (newIdx, oldIdx) {\n var itemGroup = oldData.getItemGraphicEl(oldIdx);\n var polyline = itemGroup.childAt(0);\n var polygon = itemGroup.childAt(1);\n var symbolGroup = itemGroup.childAt(2);\n var target = {\n shape: {\n points: data.getItemLayout(newIdx)\n }\n };\n\n if (!target.shape.points) {\n return;\n }\n\n updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false);\n graphic.updateProps(polyline, target, seriesModel);\n graphic.updateProps(polygon, target, seriesModel);\n data.setItemGraphicEl(newIdx, itemGroup);\n }).remove(function (idx) {\n group.remove(oldData.getItemGraphicEl(idx));\n }).execute();\n data.eachItemGraphicEl(function (itemGroup, idx) {\n var itemModel = data.getItemModel(idx);\n var polyline = itemGroup.childAt(0);\n var polygon = itemGroup.childAt(1);\n var symbolGroup = itemGroup.childAt(2);\n var color = data.getItemVisual(idx, 'color');\n group.add(itemGroup);\n polyline.useStyle(zrUtil.defaults(itemModel.getModel('lineStyle').getLineStyle(), {\n fill: 'none',\n stroke: color\n }));\n polyline.hoverStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n var areaStyleModel = itemModel.getModel('areaStyle');\n var hoverAreaStyleModel = itemModel.getModel('emphasis.areaStyle');\n var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty();\n var hoverPolygonIgnore = hoverAreaStyleModel.isEmpty() && hoverAreaStyleModel.parentModel.isEmpty();\n hoverPolygonIgnore = hoverPolygonIgnore && polygonIgnore;\n polygon.ignore = polygonIgnore;\n polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n fill: color,\n opacity: 0.7\n }));\n polygon.hoverStyle = hoverAreaStyleModel.getAreaStyle();\n var itemStyle = itemModel.getModel('itemStyle').getItemStyle(['color']);\n var itemHoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n symbolGroup.eachChild(function (symbolPath) {\n symbolPath.setStyle(itemStyle);\n symbolPath.hoverStyle = zrUtil.clone(itemHoverStyle);\n var defaultText = data.get(data.dimensions[symbolPath.__dimIdx], idx);\n (defaultText == null || isNaN(defaultText)) && (defaultText = '');\n graphic.setLabelStyle(symbolPath.style, symbolPath.hoverStyle, labelModel, labelHoverModel, {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n labelDimIndex: symbolPath.__dimIdx,\n defaultText: defaultText,\n autoColor: color,\n isRectText: true\n });\n });\n\n itemGroup.highDownOnUpdate = function (fromState, toState) {\n polygon.attr('ignore', toState === 'emphasis' ? hoverPolygonIgnore : polygonIgnore);\n };\n\n graphic.setHoverStyle(itemGroup);\n });\n this._data = data;\n },\n remove: function () {\n this.group.removeAll();\n this._data = null;\n },\n dispose: function () {}\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nrequire(\"./scatter/ScatterSeries\");\n\nrequire(\"./scatter/ScatterView\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar layoutPoints = require(\"../layout/points\");\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// import * as zrUtil from 'zrender/src/core/util';\n// In case developer forget to include grid component\necharts.registerVisual(visualSymbol('scatter', 'circle'));\necharts.registerLayout(layoutPoints('scatter')); // echarts.registerProcessor(function (ecModel, api) {\n// ecModel.eachSeriesByType('scatter', function (seriesModel) {\n// var data = seriesModel.getData();\n// var coordSys = seriesModel.coordinateSystem;\n// if (coordSys.type !== 'geo') {\n// return;\n// }\n// var startPt = coordSys.pointToData([0, 0]);\n// var endPt = coordSys.pointToData([api.getWidth(), api.getHeight()]);\n// var dims = zrUtil.map(coordSys.dimensions, function (dim) {\n// return data.mapDimension(dim);\n// });\n// var range = {};\n// range[dims[0]] = [Math.min(startPt[0], endPt[0]), Math.max(startPt[0], endPt[0])];\n// range[dims[1]] = [Math.min(startPt[1], endPt[1]), Math.max(startPt[1], endPt[1])];\n// data.selectRange(range);\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar axisDefault = require(\"../axisDefault\");\n\nvar Model = require(\"../../model/Model\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\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 valueAxisDefault = axisDefault.valueAxis;\n\nfunction defaultsShow(opt, show) {\n return zrUtil.defaults({\n show: show\n }, opt);\n}\n\nvar RadarModel = echarts.extendComponentModel({\n type: 'radar',\n optionUpdated: function () {\n var boundaryGap = this.get('boundaryGap');\n var splitNumber = this.get('splitNumber');\n var scale = this.get('scale');\n var axisLine = this.get('axisLine');\n var axisTick = this.get('axisTick');\n var axisType = this.get('axisType');\n var axisLabel = this.get('axisLabel');\n var nameTextStyle = this.get('name');\n var showName = this.get('name.show');\n var nameFormatter = this.get('name.formatter');\n var nameGap = this.get('nameGap');\n var triggerEvent = this.get('triggerEvent');\n var indicatorModels = zrUtil.map(this.get('indicator') || [], function (indicatorOpt) {\n // PENDING\n if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) {\n indicatorOpt.min = 0;\n } else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) {\n indicatorOpt.max = 0;\n }\n\n var iNameTextStyle = nameTextStyle;\n\n if (indicatorOpt.color != null) {\n iNameTextStyle = zrUtil.defaults({\n color: indicatorOpt.color\n }, nameTextStyle);\n } // Use same configuration\n\n\n indicatorOpt = zrUtil.merge(zrUtil.clone(indicatorOpt), {\n boundaryGap: boundaryGap,\n splitNumber: splitNumber,\n scale: scale,\n axisLine: axisLine,\n axisTick: axisTick,\n axisType: axisType,\n axisLabel: axisLabel,\n // Compatible with 2 and use text\n name: indicatorOpt.text,\n nameLocation: 'end',\n nameGap: nameGap,\n // min: 0,\n nameTextStyle: iNameTextStyle,\n triggerEvent: triggerEvent\n }, false);\n\n if (!showName) {\n indicatorOpt.name = '';\n }\n\n if (typeof nameFormatter === 'string') {\n var indName = indicatorOpt.name;\n indicatorOpt.name = nameFormatter.replace('{value}', indName != null ? indName : '');\n } else if (typeof nameFormatter === 'function') {\n indicatorOpt.name = nameFormatter(indicatorOpt.name, indicatorOpt);\n }\n\n var model = zrUtil.extend(new Model(indicatorOpt, null, this.ecModel), axisModelCommonMixin); // For triggerEvent.\n\n model.mainType = 'radar';\n model.componentIndex = this.componentIndex;\n return model;\n }, this);\n\n this.getIndicatorModels = function () {\n return indicatorModels;\n };\n },\n defaultOption: {\n zlevel: 0,\n z: 0,\n center: ['50%', '50%'],\n radius: '75%',\n startAngle: 90,\n name: {\n show: true // formatter: null\n // textStyle: {}\n\n },\n boundaryGap: [0, 0],\n splitNumber: 5,\n nameGap: 15,\n scale: false,\n // Polygon or circle\n shape: 'polygon',\n axisLine: zrUtil.merge({\n lineStyle: {\n color: '#bbb'\n }\n }, valueAxisDefault.axisLine),\n axisLabel: defaultsShow(valueAxisDefault.axisLabel, false),\n axisTick: defaultsShow(valueAxisDefault.axisTick, false),\n axisType: 'interval',\n splitLine: defaultsShow(valueAxisDefault.splitLine, true),\n splitArea: defaultsShow(valueAxisDefault.splitArea, true),\n // {text, min, max}\n indicator: []\n }\n});\nvar _default = RadarModel;\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 env = require(\"zrender/lib/core/env\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\nvar each = zrUtil.each;\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n * @param {Function} handler\n * param: {string} currTrigger\n * param: {Array.} point\n */\n\nfunction register(key, api, handler) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n inner(zr).records || (inner(zr).records = {});\n initGlobalListeners(zr, api);\n var record = inner(zr).records[key] || (inner(zr).records[key] = {});\n record.handler = handler;\n}\n\nfunction initGlobalListeners(zr, api) {\n if (inner(zr).initialized) {\n return;\n }\n\n inner(zr).initialized = true;\n useHandler('click', zrUtil.curry(doEnter, 'click'));\n useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove')); // useHandler('mouseout', onLeave);\n\n useHandler('globalout', onLeave);\n\n function useHandler(eventType, cb) {\n zr.on(eventType, function (e) {\n var dis = makeDispatchAction(api);\n each(inner(zr).records, function (record) {\n record && cb(record, e, dis.dispatchAction);\n });\n dispatchTooltipFinally(dis.pendings, api);\n });\n }\n}\n\nfunction dispatchTooltipFinally(pendings, api) {\n var showLen = pendings.showTip.length;\n var hideLen = pendings.hideTip.length;\n var actuallyPayload;\n\n if (showLen) {\n actuallyPayload = pendings.showTip[showLen - 1];\n } else if (hideLen) {\n actuallyPayload = pendings.hideTip[hideLen - 1];\n }\n\n if (actuallyPayload) {\n actuallyPayload.dispatchAction = null;\n api.dispatchAction(actuallyPayload);\n }\n}\n\nfunction onLeave(record, e, dispatchAction) {\n record.handler('leave', null, dispatchAction);\n}\n\nfunction doEnter(currTrigger, record, e, dispatchAction) {\n record.handler(currTrigger, e, dispatchAction);\n}\n\nfunction makeDispatchAction(api) {\n var pendings = {\n showTip: [],\n hideTip: []\n }; // FIXME\n // better approach?\n // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,\n // which may be conflict, (axisPointer call showTip but tooltip call hideTip);\n // So we have to add \"final stage\" to merge those dispatched actions.\n\n var dispatchAction = function (payload) {\n var pendingList = pendings[payload.type];\n\n if (pendingList) {\n pendingList.push(payload);\n } else {\n payload.dispatchAction = dispatchAction;\n api.dispatchAction(payload);\n }\n };\n\n return {\n dispatchAction: dispatchAction,\n pendings: pendings\n };\n}\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction unregister(key, api) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n var record = (inner(zr).records || {})[key];\n\n if (record) {\n inner(zr).records[key] = null;\n }\n}\n\nexports.register = register;\nexports.unregister = unregister;","/**\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar ChartView = require(\"../../view/Chart\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/model/Series} seriesModel\n * @param {boolean} hasAnimation\n * @inner\n */\nfunction updateDataSelected(uid, seriesModel, hasAnimation, api) {\n var data = seriesModel.getData();\n var dataIndex = this.dataIndex;\n var name = data.getName(dataIndex);\n var selectedOffset = seriesModel.get('selectedOffset');\n api.dispatchAction({\n type: 'pieToggleSelect',\n from: uid,\n name: name,\n seriesId: seriesModel.id\n });\n data.each(function (idx) {\n toggleItemSelected(data.getItemGraphicEl(idx), data.getItemLayout(idx), seriesModel.isSelected(data.getName(idx)), selectedOffset, hasAnimation);\n });\n}\n/**\n * @param {module:zrender/graphic/Sector} el\n * @param {Object} layout\n * @param {boolean} isSelected\n * @param {number} selectedOffset\n * @param {boolean} hasAnimation\n * @inner\n */\n\n\nfunction toggleItemSelected(el, layout, isSelected, selectedOffset, hasAnimation) {\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var dx = Math.cos(midAngle);\n var dy = Math.sin(midAngle);\n var offset = isSelected ? selectedOffset : 0;\n var position = [dx * offset, dy * offset];\n hasAnimation // animateTo will stop revious animation like update transition\n ? el.animate().when(200, {\n position: position\n }).start('bounceOut') : el.attr('position', position);\n}\n/**\n * Piece of pie including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\n\n\nfunction PiePiece(data, idx) {\n graphic.Group.call(this);\n var sector = new graphic.Sector({\n z2: 2\n });\n var polyline = new graphic.Polyline();\n var text = new graphic.Text();\n this.add(sector);\n this.add(polyline);\n this.add(text);\n this.updateData(data, idx, true);\n}\n\nvar piePieceProto = PiePiece.prototype;\n\npiePieceProto.updateData = function (data, idx, firstCreate) {\n var sector = this.childAt(0);\n var labelLine = this.childAt(1);\n var labelText = this.childAt(2);\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var layout = data.getItemLayout(idx);\n var sectorShape = zrUtil.extend({}, layout);\n sectorShape.label = null;\n var animationTypeUpdate = seriesModel.getShallow('animationTypeUpdate');\n\n if (firstCreate) {\n sector.setShape(sectorShape);\n var animationType = seriesModel.getShallow('animationType');\n\n if (animationType === 'scale') {\n sector.shape.r = layout.r0;\n graphic.initProps(sector, {\n shape: {\n r: layout.r\n }\n }, seriesModel, idx);\n } // Expansion\n else {\n sector.shape.endAngle = layout.startAngle;\n graphic.updateProps(sector, {\n shape: {\n endAngle: layout.endAngle\n }\n }, seriesModel, idx);\n }\n } else {\n if (animationTypeUpdate === 'expansion') {\n // Sectors are set to be target shape and an overlaying clipPath is used for animation\n sector.setShape(sectorShape);\n } else {\n // Transition animation from the old shape\n graphic.updateProps(sector, {\n shape: sectorShape\n }, seriesModel, idx);\n }\n } // Update common style\n\n\n var visualColor = data.getItemVisual(idx, 'color');\n sector.useStyle(zrUtil.defaults({\n lineJoin: 'bevel',\n fill: visualColor\n }, itemModel.getModel('itemStyle').getItemStyle()));\n sector.hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && sector.attr('cursor', cursorStyle); // Toggle selected\n\n toggleItemSelected(this, data.getItemLayout(idx), seriesModel.isSelected(data.getName(idx)), seriesModel.get('selectedOffset'), seriesModel.get('animation')); // Label and text animation should be applied only for transition type animation when update\n\n var withAnimation = !firstCreate && animationTypeUpdate === 'transition';\n\n this._updateLabel(data, idx, withAnimation);\n\n this.highDownOnUpdate = !seriesModel.get('silent') ? function (fromState, toState) {\n var hasAnimation = seriesModel.isAnimationEnabled() && itemModel.get('hoverAnimation');\n\n if (toState === 'emphasis') {\n labelLine.ignore = labelLine.hoverIgnore;\n labelText.ignore = labelText.hoverIgnore; // Sector may has animation of updating data. Force to move to the last frame\n // Or it may stopped on the wrong shape\n\n if (hasAnimation) {\n sector.stopAnimation(true);\n sector.animateTo({\n shape: {\n r: layout.r + seriesModel.get('hoverOffset')\n }\n }, 300, 'elasticOut');\n }\n } else {\n labelLine.ignore = labelLine.normalIgnore;\n labelText.ignore = labelText.normalIgnore;\n\n if (hasAnimation) {\n sector.stopAnimation(true);\n sector.animateTo({\n shape: {\n r: layout.r\n }\n }, 300, 'elasticOut');\n }\n }\n } : null;\n graphic.setHoverStyle(this);\n};\n\npiePieceProto._updateLabel = function (data, idx, withAnimation) {\n var labelLine = this.childAt(1);\n var labelText = this.childAt(2);\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var layout = data.getItemLayout(idx);\n var labelLayout = layout.label;\n var visualColor = data.getItemVisual(idx, 'color');\n\n if (!labelLayout || isNaN(labelLayout.x) || isNaN(labelLayout.y)) {\n labelText.ignore = labelText.normalIgnore = labelText.hoverIgnore = labelLine.ignore = labelLine.normalIgnore = labelLine.hoverIgnore = true;\n return;\n }\n\n var targetLineShape = {\n points: labelLayout.linePoints || [[labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y]]\n };\n var targetTextStyle = {\n x: labelLayout.x,\n y: labelLayout.y\n };\n\n if (withAnimation) {\n graphic.updateProps(labelLine, {\n shape: targetLineShape\n }, seriesModel, idx);\n graphic.updateProps(labelText, {\n style: targetTextStyle\n }, seriesModel, idx);\n } else {\n labelLine.attr({\n shape: targetLineShape\n });\n labelText.attr({\n style: targetTextStyle\n });\n }\n\n labelText.attr({\n rotation: labelLayout.rotation,\n origin: [labelLayout.x, labelLayout.y],\n z2: 10\n });\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineHoverModel = itemModel.getModel('emphasis.labelLine');\n var visualColor = data.getItemVisual(idx, 'color');\n graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, labelHoverModel, {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n defaultText: labelLayout.text,\n autoColor: visualColor,\n useInsideStyle: !!labelLayout.inside\n }, {\n textAlign: labelLayout.textAlign,\n textVerticalAlign: labelLayout.verticalAlign,\n opacity: data.getItemVisual(idx, 'opacity')\n });\n labelText.ignore = labelText.normalIgnore = !labelModel.get('show');\n labelText.hoverIgnore = !labelHoverModel.get('show');\n labelLine.ignore = labelLine.normalIgnore = !labelLineModel.get('show');\n labelLine.hoverIgnore = !labelLineHoverModel.get('show'); // Default use item visual color\n\n labelLine.setStyle({\n stroke: visualColor,\n opacity: data.getItemVisual(idx, 'opacity')\n });\n labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle());\n labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle();\n var smooth = labelLineModel.get('smooth');\n\n if (smooth && smooth === true) {\n smooth = 0.4;\n }\n\n labelLine.setShape({\n smooth: smooth\n });\n};\n\nzrUtil.inherits(PiePiece, graphic.Group); // Pie view\n\nvar PieView = ChartView.extend({\n type: 'pie',\n init: function () {\n var sectorGroup = new graphic.Group();\n this._sectorGroup = sectorGroup;\n },\n render: function (seriesModel, ecModel, api, payload) {\n if (payload && payload.from === this.uid) {\n return;\n }\n\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var hasAnimation = ecModel.get('animation');\n var isFirstRender = !oldData;\n var animationType = seriesModel.get('animationType');\n var animationTypeUpdate = seriesModel.get('animationTypeUpdate');\n var onSectorClick = zrUtil.curry(updateDataSelected, this.uid, seriesModel, hasAnimation, api);\n var selectedMode = seriesModel.get('selectedMode');\n data.diff(oldData).add(function (idx) {\n var piePiece = new PiePiece(data, idx); // Default expansion animation\n\n if (isFirstRender && animationType !== 'scale') {\n piePiece.eachChild(function (child) {\n child.stopAnimation(true);\n });\n }\n\n selectedMode && piePiece.on('click', onSectorClick);\n data.setItemGraphicEl(idx, piePiece);\n group.add(piePiece);\n }).update(function (newIdx, oldIdx) {\n var piePiece = oldData.getItemGraphicEl(oldIdx);\n\n if (!isFirstRender && animationTypeUpdate !== 'transition') {\n piePiece.eachChild(function (child) {\n child.stopAnimation(true);\n });\n }\n\n piePiece.updateData(data, newIdx);\n piePiece.off('click');\n selectedMode && piePiece.on('click', onSectorClick);\n group.add(piePiece);\n data.setItemGraphicEl(newIdx, piePiece);\n }).remove(function (idx) {\n var piePiece = oldData.getItemGraphicEl(idx);\n group.remove(piePiece);\n }).execute();\n\n if (hasAnimation && data.count() > 0 && (isFirstRender ? animationType !== 'scale' : animationTypeUpdate !== 'transition')) {\n var shape = data.getItemLayout(0);\n\n for (var s = 1; isNaN(shape.startAngle) && s < data.count(); ++s) {\n shape = data.getItemLayout(s);\n }\n\n var r = Math.max(api.getWidth(), api.getHeight()) / 2;\n var removeClipPath = zrUtil.bind(group.removeClipPath, group);\n group.setClipPath(this._createClipPath(shape.cx, shape.cy, r, shape.startAngle, shape.clockwise, removeClipPath, seriesModel, isFirstRender));\n } else {\n // clipPath is used in first-time animation, so remove it when otherwise. See: #8994\n group.removeClipPath();\n }\n\n this._data = data;\n },\n dispose: function () {},\n _createClipPath: function (cx, cy, r, startAngle, clockwise, cb, seriesModel, isFirstRender) {\n var clipPath = new graphic.Sector({\n shape: {\n cx: cx,\n cy: cy,\n r0: 0,\n r: r,\n startAngle: startAngle,\n endAngle: startAngle,\n clockwise: clockwise\n }\n });\n var initOrUpdate = isFirstRender ? graphic.initProps : graphic.updateProps;\n initOrUpdate(clipPath, {\n shape: {\n endAngle: startAngle + (clockwise ? 1 : -1) * Math.PI * 2\n }\n }, seriesModel, cb);\n return clipPath;\n },\n\n /**\n * @implement\n */\n containPoint: function (point, seriesModel) {\n var data = seriesModel.getData();\n var itemLayout = data.getItemLayout(0);\n\n if (itemLayout) {\n var dx = point[0] - itemLayout.cx;\n var dy = point[1] - itemLayout.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n return radius <= itemLayout.r && radius >= itemLayout.r0;\n }\n }\n});\nvar _default = PieView;\nmodule.exports = _default;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_IMG } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { props as BImgProps } from '../image/img'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, pick(BImgProps, ['src', 'alt', 'width', 'height', 'left', 'right'])), {}, {\n bottom: makeProp(PROP_TYPE_BOOLEAN, false),\n end: makeProp(PROP_TYPE_BOOLEAN, false),\n start: makeProp(PROP_TYPE_BOOLEAN, false),\n top: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_IMG); // --- Main component ---\n// @vue/component\n\nexport var BCardImg = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var src = props.src,\n alt = props.alt,\n width = props.width,\n height = props.height;\n var baseClass = 'card-img';\n\n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n }\n\n return h('img', mergeData(data, {\n class: baseClass,\n attrs: {\n src: src,\n alt: alt,\n width: width,\n height: height\n }\n }));\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName, unprefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardBody, props as BCardBodyProps } from './card-body';\nimport { BCardHeader, props as BCardHeaderProps } from './card-header';\nimport { BCardFooter, props as BCardFooterProps } from './card-footer';\nimport { BCardImg, props as BCardImgProps } from './card-img'; // --- Props ---\n\nvar cardImgProps = copyProps(BCardImgProps, prefixPropName.bind(null, 'img'));\ncardImgProps.imgSrc.required = false;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, BCardBodyProps), BCardHeaderProps), BCardFooterProps), cardImgProps), cardProps), {}, {\n align: makeProp(PROP_TYPE_STRING),\n noBody: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD); // --- Main component ---\n// @vue/component\n\nexport var BCard = /*#__PURE__*/Vue.extend({\n name: NAME_CARD,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var imgSrc = props.imgSrc,\n imgLeft = props.imgLeft,\n imgRight = props.imgRight,\n imgStart = props.imgStart,\n imgEnd = props.imgEnd,\n imgBottom = props.imgBottom,\n header = props.header,\n headerHtml = props.headerHtml,\n footer = props.footer,\n footerHtml = props.footerHtml,\n align = props.align,\n textVariant = props.textVariant,\n bgVariant = props.bgVariant,\n borderVariant = props.borderVariant;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $imgFirst = h();\n var $imgLast = h();\n\n if (imgSrc) {\n var $img = h(BCardImg, {\n props: pluckProps(cardImgProps, props, unprefixPropName.bind(null, 'img'))\n });\n\n if (imgBottom) {\n $imgLast = $img;\n } else {\n $imgFirst = $img;\n }\n }\n\n var $header = h();\n var hasHeaderSlot = hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots);\n\n if (hasHeaderSlot || header || headerHtml) {\n $header = h(BCardHeader, {\n props: pluckProps(BCardHeaderProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header)\n }, normalizeSlot(SLOT_NAME_HEADER, slotScope, $scopedSlots, $slots));\n }\n\n var $content = normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots); // Wrap content in `` when `noBody` prop set\n\n if (!props.noBody) {\n $content = h(BCardBody, {\n props: pluckProps(BCardBodyProps, props)\n }, $content); // When the `overlap` prop is set we need to wrap the `` and ``\n // into a relative positioned wrapper to don't distract a potential header or footer\n\n if (props.overlay && imgSrc) {\n $content = h('div', {\n staticClass: 'position-relative'\n }, [$imgFirst, $content, $imgLast]); // Reset image variables since they are already in the wrapper\n\n $imgFirst = h();\n $imgLast = h();\n }\n }\n\n var $footer = h();\n var hasFooterSlot = hasNormalizedSlot(SLOT_NAME_FOOTER, $scopedSlots, $slots);\n\n if (hasFooterSlot || footer || footerHtml) {\n $footer = h(BCardFooter, {\n props: pluckProps(BCardFooterProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(footerHtml, footer)\n }, normalizeSlot(SLOT_NAME_FOOTER, slotScope, $scopedSlots, $slots));\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'card',\n class: (_class = {\n 'flex-row': imgLeft || imgStart,\n 'flex-row-reverse': (imgRight || imgEnd) && !(imgLeft || imgStart)\n }, _defineProperty(_class, \"text-\".concat(align), align), _defineProperty(_class, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_class, \"border-\".concat(borderVariant), borderVariant), _defineProperty(_class, \"text-\".concat(textVariant), textVariant), _class)\n }), [$imgFirst, $header, $content, $footer, $imgLast]);\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 _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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar IndicatorAxis = require(\"./IndicatorAxis\");\n\nvar IntervalScale = require(\"../../scale/Interval\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar _axisHelper = require(\"../axisHelper\");\n\nvar getScaleExtent = _axisHelper.getScaleExtent;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar LogScale = require(\"../../scale/Log\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO clockwise\nfunction Radar(radarModel, ecModel, api) {\n this._model = radarModel;\n /**\n * Radar dimensions\n * @type {Array.}\n */\n\n this.dimensions = [];\n this._indicatorAxes = zrUtil.map(radarModel.getIndicatorModels(), function (indicatorModel, idx) {\n var dim = 'indicator_' + idx;\n var indicatorAxis = new IndicatorAxis(dim, indicatorModel.get('axisType') === 'log' ? new LogScale() : new IntervalScale());\n indicatorAxis.name = indicatorModel.get('name'); // Inject model and axis\n\n indicatorAxis.model = indicatorModel;\n indicatorModel.axis = indicatorAxis;\n this.dimensions.push(dim);\n return indicatorAxis;\n }, this);\n this.resize(radarModel, api);\n /**\n * @type {number}\n * @readOnly\n */\n\n this.cx;\n /**\n * @type {number}\n * @readOnly\n */\n\n this.cy;\n /**\n * @type {number}\n * @readOnly\n */\n\n this.r;\n /**\n * @type {number}\n * @readOnly\n */\n\n this.r0;\n /**\n * @type {number}\n * @readOnly\n */\n\n this.startAngle;\n}\n\nRadar.prototype.getIndicatorAxes = function () {\n return this._indicatorAxes;\n};\n\nRadar.prototype.dataToPoint = function (value, indicatorIndex) {\n var indicatorAxis = this._indicatorAxes[indicatorIndex];\n return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex);\n};\n\nRadar.prototype.coordToPoint = function (coord, indicatorIndex) {\n var indicatorAxis = this._indicatorAxes[indicatorIndex];\n var angle = indicatorAxis.angle;\n var x = this.cx + coord * Math.cos(angle);\n var y = this.cy - coord * Math.sin(angle);\n return [x, y];\n};\n\nRadar.prototype.pointToData = function (pt) {\n var dx = pt[0] - this.cx;\n var dy = pt[1] - this.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n dx /= radius;\n dy /= radius;\n var radian = Math.atan2(-dy, dx); // Find the closest angle\n // FIXME index can calculated directly\n\n var minRadianDiff = Infinity;\n var closestAxis;\n var closestAxisIdx = -1;\n\n for (var i = 0; i < this._indicatorAxes.length; i++) {\n var indicatorAxis = this._indicatorAxes[i];\n var diff = Math.abs(radian - indicatorAxis.angle);\n\n if (diff < minRadianDiff) {\n closestAxis = indicatorAxis;\n closestAxisIdx = i;\n minRadianDiff = diff;\n }\n }\n\n return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))];\n};\n\nRadar.prototype.resize = function (radarModel, api) {\n var center = radarModel.get('center');\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n var viewSize = Math.min(viewWidth, viewHeight) / 2;\n this.cx = numberUtil.parsePercent(center[0], viewWidth);\n this.cy = numberUtil.parsePercent(center[1], viewHeight);\n this.startAngle = radarModel.get('startAngle') * Math.PI / 180; // radius may be single value like `20`, `'80%'`, or array like `[10, '80%']`\n\n var radius = radarModel.get('radius');\n\n if (typeof radius === 'string' || typeof radius === 'number') {\n radius = [0, radius];\n }\n\n this.r0 = numberUtil.parsePercent(radius[0], viewSize);\n this.r = numberUtil.parsePercent(radius[1], viewSize);\n zrUtil.each(this._indicatorAxes, function (indicatorAxis, idx) {\n indicatorAxis.setExtent(this.r0, this.r);\n var angle = this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length; // Normalize to [-PI, PI]\n\n angle = Math.atan2(Math.sin(angle), Math.cos(angle));\n indicatorAxis.angle = angle;\n }, this);\n};\n\nRadar.prototype.update = function (ecModel, api) {\n var indicatorAxes = this._indicatorAxes;\n var radarModel = this._model;\n zrUtil.each(indicatorAxes, function (indicatorAxis) {\n indicatorAxis.scale.setExtent(Infinity, -Infinity);\n });\n ecModel.eachSeriesByType('radar', function (radarSeries, idx) {\n if (radarSeries.get('coordinateSystem') !== 'radar' || ecModel.getComponent('radar', radarSeries.get('radarIndex')) !== radarModel) {\n return;\n }\n\n var data = radarSeries.getData();\n zrUtil.each(indicatorAxes, function (indicatorAxis) {\n indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim));\n });\n }, this);\n var splitNumber = radarModel.get('splitNumber');\n\n function increaseInterval(interval) {\n var exp10 = Math.pow(10, Math.floor(Math.log(interval) / Math.LN10)); // Increase interval\n\n var f = interval / exp10;\n\n if (f === 2) {\n f = 5;\n } else {\n // f is 2 or 5\n f *= 2;\n }\n\n return f * exp10;\n } // Force all the axis fixing the maxSplitNumber.\n\n\n zrUtil.each(indicatorAxes, function (indicatorAxis, idx) {\n var rawExtent = getScaleExtent(indicatorAxis.scale, indicatorAxis.model).extent;\n niceScaleExtent(indicatorAxis.scale, indicatorAxis.model);\n var axisModel = indicatorAxis.model;\n var scale = indicatorAxis.scale;\n var fixedMin = axisModel.getMin();\n var fixedMax = axisModel.getMax();\n var interval = scale.getInterval();\n\n if (fixedMin != null && fixedMax != null) {\n // User set min, max, divide to get new interval\n scale.setExtent(+fixedMin, +fixedMax);\n scale.setInterval((fixedMax - fixedMin) / splitNumber);\n } else if (fixedMin != null) {\n var max; // User set min, expand extent on the other side\n\n do {\n max = fixedMin + interval * splitNumber;\n scale.setExtent(+fixedMin, max); // Interval must been set after extent\n // FIXME\n\n scale.setInterval(interval);\n interval = increaseInterval(interval);\n } while (max < rawExtent[1] && isFinite(max) && isFinite(rawExtent[1]));\n } else if (fixedMax != null) {\n var min; // User set min, expand extent on the other side\n\n do {\n min = fixedMax - interval * splitNumber;\n scale.setExtent(min, +fixedMax);\n scale.setInterval(interval);\n interval = increaseInterval(interval);\n } while (min > rawExtent[0] && isFinite(min) && isFinite(rawExtent[0]));\n } else {\n var nicedSplitNumber = scale.getTicks().length - 1;\n\n if (nicedSplitNumber > splitNumber) {\n interval = increaseInterval(interval);\n } // TODO\n\n\n var max = Math.ceil(rawExtent[1] / interval) * interval;\n var min = numberUtil.round(max - interval * splitNumber);\n scale.setExtent(min, max);\n scale.setInterval(interval);\n }\n });\n};\n/**\n * Radar dimensions is based on the data\n * @type {Array}\n */\n\n\nRadar.dimensions = [];\n\nRadar.create = function (ecModel, api) {\n var radarList = [];\n ecModel.eachComponent('radar', function (radarModel) {\n var radar = new Radar(radarModel, ecModel, api);\n radarList.push(radar);\n radarModel.coordinateSystem = radar;\n });\n ecModel.eachSeriesByType('radar', function (radarSeries) {\n if (radarSeries.get('coordinateSystem') === 'radar') {\n // Inject coordinate system\n radarSeries.coordinateSystem = radarList[radarSeries.get('radarIndex') || 0];\n }\n });\n return radarList;\n};\n\nCoordinateSystem.register('radar', Radar);\nvar _default = Radar;\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 _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar linearMap = _number.linearMap;\n\nvar layout = require(\"../../util/layout\");\n\nvar labelLayout = require(\"./labelLayout\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nfunction _default(seriesType, ecModel, api, payload) {\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var viewRect = getViewRect(seriesModel, api);\n var center = seriesModel.get('center');\n var radius = seriesModel.get('radius');\n\n if (!zrUtil.isArray(radius)) {\n radius = [0, radius];\n }\n\n if (!zrUtil.isArray(center)) {\n center = [center, center];\n }\n\n var width = parsePercent(viewRect.width, api.getWidth());\n var height = parsePercent(viewRect.height, api.getHeight());\n var size = Math.min(width, height);\n var cx = parsePercent(center[0], width) + viewRect.x;\n var cy = parsePercent(center[1], height) + viewRect.y;\n var r0 = parsePercent(radius[0], size / 2);\n var r = parsePercent(radius[1], size / 2);\n var startAngle = -seriesModel.get('startAngle') * RADIAN;\n var minAngle = seriesModel.get('minAngle') * RADIAN;\n var validDataCount = 0;\n data.each(valueDim, function (value) {\n !isNaN(value) && validDataCount++;\n });\n var sum = data.getSum(valueDim); // Sum may be 0\n\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\n var clockwise = seriesModel.get('clockwise');\n var roseType = seriesModel.get('roseType');\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // [0...max]\n\n var extent = data.getDataExtent(valueDim);\n extent[0] = 0; // In the case some sector angle is smaller than minAngle\n\n var restAngle = PI2;\n var valueSumLargerThanMinAngle = 0;\n var currentAngle = startAngle;\n var dir = clockwise ? 1 : -1;\n data.each(valueDim, function (value, idx) {\n var angle;\n\n if (isNaN(value)) {\n data.setItemLayout(idx, {\n angle: NaN,\n startAngle: NaN,\n endAngle: NaN,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? NaN : r,\n viewRect: viewRect\n });\n return;\n } // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样?\n\n\n if (roseType !== 'area') {\n angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n } else {\n angle = PI2 / validDataCount;\n }\n\n if (angle < minAngle) {\n angle = minAngle;\n restAngle -= minAngle;\n } else {\n valueSumLargerThanMinAngle += value;\n }\n\n var endAngle = currentAngle + dir * angle;\n data.setItemLayout(idx, {\n angle: angle,\n startAngle: currentAngle,\n endAngle: endAngle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? linearMap(value, extent, [r0, r]) : r,\n viewRect: viewRect\n });\n currentAngle = endAngle;\n }); // Some sector is constrained by minAngle\n // Rest sectors needs recalculate angle\n\n if (restAngle < PI2 && validDataCount) {\n // Average the angle if rest angle is not enough after all angles is\n // Constrained by minAngle\n if (restAngle <= 1e-3) {\n var angle = PI2 / validDataCount;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout = data.getItemLayout(idx);\n layout.angle = angle;\n layout.startAngle = startAngle + dir * idx * angle;\n layout.endAngle = startAngle + dir * (idx + 1) * angle;\n }\n });\n } else {\n unitRadian = restAngle / valueSumLargerThanMinAngle;\n currentAngle = startAngle;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout = data.getItemLayout(idx);\n var angle = layout.angle === minAngle ? minAngle : value * unitRadian;\n layout.startAngle = currentAngle;\n layout.endAngle = currentAngle + dir * angle;\n currentAngle += dir * angle;\n }\n });\n }\n }\n\n labelLayout(seriesModel, r, viewRect.width, viewRect.height, viewRect.x, viewRect.y);\n });\n}\n\nmodule.exports = _default;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","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","\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 env = require(\"zrender/lib/core/env\");\n\nvar TooltipContent = require(\"./TooltipContent\");\n\nvar TooltipRichContent = require(\"./TooltipRichContent\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar findPointFromSeries = require(\"../axisPointer/findPointFromSeries\");\n\nvar layoutUtil = require(\"../../util/layout\");\n\nvar Model = require(\"../../model/Model\");\n\nvar globalListener = require(\"../axisPointer/globalListener\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar axisPointerViewHelper = require(\"../axisPointer/viewHelper\");\n\nvar _model = require(\"../../util/model\");\n\nvar getTooltipRenderMode = _model.getTooltipRenderMode;\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 bind = zrUtil.bind;\nvar each = zrUtil.each;\nvar parsePercent = numberUtil.parsePercent;\nvar proxyRect = new graphic.Rect({\n shape: {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n }\n});\n\nvar _default = echarts.extendComponentView({\n type: 'tooltip',\n init: function (ecModel, api) {\n if (env.node) {\n return;\n }\n\n var tooltipModel = ecModel.getComponent('tooltip');\n var renderMode = tooltipModel.get('renderMode');\n this._renderMode = getTooltipRenderMode(renderMode);\n var tooltipContent;\n\n if (this._renderMode === 'html') {\n tooltipContent = new TooltipContent(api.getDom(), api, {\n appendToBody: tooltipModel.get('appendToBody', true)\n });\n this._newLine = '
';\n } else {\n tooltipContent = new TooltipRichContent(api);\n this._newLine = '\\n';\n }\n\n this._tooltipContent = tooltipContent;\n },\n render: function (tooltipModel, ecModel, api) {\n if (env.node) {\n return;\n } // Reset\n\n\n this.group.removeAll();\n /**\n * @private\n * @type {module:echarts/component/tooltip/TooltipModel}\n */\n\n this._tooltipModel = tooltipModel;\n /**\n * @private\n * @type {module:echarts/model/Global}\n */\n\n this._ecModel = ecModel;\n /**\n * @private\n * @type {module:echarts/ExtensionAPI}\n */\n\n this._api = api;\n /**\n * Should be cleaned when render.\n * @private\n * @type {Array.>}\n */\n\n this._lastDataByCoordSys = null;\n /**\n * @private\n * @type {boolean}\n */\n\n this._alwaysShowContent = tooltipModel.get('alwaysShowContent');\n var tooltipContent = this._tooltipContent;\n tooltipContent.update();\n tooltipContent.setEnterable(tooltipModel.get('enterable'));\n\n this._initGlobalListener();\n\n this._keepShow();\n },\n _initGlobalListener: function () {\n var tooltipModel = this._tooltipModel;\n var triggerOn = tooltipModel.get('triggerOn');\n globalListener.register('itemTooltip', this._api, bind(function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none') {\n if (triggerOn.indexOf(currTrigger) >= 0) {\n this._tryShow(e, dispatchAction);\n } else if (currTrigger === 'leave') {\n this._hide(dispatchAction);\n }\n }\n }, this));\n },\n _keepShow: function () {\n var tooltipModel = this._tooltipModel;\n var ecModel = this._ecModel;\n var api = this._api; // Try to keep the tooltip show when refreshing\n\n if (this._lastX != null && this._lastY != null // When user is willing to control tooltip totally using API,\n // self.manuallyShowTip({x, y}) might cause tooltip hide,\n // which is not expected.\n && tooltipModel.get('triggerOn') !== 'none') {\n var self = this;\n clearTimeout(this._refreshUpdateTimeout);\n this._refreshUpdateTimeout = setTimeout(function () {\n // Show tip next tick after other charts are rendered\n // In case highlight action has wrong result\n // FIXME\n !api.isDisposed() && self.manuallyShowTip(tooltipModel, ecModel, api, {\n x: self._lastX,\n y: self._lastY\n });\n });\n }\n },\n\n /**\n * Show tip manually by\n * dispatchAction({\n * type: 'showTip',\n * x: 10,\n * y: 10\n * });\n * Or\n * dispatchAction({\n * type: 'showTip',\n * seriesIndex: 0,\n * dataIndex or dataIndexInside or name\n * });\n *\n * TODO Batch\n */\n manuallyShowTip: function (tooltipModel, ecModel, api, payload) {\n if (payload.from === this.uid || env.node) {\n return;\n }\n\n var dispatchAction = makeDispatchAction(payload, api); // Reset ticket\n\n this._ticket = ''; // When triggered from axisPointer.\n\n var dataByCoordSys = payload.dataByCoordSys;\n\n if (payload.tooltip && payload.x != null && payload.y != null) {\n var el = proxyRect;\n el.position = [payload.x, payload.y];\n el.update();\n el.tooltip = payload.tooltip; // Manually show tooltip while view is not using zrender elements.\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n target: el\n }, dispatchAction);\n } else if (dataByCoordSys) {\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n dataByCoordSys: payload.dataByCoordSys,\n tooltipOption: payload.tooltipOption\n }, dispatchAction);\n } else if (payload.seriesIndex != null) {\n if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\n return;\n }\n\n var pointInfo = findPointFromSeries(payload, ecModel);\n var cx = pointInfo.point[0];\n var cy = pointInfo.point[1];\n\n if (cx != null && cy != null) {\n this._tryShow({\n offsetX: cx,\n offsetY: cy,\n position: payload.position,\n target: pointInfo.el\n }, dispatchAction);\n }\n } else if (payload.x != null && payload.y != null) {\n // FIXME\n // should wrap dispatchAction like `axisPointer/globalListener` ?\n api.dispatchAction({\n type: 'updateAxisPointer',\n x: payload.x,\n y: payload.y\n });\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n target: api.getZr().findHover(payload.x, payload.y).target\n }, dispatchAction);\n }\n },\n manuallyHideTip: function (tooltipModel, ecModel, api, payload) {\n var tooltipContent = this._tooltipContent;\n\n if (!this._alwaysShowContent && this._tooltipModel) {\n tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\n }\n\n this._lastX = this._lastY = null;\n\n if (payload.from !== this.uid) {\n this._hide(makeDispatchAction(payload, api));\n }\n },\n // Be compatible with previous design, that is, when tooltip.type is 'axis' and\n // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer\n // and tooltip.\n _manuallyAxisShowTip: function (tooltipModel, ecModel, api, payload) {\n var seriesIndex = payload.seriesIndex;\n var dataIndex = payload.dataIndex;\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\n\n if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\n return;\n }\n\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n\n if (!seriesModel) {\n return;\n }\n\n var data = seriesModel.getData();\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model, tooltipModel]);\n\n if (tooltipModel.get('trigger') !== 'axis') {\n return;\n }\n\n api.dispatchAction({\n type: 'updateAxisPointer',\n seriesIndex: seriesIndex,\n dataIndex: dataIndex,\n position: payload.position\n });\n return true;\n },\n _tryShow: function (e, dispatchAction) {\n var el = e.target;\n var tooltipModel = this._tooltipModel;\n\n if (!tooltipModel) {\n return;\n } // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed\n\n\n this._lastX = e.offsetX;\n this._lastY = e.offsetY;\n var dataByCoordSys = e.dataByCoordSys;\n\n if (dataByCoordSys && dataByCoordSys.length) {\n this._showAxisTooltip(dataByCoordSys, e);\n } // Always show item tooltip if mouse is on the element with dataIndex\n else if (el && el.dataIndex != null) {\n this._lastDataByCoordSys = null;\n\n this._showSeriesItemTooltip(e, el, dispatchAction);\n } // Tooltip provided directly. Like legend.\n else if (el && el.tooltip) {\n this._lastDataByCoordSys = null;\n\n this._showComponentItemTooltip(e, el, dispatchAction);\n } else {\n this._lastDataByCoordSys = null;\n\n this._hide(dispatchAction);\n }\n },\n _showOrMove: function (tooltipModel, cb) {\n // showDelay is used in this case: tooltip.enterable is set\n // as true. User intent to move mouse into tooltip and click\n // something. `showDelay` makes it easyer to enter the content\n // but tooltip do not move immediately.\n var delay = tooltipModel.get('showDelay');\n cb = zrUtil.bind(cb, this);\n clearTimeout(this._showTimout);\n delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb();\n },\n _showAxisTooltip: function (dataByCoordSys, e) {\n var ecModel = this._ecModel;\n var globalTooltipModel = this._tooltipModel;\n var point = [e.offsetX, e.offsetY];\n var singleDefaultHTML = [];\n var singleParamsList = [];\n var singleTooltipModel = buildTooltipModel([e.tooltipOption, globalTooltipModel]);\n var renderMode = this._renderMode;\n var newLine = this._newLine;\n var markers = {};\n each(dataByCoordSys, function (itemCoordSys) {\n // var coordParamList = [];\n // var coordDefaultHTML = [];\n // var coordTooltipModel = buildTooltipModel([\n // e.tooltipOption,\n // itemCoordSys.tooltipOption,\n // ecModel.getComponent(itemCoordSys.coordSysMainType, itemCoordSys.coordSysIndex),\n // globalTooltipModel\n // ]);\n // var displayMode = coordTooltipModel.get('displayMode');\n // var paramsList = displayMode === 'single' ? singleParamsList : [];\n each(itemCoordSys.dataByAxis, function (item) {\n var axisModel = ecModel.getComponent(item.axisDim + 'Axis', item.axisIndex);\n var axisValue = item.value;\n var seriesDefaultHTML = [];\n\n if (!axisModel || axisValue == null) {\n return;\n }\n\n var valueLabel = axisPointerViewHelper.getValueLabel(axisValue, axisModel.axis, ecModel, item.seriesDataIndices, item.valueLabelOpt);\n zrUtil.each(item.seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var dataParams = series && series.getDataParams(dataIndex);\n dataParams.axisDim = item.axisDim;\n dataParams.axisIndex = item.axisIndex;\n dataParams.axisType = item.axisType;\n dataParams.axisId = item.axisId;\n dataParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, axisValue);\n dataParams.axisValueLabel = valueLabel;\n\n if (dataParams) {\n singleParamsList.push(dataParams);\n var seriesTooltip = series.formatTooltip(dataIndex, true, null, renderMode);\n var html;\n\n if (zrUtil.isObject(seriesTooltip)) {\n html = seriesTooltip.html;\n var newMarkers = seriesTooltip.markers;\n zrUtil.merge(markers, newMarkers);\n } else {\n html = seriesTooltip;\n }\n\n seriesDefaultHTML.push(html);\n }\n }); // Default tooltip content\n // FIXME\n // (1) shold be the first data which has name?\n // (2) themeRiver, firstDataIndex is array, and first line is unnecessary.\n\n var firstLine = valueLabel;\n\n if (renderMode !== 'html') {\n singleDefaultHTML.push(seriesDefaultHTML.join(newLine));\n } else {\n singleDefaultHTML.push((firstLine ? formatUtil.encodeHTML(firstLine) + newLine : '') + seriesDefaultHTML.join(newLine));\n }\n });\n }, this); // In most case, the second axis is shown upper than the first one.\n\n singleDefaultHTML.reverse();\n singleDefaultHTML = singleDefaultHTML.join(this._newLine + this._newLine);\n var positionExpr = e.position;\n\n this._showOrMove(singleTooltipModel, function () {\n if (this._updateContentNotChangedOnAxis(dataByCoordSys)) {\n this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, singleParamsList);\n } else {\n this._showTooltipContent(singleTooltipModel, singleDefaultHTML, singleParamsList, Math.random(), point[0], point[1], positionExpr, undefined, markers);\n }\n }); // Do not trigger events here, because this branch only be entered\n // from dispatchAction.\n\n },\n _showSeriesItemTooltip: function (e, el, dispatchAction) {\n var ecModel = this._ecModel; // Use dataModel in element if possible\n // Used when mouseover on a element like markPoint or edge\n // In which case, the data is not main data in series.\n\n var seriesIndex = el.seriesIndex;\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex); // For example, graph link.\n\n var dataModel = el.dataModel || seriesModel;\n var dataIndex = el.dataIndex;\n var dataType = el.dataType;\n var data = dataModel.getData(dataType);\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model, this._tooltipModel]);\n var tooltipTrigger = tooltipModel.get('trigger');\n\n if (tooltipTrigger != null && tooltipTrigger !== 'item') {\n return;\n }\n\n var params = dataModel.getDataParams(dataIndex, dataType);\n var seriesTooltip = dataModel.formatTooltip(dataIndex, false, dataType, this._renderMode);\n var defaultHtml;\n var markers;\n\n if (zrUtil.isObject(seriesTooltip)) {\n defaultHtml = seriesTooltip.html;\n markers = seriesTooltip.markers;\n } else {\n defaultHtml = seriesTooltip;\n markers = null;\n }\n\n var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\n\n this._showOrMove(tooltipModel, function () {\n this._showTooltipContent(tooltipModel, defaultHtml, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markers);\n }); // FIXME\n // duplicated showtip if manuallyShowTip is called from dispatchAction.\n\n\n dispatchAction({\n type: 'showTip',\n dataIndexInside: dataIndex,\n dataIndex: data.getRawIndex(dataIndex),\n seriesIndex: seriesIndex,\n from: this.uid\n });\n },\n _showComponentItemTooltip: function (e, el, dispatchAction) {\n var tooltipOpt = el.tooltip;\n\n if (typeof tooltipOpt === 'string') {\n var content = tooltipOpt;\n tooltipOpt = {\n content: content,\n // Fixed formatter\n formatter: content\n };\n }\n\n var subTooltipModel = new Model(tooltipOpt, this._tooltipModel, this._ecModel);\n var defaultHtml = subTooltipModel.get('content');\n var asyncTicket = Math.random(); // Do not check whether `trigger` is 'none' here, because `trigger`\n // only works on cooridinate system. In fact, we have not found case\n // that requires setting `trigger` nothing on component yet.\n\n this._showOrMove(subTooltipModel, function () {\n this._showTooltipContent(subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {}, asyncTicket, e.offsetX, e.offsetY, e.position, el);\n }); // If not dispatch showTip, tip may be hide triggered by axis.\n\n\n dispatchAction({\n type: 'showTip',\n from: this.uid\n });\n },\n _showTooltipContent: function (tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markers) {\n // Reset ticket\n this._ticket = '';\n\n if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\n return;\n }\n\n var tooltipContent = this._tooltipContent;\n var formatter = tooltipModel.get('formatter');\n positionExpr = positionExpr || tooltipModel.get('position');\n var html = defaultHtml;\n\n if (formatter && typeof formatter === 'string') {\n html = formatUtil.formatTpl(formatter, params, true);\n } else if (typeof formatter === 'function') {\n var callback = bind(function (cbTicket, html) {\n if (cbTicket === this._ticket) {\n tooltipContent.setContent(html, markers, tooltipModel);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n }\n }, this);\n this._ticket = asyncTicket;\n html = formatter(params, asyncTicket, callback);\n }\n\n tooltipContent.setContent(html, markers, tooltipModel);\n tooltipContent.show(tooltipModel);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n },\n\n /**\n * @param {string|Function|Array.|Object} positionExpr\n * @param {number} x Mouse x\n * @param {number} y Mouse y\n * @param {boolean} confine Whether confine tooltip content in view rect.\n * @param {Object|} params\n * @param {module:zrender/Element} el target element\n * @param {module:echarts/ExtensionAPI} api\n * @return {Array.}\n */\n _updatePosition: function (tooltipModel, positionExpr, x, y, content, params, el) {\n var viewWidth = this._api.getWidth();\n\n var viewHeight = this._api.getHeight();\n\n positionExpr = positionExpr || tooltipModel.get('position');\n var contentSize = content.getSize();\n var align = tooltipModel.get('align');\n var vAlign = tooltipModel.get('verticalAlign');\n var rect = el && el.getBoundingRect().clone();\n el && rect.applyTransform(el.transform);\n\n if (typeof positionExpr === 'function') {\n // Callback of position can be an array or a string specify the position\n positionExpr = positionExpr([x, y], params, content.el, rect, {\n viewSize: [viewWidth, viewHeight],\n contentSize: contentSize.slice()\n });\n }\n\n if (zrUtil.isArray(positionExpr)) {\n x = parsePercent(positionExpr[0], viewWidth);\n y = parsePercent(positionExpr[1], viewHeight);\n } else if (zrUtil.isObject(positionExpr)) {\n positionExpr.width = contentSize[0];\n positionExpr.height = contentSize[1];\n var layoutRect = layoutUtil.getLayoutRect(positionExpr, {\n width: viewWidth,\n height: viewHeight\n });\n x = layoutRect.x;\n y = layoutRect.y;\n align = null; // When positionExpr is left/top/right/bottom,\n // align and verticalAlign will not work.\n\n vAlign = null;\n } // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element\n else if (typeof positionExpr === 'string' && el) {\n var pos = calcTooltipPosition(positionExpr, rect, contentSize);\n x = pos[0];\n y = pos[1];\n } else {\n var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\n x = pos[0];\n y = pos[1];\n }\n\n align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\n vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\n\n if (tooltipModel.get('confine')) {\n var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);\n x = pos[0];\n y = pos[1];\n }\n\n content.moveTo(x, y);\n },\n // FIXME\n // Should we remove this but leave this to user?\n _updateContentNotChangedOnAxis: function (dataByCoordSys) {\n var lastCoordSys = this._lastDataByCoordSys;\n var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;\n contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\n var lastDataByAxis = lastItemCoordSys.dataByAxis || {};\n var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\n var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\n contentNotChanged &= lastDataByAxis.length === thisDataByAxis.length;\n contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) {\n var thisItem = thisDataByAxis[indexAxis] || {};\n var lastIndices = lastItem.seriesDataIndices || [];\n var newIndices = thisItem.seriesDataIndices || [];\n contentNotChanged &= lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;\n contentNotChanged && each(lastIndices, function (lastIdxItem, j) {\n var newIdxItem = newIndices[j];\n contentNotChanged &= lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;\n });\n });\n });\n this._lastDataByCoordSys = dataByCoordSys;\n return !!contentNotChanged;\n },\n _hide: function (dispatchAction) {\n // Do not directly hideLater here, because this behavior may be prevented\n // in dispatchAction when showTip is dispatched.\n // FIXME\n // duplicated hideTip if manuallyHideTip is called from dispatchAction.\n this._lastDataByCoordSys = null;\n dispatchAction({\n type: 'hideTip',\n from: this.uid\n });\n },\n dispose: function (ecModel, api) {\n if (env.node) {\n return;\n }\n\n this._tooltipContent.dispose();\n\n globalListener.unregister('itemTooltip', api);\n }\n});\n/**\n * @param {Array.} modelCascade\n * From top to bottom. (the last one should be globalTooltipModel);\n */\n\n\nfunction buildTooltipModel(modelCascade) {\n var resultModel = modelCascade.pop();\n\n while (modelCascade.length) {\n var tooltipOpt = modelCascade.pop();\n\n if (tooltipOpt) {\n if (Model.isInstance(tooltipOpt)) {\n tooltipOpt = tooltipOpt.get('tooltip', true);\n } // In each data item tooltip can be simply write:\n // {\n // value: 10,\n // tooltip: 'Something you need to know'\n // }\n\n\n if (typeof tooltipOpt === 'string') {\n tooltipOpt = {\n formatter: tooltipOpt\n };\n }\n\n resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel);\n }\n }\n\n return resultModel;\n}\n\nfunction makeDispatchAction(payload, api) {\n return payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n}\n\nfunction refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\n var size = content.getOuterSize();\n var width = size.width;\n var height = size.height;\n\n if (gapH != null) {\n if (x + width + gapH > viewWidth) {\n x -= width + gapH;\n } else {\n x += gapH;\n }\n }\n\n if (gapV != null) {\n if (y + height + gapV > viewHeight) {\n y -= height + gapV;\n } else {\n y += gapV;\n }\n }\n\n return [x, y];\n}\n\nfunction confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\n var size = content.getOuterSize();\n var width = size.width;\n var height = size.height;\n x = Math.min(x + width, viewWidth) - width;\n y = Math.min(y + height, viewHeight) - height;\n x = Math.max(x, 0);\n y = Math.max(y, 0);\n return [x, y];\n}\n\nfunction calcTooltipPosition(position, rect, contentSize) {\n var domWidth = contentSize[0];\n var domHeight = contentSize[1];\n var gap = 5;\n var x = 0;\n var y = 0;\n var rectWidth = rect.width;\n var rectHeight = rect.height;\n\n switch (position) {\n case 'inside':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'top':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y - domHeight - gap;\n break;\n\n case 'bottom':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight + gap;\n break;\n\n case 'left':\n x = rect.x - domWidth - gap;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'right':\n x = rect.x + rectWidth + gap;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n }\n\n return [x, y];\n}\n\nfunction isCenterAlign(align) {\n return align === 'center' || align === 'middle';\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction legendSelectActionHandler(methodName, payload, ecModel) {\n var selectedMap = {};\n var isToggleSelect = methodName === 'toggleSelected';\n var isSelected; // Update all legend components\n\n ecModel.eachComponent('legend', function (legendModel) {\n if (isToggleSelect && isSelected != null) {\n // Force other legend has same selected status\n // Or the first is toggled to true and other are toggled to false\n // In the case one legend has some item unSelected in option. And if other legend\n // doesn't has the item, they will assume it is selected.\n legendModel[isSelected ? 'select' : 'unSelect'](payload.name);\n } else if (methodName === 'allSelect' || methodName === 'inverseSelect') {\n legendModel[methodName]();\n } else {\n legendModel[methodName](payload.name);\n isSelected = legendModel.isSelected(payload.name);\n }\n\n var legendData = legendModel.getData();\n zrUtil.each(legendData, function (model) {\n var name = model.get('name'); // Wrap element\n\n if (name === '\\n' || name === '') {\n return;\n }\n\n var isItemSelected = legendModel.isSelected(name);\n\n if (selectedMap.hasOwnProperty(name)) {\n // Unselected if any legend is unselected\n selectedMap[name] = selectedMap[name] && isItemSelected;\n } else {\n selectedMap[name] = isItemSelected;\n }\n });\n }); // Return the event explicitly\n\n return methodName === 'allSelect' || methodName === 'inverseSelect' ? {\n selected: selectedMap\n } : {\n name: payload.name,\n selected: selectedMap\n };\n}\n/**\n * @event legendToggleSelect\n * @type {Object}\n * @property {string} type 'legendToggleSelect'\n * @property {string} [from]\n * @property {string} name Series name or data item name\n */\n\n\necharts.registerAction('legendToggleSelect', 'legendselectchanged', zrUtil.curry(legendSelectActionHandler, 'toggleSelected'));\necharts.registerAction('legendAllSelect', 'legendselectall', zrUtil.curry(legendSelectActionHandler, 'allSelect'));\necharts.registerAction('legendInverseSelect', 'legendinverseselect', zrUtil.curry(legendSelectActionHandler, 'inverseSelect'));\n/**\n * @event legendSelect\n * @type {Object}\n * @property {string} type 'legendSelect'\n * @property {string} name Series name or data item name\n */\n\necharts.registerAction('legendSelect', 'legendselected', zrUtil.curry(legendSelectActionHandler, 'select'));\n/**\n * @event legendUnSelect\n * @type {Object}\n * @property {string} type 'legendUnSelect'\n * @property {string} name Series name or data item name\n */\n\necharts.registerAction('legendUnSelect', 'legendunselected', zrUtil.curry(legendSelectActionHandler, 'unSelect'));","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisPointerModel = echarts.extendComponentModel({\n type: 'axisPointer',\n coordSysAxesInfo: null,\n defaultOption: {\n // 'auto' means that show when triggered by tooltip or handle.\n show: 'auto',\n // 'click' | 'mousemove' | 'none'\n triggerOn: null,\n // set default in AxisPonterView.js\n zlevel: 0,\n z: 50,\n type: 'line',\n // 'line' 'shadow' 'cross' 'none'.\n // axispointer triggered by tootip determine snap automatically,\n // see `modelHelper`.\n snap: false,\n triggerTooltip: true,\n value: null,\n status: null,\n // Init value depends on whether handle is used.\n // [group0, group1, ...]\n // Each group can be: {\n // mapper: function () {},\n // singleTooltip: 'multiple', // 'multiple' or 'single'\n // xAxisId: ...,\n // yAxisName: ...,\n // angleAxisIndex: ...\n // }\n // mapper: can be ignored.\n // input: {axisInfo, value}\n // output: {axisInfo, value}\n link: [],\n // Do not set 'auto' here, otherwise global animation: false\n // will not effect at this axispointer.\n animation: null,\n animationDurationUpdate: 200,\n lineStyle: {\n color: '#aaa',\n width: 1,\n type: 'solid'\n },\n shadowStyle: {\n color: 'rgba(150,150,150,0.3)'\n },\n label: {\n show: true,\n formatter: null,\n // string | Function\n precision: 'auto',\n // Or a number like 0, 1, 2 ...\n margin: 3,\n color: '#fff',\n padding: [5, 7, 5, 7],\n backgroundColor: 'auto',\n // default: axis line color\n borderColor: null,\n borderWidth: 0,\n shadowBlur: 3,\n shadowColor: '#aaa' // Considering applicability, common style should\n // better not have shadowOffset.\n // shadowOffsetX: 0,\n // shadowOffsetY: 2\n\n },\n handle: {\n show: false,\n\n /* eslint-disable */\n icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\n // jshint ignore:line\n\n /* eslint-enable */\n size: 45,\n // handle margin is from symbol center to axis, which is stable when circular move.\n margin: 50,\n // color: '#1b8bbd'\n // color: '#2f4554'\n color: '#333',\n shadowBlur: 3,\n shadowColor: '#aaa',\n shadowOffsetX: 0,\n shadowOffsetY: 2,\n // For mobile performance\n throttle: 40\n }\n }\n});\nvar _default = AxisPointerModel;\nmodule.exports = _default;","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_IMG } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { concat } from '../../utils/array';\nimport { identity } from '../../utils/identity';\nimport { isString } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Constants --\n// Blank image with fill template\n\nvar BLANK_TEMPLATE = '' + '' + ''; // --- Helper methods ---\n\nvar makeBlankImgSrc = function makeBlankImgSrc(width, height, color) {\n var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', toString(width)).replace('%{h}', toString(height)).replace('%{f}', color));\n return \"data:image/svg+xml;charset=UTF-8,\".concat(src);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n alt: makeProp(PROP_TYPE_STRING),\n blank: makeProp(PROP_TYPE_BOOLEAN, false),\n blankColor: makeProp(PROP_TYPE_STRING, 'transparent'),\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n center: makeProp(PROP_TYPE_BOOLEAN, false),\n fluid: makeProp(PROP_TYPE_BOOLEAN, false),\n // Gives fluid images class `w-100` to make them grow to fit container\n fluidGrow: makeProp(PROP_TYPE_BOOLEAN, false),\n height: makeProp(PROP_TYPE_NUMBER_STRING),\n left: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n // Possible values:\n // `false`: no rounding of corners\n // `true`: slightly rounded corners\n // 'top': top corners rounded\n // 'right': right corners rounded\n // 'bottom': bottom corners rounded\n // 'left': left corners rounded\n // 'circle': circle/oval\n // '0': force rounding off\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sizes: makeProp(PROP_TYPE_ARRAY_STRING),\n src: makeProp(PROP_TYPE_STRING),\n srcset: makeProp(PROP_TYPE_ARRAY_STRING),\n thumbnail: makeProp(PROP_TYPE_BOOLEAN, false),\n width: makeProp(PROP_TYPE_NUMBER_STRING)\n}, NAME_IMG); // --- Main component ---\n// @vue/component\n\nexport var BImg = /*#__PURE__*/Vue.extend({\n name: NAME_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data;\n var alt = props.alt,\n src = props.src,\n block = props.block,\n fluidGrow = props.fluidGrow,\n rounded = props.rounded;\n var width = toInteger(props.width) || null;\n var height = toInteger(props.height) || null;\n var align = null;\n var srcset = concat(props.srcset).filter(identity).join(',');\n var sizes = concat(props.sizes).filter(identity).join(',');\n\n if (props.blank) {\n if (!height && width) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n if (!width && !height) {\n width = 1;\n height = 1;\n } // Make a blank SVG image\n\n\n src = makeBlankImgSrc(width, height, props.blankColor || 'transparent'); // Disable srcset and sizes\n\n srcset = null;\n sizes = null;\n }\n\n if (props.left) {\n align = 'float-left';\n } else if (props.right) {\n align = 'float-right';\n } else if (props.center) {\n align = 'mx-auto';\n block = true;\n }\n\n return h('img', mergeData(data, {\n attrs: {\n src: src,\n alt: alt,\n width: width ? toString(width) : null,\n height: height ? toString(height) : null,\n srcset: srcset || null,\n sizes: sizes || null\n },\n class: (_class = {\n 'img-thumbnail': props.thumbnail,\n 'img-fluid': props.fluid || fluidGrow,\n 'w-100': fluidGrow,\n rounded: rounded === '' || rounded === true\n }, _defineProperty(_class, \"rounded-\".concat(rounded), isString(rounded) && rounded !== ''), _defineProperty(_class, align, align), _defineProperty(_class, 'd-block', block), _class)\n }));\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n title: makeProp(PROP_TYPE_STRING),\n titleTag: makeProp(PROP_TYPE_STRING, 'h4')\n}, NAME_CARD_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardTitle = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_TITLE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.titleTag, mergeData(data, {\n staticClass: 'card-title'\n }), children || toString(props.title));\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 BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar cartesianAxisHelper = require(\"../../coord/cartesian/cartesianAxisHelper\");\n\nvar AxisView = require(\"../axis/AxisView\");\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 CartesianAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisPointerType = axisPointerModel.get('type');\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);\n viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n },\n\n /**\n * @override\n */\n getHandleTransform: function (value, axisModel, axisPointerModel) {\n var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {\n labelInside: false\n });\n layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n return {\n position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n };\n },\n\n /**\n * @override\n */\n updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisExtent = axis.getGlobalExtent(true);\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var dimIndex = axis.dim === 'x' ? 0 : 1;\n var currPosition = transform.position;\n currPosition[dimIndex] += delta[dimIndex];\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\n cursorPoint[dimIndex] = currPosition[dimIndex]; // Make tooltip do not overlap axisPointer and in the middle of the grid.\n\n var tooltipOptions = [{\n verticalAlign: 'middle'\n }, {\n align: 'center'\n }];\n return {\n position: currPosition,\n rotation: transform.rotation,\n cursorPoint: cursorPoint,\n tooltipOption: tooltipOptions[dimIndex]\n };\n }\n});\n\nfunction getCartesian(grid, axis) {\n var opt = {};\n opt[axis.dim + 'AxisIndex'] = axis.index;\n return grid.getCartesian(opt);\n}\n\nvar pointerShapeBuilder = {\n line: function (axis, pixelValue, otherExtent) {\n var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\n return {\n type: 'Line',\n subPixelOptimize: true,\n shape: targetShape\n };\n },\n shadow: function (axis, pixelValue, otherExtent) {\n var bandWidth = Math.max(1, axis.getBandWidth());\n var span = otherExtent[1] - otherExtent[0];\n return {\n type: 'Rect',\n shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\n };\n }\n};\n\nfunction getAxisDimIndex(axis) {\n return axis.dim === 'x' ? 0 : 1;\n}\n\nAxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\nvar _default = CartesianAxisPointer;\nmodule.exports = _default;","/** 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\nrequire(\"../coord/radar/Radar\");\n\nrequire(\"../coord/radar/RadarModel\");\n\nrequire(\"./radar/RadarView\");","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartLine.vue?vue&type=style&index=0&id=59924244&prod&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\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _listComponent = require(\"../helper/listComponent\");\n\nvar makeBackground = _listComponent.makeBackground;\n\nvar layoutUtil = require(\"../../util/layout\");\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 curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar Group = graphic.Group;\n\nvar _default = echarts.extendComponentView({\n type: 'legend.plain',\n newlineDisabled: false,\n\n /**\n * @override\n */\n init: function () {\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n this.group.add(this._contentGroup = new Group());\n /**\n * @private\n * @type {module:zrender/Element}\n */\n\n this._backgroundEl;\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n this.group.add(this._selectorGroup = new Group());\n /**\n * If first rendering, `contentGroup.position` is [0, 0], which\n * does not make sense and may cause unexepcted animation if adopted.\n * @private\n * @type {boolean}\n */\n\n this._isFirstRender = true;\n },\n\n /**\n * @protected\n */\n getContentGroup: function () {\n return this._contentGroup;\n },\n\n /**\n * @protected\n */\n getSelectorGroup: function () {\n return this._selectorGroup;\n },\n\n /**\n * @override\n */\n render: function (legendModel, ecModel, api) {\n var isFirstRender = this._isFirstRender;\n this._isFirstRender = false;\n this.resetInner();\n\n if (!legendModel.get('show', true)) {\n return;\n }\n\n var itemAlign = legendModel.get('align');\n var orient = legendModel.get('orient');\n\n if (!itemAlign || itemAlign === 'auto') {\n itemAlign = legendModel.get('left') === 'right' && orient === 'vertical' ? 'right' : 'left';\n }\n\n var selector = legendModel.get('selector', true);\n var selectorPosition = legendModel.get('selectorPosition', true);\n\n if (selector && (!selectorPosition || selectorPosition === 'auto')) {\n selectorPosition = orient === 'horizontal' ? 'end' : 'start';\n }\n\n this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition); // Perform layout.\n\n var positionInfo = legendModel.getBoxLayoutParams();\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var padding = legendModel.get('padding');\n var maxSize = layoutUtil.getLayoutRect(positionInfo, viewportSize, padding);\n var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition); // Place mainGroup, based on the calculated `mainRect`.\n\n var layoutRect = layoutUtil.getLayoutRect(zrUtil.defaults({\n width: mainRect.width,\n height: mainRect.height\n }, positionInfo), viewportSize, padding);\n this.group.attr('position', [layoutRect.x - mainRect.x, layoutRect.y - mainRect.y]); // Render background after group is layout.\n\n this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));\n },\n\n /**\n * @protected\n */\n resetInner: function () {\n this.getContentGroup().removeAll();\n this._backgroundEl && this.group.remove(this._backgroundEl);\n this.getSelectorGroup().removeAll();\n },\n\n /**\n * @protected\n */\n renderInner: function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var legendDrawnMap = zrUtil.createHashMap();\n var selectMode = legendModel.get('selectedMode');\n var excludeSeriesId = [];\n ecModel.eachRawSeries(function (seriesModel) {\n !seriesModel.get('legendHoverLink') && excludeSeriesId.push(seriesModel.id);\n });\n each(legendModel.getData(), function (itemModel, dataIndex) {\n var name = itemModel.get('name'); // Use empty string or \\n as a newline string\n\n if (!this.newlineDisabled && (name === '' || name === '\\n')) {\n contentGroup.add(new Group({\n newline: true\n }));\n return;\n } // Representitive series.\n\n\n var seriesModel = ecModel.getSeriesByName(name)[0];\n\n if (legendDrawnMap.get(name)) {\n // Have been drawed\n return;\n } // Legend to control series.\n\n\n if (seriesModel) {\n var data = seriesModel.getData();\n var color = data.getVisual('color');\n var borderColor = data.getVisual('borderColor'); // If color is a callback function\n\n if (typeof color === 'function') {\n // Use the first data\n color = color(seriesModel.getDataParams(0));\n } // If borderColor is a callback function\n\n\n if (typeof borderColor === 'function') {\n // Use the first data\n borderColor = borderColor(seriesModel.getDataParams(0));\n } // Using rect symbol defaultly\n\n\n var legendSymbolType = data.getVisual('legendSymbol') || 'roundRect';\n var symbolType = data.getVisual('symbol');\n\n var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, selectMode);\n\n itemGroup.on('click', curry(dispatchSelectAction, name, null, api, excludeSeriesId)).on('mouseover', curry(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n } else {\n // Legend to control data. In pie and funnel.\n ecModel.eachRawSeries(function (seriesModel) {\n // In case multiple series has same data name\n if (legendDrawnMap.get(name)) {\n return;\n }\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n\n if (!provider.containName(name)) {\n return;\n }\n\n var idx = provider.indexOfName(name);\n var color = provider.getItemVisual(idx, 'color');\n var borderColor = provider.getItemVisual(idx, 'borderColor');\n var legendSymbolType = 'roundRect';\n\n var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, null, itemAlign, color, borderColor, selectMode); // FIXME: consider different series has items with the same name.\n\n\n itemGroup.on('click', curry(dispatchSelectAction, null, name, api, excludeSeriesId)) // Should not specify the series name, consider legend controls\n // more than one pie series.\n .on('mouseover', curry(dispatchHighlightAction, null, name, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, null, name, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n }\n }, this);\n }\n }, this);\n\n if (selector) {\n this._createSelector(selector, legendModel, api, orient, selectorPosition);\n }\n },\n _createSelector: function (selector, legendModel, api, orient, selectorPosition) {\n var selectorGroup = this.getSelectorGroup();\n each(selector, function (selectorItem) {\n createSelectorButton(selectorItem);\n });\n\n function createSelectorButton(selectorItem) {\n var type = selectorItem.type;\n var labelText = new graphic.Text({\n style: {\n x: 0,\n y: 0,\n align: 'center',\n verticalAlign: 'middle'\n },\n onclick: function () {\n api.dispatchAction({\n type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect'\n });\n }\n });\n selectorGroup.add(labelText);\n var labelModel = legendModel.getModel('selectorLabel');\n var emphasisLabelModel = legendModel.getModel('emphasis.selectorLabel');\n graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, emphasisLabelModel, {\n defaultText: selectorItem.title,\n isRectText: false\n });\n graphic.setHoverStyle(labelText);\n }\n },\n _createItem: function (name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, selectMode) {\n var itemWidth = legendModel.get('itemWidth');\n var itemHeight = legendModel.get('itemHeight');\n var inactiveColor = legendModel.get('inactiveColor');\n var inactiveBorderColor = legendModel.get('inactiveBorderColor');\n var symbolKeepAspect = legendModel.get('symbolKeepAspect');\n var legendModelItemStyle = legendModel.getModel('itemStyle');\n var isSelected = legendModel.isSelected(name);\n var itemGroup = new Group();\n var textStyleModel = itemModel.getModel('textStyle');\n var itemIcon = itemModel.get('icon');\n var tooltipModel = itemModel.getModel('tooltip');\n var legendGlobalTooltipModel = tooltipModel.parentModel; // Use user given icon first\n\n legendSymbolType = itemIcon || legendSymbolType;\n var legendSymbol = createSymbol(legendSymbolType, 0, 0, itemWidth, itemHeight, isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend\n symbolKeepAspect == null ? true : symbolKeepAspect);\n itemGroup.add(setSymbolStyle(legendSymbol, legendSymbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected)); // Compose symbols\n // PENDING\n\n if (!itemIcon && symbolType // At least show one symbol, can't be all none\n && (symbolType !== legendSymbolType || symbolType === 'none')) {\n var size = itemHeight * 0.8;\n\n if (symbolType === 'none') {\n symbolType = 'circle';\n }\n\n var legendSymbolCenter = createSymbol(symbolType, (itemWidth - size) / 2, (itemHeight - size) / 2, size, size, isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend\n symbolKeepAspect == null ? true : symbolKeepAspect); // Put symbol in the center\n\n itemGroup.add(setSymbolStyle(legendSymbolCenter, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected));\n }\n\n var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\n var textAlign = itemAlign;\n var formatter = legendModel.get('formatter');\n var content = name;\n\n if (typeof formatter === 'string' && formatter) {\n content = formatter.replace('{name}', name != null ? name : '');\n } else if (typeof formatter === 'function') {\n content = formatter(name);\n }\n\n itemGroup.add(new graphic.Text({\n style: graphic.setTextStyle({}, textStyleModel, {\n text: content,\n x: textX,\n y: itemHeight / 2,\n textFill: isSelected ? textStyleModel.getTextColor() : inactiveColor,\n textAlign: textAlign,\n textVerticalAlign: 'middle'\n })\n })); // Add a invisible rect to increase the area of mouse hover\n\n var hitRect = new graphic.Rect({\n shape: itemGroup.getBoundingRect(),\n invisible: true,\n tooltip: tooltipModel.get('show') ? zrUtil.extend({\n content: name,\n // Defaul formatter\n formatter: legendGlobalTooltipModel.get('formatter', true) || function () {\n return name;\n },\n formatterParams: {\n componentType: 'legend',\n legendIndex: legendModel.componentIndex,\n name: name,\n $vars: ['name']\n }\n }, tooltipModel.option) : null\n });\n itemGroup.add(hitRect);\n itemGroup.eachChild(function (child) {\n child.silent = true;\n });\n hitRect.silent = !selectMode;\n this.getContentGroup().add(itemGroup);\n graphic.setHoverStyle(itemGroup);\n itemGroup.__legendDataIndex = dataIndex;\n return itemGroup;\n },\n\n /**\n * @protected\n */\n layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var selectorGroup = this.getSelectorGroup(); // Place items in contentGroup.\n\n layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\n var contentRect = contentGroup.getBoundingRect();\n var contentPos = [-contentRect.x, -contentRect.y];\n\n if (selector) {\n // Place buttons in selectorGroup\n layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n var selectorRect = selectorGroup.getBoundingRect();\n var selectorPos = [-selectorRect.x, -selectorRect.y];\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n var orientIdx = legendModel.getOrient().index;\n var wh = orientIdx === 0 ? 'width' : 'height';\n var hw = orientIdx === 0 ? 'height' : 'width';\n var yx = orientIdx === 0 ? 'y' : 'x';\n\n if (selectorPosition === 'end') {\n selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;\n } else {\n contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;\n } //Always align selector to content as 'middle'\n\n\n selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;\n selectorGroup.attr('position', selectorPos);\n contentGroup.attr('position', contentPos);\n var mainRect = {\n x: 0,\n y: 0\n };\n mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];\n mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);\n mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);\n return mainRect;\n } else {\n contentGroup.attr('position', contentPos);\n return this.group.getBoundingRect();\n }\n },\n\n /**\n * @protected\n */\n remove: function () {\n this.getContentGroup().removeAll();\n this._isFirstRender = true;\n }\n});\n\nfunction setSymbolStyle(symbol, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected) {\n var itemStyle;\n\n if (symbolType !== 'line' && symbolType.indexOf('empty') < 0) {\n itemStyle = legendModelItemStyle.getItemStyle();\n symbol.style.stroke = borderColor;\n\n if (!isSelected) {\n itemStyle.stroke = inactiveBorderColor;\n }\n } else {\n itemStyle = legendModelItemStyle.getItemStyle(['borderWidth', 'borderColor']);\n }\n\n return symbol.setStyle(itemStyle);\n}\n\nfunction dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {\n // downplay before unselect\n dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);\n api.dispatchAction({\n type: 'legendToggleSelect',\n name: seriesName != null ? seriesName : dataName\n }); // highlight after select\n\n dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);\n}\n\nfunction dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n var el = api.getZr().storage.getDisplayList()[0];\n\n if (!(el && el.useHoverLayer)) {\n api.dispatchAction({\n type: 'highlight',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nfunction dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n var el = api.getZr().storage.getDisplayList()[0];\n\n if (!(el && el.useHoverLayer)) {\n api.dispatchAction({\n type: 'downplay',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nmodule.exports = _default;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_BODY } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardTitle, props as titleProps } from './card-title';\nimport { BCardSubTitle, props as subTitleProps } from './card-sub-title'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, titleProps), subTitleProps), copyProps(cardProps, prefixPropName.bind(null, 'body'))), {}, {\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n overlay: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_BODY); // --- Main component ---\n// @vue/component\n\nexport var BCardBody = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_BODY,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var bodyBgVariant = props.bodyBgVariant,\n bodyBorderVariant = props.bodyBorderVariant,\n bodyTextVariant = props.bodyTextVariant;\n var $title = h();\n\n if (props.title) {\n $title = h(BCardTitle, {\n props: pluckProps(titleProps, props)\n });\n }\n\n var $subTitle = h();\n\n if (props.subTitle) {\n $subTitle = h(BCardSubTitle, {\n props: pluckProps(subTitleProps, props),\n class: ['mb-2']\n });\n }\n\n return h(props.bodyTag, mergeData(data, {\n staticClass: 'card-body',\n class: [(_ref2 = {\n 'card-img-overlay': props.overlay\n }, _defineProperty(_ref2, \"bg-\".concat(bodyBgVariant), bodyBgVariant), _defineProperty(_ref2, \"border-\".concat(bodyBorderVariant), bodyBorderVariant), _defineProperty(_ref2, \"text-\".concat(bodyTextVariant), bodyTextVariant), _ref2), props.bodyClass]\n }), [$title, $subTitle, children]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_FOOTER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'footer'))), {}, {\n footer: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n footerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_FOOTER); // --- Main component ---\n// @vue/component\n\nexport var BCardFooter = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_FOOTER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var footerBgVariant = props.footerBgVariant,\n footerBorderVariant = props.footerBorderVariant,\n footerTextVariant = props.footerTextVariant;\n return h(props.footerTag, mergeData(data, {\n staticClass: 'card-footer',\n class: [props.footerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(footerBgVariant), footerBgVariant), _defineProperty(_ref2, \"border-\".concat(footerBorderVariant), footerBorderVariant), _defineProperty(_ref2, \"text-\".concat(footerTextVariant), footerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.footerHtml, props.footer)\n }), children);\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar AxisBuilder = require(\"../axis/AxisBuilder\");\n\nvar graphic = require(\"../../util/graphic\");\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 axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\n\nvar _default = echarts.extendComponentView({\n type: 'radar',\n render: function (radarModel, ecModel, api) {\n var group = this.group;\n group.removeAll();\n\n this._buildAxes(radarModel);\n\n this._buildSplitLineAndArea(radarModel);\n },\n _buildAxes: function (radarModel) {\n var radar = radarModel.coordinateSystem;\n var indicatorAxes = radar.getIndicatorAxes();\n var axisBuilders = zrUtil.map(indicatorAxes, function (indicatorAxis) {\n var axisBuilder = new AxisBuilder(indicatorAxis.model, {\n position: [radar.cx, radar.cy],\n rotation: indicatorAxis.angle,\n labelDirection: -1,\n tickDirection: -1,\n nameDirection: 1\n });\n return axisBuilder;\n });\n zrUtil.each(axisBuilders, function (axisBuilder) {\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n this.group.add(axisBuilder.getGroup());\n }, this);\n },\n _buildSplitLineAndArea: function (radarModel) {\n var radar = radarModel.coordinateSystem;\n var indicatorAxes = radar.getIndicatorAxes();\n\n if (!indicatorAxes.length) {\n return;\n }\n\n var shape = radarModel.get('shape');\n var splitLineModel = radarModel.getModel('splitLine');\n var splitAreaModel = radarModel.getModel('splitArea');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var showSplitLine = splitLineModel.get('show');\n var showSplitArea = splitAreaModel.get('show');\n var splitLineColors = lineStyleModel.get('color');\n var splitAreaColors = areaStyleModel.get('color');\n splitLineColors = zrUtil.isArray(splitLineColors) ? splitLineColors : [splitLineColors];\n splitAreaColors = zrUtil.isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors];\n var splitLines = [];\n var splitAreas = [];\n\n function getColorIndex(areaOrLine, areaOrLineColorList, idx) {\n var colorIndex = idx % areaOrLineColorList.length;\n areaOrLine[colorIndex] = areaOrLine[colorIndex] || [];\n return colorIndex;\n }\n\n if (shape === 'circle') {\n var ticksRadius = indicatorAxes[0].getTicksCoords();\n var cx = radar.cx;\n var cy = radar.cy;\n\n for (var i = 0; i < ticksRadius.length; i++) {\n if (showSplitLine) {\n var colorIndex = getColorIndex(splitLines, splitLineColors, i);\n splitLines[colorIndex].push(new graphic.Circle({\n shape: {\n cx: cx,\n cy: cy,\n r: ticksRadius[i].coord\n }\n }));\n }\n\n if (showSplitArea && i < ticksRadius.length - 1) {\n var colorIndex = getColorIndex(splitAreas, splitAreaColors, i);\n splitAreas[colorIndex].push(new graphic.Ring({\n shape: {\n cx: cx,\n cy: cy,\n r0: ticksRadius[i].coord,\n r: ticksRadius[i + 1].coord\n }\n }));\n }\n }\n } // Polyyon\n else {\n var realSplitNumber;\n var axesTicksPoints = zrUtil.map(indicatorAxes, function (indicatorAxis, idx) {\n var ticksCoords = indicatorAxis.getTicksCoords();\n realSplitNumber = realSplitNumber == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber);\n return zrUtil.map(ticksCoords, function (tickCoord) {\n return radar.coordToPoint(tickCoord.coord, idx);\n });\n });\n var prevPoints = [];\n\n for (var i = 0; i <= realSplitNumber; i++) {\n var points = [];\n\n for (var j = 0; j < indicatorAxes.length; j++) {\n points.push(axesTicksPoints[j][i]);\n } // Close\n\n\n if (points[0]) {\n points.push(points[0].slice());\n } else {}\n\n if (showSplitLine) {\n var colorIndex = getColorIndex(splitLines, splitLineColors, i);\n splitLines[colorIndex].push(new graphic.Polyline({\n shape: {\n points: points\n }\n }));\n }\n\n if (showSplitArea && prevPoints) {\n var colorIndex = getColorIndex(splitAreas, splitAreaColors, i - 1);\n splitAreas[colorIndex].push(new graphic.Polygon({\n shape: {\n points: points.concat(prevPoints)\n }\n }));\n }\n\n prevPoints = points.slice().reverse();\n }\n }\n\n var lineStyle = lineStyleModel.getLineStyle();\n var areaStyle = areaStyleModel.getAreaStyle(); // Add splitArea before splitLine\n\n zrUtil.each(splitAreas, function (splitAreas, idx) {\n this.group.add(graphic.mergePath(splitAreas, {\n style: zrUtil.defaults({\n stroke: 'none',\n fill: splitAreaColors[idx % splitAreaColors.length]\n }, areaStyle),\n silent: true\n }));\n }, this);\n zrUtil.each(splitLines, function (splitLines, idx) {\n this.group.add(graphic.mergePath(splitLines, {\n style: zrUtil.defaults({\n fill: 'none',\n stroke: splitLineColors[idx % splitLineColors.length]\n }, lineStyle),\n silent: true\n }));\n }, this);\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\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 * Data selectable mixin for chart series.\n * To eanble data select, option of series must have `selectedMode`.\n * And each data item will use `selected` to toggle itself selected status\n */\nvar _default = {\n /**\n * @param {Array.} targetList [{name, value, selected}, ...]\n * If targetList is an array, it should like [{name: ..., value: ...}, ...].\n * If targetList is a \"List\", it must have coordDim: 'value' dimension and name.\n */\n updateSelectedMap: function (targetList) {\n this._targetList = zrUtil.isArray(targetList) ? targetList.slice() : [];\n this._selectTargetMap = zrUtil.reduce(targetList || [], function (targetMap, target) {\n targetMap.set(target.name, target);\n return targetMap;\n }, zrUtil.createHashMap());\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n // PENGING If selectedMode is null ?\n select: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n var selectedMode = this.get('selectedMode');\n\n if (selectedMode === 'single') {\n this._selectTargetMap.each(function (target) {\n target.selected = false;\n });\n }\n\n target && (target.selected = true);\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n unSelect: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name); // var selectedMode = this.get('selectedMode');\n // selectedMode !== 'single' && target && (target.selected = false);\n\n target && (target.selected = false);\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n toggleSelected: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n\n if (target != null) {\n this[target.selected ? 'unSelect' : 'select'](name, id);\n return target.selected;\n }\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n isSelected: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n return target && target.selected;\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(seriesType, actionInfos) {\n zrUtil.each(actionInfos, function (actionInfo) {\n actionInfo.update = 'updateView';\n /**\n * @payload\n * @property {string} seriesName\n * @property {string} name\n */\n\n echarts.registerAction(actionInfo, function (payload, ecModel) {\n var selected = {};\n ecModel.eachComponent({\n mainType: 'series',\n subType: seriesType,\n query: payload\n }, function (seriesModel) {\n if (seriesModel[actionInfo.method]) {\n seriesModel[actionInfo.method](payload.name, payload.dataIndex);\n }\n\n var data = seriesModel.getData(); // Create selected map\n\n data.each(function (idx) {\n var name = data.getName(idx);\n selected[name] = seriesModel.isSelected(name) || false;\n });\n });\n return {\n name: payload.name,\n selected: selected,\n seriesId: payload.seriesId\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../Axis\");\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 IndicatorAxis(dim, scale, radiusExtent) {\n Axis.call(this, dim, scale, radiusExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = 'value';\n this.angle = 0;\n /**\n * Indicator name\n * @type {string}\n */\n\n this.name = '';\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.model;\n}\n\nzrUtil.inherits(IndicatorAxis, Axis);\nvar _default = IndicatorAxis;\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\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// Backward compat for radar chart in 2\nfunction _default(option) {\n var polarOptArr = option.polar;\n\n if (polarOptArr) {\n if (!zrUtil.isArray(polarOptArr)) {\n polarOptArr = [polarOptArr];\n }\n\n var polarNotRadar = [];\n zrUtil.each(polarOptArr, function (polarOpt, idx) {\n if (polarOpt.indicator) {\n if (polarOpt.type && !polarOpt.shape) {\n polarOpt.shape = polarOpt.type;\n }\n\n option.radar = option.radar || [];\n\n if (!zrUtil.isArray(option.radar)) {\n option.radar = [option.radar];\n }\n\n option.radar.push(polarOpt);\n } else {\n polarNotRadar.push(polarOpt);\n }\n });\n option.polar = polarNotRadar;\n }\n\n zrUtil.each(option.series, function (seriesOpt) {\n if (seriesOpt && seriesOpt.type === 'radar' && seriesOpt.polarIndex) {\n seriesOpt.radarIndex = seriesOpt.polarIndex;\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 _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nvar layoutBox = _layout.box;\nvar positionElement = _layout.positionElement;\n\nvar formatUtil = require(\"../../util/format\");\n\nvar graphic = require(\"../../util/graphic\");\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 * Layout list like component.\n * It will box layout each items in group of component and then position the whole group in the viewport\n * @param {module:zrender/group/Group} group\n * @param {module:echarts/model/Component} componentModel\n * @param {module:echarts/ExtensionAPI}\n */\nfunction layout(group, componentModel, api) {\n var boxLayoutParams = componentModel.getBoxLayoutParams();\n var padding = componentModel.get('padding');\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\n layoutBox(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\n positionElement(group, boxLayoutParams, viewportSize, padding);\n}\n\nfunction makeBackground(rect, componentModel) {\n var padding = formatUtil.normalizeCssArray(componentModel.get('padding'));\n var style = componentModel.getItemStyle(['color', 'opacity']);\n style.fill = componentModel.get('backgroundColor');\n var rect = new graphic.Rect({\n shape: {\n x: rect.x - padding[3],\n y: rect.y - padding[0],\n width: rect.width + padding[1] + padding[3],\n height: rect.height + padding[0] + padding[2],\n r: componentModel.get('borderRadius')\n },\n style: style,\n silent: true,\n z2: -1\n }); // FIXME\n // `subPixelOptimizeRect` may bring some gap between edge of viewpart\n // and background rect when setting like `left: 0`, `top: 0`.\n // graphic.subPixelOptimizeRect(rect);\n\n return rect;\n}\n\nexports.layout = layout;\nexports.makeBackground = makeBackground;","export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--7-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib/index.js??vue-loader-options!./ECharts.vue?vue&type=style&index=0&id=36c2f65c&prod&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\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar Text = require(\"zrender/lib/graphic/Text\");\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// import Group from 'zrender/src/container/Group';\n\n/**\n * @alias module:echarts/component/tooltip/TooltipRichContent\n * @constructor\n */\nfunction TooltipRichContent(api) {\n this._zr = api.getZr();\n this._show = false;\n /**\n * @private\n */\n\n this._hideTimeout;\n}\n\nTooltipRichContent.prototype = {\n constructor: TooltipRichContent,\n\n /**\n * @private\n * @type {boolean}\n */\n _enterable: true,\n\n /**\n * Update when tooltip is rendered\n */\n update: function () {// noop\n },\n show: function (tooltipModel) {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n this.el.attr('show', true);\n this._show = true;\n },\n\n /**\n * Set tooltip content\n *\n * @param {string} content rich text string of content\n * @param {Object} markerRich rich text style\n * @param {Object} tooltipModel tooltip model\n */\n setContent: function (content, markerRich, tooltipModel) {\n if (this.el) {\n this._zr.remove(this.el);\n }\n\n var markers = {};\n var text = content;\n var prefix = '{marker';\n var suffix = '|}';\n var startId = text.indexOf(prefix);\n\n while (startId >= 0) {\n var endId = text.indexOf(suffix);\n var name = text.substr(startId + prefix.length, endId - startId - prefix.length);\n\n if (name.indexOf('sub') > -1) {\n markers['marker' + name] = {\n textWidth: 4,\n textHeight: 4,\n textBorderRadius: 2,\n textBackgroundColor: markerRich[name],\n // TODO: textOffset is not implemented for rich text\n textOffset: [3, 0]\n };\n } else {\n markers['marker' + name] = {\n textWidth: 10,\n textHeight: 10,\n textBorderRadius: 5,\n textBackgroundColor: markerRich[name]\n };\n }\n\n text = text.substr(endId + 1);\n startId = text.indexOf('{marker');\n }\n\n this.el = new Text({\n style: {\n rich: markers,\n text: content,\n textLineHeight: 20,\n textBackgroundColor: tooltipModel.get('backgroundColor'),\n textBorderRadius: tooltipModel.get('borderRadius'),\n textFill: tooltipModel.get('textStyle.color'),\n textPadding: tooltipModel.get('padding')\n },\n z: tooltipModel.get('z')\n });\n\n this._zr.add(this.el);\n\n var self = this;\n this.el.on('mouseover', function () {\n // clear the timeout in hideLater and keep showing tooltip\n if (self._enterable) {\n clearTimeout(self._hideTimeout);\n self._show = true;\n }\n\n self._inContent = true;\n });\n this.el.on('mouseout', function () {\n if (self._enterable) {\n if (self._show) {\n self.hideLater(self._hideDelay);\n }\n }\n\n self._inContent = false;\n });\n },\n setEnterable: function (enterable) {\n this._enterable = enterable;\n },\n getSize: function () {\n var bounding = this.el.getBoundingRect();\n return [bounding.width, bounding.height];\n },\n moveTo: function (x, y) {\n if (this.el) {\n this.el.attr('position', [x, y]);\n }\n },\n hide: function () {\n if (this.el) {\n this.el.hide();\n }\n\n this._show = false;\n },\n hideLater: function (time) {\n if (this._show && !(this._inContent && this._enterable)) {\n if (time) {\n this._hideDelay = time; // Set show false to avoid invoke hideLater mutiple times\n\n this._show = false;\n this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n } else {\n this.hide();\n }\n }\n },\n isShow: function () {\n return this._show;\n },\n getOuterSize: function () {\n var size = this.getSize();\n return {\n width: size[0],\n height: size[1]\n };\n }\n};\nvar _default = TooltipRichContent;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _model = require(\"../../util/model\");\n\nvar isNameSpecified = _model.isNameSpecified;\n\nvar lang = require(\"../../lang\");\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 langSelector = lang.legend.selector;\nvar defaultSelectorOption = {\n all: {\n type: 'all',\n title: zrUtil.clone(langSelector.all)\n },\n inverse: {\n type: 'inverse',\n title: zrUtil.clone(langSelector.inverse)\n }\n};\nvar LegendModel = echarts.extendComponentModel({\n type: 'legend.plain',\n dependencies: ['series'],\n layoutMode: {\n type: 'box',\n // legend.width/height are maxWidth/maxHeight actually,\n // whereas realy width/height is calculated by its content.\n // (Setting {left: 10, right: 10} does not make sense).\n // So consider the case:\n // `setOption({legend: {left: 10});`\n // then `setOption({legend: {right: 10});`\n // The previous `left` should be cleared by setting `ignoreSize`.\n ignoreSize: true\n },\n init: function (option, parentModel, ecModel) {\n this.mergeDefaultAndTheme(option, ecModel);\n option.selected = option.selected || {};\n\n this._updateSelector(option);\n },\n mergeOption: function (option) {\n LegendModel.superCall(this, 'mergeOption', option);\n\n this._updateSelector(option);\n },\n _updateSelector: function (option) {\n var selector = option.selector;\n\n if (selector === true) {\n selector = option.selector = ['all', 'inverse'];\n }\n\n if (zrUtil.isArray(selector)) {\n zrUtil.each(selector, function (item, index) {\n zrUtil.isString(item) && (item = {\n type: item\n });\n selector[index] = zrUtil.merge(item, defaultSelectorOption[item.type]);\n });\n }\n },\n optionUpdated: function () {\n this._updateData(this.ecModel);\n\n var legendData = this._data; // If selectedMode is single, try to select one\n\n if (legendData[0] && this.get('selectedMode') === 'single') {\n var hasSelected = false; // If has any selected in option.selected\n\n for (var i = 0; i < legendData.length; i++) {\n var name = legendData[i].get('name');\n\n if (this.isSelected(name)) {\n // Force to unselect others\n this.select(name);\n hasSelected = true;\n break;\n }\n } // Try select the first if selectedMode is single\n\n\n !hasSelected && this.select(legendData[0].get('name'));\n }\n },\n _updateData: function (ecModel) {\n var potentialData = [];\n var availableNames = [];\n ecModel.eachRawSeries(function (seriesModel) {\n var seriesName = seriesModel.name;\n availableNames.push(seriesName);\n var isPotential;\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n var names = provider.getAllNames();\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n availableNames = availableNames.concat(names);\n }\n\n if (names.length) {\n potentialData = potentialData.concat(names);\n } else {\n isPotential = true;\n }\n } else {\n isPotential = true;\n }\n\n if (isPotential && isNameSpecified(seriesModel)) {\n potentialData.push(seriesModel.name);\n }\n });\n /**\n * @type {Array.}\n * @private\n */\n\n this._availableNames = availableNames; // If legend.data not specified in option, use availableNames as data,\n // which is convinient for user preparing option.\n\n var rawData = this.get('data') || potentialData;\n var legendData = zrUtil.map(rawData, function (dataItem) {\n // Can be string or number\n if (typeof dataItem === 'string' || typeof dataItem === 'number') {\n dataItem = {\n name: dataItem\n };\n }\n\n return new Model(dataItem, this, this.ecModel);\n }, this);\n /**\n * @type {Array.}\n * @private\n */\n\n this._data = legendData;\n },\n\n /**\n * @return {Array.}\n */\n getData: function () {\n return this._data;\n },\n\n /**\n * @param {string} name\n */\n select: function (name) {\n var selected = this.option.selected;\n var selectedMode = this.get('selectedMode');\n\n if (selectedMode === 'single') {\n var data = this._data;\n zrUtil.each(data, function (dataItem) {\n selected[dataItem.get('name')] = false;\n });\n }\n\n selected[name] = true;\n },\n\n /**\n * @param {string} name\n */\n unSelect: function (name) {\n if (this.get('selectedMode') !== 'single') {\n this.option.selected[name] = false;\n }\n },\n\n /**\n * @param {string} name\n */\n toggleSelected: function (name) {\n var selected = this.option.selected; // Default is true\n\n if (!selected.hasOwnProperty(name)) {\n selected[name] = true;\n }\n\n this[selected[name] ? 'unSelect' : 'select'](name);\n },\n allSelect: function () {\n var data = this._data;\n var selected = this.option.selected;\n zrUtil.each(data, function (dataItem) {\n selected[dataItem.get('name', true)] = true;\n });\n },\n inverseSelect: function () {\n var data = this._data;\n var selected = this.option.selected;\n zrUtil.each(data, function (dataItem) {\n var name = dataItem.get('name', true); // Initially, default value is true\n\n if (!selected.hasOwnProperty(name)) {\n selected[name] = true;\n }\n\n selected[name] = !selected[name];\n });\n },\n\n /**\n * @param {string} name\n */\n isSelected: function (name) {\n var selected = this.option.selected;\n return !(selected.hasOwnProperty(name) && !selected[name]) && zrUtil.indexOf(this._availableNames, name) >= 0;\n },\n getOrient: function () {\n return this.get('orient') === 'vertical' ? {\n index: 1,\n name: 'vertical'\n } : {\n index: 0,\n name: 'horizontal'\n };\n },\n defaultOption: {\n // 一级层叠\n zlevel: 0,\n // 二级层叠\n z: 4,\n show: true,\n // 布局方式,默认为水平布局,可选为:\n // 'horizontal' | 'vertical'\n orient: 'horizontal',\n left: 'center',\n // right: 'center',\n top: 0,\n // bottom: null,\n // 水平对齐\n // 'auto' | 'left' | 'right'\n // 默认为 'auto', 根据 x 的位置判断是左对齐还是右对齐\n align: 'auto',\n backgroundColor: 'rgba(0,0,0,0)',\n // 图例边框颜色\n borderColor: '#ccc',\n borderRadius: 0,\n // 图例边框线宽,单位px,默认为0(无边框)\n borderWidth: 0,\n // 图例内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n padding: 5,\n // 各个item之间的间隔,单位px,默认为10,\n // 横向布局时为水平间隔,纵向布局时为纵向间隔\n itemGap: 10,\n // the width of legend symbol\n itemWidth: 25,\n // the height of legend symbol\n itemHeight: 14,\n // the color of unselected legend symbol\n inactiveColor: '#ccc',\n // the borderColor of unselected legend symbol\n inactiveBorderColor: '#ccc',\n itemStyle: {\n // the default borderWidth of legend symbol\n borderWidth: 0\n },\n textStyle: {\n // 图例文字颜色\n color: '#333'\n },\n // formatter: '',\n // 选择模式,默认开启图例开关\n selectedMode: true,\n // 配置默认选中状态,可配合LEGEND.SELECTED事件做动态数据载入\n // selected: null,\n // 图例内容(详见legend.data,数组中每一项代表一个item\n // data: [],\n // Usage:\n // selector: [{type: 'all or inverse', title: xxx}]\n // or\n // selector: true\n // or\n // selector: ['all', 'inverse']\n selector: false,\n selectorLabel: {\n show: true,\n borderRadius: 10,\n padding: [3, 5, 3, 5],\n fontSize: 12,\n fontFamily: ' sans-serif',\n color: '#666',\n borderWidth: 1,\n borderColor: '#666'\n },\n emphasis: {\n selectorLabel: {\n show: true,\n color: '#eee',\n backgroundColor: '#666'\n }\n },\n // Value can be 'start' or 'end'\n selectorPosition: 'auto',\n selectorItemGap: 7,\n selectorButtonGap: 10,\n // Tooltip 相关配置\n tooltip: {\n show: false\n }\n }\n});\nvar _default = LegendModel;\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\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(ecModel) {\n ecModel.eachSeriesByType('radar', function (seriesModel) {\n var data = seriesModel.getData();\n var points = [];\n var coordSys = seriesModel.coordinateSystem;\n\n if (!coordSys) {\n return;\n }\n\n var axes = coordSys.getIndicatorAxes();\n zrUtil.each(axes, function (axis, axisIndex) {\n data.each(data.mapDimension(axes[axisIndex].dim), function (val, dataIndex) {\n points[dataIndex] = points[dataIndex] || [];\n var point = coordSys.dataToPoint(val, axisIndex);\n points[dataIndex][axisIndex] = isValidPoint(point) ? point : getValueMissingPoint(coordSys);\n });\n }); // Close polygon\n\n data.each(function (idx) {\n // TODO\n // Is it appropriate to connect to the next data when some data is missing?\n // Or, should trade it like `connectNull` in line chart?\n var firstPoint = zrUtil.find(points[idx], function (point) {\n return isValidPoint(point);\n }) || getValueMissingPoint(coordSys); // Copy the first actual point to the end of the array\n\n points[idx].push(firstPoint.slice());\n data.setItemLayout(idx, points[idx]);\n });\n });\n}\n\nfunction isValidPoint(point) {\n return !isNaN(point[0]) && !isNaN(point[1]);\n}\n\nfunction getValueMissingPoint(coordSys) {\n // It is error-prone to input [NaN, NaN] into polygon, polygon.\n // (probably cause problem when refreshing or animating)\n return [coordSys.cx, coordSys.cy];\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\nrequire(\"../component/radar\");\n\nrequire(\"./radar/RadarSeries\");\n\nrequire(\"./radar/RadarView\");\n\nvar dataColor = require(\"../visual/dataColor\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar radarLayout = require(\"./radar/radarLayout\");\n\nvar dataFilter = require(\"../processor/dataFilter\");\n\nvar backwardCompat = require(\"./radar/backwardCompat\");\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// Must use radar component\necharts.registerVisual(dataColor('radar'));\necharts.registerVisual(visualSymbol('radar', 'circle'));\necharts.registerLayout(radarLayout);\necharts.registerProcessor(dataFilter('radar'));\necharts.registerPreprocessor(backwardCompat);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (legendModels && legendModels.length) {\n ecModel.filterSeries(function (series) {\n // If in any legend component the status is not selected.\n // Because in legend series is assumed selected when it is not in the legend data.\n for (var i = 0; i < legendModels.length; i++) {\n if (!legendModels[i].isSelected(series.name)) {\n return false;\n }\n }\n\n return true;\n });\n }\n}\n\nmodule.exports = _default;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('echart-line')],1),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('echart-stacked-area')],1),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('echart-area')],1),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('echart-bar')],1),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('echart-bar-Horizontal')],1),_c('b-col',{attrs:{\"md\":\"6\"}},[_c('echart-doughnut')],1),_c('b-col',{attrs:{\"md\":\"6\"}},[_c('echart-radar')],1),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('echart-scatter')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{attrs:{\"title\":\"Balance\"}},[_c('div',{staticClass:\"d-flex justify-content-between flex-wrap\"},[_c('div',{staticClass:\"mb-1 mb-sm-0\"},[_c('span',{staticClass:\"text-muted\"},[_vm._v(\"Commercial networks and enterprises\")])]),_c('div',{staticClass:\"d-flex align-content-center mb-1 mb-sm-0\"},[_c('h1',{staticClass:\"font-weight-bolder \"},[_vm._v(\" $ 183,382 \")]),_c('div',{staticClass:\"pt-25 ml-75\"},[_c('b-badge',{attrs:{\"variant\":\"light-secondary\"}},[_c('feather-icon',{staticClass:\"text-danger align-middle\",attrs:{\"icon\":\"ArrowDownIcon\",\"size\":\"12\"}}),_c('span',{staticClass:\"font-weight-bolder align-middle\"},[_vm._v(\" 24%\")])],1)],1)])]),_c('app-echart-line',{attrs:{\"option-data\":_vm.option}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('e-charts',{ref:\"line\",attrs:{\"autoresize\":\"\",\"options\":_vm.line,\"theme\":\"theme-color\",\"auto-resize\":\"\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"echarts\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","let raf = null;\nfunction requestAnimationFrame (callback) {\n if (!raf) {\n raf = (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n function (callback) {\n return setTimeout(callback, 16)\n }\n ).bind(window);\n }\n return raf(callback)\n}\n\nlet caf = null;\nfunction cancelAnimationFrame (id) {\n if (!caf) {\n caf = (\n window.cancelAnimationFrame ||\n window.webkitCancelAnimationFrame ||\n window.mozCancelAnimationFrame ||\n function (id) {\n clearTimeout(id);\n }\n ).bind(window);\n }\n\n caf(id);\n}\n\nfunction createStyles (styleText) {\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (style.styleSheet) {\n style.styleSheet.cssText = styleText;\n } else {\n style.appendChild(document.createTextNode(styleText));\n }\n (document.querySelector('head') || document.body).appendChild(style);\n return style\n}\n\nfunction createElement (tagName, props = {}) {\n let elem = document.createElement(tagName);\n Object.keys(props).forEach(key => {\n elem[key] = props[key];\n });\n return elem\n}\n\nfunction getComputedStyle (elem, prop, pseudo) {\n // for older versions of Firefox, `getComputedStyle` required\n // the second argument and may return `null` for some elements\n // when `display: none`\n let computedStyle = window.getComputedStyle(elem, pseudo || null) || {\n display: 'none'\n };\n\n return computedStyle[prop]\n}\n\nfunction getRenderInfo (elem) {\n if (!document.documentElement.contains(elem)) {\n return {\n detached: true,\n rendered: false\n }\n }\n\n let current = elem;\n while (current !== document) {\n if (getComputedStyle(current, 'display') === 'none') {\n return {\n detached: false,\n rendered: false\n }\n }\n current = current.parentNode;\n }\n\n return {\n detached: false,\n rendered: true\n }\n}\n\nvar css = \".resize-triggers{visibility:hidden;opacity:0}.resize-contract-trigger,.resize-contract-trigger:before,.resize-expand-trigger,.resize-triggers{content:\\\"\\\";position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-contract-trigger,.resize-expand-trigger{background:#eee;overflow:auto}.resize-contract-trigger:before{width:200%;height:200%}\";\n\nlet total = 0;\nlet style = null;\n\nfunction addListener (elem, callback) {\n if (!elem.__resize_mutation_handler__) {\n elem.__resize_mutation_handler__ = handleMutation.bind(elem);\n }\n\n let listeners = elem.__resize_listeners__;\n\n if (!listeners) {\n elem.__resize_listeners__ = [];\n if (window.ResizeObserver) {\n let { offsetWidth, offsetHeight } = elem;\n let ro = new ResizeObserver(() => {\n if (!elem.__resize_observer_triggered__) {\n elem.__resize_observer_triggered__ = true;\n if (elem.offsetWidth === offsetWidth && elem.offsetHeight === offsetHeight) {\n return\n }\n }\n runCallbacks(elem);\n });\n\n // initially display none won't trigger ResizeObserver callback\n let { detached, rendered } = getRenderInfo(elem);\n elem.__resize_observer_triggered__ = detached === false && rendered === false;\n elem.__resize_observer__ = ro;\n ro.observe(elem);\n } else if (elem.attachEvent && elem.addEventListener) {\n // targeting IE9/10\n elem.__resize_legacy_resize_handler__ = function handleLegacyResize () {\n runCallbacks(elem);\n };\n elem.attachEvent('onresize', elem.__resize_legacy_resize_handler__);\n document.addEventListener('DOMSubtreeModified', elem.__resize_mutation_handler__);\n } else {\n if (!total) {\n style = createStyles(css);\n }\n initTriggers(elem);\n\n elem.__resize_rendered__ = getRenderInfo(elem).rendered;\n if (window.MutationObserver) {\n let mo = new MutationObserver(elem.__resize_mutation_handler__);\n mo.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n elem.__resize_mutation_observer__ = mo;\n }\n }\n }\n\n elem.__resize_listeners__.push(callback);\n total++;\n}\n\nfunction removeListener (elem, callback) {\n // targeting IE9/10\n if (elem.detachEvent && elem.removeEventListener) {\n elem.detachEvent('onresize', elem.__resize_legacy_resize_handler__);\n document.removeEventListener('DOMSubtreeModified', elem.__resize_mutation_handler__);\n return\n }\n\n let listeners = elem.__resize_listeners__;\n if (!listeners) {\n return\n }\n listeners.splice(listeners.indexOf(callback), 1);\n\n if (!listeners.length) {\n if (elem.__resize_observer__) {\n elem.__resize_observer__.unobserve(elem);\n elem.__resize_observer__.disconnect();\n elem.__resize_observer__ = null;\n } else {\n if (elem.__resize_mutation_observer__) {\n elem.__resize_mutation_observer__.disconnect();\n elem.__resize_mutation_observer__ = null;\n }\n elem.removeEventListener('scroll', handleScroll);\n elem.removeChild(elem.__resize_triggers__.triggers);\n elem.__resize_triggers__ = null;\n }\n elem.__resize_listeners__ = null;\n }\n\n if (!--total && style) {\n style.parentNode.removeChild(style);\n }\n}\n\nfunction getUpdatedSize (elem) {\n let { width, height } = elem.__resize_last__;\n let { offsetWidth, offsetHeight } = elem;\n if (offsetWidth !== width || offsetHeight !== height) {\n return {\n width: offsetWidth,\n height: offsetHeight\n }\n }\n return null\n}\n\nfunction handleMutation () {\n // `this` denotes the scrolling element\n let { rendered, detached } = getRenderInfo(this);\n if (rendered !== this.__resize_rendered__) {\n if (!detached && this.__resize_triggers__) {\n resetTriggers(this);\n this.addEventListener('scroll', handleScroll, true);\n }\n this.__resize_rendered__ = rendered;\n runCallbacks(this);\n }\n}\n\nfunction handleScroll () {\n // `this` denotes the scrolling element\n resetTriggers(this);\n if (this.__resize_raf__) {\n cancelAnimationFrame(this.__resize_raf__);\n }\n this.__resize_raf__ = requestAnimationFrame(() => {\n let updated = getUpdatedSize(this);\n if (updated) {\n this.__resize_last__ = updated;\n runCallbacks(this);\n }\n });\n}\n\nfunction runCallbacks (elem) {\n if (!elem || !elem.__resize_listeners__) {\n return\n }\n elem.__resize_listeners__.forEach(callback => {\n callback.call(elem);\n });\n}\n\nfunction initTriggers (elem) {\n let position = getComputedStyle(elem, 'position');\n if (!position || position === 'static') {\n elem.style.position = 'relative';\n }\n\n elem.__resize_old_position__ = position;\n elem.__resize_last__ = {};\n\n let triggers = createElement('div', {\n className: 'resize-triggers'\n });\n let expand = createElement('div', {\n className: 'resize-expand-trigger'\n });\n let expandChild = createElement('div');\n let contract = createElement('div', {\n className: 'resize-contract-trigger'\n });\n expand.appendChild(expandChild);\n triggers.appendChild(expand);\n triggers.appendChild(contract);\n elem.appendChild(triggers);\n\n elem.__resize_triggers__ = {\n triggers,\n expand,\n expandChild,\n contract\n };\n\n resetTriggers(elem);\n elem.addEventListener('scroll', handleScroll, true);\n\n elem.__resize_last__ = {\n width: elem.offsetWidth,\n height: elem.offsetHeight\n };\n}\n\nfunction resetTriggers (elem) {\n let { expand, expandChild, contract } = elem.__resize_triggers__;\n\n // batch read\n let { scrollWidth: csw, scrollHeight: csh } = contract;\n let { offsetWidth: eow, offsetHeight: eoh, scrollWidth: esw, scrollHeight: esh } = expand;\n\n // batch write\n contract.scrollLeft = csw;\n contract.scrollTop = csh;\n expandChild.style.width = eow + 1 + 'px';\n expandChild.style.height = eoh + 1 + 'px';\n expand.scrollLeft = esw;\n expand.scrollTop = esh;\n}\n\nexport { addListener, removeListener };\n","\n\n\n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--13-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib/index.js??vue-loader-options!./ECharts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--13-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib/index.js??vue-loader-options!./ECharts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ECharts.vue?vue&type=template&id=36c2f65c&\"\nimport script from \"./ECharts.vue?vue&type=script&lang=js&\"\nexport * from \"./ECharts.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ECharts.vue?vue&type=style&index=0&id=36c2f65c&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartLine.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartLine.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppEchartLine.vue?vue&type=template&id=59924244&\"\nimport script from \"./AppEchartLine.vue?vue&type=script&lang=js&\"\nexport * from \"./AppEchartLine.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppEchartLine.vue?vue&type=style&index=0&id=59924244&prod&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 null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartLine.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartLine.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EchartLine.vue?vue&type=template&id=7b59849e&\"\nimport script from \"./EchartLine.vue?vue&type=script&lang=js&\"\nexport * from \"./EchartLine.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{attrs:{\"title\":\"Data Science\"}},[_c('app-echart-stacked-area',{attrs:{\"option-data\":_vm.option}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('e-charts',{ref:\"line\",attrs:{\"autoresize\":\"\",\"options\":_vm.option,\"theme\":\"theme-color\",\"auto-resize\":\"\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartStackedArea.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartStackedArea.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppEchartStackedArea.vue?vue&type=template&id=e77d1284&\"\nimport script from \"./AppEchartStackedArea.vue?vue&type=script&lang=js&\"\nexport * from \"./AppEchartStackedArea.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartStackedArea.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartStackedArea.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EchartStackedArea.vue?vue&type=template&id=7007aa23&\"\nimport script from \"./EchartStackedArea.vue?vue&type=script&lang=js&\"\nexport * from \"./EchartStackedArea.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{attrs:{\"title\":\"Area Chart\"}},[_c('app-echart-stacked-area',{attrs:{\"option-data\":_vm.option}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartArea.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartArea.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EchartArea.vue?vue&type=template&id=ec1ef27e&\"\nimport script from \"./EchartArea.vue?vue&type=script&lang=js&\"\nexport * from \"./EchartArea.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{attrs:{\"title\":\"Data Science\"}},[_c('app-echart-bar',{attrs:{\"option-data\":_vm.option}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('e-charts',{ref:\"line\",attrs:{\"autoresize\":\"\",\"options\":_vm.option,\"theme\":\"theme-color\",\"auto-resize\":\"\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppEchartBar.vue?vue&type=template&id=249f5a9b&\"\nimport script from \"./AppEchartBar.vue?vue&type=script&lang=js&\"\nexport * from \"./AppEchartBar.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EchartBar.vue?vue&type=template&id=76aa573a&\"\nimport script from \"./EchartBar.vue?vue&type=script&lang=js&\"\nexport * from \"./EchartBar.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{attrs:{\"title\":\"Horizontal Bar Chart\"}},[_c('app-echart-bar',{attrs:{\"option-data\":_vm.option}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartBarHorizontal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartBarHorizontal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EchartBarHorizontal.vue?vue&type=template&id=4eb953cd&\"\nimport script from \"./EchartBarHorizontal.vue?vue&type=script&lang=js&\"\nexport * from \"./EchartBarHorizontal.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{attrs:{\"title\":\"Doughnut Chart\"}},[_c('div',{staticClass:\"pie-text text-center\"},[_c('h2',{staticClass:\"font-weight-bolder\"},[_vm._v(\" $23,994 \")]),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(\"Total\")])]),_c('app-echart-doughnut',{attrs:{\"series\":_vm.series}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('e-charts',{ref:\"line\",attrs:{\"autoresize\":\"\",\"options\":_vm.option,\"theme\":\"theme-color\",\"auto-resize\":\"\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartDoughnut.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartDoughnut.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppEchartDoughnut.vue?vue&type=template&id=ab26cd98&\"\nimport script from \"./AppEchartDoughnut.vue?vue&type=script&lang=js&\"\nexport * from \"./AppEchartDoughnut.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartDoughnut.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartDoughnut.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EchartDoughnut.vue?vue&type=template&id=644d9af0&\"\nimport script from \"./EchartDoughnut.vue?vue&type=script&lang=js&\"\nexport * from \"./EchartDoughnut.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EchartDoughnut.vue?vue&type=style&index=0&id=644d9af0&prod&lang=scss&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{attrs:{\"title\":\"Radar Chart\"}},[_c('app-echart-radar',{attrs:{\"option-data\":_vm.option}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('e-charts',{ref:\"line\",attrs:{\"autoresize\":\"\",\"options\":_vm.option,\"theme\":\"theme-color\",\"auto-resize\":\"\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartRadar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartRadar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppEchartRadar.vue?vue&type=template&id=4f2eedcf&\"\nimport script from \"./AppEchartRadar.vue?vue&type=script&lang=js&\"\nexport * from \"./AppEchartRadar.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartRadar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartRadar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EchartRadar.vue?vue&type=template&id=17d0d28b&\"\nimport script from \"./EchartRadar.vue?vue&type=script&lang=js&\"\nexport * from \"./EchartRadar.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{attrs:{\"title\":\"New Technologies Data\"}},[_c('div',{staticClass:\"switch-button float-sm-right\"},[_c('b-form-group',[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-1\",\"button-variant\":\"outline-primary\",\"options\":_vm.radioOption,\"buttons\":\"\",\"size\":\"sm\",\"name\":\"radios-btn-default\"},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})],1)],1),_c('app-echart-scatter',{attrs:{\"option-data\":_vm.option}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('e-charts',{ref:\"line\",attrs:{\"options\":_vm.option,\"theme\":\"theme-color\",\"auto-resize\":\"\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartScatter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartScatter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppEchartScatter.vue?vue&type=template&id=a5089398&\"\nimport script from \"./AppEchartScatter.vue?vue&type=script&lang=js&\"\nexport * from \"./AppEchartScatter.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartScatter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartScatter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EchartScatter.vue?vue&type=template&id=8ed5c0f8&\"\nimport script from \"./EchartScatter.vue?vue&type=script&lang=js&\"\nexport * from \"./EchartScatter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EchartScatter.vue?vue&type=style&index=0&id=8ed5c0f8&prod&lang=scss&\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Echart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Echart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Echart.vue?vue&type=template&id=04ca64b1&\"\nimport script from \"./Echart.vue?vue&type=script&lang=js&\"\nexport * from \"./Echart.vue?vue&type=script&lang=js&\"\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 null,\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 _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\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// Pick color from palette for each data item.\n// Applicable for charts that require applying color palette\n// in data level (like pie, funnel, chord).\nfunction _default(seriesType) {\n return {\n getTargetSeries: function (ecModel) {\n // Pie and funnel may use diferrent scope\n var paletteScope = {};\n var seiresModelMap = createHashMap();\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n seriesModel.__paletteScope = paletteScope;\n seiresModelMap.set(seriesModel.uid, seriesModel);\n });\n return seiresModelMap;\n },\n reset: function (seriesModel, ecModel) {\n var dataAll = seriesModel.getRawData();\n var idxMap = {};\n var data = seriesModel.getData();\n data.each(function (idx) {\n var rawIdx = data.getRawIndex(idx);\n idxMap[rawIdx] = idx;\n });\n dataAll.each(function (rawIdx) {\n var filteredIdx = idxMap[rawIdx]; // If series.itemStyle.normal.color is a function. itemVisual may be encoded\n\n var singleDataColor = filteredIdx != null && data.getItemVisual(filteredIdx, 'color', true);\n var singleDataBorderColor = filteredIdx != null && data.getItemVisual(filteredIdx, 'borderColor', true);\n var itemModel;\n\n if (!singleDataColor || !singleDataBorderColor) {\n // FIXME Performance\n itemModel = dataAll.getItemModel(rawIdx);\n }\n\n if (!singleDataColor) {\n var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(dataAll.getName(rawIdx) || rawIdx + '', seriesModel.__paletteScope, dataAll.count()); // Data is not filtered\n\n if (filteredIdx != null) {\n data.setItemVisual(filteredIdx, 'color', color);\n }\n }\n\n if (!singleDataBorderColor) {\n var borderColor = itemModel.get('itemStyle.borderColor'); // Data is not filtered\n\n if (filteredIdx != null) {\n data.setItemVisual(filteredIdx, 'borderColor', borderColor);\n }\n }\n });\n }\n };\n}\n\nmodule.exports = _default;","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} coordSys\n * @param {module:echarts/data/List} data\n * @param {string} valueOrigin lineSeries.option.areaStyle.origin\n */\nfunction prepareDataCoordInfo(coordSys, data, valueOrigin) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var valueStart = getValueStart(valueAxis, valueOrigin);\n var baseAxisDim = baseAxis.dim;\n var valueAxisDim = valueAxis.dim;\n var valueDim = data.mapDimension(valueAxisDim);\n var baseDim = data.mapDimension(baseAxisDim);\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n var dims = map(coordSys.dimensions, function (coordDim) {\n return data.mapDimension(coordDim);\n });\n var stacked;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (stacked |= isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n // jshint ignore:line\n dims[0] = stackResultDim;\n }\n\n if (stacked |= isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n // jshint ignore:line\n dims[1] = stackResultDim;\n }\n\n return {\n dataDimsForPoint: dims,\n valueStart: valueStart,\n valueAxisDim: valueAxisDim,\n baseAxisDim: baseAxisDim,\n stacked: !!stacked,\n valueDim: valueDim,\n baseDim: baseDim,\n baseDataOffset: baseDataOffset,\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\n };\n}\n\nfunction getValueStart(valueAxis, valueOrigin) {\n var valueStart = 0;\n var extent = valueAxis.scale.getExtent();\n\n if (valueOrigin === 'start') {\n valueStart = extent[0];\n } else if (valueOrigin === 'end') {\n valueStart = extent[1];\n } // auto\n else {\n // Both positive\n if (extent[0] > 0) {\n valueStart = extent[0];\n } // Both negative\n else if (extent[1] < 0) {\n valueStart = extent[1];\n } // If is one positive, and one negative, onZero shall be true\n\n }\n\n return valueStart;\n}\n\nfunction getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\n var value = NaN;\n\n if (dataCoordInfo.stacked) {\n value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\n }\n\n if (isNaN(value)) {\n value = dataCoordInfo.valueStart;\n }\n\n var baseDataOffset = dataCoordInfo.baseDataOffset;\n var stackedData = [];\n stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\n stackedData[1 - baseDataOffset] = value;\n return coordSys.dataToPoint(stackedData);\n}\n\nexports.prepareDataCoordInfo = prepareDataCoordInfo;\nexports.getStackedOnPoint = getStackedOnPoint;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar LegendVisualProvider = require(\"../../visual/LegendVisualProvider\");\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 RadarSeries = SeriesModel.extend({\n type: 'series.radar',\n dependencies: ['radar'],\n // Overwrite\n init: function (option) {\n RadarSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n },\n getInitialData: function (option, ecModel) {\n return createListSimply(this, {\n generateCoord: 'indicator_',\n generateCoordCount: Infinity\n });\n },\n formatTooltip: function (dataIndex) {\n var data = this.getData();\n var coordSys = this.coordinateSystem;\n var indicatorAxes = coordSys.getIndicatorAxes();\n var name = this.getData().getName(dataIndex);\n return encodeHTML(name === '' ? this.name : name) + '
' + zrUtil.map(indicatorAxes, function (axis, idx) {\n var val = data.get(data.mapDimension(axis.dim), dataIndex);\n return encodeHTML(axis.name + ' : ' + val);\n }).join('
');\n },\n\n /**\n * @implement\n */\n getTooltipPosition: function (dataIndex) {\n if (dataIndex != null) {\n var data = this.getData();\n var coordSys = this.coordinateSystem;\n var values = data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }), dataIndex, true);\n\n for (var i = 0, len = values.length; i < len; i++) {\n if (!isNaN(values[i])) {\n var indicatorAxes = coordSys.getIndicatorAxes();\n return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i);\n }\n }\n }\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'radar',\n legendHoverLink: true,\n radarIndex: 0,\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n label: {\n position: 'top'\n },\n // areaStyle: {\n // },\n // itemStyle: {}\n symbol: 'emptyCircle',\n symbolSize: 4 // symbolRotate: null\n\n }\n});\nvar _default = RadarSeries;\nmodule.exports = _default;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from '../../vue';\nimport { NAME_ROW } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { identity } from '../../utils/identity';\nimport { memoize } from '../../utils/memoize';\nimport { create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { lowerCase, toString, trim } from '../../utils/string'; // --- Constants ---\n\nvar COMMON_ALIGNMENT = ['start', 'end', 'center']; // --- Helper methods ---\n// Compute a `row-cols-{breakpoint}-{cols}` class name\n// Memoized function for better performance on generating class names\n\nvar computeRowColsClass = memoize(function (breakpoint, cols) {\n cols = trim(toString(cols));\n return cols ? lowerCase(['row-cols', breakpoint, cols].filter(identity).join('-')) : null;\n}); // Get the breakpoint name from the `rowCols` prop name\n// Memoized function for better performance on extracting breakpoint names\n\nvar computeRowColsBreakpoint = memoize(function (prop) {\n return lowerCase(prop.replace('cols', ''));\n}); // Cached copy of the `row-cols` breakpoint prop names\n// Will be populated when the props are generated\n\nvar rowColsPropList = []; // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n // i.e. 'row-cols-2', 'row-cols-md-4', 'row-cols-xl-6', ...\n var rowColsProps = getBreakpointsUpCached().reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'cols')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // Cache the row-cols prop names\n\n rowColsPropList = keys(rowColsProps); // Return the generated props\n\n return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, rowColsProps), {}, {\n alignContent: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around', 'stretch'), value);\n }),\n alignH: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around'), value);\n }),\n alignV: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'baseline', 'stretch'), value);\n }),\n noGutters: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_ROW);\n}; // --- Main component ---\n// We do not use `Vue.extend()` here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BRow = {\n name: NAME_ROW,\n functional: true,\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props;\n this.props = generateProps();\n return this.props;\n },\n\n render: function render(h, _ref) {\n var _classList$push;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var alignV = props.alignV,\n alignH = props.alignH,\n alignContent = props.alignContent; // Loop through row-cols breakpoint props and generate the classes\n\n var classList = [];\n rowColsPropList.forEach(function (prop) {\n var c = computeRowColsClass(computeRowColsBreakpoint(prop), props[prop]); // If a class is returned, push it onto the array\n\n if (c) {\n classList.push(c);\n }\n });\n classList.push((_classList$push = {\n 'no-gutters': props.noGutters\n }, _defineProperty(_classList$push, \"align-items-\".concat(alignV), alignV), _defineProperty(_classList$push, \"justify-content-\".concat(alignH), alignH), _defineProperty(_classList$push, \"align-content-\".concat(alignContent), alignContent), _classList$push));\n return h(props.tag, mergeData(data, {\n staticClass: 'row',\n class: classList\n }), children);\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\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentModel({\n type: 'tooltip',\n dependencies: ['axisPointer'],\n defaultOption: {\n zlevel: 0,\n z: 60,\n show: true,\n // tooltip主体内容\n showContent: true,\n // 'trigger' only works on coordinate system.\n // 'item' | 'axis' | 'none'\n trigger: 'item',\n // 'click' | 'mousemove' | 'none'\n triggerOn: 'mousemove|click',\n alwaysShowContent: false,\n displayMode: 'single',\n // 'single' | 'multipleByCoordSys'\n renderMode: 'auto',\n // 'auto' | 'html' | 'richText'\n // 'auto': use html by default, and use non-html if `document` is not defined\n // 'html': use html for tooltip\n // 'richText': use canvas, svg, and etc. for tooltip\n // 位置 {Array} | {Function}\n // position: null\n // Consider triggered from axisPointer handle, verticalAlign should be 'middle'\n // align: null,\n // verticalAlign: null,\n // 是否约束 content 在 viewRect 中。默认 false 是为了兼容以前版本。\n confine: false,\n // 内容格式器:{string}(Template) ¦ {Function}\n // formatter: null\n showDelay: 0,\n // 隐藏延迟,单位ms\n hideDelay: 100,\n // 动画变换时间,单位s\n transitionDuration: 0.4,\n enterable: false,\n // 提示背景颜色,默认为透明度为0.7的黑色\n backgroundColor: 'rgba(50,50,50,0.7)',\n // 提示边框颜色\n borderColor: '#333',\n // 提示边框圆角,单位px,默认为4\n borderRadius: 4,\n // 提示边框线宽,单位px,默认为0(无边框)\n borderWidth: 0,\n // 提示内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n padding: 5,\n // Extra css text\n extraCssText: '',\n // 坐标轴指示器,坐标轴触发有效\n axisPointer: {\n // 默认为直线\n // 可选为:'line' | 'shadow' | 'cross'\n type: 'line',\n // type 为 line 的时候有效,指定 tooltip line 所在的轴,可选\n // 可选 'x' | 'y' | 'angle' | 'radius' | 'auto'\n // 默认 'auto',会选择类型为 category 的轴,对于双数值轴,笛卡尔坐标系会默认选择 x 轴\n // 极坐标系会默认选择 angle 轴\n axis: 'auto',\n animation: 'auto',\n animationDurationUpdate: 200,\n animationEasingUpdate: 'exponentialOut',\n crossStyle: {\n color: '#999',\n width: 1,\n type: 'dashed',\n // TODO formatter\n textStyle: {} // lineStyle and shadowStyle should not be specified here,\n // otherwise it will always override those styles on option.axisPointer.\n\n }\n },\n textStyle: {\n color: '#fff',\n fontSize: 14\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 echarts = require(\"../../echarts\");\n\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar LargeSymbolDraw = require(\"../helper/LargeSymbolDraw\");\n\nvar pointsLayout = require(\"../../layout/points\");\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.extendChartView({\n type: 'scatter',\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var symbolDraw = this._updateSymbolDraw(data, seriesModel);\n\n symbolDraw.updateData(data, {\n // TODO\n // If this parameter should be a shape or a bounding volume\n // shape will be more general.\n // But bounding volume like bounding rect will be much faster in the contain calculation\n clipShape: this._getClipShape(seriesModel)\n });\n this._finished = true;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var symbolDraw = this._updateSymbolDraw(data, seriesModel);\n\n symbolDraw.incrementalPrepareUpdate(data);\n this._finished = false;\n },\n incrementalRender: function (taskParams, seriesModel, ecModel) {\n this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), {\n clipShape: this._getClipShape(seriesModel)\n });\n\n this._finished = taskParams.end === seriesModel.getData().count();\n },\n updateTransform: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData(); // Must mark group dirty and make sure the incremental layer will be cleared\n // PENDING\n\n this.group.dirty();\n\n if (!this._finished || data.count() > 1e4 || !this._symbolDraw.isPersistent()) {\n return {\n update: true\n };\n } else {\n var res = pointsLayout().reset(seriesModel);\n\n if (res.progress) {\n res.progress({\n start: 0,\n end: data.count()\n }, data);\n }\n\n this._symbolDraw.updateLayout(data);\n }\n },\n _getClipShape: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var clipArea = coordSys && coordSys.getArea && coordSys.getArea();\n return seriesModel.get('clip', true) ? clipArea : null;\n },\n _updateSymbolDraw: function (data, seriesModel) {\n var symbolDraw = this._symbolDraw;\n var pipelineContext = seriesModel.pipelineContext;\n var isLargeDraw = pipelineContext.large;\n\n if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {\n symbolDraw && symbolDraw.remove();\n symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw() : new SymbolDraw();\n this._isLargeDraw = isLargeDraw;\n this.group.removeAll();\n }\n\n this.group.add(symbolDraw.group);\n return symbolDraw;\n },\n remove: function (ecModel, api) {\n this._symbolDraw && this._symbolDraw.remove(true);\n this._symbolDraw = null;\n },\n dispose: function () {}\n});","import { Vue } from '../vue';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n size: makeProp(PROP_TYPE_STRING)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formSizeMixin = Vue.extend({\n props: props,\n computed: {\n sizeFormClass: function sizeFormClass() {\n return [this.size ? \"form-control-\".concat(this.size) : null];\n }\n }\n});","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartScatter.vue?vue&type=style&index=0&id=8ed5c0f8&prod&lang=scss&\"","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","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","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_HEADER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'header'))), {}, {\n header: makeProp(PROP_TYPE_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_HEADER); // --- Main component ---\n// @vue/component\n\nexport var BCardHeader = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_HEADER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var headerBgVariant = props.headerBgVariant,\n headerBorderVariant = props.headerBorderVariant,\n headerTextVariant = props.headerTextVariant;\n return h(props.headerTag, mergeData(data, {\n staticClass: 'card-header',\n class: [props.headerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(headerBgVariant), headerBgVariant), _defineProperty(_ref2, \"border-\".concat(headerBorderVariant), headerBorderVariant), _defineProperty(_ref2, \"text-\".concat(headerTextVariant), headerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.headerHtml, props.header)\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_SUB_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n subTitle: makeProp(PROP_TYPE_STRING),\n subTitleTag: makeProp(PROP_TYPE_STRING, 'h6'),\n subTitleTextVariant: makeProp(PROP_TYPE_STRING, 'muted')\n}, NAME_CARD_SUB_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardSubTitle = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_SUB_TITLE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.subTitleTag, mergeData(data, {\n staticClass: 'card-subtitle',\n class: [props.subTitleTextVariant ? \"text-\".concat(props.subTitleTextVariant) : null]\n }), children || toString(props.subTitle));\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 textContain = require(\"zrender/lib/contain/text\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\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 emphasis label position is not same with normal label position\nvar RADIAN = Math.PI / 180;\n\nfunction adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\n list.sort(function (a, b) {\n return a.y - b.y;\n });\n\n function shiftDown(start, end, delta, dir) {\n for (var j = start; j < end; j++) {\n if (list[j].y + delta > viewTop + viewHeight) {\n break;\n }\n\n list[j].y += delta;\n\n if (j > start && j + 1 < end && list[j + 1].y > list[j].y + list[j].height) {\n shiftUp(j, delta / 2);\n return;\n }\n }\n\n shiftUp(end - 1, delta / 2);\n }\n\n function shiftUp(end, delta) {\n for (var j = end; j >= 0; j--) {\n if (list[j].y - delta < viewTop) {\n break;\n }\n\n list[j].y -= delta;\n\n if (j > 0 && list[j].y > list[j - 1].y + list[j - 1].height) {\n break;\n }\n }\n }\n\n function changeX(list, isDownList, cx, cy, r, dir) {\n var lastDeltaX = dir > 0 ? isDownList // right-side\n ? Number.MAX_VALUE // down\n : 0 // up\n : isDownList // left-side\n ? Number.MAX_VALUE // down\n : 0; // up\n\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].labelAlignTo !== 'none') {\n continue;\n }\n\n var deltaY = Math.abs(list[i].y - cy);\n var length = list[i].len;\n var length2 = list[i].len2;\n var deltaX = deltaY < r + length ? Math.sqrt((r + length + length2) * (r + length + length2) - deltaY * deltaY) : Math.abs(list[i].x - cx);\n\n if (isDownList && deltaX >= lastDeltaX) {\n // right-down, left-down\n deltaX = lastDeltaX - 10;\n }\n\n if (!isDownList && deltaX <= lastDeltaX) {\n // right-up, left-up\n deltaX = lastDeltaX + 10;\n }\n\n list[i].x = cx + deltaX * dir;\n lastDeltaX = deltaX;\n }\n }\n\n var lastY = 0;\n var delta;\n var len = list.length;\n var upList = [];\n var downList = [];\n\n for (var i = 0; i < len; i++) {\n if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\n var dx = list[i].x - farthestX;\n list[i].linePoints[1][0] += dx;\n list[i].x = farthestX;\n }\n\n delta = list[i].y - lastY;\n\n if (delta < 0) {\n shiftDown(i, len, -delta, dir);\n }\n\n lastY = list[i].y + list[i].height;\n }\n\n if (viewHeight - lastY < 0) {\n shiftUp(len - 1, lastY - viewHeight);\n }\n\n for (var i = 0; i < len; i++) {\n if (list[i].y >= cy) {\n downList.push(list[i]);\n } else {\n upList.push(list[i]);\n }\n }\n\n changeX(upList, false, cx, cy, r, dir);\n changeX(downList, true, cx, cy, r, dir);\n}\n\nfunction avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\n var leftList = [];\n var rightList = [];\n var leftmostX = Number.MAX_VALUE;\n var rightmostX = -Number.MAX_VALUE;\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n if (isPositionCenter(labelLayoutList[i])) {\n continue;\n }\n\n if (labelLayoutList[i].x < cx) {\n leftmostX = Math.min(leftmostX, labelLayoutList[i].x);\n leftList.push(labelLayoutList[i]);\n } else {\n rightmostX = Math.max(rightmostX, labelLayoutList[i].x);\n rightList.push(labelLayoutList[i]);\n }\n }\n\n adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\n adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\n\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n\n if (isPositionCenter(layout)) {\n continue;\n }\n\n var linePoints = layout.linePoints;\n\n if (linePoints) {\n var isAlignToEdge = layout.labelAlignTo === 'edge';\n var realTextWidth = layout.textRect.width;\n var targetTextWidth;\n\n if (isAlignToEdge) {\n if (layout.x < cx) {\n targetTextWidth = linePoints[2][0] - layout.labelDistance - viewLeft - layout.labelMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - layout.labelMargin - linePoints[2][0] - layout.labelDistance;\n }\n } else {\n if (layout.x < cx) {\n targetTextWidth = layout.x - viewLeft - layout.bleedMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - layout.x - layout.bleedMargin;\n }\n }\n\n if (targetTextWidth < layout.textRect.width) {\n layout.text = textContain.truncateText(layout.text, targetTextWidth, layout.font);\n\n if (layout.labelAlignTo === 'edge') {\n realTextWidth = textContain.getWidth(layout.text, layout.font);\n }\n }\n\n var dist = linePoints[1][0] - linePoints[2][0];\n\n if (isAlignToEdge) {\n if (layout.x < cx) {\n linePoints[2][0] = viewLeft + layout.labelMargin + realTextWidth + layout.labelDistance;\n } else {\n linePoints[2][0] = viewLeft + viewWidth - layout.labelMargin - realTextWidth - layout.labelDistance;\n }\n } else {\n if (layout.x < cx) {\n linePoints[2][0] = layout.x + layout.labelDistance;\n } else {\n linePoints[2][0] = layout.x - layout.labelDistance;\n }\n\n linePoints[1][0] = linePoints[2][0] + dist;\n }\n\n linePoints[1][1] = linePoints[2][1] = layout.y;\n }\n }\n}\n\nfunction isPositionCenter(layout) {\n // Not change x for center label\n return layout.position === 'center';\n}\n\nfunction _default(seriesModel, r, viewWidth, viewHeight, viewLeft, viewTop) {\n var data = seriesModel.getData();\n var labelLayoutList = [];\n var cx;\n var cy;\n var hasLabelRotate = false;\n var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\n data.each(function (idx) {\n var layout = data.getItemLayout(idx);\n var itemModel = data.getItemModel(idx);\n var labelModel = itemModel.getModel('label'); // Use position in normal or emphasis\n\n var labelPosition = labelModel.get('position') || itemModel.get('emphasis.label.position');\n var labelDistance = labelModel.get('distanceToLabelLine');\n var labelAlignTo = labelModel.get('alignTo');\n var labelMargin = parsePercent(labelModel.get('margin'), viewWidth);\n var bleedMargin = labelModel.get('bleedMargin');\n var font = labelModel.getFont();\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineLen = labelLineModel.get('length');\n labelLineLen = parsePercent(labelLineLen, viewWidth);\n var labelLineLen2 = labelLineModel.get('length2');\n labelLineLen2 = parsePercent(labelLineLen2, viewWidth);\n\n if (layout.angle < minShowLabelRadian) {\n return;\n }\n\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var dx = Math.cos(midAngle);\n var dy = Math.sin(midAngle);\n var textX;\n var textY;\n var linePoints;\n var textAlign;\n cx = layout.cx;\n cy = layout.cy;\n var text = seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx);\n var textRect = textContain.getBoundingRect(text, font, textAlign, 'top');\n var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\n\n if (labelPosition === 'center') {\n textX = layout.cx;\n textY = layout.cy;\n textAlign = 'center';\n } else {\n var x1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dx : layout.r * dx) + cx;\n var y1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dy : layout.r * dy) + cy;\n textX = x1 + dx * 3;\n textY = y1 + dy * 3;\n\n if (!isLabelInside) {\n // For roseType\n var x2 = x1 + dx * (labelLineLen + r - layout.r);\n var y2 = y1 + dy * (labelLineLen + r - layout.r);\n var x3 = x2 + (dx < 0 ? -1 : 1) * labelLineLen2;\n var y3 = y2;\n\n if (labelAlignTo === 'edge') {\n // Adjust textX because text align of edge is opposite\n textX = dx < 0 ? viewLeft + labelMargin : viewLeft + viewWidth - labelMargin;\n } else {\n textX = x3 + (dx < 0 ? -labelDistance : labelDistance);\n }\n\n textY = y3;\n linePoints = [[x1, y1], [x2, y2], [x3, y3]];\n }\n\n textAlign = isLabelInside ? 'center' : labelAlignTo === 'edge' ? dx > 0 ? 'right' : 'left' : dx > 0 ? 'left' : 'right';\n }\n\n var labelRotate;\n var rotate = labelModel.get('rotate');\n\n if (typeof rotate === 'number') {\n labelRotate = rotate * (Math.PI / 180);\n } else {\n labelRotate = rotate ? dx < 0 ? -midAngle + Math.PI : -midAngle : 0;\n }\n\n hasLabelRotate = !!labelRotate;\n layout.label = {\n x: textX,\n y: textY,\n position: labelPosition,\n height: textRect.height,\n len: labelLineLen,\n len2: labelLineLen2,\n linePoints: linePoints,\n textAlign: textAlign,\n verticalAlign: 'middle',\n rotation: labelRotate,\n inside: isLabelInside,\n labelDistance: labelDistance,\n labelAlignTo: labelAlignTo,\n labelMargin: labelMargin,\n bleedMargin: bleedMargin,\n textRect: textRect,\n text: text,\n font: font\n }; // Not layout the inside label\n\n if (!isLabelInside) {\n labelLayoutList.push(layout.label);\n }\n });\n\n if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\n avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\n }\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nrequire(\"./pie/PieSeries\");\n\nrequire(\"./pie/PieView\");\n\nvar createDataSelectAction = require(\"../action/createDataSelectAction\");\n\nvar dataColor = require(\"../visual/dataColor\");\n\nvar pieLayout = require(\"./pie/pieLayout\");\n\nvar dataFilter = require(\"../processor/dataFilter\");\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*/\ncreateDataSelectAction('pie', [{\n type: 'pieToggleSelect',\n event: 'pieselectchanged',\n method: 'toggleSelected'\n}, {\n type: 'pieSelect',\n event: 'pieselected',\n method: 'select'\n}, {\n type: 'pieUnSelect',\n event: 'pieunselected',\n method: 'unSelect'\n}]);\necharts.registerVisual(dataColor('pie'));\necharts.registerLayout(zrUtil.curry(pieLayout, 'pie'));\necharts.registerProcessor(dataFilter('pie'));","\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*/\n\n/**\n * LegendVisualProvider is an bridge that pick encoded color from data and\n * provide to the legend component.\n * @param {Function} getDataWithEncodedVisual Function to get data after filtered. It stores all the encoding info\n * @param {Function} getRawData Function to get raw data before filtered.\n */\nfunction LegendVisualProvider(getDataWithEncodedVisual, getRawData) {\n this.getAllNames = function () {\n var rawData = getRawData(); // We find the name from the raw data. In case it's filtered by the legend component.\n // Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.\n\n return rawData.mapArray(rawData.getName);\n };\n\n this.containName = function (name) {\n var rawData = getRawData();\n return rawData.indexOfName(name) >= 0;\n };\n\n this.indexOfName = function (name) {\n // Only get data when necessary.\n // Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.\n // Invoking Series#getData immediately will throw an error.\n var dataWithEncodedVisual = getDataWithEncodedVisual();\n return dataWithEncodedVisual.indexOfName(name);\n };\n\n this.getItemVisual = function (dataIndex, key) {\n // Get encoded visual properties from final filtered data.\n var dataWithEncodedVisual = getDataWithEncodedVisual();\n return dataWithEncodedVisual.getItemVisual(dataIndex, key);\n };\n}\n\nvar _default = LegendVisualProvider;\nmodule.exports = _default;","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartDoughnut.vue?vue&type=style&index=0&id=644d9af0&prod&lang=scss&\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\n// TODO Batch by color\nvar BOOST_SIZE_THRESHOLD = 4;\nvar LargeSymbolPath = graphic.extendShape({\n shape: {\n points: null\n },\n symbolProxy: null,\n softClipShape: null,\n buildPath: function (path, shape) {\n var points = shape.points;\n var size = shape.size;\n var symbolProxy = this.symbolProxy;\n var symbolProxyShape = symbolProxy.shape;\n var ctx = path.getContext ? path.getContext() : path;\n var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD; // Do draw in afterBrush.\n\n if (canBoost) {\n return;\n }\n\n for (var i = 0; i < points.length;) {\n var x = points[i++];\n var y = points[i++];\n\n if (isNaN(x) || isNaN(y)) {\n continue;\n }\n\n if (this.softClipShape && !this.softClipShape.contain(x, y)) {\n continue;\n }\n\n symbolProxyShape.x = x - size[0] / 2;\n symbolProxyShape.y = y - size[1] / 2;\n symbolProxyShape.width = size[0];\n symbolProxyShape.height = size[1];\n symbolProxy.buildPath(path, symbolProxyShape, true);\n }\n },\n afterBrush: function (ctx) {\n var shape = this.shape;\n var points = shape.points;\n var size = shape.size;\n var canBoost = size[0] < BOOST_SIZE_THRESHOLD;\n\n if (!canBoost) {\n return;\n }\n\n this.setTransform(ctx); // PENDING If style or other canvas status changed?\n\n for (var i = 0; i < points.length;) {\n var x = points[i++];\n var y = points[i++];\n\n if (isNaN(x) || isNaN(y)) {\n continue;\n }\n\n if (this.softClipShape && !this.softClipShape.contain(x, y)) {\n continue;\n } // fillRect is faster than building a rect path and draw.\n // And it support light globalCompositeOperation.\n\n\n ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);\n }\n\n this.restoreTransform(ctx);\n },\n findDataIndex: function (x, y) {\n // TODO ???\n // Consider transform\n var shape = this.shape;\n var points = shape.points;\n var size = shape.size;\n var w = Math.max(size[0], 4);\n var h = Math.max(size[1], 4); // Not consider transform\n // Treat each element as a rect\n // top down traverse\n\n for (var idx = points.length / 2 - 1; idx >= 0; idx--) {\n var i = idx * 2;\n var x0 = points[i] - w / 2;\n var y0 = points[i + 1] - h / 2;\n\n if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) {\n return idx;\n }\n }\n\n return -1;\n }\n});\n\nfunction LargeSymbolDraw() {\n this.group = new graphic.Group();\n}\n\nvar largeSymbolProto = LargeSymbolDraw.prototype;\n\nlargeSymbolProto.isPersistent = function () {\n return !this._incremental;\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} opt\n * @param {Object} [opt.clipShape]\n */\n\n\nlargeSymbolProto.updateData = function (data, opt) {\n this.group.removeAll();\n var symbolEl = new LargeSymbolPath({\n rectHover: true,\n cursor: 'default'\n });\n symbolEl.setShape({\n points: data.getLayout('symbolPoints')\n });\n\n this._setCommon(symbolEl, data, false, opt);\n\n this.group.add(symbolEl);\n this._incremental = null;\n};\n\nlargeSymbolProto.updateLayout = function (data) {\n if (this._incremental) {\n return;\n }\n\n var points = data.getLayout('symbolPoints');\n this.group.eachChild(function (child) {\n if (child.startIndex != null) {\n var len = (child.endIndex - child.startIndex) * 2;\n var byteOffset = child.startIndex * 4 * 2;\n points = new Float32Array(points.buffer, byteOffset, len);\n }\n\n child.setShape('points', points);\n });\n};\n\nlargeSymbolProto.incrementalPrepareUpdate = function (data) {\n this.group.removeAll();\n\n this._clearIncremental(); // Only use incremental displayables when data amount is larger than 2 million.\n // PENDING Incremental data?\n\n\n if (data.count() > 2e6) {\n if (!this._incremental) {\n this._incremental = new IncrementalDisplayable({\n silent: true\n });\n }\n\n this.group.add(this._incremental);\n } else {\n this._incremental = null;\n }\n};\n\nlargeSymbolProto.incrementalUpdate = function (taskParams, data, opt) {\n var symbolEl;\n\n if (this._incremental) {\n symbolEl = new LargeSymbolPath();\n\n this._incremental.addDisplayable(symbolEl, true);\n } else {\n symbolEl = new LargeSymbolPath({\n rectHover: true,\n cursor: 'default',\n startIndex: taskParams.start,\n endIndex: taskParams.end\n });\n symbolEl.incremental = true;\n this.group.add(symbolEl);\n }\n\n symbolEl.setShape({\n points: data.getLayout('symbolPoints')\n });\n\n this._setCommon(symbolEl, data, !!this._incremental, opt);\n};\n\nlargeSymbolProto._setCommon = function (symbolEl, data, isIncremental, opt) {\n var hostModel = data.hostModel;\n opt = opt || {}; // TODO\n // if (data.hasItemVisual.symbolSize) {\n // // TODO typed array?\n // symbolEl.setShape('sizes', data.mapArray(\n // function (idx) {\n // var size = data.getItemVisual(idx, 'symbolSize');\n // return (size instanceof Array) ? size : [size, size];\n // }\n // ));\n // }\n // else {\n\n var size = data.getVisual('symbolSize');\n symbolEl.setShape('size', size instanceof Array ? size : [size, size]); // }\n\n symbolEl.softClipShape = opt.clipShape || null; // Create symbolProxy to build path for each data\n\n symbolEl.symbolProxy = createSymbol(data.getVisual('symbol'), 0, 0, 0, 0); // Use symbolProxy setColor method\n\n symbolEl.setColor = symbolEl.symbolProxy.setColor;\n var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;\n symbolEl.useStyle( // Draw shadow when doing fillRect is extremely slow.\n hostModel.getModel('itemStyle').getItemStyle(extrudeShadow ? ['color', 'shadowBlur', 'shadowColor'] : ['color']));\n var visualColor = data.getVisual('color');\n\n if (visualColor) {\n symbolEl.setColor(visualColor);\n }\n\n if (!isIncremental) {\n // Enable tooltip\n // PENDING May have performance issue when path is extremely large\n symbolEl.seriesIndex = hostModel.seriesIndex;\n symbolEl.on('mousemove', function (e) {\n symbolEl.dataIndex = null;\n var dataIndex = symbolEl.findDataIndex(e.offsetX, e.offsetY);\n\n if (dataIndex >= 0) {\n // Provide dataIndex for tooltip\n symbolEl.dataIndex = dataIndex + (symbolEl.startIndex || 0);\n }\n });\n }\n};\n\nlargeSymbolProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlargeSymbolProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\n }\n};\n\nvar _default = LargeSymbolDraw;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar 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.scatter',\n dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'],\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n brushSelector: 'point',\n getProgressive: function () {\n var progressive = this.option.progressive;\n\n if (progressive == null) {\n // PENDING\n return this.option.large ? 5e3 : this.get('progressive');\n }\n\n return progressive;\n },\n getProgressiveThreshold: function () {\n var progressiveThreshold = this.option.progressiveThreshold;\n\n if (progressiveThreshold == null) {\n // PENDING\n return this.option.large ? 1e4 : this.get('progressiveThreshold');\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n coordinateSystem: 'cartesian2d',\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n hoverAnimation: true,\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // Polar coordinate system\n // polarIndex: 0,\n // Geo coordinate system\n // geoIndex: 0,\n // symbol: null, // 图形类型\n symbolSize: 10,\n // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2\n // symbolRotate: null, // 图形旋转控制\n large: false,\n // Available when large is true\n largeThreshold: 2000,\n // cursor: null,\n // label: {\n // show: false\n // distance: 5,\n // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n // position: 默认自适应,水平布局为'top',垂直布局为'right',可选为\n // 'inside'|'left'|'right'|'top'|'bottom'\n // 默认使用全局文本样式,详见TEXTSTYLE\n // },\n itemStyle: {\n opacity: 0.8 // color: 各异\n\n },\n // If clip the overflow graphics\n // Works on cartesian / polar series\n clip: true // progressive: null\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 echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar axisPointerModelHelper = require(\"./axisPointer/modelHelper\");\n\nvar axisTrigger = require(\"./axisPointer/axisTrigger\");\n\nrequire(\"./axisPointer/AxisPointerModel\");\n\nrequire(\"./axisPointer/AxisPointerView\");\n\nrequire(\"./axisPointer/CartesianAxisPointer\");\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// CartesianAxisPointer is not supposed to be required here. But consider\n// echarts.simple.js and online build tooltip, which only require gridSimple,\n// CartesianAxisPointer should be able to required somewhere.\necharts.registerPreprocessor(function (option) {\n // Always has a global axisPointerModel for default setting.\n if (option) {\n (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {});\n var link = option.axisPointer.link; // Normalize to array to avoid object mergin. But if link\n // is not set, remain null/undefined, otherwise it will\n // override existent link setting.\n\n if (link && !zrUtil.isArray(link)) {\n option.axisPointer.link = [link];\n }\n }\n}); // This process should proformed after coordinate systems created\n// and series data processed. So put it on statistic processing stage.\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\n // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n // allAxesInfo should be updated when setOption performed.\n ecModel.getComponent('axisPointer').coordSysAxesInfo = axisPointerModelHelper.collect(ecModel, api);\n}); // Broadcast to all views.\n\necharts.registerAction({\n type: 'updateAxisPointer',\n event: 'updateAxisPointer',\n update: ':updateAxisPointer'\n}, axisTrigger);","\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(\"./legend/LegendModel\");\n\nrequire(\"./legend/legendAction\");\n\nrequire(\"./legend/LegendView\");\n\nvar legendFilter = require(\"./legend/legendFilter\");\n\nvar Component = require(\"../model/Component\");\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// Do not contain scrollable legend, for sake of file size.\n// Series Filter\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);\nComponent.registerSubTypeDefaulter('legend', function () {\n // Default 'plain' when no type specified.\n return 'plain';\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* 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) {\n return {\n seriesType: seriesType,\n reset: function (seriesModel, ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (!legendModels || !legendModels.length) {\n return;\n }\n\n var data = seriesModel.getData();\n data.filterSelf(function (idx) {\n var name = data.getName(idx); // If in any legend component the status is not selected.\n\n for (var i = 0; i < legendModels.length; i++) {\n if (!legendModels[i].isSelected(name)) {\n return false;\n }\n }\n\n return true;\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 echarts = require(\"../../echarts\");\n\nvar globalListener = require(\"./globalListener\");\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 AxisPointerView = echarts.extendComponentView({\n type: 'axisPointer',\n render: function (globalAxisPointerModel, ecModel, api) {\n var globalTooltipModel = ecModel.getComponent('tooltip');\n var triggerOn = globalAxisPointerModel.get('triggerOn') || globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click'; // Register global listener in AxisPointerView to enable\n // AxisPointerView to be independent to Tooltip.\n\n globalListener.register('axisPointer', api, function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none' && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) {\n dispatchAction({\n type: 'updateAxisPointer',\n currTrigger: currTrigger,\n x: e && e.offsetX,\n y: e && e.offsetY\n });\n }\n });\n },\n\n /**\n * @override\n */\n remove: function (ecModel, api) {\n globalListener.unregister(api.getZr(), 'axisPointer');\n AxisPointerView.superApply(this._model, 'remove', arguments);\n },\n\n /**\n * @override\n */\n dispose: function (ecModel, api) {\n globalListener.unregister('axisPointer', api);\n AxisPointerView.superApply(this._model, 'dispose', arguments);\n }\n});\nvar _default = AxisPointerView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar fixClipWithShadow = require(\"zrender/lib/graphic/helper/fixClipWithShadow\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Poly path support NaN point\nvar vec2Min = vec2.min;\nvar vec2Max = vec2.max;\nvar scaleAndAdd = vec2.scaleAndAdd;\nvar v2Copy = vec2.copy; // Temporary variable\n\nvar v = [];\nvar cp0 = [];\nvar cp1 = [];\n\nfunction isPointNull(p) {\n return isNaN(p[0]) || isNaN(p[1]);\n}\n\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n // if (smoothMonotone == null) {\n // if (isMono(points, 'x')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'x', connectNulls);\n // }\n // else if (isMono(points, 'y')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'y', connectNulls);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n // }\n // else if (smoothMonotone !== 'none' && isMono(points, smoothMonotone)) {\n // return drawMono.apply(this, arguments);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n if (smoothMonotone === 'none' || !smoothMonotone) {\n return drawNonMono.apply(this, arguments);\n } else {\n return drawMono.apply(this, arguments);\n }\n}\n/**\n * Check if points is in monotone.\n *\n * @param {number[][]} points Array of points which is in [x, y] form\n * @param {string} smoothMonotone 'x', 'y', or 'none', stating for which\n * dimension that is checking.\n * If is 'none', `drawNonMono` should be\n * called.\n * If is undefined, either being monotone\n * in 'x' or 'y' will call `drawMono`.\n */\n// function isMono(points, smoothMonotone) {\n// if (points.length <= 1) {\n// return true;\n// }\n// var dim = smoothMonotone === 'x' ? 0 : 1;\n// var last = points[0][dim];\n// var lastDiff = 0;\n// for (var i = 1; i < points.length; ++i) {\n// var diff = points[i][dim] - last;\n// if (!isNaN(diff) && !isNaN(lastDiff)\n// && diff !== 0 && lastDiff !== 0\n// && ((diff >= 0) !== (lastDiff >= 0))\n// ) {\n// return false;\n// }\n// if (!isNaN(diff) && diff !== 0) {\n// lastDiff = diff;\n// last = points[i][dim];\n// }\n// }\n// return true;\n// }\n\n/**\n * Draw smoothed line in monotone, in which only vertical or horizontal bezier\n * control points will be used. This should be used when points are monotone\n * either in x or y dimension.\n */\n\n\nfunction drawMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n } else {\n if (smooth > 0) {\n var prevP = points[prevIdx];\n var dim = smoothMonotone === 'y' ? 1 : 0; // Length of control point to p, either in x or y, but not both\n\n var ctrlLen = (p[dim] - prevP[dim]) * smooth;\n v2Copy(cp0, prevP);\n cp0[dim] = prevP[dim] + ctrlLen;\n v2Copy(cp1, p);\n cp1[dim] = p[dim] - ctrlLen;\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n/**\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\n * situations. This should be used when points are non-monotone neither in x or\n * y dimension.\n */\n\n\nfunction drawNonMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n v2Copy(cp0, p);\n } else {\n if (smooth > 0) {\n var nextIdx = idx + dir;\n var nextP = points[nextIdx];\n\n if (connectNulls) {\n // Find next point not null\n while (nextP && isPointNull(points[nextIdx])) {\n nextIdx += dir;\n nextP = points[nextIdx];\n }\n }\n\n var ratioNextSeg = 0.5;\n var prevP = points[prevIdx];\n var nextP = points[nextIdx]; // Last point\n\n if (!nextP || isPointNull(nextP)) {\n v2Copy(cp1, p);\n } else {\n // If next data is null in not connect case\n if (isPointNull(nextP) && !connectNulls) {\n nextP = p;\n }\n\n vec2.sub(v, nextP, prevP);\n var lenPrevSeg;\n var lenNextSeg;\n\n if (smoothMonotone === 'x' || smoothMonotone === 'y') {\n var dim = smoothMonotone === 'x' ? 0 : 1;\n lenPrevSeg = Math.abs(p[dim] - prevP[dim]);\n lenNextSeg = Math.abs(p[dim] - nextP[dim]);\n } else {\n lenPrevSeg = vec2.dist(p, prevP);\n lenNextSeg = vec2.dist(p, nextP);\n } // Use ratio of seg length\n\n\n ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n scaleAndAdd(cp1, p, v, -smooth * (1 - ratioNextSeg));\n } // Smooth constraint\n\n\n vec2Min(cp0, cp0, smoothMax);\n vec2Max(cp0, cp0, smoothMin);\n vec2Min(cp1, cp1, smoothMax);\n vec2Max(cp1, cp1, smoothMin);\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]); // cp0 of next segment\n\n scaleAndAdd(cp0, p, v, smooth * ratioNextSeg);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n\nfunction getBoundingBox(points, smoothConstraint) {\n var ptMin = [Infinity, Infinity];\n var ptMax = [-Infinity, -Infinity];\n\n if (smoothConstraint) {\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n\n if (pt[0] < ptMin[0]) {\n ptMin[0] = pt[0];\n }\n\n if (pt[1] < ptMin[1]) {\n ptMin[1] = pt[1];\n }\n\n if (pt[0] > ptMax[0]) {\n ptMax[0] = pt[0];\n }\n\n if (pt[1] > ptMax[1]) {\n ptMax[1] = pt[1];\n }\n }\n }\n\n return {\n min: smoothConstraint ? ptMin : ptMax,\n max: smoothConstraint ? ptMax : ptMin\n };\n}\n\nvar Polyline = Path.extend({\n type: 'ec-polyline',\n shape: {\n points: [],\n smooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n style: {\n fill: null,\n stroke: '#000'\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var i = 0;\n var len = points.length;\n var result = getBoundingBox(points, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n i += drawSegment(ctx, points, i, len, len, 1, result.min, result.max, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n }\n }\n});\nvar Polygon = Path.extend({\n type: 'ec-polygon',\n shape: {\n points: [],\n // Offset between stacked base points and points\n stackedOnPoints: [],\n smooth: 0,\n stackedOnSmooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var stackedOnPoints = shape.stackedOnPoints;\n var i = 0;\n var len = points.length;\n var smoothMonotone = shape.smoothMonotone;\n var bbox = getBoundingBox(points, shape.smoothConstraint);\n var stackedOnBBox = getBoundingBox(stackedOnPoints, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n var k = drawSegment(ctx, points, i, len, len, 1, bbox.min, bbox.max, shape.smooth, smoothMonotone, shape.connectNulls);\n drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, stackedOnBBox.min, stackedOnBBox.max, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n i += k + 1;\n ctx.closePath();\n }\n }\n});\nexports.Polyline = Polyline;\nexports.Polygon = Polygon;","import { Vue } from '../vue';\nimport { NAME_CARD } from '../constants/components';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n bgVariant: makeProp(PROP_TYPE_STRING),\n borderVariant: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_CARD); // --- Mixin ---\n// @vue/component\n\nexport var cardMixin = Vue.extend({\n props: props\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar clazzUtil = require(\"../../util/clazz\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar axisPointerModelHelper = require(\"./modelHelper\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar throttleUtil = require(\"../../util/throttle\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\nvar clone = zrUtil.clone;\nvar bind = zrUtil.bind;\n/**\n * Base axis pointer class in 2D.\n * Implemenents {module:echarts/component/axis/IAxisPointer}.\n */\n\nfunction BaseAxisPointer() {}\n\nBaseAxisPointer.prototype = {\n /**\n * @private\n */\n _group: null,\n\n /**\n * @private\n */\n _lastGraphicKey: null,\n\n /**\n * @private\n */\n _handle: null,\n\n /**\n * @private\n */\n _dragging: false,\n\n /**\n * @private\n */\n _lastValue: null,\n\n /**\n * @private\n */\n _lastStatus: null,\n\n /**\n * @private\n */\n _payloadInfo: null,\n\n /**\n * In px, arbitrary value. Do not set too small,\n * no animation is ok for most cases.\n * @protected\n */\n animationThreshold: 15,\n\n /**\n * @implement\n */\n render: function (axisModel, axisPointerModel, api, forceRender) {\n var value = axisPointerModel.get('value');\n var status = axisPointerModel.get('status'); // Bind them to `this`, not in closure, otherwise they will not\n // be replaced when user calling setOption in not merge mode.\n\n this._axisModel = axisModel;\n this._axisPointerModel = axisPointerModel;\n this._api = api; // Optimize: `render` will be called repeatly during mouse move.\n // So it is power consuming if performing `render` each time,\n // especially on mobile device.\n\n if (!forceRender && this._lastValue === value && this._lastStatus === status) {\n return;\n }\n\n this._lastValue = value;\n this._lastStatus = status;\n var group = this._group;\n var handle = this._handle;\n\n if (!status || status === 'hide') {\n // Do not clear here, for animation better.\n group && group.hide();\n handle && handle.hide();\n return;\n }\n\n group && group.show();\n handle && handle.show(); // Otherwise status is 'show'\n\n var elOption = {};\n this.makeElOption(elOption, value, axisModel, axisPointerModel, api); // Enable change axis pointer type.\n\n var graphicKey = elOption.graphicKey;\n\n if (graphicKey !== this._lastGraphicKey) {\n this.clear(api);\n }\n\n this._lastGraphicKey = graphicKey;\n var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel);\n\n if (!group) {\n group = this._group = new graphic.Group();\n this.createPointerEl(group, elOption, axisModel, axisPointerModel);\n this.createLabelEl(group, elOption, axisModel, axisPointerModel);\n api.getZr().add(group);\n } else {\n var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);\n this.updatePointerEl(group, elOption, doUpdateProps, axisPointerModel);\n this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\n }\n\n updateMandatoryProps(group, axisPointerModel, true);\n\n this._renderHandle(value);\n },\n\n /**\n * @implement\n */\n remove: function (api) {\n this.clear(api);\n },\n\n /**\n * @implement\n */\n dispose: function (api) {\n this.clear(api);\n },\n\n /**\n * @protected\n */\n determineAnimation: function (axisModel, axisPointerModel) {\n var animation = axisPointerModel.get('animation');\n var axis = axisModel.axis;\n var isCategoryAxis = axis.type === 'category';\n var useSnap = axisPointerModel.get('snap'); // Value axis without snap always do not snap.\n\n if (!useSnap && !isCategoryAxis) {\n return false;\n }\n\n if (animation === 'auto' || animation == null) {\n var animationThreshold = this.animationThreshold;\n\n if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\n return true;\n } // It is important to auto animation when snap used. Consider if there is\n // a dataZoom, animation will be disabled when too many points exist, while\n // it will be enabled for better visual effect when little points exist.\n\n\n if (useSnap) {\n var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;\n var axisExtent = axis.getExtent(); // Approximate band width\n\n return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\n }\n\n return false;\n }\n\n return animation === true;\n },\n\n /**\n * add {pointer, label, graphicKey} to elOption\n * @protected\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {// Shoule be implemenented by sub-class.\n },\n\n /**\n * @protected\n */\n createPointerEl: function (group, elOption, axisModel, axisPointerModel) {\n var pointerOption = elOption.pointer;\n\n if (pointerOption) {\n var pointerEl = inner(group).pointerEl = new graphic[pointerOption.type](clone(elOption.pointer));\n group.add(pointerEl);\n }\n },\n\n /**\n * @protected\n */\n createLabelEl: function (group, elOption, axisModel, axisPointerModel) {\n if (elOption.label) {\n var labelEl = inner(group).labelEl = new graphic.Rect(clone(elOption.label));\n group.add(labelEl);\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n },\n\n /**\n * @protected\n */\n updatePointerEl: function (group, elOption, updateProps) {\n var pointerEl = inner(group).pointerEl;\n\n if (pointerEl && elOption.pointer) {\n pointerEl.setStyle(elOption.pointer.style);\n updateProps(pointerEl, {\n shape: elOption.pointer.shape\n });\n }\n },\n\n /**\n * @protected\n */\n updateLabelEl: function (group, elOption, updateProps, axisPointerModel) {\n var labelEl = inner(group).labelEl;\n\n if (labelEl) {\n labelEl.setStyle(elOption.label.style);\n updateProps(labelEl, {\n // Consider text length change in vertical axis, animation should\n // be used on shape, otherwise the effect will be weird.\n shape: elOption.label.shape,\n position: elOption.label.position\n });\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n },\n\n /**\n * @private\n */\n _renderHandle: function (value) {\n if (this._dragging || !this.updateHandleTransform) {\n return;\n }\n\n var axisPointerModel = this._axisPointerModel;\n\n var zr = this._api.getZr();\n\n var handle = this._handle;\n var handleModel = axisPointerModel.getModel('handle');\n var status = axisPointerModel.get('status');\n\n if (!handleModel.get('show') || !status || status === 'hide') {\n handle && zr.remove(handle);\n this._handle = null;\n return;\n }\n\n var isInit;\n\n if (!this._handle) {\n isInit = true;\n handle = this._handle = graphic.createIcon(handleModel.get('icon'), {\n cursor: 'move',\n draggable: true,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n onmousedown: bind(this._onHandleDragMove, this, 0, 0),\n drift: bind(this._onHandleDragMove, this),\n ondragend: bind(this._onHandleDragEnd, this)\n });\n zr.add(handle);\n }\n\n updateMandatoryProps(handle, axisPointerModel, false); // update style\n\n var includeStyles = ['color', 'borderColor', 'borderWidth', 'opacity', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\n handle.setStyle(handleModel.getItemStyle(null, includeStyles)); // update position\n\n var handleSize = handleModel.get('size');\n\n if (!zrUtil.isArray(handleSize)) {\n handleSize = [handleSize, handleSize];\n }\n\n handle.attr('scale', [handleSize[0] / 2, handleSize[1] / 2]);\n throttleUtil.createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate');\n\n this._moveHandleToValue(value, isInit);\n },\n\n /**\n * @private\n */\n _moveHandleToValue: function (value, isInit) {\n updateProps(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));\n },\n\n /**\n * @private\n */\n _onHandleDragMove: function (dx, dy) {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n this._dragging = true; // Persistent for throttle.\n\n var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);\n this._payloadInfo = trans;\n handle.stopAnimation();\n handle.attr(getHandleTransProps(trans));\n inner(handle).lastProp = null;\n\n this._doDispatchAxisPointer();\n },\n\n /**\n * Throttled method.\n * @private\n */\n _doDispatchAxisPointer: function () {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var payloadInfo = this._payloadInfo;\n var axisModel = this._axisModel;\n\n this._api.dispatchAction({\n type: 'updateAxisPointer',\n x: payloadInfo.cursorPoint[0],\n y: payloadInfo.cursorPoint[1],\n tooltipOption: payloadInfo.tooltipOption,\n axesInfo: [{\n axisDim: axisModel.axis.dim,\n axisIndex: axisModel.componentIndex\n }]\n });\n },\n\n /**\n * @private\n */\n _onHandleDragEnd: function (moveAnimation) {\n this._dragging = false;\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var value = this._axisPointerModel.get('value'); // Consider snap or categroy axis, handle may be not consistent with\n // axisPointer. So move handle to align the exact value position when\n // drag ended.\n\n\n this._moveHandleToValue(value); // For the effect: tooltip will be shown when finger holding on handle\n // button, and will be hidden after finger left handle button.\n\n\n this._api.dispatchAction({\n type: 'hideTip'\n });\n },\n\n /**\n * Should be implemenented by sub-class if support `handle`.\n * @protected\n * @param {number} value\n * @param {module:echarts/model/Model} axisModel\n * @param {module:echarts/model/Model} axisPointerModel\n * @return {Object} {position: [x, y], rotation: 0}\n */\n getHandleTransform: null,\n\n /**\n * * Should be implemenented by sub-class if support `handle`.\n * @protected\n * @param {Object} transform {position, rotation}\n * @param {Array.} delta [dx, dy]\n * @param {module:echarts/model/Model} axisModel\n * @param {module:echarts/model/Model} axisPointerModel\n * @return {Object} {position: [x, y], rotation: 0, cursorPoint: [x, y]}\n */\n updateHandleTransform: null,\n\n /**\n * @private\n */\n clear: function (api) {\n this._lastValue = null;\n this._lastStatus = null;\n var zr = api.getZr();\n var group = this._group;\n var handle = this._handle;\n\n if (zr && group) {\n this._lastGraphicKey = null;\n group && zr.remove(group);\n handle && zr.remove(handle);\n this._group = null;\n this._handle = null;\n this._payloadInfo = null;\n }\n },\n\n /**\n * @protected\n */\n doClear: function () {// Implemented by sub-class if necessary.\n },\n\n /**\n * @protected\n * @param {Array.} xy\n * @param {Array.} wh\n * @param {number} [xDimIndex=0] or 1\n */\n buildLabel: function (xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n }\n};\nBaseAxisPointer.prototype.constructor = BaseAxisPointer;\n\nfunction updateProps(animationModel, moveAnimation, el, props) {\n // Animation optimize.\n if (!propsEqual(inner(el).lastProp, props)) {\n inner(el).lastProp = props;\n moveAnimation ? graphic.updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props));\n }\n}\n\nfunction propsEqual(lastProps, newProps) {\n if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {\n var equals = true;\n zrUtil.each(newProps, function (item, key) {\n equals = equals && propsEqual(lastProps[key], item);\n });\n return !!equals;\n } else {\n return lastProps === newProps;\n }\n}\n\nfunction updateLabelShowHide(labelEl, axisPointerModel) {\n labelEl[axisPointerModel.get('label.show') ? 'show' : 'hide']();\n}\n\nfunction getHandleTransProps(trans) {\n return {\n position: trans.position.slice(),\n rotation: trans.rotation || 0\n };\n}\n\nfunction updateMandatoryProps(group, axisPointerModel, silent) {\n var z = axisPointerModel.get('z');\n var zlevel = axisPointerModel.get('zlevel');\n group && group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n el.silent = silent;\n }\n });\n}\n\nclazzUtil.enableClassExtend(BaseAxisPointer);\nvar _default = BaseAxisPointer;\nmodule.exports = _default;","import { Vue } from '../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptFocus, isVisible, matches, requestAF, select } from '../utils/dom';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Constants ---\n\nvar SELECTOR = 'input, textarea, select'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n autofocus: makeProp(PROP_TYPE_BOOLEAN, false),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n form: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n name: makeProp(PROP_TYPE_STRING),\n required: makeProp(PROP_TYPE_BOOLEAN, false)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formControlMixin = Vue.extend({\n props: props,\n mounted: function mounted() {\n this.handleAutofocus();\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.handleAutofocus();\n },\n methods: {\n handleAutofocus: function handleAutofocus() {\n var _this = this;\n\n this.$nextTick(function () {\n requestAF(function () {\n var el = _this.$el;\n\n if (_this.autofocus && isVisible(el)) {\n if (!matches(el, SELECTOR)) {\n el = select(SELECTOR, el);\n }\n\n attemptFocus(el);\n }\n });\n });\n }\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar List = require(\"../../data/List\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar extend = _util.extend;\nvar isArray = _util.isArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [Usage]:\n * (1)\n * createListSimply(seriesModel, ['value']);\n * (2)\n * createListSimply(seriesModel, {\n * coordDimensions: ['value'],\n * dimensionsCount: 5\n * });\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object|Array.} opt opt or coordDimensions\n * The options in opt, see `echarts/data/helper/createDimensions`\n * @param {Array.} [nameList]\n * @return {module:echarts/data/List}\n */\nfunction _default(seriesModel, opt, nameList) {\n opt = isArray(opt) && {\n coordDimensions: opt\n } || extend({}, opt);\n var source = seriesModel.getSource();\n var dimensionsInfo = createDimensions(source, opt);\n var list = new List(dimensionsInfo, seriesModel);\n list.initData(source, nameList);\n return list;\n}\n\nmodule.exports = _default;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_BADGE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n pill: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_BADGE); // --- Main component ---\n// @vue/component\n\nexport var BBadge = /*#__PURE__*/Vue.extend({\n name: NAME_BADGE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var active = props.active,\n disabled = props.disabled;\n var link = isLink(props);\n var tag = link ? BLink : props.tag;\n var variant = props.variant || 'secondary';\n return h(tag, mergeData(data, {\n staticClass: 'badge',\n class: [\"badge-\".concat(variant), {\n 'badge-pill': props.pill,\n active: active,\n disabled: disabled\n }],\n props: link ? pluckProps(linkProps, props) : {}\n }), children);\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar modelHelper = require(\"./modelHelper\");\n\nvar findPointFromSeries = require(\"./findPointFromSeries\");\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 each = zrUtil.each;\nvar curry = zrUtil.curry;\nvar inner = makeInner();\n/**\n * Basic logic: check all axis, if they do not demand show/highlight,\n * then hide/downplay them.\n *\n * @param {Object} coordSysAxesInfo\n * @param {Object} payload\n * @param {string} [payload.currTrigger] 'click' | 'mousemove' | 'leave'\n * @param {Array.} [payload.x] x and y, which are mandatory, specify a point to\n * trigger axisPointer and tooltip.\n * @param {Array.} [payload.y] x and y, which are mandatory, specify a point to\n * trigger axisPointer and tooltip.\n * @param {Object} [payload.seriesIndex] finder, optional, restrict target axes.\n * @param {Object} [payload.dataIndex] finder, restrict target axes.\n * @param {Object} [payload.axesInfo] finder, restrict target axes.\n * [{\n * axisDim: 'x'|'y'|'angle'|...,\n * axisIndex: ...,\n * value: ...\n * }, ...]\n * @param {Function} [payload.dispatchAction]\n * @param {Object} [payload.tooltipOption]\n * @param {Object|Array.|Function} [payload.position] Tooltip position,\n * which can be specified in dispatchAction\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @return {Object} content of event obj for echarts.connect.\n */\n\nfunction _default(payload, ecModel, api) {\n var currTrigger = payload.currTrigger;\n var point = [payload.x, payload.y];\n var finder = payload;\n var dispatchAction = payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; // Pending\n // See #6121. But we are not able to reproduce it yet.\n\n if (!coordSysAxesInfo) {\n return;\n }\n\n if (illegalPoint(point)) {\n // Used in the default behavior of `connection`: use the sample seriesIndex\n // and dataIndex. And also used in the tooltipView trigger.\n point = findPointFromSeries({\n seriesIndex: finder.seriesIndex,\n // Do not use dataIndexInside from other ec instance.\n // FIXME: auto detect it?\n dataIndex: finder.dataIndex\n }, ecModel).point;\n }\n\n var isIllegalPoint = illegalPoint(point); // Axis and value can be specified when calling dispatchAction({type: 'updateAxisPointer'}).\n // Notice: In this case, it is difficult to get the `point` (which is necessary to show\n // tooltip, so if point is not given, we just use the point found by sample seriesIndex\n // and dataIndex.\n\n var inputAxesInfo = finder.axesInfo;\n var axesInfo = coordSysAxesInfo.axesInfo;\n var shouldHide = currTrigger === 'leave' || illegalPoint(point);\n var outputFinder = {};\n var showValueMap = {};\n var dataByCoordSys = {\n list: [],\n map: {}\n };\n var updaters = {\n showPointer: curry(showPointer, showValueMap),\n showTooltip: curry(showTooltip, dataByCoordSys)\n }; // Process for triggered axes.\n\n each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {\n // If a point given, it must be contained by the coordinate system.\n var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);\n each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {\n var axis = axisInfo.axis;\n var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); // If no inputAxesInfo, no axis is restricted.\n\n if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {\n var val = inputAxisInfo && inputAxisInfo.value;\n\n if (val == null && !isIllegalPoint) {\n val = axis.pointToData(point);\n }\n\n val != null && processOnAxis(axisInfo, val, updaters, false, outputFinder);\n }\n });\n }); // Process for linked axes.\n\n var linkTriggers = {};\n each(axesInfo, function (tarAxisInfo, tarKey) {\n var linkGroup = tarAxisInfo.linkGroup; // If axis has been triggered in the previous stage, it should not be triggered by link.\n\n if (linkGroup && !showValueMap[tarKey]) {\n each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {\n var srcValItem = showValueMap[srcKey]; // If srcValItem exist, source axis is triggered, so link to target axis.\n\n if (srcAxisInfo !== tarAxisInfo && srcValItem) {\n var val = srcValItem.value;\n linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));\n linkTriggers[tarAxisInfo.key] = val;\n }\n });\n }\n });\n each(linkTriggers, function (val, tarKey) {\n processOnAxis(axesInfo[tarKey], val, updaters, true, outputFinder);\n });\n updateModelActually(showValueMap, axesInfo, outputFinder);\n dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction);\n dispatchHighDownActually(axesInfo, dispatchAction, api);\n return outputFinder;\n}\n\nfunction processOnAxis(axisInfo, newValue, updaters, dontSnap, outputFinder) {\n var axis = axisInfo.axis;\n\n if (axis.scale.isBlank() || !axis.containData(newValue)) {\n return;\n }\n\n if (!axisInfo.involveSeries) {\n updaters.showPointer(axisInfo, newValue);\n return;\n } // Heavy calculation. So put it after axis.containData checking.\n\n\n var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);\n var payloadBatch = payloadInfo.payloadBatch;\n var snapToValue = payloadInfo.snapToValue; // Fill content of event obj for echarts.connect.\n // By defualt use the first involved series data as a sample to connect.\n\n if (payloadBatch[0] && outputFinder.seriesIndex == null) {\n zrUtil.extend(outputFinder, payloadBatch[0]);\n } // If no linkSource input, this process is for collecting link\n // target, where snap should not be accepted.\n\n\n if (!dontSnap && axisInfo.snap) {\n if (axis.containData(snapToValue) && snapToValue != null) {\n newValue = snapToValue;\n }\n }\n\n updaters.showPointer(axisInfo, newValue, payloadBatch, outputFinder); // Tooltip should always be snapToValue, otherwise there will be\n // incorrect \"axis value ~ series value\" mapping displayed in tooltip.\n\n updaters.showTooltip(axisInfo, payloadInfo, snapToValue);\n}\n\nfunction buildPayloadsBySeries(value, axisInfo) {\n var axis = axisInfo.axis;\n var dim = axis.dim;\n var snapToValue = value;\n var payloadBatch = [];\n var minDist = Number.MAX_VALUE;\n var minDiff = -1;\n each(axisInfo.seriesModels, function (series, idx) {\n var dataDim = series.getData().mapDimension(dim, true);\n var seriesNestestValue;\n var dataIndices;\n\n if (series.getAxisTooltipData) {\n var result = series.getAxisTooltipData(dataDim, value, axis);\n dataIndices = result.dataIndices;\n seriesNestestValue = result.nestestValue;\n } else {\n dataIndices = series.getData().indicesOfNearest(dataDim[0], value, // Add a threshold to avoid find the wrong dataIndex\n // when data length is not same.\n // false,\n axis.type === 'category' ? 0.5 : null);\n\n if (!dataIndices.length) {\n return;\n }\n\n seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);\n }\n\n if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {\n return;\n }\n\n var diff = value - seriesNestestValue;\n var dist = Math.abs(diff); // Consider category case\n\n if (dist <= minDist) {\n if (dist < minDist || diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n snapToValue = seriesNestestValue;\n payloadBatch.length = 0;\n }\n\n each(dataIndices, function (dataIndex) {\n payloadBatch.push({\n seriesIndex: series.seriesIndex,\n dataIndexInside: dataIndex,\n dataIndex: series.getData().getRawIndex(dataIndex)\n });\n });\n }\n });\n return {\n payloadBatch: payloadBatch,\n snapToValue: snapToValue\n };\n}\n\nfunction showPointer(showValueMap, axisInfo, value, payloadBatch) {\n showValueMap[axisInfo.key] = {\n value: value,\n payloadBatch: payloadBatch\n };\n}\n\nfunction showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {\n var payloadBatch = payloadInfo.payloadBatch;\n var axis = axisInfo.axis;\n var axisModel = axis.model;\n var axisPointerModel = axisInfo.axisPointerModel; // If no data, do not create anything in dataByCoordSys,\n // whose length will be used to judge whether dispatch action.\n\n if (!axisInfo.triggerTooltip || !payloadBatch.length) {\n return;\n }\n\n var coordSysModel = axisInfo.coordSys.model;\n var coordSysKey = modelHelper.makeKey(coordSysModel);\n var coordSysItem = dataByCoordSys.map[coordSysKey];\n\n if (!coordSysItem) {\n coordSysItem = dataByCoordSys.map[coordSysKey] = {\n coordSysId: coordSysModel.id,\n coordSysIndex: coordSysModel.componentIndex,\n coordSysType: coordSysModel.type,\n coordSysMainType: coordSysModel.mainType,\n dataByAxis: []\n };\n dataByCoordSys.list.push(coordSysItem);\n }\n\n coordSysItem.dataByAxis.push({\n axisDim: axis.dim,\n axisIndex: axisModel.componentIndex,\n axisType: axisModel.type,\n axisId: axisModel.id,\n value: value,\n // Caustion: viewHelper.getValueLabel is actually on \"view stage\", which\n // depends that all models have been updated. So it should not be performed\n // here. Considering axisPointerModel used here is volatile, which is hard\n // to be retrieve in TooltipView, we prepare parameters here.\n valueLabelOpt: {\n precision: axisPointerModel.get('label.precision'),\n formatter: axisPointerModel.get('label.formatter')\n },\n seriesDataIndices: payloadBatch.slice()\n });\n}\n\nfunction updateModelActually(showValueMap, axesInfo, outputFinder) {\n var outputAxesInfo = outputFinder.axesInfo = []; // Basic logic: If no 'show' required, 'hide' this axisPointer.\n\n each(axesInfo, function (axisInfo, key) {\n var option = axisInfo.axisPointerModel.option;\n var valItem = showValueMap[key];\n\n if (valItem) {\n !axisInfo.useHandle && (option.status = 'show');\n option.value = valItem.value; // For label formatter param and highlight.\n\n option.seriesDataIndices = (valItem.payloadBatch || []).slice();\n } // When always show (e.g., handle used), remain\n // original value and status.\n else {\n // If hide, value still need to be set, consider\n // click legend to toggle axis blank.\n !axisInfo.useHandle && (option.status = 'hide');\n } // If status is 'hide', should be no info in payload.\n\n\n option.status === 'show' && outputAxesInfo.push({\n axisDim: axisInfo.axis.dim,\n axisIndex: axisInfo.axis.model.componentIndex,\n value: option.value\n });\n });\n}\n\nfunction dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) {\n // Basic logic: If no showTip required, hideTip will be dispatched.\n if (illegalPoint(point) || !dataByCoordSys.list.length) {\n dispatchAction({\n type: 'hideTip'\n });\n return;\n } // In most case only one axis (or event one series is used). It is\n // convinient to fetch payload.seriesIndex and payload.dataIndex\n // dirtectly. So put the first seriesIndex and dataIndex of the first\n // axis on the payload.\n\n\n var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};\n dispatchAction({\n type: 'showTip',\n escapeConnect: true,\n x: point[0],\n y: point[1],\n tooltipOption: payload.tooltipOption,\n position: payload.position,\n dataIndexInside: sampleItem.dataIndexInside,\n dataIndex: sampleItem.dataIndex,\n seriesIndex: sampleItem.seriesIndex,\n dataByCoordSys: dataByCoordSys.list\n });\n}\n\nfunction dispatchHighDownActually(axesInfo, dispatchAction, api) {\n // FIXME\n // highlight status modification shoule be a stage of main process?\n // (Consider confilct (e.g., legend and axisPointer) and setOption)\n var zr = api.getZr();\n var highDownKey = 'axisPointerLastHighlights';\n var lastHighlights = inner(zr)[highDownKey] || {};\n var newHighlights = inner(zr)[highDownKey] = {}; // Update highlight/downplay status according to axisPointer model.\n // Build hash map and remove duplicate incidentally.\n\n each(axesInfo, function (axisInfo, key) {\n var option = axisInfo.axisPointerModel.option;\n option.status === 'show' && each(option.seriesDataIndices, function (batchItem) {\n var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;\n newHighlights[key] = batchItem;\n });\n }); // Diff.\n\n var toHighlight = [];\n var toDownplay = [];\n zrUtil.each(lastHighlights, function (batchItem, key) {\n !newHighlights[key] && toDownplay.push(batchItem);\n });\n zrUtil.each(newHighlights, function (batchItem, key) {\n !lastHighlights[key] && toHighlight.push(batchItem);\n });\n toDownplay.length && api.dispatchAction({\n type: 'downplay',\n escapeConnect: true,\n batch: toDownplay\n });\n toHighlight.length && api.dispatchAction({\n type: 'highlight',\n escapeConnect: true,\n batch: toHighlight\n });\n}\n\nfunction findInputAxisInfo(inputAxesInfo, axisInfo) {\n for (var i = 0; i < (inputAxesInfo || []).length; i++) {\n var inputAxisInfo = inputAxesInfo[i];\n\n if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {\n return inputAxisInfo;\n }\n }\n}\n\nfunction makeMapperParam(axisInfo) {\n var axisModel = axisInfo.axis.model;\n var item = {};\n var dim = item.axisDim = axisInfo.axis.dim;\n item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;\n item.axisName = item[dim + 'AxisName'] = axisModel.name;\n item.axisId = item[dim + 'AxisId'] = axisModel.id;\n return item;\n}\n\nfunction illegalPoint(point) {\n return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\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;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar SymbolClz = require(\"./Symbol\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isObject = _util.isObject;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/SymbolDraw\n */\n\n/**\n * @constructor\n * @alias module:echarts/chart/helper/SymbolDraw\n * @param {module:zrender/graphic/Group} [symbolCtor]\n */\nfunction SymbolDraw(symbolCtor) {\n this.group = new graphic.Group();\n this._symbolCtor = symbolCtor || SymbolClz;\n}\n\nvar symbolDrawProto = SymbolDraw.prototype;\n\nfunction symbolNeedsDraw(data, point, idx, opt) {\n return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) // We do not set clipShape on group, because it will cut part of\n // the symbol element shape. We use the same clip shape here as\n // the line clip.\n && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.updateData = function (data, opt) {\n opt = normalizeUpdateOpt(opt);\n var group = this.group;\n var seriesModel = data.hostModel;\n var oldData = this._data;\n var SymbolCtor = this._symbolCtor;\n var seriesScope = makeSeriesScope(data); // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!oldData) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n var point = data.getItemLayout(newIdx);\n\n if (symbolNeedsDraw(data, point, newIdx, opt)) {\n var symbolEl = new SymbolCtor(data, newIdx, seriesScope);\n symbolEl.attr('position', point);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\n var point = data.getItemLayout(newIdx);\n\n if (!symbolNeedsDraw(data, point, newIdx, opt)) {\n group.remove(symbolEl);\n return;\n }\n\n if (!symbolEl) {\n symbolEl = new SymbolCtor(data, newIdx);\n symbolEl.attr('position', point);\n } else {\n symbolEl.updateData(data, newIdx, seriesScope);\n graphic.updateProps(symbolEl, {\n position: point\n }, seriesModel);\n } // Add back\n\n\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && el.fadeOut(function () {\n group.remove(el);\n });\n }).execute();\n this._data = data;\n};\n\nsymbolDrawProto.isPersistent = function () {\n return true;\n};\n\nsymbolDrawProto.updateLayout = function () {\n var data = this._data;\n\n if (data) {\n // Not use animation\n data.eachItemGraphicEl(function (el, idx) {\n var point = data.getItemLayout(idx);\n el.attr('position', point);\n });\n }\n};\n\nsymbolDrawProto.incrementalPrepareUpdate = function (data) {\n this._seriesScope = makeSeriesScope(data);\n this._data = null;\n this.group.removeAll();\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.incrementalUpdate = function (taskParams, data, opt) {\n opt = normalizeUpdateOpt(opt);\n\n function updateIncrementalAndHover(el) {\n if (!el.isGroup) {\n el.incremental = el.useHoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var point = data.getItemLayout(idx);\n\n if (symbolNeedsDraw(data, point, idx, opt)) {\n var el = new this._symbolCtor(data, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n el.attr('position', point);\n this.group.add(el);\n data.setItemGraphicEl(idx, el);\n }\n }\n};\n\nfunction normalizeUpdateOpt(opt) {\n if (opt != null && !isObject(opt)) {\n opt = {\n isIgnore: opt\n };\n }\n\n return opt || {};\n}\n\nsymbolDrawProto.remove = function (enableAnimation) {\n var group = this.group;\n var data = this._data; // Incremental model do not have this._data.\n\n if (data && enableAnimation) {\n data.eachItemGraphicEl(function (el) {\n el.fadeOut(function () {\n group.remove(el);\n });\n });\n } else {\n group.removeAll();\n }\n};\n\nfunction makeSeriesScope(data) {\n var seriesModel = data.hostModel;\n return {\n itemStyle: seriesModel.getModel('itemStyle').getItemStyle(['color']),\n hoverItemStyle: seriesModel.getModel('emphasis.itemStyle').getItemStyle(),\n symbolRotate: seriesModel.get('symbolRotate'),\n symbolOffset: seriesModel.get('symbolOffset'),\n hoverAnimation: seriesModel.get('hoverAnimation'),\n labelModel: seriesModel.getModel('label'),\n hoverLabelModel: seriesModel.getModel('emphasis.label'),\n cursorStyle: seriesModel.get('cursor')\n };\n}\n\nvar _default = SymbolDraw;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar _number = require(\"../../util/number\");\n\nvar getPercentWithPrecision = _number.getPercentWithPrecision;\n\nvar dataSelectableMixin = require(\"../../component/helper/selectableMixin\");\n\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawAttr = _dataProvider.retrieveRawAttr;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;\n\nvar LegendVisualProvider = require(\"../../visual/LegendVisualProvider\");\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 PieSeries = echarts.extendSeriesModel({\n type: 'series.pie',\n // Overwrite\n init: function (option) {\n PieSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n this.updateSelectedMap(this._createSelectableList());\n\n this._defaultLabelLine(option);\n },\n // Overwrite\n mergeOption: function (newOption) {\n PieSeries.superCall(this, 'mergeOption', newOption);\n this.updateSelectedMap(this._createSelectableList());\n },\n getInitialData: function (option, ecModel) {\n return createListSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n },\n _createSelectableList: function () {\n var data = this.getRawData();\n var valueDim = data.mapDimension('value');\n var targetList = [];\n\n for (var i = 0, len = data.count(); i < len; i++) {\n targetList.push({\n name: data.getName(i),\n value: data.get(valueDim, i),\n selected: retrieveRawAttr(data, i, 'selected')\n });\n }\n\n return targetList;\n },\n // Overwrite\n getDataParams: function (dataIndex) {\n var data = this.getData();\n var params = PieSeries.superCall(this, 'getDataParams', dataIndex); // FIXME toFixed?\n\n var valueList = [];\n data.each(data.mapDimension('value'), function (value) {\n valueList.push(value);\n });\n params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get('percentPrecision'));\n params.$vars.push('percent');\n return params;\n },\n _defaultLabelLine: function (option) {\n // Extend labelLine emphasis\n modelUtil.defaultEmphasis(option, 'labelLine', ['show']);\n var labelLineNormalOpt = option.labelLine;\n var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n hoverAnimation: true,\n // 默认全局居中\n center: ['50%', '50%'],\n radius: [0, '75%'],\n // 默认顺时针\n clockwise: true,\n startAngle: 90,\n // 最小角度改为0\n minAngle: 0,\n // If the angle of a sector less than `minShowLabelAngle`,\n // the label will not be displayed.\n minShowLabelAngle: 0,\n // 选中时扇区偏移量\n selectedOffset: 10,\n // 高亮扇区偏移量\n hoverOffset: 10,\n // If use strategy to avoid label overlapping\n avoidLabelOverlap: true,\n // 选择模式,默认关闭,可选single,multiple\n // selectedMode: false,\n // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积)\n // roseType: null,\n percentPrecision: 2,\n // If still show when all data zero.\n stillShowZeroSum: true,\n // cursor: null,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n width: null,\n height: null,\n label: {\n // If rotate around circle\n rotate: false,\n show: true,\n // 'outer', 'inside', 'center'\n position: 'outer',\n // 'none', 'labelLine', 'edge'. Works only when position is 'outer'\n alignTo: 'none',\n // Closest distance between label and chart edge.\n // Works only position is 'outer' and alignTo is 'edge'.\n margin: '25%',\n // Works only position is 'outer' and alignTo is not 'edge'.\n bleedMargin: 10,\n // Distance between text and label line.\n distanceToLabelLine: 5 // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n // 默认使用全局文本样式,详见TEXTSTYLE\n // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数\n\n },\n // Enabled when label.normal.position is 'outer'\n labelLine: {\n show: true,\n // 引导线两段中的第一段长度\n length: 15,\n // 引导线两段中的第二段长度\n length2: 15,\n smooth: false,\n lineStyle: {\n // color: 各异,\n width: 1,\n type: 'solid'\n }\n },\n itemStyle: {\n borderWidth: 1\n },\n // Animation type. Valid values: expansion, scale\n animationType: 'expansion',\n // Animation type when update. Valid values: transition, expansion\n animationTypeUpdate: 'transition',\n animationEasing: 'cubicOut'\n }\n});\nzrUtil.mixin(PieSeries, dataSelectableMixin);\nvar _default = PieSeries;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\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 = 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;","\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 graphic = require(\"../../util/graphic\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar AxisBuilder = require(\"../axis/AxisBuilder\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/model/Model} axisPointerModel\n */\nfunction buildElStyle(axisPointerModel) {\n var axisPointerType = axisPointerModel.get('type');\n var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\n var style;\n\n if (axisPointerType === 'line') {\n style = styleModel.getLineStyle();\n style.fill = null;\n } else if (axisPointerType === 'shadow') {\n style = styleModel.getAreaStyle();\n style.stroke = null;\n }\n\n return style;\n}\n/**\n * @param {Function} labelPos {align, verticalAlign, position}\n */\n\n\nfunction buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\n var value = axisPointerModel.get('value');\n var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\n precision: axisPointerModel.get('label.precision'),\n formatter: axisPointerModel.get('label.formatter')\n });\n var labelModel = axisPointerModel.getModel('label');\n var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);\n var font = labelModel.getFont();\n var textRect = textContain.getBoundingRect(text, font);\n var position = labelPos.position;\n var width = textRect.width + paddings[1] + paddings[3];\n var height = textRect.height + paddings[0] + paddings[2]; // Adjust by align.\n\n var align = labelPos.align;\n align === 'right' && (position[0] -= width);\n align === 'center' && (position[0] -= width / 2);\n var verticalAlign = labelPos.verticalAlign;\n verticalAlign === 'bottom' && (position[1] -= height);\n verticalAlign === 'middle' && (position[1] -= height / 2); // Not overflow ec container\n\n confineInContainer(position, width, height, api);\n var bgColor = labelModel.get('backgroundColor');\n\n if (!bgColor || bgColor === 'auto') {\n bgColor = axisModel.get('axisLine.lineStyle.color');\n }\n\n elOption.label = {\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height,\n r: labelModel.get('borderRadius')\n },\n position: position.slice(),\n // TODO: rich\n style: {\n text: text,\n textFont: font,\n textFill: labelModel.getTextColor(),\n textPosition: 'inside',\n textPadding: paddings,\n fill: bgColor,\n stroke: labelModel.get('borderColor') || 'transparent',\n lineWidth: labelModel.get('borderWidth') || 0,\n shadowBlur: labelModel.get('shadowBlur'),\n shadowColor: labelModel.get('shadowColor'),\n shadowOffsetX: labelModel.get('shadowOffsetX'),\n shadowOffsetY: labelModel.get('shadowOffsetY')\n },\n // Lable should be over axisPointer.\n z2: 10\n };\n} // Do not overflow ec container\n\n\nfunction confineInContainer(position, width, height, api) {\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n position[0] = Math.min(position[0] + width, viewWidth) - width;\n position[1] = Math.min(position[1] + height, viewHeight) - height;\n position[0] = Math.max(position[0], 0);\n position[1] = Math.max(position[1], 0);\n}\n/**\n * @param {number} value\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} opt\n * @param {Array.} seriesDataIndices\n * @param {number|string} opt.precision 'auto' or a number\n * @param {string|Function} opt.formatter label formatter\n */\n\n\nfunction getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\n value = axis.scale.parse(value);\n var text = axis.scale.getLabel( // If `precision` is set, width can be fixed (like '12.00500'), which\n // helps to debounce when when moving label.\n value, {\n precision: opt.precision\n });\n var formatter = opt.formatter;\n\n if (formatter) {\n var params = {\n value: axisHelper.getAxisRawValue(axis, value),\n axisDimension: axis.dim,\n axisIndex: axis.index,\n seriesData: []\n };\n zrUtil.each(seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var dataParams = series && series.getDataParams(dataIndex);\n dataParams && params.seriesData.push(dataParams);\n });\n\n if (zrUtil.isString(formatter)) {\n text = formatter.replace('{value}', text);\n } else if (zrUtil.isFunction(formatter)) {\n text = formatter(params);\n }\n }\n\n return text;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @param {number} value\n * @param {Object} layoutInfo {\n * rotation, position, labelOffset, labelDirection, labelMargin\n * }\n */\n\n\nfunction getTransformedPosition(axis, value, layoutInfo) {\n var transform = matrix.create();\n matrix.rotate(transform, transform, layoutInfo.rotation);\n matrix.translate(transform, transform, layoutInfo.position);\n return graphic.applyTransform([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform);\n}\n\nfunction buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\n var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\n layoutInfo.labelMargin = axisPointerModel.get('label.margin');\n buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\n position: getTransformedPosition(axisModel.axis, value, layoutInfo),\n align: textLayout.textAlign,\n verticalAlign: textLayout.textVerticalAlign\n });\n}\n/**\n * @param {Array.} p1\n * @param {Array.} p2\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeLineShape(p1, p2, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x1: p1[xDimIndex],\n y1: p1[1 - xDimIndex],\n x2: p2[xDimIndex],\n y2: p2[1 - xDimIndex]\n };\n}\n/**\n * @param {Array.} xy\n * @param {Array.} wh\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeRectShape(xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n}\n\nfunction makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {\n return {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n startAngle: startAngle,\n endAngle: endAngle,\n clockwise: true\n };\n}\n\nexports.buildElStyle = buildElStyle;\nexports.buildLabelElOption = buildLabelElOption;\nexports.getValueLabel = getValueLabel;\nexports.getTransformedPosition = getTransformedPosition;\nexports.buildCartesianSingleLabelElOption = buildCartesianSingleLabelElOption;\nexports.makeLineShape = makeLineShape;\nexports.makeRectShape = makeRectShape;\nexports.makeSectorShape = makeSectorShape;","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n"],"sourceRoot":""}