{"version":3,"sources":["webpack://_N_E/./node_modules/echarts/lib/util/layout.js","webpack://_N_E/./node_modules/echarts/lib/chart/boxplot.js","webpack://_N_E/./node_modules/echarts/lib/component/axis/AxisBuilder.js","webpack://_N_E/./node_modules/echarts/lib/preprocessor/backwardCompat.js","webpack://_N_E/./pages-components/auto/series/top-anchor.tsx","webpack://_N_E/./node_modules/echarts/lib/component/helper/BrushController.js","webpack://_N_E/./node_modules/echarts/lib/coord/polar/Polar.js","webpack://_N_E/./node_modules/echarts/lib/visual/seriesColor.js","webpack://_N_E/./node_modules/echarts/lib/processor/dataSample.js","webpack://_N_E/./node_modules/echarts/lib/model/mixin/textStyle.js","webpack://_N_E/./node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js","webpack://_N_E/./node_modules/echarts/lib/component/toolbox/feature/Brush.js","webpack://_N_E/./node_modules/echarts/lib/component/axisPointer/viewHelper.js","webpack://_N_E/./node_modules/echarts/lib/processor/dataFilter.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/simpleLayout.js","webpack://_N_E/./node_modules/echarts/lib/component/toolbox/feature/MagicType.js","webpack://_N_E/./node_modules/zrender/lib/vml/core.js","webpack://_N_E/./node_modules/echarts/lib/chart/sankey/SankeySeries.js","webpack://_N_E/./node_modules/echarts/lib/component/geo.js","webpack://_N_E/./node_modules/echarts/lib/coord/calendar/Calendar.js","webpack://_N_E/./node_modules/echarts/lib/processor/dataStack.js","webpack://_N_E/./node_modules/echarts/lib/component/legend.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/focusNodeAdjacencyAction.js","webpack://_N_E/./node_modules/zrender/lib/Handler.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/graphAction.js","webpack://_N_E/./node_modules/zrender/lib/graphic/shape/Polyline.js","webpack://_N_E/./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js","webpack://_N_E/./node_modules/zrender/lib/graphic/CompoundPath.js","webpack://_N_E/./node_modules/echarts/lib/chart/line/poly.js","webpack://_N_E/./node_modules/zrender/lib/core/LRU.js","webpack://_N_E/./public/static/selected-dafault.png","webpack://_N_E/./node_modules/zrender/lib/Element.js","webpack://_N_E/./node_modules/echarts/lib/chart/bar/PictorialBarSeries.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMap/visualMapAction.js","webpack://_N_E/./node_modules/echarts/lib/chart/sunburst.js","webpack://_N_E/./node_modules/echarts/lib/component/toolbox/ToolboxView.js","webpack://_N_E/./node_modules/echarts/lib/action/roamHelper.js","webpack://_N_E/./node_modules/zrender/lib/contain/path.js","webpack://_N_E/./node_modules/echarts/lib/coord/parallel/Parallel.js","webpack://_N_E/./node_modules/echarts/lib/coord/polar/AxisModel.js","webpack://_N_E/./node_modules/zrender/lib/graphic/shape/Circle.js","webpack://_N_E/./node_modules/echarts/lib/chart/treemap.js","webpack://_N_E/./node_modules/echarts/lib/component/markPoint.js","webpack://_N_E/./node_modules/echarts/lib/component/toolbox/feature/Restore.js","webpack://_N_E/./node_modules/zrender/lib/graphic/Pattern.js","webpack://_N_E/./node_modules/zrender/lib/svg/Painter.js","webpack://_N_E/./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js","webpack://_N_E/./node_modules/echarts/lib/chart/boxplot/BoxplotView.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoomSelect.js","webpack://_N_E/./node_modules/echarts/lib/component/timeline/SliderTimelineModel.js","webpack://_N_E/./components/selector/car.tsx","webpack://_N_E/./node_modules/zrender/lib/graphic/RadialGradient.js","webpack://_N_E/./node_modules/zrender/lib/core/guid.js","webpack://_N_E/./node_modules/echarts/lib/model/mixin/boxLayout.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/edgeVisual.js","webpack://_N_E/./node_modules/echarts/lib/coord/parallel/AxisModel.js","webpack://_N_E/./node_modules/echarts/lib/chart/custom.js","webpack://_N_E/./node_modules/echarts/lib/coord/axisTickLabelBuilder.js","webpack://_N_E/./node_modules/echarts/lib/util/model.js","webpack://_N_E/./node_modules/echarts/lib/scale/Scale.js","webpack://_N_E/./node_modules/zrender/lib/container/Group.js","webpack://_N_E/./node_modules/zrender/lib/core/bbox.js","webpack://_N_E/./node_modules/echarts/lib/chart/bar/helper.js","webpack://_N_E/./node_modules/zrender/lib/contain/cubic.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/createListSimply.js","webpack://_N_E/./node_modules/echarts/lib/model/mixin/colorPalette.js","webpack://_N_E/./public/static/invoice@3x.png","webpack://_N_E/./node_modules/echarts/lib/component/dataZoomSlider.js","webpack://_N_E/./node_modules/echarts/lib/util/animation.js","webpack://_N_E/./node_modules/echarts/lib/component/legend/scrollableLegendAction.js","webpack://_N_E/./node_modules/echarts/lib/component/axisPointer/axisTrigger.js","webpack://_N_E/./node_modules/zrender/lib/contain/text.js","webpack://_N_E/./node_modules/echarts/lib/view/Chart.js","webpack://_N_E/./public/static/dcd-code@3x.png","webpack://_N_E/./node_modules/zrender/lib/vml/Painter.js","webpack://_N_E/./node_modules/echarts/lib/chart/candlestick/preprocessor.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMap/VisualMapModel.js","webpack://_N_E/./node_modules/echarts/lib/coord/polar/prepareCustom.js","webpack://_N_E/./node_modules/echarts/lib/component/helper/sliderMove.js","webpack://_N_E/./node_modules/echarts/lib/chart/line.js","webpack://_N_E/./node_modules/echarts/lib/chart/tree.js","webpack://_N_E/./node_modules/echarts/lib/coord/cartesian/Axis2D.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/mapDataStorage.js","webpack://_N_E/./node_modules/echarts/lib/data/Source.js","webpack://_N_E/./node_modules/echarts/lib/chart/boxplot/boxplotLayout.js","webpack://_N_E/./node_modules/zrender/lib/Painter.js","webpack://_N_E/./node_modules/echarts/lib/component/timeline/TimelineModel.js","webpack://_N_E/./node_modules/echarts/lib/util/format.js","webpack://_N_E/./node_modules/echarts/lib/coord/single/singleAxisHelper.js","webpack://_N_E/./node_modules/echarts/lib/data/helper/dataStackHelper.js","webpack://_N_E/./node_modules/echarts/lib/component/calendar/CalendarView.js","webpack://_N_E/./node_modules/zrender/lib/tool/transformPath.js","webpack://_N_E/./node_modules/echarts/lib/component/timeline.js","webpack://_N_E/./node_modules/echarts/lib/chart/lines/linesVisual.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/geoCreator.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/forceHelper.js","webpack://_N_E/./public/static/hover-icon@3x.png","webpack://_N_E/./node_modules/echarts/lib/chart/line/lineAnimationDiff.js","webpack://_N_E/./node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js","webpack://_N_E/./node_modules/echarts/lib/component/legend/ScrollableLegendModel.js","webpack://_N_E/./node_modules/echarts/lib/chart/line/LineView.js","webpack://_N_E/./node_modules/zrender/lib/vml/vml.js","webpack://_N_E/./node_modules/core-js/internals/internal-metadata.js","webpack://_N_E/./node_modules/echarts/lib/theme/dark.js","webpack://_N_E/./node_modules/echarts/lib/component/axis/CartesianAxisView.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/Region.js","webpack://_N_E/./node_modules/echarts/lib/component/parallel.js","webpack://_N_E/./node_modules/echarts/lib/component/brush/BrushModel.js","webpack://_N_E/./node_modules/echarts/lib/chart/pie/PieSeries.js","webpack://_N_E/./node_modules/echarts/lib/stream/task.js","webpack://_N_E/./node_modules/echarts/lib/component/helper/brushHelper.js","webpack://_N_E/./node_modules/echarts/lib/component/angleAxis.js","webpack://_N_E/./node_modules/echarts/lib/chart/treemap/Breadcrumb.js","webpack://_N_E/./node_modules/echarts/lib/chart/map/mapDataStatistic.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/SymbolDraw.js","webpack://_N_E/./node_modules/echarts/lib/component/dataset.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMap/PiecewiseView.js","webpack://_N_E/./node_modules/echarts/lib/chart/parallel/ParallelSeries.js","webpack://_N_E/./node_modules/echarts/lib/component/tooltip.js","webpack://_N_E/./node_modules/echarts/lib/chart/funnel/FunnelSeries.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/prepareCustom.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/Geo.js","webpack://_N_E/./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js","webpack://_N_E/./node_modules/echarts/lib/component/helper/roamHelper.js","webpack://_N_E/./node_modules/echarts/lib/component/gridSimple.js","webpack://_N_E/./node_modules/echarts/lib/chart/gauge.js","webpack://_N_E/./node_modules/echarts/lib/component/tooltip/TooltipContent.js","webpack://_N_E/./node_modules/zrender/lib/core/timsort.js","webpack://_N_E/./node_modules/zrender/lib/contain/polygon.js","webpack://_N_E/./node_modules/zrender/lib/animation/Animator.js","webpack://_N_E/./node_modules/echarts/lib/data/Tree.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMap/PiecewiseModel.js","webpack://_N_E/./node_modules/zrender/lib/core/GestureMgr.js","webpack://_N_E/./node_modules/echarts/lib/component/legendScroll.js","webpack://_N_E/./node_modules/echarts/lib/chart/parallel.js","webpack://_N_E/./node_modules/echarts/lib/chart/candlestick.js","webpack://_N_E/./node_modules/echarts/lib/component/timeline/TimelineAxis.js","webpack://_N_E/./node_modules/echarts/lib/chart/candlestick/candlestickLayout.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom.js","webpack://_N_E/./public/static/star-modest.png","webpack://_N_E/./node_modules/echarts/lib/coord/parallel/ParallelAxis.js","webpack://_N_E/./node_modules/echarts/lib/data/helper/sourceHelper.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/EffectLine.js","webpack://_N_E/./node_modules/zrender/lib/core/arrayDiff2.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js","webpack://_N_E/./node_modules/echarts/lib/component/helper/MapDraw.js","webpack://_N_E/./lib/error-handle.ts","webpack://_N_E/./lib/get-cars-from-series.ts","webpack://_N_E/./node_modules/zrender/lib/mixin/Transformable.js","webpack://_N_E/./node_modules/zrender/lib/graphic/Image.js","webpack://_N_E/./node_modules/echarts/lib/chart/sankey/sankeyVisual.js","webpack://_N_E/./node_modules/echarts/lib/component/legend/ScrollableLegendView.js","webpack://_N_E/./node_modules/echarts/lib/component/brush/visualEncoding.js","webpack://_N_E/./node_modules/echarts/lib/chart/effectScatter.js","webpack://_N_E/./public/static/play-video.png","webpack://_N_E/./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js","webpack://_N_E/./node_modules/echarts/lib/coord/radar/RadarModel.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/fix/textCoord.js","webpack://_N_E/./node_modules/echarts/lib/chart/bar/BarSeries.js","webpack://_N_E/./node_modules/echarts/lib/component/axisPointer/globalListener.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/Symbol.js","webpack://_N_E/./node_modules/echarts/lib/chart/radar/RadarView.js","webpack://_N_E/./node_modules/echarts/lib/component/axis/RadiusAxisView.js","webpack://_N_E/./public/static/dcar-score.png","webpack://_N_E/./node_modules/echarts/lib/helper.js","webpack://_N_E/./node_modules/echarts/lib/chart/scatter.js","webpack://_N_E/./node_modules/zrender/lib/core/matrix.js","webpack://_N_E/./node_modules/echarts/lib/scale/Ordinal.js","webpack://_N_E/./node_modules/echarts/lib/component/marker/MarkLineModel.js","webpack://_N_E/./components/selector/series.tsx","webpack://_N_E/./node_modules/echarts/lib/chart/candlestick/CandlestickView.js","webpack://_N_E/./node_modules/zrender/lib/graphic/Displayable.js","webpack://_N_E/./node_modules/echarts/lib/chart/pie/PieView.js","webpack://_N_E/./node_modules/zrender/lib/mixin/Eventful.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js","webpack://_N_E/./node_modules/echarts/lib/coord/polar/polarCreator.js","webpack://_N_E/./node_modules/echarts/lib/layout/barPolar.js","webpack://_N_E/./node_modules/echarts/lib/chart/gauge/PointerPath.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/GeoModel.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph.js","webpack://_N_E/./node_modules/echarts/lib/coord/radar/Radar.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js","webpack://_N_E/./node_modules/echarts/lib/coord/axisModelCommonMixin.js","webpack://_N_E/./node_modules/echarts/lib/CoordinateSystem.js","webpack://_N_E/./node_modules/zrender/lib/core/PathProxy.js","webpack://_N_E/./node_modules/echarts/lib/component/toolbox/featureManager.js","webpack://_N_E/./node_modules/echarts/lib/chart/tree/TreeSeries.js","webpack://_N_E/./node_modules/echarts/lib/scale/Time.js","webpack://_N_E/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?72fd","webpack://_N_E/./node_modules/echarts/lib/chart/line/LineSeries.js","webpack://_N_E/./node_modules/echarts/lib/coord/parallel/ParallelModel.js","webpack://_N_E/./node_modules/zrender/lib/core/env.js","webpack://_N_E/./node_modules/echarts/lib/chart/tree/layoutHelper.js","webpack://_N_E/./node_modules/echarts/lib/util/graphic.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/SliderZoomView.js","webpack://_N_E/./node_modules/echarts/lib/component/marker/MarkerModel.js","webpack://_N_E/./node_modules/echarts/lib/chart/funnel/funnelLayout.js","webpack://_N_E/./node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js","webpack://_N_E/./node_modules/echarts/lib/preprocessor/helper/compatStyle.js","webpack://_N_E/./node_modules/zrender/lib/graphic/Style.js","webpack://_N_E/./node_modules/echarts/lib/visual/visualSolution.js","webpack://_N_E/./node_modules/echarts/lib/model/mixin/makeStyleMapper.js","webpack://_N_E/./node_modules/echarts/lib/chart/pie/pieLayout.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/categoryVisual.js","webpack://_N_E/./node_modules/echarts/lib/lang.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMapPiecewise.js","webpack://_N_E/./node_modules/echarts/lib/data/helper/dataProvider.js","webpack://_N_E/./node_modules/echarts/lib/data/helper/dimensionHelper.js","webpack://_N_E/./node_modules/echarts/lib/component/polar.js","webpack://_N_E/./node_modules/echarts/lib/chart/boxplot/boxplotVisual.js","webpack://_N_E/./public/static/drop-down-arrow.png","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js","webpack://_N_E/./node_modules/zrender/lib/config.js","webpack://_N_E/./node_modules/echarts/lib/component/singleAxis.js","webpack://_N_E/./node_modules/echarts/lib/component/brush.js","webpack://_N_E/./node_modules/echarts/lib/chart/bar/BaseBarSeries.js","webpack://_N_E/./node_modules/zrender/lib/tool/parseSVG.js","webpack://_N_E/./node_modules/echarts/lib/component/marker/MarkLineView.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMap/ContinuousModel.js","webpack://_N_E/./node_modules/echarts/lib/coord/single/prepareCustom.js","webpack://_N_E/./node_modules/zrender/lib/animation/Animation.js","webpack://_N_E/./pages-components/auto/series/header.tsx","webpack://_N_E/./node_modules/echarts/lib/chart/sankey.js","webpack://_N_E/./node_modules/echarts/index.js","webpack://_N_E/./node_modules/echarts/lib/data/helper/linkList.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/fix/nanhai.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/InsideZoomView.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/createListFromArray.js","webpack://_N_E/./node_modules/echarts/lib/chart/bar/PictorialBarView.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js","webpack://_N_E/./node_modules/echarts/lib/chart/sunburst/SunburstView.js","webpack://_N_E/./node_modules/zrender/lib/tool/path.js","webpack://_N_E/./node_modules/echarts/lib/component/timeline/SliderTimelineView.js","webpack://_N_E/./public/static/default-article.png","webpack://_N_E/./public/static/more-icon-grey@3x.png","webpack://_N_E/./node_modules/echarts/lib/util/number.js","webpack://_N_E/./node_modules/echarts/lib/model/mixin/dataFormat.js","webpack://_N_E/./node_modules/echarts/lib/model/mixin/lineStyle.js","webpack://_N_E/./node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack://_N_E/./node_modules/echarts/lib/component/timeline/timelineAction.js","webpack://_N_E/./node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js","webpack://_N_E/./node_modules/zrender/lib/svg/graphic.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMap/ContinuousView.js","webpack://_N_E/./node_modules/echarts/lib/echarts.js","webpack://_N_E/./node_modules/echarts/lib/component/marker/MarkAreaModel.js","webpack://_N_E/./node_modules/zrender/lib/core/vector.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js","webpack://_N_E/./node_modules/zrender/lib/tool/color.js","webpack://_N_E/./node_modules/zrender/lib/graphic/Gradient.js","webpack://_N_E/./node_modules/echarts/lib/component/tooltip/TooltipView.js","webpack://_N_E/./node_modules/echarts/lib/model/Model.js","webpack://_N_E/./node_modules/echarts/lib/coord/single/singleCreator.js","webpack://_N_E/./node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js","webpack://_N_E/./node_modules/echarts/lib/chart/treemap/treemapAction.js","webpack://_N_E/./node_modules/zrender/lib/animation/Clip.js","webpack://_N_E/./node_modules/echarts/lib/chart/sunburst/sunburstAction.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/Polyline.js","webpack://_N_E/./node_modules/zrender/lib/graphic/shape/Ring.js","webpack://_N_E/./node_modules/core-js/modules/es.array.some.js","webpack://_N_E/./node_modules/echarts/lib/component/legend/legendAction.js","webpack://_N_E/./node_modules/core-js/modules/es.string.match.js","webpack://_N_E/./node_modules/echarts/lib/coord/calendar/prepareCustom.js","webpack://_N_E/./node_modules/echarts/lib/coord/single/Single.js","webpack://_N_E/./node_modules/echarts/lib/chart/heatmap/HeatmapView.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/adjustEdge.js","webpack://_N_E/./node_modules/zrender/lib/graphic/LinearGradient.js","webpack://_N_E/./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js","webpack://_N_E/./node_modules/echarts/lib/coord/cartesian/AxisModel.js","webpack://_N_E/./node_modules/zrender/lib/core/log.js","webpack://_N_E/./node_modules/echarts/lib/action/geoRoam.js","webpack://_N_E/./node_modules/echarts/lib/component/helper/RoamController.js","webpack://_N_E/./node_modules/zrender/lib/core/curve.js","webpack://_N_E/./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js","webpack://_N_E/./node_modules/zrender/lib/graphic/shape/Sector.js","webpack://_N_E/./node_modules/zrender/lib/svg/helper/Definable.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/SelectZoomView.js","webpack://_N_E/./node_modules/echarts/lib/model/Series.js","webpack://_N_E/./node_modules/zrender/lib/graphic/helper/poly.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/geoJSONLoader.js","webpack://_N_E/./node_modules/echarts/lib/chart/candlestick/candlestickVisual.js","webpack://_N_E/./node_modules/echarts/lib/chart/funnel/FunnelView.js","webpack://_N_E/./node_modules/echarts/lib/chart/gauge/GaugeSeries.js","webpack://_N_E/./node_modules/echarts/lib/config.js","webpack://_N_E/./node_modules/echarts/lib/chart/map/MapSeries.js","webpack://_N_E/./node_modules/echarts/lib/chart/sunburst/SunburstPiece.js","webpack://_N_E/./node_modules/core-js/modules/es.array.sort.js","webpack://_N_E/./node_modules/echarts/lib/component/toolbox/feature/SaveAsImage.js","webpack://_N_E/./node_modules/core-js/modules/es.map.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/graphHelper.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/helper.js","webpack://_N_E/./node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMap.js","webpack://_N_E/./node_modules/echarts/lib/chart/map/mapVisual.js","webpack://_N_E/./node_modules/echarts/lib/model/mixin/itemStyle.js","webpack://_N_E/./node_modules/echarts/lib/component/radar.js","webpack://_N_E/./public/static/hover-icon.png","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/roams.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/treeHelper.js","webpack://_N_E/./node_modules/echarts/lib/data/DataDimensionInfo.js","webpack://_N_E/./node_modules/zrender/lib/graphic/helper/roundRect.js","webpack://_N_E/./node_modules/echarts/lib/chart/sankey/SankeyView.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/geoSourceManager.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/forceLayout.js","webpack://_N_E/./node_modules/echarts/lib/component/axis/axisSplitHelper.js","webpack://_N_E/./node_modules/echarts/lib/coord/cartesian/Grid.js","webpack://_N_E/./node_modules/echarts/lib/chart/heatmap.js","webpack://_N_E/./node_modules/swiper/esm/components/pagination/pagination.js","webpack://_N_E/./public/static/hover-icon@2x.png","webpack://_N_E/./node_modules/zrender/lib/Layer.js","webpack://_N_E/./node_modules/zrender/lib/graphic/helper/image.js","webpack://_N_E/./node_modules/echarts/lib/component/legend/LegendView.js","webpack://_N_E/./node_modules/echarts/lib/visual/VisualMapping.js","webpack://_N_E/./node_modules/core-js/modules/es.set.js","webpack://_N_E/./node_modules/zrender/lib/core/event.js","webpack://_N_E/./node_modules/echarts/lib/chart/parallel/ParallelView.js","webpack://_N_E/./node_modules/echarts/lib/visual/visualDefault.js","webpack://_N_E/./node_modules/echarts/lib/data/List.js","webpack://_N_E/./node_modules/zrender/lib/graphic/helper/smoothSpline.js","webpack://_N_E/./node_modules/echarts/lib/util/clazz.js","webpack://_N_E/./node_modules/echarts/lib/component/title.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/categoryFilter.js","webpack://_N_E/./node_modules/echarts/lib/chart/map.js","webpack://_N_E/./node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js","webpack://_N_E/./node_modules/echarts/lib/chart/bar/BarView.js","webpack://_N_E/./node_modules/core-js/internals/collection-strong.js","webpack://_N_E/./node_modules/echarts/lib/coord/parallel/parallelPreprocessor.js","webpack://_N_E/./node_modules/echarts/lib/chart/lines/linesLayout.js","webpack://_N_E/./node_modules/zrender/lib/core/dom.js","webpack://_N_E/./node_modules/echarts/lib/component/axis/AxisView.js","webpack://_N_E/./node_modules/echarts/lib/component/timeline/preprocessor.js","webpack://_N_E/./node_modules/echarts/lib/coord/single/SingleAxis.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/fix/geoCoord.js","webpack://_N_E/./node_modules/zrender/lib/contain/quadratic.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/typeDefaulter.js","webpack://_N_E/./node_modules/zrender/lib/zrender.js","webpack://_N_E/./node_modules/echarts/lib/coord/axisHelper.js","webpack://_N_E/./pages-components/auto/series/store.ts","webpack://_N_E/./node_modules/echarts/lib/stream/Scheduler.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/EffectPolyline.js","webpack://_N_E/./node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/history.js","webpack://_N_E/./node_modules/echarts/lib/component/radar/RadarView.js","webpack://_N_E/./node_modules/echarts/lib/chart/themeRiver.js","webpack://_N_E/./node_modules/echarts/lib/model/Component.js","webpack://_N_E/./node_modules/echarts/lib/coord/View.js","webpack://_N_E/./node_modules/echarts/lib/chart/tree/TreeView.js","webpack://_N_E/./node_modules/core-js/internals/collection.js","webpack://_N_E/./components/selector/brand-series-car-single.tsx","webpack://_N_E/./pages-components/auto/series/pk-list.tsx","webpack://_N_E/./node_modules/zrender/lib/core/util.js","webpack://_N_E/./node_modules/echarts/lib/chart/tree/traversalHelper.js","webpack://_N_E/./node_modules/echarts/lib/data/Graph.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/LineDraw.js","webpack://_N_E/./node_modules/echarts/lib/component/helper/selectableMixin.js","webpack://_N_E/./public/static/wave-point.png","webpack://_N_E/./node_modules/echarts/lib/coord/axisDefault.js","webpack://_N_E/./node_modules/echarts/lib/chart/themeRiver/themeRiverVisual.js","webpack://_N_E/./public/static/brown-live-show.gif","webpack://_N_E/./node_modules/echarts/lib/chart/lines/LinesSeries.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMap/VisualMapView.js","webpack://_N_E/./node_modules/echarts/lib/action/createDataSelectAction.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMapContinuous.js","webpack://_N_E/./node_modules/zrender/lib/animation/easing.js","webpack://_N_E/./node_modules/echarts/lib/component/geo/GeoView.js","webpack://_N_E/./node_modules/echarts/lib/component/toolbox/feature/DataView.js","webpack://_N_E/./node_modules/zrender/lib/graphic/Text.js","webpack://_N_E/./pages-components/auto/series/common/tab.tsx","webpack://_N_E/./pages-components/auto/series/pk.tsx","webpack://_N_E/./pages-components/auto/series/photos.tsx","webpack://_N_E/./pages-components/auto/series/all-car-models.tsx","webpack://_N_E/./components/feed-new-series.tsx","webpack://_N_E/./pages-components/auto/series/popular-content.tsx","webpack://_N_E/./components/series/indicator.tsx","webpack://_N_E/./components/bar.tsx","webpack://_N_E/./components/series/series-rank.tsx","webpack://_N_E/./components/series/dcar-score.tsx","webpack://_N_E/./components/series/favour.tsx","webpack://_N_E/./components/series/sub-nav.tsx","webpack://_N_E/./components/series/community.tsx","webpack://_N_E/./components/series/article-card.tsx","webpack://_N_E/./lib/groupBy.ts","webpack://_N_E/./components/series/articles.tsx","webpack://_N_E/./components/series/car-list.tsx","webpack://_N_E/./pages-components/auto/series/home.tsx","webpack://_N_E/./components/series/leaderboard.tsx","webpack://_N_E/./pages-components/auto/series/qa/home.tsx","webpack://_N_E/./pages-components/auto/series/article/popup.tsx","webpack://_N_E/./pages-components/auto/series/article/home.tsx","webpack://_N_E/./pages-components/auto/series/video/video-card.tsx","webpack://_N_E/./pages-components/auto/series/video/home.tsx","webpack://_N_E/./pages/auto/series.tsx","webpack://_N_E/./node_modules/echarts/lib/coord/radar/IndicatorAxis.js","webpack://_N_E/./node_modules/echarts/lib/chart/radar/backwardCompat.js","webpack://_N_E/./node_modules/echarts/lib/coord/polar/PolarModel.js","webpack://_N_E/./node_modules/echarts/lib/component/helper/listComponent.js","webpack://_N_E/./node_modules/echarts/lib/component/radiusAxis.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/createView.js","webpack://_N_E/./node_modules/echarts/lib/component/graphic.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoomInside.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/LinePath.js","webpack://_N_E/./node_modules/echarts/lib/visual/symbol.js","webpack://_N_E/./node_modules/echarts/lib/component/toolbox/feature/DataZoom.js","webpack://_N_E/./node_modules/zrender/lib/graphic/helper/fixShadow.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/DataZoomView.js","webpack://_N_E/./node_modules/echarts/lib/component/markArea.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/Line.js","webpack://_N_E/./node_modules/echarts/lib/model/Global.js","webpack://_N_E/./components/selector/brand.tsx","webpack://_N_E/./node_modules/echarts/lib/component/marker/MarkPointView.js","webpack://_N_E/./node_modules/echarts/lib/coord/calendar/CalendarModel.js","webpack://_N_E/./node_modules/echarts/lib/data/DataDiffer.js","webpack://_N_E/./node_modules/echarts/lib/chart/sankey/sankeyLayout.js","webpack://_N_E/./node_modules/zrender/lib/graphic/constant.js","webpack://_N_E/./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/GraphSeries.js","webpack://_N_E/./node_modules/zrender/lib/graphic/shape/Polygon.js","webpack://_N_E/./node_modules/echarts/lib/layout/points.js","webpack://_N_E/./node_modules/echarts/lib/ExtensionAPI.js","webpack://_N_E/./node_modules/echarts/lib/component/axis/parallelAxisAction.js","webpack://_N_E/./node_modules/echarts/lib/coord/parallel/parallelCreator.js","webpack://_N_E/./node_modules/echarts/lib/coord/Axis.js","webpack://_N_E/./node_modules/echarts/lib/component/legend/LegendModel.js","webpack://_N_E/./node_modules/zrender/lib/core/fourPointsTransform.js","webpack://_N_E/./node_modules/zrender/lib/contain/util.js","webpack://_N_E/./node_modules/echarts/lib/data/helper/completeDimensions.js","webpack://_N_E/./pages-components/auto/series/video-manual.tsx","webpack://_N_E/./node_modules/echarts/lib/chart/radar/radarLayout.js","webpack://_N_E/./node_modules/zrender/lib/svg/core.js","webpack://_N_E/./node_modules/zrender/lib/contain/windingLine.js","webpack://_N_E/./node_modules/echarts/lib/model/referHelper.js","webpack://_N_E/./public/static/empty-envelope.png","webpack://_N_E/./node_modules/echarts/lib/util/throttle.js","webpack://_N_E/./node_modules/echarts/lib/component/marker/MarkerView.js","webpack://_N_E/./node_modules/echarts/lib/util/component.js","webpack://_N_E/./node_modules/echarts/lib/model/globalDefault.js","webpack://_N_E/./node_modules/zrender/lib/graphic/helper/fixClipWithShadow.js","webpack://_N_E/./node_modules/echarts/lib/scale/Interval.js","webpack://_N_E/./node_modules/echarts/lib/scale/Log.js","webpack://_N_E/./node_modules/zrender/lib/graphic/shape/Arc.js","webpack://_N_E/./node_modules/echarts/lib/chart/radar.js","webpack://_N_E/./node_modules/echarts/lib/data/OrdinalMeta.js","webpack://_N_E/./node_modules/echarts/lib/component/marker/MarkAreaView.js","webpack://_N_E/./node_modules/echarts/lib/component/toolbox/ToolboxModel.js","webpack://_N_E/./node_modules/echarts/lib/coord/cartesian/GridModel.js","webpack://_N_E/./node_modules/zrender/lib/svg/svg.js","webpack://_N_E/./node_modules/echarts/lib/component/calendar.js","webpack://_N_E/./node_modules/echarts/lib/data/helper/sourceType.js","webpack://_N_E/./node_modules/echarts/lib/component/legend/legendFilter.js","webpack://_N_E/./node_modules/echarts/lib/chart/treemap/treemapVisual.js","webpack://_N_E/./node_modules/echarts/lib/component/marker/markerHelper.js","webpack://_N_E/./node_modules/echarts/lib/coord/polar/RadiusAxis.js","webpack://_N_E/./node_modules/echarts/lib/chart/treemap/TreemapSeries.js","webpack://_N_E/./node_modules/echarts/lib/component/timeline/TimelineView.js","webpack://_N_E/./node_modules/echarts/lib/scale/helper.js","webpack://_N_E/./node_modules/echarts/lib/chart/map/backwardCompat.js","webpack://_N_E/./node_modules/echarts/lib/chart/bar.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/circularLayoutHelper.js","webpack://_N_E/./node_modules/echarts/lib/component/markLine.js","webpack://_N_E/./node_modules/zrender/lib/contain/line.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/GraphView.js","webpack://_N_E/./node_modules/echarts/lib/model/mixin/areaStyle.js","webpack://_N_E/./node_modules/zrender/lib/core/BoundingRect.js","webpack://_N_E/./node_modules/zrender/lib/animation/requestAnimationFrame.js","webpack://_N_E/./node_modules/echarts/lib/visual/dataColor.js","webpack://_N_E/./node_modules/echarts/lib/loading/default.js","webpack://_N_E/./node_modules/zrender/lib/contain/arc.js","webpack://_N_E/./node_modules/echarts/lib/chart/line/helper.js","webpack://_N_E/./node_modules/zrender/lib/svg/helper/ClippathManager.js","webpack://_N_E/./node_modules/zrender/lib/graphic/helper/smoothBezier.js","webpack://_N_E/./node_modules/echarts/lib/chart/treemap/treemapLayout.js","webpack://_N_E/./node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","webpack://_N_E/./node_modules/echarts/lib/layout/barGrid.js","webpack://_N_E/./node_modules/zrender/lib/graphic/mixin/RectText.js","webpack://_N_E/./node_modules/echarts/lib/coord/axisModelCreator.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/dataZoomAction.js","webpack://_N_E/./components/radar-chart.tsx","webpack://_N_E/./node_modules/echarts/lib/chart/helper/LargeLineDraw.js","webpack://_N_E/./node_modules/echarts/lib/chart/radar/RadarSeries.js","webpack://_N_E/./node_modules/echarts/lib/component/timeline/typeDefaulter.js","webpack://_N_E/./node_modules/echarts/lib/util/symbol.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js","webpack://_N_E/./node_modules/echarts/lib/chart/lines.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/fix/diaoyuIsland.js","webpack://_N_E/./node_modules/echarts/lib/chart/gauge/GaugeView.js","webpack://_N_E/./node_modules/core-js/modules/es.promise.finally.js","webpack://_N_E/./public/static/star-bling.png","webpack://_N_E/./node_modules/echarts/lib/chart/funnel.js","webpack://_N_E/./node_modules/echarts/lib/component/helper/interactionMutex.js","webpack://_N_E/./node_modules/echarts/lib/chart/map/MapView.js","webpack://_N_E/./node_modules/zrender/lib/graphic/helper/text.js","webpack://_N_E/./node_modules/echarts/lib/chart/scatter/ScatterView.js","webpack://_N_E/./node_modules/echarts/lib/chart/parallel/parallelVisual.js","webpack://_N_E/./node_modules/zrender/lib/vml/graphic.js","webpack://_N_E/./node_modules/echarts/lib/component/brush/selector.js","webpack://_N_E/./node_modules/echarts/lib/component/marker/MarkPointModel.js","webpack://_N_E/./node_modules/echarts/lib/component/tooltip/TooltipModel.js","webpack://_N_E/./node_modules/echarts/lib/coord/polar/AngleAxis.js","webpack://_N_E/./node_modules/echarts/lib/chart/sunburst/SunburstSeries.js","webpack://_N_E/./node_modules/echarts/lib/coord/cartesian/prepareCustom.js","webpack://_N_E/./node_modules/echarts/lib/chart/pictorialBar.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMap/visualEncoding.js","webpack://_N_E/./node_modules/zrender/lib/Storage.js","webpack://_N_E/./node_modules/zrender/lib/graphic/shape/BezierCurve.js","webpack://_N_E/./node_modules/echarts/lib/chart/graph/circularLayout.js","webpack://_N_E/./node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js","webpack://_N_E/./node_modules/echarts/lib/chart/lines/LinesView.js","webpack://_N_E/./node_modules/zrender/lib/graphic/shape/Ellipse.js","webpack://_N_E/./node_modules/echarts/lib/component/brush/preprocessor.js","webpack://_N_E/./node_modules/echarts/lib/component/axis.js","webpack://_N_E/./node_modules/echarts/lib/chart/treemap/TreemapView.js","webpack://_N_E/./node_modules/echarts/lib/component/axis/ParallelAxisView.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js","webpack://_N_E/./node_modules/echarts/lib/component/toolbox.js","webpack://_N_E/./node_modules/echarts/lib/view/Component.js","webpack://_N_E/./node_modules/zrender/lib/svg/helper/GradientManager.js","webpack://_N_E/./node_modules/echarts/lib/data/helper/createDimensions.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMap/preprocessor.js","webpack://_N_E/./components/scroll-loader.tsx","webpack://_N_E/./node_modules/echarts/lib/component/axis/AngleAxisView.js","webpack://_N_E/./node_modules/echarts/lib/chart/bar/barItemStyle.js","webpack://_N_E/./public/static/right-arrow-yellow.png","webpack://_N_E/./node_modules/echarts/lib/export.js","webpack://_N_E/./node_modules/echarts/lib/chart/pie/labelLayout.js","webpack://_N_E/./node_modules/echarts/lib/visual/aria.js","webpack://_N_E/./node_modules/echarts/lib/component/brush/brushAction.js","webpack://_N_E/./node_modules/core-js/internals/freezing.js","webpack://_N_E/./node_modules/echarts/lib/chart/tree/treeAction.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMap/typeDefaulter.js","webpack://_N_E/./node_modules/zrender/lib/svg/helper/ShadowManager.js","webpack://_N_E/./node_modules/echarts/lib/component/axis/SingleAxisView.js","webpack://_N_E/./node_modules/zrender/lib/mixin/Animatable.js","webpack://_N_E/./node_modules/echarts/lib/component/helper/BrushTargetManager.js","webpack://_N_E/./node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/parseGeoJson.js","webpack://_N_E/./node_modules/echarts/lib/chart/sankey/sankeyAction.js","webpack://_N_E/./node_modules/echarts/lib/chart/pie.js","webpack://_N_E/./node_modules/echarts/lib/util/shape/sausage.js","webpack://_N_E/./node_modules/echarts/lib/component/brush/BrushView.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/labelHelper.js","webpack://_N_E/./node_modules/zrender/lib/graphic/shape/Rect.js","webpack://_N_E/./node_modules/echarts/lib/visual/LegendVisualProvider.js","webpack://_N_E/./node_modules/echarts/lib/component/parallelAxis.js","webpack://_N_E/./node_modules/echarts/lib/component/helper/cursorHelper.js","webpack://_N_E/./node_modules/echarts/lib/theme/light.js","webpack://_N_E/./node_modules/echarts/lib/coord/single/AxisModel.js","webpack://_N_E/./node_modules/zrender/lib/graphic/Path.js","webpack://_N_E/./node_modules/echarts/lib/coord/cartesian/Cartesian2D.js","webpack://_N_E/./components/stars.tsx","webpack://_N_E/./node_modules/zrender/lib/mixin/Draggable.js","webpack://_N_E/./node_modules/echarts/lib/chart/scatter/ScatterSeries.js","webpack://_N_E/./node_modules/echarts/lib/chart/sunburst/sunburstLayout.js","webpack://_N_E/./node_modules/echarts/lib/component/axisPointer.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMap/helper.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/EffectSymbol.js","webpack://_N_E/./node_modules/echarts/lib/coord/geo/geoSVGLoader.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js","webpack://_N_E/./node_modules/echarts/lib/chart/tree/treeLayout.js","webpack://_N_E/./node_modules/echarts/lib/model/OptionManager.js","webpack://_N_E/./node_modules/zrender/lib/graphic/shape/Line.js","webpack://_N_E/./node_modules/echarts/lib/coord/cartesian/Cartesian.js","webpack://_N_E/./node_modules/echarts/lib/component/dataZoom/AxisProxy.js","webpack://_N_E/./node_modules/echarts/lib/chart/helper/createRenderPlanner.js","webpack://_N_E/./node_modules/echarts/lib/component/grid.js","webpack://_N_E/./node_modules/echarts/lib/component/axisPointer/modelHelper.js","webpack://_N_E/./node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js","webpack://_N_E/./node_modules/zrender/lib/dom/HandlerProxy.js","webpack://_N_E/./node_modules/echarts/lib/chart/map/mapSymbolLayout.js"],"names":["zrUtil","BoundingRect","parsePercent","formatUtil","each","LOCATION_PARAMS","HV_NAMES","boxLayout","orient","group","gap","maxWidth","maxHeight","x","y","Infinity","currentLineMaxSize","eachChild","child","idx","nextX","nextY","position","rect","getBoundingRect","nextChild","childAt","nextChildRect","moveX","width","newline","height","Math","max","moveY","box","vbox","curry","hbox","getLayoutRect","positionInfo","containerRect","margin","normalizeCssArray","containerWidth","containerHeight","left","top","right","bottom","verticalMargin","horizontalMargin","aspect","isNaN","copyLayoutParams","target","source","name","hasOwnProperty","exports","getAvailableSize","x2","y2","parseFloat","positionElement","el","opt","h","hv","v","boundingMode","type","needLocalTransform","transform","getLocalTransform","clone","applyTransform","defaults","elPos","dx","dy","attr","sizeCalculable","option","hvIdx","mergeLayoutParam","targetOption","newOption","isObject","ignoreSize","isArray","hResult","merge","vResult","names","newParams","newValueCount","merged","mergedValueCount","hasProp","hasValue","i","length","obj","copy","getLayoutParams","echarts","boxplotVisual","boxplotLayout","registerVisual","registerLayout","_util","retrieve","extend","graphic","Model","_number","isRadianAroundZero","remRadian","createSymbol","matrixUtil","v2ApplyTransform","shouldShowAllLabels","PI","AxisBuilder","axisModel","this","labelOffset","nameDirection","tickDirection","labelDirection","silent","Group","dumbGroup","slice","rotation","updateTransform","_transform","_dumbGroup","prototype","constructor","hasBuilder","builders","add","call","getGroup","axisLine","get","extent","axis","getExtent","matrix","pt1","pt2","lineStyle","lineCap","getModel","getLineStyle","Line","anid","subPixelOptimize","shape","x1","y1","style","strokeContainThreshold","z2","arrows","arrowSize","arrowOffset","symbolWidth","symbolHeight","rotate","offset","r","sqrt","point","index","symbol","stroke","pos","cos","sin","axisTickLabel","ticksEls","axisBuilder","tickModel","scale","isBlank","lineStyleModel","tickEndCoord","createTicks","getTicksCoords","buildAxisMajorTicks","labelEls","axisLabelShow","labelModel","labelMargin","labels","getViewLabels","labelRotation","labelRotate","labelLayout","innerTextLayout","rawCategoryData","getCategories","isLabelSilent","triggerEvent","labelItem","tickValue","formattedLabel","rawLabel","itemLabelModel","textStyle","ecModel","textColor","getTextColor","dataToCoord","textEl","Text","setTextStyle","text","textAlign","getShallow","textVerticalAlign","textFill","eventData","makeAxisEventDataBase","targetType","value","push","decomposeTransform","buildAxisLabel","tickEls","showMinLabel","showMaxLabel","firstLabel","nextLabel","lastLabel","prevLabel","firstTick","nextTick","lastTick","prevTick","ignoreEl","isTwoLabelOverlapped","fixMinMaxLabelShow","minorTickModel","minorTicksCoords","getMinorTicksCoords","minorTickLineStyle","minorTicksEls","k","buildAxisMinorTicks","axisName","axisNameAvailableWidth","nameLocation","textStyleModel","gapSignal","isNameLocationCenter","nameRotation","textPosition","textRotate","rotationDiff","inverse","onLeft","endTextLayout","abs","isFinite","textFont","getFont","truncateOpt","ellipsis","nameTruncateMaxWidth","truncatedText","truncateText","minChar","placeholder","tooltipOpt","mainType","formatterParams","componentType","$vars","componentIndex","__fullText","__truncatedText","tooltip","show","content","formatter","axisRotation","textRotation","direction","ignore","current","next","firstRect","nextRect","mRotationBack","identity","mul","intersect","ticksCoords","tickTransform","tickLineStyle","aniid","tickCoord","coord","tickEl","_default","module","compatStyle","normalizeToArray","compatLayoutProperties","LAYOUT_PROPERTIES","prop","COMPATITABLE_COMPONENTS","isTheme","series","seriesOpt","seriesType","clipOverflow","clip","clockWise","clockwise","pointerColor","path","split","val","overwrite","key","set","dataRange","visualMap","componentName","options","TopAnchor","params","titles","activeIndex","handleAnchorClick","useState","currIndex","setCurrIndex","router","useRouter","useEffect","id","map","item","toString","onClick","e","url","outer","window","open","classnames","active","__DEV__","Eventful","interactionMutex","DataDiffer","mathMin","min","mathMax","mathPow","pow","DIRECTION_MAP","w","n","s","CURSOR_MAP","ne","sw","nw","se","DEFAULT_BRUSH_OPT","brushStyle","lineWidth","fill","transformable","brushMode","removeOnClick","baseUID","BrushController","zr","_zr","_brushType","_brushOption","_panels","_track","_dragging","_covers","_creatingCover","_creatingPanel","_enableGlobalPan","_uid","_handlers","pointerHandlers","handler","eventName","bind","createCover","controller","brushOption","cover","coverRenderers","brushType","__brushOption","updateZ","endCreating","creatingCover","coverRenderer","getCoverRenderer","updateCoverShape","range","z","traverse","updateCoverAfterCreation","updateCommon","getPanelByPoint","localCursorPoint","panel","panels","pn","isTargetByCursor","getPanelByCover","panelId","clearCovers","covers","originalLength","remove","trigger","areas","isEnd","getTrackEnds","track","tail","createBaseRectCover","doDrift","edgeNames","Rect","makeStyle","draggable","cursor","drift","ondragend","opacity","invisible","updateBaseRect","localRange","handleSize","xa","ya","x2a","y2a","widtha","heighta","updateRectShape","mainEl","useStyle","childOfName","globalDir","getGlobalDirection","localDirection","reverse","join","transformDirection","getTransform","setShape","points","xmin","ymin","xmax","ymax","pointsToRect","clipByPanel","strokeNoScale","formatRectRange","driftRect","toRectRange","fromRectRange","rectRange","localDelta","toLocalDelta","namePart","ind","driftPolygon","thisGroup","localD","transformCoordToLocal","localZero","data","clipPath","preventDefault","rawE","event","mainShapeContain","contain","updateCoverByMouse","eventParams","thisBrushOption","p2","p1","shouldShowCover","determineBrushType","getCreatingRange","defaultBrushType","enableBrush","release","handlers","off","unmountHandlers","doDisableBrush","take","on","mountHandlers","doEnableBrush","setPanels","panelOpts","mount","enableGlobalPan","eachCover","cb","context","updateCovers","brushOptionList","oldCovers","newCovers","getKey","addOrUpdate","update","oldIndex","execute","newIndex","newBrushOption","unmount","dispose","mixin","mousedown","handleDragEnd","offsetX","offsetY","mousemove","getWidth","getHeight","isOutsideZrArea","currPanel","setCursorStyle","resetCursor","mouseup","lineX","getLineRenderer","lineY","localTrack","ends","polygon","Polyline","Polygon","xyIndex","otherExtent","getLinearBrushOtherExtent","RadiusAxis","AngleAxis","Polar","cx","cy","_radiusAxis","_angleAxis","polar","axisPointerEnabled","dimensions","model","containPoint","pointToCoord","containData","getAxis","dim","getAxes","getAxesByScale","scaleType","axes","angleAxis","radiusAxis","getAngleAxis","getRadiusAxis","getOtherAxis","getBaseAxis","getTooltipAxes","baseAxis","baseAxes","otherAxes","dataToPoint","clamp","coordToPoint","dataToRadius","dataToAngle","pointToData","radiusToData","angleToData","minAngle","maxAngle","radius","radian","atan2","dir","getArea","radiusExtent","angleExtent","RADIAN","r0","startAngle","endAngle","d2","Gradient","isFunction","createOnAllSeries","performRawSeries","reset","seriesModel","getData","colorAccessPath","visualColorAccessPath","color","colorCallback","getColorFromPalette","getSeriesCount","setVisual","borderColorAccessPath","visualBorderColorAccessPath","borderColor","isSeriesFiltered","setItemVisual","getDataParams","dataEach","hasItemOption","itemModel","getItemModel","samplers","average","frame","sum","count","NaN","nearest","indexSampler","round","modifyOutputEnd","api","sampling","coordSys","coordinateSystem","sampler","valueAxis","size","rate","setData","downSample","mapDimension","textContain","graphicUtil","PATH_COLOR","isEmphasis","fontStyle","fontWeight","fontSize","fontFamily","getTextRect","SeriesModel","seriesModelMixin","BoxplotSeries","dependencies","defaultValueDimensions","defaultTooltip","defaultOption","zlevel","legendHoverLink","hoverAnimation","layout","boxWidth","itemStyle","borderWidth","emphasis","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","animationEasing","animationDuration","featureManager","brushLang","toolbox","brush","Brush","_brushMode","icon","keep","clear","title","proto","render","updateView","featureModel","isBrushed","eachComponent","brushModel","setIconStatus","getIcons","availableIcons","icons","onclick","dispatchAction","intervals","command","register","axisHelper","buildLabelElOption","elOption","axisPointerModel","labelPos","getValueLabel","precision","paddings","font","textRect","align","verticalAlign","viewWidth","viewHeight","confineInContainer","bgColor","label","textPadding","seriesDataIndices","parse","getLabel","getAxisRawValue","axisDimension","axisIndex","seriesData","idxItem","getSeriesByIndex","seriesIndex","dataIndex","dataIndexInside","dataParams","isString","replace","getTransformedPosition","layoutInfo","create","translate","buildElStyle","axisPointerType","styleModel","getAreaStyle","buildCartesianSingleLabelElOption","textLayout","makeLineShape","xDimIndex","makeRectShape","xy","wh","makeSectorShape","legendModels","findComponents","filterSelf","getName","isSelected","_simpleLayoutHelper","simpleLayout","simpleLayoutEdge","eachSeriesByType","coordDim","concat","setItemLayout","graph","lang","magicTypeLang","magicType","MagicType","line","bar","stack","seriesOptGenreator","seriesId","markPoint","markLine","isStack","radioTypes","newTitle","radio","indexOf","query","subType","newSeriesOpt","categoryAxis","axisType","queryComponents","boundaryGap","tiled","currentType","featureName","registerAction","payload","mergeOption","doCreateNode","env","urn","win","vmlInited","doc","document","canvasSupported","namespaces","zrvml","tagName","createElement","createNode","initVML","styleSheets","createStyleSheet","addRule","createGraphFromNodeEdge","encodeHTML","SankeySeries","levelModels","getInitialData","links","edges","nodes","levels","depth","nodeData","edgeData","wrapMethod","customizeGetParent","parentModel","nodeDepth","getItemLayout","getGraph","getEdgeByIndex","node1","getLayout","setNodePosition","localPosition","dataItem","localX","localY","getEdgeData","formatTooltip","multipleSeries","dataType","rawDataOpt","html","getNodeByIndex","superCall","optionUpdated","focusNodeAdjacency","nodeValue","nodeWidth","nodeGap","layoutIterations","nodeAlign","curveness","makeAction","method","actionInfo","selected","geoModel","geo","regions","region","numberUtil","CoordinateSystem","Calendar","calendarModel","_model","doConvert","methodName","finder","getDimensionsInfo","getRangeInfo","_rangeInfo","getRect","_rect","getCellWidth","_sw","getCellHeight","_sh","getOrient","_orient","getFirstDayOfWeek","_firstDayOfWeek","getDateInfo","date","parseDate","getFullYear","m","getMonth","d","getDate","day","getDay","time","getTime","formatedDate","getNextNDay","Date","setDate","_lineWidth","getItemStyle","_getRangeInfo","_initRangeOption","weeks","whNames","cellSize","layoutParams","getBoxLayoutParams","cellNumbers","cellSizeSpecified","whGlobal","calendarRect","dayInfo","start","end","week","nthWeek","pointToDate","dataToRect","contentShape","center","tl","tr","br","bl","nthX","floor","nthY","_getDateByWeeksAndDay","convertToPixel","convertFromPixel","rg","test","firstDay","setMonth","tmp","reversed","allDay","startDateNum","endDateNum","dateNum","sign","fweek","lweek","rangeInfo","nthDay","calendarList","calendar","eachSeries","calendarSeries","createHashMap","calculateStack","stackInfoList","targetStackInfo","idxInStack","resultVal","resultNaN","dims","stackResultDimension","stackedOverDimension","targetData","isStackedByIndex","newData","v0","v1","byValue","stackedDataRawIndex","stackedDimension","getRawIndex","stackedByDimension","stackedOver","j","stackInfo","rawIndexOf","getByRawIndex","hostModel","stackInfoMap","getCalculationInfo","setCalculationInfo","legendFilter","Component","registerProcessor","PRIORITY","PROCESSOR","SERIES_FILTER","registerSubTypeDefaulter","util","vec2","Draggable","eventTool","GestureMgr","stopEvent","stop","EmptyProxy","handlerNames","Handler","storage","painter","proxy","painterRoot","_hovered","_lastTouchMoment","_lastX","_lastY","_gestureMgr","setHandlerProxy","isHover","displayable","rectHover","isSilent","parent","isOutsideBoundary","handlerInstance","zrX","zrY","isOutside","lastHovered","lastHoveredTarget","__zr","findHover","hovered","hoveredTarget","setCursor","dispatchToElement","mouseout","eventControl","zrEventControl","zrIsToLocalDOM","resize","dispatch","eventArgs","cursorStyle","targetInfo","eventHandler","eventPacket","eveType","topTarget","cancelBubble","gestureEvent","pinchX","pinchY","pinchScale","wheelDelta","zrDelta","zrByTouch","which","makeEventPacket","eachOtherLayer","layer","exclude","list","getDisplayList","out","hoverCheckResult","processGesture","stage","gestureMgr","gestureInfo","recognize","dom","_downEl","_downPoint","_upEl","dist","updateCenterAndZoom","res","setCenter","setZoom","zoom","Path","polyHelper","smooth","smoothConstraint","buildPath","ctx","globalListener","AxisPointerView","extendComponentView","globalAxisPointerModel","globalTooltipModel","getComponent","triggerOn","currTrigger","unregister","getZr","superApply","arguments","paths","_updatePathDirty","dirtyPath","__dirtyPath","__dirty","beforeBrush","getGlobalScale","createPathProxy","setScale","segmentIgnoreThreshold","afterBrush","fixClipWithShadow","vec2Min","vec2Max","scaleAndAdd","v2Copy","cp0","cp1","isPointNull","p","drawSegment","segLen","allLen","smoothMin","smoothMax","smoothMonotone","connectNulls","drawMono","apply","drawNonMono","prevIdx","prevP","ctrlLen","bezierCurveTo","lineTo","nextIdx","nextP","ratioNextSeg","lenPrevSeg","lenNextSeg","sub","getBoundingBox","ptMin","ptMax","pt","len","result","stackedOnPoints","stackedOnSmooth","bbox","stackedOnBBox","closePath","LinkedList","head","_len","linkedListProto","insert","entry","Entry","insertEntry","prev","LRU","maxSize","_list","_map","_maxSize","_lastRemovedEntry","LRUProto","put","removed","leastUsedEntry","guid","Transformable","Animatable","Element","opts","isGroup","dirty","beforeUpdate","afterUpdate","attrKV","hide","refresh","setClipPath","addSelfToZr","removeClipPath","__clipTarget","removeSelfFromZr","animators","animation","addAnimator","removeAnimator","PictorialBarSeries","symbolSize","symbolRotate","symbolPosition","symbolOffset","symbolMargin","symbolRepeat","symbolRepeatDirection","symbolClip","symbolBoundingData","symbolPatternSize","barGap","progressive","setSelected","dataColor","sunburstLayout","dataFilter","listComponentHelper","toolboxModel","removeAll","itemSize","featureOpts","features","_features","featureNames","_featureNames","processFeature","makeBackground","titleText","__title","hoverStyle","makeFont","needPutOnTop","topOffset","feature","oldName","featureOpt","isUserFeatureName","Feature","unusable","iconStyleModel","iconStyleEmphasisModel","iconPaths","iconStr","iconName","createIcon","setStyle","textBorderRadius","tooltipModel","setHoverStyle","defaultTextPosition","textBackgroundColor","createIconPaths","status","iconStatus","view","zoomLimit","previousZoom","getZoom","getCenter","zoomMin","zoomMax","fixX","originX","fixY","originY","PathProxy","cubic","quadratic","arc","normalizeRadian","curve","windingLine","CMD","PI2","roots","extrema","swapExtrema","windingCubic","x0","y0","x3","y3","nRoots","cubicRootAt","y0_","y1_","nExtrema","t","unit","cubicAt","cubicExtrema","windingQuadratic","quadraticRootAt","quadraticExtremum","y_","quadraticAt","windingArc","anticlockwise","diff","x_","angle","containPath","isStroke","a","b","xi","yi","cmd","M","L","containStroke","C","Q","A","rx","ry","theta","dTheta","_x","R","Z","pathData","layoutUtil","ParallelAxis","sliderMove","mathFloor","mathCeil","ceil","Parallel","parallelModel","_axesMap","_axesLayout","_init","restrict","layoutAxisWithoutExpand","step","layoutLength","axisCount","layoutAxisWithExpand","axisExpandWidth","axisCollapseWidth","winInnerIndices","axisExpandWindow0Pos","axisExpandWindow","parallelAxisIndex","createScaleByModel","isCategory","onBand","_updateAxesFromSeries","_makeLayoutInfo","axisBase","layoutBase","pixelDimIndex","pAxis","pLayout","axisLength","contains","unionExtentFromData","niceScaleExtent","_layoutAxes","winSize","layoutExtent","axisExpandCount","axisExpandable","axisExtent","setExtent","posInfo","positionTable","horizontal","vertical","rotationTable","axisCoordToPoint","eachActiveState","callback","axesMap","dataDimensions","axisModels","axisDim","hasActiveSet","hasAxisBrushed","activeState","values","getValues","lenj","getActiveState","axisLayout","getAxisLayout","getSlidedAxisExpandWindow","behavior","delta","pointCoord","triggerArea","useJump","ComponentModel","axisModelCreator","axisModelCommonMixin","PolarAxisModel","getCoordSysModel","polarIndex","polarId","polarAxisDefaultExtendedOption","splitNumber","getAxisType","axisLabel","inBundle","moveTo","treemapVisual","treemapLayout","registerPreprocessor","history","restoreLang","restore","Restore","from","uid","resetOption","Pattern","image","repeat","getCanvasPattern","createPattern","logError","ZImage","ZText","arrayDiff","GradientManager","ClippathManager","ShadowManager","_graphic","svgPath","svgImage","svgText","parseInt10","parseInt","checkParentAvailable","parentNode","insertAfter","prevSibling","nextSibling","insertBefore","appendChild","prepend","firstChild","removeChild","getTextSvgElement","__textSvgEl","getSvgElement","__svgEl","SVGPainter","root","zrId","_opts","svgDom","setAttribute","cssText","bgRoot","svgRoot","gradientManager","clipPathManager","shadowManager","viewport","_svgDom","_svgRoot","_backgroundRoot","_viewport","_visibleList","getType","getViewportRoot","getSvgDom","getSvgRoot","getViewportRootOffset","viewportRoot","offsetLeft","offsetTop","_paintList","setBackgroundColor","backgroundColor","_backgroundNode","bgNode","markAllUnused","visibleList","listLen","newVisibleList","svgProxy","svgElement","prevSvgElement","indices","textSvgElement","added","addWithoutUpdate","markUsed","removeUnused","_getDefs","isForceCreating","defs","getElementsByTagName","children","display","_getSize","_width","_height","viewportStyle","whIdx","cwh","plt","prb","stl","defaultView","getComputedStyle","innerHTML","toDataURL","encodeURIComponent","outerHTML","clazzUtil","axisPointerModelHelper","throttleUtil","inner","makeInner","BaseAxisPointer","updateProps","animationModel","moveAnimation","props","propsEqual","lastProps","newProps","equals","lastProp","stopAnimation","updateLabelShowHide","labelEl","getHandleTransProps","trans","updateMandatoryProps","_group","_lastGraphicKey","_handle","_lastValue","_lastStatus","_payloadInfo","animationThreshold","forceRender","_axisModel","_axisPointerModel","_api","handle","makeElOption","graphicKey","_moveAnimation","determineAnimation","doUpdateProps","updatePointerEl","updateLabelEl","createPointerEl","createLabelEl","_renderHandle","isCategoryAxis","useSnap","getBandWidth","seriesDataCount","getAxisInfo","pointerOption","pointer","pointerEl","updateHandleTransform","isInit","handleModel","onmousemove","onmousedown","_onHandleDragMove","_onHandleDragEnd","createOrUpdate","_moveHandleToValue","getHandleTransform","_doDispatchAxisPointer","payloadInfo","cursorPoint","tooltipOption","axesInfo","doClear","buildLabel","enableClassExtend","ChartView","NORMAL_ITEM_STYLE_PATH","EMPHASIS_ITEM_STYLE_PATH","BoxplotView","oldData","_data","constDim","newIdx","symbolEl","createNormalBox","setItemGraphicEl","oldIdx","getItemGraphicEl","itemLayout","updateNormalBoxData","eachItemGraphicEl","noop","BoxPath","transInit","updateMethod","normalItemStyleModel","getItemVisual","initBaseline","TimelineModel","dataFormatMixin","SliderTimelineModel","interval","checkpointStyle","controlStyle","showPlayBtn","showPrevBtn","showNextBtn","itemGap","playIcon","stopIcon","nextIcon","prevIcon","Car","onChange","car","setCar","loading","setLoading","setEmpty","fetch","getUrl","then","message","carList","forEach","item2","catch","fetchCar","info","stopPropagation","RadialGradient","colorStops","globalCoord","global","inherits","idStart","normalize","Array","symbolType","colorQuery","opacityQuery","edge","getVisual","node2","makeStyleMapper","AxisModel","activeIntervals","getAreaSelectStyle","setActiveIntervals","asc","areaSelectStyle","realtime","getDefaultLabel","createListFromArray","getLayoutOnAxis","createClipPath","prepareCartesian2d","prepareGeo","prepareSingleAxis","preparePolar","prepareCalendar","CACHED_LABEL_STYLE_PROPERTIES","ITEM_STYLE_NORMAL_PATH","ITEM_STYLE_EMPHASIS_PATH","LABEL_NORMAL","LABEL_EMPHASIS","prepareCustoms","cartesian2d","singleAxis","prepareStyleTransition","targetStyle","elOptionStyle","oldElStyle","makeRenderItem","customSeries","renderItem","prepareResult","currDataIndexInside","currItemModel","currLabelNormalModel","currLabelEmphasisModel","currVisualColor","userAPI","getDevicePixelRatio","getDimension","extra","updateCache","applyExtraBefore","autoColor","isRectText","retrieve2","getFormattedLabel","applyExtraAfter","styleEmphasis","retrieve3","visual","visualType","barLayout","currentSeriesIndices","getCurrentSeriesIndices","userParams","seriesName","dataInsideLength","encode","wrapEncodeDef","currDirty","actionType","encodeDef","dimName","dataDimIndex","dimInfo","getDimensionInfo","isExtraCoord","coordDimIndex","animatableModel","doCreateOrUpdate","isRoot","simplyRemove","elOptionType","elOptionShape","__customGraphicType","getPathData","__customPathData","hasOwn","__customImagePath","__customText","graphicType","pathRect","makePath","Image","Error","getShapeClass","createEl","transitionProps","origin","textStroke","targetOpacity","initProps","setElementHoverStyle","setAsHighDownDispatcher","updateEl","newChildren","newLen","mergeChildren","$mergeChildren","byName","diffChildrenByName","notMerge","oldChildren","processAddUpdate","processRemove","childOption","dummyModel","stylePropName","modelPropName","host","useTransform","getSource","incrementalPrepareRender","incrementalRender","setIncrementalAndHoverLayer","incremental","useHoverLayer","filterForExposedEvent","eventType","targetEl","packedEvent","elementName","element","_axisHelper","makeLabelFormatter","getOptionCategoryInterval","makeCategoryLabelsActually","numericLabelInterval","labelsCache","getListCache","optionLabelInterval","listCacheGet","makeLabelsByCustomizedCategoryInterval","autoInterval","calculateCategoryInterval","makeAutoCategoryInterval","makeLabelsByNumericCategoryInterval","listCacheSet","labelCategoryInterval","cache","categoryInterval","onlyTick","labelFormatter","ordinalScale","ordinalExtent","getLabelModel","startTick","tickCount","showAllLabel","includeMinLabel","includeMaxLabel","addItem","tVal","getTicks","createAxisLabels","makeCategoryLabels","ticks","makeRealNumberLabels","createAxisTicks","tickCategoryInterval","ticksCache","optionTickInterval","labelsResult","makeCategoryTicks","axisRotate","getRotate","isHorizontal","fetchAutoCategoryIntervalCalculationParams","unitSpan","unitW","unitH","maxW","maxH","dw","dh","lastAutoInterval","lastTickCount","axisExtend0","axisExtend1","isIdInner","cptOption","innerUniqueIndex","has","defaultEmphasis","subOpts","subOptName","TEXT_STYLE_OPTIONS","getDataItemValue","isDataItemOption","mappingToExists","exists","newCptOptions","exist","makeIdAndName","mapResult","idMap","existCpt","assert","keyInfo","idNum","isNameSpecified","componentModel","compressBatches","batchA","batchB","mapA","mapB","makeMap","mapToArray","sourceBatch","otherMap","dataIndices","otherDataIndices","isData","queryDataIndex","indexOfRawIndex","indexOfName","random","toFixed","hostObj","parseFinder","defaultMainType","parsedKey","match","queryType","toLowerCase","includeMainTypes","queryParam","models","getAttribute","getTooltipRenderMode","renderModeOption","domSupported","groupData","array","buckets","keys","Scale","setting","_setting","_extent","_interval","init","getSetting","unionExtent","other","getApproximateExtent","thisExtent","_isBlank","setBlank","enableClassManagement","registerWhenExtend","_children","__storage","childCount","_doAdd","addBefore","splice","addToStorage","addChildrenToStorage","delFromStorage","delChildrenFromStorage","includeChildren","tmpRect","tmpMat","childRect","union","mathSin","mathCos","extremity","xDim","yDim","fromPoints","fromLine","fromCubic","fromQuadratic","tx","ty","fromArc","fixPosition","labelPositionOutside","setLabel","normalStyle","hoverLabelModel","setLabelStyle","labelFetcher","labelDataIndex","defaultText","_l","cubicProjectPoint","createListSimply","getDimensionTypeByAxis","makeSeriesEncodeForAxisCoordSys","_baseAxisDim","ordinalMeta","addOrdinal","xAxisModel","yAxisModel","xAxisType","yAxisType","getOrdinalMeta","coordDims","baseAxisDimIndex","baseAxisDim","otherAxisDim","baseAxisType","otherAxisType","newOptionData","newItem","unshift","coordDimensions","otherDims","itemName","dimsDef","dimensionsCount","encodeDefaulter","createDimensions","List","nameList","dimensionsInfo","initData","clearColorPalette","colorIdx","colorNameMap","scope","requestColorNum","scopeFields","defaultColorPalette","layeredColorPalette","colorPalette","colors","paletteNum","getNearestColorPalette","createWrap","doneCallback","elExistsMap","delay","easing","done","animateTo","scrollDataIndex","legendModel","setScrollDataIndex","modelHelper","findPointFromSeries","processOnAxis","axisInfo","newValue","updaters","dontSnap","outputFinder","involveSeries","snapToValue","payloadBatch","minDist","Number","MAX_VALUE","minDiff","seriesModels","seriesNestestValue","dataDim","getAxisTooltipData","nestestValue","indicesOfNearest","buildPayloadsBySeries","snap","showPointer","showTooltip","showValueMap","dataByCoordSys","triggerTooltip","coordSysModel","coordSysKey","makeKey","coordSysItem","coordSysId","coordSysIndex","coordSysType","coordSysMainType","dataByAxis","axisId","valueLabelOpt","makeMapperParam","illegalPoint","coordSysAxesInfo","isIllegalPoint","inputAxesInfo","shouldHide","coordSysMap","coordSysContainsPoint","inputAxisInfo","findInputAxisInfo","linkTriggers","tarAxisInfo","tarKey","linkGroup","srcAxisInfo","srcKey","srcValItem","mapper","outputAxesInfo","valItem","useHandle","updateModelActually","sampleItem","escapeConnect","dispatchTooltipActually","highDownKey","lastHighlights","newHighlights","batchItem","toHighlight","toDownplay","batch","dispatchHighDownActually","imageHelper","getContext","trim","textWidthCache","textWidthCacheCounter","STYLE_REG","methods","textLines","l","measureText","adjustTextX","adjustTextY","calculateTextPosition","distance","textDistance","halfHeight","prepareTruncateOptions","truncateSingleLine","maxIterations","cnCharWidth","ascCharWidth","contentWidth","ellipsisWidth","textLine","subLength","estimateLength","substr","charCode","charCodeAt","getLineHeight","parsePlainText","padding","textLineHeight","truncate","lineHeight","lines","outerHeight","canCacheByTextString","truncOuterHeight","truncOuterWidth","outerWidth","parseRichText","contentBlock","lastIndex","exec","matchedIndex","pushTokens","substring","contentHeight","pendingList","stlPadding","truncateWidth","truncateHeight","tokens","tokenStyle","token","styleName","rich","tokenHeight","textHeight","textWidth","tokenWidth","tokenWidthNotSpecified","charAt","percentWidth","bgImg","findExistImage","isImageReady","paddingW","remianTruncWidth","block","str","isEmptyStr","strs","isLineHolder","tokensLen","DEFAULT_FONT","$override","fn","getRichTextRect","getPlainTextRect","adjustTextPositionOnRect","componentUtil","modelUtil","createTask","createRenderPlanner","renderPlanner","Chart","getUID","renderTask","plan","renderTaskPlan","renderTaskReset","highlight","toggleHighlight","downplay","chartProto","elSetState","state","highlightDigit","isHighDownDispatcher","highlightKey","getHighlightDigit","dataIdx","progressiveRender","pipelineContext","progressMethodMap","updateLayout","updateVisual","markUpdateMethod","progress","forceFirstProgress","vmlCore","VMLPainter","vmlViewport","vmlRoot","_vmlRoot","_vmlViewport","oldDelFromStorage","oldAddToStorage","onRemove","onAdd","_firstPaint","__alreadyNotVisible","brushVML","_getWidth","_getHeight","vmlViewportStyle","currentStyle","clientWidth","paddingLeft","paddingRight","clientHeight","paddingTop","paddingBottom","seriesItem","visualDefault","VisualMapping","visualSolution","mapVisual","eachVisual","linearMap","extendComponentModel","stateList","replacableOptionKeys","dataBound","layoutMode","dimension","inRange","outOfRange","itemWidth","itemHeight","contentColor","inactiveColor","textGap","_dataExtent","targetVisuals","controllerVisuals","mergeDefaultAndTheme","thisOption","replaceVisualOption","resetItemSize","completeVisualOption","resetVisual","supplementVisualOption","createVisualMappings","getTargetSeriesIndices","optionSeriesIndex","seriesIndices","eachTargetSeries","isTargetSeries","is","formatValueText","edgeSymbols","isMinMax","textValue","resetExtent","getDataDimension","optDim","listDimensions","dimNames","isCalculationCoord","base","completeSingle","defa","stateExist","stateAbsent","optExist","optAbsent","visualData","isValidType","symbolExists","symbolSizeExists","visuals","categories","getValueState","getVisualMeta","dataToCoordSize","dataSize","dimIdx","halfSize","getSpanSign","handleEnds","handleIndex","span","minSpan","maxSpan","extentSpan","handleSpan","originalDistSign","extentMinSpan","realExtent","currDistSign","visualSymbol","layoutPoints","dataSample","STATISTIC","treeLayout","Axis","Axis2D","coordExtent","getAxesOnZeroOf","getGlobalExtent","ret","toGlobalCoord","grid","coordToData","toLocalCoord","parseXML","registerMap","mapName","rawGeoJson","rawSpecialAreas","records","svg","specialAreas","geoJson","record","parsers","retrieveMap","geoJSON","JSON","Function","svgXML","isTypedArray","enableClassCheck","_sourceType","SOURCE_FORMAT_ORIGINAL","SERIES_LAYOUT_BY_COLUMN","SOURCE_FORMAT_UNKNOWN","SOURCE_FORMAT_TYPED_ARRAY","SOURCE_FORMAT_KEYED_COLUMNS","Source","fields","fromDataset","sourceFormat","seriesLayoutBy","dimensionsDefine","encodeDefine","startIndex","dimensionsDetectCount","seriesDataToSource","groupResult","axisList","groupSeriesByAxis","groupItem","bandWidth","seriesCount","boxWidthList","boxOffsetList","boundList","maxDataCount","boxWidthBound","availableWidth","boxGap","calculateBase","halfWidth","cDimIdx","vDimIdx","cDim","vDims","axisDimVal","median","getPoint","end1","end2","end4","end5","addBodyEnd","layEndLine","point1","point2","endCenter","to","layoutSingleSeries","devicePixelRatio","timsort","Layer","requestAnimationFrame","viewRect","Painter","singleCanvas","nodeName","toUpperCase","dpr","_singleCanvas","rootStyle","zlevelList","_zlevelList","layers","_layers","_layerConfig","_needsManuallyCompositing","mainLayer","__builtin__","initContext","_domRoot","domRoot","createRoot","_hoverlayer","_hoverElements","isSingleCanvas","paintAll","_redrawId","clearColor","_backgroundColor","refreshHover","addHover","__hoverMir","elMirror","__from","removeHover","hoverElements","clearHover","hoverLayer","displayableSortFunc","getLayer","save","originalEl","invTransform","__clipPaths","_doPaintEl","getHoverLayer","redrawId","_updateLayerStatus","finished","_doPaintList","_compositeManually","self","clearRect","eachBuiltinLayer","virtual","drawImage","layerList","zi","__startIndex","__drawIndex","useTimer","now","startTime","__endIndex","firstEl","notClear","console","error","__dirtyText","prevElClipPaths","wxa","draw","currentLayer","forcePaint","culling","isDisplayableCulled","clipPaths","prevClipPaths","isClipPathChanged","prevEl","setTransform","beginPath","restoreTransform","doClip","insertLayer","layersMap","prevLayer","isLayerValid","prevDom","eachLayer","getLayers","updatePrevLayer","__used","prevZlevel","incrementalLayerCount","getElementCount","_clearLayer","configLayer","config","layerConfig","_zlevel","delLayer","_progressiveLayers","clearLayer","getRenderedCanvas","imageLayer","pixelRatio","renderToCanvas","displayList","pathToImage","canvas","shadowBlurSize","hasStroke","leftMargin","rightMargin","topMargin","bottomMargin","pathTransform","imgShape","controlPosition","autoPlay","rewind","loop","playInterval","currentIndex","_names","_initData","setCurrentIndex","getCurrentIndex","isIndexMax","setPlayState","getPlayState","dataArr","idxArr","dimType","category","replaceReg","replaceMap","'","c","TPL_VAR_ALIAS","wrapVar","varName","seriesIdx","pad","addCommas","toCamelCase","upperCaseFirst","group1","formatTpl","tpl","paramsList","seriesLen","alias","formatTplSimple","param","getTooltipMarker","extraCssText","renderMode","markerId","formatTime","isUTC","utc","S","capitalFirst","getTextBoundingRect","windowOpen","link","blank","opener","location","single","axisPosition","rectBound","positionMap","labelInside","isDimensionStacked","stackedDim","enableDataStack","dimensionInfoList","stackedByDimInfo","stackedDimInfo","byIndex","stackedCoordDimension","mayStack","dimensionInfo","createInvertedIndices","stackedDimCoordDim","stackedDimType","stackedDimCoordIndex","getStackedDimension","targetDim","MONTH_TEXT","EN","CN","WEEK_TEXT","_tlpoints","_blpoints","_firstDayOfMonth","_firstDayPoints","rangeData","_renderDayRect","_renderLines","_renderYearText","_renderMonthText","_renderWeekText","itemRectStyleModel","sh","addPoints","_getLinePointsOfOneWeek","_drawSplitline","_getEdgesPoints","rs","poyline","tmpD","_formatterLabel","nameMap","_yearTextPositionControl","aligns","yearLabel","xc","yc","posPoints","yearText","_monthTextPositionControl","isCenter","vAlign","monthLabel","termPoints","firstDayPoints","yyyy","yy","MM","monthText","_weekTextPositionControl","isStart","dayLabel","firstDayOfWeek","weekText","mathSqrt","mathAtan2","nPoint","sx","sy","preprocessor","Geo","geoSourceManager","mapDataStorage","resizeGeo","boundingCoords","leftTop","rightBottom","setBoundingRect","boxLayoutOption","aspectScale","useCenterAndSize","setViewRect","setGeoCoords","geoCoord","addGeoCoord","geoCreator","geoList","invertLongitute","mapRecords","geoIndex","mapModelGroupBySeries","getHostGeoModel","mapType","getMapType","mapSeries","nameMapList","singleMapSeries","mergeAll","getFilledRegions","originRegionArr","regionsArr","dataNameMap","load","registerCoordinateSystem","forceLayout","gravity","pp","initialFriction","friction","warmUp","setFixed","fixed","setUnfixed","v12","nLen","ignoreForceLayout","n1","n2","repFact","rep","_helper","prepareDataCoordInfo","getStackedOnPoint","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","diffResult","idx1","diffData","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","newDataOldCoordInfo","oldDataNewCoordInfo","diffItem","pointAdded","currentPt","nextPt","dataDimsForPoint","rawIndex","sort","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","stackedOnCurrent","stackedOnNext","viewHelper","singleAxisHelper","AxisView","XY","WH","SingleAxisPointer","getPointDimIndex","pixelValue","elStyle","pointerShapeBuilder","dimIndex","currPosition","cursorOtherValue","shadow","registerAxisPointerClass","LegendModel","_layout","ScrollableLegendModel","pageButtonItemGap","pageButtonGap","pageButtonPosition","pageFormatter","pageIcons","pageIconColor","pageIconInactiveColor","pageIconSize","pageTextStyle","animationDurationUpdate","extraOpt","inputPositionParams","mergeAndNormalizeLayoutParams","raw","SymbolDraw","SymbolClz","lineAnimationDiff","_poly","_createClipPathFromCoordSys","createGridClipPath","createPolarClipPath","isPointsSame","points1","points2","getBoundingDiff","min1","max1","min2","max2","getSmooth","turnPointsIntoStep","stepTurnAt","baseIndex","stepPoints","stepPt","middle","stepPt2","getIsIgnoreFunc","showAllSymbol","isAuto","availSize","dataLen","getSymbolSize","canShowAllSymbolForCategory","categoryDataDim","labelMap","createLineClipPath","hasAnimation","rectShape","expandSize","lineGroup","symbolDraw","_symbolDraw","_lineGroup","areaStyleModel","mapArray","isCoordSysPolar","prevCoordSys","_coordSys","polyline","_polyline","_polygon","isAreaChart","isEmpty","valueOrigin","dataCoordInfo","valueDim","getStackedOnPoints","showSymbol","isIgnoreFunc","__temp","clipShapeForSymbol","r1","_clipShapeForSymbol","_step","_newPolygon","updateData","isIgnore","clipShape","_stackedOnPoints","_points","_updateAnimation","_newPolyline","visualColor","visualMetaList","visualMeta","stops","stopLen","outerColors","minCoord","maxCoord","coordSpan","gradient","LinearGradient","getVisualGradient","lineJoin","stackedOnSeries","_valueOrigin","setZ","stopSymbolAnimation","__points","updatedDataInfo","diffStatus","ptIdx","during","registerPainter","hiddenKeys","defineProperty","f","FREEZING","METADATA","isExtensible","Object","setMetadata","it","objectID","weakData","meta","REQUIRED","fastKey","getWeakData","onFreeze","theme","axisPointer","crossStyle","legend","iconStyle","normal","dataZoom","timeline","timeAxis","axisTick","splitLine","splitArea","areaStyle","logAxis","gauge","candlestick","color0","borderColor0","cartesianAxisHelper","_axisSplitHelper","rectCoordAxisBuildSplitArea","rectCoordAxisHandleRemove","axisBuilderAttrs","selfBuilderAttrs","CartesianAxisView","axisPointerClass","oldAxisGroup","_axisGroup","gridModel","groupTransition","_splitLine","splitLineModel","lineColors","gridRect","lineCount","colorIndex","_minorSplitLine","_splitArea","polygonContain","Region","geometries","cp","properties","MAX_NUMBER","exterior","loopGeo","interiors","transformTo","calculateTransform","cloneShallow","newRegion","parallelPreprocessor","_throttledDispatchExpand","_dispatchExpand","checkTrigger","_mouseDownPoint","mouseDownPoint","debounceNextCall","DEFAULT_OUT_OF_BRUSH_COLOR","generateBrushOption","brushLink","xAxisIndex","yAxisIndex","throttleType","throttleDelay","coordInfoList","inBrush","outOfBrush","liftZ","setAreas","area","setBrushOption","getPercentWithPrecision","dataSelectableMixin","retrieveRawAttr","makeSeriesEncodeForNameBased","LegendVisualProvider","PieSeries","extendSeriesModel","legendVisualProvider","getRawData","updateSelectedMap","_createSelectableList","_defaultLabelLine","targetList","valueList","percent","labelLineNormalOpt","labelLine","labelLineEmphasisOpt","minShowLabelAngle","selectedOffset","hoverOffset","avoidLabelOverlap","percentPrecision","stillShowZeroSum","alignTo","bleedMargin","distanceToLabelLine","length2","animationType","animationTypeUpdate","Task","define","_reset","_plan","_count","_onDirty","onDirty","_dirty","taskProto","perform","performArgs","planResult","upTask","_upstream","skip","outputData","__pipeline","currentTask","lastModBy","normalizeModBy","_modBy","lastModDataCount","_modDataCount","modBy","modDataCount","taskIns","_dueIndex","_outputDueEnd","_dueEnd","_settedOutputEnd","_progress","downstream","_downstream","doProgress","outputDueEnd","unfinished","iterator","winCount","sStep","sCount","modNext","sequentialNext","_callingProgress","pipe","downTask","_disposed","getUpstream","getDownstream","setOutputEnd","onIrrelevantElement","normalizeRect","makeRectPanelClipPath","localPoints","clipPointsByRect","makeLinearBrushOtherExtent","specifiedXYIndex","brushWidth","makeRectIsTargetByCursor","targetModel","wrapTreePathInfo","Breadcrumb","containerGroup","makeItemPoints","packEventData","itemNode","componentSubType","selfType","treePathInfo","targetNode","onSelect","normalStyleModel","layoutParam","emptyItemWidth","totalWidth","renderList","_prepare","_renderContent","node","TEXT_PADDING","lastX","availableSize","seriesGroups","hostGeoModel","seriesList","datas","statisticType","mapKey","dataStatistics","originalData","seriesGroup","needsDrawMap","mainSeries","symbolCtor","_symbolCtor","symbolDrawProto","symbolNeedsDraw","normalizeUpdateOpt","makeSeriesScope","hoverItemStyle","SymbolCtor","seriesScope","fadeOut","isPersistent","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","enableAnimation","ComponentView","detectSourceFormat","sourceHeader","VisualMapView","helper","doRender","visualMapModel","itemAlign","_getItemAlign","viewData","_getViewData","endsText","showLabel","_renderEndsText","viewPieceList","piece","itemGroup","_onItemClick","_enableHoverLink","indexInModelPieceList","representValue","getRepresentValue","_createItemSymbol","visualState","renderBackground","positionGroup","pieceIndex","onHoverLink","hoverLink","makeHighDownBatch","findTargetDataIndices","modelOption","getItemAlign","getPieceList","shapeParam","getControllerVisual","newKey","getSelectedMapKey","selectedMode","o","visualMapId","setEncodeAndDimensions","getRawIndicesByActiveState","theActiveState","parallelIndex","inactiveOpacity","activeOpacity","FunnelSeries","getSum","minSize","funnelAlign","View","_nameCoordMap","nameCoordMap","_regionsMap","regionsMap","_invertLongitute","boundingRect","getReferringComponents","containCoord","rawTransformable","_rawTransformable","_updateTransform","getRegion","getRegionByCoord","getGeoCoord","noRoam","otherAxisOnZeroOf","rawAxisPosition","onZero","axisOffset","posBound","onZeroCoord","updateViewOnPan","controllerHost","updateViewOnZoom","zoomDelta","zoomX","zoomY","newZoom","zoomScale","xAxis","yAxis","zrColor","eventUtil","domUtil","vendors","assembleCssText","transitionDuration","duration","transitionText","vendorPrefix","assembleTransition","toHex","borderName","camelCase","assembleFont","makeStyleCoord","appendToBody","zrPainter","zrViewportRoot","transformLocalCoord","body","viewportRootOffset","TooltipContent","container","domBelongToZr","_appendToBody","_styleCoord","_container","_show","_hideTimeout","onmouseenter","_enterable","clearTimeout","_inContent","normalizeEvent","onmouseleave","hideLater","_hideDelay","domStyle","_moveTooltipIfResized","ratioX","ratioY","realX","realY","styleCoord","pointerEvents","setContent","setEnterable","enterable","getSize","setTimeout","isShow","getOuterSize","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","makeAscendingRun","lo","hi","compare","runHi","reverseRun","binaryInsertionSort","mid","pivot","gallopLeft","hint","lastOffset","maxOffset","gallopRight","TimSort","runStart","runLength","minGallop","stackSize","mergeAt","start1","length1","start2","cursor1","cursor2","dest","count1","count2","exit","_minGallop","mergeLow","customCursor","customDest","mergeHigh","mergeRuns","forceMergeRuns","pushRun","_runStart","_runLength","remaining","ts","minRun","minRunLength","force","isAroundEqual","p0","Clip","isArrayLike","arraySlice","defaultGetter","defaultSetter","interpolateNumber","interpolateString","interpolateArray","arrDim","len2","fillArr","arr0","arr1","arr0Len","arr1Len","isArraySame","catmullRomInterpolateArray","p3","t2","t3","catmullRomInterpolate","cloneValue","rgba2String","rgba","createTrackClip","animator","oneTrackDone","keyframes","propName","forceAnimate","getter","_getter","setter","_setter","useSpline","trackLen","trackMaxTime","firstVal","isValueArray","isValueColor","isValueString","lastValue","getArrayDim","kfPercents","kfValues","prevValue","isAllValueEqual","colorArray","_target","lastFrame","lastFramePercent","life","_loop","_delay","onframe","ondestroy","Animator","_tracks","_clipCount","_doneList","_onframeList","_clipList","when","tracks","pause","_paused","resume","isPaused","_doneCallback","doneList","lastClip","clipCount","addClip","oldOnFrame","forwardToLast","clipList","removeClip","getClips","linkList","TreeNode","hostTree","viewChildren","Tree","_nodes","isRemoved","eachNode","order","suppressVisitSub","updateDepthAndHeight","getNodeById","getId","getAncestors","includeSelf","ancestors","getValue","setLayout","ignoreParent","isAncestorOf","isDescendantOf","getNodeByDataIndex","getNodeByName","clearLayouts","clearItemLayouts","createTree","dataRoot","beforeLink","tree","listData","dimMax","buildHierarchy","dataNode","addChild","mainData","struct","structAttr","VisualMapModel","reformIntervals","PiecewiseModel","minOpen","maxOpen","itemSymbol","pieceList","_pieceList","mode","_mode","_determineMode","resetMethods","_resetSelected","mappingOption","mappingMethod","dataExtent","visualTypesInPieces","visualTypes","listVisualTypes","pieces","hasSel","findPieceIndex","pieceInterval","getColorVisual","curr","setStop","valueState","splitStep","close","cate","normalizeReverse","pieceListItem","closeList","infinityList","useMinMax","lg","retrieveVisuals","pointPair","_doTrack","_recognize","touches","trackItem","touch","clientToLocal","recognizers","pinch","pinchEnd","pinchPre","pinchCenter","parallelVisual","candlestickVisual","candlestickLayout","TimelineAxis","LargeArr","Float32Array","candleWidth","barMaxWidth","barMinWidth","barWidth","calculateCandleWidth","openDim","closeDim","lowestDim","highestDim","isSimpleBox","large","tmpIn","tmpOut","openVal","closeVal","lowestVal","highestVal","getSign","ocLow","ocHigh","ocLowPoint","ocHighPoint","lowestPoint","highestPoint","subPixelOptimizePoint","brushRect","makeBrushRect","pmin","pmax","SOURCE_FORMAT_ARRAY_ROWS","SOURCE_FORMAT_OBJECT_ROWS","SERIES_LAYOUT_BY_ROW","BE_ORDINAL","Must","Might","Not","normalizeDimensionsDefine","displayName","arrayRowsTravelFirst","maxLoop","value0","getDatasetModel","datasetIndex","doGuessOrdinal","dimDefItem","sample","detectValue","row","beStr","datasetModel","resetSourceDefaulter","datasetMap","prepareSource","seriesOption","datasetOption","completeResult","firstIndex","objectRowsCollectDimensions","colArr","completeBySourceData","baseCategoryDimIndex","categoryWayValueDimStart","encodeItemName","encodeSeriesName","coordDimInfo","coordDimIdx","getDataDimCountOnCoordDim","datasetRecord","categoryWayDim","valueWayDim","pushDim","dimIdxArr","idxFrom","idxCount","coordDimName","dimCount","potentialNameDimIndex","idxResult","idxRes0","idxRes1","guessRecords","guessResult","isPureNumber","fulfilled","nameDimIndex","guessOrdinal","curveUtil","EffectLine","lineData","createLine","_updateEffectSymbol","effectLineProto","effectModel","_symbolType","setColor","_symbolScale","_updateEffectAnimation","period","constantSpeed","delayExpr","isDelayFunc","updateAnimationPoints","getLineLength","_period","__t","animate","updateSymbolPosition","__p1","__cp1","__p2","lastPos","quadraticDerivativeAt","undefined","__lastT","scaleY","Diff","buildValues","components","newArr","oldArr","componentPos","componentLen","newPos","oldPos","component","oldLen","editLength","maxEditLength","bestPath","extractCommon","execEditLength","diagonalPath","basePath","addPath","removePath","canAdd","canRemove","pushComponent","last","commonCount","tokenize","getAutoCurvenessParams","createCurveness","appendLength","autoCurvenessParmas","curvenessList","__curvenessList","getKeyOfEdges","getOppositeKey","getEdgeMapLengthWithKey","edgeMap","__edgeMap","initCurvenessList","createEdgeMapForCurveness","oppositeEdges","isForward","getCurvenessForEdge","needReverse","autoCurvenessParams","isArrayParam","edgeArray","getEdgeFromMap","edgeIndex","totalLen","getTotalLengthBetweenNodes","curKey","parityCorrection","oppositeKey","resValue","RoamController","roamHelper","getFixedItemStyle","areaColor","updateMapSelected","mapOrGeoModel","regionsGroup","otherRegionEl","__regions","MapDraw","updateGroup","_controller","_controllerHost","_updateGroup","_mouseDownFlag","_mapName","_initialized","_regionsGroup","_backgroundGroup","fromView","isGeo","_updateBackground","targetScale","transformInfo","getTransformInfo","isFirstDraw","roamTransform","rawScale","rawPosition","itemStyleAccessPath","hoverItemStyleAccessPath","labelAccessPath","hoverLabelAccessPath","regionGroup","compoundPath","CompoundPath","itemStyleModel","regionModel","getRegionModel","hoverItemStyleModel","transformPoint","geometry","interior","hoverShowLabel","isDataNaN","useInsideStyle","textScale","highDownSilentOnTouch","_updateController","mapDraw","action","updateMapSelectHandler","removeGraphic","makeGraphic","enable","makeActionBase","setPointerChecker","getViewRectAfterRoam","handleError","err","req","level","metrics","emitCounter","logger","errorType","counter","getCarIds","seriesCarIds","json","car_ids","vector","mIdentity","isNotAroundZero","transformableProto","scaleTmp","parentHasTransform","globalScaleRatio","relX","relY","invert","tmpTransform","originTransform","setLocalTransform","v2","transformCoordToGlobal","Displayable","src","_image","createOrUpdateImage","onload","sWidth","sHeight","drawRectText","minValue","maxValue","mapValueToColor","mapValueToVisual","customColor","LegendView","ScrollableLegendView","newlineDisabled","_currentIndex","_containerGroup","getContentGroup","_controllerGroup","_showController","resetInner","__rectSize","renderInner","selector","selectorPosition","me","controllerGroup","createPageButton","pageTextStyleModel","iconIdx","pageDataIndexName","_pageGo","layoutInner","isFirstRender","selectorGroup","getSelectorGroup","orientIdx","hw","yx","selectorButtonGap","selectorRect","selectorPos","processMaxSize","mainRect","_layoutContentAndController","contentGroup","contentRect","controllerRect","showController","contentPos","containerPos","controllerPos","pageInfo","_getPageInfo","pageIndex","contentPosition","_updatePageInfoView","legendId","canJump","pageText","total","pageCount","containerRectSize","targetItemIndex","_findTargetItemIndex","targetItem","itemCount","pCount","pagePrevDataIndex","pageNextDataIndex","targetItemInfo","getItemInfo","winStartItemInfo","winEndItemInfo","currItemInfo","itemRect","__legendDataIndex","itemInfo","winStart","targetDataIndex","legendDataIdx","defaultIndex","BrushTargetManager","STATE_LIST","DISPATCH_FLAG","PRIORITY_BRUSH","VISUAL","BRUSH","layoutCovers","brushTargetManager","setInputRanges","doDispatch","brushSelected","isDisposed","checkInRange","selectorsByBrushType","rangeInfoList","selectors","getSelectorsByBrushType","brushSelector","sels","selectorsByElementType","bSelector","sel","brushIndex","thisBrushSelected","brushId","brushName","linkedSeriesMap","selectedDataIndexForLink","rangeInfoBySeries","hasBrushExists","selFn","elType","bindSelector","boundingRectBuilders","visualMappings","linkOthers","brushed","stepAParallel","brushModelNotControll","controlSeries","stepAOthers","seriesBrushSelected","applyVisual","getBoundingRectFromMinMax","minMax","getTooltipPosition","axisDefault","valueAxisDefault","defaultsShow","nameTextStyle","showName","nameFormatter","nameGap","indicatorModels","indicatorOpt","iNameTextStyle","indName","getIndicatorModels","indicator","coordsOffsetMap","coordFix","getProgressive","getProgressiveThreshold","progressiveThreshold","largeThreshold","roundCap","showBackground","backgroundStyle","borderType","borderRadius","onLeave","doEnter","initialized","useHandler","dis","pendings","showTip","hideTip","makeDispatchAction","actuallyPayload","showLen","hideLen","dispatchTooltipFinally","initGlobalListeners","symbolProto","getScale","driftSymbol","_createSymbol","keepAspect","symbolPath","toLastFrame","getSymbolPath","setDraggable","_updateCommon","fadeIn","_seriesModel","normalStyleAccessPath","emphasisStyleAccessPath","normalLabelAccessPath","emphasisLabelAccessPath","highDownOnUpdate","fromState","toState","__symbolOriginalScale","ratio","emphasisOpt","symbolInnerColor","z2Origin","__z2Origin","useNameLabel","isAnimationEnabled","keepLabel","symbolUtil","extendChartView","normalizeSymbolSize","updateSymbols","oldPoints","newPoints","symbolGroup","__dimIdx","getInitialPoints","hoverAreaStyleModel","polygonIgnore","hoverPolygonIgnore","itemHoverStyle","labelHoverModel","labelDimIndex","radiusAxisModel","axisAngle","layoutAxis","splitLines","Circle","mergePath","areaColors","splitAreas","prevRadius","Sector","_dataStackHelper","_completeDimensions","completeDimensions","_createDimensions","_symbol","dataStack","createList","createScale","isInstance","mixinAxisModelCommonMethods","ArrayCtor","m1","m2","out0","out1","out2","out3","out4","out5","rad","aa","ac","atx","ab","ad","aty","st","ct","vx","vy","det","OrdinalMeta","scaleProto","OrdinalScale","_ordinalMeta","getOrdinal","rank","niceTicks","niceExtent","Series","brandId","setSeries","empty","fetchSeries","sub_brand_name","series_id","series_name","SKIP_PROPS","CandlestickView","_updateDrawMode","_isLargeDraw","_renderLarge","_renderNormal","_clear","_incrementalRenderLarge","_incrementalRenderNormal","isLargeDraw","needsClip","clipArea","isNormalBoxClipped","setBoxCommon","createLarge","NormalBoxPath","__simpleBox","clipped","LargeBoxPath","__sign","largePoints","elP","elN","setLargeStyle","suffix","Style","RectText","dragging","rectContain","animateStyle","updateDataSelected","toggleItemSelected","midAngle","PiePiece","sector","piePieceProto","firstCreate","labelText","sectorShape","withAnimation","_updateLabel","hoverIgnore","normalIgnore","targetLineShape","linePoints","targetTextStyle","labelLineModel","labelLineHoverModel","inside","sectorGroup","_sectorGroup","onSectorClick","piePiece","_createClipPath","arrySlice","eventProcessor","_$handlers","_$eventProcessor","eventful","isOnce","_h","normalizeQuery","wrap","one","callAtLast","zrEventfulCallAtLast","lastWrap","newList","args","argLen","hItem","filter","afterTrigger","triggerWithContext","eachEdge","updatePolarScale","setAxis","polarCreator","polarList","polarModel","findAxisModel","angleAxisModel","resizePolar","getSeriesStackId","getAxisKey","lastStackCoords","barWidthAndOffset","barSeries","columnsMap","axisKey","columnsOnAxis","remainedWidth","autoWidthCount","categoryGap","stacks","stackId","barCategoryGap","coordSysName","barGapPercent","autoWidth","column","lastColumn","widthSum","calRadialBar","getSeriesByType","columnLayoutInfo","columnOffset","columnWidth","barMinHeight","barMinAngle","baseDim","stacked","clampLayout","valueAxisStart","baseValue","baseCoord","radiusSpan","angleSpan","selectableMixin","GeoModel","_optionModelMap","reduce","optionModelMap","regionOpt","scaleLimit","categoryFilter","categoryVisual","edgeVisual","circularLayout","createView","POST_CHART_LAYOUT","IndicatorAxis","IntervalScale","getScaleExtent","LogScale","Radar","radarModel","_indicatorAxes","indicatorModel","indicatorAxis","getIndicatorAxes","indicatorIndex","closestAxis","minRadianDiff","closestAxisIdx","viewSize","indicatorAxes","radarSeries","increaseInterval","exp10","log","LN10","rawExtent","fixedMin","getMin","fixedMax","getMax","getInterval","setInterval","radarList","radar","Graph","directed","addNode","linkNameList","validEdges","linkCount","addEdge","coordSysCtor","dimensionNames","datasAttr","rangeStart","eqNaN","rangeEnd","getNeedCrossZero","setRange","resetRange","coordinateSystemCreators","CoordinateSystemManager","_coordinateSystems","coordinateSystems","creater","getCoordinateSystems","coordinateSystemCreator","mathAbs","hasTypedArray","notSaveData","_saveData","_ctx","_xi","_yi","_x0","_y0","_ux","_uy","_lineDash","_dashOffset","_dashIdx","_dashSum","addData","exceedUnit","_needsDash","_dashedLineTo","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","arcTo","toStatic","setLineDash","lineDash","lineDashSum","setLineDashOffset","appendPath","appendSize","appendPathData","_expandData","_prevCmd","dash","dashSum","nDash","bezierLen","tmpLen","rebuildPath","ux","uy","psi","fs","scaleX","ctor","leaves","leavesModel","isExpand","treeDepth","expandTreeDepth","expandAndCollapse","initialTreeDepth","getRawDataItem","collapsed","realRoot","edgeShape","edgeForkPosition","roam","nodeScaleRatio","scaleHelper","intervalScaleProto","ONE_DAY","ONE_HOUR","TimeScale","stepLvl","_stepLvl","minInterval","maxInterval","fixMin","fixMax","approxTickNum","approxInterval","scaleLevelsLen","scaleLevels","bisect","yearSpan","nice","timezoneOffset","getTimezoneOffset","fixExtent","_niceExtent","ONE_SECOND","ONE_MINUTE","useUTC","__NEXT_P","useEncodeDefaulter","hoverLayerThreshold","axisExpandCenter","axisExpandRate","axisExpandDebounce","axisExpandSlideTriggerArea","axisExpandTriggerOn","parallelAxisDefault","_initDimensions","setAxisExpand","dependentModels","parallelAxis","wx","getSystemInfoSync","browser","os","svgSupported","touchEventsSupported","worker","navigator","ua","firefox","ie","weChat","version","SVGRect","pointerEventsSupported","detect","userAgent","nextRight","hierNode","thread","nextLeft","nextAncestor","nodeInLeft","ancestor","moveSubtree","wl","wr","shift","change","modifier","prelim","defaultSeparation","defaultAncestor","pop","firstWalk","separation","siblings","subtreeW","executeShifts","midPoint","subtreeV","nodeOutRight","nodeInRight","nodeOutLeft","sumOutRight","sumInRight","sumOutLeft","sumInLeft","apportion","secondWalk","nodeX","radialCoordinate","radialCoor","getViewRect","pathTool","colorTool","Ring","BezierCurve","Arc","IncrementalDisplayable","subPixelOptimizeUtil","EMPTY_OBJ","_highlightNextDigit","_highlightKeyMap","_customShapeMap","registerShape","ShapeClass","createFromString","centerGraphic","resizePath","hasFillOrStroke","fillOrStroke","liftedColorMap","liftedColorCount","singleEnterEmphasis","hoverStl","__hoverStl","__highlighted","elTarget","rollbackDefaultTextStyle","__hoverStlDirty","__cachedNormalStl","__cachedNormalZ2","cacheElementStl","extendFrom","setDefaultHoverFillStroke","applyDefaultTextStyle","liftedColor","lift","liftColor","singleEnterNormal","highlighted","normalStl","normalZ2","traverseUpdate","updater","commonParam","__highDownOnUpdate","onElementMouseOver","shouldSilent","__highByOuter","onElementMouseOut","onElementEmphasisEvent","onElementNormalEvent","__highDownSilentOnTouch","asDispatcher","disable","__highDownDispatcher","specifiedTextStyle","setTextStyleCommon","getTextPosition","textOffset","richResult","globalTextStyle","richItemNames","richItemNameMap","getRichItemNames","richTextStyle","setTokenTextStyle","forceRich","isBlock","getAutoColor","textBorderColor","textStrokeWidth","textBorderWidth","insideRollbackOpt","textTag","disableBox","textBoxShadowColor","textBoxShadowBlur","textBoxShadowOffsetX","textBoxShadowOffsetY","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","insideRollback","useInsideStyleCache","useAutoColorCache","animateOrSetProps","isUpdate","postfix","animationDelay","getAnimationDelayParams","lineLineIntersect","a1x","a1y","a2x","a2y","b1x","b1y","b2x","b2y","mx","my","nx","ny","nmCrossProduct","crossProduct2d","b1a1x","b1a1y","q","Z2_EMPHASIS_LIFT","extendShape","extendPath","extendFromString","makeImage","imageUrl","img","subPixelOptimizeLine","subPixelOptimizeRect","emphasisStyle","normalModel","emphasisModel","normalSpecified","emphasisSpecified","baseText","labelProp","showNormal","showEmphasis","normalStyleText","emphasisStyleText","modifyLabelStyle","normalStyleProps","emphasisStyleProps","setText","defaultColor","gTextStyleModel","mat","hBase","vBase","vertex","g1","g2","elMap1","g","elMap","getElMap","oldEl","newProp","getAnimatableProps","clipRectByRect","targetRect","linePolygonIntersect","throttle","DataZoomView","SHOW_DATA_SHADOW_SERIES_TYPE","SliderZoomView","_displayables","_range","_handleEnds","_size","_handleWidth","_handleHeight","_location","_dataShadowInfo","dataZoomModel","_buildView","_updateView","_resetLocation","_resetInterval","barGroup","_renderBackground","_renderDataShadow","_positionGroup","coordRect","_findCoordRect","ecSize","layoutRect","targetAxisModel","getFirstTargetAxisModel","otherAxisInverse","_getViewExtent","_onClickPanelClick","_prepareDataShadowInfo","otherDim","getShadowDim","otherDataExtent","getDataExtent","otherOffset","lastIsEmpty","otherShadowExtent","thisShadowExtent","areaPoints","thisCoord","stride","otherCoord","showDataShadow","eachTargetAxis","getAxisProxy","getTargetSeriesModels","thisAxis","thisDim","displaybles","handles","handleLabels","filler","getCursor","_onDragMove","ondragstart","_showDataInfo","_onDragEnd","onmouseover","onmouseout","bRect","handleColor","getPercentRange","viewExtent","_updateInterval","viewExtend","minMaxSpan","findRepresentativeAxisProxy","getMinMaxSpan","percentExtent","lastRange","nonRealtime","handleInterval","handleHeight","_updateDataInfo","labelTexts","axisProxy","getAxisModel","dataInterval","calculateDataWindow","valueWindow","getDataValueWindow","_formatLabel","orderedHandleEnds","barTransform","textPoint","labelPrecision","getPixelPrecision","valueStr","showOrHide","changed","_dispatchZoomAction","localPoint","dataZoomId","getTargetCoordInfo","fillLabel","MarkerModel","_mergeOption","hostSeries","__hostSeries","newOpt","createdBySelf","markerOpt","markerModel","getRawValue","formattedValue","valueArr","isAscending","getSortedIndices","sizeExtent","getLinePoints","textX","textY","labelPosition","isLabelInside","labelLineLen","layerSeries","getLayerSeries","keyGetter","dataDiffer","_layersSeries","newLayersGroups","process","oldLayersGroups","points0","layerGroup","rectEl","createGridClipShape","POSSIBLE_STYLES","compatEC2ItemStyle","itemStyleOpt","normalItemStyleOpt","emphasisItemStyleOpt","convertNormalEmphasis","optType","useExtend","normalOpt","removeEC3NormalStatus","compatTextStyle","labelOptSingle","compatEC3CommonStyles","toArr","toObj","markArea","mpData","mlData","breadcrumb","processSeries","axisOpt","parallel","parallelOpt","calendarOpt","radarOpt","geoOpt","regionObj","timelineOpt","toolboxOpt","fixShadow","ContextCachedBy","STYLE_COMMON_PROPS","createLinearGradient","createRadialGradient","styleProto","fillOpacity","strokeOpacity","lineDashOffset","transformText","textOrigin","blend","prevStyle","notCheckCache","__attrCachedBy","STYLE_BIND","fillStyle","strokeStyle","globalAlpha","globalCompositeOperation","getLineScale","hasFill","otherStyle","newStyle","getGradient","canvasGradient","addColorStop","hasKeys","mappings","Creater","__hidden","createMappings","__alphaForOpacity","visualTypesMap","eachItem","valueOrIndex","rawDataItem","prepareVisualTypes","incrementalApplyVisual","excludes","includes","validDataCount","unitRadian","roseType","restAngle","valueSumLargerThanMinAngle","currentAngle","paletteScope","categoriesData","getCategoriesData","categoryNameIdxMap","itemStyleList","all","dataView","back","saveAsImage","typeNames","pie","scatter","effectScatter","treemap","boxplot","heatmap","sankey","funnel","pictorialBar","themeRiver","sunburst","aria","general","withTitle","withoutTitle","prefix","withName","withoutName","multiple","separator","allData","partialData","DefaultDataProvider","dimSize","_source","_offset","_dimSize","providerMethods","providerProto","pure","persistent","getItem","appendData","appendDataSimply","countSimply","getItemSimply","col","newCol","oldCol","clean","rawValueGetters","arrayRows","getRawValueSimply","objectRows","keyedColumns","original","typedArray","defaultDimValueGetters","getDimValueSimply","converDataValue","_dimensionInfos","_rawData","parseAndCollect","retrieveRawValue","getProvider","OTHER_DIMENSIONS","getOrCreateEncodeArr","summarizeDimensions","summary","notExtraCoordDimMap","defaultedLabel","defaultedTooltip","userOutput","dimItem","encodeArr","dataDimsOnCoord","encodeFirstDimNotExtra","dimArr","encodeLabel","encodeTooltip","barPolar","borderColorQuery","globalColors","eachRawSeriesByType","defaulColor","legendSymbol","getTargetSeries","seriesModelMap","overallReset","filterData","percentRange","getDataPercentWindow","valueRange","setCalculatedRange","startValue","endValue","debugMode","getMarkerPosition","clampData","progressiveChunkMode","Ellipse","DILIMITER_REG","DOMParser","parseFromString","nodeType","SVGParser","_defs","_root","_isDefine","_isText","xml","viewBox","parseAttributes","viewBoxRect","viewBoxTransform","_parseNode","viewBoxArr","makeViewBoxTransform","ignoreViewBox","elRoot","ignoreRootClip","xmlNode","parentGroup","parser","defineParsers","def","nodeParsers","_parseText","_textX","_textY","textContent","inheritStyle","circle","ellipse","parsePoints","stopColor","_parseGradientColorStops","__inheritedStyle","pointsString","attributesMap","onlyInlineStyle","zrStyle","isTextEl","transformOps","transformRegex","warn","parseTransformAttribute","styleRegResult","styleList","styleRegex","svgAttrName","parseStyleAttribute","attrValue","elFillProp","elStrokeProp","getPaint","elPropName","textBaseline","urlRegex","urlMatch","parseSVG","markerHelper","LineDraw","MarkerView","markLineTransform","mlModel","mlType","valueDataDim","numCalculate","valueIndex","mlFrom","mlTo","dataTransform","isInifinity","ifMarkLineHasOnlyDim","fromCoord","toCoord","otherDimIndex","markLineFilter","updateSingleMarkerEndLayout","isFrom","xPx","yPx","markLineModel","fromData","toData","__to","markerGroupMap","renderSeries","lineDrawMap","lineDraw","coordDimsInfos","optData","dimValueGetter","updateDataVisualAndLayout","lineColor","dataModel","__keep","DEFAULT_BAR_BOUND","ContinuousModel","calculable","hoverLinkDataSize","hoverLinkOnHandle","_resetRange","auto","getSelected","oVals","getColorStopValues","iVals","iIdx","oIdx","iLen","oLen","first","stopsLen","stopValues","Dispatcher","Animation","_clips","_running","_time","_pausedTime","_pauseStart","clips","_update","deferredEvents","deferredClips","_needsRemove","fire","_startLoop","isFinished","show_more_icon","require","moreIconGrey","moreIconYellow","emptyImage","Header","hasVR","React","brand_name","brand_id","avatar_url","cover_url","dealer_price","official_price","head_info","entrance_list","car_id_list","pic_summary","white_cover_url","motor_id","vr_image","pc_config","is_new_energy_type","environmental_standards","driver_form","fuel_comprehensive","gearbox_description","air_control_model_2","fuel_form","fuel_label","seat_material","engine_description","setParams","cityName","useCityName","price","setPrice","DealerLowPrice","DealerHighPrice","Photos","subsidyPrice","pirceHintText","priceText","alt","logo_url","href","getZT","as","sendTeaCommEvent","car_series_id","disabled","className","Fragment","car_type","recharge_mileage","max_horsepower","electric_drive_number","electric_type","acceleration_time","max_speed","battery_charge_time","series_displacement","images","SeriesId","Category","PicCount","CoverPicUrl","every","num","pre","cur","categoryMap","Map","getLinkHref","transition","sub_tab","classNames","num_small","default","sankeyLayout","sankeyVisual","_echarts","_export","DATAS","MAIN_DATA","transferInjection","linkAll","linkSingle","changeInjection","cloneShallowInjection","getLinkedData","main","TRANSFERABLE_METHODS","CHANGABLE_METHODS","roams","InsideZoomView","allCoordIds","coordInfo","generateCoordId","coordModel","getRange","roamHandlers","coordId","containsPoint","directionInfo","getDirectionInfo","percentPoint","signal","pixelStart","pixelLength","pixel","pan","makeMover","oldX","oldY","newX","newY","scrollMove","scrollDelta","getPercentDelta","percentDelta","oldPoint","newPoint","getCoordSysInfoBySeries","coordSysDimDefs","registeredCoordSys","coordSysInfo","coordSysDims","axisMap","firstCategoryDimIndex","hasNameEncode","dimInfoList","generateCoord","categoryAxisModel","categoryAxisMap","stackCalculationInfo","firstDataNotNull","isNeedCompleteOrdinalData","itemOpt","defaultDimValueGetter","isNumeric","BAR_BORDER_WIDTH_QUERY","LAYOUT_ATTRS","posDesc","pathForLineWidth","getSymbolMeta","symbolMeta","output","boundingLength","zeroPx","pxSignIdx","symbolBoundingExtent","convertToCoordOnAxis","coordSysExtent","repeatCutLength","pxSign","prepareBarLength","categoryDim","categorySize","symbolScale","prepareSymbolSize","valueLineWidth","prepareLineWidth","unitLength","pathLen","absBoundingLength","hasEndGap","lastIndexOf","uLenWithMargin","endFix","repeatSpecified","repeatTimes","toIntTimes","sizeFix","pathPosition","bundlePosition","barRectShape","prepareLayoutInfo","createPath","createOrUpdateRepeatSymbols","bundle","__pictorialBundle","eachPath","__pictorialAnimationIndex","__pictorialRepeatTimes","updateAttr","makeTarget","updateHoverAnimation","onMouseOver","onMouseOut","createOrUpdateSingleSymbol","mainPath","__pictorialMainPath","createOrUpdateBarRect","barRect","__pictorialBarRect","createOrUpdateClip","__pictorialClipPath","createBar","__pictorialShapeStr","getShapeStr","__pictorialSymbolMeta","removeBar","labelRect","pathes","immediateAttrs","animationAttrs","barRectHoverStyle","barPositionOutside","times","roundedTimes","cartesian","coordSysRect","pictorialShapeStr","updateBar","dataBackground","fillerColor","handleIcon","handleStyle","showDetail","zoomLock","SunburstPiece","that","virtualRoot","newRoot","getViewRoot","renderLabelForZeroData","_oldChildren","processNode","newId","oldId","newNode","oldNode","removeNode","doRenderNode","dualTravel","viewRoot","virtualPiece","_onclickEvent","_rootToNode","renderRollUp","highlightPolicy","onEmphasis","unhighlight","onNormal","_initEvents","targetFound","nodeClick","linkTarget","transformPath","vMag","vRatio","u","vAngle","acos","processArc","fa","psiDeg","xp","yp","lambda","cxp","cyp","commandReg","numberReg","createPathOptions","pathProxy","prevCmd","cpx","cpy","subpathX","subpathY","cmdList","cmdText","cmdStr","pLen","ctlPtx","ctlPty","createPathProxyFromString","pathEls","pathList","pathEl","pathBundle","TimelineView","_axis","_viewRect","_timer","_currentPointer","_mainGroup","_labelGroup","timelineModel","mainGroup","_createGroup","labelGroup","_createAxis","_renderAxisLabel","_position","_doPlayStop","_clearTimer","labelPosOpt","playPosition","prevBtnPosition","nextBtnPosition","labelAlignMap","labelBaselineMap","rotationMap","mainLength","controlModel","showControl","controlSize","controlGap","sizePlusGap","xLeft","xRight","labelAlign","labelBaseline","rotateOriginX","rotateOriginY","viewBound","getBound","mainBound","labelBound","mainPosition","labelsPosition","mainBoundIdx","toBound","setOrigin","targetGroup","fromPos","boundIdx","newGroup","_renderAxisLine","_renderAxisTick","hoverStyleModel","symbolOpt","_changeTimeline","giveSymbol","normalLabelModel","_renderControl","playState","makeBtn","iconPath","willRotate","btn","objPath","makeIcon","_handlePlayClick","_renderCurrentPointer","pointerModel","onCreate","_handlePointerDrag","_handlePointerDragend","pointerMoveTo","onUpdate","nextState","_pointerChangeTimeline","mousePos","_toAxisCoord","_findNearestTick","axisCoord","nextIndex","noAnimation","TIME_REG","quantityExponent","exp","domain","subDomain","subRange","returnStr","arr","getPrecision","getPrecisionSafe","eIndex","dotIndex","pixelExtent","dataQuantity","sizeQuantity","acc","digits","votesPerQuota","targetSeats","seats","votes","currentSum","remainder","NEGATIVE_INFINITY","maxId","MAX_SAFE_INTEGER","pi2","hour","UTC","quantity","exponent","quantile","ascArr","H","littleThan","currClose","_format","DIMENSION_LABEL_REG","rawValue","rawDataIndex","isSeries","marker","dimensionIndex","getLineDash","lineType","dotSize","dashSize","Displayble","IncrementalDisplayble","_temporaryDisplayables","_cursor","clearDisplaybles","addDisplayable","notPersistent","addDisplayables","displayables","eachPendingDisplayable","localPos","preventIncremental","coordSysCreator","blurSize","pointSize","maxOpacity","minOpacity","AxisProxy","eachAxisDim","retrieveRawOption","updateRangeUse","inputRawOption","rangePropMode","_rangePropMode","rangeModeInOption","percentSpecified","valueSpecified","filterMode","minValueSpan","maxValueSpan","rangeMode","_dataIntervalByAxis","_dataInfo","_axisProxies","_autoThrottle","settledOption","doInit","_setDefaultThrottle","_resetTarget","_giveAxisProxies","axisProxies","__dzAxisProxy","autoMode","_judgeAutoMode","axisIndexName","_autoSetAxisIndex","_autoSetOrient","hasIndexSpecified","autoAxisIndex","singleAxisModel","singleAxisIndex","axisIndices","_isSeriesHasAllAxesTypeOf","seriesAxisIndex","globalOption","firstAxisModel","setRawRange","getValueRange","axisDimName","hostedBy","getRangePropMode","textHelper","arrayJoin","mathRound","degree","round4","isAroundZero","svgEl","bindStyle","isText","pathHasFill","pathHasStroke","miterLimit","pathStr","dataLength","nData","dThetaPositive","isCircle","unifiedTheta","pathDataToString","svgTextDrawRectText","removeOldTextNode","HTMLImageElement","__imageSrc","setAttributeNS","attrXLink","_tmpTextHostRect","_tmpTextBoxPos","_tmpTextTransform","TEXT_ALIGN_TO_ANCHRO","hostRect","elTransform","needTransformTextByHostEl","normalizeTextStyle","needDrawText","textSvgEl","textSvgElStyle","computedFont","__computedFont","__styleFont","__textCotentBlock","getBoxPosition","baseX","baseY","setTextTransform","getTextXForPadding","tspanList","__tspanList","tspanOriginLen","__canCacheByTextString","__text","updateTextLocation","nTextLines","tspan","singleLineText","__zrText","createTextNode","ContinuousView","_shapes","_dataInterval","_useHandle","_hoverLinkDataIndices","_hovering","_renderBar","dataRangeText","_enableHoverLinkToSeries","_enableHoverLinkFromSeries","endsIndex","_applyTransform","shapes","_createBarGroup","createPolygon","_dragHandle","textSize","handleThumbs","handleLabelPoints","_createHandle","_createIndicator","onDrift","onDragEnd","handleThumb","createHandlePoints","handleLabel","handleLabelPoint","indicatorLabel","indicatorLabelPoint","HOVER_LINK_OUT","_clearHoverLinkToSeries","useHoverLinkOnHandle","_doHoverLinkToSeries","forSketch","outOfRangeHandleEnds","inRangeHandleEnds","visualInRange","_createBarVisual","visualOutOfRange","barColor","barPoints","_updateHandle","forceState","convertOpacityToAlpha","_makeColorGradient","symbolSizes","_createBarPoints","handlesColor","currValue","_showIndicator","cursorValue","rangeSymbol","halfHoverLinkSize","isRange","extentMax","createIndicatorPoints","_hoverLinkFromSeriesMouseOver","_hideIndicator","_clearHoverLinkFromSeries","cursorPos","hoverOnBar","HOVER_LINK_SIZE","getHalfHoverLinkSize","hoverRange","oldBatch","newBatch","resultBatches","_dispatchHighDown","zrender","GlobalModel","ExtensionAPI","OptionManager","backwardCompat","seriesColor","loadingDefault","Scheduler","lightTheme","darkTheme","parseClassType","FILTER","LAYOUT","PROGRESSIVE_LAYOUT","GLOBAL","CHART","COMPONENT","IN_MAIN_PROCESS","ACTION_REG","createRegisterEventWithLowercaseName","ignoreDisposed","MessageCenter","ECharts","themeStorage","_dom","renderer","_throttledZrFlush","flush","_theme","_chartsViews","_chartsMap","_componentsViews","_componentsMap","_coordSysMgr","ecInstance","coordSysMgr","getComponentByElement","modelInfo","__ecComponentInfo","createExtensionAPI","prioritySortFunc","__prio","visualFuncs","dataProcessorFuncs","_scheduler","_ecEventProcessor","EventProcessor","_messageCenter","_pendingActions","_onframe","ecIns","bindRenderedEvent","setAsPrimitive","echartsProto","doConvertPixel","coordSysList","scheduler","prepare","updateMethods","flushPendingActions","triggerUpdatedEvent","remainTime","performSeriesTasks","performDataProcessorTasks","updateStreamModes","performVisualTasks","getDom","setOption","lazyUpdate","optionManager","optionPreprocessorFuncs","setTheme","getOption","getSvgDataURL","getDataURL","excludeComponents","excludesComponentViews","__viewId","getConnectedDataURL","isSvg","groupId","connectedGroups","canvasList","instances","chart","getBoundingClientRect","targetCanvas","createCanvas","connectedBackgroundColor","refreshImmediately","containPixel","getViewOfComponentModel","getViewOfSeriesModel","prepareAndUpdate","restoreData","colorArr","stringify","performPostUpdateFuncs","componentDirtyList","componentView","__alive","seriesDirtyMap","chartView","setDirty","dirtyMap","restorePipelines","prepareStageTasks","prepareView","updateDirectly","condition","excludeSeriesId","callView","__model","chartsMap","doDispatchAction","payloadType","actionWrap","actions","cptType","payloads","batched","eventObj","eventObjBatch","isHighDown","pendingActions","isComponent","viewList","viewMap","doPrepare","viewId","classType","getClass","__id","dirtyList","renderComponents","updatePayload","getPerformArgs","blendMode","updateBlend","elCount","preventUsingHoverLayer","updateHoverLayerStatus","postUpdateFuncs","func","_loadingFX","optionChanged","showLoading","cfg","hideLoading","loadingEffects","makeActionFromEvent","eventActionMap","MOUSE_EVENT_NAMES","eventInfo","eveName","DOM_ATTRIBUTE_KEY","cptQuery","dataQuery","otherQuery","condCptType","suffixes","dataKeys","reserved","propSuffix","suffixPos","check","propOnHost","idBase","groupIdBase","disConnect","disconnect","getInstanceByDom","registerTheme","preprocessorFunc","priority","processor","normalizeRegister","visualTask","defaultPriority","stageHandler","wrapStageHandler","__raw","registerLoading","loadingFx","existInstance","STATUS_KEY","updateConnectedChartsStatus","charts","otherCharts","otherChart","enableConnect","connect","getInstanceById","registerPostUpdate","postUpdateFunc","getCoordinateSystemDimensions","layoutTask","setCanvasCreator","creator","getMap","dataTool","___ec_export","lenSquare","lengthSquare","distanceSquare","distSquare","div","dot","negate","lerp","kCSSColorTable","clampCssByte","clampCssFloat","parseCssInt","parseCssFloat","cssHueToRgb","lerpNumber","setRgba","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","cached","iv","op","ep","fname","alpha","hsla2rgba","hsla","fastLerp","normalizedValue","leftIndex","rightIndex","leftColor","rightColor","dv","fastMapToColor","fullOutput","mapToColor","arrColor","modifyHSL","G","B","vMin","vMax","deltaR","deltaG","deltaB","rgba2hsla","modifyAlpha","TooltipRichContent","axisPointerViewHelper","proxyRect","tooltipContent","_renderMode","_newLine","_tooltipContent","_tooltipModel","_ecModel","_lastDataByCoordSys","_alwaysShowContent","_initGlobalListener","_keepShow","_tryShow","_hide","_refreshUpdateTimeout","manuallyShowTip","_ticket","_manuallyAxisShowTip","pointInfo","manuallyHideTip","buildTooltipModel","_showAxisTooltip","_showSeriesItemTooltip","_showComponentItemTooltip","_showOrMove","_showTimout","singleDefaultHTML","singleParamsList","singleTooltipModel","newLine","markers","itemCoordSys","axisValue","seriesDefaultHTML","valueLabel","axisValueLabel","seriesTooltip","newMarkers","firstLine","positionExpr","_updateContentNotChangedOnAxis","_updatePosition","_showTooltipContent","tooltipTrigger","defaultHtml","asyncTicket","subTooltipModel","cbTicket","contentSize","domWidth","domHeight","rectWidth","rectHeight","calcTooltipPosition","gapH","gapV","refixTooltipPosition","isCenterAlign","confineTooltipPosition","lastCoordSys","contentNotChanged","lastItemCoordSys","indexCoordSys","lastDataByAxis","thisDataByAxis","lastItem","indexAxis","thisItem","lastIndices","newIndices","lastIdxItem","newIdxItem","modelCascade","resultModel","_clazz","lineStyleMixin","areaStyleMixin","textStyleMixin","itemStyleMixin","doGet","pathArr","getParent","getParentMethod","parsePath","thisParentModel","Ctor","setReadOnly","Single","singles","EffectSymbol","pointsLayout","effectSymbolDraw","_updateGroupTransform","getRoamTransform","actionTypes","retrieveTargetInfo","originViewRoot","aboveViewRoot","resetViewRoot","easingFuncs","_life","onrestart","globalTime","deltaTime","_startTime","easingFunc","schedule","restart","arg","_createPolyline","polylineProto","_updateCommonStl","hoverLineStyle","$","$some","some","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","forced","callbackfn","legendSelectActionHandler","selectedMap","isToggleSelect","legendData","isItemSelected","fixRegExpWellKnownSymbolLogic","anObject","toLength","requireObjectCoercible","advanceStringIndex","regExpExec","MATCH","nativeMatch","maybeCallNative","regexp","O","matcher","RegExp","String","fullUnicode","unicode","matchStr","cellWidth","cellHeight","dayCount","SingleAxis","_adjustAxis","_updateAxisTransform","coordBase","extentSum","HeatmapLayer","visualMapOfThisSeries","targetSeries","_incrementalDisplayable","_renderOnCartesianAndCalendar","isGeoCoordSys","_renderOnGeo","dataDims","inRangeVisuals","outOfRangeVisuals","hmLayer","_hmLayer","lng","lat","isInRange","dataSpan","getIsInContinuousRange","getIsInPiecewiseRange","getNormalizer","getColorMapper","curveTool","v3","v2DistSquare","intersectCurveCircle","curvePoints","radiusSquare","_t","nextDiff","tmp0","quadraticSubdivide","pts","pts2","fromSymbol","toSymbol","__original","originalPoints","shadowStyle","gridIndex","gridId","extraOption","pointerChecker","_opt","mousedownHandler","mousemoveHandler","mouseupHandler","mousewheelHandler","mousewheel","pinchHandler","controlType","zoomOnMouseWheel","moveOnMouseMove","moveOnMouseWheel","preventDefaultMouseMove","isDragging","isPinching","_pinching","isMiddleOrRightButtonOnMouseUpDown","_y","isAvailableBehavior","isTaken","shouldZoom","shouldMove","absWheelDeltaDelta","factor","checkPointerAndTrigger","absDelta","behaviorToCheck","contollerEvent","settings","_vector","v2Create","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","onet","cubicDerivativeAt","t1","disc","K","discSqrt","Y1","Y2","T","ASqrt","cubicSubdivide","p01","p12","p23","p012","p123","p0123","d1","divider","quadraticProjectPoint","CartesianAxisPointer","getCartesian","getAxisDimIndex","unitX","unitY","Definable","tagNames","markLabel","domName","_zrId","_tagNames","_markLabel","_domName","nextId","getDefs","addDom","removeDom","getDoms","doms","tags","getSvgProxy","colorPaletteMixin","_sourceHelper","dataTask","dataTaskCount","dataTaskReset","wrapData","dataBeforeProcessed","autoSeriesName","themeSubType","hasClass","getTheme","getDefaultOption","fillDataTextStyle","newSeriesOption","task","getCurrentTask","isRichText","formatSingleValue","tooltipDims","tooltipDimLen","isValueArr","vertially","setEachItem","markName","dimHead","dimHeadStr","valStr","formatArrayValue","colorEl","animationEnabled","coordDimToDataDim","pipeTask","nameArr","getSeriesAutoName","dataTaskProgress","onDataSelfChange","pipeline","getPipeline","agentStubMap","smoothSpline","smoothBezier","controlPoints","cp2","parseGeoJson","fixNanhai","fixTextCoord","fixGeoCoord","fixDiaoyuIsland","mapRecord","nameProperty","parsed","regionName","specialArea","regionRect","positiveBorderColorQuery","negativeBorderColorQuery","positiveColorQuery","negativeColorQuery","colorP","getColor","colorN","borderColorP","getBorderColor","borderColorN","FunnelPiece","funnelPieceProto","opacityAccessPath","funnelPiece","offsetCenter","detail","dev","MapSeries","selectTargetList","toAppendNames","geoSource","appendValues","seriesNames","otherIndex","showLegendSymbol","dataRangeHoverLink","NodeHighlightPolicy","SunburstPieceProto","getRootId","getNodeColor","fillDefaultColor","stateStyle","activeNode","policy","onHighlight","onDownplay","labelState","getLabelAttr","labelMinAngle","labelPadding","rotateType","stateAttr","aFunction","toObject","fails","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","saveAsImageLang","SaveAsImage","MouseEvent","msSaveOrOpenBlob","bstr","atob","u8arr","Uint8Array","blob","Blob","write","$a","download","evt","bubbles","cancelable","dispatchEvent","collection","collectionStrong","getNodeGlobalScale","groupScale","groupZoom","COORDS","createNameEach","attrs","capitalNames","capitalAttrs","nameObj","capital","isCoordSupported","coordType","createLinkedNodesFinder","forEachNode","forEachEdgeType","edgeIdGetter","sourceNode","existsLink","edgeType","absorb","processSingleNode","isNodeAbsorded","hasLink","edgeId","isLinked","themeRiverLayout","baseY0","timeDim","layerPoints","singleLayer","layerNum","pointNum","sums","temp","computeBaseline","baseLine","ky","layerIndex","colorList","getBorderLineDash","ATTR","giveStore","cleanStore","store","dataZoomInfo","theDataZoomId","theCoordId","dataZoomInfos","newRecord","createController","controllerParams","typePriority","oneType","mergeControllerParams","getPathToRoot","validPayloadTypes","targetNodeId","viewPath","nodeDataIndex","r2","r3","r4","nodeOpacityPath","hoverNodeOpacityPath","lineOpacityPath","hoverLineOpacityPath","getItemOpacity","opacityPath","fadeOutItem","opacityRatio","getGraphicEl","fadeInItem","SankeyShape","cpx1","cpy1","cpx2","cpy2","_focusAdjacencyDisabled","sankeyView","curvature","n1Layout","node1Model","dragX1","dragY1","n2Layout","node2Model","dragX2","dragY2","edgeLayout","dragX","dragY","focusNodeAdjHandler","unfocusNodeAdjHandler","_dispatchUnfocus","edgeModel","edgeDataIndex","_unfocusDelayTimer","focusNodeAdj","outEdges","inEdges","unfocusNodeAdjacency","geoJSONLoader","geoSVGLoader","loaders","singleSource","makeInvoker","hostKey","results","graphSeries","preservedPoints","forceModel","initLayout","nodeDataExtent","edgeDataExtent","repulsion","edgeLength","forceInstance","oldStep","stopped","axisView","axisGroup","splitAreaModel","areaColorsLen","lastSplitAreaColors","__splitAreaColors","newSplitAreaColors","cIndex","ifAxisCrossZero","estimateLabelUnionRect","Cartesian2D","isAxisUsedInTheGrid","Grid","_coordsMap","_coordsList","_axesList","_initCartesian","gridProto","fixAxisOnZero","onZeroRecords","onZeroAxisIndex","canOnZeroToAxis","getOnZeroRecordKey","_updateScale","ignoreContainLabel","axesList","adjustAxes","axisExtentSum","updateAxisTransform","labelUnionRect","axesMapOnDim","coordList","getCartesians","_findConvertTarget","coordsList","axisPositionUsed","axesCount","createAxisCreator","addAxis","isCartesian2D","axesModels","findAxesModels","otherAxis","axesTypes","grids","_extends","Pagination","rtl","swiper","slidesLength","$el","bullets","midIndex","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","_i","dynamicBulletsLength","bulletsOffset","offsetProp","classesToSelector","progressbarDirection","paginationHTML","numberOfBullets","destroy","pagination","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","bindModuleMethods","dynamicBulletIndex","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","click","returnFalse","createDom","newDom","newDomStyle","onselectstart","domBack","ctxBack","motionBlur","lastFrameAlpha","createBackBuffer","clearAll","clearColorGradientOrPattern","haveMotionBLur","__canvasGradient","fillRect","globalImageCache","imageOnLoad","cachedImgObj","__cachedImgObj","onerror","pending","pendingWrap","cbPayload","hostEl","newImageOrSrc","__zrImageSrc","_contentGroup","_backgroundEl","_selectorGroup","_isFirstRender","viewportSize","legendDrawnMap","selectMode","eachRawSeries","getSeriesByName","legendSymbolType","_createItem","dispatchSelectAction","dispatchHighlightAction","dispatchDownplayAction","provider","containName","_createSelector","selectorItem","emphasisLabelModel","createSelectorButton","inactiveBorderColor","symbolKeepAspect","legendModelItemStyle","itemIcon","legendGlobalTooltipModel","setSymbolStyle","legendSymbolCenter","hitRect","legendIndex","dataName","_normalizeData","normalizers","visualHandler","visualHandlers","_doMap","normalizeVisualRange","hasSpecialVisual","originIndex","preprocessForPiecewise","visualArr","setVisualToOption","preprocessForSpecifiedCategory","normalized","makeApplyVisual","isNormalized","doMapCategory","returnRGBArray","parsedVisual","linear","piecewise","getSpecifiedVisual","doMapFixed","colorHue","makePartialColorVisualHandler","colorSaturation","colorLightness","colorAlpha","makeDoMap","symbolCfg","doMapToArray","applyValue","sourceExtent","addVisualHandler","isPrimary","newVisual","newVal","hasVisual","types","type1","type2","dependsOn","visualType1","visualType2","findClosestWhenOutside","possibleI","pieceValue","updatePossible","newAbs","isCanvasEl","transformCoordWithViewport","isDomLevel2","addEventListener","MOUSE_EVENT_REG","_calcOut","calculate","calculateZrXY","layerX","layerY","ex","clientX","ey","clientY","getNativeEvent","returnValue","targetTouches","changedTouches","button","attachEvent","removeEventListener","detachEvent","notLeftMouse","createLinePoints","addEl","dataGroup","updateElCommon","_dataGroup","newDataIndex","oldDataIndex","inactive","_dataProvider","DataDimensionInfo","dataCtors","Float64Array","Int32Array","CtorUint32Array","Uint32Array","CtorInt32Array","CtorUint16Array","Uint16Array","getIndicesCtor","_rawCount","cloneChunk","originalChunk","TRANSFERABLE_PROPERTIES","CLONE_PROPERTIES","transferProperties","__wrappedMethods","_calculationInfo","dimensionInfos","invertedIndicesMap","dimensionName","_indices","_storage","_nameList","_idList","_optionModels","_visual","_itemVisuals","hasItemVisual","_itemLayouts","_graphicEls","_chunkSize","_chunkCount","_rawExtent","_approximateExtent","_dimensionsSummary","_invertedIndicesMap","listProto","prepareChunks","chunkSize","chunkCount","DataCtor","lastChunkIndex","resizeChunkArray","newStore","prepareInvertedIndex","invertedIndices","getRawValueFromStore","chunkIndex","chunkOffset","chunk","getRawIndexWithoutIndices","getRawIndexWithIndices","_idDimIdx","normalizeDimensions","cloneListForMapAndSample","excludeDimensions","allDimensions","originalStorage","cloneDimStore","getInitialExtent","originalDimStore","newDimStore","getDimensionsOnCoord","dimensionsSummary","_nameRepeatCount","_dimValueGetter","_dimValueGetterArrayRows","_initDataFromProvider","rawData","dimLen","originalChunkCount","emptyDataItem","sourceIdx","dimRawExtent","nameDimIdx","dimensionInfoMap","idList","nameRepeatCount","_nameDimIdx","itemId","dimStorage","nameDim","nameDimChunk","getIndices","thisCount","buffer","rawIdx","dimStore","_getFast","dimData","initialExtent","dimExtent","currEnd","setApproximateExtent","getMedian","dimDataArray","sortedDimDataArray","maxDistance","nearestIndices","nearestIndicesLen","contextCompat","dim0","selectRange","originalCount","quickFinished","chunkStorage","dimStorage2","chunkStorage2","val2","dimk","tmpRetValue","dataCount","retValue","rawExtentOnDim","sampleValue","sampleIndex","targetStorage","frameValues","frameSize","originalChunkIndex","originalChunkOffset","sampleFrameIdx","sampleChunkOffset","otherList","thisList","itemVisual","clearAllVisual","setItemDataAndSeriesIndex","injectFunction","originalMethod","v2Distance","interpolate","isLoop","segs","w2","w3","IS_CONTAINER","classBase","superClass","RootClass","mandatoryMethods","$constructor","ExtendedClass","Clz","classAttr","entity","registerClass","Clazz","checkClassType","makeContainer","componentMainType","throwWhenNotFound","getClassesByMainType","getAllClassMainTypes","hasSubTypes","originalExtend","subtext","subtarget","subtextStyle","titleModel","subtextStyleModel","subText","subTextEl","sublink","groupRect","layoutOption","alignStyle","categoryNames","mapSymbolLayout","mapDataStatistic","createDataSelectAction","effectType","showEffectOn","rippleEffect","barItemStyle","Sausage","_eventPos","coordinateSystemType","isHorizontalOrRadial","coordSysClipArea","expandWidth","getClipArea","drawBackground","backgroundModel","barBorderRadius","bgEls","oldBgEls","_backgroundEls","createBackground","bgLayout","bgEl","createBackgroundShape","createBackgroundEl","getBarItemStyle","elementCreator","updateStyle","removeRect","removeSector","bgGroup","_removeBackground","coordSysBoundingRect","signWidth","signHeight","signR","animateProperty","animateTarget","isRadial","fixedLineWidth","rawLayout","getLineWidth","signX","signY","isZeroOnPolar","isPolar","LargePath","startPoint","__startPoint","baseDimIdx","__baseDimIdx","largeDataIndices","backgroundStartPoint","__largeDataIndices","__barWidth","setLargeBackgroundStyle","largePathUpdateDataIndex","largePath","valueDimIdx","barWidthHalf","startValueVal","pointerBaseVal","pointerValueVal","baseLowerBound","baseUpperBound","ii","barBaseVal","barValueVal","largePathFindDataIndex","coordLayout","redefineAll","anInstance","iterate","defineIterator","setSpecies","DESCRIPTORS","InternalStateModule","setInternalState","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","IS_MAP","ADDER","iterable","getInternalState","previous","getEntry","boundFunction","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","hasParallelSeries","createParallelIfNeeded","axisOption","parallelOption","mergeAxisOptionFromParallel","isPolyline","isLarge","lineCoords","segCount","totalCoordsCount","getLineCoordsCount","getLineCoords","buildTransformer","inX","inY","saved","transformer","transformerName","oldSrcCoords","srcCoords","oldCoordTheSame","destCoords","preparePointerTransformer","propLR","propTB","idxLR","idxTB","prepareCoordMarkers","elFrom","_axisPointer","fixValue","updateAxisPointer","disposeAxisPointer","getAxisPointerClass","getAxisPointerModel","axisPointerClazz","clazz","transferItem","itemStyleEmphasis","labelNormal","excludeLabelAttr","ec2Types","compatibleEC2","geoCoordMap","Storage","HandlerProxy","useVML","painterCtors","ZRender","rendererType","vml","handerProxy","_needsRefresh","addRoot","delRoot","zLevel","_needsRefreshHover","triggerRendered","refreshHoverImmediately","clearAnimation","getInstance","_barGrid","prepareLayoutBarSeries","makeColumnLayout","retrieveColumnLayout","axisDataLen","originalExtent","isBaseAxisAndHasBarSeries","barSeriesModels","adjustedScale","barsOnCurrentAxis","minOverflow","maxOverflow","totalOverFlow","oldRange","overflowBuffer","adjustScaleForOverflow","categoryTickStart","tick","rotateTextRect","rotateRadians","boundingBox","plain","beforeWidth","beforeHeight","afterWidth","afterHeight","extentInfo","realNumberScaleTicks","categoryScaleExtent","axisLabelModel","singleRect","getInitState","cars","fetchFromLocal","showPk","reducer","find","carId","localStorage","setItem","dataProcessorHandlers","_dataProcessorHandlers","_visualHandlers","_allHandlers","_stageTaskMap","performStageTasks","stageHandlers","needSetDirty","stageHandlerRecord","seriesTaskMap","overallTask","overallNeedDirty","stub","pipelineId","taskRecord","_pipelineMap","pCtx","progressiveEnabled","__idxInPipeline","blockIndex","threshold","pipelineMap","stageTaskMap","seriesTaskPlan","seriesTaskReset","seriesTaskCount","useClearVisual","isVisual","isLayout","removeKey","createSeriesStageTask","overallTaskReset","overallProgress","createStub","getSeries","stubReset","stubOnDirty","agent","__block","createOverallStageTask","upstreamContext","stubProgress","resetDefines","makeSeriesTaskProgress","singleSeriesTaskProgress","resetDefineIdx","resetDefine","detectSeriseType","legacyFunc","ecModelMock","apiMock","mockMethods","cond","EffectPolyline","_lastFrame","_lastFramePercent","effectPolylineProto","accLenArr","_offsets","_length","offsets","PolarAxisPointer","coordValue","getLabelPosition","newSnapshot","snapshot","_buildAxes","_buildSplitLineAndArea","axisBuilders","showSplitLine","showSplitArea","splitLineColors","splitAreaColors","ticksRadius","getColorIndex","realSplitNumber","axesTicksPoints","prevPoints","areaOrLine","areaOrLineColorList","themeRiverVisual","boxLayoutMixin","themeModel","newCptOption","optList","Class","enableSubTypeDefaulter","enableTopologicalTravel","deps","TransformDummy","_roamTransformable","_center","_zoom","rawTransform","centerCoord","_updateCenterAndZoom","getDefaultCenter","rawRect","rawTransformMatrix","defaultCenter","roamTransformable","_rawTransform","TreeShape","parentPoint","childPoints","forkPosition","childLen","firstChildPos","lastChildPos","forkDim","tmpPoint","_oldTree","_updateViewCoordSys","updateNode","_nodeScaleRatio","_updateNodeAndLinkScale","oldMin","_min","oldMax","_max","viewCoordSys","_viewCoordSys","nodeScale","_getNodeGlobalScale","invScale","getTreeNodeStyle","sourceSymbolEl","sourceLayout","sourceOldLayout","rawX","__radialOldRawX","rawY","__radialOldRawY","targetLayout","__radialRawX","__radialRawY","isLeft","rootLayout","labelRotateRadian","__edge","getEdgeShape","childLayout","drawEdge","sourceEdge","radialCoor1","radialCoor2","radialCoor3","radialCoor4","isForced","redefine","InternalMetadataModule","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","common","IS_WEAK","NativeConstructor","NativePrototype","Constructor","exported","fixMethod","KEY","nativeMethod","entries","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","Type","BrandSeriesCarSelector","setState","setCurr","brandName","newState","carName","PkList","pkCars","showSelector","setSelector","carIds","ref","handleDocumentClick","car_style_id","BUILTIN_OBJECT","TYPED_ARRAY","objToString","arrayProto","nativeForEach","nativeFilter","nativeSlice","nativeMap","nativeReduce","typeStr","isPrimitive","isDom","targetProp","sourceProp","isBuiltInObject","overlay","ownerDocument","HashMap","isArr","thisMap","visit","targetAndSources","baseClazz","clazzPrototype","F","memo","value1","value2","concatArray","newArray","eachAfter","eachBefore","generateNodeKey","_directed","_nodesMap","_edgesMap","graphProto","Node","hostGraph","Edge","isDirected","nodesMap","edgesMap","getEdge","breadthFirstTraverse","startNode","__visited","queue","currentNode","otherNode","inDegree","outDegree","createGraphDataProxyMixin","hostName","LineGroup","_ctor","lineDrawProto","isPointNaN","lineNeedsDraw","oldLineData","_lineData","doAdd","newLineData","itemEl","doUpdate","isEffectObject","_clearIncremental","_incremental","_targetList","_selectTargetMap","targetMap","select","unSelect","toggleSelected","nameRotate","nameTruncate","deduplication","alignWithLabel","minorTick","minorSplitLine","logBase","idxMap","Uint32Arr","Float64Arr","compatEc2","coords","fromName","toName","LinesSeries","_processFlatCoordsArray","_flatCoords","flatCoords","_flatCoordsOffset","flatCoordsOffset","_getCoordsFromItemModel","startOffset","coordsOffsetAndLenStorage","coordsStorage","coordsCursor","offsetCursor","effect","trailLength","autoPositionValues","targetValue","visualCluster","visualObj","visualMapping","actionInfos","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","asin","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","_mapDraw","dataViewLang","BLOCK_SPLITER","assembleSeriesWithCategoryAxis","tables","valueAxisDim","headers","columns","items","itemSplitRegex","parseContents","blockMetaList","blocks","isTSVFormat","tsv","tsvLines","header","parseTSVContents","blockMeta","hasName","parseListContents","DataView","tryMergeDataOption","shouldDeleteName","readOnly","optionToContent","contentToOption","textareaColor","textareaBorderColor","buttonColor","buttonTextColor","viewMain","textarea","seriesGroupByCategoryAxis","otherSeries","groupSeries","vals","getContentFromModel","htmlOrDom","buttonContainer","buttonStyle","closeButton","refreshButton","newSeriesOptList","renderText","NONE","getStroke","Tab","curIndex","setCurIndex","leftContent","rightContent","setList","hideLine","moreContent","moreLink","handleMoreClick","data-module","Pk","cover_image","eve","click_same_series_btn","photosData","categoryList","useMemo","realname","toutiaothumburl","renderPhotos","hoverIcon","hoverIcon2","hoverIcon3","CarModels","years","yearsList","fold","setFold","online","offline","urban","year","yearsText","Set","filted","hanldeOnlineData","getQuery","querySelector","scrollTo","yearData","showList","isTitle","isPkButtonDisable","car_id","price_number","dealer","srcSet","button_text","owner_price_summary","onMouseEnter","car_series_name","series_module_name","car_style_name","naked_price_avg","price_num","nativeEvent","stopImmediatePropagation","renderCar","empty_icon","Feed","subCategory","concern_id","feedAd","gid","page","contentType","updateList","fetchFeed","tt_from","sub_category","renderIdx","loadMoreHandler","lastFeedItem","max_behot_time","findAd","adItem","fix_position","id_str","fromPage","unique_id_str","video_duration","abstract_content","digg_count","user_digg","user_info","comment_count","square_duration","conditions","PopularContent","group_id","content_type","Indicator","Bar","colorVacant","computedPercent","dcar_score_icon","SeriesRank","rankItems","rankItem","score","single_highest_desc","single_highest_score","star_icon","star_modest_icon","wave_point_icon","DCarScore","scoreInfo","setScoreInfo","setScore","reviewCountInfo","setReviewCountInfo","authors","setAuthors","fetchData","data_from","score_info","series_info","review_count_info","sortedScoreInfo","ele","remark","appearance_score","power_score","control_score","comfort_score","space_score","configuration_score","interiors_score","scoreInfoItem","ratios","range1","range2","range3","range4","range5","setSeriesType","setRankItems","series_type","starIcon","starVacantIcon","maxScore","starWidth","starHeight","author","user_id","Card","min_price","max_price","setCarIds","Favour","carItems","setCarItems","web_id","Cookies","serializeObject","recommend_series","carItem","SubNav","tabs","tabNow","replace_img","Community","setTabNow","selectedReposts","setSelectedReposts","qaReposts","setQAReposts","showPublisher","setShowPublisher","handleClick","useCallback","repost_info","is_pgc_article","behot_time","handleTogglePublisher","useLoginCheckCallback","enter_method","handlePublish","isTimer","reposts","repost","image_url","item_id_str","item_id","visible","onClose","closable","CloseIcon","CloseIconForPublisher","onPublish","defaultCommunity","play_icon","live_show_icon","default_article_icon","ArticleCard","article","banner_type","unique_id","username","avatar","shouldShowAbstract","setShowAbstract","secToMin","compStyles","getPropertyValue","marginRight","groupBy","SwiperCore","use","Articles","articles","setArticles","videos","setVideos","city_name","device_platform","channel","motor_feed_extra_params","refresh_num","loadmore_num","feed_type","new_feed","impression_info","page_id","paginationRef","useRef","cards","video","CarList","setCarList","CarSeries","videoManualData","useReducer","rel","data_list","Item","group_id_str","formatNumber","Leaderboard","module_title","publish_icon","QA","rankData","motorId","setMotorId","qas","setQAs","setRefreshNum","lastMax","setLastMax","subMenu","setSubMenu","activeSubTab","setActiveSubTab","useSkin2","setUseSkin2","globalState","useContext","GlobalStoreContext","fetchQAs","newQAs","cmg_flag","min_cursor","max_cursor","tab_info","tab_list","car_info","finally","observer","IntersectionObserver","isIntersecting","rootMargin","observe","userData","mockNewCard","handleDelete","tab_name","chi_name","Provider","onDeletePost","ugcType","article_type","drop_down_arrow","Popup","menu","setShow","activeItem","handleToggle","tabIndex","onBlur","ArticlePage","activeTab","setActiveTab","setMaxBeHotTime","fetchArticles","maxBehotTime","newArticles","series_page_sort","aid","obj_text","tag_name","publish_time","VideoCard","image_list","Video","fetchVideos","newVideos","asPath","dealerPrice","renderPage","getInitialProps","getHead","fetchFeedRes","videoList","all_list","getPictureHead","has_vr","concern_obj","recommended_compare_series_list","featuredData","_pageType","isNewVersion","_isNewVersion","polarOptArr","polarNotRadar","polarOpt","radarIndex","foundAxisModel","layoutBox","boxLayoutParams","positions","bbWidth","bbHeight","_nonShapeGraphicElements","graphicOption","elements","GraphicModel","parentId","_elOptionsToUpdate","existList","flattenedList","_flatten","mappingResult","elOptionsToUpdate","resultItem","newElOption","existElOption","newElParentOption","parentOption","setKeyInfoToNewElOption","newElOptCopy","$action","mergeNewElOptionToExist","existItem","isSetLoc","setLayoutInfoToExist","optionList","useElOptionsToUpdate","els","targetElParent","__ecGraphicId","removeEl","existEl","existElParent","isSet","_elMap","_lastGraphicModel","graphicModel","_updateElements","_relocate","rootGroup","elOptionCleaned","getCleanedElOption","__ecGraphicWidthOption","__ecGraphicHeightOption","setEventData","elOptions","apiWidth","apiHeight","isParentRoot","parentEl","__ecGraphicWidth","__ecGraphicHeight","containerInfo","bounding","straightLineProto","bezierCurveProto","isLine","_buildPathLine","_buildPathCurve","pointAt","_pointAtLine","_pointAtCurve","tangentAt","_tangentAtCurve","defaultSymbolType","hasSymbolTypeCallback","hasSymbolSizeCallback","hasSymbolRotateCallback","hasCallback","seriesSymbol","seriesSymbolSize","itemSymbolType","itemSymbolSize","itemSymbolRotate","itemSymbolKeepAspect","dataZoomLang","DataZoom","_brushController","_onBrush","_isZoomActive","zoomActive","dataZoomSelectActive","retrieveAxisSetting","include","makePanelOpts","xAxisDeclared","yAxisDeclared","updateZoomBtnStatus","updateBackBtnStatus","nextActive","matchOutputRanges","coordRange","setBatch","found","dzModel","findDataZoom","dataZoomOpts","dataZoomOpt","addForAxis","axisIndicesName","givenAxisIndices","forEachComponent","$fromToolbox","SHADOW_PROPS","coordSysLists","coordIndex","LinePath","SYMBOL_CATEGORIES","makeSymbolTypeKey","symbolCategory","__specifiedRotation","setLinePoints","targetShape","_createLine","lineProto","symbolFrom","symbolTo","toPos","specifiedRotation","tangent","__labelDistance","distanceX","distanceY","halfPercent","__position","__verticalAlign","__textAlign","lineLabelOriginalOpacity","visualOpacity","defaultLabelColor","rawVal","normalText","emphasisText","labelStyle","linePath","globalDefault","_optionManager","baseOption","mountOption","initBase","timelineOption","getTimelineOption","mediaOptions","getMediaOption","mediaOption","componentsMap","newCptTypes","componentOption","topologicalTravel","newCptOptionList","existComponent","determineSubType","getComponentsByTypes","ComponentModelClass","createSeriesIndices","_seriesIndicesMap","_seriesIndices","cpts","isIdArray","cpt","isNameArray","filterBySubType","queryCond","indexAttr","idAttr","nameAttr","getQueryCond","queryResult","oneSeries","rawSeriesIndex","filterSeries","componentTypes","seiresIndex","isNotTargetSeries","notMergeColorLayer","colorLayer","themeItem","mergeTheme","Brand","useScrollSpy","querySelectorAll","setCurrent","brandRef","brands","useBrandList","letters","letter","data-letter","brand","updateMarkerLayout","markPointModel","mpModel","symbolDrawMap","dataOpt","isFnSymbol","isFnSymbolSize","isFnSymbolRotate","CalendarModel","defaultKeyGetter","oldKeyGetter","newKeyGetter","_old","_new","_oldKeyGetter","_newKeyGetter","initIndexMap","keyArr","keyGetterName","existence","_add","_remove","newDataIndexMap","oldDataKeyArr","newDataKeyArr","isNodeDepth","resolveCollisions","nodesByBreadth","keyAttr","nodeDyAttr","relaxRightToLeft","weightedTarget","getEdgeValue","centerTarget","nodeY","weightedSource","centerSource","relaxLeftToRight","nodeRawValue","computeNodeValues","iterations","remainEdges","indegreeArr","zeroIndegrees","nextTargetNode","maxNodeDepth","isItemDepth","edgeIdx","maxDepth","nextSourceNode","remainNodes","nodeHeight","skNodeHeight","moveSinksRight","adjustNodeWithNodeAlign","kx","scaleNodeBreadths","computeNodeBreadths","prepareNodesByBreadth","minKy","nodeDy","edgeDy","initializeNodeDepth","computeNodeDepths","computeEdgeDepths","layoutSankey","PLAIN_TEXT","WILL_BE_RESTORED","markerRich","startId","endId","_multipleGraphEdgeHelper","GraphSeries","_categoriesData","_updateCategoriesData","categoryModel","_categoriesModels","edgeLabelModel","fakeSeriesModel","emphasisEdgeLabelModel","emphasisFakeSeriesModel","edgeGetParent","sourceName","targetName","circular","rotateLabel","layoutAnimation","edgeSymbol","edgeSymbolSize","edgeLabel","isLargeRender","stackResultDim","echartsAPIList","chartInstance","parallelAxisModel","_axisTickLabelBuilder","NORMALIZED_EXTENT","fixExtentWithBands","nTick","getTickModel","ticksLen","diffSize","crossLen","ticksItem","fixOnBandTicksCoords","minorTicks","getMinorTicks","minorTicksGroup","langSelector","defaultSelectorOption","_updateSelector","_updateData","hasSelected","potentialData","availableNames","isPotential","getAllNames","_availableNames","allSelect","inverseSelect","selectorLabel","selectorItemGap","LN2","determinant","rows","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","subRowMask","subRowStart","colLocalIdx","colTag","mA","vh","srcPointX","srcPointY","pk","genName","fromZero","sysDims","dataDimNameMap","coordDimNameMap","optDimCount","sysDimItem","sysDimItemDimsDef","getDimCount","userDimName","validDataDims","resultDimIdx","applyDim","availDimIdx","sysDimIndex","sysDimItemOtherDims","sysDimItemDimsDefItem","generateCoordCount","Navigation","VideoType","VideoContent","dataList","navigation","nextEl","spaceBetween","slidesPerView","slidesPerGroup","preventClicks","simulateTouch","watchOverflow","videoWidth","videoHeight","titleHeight","Ele","gid_str","vid","formatDuration","VideoManual","allVideoList","card_content","video_list","category_list","isValidPoint","getValueMissingPoint","firstPoint","createElementNS","CoordSysInfo","fetchers","ORIGIN_METHOD","RATE","debounce","currCall","lastCall","lastExec","timer","thisDelay","thisDebounce","debounceDelay","fnAttr","originFn","lastThrottleType","markerModelKey","subTypeDefaulters","defaulter","componentTypeMain","dependencyGetter","createDependencyGraphItem","predecessor","successor","targetNameList","fullNameList","noEntryList","availableDeps","originalDeps","dep","getAvailableDependencies","entryCount","dependentName","thatItem","makeDepndencyGraph","targetNameSet","currComponentType","currVertex","isInTargetNameSet","removeEdgeAndAdd","removeEdge","succComponentType","platform","gradientColor","animationEasingUpdate","shadowTemp","orignalBrush","modified","roundNumber","_intervalPrecision","getIntervalPrecision","expandToNicedExtent","niceTickExtent","intervalPrecision","lastNiceTick","minorInterval","intervalScaleNiceTicks","roundingErrorFix","mathLog","_originalScale","originalScale","powVal","__fixMin","fixRoundingError","__fixMax","originalVal","radarLayout","_needCollect","needCollect","_deduplication","createByAxisModel","dedplication","getOrCreateMap","colorUtil","markAreaTransform","maModel","lt","rb","ltCoord","rbCoord","markAreaFilter","getSingleMarkerEndPoint","dimPermutations","markAreaModel","areaData","areaGroupMap","polygonGroup","allClipped","xValue","yValue","__data","ToolboxModel","showTitle","containLabel","travelTree","designatedVisual","viewRootAncestors","nodeModel","nodeLayout","isInView","thisNodeColor","nodeItemStyleModel","designatedVisualItemStyle","visualName","buildVisuals","borderColorSaturation","calculateBorderColor","calculateColor","mapping","rangeVisual","getRangeVisual","visualMin","visualMax","colorMappingBy","__drColorMappingBy","buildVisualMapping","childVisual","childVisuals","mappingType","mapIdToIndex","getValueVisualDefine","markerTypeCalculatorWithExtent","otherDataDim","targetDataDim","otherCoordIndex","targetCoordIndex","coordArr","calcDataDim","coordArrValue","markerTypeCalculator","dataDimToCoordDim","baseDataDim","hasXAndY","hasXOrY","_viewRoot","clipWindow","squareRatio","leafDepth","drillDownIcon","zoomToNodeRatio","upperLabel","gapWidth","visualDimension","visibleMin","childrenVisibleMin","completeTreeValue","childValue","thisValue","designatedVisualModel","hasColorDefine","globalColorList","levelDefine","modelColor","setDefault","levelModel","setLayoutInfo","idIndexMap","_idIndexMap","_idIndexMapCount","mapLocation","largeLayout","_graphHelper","_symbolRadiansHalf","_layoutNodesBasedOn","unitAngle","radianHalf","sumRadian","symbolRadianHalf","halfRemainRadian","basedOn","x12","y12","_a","adjustEdge","FOCUS_ADJACENCY","opct","_lineDraw","_firstRender","graphView","groupNewProp","_layoutTimeout","_startForceLayoutIteration","_layouting","circularRotateLabel","adjacentEdge","lb","rt","maxX","maxY","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","msRequestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","seiresModelMap","__paletteScope","dataAll","filteredIdx","singleDataColor","singleDataBorderColor","maskColor","showSpinner","spinnerRadius","mask","animateShape","valueStart","getValueStart","baseDataOffset","stackedData","updateDom","clipPathEl","cloneNode","_textDom","v2Min","v2Max","v2Scale","v2Add","v2Clone","v2Sub","constraint","prevPoint","nextPoint","cps","d0","retrieveValue","PATH_BORDER_WIDTH","PATH_GAP_WIDTH","PATH_UPPER_LABEL_SHOW","PATH_UPPER_LABEL_HEIGHT","ecWidth","ecHeight","rootRect","viewAbovePath","rootSize","currNode","defaultSize","viewArea","currNodeValue","getUpperLabelHeight","estimateRootSize","viewRootLayout","squarify","hideChildren","thisLayout","halfGapWidth","upperLabelHeight","upperHeight","layoutOffset","layoutOffsetUpper","totalArea","initChildren","rowFixedLength","best","worst","treeRoot","defaultPosition","targetCenter","calculateRootPosition","prunning","clipRect","nodeInViewAbovePath","isAboveViewRoot","childClipRect","orderBy","overLeafDepth","statistic","orderedChildren","deletePoint","filterByThreshold","isLeafRoot","areaMax","areaMin","squareArea","idx0WhenH","idx1WhenH","rowOtherLength","rowLen","wh1","remain","modWH","wh0","positiveOrNegative","doubledPosition","outputShape","inputShape","originWidth","originHeight","isOnCartesian","isInLargeMode","axisMinGaps","axisValues","cnt","valuesInAxis","getValueAxesMinGaps","seriesInfoList","minGap","scaleSpan","doCalBarWidthAndOffset","seriesInfo","minWidth","finalWidth","valueAxisHorizontal","largeBackgroundPoints","valuePair","pointsOffset","idxOffset","getValueAxisStart","backgroundStart","widthAndOffsets","lastStackCoordsOrigin","isValueAxisH","AXIS_TYPES","BaseAxisModelClass","axisTypeDefaulter","extraDefaultOption","__ordinalMeta","linkedNodesFinder","effectedModels","RadarChart","jumpTo","lineContain","quadraticContain","LargeLineShape","findDataIndex","LargeLineDraw","largeLineProto","lineEl","_setCommon","isIncremental","RadarSeries","Triangle","Diamond","Pin","tanX","tanY","cpLen","cpLen2","Arrow","symbolCtors","roundRect","square","diamond","pin","arrow","triangle","symbolShapeMakers","symbolBuildProxies","proxySymbol","symbolPathSetColor","innerColor","symbolStyle","symbolShape","__isEmptyBrush","linesLayout","linesVisual","PointerPath","formatLabel","parsePosition","_renderMain","axisLineModel","angleRangeSpan","prevEndAngle","axisLineWidth","showAxis","_renderTicks","_renderPointer","_renderTitle","_renderDetail","minVal","maxVal","subSplitNumber","splitLineLen","tickLen","subStep","splitLineStyle","tickLine","valueExtent","detailModel","IS_PURE","NativePromise","getBuiltIn","speciesConstructor","promiseResolve","real","onFinally","funnelLayout","getStore","resourceKey","userKey","mapModel","_renderSymbols","originalDataIndex","fullData","fullIndex","highDownRecord","recordVersion","onRegionHighDown","enterRegionHighDown","toHighOrDown","__mapOriginalZ2","roundRectHelper","_constant","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","SHADOW_STYLE_COMMON_PROPS","_tmpTextPositionResult","_tmpBoxPositionResult","normalizeStyle","applyTextRotation","placeToken","lineTop","needDrawBackground","setCtx","getFill","strokeText","fillText","isPlainBg","originalGlobalAlpha","onBgImageLoaded","boxPos","boxX","boxY","tokenCount","usedWidth","lineXLeft","lineXRight","drawRichText","renderRichText","needDrawBg","checkCache","cachedByMe","styleFont","propItem","styleProp","ctxProp","textStrokeWidthPrev","strokeWidthChanged","strokeChanged","renderPlainText","LargeSymbolDraw","_updateSymbolDraw","_getClipShape","_finished","opacityMap","itemOpacity","Z2","initRootElStyle","coordsize","coordorigin","rgb2Str","append","getZIndex","setColorAndOpacity","getColorAndAlpha","updateFillAndStroke","vmlEl","zrEl","isFill","gradientType","focus","expansion","cs1","cs2","colorAndAlphaList","colorAndAlpha","color1","color2","opacity1","opacity2","focusposition","updateFillNode","dashstyle","updateStrokeNode","_vmlEl","needTransform","strokeEl","weight","zIndex","removeRectText","appendRectText","ow","oh","_imageSrc","_imageWidth","_imageHeight","imageRuntimeStyle","runtimeStyle","oldRuntimeWidth","oldRuntimeHeight","hasCrop","vmlElStyle","hasRotation","transformFilter","imageTransformPrefix","imageEl","_imageEl","cropEl","_cropEl","imageELStyle","tmpImage","overflow","cropElStyle","filterStr","textMeasureEl","fontStyleCache","fontStyleCacheCount","fontEl","offsetWidth","fromTextEl","fontString","variant","fontVariant","family","getFontStyle","textPathEl","skewEl","textVmlEl","_textVmlEl","textpathok","textVmlElStyle","string","getLineSelectors","inLineRange","layoutRange","showContent","alwaysShowContent","displayMode","confine","showDelay","hideDelay","VISUAL_PRIORITY","resultVisual","concreteDim","shapeCompareFunc","_roots","_displayList","_displayListLen","includeIgnore","updateDisplayList","_updateAndAddDisplayable","userSetClipPath","currentClipPath","parentClipPath","_renderList","_curve","someVectorAt","isTangent","ThemeRiverSeries","fixData","rawDataLength","timeValueKeys","layData","timeValue","lenCount","indexArr","index1","index2","nearestIdx","theValue","htmlName","htmlValue","_updateLineDraw","_lastZlevel","_showEffect","hasEffect","_hasEffet","_isPolyline","ox","oy","DEFAULT_TOOLBOX_BTNS","isNew","brushComponents","brushComponentSpecifiedBtns","brushOpt","tbs","toolboxFeature","toolboxBrush","brushTypes","flag","removeDuplicate","animationUtil","PATH_LABEL_NOAMAL","PATH_LABEL_EMPHASIS","PATH_UPPERLABEL_NORMAL","PATH_UPPERLABEL_EMPHASIS","getItemStyleEmphasis","getItemStyleNormal","nodeGroup","background","_breadcrumb","_state","thisStorage","reRoot","rootNodeGroup","_giveContainerGroup","renderResult","_doRender","renderFinally","_doAnimation","_resetController","_renderBreadcrumb","thisTree","oldTree","lastsForAnimation","oldStorage","willInvisibleEls","renderNode","thisViewChildren","oldViewChildren","sameTree","thisNode","willDeleteEls","storageName","delEls","__tmWillDelete","clearStorage","animationWrap","__tmNodeWidth","__tmNodeHeight","targetX","targetY","old","fadein","_onPan","_onZoom","_clearController","mouseX","mouseY","findTarget","_zoomToNode","thisWidth","thisHeight","thisInvisible","thisRawIndex","oldRawIndex","isParent","itemStyleNormalModel","itemStyleEmphasisModel","giveGraphic","bg","useUpperLabel","processInvisible","visualBorderColor","emphasisBorderColor","upperLabelWidth","prepareText","renderContent","upperLabelRect","addDrillDownIcon","iconChar","lasts","prepareAnimationWhenHasOld","calculateZ","__tmDepth","__tmStorageName","lastCfg","parentOldX","parentOldY","parentOldBg","prepareAnimationWhenNoOld","zInLevel","zb","brushHelper","elementList","fromAxisAreaSelect","areaWidth","builderOpt","_refreshBrushController","extentLen","getCoverInfoList","coverInfoList","coverInfo","parallelAxisId","sectorArea","componentProto","hex","splitList","ScrollLoader","isEmbed","rootDom","changes","parentElement","documentElement","HEIGHT","addObserver","prevProps","removeObserver","scrollHeight","scrollTop","prevBottom","unobserve","getAxisLineShape","rExtent","getRadiusIdx","fixAngleOverlap","firstItem","ticksAngles","minorTickAngles","_axisLine","rId","r0Id","_axisTick","tickAngleItem","_minorTick","tickAngles","_axisLabel","commonLabelModel","labelTextAlign","labelTextVerticalAlign","prevAngle","format","_throttle","ecHelper","parseGeoJSON","_List","_Model","_Axis","_env","ecUtil","adjustSingleSide","viewLeft","viewTop","farthestX","shiftDown","shiftUp","changeX","isDownList","lastDeltaX","labelAlignTo","deltaY","deltaX","lastY","upList","downList","isPositionCenter","labelLayoutList","hasLabelRotate","minShowLabelRadian","labelDistance","labelLineLen2","leftList","rightList","leftmostX","rightmostX","targetTextWidth","isAlignToEdge","realTextWidth","avoidOverlap","ariaModel","seriesCnt","ariaLabel","maxDataCnt","maxSeriesCnt","displaySeriesCnt","getTitle","getConfig","seriesLabels","seriesLabel","seriesTpl","displayCnt","dataLabels","keyValues","userConfig","preventExtensions","hasShadow","_shadowDom","_shadowDomId","domChild","blur","stdDeviation","SingleAxisView","animatable","animateToShallow","objShallow","propertyCount","setAttrByPath","animatingShape","pathSplitted","animateFrom","COORD_CONVERTS","INCLUDE_FINDER_MAIN_TYPES","targetInfoList","_targetInfoList","foundCpts","targetInfoBuilders","builder","formatMinMax","setOutputRanges","coordRanges","coordConvert","__rangeOffset","diffProcessor","xyMinMax","findTargetInfo","coordSyses","rangeOffset","xyMinMaxCurr","xyMinMaxOrigin","sizeCurr","sizeOrigin","scales","getScales","getDefaultBrushType","getPanelRect","areaPanelId","targetInfoMatchers","xAxisModels","yAxisModels","gridModels","gridModelMap","xAxesHas","yAxesHas","cartesians","panelRectBuilder","geoModels","axisConvert","rangeOrCoordRange","xminymin","xmaxymax","axisNameIndex","axisDiffProcessor","refer","CandlestickSeries","animationUpdate","decodePolygon","coordinate","encodeOffsets","encodeScale","prevX","prevY","UTF8Encoding","UTF8Scale","coordinates","c2","decode","featureObj","pieLayout","dr","rCenter","unitStartX","unitStartY","unitEndX","unitEndY","updateController","modelId","$from","labelDims","subPixelOptimizeOutputShape","getDataWithEncodedVisual","IRRELEVANT_EXCLUDES","targetCoordSysModel","colorAll","pathContain","pathProxyForDraw","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","_fillGradient","_strokeGradient","ctxLineDash","shapeCfg","needsUpdateRect","rectWithStroke","_rectWithStroke","lineScale","Sub","defaultShape","thisShape","Cartesian","axisX","axisY","xScale","yScale","xAxisExtent","yAxisExtent","xExtent","yExtent","Stars","stars","intersection","_dragStart","_drag","_dragEnd","draggingTarget","_draggingTarget","dropTarget","lastDropTarget","_dropTarget","isAsc","sortOrder","rootDepth","renderRollupNode","rPerLevel","rStart","rEnd","siblingAngle","axisTrigger","collect","realIndex","paramsSet","reals","fakeValue","layoutInput","rParam","updateRipplePath","rippleGroup","effectCfg","rippleEffectColor","ripplePath","effectSymbolProto","stopEffectAnimation","startEffectAnimation","effectOffset","rippleScale","updateEffectAnimation","oldEffectCfg","_effectCfg","DIFFICULT_PROPS","_parseSVG","originRoot","buildGraphic","field","rootMap","originRootHostKey","svgWidth","svgHeight","LargeSymbolPath","symbolProxy","softClipShape","symbolProxyShape","largeSymbolProto","endIndex","byteOffset","extrudeShadow","_traversalHelper","_layoutHelper","sep","coorX","coorY","finalCoor","commonLayout","QUERY_REG","_timelineOptions","_mediaList","_mediaDefault","_currentMediaIndices","_optionBackup","_newBaseOption","parseRawOption","rawOption","mediaDefault","timelineOptions","mediaList","media","singleMedia","preProcess","applyMediaQuery","realMap","aspectratio","applicatable","matched","operator","realAttr","expect","oldOption","oldOptionBackup","newParsedOption","newCptOpt","oldCptOpt","isRecreate","optionBackup","indices1","indices2","dimAxisMapper","_axes","_dimList","_dataCoordConvert","input","dimList","_dimName","_axisIndex","_valueWindow","_percentWindow","_minMaxSpan","_dataZoomModel","setAxisModel","isRestore","percentWindow","useOrigin","getOtherAxisModel","coordSysIndexName","foundOtherAxisModel","otherAxisModel","hasPropModeValue","boundPercent","boundValue","spans","restrictSet","fromWindow","toWindow","fromExtent","toExtent","toValue","seriesExtent","fixExtentByAxis","calculateDataExtent","percentSpan","valueSpan","setMinMaxSpan","dataWindow","leftOut","rightOut","thisHasValue","thisLeftOut","thisRightOut","isInWindow","originalLarge","originalProgressive","checkPropInLink","linkPropValue","axisPropValue","isHandleTrigger","seriesInvolved","linksOption","linkGroups","axesInfoInCoordSys","baseTooltipModel","saveTooltipAxisInfo","triggerAxis","cross","tooltipAxes","fromTooltip","axisPointerShow","tooltipAxisPointerModel","volatileOption","labelOption","tooltipAxisPointerLabelShow","makeAxisPointerModel","groupIndex","linkOption","getLinkGroupIndex","collectAxesInfo","seriesTooltipTrigger","seriesTooltipShow","collectSeriesInfo","Heatmap","_gradientPixels","colorFunc","_getBrush","gradientInRange","_getGradient","gradientOutOfRange","imageData","getImageData","pixels","pixelLen","diffOpacity","gradientOffset","putImageData","brushCanvas","_brushCanvas","gradientPixels","pixelsSingleState","Uint8ClampedArray","_event","globalEventSupported","localNativeListenerNames","mouseHandlerNames","pointerEventNameMap","pointerdown","pointerup","pointermove","pointerout","mouse","nm","globalNativeListenerNames","eventNameFix","isPointerFromTouch","pointerType","markTouch","isLocalEl","elTmp","isLocal","FakeGlobalEvent","currentTarget","fakeGlobalEventProto","localDOMHandlers","_mayPointerCapture","downPoint","togglePointerCapture","_pointerCapturing","toElement","relatedTarget","touchstart","touchmove","touchend","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","touching","touchTimer","setTouchTimer","mountGlobalDOMEventListeners","normalizeGlobalEvent","capture","listener","mounted","listenerOpts","domTarget","unmountDOMEventListeners","isPointerCapturing","globalHandlerScope","_globalHandlerScope","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","handlerDomProxyProto","processedMapType","mapSymbolOffsets","subMapSeries"],"mappings":"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","file":"static/chunks/pages/auto/series-e15a711aeba7c052faa2.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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _number = require(\"./number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar formatUtil = require(\"./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*/\n// Layout helpers for each component positioning\nvar each = zrUtil.each;\n/**\n * @public\n */\n\nvar LOCATION_PARAMS = ['left', 'right', 'top', 'bottom', 'width', 'height'];\n/**\n * @public\n */\n\nvar HV_NAMES = [['width', 'left', 'right'], ['height', 'top', 'bottom']];\n\nfunction boxLayout(orient, group, gap, maxWidth, maxHeight) {\n var x = 0;\n var y = 0;\n\n if (maxWidth == null) {\n maxWidth = Infinity;\n }\n\n if (maxHeight == null) {\n maxHeight = Infinity;\n }\n\n var currentLineMaxSize = 0;\n group.eachChild(function (child, idx) {\n var position = child.position;\n var rect = child.getBoundingRect();\n var nextChild = group.childAt(idx + 1);\n var nextChildRect = nextChild && nextChild.getBoundingRect();\n var nextX;\n var nextY;\n\n if (orient === 'horizontal') {\n var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0);\n nextX = x + moveX; // Wrap when width exceeds maxWidth or meet a `newline` group\n // FIXME compare before adding gap?\n\n if (nextX > maxWidth || child.newline) {\n x = 0;\n nextX = moveX;\n y += currentLineMaxSize + gap;\n currentLineMaxSize = rect.height;\n } else {\n // FIXME: consider rect.y is not `0`?\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\n }\n } else {\n var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0);\n nextY = y + moveY; // Wrap when width exceeds maxHeight or meet a `newline` group\n\n if (nextY > maxHeight || child.newline) {\n x += currentLineMaxSize + gap;\n y = 0;\n nextY = moveY;\n currentLineMaxSize = rect.width;\n } else {\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\n }\n }\n\n if (child.newline) {\n return;\n }\n\n position[0] = x;\n position[1] = y;\n orient === 'horizontal' ? x = nextX + gap : y = nextY + gap;\n });\n}\n/**\n * VBox or HBox layouting\n * @param {string} orient\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\n\nvar box = boxLayout;\n/**\n * VBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar vbox = zrUtil.curry(boxLayout, 'vertical');\n/**\n * HBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar hbox = zrUtil.curry(boxLayout, 'horizontal');\n/**\n * If x or x2 is not specified or 'center' 'left' 'right',\n * the width would be as long as possible.\n * If y or y2 is not specified or 'middle' 'top' 'bottom',\n * the height would be as long as possible.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.x]\n * @param {number|string} [positionInfo.y]\n * @param {number|string} [positionInfo.x2]\n * @param {number|string} [positionInfo.y2]\n * @param {Object} containerRect {width, height}\n * @param {string|number} margin\n * @return {Object} {width, height}\n */\n\nfunction getAvailableSize(positionInfo, containerRect, margin) {\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n var x = parsePercent(positionInfo.x, containerWidth);\n var y = parsePercent(positionInfo.y, containerHeight);\n var x2 = parsePercent(positionInfo.x2, containerWidth);\n var y2 = parsePercent(positionInfo.y2, containerHeight);\n (isNaN(x) || isNaN(parseFloat(positionInfo.x))) && (x = 0);\n (isNaN(x2) || isNaN(parseFloat(positionInfo.x2))) && (x2 = containerWidth);\n (isNaN(y) || isNaN(parseFloat(positionInfo.y))) && (y = 0);\n (isNaN(y2) || isNaN(parseFloat(positionInfo.y2))) && (y2 = containerHeight);\n margin = formatUtil.normalizeCssArray(margin || 0);\n return {\n width: Math.max(x2 - x - margin[1] - margin[3], 0),\n height: Math.max(y2 - y - margin[0] - margin[2], 0)\n };\n}\n/**\n * Parse position info.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width]\n * @param {number|string} [positionInfo.height]\n * @param {number|string} [positionInfo.aspect] Aspect is width / height\n * @param {Object} containerRect\n * @param {string|number} [margin]\n *\n * @return {module:zrender/core/BoundingRect}\n */\n\n\nfunction getLayoutRect(positionInfo, containerRect, margin) {\n margin = formatUtil.normalizeCssArray(margin || 0);\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n var left = parsePercent(positionInfo.left, containerWidth);\n var top = parsePercent(positionInfo.top, containerHeight);\n var right = parsePercent(positionInfo.right, containerWidth);\n var bottom = parsePercent(positionInfo.bottom, containerHeight);\n var width = parsePercent(positionInfo.width, containerWidth);\n var height = parsePercent(positionInfo.height, containerHeight);\n var verticalMargin = margin[2] + margin[0];\n var horizontalMargin = margin[1] + margin[3];\n var aspect = positionInfo.aspect; // If width is not specified, calculate width from left and right\n\n if (isNaN(width)) {\n width = containerWidth - right - horizontalMargin - left;\n }\n\n if (isNaN(height)) {\n height = containerHeight - bottom - verticalMargin - top;\n }\n\n if (aspect != null) {\n // If width and height are not given\n // 1. Graph should not exceeds the container\n // 2. Aspect must be keeped\n // 3. Graph should take the space as more as possible\n // FIXME\n // Margin is not considered, because there is no case that both\n // using margin and aspect so far.\n if (isNaN(width) && isNaN(height)) {\n if (aspect > containerWidth / containerHeight) {\n width = containerWidth * 0.8;\n } else {\n height = containerHeight * 0.8;\n }\n } // Calculate width or height with given aspect\n\n\n if (isNaN(width)) {\n width = aspect * height;\n }\n\n if (isNaN(height)) {\n height = width / aspect;\n }\n } // If left is not specified, calculate left from right and width\n\n\n if (isNaN(left)) {\n left = containerWidth - right - width - horizontalMargin;\n }\n\n if (isNaN(top)) {\n top = containerHeight - bottom - height - verticalMargin;\n } // Align left and top\n\n\n switch (positionInfo.left || positionInfo.right) {\n case 'center':\n left = containerWidth / 2 - width / 2 - margin[3];\n break;\n\n case 'right':\n left = containerWidth - width - horizontalMargin;\n break;\n }\n\n switch (positionInfo.top || positionInfo.bottom) {\n case 'middle':\n case 'center':\n top = containerHeight / 2 - height / 2 - margin[0];\n break;\n\n case 'bottom':\n top = containerHeight - height - verticalMargin;\n break;\n } // If something is wrong and left, top, width, height are calculated as NaN\n\n\n left = left || 0;\n top = top || 0;\n\n if (isNaN(width)) {\n // Width may be NaN if only one value is given except width\n width = containerWidth - horizontalMargin - left - (right || 0);\n }\n\n if (isNaN(height)) {\n // Height may be NaN if only one value is given except height\n height = containerHeight - verticalMargin - top - (bottom || 0);\n }\n\n var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\n rect.margin = margin;\n return rect;\n}\n/**\n * Position a zr element in viewport\n * Group position is specified by either\n * {left, top}, {right, bottom}\n * If all properties exists, right and bottom will be igonred.\n *\n * Logic:\n * 1. Scale (against origin point in parent coord)\n * 2. Rotate (against origin point in parent coord)\n * 3. Traslate (with el.position by this method)\n * So this method only fixes the last step 'Traslate', which does not affect\n * scaling and rotating.\n *\n * If be called repeatly with the same input el, the same result will be gotten.\n *\n * @param {module:zrender/Element} el Should have `getBoundingRect` method.\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width] Only for opt.boundingModel: 'raw'\n * @param {number|string} [positionInfo.height] Only for opt.boundingModel: 'raw'\n * @param {Object} containerRect\n * @param {string|number} margin\n * @param {Object} [opt]\n * @param {Array.} [opt.hv=[1,1]] Only horizontal or only vertical.\n * @param {Array.} [opt.boundingMode='all']\n * Specify how to calculate boundingRect when locating.\n * 'all': Position the boundingRect that is transformed and uioned\n * both itself and its descendants.\n * This mode simplies confine the elements in the bounding\n * of their container (e.g., using 'right: 0').\n * 'raw': Position the boundingRect that is not transformed and only itself.\n * This mode is useful when you want a element can overflow its\n * container. (Consider a rotated circle needs to be located in a corner.)\n * In this mode positionInfo.width/height can only be number.\n */\n\n\nfunction positionElement(el, positionInfo, containerRect, margin, opt) {\n var h = !opt || !opt.hv || opt.hv[0];\n var v = !opt || !opt.hv || opt.hv[1];\n var boundingMode = opt && opt.boundingMode || 'all';\n\n if (!h && !v) {\n return;\n }\n\n var rect;\n\n if (boundingMode === 'raw') {\n rect = el.type === 'group' ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect();\n } else {\n rect = el.getBoundingRect();\n\n if (el.needLocalTransform()) {\n var transform = el.getLocalTransform(); // Notice: raw rect may be inner object of el,\n // which should not be modified.\n\n rect = rect.clone();\n rect.applyTransform(transform);\n }\n } // The real width and height can not be specified but calculated by the given el.\n\n\n positionInfo = getLayoutRect(zrUtil.defaults({\n width: rect.width,\n height: rect.height\n }, positionInfo), containerRect, margin); // Because 'tranlate' is the last step in transform\n // (see zrender/core/Transformable#getLocalTransform),\n // we can just only modify el.position to get final result.\n\n var elPos = el.position;\n var dx = h ? positionInfo.x - rect.x : 0;\n var dy = v ? positionInfo.y - rect.y : 0;\n el.attr('position', boundingMode === 'raw' ? [dx, dy] : [elPos[0] + dx, elPos[1] + dy]);\n}\n/**\n * @param {Object} option Contains some of the properties in HV_NAMES.\n * @param {number} hvIdx 0: horizontal; 1: vertical.\n */\n\n\nfunction sizeCalculable(option, hvIdx) {\n return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null;\n}\n/**\n * Consider Case:\n * When defulat option has {left: 0, width: 100}, and we set {right: 0}\n * through setOption or media query, using normal zrUtil.merge will cause\n * {right: 0} does not take effect.\n *\n * @example\n * ComponentModel.extend({\n * init: function () {\n * ...\n * var inputPositionParams = layout.getLayoutParams(option);\n * this.mergeOption(inputPositionParams);\n * },\n * mergeOption: function (newOption) {\n * newOption && zrUtil.merge(thisOption, newOption, true);\n * layout.mergeLayoutParam(thisOption, newOption);\n * }\n * });\n *\n * @param {Object} targetOption\n * @param {Object} newOption\n * @param {Object|string} [opt]\n * @param {boolean|Array.} [opt.ignoreSize=false] Used for the components\n * that width (or height) should not be calculated by left and right (or top and bottom).\n */\n\n\nfunction mergeLayoutParam(targetOption, newOption, opt) {\n !zrUtil.isObject(opt) && (opt = {});\n var ignoreSize = opt.ignoreSize;\n !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\n var hResult = merge(HV_NAMES[0], 0);\n var vResult = merge(HV_NAMES[1], 1);\n copy(HV_NAMES[0], targetOption, hResult);\n copy(HV_NAMES[1], targetOption, vResult);\n\n function merge(names, hvIdx) {\n var newParams = {};\n var newValueCount = 0;\n var merged = {};\n var mergedValueCount = 0;\n var enoughParamNumber = 2;\n each(names, function (name) {\n merged[name] = targetOption[name];\n });\n each(names, function (name) {\n // Consider case: newOption.width is null, which is\n // set by user for removing width setting.\n hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\n hasValue(newParams, name) && newValueCount++;\n hasValue(merged, name) && mergedValueCount++;\n });\n\n if (ignoreSize[hvIdx]) {\n // Only one of left/right is premitted to exist.\n if (hasValue(newOption, names[1])) {\n merged[names[2]] = null;\n } else if (hasValue(newOption, names[2])) {\n merged[names[1]] = null;\n }\n\n return merged;\n } // Case: newOption: {width: ..., right: ...},\n // or targetOption: {right: ...} and newOption: {width: ...},\n // There is no conflict when merged only has params count\n // little than enoughParamNumber.\n\n\n if (mergedValueCount === enoughParamNumber || !newValueCount) {\n return merged;\n } // Case: newOption: {width: ..., right: ...},\n // Than we can make sure user only want those two, and ignore\n // all origin params in targetOption.\n else if (newValueCount >= enoughParamNumber) {\n return newParams;\n } else {\n // Chose another param from targetOption by priority.\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n\n if (!hasProp(newParams, name) && hasProp(targetOption, name)) {\n newParams[name] = targetOption[name];\n break;\n }\n }\n\n return newParams;\n }\n }\n\n function hasProp(obj, name) {\n return obj.hasOwnProperty(name);\n }\n\n function hasValue(obj, name) {\n return obj[name] != null && obj[name] !== 'auto';\n }\n\n function copy(names, target, source) {\n each(names, function (name) {\n target[name] = source[name];\n });\n }\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction getLayoutParams(source) {\n return copyLayoutParams({}, source);\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction copyLayoutParams(target, source) {\n source && target && each(LOCATION_PARAMS, function (name) {\n source.hasOwnProperty(name) && (target[name] = source[name]);\n });\n return target;\n}\n\nexports.LOCATION_PARAMS = LOCATION_PARAMS;\nexports.HV_NAMES = HV_NAMES;\nexports.box = box;\nexports.vbox = vbox;\nexports.hbox = hbox;\nexports.getAvailableSize = getAvailableSize;\nexports.getLayoutRect = getLayoutRect;\nexports.positionElement = positionElement;\nexports.sizeCalculable = sizeCalculable;\nexports.mergeLayoutParam = mergeLayoutParam;\nexports.getLayoutParams = getLayoutParams;\nexports.copyLayoutParams = copyLayoutParams;","\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(\"./boxplot/BoxplotSeries\");\n\nrequire(\"./boxplot/BoxplotView\");\n\nvar boxplotVisual = require(\"./boxplot/boxplotVisual\");\n\nvar boxplotLayout = require(\"./boxplot/boxplotLayout\");\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.registerVisual(boxplotVisual);\necharts.registerLayout(boxplotLayout);","\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 retrieve = _util.retrieve;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar each = _util.each;\n\nvar formatUtil = require(\"../../util/format\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _number = require(\"../../util/number\");\n\nvar isRadianAroundZero = _number.isRadianAroundZero;\nvar remRadian = _number.remRadian;\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar matrixUtil = require(\"zrender/lib/core/matrix\");\n\nvar _vector = require(\"zrender/lib/core/vector\");\n\nvar v2ApplyTransform = _vector.applyTransform;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\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 PI = Math.PI;\n/**\n * A final axis is translated and rotated from a \"standard axis\".\n * So opt.position and opt.rotation is required.\n *\n * A standard axis is and axis from [0, 0] to [0, axisExtent[1]],\n * for example: (0, 0) ------------> (0, 50)\n *\n * nameDirection or tickDirection or labelDirection is 1 means tick\n * or label is below the standard axis, whereas is -1 means above\n * the standard axis. labelOffset means offset between label and axis,\n * which is useful when 'onZero', where axisLabel is in the grid and\n * label in outside grid.\n *\n * Tips: like always,\n * positive rotation represents anticlockwise, and negative rotation\n * represents clockwise.\n * The direction of position coordinate is the same as the direction\n * of screen coordinate.\n *\n * Do not need to consider axis 'inverse', which is auto processed by\n * axis extent.\n *\n * @param {module:zrender/container/Group} group\n * @param {Object} axisModel\n * @param {Object} opt Standard axis parameters.\n * @param {Array.} opt.position [x, y]\n * @param {number} opt.rotation by radian\n * @param {number} [opt.nameDirection=1] 1 or -1 Used when nameLocation is 'middle' or 'center'.\n * @param {number} [opt.tickDirection=1] 1 or -1\n * @param {number} [opt.labelDirection=1] 1 or -1\n * @param {number} [opt.labelOffset=0] Usefull when onZero.\n * @param {string} [opt.axisLabelShow] default get from axisModel.\n * @param {string} [opt.axisName] default get from axisModel.\n * @param {number} [opt.axisNameAvailableWidth]\n * @param {number} [opt.labelRotate] by degree, default get from axisModel.\n * @param {number} [opt.strokeContainThreshold] Default label interval when label\n * @param {number} [opt.nameTruncateMaxWidth]\n */\n\nvar AxisBuilder = function (axisModel, opt) {\n /**\n * @readOnly\n */\n this.opt = opt;\n /**\n * @readOnly\n */\n\n this.axisModel = axisModel; // Default value\n\n defaults(opt, {\n labelOffset: 0,\n nameDirection: 1,\n tickDirection: 1,\n labelDirection: 1,\n silent: true\n });\n /**\n * @readOnly\n */\n\n this.group = new graphic.Group(); // FIXME Not use a seperate text group?\n\n var dumbGroup = new graphic.Group({\n position: opt.position.slice(),\n rotation: opt.rotation\n }); // this.group.add(dumbGroup);\n // this._dumbGroup = dumbGroup;\n\n dumbGroup.updateTransform();\n this._transform = dumbGroup.transform;\n this._dumbGroup = dumbGroup;\n};\n\nAxisBuilder.prototype = {\n constructor: AxisBuilder,\n hasBuilder: function (name) {\n return !!builders[name];\n },\n add: function (name) {\n builders[name].call(this);\n },\n getGroup: function () {\n return this.group;\n }\n};\nvar builders = {\n /**\n * @private\n */\n axisLine: function () {\n var opt = this.opt;\n var axisModel = this.axisModel;\n\n if (!axisModel.get('axisLine.show')) {\n return;\n }\n\n var extent = this.axisModel.axis.getExtent();\n var matrix = this._transform;\n var pt1 = [extent[0], 0];\n var pt2 = [extent[1], 0];\n\n if (matrix) {\n v2ApplyTransform(pt1, pt1, matrix);\n v2ApplyTransform(pt2, pt2, matrix);\n }\n\n var lineStyle = extend({\n lineCap: 'round'\n }, axisModel.getModel('axisLine.lineStyle').getLineStyle());\n this.group.add(new graphic.Line({\n // Id for animation\n anid: 'line',\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: lineStyle,\n strokeContainThreshold: opt.strokeContainThreshold || 5,\n silent: true,\n z2: 1\n }));\n var arrows = axisModel.get('axisLine.symbol');\n var arrowSize = axisModel.get('axisLine.symbolSize');\n var arrowOffset = axisModel.get('axisLine.symbolOffset') || 0;\n\n if (typeof arrowOffset === 'number') {\n arrowOffset = [arrowOffset, arrowOffset];\n }\n\n if (arrows != null) {\n if (typeof arrows === 'string') {\n // Use the same arrow for start and end point\n arrows = [arrows, arrows];\n }\n\n if (typeof arrowSize === 'string' || typeof arrowSize === 'number') {\n // Use the same size for width and height\n arrowSize = [arrowSize, arrowSize];\n }\n\n var symbolWidth = arrowSize[0];\n var symbolHeight = arrowSize[1];\n each([{\n rotate: opt.rotation + Math.PI / 2,\n offset: arrowOffset[0],\n r: 0\n }, {\n rotate: opt.rotation - Math.PI / 2,\n offset: arrowOffset[1],\n r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\n }], function (point, index) {\n if (arrows[index] !== 'none' && arrows[index] != null) {\n var symbol = createSymbol(arrows[index], -symbolWidth / 2, -symbolHeight / 2, symbolWidth, symbolHeight, lineStyle.stroke, true); // Calculate arrow position with offset\n\n var r = point.r + point.offset;\n var pos = [pt1[0] + r * Math.cos(opt.rotation), pt1[1] - r * Math.sin(opt.rotation)];\n symbol.attr({\n rotation: point.rotate,\n position: pos,\n silent: true,\n z2: 11\n });\n this.group.add(symbol);\n }\n }, this);\n }\n },\n\n /**\n * @private\n */\n axisTickLabel: function () {\n var axisModel = this.axisModel;\n var opt = this.opt;\n var ticksEls = buildAxisMajorTicks(this, axisModel, opt);\n var labelEls = buildAxisLabel(this, axisModel, opt);\n fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\n buildAxisMinorTicks(this, axisModel, opt);\n },\n\n /**\n * @private\n */\n axisName: function () {\n var opt = this.opt;\n var axisModel = this.axisModel;\n var name = retrieve(opt.axisName, axisModel.get('name'));\n\n if (!name) {\n return;\n }\n\n var nameLocation = axisModel.get('nameLocation');\n var nameDirection = opt.nameDirection;\n var textStyleModel = axisModel.getModel('nameTextStyle');\n var gap = axisModel.get('nameGap') || 0;\n var extent = this.axisModel.axis.getExtent();\n var gapSignal = extent[0] > extent[1] ? -1 : 1;\n var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, // 'middle'\n // Reuse labelOffset.\n isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0];\n var labelLayout;\n var nameRotation = axisModel.get('nameRotate');\n\n if (nameRotation != null) {\n nameRotation = nameRotation * PI / 180; // To radian.\n }\n\n var axisNameAvailableWidth;\n\n if (isNameLocationCenter(nameLocation)) {\n labelLayout = innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.\n nameDirection);\n } else {\n labelLayout = endTextLayout(opt, nameLocation, nameRotation || 0, extent);\n axisNameAvailableWidth = opt.axisNameAvailableWidth;\n\n if (axisNameAvailableWidth != null) {\n axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\n !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\n }\n }\n\n var textFont = textStyleModel.getFont();\n var truncateOpt = axisModel.get('nameTruncate', true) || {};\n var ellipsis = truncateOpt.ellipsis;\n var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth); // FIXME\n // truncate rich text? (consider performance)\n\n var truncatedText = ellipsis != null && maxWidth != null ? formatUtil.truncateText(name, maxWidth, textFont, ellipsis, {\n minChar: 2,\n placeholder: truncateOpt.placeholder\n }) : name;\n var tooltipOpt = axisModel.get('tooltip', true);\n var mainType = axisModel.mainType;\n var formatterParams = {\n componentType: mainType,\n name: name,\n $vars: ['name']\n };\n formatterParams[mainType + 'Index'] = axisModel.componentIndex;\n var textEl = new graphic.Text({\n // Id for animation\n anid: 'name',\n __fullText: name,\n __truncatedText: truncatedText,\n position: pos,\n rotation: labelLayout.rotation,\n silent: isLabelSilent(axisModel),\n z2: 1,\n tooltip: tooltipOpt && tooltipOpt.show ? extend({\n content: name,\n formatter: function () {\n return name;\n },\n formatterParams: formatterParams\n }, tooltipOpt) : null\n });\n graphic.setTextStyle(textEl.style, textStyleModel, {\n text: truncatedText,\n textFont: textFont,\n textFill: textStyleModel.getTextColor() || axisModel.get('axisLine.lineStyle.color'),\n textAlign: textStyleModel.get('align') || labelLayout.textAlign,\n textVerticalAlign: textStyleModel.get('verticalAlign') || labelLayout.textVerticalAlign\n });\n\n if (axisModel.get('triggerEvent')) {\n textEl.eventData = makeAxisEventDataBase(axisModel);\n textEl.eventData.targetType = 'axisName';\n textEl.eventData.name = name;\n } // FIXME\n\n\n this._dumbGroup.add(textEl);\n\n textEl.updateTransform();\n this.group.add(textEl);\n textEl.decomposeTransform();\n }\n};\n\nvar makeAxisEventDataBase = AxisBuilder.makeAxisEventDataBase = function (axisModel) {\n var eventData = {\n componentType: axisModel.mainType,\n componentIndex: axisModel.componentIndex\n };\n eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\n return eventData;\n};\n/**\n * @public\n * @static\n * @param {Object} opt\n * @param {number} axisRotation in radian\n * @param {number} textRotation in radian\n * @param {number} direction\n * @return {Object} {\n * rotation, // according to axis\n * textAlign,\n * textVerticalAlign\n * }\n */\n\n\nvar innerTextLayout = AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\n var rotationDiff = remRadian(textRotation - axisRotation);\n var textAlign;\n var textVerticalAlign;\n\n if (isRadianAroundZero(rotationDiff)) {\n // Label is parallel with axis line.\n textVerticalAlign = direction > 0 ? 'top' : 'bottom';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI)) {\n // Label is inverse parallel with axis line.\n textVerticalAlign = direction > 0 ? 'bottom' : 'top';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff > 0 && rotationDiff < PI) {\n textAlign = direction > 0 ? 'right' : 'left';\n } else {\n textAlign = direction > 0 ? 'left' : 'right';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n};\n\nfunction endTextLayout(opt, textPosition, textRotate, extent) {\n var rotationDiff = remRadian(textRotate - opt.rotation);\n var textAlign;\n var textVerticalAlign;\n var inverse = extent[0] > extent[1];\n var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse;\n\n if (isRadianAroundZero(rotationDiff - PI / 2)) {\n textVerticalAlign = onLeft ? 'bottom' : 'top';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {\n textVerticalAlign = onLeft ? 'top' : 'bottom';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {\n textAlign = onLeft ? 'left' : 'right';\n } else {\n textAlign = onLeft ? 'right' : 'left';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n}\n\nvar isLabelSilent = AxisBuilder.isLabelSilent = function (axisModel) {\n var tooltipOpt = axisModel.get('tooltip');\n return axisModel.get('silent') // Consider mouse cursor, add these restrictions.\n || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show);\n};\n\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\n if (shouldShowAllLabels(axisModel.axis)) {\n return;\n } // If min or max are user set, we need to check\n // If the tick on min(max) are overlap on their neighbour tick\n // If they are overlapped, we need to hide the min(max) tick label\n\n\n var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n var showMaxLabel = axisModel.get('axisLabel.showMaxLabel'); // FIXME\n // Have not consider onBand yet, where tick els is more than label els.\n\n labelEls = labelEls || [];\n tickEls = tickEls || [];\n var firstLabel = labelEls[0];\n var nextLabel = labelEls[1];\n var lastLabel = labelEls[labelEls.length - 1];\n var prevLabel = labelEls[labelEls.length - 2];\n var firstTick = tickEls[0];\n var nextTick = tickEls[1];\n var lastTick = tickEls[tickEls.length - 1];\n var prevTick = tickEls[tickEls.length - 2];\n\n if (showMinLabel === false) {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\n if (showMinLabel) {\n ignoreEl(nextLabel);\n ignoreEl(nextTick);\n } else {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n }\n }\n\n if (showMaxLabel === false) {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\n if (showMaxLabel) {\n ignoreEl(prevLabel);\n ignoreEl(prevTick);\n } else {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n }\n }\n}\n\nfunction ignoreEl(el) {\n el && (el.ignore = true);\n}\n\nfunction isTwoLabelOverlapped(current, next, labelLayout) {\n // current and next has the same rotation.\n var firstRect = current && current.getBoundingRect().clone();\n var nextRect = next && next.getBoundingRect().clone();\n\n if (!firstRect || !nextRect) {\n return;\n } // When checking intersect of two rotated labels, we use mRotationBack\n // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`.\n\n\n var mRotationBack = matrixUtil.identity([]);\n matrixUtil.rotate(mRotationBack, mRotationBack, -current.rotation);\n firstRect.applyTransform(matrixUtil.mul([], mRotationBack, current.getLocalTransform()));\n nextRect.applyTransform(matrixUtil.mul([], mRotationBack, next.getLocalTransform()));\n return firstRect.intersect(nextRect);\n}\n\nfunction isNameLocationCenter(nameLocation) {\n return nameLocation === 'middle' || nameLocation === 'center';\n}\n\nfunction createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, aniid) {\n var tickEls = [];\n var pt1 = [];\n var pt2 = [];\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = ticksCoords[i].coord;\n pt1[0] = tickCoord;\n pt1[1] = 0;\n pt2[0] = tickCoord;\n pt2[1] = tickEndCoord;\n\n if (tickTransform) {\n v2ApplyTransform(pt1, pt1, tickTransform);\n v2ApplyTransform(pt2, pt2, tickTransform);\n } // Tick line, Not use group transform to have better line draw\n\n\n var tickEl = new graphic.Line({\n // Id for animation\n anid: aniid + '_' + ticksCoords[i].tickValue,\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: tickLineStyle,\n z2: 2,\n silent: true\n });\n tickEls.push(tickEl);\n }\n\n return tickEls;\n}\n\nfunction buildAxisMajorTicks(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var tickModel = axisModel.getModel('axisTick');\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var lineStyleModel = tickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * tickModel.get('length');\n var ticksCoords = axis.getTicksCoords();\n var ticksEls = createTicks(ticksCoords, axisBuilder._transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\n stroke: axisModel.get('axisLine.lineStyle.color')\n }), 'ticks');\n\n for (var i = 0; i < ticksEls.length; i++) {\n axisBuilder.group.add(ticksEls[i]);\n }\n\n return ticksEls;\n}\n\nfunction buildAxisMinorTicks(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var minorTickModel = axisModel.getModel('minorTick');\n\n if (!minorTickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var lineStyleModel = minorTickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * minorTickModel.get('length');\n var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\n stroke: axisModel.get('axisLine.lineStyle.color')\n }));\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n var minorTicksEls = createTicks(minorTicksCoords[i], axisBuilder._transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\n\n for (var k = 0; k < minorTicksEls.length; k++) {\n axisBuilder.group.add(minorTicksEls[k]);\n }\n }\n}\n\nfunction buildAxisLabel(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));\n\n if (!show || axis.scale.isBlank()) {\n return;\n }\n\n var labelModel = axisModel.getModel('axisLabel');\n var labelMargin = labelModel.get('margin');\n var labels = axis.getViewLabels(); // Special label rotate.\n\n var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI / 180;\n var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\n var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\n var labelEls = [];\n var silent = isLabelSilent(axisModel);\n var triggerEvent = axisModel.get('triggerEvent');\n each(labels, function (labelItem, index) {\n var tickValue = labelItem.tickValue;\n var formattedLabel = labelItem.formattedLabel;\n var rawLabel = labelItem.rawLabel;\n var itemLabelModel = labelModel;\n\n if (rawCategoryData && rawCategoryData[tickValue] && rawCategoryData[tickValue].textStyle) {\n itemLabelModel = new Model(rawCategoryData[tickValue].textStyle, labelModel, axisModel.ecModel);\n }\n\n var textColor = itemLabelModel.getTextColor() || axisModel.get('axisLine.lineStyle.color');\n var tickCoord = axis.dataToCoord(tickValue);\n var pos = [tickCoord, opt.labelOffset + opt.labelDirection * labelMargin];\n var textEl = new graphic.Text({\n // Id for animation\n anid: 'label_' + tickValue,\n position: pos,\n rotation: labelLayout.rotation,\n silent: silent,\n z2: 10\n });\n graphic.setTextStyle(textEl.style, itemLabelModel, {\n text: formattedLabel,\n textAlign: itemLabelModel.getShallow('align', true) || labelLayout.textAlign,\n textVerticalAlign: itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign,\n textFill: typeof textColor === 'function' ? textColor( // (1) In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n // (2) Compatible with previous version, which always use formatted label as\n // input. But in interval scale the formatted label is like '223,445', which\n // maked user repalce ','. So we modify it to return original val but remain\n // it as 'string' to avoid error in replacing.\n axis.type === 'category' ? rawLabel : axis.type === 'value' ? tickValue + '' : tickValue, index) : textColor\n }); // Pack data for mouse event\n\n if (triggerEvent) {\n textEl.eventData = makeAxisEventDataBase(axisModel);\n textEl.eventData.targetType = 'axisLabel';\n textEl.eventData.value = rawLabel;\n } // FIXME\n\n\n axisBuilder._dumbGroup.add(textEl);\n\n textEl.updateTransform();\n labelEls.push(textEl);\n axisBuilder.group.add(textEl);\n textEl.decomposeTransform();\n });\n return labelEls;\n}\n\nvar _default = AxisBuilder;\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 each = _util.each;\nvar isArray = _util.isArray;\nvar isObject = _util.isObject;\n\nvar compatStyle = require(\"./helper/compatStyle\");\n\nvar _model = require(\"../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\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// Compatitable with 2.0\nfunction get(opt, path) {\n path = path.split(',');\n var obj = opt;\n\n for (var i = 0; i < path.length; i++) {\n obj = obj && obj[path[i]];\n\n if (obj == null) {\n break;\n }\n }\n\n return obj;\n}\n\nfunction set(opt, path, val, overwrite) {\n path = path.split(',');\n var obj = opt;\n var key;\n\n for (var i = 0; i < path.length - 1; i++) {\n key = path[i];\n\n if (obj[key] == null) {\n obj[key] = {};\n }\n\n obj = obj[key];\n }\n\n if (overwrite || obj[path[i]] == null) {\n obj[path[i]] = val;\n }\n}\n\nfunction compatLayoutProperties(option) {\n each(LAYOUT_PROPERTIES, function (prop) {\n if (prop[0] in option && !(prop[1] in option)) {\n option[prop[1]] = option[prop[0]];\n }\n });\n}\n\nvar LAYOUT_PROPERTIES = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']];\nvar COMPATITABLE_COMPONENTS = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'];\n\nfunction _default(option, isTheme) {\n compatStyle(option, isTheme); // Make sure series array for model initialization.\n\n option.series = normalizeToArray(option.series);\n each(option.series, function (seriesOpt) {\n if (!isObject(seriesOpt)) {\n return;\n }\n\n var seriesType = seriesOpt.type;\n\n if (seriesType === 'line') {\n if (seriesOpt.clipOverflow != null) {\n seriesOpt.clip = seriesOpt.clipOverflow;\n }\n } else if (seriesType === 'pie' || seriesType === 'gauge') {\n if (seriesOpt.clockWise != null) {\n seriesOpt.clockwise = seriesOpt.clockWise;\n }\n } else if (seriesType === 'gauge') {\n var pointerColor = get(seriesOpt, 'pointer.color');\n pointerColor != null && set(seriesOpt, 'itemStyle.color', pointerColor);\n }\n\n compatLayoutProperties(seriesOpt);\n }); // dataRange has changed to visualMap\n\n if (option.dataRange) {\n option.visualMap = option.dataRange;\n }\n\n each(COMPATITABLE_COMPONENTS, function (componentName) {\n var options = option[componentName];\n\n if (options) {\n if (!isArray(options)) {\n options = [options];\n }\n\n each(options, function (option) {\n compatLayoutProperties(option);\n });\n }\n });\n}\n\nmodule.exports = _default;","import React, { useEffect, useState } from 'react'\nimport classnames from 'classnames'\nimport { Router, useRouter } from 'next/router'\n\ninterface IProps {\n seriesId: number\n seriesName: string\n dealerPrice: string\n titles: {\n name: string\n url?: string\n el?: string\n outer?: boolean\n }[]\n activeIndex?: string\n handleAnchorClick?: (name: string) => void\n}\n\nexport default function TopAnchor({ params }: { params: IProps }) {\n const { titles, activeIndex, handleAnchorClick } = params\n\n const [currIndex, setCurrIndex] = useState(0)\n const router = useRouter()\n\n useEffect(() => {\n switch (activeIndex) {\n case 'home':\n setCurrIndex(0)\n break\n case 'article':\n setCurrIndex(5)\n break\n case 'video':\n setCurrIndex(6)\n break\n case 'qa':\n setCurrIndex(3)\n break\n }\n }, [activeIndex])\n\n return (\n
\n
    \n {titles.map((item, index: number) => (\n {\n if (!item.url || currIndex === index) return\n if (item.outer) {\n window.open(item.url)\n } else {\n router.push(item.url)\n }\n if (typeof handleAnchorClick === 'function') {\n handleAnchorClick(item.name)\n }\n }}\n >\n {item.name}\n \n ))}\n
\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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar interactionMutex = require(\"./interactionMutex\");\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\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 map = zrUtil.map;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathPow = Math.pow;\nvar COVER_Z = 10000;\nvar UNSELECT_THRESHOLD = 6;\nvar MIN_RESIZE_LINE_WIDTH = 6;\nvar MUTEX_RESOURCE_KEY = 'globalPan';\nvar DIRECTION_MAP = {\n w: [0, 0],\n e: [0, 1],\n n: [1, 0],\n s: [1, 1]\n};\nvar CURSOR_MAP = {\n w: 'ew',\n e: 'ew',\n n: 'ns',\n s: 'ns',\n ne: 'nesw',\n sw: 'nesw',\n nw: 'nwse',\n se: 'nwse'\n};\nvar DEFAULT_BRUSH_OPT = {\n brushStyle: {\n lineWidth: 2,\n stroke: 'rgba(0,0,0,0.3)',\n fill: 'rgba(0,0,0,0.1)'\n },\n transformable: true,\n brushMode: 'single',\n removeOnClick: false\n};\nvar baseUID = 0;\n/**\n * @alias module:echarts/component/helper/BrushController\n * @constructor\n * @mixin {module:zrender/mixin/Eventful}\n * @event module:echarts/component/helper/BrushController#brush\n * params:\n * areas: Array., coord relates to container group,\n * If no container specified, to global.\n * opt {\n * isEnd: boolean,\n * removeOnClick: boolean\n * }\n *\n * @param {module:zrender/zrender~ZRender} zr\n */\n\nfunction BrushController(zr) {\n Eventful.call(this);\n /**\n * @type {module:zrender/zrender~ZRender}\n * @private\n */\n\n this._zr = zr;\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n\n this.group = new graphic.Group();\n /**\n * Only for drawing (after enabledBrush).\n * 'line', 'rect', 'polygon' or false\n * If passing false/null/undefined, disable brush.\n * If passing 'auto', determined by panel.defaultBrushType\n * @private\n * @type {string}\n */\n\n this._brushType;\n /**\n * Only for drawing (after enabledBrush).\n *\n * @private\n * @type {Object}\n */\n\n this._brushOption;\n /**\n * @private\n * @type {Object}\n */\n\n this._panels;\n /**\n * @private\n * @type {Array.}\n */\n\n this._track = [];\n /**\n * @private\n * @type {boolean}\n */\n\n this._dragging;\n /**\n * @private\n * @type {Array}\n */\n\n this._covers = [];\n /**\n * @private\n * @type {moudule:zrender/container/Group}\n */\n\n this._creatingCover;\n /**\n * `true` means global panel\n * @private\n * @type {module:zrender/container/Group|boolean}\n */\n\n this._creatingPanel;\n /**\n * @private\n * @type {boolean}\n */\n\n this._enableGlobalPan;\n /**\n * @private\n * @type {boolean}\n */\n\n /**\n * @private\n * @type {string}\n */\n this._uid = 'brushController_' + baseUID++;\n /**\n * @private\n * @type {Object}\n */\n\n this._handlers = {};\n each(pointerHandlers, function (handler, eventName) {\n this._handlers[eventName] = zrUtil.bind(handler, this);\n }, this);\n}\n\nBrushController.prototype = {\n constructor: BrushController,\n\n /**\n * If set to null/undefined/false, select disabled.\n * @param {Object} brushOption\n * @param {string|boolean} brushOption.brushType 'line', 'rect', 'polygon' or false\n * If passing false/null/undefined, disable brush.\n * If passing 'auto', determined by panel.defaultBrushType.\n * ('auto' can not be used in global panel)\n * @param {number} [brushOption.brushMode='single'] 'single' or 'multiple'\n * @param {boolean} [brushOption.transformable=true]\n * @param {boolean} [brushOption.removeOnClick=false]\n * @param {Object} [brushOption.brushStyle]\n * @param {number} [brushOption.brushStyle.width]\n * @param {number} [brushOption.brushStyle.lineWidth]\n * @param {string} [brushOption.brushStyle.stroke]\n * @param {string} [brushOption.brushStyle.fill]\n * @param {number} [brushOption.z]\n */\n enableBrush: function (brushOption) {\n this._brushType && doDisableBrush(this);\n brushOption.brushType && doEnableBrush(this, brushOption);\n return this;\n },\n\n /**\n * @param {Array.} panelOpts If not pass, it is global brush.\n * Each items: {\n * panelId, // mandatory.\n * clipPath, // mandatory. function.\n * isTargetByCursor, // mandatory. function.\n * defaultBrushType, // optional, only used when brushType is 'auto'.\n * getLinearBrushOtherExtent, // optional. function.\n * }\n */\n setPanels: function (panelOpts) {\n if (panelOpts && panelOpts.length) {\n var panels = this._panels = {};\n zrUtil.each(panelOpts, function (panelOpts) {\n panels[panelOpts.panelId] = zrUtil.clone(panelOpts);\n });\n } else {\n this._panels = null;\n }\n\n return this;\n },\n\n /**\n * @param {Object} [opt]\n * @return {boolean} [opt.enableGlobalPan=false]\n */\n mount: function (opt) {\n opt = opt || {};\n this._enableGlobalPan = opt.enableGlobalPan;\n var thisGroup = this.group;\n\n this._zr.add(thisGroup);\n\n thisGroup.attr({\n position: opt.position || [0, 0],\n rotation: opt.rotation || 0,\n scale: opt.scale || [1, 1]\n });\n this._transform = thisGroup.getLocalTransform();\n return this;\n },\n eachCover: function (cb, context) {\n each(this._covers, cb, context);\n },\n\n /**\n * Update covers.\n * @param {Array.} brushOptionList Like:\n * [\n * {id: 'xx', brushType: 'line', range: [23, 44], brushStyle, transformable},\n * {id: 'yy', brushType: 'rect', range: [[23, 44], [23, 54]]},\n * ...\n * ]\n * `brushType` is required in each cover info. (can not be 'auto')\n * `id` is not mandatory.\n * `brushStyle`, `transformable` is not mandatory, use DEFAULT_BRUSH_OPT by default.\n * If brushOptionList is null/undefined, all covers removed.\n */\n updateCovers: function (brushOptionList) {\n brushOptionList = zrUtil.map(brushOptionList, function (brushOption) {\n return zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true);\n });\n var tmpIdPrefix = '\\0-brush-index-';\n var oldCovers = this._covers;\n var newCovers = this._covers = [];\n var controller = this;\n var creatingCover = this._creatingCover;\n new DataDiffer(oldCovers, brushOptionList, oldGetKey, getKey).add(addOrUpdate).update(addOrUpdate).remove(remove).execute();\n return this;\n\n function getKey(brushOption, index) {\n return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + '-' + brushOption.brushType;\n }\n\n function oldGetKey(cover, index) {\n return getKey(cover.__brushOption, index);\n }\n\n function addOrUpdate(newIndex, oldIndex) {\n var newBrushOption = brushOptionList[newIndex]; // Consider setOption in event listener of brushSelect,\n // where updating cover when creating should be forbiden.\n\n if (oldIndex != null && oldCovers[oldIndex] === creatingCover) {\n newCovers[newIndex] = oldCovers[oldIndex];\n } else {\n var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushOption, oldCovers[oldIndex]) : endCreating(controller, createCover(controller, newBrushOption));\n updateCoverAfterCreation(controller, cover);\n }\n }\n\n function remove(oldIndex) {\n if (oldCovers[oldIndex] !== creatingCover) {\n controller.group.remove(oldCovers[oldIndex]);\n }\n }\n },\n unmount: function () {\n this.enableBrush(false); // container may 'removeAll' outside.\n\n clearCovers(this);\n\n this._zr.remove(this.group);\n\n return this;\n },\n dispose: function () {\n this.unmount();\n this.off();\n }\n};\nzrUtil.mixin(BrushController, Eventful);\n\nfunction doEnableBrush(controller, brushOption) {\n var zr = controller._zr; // Consider roam, which takes globalPan too.\n\n if (!controller._enableGlobalPan) {\n interactionMutex.take(zr, MUTEX_RESOURCE_KEY, controller._uid);\n }\n\n mountHandlers(zr, controller._handlers);\n controller._brushType = brushOption.brushType;\n controller._brushOption = zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true);\n}\n\nfunction doDisableBrush(controller) {\n var zr = controller._zr;\n interactionMutex.release(zr, MUTEX_RESOURCE_KEY, controller._uid);\n unmountHandlers(zr, controller._handlers);\n controller._brushType = controller._brushOption = null;\n}\n\nfunction mountHandlers(zr, handlers) {\n each(handlers, function (handler, eventName) {\n zr.on(eventName, handler);\n });\n}\n\nfunction unmountHandlers(zr, handlers) {\n each(handlers, function (handler, eventName) {\n zr.off(eventName, handler);\n });\n}\n\nfunction createCover(controller, brushOption) {\n var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption);\n cover.__brushOption = brushOption;\n updateZ(cover, brushOption);\n controller.group.add(cover);\n return cover;\n}\n\nfunction endCreating(controller, creatingCover) {\n var coverRenderer = getCoverRenderer(creatingCover);\n\n if (coverRenderer.endCreating) {\n coverRenderer.endCreating(controller, creatingCover);\n updateZ(creatingCover, creatingCover.__brushOption);\n }\n\n return creatingCover;\n}\n\nfunction updateCoverShape(controller, cover) {\n var brushOption = cover.__brushOption;\n getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);\n}\n\nfunction updateZ(cover, brushOption) {\n var z = brushOption.z;\n z == null && (z = COVER_Z);\n cover.traverse(function (el) {\n el.z = z;\n el.z2 = z; // Consider in given container.\n });\n}\n\nfunction updateCoverAfterCreation(controller, cover) {\n getCoverRenderer(cover).updateCommon(controller, cover);\n updateCoverShape(controller, cover);\n}\n\nfunction getCoverRenderer(cover) {\n return coverRenderers[cover.__brushOption.brushType];\n} // return target panel or `true` (means global panel)\n\n\nfunction getPanelByPoint(controller, e, localCursorPoint) {\n var panels = controller._panels;\n\n if (!panels) {\n return true; // Global panel\n }\n\n var panel;\n var transform = controller._transform;\n each(panels, function (pn) {\n pn.isTargetByCursor(e, localCursorPoint, transform) && (panel = pn);\n });\n return panel;\n} // Return a panel or true\n\n\nfunction getPanelByCover(controller, cover) {\n var panels = controller._panels;\n\n if (!panels) {\n return true; // Global panel\n }\n\n var panelId = cover.__brushOption.panelId; // User may give cover without coord sys info,\n // which is then treated as global panel.\n\n return panelId != null ? panels[panelId] : true;\n}\n\nfunction clearCovers(controller) {\n var covers = controller._covers;\n var originalLength = covers.length;\n each(covers, function (cover) {\n controller.group.remove(cover);\n }, controller);\n covers.length = 0;\n return !!originalLength;\n}\n\nfunction trigger(controller, opt) {\n var areas = map(controller._covers, function (cover) {\n var brushOption = cover.__brushOption;\n var range = zrUtil.clone(brushOption.range);\n return {\n brushType: brushOption.brushType,\n panelId: brushOption.panelId,\n range: range\n };\n });\n controller.trigger('brush', areas, {\n isEnd: !!opt.isEnd,\n removeOnClick: !!opt.removeOnClick\n });\n}\n\nfunction shouldShowCover(controller) {\n var track = controller._track;\n\n if (!track.length) {\n return false;\n }\n\n var p2 = track[track.length - 1];\n var p1 = track[0];\n var dx = p2[0] - p1[0];\n var dy = p2[1] - p1[1];\n var dist = mathPow(dx * dx + dy * dy, 0.5);\n return dist > UNSELECT_THRESHOLD;\n}\n\nfunction getTrackEnds(track) {\n var tail = track.length - 1;\n tail < 0 && (tail = 0);\n return [track[0], track[tail]];\n}\n\nfunction createBaseRectCover(doDrift, controller, brushOption, edgeNames) {\n var cover = new graphic.Group();\n cover.add(new graphic.Rect({\n name: 'main',\n style: makeStyle(brushOption),\n silent: true,\n draggable: true,\n cursor: 'move',\n drift: curry(doDrift, controller, cover, 'nswe'),\n ondragend: curry(trigger, controller, {\n isEnd: true\n })\n }));\n each(edgeNames, function (name) {\n cover.add(new graphic.Rect({\n name: name,\n style: {\n opacity: 0\n },\n draggable: true,\n silent: true,\n invisible: true,\n drift: curry(doDrift, controller, cover, name),\n ondragend: curry(trigger, controller, {\n isEnd: true\n })\n }));\n });\n return cover;\n}\n\nfunction updateBaseRect(controller, cover, localRange, brushOption) {\n var lineWidth = brushOption.brushStyle.lineWidth || 0;\n var handleSize = mathMax(lineWidth, MIN_RESIZE_LINE_WIDTH);\n var x = localRange[0][0];\n var y = localRange[1][0];\n var xa = x - lineWidth / 2;\n var ya = y - lineWidth / 2;\n var x2 = localRange[0][1];\n var y2 = localRange[1][1];\n var x2a = x2 - handleSize + lineWidth / 2;\n var y2a = y2 - handleSize + lineWidth / 2;\n var width = x2 - x;\n var height = y2 - y;\n var widtha = width + lineWidth;\n var heighta = height + lineWidth;\n updateRectShape(controller, cover, 'main', x, y, width, height);\n\n if (brushOption.transformable) {\n updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta);\n updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta);\n updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize);\n updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize);\n updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize);\n updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize);\n updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize);\n updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize);\n }\n}\n\nfunction updateCommon(controller, cover) {\n var brushOption = cover.__brushOption;\n var transformable = brushOption.transformable;\n var mainEl = cover.childAt(0);\n mainEl.useStyle(makeStyle(brushOption));\n mainEl.attr({\n silent: !transformable,\n cursor: transformable ? 'move' : 'default'\n });\n each(['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw'], function (name) {\n var el = cover.childOfName(name);\n var globalDir = getGlobalDirection(controller, name);\n el && el.attr({\n silent: !transformable,\n invisible: !transformable,\n cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null\n });\n });\n}\n\nfunction updateRectShape(controller, cover, name, x, y, w, h) {\n var el = cover.childOfName(name);\n el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]])));\n}\n\nfunction makeStyle(brushOption) {\n return zrUtil.defaults({\n strokeNoScale: true\n }, brushOption.brushStyle);\n}\n\nfunction formatRectRange(x, y, x2, y2) {\n var min = [mathMin(x, x2), mathMin(y, y2)];\n var max = [mathMax(x, x2), mathMax(y, y2)];\n return [[min[0], max[0]], // x range\n [min[1], max[1]] // y range\n ];\n}\n\nfunction getTransform(controller) {\n return graphic.getTransform(controller.group);\n}\n\nfunction getGlobalDirection(controller, localDirection) {\n if (localDirection.length > 1) {\n localDirection = localDirection.split('');\n var globalDir = [getGlobalDirection(controller, localDirection[0]), getGlobalDirection(controller, localDirection[1])];\n (globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse();\n return globalDir.join('');\n } else {\n var map = {\n w: 'left',\n e: 'right',\n n: 'top',\n s: 'bottom'\n };\n var inverseMap = {\n left: 'w',\n right: 'e',\n top: 'n',\n bottom: 's'\n };\n var globalDir = graphic.transformDirection(map[localDirection], getTransform(controller));\n return inverseMap[globalDir];\n }\n}\n\nfunction driftRect(toRectRange, fromRectRange, controller, cover, name, dx, dy, e) {\n var brushOption = cover.__brushOption;\n var rectRange = toRectRange(brushOption.range);\n var localDelta = toLocalDelta(controller, dx, dy);\n each(name.split(''), function (namePart) {\n var ind = DIRECTION_MAP[namePart];\n rectRange[ind[0]][ind[1]] += localDelta[ind[0]];\n });\n brushOption.range = fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1]));\n updateCoverAfterCreation(controller, cover);\n trigger(controller, {\n isEnd: false\n });\n}\n\nfunction driftPolygon(controller, cover, dx, dy, e) {\n var range = cover.__brushOption.range;\n var localDelta = toLocalDelta(controller, dx, dy);\n each(range, function (point) {\n point[0] += localDelta[0];\n point[1] += localDelta[1];\n });\n updateCoverAfterCreation(controller, cover);\n trigger(controller, {\n isEnd: false\n });\n}\n\nfunction toLocalDelta(controller, dx, dy) {\n var thisGroup = controller.group;\n var localD = thisGroup.transformCoordToLocal(dx, dy);\n var localZero = thisGroup.transformCoordToLocal(0, 0);\n return [localD[0] - localZero[0], localD[1] - localZero[1]];\n}\n\nfunction clipByPanel(controller, cover, data) {\n var panel = getPanelByCover(controller, cover);\n return panel && panel !== true ? panel.clipPath(data, controller._transform) : zrUtil.clone(data);\n}\n\nfunction pointsToRect(points) {\n var xmin = mathMin(points[0][0], points[1][0]);\n var ymin = mathMin(points[0][1], points[1][1]);\n var xmax = mathMax(points[0][0], points[1][0]);\n var ymax = mathMax(points[0][1], points[1][1]);\n return {\n x: xmin,\n y: ymin,\n width: xmax - xmin,\n height: ymax - ymin\n };\n}\n\nfunction resetCursor(controller, e, localCursorPoint) {\n if ( // Check active\n !controller._brushType // resetCursor should be always called when mouse is in zr area,\n // but not called when mouse is out of zr area to avoid bad influence\n // if `mousemove`, `mouseup` are triggered from `document` event.\n || isOutsideZrArea(controller, e)) {\n return;\n }\n\n var zr = controller._zr;\n var covers = controller._covers;\n var currPanel = getPanelByPoint(controller, e, localCursorPoint); // Check whether in covers.\n\n if (!controller._dragging) {\n for (var i = 0; i < covers.length; i++) {\n var brushOption = covers[i].__brushOption;\n\n if (currPanel && (currPanel === true || brushOption.panelId === currPanel.panelId) && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) {\n // Use cursor style set on cover.\n return;\n }\n }\n }\n\n currPanel && zr.setCursorStyle('crosshair');\n}\n\nfunction preventDefault(e) {\n var rawE = e.event;\n rawE.preventDefault && rawE.preventDefault();\n}\n\nfunction mainShapeContain(cover, x, y) {\n return cover.childOfName('main').contain(x, y);\n}\n\nfunction updateCoverByMouse(controller, e, localCursorPoint, isEnd) {\n var creatingCover = controller._creatingCover;\n var panel = controller._creatingPanel;\n var thisBrushOption = controller._brushOption;\n var eventParams;\n\n controller._track.push(localCursorPoint.slice());\n\n if (shouldShowCover(controller) || creatingCover) {\n if (panel && !creatingCover) {\n thisBrushOption.brushMode === 'single' && clearCovers(controller);\n var brushOption = zrUtil.clone(thisBrushOption);\n brushOption.brushType = determineBrushType(brushOption.brushType, panel);\n brushOption.panelId = panel === true ? null : panel.panelId;\n creatingCover = controller._creatingCover = createCover(controller, brushOption);\n\n controller._covers.push(creatingCover);\n }\n\n if (creatingCover) {\n var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];\n var coverBrushOption = creatingCover.__brushOption;\n coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track));\n\n if (isEnd) {\n endCreating(controller, creatingCover);\n coverRenderer.updateCommon(controller, creatingCover);\n }\n\n updateCoverShape(controller, creatingCover);\n eventParams = {\n isEnd: isEnd\n };\n }\n } else if (isEnd && thisBrushOption.brushMode === 'single' && thisBrushOption.removeOnClick) {\n // Help user to remove covers easily, only by a tiny drag, in 'single' mode.\n // But a single click do not clear covers, because user may have casual\n // clicks (for example, click on other component and do not expect covers\n // disappear).\n // Only some cover removed, trigger action, but not every click trigger action.\n if (getPanelByPoint(controller, e, localCursorPoint) && clearCovers(controller)) {\n eventParams = {\n isEnd: isEnd,\n removeOnClick: true\n };\n }\n }\n\n return eventParams;\n}\n\nfunction determineBrushType(brushType, panel) {\n if (brushType === 'auto') {\n return panel.defaultBrushType;\n }\n\n return brushType;\n}\n\nvar pointerHandlers = {\n mousedown: function (e) {\n if (this._dragging) {\n // In case some browser do not support globalOut,\n // and release mose out side the browser.\n handleDragEnd(this, e);\n } else if (!e.target || !e.target.draggable) {\n preventDefault(e);\n var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY);\n this._creatingCover = null;\n var panel = this._creatingPanel = getPanelByPoint(this, e, localCursorPoint);\n\n if (panel) {\n this._dragging = true;\n this._track = [localCursorPoint.slice()];\n }\n }\n },\n mousemove: function (e) {\n var x = e.offsetX;\n var y = e.offsetY;\n var localCursorPoint = this.group.transformCoordToLocal(x, y);\n resetCursor(this, e, localCursorPoint);\n\n if (this._dragging) {\n preventDefault(e);\n var eventParams = updateCoverByMouse(this, e, localCursorPoint, false);\n eventParams && trigger(this, eventParams);\n }\n },\n mouseup: function (e) {\n handleDragEnd(this, e);\n }\n};\n\nfunction handleDragEnd(controller, e) {\n if (controller._dragging) {\n preventDefault(e);\n var x = e.offsetX;\n var y = e.offsetY;\n var localCursorPoint = controller.group.transformCoordToLocal(x, y);\n var eventParams = updateCoverByMouse(controller, e, localCursorPoint, true);\n controller._dragging = false;\n controller._track = [];\n controller._creatingCover = null; // trigger event shoule be at final, after procedure will be nested.\n\n eventParams && trigger(controller, eventParams);\n }\n}\n\nfunction isOutsideZrArea(controller, x, y) {\n var zr = controller._zr;\n return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight();\n}\n/**\n * key: brushType\n * @type {Object}\n */\n\n\nvar coverRenderers = {\n lineX: getLineRenderer(0),\n lineY: getLineRenderer(1),\n rect: {\n createCover: function (controller, brushOption) {\n return createBaseRectCover(curry(driftRect, function (range) {\n return range;\n }, function (range) {\n return range;\n }), controller, brushOption, ['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw']);\n },\n getCreatingRange: function (localTrack) {\n var ends = getTrackEnds(localTrack);\n return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]);\n },\n updateCoverShape: function (controller, cover, localRange, brushOption) {\n updateBaseRect(controller, cover, localRange, brushOption);\n },\n updateCommon: updateCommon,\n contain: mainShapeContain\n },\n polygon: {\n createCover: function (controller, brushOption) {\n var cover = new graphic.Group(); // Do not use graphic.Polygon because graphic.Polyline do not close the\n // border of the shape when drawing, which is a better experience for user.\n\n cover.add(new graphic.Polyline({\n name: 'main',\n style: makeStyle(brushOption),\n silent: true\n }));\n return cover;\n },\n getCreatingRange: function (localTrack) {\n return localTrack;\n },\n endCreating: function (controller, cover) {\n cover.remove(cover.childAt(0)); // Use graphic.Polygon close the shape.\n\n cover.add(new graphic.Polygon({\n name: 'main',\n draggable: true,\n drift: curry(driftPolygon, controller, cover),\n ondragend: curry(trigger, controller, {\n isEnd: true\n })\n }));\n },\n updateCoverShape: function (controller, cover, localRange, brushOption) {\n cover.childAt(0).setShape({\n points: clipByPanel(controller, cover, localRange)\n });\n },\n updateCommon: updateCommon,\n contain: mainShapeContain\n }\n};\n\nfunction getLineRenderer(xyIndex) {\n return {\n createCover: function (controller, brushOption) {\n return createBaseRectCover(curry(driftRect, function (range) {\n var rectRange = [range, [0, 100]];\n xyIndex && rectRange.reverse();\n return rectRange;\n }, function (rectRange) {\n return rectRange[xyIndex];\n }), controller, brushOption, [['w', 'e'], ['n', 's']][xyIndex]);\n },\n getCreatingRange: function (localTrack) {\n var ends = getTrackEnds(localTrack);\n var min = mathMin(ends[0][xyIndex], ends[1][xyIndex]);\n var max = mathMax(ends[0][xyIndex], ends[1][xyIndex]);\n return [min, max];\n },\n updateCoverShape: function (controller, cover, localRange, brushOption) {\n var otherExtent; // If brushWidth not specified, fit the panel.\n\n var panel = getPanelByCover(controller, cover);\n\n if (panel !== true && panel.getLinearBrushOtherExtent) {\n otherExtent = panel.getLinearBrushOtherExtent(xyIndex, controller._transform);\n } else {\n var zr = controller._zr;\n otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]];\n }\n\n var rectRange = [localRange, otherExtent];\n xyIndex && rectRange.reverse();\n updateBaseRect(controller, cover, rectRange, brushOption);\n },\n updateCommon: updateCommon,\n contain: mainShapeContain\n };\n}\n\nvar _default = BrushController;\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 RadiusAxis = require(\"./RadiusAxis\");\n\nvar AngleAxis = require(\"./AngleAxis\");\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/coord/polar/Polar\n */\n\n/**\n * @alias {module:echarts/coord/polar/Polar}\n * @constructor\n * @param {string} name\n */\nvar Polar = function (name) {\n /**\n * @type {string}\n */\n this.name = name || '';\n /**\n * x of polar center\n * @type {number}\n */\n\n this.cx = 0;\n /**\n * y of polar center\n * @type {number}\n */\n\n this.cy = 0;\n /**\n * @type {module:echarts/coord/polar/RadiusAxis}\n * @private\n */\n\n this._radiusAxis = new RadiusAxis();\n /**\n * @type {module:echarts/coord/polar/AngleAxis}\n * @private\n */\n\n this._angleAxis = new AngleAxis();\n this._radiusAxis.polar = this._angleAxis.polar = this;\n};\n\nPolar.prototype = {\n type: 'polar',\n axisPointerEnabled: true,\n constructor: Polar,\n\n /**\n * @param {Array.}\n * @readOnly\n */\n dimensions: ['radius', 'angle'],\n\n /**\n * @type {module:echarts/coord/PolarModel}\n */\n model: null,\n\n /**\n * If contain coord\n * @param {Array.} point\n * @return {boolean}\n */\n containPoint: function (point) {\n var coord = this.pointToCoord(point);\n return this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1]);\n },\n\n /**\n * If contain data\n * @param {Array.} data\n * @return {boolean}\n */\n containData: function (data) {\n return this._radiusAxis.containData(data[0]) && this._angleAxis.containData(data[1]);\n },\n\n /**\n * @param {string} dim\n * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n */\n getAxis: function (dim) {\n return this['_' + dim + 'Axis'];\n },\n\n /**\n * @return {Array.}\n */\n getAxes: function () {\n return [this._radiusAxis, this._angleAxis];\n },\n\n /**\n * Get axes by type of scale\n * @param {string} scaleType\n * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n */\n getAxesByScale: function (scaleType) {\n var axes = [];\n var angleAxis = this._angleAxis;\n var radiusAxis = this._radiusAxis;\n angleAxis.scale.type === scaleType && axes.push(angleAxis);\n radiusAxis.scale.type === scaleType && axes.push(radiusAxis);\n return axes;\n },\n\n /**\n * @return {module:echarts/coord/polar/AngleAxis}\n */\n getAngleAxis: function () {\n return this._angleAxis;\n },\n\n /**\n * @return {module:echarts/coord/polar/RadiusAxis}\n */\n getRadiusAxis: function () {\n return this._radiusAxis;\n },\n\n /**\n * @param {module:echarts/coord/polar/Axis}\n * @return {module:echarts/coord/polar/Axis}\n */\n getOtherAxis: function (axis) {\n var angleAxis = this._angleAxis;\n return axis === angleAxis ? this._radiusAxis : angleAxis;\n },\n\n /**\n * Base axis will be used on stacking.\n *\n * @return {module:echarts/coord/polar/Axis}\n */\n getBaseAxis: function () {\n return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAngleAxis();\n },\n\n /**\n * @param {string} [dim] 'radius' or 'angle' or 'auto' or null/undefined\n * @return {Object} {baseAxes: [], otherAxes: []}\n */\n getTooltipAxes: function (dim) {\n var baseAxis = dim != null && dim !== 'auto' ? this.getAxis(dim) : this.getBaseAxis();\n return {\n baseAxes: [baseAxis],\n otherAxes: [this.getOtherAxis(baseAxis)]\n };\n },\n\n /**\n * Convert a single data item to (x, y) point.\n * Parameter data is an array which the first element is radius and the second is angle\n * @param {Array.} data\n * @param {boolean} [clamp=false]\n * @return {Array.}\n */\n dataToPoint: function (data, clamp) {\n return this.coordToPoint([this._radiusAxis.dataToRadius(data[0], clamp), this._angleAxis.dataToAngle(data[1], clamp)]);\n },\n\n /**\n * Convert a (x, y) point to data\n * @param {Array.} point\n * @param {boolean} [clamp=false]\n * @return {Array.}\n */\n pointToData: function (point, clamp) {\n var coord = this.pointToCoord(point);\n return [this._radiusAxis.radiusToData(coord[0], clamp), this._angleAxis.angleToData(coord[1], clamp)];\n },\n\n /**\n * Convert a (x, y) point to (radius, angle) coord\n * @param {Array.} point\n * @return {Array.}\n */\n pointToCoord: function (point) {\n var dx = point[0] - this.cx;\n var dy = point[1] - this.cy;\n var angleAxis = this.getAngleAxis();\n var extent = angleAxis.getExtent();\n var minAngle = Math.min(extent[0], extent[1]);\n var maxAngle = Math.max(extent[0], extent[1]); // Fix fixed extent in polarCreator\n // FIXME\n\n angleAxis.inverse ? minAngle = maxAngle - 360 : maxAngle = minAngle + 360;\n var radius = Math.sqrt(dx * dx + dy * dy);\n dx /= radius;\n dy /= radius;\n var radian = Math.atan2(-dy, dx) / Math.PI * 180; // move to angleExtent\n\n var dir = radian < minAngle ? 1 : -1;\n\n while (radian < minAngle || radian > maxAngle) {\n radian += dir * 360;\n }\n\n return [radius, radian];\n },\n\n /**\n * Convert a (radius, angle) coord to (x, y) point\n * @param {Array.} coord\n * @return {Array.}\n */\n coordToPoint: function (coord) {\n var radius = coord[0];\n var radian = coord[1] / 180 * Math.PI;\n var x = Math.cos(radian) * radius + this.cx; // Inverse the y\n\n var y = -Math.sin(radian) * radius + this.cy;\n return [x, y];\n },\n\n /**\n * Get ring area of cartesian.\n * Area will have a contain function to determine if a point is in the coordinate system.\n * @return {Ring}\n */\n getArea: function () {\n var angleAxis = this.getAngleAxis();\n var radiusAxis = this.getRadiusAxis();\n var radiusExtent = radiusAxis.getExtent().slice();\n radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse();\n var angleExtent = angleAxis.getExtent();\n var RADIAN = Math.PI / 180;\n return {\n cx: this.cx,\n cy: this.cy,\n r0: radiusExtent[0],\n r: radiusExtent[1],\n startAngle: -angleExtent[0] * RADIAN,\n endAngle: -angleExtent[1] * RADIAN,\n clockwise: angleAxis.inverse,\n contain: function (x, y) {\n // It's a ring shape.\n // Start angle and end angle don't matter\n var dx = x - this.cx;\n var dy = y - this.cy;\n var d2 = dx * dx + dy * dy;\n var r = this.r;\n var r0 = this.r0;\n return d2 <= r * r && d2 >= r0 * r0;\n }\n };\n }\n};\nvar _default = Polar;\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 Gradient = require(\"zrender/lib/graphic/Gradient\");\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*/\nvar _default = {\n createOnAllSeries: true,\n performRawSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n var colorAccessPath = (seriesModel.visualColorAccessPath || 'itemStyle.color').split('.'); // Set in itemStyle\n\n var color = seriesModel.get(colorAccessPath);\n var colorCallback = isFunction(color) && !(color instanceof Gradient) ? color : null; // Default color\n\n if (!color || colorCallback) {\n color = seriesModel.getColorFromPalette( // TODO series count changed.\n seriesModel.name, null, ecModel.getSeriesCount());\n }\n\n data.setVisual('color', color);\n var borderColorAccessPath = (seriesModel.visualBorderColorAccessPath || 'itemStyle.borderColor').split('.');\n var borderColor = seriesModel.get(borderColorAccessPath);\n data.setVisual('borderColor', borderColor); // Only visible series has each data be visual encoded\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n if (colorCallback) {\n data.each(function (idx) {\n data.setItemVisual(idx, 'color', colorCallback(seriesModel.getDataParams(idx)));\n });\n } // itemStyle in each data item\n\n\n var dataEach = function (data, idx) {\n var itemModel = data.getItemModel(idx);\n var color = itemModel.get(colorAccessPath, true);\n var borderColor = itemModel.get(borderColorAccessPath, true);\n\n if (color != null) {\n data.setItemVisual(idx, 'color', color);\n }\n\n if (borderColor != null) {\n data.setItemVisual(idx, 'borderColor', borderColor);\n }\n };\n\n return {\n dataEach: data.hasItemOption ? dataEach : 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\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar samplers = {\n average: function (frame) {\n var sum = 0;\n var count = 0;\n\n for (var i = 0; i < frame.length; i++) {\n if (!isNaN(frame[i])) {\n sum += frame[i];\n count++;\n }\n } // Return NaN if count is 0\n\n\n return count === 0 ? NaN : sum / count;\n },\n sum: function (frame) {\n var sum = 0;\n\n for (var i = 0; i < frame.length; i++) {\n // Ignore NaN\n sum += frame[i] || 0;\n }\n\n return sum;\n },\n max: function (frame) {\n var max = -Infinity;\n\n for (var i = 0; i < frame.length; i++) {\n frame[i] > max && (max = frame[i]);\n } // NaN will cause illegal axis extent.\n\n\n return isFinite(max) ? max : NaN;\n },\n min: function (frame) {\n var min = Infinity;\n\n for (var i = 0; i < frame.length; i++) {\n frame[i] < min && (min = frame[i]);\n } // NaN will cause illegal axis extent.\n\n\n return isFinite(min) ? min : NaN;\n },\n // TODO\n // Median\n nearest: function (frame) {\n return frame[0];\n }\n};\n\nvar indexSampler = function (frame, value) {\n return Math.round(frame.length / 2);\n};\n\nfunction _default(seriesType) {\n return {\n seriesType: seriesType,\n modifyOutputEnd: true,\n reset: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var sampling = seriesModel.get('sampling');\n var coordSys = seriesModel.coordinateSystem; // Only cartesian2d support down sampling\n\n if (coordSys.type === 'cartesian2d' && sampling) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var extent = baseAxis.getExtent(); // Coordinste system has been resized\n\n var size = Math.abs(extent[1] - extent[0]);\n var rate = Math.round(data.count() / size);\n\n if (rate > 1) {\n var sampler;\n\n if (typeof sampling === 'string') {\n sampler = samplers[sampling];\n } else if (typeof sampling === 'function') {\n sampler = sampling;\n }\n\n if (sampler) {\n // Only support sample the first dim mapped from value axis.\n seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\n }\n }\n }\n }\n };\n}\n\nmodule.exports = _default;","\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 graphicUtil = 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 PATH_COLOR = ['textStyle', 'color'];\nvar _default = {\n /**\n * Get color property or get color from option.textStyle.color\n * @param {boolean} [isEmphasis]\n * @return {string}\n */\n getTextColor: function (isEmphasis) {\n var ecModel = this.ecModel;\n return this.getShallow('color') || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null);\n },\n\n /**\n * Create font string from fontStyle, fontWeight, fontSize, fontFamily\n * @return {string}\n */\n getFont: function () {\n return graphicUtil.getFont({\n fontStyle: this.getShallow('fontStyle'),\n fontWeight: this.getShallow('fontWeight'),\n fontSize: this.getShallow('fontSize'),\n fontFamily: this.getShallow('fontFamily')\n }, this.ecModel);\n },\n getTextRect: function (text) {\n return textContain.getBoundingRect(text, this.getFont(), this.getShallow('align'), this.getShallow('verticalAlign') || this.getShallow('baseline'), this.getShallow('padding'), this.getShallow('lineHeight'), this.getShallow('rich'), this.getShallow('truncateText'));\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 SeriesModel = require(\"../../model/Series\");\n\nvar _whiskerBoxCommon = require(\"../helper/whiskerBoxCommon\");\n\nvar seriesModelMixin = _whiskerBoxCommon.seriesModelMixin;\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 BoxplotSeries = SeriesModel.extend({\n type: 'series.boxplot',\n dependencies: ['xAxis', 'yAxis', 'grid'],\n // TODO\n // box width represents group size, so dimension should have 'size'.\n\n /**\n * @see \n * The meanings of 'min' and 'max' depend on user,\n * and echarts do not need to know it.\n * @readOnly\n */\n defaultValueDimensions: [{\n name: 'min',\n defaultTooltip: true\n }, {\n name: 'Q1',\n defaultTooltip: true\n }, {\n name: 'median',\n defaultTooltip: true\n }, {\n name: 'Q3',\n defaultTooltip: true\n }, {\n name: 'max',\n defaultTooltip: true\n }],\n\n /**\n * @type {Array.}\n * @readOnly\n */\n dimensions: null,\n\n /**\n * @override\n */\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n layout: null,\n // 'horizontal' or 'vertical'\n boxWidth: [7, 50],\n // [min, max] can be percent of band width.\n itemStyle: {\n color: '#fff',\n borderWidth: 1\n },\n emphasis: {\n itemStyle: {\n borderWidth: 2,\n shadowBlur: 5,\n shadowOffsetX: 2,\n shadowOffsetY: 2,\n shadowColor: 'rgba(0,0,0,0.4)'\n }\n },\n animationEasing: 'elasticOut',\n animationDuration: 800\n }\n});\nzrUtil.mixin(BoxplotSeries, seriesModelMixin, true);\nvar _default = BoxplotSeries;\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 featureManager = require(\"../featureManager\");\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 brushLang = lang.toolbox.brush;\n\nfunction Brush(model, ecModel, api) {\n this.model = model;\n this.ecModel = ecModel;\n this.api = api;\n /**\n * @private\n * @type {string}\n */\n\n this._brushType;\n /**\n * @private\n * @type {string}\n */\n\n this._brushMode;\n}\n\nBrush.defaultOption = {\n show: true,\n type: ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear'],\n icon: {\n /* eslint-disable */\n rect: 'M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13',\n // jshint ignore:line\n polygon: 'M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2',\n // jshint ignore:line\n lineX: 'M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4',\n // jshint ignore:line\n lineY: 'M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4',\n // jshint ignore:line\n keep: 'M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z',\n // jshint ignore:line\n clear: 'M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2' // jshint ignore:line\n\n /* eslint-enable */\n\n },\n // `rect`, `polygon`, `lineX`, `lineY`, `keep`, `clear`\n title: zrUtil.clone(brushLang.title)\n};\nvar proto = Brush.prototype; // proto.updateLayout = function (featureModel, ecModel, api) {\n\n/* eslint-disable */\n\nproto.render =\n/* eslint-enable */\nproto.updateView = function (featureModel, ecModel, api) {\n var brushType;\n var brushMode;\n var isBrushed;\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel) {\n brushType = brushModel.brushType;\n brushMode = brushModel.brushOption.brushMode || 'single';\n isBrushed |= brushModel.areas.length;\n });\n this._brushType = brushType;\n this._brushMode = brushMode;\n zrUtil.each(featureModel.get('type', true), function (type) {\n featureModel.setIconStatus(type, (type === 'keep' ? brushMode === 'multiple' : type === 'clear' ? isBrushed : type === brushType) ? 'emphasis' : 'normal');\n });\n};\n\nproto.getIcons = function () {\n var model = this.model;\n var availableIcons = model.get('icon', true);\n var icons = {};\n zrUtil.each(model.get('type', true), function (type) {\n if (availableIcons[type]) {\n icons[type] = availableIcons[type];\n }\n });\n return icons;\n};\n\nproto.onclick = function (ecModel, api, type) {\n var brushType = this._brushType;\n var brushMode = this._brushMode;\n\n if (type === 'clear') {\n // Trigger parallel action firstly\n api.dispatchAction({\n type: 'axisAreaSelect',\n intervals: []\n });\n api.dispatchAction({\n type: 'brush',\n command: 'clear',\n // Clear all areas of all brush components.\n areas: []\n });\n } else {\n api.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'brush',\n brushOption: {\n brushType: type === 'keep' ? brushType : brushType === type ? false : type,\n brushMode: type === 'keep' ? brushMode === 'multiple' ? 'single' : 'multiple' : brushMode\n }\n });\n }\n};\n\nfeatureManager.register('brush', Brush);\nvar _default = Brush;\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;","\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 _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\n\nvar _simpleLayoutHelper = require(\"./simpleLayoutHelper\");\n\nvar simpleLayout = _simpleLayoutHelper.simpleLayout;\nvar simpleLayoutEdge = _simpleLayoutHelper.simpleLayoutEdge;\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, api) {\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var layout = seriesModel.get('layout');\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n var data = seriesModel.getData();\n var dimensions = [];\n each(coordSys.dimensions, function (coordDim) {\n dimensions = dimensions.concat(data.mapDimension(coordDim, true));\n });\n\n for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\n var value = [];\n var hasValue = false;\n\n for (var i = 0; i < dimensions.length; i++) {\n var val = data.get(dimensions[i], dataIndex);\n\n if (!isNaN(val)) {\n hasValue = true;\n }\n\n value.push(val);\n }\n\n if (hasValue) {\n data.setItemLayout(dataIndex, coordSys.dataToPoint(value));\n } else {\n // Also {Array.}, not undefined to avoid if...else... statement\n data.setItemLayout(dataIndex, [NaN, NaN]);\n }\n }\n\n simpleLayoutEdge(data.graph, seriesModel);\n } else if (!layout || layout === 'none') {\n simpleLayout(seriesModel);\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 lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\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 magicTypeLang = lang.toolbox.magicType;\nvar INNER_STACK_KEYWORD = '__ec_magicType_stack__';\n\nfunction MagicType(model) {\n this.model = model;\n}\n\nMagicType.defaultOption = {\n show: true,\n type: [],\n // Icon group\n icon: {\n /* eslint-disable */\n line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4',\n bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7',\n stack: 'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z' // jshint ignore:line\n\n /* eslint-enable */\n\n },\n // `line`, `bar`, `stack`, `tiled`\n title: zrUtil.clone(magicTypeLang.title),\n option: {},\n seriesIndex: {}\n};\nvar proto = MagicType.prototype;\n\nproto.getIcons = function () {\n var model = this.model;\n var availableIcons = model.get('icon');\n var icons = {};\n zrUtil.each(model.get('type'), function (type) {\n if (availableIcons[type]) {\n icons[type] = availableIcons[type];\n }\n });\n return icons;\n};\n\nvar seriesOptGenreator = {\n 'line': function (seriesType, seriesId, seriesModel, model) {\n if (seriesType === 'bar') {\n return zrUtil.merge({\n id: seriesId,\n type: 'line',\n // Preserve data related option\n data: seriesModel.get('data'),\n stack: seriesModel.get('stack'),\n markPoint: seriesModel.get('markPoint'),\n markLine: seriesModel.get('markLine')\n }, model.get('option.line') || {}, true);\n }\n },\n 'bar': function (seriesType, seriesId, seriesModel, model) {\n if (seriesType === 'line') {\n return zrUtil.merge({\n id: seriesId,\n type: 'bar',\n // Preserve data related option\n data: seriesModel.get('data'),\n stack: seriesModel.get('stack'),\n markPoint: seriesModel.get('markPoint'),\n markLine: seriesModel.get('markLine')\n }, model.get('option.bar') || {}, true);\n }\n },\n 'stack': function (seriesType, seriesId, seriesModel, model) {\n var isStack = seriesModel.get('stack') === INNER_STACK_KEYWORD;\n\n if (seriesType === 'line' || seriesType === 'bar') {\n model.setIconStatus('stack', isStack ? 'normal' : 'emphasis');\n return zrUtil.merge({\n id: seriesId,\n stack: isStack ? '' : INNER_STACK_KEYWORD\n }, model.get('option.stack') || {}, true);\n }\n }\n};\nvar radioTypes = [['line', 'bar'], ['stack']];\n\nproto.onclick = function (ecModel, api, type) {\n var model = this.model;\n var seriesIndex = model.get('seriesIndex.' + type); // Not supported magicType\n\n if (!seriesOptGenreator[type]) {\n return;\n }\n\n var newOption = {\n series: []\n };\n\n var generateNewSeriesTypes = function (seriesModel) {\n var seriesType = seriesModel.subType;\n var seriesId = seriesModel.id;\n var newSeriesOpt = seriesOptGenreator[type](seriesType, seriesId, seriesModel, model);\n\n if (newSeriesOpt) {\n // PENDING If merge original option?\n zrUtil.defaults(newSeriesOpt, seriesModel.option);\n newOption.series.push(newSeriesOpt);\n } // Modify boundaryGap\n\n\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) {\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n if (categoryAxis) {\n var axisDim = categoryAxis.dim;\n var axisType = axisDim + 'Axis';\n var axisModel = ecModel.queryComponents({\n mainType: axisType,\n index: seriesModel.get(name + 'Index'),\n id: seriesModel.get(name + 'Id')\n })[0];\n var axisIndex = axisModel.componentIndex;\n newOption[axisType] = newOption[axisType] || [];\n\n for (var i = 0; i <= axisIndex; i++) {\n newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {};\n }\n\n newOption[axisType][axisIndex].boundaryGap = type === 'bar';\n }\n }\n };\n\n zrUtil.each(radioTypes, function (radio) {\n if (zrUtil.indexOf(radio, type) >= 0) {\n zrUtil.each(radio, function (item) {\n model.setIconStatus(item, 'normal');\n });\n }\n });\n model.setIconStatus(type, 'emphasis');\n ecModel.eachComponent({\n mainType: 'series',\n query: seriesIndex == null ? null : {\n seriesIndex: seriesIndex\n }\n }, generateNewSeriesTypes);\n var newTitle; // Change title of stack\n\n if (type === 'stack') {\n var isStack = newOption.series && newOption.series[0] && newOption.series[0].stack === INNER_STACK_KEYWORD;\n newTitle = isStack ? zrUtil.merge({\n stack: magicTypeLang.title.tiled\n }, magicTypeLang.title) : zrUtil.clone(magicTypeLang.title);\n }\n\n api.dispatchAction({\n type: 'changeMagicType',\n currentType: type,\n newOption: newOption,\n newTitle: newTitle,\n featureName: 'magicType'\n });\n};\n\necharts.registerAction({\n type: 'changeMagicType',\n event: 'magicTypeChanged',\n update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n ecModel.mergeOption(payload.newOption);\n});\nfeatureManager.register('magicType', MagicType);\nvar _default = MagicType;\nmodule.exports = _default;","var env = require(\"../core/env\");\n\nvar urn = 'urn:schemas-microsoft-com:vml';\nvar win = typeof window === 'undefined' ? null : window;\nvar vmlInited = false;\nvar doc = win && win.document;\n\nfunction createNode(tagName) {\n return doCreateNode(tagName);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nvar doCreateNode;\n\nif (doc && !env.canvasSupported) {\n try {\n !doc.namespaces.zrvml && doc.namespaces.add('zrvml', urn);\n\n doCreateNode = function (tagName) {\n return doc.createElement('');\n };\n } catch (e) {\n doCreateNode = function (tagName) {\n return doc.createElement('<' + tagName + ' xmlns=\"' + urn + '\" class=\"zrvml\">');\n };\n }\n} // From raphael\n\n\nfunction initVML() {\n if (vmlInited || !doc) {\n return;\n }\n\n vmlInited = true;\n var styleSheets = doc.styleSheets;\n\n if (styleSheets.length < 31) {\n doc.createStyleSheet().addRule('.zrvml', 'behavior:url(#default#VML)');\n } else {\n // http://msdn.microsoft.com/en-us/library/ms531194%28VS.85%29.aspx\n styleSheets[0].addRule('.zrvml', 'behavior:url(#default#VML)');\n }\n}\n\nexports.doc = doc;\nexports.createNode = createNode;\nexports.initVML = initVML;","\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 createGraphFromNodeEdge = require(\"../helper/createGraphFromNodeEdge\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar Model = require(\"../../model/Model\");\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\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 SankeySeries = SeriesModel.extend({\n type: 'series.sankey',\n layoutInfo: null,\n levelModels: null,\n\n /**\n * Init a graph data structure from data in option series\n *\n * @param {Object} option the object used to config echarts view\n * @return {module:echarts/data/List} storage initial data\n */\n getInitialData: function (option, ecModel) {\n var links = option.edges || option.links;\n var nodes = option.data || option.nodes;\n var levels = option.levels;\n var levelModels = this.levelModels = {};\n\n for (var i = 0; i < levels.length; i++) {\n if (levels[i].depth != null && levels[i].depth >= 0) {\n levelModels[levels[i].depth] = new Model(levels[i], this, ecModel);\n } else {}\n }\n\n if (nodes && links) {\n var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink);\n return graph.data;\n }\n\n function beforeLink(nodeData, edgeData) {\n nodeData.wrapMethod('getItemModel', function (model, idx) {\n model.customizeGetParent(function (path) {\n var parentModel = this.parentModel;\n var nodeDepth = parentModel.getData().getItemLayout(idx).depth;\n var levelModel = parentModel.levelModels[nodeDepth];\n return levelModel || this.parentModel;\n });\n return model;\n });\n edgeData.wrapMethod('getItemModel', function (model, idx) {\n model.customizeGetParent(function (path) {\n var parentModel = this.parentModel;\n var edge = parentModel.getGraph().getEdgeByIndex(idx);\n var depth = edge.node1.getLayout().depth;\n var levelModel = parentModel.levelModels[depth];\n return levelModel || this.parentModel;\n });\n return model;\n });\n }\n },\n setNodePosition: function (dataIndex, localPosition) {\n var dataItem = this.option.data[dataIndex];\n dataItem.localX = localPosition[0];\n dataItem.localY = localPosition[1];\n },\n\n /**\n * Return the graphic data structure\n *\n * @return {module:echarts/data/Graph} graphic data structure\n */\n getGraph: function () {\n return this.getData().graph;\n },\n\n /**\n * Get edge data of graphic data structure\n *\n * @return {module:echarts/data/List} data structure of list\n */\n getEdgeData: function () {\n return this.getGraph().edgeData;\n },\n\n /**\n * @override\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType) {\n // dataType === 'node' or empty do not show tooltip by default\n if (dataType === 'edge') {\n var params = this.getDataParams(dataIndex, dataType);\n var rawDataOpt = params.data;\n var html = rawDataOpt.source + ' -- ' + rawDataOpt.target;\n\n if (params.value) {\n html += ' : ' + params.value;\n }\n\n return encodeHTML(html);\n } else if (dataType === 'node') {\n var node = this.getGraph().getNodeByIndex(dataIndex);\n var value = node.getLayout().value;\n var name = this.getDataParams(dataIndex, dataType).data.name;\n\n if (value) {\n var html = name + ' : ' + value;\n }\n\n return encodeHTML(html);\n }\n\n return SankeySeries.superCall(this, 'formatTooltip', dataIndex, multipleSeries);\n },\n optionUpdated: function () {\n var option = this.option;\n\n if (option.focusNodeAdjacency === true) {\n option.focusNodeAdjacency = 'allEdges';\n }\n },\n // Override Series.getDataParams()\n getDataParams: function (dataIndex, dataType) {\n var params = SankeySeries.superCall(this, 'getDataParams', dataIndex, dataType);\n\n if (params.value == null && dataType === 'node') {\n var node = this.getGraph().getNodeByIndex(dataIndex);\n var nodeValue = node.getLayout().value;\n params.value = nodeValue;\n }\n\n return params;\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'view',\n layout: null,\n // The position of the whole view\n left: '5%',\n top: '5%',\n right: '20%',\n bottom: '5%',\n // Value can be 'vertical'\n orient: 'horizontal',\n // The dx of the node\n nodeWidth: 20,\n // The vertical distance between two nodes\n nodeGap: 8,\n // Control if the node can move or not\n draggable: true,\n // Value can be 'inEdges', 'outEdges', 'allEdges', true (the same as 'allEdges').\n focusNodeAdjacency: false,\n // The number of iterations to change the position of the node\n layoutIterations: 32,\n label: {\n show: true,\n position: 'right',\n color: '#000',\n fontSize: 12\n },\n levels: [],\n // Value can be 'left' or 'right'\n nodeAlign: 'justify',\n itemStyle: {\n borderWidth: 1,\n borderColor: '#333'\n },\n lineStyle: {\n color: '#314656',\n opacity: 0.2,\n curveness: 0.5\n },\n emphasis: {\n label: {\n show: true\n },\n lineStyle: {\n opacity: 0.5\n }\n },\n animationEasing: 'linear',\n animationDuration: 1000\n }\n});\nvar _default = SankeySeries;\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(\"../coord/geo/GeoModel\");\n\nrequire(\"../coord/geo/geoCreator\");\n\nrequire(\"./geo/GeoView\");\n\nrequire(\"../action/geoRoam\");\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 makeAction(method, actionInfo) {\n actionInfo.update = 'updateView';\n echarts.registerAction(actionInfo, function (payload, ecModel) {\n var selected = {};\n ecModel.eachComponent({\n mainType: 'geo',\n query: payload\n }, function (geoModel) {\n geoModel[method](payload.name);\n var geo = geoModel.coordinateSystem;\n zrUtil.each(geo.regions, function (region) {\n selected[region.name] = geoModel.isSelected(region.name) || false;\n });\n });\n return {\n selected: selected,\n name: payload.name\n };\n });\n}\n\nmakeAction('toggleSelected', {\n type: 'geoToggleSelect',\n event: 'geoselectchanged'\n});\nmakeAction('select', {\n type: 'geoSelect',\n event: 'geoselected'\n});\nmakeAction('unSelect', {\n type: 'geoUnSelect',\n event: 'geounselected'\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 layout = require(\"../../util/layout\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// (24*60*60*1000)\nvar PROXIMATE_ONE_DAY = 86400000;\n/**\n * Calendar\n *\n * @constructor\n *\n * @param {Object} calendarModel calendarModel\n * @param {Object} ecModel ecModel\n * @param {Object} api api\n */\n\nfunction Calendar(calendarModel, ecModel, api) {\n this._model = calendarModel;\n}\n\nCalendar.prototype = {\n constructor: Calendar,\n type: 'calendar',\n dimensions: ['time', 'value'],\n // Required in createListFromData\n getDimensionsInfo: function () {\n return [{\n name: 'time',\n type: 'time'\n }, 'value'];\n },\n getRangeInfo: function () {\n return this._rangeInfo;\n },\n getModel: function () {\n return this._model;\n },\n getRect: function () {\n return this._rect;\n },\n getCellWidth: function () {\n return this._sw;\n },\n getCellHeight: function () {\n return this._sh;\n },\n getOrient: function () {\n return this._orient;\n },\n\n /**\n * getFirstDayOfWeek\n *\n * @example\n * 0 : start at Sunday\n * 1 : start at Monday\n *\n * @return {number}\n */\n getFirstDayOfWeek: function () {\n return this._firstDayOfWeek;\n },\n\n /**\n * get date info\n *\n * @param {string|number} date date\n * @return {Object}\n * {\n * y: string, local full year, eg., '1940',\n * m: string, local month, from '01' ot '12',\n * d: string, local date, from '01' to '31' (if exists),\n * day: It is not date.getDay(). It is the location of the cell in a week, from 0 to 6,\n * time: timestamp,\n * formatedDate: string, yyyy-MM-dd,\n * date: original date object.\n * }\n */\n getDateInfo: function (date) {\n date = numberUtil.parseDate(date);\n var y = date.getFullYear();\n var m = date.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n var d = date.getDate();\n d = d < 10 ? '0' + d : d;\n var day = date.getDay();\n day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7);\n return {\n y: y,\n m: m,\n d: d,\n day: day,\n time: date.getTime(),\n formatedDate: y + '-' + m + '-' + d,\n date: date\n };\n },\n getNextNDay: function (date, n) {\n n = n || 0;\n\n if (n === 0) {\n return this.getDateInfo(date);\n }\n\n date = new Date(this.getDateInfo(date).time);\n date.setDate(date.getDate() + n);\n return this.getDateInfo(date);\n },\n update: function (ecModel, api) {\n this._firstDayOfWeek = +this._model.getModel('dayLabel').get('firstDay');\n this._orient = this._model.get('orient');\n this._lineWidth = this._model.getModel('itemStyle').getItemStyle().lineWidth || 0;\n this._rangeInfo = this._getRangeInfo(this._initRangeOption());\n var weeks = this._rangeInfo.weeks || 1;\n var whNames = ['width', 'height'];\n\n var cellSize = this._model.get('cellSize').slice();\n\n var layoutParams = this._model.getBoxLayoutParams();\n\n var cellNumbers = this._orient === 'horizontal' ? [weeks, 7] : [7, weeks];\n zrUtil.each([0, 1], function (idx) {\n if (cellSizeSpecified(cellSize, idx)) {\n layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx];\n }\n });\n var whGlobal = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var calendarRect = this._rect = layout.getLayoutRect(layoutParams, whGlobal);\n zrUtil.each([0, 1], function (idx) {\n if (!cellSizeSpecified(cellSize, idx)) {\n cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx];\n }\n });\n\n function cellSizeSpecified(cellSize, idx) {\n return cellSize[idx] != null && cellSize[idx] !== 'auto';\n }\n\n this._sw = cellSize[0];\n this._sh = cellSize[1];\n },\n\n /**\n * Convert a time data(time, value) item to (x, y) point.\n *\n * @override\n * @param {Array|number} data data\n * @param {boolean} [clamp=true] out of range\n * @return {Array} point\n */\n dataToPoint: function (data, clamp) {\n zrUtil.isArray(data) && (data = data[0]);\n clamp == null && (clamp = true);\n var dayInfo = this.getDateInfo(data);\n var range = this._rangeInfo;\n var date = dayInfo.formatedDate; // if not in range return [NaN, NaN]\n\n if (clamp && !(dayInfo.time >= range.start.time && dayInfo.time < range.end.time + PROXIMATE_ONE_DAY)) {\n return [NaN, NaN];\n }\n\n var week = dayInfo.day;\n\n var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek;\n\n if (this._orient === 'vertical') {\n return [this._rect.x + week * this._sw + this._sw / 2, this._rect.y + nthWeek * this._sh + this._sh / 2];\n }\n\n return [this._rect.x + nthWeek * this._sw + this._sw / 2, this._rect.y + week * this._sh + this._sh / 2];\n },\n\n /**\n * Convert a (x, y) point to time data\n *\n * @override\n * @param {string} point point\n * @return {string} data\n */\n pointToData: function (point) {\n var date = this.pointToDate(point);\n return date && date.time;\n },\n\n /**\n * Convert a time date item to (x, y) four point.\n *\n * @param {Array} data date[0] is date\n * @param {boolean} [clamp=true] out of range\n * @return {Object} point\n */\n dataToRect: function (data, clamp) {\n var point = this.dataToPoint(data, clamp);\n return {\n contentShape: {\n x: point[0] - (this._sw - this._lineWidth) / 2,\n y: point[1] - (this._sh - this._lineWidth) / 2,\n width: this._sw - this._lineWidth,\n height: this._sh - this._lineWidth\n },\n center: point,\n tl: [point[0] - this._sw / 2, point[1] - this._sh / 2],\n tr: [point[0] + this._sw / 2, point[1] - this._sh / 2],\n br: [point[0] + this._sw / 2, point[1] + this._sh / 2],\n bl: [point[0] - this._sw / 2, point[1] + this._sh / 2]\n };\n },\n\n /**\n * Convert a (x, y) point to time date\n *\n * @param {Array} point point\n * @return {Object} date\n */\n pointToDate: function (point) {\n var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1;\n var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1;\n var range = this._rangeInfo.range;\n\n if (this._orient === 'vertical') {\n return this._getDateByWeeksAndDay(nthY, nthX - 1, range);\n }\n\n return this._getDateByWeeksAndDay(nthX, nthY - 1, range);\n },\n\n /**\n * @inheritDoc\n */\n convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n /**\n * @inheritDoc\n */\n convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),\n\n /**\n * initRange\n *\n * @private\n * @return {Array} [start, end]\n */\n _initRangeOption: function () {\n var range = this._model.get('range');\n\n var rg = range;\n\n if (zrUtil.isArray(rg) && rg.length === 1) {\n rg = rg[0];\n }\n\n if (/^\\d{4}$/.test(rg)) {\n range = [rg + '-01-01', rg + '-12-31'];\n }\n\n if (/^\\d{4}[\\/|-]\\d{1,2}$/.test(rg)) {\n var start = this.getDateInfo(rg);\n var firstDay = start.date;\n firstDay.setMonth(firstDay.getMonth() + 1);\n var end = this.getNextNDay(firstDay, -1);\n range = [start.formatedDate, end.formatedDate];\n }\n\n if (/^\\d{4}[\\/|-]\\d{1,2}[\\/|-]\\d{1,2}$/.test(rg)) {\n range = [rg, rg];\n }\n\n var tmp = this._getRangeInfo(range);\n\n if (tmp.start.time > tmp.end.time) {\n range.reverse();\n }\n\n return range;\n },\n\n /**\n * range info\n *\n * @private\n * @param {Array} range range ['2017-01-01', '2017-07-08']\n * If range[0] > range[1], they will not be reversed.\n * @return {Object} obj\n */\n _getRangeInfo: function (range) {\n range = [this.getDateInfo(range[0]), this.getDateInfo(range[1])];\n var reversed;\n\n if (range[0].time > range[1].time) {\n reversed = true;\n range.reverse();\n }\n\n var allDay = Math.floor(range[1].time / PROXIMATE_ONE_DAY) - Math.floor(range[0].time / PROXIMATE_ONE_DAY) + 1; // Consider case1 (#11677 #10430):\n // Set the system timezone as \"UK\", set the range to `['2016-07-01', '2016-12-31']`\n // Consider case2:\n // Firstly set system timezone as \"Time Zone: America/Toronto\",\n // ```\n // var first = new Date(1478412000000 - 3600 * 1000 * 2.5);\n // var second = new Date(1478412000000);\n // var allDays = Math.floor(second / ONE_DAY) - Math.floor(first / ONE_DAY) + 1;\n // ```\n // will get wrong result because of DST. So we should fix it.\n\n var date = new Date(range[0].time);\n var startDateNum = date.getDate();\n var endDateNum = range[1].date.getDate();\n date.setDate(startDateNum + allDay - 1); // The bias can not over a month, so just compare date.\n\n var dateNum = date.getDate();\n\n if (dateNum !== endDateNum) {\n var sign = date.getTime() - range[1].time > 0 ? 1 : -1;\n\n while ((dateNum = date.getDate()) !== endDateNum && (date.getTime() - range[1].time) * sign > 0) {\n allDay -= sign;\n date.setDate(dateNum - sign);\n }\n }\n\n var weeks = Math.floor((allDay + range[0].day + 6) / 7);\n var nthWeek = reversed ? -weeks + 1 : weeks - 1;\n reversed && range.reverse();\n return {\n range: [range[0].formatedDate, range[1].formatedDate],\n start: range[0],\n end: range[1],\n allDay: allDay,\n weeks: weeks,\n // From 0.\n nthWeek: nthWeek,\n fweek: range[0].day,\n lweek: range[1].day\n };\n },\n\n /**\n * get date by nthWeeks and week day in range\n *\n * @private\n * @param {number} nthWeek the week\n * @param {number} day the week day\n * @param {Array} range [d1, d2]\n * @return {Object}\n */\n _getDateByWeeksAndDay: function (nthWeek, day, range) {\n var rangeInfo = this._getRangeInfo(range);\n\n if (nthWeek > rangeInfo.weeks || nthWeek === 0 && day < rangeInfo.fweek || nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) {\n return false;\n }\n\n var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day;\n var date = new Date(rangeInfo.start.time);\n date.setDate(rangeInfo.start.d + nthDay);\n return this.getDateInfo(date);\n }\n};\nCalendar.dimensions = Calendar.prototype.dimensions;\nCalendar.getDimensionsInfo = Calendar.prototype.getDimensionsInfo;\n\nCalendar.create = function (ecModel, api) {\n var calendarList = [];\n ecModel.eachComponent('calendar', function (calendarModel) {\n var calendar = new Calendar(calendarModel, ecModel, api);\n calendarList.push(calendar);\n calendarModel.coordinateSystem = calendar;\n });\n ecModel.eachSeries(function (calendarSeries) {\n if (calendarSeries.get('coordinateSystem') === 'calendar') {\n // Inject coordinate system\n calendarSeries.coordinateSystem = calendarList[calendarSeries.get('calendarIndex') || 0];\n }\n });\n return calendarList;\n};\n\nfunction doConvert(methodName, ecModel, finder, value) {\n var calendarModel = finder.calendarModel;\n var seriesModel = finder.seriesModel;\n var coordSys = calendarModel ? calendarModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem : null;\n return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nCoordinateSystem.register('calendar', Calendar);\nvar _default = Calendar;\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 createHashMap = _util.createHashMap;\nvar each = _util.each;\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// (1) [Caution]: the logic is correct based on the premises:\n// data processing stage is blocked in stream.\n// See \n// (2) Only register once when import repeatly.\n// Should be executed after series filtered and before stack calculation.\nfunction _default(ecModel) {\n var stackInfoMap = createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var stack = seriesModel.get('stack'); // Compatibal: when `stack` is set as '', do not stack.\n\n if (stack) {\n var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\n var data = seriesModel.getData();\n var stackInfo = {\n // Used for calculate axis extent automatically.\n stackResultDimension: data.getCalculationInfo('stackResultDimension'),\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\n stackedDimension: data.getCalculationInfo('stackedDimension'),\n stackedByDimension: data.getCalculationInfo('stackedByDimension'),\n isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\n data: data,\n seriesModel: seriesModel\n }; // If stacked on axis that do not support data stack.\n\n if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\n return;\n }\n\n stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\n stackInfoList.push(stackInfo);\n }\n });\n stackInfoMap.each(calculateStack);\n}\n\nfunction calculateStack(stackInfoList) {\n each(stackInfoList, function (targetStackInfo, idxInStack) {\n var resultVal = [];\n var resultNaN = [NaN, NaN];\n var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\n var targetData = targetStackInfo.data;\n var isStackedByIndex = targetStackInfo.isStackedByIndex; // Should not write on raw data, because stack series model list changes\n // depending on legend selection.\n\n var newData = targetData.map(dims, function (v0, v1, dataIndex) {\n var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex); // Consider `connectNulls` of line area, if value is NaN, stackedOver\n // should also be NaN, to draw a appropriate belt area.\n\n if (isNaN(sum)) {\n return resultNaN;\n }\n\n var byValue;\n var stackedDataRawIndex;\n\n if (isStackedByIndex) {\n stackedDataRawIndex = targetData.getRawIndex(dataIndex);\n } else {\n byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\n } // If stackOver is NaN, chart view will render point on value start.\n\n\n var stackedOver = NaN;\n\n for (var j = idxInStack - 1; j >= 0; j--) {\n var stackInfo = stackInfoList[j]; // Has been optimized by inverted indices on `stackedByDimension`.\n\n if (!isStackedByIndex) {\n stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\n }\n\n if (stackedDataRawIndex >= 0) {\n var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex); // Considering positive stack, negative stack and empty data\n\n if (sum >= 0 && val > 0 || // Positive stack\n sum <= 0 && val < 0 // Negative stack\n ) {\n sum += val;\n stackedOver = val;\n break;\n }\n }\n }\n\n resultVal[0] = sum;\n resultVal[1] = stackedOver;\n return resultVal;\n });\n targetData.hostModel.setData(newData); // Update for consequent calculation\n\n targetStackInfo.data = newData;\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\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\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*/\n\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n * @property {number} [dataIndex]\n */\necharts.registerAction({\n type: 'focusNodeAdjacency',\n event: 'focusNodeAdjacency',\n update: 'series:focusNodeAdjacency'\n}, function () {});\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n */\n\necharts.registerAction({\n type: 'unfocusNodeAdjacency',\n event: 'unfocusNodeAdjacency',\n update: 'series:unfocusNodeAdjacency'\n}, function () {});","var util = require(\"./core/util\");\n\nvar vec2 = require(\"./core/vector\");\n\nvar Draggable = require(\"./mixin/Draggable\");\n\nvar Eventful = require(\"./mixin/Eventful\");\n\nvar eventTool = require(\"./core/event\");\n\nvar GestureMgr = require(\"./core/GestureMgr\");\n\n/**\n * [The interface between `Handler` and `HandlerProxy`]:\n *\n * The default `HandlerProxy` only support the common standard web environment\n * (e.g., standalone browser, headless browser, embed browser in mobild APP, ...).\n * But `HandlerProxy` can be replaced to support more non-standard environment\n * (e.g., mini app), or to support more feature that the default `HandlerProxy`\n * not provided (like echarts-gl did).\n * So the interface between `Handler` and `HandlerProxy` should be stable. Do not\n * make break changes util inevitable. The interface include the public methods\n * of `Handler` and the events listed in `handlerNames` below, by which `HandlerProxy`\n * drives `Handler`.\n */\n\n/**\n * [Drag outside]:\n *\n * That is, triggering `mousemove` and `mouseup` event when the pointer is out of the\n * zrender area when dragging. That is important for the improvement of the user experience\n * when dragging something near the boundary without being terminated unexpectedly.\n *\n * We originally consider to introduce new events like `pagemovemove` and `pagemouseup`\n * to resolve this issue. But some drawbacks of it is described in\n * https://github.com/ecomfe/zrender/pull/536#issuecomment-560286899\n *\n * Instead, we referenced the specifications:\n * https://www.w3.org/TR/touch-events/#the-touchmove-event\n * https://www.w3.org/TR/2014/WD-DOM-Level-3-Events-20140925/#event-type-mousemove\n * where the the mousemove/touchmove can be continue to fire if the user began a drag\n * operation and the pointer has left the boundary. (for the mouse event, browsers\n * only do it on `document` and when the pointer has left the boundary of the browser.)\n *\n * So the default `HandlerProxy` supports this feature similarly: if it is in the dragging\n * state (see `pointerCapture` in `HandlerProxy`), the `mousemove` and `mouseup` continue\n * to fire until release the pointer. That is implemented by listen to those event on\n * `document`.\n * If we implement some other `HandlerProxy` only for touch device, that would be easier.\n * The touch event support this feature by default.\n *\n * Note:\n * There might be some cases that the mouse event can not be\n * received on `document`. For example,\n * (A) `useCapture` is not supported and some user defined event listeners on the ancestor\n * of zr dom throw Error .\n * (B) `useCapture` is not supported Some user defined event listeners on the ancestor of\n * zr dom call `stopPropagation`.\n * In these cases, the `mousemove` event might be keep triggered event\n * if the mouse is released. We try to reduce the side-effect in those cases.\n * That is, do nothing (especially, `findHover`) in those cases. See `isOutsideBoundary`.\n *\n * Note:\n * If `HandlerProxy` listens to `document` with `useCapture`, `HandlerProxy` needs to\n * make sure `stopPropagation` and `preventDefault` doing nothing if and only if the event\n * target is not zrender dom. Becuase it is dangerous to enable users to call them in\n * `document` capture phase to prevent the propagation to any listener of the webpage.\n * But they are needed to work when the pointer inside the zrender dom.\n */\nvar SILENT = 'silent';\n\nfunction makeEventPacket(eveType, targetInfo, event) {\n return {\n type: eveType,\n event: event,\n // target can only be an element that is not silent.\n target: targetInfo.target,\n // topTarget can be a silent element.\n topTarget: targetInfo.topTarget,\n cancelBubble: false,\n offsetX: event.zrX,\n offsetY: event.zrY,\n gestureEvent: event.gestureEvent,\n pinchX: event.pinchX,\n pinchY: event.pinchY,\n pinchScale: event.pinchScale,\n wheelDelta: event.zrDelta,\n zrByTouch: event.zrByTouch,\n which: event.which,\n stop: stopEvent\n };\n}\n\nfunction stopEvent() {\n eventTool.stop(this.event);\n}\n\nfunction EmptyProxy() {}\n\nEmptyProxy.prototype.dispose = function () {};\n\nvar handlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\n/**\n * @alias module:zrender/Handler\n * @constructor\n * @extends module:zrender/mixin/Eventful\n * @param {module:zrender/Storage} storage Storage instance.\n * @param {module:zrender/Painter} painter Painter instance.\n * @param {module:zrender/dom/HandlerProxy} proxy HandlerProxy instance.\n * @param {HTMLElement} painterRoot painter.root (not painter.getViewportRoot()).\n */\n\nvar Handler = function (storage, painter, proxy, painterRoot) {\n Eventful.call(this);\n this.storage = storage;\n this.painter = painter;\n this.painterRoot = painterRoot;\n proxy = proxy || new EmptyProxy();\n /**\n * Proxy of event. can be Dom, WebGLSurface, etc.\n */\n\n this.proxy = null;\n /**\n * {target, topTarget, x, y}\n * @private\n * @type {Object}\n */\n\n this._hovered = {};\n /**\n * @private\n * @type {Date}\n */\n\n this._lastTouchMoment;\n /**\n * @private\n * @type {number}\n */\n\n this._lastX;\n /**\n * @private\n * @type {number}\n */\n\n this._lastY;\n /**\n * @private\n * @type {module:zrender/core/GestureMgr}\n */\n\n this._gestureMgr;\n Draggable.call(this);\n this.setHandlerProxy(proxy);\n};\n\nHandler.prototype = {\n constructor: Handler,\n setHandlerProxy: function (proxy) {\n if (this.proxy) {\n this.proxy.dispose();\n }\n\n if (proxy) {\n util.each(handlerNames, function (name) {\n proxy.on && proxy.on(name, this[name], this);\n }, this); // Attach handler\n\n proxy.handler = this;\n }\n\n this.proxy = proxy;\n },\n mousemove: function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var lastHovered = this._hovered;\n var lastHoveredTarget = lastHovered.target; // If lastHoveredTarget is removed from zr (detected by '__zr') by some API call\n // (like 'setOption' or 'dispatchAction') in event handlers, we should find\n // lastHovered again here. Otherwise 'mouseout' can not be triggered normally.\n // See #6198.\n\n if (lastHoveredTarget && !lastHoveredTarget.__zr) {\n lastHovered = this.findHover(lastHovered.x, lastHovered.y);\n lastHoveredTarget = lastHovered.target;\n }\n\n var hovered = this._hovered = isOutside ? {\n x: x,\n y: y\n } : this.findHover(x, y);\n var hoveredTarget = hovered.target;\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default'); // Mouse out on previous hovered element\n\n if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(lastHovered, 'mouseout', event);\n } // Mouse moving on one element\n\n\n this.dispatchToElement(hovered, 'mousemove', event); // Mouse over on a new element\n\n if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(hovered, 'mouseover', event);\n }\n },\n mouseout: function (event) {\n var eventControl = event.zrEventControl;\n var zrIsToLocalDOM = event.zrIsToLocalDOM;\n\n if (eventControl !== 'only_globalout') {\n this.dispatchToElement(this._hovered, 'mouseout', event);\n }\n\n if (eventControl !== 'no_globalout') {\n // FIXME: if the pointer moving from the extra doms to realy \"outside\",\n // the `globalout` should have been triggered. But currently not.\n !zrIsToLocalDOM && this.trigger('globalout', {\n type: 'globalout',\n event: event\n });\n }\n },\n\n /**\n * Resize\n */\n resize: function (event) {\n this._hovered = {};\n },\n\n /**\n * Dispatch event\n * @param {string} eventName\n * @param {event=} eventArgs\n */\n dispatch: function (eventName, eventArgs) {\n var handler = this[eventName];\n handler && handler.call(this, eventArgs);\n },\n\n /**\n * Dispose\n */\n dispose: function () {\n this.proxy.dispose();\n this.storage = this.proxy = this.painter = null;\n },\n\n /**\n * 设置默认的cursor style\n * @param {string} [cursorStyle='default'] 例如 crosshair\n */\n setCursorStyle: function (cursorStyle) {\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(cursorStyle);\n },\n\n /**\n * 事件分发代理\n *\n * @private\n * @param {Object} targetInfo {target, topTarget} 目标图形元素\n * @param {string} eventName 事件名称\n * @param {Object} event 事件对象\n */\n dispatchToElement: function (targetInfo, eventName, event) {\n targetInfo = targetInfo || {};\n var el = targetInfo.target;\n\n if (el && el.silent) {\n return;\n }\n\n var eventHandler = 'on' + eventName;\n var eventPacket = makeEventPacket(eventName, targetInfo, event);\n\n while (el) {\n el[eventHandler] && (eventPacket.cancelBubble = el[eventHandler].call(el, eventPacket));\n el.trigger(eventName, eventPacket);\n el = el.parent;\n\n if (eventPacket.cancelBubble) {\n break;\n }\n }\n\n if (!eventPacket.cancelBubble) {\n // 冒泡到顶级 zrender 对象\n this.trigger(eventName, eventPacket); // 分发事件到用户自定义层\n // 用户有可能在全局 click 事件中 dispose,所以需要判断下 painter 是否存在\n\n this.painter && this.painter.eachOtherLayer(function (layer) {\n if (typeof layer[eventHandler] === 'function') {\n layer[eventHandler].call(layer, eventPacket);\n }\n\n if (layer.trigger) {\n layer.trigger(eventName, eventPacket);\n }\n });\n }\n },\n\n /**\n * @private\n * @param {number} x\n * @param {number} y\n * @param {module:zrender/graphic/Displayable} exclude\n * @return {model:zrender/Element}\n * @method\n */\n findHover: function (x, y, exclude) {\n var list = this.storage.getDisplayList();\n var out = {\n x: x,\n y: y\n };\n\n for (var i = list.length - 1; i >= 0; i--) {\n var hoverCheckResult;\n\n if (list[i] !== exclude // getDisplayList may include ignored item in VML mode\n && !list[i].ignore && (hoverCheckResult = isHover(list[i], x, y))) {\n !out.topTarget && (out.topTarget = list[i]);\n\n if (hoverCheckResult !== SILENT) {\n out.target = list[i];\n break;\n }\n }\n }\n\n return out;\n },\n processGesture: function (event, stage) {\n if (!this._gestureMgr) {\n this._gestureMgr = new GestureMgr();\n }\n\n var gestureMgr = this._gestureMgr;\n stage === 'start' && gestureMgr.clear();\n var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\n stage === 'end' && gestureMgr.clear(); // Do not do any preventDefault here. Upper application do that if necessary.\n\n if (gestureInfo) {\n var type = gestureInfo.type;\n event.gestureEvent = type;\n this.dispatchToElement({\n target: gestureInfo.target\n }, type, gestureInfo.event);\n }\n }\n}; // Common handlers\n\nutil.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n Handler.prototype[name] = function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var hovered;\n var hoveredTarget;\n\n if (name !== 'mouseup' || !isOutside) {\n // Find hover again to avoid click event is dispatched manually. Or click is triggered without mouseover\n hovered = this.findHover(x, y);\n hoveredTarget = hovered.target;\n }\n\n if (name === 'mousedown') {\n this._downEl = hoveredTarget;\n this._downPoint = [event.zrX, event.zrY]; // In case click triggered before mouseup\n\n this._upEl = hoveredTarget;\n } else if (name === 'mouseup') {\n this._upEl = hoveredTarget;\n } else if (name === 'click') {\n if (this._downEl !== this._upEl // Original click event is triggered on the whole canvas element,\n // including the case that `mousedown` - `mousemove` - `mouseup`,\n // which should be filtered, otherwise it will bring trouble to\n // pan and zoom.\n || !this._downPoint // Arbitrary value\n || vec2.dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\n return;\n }\n\n this._downPoint = null;\n }\n\n this.dispatchToElement(hovered, name, event);\n };\n});\n\nfunction isHover(displayable, x, y) {\n if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\n var el = displayable;\n var isSilent;\n\n while (el) {\n // If clipped by ancestor.\n // FIXME: If clipPath has neither stroke nor fill,\n // el.clipPath.contain(x, y) will always return false.\n if (el.clipPath && !el.clipPath.contain(x, y)) {\n return false;\n }\n\n if (el.silent) {\n isSilent = true;\n }\n\n el = el.parent;\n }\n\n return isSilent ? SILENT : true;\n }\n\n return false;\n}\n/**\n * See [Drag outside].\n */\n\n\nfunction isOutsideBoundary(handlerInstance, x, y) {\n var painter = handlerInstance.painter;\n return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\n}\n\nutil.mixin(Handler, Eventful);\nutil.mixin(Handler, Draggable);\nvar _default = Handler;\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 _roamHelper = require(\"../../action/roamHelper\");\n\nvar updateCenterAndZoom = _roamHelper.updateCenterAndZoom;\n\nrequire(\"../helper/focusNodeAdjacencyAction\");\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 actionInfo = {\n type: 'graphRoam',\n event: 'graphRoam',\n update: 'none'\n};\n/**\n * @payload\n * @property {string} name Series name\n * @property {number} [dx]\n * @property {number} [dy]\n * @property {number} [zoom]\n * @property {number} [originX]\n * @property {number} [originY]\n */\n\necharts.registerAction(actionInfo, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'series',\n query: payload\n }, function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var res = updateCenterAndZoom(coordSys, payload);\n seriesModel.setCenter && seriesModel.setCenter(res.center);\n seriesModel.setZoom && seriesModel.setZoom(res.zoom);\n });\n});","var Path = require(\"../Path\");\n\nvar polyHelper = require(\"../helper/poly\");\n\n/**\n * @module zrender/graphic/shape/Polyline\n */\nvar _default = Path.extend({\n type: 'polyline',\n shape: {\n points: null,\n smooth: false,\n smoothConstraint: null\n },\n style: {\n stroke: '#000',\n fill: null\n },\n buildPath: function (ctx, shape) {\n polyHelper.buildPath(ctx, shape, false);\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;","var Path = require(\"./Path\");\n\n// CompoundPath to improve performance\nvar _default = Path.extend({\n type: 'compound',\n shape: {\n paths: null\n },\n _updatePathDirty: function () {\n var dirtyPath = this.__dirtyPath;\n var paths = this.shape.paths;\n\n for (var i = 0; i < paths.length; i++) {\n // Mark as dirty if any subpath is dirty\n dirtyPath = dirtyPath || paths[i].__dirtyPath;\n }\n\n this.__dirtyPath = dirtyPath;\n this.__dirty = this.__dirty || dirtyPath;\n },\n beforeBrush: function () {\n this._updatePathDirty();\n\n var paths = this.shape.paths || [];\n var scale = this.getGlobalScale(); // Update path scale\n\n for (var i = 0; i < paths.length; i++) {\n if (!paths[i].path) {\n paths[i].createPathProxy();\n }\n\n paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\n }\n },\n buildPath: function (ctx, shape) {\n var paths = shape.paths || [];\n\n for (var i = 0; i < paths.length; i++) {\n paths[i].buildPath(ctx, paths[i].shape, true);\n }\n },\n afterBrush: function () {\n var paths = this.shape.paths || [];\n\n for (var i = 0; i < paths.length; i++) {\n paths[i].__dirtyPath = false;\n }\n },\n getBoundingRect: function () {\n this._updatePathDirty();\n\n return Path.prototype.getBoundingRect.call(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 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;","// Simple LRU cache use doubly linked list\n// @module zrender/core/LRU\n\n/**\n * Simple double linked list. Compared with array, it has O(1) remove operation.\n * @constructor\n */\nvar LinkedList = function () {\n /**\n * @type {module:zrender/core/LRU~Entry}\n */\n this.head = null;\n /**\n * @type {module:zrender/core/LRU~Entry}\n */\n\n this.tail = null;\n this._len = 0;\n};\n\nvar linkedListProto = LinkedList.prototype;\n/**\n * Insert a new value at the tail\n * @param {} val\n * @return {module:zrender/core/LRU~Entry}\n */\n\nlinkedListProto.insert = function (val) {\n var entry = new Entry(val);\n this.insertEntry(entry);\n return entry;\n};\n/**\n * Insert an entry at the tail\n * @param {module:zrender/core/LRU~Entry} entry\n */\n\n\nlinkedListProto.insertEntry = function (entry) {\n if (!this.head) {\n this.head = this.tail = entry;\n } else {\n this.tail.next = entry;\n entry.prev = this.tail;\n entry.next = null;\n this.tail = entry;\n }\n\n this._len++;\n};\n/**\n * Remove entry.\n * @param {module:zrender/core/LRU~Entry} entry\n */\n\n\nlinkedListProto.remove = function (entry) {\n var prev = entry.prev;\n var next = entry.next;\n\n if (prev) {\n prev.next = next;\n } else {\n // Is head\n this.head = next;\n }\n\n if (next) {\n next.prev = prev;\n } else {\n // Is tail\n this.tail = prev;\n }\n\n entry.next = entry.prev = null;\n this._len--;\n};\n/**\n * @return {number}\n */\n\n\nlinkedListProto.len = function () {\n return this._len;\n};\n/**\n * Clear list\n */\n\n\nlinkedListProto.clear = function () {\n this.head = this.tail = null;\n this._len = 0;\n};\n/**\n * @constructor\n * @param {} val\n */\n\n\nvar Entry = function (val) {\n /**\n * @type {}\n */\n this.value = val;\n /**\n * @type {module:zrender/core/LRU~Entry}\n */\n\n this.next;\n /**\n * @type {module:zrender/core/LRU~Entry}\n */\n\n this.prev;\n};\n/**\n * LRU Cache\n * @constructor\n * @alias module:zrender/core/LRU\n */\n\n\nvar LRU = function (maxSize) {\n this._list = new LinkedList();\n this._map = {};\n this._maxSize = maxSize || 10;\n this._lastRemovedEntry = null;\n};\n\nvar LRUProto = LRU.prototype;\n/**\n * @param {string} key\n * @param {} value\n * @return {} Removed value\n */\n\nLRUProto.put = function (key, value) {\n var list = this._list;\n var map = this._map;\n var removed = null;\n\n if (map[key] == null) {\n var len = list.len(); // Reuse last removed entry\n\n var entry = this._lastRemovedEntry;\n\n if (len >= this._maxSize && len > 0) {\n // Remove the least recently used\n var leastUsedEntry = list.head;\n list.remove(leastUsedEntry);\n delete map[leastUsedEntry.key];\n removed = leastUsedEntry.value;\n this._lastRemovedEntry = leastUsedEntry;\n }\n\n if (entry) {\n entry.value = value;\n } else {\n entry = new Entry(value);\n }\n\n entry.key = key;\n list.insertEntry(entry);\n map[key] = entry;\n }\n\n return removed;\n};\n/**\n * @param {string} key\n * @return {}\n */\n\n\nLRUProto.get = function (key) {\n var entry = this._map[key];\n var list = this._list;\n\n if (entry != null) {\n // Put the latest used entry in the tail\n if (entry !== list.tail) {\n list.remove(entry);\n list.insertEntry(entry);\n }\n\n return entry.value;\n }\n};\n/**\n * Clear the cache\n */\n\n\nLRUProto.clear = function () {\n this._list.clear();\n\n this._map = {};\n};\n\nvar _default = LRU;\nmodule.exports = _default;","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/selected-dafault-d42c3970a15d4f494c41b26e26ca4e96.png\";","var guid = require(\"./core/guid\");\n\nvar Eventful = require(\"./mixin/Eventful\");\n\nvar Transformable = require(\"./mixin/Transformable\");\n\nvar Animatable = require(\"./mixin/Animatable\");\n\nvar zrUtil = require(\"./core/util\");\n\n/**\n * @alias module:zrender/Element\n * @constructor\n * @extends {module:zrender/mixin/Animatable}\n * @extends {module:zrender/mixin/Transformable}\n * @extends {module:zrender/mixin/Eventful}\n */\nvar Element = function (opts) {\n // jshint ignore:line\n Transformable.call(this, opts);\n Eventful.call(this, opts);\n Animatable.call(this, opts);\n /**\n * 画布元素ID\n * @type {string}\n */\n\n this.id = opts.id || guid();\n};\n\nElement.prototype = {\n /**\n * 元素类型\n * Element type\n * @type {string}\n */\n type: 'element',\n\n /**\n * 元素名字\n * Element name\n * @type {string}\n */\n name: '',\n\n /**\n * ZRender 实例对象,会在 element 添加到 zrender 实例中后自动赋值\n * ZRender instance will be assigned when element is associated with zrender\n * @name module:/zrender/Element#__zr\n * @type {module:zrender/ZRender}\n */\n __zr: null,\n\n /**\n * 图形是否忽略,为true时忽略图形的绘制以及事件触发\n * If ignore drawing and events of the element object\n * @name module:/zrender/Element#ignore\n * @type {boolean}\n * @default false\n */\n ignore: false,\n\n /**\n * 用于裁剪的路径(shape),所有 Group 内的路径在绘制时都会被这个路径裁剪\n * 该路径会继承被裁减对象的变换\n * @type {module:zrender/graphic/Path}\n * @see http://www.w3.org/TR/2dcontext/#clipping-region\n * @readOnly\n */\n clipPath: null,\n\n /**\n * 是否是 Group\n * @type {boolean}\n */\n isGroup: false,\n\n /**\n * Drift element\n * @param {number} dx dx on the global space\n * @param {number} dy dy on the global space\n */\n drift: function (dx, dy) {\n switch (this.draggable) {\n case 'horizontal':\n dy = 0;\n break;\n\n case 'vertical':\n dx = 0;\n break;\n }\n\n var m = this.transform;\n\n if (!m) {\n m = this.transform = [1, 0, 0, 1, 0, 0];\n }\n\n m[4] += dx;\n m[5] += dy;\n this.decomposeTransform();\n this.dirty(false);\n },\n\n /**\n * Hook before update\n */\n beforeUpdate: function () {},\n\n /**\n * Hook after update\n */\n afterUpdate: function () {},\n\n /**\n * Update each frame\n */\n update: function () {\n this.updateTransform();\n },\n\n /**\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {},\n\n /**\n * @protected\n */\n attrKV: function (key, value) {\n if (key === 'position' || key === 'scale' || key === 'origin') {\n // Copy the array\n if (value) {\n var target = this[key];\n\n if (!target) {\n target = this[key] = [];\n }\n\n target[0] = value[0];\n target[1] = value[1];\n }\n } else {\n this[key] = value;\n }\n },\n\n /**\n * Hide the element\n */\n hide: function () {\n this.ignore = true;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * Show the element\n */\n show: function () {\n this.ignore = false;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * @param {string|Object} key\n * @param {*} value\n */\n attr: function (key, value) {\n if (typeof key === 'string') {\n this.attrKV(key, value);\n } else if (zrUtil.isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.attrKV(name, key[name]);\n }\n }\n }\n\n this.dirty(false);\n return this;\n },\n\n /**\n * @param {module:zrender/graphic/Path} clipPath\n */\n setClipPath: function (clipPath) {\n var zr = this.__zr;\n\n if (zr) {\n clipPath.addSelfToZr(zr);\n } // Remove previous clip path\n\n\n if (this.clipPath && this.clipPath !== clipPath) {\n this.removeClipPath();\n }\n\n this.clipPath = clipPath;\n clipPath.__zr = zr;\n clipPath.__clipTarget = this;\n this.dirty(false);\n },\n\n /**\n */\n removeClipPath: function () {\n var clipPath = this.clipPath;\n\n if (clipPath) {\n if (clipPath.__zr) {\n clipPath.removeSelfFromZr(clipPath.__zr);\n }\n\n clipPath.__zr = null;\n clipPath.__clipTarget = null;\n this.clipPath = null;\n this.dirty(false);\n }\n },\n\n /**\n * Add self from zrender instance.\n * Not recursively because it will be invoked when element added to storage.\n * @param {module:zrender/ZRender} zr\n */\n addSelfToZr: function (zr) {\n this.__zr = zr; // 添加动画\n\n var animators = this.animators;\n\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.addAnimator(animators[i]);\n }\n }\n\n if (this.clipPath) {\n this.clipPath.addSelfToZr(zr);\n }\n },\n\n /**\n * Remove self from zrender instance.\n * Not recursively because it will be invoked when element added to storage.\n * @param {module:zrender/ZRender} zr\n */\n removeSelfFromZr: function (zr) {\n this.__zr = null; // 移除动画\n\n var animators = this.animators;\n\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.removeAnimator(animators[i]);\n }\n }\n\n if (this.clipPath) {\n this.clipPath.removeSelfFromZr(zr);\n }\n }\n};\nzrUtil.mixin(Element, Animatable);\nzrUtil.mixin(Element, Transformable);\nzrUtil.mixin(Element, Eventful);\nvar _default = Element;\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 BaseBarSeries = require(\"./BaseBarSeries\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PictorialBarSeries = BaseBarSeries.extend({\n type: 'series.pictorialBar',\n dependencies: ['grid'],\n defaultOption: {\n symbol: 'circle',\n // Customized bar shape\n symbolSize: null,\n // Can be ['100%', '100%'], null means auto.\n symbolRotate: null,\n symbolPosition: null,\n // 'start' or 'end' or 'center', null means auto.\n symbolOffset: null,\n symbolMargin: null,\n // start margin and end margin. Can be a number or a percent string.\n // Auto margin by default.\n symbolRepeat: false,\n // false/null/undefined, means no repeat.\n // Can be true, means auto calculate repeat times and cut by data.\n // Can be a number, specifies repeat times, and do not cut by data.\n // Can be 'fixed', means auto calculate repeat times but do not cut by data.\n symbolRepeatDirection: 'end',\n // 'end' means from 'start' to 'end'.\n symbolClip: false,\n symbolBoundingData: null,\n // Can be 60 or -40 or [-40, 60]\n symbolPatternSize: 400,\n // 400 * 400 px\n barGap: '-100%',\n // In most case, overlap is needed.\n // z can be set in data item, which is z2 actually.\n // Disable progressive\n progressive: 0,\n hoverAnimation: false // Open only when needed.\n\n },\n getInitialData: function (option) {\n // Disable stack.\n option.stack = null;\n return PictorialBarSeries.superApply(this, 'getInitialData', arguments);\n }\n});\nvar _default = PictorialBarSeries;\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\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 actionInfo = {\n type: 'selectDataRange',\n event: 'dataRangeSelected',\n // FIXME use updateView appears wrong\n update: 'update'\n};\necharts.registerAction(actionInfo, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'visualMap',\n query: payload\n }, function (model) {\n model.setSelected(payload.selected);\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\nrequire(\"./sunburst/SunburstSeries\");\n\nrequire(\"./sunburst/SunburstView\");\n\nrequire(\"./sunburst/sunburstAction\");\n\nvar dataColor = require(\"../visual/dataColor\");\n\nvar sunburstLayout = require(\"./sunburst/sunburstLayout\");\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*/\necharts.registerVisual(zrUtil.curry(dataColor, 'sunburst'));\necharts.registerLayout(zrUtil.curry(sunburstLayout, 'sunburst'));\necharts.registerProcessor(zrUtil.curry(dataFilter, 'sunburst'));","\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 textContain = require(\"zrender/lib/contain/text\");\n\nvar featureManager = require(\"./featureManager\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Model = require(\"../../model/Model\");\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\n\nvar listComponentHelper = require(\"../helper/listComponent\");\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.extendComponentView({\n type: 'toolbox',\n render: function (toolboxModel, ecModel, api, payload) {\n var group = this.group;\n group.removeAll();\n\n if (!toolboxModel.get('show')) {\n return;\n }\n\n var itemSize = +toolboxModel.get('itemSize');\n var featureOpts = toolboxModel.get('feature') || {};\n var features = this._features || (this._features = {});\n var featureNames = [];\n zrUtil.each(featureOpts, function (opt, name) {\n featureNames.push(name);\n });\n new DataDiffer(this._featureNames || [], featureNames).add(processFeature).update(processFeature).remove(zrUtil.curry(processFeature, null)).execute(); // Keep for diff.\n\n this._featureNames = featureNames;\n\n function processFeature(newIndex, oldIndex) {\n var featureName = featureNames[newIndex];\n var oldName = featureNames[oldIndex];\n var featureOpt = featureOpts[featureName];\n var featureModel = new Model(featureOpt, toolboxModel, toolboxModel.ecModel);\n var feature; // FIX#11236, merge feature title from MagicType newOption. TODO: consider seriesIndex ?\n\n if (payload && payload.newTitle != null && payload.featureName === featureName) {\n featureOpt.title = payload.newTitle;\n }\n\n if (featureName && !oldName) {\n // Create\n if (isUserFeatureName(featureName)) {\n feature = {\n model: featureModel,\n onclick: featureModel.option.onclick,\n featureName: featureName\n };\n } else {\n var Feature = featureManager.get(featureName);\n\n if (!Feature) {\n return;\n }\n\n feature = new Feature(featureModel, ecModel, api);\n }\n\n features[featureName] = feature;\n } else {\n feature = features[oldName]; // If feature does not exsit.\n\n if (!feature) {\n return;\n }\n\n feature.model = featureModel;\n feature.ecModel = ecModel;\n feature.api = api;\n }\n\n if (!featureName && oldName) {\n feature.dispose && feature.dispose(ecModel, api);\n return;\n }\n\n if (!featureModel.get('show') || feature.unusable) {\n feature.remove && feature.remove(ecModel, api);\n return;\n }\n\n createIconPaths(featureModel, feature, featureName);\n\n featureModel.setIconStatus = function (iconName, status) {\n var option = this.option;\n var iconPaths = this.iconPaths;\n option.iconStatus = option.iconStatus || {};\n option.iconStatus[iconName] = status; // FIXME\n\n iconPaths[iconName] && iconPaths[iconName].trigger(status);\n };\n\n if (feature.render) {\n feature.render(featureModel, ecModel, api, payload);\n }\n }\n\n function createIconPaths(featureModel, feature, featureName) {\n var iconStyleModel = featureModel.getModel('iconStyle');\n var iconStyleEmphasisModel = featureModel.getModel('emphasis.iconStyle'); // If one feature has mutiple icon. they are orginaized as\n // {\n // icon: {\n // foo: '',\n // bar: ''\n // },\n // title: {\n // foo: '',\n // bar: ''\n // }\n // }\n\n var icons = feature.getIcons ? feature.getIcons() : featureModel.get('icon');\n var titles = featureModel.get('title') || {};\n\n if (typeof icons === 'string') {\n var icon = icons;\n var title = titles;\n icons = {};\n titles = {};\n icons[featureName] = icon;\n titles[featureName] = title;\n }\n\n var iconPaths = featureModel.iconPaths = {};\n zrUtil.each(icons, function (iconStr, iconName) {\n var path = graphic.createIcon(iconStr, {}, {\n x: -itemSize / 2,\n y: -itemSize / 2,\n width: itemSize,\n height: itemSize\n });\n path.setStyle(iconStyleModel.getItemStyle());\n path.hoverStyle = iconStyleEmphasisModel.getItemStyle(); // Text position calculation\n\n path.setStyle({\n text: titles[iconName],\n textAlign: iconStyleEmphasisModel.get('textAlign'),\n textBorderRadius: iconStyleEmphasisModel.get('textBorderRadius'),\n textPadding: iconStyleEmphasisModel.get('textPadding'),\n textFill: null\n });\n var tooltipModel = toolboxModel.getModel('tooltip');\n\n if (tooltipModel && tooltipModel.get('show')) {\n path.attr('tooltip', zrUtil.extend({\n content: titles[iconName],\n formatter: tooltipModel.get('formatter', true) || function () {\n return titles[iconName];\n },\n formatterParams: {\n componentType: 'toolbox',\n name: iconName,\n title: titles[iconName],\n $vars: ['name', 'title']\n },\n position: tooltipModel.get('position', true) || 'bottom'\n }, tooltipModel.option));\n }\n\n graphic.setHoverStyle(path);\n\n if (toolboxModel.get('showTitle')) {\n path.__title = titles[iconName];\n path.on('mouseover', function () {\n // Should not reuse above hoverStyle, which might be modified.\n var hoverStyle = iconStyleEmphasisModel.getItemStyle();\n var defaultTextPosition = toolboxModel.get('orient') === 'vertical' ? toolboxModel.get('right') == null ? 'right' : 'left' : toolboxModel.get('bottom') == null ? 'bottom' : 'top';\n path.setStyle({\n textFill: iconStyleEmphasisModel.get('textFill') || hoverStyle.fill || hoverStyle.stroke || '#000',\n textBackgroundColor: iconStyleEmphasisModel.get('textBackgroundColor'),\n textPosition: iconStyleEmphasisModel.get('textPosition') || defaultTextPosition\n });\n }).on('mouseout', function () {\n path.setStyle({\n textFill: null,\n textBackgroundColor: null\n });\n });\n }\n\n path.trigger(featureModel.get('iconStatus.' + iconName) || 'normal');\n group.add(path);\n path.on('click', zrUtil.bind(feature.onclick, feature, ecModel, api, iconName));\n iconPaths[iconName] = path;\n });\n }\n\n listComponentHelper.layout(group, toolboxModel, api); // Render background after group is layout\n // FIXME\n\n group.add(listComponentHelper.makeBackground(group.getBoundingRect(), toolboxModel)); // Adjust icon title positions to avoid them out of screen\n\n group.eachChild(function (icon) {\n var titleText = icon.__title;\n var hoverStyle = icon.hoverStyle; // May be background element\n\n if (hoverStyle && titleText) {\n var rect = textContain.getBoundingRect(titleText, textContain.makeFont(hoverStyle));\n var offsetX = icon.position[0] + group.position[0];\n var offsetY = icon.position[1] + group.position[1] + itemSize;\n var needPutOnTop = false;\n\n if (offsetY + rect.height > api.getHeight()) {\n hoverStyle.textPosition = 'top';\n needPutOnTop = true;\n }\n\n var topOffset = needPutOnTop ? -5 - rect.height : itemSize + 8;\n\n if (offsetX + rect.width / 2 > api.getWidth()) {\n hoverStyle.textPosition = ['100%', topOffset];\n hoverStyle.textAlign = 'right';\n } else if (offsetX - rect.width / 2 < 0) {\n hoverStyle.textPosition = [0, topOffset];\n hoverStyle.textAlign = 'left';\n }\n }\n });\n },\n updateView: function (toolboxModel, ecModel, api, payload) {\n zrUtil.each(this._features, function (feature) {\n feature.updateView && feature.updateView(feature.model, ecModel, api, payload);\n });\n },\n // updateLayout: function (toolboxModel, ecModel, api, payload) {\n // zrUtil.each(this._features, function (feature) {\n // feature.updateLayout && feature.updateLayout(feature.model, ecModel, api, payload);\n // });\n // },\n remove: function (ecModel, api) {\n zrUtil.each(this._features, function (feature) {\n feature.remove && feature.remove(ecModel, api);\n });\n this.group.removeAll();\n },\n dispose: function (ecModel, api) {\n zrUtil.each(this._features, function (feature) {\n feature.dispose && feature.dispose(ecModel, api);\n });\n }\n});\n\nfunction isUserFeatureName(featureName) {\n return featureName.indexOf('my') === 0;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/coord/View} view\n * @param {Object} payload\n * @param {Object} [zoomLimit]\n */\nfunction updateCenterAndZoom(view, payload, zoomLimit) {\n var previousZoom = view.getZoom();\n var center = view.getCenter();\n var zoom = payload.zoom;\n var point = view.dataToPoint(center);\n\n if (payload.dx != null && payload.dy != null) {\n point[0] -= payload.dx;\n point[1] -= payload.dy;\n var center = view.pointToData(point);\n view.setCenter(center);\n }\n\n if (zoom != null) {\n if (zoomLimit) {\n var zoomMin = zoomLimit.min || 0;\n var zoomMax = zoomLimit.max || Infinity;\n zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom;\n } // Zoom on given point(originX, originY)\n\n\n view.scale[0] *= zoom;\n view.scale[1] *= zoom;\n var position = view.position;\n var fixX = (payload.originX - position[0]) * (zoom - 1);\n var fixY = (payload.originY - position[1]) * (zoom - 1);\n position[0] -= fixX;\n position[1] -= fixY;\n view.updateTransform(); // Get the new center\n\n var center = view.pointToData(point);\n view.setCenter(center);\n view.setZoom(zoom * previousZoom);\n }\n\n return {\n center: view.getCenter(),\n zoom: view.getZoom()\n };\n}\n\nexports.updateCenterAndZoom = updateCenterAndZoom;","var PathProxy = require(\"../core/PathProxy\");\n\nvar line = require(\"./line\");\n\nvar cubic = require(\"./cubic\");\n\nvar quadratic = require(\"./quadratic\");\n\nvar arc = require(\"./arc\");\n\nvar _util = require(\"./util\");\n\nvar normalizeRadian = _util.normalizeRadian;\n\nvar curve = require(\"../core/curve\");\n\nvar windingLine = require(\"./windingLine\");\n\nvar CMD = PathProxy.CMD;\nvar PI2 = Math.PI * 2;\nvar EPSILON = 1e-4;\n\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n} // 临时数组\n\n\nvar roots = [-1, -1, -1];\nvar extrema = [-1, -1];\n\nfunction swapExtrema() {\n var tmp = extrema[0];\n extrema[0] = extrema[1];\n extrema[1] = tmp;\n}\n\nfunction windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\n // Quick reject\n if (y > y0 && y > y1 && y > y2 && y > y3 || y < y0 && y < y1 && y < y2 && y < y3) {\n return 0;\n }\n\n var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots);\n\n if (nRoots === 0) {\n return 0;\n } else {\n var w = 0;\n var nExtrema = -1;\n var y0_;\n var y1_;\n\n for (var i = 0; i < nRoots; i++) {\n var t = roots[i]; // Avoid winding error when intersection point is the connect point of two line of polygon\n\n var unit = t === 0 || t === 1 ? 0.5 : 1;\n var x_ = curve.cubicAt(x0, x1, x2, x3, t);\n\n if (x_ < x) {\n // Quick reject\n continue;\n }\n\n if (nExtrema < 0) {\n nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema);\n\n if (extrema[1] < extrema[0] && nExtrema > 1) {\n swapExtrema();\n }\n\n y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]);\n\n if (nExtrema > 1) {\n y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]);\n }\n }\n\n if (nExtrema === 2) {\n // 分成三段单调函数\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n } else if (t < extrema[1]) {\n w += y1_ < y0_ ? unit : -unit;\n } else {\n w += y3 < y1_ ? unit : -unit;\n }\n } else {\n // 分成两段单调函数\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n } else {\n w += y3 < y0_ ? unit : -unit;\n }\n }\n }\n\n return w;\n }\n}\n\nfunction windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\n // Quick reject\n if (y > y0 && y > y1 && y > y2 || y < y0 && y < y1 && y < y2) {\n return 0;\n }\n\n var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots);\n\n if (nRoots === 0) {\n return 0;\n } else {\n var t = curve.quadraticExtremum(y0, y1, y2);\n\n if (t >= 0 && t <= 1) {\n var w = 0;\n var y_ = curve.quadraticAt(y0, y1, y2, t);\n\n for (var i = 0; i < nRoots; i++) {\n // Remove one endpoint.\n var unit = roots[i] === 0 || roots[i] === 1 ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[i]);\n\n if (x_ < x) {\n // Quick reject\n continue;\n }\n\n if (roots[i] < t) {\n w += y_ < y0 ? unit : -unit;\n } else {\n w += y2 < y_ ? unit : -unit;\n }\n }\n\n return w;\n } else {\n // Remove one endpoint.\n var unit = roots[0] === 0 || roots[0] === 1 ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[0]);\n\n if (x_ < x) {\n // Quick reject\n return 0;\n }\n\n return y2 < y0 ? unit : -unit;\n }\n }\n} // TODO\n// Arc 旋转\n\n\nfunction windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\n y -= cy;\n\n if (y > r || y < -r) {\n return 0;\n }\n\n var tmp = Math.sqrt(r * r - y * y);\n roots[0] = -tmp;\n roots[1] = tmp;\n var diff = Math.abs(startAngle - endAngle);\n\n if (diff < 1e-4) {\n return 0;\n }\n\n if (diff % PI2 < 1e-4) {\n // Is a circle\n startAngle = 0;\n endAngle = PI2;\n var dir = anticlockwise ? 1 : -1;\n\n if (x >= roots[0] + cx && x <= roots[1] + cx) {\n return dir;\n } else {\n return 0;\n }\n }\n\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n } else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n\n var w = 0;\n\n for (var i = 0; i < 2; i++) {\n var x_ = roots[i];\n\n if (x_ + cx > x) {\n var angle = Math.atan2(y, x_);\n var dir = anticlockwise ? 1 : -1;\n\n if (angle < 0) {\n angle = PI2 + angle;\n }\n\n if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {\n if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\n dir = -dir;\n }\n\n w += dir;\n }\n }\n }\n\n return w;\n}\n\nfunction containPath(data, lineWidth, isStroke, x, y) {\n var w = 0;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++]; // Begin a new subpath\n\n if (cmd === CMD.M && i > 1) {\n // Close previous subpath\n if (!isStroke) {\n w += windingLine(xi, yi, x0, y0, x, y);\n } // 如果被任何一个 subpath 包含\n // if (w !== 0) {\n // return true;\n // }\n\n }\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n break;\n\n case CMD.L:\n if (isStroke) {\n if (line.containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n } else {\n // NOTE 在第一个命令为 L, C, Q 的时候会计算出 NaN\n w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\n }\n\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n if (isStroke) {\n if (cubic.containStroke(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n } else {\n w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n if (isStroke) {\n if (quadratic.containStroke(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n } else {\n w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++]; // TODO Arc 旋转\n\n i += 1;\n var anticlockwise = 1 - data[i++];\n var x1 = Math.cos(theta) * rx + cx;\n var y1 = Math.sin(theta) * ry + cy; // 不是直接使用 arc 命令\n\n if (i > 1) {\n w += windingLine(xi, yi, x1, y1, x, y);\n } else {\n // 第一个命令起点还未定义\n x0 = x1;\n y0 = y1;\n } // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放\n\n\n var _x = (x - cx) * ry / rx + cx;\n\n if (isStroke) {\n if (arc.containStroke(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\n return true;\n }\n } else {\n w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\n }\n\n xi = Math.cos(theta + dTheta) * rx + cx;\n yi = Math.sin(theta + dTheta) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n var x1 = x0 + width;\n var y1 = y0 + height;\n\n if (isStroke) {\n if (line.containStroke(x0, y0, x1, y0, lineWidth, x, y) || line.containStroke(x1, y0, x1, y1, lineWidth, x, y) || line.containStroke(x1, y1, x0, y1, lineWidth, x, y) || line.containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\n return true;\n }\n } else {\n // FIXME Clockwise ?\n w += windingLine(x1, y0, x1, y1, x, y);\n w += windingLine(x0, y1, x0, y0, x, y);\n }\n\n break;\n\n case CMD.Z:\n if (isStroke) {\n if (line.containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\n return true;\n }\n } else {\n // Close a subpath\n w += windingLine(xi, yi, x0, y0, x, y); // 如果被任何一个 subpath 包含\n // FIXME subpaths may overlap\n // if (w !== 0) {\n // return true;\n // }\n }\n\n xi = x0;\n yi = y0;\n break;\n }\n }\n\n if (!isStroke && !isAroundEqual(yi, y0)) {\n w += windingLine(xi, yi, x0, y0, x, y) || 0;\n }\n\n return w !== 0;\n}\n\nfunction contain(pathData, x, y) {\n return containPath(pathData, 0, false, x, y);\n}\n\nfunction containStroke(pathData, lineWidth, x, y) {\n return containPath(pathData, lineWidth, true, x, y);\n}\n\nexports.contain = contain;\nexports.containStroke = containStroke;","\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 matrix = require(\"zrender/lib/core/matrix\");\n\nvar layoutUtil = require(\"../../util/layout\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar ParallelAxis = require(\"./ParallelAxis\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar sliderMove = require(\"../../component/helper/sliderMove\");\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 * Parallel Coordinates\n * \n */\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar round = numberUtil.round;\nvar PI = Math.PI;\n\nfunction Parallel(parallelModel, ecModel, api) {\n /**\n * key: dimension\n * @type {Object.}\n * @private\n */\n this._axesMap = zrUtil.createHashMap();\n /**\n * key: dimension\n * value: {position: [], rotation, }\n * @type {Object.}\n * @private\n */\n\n this._axesLayout = {};\n /**\n * Always follow axis order.\n * @type {Array.}\n * @readOnly\n */\n\n this.dimensions = parallelModel.dimensions;\n /**\n * @type {module:zrender/core/BoundingRect}\n */\n\n this._rect;\n /**\n * @type {module:echarts/coord/parallel/ParallelModel}\n */\n\n this._model = parallelModel;\n\n this._init(parallelModel, ecModel, api);\n}\n\nParallel.prototype = {\n type: 'parallel',\n constructor: Parallel,\n\n /**\n * Initialize cartesian coordinate systems\n * @private\n */\n _init: function (parallelModel, ecModel, api) {\n var dimensions = parallelModel.dimensions;\n var parallelAxisIndex = parallelModel.parallelAxisIndex;\n each(dimensions, function (dim, idx) {\n var axisIndex = parallelAxisIndex[idx];\n var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n\n var axis = this._axesMap.set(dim, new ParallelAxis(dim, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisIndex));\n\n var isCategory = axis.type === 'category';\n axis.onBand = isCategory && axisModel.get('boundaryGap');\n axis.inverse = axisModel.get('inverse'); // Injection\n\n axisModel.axis = axis;\n axis.model = axisModel;\n axis.coordinateSystem = axisModel.coordinateSystem = this;\n }, this);\n },\n\n /**\n * Update axis scale after data processed\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n update: function (ecModel, api) {\n this._updateAxesFromSeries(this._model, ecModel);\n },\n\n /**\n * @override\n */\n containPoint: function (point) {\n var layoutInfo = this._makeLayoutInfo();\n\n var axisBase = layoutInfo.axisBase;\n var layoutBase = layoutInfo.layoutBase;\n var pixelDimIndex = layoutInfo.pixelDimIndex;\n var pAxis = point[1 - pixelDimIndex];\n var pLayout = point[pixelDimIndex];\n return pAxis >= axisBase && pAxis <= axisBase + layoutInfo.axisLength && pLayout >= layoutBase && pLayout <= layoutBase + layoutInfo.layoutLength;\n },\n getModel: function () {\n return this._model;\n },\n\n /**\n * Update properties from series\n * @private\n */\n _updateAxesFromSeries: function (parallelModel, ecModel) {\n ecModel.eachSeries(function (seriesModel) {\n if (!parallelModel.contains(seriesModel, ecModel)) {\n return;\n }\n\n var data = seriesModel.getData();\n each(this.dimensions, function (dim) {\n var axis = this._axesMap.get(dim);\n\n axis.scale.unionExtentFromData(data, data.mapDimension(dim));\n axisHelper.niceScaleExtent(axis.scale, axis.model);\n }, this);\n }, this);\n },\n\n /**\n * Resize the parallel coordinate system.\n * @param {module:echarts/coord/parallel/ParallelModel} parallelModel\n * @param {module:echarts/ExtensionAPI} api\n */\n resize: function (parallelModel, api) {\n this._rect = layoutUtil.getLayoutRect(parallelModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n\n this._layoutAxes();\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getRect: function () {\n return this._rect;\n },\n\n /**\n * @private\n */\n _makeLayoutInfo: function () {\n var parallelModel = this._model;\n var rect = this._rect;\n var xy = ['x', 'y'];\n var wh = ['width', 'height'];\n var layout = parallelModel.get('layout');\n var pixelDimIndex = layout === 'horizontal' ? 0 : 1;\n var layoutLength = rect[wh[pixelDimIndex]];\n var layoutExtent = [0, layoutLength];\n var axisCount = this.dimensions.length;\n var axisExpandWidth = restrict(parallelModel.get('axisExpandWidth'), layoutExtent);\n var axisExpandCount = restrict(parallelModel.get('axisExpandCount') || 0, [0, axisCount]);\n var axisExpandable = parallelModel.get('axisExpandable') && axisCount > 3 && axisCount > axisExpandCount && axisExpandCount > 1 && axisExpandWidth > 0 && layoutLength > 0; // `axisExpandWindow` is According to the coordinates of [0, axisExpandLength],\n // for sake of consider the case that axisCollapseWidth is 0 (when screen is narrow),\n // where collapsed axes should be overlapped.\n\n var axisExpandWindow = parallelModel.get('axisExpandWindow');\n var winSize;\n\n if (!axisExpandWindow) {\n winSize = restrict(axisExpandWidth * (axisExpandCount - 1), layoutExtent);\n var axisExpandCenter = parallelModel.get('axisExpandCenter') || mathFloor(axisCount / 2);\n axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2];\n axisExpandWindow[1] = axisExpandWindow[0] + winSize;\n } else {\n winSize = restrict(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent);\n axisExpandWindow[1] = axisExpandWindow[0] + winSize;\n }\n\n var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount); // Avoid axisCollapseWidth is too small.\n\n axisCollapseWidth < 3 && (axisCollapseWidth = 0); // Find the first and last indices > ewin[0] and < ewin[1].\n\n var winInnerIndices = [mathFloor(round(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, mathCeil(round(axisExpandWindow[1] / axisExpandWidth, 1)) - 1]; // Pos in ec coordinates.\n\n var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0];\n return {\n layout: layout,\n pixelDimIndex: pixelDimIndex,\n layoutBase: rect[xy[pixelDimIndex]],\n layoutLength: layoutLength,\n axisBase: rect[xy[1 - pixelDimIndex]],\n axisLength: rect[wh[1 - pixelDimIndex]],\n axisExpandable: axisExpandable,\n axisExpandWidth: axisExpandWidth,\n axisCollapseWidth: axisCollapseWidth,\n axisExpandWindow: axisExpandWindow,\n axisCount: axisCount,\n winInnerIndices: winInnerIndices,\n axisExpandWindow0Pos: axisExpandWindow0Pos\n };\n },\n\n /**\n * @private\n */\n _layoutAxes: function () {\n var rect = this._rect;\n var axes = this._axesMap;\n var dimensions = this.dimensions;\n\n var layoutInfo = this._makeLayoutInfo();\n\n var layout = layoutInfo.layout;\n axes.each(function (axis) {\n var axisExtent = [0, layoutInfo.axisLength];\n var idx = axis.inverse ? 1 : 0;\n axis.setExtent(axisExtent[idx], axisExtent[1 - idx]);\n });\n each(dimensions, function (dim, idx) {\n var posInfo = (layoutInfo.axisExpandable ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo);\n var positionTable = {\n horizontal: {\n x: posInfo.position,\n y: layoutInfo.axisLength\n },\n vertical: {\n x: 0,\n y: posInfo.position\n }\n };\n var rotationTable = {\n horizontal: PI / 2,\n vertical: 0\n };\n var position = [positionTable[layout].x + rect.x, positionTable[layout].y + rect.y];\n var rotation = rotationTable[layout];\n var transform = matrix.create();\n matrix.rotate(transform, transform, rotation);\n matrix.translate(transform, transform, position); // TODO\n // tick等排布信息。\n // TODO\n // 根据axis order 更新 dimensions顺序。\n\n this._axesLayout[dim] = {\n position: position,\n rotation: rotation,\n transform: transform,\n axisNameAvailableWidth: posInfo.axisNameAvailableWidth,\n axisLabelShow: posInfo.axisLabelShow,\n nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth,\n tickDirection: 1,\n labelDirection: 1\n };\n }, this);\n },\n\n /**\n * Get axis by dim.\n * @param {string} dim\n * @return {module:echarts/coord/parallel/ParallelAxis} [description]\n */\n getAxis: function (dim) {\n return this._axesMap.get(dim);\n },\n\n /**\n * Convert a dim value of a single item of series data to Point.\n * @param {*} value\n * @param {string} dim\n * @return {Array}\n */\n dataToPoint: function (value, dim) {\n return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim);\n },\n\n /**\n * Travel data for one time, get activeState of each data item.\n * @param {module:echarts/data/List} data\n * @param {Functio} cb param: {string} activeState 'active' or 'inactive' or 'normal'\n * {number} dataIndex\n * @param {number} [start=0] the start dataIndex that travel from.\n * @param {number} [end=data.count()] the next dataIndex of the last dataIndex will be travel.\n */\n eachActiveState: function (data, callback, start, end) {\n start == null && (start = 0);\n end == null && (end = data.count());\n var axesMap = this._axesMap;\n var dimensions = this.dimensions;\n var dataDimensions = [];\n var axisModels = [];\n zrUtil.each(dimensions, function (axisDim) {\n dataDimensions.push(data.mapDimension(axisDim));\n axisModels.push(axesMap.get(axisDim).model);\n });\n var hasActiveSet = this.hasAxisBrushed();\n\n for (var dataIndex = start; dataIndex < end; dataIndex++) {\n var activeState;\n\n if (!hasActiveSet) {\n activeState = 'normal';\n } else {\n activeState = 'active';\n var values = data.getValues(dataDimensions, dataIndex);\n\n for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\n var state = axisModels[j].getActiveState(values[j]);\n\n if (state === 'inactive') {\n activeState = 'inactive';\n break;\n }\n }\n }\n\n callback(activeState, dataIndex);\n }\n },\n\n /**\n * Whether has any activeSet.\n * @return {boolean}\n */\n hasAxisBrushed: function () {\n var dimensions = this.dimensions;\n var axesMap = this._axesMap;\n var hasActiveSet = false;\n\n for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\n if (axesMap.get(dimensions[j]).model.getActiveState() !== 'normal') {\n hasActiveSet = true;\n }\n }\n\n return hasActiveSet;\n },\n\n /**\n * Convert coords of each axis to Point.\n * Return point. For example: [10, 20]\n * @param {Array.} coords\n * @param {string} dim\n * @return {Array.}\n */\n axisCoordToPoint: function (coord, dim) {\n var axisLayout = this._axesLayout[dim];\n return graphic.applyTransform([coord, 0], axisLayout.transform);\n },\n\n /**\n * Get axis layout.\n */\n getAxisLayout: function (dim) {\n return zrUtil.clone(this._axesLayout[dim]);\n },\n\n /**\n * @param {Array.} point\n * @return {Object} {axisExpandWindow, delta, behavior: 'jump' | 'slide' | 'none'}.\n */\n getSlidedAxisExpandWindow: function (point) {\n var layoutInfo = this._makeLayoutInfo();\n\n var pixelDimIndex = layoutInfo.pixelDimIndex;\n var axisExpandWindow = layoutInfo.axisExpandWindow.slice();\n var winSize = axisExpandWindow[1] - axisExpandWindow[0];\n var extent = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)]; // Out of the area of coordinate system.\n\n if (!this.containPoint(point)) {\n return {\n behavior: 'none',\n axisExpandWindow: axisExpandWindow\n };\n } // Conver the point from global to expand coordinates.\n\n\n var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos; // For dragging operation convenience, the window should not be\n // slided when mouse is the center area of the window.\n\n var delta;\n var behavior = 'slide';\n var axisCollapseWidth = layoutInfo.axisCollapseWidth;\n\n var triggerArea = this._model.get('axisExpandSlideTriggerArea'); // But consider touch device, jump is necessary.\n\n\n var useJump = triggerArea[0] != null;\n\n if (axisCollapseWidth) {\n if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) {\n behavior = 'jump';\n delta = pointCoord - winSize * triggerArea[2];\n } else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) {\n behavior = 'jump';\n delta = pointCoord - winSize * (1 - triggerArea[2]);\n } else {\n (delta = pointCoord - winSize * triggerArea[1]) >= 0 && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 && (delta = 0);\n }\n\n delta *= layoutInfo.axisExpandWidth / axisCollapseWidth;\n delta ? sliderMove(delta, axisExpandWindow, extent, 'all') // Avoid nonsense triger on mousemove.\n : behavior = 'none';\n } // When screen is too narrow, make it visible and slidable, although it is hard to interact.\n else {\n var winSize = axisExpandWindow[1] - axisExpandWindow[0];\n var pos = extent[1] * pointCoord / winSize;\n axisExpandWindow = [mathMax(0, pos - winSize / 2)];\n axisExpandWindow[1] = mathMin(extent[1], axisExpandWindow[0] + winSize);\n axisExpandWindow[0] = axisExpandWindow[1] - winSize;\n }\n\n return {\n axisExpandWindow: axisExpandWindow,\n behavior: behavior\n };\n }\n};\n\nfunction restrict(len, extent) {\n return mathMin(mathMax(len, extent[0]), extent[1]);\n}\n\nfunction layoutAxisWithoutExpand(axisIndex, layoutInfo) {\n var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1);\n return {\n position: step * axisIndex,\n axisNameAvailableWidth: step,\n axisLabelShow: true\n };\n}\n\nfunction layoutAxisWithExpand(axisIndex, layoutInfo) {\n var layoutLength = layoutInfo.layoutLength;\n var axisExpandWidth = layoutInfo.axisExpandWidth;\n var axisCount = layoutInfo.axisCount;\n var axisCollapseWidth = layoutInfo.axisCollapseWidth;\n var winInnerIndices = layoutInfo.winInnerIndices;\n var position;\n var axisNameAvailableWidth = axisCollapseWidth;\n var axisLabelShow = false;\n var nameTruncateMaxWidth;\n\n if (axisIndex < winInnerIndices[0]) {\n position = axisIndex * axisCollapseWidth;\n nameTruncateMaxWidth = axisCollapseWidth;\n } else if (axisIndex <= winInnerIndices[1]) {\n position = layoutInfo.axisExpandWindow0Pos + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0];\n axisNameAvailableWidth = axisExpandWidth;\n axisLabelShow = true;\n } else {\n position = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth;\n nameTruncateMaxWidth = axisCollapseWidth;\n }\n\n return {\n position: position,\n axisNameAvailableWidth: axisNameAvailableWidth,\n axisLabelShow: axisLabelShow,\n nameTruncateMaxWidth: nameTruncateMaxWidth\n };\n}\n\nvar _default = Parallel;\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 ComponentModel = require(\"../../model/Component\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\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 PolarAxisModel = ComponentModel.extend({\n type: 'polarAxis',\n\n /**\n * @type {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n */\n axis: null,\n\n /**\n * @override\n */\n getCoordSysModel: function () {\n return this.ecModel.queryComponents({\n mainType: 'polar',\n index: this.option.polarIndex,\n id: this.option.polarId\n })[0];\n }\n});\nzrUtil.merge(PolarAxisModel.prototype, axisModelCommonMixin);\nvar polarAxisDefaultExtendedOption = {\n angle: {\n // polarIndex: 0,\n // polarId: '',\n startAngle: 90,\n clockwise: true,\n splitNumber: 12,\n axisLabel: {\n rotate: false\n }\n },\n radius: {\n // polarIndex: 0,\n // polarId: '',\n splitNumber: 5\n }\n};\n\nfunction getAxisType(axisDim, option) {\n // Default axis with data is category axis\n return option.type || (option.data ? 'category' : 'value');\n}\n\naxisModelCreator('angle', PolarAxisModel, getAxisType, polarAxisDefaultExtendedOption.angle);\naxisModelCreator('radius', PolarAxisModel, getAxisType, polarAxisDefaultExtendedOption.radius);","var Path = require(\"../Path\");\n\n/**\n * 圆形\n * @module zrender/shape/Circle\n */\nvar _default = Path.extend({\n type: 'circle',\n shape: {\n cx: 0,\n cy: 0,\n r: 0\n },\n buildPath: function (ctx, shape, inBundle) {\n // Better stroking in ShapeBundle\n // Always do it may have performence issue ( fill may be 2x more cost)\n if (inBundle) {\n ctx.moveTo(shape.cx + shape.r, shape.cy);\n } // else {\n // if (ctx.allocate && !ctx.data.length) {\n // ctx.allocate(ctx.CMD_MEM_SIZE.A);\n // }\n // }\n // Better stroking in ShapeBundle\n // ctx.moveTo(shape.cx + shape.r, shape.cy);\n\n\n ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2, true);\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\nrequire(\"./treemap/TreemapSeries\");\n\nrequire(\"./treemap/TreemapView\");\n\nrequire(\"./treemap/treemapAction\");\n\nvar treemapVisual = require(\"./treemap/treemapVisual\");\n\nvar treemapLayout = require(\"./treemap/treemapLayout\");\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.registerVisual(treemapVisual);\necharts.registerLayout(treemapLayout);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nrequire(\"./marker/MarkPointModel\");\n\nrequire(\"./marker/MarkPointView\");\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// HINT Markpoint can't be used too much\necharts.registerPreprocessor(function (opt) {\n // Make sure markPoint component is enabled\n opt.markPoint = opt.markPoint || {};\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 history = require(\"../../dataZoom/history\");\n\nvar lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\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 restoreLang = lang.toolbox.restore;\n\nfunction Restore(model) {\n this.model = model;\n}\n\nRestore.defaultOption = {\n show: true,\n\n /* eslint-disable */\n icon: 'M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5',\n\n /* eslint-enable */\n title: restoreLang.title\n};\nvar proto = Restore.prototype;\n\nproto.onclick = function (ecModel, api, type) {\n history.clear(ecModel);\n api.dispatchAction({\n type: 'restore',\n from: this.uid\n });\n};\n\nfeatureManager.register('restore', Restore);\necharts.registerAction({\n type: 'restore',\n event: 'restore',\n update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n ecModel.resetOption('recreate');\n});\nvar _default = Restore;\nmodule.exports = _default;","var Pattern = function (image, repeat) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {image: ...}`, where this constructor will not be called.\n this.image = image;\n this.repeat = repeat; // Can be cloned\n\n this.type = 'pattern';\n};\n\nPattern.prototype.getCanvasPattern = function (ctx) {\n return ctx.createPattern(this.image, this.repeat || 'repeat');\n};\n\nvar _default = Pattern;\nmodule.exports = _default;","var _core = require(\"./core\");\n\nvar createElement = _core.createElement;\n\nvar util = require(\"../core/util\");\n\nvar logError = require(\"../core/log\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar ZText = require(\"../graphic/Text\");\n\nvar arrayDiff = require(\"../core/arrayDiff2\");\n\nvar GradientManager = require(\"./helper/GradientManager\");\n\nvar ClippathManager = require(\"./helper/ClippathManager\");\n\nvar ShadowManager = require(\"./helper/ShadowManager\");\n\nvar _graphic = require(\"./graphic\");\n\nvar svgPath = _graphic.path;\nvar svgImage = _graphic.image;\nvar svgText = _graphic.text;\n\n/**\n * SVG Painter\n * @module zrender/svg/Painter\n */\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\n\nfunction getSvgProxy(el) {\n if (el instanceof Path) {\n return svgPath;\n } else if (el instanceof ZImage) {\n return svgImage;\n } else if (el instanceof ZText) {\n return svgText;\n } else {\n return svgPath;\n }\n}\n\nfunction checkParentAvailable(parent, child) {\n return child && parent && child.parentNode !== parent;\n}\n\nfunction insertAfter(parent, child, prevSibling) {\n if (checkParentAvailable(parent, child) && prevSibling) {\n var nextSibling = prevSibling.nextSibling;\n nextSibling ? parent.insertBefore(child, nextSibling) : parent.appendChild(child);\n }\n}\n\nfunction prepend(parent, child) {\n if (checkParentAvailable(parent, child)) {\n var firstChild = parent.firstChild;\n firstChild ? parent.insertBefore(child, firstChild) : parent.appendChild(child);\n }\n} // function append(parent, child) {\n// if (checkParentAvailable(parent, child)) {\n// parent.appendChild(child);\n// }\n// }\n\n\nfunction remove(parent, child) {\n if (child && parent && child.parentNode === parent) {\n parent.removeChild(child);\n }\n}\n\nfunction getTextSvgElement(displayable) {\n return displayable.__textSvgEl;\n}\n\nfunction getSvgElement(displayable) {\n return displayable.__svgEl;\n}\n/**\n * @alias module:zrender/svg/Painter\n * @constructor\n * @param {HTMLElement} root 绘图容器\n * @param {module:zrender/Storage} storage\n * @param {Object} opts\n */\n\n\nvar SVGPainter = function (root, storage, opts, zrId) {\n this.root = root;\n this.storage = storage;\n this._opts = opts = util.extend({}, opts || {});\n var svgDom = createElement('svg');\n svgDom.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svgDom.setAttribute('version', '1.1');\n svgDom.setAttribute('baseProfile', 'full');\n svgDom.style.cssText = 'user-select:none;position:absolute;left:0;top:0;';\n var bgRoot = createElement('g');\n svgDom.appendChild(bgRoot);\n var svgRoot = createElement('g');\n svgDom.appendChild(svgRoot);\n this.gradientManager = new GradientManager(zrId, svgRoot);\n this.clipPathManager = new ClippathManager(zrId, svgRoot);\n this.shadowManager = new ShadowManager(zrId, svgRoot);\n var viewport = document.createElement('div');\n viewport.style.cssText = 'overflow:hidden;position:relative';\n this._svgDom = svgDom;\n this._svgRoot = svgRoot;\n this._backgroundRoot = bgRoot;\n this._viewport = viewport;\n root.appendChild(viewport);\n viewport.appendChild(svgDom);\n this.resize(opts.width, opts.height);\n this._visibleList = [];\n};\n\nSVGPainter.prototype = {\n constructor: SVGPainter,\n getType: function () {\n return 'svg';\n },\n getViewportRoot: function () {\n return this._viewport;\n },\n getSvgDom: function () {\n return this._svgDom;\n },\n getSvgRoot: function () {\n return this._svgRoot;\n },\n getViewportRootOffset: function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n },\n refresh: function () {\n var list = this.storage.getDisplayList(true);\n\n this._paintList(list);\n },\n setBackgroundColor: function (backgroundColor) {\n // TODO gradient\n // Insert a bg rect instead of setting background to viewport.\n // Otherwise, the exported SVG don't have background.\n if (this._backgroundRoot && this._backgroundNode) {\n this._backgroundRoot.removeChild(this._backgroundNode);\n }\n\n var bgNode = createElement('rect');\n bgNode.setAttribute('width', this.getWidth());\n bgNode.setAttribute('height', this.getHeight());\n bgNode.setAttribute('x', 0);\n bgNode.setAttribute('y', 0);\n bgNode.setAttribute('id', 0);\n bgNode.style.fill = backgroundColor;\n\n this._backgroundRoot.appendChild(bgNode);\n\n this._backgroundNode = bgNode;\n },\n _paintList: function (list) {\n this.gradientManager.markAllUnused();\n this.clipPathManager.markAllUnused();\n this.shadowManager.markAllUnused();\n var svgRoot = this._svgRoot;\n var visibleList = this._visibleList;\n var listLen = list.length;\n var newVisibleList = [];\n var i;\n\n for (i = 0; i < listLen; i++) {\n var displayable = list[i];\n var svgProxy = getSvgProxy(displayable);\n var svgElement = getSvgElement(displayable) || getTextSvgElement(displayable);\n\n if (!displayable.invisible) {\n if (displayable.__dirty) {\n svgProxy && svgProxy.brush(displayable); // Update clipPath\n\n this.clipPathManager.update(displayable); // Update gradient and shadow\n\n if (displayable.style) {\n this.gradientManager.update(displayable.style.fill);\n this.gradientManager.update(displayable.style.stroke);\n this.shadowManager.update(svgElement, displayable);\n }\n\n displayable.__dirty = false;\n }\n\n newVisibleList.push(displayable);\n }\n }\n\n var diff = arrayDiff(visibleList, newVisibleList);\n var prevSvgElement; // First do remove, in case element moved to the head and do remove\n // after add\n\n for (i = 0; i < diff.length; i++) {\n var item = diff[i];\n\n if (item.removed) {\n for (var k = 0; k < item.count; k++) {\n var displayable = visibleList[item.indices[k]];\n var svgElement = getSvgElement(displayable);\n var textSvgElement = getTextSvgElement(displayable);\n remove(svgRoot, svgElement);\n remove(svgRoot, textSvgElement);\n }\n }\n }\n\n for (i = 0; i < diff.length; i++) {\n var item = diff[i];\n\n if (item.added) {\n for (var k = 0; k < item.count; k++) {\n var displayable = newVisibleList[item.indices[k]];\n var svgElement = getSvgElement(displayable);\n var textSvgElement = getTextSvgElement(displayable);\n prevSvgElement ? insertAfter(svgRoot, svgElement, prevSvgElement) : prepend(svgRoot, svgElement);\n\n if (svgElement) {\n insertAfter(svgRoot, textSvgElement, svgElement);\n } else if (prevSvgElement) {\n insertAfter(svgRoot, textSvgElement, prevSvgElement);\n } else {\n prepend(svgRoot, textSvgElement);\n } // Insert text\n\n\n insertAfter(svgRoot, textSvgElement, svgElement);\n prevSvgElement = textSvgElement || svgElement || prevSvgElement; // zrender.Text only create textSvgElement.\n\n this.gradientManager.addWithoutUpdate(svgElement || textSvgElement, displayable);\n this.shadowManager.addWithoutUpdate(svgElement || textSvgElement, displayable);\n this.clipPathManager.markUsed(displayable);\n }\n } else if (!item.removed) {\n for (var k = 0; k < item.count; k++) {\n var displayable = newVisibleList[item.indices[k]];\n var svgElement = getSvgElement(displayable);\n var textSvgElement = getTextSvgElement(displayable);\n var svgElement = getSvgElement(displayable);\n var textSvgElement = getTextSvgElement(displayable);\n this.gradientManager.markUsed(displayable);\n this.gradientManager.addWithoutUpdate(svgElement || textSvgElement, displayable);\n this.shadowManager.markUsed(displayable);\n this.shadowManager.addWithoutUpdate(svgElement || textSvgElement, displayable);\n this.clipPathManager.markUsed(displayable);\n\n if (textSvgElement) {\n // Insert text.\n insertAfter(svgRoot, textSvgElement, svgElement);\n }\n\n prevSvgElement = svgElement || textSvgElement || prevSvgElement;\n }\n }\n }\n\n this.gradientManager.removeUnused();\n this.clipPathManager.removeUnused();\n this.shadowManager.removeUnused();\n this._visibleList = newVisibleList;\n },\n _getDefs: function (isForceCreating) {\n var svgRoot = this._svgDom;\n var defs = svgRoot.getElementsByTagName('defs');\n\n if (defs.length === 0) {\n // Not exist\n if (isForceCreating) {\n var defs = svgRoot.insertBefore(createElement('defs'), // Create new tag\n svgRoot.firstChild // Insert in the front of svg\n );\n\n if (!defs.contains) {\n // IE doesn't support contains method\n defs.contains = function (el) {\n var children = defs.children;\n\n if (!children) {\n return false;\n }\n\n for (var i = children.length - 1; i >= 0; --i) {\n if (children[i] === el) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n return defs;\n } else {\n return null;\n }\n } else {\n return defs[0];\n }\n },\n resize: function (width, height) {\n var viewport = this._viewport; // FIXME Why ?\n\n viewport.style.display = 'none'; // Save input w/h\n\n var opts = this._opts;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n width = this._getSize(0);\n height = this._getSize(1);\n viewport.style.display = '';\n\n if (this._width !== width || this._height !== height) {\n this._width = width;\n this._height = height;\n var viewportStyle = viewport.style;\n viewportStyle.width = width + 'px';\n viewportStyle.height = height + 'px';\n var svgRoot = this._svgDom; // Set width by 'svgRoot.width = width' is invalid\n\n svgRoot.setAttribute('width', width);\n svgRoot.setAttribute('height', height);\n }\n\n if (this._backgroundNode) {\n this._backgroundNode.setAttribute('width', width);\n\n this._backgroundNode.setAttribute('height', height);\n }\n },\n\n /**\n * 获取绘图区域宽度\n */\n getWidth: function () {\n return this._width;\n },\n\n /**\n * 获取绘图区域高度\n */\n getHeight: function () {\n return this._height;\n },\n _getSize: function (whIdx) {\n var opts = this._opts;\n var wh = ['width', 'height'][whIdx];\n var cwh = ['clientWidth', 'clientHeight'][whIdx];\n var plt = ['paddingLeft', 'paddingTop'][whIdx];\n var prb = ['paddingRight', 'paddingBottom'][whIdx];\n\n if (opts[wh] != null && opts[wh] !== 'auto') {\n return parseFloat(opts[wh]);\n }\n\n var root = this.root; // IE8 does not support getComputedStyle, but it use VML.\n\n var stl = document.defaultView.getComputedStyle(root);\n return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;\n },\n dispose: function () {\n this.root.innerHTML = '';\n this._svgRoot = this._backgroundRoot = this._svgDom = this._backgroundNode = this._viewport = this.storage = null;\n },\n clear: function () {\n if (this._viewport) {\n this.root.removeChild(this._viewport);\n }\n },\n toDataURL: function () {\n this.refresh();\n var html = encodeURIComponent(this._svgDom.outerHTML.replace(/>\\n\\r<'));\n return 'data:image/svg+xml;charset=UTF-8,' + html;\n }\n}; // Not supported methods\n\nfunction createMethodNotSupport(method) {\n return function () {\n logError('In SVG mode painter not support method \"' + method + '\"');\n };\n} // Unsuppoted methods\n\n\nutil.each(['getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers', 'modLayer', 'delLayer', 'clearLayer', 'pathToImage'], function (name) {\n SVGPainter.prototype[name] = createMethodNotSupport(name);\n});\nvar _default = SVGPainter;\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 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;","\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 ChartView = require(\"../../view/Chart\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\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// Update common properties\nvar NORMAL_ITEM_STYLE_PATH = ['itemStyle'];\nvar EMPHASIS_ITEM_STYLE_PATH = ['emphasis', 'itemStyle'];\nvar BoxplotView = ChartView.extend({\n type: 'boxplot',\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var group = this.group;\n var oldData = this._data; // There is no old data only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!this._data) {\n group.removeAll();\n }\n\n var constDim = seriesModel.get('layout') === 'horizontal' ? 1 : 0;\n data.diff(oldData).add(function (newIdx) {\n if (data.hasValue(newIdx)) {\n var itemLayout = data.getItemLayout(newIdx);\n var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n if (!data.hasValue(newIdx)) {\n group.remove(symbolEl);\n return;\n }\n\n var itemLayout = data.getItemLayout(newIdx);\n\n if (!symbolEl) {\n symbolEl = createNormalBox(itemLayout, data, newIdx, constDim);\n } else {\n updateNormalBoxData(itemLayout, symbolEl, data, newIdx);\n }\n\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute();\n this._data = data;\n },\n remove: function (ecModel) {\n var group = this.group;\n var data = this._data;\n this._data = null;\n data && data.eachItemGraphicEl(function (el) {\n el && group.remove(el);\n });\n },\n dispose: zrUtil.noop\n});\nvar BoxPath = Path.extend({\n type: 'boxplotBoxPath',\n shape: {},\n buildPath: function (ctx, shape) {\n var ends = shape.points;\n var i = 0;\n ctx.moveTo(ends[i][0], ends[i][1]);\n i++;\n\n for (; i < 4; i++) {\n ctx.lineTo(ends[i][0], ends[i][1]);\n }\n\n ctx.closePath();\n\n for (; i < ends.length; i++) {\n ctx.moveTo(ends[i][0], ends[i][1]);\n i++;\n ctx.lineTo(ends[i][0], ends[i][1]);\n }\n }\n});\n\nfunction createNormalBox(itemLayout, data, dataIndex, constDim, isInit) {\n var ends = itemLayout.ends;\n var el = new BoxPath({\n shape: {\n points: isInit ? transInit(ends, constDim, itemLayout) : ends\n }\n });\n updateNormalBoxData(itemLayout, el, data, dataIndex, isInit);\n return el;\n}\n\nfunction updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) {\n var seriesModel = data.hostModel;\n var updateMethod = graphic[isInit ? 'initProps' : 'updateProps'];\n updateMethod(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, dataIndex);\n var itemModel = data.getItemModel(dataIndex);\n var normalItemStyleModel = itemModel.getModel(NORMAL_ITEM_STYLE_PATH);\n var borderColor = data.getItemVisual(dataIndex, 'color'); // Exclude borderColor.\n\n var itemStyle = normalItemStyleModel.getItemStyle(['borderColor']);\n itemStyle.stroke = borderColor;\n itemStyle.strokeNoScale = true;\n el.useStyle(itemStyle);\n el.z2 = 100;\n var hoverStyle = itemModel.getModel(EMPHASIS_ITEM_STYLE_PATH).getItemStyle();\n graphic.setHoverStyle(el, hoverStyle);\n}\n\nfunction transInit(points, dim, itemLayout) {\n return zrUtil.map(points, function (point) {\n point = point.slice();\n point[dim] = itemLayout.initBaseline;\n return point;\n });\n}\n\nvar _default = BoxplotView;\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\nrequire(\"./dataZoom/typeDefaulter\");\n\nrequire(\"./dataZoom/DataZoomModel\");\n\nrequire(\"./dataZoom/DataZoomView\");\n\nrequire(\"./dataZoom/SelectZoomModel\");\n\nrequire(\"./dataZoom/SelectZoomView\");\n\nrequire(\"./dataZoom/dataZoomProcessor\");\n\nrequire(\"./dataZoom/dataZoomAction\");","\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 TimelineModel = require(\"./TimelineModel\");\n\nvar dataFormatMixin = require(\"../../model/mixin/dataFormat\");\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 SliderTimelineModel = TimelineModel.extend({\n type: 'timeline.slider',\n\n /**\n * @protected\n */\n defaultOption: {\n backgroundColor: 'rgba(0,0,0,0)',\n // 时间轴背景颜色\n borderColor: '#ccc',\n // 时间轴边框颜色\n borderWidth: 0,\n // 时间轴边框线宽,单位px,默认为0(无边框)\n orient: 'horizontal',\n // 'vertical'\n inverse: false,\n tooltip: {\n // boolean or Object\n trigger: 'item' // data item may also have tootip attr.\n\n },\n symbol: 'emptyCircle',\n symbolSize: 10,\n lineStyle: {\n show: true,\n width: 2,\n color: '#304654'\n },\n label: {\n // 文本标签\n position: 'auto',\n // auto left right top bottom\n // When using number, label position is not\n // restricted by viewRect.\n // positive: right/bottom, negative: left/top\n show: true,\n interval: 'auto',\n rotate: 0,\n // formatter: null,\n // 其余属性默认使用全局文本样式,详见TEXTSTYLE\n color: '#304654'\n },\n itemStyle: {\n color: '#304654',\n borderWidth: 1\n },\n checkpointStyle: {\n symbol: 'circle',\n symbolSize: 13,\n color: '#c23531',\n borderWidth: 5,\n borderColor: 'rgba(194,53,49, 0.5)',\n animation: true,\n animationDuration: 300,\n animationEasing: 'quinticInOut'\n },\n controlStyle: {\n show: true,\n showPlayBtn: true,\n showPrevBtn: true,\n showNextBtn: true,\n itemSize: 22,\n itemGap: 12,\n position: 'left',\n // 'left' 'right' 'top' 'bottom'\n playIcon: 'path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z',\n // jshint ignore:line\n stopIcon: 'path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z',\n // jshint ignore:line\n nextIcon: 'path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z',\n // jshint ignore:line\n prevIcon: 'path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z',\n // jshint ignore:line\n color: '#304654',\n borderColor: '#304654',\n borderWidth: 1\n },\n emphasis: {\n label: {\n show: true,\n // 其余属性默认使用全局文本样式,详见TEXTSTYLE\n color: '#c23531'\n },\n itemStyle: {\n color: '#c23531'\n },\n controlStyle: {\n color: '#c23531',\n borderColor: '#c23531',\n borderWidth: 2\n }\n },\n data: []\n }\n});\nzrUtil.mixin(SliderTimelineModel, dataFormatMixin);\nvar _default = SliderTimelineModel;\nmodule.exports = _default;","import React, { useState, useEffect } from 'react'\nimport get from 'lodash/get'\nimport fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport Loading from 'Components/loading'\n\ninterface ICarItem {\n info: any\n type: number\n}\ninterface ICar {\n name: string\n data: ICarItem[]\n}\ninterface IProp {\n show?: boolean\n style?: React.CSSProperties\n seriesId?: number\n onChange: (id: number, name: string) => void\n}\n\nconst Car = ({ seriesId, onChange, show = false, style = {} }: IProp) => {\n const [car, setCar] = useState([])\n const [loading, setLoading] = useState(false)\n const [empty, setEmpty] = useState(false)\n useEffect(() => {\n if (!seriesId) return\n fetchCar()\n }, [seriesId])\n // 获取品牌数据\n function fetchCar() {\n if (!seriesId) return\n setLoading(true)\n fetch(getUrl(`/motor/garage/get_cars_by_series_id/${seriesId}/?no_sales=1`))\n .then(res => {\n setLoading(false)\n const list = get(res, 'data.list', [])\n if (list.length === 0) {\n setEmpty(true)\n return\n }\n if (res.message === 'success') {\n const carList: ICar[] = []\n list.forEach((item: any) => {\n const car = { name: item.name, data: [] }\n get(item, 'data', []).forEach((item2: any) => {\n car.data = car.data.concat(item2.data)\n })\n carList.push(car)\n })\n setCar(carList)\n }\n })\n .catch(e => {\n setLoading(false)\n })\n }\n\n if (!show || !seriesId) return null\n return (\n
\n {loading && }\n {car.map((item: ICar) => (\n
\n

{item.name}

\n {item.data.map(item2 => (\n {\n e.stopPropagation()\n onChange(item2.info.id, item2.info.name)\n }}\n >\n {item2.info.name}\n

\n ))}\n
\n ))}\n \n
\n )\n}\n\nexport default Car\n","var zrUtil = require(\"../core/util\");\n\nvar Gradient = require(\"./Gradient\");\n\n/**\n * x, y, r are all percent from 0 to 1\n * @param {number} [x=0.5]\n * @param {number} [y=0.5]\n * @param {number} [r=0.5]\n * @param {Array.} [colorStops]\n * @param {boolean} [globalCoord=false]\n */\nvar RadialGradient = function (x, y, r, colorStops, globalCoord) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {type: 'radial', colorStops: ...}`, where\n // this constructor will not be called.\n this.x = x == null ? 0.5 : x;\n this.y = y == null ? 0.5 : y;\n this.r = r == null ? 0.5 : r; // Can be cloned\n\n this.type = 'radial'; // If use global coord\n\n this.global = globalCoord || false;\n Gradient.call(this, colorStops);\n};\n\nRadialGradient.prototype = {\n constructor: RadialGradient\n};\nzrUtil.inherits(RadialGradient, Gradient);\nvar _default = RadialGradient;\nmodule.exports = _default;","/**\n * zrender: 生成唯一id\n *\n * @author errorrik (errorrik@gmail.com)\n */\nvar idStart = 0x0907;\n\nfunction _default() {\n return idStart++;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = {\n getBoxLayoutParams: function () {\n return {\n left: this.get('left'),\n top: this.get('top'),\n right: this.get('right'),\n bottom: this.get('bottom'),\n width: this.get('width'),\n height: this.get('height')\n };\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction normalize(a) {\n if (!(a instanceof Array)) {\n a = [a, a];\n }\n\n return a;\n}\n\nfunction _default(ecModel) {\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var graph = seriesModel.getGraph();\n var edgeData = seriesModel.getEdgeData();\n var symbolType = normalize(seriesModel.get('edgeSymbol'));\n var symbolSize = normalize(seriesModel.get('edgeSymbolSize'));\n var colorQuery = 'lineStyle.color'.split('.');\n var opacityQuery = 'lineStyle.opacity'.split('.');\n edgeData.setVisual('fromSymbol', symbolType && symbolType[0]);\n edgeData.setVisual('toSymbol', symbolType && symbolType[1]);\n edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n edgeData.setVisual('color', seriesModel.get(colorQuery));\n edgeData.setVisual('opacity', seriesModel.get(opacityQuery));\n edgeData.each(function (idx) {\n var itemModel = edgeData.getItemModel(idx);\n var edge = graph.getEdgeByIndex(idx);\n var symbolType = normalize(itemModel.getShallow('symbol', true));\n var symbolSize = normalize(itemModel.getShallow('symbolSize', true)); // Edge visual must after node visual\n\n var color = itemModel.get(colorQuery);\n var opacity = itemModel.get(opacityQuery);\n\n switch (color) {\n case 'source':\n color = edge.node1.getVisual('color');\n break;\n\n case 'target':\n color = edge.node2.getVisual('color');\n break;\n }\n\n symbolType[0] && edge.setVisual('fromSymbol', symbolType[0]);\n symbolType[1] && edge.setVisual('toSymbol', symbolType[1]);\n symbolSize[0] && edge.setVisual('fromSymbolSize', symbolSize[0]);\n symbolSize[1] && edge.setVisual('toSymbolSize', symbolSize[1]);\n edge.setVisual('color', color);\n edge.setVisual('opacity', opacity);\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 ComponentModel = require(\"../../model/Component\");\n\nvar makeStyleMapper = require(\"../../model/mixin/makeStyleMapper\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\n\nvar numberUtil = require(\"../../util/number\");\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 AxisModel = ComponentModel.extend({\n type: 'baseParallelAxis',\n\n /**\n * @type {module:echarts/coord/parallel/Axis}\n */\n axis: null,\n\n /**\n * @type {Array.}\n * @readOnly\n */\n activeIntervals: [],\n\n /**\n * @return {Object}\n */\n getAreaSelectStyle: function () {\n return makeStyleMapper([['fill', 'color'], ['lineWidth', 'borderWidth'], ['stroke', 'borderColor'], ['width', 'width'], ['opacity', 'opacity']])(this.getModel('areaSelectStyle'));\n },\n\n /**\n * The code of this feature is put on AxisModel but not ParallelAxis,\n * because axisModel can be alive after echarts updating but instance of\n * ParallelAxis having been disposed. this._activeInterval should be kept\n * when action dispatched (i.e. legend click).\n *\n * @param {Array.>} intervals interval.length === 0\n * means set all active.\n * @public\n */\n setActiveIntervals: function (intervals) {\n var activeIntervals = this.activeIntervals = zrUtil.clone(intervals); // Normalize\n\n if (activeIntervals) {\n for (var i = activeIntervals.length - 1; i >= 0; i--) {\n numberUtil.asc(activeIntervals[i]);\n }\n }\n },\n\n /**\n * @param {number|string} [value] When attempting to detect 'no activeIntervals set',\n * value can not be input.\n * @return {string} 'normal': no activeIntervals set,\n * 'active',\n * 'inactive'.\n * @public\n */\n getActiveState: function (value) {\n var activeIntervals = this.activeIntervals;\n\n if (!activeIntervals.length) {\n return 'normal';\n }\n\n if (value == null || isNaN(value)) {\n return 'inactive';\n } // Simple optimization\n\n\n if (activeIntervals.length === 1) {\n var interval = activeIntervals[0];\n\n if (interval[0] <= value && value <= interval[1]) {\n return 'active';\n }\n } else {\n for (var i = 0, len = activeIntervals.length; i < len; i++) {\n if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) {\n return 'active';\n }\n }\n }\n\n return 'inactive';\n }\n});\nvar defaultOption = {\n type: 'value',\n\n /**\n * @type {Array.}\n */\n dim: null,\n // 0, 1, 2, ...\n // parallelIndex: null,\n areaSelectStyle: {\n width: 20,\n borderWidth: 1,\n borderColor: 'rgba(160,197,232)',\n color: 'rgba(160,197,232)',\n opacity: 0.3\n },\n realtime: true,\n // Whether realtime update view when select.\n z: 10\n};\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\n\nfunction getAxisType(axisName, option) {\n return option.type || (option.data ? 'category' : 'value');\n}\n\naxisModelCreator('parallel', AxisModel, getAxisType, defaultOption);\nvar _default = AxisModel;\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 graphicUtil = require(\"../util/graphic\");\n\nvar _labelHelper = require(\"./helper/labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\nvar createListFromArray = require(\"./helper/createListFromArray\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar getLayoutOnAxis = _barGrid.getLayoutOnAxis;\n\nvar DataDiffer = require(\"../data/DataDiffer\");\n\nvar SeriesModel = require(\"../model/Series\");\n\nvar Model = require(\"../model/Model\");\n\nvar ChartView = require(\"../view/Chart\");\n\nvar _createClipPathFromCoordSys = require(\"./helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\nvar prepareCartesian2d = require(\"../coord/cartesian/prepareCustom\");\n\nvar prepareGeo = require(\"../coord/geo/prepareCustom\");\n\nvar prepareSingleAxis = require(\"../coord/single/prepareCustom\");\n\nvar preparePolar = require(\"../coord/polar/prepareCustom\");\n\nvar prepareCalendar = require(\"../coord/calendar/prepareCustom\");\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 CACHED_LABEL_STYLE_PROPERTIES = graphicUtil.CACHED_LABEL_STYLE_PROPERTIES;\nvar ITEM_STYLE_NORMAL_PATH = ['itemStyle'];\nvar ITEM_STYLE_EMPHASIS_PATH = ['emphasis', 'itemStyle'];\nvar LABEL_NORMAL = ['label'];\nvar LABEL_EMPHASIS = ['emphasis', 'label']; // Use prefix to avoid index to be the same as el.name,\n// which will cause weird udpate animation.\n\nvar GROUP_DIFF_PREFIX = 'e\\0\\0';\n/**\n * To reduce total package size of each coordinate systems, the modules `prepareCustom`\n * of each coordinate systems are not required by each coordinate systems directly, but\n * required by the module `custom`.\n *\n * prepareInfoForCustomSeries {Function}: optional\n * @return {Object} {coordSys: {...}, api: {\n * coord: function (data, clamp) {}, // return point in global.\n * size: function (dataSize, dataItem) {} // return size of each axis in coordSys.\n * }}\n */\n\nvar prepareCustoms = {\n cartesian2d: prepareCartesian2d,\n geo: prepareGeo,\n singleAxis: prepareSingleAxis,\n polar: preparePolar,\n calendar: prepareCalendar\n}; // ------\n// Model\n// ------\n\nSeriesModel.extend({\n type: 'series.custom',\n dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'],\n defaultOption: {\n coordinateSystem: 'cartesian2d',\n // Can be set as 'none'\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n useTransform: true,\n // Custom series will not clip by default.\n // Some case will use custom series to draw label\n // For example https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight\n // Only works on polar and cartesian2d coordinate system.\n clip: false // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // Polar coordinate system\n // polarIndex: 0,\n // Geo coordinate system\n // geoIndex: 0,\n // label: {}\n // itemStyle: {}\n\n },\n\n /**\n * @override\n */\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this);\n },\n\n /**\n * @override\n */\n getDataParams: function (dataIndex, dataType, el) {\n var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n el && (params.info = el.info);\n return params;\n }\n}); // -----\n// View\n// -----\n\nChartView.extend({\n type: 'custom',\n\n /**\n * @private\n * @type {module:echarts/data/List}\n */\n _data: null,\n\n /**\n * @override\n */\n render: function (customSeries, ecModel, api, payload) {\n var oldData = this._data;\n var data = customSeries.getData();\n var group = this.group;\n var renderItem = makeRenderItem(customSeries, data, ecModel, api); // By default, merge mode is applied. In most cases, custom series is\n // used in the scenario that data amount is not large but graphic elements\n // is complicated, where merge mode is probably necessary for optimization.\n // For example, reuse graphic elements and only update the transform when\n // roam or data zoom according to `actionType`.\n\n data.diff(oldData).add(function (newIdx) {\n createOrUpdate(null, newIdx, renderItem(newIdx, payload), customSeries, group, data);\n }).update(function (newIdx, oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n createOrUpdate(el, newIdx, renderItem(newIdx, payload), customSeries, group, data);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute(); // Do clipping\n\n var clipPath = customSeries.get('clip', true) ? createClipPath(customSeries.coordinateSystem, false, customSeries) : null;\n\n if (clipPath) {\n group.setClipPath(clipPath);\n } else {\n group.removeClipPath();\n }\n\n this._data = data;\n },\n incrementalPrepareRender: function (customSeries, ecModel, api) {\n this.group.removeAll();\n this._data = null;\n },\n incrementalRender: function (params, customSeries, ecModel, api, payload) {\n var data = customSeries.getData();\n var renderItem = makeRenderItem(customSeries, data, ecModel, api);\n\n function setIncrementalAndHoverLayer(el) {\n if (!el.isGroup) {\n el.incremental = true;\n el.useHoverLayer = true;\n }\n }\n\n for (var idx = params.start; idx < params.end; idx++) {\n var el = createOrUpdate(null, idx, renderItem(idx, payload), customSeries, this.group, data);\n el.traverse(setIncrementalAndHoverLayer);\n }\n },\n\n /**\n * @override\n */\n dispose: zrUtil.noop,\n\n /**\n * @override\n */\n filterForExposedEvent: function (eventType, query, targetEl, packedEvent) {\n var elementName = query.element;\n\n if (elementName == null || targetEl.name === elementName) {\n return true;\n } // Enable to give a name on a group made by `renderItem`, and listen\n // events that triggerd by its descendents.\n\n\n while ((targetEl = targetEl.parent) && targetEl !== this.group) {\n if (targetEl.name === elementName) {\n return true;\n }\n }\n\n return false;\n }\n});\n\nfunction createEl(elOption) {\n var graphicType = elOption.type;\n var el; // Those graphic elements are not shapes. They should not be\n // overwritten by users, so do them first.\n\n if (graphicType === 'path') {\n var shape = elOption.shape; // Using pathRect brings convenience to users sacle svg path.\n\n var pathRect = shape.width != null && shape.height != null ? {\n x: shape.x || 0,\n y: shape.y || 0,\n width: shape.width,\n height: shape.height\n } : null;\n var pathData = getPathData(shape); // Path is also used for icon, so layout 'center' by default.\n\n el = graphicUtil.makePath(pathData, null, pathRect, shape.layout || 'center');\n el.__customPathData = pathData;\n } else if (graphicType === 'image') {\n el = new graphicUtil.Image({});\n el.__customImagePath = elOption.style.image;\n } else if (graphicType === 'text') {\n el = new graphicUtil.Text({});\n el.__customText = elOption.style.text;\n } else if (graphicType === 'group') {\n el = new graphicUtil.Group();\n } else if (graphicType === 'compoundPath') {\n throw new Error('\"compoundPath\" is not supported yet.');\n } else {\n var Clz = graphicUtil.getShapeClass(graphicType);\n el = new Clz();\n }\n\n el.__customGraphicType = graphicType;\n el.name = elOption.name;\n return el;\n}\n\nfunction updateEl(el, dataIndex, elOption, animatableModel, data, isInit, isRoot) {\n var transitionProps = {};\n var elOptionStyle = elOption.style || {};\n elOption.shape && (transitionProps.shape = zrUtil.clone(elOption.shape));\n elOption.position && (transitionProps.position = elOption.position.slice());\n elOption.scale && (transitionProps.scale = elOption.scale.slice());\n elOption.origin && (transitionProps.origin = elOption.origin.slice());\n elOption.rotation && (transitionProps.rotation = elOption.rotation);\n\n if (el.type === 'image' && elOption.style) {\n var targetStyle = transitionProps.style = {};\n zrUtil.each(['x', 'y', 'width', 'height'], function (prop) {\n prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit);\n });\n }\n\n if (el.type === 'text' && elOption.style) {\n var targetStyle = transitionProps.style = {};\n zrUtil.each(['x', 'y'], function (prop) {\n prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit);\n }); // Compatible with previous: both support\n // textFill and fill, textStroke and stroke in 'text' element.\n\n !elOptionStyle.hasOwnProperty('textFill') && elOptionStyle.fill && (elOptionStyle.textFill = elOptionStyle.fill);\n !elOptionStyle.hasOwnProperty('textStroke') && elOptionStyle.stroke && (elOptionStyle.textStroke = elOptionStyle.stroke);\n }\n\n if (el.type !== 'group') {\n el.useStyle(elOptionStyle); // Init animation.\n\n if (isInit) {\n el.style.opacity = 0;\n var targetOpacity = elOptionStyle.opacity;\n targetOpacity == null && (targetOpacity = 1);\n graphicUtil.initProps(el, {\n style: {\n opacity: targetOpacity\n }\n }, animatableModel, dataIndex);\n }\n }\n\n if (isInit) {\n el.attr(transitionProps);\n } else {\n graphicUtil.updateProps(el, transitionProps, animatableModel, dataIndex);\n } // Merge by default.\n // z2 must not be null/undefined, otherwise sort error may occur.\n\n\n elOption.hasOwnProperty('z2') && el.attr('z2', elOption.z2 || 0);\n elOption.hasOwnProperty('silent') && el.attr('silent', elOption.silent);\n elOption.hasOwnProperty('invisible') && el.attr('invisible', elOption.invisible);\n elOption.hasOwnProperty('ignore') && el.attr('ignore', elOption.ignore); // `elOption.info` enables user to mount some info on\n // elements and use them in event handlers.\n // Update them only when user specified, otherwise, remain.\n\n elOption.hasOwnProperty('info') && el.attr('info', elOption.info); // If `elOption.styleEmphasis` is `false`, remove hover style. The\n // logic is ensured by `graphicUtil.setElementHoverStyle`.\n\n var styleEmphasis = elOption.styleEmphasis; // hoverStyle should always be set here, because if the hover style\n // may already be changed, where the inner cache should be reset.\n\n graphicUtil.setElementHoverStyle(el, styleEmphasis);\n\n if (isRoot) {\n graphicUtil.setAsHighDownDispatcher(el, styleEmphasis !== false);\n }\n}\n\nfunction prepareStyleTransition(prop, targetStyle, elOptionStyle, oldElStyle, isInit) {\n if (elOptionStyle[prop] != null && !isInit) {\n targetStyle[prop] = elOptionStyle[prop];\n elOptionStyle[prop] = oldElStyle[prop];\n }\n}\n\nfunction makeRenderItem(customSeries, data, ecModel, api) {\n var renderItem = customSeries.get('renderItem');\n var coordSys = customSeries.coordinateSystem;\n var prepareResult = {};\n\n if (coordSys) {\n prepareResult = coordSys.prepareCustoms ? coordSys.prepareCustoms() : prepareCustoms[coordSys.type](coordSys);\n }\n\n var userAPI = zrUtil.defaults({\n getWidth: api.getWidth,\n getHeight: api.getHeight,\n getZr: api.getZr,\n getDevicePixelRatio: api.getDevicePixelRatio,\n value: value,\n style: style,\n styleEmphasis: styleEmphasis,\n visual: visual,\n barLayout: barLayout,\n currentSeriesIndices: currentSeriesIndices,\n font: font\n }, prepareResult.api || {});\n var userParams = {\n // The life cycle of context: current round of rendering.\n // The global life cycle is probably not necessary, because\n // user can store global status by themselves.\n context: {},\n seriesId: customSeries.id,\n seriesName: customSeries.name,\n seriesIndex: customSeries.seriesIndex,\n coordSys: prepareResult.coordSys,\n dataInsideLength: data.count(),\n encode: wrapEncodeDef(customSeries.getData())\n }; // Do not support call `api` asynchronously without dataIndexInside input.\n\n var currDataIndexInside;\n var currDirty = true;\n var currItemModel;\n var currLabelNormalModel;\n var currLabelEmphasisModel;\n var currVisualColor;\n return function (dataIndexInside, payload) {\n currDataIndexInside = dataIndexInside;\n currDirty = true;\n return renderItem && renderItem(zrUtil.defaults({\n dataIndexInside: dataIndexInside,\n dataIndex: data.getRawIndex(dataIndexInside),\n // Can be used for optimization when zoom or roam.\n actionType: payload ? payload.type : null\n }, userParams), userAPI);\n }; // Do not update cache until api called.\n\n function updateCache(dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n\n if (currDirty) {\n currItemModel = data.getItemModel(dataIndexInside);\n currLabelNormalModel = currItemModel.getModel(LABEL_NORMAL);\n currLabelEmphasisModel = currItemModel.getModel(LABEL_EMPHASIS);\n currVisualColor = data.getItemVisual(dataIndexInside, 'color');\n currDirty = false;\n }\n }\n /**\n * @public\n * @param {number|string} dim\n * @param {number} [dataIndexInside=currDataIndexInside]\n * @return {number|string} value\n */\n\n\n function value(dim, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n return data.get(data.getDimension(dim || 0), dataIndexInside);\n }\n /**\n * By default, `visual` is applied to style (to support visualMap).\n * `visual.color` is applied at `fill`. If user want apply visual.color on `stroke`,\n * it can be implemented as:\n * `api.style({stroke: api.visual('color'), fill: null})`;\n * @public\n * @param {Object} [extra]\n * @param {number} [dataIndexInside=currDataIndexInside]\n */\n\n\n function style(extra, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n updateCache(dataIndexInside);\n var itemStyle = currItemModel.getModel(ITEM_STYLE_NORMAL_PATH).getItemStyle();\n currVisualColor != null && (itemStyle.fill = currVisualColor);\n var opacity = data.getItemVisual(dataIndexInside, 'opacity');\n opacity != null && (itemStyle.opacity = opacity);\n var labelModel = extra ? applyExtraBefore(extra, currLabelNormalModel) : currLabelNormalModel;\n graphicUtil.setTextStyle(itemStyle, labelModel, null, {\n autoColor: currVisualColor,\n isRectText: true\n });\n itemStyle.text = labelModel.getShallow('show') ? zrUtil.retrieve2(customSeries.getFormattedLabel(dataIndexInside, 'normal'), getDefaultLabel(data, dataIndexInside)) : null;\n extra && applyExtraAfter(itemStyle, extra);\n return itemStyle;\n }\n /**\n * @public\n * @param {Object} [extra]\n * @param {number} [dataIndexInside=currDataIndexInside]\n */\n\n\n function styleEmphasis(extra, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n updateCache(dataIndexInside);\n var itemStyle = currItemModel.getModel(ITEM_STYLE_EMPHASIS_PATH).getItemStyle();\n var labelModel = extra ? applyExtraBefore(extra, currLabelEmphasisModel) : currLabelEmphasisModel;\n graphicUtil.setTextStyle(itemStyle, labelModel, null, {\n isRectText: true\n }, true);\n itemStyle.text = labelModel.getShallow('show') ? zrUtil.retrieve3(customSeries.getFormattedLabel(dataIndexInside, 'emphasis'), customSeries.getFormattedLabel(dataIndexInside, 'normal'), getDefaultLabel(data, dataIndexInside)) : null;\n extra && applyExtraAfter(itemStyle, extra);\n return itemStyle;\n }\n /**\n * @public\n * @param {string} visualType\n * @param {number} [dataIndexInside=currDataIndexInside]\n */\n\n\n function visual(visualType, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n return data.getItemVisual(dataIndexInside, visualType);\n }\n /**\n * @public\n * @param {number} opt.count Positive interger.\n * @param {number} [opt.barWidth]\n * @param {number} [opt.barMaxWidth]\n * @param {number} [opt.barMinWidth]\n * @param {number} [opt.barGap]\n * @param {number} [opt.barCategoryGap]\n * @return {Object} {width, offset, offsetCenter} is not support, return undefined.\n */\n\n\n function barLayout(opt) {\n if (coordSys.getBaseAxis) {\n var baseAxis = coordSys.getBaseAxis();\n return getLayoutOnAxis(zrUtil.defaults({\n axis: baseAxis\n }, opt), api);\n }\n }\n /**\n * @public\n * @return {Array.}\n */\n\n\n function currentSeriesIndices() {\n return ecModel.getCurrentSeriesIndices();\n }\n /**\n * @public\n * @param {Object} opt\n * @param {string} [opt.fontStyle]\n * @param {number} [opt.fontWeight]\n * @param {number} [opt.fontSize]\n * @param {string} [opt.fontFamily]\n * @return {string} font string\n */\n\n\n function font(opt) {\n return graphicUtil.getFont(opt, ecModel);\n }\n}\n\nfunction wrapEncodeDef(data) {\n var encodeDef = {};\n zrUtil.each(data.dimensions, function (dimName, dataDimIndex) {\n var dimInfo = data.getDimensionInfo(dimName);\n\n if (!dimInfo.isExtraCoord) {\n var coordDim = dimInfo.coordDim;\n var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || [];\n dataDims[dimInfo.coordDimIndex] = dataDimIndex;\n }\n });\n return encodeDef;\n}\n\nfunction createOrUpdate(el, dataIndex, elOption, animatableModel, group, data) {\n el = doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data, true);\n el && data.setItemGraphicEl(dataIndex, el);\n return el;\n}\n\nfunction doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data, isRoot) {\n // [Rule]\n // By default, follow merge mode.\n // (It probably brings benifit for performance in some cases of large data, where\n // user program can be optimized to that only updated props needed to be re-calculated,\n // or according to `actionType` some calculation can be skipped.)\n // If `renderItem` returns `null`/`undefined`/`false`, remove the previous el if existing.\n // (It seems that violate the \"merge\" principle, but most of users probably intuitively\n // regard \"return;\" as \"show nothing element whatever\", so make a exception to meet the\n // most cases.)\n var simplyRemove = !elOption; // `null`/`undefined`/`false`\n\n elOption = elOption || {};\n var elOptionType = elOption.type;\n var elOptionShape = elOption.shape;\n var elOptionStyle = elOption.style;\n\n if (el && (simplyRemove // || elOption.$merge === false\n // If `elOptionType` is `null`, follow the merge principle.\n || elOptionType != null && elOptionType !== el.__customGraphicType || elOptionType === 'path' && hasOwnPathData(elOptionShape) && getPathData(elOptionShape) !== el.__customPathData || elOptionType === 'image' && hasOwn(elOptionStyle, 'image') && elOptionStyle.image !== el.__customImagePath // FIXME test and remove this restriction?\n || elOptionType === 'text' && hasOwn(elOptionShape, 'text') && elOptionStyle.text !== el.__customText)) {\n group.remove(el);\n el = null;\n } // `elOption.type` is undefined when `renderItem` returns nothing.\n\n\n if (simplyRemove) {\n return;\n }\n\n var isInit = !el;\n !el && (el = createEl(elOption));\n updateEl(el, dataIndex, elOption, animatableModel, data, isInit, isRoot);\n\n if (elOptionType === 'group') {\n mergeChildren(el, dataIndex, elOption, animatableModel, data);\n } // Always add whatever already added to ensure sequence.\n\n\n group.add(el);\n return el;\n} // Usage:\n// (1) By default, `elOption.$mergeChildren` is `'byIndex'`, which indicates that\n// the existing children will not be removed, and enables the feature that\n// update some of the props of some of the children simply by construct\n// the returned children of `renderItem` like:\n// `var children = group.children = []; children[3] = {opacity: 0.5};`\n// (2) If `elOption.$mergeChildren` is `'byName'`, add/update/remove children\n// by child.name. But that might be lower performance.\n// (3) If `elOption.$mergeChildren` is `false`, the existing children will be\n// replaced totally.\n// (4) If `!elOption.children`, following the \"merge\" principle, nothing will happen.\n//\n// For implementation simpleness, do not provide a direct way to remove sinlge\n// child (otherwise the total indicies of the children array have to be modified).\n// User can remove a single child by set its `ignore` as `true` or replace\n// it by another element, where its `$merge` can be set as `true` if necessary.\n\n\nfunction mergeChildren(el, dataIndex, elOption, animatableModel, data) {\n var newChildren = elOption.children;\n var newLen = newChildren ? newChildren.length : 0;\n var mergeChildren = elOption.$mergeChildren; // `diffChildrenByName` has been deprecated.\n\n var byName = mergeChildren === 'byName' || elOption.diffChildrenByName;\n var notMerge = mergeChildren === false; // For better performance on roam update, only enter if necessary.\n\n if (!newLen && !byName && !notMerge) {\n return;\n }\n\n if (byName) {\n diffGroupChildren({\n oldChildren: el.children() || [],\n newChildren: newChildren || [],\n dataIndex: dataIndex,\n animatableModel: animatableModel,\n group: el,\n data: data\n });\n return;\n }\n\n notMerge && el.removeAll(); // Mapping children of a group simply by index, which\n // might be better performance.\n\n var index = 0;\n\n for (; index < newLen; index++) {\n newChildren[index] && doCreateOrUpdate(el.childAt(index), dataIndex, newChildren[index], animatableModel, el, data);\n }\n}\n\nfunction diffGroupChildren(context) {\n new DataDiffer(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute();\n}\n\nfunction getKey(item, idx) {\n var name = item && item.name;\n return name != null ? name : GROUP_DIFF_PREFIX + idx;\n}\n\nfunction processAddUpdate(newIndex, oldIndex) {\n var context = this.context;\n var childOption = newIndex != null ? context.newChildren[newIndex] : null;\n var child = oldIndex != null ? context.oldChildren[oldIndex] : null;\n doCreateOrUpdate(child, context.dataIndex, childOption, context.animatableModel, context.group, context.data);\n} // `graphic#applyDefaultTextStyle` will cache\n// textFill, textStroke, textStrokeWidth.\n// We have to do this trick.\n\n\nfunction applyExtraBefore(extra, model) {\n var dummyModel = new Model({}, model);\n zrUtil.each(CACHED_LABEL_STYLE_PROPERTIES, function (stylePropName, modelPropName) {\n if (extra.hasOwnProperty(stylePropName)) {\n dummyModel.option[modelPropName] = extra[stylePropName];\n }\n });\n return dummyModel;\n}\n\nfunction applyExtraAfter(itemStyle, extra) {\n for (var key in extra) {\n if (extra.hasOwnProperty(key) || !CACHED_LABEL_STYLE_PROPERTIES.hasOwnProperty(key)) {\n itemStyle[key] = extra[key];\n }\n }\n}\n\nfunction processRemove(oldIndex) {\n var context = this.context;\n var child = context.oldChildren[oldIndex];\n child && context.group.remove(child);\n}\n\nfunction getPathData(shape) {\n // \"d\" follows the SVG convention.\n return shape && (shape.pathData || shape.d);\n}\n\nfunction hasOwnPathData(shape) {\n return shape && (shape.hasOwnProperty('pathData') || shape.hasOwnProperty('d'));\n}\n\nfunction hasOwn(host, prop) {\n return host && host.hasOwnProperty(prop);\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 textContain = require(\"zrender/lib/contain/text\");\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar _axisHelper = require(\"./axisHelper\");\n\nvar makeLabelFormatter = _axisHelper.makeLabelFormatter;\nvar getOptionCategoryInterval = _axisHelper.getOptionCategoryInterval;\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\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();\n/**\n * @param {module:echats/coord/Axis} axis\n * @return {Object} {\n * labels: [{\n * formattedLabel: string,\n * rawLabel: string,\n * tickValue: number\n * }, ...],\n * labelCategoryInterval: number\n * }\n */\n\nfunction createAxisLabels(axis) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryLabels(axis) : makeRealNumberLabels(axis);\n}\n/**\n * @param {module:echats/coord/Axis} axis\n * @param {module:echarts/model/Model} tickModel For example, can be axisTick, splitLine, splitArea.\n * @return {Object} {\n * ticks: Array.\n * tickCategoryInterval: number\n * }\n */\n\n\nfunction createAxisTicks(axis, tickModel) {\n // Only ordinal scale support tick interval\n return axis.type === 'category' ? makeCategoryTicks(axis, tickModel) : {\n ticks: axis.scale.getTicks()\n };\n}\n\nfunction makeCategoryLabels(axis) {\n var labelModel = axis.getLabelModel();\n var result = makeCategoryLabelsActually(axis, labelModel);\n return !labelModel.get('show') || axis.scale.isBlank() ? {\n labels: [],\n labelCategoryInterval: result.labelCategoryInterval\n } : result;\n}\n\nfunction makeCategoryLabelsActually(axis, labelModel) {\n var labelsCache = getListCache(axis, 'labels');\n var optionLabelInterval = getOptionCategoryInterval(labelModel);\n var result = listCacheGet(labelsCache, optionLabelInterval);\n\n if (result) {\n return result;\n }\n\n var labels;\n var numericLabelInterval;\n\n if (zrUtil.isFunction(optionLabelInterval)) {\n labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\n } else {\n numericLabelInterval = optionLabelInterval === 'auto' ? makeAutoCategoryInterval(axis) : optionLabelInterval;\n labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(labelsCache, optionLabelInterval, {\n labels: labels,\n labelCategoryInterval: numericLabelInterval\n });\n}\n\nfunction makeCategoryTicks(axis, tickModel) {\n var ticksCache = getListCache(axis, 'ticks');\n var optionTickInterval = getOptionCategoryInterval(tickModel);\n var result = listCacheGet(ticksCache, optionTickInterval);\n\n if (result) {\n return result;\n }\n\n var ticks;\n var tickCategoryInterval; // Optimize for the case that large category data and no label displayed,\n // we should not return all ticks.\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n ticks = [];\n }\n\n if (zrUtil.isFunction(optionTickInterval)) {\n ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\n } // Always use label interval by default despite label show. Consider this\n // scenario, Use multiple grid with the xAxis sync, and only one xAxis shows\n // labels. `splitLine` and `axisTick` should be consistent in this case.\n else if (optionTickInterval === 'auto') {\n var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\n tickCategoryInterval = labelsResult.labelCategoryInterval;\n ticks = zrUtil.map(labelsResult.labels, function (labelItem) {\n return labelItem.tickValue;\n });\n } else {\n tickCategoryInterval = optionTickInterval;\n ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\n } // Cache to avoid calling interval function repeatly.\n\n\n return listCacheSet(ticksCache, optionTickInterval, {\n ticks: ticks,\n tickCategoryInterval: tickCategoryInterval\n });\n}\n\nfunction makeRealNumberLabels(axis) {\n var ticks = axis.scale.getTicks();\n var labelFormatter = makeLabelFormatter(axis);\n return {\n labels: zrUtil.map(ticks, function (tickValue, idx) {\n return {\n formattedLabel: labelFormatter(tickValue, idx),\n rawLabel: axis.scale.getLabel(tickValue),\n tickValue: tickValue\n };\n })\n };\n} // Large category data calculation is performence sensitive, and ticks and label\n// probably be fetched by multiple times. So we cache the result.\n// axis is created each time during a ec process, so we do not need to clear cache.\n\n\nfunction getListCache(axis, prop) {\n // Because key can be funciton, and cache size always be small, we use array cache.\n return inner(axis)[prop] || (inner(axis)[prop] = []);\n}\n\nfunction listCacheGet(cache, key) {\n for (var i = 0; i < cache.length; i++) {\n if (cache[i].key === key) {\n return cache[i].value;\n }\n }\n}\n\nfunction listCacheSet(cache, key, value) {\n cache.push({\n key: key,\n value: value\n });\n return value;\n}\n\nfunction makeAutoCategoryInterval(axis) {\n var result = inner(axis).autoInterval;\n return result != null ? result : inner(axis).autoInterval = axis.calculateCategoryInterval();\n}\n/**\n * Calculate interval for category axis ticks and labels.\n * To get precise result, at least one of `getRotate` and `isHorizontal`\n * should be implemented in axis.\n */\n\n\nfunction calculateCategoryInterval(axis) {\n var params = fetchAutoCategoryIntervalCalculationParams(axis);\n var labelFormatter = makeLabelFormatter(axis);\n var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n // avoid generating a long array by `getTicks`\n // in large category data case.\n\n var tickCount = ordinalScale.count();\n\n if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n return 0;\n }\n\n var step = 1; // Simple optimization. Empirical value: tick count should less than 40.\n\n if (tickCount > 40) {\n step = Math.max(1, Math.floor(tickCount / 40));\n }\n\n var tickValue = ordinalExtent[0];\n var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n var unitW = Math.abs(unitSpan * Math.cos(rotation));\n var unitH = Math.abs(unitSpan * Math.sin(rotation));\n var maxW = 0;\n var maxH = 0; // Caution: Performance sensitive for large category data.\n // Consider dataZoom, we should make appropriate step to avoid O(n) loop.\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n var width = 0;\n var height = 0; // Not precise, do not consider align and vertical align\n // and each distance from axis line yet.\n\n var rect = textContain.getBoundingRect(labelFormatter(tickValue), params.font, 'center', 'top'); // Magic number\n\n width = rect.width * 1.3;\n height = rect.height * 1.3; // Min size, void long loop.\n\n maxW = Math.max(maxW, width, 7);\n maxH = Math.max(maxH, height, 7);\n }\n\n var dw = maxW / unitW;\n var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n isNaN(dw) && (dw = Infinity);\n isNaN(dh) && (dh = Infinity);\n var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\n var cache = inner(axis.model);\n var axisExtent = axis.getExtent();\n var lastAutoInterval = cache.lastAutoInterval;\n var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n // otherwise the calculated interval might jitter when the zoom\n // window size is close to the interval-changing size.\n // For example, if all of the axis labels are `a, b, c, d, e, f, g`.\n // The jitter will cause that sometimes the displayed labels are\n // `a, d, g` (interval: 2) sometimes `a, c, e`(interval: 1).\n\n if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n // point is not the same when zooming in or zooming out.\n && lastAutoInterval > interval // If the axis change is caused by chart resize, the cache should not\n // be used. Otherwise some hiden labels might not be shown again.\n && cache.axisExtend0 === axisExtent[0] && cache.axisExtend1 === axisExtent[1]) {\n interval = lastAutoInterval;\n } // Only update cache if cache not used, otherwise the\n // changing of interval is too insensitive.\n else {\n cache.lastTickCount = tickCount;\n cache.lastAutoInterval = interval;\n cache.axisExtend0 = axisExtent[0];\n cache.axisExtend1 = axisExtent[1];\n }\n\n return interval;\n}\n\nfunction fetchAutoCategoryIntervalCalculationParams(axis) {\n var labelModel = axis.getLabelModel();\n return {\n axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0,\n labelRotate: labelModel.get('rotate') || 0,\n font: labelModel.getFont()\n };\n}\n\nfunction makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\n var labelFormatter = makeLabelFormatter(axis);\n var ordinalScale = axis.scale;\n var ordinalExtent = ordinalScale.getExtent();\n var labelModel = axis.getLabelModel();\n var result = []; // TODO: axisType: ordinalTime, pick the tick from each month/day/year/...\n\n var step = Math.max((categoryInterval || 0) + 1, 1);\n var startTick = ordinalExtent[0];\n var tickCount = ordinalScale.count(); // Calculate start tick based on zero if possible to keep label consistent\n // while zooming and moving while interval > 0. Otherwise the selection\n // of displayable ticks and symbols probably keep changing.\n // 3 is empirical value.\n\n if (startTick !== 0 && step > 1 && tickCount / step > 2) {\n startTick = Math.round(Math.ceil(startTick / step) * step);\n } // (1) Only add min max label here but leave overlap checking\n // to render stage, which also ensure the returned list\n // suitable for splitLine and splitArea rendering.\n // (2) Scales except category always contain min max label so\n // do not need to perform this process.\n\n\n var showAllLabel = shouldShowAllLabels(axis);\n var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\n var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\n\n if (includeMinLabel && startTick !== ordinalExtent[0]) {\n addItem(ordinalExtent[0]);\n } // Optimize: avoid generating large array by `ordinalScale.getTicks()`.\n\n\n var tickValue = startTick;\n\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n addItem(tickValue);\n }\n\n if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\n addItem(ordinalExtent[1]);\n }\n\n function addItem(tVal) {\n result.push(onlyTick ? tVal : {\n formattedLabel: labelFormatter(tVal),\n rawLabel: ordinalScale.getLabel(tVal),\n tickValue: tVal\n });\n }\n\n return result;\n} // When interval is function, the result `false` means ignore the tick.\n// It is time consuming for large category data.\n\n\nfunction makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\n var ordinalScale = axis.scale;\n var labelFormatter = makeLabelFormatter(axis);\n var result = [];\n zrUtil.each(ordinalScale.getTicks(), function (tickValue) {\n var rawLabel = ordinalScale.getLabel(tickValue);\n\n if (categoryInterval(tickValue, rawLabel)) {\n result.push(onlyTick ? tickValue : {\n formattedLabel: labelFormatter(tickValue),\n rawLabel: rawLabel,\n tickValue: tickValue\n });\n }\n });\n return result;\n}\n\nexports.createAxisLabels = createAxisLabels;\nexports.createAxisTicks = createAxisTicks;\nexports.calculateCategoryInterval = calculateCategoryInterval;","\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\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 isObject = zrUtil.isObject;\nvar isArray = zrUtil.isArray;\n/**\n * Make the name displayable. But we should\n * make sure it is not duplicated with user\n * specified name, so use '\\0';\n */\n\nvar DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\n/**\n * If value is not array, then translate it to array.\n * @param {*} value\n * @return {Array} [value] or value\n */\n\nfunction normalizeToArray(value) {\n return value instanceof Array ? value : value == null ? [] : [value];\n}\n/**\n * Sync default option between normal and emphasis like `position` and `show`\n * In case some one will write code like\n * label: {\n * show: false,\n * position: 'outside',\n * fontSize: 18\n * },\n * emphasis: {\n * label: { show: true }\n * }\n * @param {Object} opt\n * @param {string} key\n * @param {Array.} subOpts\n */\n\n\nfunction defaultEmphasis(opt, key, subOpts) {\n // Caution: performance sensitive.\n if (opt) {\n opt[key] = opt[key] || {};\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[key] = opt.emphasis[key] || {}; // Default emphasis option from normal\n\n for (var i = 0, len = subOpts.length; i < len; i++) {\n var subOptName = subOpts[i];\n\n if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {\n opt.emphasis[key][subOptName] = opt[key][subOptName];\n }\n }\n }\n}\n\nvar TEXT_STYLE_OPTIONS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth', 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY', 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding']; // modelUtil.LABEL_OPTIONS = modelUtil.TEXT_STYLE_OPTIONS.concat([\n// 'position', 'offset', 'rotate', 'origin', 'show', 'distance', 'formatter',\n// 'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\n// // FIXME: deprecated, check and remove it.\n// 'textStyle'\n// ]);\n\n/**\n * The method do not ensure performance.\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method retieves value from data.\n * @param {string|number|Date|Array|Object} dataItem\n * @return {number|string|Date|Array.}\n */\n\nfunction getDataItemValue(dataItem) {\n return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;\n}\n/**\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method determine if dataItem has extra option besides value\n * @param {string|number|Date|Array|Object} dataItem\n */\n\n\nfunction isDataItemOption(dataItem) {\n return isObject(dataItem) && !(dataItem instanceof Array); // // markLine data can be array\n // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array));\n}\n/**\n * Mapping to exists for merge.\n *\n * @public\n * @param {Array.|Array.} exists\n * @param {Object|Array.} newCptOptions\n * @return {Array.} Result, like [{exist: ..., option: ...}, {}],\n * index of which is the same as exists.\n */\n\n\nfunction mappingToExists(exists, newCptOptions) {\n // Mapping by the order by original option (but not order of\n // new option) in merge mode. Because we should ensure\n // some specified index (like xAxisIndex) is consistent with\n // original option, which is easy to understand, espatially in\n // media query. And in most case, merge option is used to\n // update partial option but not be expected to change order.\n newCptOptions = (newCptOptions || []).slice();\n var result = zrUtil.map(exists || [], function (obj, index) {\n return {\n exist: obj\n };\n }); // Mapping by id or name if specified.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n } // id has highest priority.\n\n\n for (var i = 0; i < result.length; i++) {\n if (!result[i].option // Consider name: two map to one.\n && cptOption.id != null && result[i].exist.id === cptOption.id + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n\n for (var i = 0; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Consider name: two map to one.\n // Can not match when both ids exist but different.\n && (exist.id == null || cptOption.id == null) && cptOption.name != null && !isIdInner(cptOption) && !isIdInner(exist) && exist.name === cptOption.name + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n }); // Otherwise mapping by index.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n }\n\n var i = 0;\n\n for (; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Existing model that already has id should be able to\n // mapped to (because after mapping performed model may\n // be assigned with a id, whish should not affect next\n // mapping), except those has inner id.\n && !isIdInner(exist) // Caution:\n // Do not overwrite id. But name can be overwritten,\n // because axis use name as 'show label text'.\n // 'exist' always has id and name and we dont\n // need to check it.\n && cptOption.id == null) {\n result[i].option = cptOption;\n break;\n }\n }\n\n if (i >= result.length) {\n result.push({\n option: cptOption\n });\n }\n });\n return result;\n}\n/**\n * Make id and name for mapping result (result of mappingToExists)\n * into `keyInfo` field.\n *\n * @public\n * @param {Array.} Result, like [{exist: ..., option: ...}, {}],\n * which order is the same as exists.\n * @return {Array.} The input.\n */\n\n\nfunction makeIdAndName(mapResult) {\n // We use this id to hash component models and view instances\n // in echarts. id can be specified by user, or auto generated.\n // The id generation rule ensures new view instance are able\n // to mapped to old instance when setOption are called in\n // no-merge mode. So we generate model id by name and plus\n // type in view id.\n // name can be duplicated among components, which is convenient\n // to specify multi components (like series) by one name.\n // Ensure that each id is distinct.\n var idMap = zrUtil.createHashMap();\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n existCpt && idMap.set(existCpt.id, item);\n });\n each(mapResult, function (item, index) {\n var opt = item.option;\n zrUtil.assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\n opt && opt.id != null && idMap.set(opt.id, item);\n !item.keyInfo && (item.keyInfo = {});\n }); // Make name and id.\n\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n var opt = item.option;\n var keyInfo = item.keyInfo;\n\n if (!isObject(opt)) {\n return;\n } // name can be overwitten. Consider case: axis.name = '20km'.\n // But id generated by name will not be changed, which affect\n // only in that case: setOption with 'not merge mode' and view\n // instance will be recreated, which can be accepted.\n\n\n keyInfo.name = opt.name != null ? opt.name + '' : existCpt ? existCpt.name // Avoid diffferent series has the same name,\n // because name may be used like in color pallet.\n : DUMMY_COMPONENT_NAME_PREFIX + index;\n\n if (existCpt) {\n keyInfo.id = existCpt.id;\n } else if (opt.id != null) {\n keyInfo.id = opt.id + '';\n } else {\n // Consider this situatoin:\n // optionA: [{name: 'a'}, {name: 'a'}, {..}]\n // optionB [{..}, {name: 'a'}, {name: 'a'}]\n // Series with the same name between optionA and optionB\n // should be mapped.\n var idNum = 0;\n\n do {\n keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\n } while (idMap.get(keyInfo.id));\n }\n\n idMap.set(keyInfo.id, item);\n });\n}\n\nfunction isNameSpecified(componentModel) {\n var name = componentModel.name; // Is specified when `indexOf` get -1 or > 0.\n\n return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\n}\n/**\n * @public\n * @param {Object} cptOption\n * @return {boolean}\n */\n\n\nfunction isIdInner(cptOption) {\n return isObject(cptOption) && cptOption.id && (cptOption.id + '').indexOf('\\0_ec_\\0') === 0;\n}\n/**\n * A helper for removing duplicate items between batchA and batchB,\n * and in themselves, and categorize by series.\n *\n * @param {Array.} batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @param {Array.} batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @return {Array., Array.>} result: [resultBatchA, resultBatchB]\n */\n\n\nfunction compressBatches(batchA, batchB) {\n var mapA = {};\n var mapB = {};\n makeMap(batchA || [], mapA);\n makeMap(batchB || [], mapB, mapA);\n return [mapToArray(mapA), mapToArray(mapB)];\n\n function makeMap(sourceBatch, map, otherMap) {\n for (var i = 0, len = sourceBatch.length; i < len; i++) {\n var seriesId = sourceBatch[i].seriesId;\n var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\n var otherDataIndices = otherMap && otherMap[seriesId];\n\n for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\n var dataIndex = dataIndices[j];\n\n if (otherDataIndices && otherDataIndices[dataIndex]) {\n otherDataIndices[dataIndex] = null;\n } else {\n (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\n }\n }\n }\n }\n\n function mapToArray(map, isData) {\n var result = [];\n\n for (var i in map) {\n if (map.hasOwnProperty(i) && map[i] != null) {\n if (isData) {\n result.push(+i);\n } else {\n var dataIndices = mapToArray(map[i], true);\n dataIndices.length && result.push({\n seriesId: i,\n dataIndex: dataIndices\n });\n }\n }\n }\n\n return result;\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload Contains dataIndex (means rawIndex) / dataIndexInside / name\n * each of which can be Array or primary type.\n * @return {number|Array.} dataIndex If not found, return undefined/null.\n */\n\n\nfunction queryDataIndex(data, payload) {\n if (payload.dataIndexInside != null) {\n return payload.dataIndexInside;\n } else if (payload.dataIndex != null) {\n return zrUtil.isArray(payload.dataIndex) ? zrUtil.map(payload.dataIndex, function (value) {\n return data.indexOfRawIndex(value);\n }) : data.indexOfRawIndex(payload.dataIndex);\n } else if (payload.name != null) {\n return zrUtil.isArray(payload.name) ? zrUtil.map(payload.name, function (value) {\n return data.indexOfName(value);\n }) : data.indexOfName(payload.name);\n }\n}\n/**\n * Enable property storage to any host object.\n * Notice: Serialization is not supported.\n *\n * For example:\n * var inner = zrUitl.makeInner();\n *\n * function some1(hostObj) {\n * inner(hostObj).someProperty = 1212;\n * ...\n * }\n * function some2() {\n * var fields = inner(this);\n * fields.someProperty1 = 1212;\n * fields.someProperty2 = 'xx';\n * ...\n * }\n *\n * @return {Function}\n */\n\n\nfunction makeInner() {\n // Consider different scope by es module import.\n var key = '__\\0ec_inner_' + innerUniqueIndex++ + '_' + Math.random().toFixed(5);\n return function (hostObj) {\n return hostObj[key] || (hostObj[key] = {});\n };\n}\n\nvar innerUniqueIndex = 0;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex, seriesId, seriesName,\n * geoIndex, geoId, geoName,\n * bmapIndex, bmapId, bmapName,\n * xAxisIndex, xAxisId, xAxisName,\n * yAxisIndex, yAxisId, yAxisName,\n * gridIndex, gridId, gridName,\n * ... (can be extended)\n * }\n * Each properties can be number|string|Array.|Array.\n * For example, a finder could be\n * {\n * seriesIndex: 3,\n * geoId: ['aa', 'cc'],\n * gridName: ['xx', 'rr']\n * }\n * xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify)\n * If nothing or null/undefined specified, return nothing.\n * @param {Object} [opt]\n * @param {string} [opt.defaultMainType]\n * @param {Array.} [opt.includeMainTypes]\n * @return {Object} result like:\n * {\n * seriesModels: [seriesModel1, seriesModel2],\n * seriesModel: seriesModel1, // The first model\n * geoModels: [geoModel1, geoModel2],\n * geoModel: geoModel1, // The first model\n * ...\n * }\n */\n\nfunction parseFinder(ecModel, finder, opt) {\n if (zrUtil.isString(finder)) {\n var obj = {};\n obj[finder + 'Index'] = 0;\n finder = obj;\n }\n\n var defaultMainType = opt && opt.defaultMainType;\n\n if (defaultMainType && !has(finder, defaultMainType + 'Index') && !has(finder, defaultMainType + 'Id') && !has(finder, defaultMainType + 'Name')) {\n finder[defaultMainType + 'Index'] = 0;\n }\n\n var result = {};\n each(finder, function (value, key) {\n var value = finder[key]; // Exclude 'dataIndex' and other illgal keys.\n\n if (key === 'dataIndex' || key === 'dataIndexInside') {\n result[key] = value;\n return;\n }\n\n var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\n var mainType = parsedKey[1];\n var queryType = (parsedKey[2] || '').toLowerCase();\n\n if (!mainType || !queryType || value == null || queryType === 'index' && value === 'none' || opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0) {\n return;\n }\n\n var queryParam = {\n mainType: mainType\n };\n\n if (queryType !== 'index' || value !== 'all') {\n queryParam[queryType] = value;\n }\n\n var models = ecModel.queryComponents(queryParam);\n result[mainType + 'Models'] = models;\n result[mainType + 'Model'] = models[0];\n });\n return result;\n}\n\nfunction has(obj, prop) {\n return obj && obj.hasOwnProperty(prop);\n}\n\nfunction setAttribute(dom, key, value) {\n dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;\n}\n\nfunction getAttribute(dom, key) {\n return dom.getAttribute ? dom.getAttribute(key) : dom[key];\n}\n\nfunction getTooltipRenderMode(renderModeOption) {\n if (renderModeOption === 'auto') {\n // Using html when `document` exists, use richText otherwise\n return env.domSupported ? 'html' : 'richText';\n } else {\n return renderModeOption || 'html';\n }\n}\n/**\n * Group a list by key.\n *\n * @param {Array} array\n * @param {Function} getKey\n * param {*} Array item\n * return {string} key\n * @return {Object} Result\n * {Array}: keys,\n * {module:zrender/core/util/HashMap} buckets: {key -> Array}\n */\n\n\nfunction groupData(array, getKey) {\n var buckets = zrUtil.createHashMap();\n var keys = [];\n zrUtil.each(array, function (item) {\n var key = getKey(item);\n (buckets.get(key) || (keys.push(key), buckets.set(key, []))).push(item);\n });\n return {\n keys: keys,\n buckets: buckets\n };\n}\n\nexports.normalizeToArray = normalizeToArray;\nexports.defaultEmphasis = defaultEmphasis;\nexports.TEXT_STYLE_OPTIONS = TEXT_STYLE_OPTIONS;\nexports.getDataItemValue = getDataItemValue;\nexports.isDataItemOption = isDataItemOption;\nexports.mappingToExists = mappingToExists;\nexports.makeIdAndName = makeIdAndName;\nexports.isNameSpecified = isNameSpecified;\nexports.isIdInner = isIdInner;\nexports.compressBatches = compressBatches;\nexports.queryDataIndex = queryDataIndex;\nexports.makeInner = makeInner;\nexports.parseFinder = parseFinder;\nexports.setAttribute = setAttribute;\nexports.getAttribute = getAttribute;\nexports.getTooltipRenderMode = getTooltipRenderMode;\nexports.groupData = groupData;","\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 clazzUtil = require(\"../util/clazz\");\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 * // Scale class management\n * @module echarts/scale/Scale\n */\n\n/**\n * @param {Object} [setting]\n */\nfunction Scale(setting) {\n this._setting = setting || {};\n /**\n * Extent\n * @type {Array.}\n * @protected\n */\n\n this._extent = [Infinity, -Infinity];\n /**\n * Step is calculated in adjustExtent\n * @type {Array.}\n * @protected\n */\n\n this._interval = 0;\n this.init && this.init.apply(this, arguments);\n}\n/**\n * Parse input val to valid inner number.\n * @param {*} val\n * @return {number}\n */\n\n\nScale.prototype.parse = function (val) {\n // Notice: This would be a trap here, If the implementation\n // of this method depends on extent, and this method is used\n // before extent set (like in dataZoom), it would be wrong.\n // Nevertheless, parse does not depend on extent generally.\n return val;\n};\n\nScale.prototype.getSetting = function (name) {\n return this._setting[name];\n};\n\nScale.prototype.contain = function (val) {\n var extent = this._extent;\n return val >= extent[0] && val <= extent[1];\n};\n/**\n * Normalize value to linear [0, 1], return 0.5 if extent span is 0\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.normalize = function (val) {\n var extent = this._extent;\n\n if (extent[1] === extent[0]) {\n return 0.5;\n }\n\n return (val - extent[0]) / (extent[1] - extent[0]);\n};\n/**\n * Scale normalized value\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.scale = function (val) {\n var extent = this._extent;\n return val * (extent[1] - extent[0]) + extent[0];\n};\n/**\n * Set extent from data\n * @param {Array.} other\n */\n\n\nScale.prototype.unionExtent = function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // not setExtent because in log axis it may transformed to power\n // this.setExtent(extent[0], extent[1]);\n};\n/**\n * Set extent from data\n * @param {module:echarts/data/List} data\n * @param {string} dim\n */\n\n\nScale.prototype.unionExtentFromData = function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n};\n/**\n * Get extent\n * @return {Array.}\n */\n\n\nScale.prototype.getExtent = function () {\n return this._extent.slice();\n};\n/**\n * Set extent\n * @param {number} start\n * @param {number} end\n */\n\n\nScale.prototype.setExtent = function (start, end) {\n var thisExtent = this._extent;\n\n if (!isNaN(start)) {\n thisExtent[0] = start;\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = end;\n }\n};\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\nScale.prototype.isBlank = function () {\n return this._isBlank;\n},\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\nScale.prototype.setBlank = function (isBlank) {\n this._isBlank = isBlank;\n};\n/**\n * @abstract\n * @param {*} tick\n * @return {string} label of the tick.\n */\n\nScale.prototype.getLabel = null;\nclazzUtil.enableClassExtend(Scale);\nclazzUtil.enableClassManagement(Scale, {\n registerWhenExtend: true\n});\nvar _default = Scale;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Element = require(\"../Element\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Group是一个容器,可以插入子节点,Group的变换也会被应用到子节点上\n * @module zrender/graphic/Group\n * @example\n * var Group = require('zrender/container/Group');\n * var Circle = require('zrender/graphic/shape/Circle');\n * var g = new Group();\n * g.position[0] = 100;\n * g.position[1] = 100;\n * g.add(new Circle({\n * style: {\n * x: 100,\n * y: 100,\n * r: 20,\n * }\n * }));\n * zr.add(g);\n */\n\n/**\n * @alias module:zrender/graphic/Group\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @extends module:zrender/mixin/Eventful\n */\nvar Group = function (opts) {\n opts = opts || {};\n Element.call(this, opts);\n\n for (var key in opts) {\n if (opts.hasOwnProperty(key)) {\n this[key] = opts[key];\n }\n }\n\n this._children = [];\n this.__storage = null;\n this.__dirty = true;\n};\n\nGroup.prototype = {\n constructor: Group,\n isGroup: true,\n\n /**\n * @type {string}\n */\n type: 'group',\n\n /**\n * 所有子孙元素是否响应鼠标事件\n * @name module:/zrender/container/Group#silent\n * @type {boolean}\n * @default false\n */\n silent: false,\n\n /**\n * @return {Array.}\n */\n children: function () {\n return this._children.slice();\n },\n\n /**\n * 获取指定 index 的儿子节点\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n childAt: function (idx) {\n return this._children[idx];\n },\n\n /**\n * 获取指定名字的儿子节点\n * @param {string} name\n * @return {module:zrender/Element}\n */\n childOfName: function (name) {\n var children = this._children;\n\n for (var i = 0; i < children.length; i++) {\n if (children[i].name === name) {\n return children[i];\n }\n }\n },\n\n /**\n * @return {number}\n */\n childCount: function () {\n return this._children.length;\n },\n\n /**\n * 添加子节点到最后\n * @param {module:zrender/Element} child\n */\n add: function (child) {\n if (child && child !== this && child.parent !== this) {\n this._children.push(child);\n\n this._doAdd(child);\n }\n\n return this;\n },\n\n /**\n * 添加子节点在 nextSibling 之前\n * @param {module:zrender/Element} child\n * @param {module:zrender/Element} nextSibling\n */\n addBefore: function (child, nextSibling) {\n if (child && child !== this && child.parent !== this && nextSibling && nextSibling.parent === this) {\n var children = this._children;\n var idx = children.indexOf(nextSibling);\n\n if (idx >= 0) {\n children.splice(idx, 0, child);\n\n this._doAdd(child);\n }\n }\n\n return this;\n },\n _doAdd: function (child) {\n if (child.parent) {\n child.parent.remove(child);\n }\n\n child.parent = this;\n var storage = this.__storage;\n var zr = this.__zr;\n\n if (storage && storage !== child.__storage) {\n storage.addToStorage(child);\n\n if (child instanceof Group) {\n child.addChildrenToStorage(storage);\n }\n }\n\n zr && zr.refresh();\n },\n\n /**\n * 移除子节点\n * @param {module:zrender/Element} child\n */\n remove: function (child) {\n var zr = this.__zr;\n var storage = this.__storage;\n var children = this._children;\n var idx = zrUtil.indexOf(children, child);\n\n if (idx < 0) {\n return this;\n }\n\n children.splice(idx, 1);\n child.parent = null;\n\n if (storage) {\n storage.delFromStorage(child);\n\n if (child instanceof Group) {\n child.delChildrenFromStorage(storage);\n }\n }\n\n zr && zr.refresh();\n return this;\n },\n\n /**\n * 移除所有子节点\n */\n removeAll: function () {\n var children = this._children;\n var storage = this.__storage;\n var child;\n var i;\n\n for (i = 0; i < children.length; i++) {\n child = children[i];\n\n if (storage) {\n storage.delFromStorage(child);\n\n if (child instanceof Group) {\n child.delChildrenFromStorage(storage);\n }\n }\n\n child.parent = null;\n }\n\n children.length = 0;\n return this;\n },\n\n /**\n * 遍历所有子节点\n * @param {Function} cb\n * @param {} context\n */\n eachChild: function (cb, context) {\n var children = this._children;\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n cb.call(context, child, i);\n }\n\n return this;\n },\n\n /**\n * 深度优先遍历所有子孙节点\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n cb.call(context, child);\n\n if (child.type === 'group') {\n child.traverse(cb, context);\n }\n }\n\n return this;\n },\n addChildrenToStorage: function (storage) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n storage.addToStorage(child);\n\n if (child instanceof Group) {\n child.addChildrenToStorage(storage);\n }\n }\n },\n delChildrenFromStorage: function (storage) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n storage.delFromStorage(child);\n\n if (child instanceof Group) {\n child.delChildrenFromStorage(storage);\n }\n }\n },\n dirty: function () {\n this.__dirty = true;\n this.__zr && this.__zr.refresh();\n return this;\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function (includeChildren) {\n // TODO Caching\n var rect = null;\n var tmpRect = new BoundingRect(0, 0, 0, 0);\n var children = includeChildren || this._children;\n var tmpMat = [];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.ignore || child.invisible) {\n continue;\n }\n\n var childRect = child.getBoundingRect();\n var transform = child.getLocalTransform(tmpMat); // TODO\n // The boundingRect cacluated by transforming original\n // rect may be bigger than the actual bundingRect when rotation\n // is used. (Consider a circle rotated aginst its center, where\n // the actual boundingRect should be the same as that not be\n // rotated.) But we can not find better approach to calculate\n // actual boundingRect yet, considering performance.\n\n if (transform) {\n tmpRect.copy(childRect);\n tmpRect.applyTransform(transform);\n rect = rect || tmpRect.clone();\n rect.union(tmpRect);\n } else {\n rect = rect || childRect.clone();\n rect.union(childRect);\n }\n }\n\n return rect || tmpRect;\n }\n};\nzrUtil.inherits(Group, Element);\nvar _default = Group;\nmodule.exports = _default;","var vec2 = require(\"./vector\");\n\nvar curve = require(\"./curve\");\n\n/**\n * @author Yi Shen(https://github.com/pissang)\n */\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI2 = Math.PI * 2;\nvar start = vec2.create();\nvar end = vec2.create();\nvar extremity = vec2.create();\n/**\n * 从顶点数组中计算出最小包围盒,写入`min`和`max`中\n * @module zrender/core/bbox\n * @param {Array} points 顶点数组\n * @param {number} min\n * @param {number} max\n */\n\nfunction fromPoints(points, min, max) {\n if (points.length === 0) {\n return;\n }\n\n var p = points[0];\n var left = p[0];\n var right = p[0];\n var top = p[1];\n var bottom = p[1];\n var i;\n\n for (i = 1; i < points.length; i++) {\n p = points[i];\n left = mathMin(left, p[0]);\n right = mathMax(right, p[0]);\n top = mathMin(top, p[1]);\n bottom = mathMax(bottom, p[1]);\n }\n\n min[0] = left;\n min[1] = top;\n max[0] = right;\n max[1] = bottom;\n}\n/**\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {Array.} min\n * @param {Array.} max\n */\n\n\nfunction fromLine(x0, y0, x1, y1, min, max) {\n min[0] = mathMin(x0, x1);\n min[1] = mathMin(y0, y1);\n max[0] = mathMax(x0, x1);\n max[1] = mathMax(y0, y1);\n}\n\nvar xDim = [];\nvar yDim = [];\n/**\n * 从三阶贝塞尔曲线(p0, p1, p2, p3)中计算出最小包围盒,写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {Array.} min\n * @param {Array.} max\n */\n\nfunction fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n var cubicExtrema = curve.cubicExtrema;\n var cubicAt = curve.cubicAt;\n var i;\n var n = cubicExtrema(x0, x1, x2, x3, xDim);\n min[0] = Infinity;\n min[1] = Infinity;\n max[0] = -Infinity;\n max[1] = -Infinity;\n\n for (i = 0; i < n; i++) {\n var x = cubicAt(x0, x1, x2, x3, xDim[i]);\n min[0] = mathMin(x, min[0]);\n max[0] = mathMax(x, max[0]);\n }\n\n n = cubicExtrema(y0, y1, y2, y3, yDim);\n\n for (i = 0; i < n; i++) {\n var y = cubicAt(y0, y1, y2, y3, yDim[i]);\n min[1] = mathMin(y, min[1]);\n max[1] = mathMax(y, max[1]);\n }\n\n min[0] = mathMin(x0, min[0]);\n max[0] = mathMax(x0, max[0]);\n min[0] = mathMin(x3, min[0]);\n max[0] = mathMax(x3, max[0]);\n min[1] = mathMin(y0, min[1]);\n max[1] = mathMax(y0, max[1]);\n min[1] = mathMin(y3, min[1]);\n max[1] = mathMax(y3, max[1]);\n}\n/**\n * 从二阶贝塞尔曲线(p0, p1, p2)中计算出最小包围盒,写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {Array.} min\n * @param {Array.} max\n */\n\n\nfunction fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n var quadraticExtremum = curve.quadraticExtremum;\n var quadraticAt = curve.quadraticAt; // Find extremities, where derivative in x dim or y dim is zero\n\n var tx = mathMax(mathMin(quadraticExtremum(x0, x1, x2), 1), 0);\n var ty = mathMax(mathMin(quadraticExtremum(y0, y1, y2), 1), 0);\n var x = quadraticAt(x0, x1, x2, tx);\n var y = quadraticAt(y0, y1, y2, ty);\n min[0] = mathMin(x0, x2, x);\n min[1] = mathMin(y0, y2, y);\n max[0] = mathMax(x0, x2, x);\n max[1] = mathMax(y0, y2, y);\n}\n/**\n * 从圆弧中计算出最小包围盒,写入`min`和`max`中\n * @method\n * @memberOf module:zrender/core/bbox\n * @param {number} x\n * @param {number} y\n * @param {number} rx\n * @param {number} ry\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {number} anticlockwise\n * @param {Array.} min\n * @param {Array.} max\n */\n\n\nfunction fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max) {\n var vec2Min = vec2.min;\n var vec2Max = vec2.max;\n var diff = Math.abs(startAngle - endAngle);\n\n if (diff % PI2 < 1e-4 && diff > 1e-4) {\n // Is a circle\n min[0] = x - rx;\n min[1] = y - ry;\n max[0] = x + rx;\n max[1] = y + ry;\n return;\n }\n\n start[0] = mathCos(startAngle) * rx + x;\n start[1] = mathSin(startAngle) * ry + y;\n end[0] = mathCos(endAngle) * rx + x;\n end[1] = mathSin(endAngle) * ry + y;\n vec2Min(min, start, end);\n vec2Max(max, start, end); // Thresh to [0, Math.PI * 2]\n\n startAngle = startAngle % PI2;\n\n if (startAngle < 0) {\n startAngle = startAngle + PI2;\n }\n\n endAngle = endAngle % PI2;\n\n if (endAngle < 0) {\n endAngle = endAngle + PI2;\n }\n\n if (startAngle > endAngle && !anticlockwise) {\n endAngle += PI2;\n } else if (startAngle < endAngle && anticlockwise) {\n startAngle += PI2;\n }\n\n if (anticlockwise) {\n var tmp = endAngle;\n endAngle = startAngle;\n startAngle = tmp;\n } // var number = 0;\n // var step = (anticlockwise ? -Math.PI : Math.PI) / 2;\n\n\n for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n if (angle > startAngle) {\n extremity[0] = mathCos(angle) * rx + x;\n extremity[1] = mathSin(angle) * ry + y;\n vec2Min(min, extremity, min);\n vec2Max(max, extremity, max);\n }\n }\n}\n\nexports.fromPoints = fromPoints;\nexports.fromLine = fromLine;\nexports.fromCubic = fromCubic;\nexports.fromQuadratic = fromQuadratic;\nexports.fromArc = fromArc;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _labelHelper = require(\"../helper/labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction setLabel(normalStyle, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside) {\n var labelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n graphic.setLabelStyle(normalStyle, hoverStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: dataIndex,\n defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\n isRectText: true,\n autoColor: color\n });\n fixPosition(normalStyle);\n fixPosition(hoverStyle);\n}\n\nfunction fixPosition(style, labelPositionOutside) {\n if (style.textPosition === 'outside') {\n style.textPosition = labelPositionOutside;\n }\n}\n\nexports.setLabel = setLabel;","var curve = require(\"../core/curve\");\n\n/**\n * 三次贝塞尔曲线描边包含判断\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth; // Quick reject\n\n if (y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l) {\n return false;\n }\n\n var d = curve.cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\n return d <= _l / 2;\n}\n\nexports.containStroke = containStroke;","\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 createListSimply = require(\"../helper/createListSimply\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\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 seriesModelMixin = {\n /**\n * @private\n * @type {string}\n */\n _baseAxisDim: null,\n\n /**\n * @override\n */\n getInitialData: function (option, ecModel) {\n // When both types of xAxis and yAxis are 'value', layout is\n // needed to be specified by user. Otherwise, layout can be\n // judged by which axis is category.\n var ordinalMeta;\n var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'));\n var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'));\n var xAxisType = xAxisModel.get('type');\n var yAxisType = yAxisModel.get('type');\n var addOrdinal; // FIXME\n // Consider time axis.\n\n if (xAxisType === 'category') {\n option.layout = 'horizontal';\n ordinalMeta = xAxisModel.getOrdinalMeta();\n addOrdinal = true;\n } else if (yAxisType === 'category') {\n option.layout = 'vertical';\n ordinalMeta = yAxisModel.getOrdinalMeta();\n addOrdinal = true;\n } else {\n option.layout = option.layout || 'horizontal';\n }\n\n var coordDims = ['x', 'y'];\n var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1;\n var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];\n var otherAxisDim = coordDims[1 - baseAxisDimIndex];\n var axisModels = [xAxisModel, yAxisModel];\n var baseAxisType = axisModels[baseAxisDimIndex].get('type');\n var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type');\n var data = option.data; // ??? FIXME make a stage to perform data transfrom.\n // MUST create a new data, consider setOption({}) again.\n\n if (data && addOrdinal) {\n var newOptionData = [];\n zrUtil.each(data, function (item, index) {\n var newItem;\n\n if (item.value && zrUtil.isArray(item.value)) {\n newItem = item.value.slice();\n item.value.unshift(index);\n } else if (zrUtil.isArray(item)) {\n newItem = item.slice();\n item.unshift(index);\n } else {\n newItem = item;\n }\n\n newOptionData.push(newItem);\n });\n option.data = newOptionData;\n }\n\n var defaultValueDimensions = this.defaultValueDimensions;\n var coordDimensions = [{\n name: baseAxisDim,\n type: getDimensionTypeByAxis(baseAxisType),\n ordinalMeta: ordinalMeta,\n otherDims: {\n tooltip: false,\n itemName: 0\n },\n dimsDef: ['base']\n }, {\n name: otherAxisDim,\n type: getDimensionTypeByAxis(otherAxisType),\n dimsDef: defaultValueDimensions.slice()\n }];\n return createListSimply(this, {\n coordDimensions: coordDimensions,\n dimensionsCount: defaultValueDimensions.length + 1,\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)\n });\n },\n\n /**\n * If horizontal, base axis is x, otherwise y.\n * @override\n */\n getBaseAxis: function () {\n var dim = this._baseAxisDim;\n return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis;\n }\n};\nexports.seriesModelMixin = seriesModelMixin;","\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;","\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 _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar normalizeToArray = _model.normalizeToArray;\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();\n\nfunction getNearestColorPalette(colors, requestColorNum) {\n var paletteNum = colors.length; // TODO colors must be in order\n\n for (var i = 0; i < paletteNum; i++) {\n if (colors[i].length > requestColorNum) {\n return colors[i];\n }\n }\n\n return colors[paletteNum - 1];\n}\n\nvar _default = {\n clearColorPalette: function () {\n inner(this).colorIdx = 0;\n inner(this).colorNameMap = {};\n },\n\n /**\n * @param {string} name MUST NOT be null/undefined. Otherwise call this function\n * twise with the same parameters will get different result.\n * @param {Object} [scope=this]\n * @param {Object} [requestColorNum]\n * @return {string} color string.\n */\n getColorFromPalette: function (name, scope, requestColorNum) {\n scope = scope || this;\n var scopeFields = inner(scope);\n var colorIdx = scopeFields.colorIdx || 0;\n var colorNameMap = scopeFields.colorNameMap = scopeFields.colorNameMap || {}; // Use `hasOwnProperty` to avoid conflict with Object.prototype.\n\n if (colorNameMap.hasOwnProperty(name)) {\n return colorNameMap[name];\n }\n\n var defaultColorPalette = normalizeToArray(this.get('color', true));\n var layeredColorPalette = this.get('colorLayer', true);\n var colorPalette = requestColorNum == null || !layeredColorPalette ? defaultColorPalette : getNearestColorPalette(layeredColorPalette, requestColorNum); // In case can't find in layered color palette.\n\n colorPalette = colorPalette || defaultColorPalette;\n\n if (!colorPalette || !colorPalette.length) {\n return;\n }\n\n var color = colorPalette[colorIdx];\n\n if (name) {\n colorNameMap[name] = color;\n }\n\n scopeFields.colorIdx = (colorIdx + 1) % colorPalette.length;\n return color;\n }\n};\nmodule.exports = _default;","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/invoice@3x-90cf41bbe265a1c3632973d4ee78628a.png\";","\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(\"./dataZoom/typeDefaulter\");\n\nrequire(\"./dataZoom/DataZoomModel\");\n\nrequire(\"./dataZoom/DataZoomView\");\n\nrequire(\"./dataZoom/SliderZoomModel\");\n\nrequire(\"./dataZoom/SliderZoomView\");\n\nrequire(\"./dataZoom/dataZoomProcessor\");\n\nrequire(\"./dataZoom/dataZoomAction\");","\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 * @param {number} [time=500] Time in ms\n * @param {string} [easing='linear']\n * @param {number} [delay=0]\n * @param {Function} [callback]\n *\n * @example\n * // Animate position\n * animation\n * .createWrap()\n * .add(el1, {position: [10, 10]})\n * .add(el2, {shape: {width: 500}, style: {fill: 'red'}}, 400)\n * .done(function () { // done })\n * .start('cubicOut');\n */\nfunction createWrap() {\n var storage = [];\n var elExistsMap = {};\n var doneCallback;\n return {\n /**\n * Caution: a el can only be added once, otherwise 'done'\n * might not be called. This method checks this (by el.id),\n * suppresses adding and returns false when existing el found.\n *\n * @param {modele:zrender/Element} el\n * @param {Object} target\n * @param {number} [time=500]\n * @param {number} [delay=0]\n * @param {string} [easing='linear']\n * @return {boolean} Whether adding succeeded.\n *\n * @example\n * add(el, target, time, delay, easing);\n * add(el, target, time, easing);\n * add(el, target, time);\n * add(el, target);\n */\n add: function (el, target, time, delay, easing) {\n if (zrUtil.isString(delay)) {\n easing = delay;\n delay = 0;\n }\n\n if (elExistsMap[el.id]) {\n return false;\n }\n\n elExistsMap[el.id] = 1;\n storage.push({\n el: el,\n target: target,\n time: time,\n delay: delay,\n easing: easing\n });\n return true;\n },\n\n /**\n * Only execute when animation finished. Will not execute when any\n * of 'stop' or 'stopAnimation' called.\n *\n * @param {Function} callback\n */\n done: function (callback) {\n doneCallback = callback;\n return this;\n },\n\n /**\n * Will stop exist animation firstly.\n */\n start: function () {\n var count = storage.length;\n\n for (var i = 0, len = storage.length; i < len; i++) {\n var item = storage[i];\n item.el.animateTo(item.target, item.time, item.delay, item.easing, done);\n }\n\n return this;\n\n function done() {\n count--;\n\n if (!count) {\n storage.length = 0;\n elExistsMap = {};\n doneCallback && doneCallback();\n }\n }\n }\n };\n}\n\nexports.createWrap = createWrap;","\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*/\n\n/**\n * @event legendScroll\n * @type {Object}\n * @property {string} type 'legendScroll'\n * @property {string} scrollDataIndex\n */\necharts.registerAction('legendScroll', 'legendscroll', function (payload, ecModel) {\n var scrollDataIndex = payload.scrollDataIndex;\n scrollDataIndex != null && ecModel.eachComponent({\n mainType: 'legend',\n subType: 'scroll',\n query: payload\n }, function (legendModel) {\n legendModel.setScrollDataIndex(scrollDataIndex);\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 default 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;","var BoundingRect = require(\"../core/BoundingRect\");\n\nvar imageHelper = require(\"../graphic/helper/image\");\n\nvar _util = require(\"../core/util\");\n\nvar getContext = _util.getContext;\nvar extend = _util.extend;\nvar retrieve2 = _util.retrieve2;\nvar retrieve3 = _util.retrieve3;\nvar trim = _util.trim;\nvar textWidthCache = {};\nvar textWidthCacheCounter = 0;\nvar TEXT_CACHE_MAX = 5000;\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\nvar DEFAULT_FONT = '12px sans-serif'; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n methods[name] = fn;\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @return {number} width\n */\n\n\nfunction getWidth(text, font) {\n font = font || DEFAULT_FONT;\n var key = text + ':' + font;\n\n if (textWidthCache[key]) {\n return textWidthCache[key];\n }\n\n var textLines = (text + '').split('\\n');\n var width = 0;\n\n for (var i = 0, l = textLines.length; i < l; i++) {\n // textContain.measureText may be overrided in SVG or VML\n width = Math.max(measureText(textLines[i], font).width, width);\n }\n\n if (textWidthCacheCounter > TEXT_CACHE_MAX) {\n textWidthCacheCounter = 0;\n textWidthCache = {};\n }\n\n textWidthCacheCounter++;\n textWidthCache[key] = width;\n return width;\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @param {string} [textAlign='left']\n * @param {string} [textVerticalAlign='top']\n * @param {Array.} [textPadding]\n * @param {Object} [rich]\n * @param {Object} [truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\n\nfunction getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) {\n return rich ? getRichTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) : getPlainTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, truncate);\n}\n\nfunction getPlainTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, truncate) {\n var contentBlock = parsePlainText(text, font, textPadding, textLineHeight, truncate);\n var outerWidth = getWidth(text, font);\n\n if (textPadding) {\n outerWidth += textPadding[1] + textPadding[3];\n }\n\n var outerHeight = contentBlock.outerHeight;\n var x = adjustTextX(0, outerWidth, textAlign);\n var y = adjustTextY(0, outerHeight, textVerticalAlign);\n var rect = new BoundingRect(x, y, outerWidth, outerHeight);\n rect.lineHeight = contentBlock.lineHeight;\n return rect;\n}\n\nfunction getRichTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) {\n var contentBlock = parseRichText(text, {\n rich: rich,\n truncate: truncate,\n font: font,\n textAlign: textAlign,\n textPadding: textPadding,\n textLineHeight: textLineHeight\n });\n var outerWidth = contentBlock.outerWidth;\n var outerHeight = contentBlock.outerHeight;\n var x = adjustTextX(0, outerWidth, textAlign);\n var y = adjustTextY(0, outerHeight, textVerticalAlign);\n return new BoundingRect(x, y, outerWidth, outerHeight);\n}\n/**\n * @public\n * @param {number} x\n * @param {number} width\n * @param {string} [textAlign='left']\n * @return {number} Adjusted x.\n */\n\n\nfunction adjustTextX(x, width, textAlign) {\n // FIXME Right to left language\n if (textAlign === 'right') {\n x -= width;\n } else if (textAlign === 'center') {\n x -= width / 2;\n }\n\n return x;\n}\n/**\n * @public\n * @param {number} y\n * @param {number} height\n * @param {string} [textVerticalAlign='top']\n * @return {number} Adjusted y.\n */\n\n\nfunction adjustTextY(y, height, textVerticalAlign) {\n if (textVerticalAlign === 'middle') {\n y -= height / 2;\n } else if (textVerticalAlign === 'bottom') {\n y -= height;\n }\n\n return y;\n}\n/**\n * Follow same interface to `Displayable.prototype.calculateTextPosition`.\n * @public\n * @param {Obejct} [out] Prepared out object. If not input, auto created in the method.\n * @param {module:zrender/graphic/Style} style where `textPosition` and `textDistance` are visited.\n * @param {Object} rect {x, y, width, height} Rect of the host elment, according to which the text positioned.\n * @return {Object} The input `out`. Set: {x, y, textAlign, textVerticalAlign}\n */\n\n\nfunction calculateTextPosition(out, style, rect) {\n var textPosition = style.textPosition;\n var distance = style.textDistance;\n var x = rect.x;\n var y = rect.y;\n distance = distance || 0;\n var height = rect.height;\n var width = rect.width;\n var halfHeight = height / 2;\n var textAlign = 'left';\n var textVerticalAlign = 'top';\n\n switch (textPosition) {\n case 'left':\n x -= distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n\n case 'right':\n x += distance + width;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n\n case 'top':\n x += width / 2;\n y -= distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n\n case 'bottom':\n x += width / 2;\n y += height + distance;\n textAlign = 'center';\n break;\n\n case 'inside':\n x += width / 2;\n y += halfHeight;\n textAlign = 'center';\n textVerticalAlign = 'middle';\n break;\n\n case 'insideLeft':\n x += distance;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n\n case 'insideRight':\n x += width - distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n\n case 'insideTop':\n x += width / 2;\n y += distance;\n textAlign = 'center';\n break;\n\n case 'insideBottom':\n x += width / 2;\n y += height - distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideTopLeft':\n x += distance;\n y += distance;\n break;\n\n case 'insideTopRight':\n x += width - distance;\n y += distance;\n textAlign = 'right';\n break;\n\n case 'insideBottomLeft':\n x += distance;\n y += height - distance;\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideBottomRight':\n x += width - distance;\n y += height - distance;\n textAlign = 'right';\n textVerticalAlign = 'bottom';\n break;\n }\n\n out = out || {};\n out.x = x;\n out.y = y;\n out.textAlign = textAlign;\n out.textVerticalAlign = textVerticalAlign;\n return out;\n}\n/**\n * To be removed. But still do not remove in case that some one has imported it.\n * @deprecated\n * @public\n * @param {stirng} textPosition\n * @param {Object} rect {x, y, width, height}\n * @param {number} distance\n * @return {Object} {x, y, textAlign, textVerticalAlign}\n */\n\n\nfunction adjustTextPositionOnRect(textPosition, rect, distance) {\n var dummyStyle = {\n textPosition: textPosition,\n textDistance: distance\n };\n return calculateTextPosition({}, dummyStyle, rect);\n}\n/**\n * Show ellipsis if overflow.\n *\n * @public\n * @param {string} text\n * @param {string} containerWidth\n * @param {string} font\n * @param {number} [ellipsis='...']\n * @param {Object} [options]\n * @param {number} [options.maxIterations=3]\n * @param {number} [options.minChar=0] If truncate result are less\n * then minChar, ellipsis will not show, which is\n * better for user hint in some cases.\n * @param {number} [options.placeholder=''] When all truncated, use the placeholder.\n * @return {string}\n */\n\n\nfunction truncateText(text, containerWidth, font, ellipsis, options) {\n if (!containerWidth) {\n return '';\n }\n\n var textLines = (text + '').split('\\n');\n options = prepareTruncateOptions(containerWidth, font, ellipsis, options); // FIXME\n // It is not appropriate that every line has '...' when truncate multiple lines.\n\n for (var i = 0, len = textLines.length; i < len; i++) {\n textLines[i] = truncateSingleLine(textLines[i], options);\n }\n\n return textLines.join('\\n');\n}\n\nfunction prepareTruncateOptions(containerWidth, font, ellipsis, options) {\n options = extend({}, options);\n options.font = font;\n var ellipsis = retrieve2(ellipsis, '...');\n options.maxIterations = retrieve2(options.maxIterations, 2);\n var minChar = options.minChar = retrieve2(options.minChar, 0); // FIXME\n // Other languages?\n\n options.cnCharWidth = getWidth('国', font); // FIXME\n // Consider proportional font?\n\n var ascCharWidth = options.ascCharWidth = getWidth('a', font);\n options.placeholder = retrieve2(options.placeholder, ''); // Example 1: minChar: 3, text: 'asdfzxcv', truncate result: 'asdf', but not: 'a...'.\n // Example 2: minChar: 3, text: '维度', truncate result: '维', but not: '...'.\n\n var contentWidth = containerWidth = Math.max(0, containerWidth - 1); // Reserve some gap.\n\n for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\n contentWidth -= ascCharWidth;\n }\n\n var ellipsisWidth = getWidth(ellipsis, font);\n\n if (ellipsisWidth > contentWidth) {\n ellipsis = '';\n ellipsisWidth = 0;\n }\n\n contentWidth = containerWidth - ellipsisWidth;\n options.ellipsis = ellipsis;\n options.ellipsisWidth = ellipsisWidth;\n options.contentWidth = contentWidth;\n options.containerWidth = containerWidth;\n return options;\n}\n\nfunction truncateSingleLine(textLine, options) {\n var containerWidth = options.containerWidth;\n var font = options.font;\n var contentWidth = options.contentWidth;\n\n if (!containerWidth) {\n return '';\n }\n\n var lineWidth = getWidth(textLine, font);\n\n if (lineWidth <= containerWidth) {\n return textLine;\n }\n\n for (var j = 0;; j++) {\n if (lineWidth <= contentWidth || j >= options.maxIterations) {\n textLine += options.ellipsis;\n break;\n }\n\n var subLength = j === 0 ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth) : lineWidth > 0 ? Math.floor(textLine.length * contentWidth / lineWidth) : 0;\n textLine = textLine.substr(0, subLength);\n lineWidth = getWidth(textLine, font);\n }\n\n if (textLine === '') {\n textLine = options.placeholder;\n }\n\n return textLine;\n}\n\nfunction estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\n var width = 0;\n var i = 0;\n\n for (var len = text.length; i < len && width < contentWidth; i++) {\n var charCode = text.charCodeAt(i);\n width += 0 <= charCode && charCode <= 127 ? ascCharWidth : cnCharWidth;\n }\n\n return i;\n}\n/**\n * @public\n * @param {string} font\n * @return {number} line height\n */\n\n\nfunction getLineHeight(font) {\n // FIXME A rough approach.\n return getWidth('国', font);\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @return {Object} width\n */\n\n\nfunction measureText(text, font) {\n return methods.measureText(text, font);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nmethods.measureText = function (text, font) {\n var ctx = getContext();\n ctx.font = font || DEFAULT_FONT;\n return ctx.measureText(text);\n};\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @param {Object} [truncate]\n * @return {Object} block: {lineHeight, lines, height, outerHeight, canCacheByTextString}\n * Notice: for performance, do not calculate outerWidth util needed.\n * `canCacheByTextString` means the result `lines` is only determined by the input `text`.\n * Thus we can simply comparing the `input` text to determin whether the result changed,\n * without travel the result `lines`.\n */\n\n\nfunction parsePlainText(text, font, padding, textLineHeight, truncate) {\n text != null && (text += '');\n var lineHeight = retrieve2(textLineHeight, getLineHeight(font));\n var lines = text ? text.split('\\n') : [];\n var height = lines.length * lineHeight;\n var outerHeight = height;\n var canCacheByTextString = true;\n\n if (padding) {\n outerHeight += padding[0] + padding[2];\n }\n\n if (text && truncate) {\n canCacheByTextString = false;\n var truncOuterHeight = truncate.outerHeight;\n var truncOuterWidth = truncate.outerWidth;\n\n if (truncOuterHeight != null && outerHeight > truncOuterHeight) {\n text = '';\n lines = [];\n } else if (truncOuterWidth != null) {\n var options = prepareTruncateOptions(truncOuterWidth - (padding ? padding[1] + padding[3] : 0), font, truncate.ellipsis, {\n minChar: truncate.minChar,\n placeholder: truncate.placeholder\n }); // FIXME\n // It is not appropriate that every line has '...' when truncate multiple lines.\n\n for (var i = 0, len = lines.length; i < len; i++) {\n lines[i] = truncateSingleLine(lines[i], options);\n }\n }\n }\n\n return {\n lines: lines,\n height: height,\n outerHeight: outerHeight,\n lineHeight: lineHeight,\n canCacheByTextString: canCacheByTextString\n };\n}\n/**\n * For example: 'some text {a|some text}other text{b|some text}xxx{c|}xxx'\n * Also consider 'bbbb{a|xxx\\nzzz}xxxx\\naaaa'.\n *\n * @public\n * @param {string} text\n * @param {Object} style\n * @return {Object} block\n * {\n * width,\n * height,\n * lines: [{\n * lineHeight,\n * width,\n * tokens: [[{\n * styleName,\n * text,\n * width, // include textPadding\n * height, // include textPadding\n * textWidth, // pure text width\n * textHeight, // pure text height\n * lineHeihgt,\n * font,\n * textAlign,\n * textVerticalAlign\n * }], [...], ...]\n * }, ...]\n * }\n * If styleName is undefined, it is plain text.\n */\n\n\nfunction parseRichText(text, style) {\n var contentBlock = {\n lines: [],\n width: 0,\n height: 0\n };\n text != null && (text += '');\n\n if (!text) {\n return contentBlock;\n }\n\n var lastIndex = STYLE_REG.lastIndex = 0;\n var result;\n\n while ((result = STYLE_REG.exec(text)) != null) {\n var matchedIndex = result.index;\n\n if (matchedIndex > lastIndex) {\n pushTokens(contentBlock, text.substring(lastIndex, matchedIndex));\n }\n\n pushTokens(contentBlock, result[2], result[1]);\n lastIndex = STYLE_REG.lastIndex;\n }\n\n if (lastIndex < text.length) {\n pushTokens(contentBlock, text.substring(lastIndex, text.length));\n }\n\n var lines = contentBlock.lines;\n var contentHeight = 0;\n var contentWidth = 0; // For `textWidth: 100%`\n\n var pendingList = [];\n var stlPadding = style.textPadding;\n var truncate = style.truncate;\n var truncateWidth = truncate && truncate.outerWidth;\n var truncateHeight = truncate && truncate.outerHeight;\n\n if (stlPadding) {\n truncateWidth != null && (truncateWidth -= stlPadding[1] + stlPadding[3]);\n truncateHeight != null && (truncateHeight -= stlPadding[0] + stlPadding[2]);\n } // Calculate layout info of tokens.\n\n\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var lineHeight = 0;\n var lineWidth = 0;\n\n for (var j = 0; j < line.tokens.length; j++) {\n var token = line.tokens[j];\n var tokenStyle = token.styleName && style.rich[token.styleName] || {}; // textPadding should not inherit from style.\n\n var textPadding = token.textPadding = tokenStyle.textPadding; // textFont has been asigned to font by `normalizeStyle`.\n\n var font = token.font = tokenStyle.font || style.font; // textHeight can be used when textVerticalAlign is specified in token.\n\n var tokenHeight = token.textHeight = retrieve2( // textHeight should not be inherited, consider it can be specified\n // as box height of the block.\n tokenStyle.textHeight, getLineHeight(font));\n textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\n token.height = tokenHeight;\n token.lineHeight = retrieve3(tokenStyle.textLineHeight, style.textLineHeight, tokenHeight);\n token.textAlign = tokenStyle && tokenStyle.textAlign || style.textAlign;\n token.textVerticalAlign = tokenStyle && tokenStyle.textVerticalAlign || 'middle';\n\n if (truncateHeight != null && contentHeight + token.lineHeight > truncateHeight) {\n return {\n lines: [],\n width: 0,\n height: 0\n };\n }\n\n token.textWidth = getWidth(token.text, font);\n var tokenWidth = tokenStyle.textWidth;\n var tokenWidthNotSpecified = tokenWidth == null || tokenWidth === 'auto'; // Percent width, can be `100%`, can be used in drawing separate\n // line when box width is needed to be auto.\n\n if (typeof tokenWidth === 'string' && tokenWidth.charAt(tokenWidth.length - 1) === '%') {\n token.percentWidth = tokenWidth;\n pendingList.push(token);\n tokenWidth = 0; // Do not truncate in this case, because there is no user case\n // and it is too complicated.\n } else {\n if (tokenWidthNotSpecified) {\n tokenWidth = token.textWidth; // FIXME: If image is not loaded and textWidth is not specified, calling\n // `getBoundingRect()` will not get correct result.\n\n var textBackgroundColor = tokenStyle.textBackgroundColor;\n var bgImg = textBackgroundColor && textBackgroundColor.image; // Use cases:\n // (1) If image is not loaded, it will be loaded at render phase and call\n // `dirty()` and `textBackgroundColor.image` will be replaced with the loaded\n // image, and then the right size will be calculated here at the next tick.\n // See `graphic/helper/text.js`.\n // (2) If image loaded, and `textBackgroundColor.image` is image src string,\n // use `imageHelper.findExistImage` to find cached image.\n // `imageHelper.findExistImage` will always be called here before\n // `imageHelper.createOrUpdateImage` in `graphic/helper/text.js#renderRichText`\n // which ensures that image will not be rendered before correct size calcualted.\n\n if (bgImg) {\n bgImg = imageHelper.findExistImage(bgImg);\n\n if (imageHelper.isImageReady(bgImg)) {\n tokenWidth = Math.max(tokenWidth, bgImg.width * tokenHeight / bgImg.height);\n }\n }\n }\n\n var paddingW = textPadding ? textPadding[1] + textPadding[3] : 0;\n tokenWidth += paddingW;\n var remianTruncWidth = truncateWidth != null ? truncateWidth - lineWidth : null;\n\n if (remianTruncWidth != null && remianTruncWidth < tokenWidth) {\n if (!tokenWidthNotSpecified || remianTruncWidth < paddingW) {\n token.text = '';\n token.textWidth = tokenWidth = 0;\n } else {\n token.text = truncateText(token.text, remianTruncWidth - paddingW, font, truncate.ellipsis, {\n minChar: truncate.minChar\n });\n token.textWidth = getWidth(token.text, font);\n tokenWidth = token.textWidth + paddingW;\n }\n }\n }\n\n lineWidth += token.width = tokenWidth;\n tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\n }\n\n line.width = lineWidth;\n line.lineHeight = lineHeight;\n contentHeight += lineHeight;\n contentWidth = Math.max(contentWidth, lineWidth);\n }\n\n contentBlock.outerWidth = contentBlock.width = retrieve2(style.textWidth, contentWidth);\n contentBlock.outerHeight = contentBlock.height = retrieve2(style.textHeight, contentHeight);\n\n if (stlPadding) {\n contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\n contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\n }\n\n for (var i = 0; i < pendingList.length; i++) {\n var token = pendingList[i];\n var percentWidth = token.percentWidth; // Should not base on outerWidth, because token can not be placed out of padding.\n\n token.width = parseInt(percentWidth, 10) / 100 * contentWidth;\n }\n\n return contentBlock;\n}\n\nfunction pushTokens(block, str, styleName) {\n var isEmptyStr = str === '';\n var strs = str.split('\\n');\n var lines = block.lines;\n\n for (var i = 0; i < strs.length; i++) {\n var text = strs[i];\n var token = {\n styleName: styleName,\n text: text,\n isLineHolder: !text && !isEmptyStr\n }; // The first token should be appended to the last line.\n\n if (!i) {\n var tokens = (lines[lines.length - 1] || (lines[0] = {\n tokens: []\n })).tokens; // Consider cases:\n // (1) ''.split('\\n') => ['', '\\n', ''], the '' at the first item\n // (which is a placeholder) should be replaced by new token.\n // (2) A image backage, where token likes {a|}.\n // (3) A redundant '' will affect textAlign in line.\n // (4) tokens with the same tplName should not be merged, because\n // they should be displayed in different box (with border and padding).\n\n var tokensLen = tokens.length;\n tokensLen === 1 && tokens[0].isLineHolder ? tokens[0] = token : // Consider text is '', only insert when it is the \"lineHolder\" or\n // \"emptyStr\". Otherwise a redundant '' will affect textAlign in line.\n (text || !tokensLen || isEmptyStr) && tokens.push(token);\n } // Other tokens always start a new line.\n else {\n // If there is '', insert it as a placeholder.\n lines.push({\n tokens: [token]\n });\n }\n }\n}\n\nfunction makeFont(style) {\n // FIXME in node-canvas fontWeight is before fontStyle\n // Use `fontSize` `fontFamily` to check whether font properties are defined.\n var font = (style.fontSize || style.fontFamily) && [style.fontStyle, style.fontWeight, (style.fontSize || 12) + 'px', // If font properties are defined, `fontFamily` should not be ignored.\n style.fontFamily || 'sans-serif'].join(' ');\n return font && trim(font) || style.textFont || style.font;\n}\n\nexports.DEFAULT_FONT = DEFAULT_FONT;\nexports.$override = $override;\nexports.getWidth = getWidth;\nexports.getBoundingRect = getBoundingRect;\nexports.adjustTextX = adjustTextX;\nexports.adjustTextY = adjustTextY;\nexports.calculateTextPosition = calculateTextPosition;\nexports.adjustTextPositionOnRect = adjustTextPositionOnRect;\nexports.truncateText = truncateText;\nexports.getLineHeight = getLineHeight;\nexports.measureText = measureText;\nexports.parsePlainText = parsePlainText;\nexports.parseRichText = parseRichText;\nexports.makeFont = makeFont;","\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 each = _util.each;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar graphicUtil = require(\"../util/graphic\");\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = modelUtil.makeInner();\nvar renderPlanner = createRenderPlanner();\n\nfunction Chart() {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewChart');\n this.renderTask = createTask({\n plan: renderTaskPlan,\n reset: renderTaskReset\n });\n this.renderTask.context = {\n view: this\n };\n}\n\nChart.prototype = {\n type: 'chart',\n\n /**\n * Init the chart.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n init: function (ecModel, api) {},\n\n /**\n * Render the chart.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n render: function (seriesModel, ecModel, api, payload) {},\n\n /**\n * Highlight series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n highlight: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'emphasis');\n },\n\n /**\n * Downplay series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n downplay: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'normal');\n },\n\n /**\n * Remove self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n remove: function (ecModel, api) {\n this.group.removeAll();\n },\n\n /**\n * Dispose self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n dispose: function () {},\n\n /**\n * Rendering preparation in progressive mode.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalPrepareRender: null,\n\n /**\n * Render in progressive mode.\n * @param {Object} params See taskParams in `stream/task.js`\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalRender: null,\n\n /**\n * Update transform directly.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n * @return {Object} {update: true}\n */\n updateTransform: null,\n\n /**\n * The view contains the given point.\n * @interface\n * @param {Array.} point\n * @return {boolean}\n */\n // containPoint: function () {}\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar chartProto = Chart.prototype;\n\nchartProto.updateView = chartProto.updateLayout = chartProto.updateVisual = function (seriesModel, ecModel, api, payload) {\n this.render(seriesModel, ecModel, api, payload);\n};\n/**\n * Set state of single element\n * @param {module:zrender/Element} el\n * @param {string} state 'normal'|'emphasis'\n * @param {number} highlightDigit\n */\n\n\nfunction elSetState(el, state, highlightDigit) {\n if (el) {\n el.trigger(state, highlightDigit);\n\n if (el.isGroup // Simple optimize.\n && !graphicUtil.isHighDownDispatcher(el)) {\n for (var i = 0, len = el.childCount(); i < len; i++) {\n elSetState(el.childAt(i), state, highlightDigit);\n }\n }\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload\n * @param {string} state 'normal'|'emphasis'\n */\n\n\nfunction toggleHighlight(data, payload, state) {\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n var highlightDigit = payload && payload.highlightKey != null ? graphicUtil.getHighlightDigit(payload.highlightKey) : null;\n\n if (dataIndex != null) {\n each(modelUtil.normalizeToArray(dataIndex), function (dataIdx) {\n elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\n });\n } else {\n data.eachItemGraphicEl(function (el) {\n elSetState(el, state, highlightDigit);\n });\n }\n} // Enable Chart.extend.\n\n\nclazzUtil.enableClassExtend(Chart, ['dispose']); // Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Chart, {\n registerWhenExtend: true\n});\n\nChart.markUpdateMethod = function (payload, methodName) {\n inner(payload).updateMethod = methodName;\n};\n\nfunction renderTaskPlan(context) {\n return renderPlanner(context.model);\n}\n\nfunction renderTaskReset(context) {\n var seriesModel = context.model;\n var ecModel = context.ecModel;\n var api = context.api;\n var payload = context.payload; // ???! remove updateView updateVisual\n\n var progressiveRender = seriesModel.pipelineContext.progressiveRender;\n var view = context.view;\n var updateMethod = payload && inner(payload).updateMethod;\n var methodName = progressiveRender ? 'incrementalPrepareRender' : updateMethod && view[updateMethod] ? updateMethod // `appendData` is also supported when data amount\n // is less than progressive threshold.\n : 'render';\n\n if (methodName !== 'render') {\n view[methodName](seriesModel, ecModel, api, payload);\n }\n\n return progressMethodMap[methodName];\n}\n\nvar progressMethodMap = {\n incrementalPrepareRender: {\n progress: function (params, context) {\n context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\n }\n },\n render: {\n // Put view.render in `progress` to support appendData. But in this case\n // view.render should not be called in reset, otherwise it will be called\n // twise. Use `forceFirstProgress` to make sure that view.render is called\n // in any cases.\n forceFirstProgress: true,\n progress: function (params, context) {\n context.view.render(context.model, context.ecModel, context.api, context.payload);\n }\n }\n};\nvar _default = Chart;\nmodule.exports = _default;","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/dcd-code@3x-7798dc19b4c261272684645a11a3b1dd.png\";","var logError = require(\"../core/log\");\n\nvar vmlCore = require(\"./core\");\n\nvar _util = require(\"../core/util\");\n\nvar each = _util.each;\n\n/**\n * VML Painter.\n *\n * @module zrender/vml/Painter\n */\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\n/**\n * @alias module:zrender/vml/Painter\n */\n\n\nfunction VMLPainter(root, storage) {\n vmlCore.initVML();\n this.root = root;\n this.storage = storage;\n var vmlViewport = document.createElement('div');\n var vmlRoot = document.createElement('div');\n vmlViewport.style.cssText = 'display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;';\n vmlRoot.style.cssText = 'position:absolute;left:0;top:0;';\n root.appendChild(vmlViewport);\n this._vmlRoot = vmlRoot;\n this._vmlViewport = vmlViewport;\n this.resize(); // Modify storage\n\n var oldDelFromStorage = storage.delFromStorage;\n var oldAddToStorage = storage.addToStorage;\n\n storage.delFromStorage = function (el) {\n oldDelFromStorage.call(storage, el);\n\n if (el) {\n el.onRemove && el.onRemove(vmlRoot);\n }\n };\n\n storage.addToStorage = function (el) {\n // Displayable already has a vml node\n el.onAdd && el.onAdd(vmlRoot);\n oldAddToStorage.call(storage, el);\n };\n\n this._firstPaint = true;\n}\n\nVMLPainter.prototype = {\n constructor: VMLPainter,\n getType: function () {\n return 'vml';\n },\n\n /**\n * @return {HTMLDivElement}\n */\n getViewportRoot: function () {\n return this._vmlViewport;\n },\n getViewportRootOffset: function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n },\n\n /**\n * 刷新\n */\n refresh: function () {\n var list = this.storage.getDisplayList(true, true);\n\n this._paintList(list);\n },\n _paintList: function (list) {\n var vmlRoot = this._vmlRoot;\n\n for (var i = 0; i < list.length; i++) {\n var el = list[i];\n\n if (el.invisible || el.ignore) {\n if (!el.__alreadyNotVisible) {\n el.onRemove(vmlRoot);\n } // Set as already invisible\n\n\n el.__alreadyNotVisible = true;\n } else {\n if (el.__alreadyNotVisible) {\n el.onAdd(vmlRoot);\n }\n\n el.__alreadyNotVisible = false;\n\n if (el.__dirty) {\n el.beforeBrush && el.beforeBrush();\n (el.brushVML || el.brush).call(el, vmlRoot);\n el.afterBrush && el.afterBrush();\n }\n }\n\n el.__dirty = false;\n }\n\n if (this._firstPaint) {\n // Detached from document at first time\n // to avoid page refreshing too many times\n // FIXME 如果每次都先 removeChild 可能会导致一些填充和描边的效果改变\n this._vmlViewport.appendChild(vmlRoot);\n\n this._firstPaint = false;\n }\n },\n resize: function (width, height) {\n var width = width == null ? this._getWidth() : width;\n var height = height == null ? this._getHeight() : height;\n\n if (this._width !== width || this._height !== height) {\n this._width = width;\n this._height = height;\n var vmlViewportStyle = this._vmlViewport.style;\n vmlViewportStyle.width = width + 'px';\n vmlViewportStyle.height = height + 'px';\n }\n },\n dispose: function () {\n this.root.innerHTML = '';\n this._vmlRoot = this._vmlViewport = this.storage = null;\n },\n getWidth: function () {\n return this._width;\n },\n getHeight: function () {\n return this._height;\n },\n clear: function () {\n if (this._vmlViewport) {\n this.root.removeChild(this._vmlViewport);\n }\n },\n _getWidth: function () {\n var root = this.root;\n var stl = root.currentStyle;\n return (root.clientWidth || parseInt10(stl.width)) - parseInt10(stl.paddingLeft) - parseInt10(stl.paddingRight) | 0;\n },\n _getHeight: function () {\n var root = this.root;\n var stl = root.currentStyle;\n return (root.clientHeight || parseInt10(stl.height)) - parseInt10(stl.paddingTop) - parseInt10(stl.paddingBottom) | 0;\n }\n}; // Not supported methods\n\nfunction createMethodNotSupport(method) {\n return function () {\n logError('In IE8.0 VML mode painter not support method \"' + method + '\"');\n };\n} // Unsupported methods\n\n\neach(['getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers', 'modLayer', 'delLayer', 'clearLayer', 'toDataURL', 'pathToImage'], function (name) {\n VMLPainter.prototype[name] = createMethodNotSupport(name);\n});\nvar _default = VMLPainter;\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(option) {\n if (!option || !zrUtil.isArray(option.series)) {\n return;\n } // Translate 'k' to 'candlestick'.\n\n\n zrUtil.each(option.series, function (seriesItem) {\n if (zrUtil.isObject(seriesItem) && seriesItem.type === 'k') {\n seriesItem.type = 'candlestick';\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 env = require(\"zrender/lib/core/env\");\n\nvar visualDefault = require(\"../../visual/visualDefault\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar numberUtil = require(\"../../util/number\");\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 mapVisual = VisualMapping.mapVisual;\nvar eachVisual = VisualMapping.eachVisual;\nvar isArray = zrUtil.isArray;\nvar each = zrUtil.each;\nvar asc = numberUtil.asc;\nvar linearMap = numberUtil.linearMap;\nvar noop = zrUtil.noop;\nvar VisualMapModel = echarts.extendComponentModel({\n type: 'visualMap',\n dependencies: ['series'],\n\n /**\n * @readOnly\n * @type {Array.}\n */\n stateList: ['inRange', 'outOfRange'],\n\n /**\n * @readOnly\n * @type {Array.}\n */\n replacableOptionKeys: ['inRange', 'outOfRange', 'target', 'controller', 'color'],\n\n /**\n * [lowerBound, upperBound]\n *\n * @readOnly\n * @type {Array.}\n */\n dataBound: [-Infinity, Infinity],\n\n /**\n * @readOnly\n * @type {string|Object}\n */\n layoutMode: {\n type: 'box',\n ignoreSize: true\n },\n\n /**\n * @protected\n */\n defaultOption: {\n show: true,\n zlevel: 0,\n z: 4,\n seriesIndex: 'all',\n // 'all' or null/undefined: all series.\n // A number or an array of number: the specified series.\n // set min: 0, max: 200, only for campatible with ec2.\n // In fact min max should not have default value.\n min: 0,\n // min value, must specified if pieces is not specified.\n max: 200,\n // max value, must specified if pieces is not specified.\n dimension: null,\n inRange: null,\n // 'color', 'colorHue', 'colorSaturation', 'colorLightness', 'colorAlpha',\n // 'symbol', 'symbolSize'\n outOfRange: null,\n // 'color', 'colorHue', 'colorSaturation',\n // 'colorLightness', 'colorAlpha',\n // 'symbol', 'symbolSize'\n left: 0,\n // 'center' ¦ 'left' ¦ 'right' ¦ {number} (px)\n right: null,\n // The same as left.\n top: null,\n // 'top' ¦ 'bottom' ¦ 'center' ¦ {number} (px)\n bottom: 0,\n // The same as top.\n itemWidth: null,\n itemHeight: null,\n inverse: false,\n orient: 'vertical',\n // 'horizontal' ¦ 'vertical'\n backgroundColor: 'rgba(0,0,0,0)',\n borderColor: '#ccc',\n // 值域边框颜色\n contentColor: '#5793f3',\n inactiveColor: '#aaa',\n borderWidth: 0,\n // 值域边框线宽,单位px,默认为0(无边框)\n padding: 5,\n // 值域内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n textGap: 10,\n //\n precision: 0,\n // 小数精度,默认为0,无小数点\n color: null,\n //颜色(deprecated,兼容ec2,顺序同pieces,不同于inRange/outOfRange)\n formatter: null,\n text: null,\n // 文本,如['高', '低'],兼容ec2,text[0]对应高值,text[1]对应低值\n textStyle: {\n color: '#333' // 值域文字颜色\n\n }\n },\n\n /**\n * @protected\n */\n init: function (option, parentModel, ecModel) {\n /**\n * @private\n * @type {Array.}\n */\n this._dataExtent;\n /**\n * @readOnly\n */\n\n this.targetVisuals = {};\n /**\n * @readOnly\n */\n\n this.controllerVisuals = {};\n /**\n * @readOnly\n */\n\n this.textStyleModel;\n /**\n * [width, height]\n * @readOnly\n * @type {Array.}\n */\n\n this.itemSize;\n this.mergeDefaultAndTheme(option, ecModel);\n },\n\n /**\n * @protected\n */\n optionUpdated: function (newOption, isInit) {\n var thisOption = this.option; // FIXME\n // necessary?\n // Disable realtime view update if canvas is not supported.\n\n if (!env.canvasSupported) {\n thisOption.realtime = false;\n }\n\n !isInit && visualSolution.replaceVisualOption(thisOption, newOption, this.replacableOptionKeys);\n this.textStyleModel = this.getModel('textStyle');\n this.resetItemSize();\n this.completeVisualOption();\n },\n\n /**\n * @protected\n */\n resetVisual: function (supplementVisualOption) {\n var stateList = this.stateList;\n supplementVisualOption = zrUtil.bind(supplementVisualOption, this);\n this.controllerVisuals = visualSolution.createVisualMappings(this.option.controller, stateList, supplementVisualOption);\n this.targetVisuals = visualSolution.createVisualMappings(this.option.target, stateList, supplementVisualOption);\n },\n\n /**\n * @protected\n * @return {Array.} An array of series indices.\n */\n getTargetSeriesIndices: function () {\n var optionSeriesIndex = this.option.seriesIndex;\n var seriesIndices = [];\n\n if (optionSeriesIndex == null || optionSeriesIndex === 'all') {\n this.ecModel.eachSeries(function (seriesModel, index) {\n seriesIndices.push(index);\n });\n } else {\n seriesIndices = modelUtil.normalizeToArray(optionSeriesIndex);\n }\n\n return seriesIndices;\n },\n\n /**\n * @public\n */\n eachTargetSeries: function (callback, context) {\n zrUtil.each(this.getTargetSeriesIndices(), function (seriesIndex) {\n callback.call(context, this.ecModel.getSeriesByIndex(seriesIndex));\n }, this);\n },\n\n /**\n * @pubilc\n */\n isTargetSeries: function (seriesModel) {\n var is = false;\n this.eachTargetSeries(function (model) {\n model === seriesModel && (is = true);\n });\n return is;\n },\n\n /**\n * @example\n * this.formatValueText(someVal); // format single numeric value to text.\n * this.formatValueText(someVal, true); // format single category value to text.\n * this.formatValueText([min, max]); // format numeric min-max to text.\n * this.formatValueText([this.dataBound[0], max]); // using data lower bound.\n * this.formatValueText([min, this.dataBound[1]]); // using data upper bound.\n *\n * @param {number|Array.} value Real value, or this.dataBound[0 or 1].\n * @param {boolean} [isCategory=false] Only available when value is number.\n * @param {Array.} edgeSymbols Open-close symbol when value is interval.\n * @return {string}\n * @protected\n */\n formatValueText: function (value, isCategory, edgeSymbols) {\n var option = this.option;\n var precision = option.precision;\n var dataBound = this.dataBound;\n var formatter = option.formatter;\n var isMinMax;\n var textValue;\n edgeSymbols = edgeSymbols || ['<', '>'];\n\n if (zrUtil.isArray(value)) {\n value = value.slice();\n isMinMax = true;\n }\n\n textValue = isCategory ? value : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value);\n\n if (zrUtil.isString(formatter)) {\n return formatter.replace('{value}', isMinMax ? textValue[0] : textValue).replace('{value2}', isMinMax ? textValue[1] : textValue);\n } else if (zrUtil.isFunction(formatter)) {\n return isMinMax ? formatter(value[0], value[1]) : formatter(value);\n }\n\n if (isMinMax) {\n if (value[0] === dataBound[0]) {\n return edgeSymbols[0] + ' ' + textValue[1];\n } else if (value[1] === dataBound[1]) {\n return edgeSymbols[1] + ' ' + textValue[0];\n } else {\n return textValue[0] + ' - ' + textValue[1];\n }\n } else {\n // Format single value (includes category case).\n return textValue;\n }\n\n function toFixed(val) {\n return val === dataBound[0] ? 'min' : val === dataBound[1] ? 'max' : (+val).toFixed(Math.min(precision, 20));\n }\n },\n\n /**\n * @protected\n */\n resetExtent: function () {\n var thisOption = this.option; // Can not calculate data extent by data here.\n // Because series and data may be modified in processing stage.\n // So we do not support the feature \"auto min/max\".\n\n var extent = asc([thisOption.min, thisOption.max]);\n this._dataExtent = extent;\n },\n\n /**\n * @public\n * @param {module:echarts/data/List} list\n * @return {string} Concrete dimention. If return null/undefined,\n * no dimension used.\n */\n getDataDimension: function (list) {\n var optDim = this.option.dimension;\n var listDimensions = list.dimensions;\n\n if (optDim == null && !listDimensions.length) {\n return;\n }\n\n if (optDim != null) {\n return list.getDimension(optDim);\n }\n\n var dimNames = list.dimensions;\n\n for (var i = dimNames.length - 1; i >= 0; i--) {\n var dimName = dimNames[i];\n var dimInfo = list.getDimensionInfo(dimName);\n\n if (!dimInfo.isCalculationCoord) {\n return dimName;\n }\n }\n },\n\n /**\n * @public\n * @override\n */\n getExtent: function () {\n return this._dataExtent.slice();\n },\n\n /**\n * @protected\n */\n completeVisualOption: function () {\n var ecModel = this.ecModel;\n var thisOption = this.option;\n var base = {\n inRange: thisOption.inRange,\n outOfRange: thisOption.outOfRange\n };\n var target = thisOption.target || (thisOption.target = {});\n var controller = thisOption.controller || (thisOption.controller = {});\n zrUtil.merge(target, base); // Do not override\n\n zrUtil.merge(controller, base); // Do not override\n\n var isCategory = this.isCategory();\n completeSingle.call(this, target);\n completeSingle.call(this, controller);\n completeInactive.call(this, target, 'inRange', 'outOfRange'); // completeInactive.call(this, target, 'outOfRange', 'inRange');\n\n completeController.call(this, controller);\n\n function completeSingle(base) {\n // Compatible with ec2 dataRange.color.\n // The mapping order of dataRange.color is: [high value, ..., low value]\n // whereas inRange.color and outOfRange.color is [low value, ..., high value]\n // Notice: ec2 has no inverse.\n if (isArray(thisOption.color) // If there has been inRange: {symbol: ...}, adding color is a mistake.\n // So adding color only when no inRange defined.\n && !base.inRange) {\n base.inRange = {\n color: thisOption.color.slice().reverse()\n };\n } // Compatible with previous logic, always give a defautl color, otherwise\n // simple config with no inRange and outOfRange will not work.\n // Originally we use visualMap.color as the default color, but setOption at\n // the second time the default color will be erased. So we change to use\n // constant DEFAULT_COLOR.\n // If user do not want the default color, set inRange: {color: null}.\n\n\n base.inRange = base.inRange || {\n color: ecModel.get('gradientColor')\n }; // If using shortcut like: {inRange: 'symbol'}, complete default value.\n\n each(this.stateList, function (state) {\n var visualType = base[state];\n\n if (zrUtil.isString(visualType)) {\n var defa = visualDefault.get(visualType, 'active', isCategory);\n\n if (defa) {\n base[state] = {};\n base[state][visualType] = defa;\n } else {\n // Mark as not specified.\n delete base[state];\n }\n }\n }, this);\n }\n\n function completeInactive(base, stateExist, stateAbsent) {\n var optExist = base[stateExist];\n var optAbsent = base[stateAbsent];\n\n if (optExist && !optAbsent) {\n optAbsent = base[stateAbsent] = {};\n each(optExist, function (visualData, visualType) {\n if (!VisualMapping.isValidType(visualType)) {\n return;\n }\n\n var defa = visualDefault.get(visualType, 'inactive', isCategory);\n\n if (defa != null) {\n optAbsent[visualType] = defa; // Compatibable with ec2:\n // Only inactive color to rgba(0,0,0,0) can not\n // make label transparent, so use opacity also.\n\n if (visualType === 'color' && !optAbsent.hasOwnProperty('opacity') && !optAbsent.hasOwnProperty('colorAlpha')) {\n optAbsent.opacity = [0, 0];\n }\n }\n });\n }\n }\n\n function completeController(controller) {\n var symbolExists = (controller.inRange || {}).symbol || (controller.outOfRange || {}).symbol;\n var symbolSizeExists = (controller.inRange || {}).symbolSize || (controller.outOfRange || {}).symbolSize;\n var inactiveColor = this.get('inactiveColor');\n each(this.stateList, function (state) {\n var itemSize = this.itemSize;\n var visuals = controller[state]; // Set inactive color for controller if no other color\n // attr (like colorAlpha) specified.\n\n if (!visuals) {\n visuals = controller[state] = {\n color: isCategory ? inactiveColor : [inactiveColor]\n };\n } // Consistent symbol and symbolSize if not specified.\n\n\n if (visuals.symbol == null) {\n visuals.symbol = symbolExists && zrUtil.clone(symbolExists) || (isCategory ? 'roundRect' : ['roundRect']);\n }\n\n if (visuals.symbolSize == null) {\n visuals.symbolSize = symbolSizeExists && zrUtil.clone(symbolSizeExists) || (isCategory ? itemSize[0] : [itemSize[0], itemSize[0]]);\n } // Filter square and none.\n\n\n visuals.symbol = mapVisual(visuals.symbol, function (symbol) {\n return symbol === 'none' || symbol === 'square' ? 'roundRect' : symbol;\n }); // Normalize symbolSize\n\n var symbolSize = visuals.symbolSize;\n\n if (symbolSize != null) {\n var max = -Infinity; // symbolSize can be object when categories defined.\n\n eachVisual(symbolSize, function (value) {\n value > max && (max = value);\n });\n visuals.symbolSize = mapVisual(symbolSize, function (value) {\n return linearMap(value, [0, max], [0, itemSize[0]], true);\n });\n }\n }, this);\n }\n },\n\n /**\n * @protected\n */\n resetItemSize: function () {\n this.itemSize = [parseFloat(this.get('itemWidth')), parseFloat(this.get('itemHeight'))];\n },\n\n /**\n * @public\n */\n isCategory: function () {\n return !!this.option.categories;\n },\n\n /**\n * @public\n * @abstract\n */\n setSelected: noop,\n\n /**\n * @public\n * @abstract\n * @param {*|module:echarts/data/List} valueOrData\n * @param {number} dataIndex\n * @return {string} state See this.stateList\n */\n getValueState: noop,\n\n /**\n * FIXME\n * Do not publish to thirt-part-dev temporarily\n * util the interface is stable. (Should it return\n * a function but not visual meta?)\n *\n * @pubilc\n * @abstract\n * @param {Function} getColorVisual\n * params: value, valueState\n * return: color\n * @return {Object} visualMeta\n * should includes {stops, outerColors}\n * outerColor means [colorBeyondMinValue, colorBeyondMaxValue]\n */\n getVisualMeta: noop\n});\nvar _default = VisualMapModel;\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 dataToCoordSize(dataSize, dataItem) {\n // dataItem is necessary in log axis.\n return zrUtil.map(['Radius', 'Angle'], function (dim, dimIdx) {\n var axis = this['get' + dim + 'Axis']();\n var val = dataItem[dimIdx];\n var halfSize = dataSize[dimIdx] / 2;\n var method = 'dataTo' + dim;\n var result = axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis[method](val - halfSize) - axis[method](val + halfSize));\n\n if (dim === 'Angle') {\n result = result * Math.PI / 180;\n }\n\n return result;\n }, this);\n}\n\nfunction _default(coordSys) {\n var radiusAxis = coordSys.getRadiusAxis();\n var angleAxis = coordSys.getAngleAxis();\n var radius = radiusAxis.getExtent();\n radius[0] > radius[1] && radius.reverse();\n return {\n coordSys: {\n type: 'polar',\n cx: coordSys.cx,\n cy: coordSys.cy,\n r: radius[1],\n r0: radius[0]\n },\n api: {\n coord: zrUtil.bind(function (data) {\n var radius = radiusAxis.dataToRadius(data[0]);\n var angle = angleAxis.dataToAngle(data[1]);\n var coord = coordSys.coordToPoint([radius, angle]);\n coord.push(radius, angle * Math.PI / 180);\n return coord;\n }),\n size: zrUtil.bind(dataToCoordSize, coordSys)\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\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 * Calculate slider move result.\n * Usage:\n * (1) If both handle0 and handle1 are needed to be moved, set minSpan the same as\n * maxSpan and the same as `Math.abs(handleEnd[1] - handleEnds[0])`.\n * (2) If handle0 is forbidden to cross handle1, set minSpan as `0`.\n *\n * @param {number} delta Move length.\n * @param {Array.} handleEnds handleEnds[0] can be bigger then handleEnds[1].\n * handleEnds will be modified in this method.\n * @param {Array.} extent handleEnds is restricted by extent.\n * extent[0] should less or equals than extent[1].\n * @param {number|string} handleIndex Can be 'all', means that both move the two handleEnds.\n * @param {number} [minSpan] The range of dataZoom can not be smaller than that.\n * If not set, handle0 and cross handle1. If set as a non-negative\n * number (including `0`), handles will push each other when reaching\n * the minSpan.\n * @param {number} [maxSpan] The range of dataZoom can not be larger than that.\n * @return {Array.} The input handleEnds.\n */\nfunction _default(delta, handleEnds, extent, handleIndex, minSpan, maxSpan) {\n delta = delta || 0;\n var extentSpan = extent[1] - extent[0]; // Notice maxSpan and minSpan can be null/undefined.\n\n if (minSpan != null) {\n minSpan = restrict(minSpan, [0, extentSpan]);\n }\n\n if (maxSpan != null) {\n maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);\n }\n\n if (handleIndex === 'all') {\n var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]);\n handleSpan = restrict(handleSpan, [0, extentSpan]);\n minSpan = maxSpan = restrict(handleSpan, [minSpan, maxSpan]);\n handleIndex = 0;\n }\n\n handleEnds[0] = restrict(handleEnds[0], extent);\n handleEnds[1] = restrict(handleEnds[1], extent);\n var originalDistSign = getSpanSign(handleEnds, handleIndex);\n handleEnds[handleIndex] += delta; // Restrict in extent.\n\n var extentMinSpan = minSpan || 0;\n var realExtent = extent.slice();\n originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan;\n handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent); // Expand span.\n\n var currDistSign = getSpanSign(handleEnds, handleIndex);\n\n if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) {\n // If minSpan exists, 'cross' is forbidden.\n handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;\n } // Shrink span.\n\n\n var currDistSign = getSpanSign(handleEnds, handleIndex);\n\n if (maxSpan != null && currDistSign.span > maxSpan) {\n handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;\n }\n\n return handleEnds;\n}\n\nfunction getSpanSign(handleEnds, handleIndex) {\n var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex]; // If `handleEnds[0] === handleEnds[1]`, always believe that handleEnd[0]\n // is at left of handleEnds[1] for non-cross case.\n\n return {\n span: Math.abs(dist),\n sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1\n };\n}\n\nfunction restrict(value, extend) {\n return Math.min(extend[1] != null ? extend[1] : Infinity, Math.max(extend[0] != null ? extend[0] : -Infinity, value));\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 echarts = require(\"../echarts\");\n\nrequire(\"./tree/TreeSeries\");\n\nrequire(\"./tree/TreeView\");\n\nrequire(\"./tree/treeAction\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar treeLayout = require(\"./tree/treeLayout\");\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.registerVisual(visualSymbol('tree', 'circle'));\necharts.registerLayout(treeLayout);","\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*/\n\n/**\n * Extend axis 2d\n * @constructor module:echarts/coord/cartesian/Axis2D\n * @extends {module:echarts/coord/cartesian/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar Axis2D = function (dim, scale, coordExtent, axisType, position) {\n Axis.call(this, dim, scale, coordExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = axisType || 'value';\n /**\n * Axis position\n * - 'top'\n * - 'bottom'\n * - 'left'\n * - 'right'\n */\n\n this.position = position || 'bottom';\n};\n\nAxis2D.prototype = {\n constructor: Axis2D,\n\n /**\n * Index of axis, can be used as key\n */\n index: 0,\n\n /**\n * Implemented in .\n * @return {Array.}\n * If not on zero of other axis, return null/undefined.\n * If no axes, return an empty array.\n */\n getAxesOnZeroOf: null,\n\n /**\n * Axis model\n * @param {module:echarts/coord/cartesian/AxisModel}\n */\n model: null,\n isHorizontal: function () {\n var position = this.position;\n return position === 'top' || position === 'bottom';\n },\n\n /**\n * Each item cooresponds to this.getExtent(), which\n * means globalExtent[0] may greater than globalExtent[1],\n * unless `asc` is input.\n *\n * @param {boolean} [asc]\n * @return {Array.}\n */\n getGlobalExtent: function (asc) {\n var ret = this.getExtent();\n ret[0] = this.toGlobalCoord(ret[0]);\n ret[1] = this.toGlobalCoord(ret[1]);\n asc && ret[0] > ret[1] && ret.reverse();\n return ret;\n },\n getOtherAxis: function () {\n this.grid.getOtherAxis();\n },\n\n /**\n * @override\n */\n pointToData: function (point, clamp) {\n return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);\n },\n\n /**\n * Transform global coord to local coord,\n * i.e. var localCoord = axis.toLocalCoord(80);\n * designate by module:echarts/coord/cartesian/Grid.\n * @type {Function}\n */\n toLocalCoord: null,\n\n /**\n * Transform global coord to local coord,\n * i.e. var globalCoord = axis.toLocalCoord(40);\n * designate by module:echarts/coord/cartesian/Grid.\n * @type {Function}\n */\n toGlobalCoord: null\n};\nzrUtil.inherits(Axis2D, Axis);\nvar _default = Axis2D;\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 _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isString = _util.isString;\nvar isArray = _util.isArray;\nvar each = _util.each;\nvar assert = _util.assert;\n\nvar _parseSVG = require(\"zrender/lib/tool/parseSVG\");\n\nvar parseXML = _parseSVG.parseXML;\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 storage = createHashMap(); // For minimize the code size of common echarts package,\n// do not put too much logic in this module.\n\nvar _default = {\n // The format of record: see `echarts.registerMap`.\n // Compatible with previous `echarts.registerMap`.\n registerMap: function (mapName, rawGeoJson, rawSpecialAreas) {\n var records;\n\n if (isArray(rawGeoJson)) {\n records = rawGeoJson;\n } else if (rawGeoJson.svg) {\n records = [{\n type: 'svg',\n source: rawGeoJson.svg,\n specialAreas: rawGeoJson.specialAreas\n }];\n } else {\n // Backward compatibility.\n if (rawGeoJson.geoJson && !rawGeoJson.features) {\n rawSpecialAreas = rawGeoJson.specialAreas;\n rawGeoJson = rawGeoJson.geoJson;\n }\n\n records = [{\n type: 'geoJSON',\n source: rawGeoJson,\n specialAreas: rawSpecialAreas\n }];\n }\n\n each(records, function (record) {\n var type = record.type;\n type === 'geoJson' && (type = record.type = 'geoJSON');\n var parse = parsers[type];\n parse(record);\n });\n return storage.set(mapName, records);\n },\n retrieveMap: function (mapName) {\n return storage.get(mapName);\n }\n};\nvar parsers = {\n geoJSON: function (record) {\n var source = record.source;\n record.geoJSON = !isString(source) ? source : typeof JSON !== 'undefined' && JSON.parse ? JSON.parse(source) : new Function('return (' + source + ');')();\n },\n // Only perform parse to XML object here, which might be time\n // consiming for large SVG.\n // Although convert XML to zrender element is also time consiming,\n // if we do it here, the clone of zrender elements has to be\n // required. So we do it once for each geo instance, util real\n // performance issues call for optimizing it.\n svg: function (record) {\n record.svgXML = parseXML(record.source);\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 createHashMap = _util.createHashMap;\nvar isTypedArray = _util.isTypedArray;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar _sourceType = require(\"./helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\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 * [sourceFormat]\n *\n * + \"original\":\n * This format is only used in series.data, where\n * itemStyle can be specified in data item.\n *\n * + \"arrayRows\":\n * [\n * ['product', 'score', 'amount'],\n * ['Matcha Latte', 89.3, 95.8],\n * ['Milk Tea', 92.1, 89.4],\n * ['Cheese Cocoa', 94.4, 91.2],\n * ['Walnut Brownie', 85.4, 76.9]\n * ]\n *\n * + \"objectRows\":\n * [\n * {product: 'Matcha Latte', score: 89.3, amount: 95.8},\n * {product: 'Milk Tea', score: 92.1, amount: 89.4},\n * {product: 'Cheese Cocoa', score: 94.4, amount: 91.2},\n * {product: 'Walnut Brownie', score: 85.4, amount: 76.9}\n * ]\n *\n * + \"keyedColumns\":\n * {\n * 'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'],\n * 'count': [823, 235, 1042, 988],\n * 'score': [95.8, 81.4, 91.2, 76.9]\n * }\n *\n * + \"typedArray\"\n *\n * + \"unknown\"\n */\n\n/**\n * @constructor\n * @param {Object} fields\n * @param {string} fields.sourceFormat\n * @param {Array|Object} fields.fromDataset\n * @param {Array|Object} [fields.data]\n * @param {string} [seriesLayoutBy='column']\n * @param {Array.} [dimensionsDefine]\n * @param {Objet|HashMap} [encodeDefine]\n * @param {number} [startIndex=0]\n * @param {number} [dimensionsDetectCount]\n */\nfunction Source(fields) {\n /**\n * @type {boolean}\n */\n this.fromDataset = fields.fromDataset;\n /**\n * Not null/undefined.\n * @type {Array|Object}\n */\n\n this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\n /**\n * See also \"detectSourceFormat\".\n * Not null/undefined.\n * @type {string}\n */\n\n this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\n /**\n * 'row' or 'column'\n * Not null/undefined.\n * @type {string} seriesLayoutBy\n */\n\n this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\n /**\n * dimensions definition in option.\n * can be null/undefined.\n * @type {Array.}\n */\n\n this.dimensionsDefine = fields.dimensionsDefine;\n /**\n * encode definition in option.\n * can be null/undefined.\n * @type {Objet|HashMap}\n */\n\n this.encodeDefine = fields.encodeDefine && createHashMap(fields.encodeDefine);\n /**\n * Not null/undefined, uint.\n * @type {number}\n */\n\n this.startIndex = fields.startIndex || 0;\n /**\n * Can be null/undefined (when unknown), uint.\n * @type {number}\n */\n\n this.dimensionsDetectCount = fields.dimensionsDetectCount;\n}\n/**\n * Wrap original series data for some compatibility cases.\n */\n\n\nSource.seriesDataToSource = function (data) {\n return new Source({\n data: data,\n sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL,\n fromDataset: false\n });\n};\n\nenableClassCheck(Source);\nvar _default = Source;\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 _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*/\nvar each = zrUtil.each;\n\nfunction _default(ecModel) {\n var groupResult = groupSeriesByAxis(ecModel);\n each(groupResult, function (groupItem) {\n var seriesModels = groupItem.seriesModels;\n\n if (!seriesModels.length) {\n return;\n }\n\n calculateBase(groupItem);\n each(seriesModels, function (seriesModel, idx) {\n layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]);\n });\n });\n}\n/**\n * Group series by axis.\n */\n\n\nfunction groupSeriesByAxis(ecModel) {\n var result = [];\n var axisList = [];\n ecModel.eachSeriesByType('boxplot', function (seriesModel) {\n var baseAxis = seriesModel.getBaseAxis();\n var idx = zrUtil.indexOf(axisList, baseAxis);\n\n if (idx < 0) {\n idx = axisList.length;\n axisList[idx] = baseAxis;\n result[idx] = {\n axis: baseAxis,\n seriesModels: []\n };\n }\n\n result[idx].seriesModels.push(seriesModel);\n });\n return result;\n}\n/**\n * Calculate offset and box width for each series.\n */\n\n\nfunction calculateBase(groupItem) {\n var extent;\n var baseAxis = groupItem.axis;\n var seriesModels = groupItem.seriesModels;\n var seriesCount = seriesModels.length;\n var boxWidthList = groupItem.boxWidthList = [];\n var boxOffsetList = groupItem.boxOffsetList = [];\n var boundList = [];\n var bandWidth;\n\n if (baseAxis.type === 'category') {\n bandWidth = baseAxis.getBandWidth();\n } else {\n var maxDataCount = 0;\n each(seriesModels, function (seriesModel) {\n maxDataCount = Math.max(maxDataCount, seriesModel.getData().count());\n });\n extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / maxDataCount;\n }\n\n each(seriesModels, function (seriesModel) {\n var boxWidthBound = seriesModel.get('boxWidth');\n\n if (!zrUtil.isArray(boxWidthBound)) {\n boxWidthBound = [boxWidthBound, boxWidthBound];\n }\n\n boundList.push([parsePercent(boxWidthBound[0], bandWidth) || 0, parsePercent(boxWidthBound[1], bandWidth) || 0]);\n });\n var availableWidth = bandWidth * 0.8 - 2;\n var boxGap = availableWidth / seriesCount * 0.3;\n var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount;\n var base = boxWidth / 2 - availableWidth / 2;\n each(seriesModels, function (seriesModel, idx) {\n boxOffsetList.push(base);\n base += boxGap + boxWidth;\n boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]));\n });\n}\n/**\n * Calculate points location for each series.\n */\n\n\nfunction layoutSingleSeries(seriesModel, offset, boxWidth) {\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var halfWidth = boxWidth / 2;\n var cDimIdx = seriesModel.get('layout') === 'horizontal' ? 0 : 1;\n var vDimIdx = 1 - cDimIdx;\n var coordDims = ['x', 'y'];\n var cDim = data.mapDimension(coordDims[cDimIdx]);\n var vDims = data.mapDimension(coordDims[vDimIdx], true);\n\n if (cDim == null || vDims.length < 5) {\n return;\n }\n\n for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\n var axisDimVal = data.get(cDim, dataIndex);\n var median = getPoint(axisDimVal, vDims[2], dataIndex);\n var end1 = getPoint(axisDimVal, vDims[0], dataIndex);\n var end2 = getPoint(axisDimVal, vDims[1], dataIndex);\n var end4 = getPoint(axisDimVal, vDims[3], dataIndex);\n var end5 = getPoint(axisDimVal, vDims[4], dataIndex);\n var ends = [];\n addBodyEnd(ends, end2, 0);\n addBodyEnd(ends, end4, 1);\n ends.push(end1, end2, end5, end4);\n layEndLine(ends, end1);\n layEndLine(ends, end5);\n layEndLine(ends, median);\n data.setItemLayout(dataIndex, {\n initBaseline: median[vDimIdx],\n ends: ends\n });\n }\n\n function getPoint(axisDimVal, dimIdx, dataIndex) {\n var val = data.get(dimIdx, dataIndex);\n var p = [];\n p[cDimIdx] = axisDimVal;\n p[vDimIdx] = val;\n var point;\n\n if (isNaN(axisDimVal) || isNaN(val)) {\n point = [NaN, NaN];\n } else {\n point = coordSys.dataToPoint(p);\n point[cDimIdx] += offset;\n }\n\n return point;\n }\n\n function addBodyEnd(ends, point, start) {\n var point1 = point.slice();\n var point2 = point.slice();\n point1[cDimIdx] += halfWidth;\n point2[cDimIdx] -= halfWidth;\n start ? ends.push(point1, point2) : ends.push(point2, point1);\n }\n\n function layEndLine(ends, endCenter) {\n var from = endCenter.slice();\n var to = endCenter.slice();\n from[cDimIdx] -= halfWidth;\n to[cDimIdx] += halfWidth;\n ends.push(from, to);\n }\n}\n\nmodule.exports = _default;","var _config = require(\"./config\");\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar util = require(\"./core/util\");\n\nvar logError = require(\"./core/log\");\n\nvar BoundingRect = require(\"./core/BoundingRect\");\n\nvar timsort = require(\"./core/timsort\");\n\nvar Layer = require(\"./Layer\");\n\nvar requestAnimationFrame = require(\"./animation/requestAnimationFrame\");\n\nvar Image = require(\"./graphic/Image\");\n\nvar env = require(\"./core/env\");\n\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\n\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\n\nfunction isLayerValid(layer) {\n if (!layer) {\n return false;\n }\n\n if (layer.__builtin__) {\n return true;\n }\n\n if (typeof layer.resize !== 'function' || typeof layer.refresh !== 'function') {\n return false;\n }\n\n return true;\n}\n\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar viewRect = new BoundingRect(0, 0, 0, 0);\n\nfunction isDisplayableCulled(el, width, height) {\n tmpRect.copy(el.getBoundingRect());\n\n if (el.transform) {\n tmpRect.applyTransform(el.transform);\n }\n\n viewRect.width = width;\n viewRect.height = height;\n return !tmpRect.intersect(viewRect);\n}\n\nfunction isClipPathChanged(clipPaths, prevClipPaths) {\n // displayable.__clipPaths can only be `null`/`undefined` or an non-empty array.\n if (clipPaths === prevClipPaths) {\n return false;\n }\n\n if (!clipPaths || !prevClipPaths || clipPaths.length !== prevClipPaths.length) {\n return true;\n }\n\n for (var i = 0; i < clipPaths.length; i++) {\n if (clipPaths[i] !== prevClipPaths[i]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction doClip(clipPaths, ctx) {\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n clipPath.setTransform(ctx);\n ctx.beginPath();\n clipPath.buildPath(ctx, clipPath.shape);\n ctx.clip(); // Transform back\n\n clipPath.restoreTransform(ctx);\n }\n}\n\nfunction createRoot(width, height) {\n var domRoot = document.createElement('div'); // domRoot.onselectstart = returnFalse; // Avoid page selected\n\n domRoot.style.cssText = ['position:relative', // IOS13 safari probably has a compositing bug (z order of the canvas and the consequent\n // dom does not act as expected) when some of the parent dom has\n // `-webkit-overflow-scrolling: touch;` and the webpage is longer than one screen and\n // the canvas is not at the top part of the page.\n // Check `https://bugs.webkit.org/show_bug.cgi?id=203681` for more details. We remove\n // this `overflow:hidden` to avoid the bug.\n // 'overflow:hidden',\n 'width:' + width + 'px', 'height:' + height + 'px', 'padding:0', 'margin:0', 'border-width:0'].join(';') + ';';\n return domRoot;\n}\n/**\n * @alias module:zrender/Painter\n * @constructor\n * @param {HTMLElement} root 绘图容器\n * @param {module:zrender/Storage} storage\n * @param {Object} opts\n */\n\n\nvar Painter = function (root, storage, opts) {\n this.type = 'canvas'; // In node environment using node-canvas\n\n var singleCanvas = !root.nodeName // In node ?\n || root.nodeName.toUpperCase() === 'CANVAS';\n this._opts = opts = util.extend({}, opts || {});\n /**\n * @type {number}\n */\n\n this.dpr = opts.devicePixelRatio || devicePixelRatio;\n /**\n * @type {boolean}\n * @private\n */\n\n this._singleCanvas = singleCanvas;\n /**\n * 绘图容器\n * @type {HTMLElement}\n */\n\n this.root = root;\n var rootStyle = root.style;\n\n if (rootStyle) {\n rootStyle['-webkit-tap-highlight-color'] = 'transparent';\n rootStyle['-webkit-user-select'] = rootStyle['user-select'] = rootStyle['-webkit-touch-callout'] = 'none';\n root.innerHTML = '';\n }\n /**\n * @type {module:zrender/Storage}\n */\n\n\n this.storage = storage;\n /**\n * @type {Array.}\n * @private\n */\n\n var zlevelList = this._zlevelList = [];\n /**\n * @type {Object.}\n * @private\n */\n\n var layers = this._layers = {};\n /**\n * @type {Object.}\n * @private\n */\n\n this._layerConfig = {};\n /**\n * zrender will do compositing when root is a canvas and have multiple zlevels.\n */\n\n this._needsManuallyCompositing = false;\n\n if (!singleCanvas) {\n this._width = this._getSize(0);\n this._height = this._getSize(1);\n var domRoot = this._domRoot = createRoot(this._width, this._height);\n root.appendChild(domRoot);\n } else {\n var width = root.width;\n var height = root.height;\n\n if (opts.width != null) {\n width = opts.width;\n }\n\n if (opts.height != null) {\n height = opts.height;\n }\n\n this.dpr = opts.devicePixelRatio || 1; // Use canvas width and height directly\n\n root.width = width * this.dpr;\n root.height = height * this.dpr;\n this._width = width;\n this._height = height; // Create layer if only one given canvas\n // Device can be specified to create a high dpi image.\n\n var mainLayer = new Layer(root, this, this.dpr);\n mainLayer.__builtin__ = true;\n mainLayer.initContext(); // FIXME Use canvas width and height\n // mainLayer.resize(width, height);\n\n layers[CANVAS_ZLEVEL] = mainLayer;\n mainLayer.zlevel = CANVAS_ZLEVEL; // Not use common zlevel.\n\n zlevelList.push(CANVAS_ZLEVEL);\n this._domRoot = root;\n }\n /**\n * @type {module:zrender/Layer}\n * @private\n */\n\n\n this._hoverlayer = null;\n this._hoverElements = [];\n};\n\nPainter.prototype = {\n constructor: Painter,\n getType: function () {\n return 'canvas';\n },\n\n /**\n * If painter use a single canvas\n * @return {boolean}\n */\n isSingleCanvas: function () {\n return this._singleCanvas;\n },\n\n /**\n * @return {HTMLDivElement}\n */\n getViewportRoot: function () {\n return this._domRoot;\n },\n getViewportRootOffset: function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n },\n\n /**\n * 刷新\n * @param {boolean} [paintAll=false] 强制绘制所有displayable\n */\n refresh: function (paintAll) {\n var list = this.storage.getDisplayList(true);\n var zlevelList = this._zlevelList;\n this._redrawId = Math.random();\n\n this._paintList(list, paintAll, this._redrawId); // Paint custum layers\n\n\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n\n if (!layer.__builtin__ && layer.refresh) {\n var clearColor = i === 0 ? this._backgroundColor : null;\n layer.refresh(clearColor);\n }\n }\n\n this.refreshHover();\n return this;\n },\n addHover: function (el, hoverStyle) {\n if (el.__hoverMir) {\n return;\n }\n\n var elMirror = new el.constructor({\n style: el.style,\n shape: el.shape,\n z: el.z,\n z2: el.z2,\n silent: el.silent\n });\n elMirror.__from = el;\n el.__hoverMir = elMirror;\n hoverStyle && elMirror.setStyle(hoverStyle);\n\n this._hoverElements.push(elMirror);\n\n return elMirror;\n },\n removeHover: function (el) {\n var elMirror = el.__hoverMir;\n var hoverElements = this._hoverElements;\n var idx = util.indexOf(hoverElements, elMirror);\n\n if (idx >= 0) {\n hoverElements.splice(idx, 1);\n }\n\n el.__hoverMir = null;\n },\n clearHover: function (el) {\n var hoverElements = this._hoverElements;\n\n for (var i = 0; i < hoverElements.length; i++) {\n var from = hoverElements[i].__from;\n\n if (from) {\n from.__hoverMir = null;\n }\n }\n\n hoverElements.length = 0;\n },\n refreshHover: function () {\n var hoverElements = this._hoverElements;\n var len = hoverElements.length;\n var hoverLayer = this._hoverlayer;\n hoverLayer && hoverLayer.clear();\n\n if (!len) {\n return;\n }\n\n timsort(hoverElements, this.storage.displayableSortFunc); // Use a extream large zlevel\n // FIXME?\n\n if (!hoverLayer) {\n hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\n }\n\n var scope = {};\n hoverLayer.ctx.save();\n\n for (var i = 0; i < len;) {\n var el = hoverElements[i];\n var originalEl = el.__from; // Original el is removed\n // PENDING\n\n if (!(originalEl && originalEl.__zr)) {\n hoverElements.splice(i, 1);\n originalEl.__hoverMir = null;\n len--;\n continue;\n }\n\n i++; // Use transform\n // FIXME style and shape ?\n\n if (!originalEl.invisible) {\n el.transform = originalEl.transform;\n el.invTransform = originalEl.invTransform;\n el.__clipPaths = originalEl.__clipPaths; // el.\n\n this._doPaintEl(el, hoverLayer, true, scope);\n }\n }\n\n hoverLayer.ctx.restore();\n },\n getHoverLayer: function () {\n return this.getLayer(HOVER_LAYER_ZLEVEL);\n },\n _paintList: function (list, paintAll, redrawId) {\n if (this._redrawId !== redrawId) {\n return;\n }\n\n paintAll = paintAll || false;\n\n this._updateLayerStatus(list);\n\n var finished = this._doPaintList(list, paintAll);\n\n if (this._needsManuallyCompositing) {\n this._compositeManually();\n }\n\n if (!finished) {\n var self = this;\n requestAnimationFrame(function () {\n self._paintList(list, paintAll, redrawId);\n });\n }\n },\n _compositeManually: function () {\n var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\n var width = this._domRoot.width;\n var height = this._domRoot.height;\n ctx.clearRect(0, 0, width, height); // PENDING, If only builtin layer?\n\n this.eachBuiltinLayer(function (layer) {\n if (layer.virtual) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n }\n });\n },\n _doPaintList: function (list, paintAll) {\n var layerList = [];\n\n for (var zi = 0; zi < this._zlevelList.length; zi++) {\n var zlevel = this._zlevelList[zi];\n var layer = this._layers[zlevel];\n\n if (layer.__builtin__ && layer !== this._hoverlayer && (layer.__dirty || paintAll)) {\n layerList.push(layer);\n }\n }\n\n var finished = true;\n\n for (var k = 0; k < layerList.length; k++) {\n var layer = layerList[k];\n var ctx = layer.ctx;\n var scope = {};\n ctx.save();\n var start = paintAll ? layer.__startIndex : layer.__drawIndex;\n var useTimer = !paintAll && layer.incremental && Date.now;\n var startTime = useTimer && Date.now();\n var clearColor = layer.zlevel === this._zlevelList[0] ? this._backgroundColor : null; // All elements in this layer are cleared.\n\n if (layer.__startIndex === layer.__endIndex) {\n layer.clear(false, clearColor);\n } else if (start === layer.__startIndex) {\n var firstEl = list[start];\n\n if (!firstEl.incremental || !firstEl.notClear || paintAll) {\n layer.clear(false, clearColor);\n }\n }\n\n if (start === -1) {\n console.error('For some unknown reason. drawIndex is -1');\n start = layer.__startIndex;\n }\n\n for (var i = start; i < layer.__endIndex; i++) {\n var el = list[i];\n\n this._doPaintEl(el, layer, paintAll, scope);\n\n el.__dirty = el.__dirtyText = false;\n\n if (useTimer) {\n // Date.now can be executed in 13,025,305 ops/second.\n var dTime = Date.now() - startTime; // Give 15 millisecond to draw.\n // The rest elements will be drawn in the next frame.\n\n if (dTime > 15) {\n break;\n }\n }\n }\n\n layer.__drawIndex = i;\n\n if (layer.__drawIndex < layer.__endIndex) {\n finished = false;\n }\n\n if (scope.prevElClipPaths) {\n // Needs restore the state. If last drawn element is in the clipping area.\n ctx.restore();\n }\n\n ctx.restore();\n }\n\n if (env.wxa) {\n // Flush for weixin application\n util.each(this._layers, function (layer) {\n if (layer && layer.ctx && layer.ctx.draw) {\n layer.ctx.draw();\n }\n });\n }\n\n return finished;\n },\n _doPaintEl: function (el, currentLayer, forcePaint, scope) {\n var ctx = currentLayer.ctx;\n var m = el.transform;\n\n if ((currentLayer.__dirty || forcePaint) && // Ignore invisible element\n !el.invisible // Ignore transparent element\n && el.style.opacity !== 0 // Ignore scale 0 element, in some environment like node-canvas\n // Draw a scale 0 element can cause all following draw wrong\n // And setTransform with scale 0 will cause set back transform failed.\n && !(m && !m[0] && !m[3]) // Ignore culled element\n && !(el.culling && isDisplayableCulled(el, this._width, this._height))) {\n var clipPaths = el.__clipPaths;\n var prevElClipPaths = scope.prevElClipPaths; // Optimize when clipping on group with several elements\n\n if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\n // If has previous clipping state, restore from it\n if (prevElClipPaths) {\n ctx.restore();\n scope.prevElClipPaths = null; // Reset prevEl since context has been restored\n\n scope.prevEl = null;\n } // New clipping state\n\n\n if (clipPaths) {\n ctx.save();\n doClip(clipPaths, ctx);\n scope.prevElClipPaths = clipPaths;\n }\n }\n\n el.beforeBrush && el.beforeBrush(ctx);\n el.brush(ctx, scope.prevEl || null);\n scope.prevEl = el;\n el.afterBrush && el.afterBrush(ctx);\n }\n },\n\n /**\n * 获取 zlevel 所在层,如果不存在则会创建一个新的层\n * @param {number} zlevel\n * @param {boolean} virtual Virtual layer will not be inserted into dom.\n * @return {module:zrender/Layer}\n */\n getLayer: function (zlevel, virtual) {\n if (this._singleCanvas && !this._needsManuallyCompositing) {\n zlevel = CANVAS_ZLEVEL;\n }\n\n var layer = this._layers[zlevel];\n\n if (!layer) {\n // Create a new layer\n layer = new Layer('zr_' + zlevel, this, this.dpr);\n layer.zlevel = zlevel;\n layer.__builtin__ = true;\n\n if (this._layerConfig[zlevel]) {\n util.merge(layer, this._layerConfig[zlevel], true);\n } // TODO Remove EL_AFTER_INCREMENTAL_INC magic number\n else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\n util.merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\n }\n\n if (virtual) {\n layer.virtual = virtual;\n }\n\n this.insertLayer(zlevel, layer); // Context is created after dom inserted to document\n // Or excanvas will get 0px clientWidth and clientHeight\n\n layer.initContext();\n }\n\n return layer;\n },\n insertLayer: function (zlevel, layer) {\n var layersMap = this._layers;\n var zlevelList = this._zlevelList;\n var len = zlevelList.length;\n var prevLayer = null;\n var i = -1;\n var domRoot = this._domRoot;\n\n if (layersMap[zlevel]) {\n logError('ZLevel ' + zlevel + ' has been used already');\n return;\n } // Check if is a valid layer\n\n\n if (!isLayerValid(layer)) {\n logError('Layer of zlevel ' + zlevel + ' is not valid');\n return;\n }\n\n if (len > 0 && zlevel > zlevelList[0]) {\n for (i = 0; i < len - 1; i++) {\n if (zlevelList[i] < zlevel && zlevelList[i + 1] > zlevel) {\n break;\n }\n }\n\n prevLayer = layersMap[zlevelList[i]];\n }\n\n zlevelList.splice(i + 1, 0, zlevel);\n layersMap[zlevel] = layer; // Vitual layer will not directly show on the screen.\n // (It can be a WebGL layer and assigned to a ZImage element)\n // But it still under management of zrender.\n\n if (!layer.virtual) {\n if (prevLayer) {\n var prevDom = prevLayer.dom;\n\n if (prevDom.nextSibling) {\n domRoot.insertBefore(layer.dom, prevDom.nextSibling);\n } else {\n domRoot.appendChild(layer.dom);\n }\n } else {\n if (domRoot.firstChild) {\n domRoot.insertBefore(layer.dom, domRoot.firstChild);\n } else {\n domRoot.appendChild(layer.dom);\n }\n }\n }\n },\n // Iterate each layer\n eachLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n cb.call(context, this._layers[z], z);\n }\n },\n // Iterate each buildin layer\n eachBuiltinLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var layer;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n layer = this._layers[z];\n\n if (layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n },\n // Iterate each other layer except buildin layer\n eachOtherLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var layer;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n layer = this._layers[z];\n\n if (!layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n },\n\n /**\n * 获取所有已创建的层\n * @param {Array.} [prevLayer]\n */\n getLayers: function () {\n return this._layers;\n },\n _updateLayerStatus: function (list) {\n this.eachBuiltinLayer(function (layer, z) {\n layer.__dirty = layer.__used = false;\n });\n\n function updatePrevLayer(idx) {\n if (prevLayer) {\n if (prevLayer.__endIndex !== idx) {\n prevLayer.__dirty = true;\n }\n\n prevLayer.__endIndex = idx;\n }\n }\n\n if (this._singleCanvas) {\n for (var i = 1; i < list.length; i++) {\n var el = list[i];\n\n if (el.zlevel !== list[i - 1].zlevel || el.incremental) {\n this._needsManuallyCompositing = true;\n break;\n }\n }\n }\n\n var prevLayer = null;\n var incrementalLayerCount = 0;\n var prevZlevel;\n\n for (var i = 0; i < list.length; i++) {\n var el = list[i];\n var zlevel = el.zlevel;\n var layer;\n\n if (prevZlevel !== zlevel) {\n prevZlevel = zlevel;\n incrementalLayerCount = 0;\n } // TODO Not use magic number on zlevel.\n // Each layer with increment element can be separated to 3 layers.\n // (Other Element drawn after incremental element)\n // -----------------zlevel + EL_AFTER_INCREMENTAL_INC--------------------\n // (Incremental element)\n // ----------------------zlevel + INCREMENTAL_INC------------------------\n // (Element drawn before incremental element)\n // --------------------------------zlevel--------------------------------\n\n\n if (el.incremental) {\n layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\n layer.incremental = true;\n incrementalLayerCount = 1;\n } else {\n layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\n }\n\n if (!layer.__builtin__) {\n logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\n }\n\n if (layer !== prevLayer) {\n layer.__used = true;\n\n if (layer.__startIndex !== i) {\n layer.__dirty = true;\n }\n\n layer.__startIndex = i;\n\n if (!layer.incremental) {\n layer.__drawIndex = i;\n } else {\n // Mark layer draw index needs to update.\n layer.__drawIndex = -1;\n }\n\n updatePrevLayer(i);\n prevLayer = layer;\n }\n\n if (el.__dirty) {\n layer.__dirty = true;\n\n if (layer.incremental && layer.__drawIndex < 0) {\n // Start draw from the first dirty element.\n layer.__drawIndex = i;\n }\n }\n }\n\n updatePrevLayer(i);\n this.eachBuiltinLayer(function (layer, z) {\n // Used in last frame but not in this frame. Needs clear\n if (!layer.__used && layer.getElementCount() > 0) {\n layer.__dirty = true;\n layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\n } // For incremental layer. In case start index changed and no elements are dirty.\n\n\n if (layer.__dirty && layer.__drawIndex < 0) {\n layer.__drawIndex = layer.__startIndex;\n }\n });\n },\n\n /**\n * 清除hover层外所有内容\n */\n clear: function () {\n this.eachBuiltinLayer(this._clearLayer);\n return this;\n },\n _clearLayer: function (layer) {\n layer.clear();\n },\n setBackgroundColor: function (backgroundColor) {\n this._backgroundColor = backgroundColor;\n },\n\n /**\n * 修改指定zlevel的绘制参数\n *\n * @param {string} zlevel\n * @param {Object} config 配置对象\n * @param {string} [config.clearColor=0] 每次清空画布的颜色\n * @param {string} [config.motionBlur=false] 是否开启动态模糊\n * @param {number} [config.lastFrameAlpha=0.7]\n * 在开启动态模糊的时候使用,与上一帧混合的alpha值,值越大尾迹越明显\n */\n configLayer: function (zlevel, config) {\n if (config) {\n var layerConfig = this._layerConfig;\n\n if (!layerConfig[zlevel]) {\n layerConfig[zlevel] = config;\n } else {\n util.merge(layerConfig[zlevel], config, true);\n }\n\n for (var i = 0; i < this._zlevelList.length; i++) {\n var _zlevel = this._zlevelList[i]; // TODO Remove EL_AFTER_INCREMENTAL_INC magic number\n\n if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\n var layer = this._layers[_zlevel];\n util.merge(layer, layerConfig[zlevel], true);\n }\n }\n }\n },\n\n /**\n * 删除指定层\n * @param {number} zlevel 层所在的zlevel\n */\n delLayer: function (zlevel) {\n var layers = this._layers;\n var zlevelList = this._zlevelList;\n var layer = layers[zlevel];\n\n if (!layer) {\n return;\n }\n\n layer.dom.parentNode.removeChild(layer.dom);\n delete layers[zlevel];\n zlevelList.splice(util.indexOf(zlevelList, zlevel), 1);\n },\n\n /**\n * 区域大小变化后重绘\n */\n resize: function (width, height) {\n if (!this._domRoot.style) {\n // Maybe in node or worker\n if (width == null || height == null) {\n return;\n }\n\n this._width = width;\n this._height = height;\n this.getLayer(CANVAS_ZLEVEL).resize(width, height);\n } else {\n var domRoot = this._domRoot; // FIXME Why ?\n\n domRoot.style.display = 'none'; // Save input w/h\n\n var opts = this._opts;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n width = this._getSize(0);\n height = this._getSize(1);\n domRoot.style.display = ''; // 优化没有实际改变的resize\n\n if (this._width !== width || height !== this._height) {\n domRoot.style.width = width + 'px';\n domRoot.style.height = height + 'px';\n\n for (var id in this._layers) {\n if (this._layers.hasOwnProperty(id)) {\n this._layers[id].resize(width, height);\n }\n }\n\n util.each(this._progressiveLayers, function (layer) {\n layer.resize(width, height);\n });\n this.refresh(true);\n }\n\n this._width = width;\n this._height = height;\n }\n\n return this;\n },\n\n /**\n * 清除单独的一个层\n * @param {number} zlevel\n */\n clearLayer: function (zlevel) {\n var layer = this._layers[zlevel];\n\n if (layer) {\n layer.clear();\n }\n },\n\n /**\n * 释放\n */\n dispose: function () {\n this.root.innerHTML = '';\n this.root = this.storage = this._domRoot = this._layers = null;\n },\n\n /**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @param {number} [opts.pixelRatio]\n */\n getRenderedCanvas: function (opts) {\n opts = opts || {};\n\n if (this._singleCanvas && !this._compositeManually) {\n return this._layers[CANVAS_ZLEVEL].dom;\n }\n\n var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\n imageLayer.initContext();\n imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\n\n if (opts.pixelRatio <= this.dpr) {\n this.refresh();\n var width = imageLayer.dom.width;\n var height = imageLayer.dom.height;\n var ctx = imageLayer.ctx;\n this.eachLayer(function (layer) {\n if (layer.__builtin__) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n } else if (layer.renderToCanvas) {\n imageLayer.ctx.save();\n layer.renderToCanvas(imageLayer.ctx);\n imageLayer.ctx.restore();\n }\n });\n } else {\n // PENDING, echarts-gl and incremental rendering.\n var scope = {};\n var displayList = this.storage.getDisplayList(true);\n\n for (var i = 0; i < displayList.length; i++) {\n var el = displayList[i];\n\n this._doPaintEl(el, imageLayer, true, scope);\n }\n }\n\n return imageLayer.dom;\n },\n\n /**\n * 获取绘图区域宽度\n */\n getWidth: function () {\n return this._width;\n },\n\n /**\n * 获取绘图区域高度\n */\n getHeight: function () {\n return this._height;\n },\n _getSize: function (whIdx) {\n var opts = this._opts;\n var wh = ['width', 'height'][whIdx];\n var cwh = ['clientWidth', 'clientHeight'][whIdx];\n var plt = ['paddingLeft', 'paddingTop'][whIdx];\n var prb = ['paddingRight', 'paddingBottom'][whIdx];\n\n if (opts[wh] != null && opts[wh] !== 'auto') {\n return parseFloat(opts[wh]);\n }\n\n var root = this.root; // IE8 does not support getComputedStyle, but it use VML.\n\n var stl = document.defaultView.getComputedStyle(root);\n return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;\n },\n pathToImage: function (path, dpr) {\n dpr = dpr || this.dpr;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n var rect = path.getBoundingRect();\n var style = path.style;\n var shadowBlurSize = style.shadowBlur * dpr;\n var shadowOffsetX = style.shadowOffsetX * dpr;\n var shadowOffsetY = style.shadowOffsetY * dpr;\n var lineWidth = style.hasStroke() ? style.lineWidth : 0;\n var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);\n var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);\n var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);\n var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);\n var width = rect.width + leftMargin + rightMargin;\n var height = rect.height + topMargin + bottomMargin;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, width, height);\n ctx.dpr = dpr;\n var pathTransform = {\n position: path.position,\n rotation: path.rotation,\n scale: path.scale\n };\n path.position = [leftMargin - rect.x, topMargin - rect.y];\n path.rotation = 0;\n path.scale = [1, 1];\n path.updateTransform();\n\n if (path) {\n path.brush(ctx);\n }\n\n var ImageShape = Image;\n var imgShape = new ImageShape({\n style: {\n x: 0,\n y: 0,\n image: canvas\n }\n });\n\n if (pathTransform.position != null) {\n imgShape.position = path.position = pathTransform.position;\n }\n\n if (pathTransform.rotation != null) {\n imgShape.rotation = path.rotation = pathTransform.rotation;\n }\n\n if (pathTransform.scale != null) {\n imgShape.scale = path.scale = pathTransform.scale;\n }\n\n return imgShape;\n }\n};\nvar _default = Painter;\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 ComponentModel = require(\"../../model/Component\");\n\nvar List = require(\"../../data/List\");\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*/\nvar TimelineModel = ComponentModel.extend({\n type: 'timeline',\n layoutMode: 'box',\n\n /**\n * @protected\n */\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 4,\n // 二级层叠\n show: true,\n axisType: 'time',\n // 模式是时间类型,支持 value, category\n realtime: true,\n left: '20%',\n top: null,\n right: '20%',\n bottom: 0,\n width: null,\n height: 40,\n padding: 5,\n controlPosition: 'left',\n // 'left' 'right' 'top' 'bottom' 'none'\n autoPlay: false,\n rewind: false,\n // 反向播放\n loop: true,\n playInterval: 2000,\n // 播放时间间隔,单位ms\n currentIndex: 0,\n itemStyle: {},\n label: {\n color: '#000'\n },\n data: []\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel) {\n /**\n * @private\n * @type {module:echarts/data/List}\n */\n this._data;\n /**\n * @private\n * @type {Array.}\n */\n\n this._names;\n this.mergeDefaultAndTheme(option, ecModel);\n\n this._initData();\n },\n\n /**\n * @override\n */\n mergeOption: function (option) {\n TimelineModel.superApply(this, 'mergeOption', arguments);\n\n this._initData();\n },\n\n /**\n * @param {number} [currentIndex]\n */\n setCurrentIndex: function (currentIndex) {\n if (currentIndex == null) {\n currentIndex = this.option.currentIndex;\n }\n\n var count = this._data.count();\n\n if (this.option.loop) {\n currentIndex = (currentIndex % count + count) % count;\n } else {\n currentIndex >= count && (currentIndex = count - 1);\n currentIndex < 0 && (currentIndex = 0);\n }\n\n this.option.currentIndex = currentIndex;\n },\n\n /**\n * @return {number} currentIndex\n */\n getCurrentIndex: function () {\n return this.option.currentIndex;\n },\n\n /**\n * @return {boolean}\n */\n isIndexMax: function () {\n return this.getCurrentIndex() >= this._data.count() - 1;\n },\n\n /**\n * @param {boolean} state true: play, false: stop\n */\n setPlayState: function (state) {\n this.option.autoPlay = !!state;\n },\n\n /**\n * @return {boolean} true: play, false: stop\n */\n getPlayState: function () {\n return !!this.option.autoPlay;\n },\n\n /**\n * @private\n */\n _initData: function () {\n var thisOption = this.option;\n var dataArr = thisOption.data || [];\n var axisType = thisOption.axisType;\n var names = this._names = [];\n\n if (axisType === 'category') {\n var idxArr = [];\n zrUtil.each(dataArr, function (item, index) {\n var value = modelUtil.getDataItemValue(item);\n var newItem;\n\n if (zrUtil.isObject(item)) {\n newItem = zrUtil.clone(item);\n newItem.value = index;\n } else {\n newItem = index;\n }\n\n idxArr.push(newItem);\n\n if (!zrUtil.isString(value) && (value == null || isNaN(value))) {\n value = '';\n }\n\n names.push(value + '');\n });\n dataArr = idxArr;\n }\n\n var dimType = {\n category: 'ordinal',\n time: 'time'\n }[axisType] || 'number';\n var data = this._data = new List([{\n name: 'value',\n type: dimType\n }], this);\n data.initData(dataArr, names);\n },\n getData: function () {\n return this._data;\n },\n\n /**\n * @public\n * @return {Array.} categoreis\n */\n getCategories: function () {\n if (this.get('axisType') === 'category') {\n return this._names.slice();\n }\n }\n});\nvar _default = TimelineModel;\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 textContain = require(\"zrender/lib/contain/text\");\n\nvar numberUtil = require(\"./number\");\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 Text from 'zrender/src/graphic/Text';\n\n/**\n * add commas after every three numbers\n * @param {string|number} x\n * @return {string}\n */\nfunction addCommas(x) {\n if (isNaN(x)) {\n return '-';\n }\n\n x = (x + '').split('.');\n return x[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,') + (x.length > 1 ? '.' + x[1] : '');\n}\n/**\n * @param {string} str\n * @param {boolean} [upperCaseFirst=false]\n * @return {string} str\n */\n\n\nfunction toCamelCase(str, upperCaseFirst) {\n str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\n return group1.toUpperCase();\n });\n\n if (upperCaseFirst && str) {\n str = str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n return str;\n}\n\nvar normalizeCssArray = zrUtil.normalizeCssArray;\nvar replaceReg = /([&<>\"'])/g;\nvar replaceMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\n\nfunction encodeHTML(source) {\n return source == null ? '' : (source + '').replace(replaceReg, function (str, c) {\n return replaceMap[c];\n });\n}\n\nvar TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\n\nvar wrapVar = function (varName, seriesIdx) {\n return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\n};\n/**\n * Template formatter\n * @param {string} tpl\n * @param {Array.|Object} paramsList\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTpl(tpl, paramsList, encode) {\n if (!zrUtil.isArray(paramsList)) {\n paramsList = [paramsList];\n }\n\n var seriesLen = paramsList.length;\n\n if (!seriesLen) {\n return '';\n }\n\n var $vars = paramsList[0].$vars || [];\n\n for (var i = 0; i < $vars.length; i++) {\n var alias = TPL_VAR_ALIAS[i];\n tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\n }\n\n for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\n for (var k = 0; k < $vars.length; k++) {\n var val = paramsList[seriesIdx][$vars[k]];\n tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\n }\n }\n\n return tpl;\n}\n/**\n * simple Template formatter\n *\n * @param {string} tpl\n * @param {Object} param\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTplSimple(tpl, param, encode) {\n zrUtil.each(param, function (value, key) {\n tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);\n });\n return tpl;\n}\n/**\n * @param {Object|string} [opt] If string, means color.\n * @param {string} [opt.color]\n * @param {string} [opt.extraCssText]\n * @param {string} [opt.type='item'] 'item' or 'subItem'\n * @param {string} [opt.renderMode='html'] render mode of tooltip, 'html' or 'richText'\n * @param {string} [opt.markerId='X'] id name for marker. If only one marker is in a rich text, this can be omitted.\n * @return {string}\n */\n\n\nfunction getTooltipMarker(opt, extraCssText) {\n opt = zrUtil.isString(opt) ? {\n color: opt,\n extraCssText: extraCssText\n } : opt || {};\n var color = opt.color;\n var type = opt.type;\n var extraCssText = opt.extraCssText;\n var renderMode = opt.renderMode || 'html';\n var markerId = opt.markerId || 'X';\n\n if (!color) {\n return '';\n }\n\n if (renderMode === 'html') {\n return type === 'subItem' ? '' : '';\n } else {\n // Space for rich element marker\n return {\n renderMode: renderMode,\n content: '{marker' + markerId + '|} ',\n style: {\n color: color\n }\n };\n }\n}\n\nfunction pad(str, len) {\n str += '';\n return '0000'.substr(0, len - str.length) + str;\n}\n/**\n * ISO Date format\n * @param {string} tpl\n * @param {number} value\n * @param {boolean} [isUTC=false] Default in local time.\n * see `module:echarts/scale/Time`\n * and `module:echarts/util/number#parseDate`.\n * @inner\n */\n\n\nfunction formatTime(tpl, value, isUTC) {\n if (tpl === 'week' || tpl === 'month' || tpl === 'quarter' || tpl === 'half-year' || tpl === 'year') {\n tpl = 'MM-dd\\nyyyy';\n }\n\n var date = numberUtil.parseDate(value);\n var utc = isUTC ? 'UTC' : '';\n var y = date['get' + utc + 'FullYear']();\n var M = date['get' + utc + 'Month']() + 1;\n var d = date['get' + utc + 'Date']();\n var h = date['get' + utc + 'Hours']();\n var m = date['get' + utc + 'Minutes']();\n var s = date['get' + utc + 'Seconds']();\n var S = date['get' + utc + 'Milliseconds']();\n tpl = tpl.replace('MM', pad(M, 2)).replace('M', M).replace('yyyy', y).replace('yy', y % 100).replace('dd', pad(d, 2)).replace('d', d).replace('hh', pad(h, 2)).replace('h', h).replace('mm', pad(m, 2)).replace('m', m).replace('ss', pad(s, 2)).replace('s', s).replace('SSS', pad(S, 3));\n return tpl;\n}\n/**\n * Capital first\n * @param {string} str\n * @return {string}\n */\n\n\nfunction capitalFirst(str) {\n return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\n}\n\nvar truncateText = textContain.truncateText;\n/**\n * @public\n * @param {Object} opt\n * @param {string} opt.text\n * @param {string} opt.font\n * @param {string} [opt.textAlign='left']\n * @param {string} [opt.textVerticalAlign='top']\n * @param {Array.} [opt.textPadding]\n * @param {number} [opt.textLineHeight]\n * @param {Object} [opt.rich]\n * @param {Object} [opt.truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\nfunction getTextBoundingRect(opt) {\n return textContain.getBoundingRect(opt.text, opt.font, opt.textAlign, opt.textVerticalAlign, opt.textPadding, opt.textLineHeight, opt.rich, opt.truncate);\n}\n/**\n * @deprecated\n * the `textLineHeight` was added later.\n * For backward compatiblility, put it as the last parameter.\n * But deprecated this interface. Please use `getTextBoundingRect` instead.\n */\n\n\nfunction getTextRect(text, font, textAlign, textVerticalAlign, textPadding, rich, truncate, textLineHeight) {\n return textContain.getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate);\n}\n/**\n * open new tab\n * @param {string} link url\n * @param {string} target blank or self\n */\n\n\nfunction windowOpen(link, target) {\n if (target === '_blank' || target === 'blank') {\n var blank = window.open();\n blank.opener = null;\n blank.location = link;\n } else {\n window.open(link, target);\n }\n}\n\nexports.addCommas = addCommas;\nexports.toCamelCase = toCamelCase;\nexports.normalizeCssArray = normalizeCssArray;\nexports.encodeHTML = encodeHTML;\nexports.formatTpl = formatTpl;\nexports.formatTplSimple = formatTplSimple;\nexports.getTooltipMarker = getTooltipMarker;\nexports.formatTime = formatTime;\nexports.capitalFirst = capitalFirst;\nexports.truncateText = truncateText;\nexports.getTextBoundingRect = getTextBoundingRect;\nexports.getTextRect = getTextRect;\nexports.windowOpen = windowOpen;","\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 * @param {Object} opt {labelInside}\n * @return {Object} {\n * position, rotation, labelDirection, labelOffset,\n * tickDirection, labelRotate, z2\n * }\n */\nfunction layout(axisModel, opt) {\n opt = opt || {};\n var single = axisModel.coordinateSystem;\n var axis = axisModel.axis;\n var layout = {};\n var axisPosition = axis.position;\n var orient = axis.orient;\n var rect = single.getRect();\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n var positionMap = {\n horizontal: {\n top: rectBound[2],\n bottom: rectBound[3]\n },\n vertical: {\n left: rectBound[0],\n right: rectBound[1]\n }\n };\n layout.position = [orient === 'vertical' ? positionMap.vertical[axisPosition] : rectBound[0], orient === 'horizontal' ? positionMap.horizontal[axisPosition] : rectBound[3]];\n var r = {\n horizontal: 0,\n vertical: 1\n };\n layout.rotation = Math.PI / 2 * r[orient];\n var directionMap = {\n top: -1,\n bottom: 1,\n right: 1,\n left: -1\n };\n layout.labelDirection = layout.tickDirection = layout.nameDirection = directionMap[axisPosition];\n\n if (axisModel.get('axisTick.inside')) {\n layout.tickDirection = -layout.tickDirection;\n }\n\n if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n layout.labelDirection = -layout.labelDirection;\n }\n\n var labelRotation = opt.rotate;\n labelRotation == null && (labelRotation = axisModel.get('axisLabel.rotate'));\n layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;\n layout.z2 = 1;\n return layout;\n}\n\nexports.layout = layout;","\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 each = _util.each;\nvar isString = _util.isString;\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 * Note that it is too complicated to support 3d stack by value\n * (have to create two-dimension inverted index), so in 3d case\n * we just support that stacked by index.\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Array.} dimensionInfoList The same as the input of .\n * The input dimensionInfoList will be modified.\n * @param {Object} [opt]\n * @param {boolean} [opt.stackedCoordDimension=''] Specify a coord dimension if needed.\n * @param {boolean} [opt.byIndex=false]\n * @return {Object} calculationInfo\n * {\n * stackedDimension: string\n * stackedByDimension: string\n * isStackedByIndex: boolean\n * stackedOverDimension: string\n * stackResultDimension: string\n * }\n */\nfunction enableDataStack(seriesModel, dimensionInfoList, opt) {\n opt = opt || {};\n var byIndex = opt.byIndex;\n var stackedCoordDimension = opt.stackedCoordDimension; // Compatibal: when `stack` is set as '', do not stack.\n\n var mayStack = !!(seriesModel && seriesModel.get('stack'));\n var stackedByDimInfo;\n var stackedDimInfo;\n var stackResultDimension;\n var stackedOverDimension;\n each(dimensionInfoList, function (dimensionInfo, index) {\n if (isString(dimensionInfo)) {\n dimensionInfoList[index] = dimensionInfo = {\n name: dimensionInfo\n };\n }\n\n if (mayStack && !dimensionInfo.isExtraCoord) {\n // Find the first ordinal dimension as the stackedByDimInfo.\n if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\n stackedByDimInfo = dimensionInfo;\n } // Find the first stackable dimension as the stackedDimInfo.\n\n\n if (!stackedDimInfo && dimensionInfo.type !== 'ordinal' && dimensionInfo.type !== 'time' && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\n stackedDimInfo = dimensionInfo;\n }\n }\n });\n\n if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\n // Compatible with previous design, value axis (time axis) only stack by index.\n // It may make sense if the user provides elaborately constructed data.\n byIndex = true;\n } // Add stack dimension, they can be both calculated by coordinate system in `unionExtent`.\n // That put stack logic in List is for using conveniently in echarts extensions, but it\n // might not be a good way.\n\n\n if (stackedDimInfo) {\n // Use a weird name that not duplicated with other names.\n stackResultDimension = '__\\0ecstackresult';\n stackedOverDimension = '__\\0ecstackedover'; // Create inverted index to fast query index by value.\n\n if (stackedByDimInfo) {\n stackedByDimInfo.createInvertedIndices = true;\n }\n\n var stackedDimCoordDim = stackedDimInfo.coordDim;\n var stackedDimType = stackedDimInfo.type;\n var stackedDimCoordIndex = 0;\n each(dimensionInfoList, function (dimensionInfo) {\n if (dimensionInfo.coordDim === stackedDimCoordDim) {\n stackedDimCoordIndex++;\n }\n });\n dimensionInfoList.push({\n name: stackResultDimension,\n coordDim: stackedDimCoordDim,\n coordDimIndex: stackedDimCoordIndex,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true\n });\n stackedDimCoordIndex++;\n dimensionInfoList.push({\n name: stackedOverDimension,\n // This dimension contains stack base (generally, 0), so do not set it as\n // `stackedDimCoordDim` to avoid extent calculation, consider log scale.\n coordDim: stackedOverDimension,\n coordDimIndex: stackedDimCoordIndex,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true\n });\n }\n\n return {\n stackedDimension: stackedDimInfo && stackedDimInfo.name,\n stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\n isStackedByIndex: byIndex,\n stackedOverDimension: stackedOverDimension,\n stackResultDimension: stackResultDimension\n };\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} stackedDim\n */\n\n\nfunction isDimensionStacked(data, stackedDim\n/*, stackedByDim*/\n) {\n // Each single series only maps to one pair of axis. So we do not need to\n // check stackByDim, whatever stacked by a dimension or stacked by index.\n return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension'); // && (\n // stackedByDim != null\n // ? stackedByDim === data.getCalculationInfo('stackedByDimension')\n // : data.getCalculationInfo('isStackedByIndex')\n // );\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} targetDim\n * @param {string} [stackedByDim] If not input this parameter, check whether\n * stacked by index.\n * @return {string} dimension\n */\n\n\nfunction getStackedDimension(data, targetDim) {\n return isDimensionStacked(data, targetDim) ? data.getCalculationInfo('stackResultDimension') : targetDim;\n}\n\nexports.enableDataStack = enableDataStack;\nexports.isDimensionStacked = isDimensionStacked;\nexports.getStackedDimension = getStackedDimension;","\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 graphic = require(\"../../util/graphic\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar numberUtil = require(\"../../util/number\");\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 MONTH_TEXT = {\n EN: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n CN: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']\n};\nvar WEEK_TEXT = {\n EN: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n CN: ['日', '一', '二', '三', '四', '五', '六']\n};\n\nvar _default = echarts.extendComponentView({\n type: 'calendar',\n\n /**\n * top/left line points\n * @private\n */\n _tlpoints: null,\n\n /**\n * bottom/right line points\n * @private\n */\n _blpoints: null,\n\n /**\n * first day of month\n * @private\n */\n _firstDayOfMonth: null,\n\n /**\n * first day point of month\n * @private\n */\n _firstDayPoints: null,\n render: function (calendarModel, ecModel, api) {\n var group = this.group;\n group.removeAll();\n var coordSys = calendarModel.coordinateSystem; // range info\n\n var rangeData = coordSys.getRangeInfo();\n var orient = coordSys.getOrient();\n\n this._renderDayRect(calendarModel, rangeData, group); // _renderLines must be called prior to following function\n\n\n this._renderLines(calendarModel, rangeData, orient, group);\n\n this._renderYearText(calendarModel, rangeData, orient, group);\n\n this._renderMonthText(calendarModel, orient, group);\n\n this._renderWeekText(calendarModel, rangeData, orient, group);\n },\n // render day rect\n _renderDayRect: function (calendarModel, rangeData, group) {\n var coordSys = calendarModel.coordinateSystem;\n var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle();\n var sw = coordSys.getCellWidth();\n var sh = coordSys.getCellHeight();\n\n for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {\n var point = coordSys.dataToRect([i], false).tl; // every rect\n\n var rect = new graphic.Rect({\n shape: {\n x: point[0],\n y: point[1],\n width: sw,\n height: sh\n },\n cursor: 'default',\n style: itemRectStyleModel\n });\n group.add(rect);\n }\n },\n // render separate line\n _renderLines: function (calendarModel, rangeData, orient, group) {\n var self = this;\n var coordSys = calendarModel.coordinateSystem;\n var lineStyleModel = calendarModel.getModel('splitLine.lineStyle').getLineStyle();\n var show = calendarModel.get('splitLine.show');\n var lineWidth = lineStyleModel.lineWidth;\n this._tlpoints = [];\n this._blpoints = [];\n this._firstDayOfMonth = [];\n this._firstDayPoints = [];\n var firstDay = rangeData.start;\n\n for (var i = 0; firstDay.time <= rangeData.end.time; i++) {\n addPoints(firstDay.formatedDate);\n\n if (i === 0) {\n firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m);\n }\n\n var date = firstDay.date;\n date.setMonth(date.getMonth() + 1);\n firstDay = coordSys.getDateInfo(date);\n }\n\n addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);\n\n function addPoints(date) {\n self._firstDayOfMonth.push(coordSys.getDateInfo(date));\n\n self._firstDayPoints.push(coordSys.dataToRect([date], false).tl);\n\n var points = self._getLinePointsOfOneWeek(calendarModel, date, orient);\n\n self._tlpoints.push(points[0]);\n\n self._blpoints.push(points[points.length - 1]);\n\n show && self._drawSplitline(points, lineStyleModel, group);\n } // render top/left line\n\n\n show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group); // render bottom/right line\n\n show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group);\n },\n // get points at both ends\n _getEdgesPoints: function (points, lineWidth, orient) {\n var rs = [points[0].slice(), points[points.length - 1].slice()];\n var idx = orient === 'horizontal' ? 0 : 1; // both ends of the line are extend half lineWidth\n\n rs[0][idx] = rs[0][idx] - lineWidth / 2;\n rs[1][idx] = rs[1][idx] + lineWidth / 2;\n return rs;\n },\n // render split line\n _drawSplitline: function (points, lineStyleModel, group) {\n var poyline = new graphic.Polyline({\n z2: 20,\n shape: {\n points: points\n },\n style: lineStyleModel\n });\n group.add(poyline);\n },\n // render month line of one week points\n _getLinePointsOfOneWeek: function (calendarModel, date, orient) {\n var coordSys = calendarModel.coordinateSystem;\n date = coordSys.getDateInfo(date);\n var points = [];\n\n for (var i = 0; i < 7; i++) {\n var tmpD = coordSys.getNextNDay(date.time, i);\n var point = coordSys.dataToRect([tmpD.time], false);\n points[2 * tmpD.day] = point.tl;\n points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr'];\n }\n\n return points;\n },\n _formatterLabel: function (formatter, params) {\n if (typeof formatter === 'string' && formatter) {\n return formatUtil.formatTplSimple(formatter, params);\n }\n\n if (typeof formatter === 'function') {\n return formatter(params);\n }\n\n return params.nameMap;\n },\n _yearTextPositionControl: function (textEl, point, orient, position, margin) {\n point = point.slice();\n var aligns = ['center', 'bottom'];\n\n if (position === 'bottom') {\n point[1] += margin;\n aligns = ['center', 'top'];\n } else if (position === 'left') {\n point[0] -= margin;\n } else if (position === 'right') {\n point[0] += margin;\n aligns = ['center', 'top'];\n } else {\n // top\n point[1] -= margin;\n }\n\n var rotate = 0;\n\n if (position === 'left' || position === 'right') {\n rotate = Math.PI / 2;\n }\n\n return {\n rotation: rotate,\n position: point,\n style: {\n textAlign: aligns[0],\n textVerticalAlign: aligns[1]\n }\n };\n },\n // render year\n _renderYearText: function (calendarModel, rangeData, orient, group) {\n var yearLabel = calendarModel.getModel('yearLabel');\n\n if (!yearLabel.get('show')) {\n return;\n }\n\n var margin = yearLabel.get('margin');\n var pos = yearLabel.get('position');\n\n if (!pos) {\n pos = orient !== 'horizontal' ? 'top' : 'left';\n }\n\n var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];\n var xc = (points[0][0] + points[1][0]) / 2;\n var yc = (points[0][1] + points[1][1]) / 2;\n var idx = orient === 'horizontal' ? 0 : 1;\n var posPoints = {\n top: [xc, points[idx][1]],\n bottom: [xc, points[1 - idx][1]],\n left: [points[1 - idx][0], yc],\n right: [points[idx][0], yc]\n };\n var name = rangeData.start.y;\n\n if (+rangeData.end.y > +rangeData.start.y) {\n name = name + '-' + rangeData.end.y;\n }\n\n var formatter = yearLabel.get('formatter');\n var params = {\n start: rangeData.start.y,\n end: rangeData.end.y,\n nameMap: name\n };\n\n var content = this._formatterLabel(formatter, params);\n\n var yearText = new graphic.Text({\n z2: 30\n });\n graphic.setTextStyle(yearText.style, yearLabel, {\n text: content\n }), yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));\n group.add(yearText);\n },\n _monthTextPositionControl: function (point, isCenter, orient, position, margin) {\n var align = 'left';\n var vAlign = 'top';\n var x = point[0];\n var y = point[1];\n\n if (orient === 'horizontal') {\n y = y + margin;\n\n if (isCenter) {\n align = 'center';\n }\n\n if (position === 'start') {\n vAlign = 'bottom';\n }\n } else {\n x = x + margin;\n\n if (isCenter) {\n vAlign = 'middle';\n }\n\n if (position === 'start') {\n align = 'right';\n }\n }\n\n return {\n x: x,\n y: y,\n textAlign: align,\n textVerticalAlign: vAlign\n };\n },\n // render month and year text\n _renderMonthText: function (calendarModel, orient, group) {\n var monthLabel = calendarModel.getModel('monthLabel');\n\n if (!monthLabel.get('show')) {\n return;\n }\n\n var nameMap = monthLabel.get('nameMap');\n var margin = monthLabel.get('margin');\n var pos = monthLabel.get('position');\n var align = monthLabel.get('align');\n var termPoints = [this._tlpoints, this._blpoints];\n\n if (zrUtil.isString(nameMap)) {\n nameMap = MONTH_TEXT[nameMap.toUpperCase()] || [];\n }\n\n var idx = pos === 'start' ? 0 : 1;\n var axis = orient === 'horizontal' ? 0 : 1;\n margin = pos === 'start' ? -margin : margin;\n var isCenter = align === 'center';\n\n for (var i = 0; i < termPoints[idx].length - 1; i++) {\n var tmp = termPoints[idx][i].slice();\n var firstDay = this._firstDayOfMonth[i];\n\n if (isCenter) {\n var firstDayPoints = this._firstDayPoints[i];\n tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;\n }\n\n var formatter = monthLabel.get('formatter');\n var name = nameMap[+firstDay.m - 1];\n var params = {\n yyyy: firstDay.y,\n yy: (firstDay.y + '').slice(2),\n MM: firstDay.m,\n M: +firstDay.m,\n nameMap: name\n };\n\n var content = this._formatterLabel(formatter, params);\n\n var monthText = new graphic.Text({\n z2: 30\n });\n zrUtil.extend(graphic.setTextStyle(monthText.style, monthLabel, {\n text: content\n }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin));\n group.add(monthText);\n }\n },\n _weekTextPositionControl: function (point, orient, position, margin, cellSize) {\n var align = 'center';\n var vAlign = 'middle';\n var x = point[0];\n var y = point[1];\n var isStart = position === 'start';\n\n if (orient === 'horizontal') {\n x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;\n align = isStart ? 'right' : 'left';\n } else {\n y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;\n vAlign = isStart ? 'bottom' : 'top';\n }\n\n return {\n x: x,\n y: y,\n textAlign: align,\n textVerticalAlign: vAlign\n };\n },\n // render weeks\n _renderWeekText: function (calendarModel, rangeData, orient, group) {\n var dayLabel = calendarModel.getModel('dayLabel');\n\n if (!dayLabel.get('show')) {\n return;\n }\n\n var coordSys = calendarModel.coordinateSystem;\n var pos = dayLabel.get('position');\n var nameMap = dayLabel.get('nameMap');\n var margin = dayLabel.get('margin');\n var firstDayOfWeek = coordSys.getFirstDayOfWeek();\n\n if (zrUtil.isString(nameMap)) {\n nameMap = WEEK_TEXT[nameMap.toUpperCase()] || [];\n }\n\n var start = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time;\n var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];\n margin = numberUtil.parsePercent(margin, cellSize[orient === 'horizontal' ? 0 : 1]);\n\n if (pos === 'start') {\n start = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;\n margin = -margin;\n }\n\n for (var i = 0; i < 7; i++) {\n var tmpD = coordSys.getNextNDay(start, i);\n var point = coordSys.dataToRect([tmpD.time], false).center;\n var day = i;\n day = Math.abs((i + firstDayOfWeek) % 7);\n var weekText = new graphic.Text({\n z2: 30\n });\n zrUtil.extend(graphic.setTextStyle(weekText.style, dayLabel, {\n text: nameMap[day]\n }), this._weekTextPositionControl(point, orient, pos, margin, cellSize));\n group.add(weekText);\n }\n }\n});\n\nmodule.exports = _default;","var PathProxy = require(\"../core/PathProxy\");\n\nvar _vector = require(\"../core/vector\");\n\nvar v2ApplyTransform = _vector.applyTransform;\nvar CMD = PathProxy.CMD;\nvar points = [[], [], []];\nvar mathSqrt = Math.sqrt;\nvar mathAtan2 = Math.atan2;\n\nfunction _default(path, m) {\n var data = path.data;\n var cmd;\n var nPoint;\n var i;\n var j;\n var k;\n var p;\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var R = CMD.R;\n var A = CMD.A;\n var Q = CMD.Q;\n\n for (i = 0, j = 0; i < data.length;) {\n cmd = data[i++];\n j = i;\n nPoint = 0;\n\n switch (cmd) {\n case M:\n nPoint = 1;\n break;\n\n case L:\n nPoint = 1;\n break;\n\n case C:\n nPoint = 3;\n break;\n\n case Q:\n nPoint = 2;\n break;\n\n case A:\n var x = m[4];\n var y = m[5];\n var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);\n var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);\n var angle = mathAtan2(-m[1] / sy, m[0] / sx); // cx\n\n data[i] *= sx;\n data[i++] += x; // cy\n\n data[i] *= sy;\n data[i++] += y; // Scale rx and ry\n // FIXME Assume psi is 0 here\n\n data[i++] *= sx;\n data[i++] *= sy; // Start angle\n\n data[i++] += angle; // end angle\n\n data[i++] += angle; // FIXME psi\n\n i += 2;\n j = i;\n break;\n\n case R:\n // x0, y0\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1]; // x1, y1\n\n p[0] += data[i++];\n p[1] += data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1];\n }\n\n for (k = 0; k < nPoint; k++) {\n var p = points[k];\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m); // Write back\n\n data[j++] = p[0];\n data[j++] = p[1];\n }\n }\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar preprocessor = require(\"./timeline/preprocessor\");\n\nrequire(\"./timeline/typeDefaulter\");\n\nrequire(\"./timeline/timelineAction\");\n\nrequire(\"./timeline/SliderTimelineModel\");\n\nrequire(\"./timeline/SliderTimelineView\");\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 * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction normalize(a) {\n if (!(a instanceof Array)) {\n a = [a, a];\n }\n\n return a;\n}\n\nvar opacityQuery = 'lineStyle.opacity'.split('.');\nvar _default = {\n seriesType: 'lines',\n reset: function (seriesModel, ecModel, api) {\n var symbolType = normalize(seriesModel.get('symbol'));\n var symbolSize = normalize(seriesModel.get('symbolSize'));\n var data = seriesModel.getData();\n data.setVisual('fromSymbol', symbolType && symbolType[0]);\n data.setVisual('toSymbol', symbolType && symbolType[1]);\n data.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n data.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n data.setVisual('opacity', seriesModel.get(opacityQuery));\n\n function dataEach(data, idx) {\n var itemModel = data.getItemModel(idx);\n var symbolType = normalize(itemModel.getShallow('symbol', true));\n var symbolSize = normalize(itemModel.getShallow('symbolSize', true));\n var opacity = itemModel.get(opacityQuery);\n symbolType[0] && data.setItemVisual(idx, 'fromSymbol', symbolType[0]);\n symbolType[1] && data.setItemVisual(idx, 'toSymbol', symbolType[1]);\n symbolSize[0] && data.setItemVisual(idx, 'fromSymbolSize', symbolSize[0]);\n symbolSize[1] && data.setItemVisual(idx, 'toSymbolSize', symbolSize[1]);\n data.setItemVisual(idx, 'opacity', opacity);\n }\n\n return {\n dataEach: data.hasItemOption ? dataEach : null\n };\n }\n};\nmodule.exports = _default;","\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 Geo = require(\"./Geo\");\n\nvar layout = require(\"../../util/layout\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar geoSourceManager = require(\"./geoSourceManager\");\n\nvar mapDataStorage = require(\"./mapDataStorage\");\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 * Resize method bound to the geo\n * @param {module:echarts/coord/geo/GeoModel|module:echarts/chart/map/MapModel} geoModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction resizeGeo(geoModel, api) {\n var boundingCoords = geoModel.get('boundingCoords');\n\n if (boundingCoords != null) {\n var leftTop = boundingCoords[0];\n var rightBottom = boundingCoords[1];\n\n if (isNaN(leftTop[0]) || isNaN(leftTop[1]) || isNaN(rightBottom[0]) || isNaN(rightBottom[1])) {} else {\n this.setBoundingRect(leftTop[0], leftTop[1], rightBottom[0] - leftTop[0], rightBottom[1] - leftTop[1]);\n }\n }\n\n var rect = this.getBoundingRect();\n var boxLayoutOption;\n var center = geoModel.get('layoutCenter');\n var size = geoModel.get('layoutSize');\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n var aspect = rect.width / rect.height * this.aspectScale;\n var useCenterAndSize = false;\n\n if (center && size) {\n center = [numberUtil.parsePercent(center[0], viewWidth), numberUtil.parsePercent(center[1], viewHeight)];\n size = numberUtil.parsePercent(size, Math.min(viewWidth, viewHeight));\n\n if (!isNaN(center[0]) && !isNaN(center[1]) && !isNaN(size)) {\n useCenterAndSize = true;\n } else {}\n }\n\n var viewRect;\n\n if (useCenterAndSize) {\n var viewRect = {};\n\n if (aspect > 1) {\n // Width is same with size\n viewRect.width = size;\n viewRect.height = size / aspect;\n } else {\n viewRect.height = size;\n viewRect.width = size * aspect;\n }\n\n viewRect.y = center[1] - viewRect.height / 2;\n viewRect.x = center[0] - viewRect.width / 2;\n } else {\n // Use left/top/width/height\n boxLayoutOption = geoModel.getBoxLayoutParams(); // 0.75 rate\n\n boxLayoutOption.aspect = aspect;\n viewRect = layout.getLayoutRect(boxLayoutOption, {\n width: viewWidth,\n height: viewHeight\n });\n }\n\n this.setViewRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);\n this.setCenter(geoModel.get('center'));\n this.setZoom(geoModel.get('zoom'));\n}\n/**\n * @param {module:echarts/coord/Geo} geo\n * @param {module:echarts/model/Model} model\n * @inner\n */\n\n\nfunction setGeoCoords(geo, model) {\n zrUtil.each(model.get('geoCoord'), function (geoCoord, name) {\n geo.addGeoCoord(name, geoCoord);\n });\n}\n\nvar geoCreator = {\n // For deciding which dimensions to use when creating list data\n dimensions: Geo.prototype.dimensions,\n create: function (ecModel, api) {\n var geoList = []; // FIXME Create each time may be slow\n\n ecModel.eachComponent('geo', function (geoModel, idx) {\n var name = geoModel.get('map');\n var aspectScale = geoModel.get('aspectScale');\n var invertLongitute = true;\n var mapRecords = mapDataStorage.retrieveMap(name);\n\n if (mapRecords && mapRecords[0] && mapRecords[0].type === 'svg') {\n aspectScale == null && (aspectScale = 1);\n invertLongitute = false;\n } else {\n aspectScale == null && (aspectScale = 0.75);\n }\n\n var geo = new Geo(name + idx, name, geoModel.get('nameMap'), invertLongitute);\n geo.aspectScale = aspectScale;\n geo.zoomLimit = geoModel.get('scaleLimit');\n geoList.push(geo);\n setGeoCoords(geo, geoModel);\n geoModel.coordinateSystem = geo;\n geo.model = geoModel; // Inject resize method\n\n geo.resize = resizeGeo;\n geo.resize(geoModel, api);\n });\n ecModel.eachSeries(function (seriesModel) {\n var coordSys = seriesModel.get('coordinateSystem');\n\n if (coordSys === 'geo') {\n var geoIndex = seriesModel.get('geoIndex') || 0;\n seriesModel.coordinateSystem = geoList[geoIndex];\n }\n }); // If has map series\n\n var mapModelGroupBySeries = {};\n ecModel.eachSeriesByType('map', function (seriesModel) {\n if (!seriesModel.getHostGeoModel()) {\n var mapType = seriesModel.getMapType();\n mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || [];\n mapModelGroupBySeries[mapType].push(seriesModel);\n }\n });\n zrUtil.each(mapModelGroupBySeries, function (mapSeries, mapType) {\n var nameMapList = zrUtil.map(mapSeries, function (singleMapSeries) {\n return singleMapSeries.get('nameMap');\n });\n var geo = new Geo(mapType, mapType, zrUtil.mergeAll(nameMapList));\n geo.zoomLimit = zrUtil.retrieve.apply(null, zrUtil.map(mapSeries, function (singleMapSeries) {\n return singleMapSeries.get('scaleLimit');\n }));\n geoList.push(geo); // Inject resize method\n\n geo.resize = resizeGeo;\n geo.aspectScale = mapSeries[0].get('aspectScale');\n geo.resize(mapSeries[0], api);\n zrUtil.each(mapSeries, function (singleMapSeries) {\n singleMapSeries.coordinateSystem = geo;\n setGeoCoords(geo, singleMapSeries);\n });\n });\n return geoList;\n },\n\n /**\n * Fill given regions array\n * @param {Array.} originRegionArr\n * @param {string} mapName\n * @param {Object} [nameMap]\n * @return {Array}\n */\n getFilledRegions: function (originRegionArr, mapName, nameMap) {\n // Not use the original\n var regionsArr = (originRegionArr || []).slice();\n var dataNameMap = zrUtil.createHashMap();\n\n for (var i = 0; i < regionsArr.length; i++) {\n dataNameMap.set(regionsArr[i].name, regionsArr[i]);\n }\n\n var source = geoSourceManager.load(mapName, nameMap);\n zrUtil.each(source.regions, function (region) {\n var name = region.name;\n !dataNameMap.get(name) && regionsArr.push({\n name: name\n });\n });\n return regionsArr;\n }\n};\necharts.registerCoordinateSystem('geo', geoCreator);\nvar _default = geoCreator;\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 vec2 = require(\"zrender/lib/core/vector\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* Some formulas were originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment of the method \"step\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nvar scaleAndAdd = vec2.scaleAndAdd; // function adjacentNode(n, e) {\n// return e.n1 === n ? e.n2 : e.n1;\n// }\n\nfunction forceLayout(nodes, edges, opts) {\n var rect = opts.rect;\n var width = rect.width;\n var height = rect.height;\n var center = [rect.x + width / 2, rect.y + height / 2]; // var scale = opts.scale || 1;\n\n var gravity = opts.gravity == null ? 0.1 : opts.gravity; // for (var i = 0; i < edges.length; i++) {\n // var e = edges[i];\n // var n1 = e.n1;\n // var n2 = e.n2;\n // n1.edges = n1.edges || [];\n // n2.edges = n2.edges || [];\n // n1.edges.push(e);\n // n2.edges.push(e);\n // }\n // Init position\n\n for (var i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n\n if (!n.p) {\n n.p = vec2.create(width * (Math.random() - 0.5) + center[0], height * (Math.random() - 0.5) + center[1]);\n }\n\n n.pp = vec2.clone(n.p);\n n.edges = null;\n } // Formula in 'Graph Drawing by Force-directed Placement'\n // var k = scale * Math.sqrt(width * height / nodes.length);\n // var k2 = k * k;\n\n\n var initialFriction = opts.friction == null ? 0.6 : opts.friction;\n var friction = initialFriction;\n return {\n warmUp: function () {\n friction = initialFriction * 0.8;\n },\n setFixed: function (idx) {\n nodes[idx].fixed = true;\n },\n setUnfixed: function (idx) {\n nodes[idx].fixed = false;\n },\n\n /**\n * Some formulas were originally copied from \"d3.js\"\n * https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js\n * with some modifications made for this project.\n * See the license statement at the head of this file.\n */\n step: function (cb) {\n var v12 = [];\n var nLen = nodes.length;\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n\n if (e.ignoreForceLayout) {\n continue;\n }\n\n var n1 = e.n1;\n var n2 = e.n2;\n vec2.sub(v12, n2.p, n1.p);\n var d = vec2.len(v12) - e.d;\n var w = n2.w / (n1.w + n2.w);\n\n if (isNaN(w)) {\n w = 0;\n }\n\n vec2.normalize(v12, v12);\n !n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w * d * friction);\n !n2.fixed && scaleAndAdd(n2.p, n2.p, v12, -(1 - w) * d * friction);\n } // Gravity\n\n\n for (var i = 0; i < nLen; i++) {\n var n = nodes[i];\n\n if (!n.fixed) {\n vec2.sub(v12, center, n.p); // var d = vec2.len(v12);\n // vec2.scale(v12, v12, 1 / d);\n // var gravityFactor = gravity;\n\n scaleAndAdd(n.p, n.p, v12, gravity * friction);\n }\n } // Repulsive\n // PENDING\n\n\n for (var i = 0; i < nLen; i++) {\n var n1 = nodes[i];\n\n for (var j = i + 1; j < nLen; j++) {\n var n2 = nodes[j];\n vec2.sub(v12, n2.p, n1.p);\n var d = vec2.len(v12);\n\n if (d === 0) {\n // Random repulse\n vec2.set(v12, Math.random() - 0.5, Math.random() - 0.5);\n d = 1;\n }\n\n var repFact = (n1.rep + n2.rep) / d / d;\n !n1.fixed && scaleAndAdd(n1.pp, n1.pp, v12, repFact);\n !n2.fixed && scaleAndAdd(n2.pp, n2.pp, v12, -repFact);\n }\n }\n\n var v = [];\n\n for (var i = 0; i < nLen; i++) {\n var n = nodes[i];\n\n if (!n.fixed) {\n vec2.sub(v, n.p, n.pp);\n scaleAndAdd(n.p, n.p, v, friction);\n vec2.copy(n.pp, n.p);\n }\n }\n\n friction = friction * 0.992;\n cb && cb(nodes, edges, friction < 0.01);\n }\n };\n}\n\nexports.forceLayout = forceLayout;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAHgAAAADKQTcFAAADCElEQVRIDeVWz08TQRR+s7sEmhRSixrtwYD0gEpMTUxjPOnBmzF46M2/QkP06s2EwNk/gBsHGuWuJw6NicagElN+nJADYqMkBbu74/tmd6a726WCJZLoJNv35s1739fZefveEP1vQxxlw5VKxa69XSkL3x+RUhYQK4TYlJa1Ub42Xpufn/cOi3co4tHRiauSvEeSxF0imU8HFzuC5EtB9uz6+vL7dJ+2tSvx+Hh5eG//x6wkesAhVjusq+Yz6NxA/+DDlZXa14M8DyQuFi9faXn0gnd4EcH8SlskqSqFqNrkvMlk3E3Ym02n4JF7XUg5SYIm+Qj6YOeItT6b7tXrHz8E8/hvKjFIXV8uSUlDCkLQgmPZU/X68mo8PD4rFifGXN+b5rj7Ydx3xxI308g7iPF6m/u7tXCnvmXRk/XVT9Nxiu6z0bFLU75Pz9iLj0esZfqz5eRrt5MQ2cGh52y7BTuTPk4jHSmVcrns6Ru5/NmR3IVCo7G1tQd/PRrftpfyw2eavPM7bDvleT/PNRrbVb0OGUuYIHtVIvGZ0kIaqQredUvS817hIdajgFpHLDAwR3ICW69BxojxycCGRMKZRh3/RAeGSkrGDLENjCFGcQi+U17j7P1dIhmELorCYCy4ABsc2t0QoyLxsioO+GS0Q6+yjSXzAUeAaIhRBjUJvlOt9yqjWFEOQ6xrL4h0ceiVNIkV5TDEx0GShuG6uXatEIITPBiGGF1GG1EGtd6rbLV2z2sM/gdftO5oBa2NPF9NUXtZ+azXOqTjbPB5PVV21jvWI4YQS1kUR7hmdox+yuVtB3ZV8EOHVDFADS5rr9UDvctoY4mdgCNwNsRo4txPF5WZuwwK/oF4h6hciFUYjAUdvTp6UTDEwaI9w9JHa0OXga2XEXQq1Sa5R9uzUawYMW4OnABzcEBrQ5eJOhs967wTtn0bD7Fu7BEFsaY9MmbyVtJO9TDob7XFDmLwn8hFQL+tE7n6aPITuexpcsgjXG8XOXtnkokUxdJ66hnrxaQ8zgt9Evvfn/8Ci4iQ/MheKOwAAAAASUVORK5CYII=\"","\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 BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar singleAxisHelper = require(\"../../coord/single/singleAxisHelper\");\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 XY = ['x', 'y'];\nvar WH = ['width', 'height'];\nvar SingleAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n var coordSys = axis.coordinateSystem;\n var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis));\n var pixelValue = coordSys.dataToPoint(value)[0];\n var axisPointerType = axisPointerModel.get('type');\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 = singleAxisHelper.layout(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 = singleAxisHelper.layout(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 coordSys = axis.coordinateSystem;\n var dimIndex = getPointDimIndex(axis);\n var axisExtent = getGlobalExtent(coordSys, dimIndex);\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 otherExtent = getGlobalExtent(coordSys, 1 - dimIndex);\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\n cursorPoint[dimIndex] = currPosition[dimIndex];\n return {\n position: currPosition,\n rotation: transform.rotation,\n cursorPoint: cursorPoint,\n tooltipOption: {\n verticalAlign: 'middle'\n }\n };\n }\n});\nvar pointerShapeBuilder = {\n line: function (axis, pixelValue, otherExtent) {\n var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis));\n return {\n type: 'Line',\n subPixelOptimize: true,\n shape: targetShape\n };\n },\n shadow: function (axis, pixelValue, otherExtent) {\n var bandWidth = 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], getPointDimIndex(axis))\n };\n }\n};\n\nfunction getPointDimIndex(axis) {\n return axis.isHorizontal() ? 0 : 1;\n}\n\nfunction getGlobalExtent(coordSys, dimIndex) {\n var rect = coordSys.getRect();\n return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]];\n}\n\nAxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer);\nvar _default = SingleAxisPointer;\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 LegendModel = require(\"./LegendModel\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar mergeLayoutParam = _layout.mergeLayoutParam;\nvar getLayoutParams = _layout.getLayoutParams;\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 ScrollableLegendModel = LegendModel.extend({\n type: 'legend.scroll',\n\n /**\n * @param {number} scrollDataIndex\n */\n setScrollDataIndex: function (scrollDataIndex) {\n this.option.scrollDataIndex = scrollDataIndex;\n },\n defaultOption: {\n scrollDataIndex: 0,\n pageButtonItemGap: 5,\n pageButtonGap: null,\n pageButtonPosition: 'end',\n // 'start' or 'end'\n pageFormatter: '{current}/{total}',\n // If null/undefined, do not show page.\n pageIcons: {\n horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],\n vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z']\n },\n pageIconColor: '#2f4554',\n pageIconInactiveColor: '#aaa',\n pageIconSize: 15,\n // Can be [10, 3], which represents [width, height]\n pageTextStyle: {\n color: '#333'\n },\n animationDurationUpdate: 800\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel, extraOpt) {\n var inputPositionParams = getLayoutParams(option);\n ScrollableLegendModel.superCall(this, 'init', option, parentModel, ecModel, extraOpt);\n mergeAndNormalizeLayoutParams(this, option, inputPositionParams);\n },\n\n /**\n * @override\n */\n mergeOption: function (option, extraOpt) {\n ScrollableLegendModel.superCall(this, 'mergeOption', option, extraOpt);\n mergeAndNormalizeLayoutParams(this, this.option, option);\n }\n}); // Do not `ignoreSize` to enable setting {left: 10, right: 10}.\n\nfunction mergeAndNormalizeLayoutParams(legendModel, target, raw) {\n var orient = legendModel.getOrient();\n var ignoreSize = [1, 1];\n ignoreSize[orient.index] = 0;\n mergeLayoutParam(target, raw, {\n type: 'box',\n ignoreSize: ignoreSize\n });\n}\n\nvar _default = ScrollableLegendModel;\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;","require(\"./graphic\");\n\nvar _zrender = require(\"../zrender\");\n\nvar registerPainter = _zrender.registerPainter;\n\nvar Painter = require(\"./Painter\");\n\nregisterPainter('vml', Painter);","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\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*/\nvar contrastColor = '#eee';\n\nvar axisCommon = function () {\n return {\n axisLine: {\n lineStyle: {\n color: contrastColor\n }\n },\n axisTick: {\n lineStyle: {\n color: contrastColor\n }\n },\n axisLabel: {\n textStyle: {\n color: contrastColor\n }\n },\n splitLine: {\n lineStyle: {\n type: 'dashed',\n color: '#aaa'\n }\n },\n splitArea: {\n areaStyle: {\n color: contrastColor\n }\n }\n };\n};\n\nvar colorPalette = ['#dd6b66', '#759aa0', '#e69d87', '#8dc1a9', '#ea7e53', '#eedd78', '#73a373', '#73b9bc', '#7289ab', '#91ca8c', '#f49f42'];\nvar theme = {\n color: colorPalette,\n backgroundColor: '#333',\n tooltip: {\n axisPointer: {\n lineStyle: {\n color: contrastColor\n },\n crossStyle: {\n color: contrastColor\n },\n label: {\n color: '#000'\n }\n }\n },\n legend: {\n textStyle: {\n color: contrastColor\n }\n },\n textStyle: {\n color: contrastColor\n },\n title: {\n textStyle: {\n color: contrastColor\n }\n },\n toolbox: {\n iconStyle: {\n normal: {\n borderColor: contrastColor\n }\n }\n },\n dataZoom: {\n textStyle: {\n color: contrastColor\n }\n },\n visualMap: {\n textStyle: {\n color: contrastColor\n }\n },\n timeline: {\n lineStyle: {\n color: contrastColor\n },\n itemStyle: {\n normal: {\n color: colorPalette[1]\n }\n },\n label: {\n normal: {\n textStyle: {\n color: contrastColor\n }\n }\n },\n controlStyle: {\n normal: {\n color: contrastColor,\n borderColor: contrastColor\n }\n }\n },\n timeAxis: axisCommon(),\n logAxis: axisCommon(),\n valueAxis: axisCommon(),\n categoryAxis: axisCommon(),\n line: {\n symbol: 'circle'\n },\n graph: {\n color: colorPalette\n },\n gauge: {\n title: {\n textStyle: {\n color: contrastColor\n }\n }\n },\n candlestick: {\n itemStyle: {\n normal: {\n color: '#FD1050',\n color0: '#0CF49B',\n borderColor: '#FD1050',\n borderColor0: '#0CF49B'\n }\n }\n }\n};\ntheme.categoryAxis.splitLine.show = false;\nvar _default = theme;\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 AxisBuilder = require(\"./AxisBuilder\");\n\nvar AxisView = require(\"./AxisView\");\n\nvar cartesianAxisHelper = require(\"../../coord/cartesian/cartesianAxisHelper\");\n\nvar _axisSplitHelper = require(\"./axisSplitHelper\");\n\nvar rectCoordAxisBuildSplitArea = _axisSplitHelper.rectCoordAxisBuildSplitArea;\nvar rectCoordAxisHandleRemove = _axisSplitHelper.rectCoordAxisHandleRemove;\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'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine', 'minorSplitLine'];\nvar CartesianAxisView = AxisView.extend({\n type: 'cartesianAxis',\n axisPointerClass: 'CartesianAxisPointer',\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n this.group.removeAll();\n var oldAxisGroup = this._axisGroup;\n this._axisGroup = new graphic.Group();\n this.group.add(this._axisGroup);\n\n if (!axisModel.get('show')) {\n return;\n }\n\n var gridModel = axisModel.getCoordSysModel();\n var layout = cartesianAxisHelper.layout(gridModel, axisModel);\n var axisBuilder = new AxisBuilder(axisModel, layout);\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n\n this._axisGroup.add(axisBuilder.getGroup());\n\n zrUtil.each(selfBuilderAttrs, function (name) {\n if (axisModel.get(name + '.show')) {\n this['_' + name](axisModel, gridModel);\n }\n }, this);\n graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n CartesianAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);\n },\n remove: function () {\n rectCoordAxisHandleRemove(this);\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _splitLine: function (axisModel, gridModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitLineModel = axisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineColors = lineStyleModel.get('color');\n lineColors = zrUtil.isArray(lineColors) ? lineColors : [lineColors];\n var gridRect = gridModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var lineCount = 0;\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitLineModel\n });\n var p1 = [];\n var p2 = [];\n var lineStyle = lineStyleModel.getLineStyle();\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n var colorIndex = lineCount++ % lineColors.length;\n var tickValue = ticksCoords[i].tickValue;\n\n this._axisGroup.add(new graphic.Line({\n anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: zrUtil.defaults({\n stroke: lineColors[colorIndex]\n }, lineStyle),\n silent: true\n }));\n }\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _minorSplitLine: function (axisModel, gridModel) {\n var axis = axisModel.axis;\n var minorSplitLineModel = axisModel.getModel('minorSplitLine');\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n var gridRect = gridModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var p1 = [];\n var p2 = [];\n var lineStyle = lineStyleModel.getLineStyle();\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n for (var k = 0; k < minorTicksCoords[i].length; k++) {\n var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n this._axisGroup.add(new graphic.Line({\n anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: lineStyle,\n silent: true\n }));\n }\n }\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _splitArea: function (axisModel, gridModel) {\n rectCoordAxisBuildSplitArea(this, this._axisGroup, axisModel, gridModel);\n }\n});\nCartesianAxisView.extend({\n type: 'xAxis'\n});\nCartesianAxisView.extend({\n type: 'yAxis'\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 BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar bbox = require(\"zrender/lib/core/bbox\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar polygonContain = require(\"zrender/lib/contain/polygon\");\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/coord/geo/Region\n */\n\n/**\n * @param {string|Region} name\n * @param {Array} geometries\n * @param {Array.} cp\n */\nfunction Region(name, geometries, cp) {\n /**\n * @type {string}\n * @readOnly\n */\n this.name = name;\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.geometries = geometries;\n\n if (!cp) {\n var rect = this.getBoundingRect();\n cp = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n } else {\n cp = [cp[0], cp[1]];\n }\n /**\n * @type {Array.}\n */\n\n\n this.center = cp;\n}\n\nRegion.prototype = {\n constructor: Region,\n properties: null,\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function () {\n var rect = this._rect;\n\n if (rect) {\n return rect;\n }\n\n var MAX_NUMBER = Number.MAX_VALUE;\n var min = [MAX_NUMBER, MAX_NUMBER];\n var max = [-MAX_NUMBER, -MAX_NUMBER];\n var min2 = [];\n var max2 = [];\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n // Only support polygon\n if (geometries[i].type !== 'polygon') {\n continue;\n } // Doesn't consider hole\n\n\n var exterior = geometries[i].exterior;\n bbox.fromPoints(exterior, min2, max2);\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n } // No data\n\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return this._rect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n },\n\n /**\n * @param {} coord\n * @return {boolean}\n */\n contain: function (coord) {\n var rect = this.getBoundingRect();\n var geometries = this.geometries;\n\n if (!rect.contain(coord[0], coord[1])) {\n return false;\n }\n\n loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\n // Only support polygon.\n if (geometries[i].type !== 'polygon') {\n continue;\n }\n\n var exterior = geometries[i].exterior;\n var interiors = geometries[i].interiors;\n\n if (polygonContain.contain(exterior, coord[0], coord[1])) {\n // Not in the region if point is in the hole.\n for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\n if (polygonContain.contain(interiors[k])) {\n continue loopGeo;\n }\n }\n\n return true;\n }\n }\n\n return false;\n },\n transformTo: function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var aspect = rect.width / rect.height;\n\n if (!width) {\n width = aspect * height;\n } else if (!height) {\n height = width / aspect;\n }\n\n var target = new BoundingRect(x, y, width, height);\n var transform = rect.calculateTransform(target);\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n // Only support polygon.\n if (geometries[i].type !== 'polygon') {\n continue;\n }\n\n var exterior = geometries[i].exterior;\n var interiors = geometries[i].interiors;\n\n for (var p = 0; p < exterior.length; p++) {\n vec2.applyTransform(exterior[p], exterior[p], transform);\n }\n\n for (var h = 0; h < (interiors ? interiors.length : 0); h++) {\n for (var p = 0; p < interiors[h].length; p++) {\n vec2.applyTransform(interiors[h][p], interiors[h][p], transform);\n }\n }\n }\n\n rect = this._rect;\n rect.copy(target); // Update center\n\n this.center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n },\n cloneShallow: function (name) {\n name == null && (name = this.name);\n var newRegion = new Region(name, this.geometries, this.center);\n newRegion._rect = this._rect;\n newRegion.transformTo = null; // Simply avoid to be called.\n\n return newRegion;\n }\n};\nvar _default = Region;\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 throttleUtil = require(\"../util/throttle\");\n\nvar parallelPreprocessor = require(\"../coord/parallel/parallelPreprocessor\");\n\nrequire(\"../coord/parallel/parallelCreator\");\n\nrequire(\"../coord/parallel/ParallelModel\");\n\nrequire(\"./parallelAxis\");\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 CLICK_THRESHOLD = 5; // > 4\n// Parallel view\n\necharts.extendComponentView({\n type: 'parallel',\n render: function (parallelModel, ecModel, api) {\n this._model = parallelModel;\n this._api = api;\n\n if (!this._handlers) {\n this._handlers = {};\n zrUtil.each(handlers, function (handler, eventName) {\n api.getZr().on(eventName, this._handlers[eventName] = zrUtil.bind(handler, this));\n }, this);\n }\n\n throttleUtil.createOrUpdate(this, '_throttledDispatchExpand', parallelModel.get('axisExpandRate'), 'fixRate');\n },\n dispose: function (ecModel, api) {\n zrUtil.each(this._handlers, function (handler, eventName) {\n api.getZr().off(eventName, handler);\n });\n this._handlers = null;\n },\n\n /**\n * @param {Object} [opt] If null, cancle the last action triggering for debounce.\n */\n _throttledDispatchExpand: function (opt) {\n this._dispatchExpand(opt);\n },\n _dispatchExpand: function (opt) {\n opt && this._api.dispatchAction(zrUtil.extend({\n type: 'parallelAxisExpand'\n }, opt));\n }\n});\nvar handlers = {\n mousedown: function (e) {\n if (checkTrigger(this, 'click')) {\n this._mouseDownPoint = [e.offsetX, e.offsetY];\n }\n },\n mouseup: function (e) {\n var mouseDownPoint = this._mouseDownPoint;\n\n if (checkTrigger(this, 'click') && mouseDownPoint) {\n var point = [e.offsetX, e.offsetY];\n var dist = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2);\n\n if (dist > CLICK_THRESHOLD) {\n return;\n }\n\n var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n\n result.behavior !== 'none' && this._dispatchExpand({\n axisExpandWindow: result.axisExpandWindow\n });\n }\n\n this._mouseDownPoint = null;\n },\n mousemove: function (e) {\n // Should do nothing when brushing.\n if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) {\n return;\n }\n\n var model = this._model;\n var result = model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n var behavior = result.behavior;\n behavior === 'jump' && this._throttledDispatchExpand.debounceNextCall(model.get('axisExpandDebounce'));\n\n this._throttledDispatchExpand(behavior === 'none' ? null // Cancle the last trigger, in case that mouse slide out of the area quickly.\n : {\n axisExpandWindow: result.axisExpandWindow,\n // Jumping uses animation, and sliding suppresses animation.\n animation: behavior === 'jump' ? null : false\n });\n }\n};\n\nfunction checkTrigger(view, triggerOn) {\n var model = view._model;\n return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn;\n}\n\necharts.registerPreprocessor(parallelPreprocessor);","\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 visualSolution = require(\"../../visual/visualSolution\");\n\nvar Model = require(\"../../model/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*/\nvar DEFAULT_OUT_OF_BRUSH_COLOR = ['#ddd'];\nvar BrushModel = echarts.extendComponentModel({\n type: 'brush',\n dependencies: ['geo', 'grid', 'xAxis', 'yAxis', 'parallel', 'series'],\n\n /**\n * @protected\n */\n defaultOption: {\n // inBrush: null,\n // outOfBrush: null,\n toolbox: null,\n // Default value see preprocessor.\n brushLink: null,\n // Series indices array, broadcast using dataIndex.\n // or 'all', which means all series. 'none' or null means no series.\n seriesIndex: 'all',\n // seriesIndex array, specify series controlled by this brush component.\n geoIndex: null,\n //\n xAxisIndex: null,\n yAxisIndex: null,\n brushType: 'rect',\n // Default brushType, see BrushController.\n brushMode: 'single',\n // Default brushMode, 'single' or 'multiple'\n transformable: true,\n // Default transformable.\n brushStyle: {\n // Default brushStyle\n borderWidth: 1,\n color: 'rgba(120,140,180,0.3)',\n borderColor: 'rgba(120,140,180,0.8)'\n },\n throttleType: 'fixRate',\n // Throttle in brushSelected event. 'fixRate' or 'debounce'.\n // If null, no throttle. Valid only in the first brush component\n throttleDelay: 0,\n // Unit: ms, 0 means every event will be triggered.\n // FIXME\n // 试验效果\n removeOnClick: true,\n z: 10000\n },\n\n /**\n * @readOnly\n * @type {Array.}\n */\n areas: [],\n\n /**\n * Current activated brush type.\n * If null, brush is inactived.\n * see module:echarts/component/helper/BrushController\n * @readOnly\n * @type {string}\n */\n brushType: null,\n\n /**\n * Current brush opt.\n * see module:echarts/component/helper/BrushController\n * @readOnly\n * @type {Object}\n */\n brushOption: {},\n\n /**\n * @readOnly\n * @type {Array.}\n */\n coordInfoList: [],\n optionUpdated: function (newOption, isInit) {\n var thisOption = this.option;\n !isInit && visualSolution.replaceVisualOption(thisOption, newOption, ['inBrush', 'outOfBrush']);\n var inBrush = thisOption.inBrush = thisOption.inBrush || {}; // Always give default visual, consider setOption at the second time.\n\n thisOption.outOfBrush = thisOption.outOfBrush || {\n color: DEFAULT_OUT_OF_BRUSH_COLOR\n };\n\n if (!inBrush.hasOwnProperty('liftZ')) {\n // Bigger than the highlight z lift, otherwise it will\n // be effected by the highlight z when brush.\n inBrush.liftZ = 5;\n }\n },\n\n /**\n * If ranges is null/undefined, range state remain.\n *\n * @param {Array.} [ranges]\n */\n setAreas: function (areas) {\n // If ranges is null/undefined, range state remain.\n // This helps user to dispatchAction({type: 'brush'}) with no areas\n // set but just want to get the current brush select info from a `brush` event.\n if (!areas) {\n return;\n }\n\n this.areas = zrUtil.map(areas, function (area) {\n return generateBrushOption(this.option, area);\n }, this);\n },\n\n /**\n * see module:echarts/component/helper/BrushController\n * @param {Object} brushOption\n */\n setBrushOption: function (brushOption) {\n this.brushOption = generateBrushOption(this.option, brushOption);\n this.brushType = this.brushOption.brushType;\n }\n});\n\nfunction generateBrushOption(option, brushOption) {\n return zrUtil.merge({\n brushType: option.brushType,\n brushMode: option.brushMode,\n transformable: option.transformable,\n brushStyle: new Model(option.brushStyle).getItemStyle(),\n removeOnClick: option.removeOnClick,\n z: option.z\n }, brushOption, true);\n}\n\nvar _default = BrushModel;\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\nvar _util = require(\"zrender/lib/core/util\");\n\nvar assert = _util.assert;\nvar isArray = _util.isArray;\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\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} define\n * @return See the return of `createTask`.\n */\nfunction createTask(define) {\n return new Task(define);\n}\n/**\n * @constructor\n * @param {Object} define\n * @param {Function} define.reset Custom reset\n * @param {Function} [define.plan] Returns 'reset' indicate reset immediately.\n * @param {Function} [define.count] count is used to determin data task.\n * @param {Function} [define.onDirty] count is used to determin data task.\n */\n\n\nfunction Task(define) {\n define = define || {};\n this._reset = define.reset;\n this._plan = define.plan;\n this._count = define.count;\n this._onDirty = define.onDirty;\n this._dirty = true; // Context must be specified implicitly, to\n // avoid miss update context when model changed.\n\n this.context;\n}\n\nvar taskProto = Task.prototype;\n/**\n * @param {Object} performArgs\n * @param {number} [performArgs.step] Specified step.\n * @param {number} [performArgs.skip] Skip customer perform call.\n * @param {number} [performArgs.modBy] Sampling window size.\n * @param {number} [performArgs.modDataCount] Sampling count.\n */\n\ntaskProto.perform = function (performArgs) {\n var upTask = this._upstream;\n var skip = performArgs && performArgs.skip; // TODO some refactor.\n // Pull data. Must pull data each time, because context.data\n // may be updated by Series.setData.\n\n if (this._dirty && upTask) {\n var context = this.context;\n context.data = context.outputData = upTask.context.outputData;\n }\n\n if (this.__pipeline) {\n this.__pipeline.currentTask = this;\n }\n\n var planResult;\n\n if (this._plan && !skip) {\n planResult = this._plan(this.context);\n } // Support sharding by mod, which changes the render sequence and makes the rendered graphic\n // elements uniformed distributed when progress, especially when moving or zooming.\n\n\n var lastModBy = normalizeModBy(this._modBy);\n var lastModDataCount = this._modDataCount || 0;\n var modBy = normalizeModBy(performArgs && performArgs.modBy);\n var modDataCount = performArgs && performArgs.modDataCount || 0;\n\n if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\n planResult = 'reset';\n }\n\n function normalizeModBy(val) {\n !(val >= 1) && (val = 1); // jshint ignore:line\n\n return val;\n }\n\n var forceFirstProgress;\n\n if (this._dirty || planResult === 'reset') {\n this._dirty = false;\n forceFirstProgress = reset(this, skip);\n }\n\n this._modBy = modBy;\n this._modDataCount = modDataCount;\n var step = performArgs && performArgs.step;\n\n if (upTask) {\n this._dueEnd = upTask._outputDueEnd;\n } // DataTask or overallTask\n else {\n this._dueEnd = this._count ? this._count(this.context) : Infinity;\n } // Note: Stubs, that its host overall task let it has progress, has progress.\n // If no progress, pass index from upstream to downstream each time plan called.\n\n\n if (this._progress) {\n var start = this._dueIndex;\n var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\n\n if (!skip && (forceFirstProgress || start < end)) {\n var progress = this._progress;\n\n if (isArray(progress)) {\n for (var i = 0; i < progress.length; i++) {\n doProgress(this, progress[i], start, end, modBy, modDataCount);\n }\n } else {\n doProgress(this, progress, start, end, modBy, modDataCount);\n }\n }\n\n this._dueIndex = end; // If no `outputDueEnd`, assume that output data and\n // input data is the same, so use `dueIndex` as `outputDueEnd`.\n\n var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end;\n this._outputDueEnd = outputDueEnd;\n } else {\n // (1) Some overall task has no progress.\n // (2) Stubs, that its host overall task do not let it has progress, has no progress.\n // This should always be performed so it can be passed to downstream.\n this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd;\n }\n\n return this.unfinished();\n};\n\nvar iterator = function () {\n var end;\n var current;\n var modBy;\n var modDataCount;\n var winCount;\n var it = {\n reset: function (s, e, sStep, sCount) {\n current = s;\n end = e;\n modBy = sStep;\n modDataCount = sCount;\n winCount = Math.ceil(modDataCount / modBy);\n it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext;\n }\n };\n return it;\n\n function sequentialNext() {\n return current < end ? current++ : null;\n }\n\n function modNext() {\n var dataIndex = current % winCount * modBy + Math.ceil(current / winCount);\n var result = current >= end ? null : dataIndex < modDataCount ? dataIndex // If modDataCount is smaller than data.count() (consider `appendData` case),\n // Use normal linear rendering mode.\n : current;\n current++;\n return result;\n }\n}();\n\ntaskProto.dirty = function () {\n this._dirty = true;\n this._onDirty && this._onDirty(this.context);\n};\n\nfunction doProgress(taskIns, progress, start, end, modBy, modDataCount) {\n iterator.reset(start, end, modBy, modDataCount);\n taskIns._callingProgress = progress;\n\n taskIns._callingProgress({\n start: start,\n end: end,\n count: end - start,\n next: iterator.next\n }, taskIns.context);\n}\n\nfunction reset(taskIns, skip) {\n taskIns._dueIndex = taskIns._outputDueEnd = taskIns._dueEnd = 0;\n taskIns._settedOutputEnd = null;\n var progress;\n var forceFirstProgress;\n\n if (!skip && taskIns._reset) {\n progress = taskIns._reset(taskIns.context);\n\n if (progress && progress.progress) {\n forceFirstProgress = progress.forceFirstProgress;\n progress = progress.progress;\n } // To simplify no progress checking, array must has item.\n\n\n if (isArray(progress) && !progress.length) {\n progress = null;\n }\n }\n\n taskIns._progress = progress;\n taskIns._modBy = taskIns._modDataCount = null;\n var downstream = taskIns._downstream;\n downstream && downstream.dirty();\n return forceFirstProgress;\n}\n/**\n * @return {boolean}\n */\n\n\ntaskProto.unfinished = function () {\n return this._progress && this._dueIndex < this._dueEnd;\n};\n/**\n * @param {Object} downTask The downstream task.\n * @return {Object} The downstream task.\n */\n\n\ntaskProto.pipe = function (downTask) {\n // If already downstream, do not dirty downTask.\n if (this._downstream !== downTask || this._dirty) {\n this._downstream = downTask;\n downTask._upstream = this;\n downTask.dirty();\n }\n};\n\ntaskProto.dispose = function () {\n if (this._disposed) {\n return;\n }\n\n this._upstream && (this._upstream._downstream = null);\n this._downstream && (this._downstream._upstream = null);\n this._dirty = false;\n this._disposed = true;\n};\n\ntaskProto.getUpstream = function () {\n return this._upstream;\n};\n\ntaskProto.getDownstream = function () {\n return this._downstream;\n};\n\ntaskProto.setOutputEnd = function (end) {\n // This only happend in dataTask, dataZoom, map, currently.\n // where dataZoom do not set end each time, but only set\n // when reset. So we should record the setted end, in case\n // that the stub of dataZoom perform again and earse the\n // setted end by upstream.\n this._outputDueEnd = this._settedOutputEnd = end;\n}; ///////////////////////////////////////////////////////////\n// For stream debug (Should be commented out after used!)\n// Usage: printTask(this, 'begin');\n// Usage: printTask(this, null, {someExtraProp});\n// function printTask(task, prefix, extra) {\n// window.ecTaskUID == null && (window.ecTaskUID = 0);\n// task.uidDebug == null && (task.uidDebug = `task_${window.ecTaskUID++}`);\n// task.agent && task.agent.uidDebug == null && (task.agent.uidDebug = `task_${window.ecTaskUID++}`);\n// var props = [];\n// if (task.__pipeline) {\n// var val = `${task.__idxInPipeline}/${task.__pipeline.tail.__idxInPipeline} ${task.agent ? '(stub)' : ''}`;\n// props.push({text: 'idx', value: val});\n// } else {\n// var stubCount = 0;\n// task.agentStubMap.each(() => stubCount++);\n// props.push({text: 'idx', value: `overall (stubs: ${stubCount})`});\n// }\n// props.push({text: 'uid', value: task.uidDebug});\n// if (task.__pipeline) {\n// props.push({text: 'pid', value: task.__pipeline.id});\n// task.agent && props.push(\n// {text: 'stubFor', value: task.agent.uidDebug}\n// );\n// }\n// props.push(\n// {text: 'dirty', value: task._dirty},\n// {text: 'dueIndex', value: task._dueIndex},\n// {text: 'dueEnd', value: task._dueEnd},\n// {text: 'outputDueEnd', value: task._outputDueEnd}\n// );\n// if (extra) {\n// Object.keys(extra).forEach(key => {\n// props.push({text: key, value: extra[key]});\n// });\n// }\n// var args = ['color: blue'];\n// var msg = `%c[${prefix || 'T'}] %c` + props.map(item => (\n// args.push('color: black', 'color: red'),\n// `${item.text}: %c${item.value}`\n// )).join('%c, ');\n// console.log.apply(console, [msg].concat(args));\n// // console.log(this);\n// }\n\n\nexports.createTask = createTask;","\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 BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _cursorHelper = require(\"./cursorHelper\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphicUtil = 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*/\nfunction makeRectPanelClipPath(rect) {\n rect = normalizeRect(rect);\n return function (localPoints, transform) {\n return graphicUtil.clipPointsByRect(localPoints, rect);\n };\n}\n\nfunction makeLinearBrushOtherExtent(rect, specifiedXYIndex) {\n rect = normalizeRect(rect);\n return function (xyIndex) {\n var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex;\n var brushWidth = idx ? rect.width : rect.height;\n var base = idx ? rect.x : rect.y;\n return [base, base + (brushWidth || 0)];\n };\n}\n\nfunction makeRectIsTargetByCursor(rect, api, targetModel) {\n rect = normalizeRect(rect);\n return function (e, localCursorPoint, transform) {\n return rect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement(e, api, targetModel);\n };\n} // Consider width/height is negative.\n\n\nfunction normalizeRect(rect) {\n return BoundingRect.create(rect);\n}\n\nexports.makeRectPanelClipPath = makeRectPanelClipPath;\nexports.makeLinearBrushOtherExtent = makeLinearBrushOtherExtent;\nexports.makeRectIsTargetByCursor = makeRectIsTargetByCursor;","\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/polar/polarCreator\");\n\nrequire(\"./axis/AngleAxisView\");","\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 layout = require(\"../../util/layout\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _treeHelper = require(\"../helper/treeHelper\");\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\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 TEXT_PADDING = 8;\nvar ITEM_GAP = 8;\nvar ARRAY_LENGTH = 5;\n\nfunction Breadcrumb(containerGroup) {\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n this.group = new graphic.Group();\n containerGroup.add(this.group);\n}\n\nBreadcrumb.prototype = {\n constructor: Breadcrumb,\n render: function (seriesModel, api, targetNode, onSelect) {\n var model = seriesModel.getModel('breadcrumb');\n var thisGroup = this.group;\n thisGroup.removeAll();\n\n if (!model.get('show') || !targetNode) {\n return;\n }\n\n var normalStyleModel = model.getModel('itemStyle'); // var emphasisStyleModel = model.getModel('emphasis.itemStyle');\n\n var textStyleModel = normalStyleModel.getModel('textStyle');\n var layoutParam = {\n pos: {\n left: model.get('left'),\n right: model.get('right'),\n top: model.get('top'),\n bottom: model.get('bottom')\n },\n box: {\n width: api.getWidth(),\n height: api.getHeight()\n },\n emptyItemWidth: model.get('emptyItemWidth'),\n totalWidth: 0,\n renderList: []\n };\n\n this._prepare(targetNode, layoutParam, textStyleModel);\n\n this._renderContent(seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect);\n\n layout.positionElement(thisGroup, layoutParam.pos, layoutParam.box);\n },\n\n /**\n * Prepare render list and total width\n * @private\n */\n _prepare: function (targetNode, layoutParam, textStyleModel) {\n for (var node = targetNode; node; node = node.parentNode) {\n var text = node.getModel().get('name');\n var textRect = textStyleModel.getTextRect(text);\n var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth);\n layoutParam.totalWidth += itemWidth + ITEM_GAP;\n layoutParam.renderList.push({\n node: node,\n text: text,\n width: itemWidth\n });\n }\n },\n\n /**\n * @private\n */\n _renderContent: function (seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect) {\n // Start rendering.\n var lastX = 0;\n var emptyItemWidth = layoutParam.emptyItemWidth;\n var height = seriesModel.get('breadcrumb.height');\n var availableSize = layout.getAvailableSize(layoutParam.pos, layoutParam.box);\n var totalWidth = layoutParam.totalWidth;\n var renderList = layoutParam.renderList;\n\n for (var i = renderList.length - 1; i >= 0; i--) {\n var item = renderList[i];\n var itemNode = item.node;\n var itemWidth = item.width;\n var text = item.text; // Hdie text and shorten width if necessary.\n\n if (totalWidth > availableSize.width) {\n totalWidth -= itemWidth - emptyItemWidth;\n itemWidth = emptyItemWidth;\n text = null;\n }\n\n var el = new graphic.Polygon({\n shape: {\n points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0)\n },\n style: zrUtil.defaults(normalStyleModel.getItemStyle(), {\n lineJoin: 'bevel',\n text: text,\n textFill: textStyleModel.getTextColor(),\n textFont: textStyleModel.getFont()\n }),\n z: 10,\n onclick: zrUtil.curry(onSelect, itemNode)\n });\n this.group.add(el);\n packEventData(el, seriesModel, itemNode);\n lastX += itemWidth + ITEM_GAP;\n }\n },\n\n /**\n * @override\n */\n remove: function () {\n this.group.removeAll();\n }\n};\n\nfunction makeItemPoints(x, y, itemWidth, itemHeight, head, tail) {\n var points = [[head ? x : x - ARRAY_LENGTH, y], [x + itemWidth, y], [x + itemWidth, y + itemHeight], [head ? x : x - ARRAY_LENGTH, y + itemHeight]];\n !tail && points.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]);\n !head && points.push([x, y + itemHeight / 2]);\n return points;\n} // Package custom mouse event.\n\n\nfunction packEventData(el, seriesModel, itemNode) {\n el.eventData = {\n componentType: 'series',\n componentSubType: 'treemap',\n componentIndex: seriesModel.componentIndex,\n seriesIndex: seriesModel.componentIndex,\n seriesName: seriesModel.name,\n seriesType: 'treemap',\n selfType: 'breadcrumb',\n // Distinguish with click event on treemap node.\n nodeData: {\n dataIndex: itemNode && itemNode.dataIndex,\n name: itemNode && itemNode.name\n },\n treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel)\n };\n}\n\nvar _default = Breadcrumb;\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// FIXME 公用?\n\n/**\n * @param {Array.} datas\n * @param {string} statisticType 'average' 'sum'\n * @inner\n */\nfunction dataStatistics(datas, statisticType) {\n var dataNameMap = {};\n zrUtil.each(datas, function (data) {\n data.each(data.mapDimension('value'), function (value, idx) {\n // Add prefix to avoid conflict with Object.prototype.\n var mapKey = 'ec-' + data.getName(idx);\n dataNameMap[mapKey] = dataNameMap[mapKey] || [];\n\n if (!isNaN(value)) {\n dataNameMap[mapKey].push(value);\n }\n });\n });\n return datas[0].map(datas[0].mapDimension('value'), function (value, idx) {\n var mapKey = 'ec-' + datas[0].getName(idx);\n var sum = 0;\n var min = Infinity;\n var max = -Infinity;\n var len = dataNameMap[mapKey].length;\n\n for (var i = 0; i < len; i++) {\n min = Math.min(min, dataNameMap[mapKey][i]);\n max = Math.max(max, dataNameMap[mapKey][i]);\n sum += dataNameMap[mapKey][i];\n }\n\n var result;\n\n if (statisticType === 'min') {\n result = min;\n } else if (statisticType === 'max') {\n result = max;\n } else if (statisticType === 'average') {\n result = sum / len;\n } else {\n result = sum;\n }\n\n return len === 0 ? NaN : result;\n });\n}\n\nfunction _default(ecModel) {\n var seriesGroups = {};\n ecModel.eachSeriesByType('map', function (seriesModel) {\n var hostGeoModel = seriesModel.getHostGeoModel();\n var key = hostGeoModel ? 'o' + hostGeoModel.id : 'i' + seriesModel.getMapType();\n (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel);\n });\n zrUtil.each(seriesGroups, function (seriesList, key) {\n var data = dataStatistics(zrUtil.map(seriesList, function (seriesModel) {\n return seriesModel.getData();\n }), seriesList[0].get('mapValueCalculation'));\n\n for (var i = 0; i < seriesList.length; i++) {\n seriesList[i].originalData = seriesList[i].getData();\n } // FIXME Put where?\n\n\n for (var i = 0; i < seriesList.length; i++) {\n seriesList[i].seriesGroup = seriesList;\n seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel();\n seriesList[i].setData(data.cloneShallow());\n seriesList[i].mainSeries = seriesList[0];\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 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 ComponentModel = require(\"../model/Component\");\n\nvar ComponentView = require(\"../view/Component\");\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar detectSourceFormat = _sourceHelper.detectSourceFormat;\n\nvar _sourceType = require(\"../data/helper/sourceType\");\n\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\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 * This module is imported by echarts directly.\n *\n * Notice:\n * Always keep this file exists for backward compatibility.\n * Because before 4.1.0, dataset is an optional component,\n * some users may import this module manually.\n */\nComponentModel.extend({\n type: 'dataset',\n\n /**\n * @protected\n */\n defaultOption: {\n // 'row', 'column'\n seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\n // null/'auto': auto detect header, see \"module:echarts/data/helper/sourceHelper\"\n sourceHeader: null,\n dimensions: null,\n source: null\n },\n optionUpdated: function () {\n detectSourceFormat(this);\n }\n});\nComponentView.extend({\n type: 'dataset'\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 VisualMapView = require(\"./VisualMapView\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar layout = require(\"../../util/layout\");\n\nvar helper = require(\"./helper\");\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 PiecewiseVisualMapView = VisualMapView.extend({\n type: 'visualMap.piecewise',\n\n /**\n * @protected\n * @override\n */\n doRender: function () {\n var thisGroup = this.group;\n thisGroup.removeAll();\n var visualMapModel = this.visualMapModel;\n var textGap = visualMapModel.get('textGap');\n var textStyleModel = visualMapModel.textStyleModel;\n var textFont = textStyleModel.getFont();\n var textFill = textStyleModel.getTextColor();\n\n var itemAlign = this._getItemAlign();\n\n var itemSize = visualMapModel.itemSize;\n\n var viewData = this._getViewData();\n\n var endsText = viewData.endsText;\n var showLabel = zrUtil.retrieve(visualMapModel.get('showLabel', true), !endsText);\n endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign);\n zrUtil.each(viewData.viewPieceList, renderItem, this);\n endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign);\n layout.box(visualMapModel.get('orient'), thisGroup, visualMapModel.get('itemGap'));\n this.renderBackground(thisGroup);\n this.positionGroup(thisGroup);\n\n function renderItem(item) {\n var piece = item.piece;\n var itemGroup = new graphic.Group();\n itemGroup.onclick = zrUtil.bind(this._onItemClick, this, piece);\n\n this._enableHoverLink(itemGroup, item.indexInModelPieceList);\n\n var representValue = visualMapModel.getRepresentValue(piece);\n\n this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]]);\n\n if (showLabel) {\n var visualState = this.visualMapModel.getValueState(representValue);\n itemGroup.add(new graphic.Text({\n style: {\n x: itemAlign === 'right' ? -textGap : itemSize[0] + textGap,\n y: itemSize[1] / 2,\n text: piece.text,\n textVerticalAlign: 'middle',\n textAlign: itemAlign,\n textFont: textFont,\n textFill: textFill,\n opacity: visualState === 'outOfRange' ? 0.5 : 1\n }\n }));\n }\n\n thisGroup.add(itemGroup);\n }\n },\n\n /**\n * @private\n */\n _enableHoverLink: function (itemGroup, pieceIndex) {\n itemGroup.on('mouseover', zrUtil.bind(onHoverLink, this, 'highlight')).on('mouseout', zrUtil.bind(onHoverLink, this, 'downplay'));\n\n function onHoverLink(method) {\n var visualMapModel = this.visualMapModel;\n visualMapModel.option.hoverLink && this.api.dispatchAction({\n type: method,\n batch: helper.makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel)\n });\n }\n },\n\n /**\n * @private\n */\n _getItemAlign: function () {\n var visualMapModel = this.visualMapModel;\n var modelOption = visualMapModel.option;\n\n if (modelOption.orient === 'vertical') {\n return helper.getItemAlign(visualMapModel, this.api, visualMapModel.itemSize);\n } else {\n // horizontal, most case left unless specifying right.\n var align = modelOption.align;\n\n if (!align || align === 'auto') {\n align = 'left';\n }\n\n return align;\n }\n },\n\n /**\n * @private\n */\n _renderEndsText: function (group, text, itemSize, showLabel, itemAlign) {\n if (!text) {\n return;\n }\n\n var itemGroup = new graphic.Group();\n var textStyleModel = this.visualMapModel.textStyleModel;\n itemGroup.add(new graphic.Text({\n style: {\n x: showLabel ? itemAlign === 'right' ? itemSize[0] : 0 : itemSize[0] / 2,\n y: itemSize[1] / 2,\n textVerticalAlign: 'middle',\n textAlign: showLabel ? itemAlign : 'center',\n text: text,\n textFont: textStyleModel.getFont(),\n textFill: textStyleModel.getTextColor()\n }\n }));\n group.add(itemGroup);\n },\n\n /**\n * @private\n * @return {Object} {peiceList, endsText} The order is the same as screen pixel order.\n */\n _getViewData: function () {\n var visualMapModel = this.visualMapModel;\n var viewPieceList = zrUtil.map(visualMapModel.getPieceList(), function (piece, index) {\n return {\n piece: piece,\n indexInModelPieceList: index\n };\n });\n var endsText = visualMapModel.get('text'); // Consider orient and inverse.\n\n var orient = visualMapModel.get('orient');\n var inverse = visualMapModel.get('inverse'); // Order of model pieceList is always [low, ..., high]\n\n if (orient === 'horizontal' ? inverse : !inverse) {\n viewPieceList.reverse();\n } // Origin order of endsText is [high, low]\n else if (endsText) {\n endsText = endsText.slice().reverse();\n }\n\n return {\n viewPieceList: viewPieceList,\n endsText: endsText\n };\n },\n\n /**\n * @private\n */\n _createItemSymbol: function (group, representValue, shapeParam) {\n group.add(createSymbol(this.getControllerVisual(representValue, 'symbol'), shapeParam[0], shapeParam[1], shapeParam[2], shapeParam[3], this.getControllerVisual(representValue, 'color')));\n },\n\n /**\n * @private\n */\n _onItemClick: function (piece) {\n var visualMapModel = this.visualMapModel;\n var option = visualMapModel.option;\n var selected = zrUtil.clone(option.selected);\n var newKey = visualMapModel.getSelectedMapKey(piece);\n\n if (option.selectedMode === 'single') {\n selected[newKey] = true;\n zrUtil.each(selected, function (o, key) {\n selected[key] = key === newKey;\n });\n } else {\n selected[newKey] = !selected[newKey];\n }\n\n this.api.dispatchAction({\n type: 'selectDataRange',\n from: this.uid,\n visualMapId: this.visualMapModel.id,\n selected: selected\n });\n }\n});\nvar _default = PiecewiseVisualMapView;\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 each = _util.each;\nvar createHashMap = _util.createHashMap;\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.parallel',\n dependencies: ['parallel'],\n visualColorAccessPath: 'lineStyle.color',\n getInitialData: function (option, ecModel) {\n var source = this.getSource();\n setEncodeAndDimensions(source, this);\n return createListFromArray(source, this);\n },\n\n /**\n * User can get data raw indices on 'axisAreaSelected' event received.\n *\n * @public\n * @param {string} activeState 'active' or 'inactive' or 'normal'\n * @return {Array.} Raw indices\n */\n getRawIndicesByActiveState: function (activeState) {\n var coordSys = this.coordinateSystem;\n var data = this.getData();\n var indices = [];\n coordSys.eachActiveState(data, function (theActiveState, dataIndex) {\n if (activeState === theActiveState) {\n indices.push(data.getRawIndex(dataIndex));\n }\n });\n return indices;\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'parallel',\n parallelIndex: 0,\n label: {\n show: false\n },\n inactiveOpacity: 0.05,\n activeOpacity: 1,\n lineStyle: {\n width: 1,\n opacity: 0.45,\n type: 'solid'\n },\n emphasis: {\n label: {\n show: false\n }\n },\n progressive: 500,\n smooth: false,\n // true | false | number\n animationEasing: 'linear'\n }\n});\n\nfunction setEncodeAndDimensions(source, seriesModel) {\n // The mapping of parallelAxis dimension to data dimension can\n // be specified in parallelAxis.option.dim. For example, if\n // parallelAxis.option.dim is 'dim3', it mapping to the third\n // dimension of data. But `data.encode` has higher priority.\n // Moreover, parallelModel.dimension should not be regarded as data\n // dimensions. Consider dimensions = ['dim4', 'dim2', 'dim6'];\n if (source.encodeDefine) {\n return;\n }\n\n var parallelModel = seriesModel.ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n\n if (!parallelModel) {\n return;\n }\n\n var encodeDefine = source.encodeDefine = createHashMap();\n each(parallelModel.dimensions, function (axisDim) {\n var dataDimIndex = convertDimNameToNumber(axisDim);\n encodeDefine.set(axisDim, dataDimIndex);\n });\n}\n\nfunction convertDimNameToNumber(dimName) {\n return +dimName.replace('dim', '');\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(\"./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 () {});","\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 createListSimply = require(\"../helper/createListSimply\");\n\nvar _model = require(\"../../util/model\");\n\nvar defaultEmphasis = _model.defaultEmphasis;\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 FunnelSeries = echarts.extendSeriesModel({\n type: 'series.funnel',\n init: function (option) {\n FunnelSeries.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)); // Extend labelLine emphasis\n\n this._defaultLabelLine(option);\n },\n getInitialData: function (option, ecModel) {\n return createListSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n },\n _defaultLabelLine: function (option) {\n // Extend labelLine emphasis\n 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 // Overwrite\n getDataParams: function (dataIndex) {\n var data = this.getData();\n var params = FunnelSeries.superCall(this, 'getDataParams', dataIndex);\n var valueDim = data.mapDimension('value');\n var sum = data.getSum(valueDim); // Percent is 0 if sum is 0\n\n params.percent = !sum ? 0 : +(data.get(valueDim, dataIndex) / sum * 100).toFixed(2);\n params.$vars.push('percent');\n return params;\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n legendHoverLink: true,\n left: 80,\n top: 60,\n right: 80,\n bottom: 60,\n // width: {totalWidth} - left - right,\n // height: {totalHeight} - top - bottom,\n // 默认取数据最小最大值\n // min: 0,\n // max: 100,\n minSize: '0%',\n maxSize: '100%',\n sort: 'descending',\n // 'ascending', 'descending'\n orient: 'vertical',\n gap: 0,\n funnelAlign: 'center',\n label: {\n show: true,\n position: 'outer' // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n\n },\n labelLine: {\n show: true,\n length: 20,\n lineStyle: {\n // color: 各异,\n width: 1,\n type: 'solid'\n }\n },\n itemStyle: {\n // color: 各异,\n borderColor: '#fff',\n borderWidth: 1\n },\n emphasis: {\n label: {\n show: true\n }\n }\n }\n});\nvar _default = FunnelSeries;\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 dataToCoordSize(dataSize, dataItem) {\n dataItem = dataItem || [0, 0];\n return zrUtil.map([0, 1], function (dimIdx) {\n var val = dataItem[dimIdx];\n var halfSize = dataSize[dimIdx] / 2;\n var p1 = [];\n var p2 = [];\n p1[dimIdx] = val - halfSize;\n p2[dimIdx] = val + halfSize;\n p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];\n return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);\n }, this);\n}\n\nfunction _default(coordSys) {\n var rect = coordSys.getBoundingRect();\n return {\n coordSys: {\n type: 'geo',\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n zoom: coordSys.getZoom()\n },\n api: {\n coord: function (data) {\n // do not provide \"out\" and noRoam param,\n // Compatible with this usage:\n // echarts.util.map(item.points, api.coord)\n return coordSys.dataToPoint(data);\n },\n size: zrUtil.bind(dataToCoordSize, coordSys)\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 BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar View = require(\"../View\");\n\nvar geoSourceManager = require(\"./geoSourceManager\");\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 * [Geo description]\n * For backward compatibility, the orginal interface:\n * `name, map, geoJson, specialAreas, nameMap` is kept.\n *\n * @param {string|Object} name\n * @param {string} map Map type\n * Specify the positioned areas by left, top, width, height\n * @param {Object.} [nameMap]\n * Specify name alias\n * @param {boolean} [invertLongitute=true]\n */\nfunction Geo(name, map, nameMap, invertLongitute) {\n View.call(this, name);\n /**\n * Map type\n * @type {string}\n */\n\n this.map = map;\n var source = geoSourceManager.load(map, nameMap);\n this._nameCoordMap = source.nameCoordMap;\n this._regionsMap = source.regionsMap;\n this._invertLongitute = invertLongitute == null ? true : invertLongitute;\n /**\n * @readOnly\n */\n\n this.regions = source.regions;\n /**\n * @type {module:zrender/src/core/BoundingRect}\n */\n\n this._rect = source.boundingRect;\n}\n\nGeo.prototype = {\n constructor: Geo,\n type: 'geo',\n\n /**\n * @param {Array.}\n * @readOnly\n */\n dimensions: ['lng', 'lat'],\n\n /**\n * If contain given lng,lat coord\n * @param {Array.}\n * @readOnly\n */\n containCoord: function (coord) {\n var regions = this.regions;\n\n for (var i = 0; i < regions.length; i++) {\n if (regions[i].contain(coord)) {\n return true;\n }\n }\n\n return false;\n },\n\n /**\n * @override\n */\n transformTo: function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var invertLongitute = this._invertLongitute;\n rect = rect.clone();\n\n if (invertLongitute) {\n // Longitute is inverted\n rect.y = -rect.y - rect.height;\n }\n\n var rawTransformable = this._rawTransformable;\n rawTransformable.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n rawTransformable.decomposeTransform();\n\n if (invertLongitute) {\n var scale = rawTransformable.scale;\n scale[1] = -scale[1];\n }\n\n rawTransformable.updateTransform();\n\n this._updateTransform();\n },\n\n /**\n * @param {string} name\n * @return {module:echarts/coord/geo/Region}\n */\n getRegion: function (name) {\n return this._regionsMap.get(name);\n },\n getRegionByCoord: function (coord) {\n var regions = this.regions;\n\n for (var i = 0; i < regions.length; i++) {\n if (regions[i].contain(coord)) {\n return regions[i];\n }\n }\n },\n\n /**\n * Add geoCoord for indexing by name\n * @param {string} name\n * @param {Array.} geoCoord\n */\n addGeoCoord: function (name, geoCoord) {\n this._nameCoordMap.set(name, geoCoord);\n },\n\n /**\n * Get geoCoord by name\n * @param {string} name\n * @return {Array.}\n */\n getGeoCoord: function (name) {\n return this._nameCoordMap.get(name);\n },\n\n /**\n * @override\n */\n getBoundingRect: function () {\n return this._rect;\n },\n\n /**\n * @param {string|Array.} data\n * @param {boolean} noRoam\n * @param {Array.} [out]\n * @return {Array.}\n */\n dataToPoint: function (data, noRoam, out) {\n if (typeof data === 'string') {\n // Map area name to geoCoord\n data = this.getGeoCoord(data);\n }\n\n if (data) {\n return View.prototype.dataToPoint.call(this, data, noRoam, out);\n }\n },\n\n /**\n * @override\n */\n convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n /**\n * @override\n */\n convertFromPixel: zrUtil.curry(doConvert, 'pointToData')\n};\nzrUtil.mixin(Geo, View);\n\nfunction doConvert(methodName, ecModel, finder, value) {\n var geoModel = finder.geoModel;\n var seriesModel = finder.seriesModel;\n var coordSys = geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem // For map.\n || (seriesModel.getReferringComponents('geo')[0] || {}).coordinateSystem : null;\n return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nvar _default = Geo;\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 * Can only be called after coordinate system creation stage.\n * (Can be called before coordinate system update stage).\n *\n * @param {Object} opt {labelInside}\n * @return {Object} {\n * position, rotation, labelDirection, labelOffset,\n * tickDirection, labelRotate, z2\n * }\n */\nfunction layout(gridModel, axisModel, opt) {\n opt = opt || {};\n var grid = gridModel.coordinateSystem;\n var axis = axisModel.axis;\n var layout = {};\n var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\n var rawAxisPosition = axis.position;\n var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\n var axisDim = axis.dim;\n var rect = grid.getRect();\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n var idx = {\n left: 0,\n right: 1,\n top: 0,\n bottom: 1,\n onZero: 2\n };\n var axisOffset = axisModel.get('offset') || 0;\n var posBound = axisDim === 'x' ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\n\n if (otherAxisOnZeroOf) {\n var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\n posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\n } // Axis position\n\n\n layout.position = [axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0], axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]]; // Axis rotation\n\n layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1); // Tick and label direction, x y is axisDim\n\n var dirMap = {\n top: -1,\n bottom: 1,\n left: -1,\n right: 1\n };\n layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\n layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\n\n if (axisModel.get('axisTick.inside')) {\n layout.tickDirection = -layout.tickDirection;\n }\n\n if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n layout.labelDirection = -layout.labelDirection;\n } // Special label rotation\n\n\n var labelRotate = axisModel.get('axisLabel.rotate');\n layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate; // Over splitLine and splitArea\n\n layout.z2 = 1;\n return layout;\n}\n\nexports.layout = layout;","\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 * For geo and graph.\n *\n * @param {Object} controllerHost\n * @param {module:zrender/Element} controllerHost.target\n */\nfunction updateViewOnPan(controllerHost, dx, dy) {\n var target = controllerHost.target;\n var pos = target.position;\n pos[0] += dx;\n pos[1] += dy;\n target.dirty();\n}\n/**\n * For geo and graph.\n *\n * @param {Object} controllerHost\n * @param {module:zrender/Element} controllerHost.target\n * @param {number} controllerHost.zoom\n * @param {number} controllerHost.zoomLimit like: {min: 1, max: 2}\n */\n\n\nfunction updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {\n var target = controllerHost.target;\n var zoomLimit = controllerHost.zoomLimit;\n var pos = target.position;\n var scale = target.scale;\n var newZoom = controllerHost.zoom = controllerHost.zoom || 1;\n newZoom *= zoomDelta;\n\n if (zoomLimit) {\n var zoomMin = zoomLimit.min || 0;\n var zoomMax = zoomLimit.max || Infinity;\n newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);\n }\n\n var zoomScale = newZoom / controllerHost.zoom;\n controllerHost.zoom = newZoom; // Keep the mouse center when scaling\n\n pos[0] -= (zoomX - pos[0]) * (zoomScale - 1);\n pos[1] -= (zoomY - pos[1]) * (zoomScale - 1);\n scale[0] *= zoomScale;\n scale[1] *= zoomScale;\n target.dirty();\n}\n\nexports.updateViewOnPan = updateViewOnPan;\nexports.updateViewOnZoom = updateViewOnZoom;","\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 graphic = require(\"../util/graphic\");\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./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*/\n// Grid view\necharts.extendComponentView({\n type: 'grid',\n render: function (gridModel, ecModel) {\n this.group.removeAll();\n\n if (gridModel.get('show')) {\n this.group.add(new graphic.Rect({\n shape: gridModel.coordinateSystem.getRect(),\n style: zrUtil.defaults({\n fill: gridModel.get('backgroundColor')\n }, gridModel.getItemStyle()),\n silent: true,\n z2: -1\n }));\n }\n }\n});\necharts.registerPreprocessor(function (option) {\n // Only create grid when need\n if (option.xAxis && option.yAxis && !option.grid) {\n option.grid = {};\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\nrequire(\"./gauge/GaugeSeries\");\n\nrequire(\"./gauge/GaugeView\");","\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 var lineHeight = textStyleModel.get('lineHeight');\n\n if (lineHeight == null) {\n lineHeight = Math.round(fontSize * 3 / 2);\n }\n\n fontSize && cssText.push('line-height:' + lineHeight + 'px');\n var shadowColor = textStyleModel.get('textShadowColor');\n var shadowBlur = textStyleModel.get('textShadowBlur') || 0;\n var shadowOffsetX = textStyleModel.get('textShadowOffsetX') || 0;\n var shadowOffsetY = textStyleModel.get('textShadowOffsetY') || 0;\n shadowBlur && cssText.push('text-shadow:' + shadowOffsetX + 'px ' + shadowOffsetY + 'px ' + shadowBlur + 'px ' + shadowColor);\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 out[2] = out[0] / zr.getWidth(); // The ratio of left to width\n\n out[3] = out[1] / zr.getHeight(); // The ratio of top to height\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, 0, 0]; // [left, top, left/width, top/height]\n\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 (tooltipModel) {\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 }\n\n var alwaysShowContent = tooltipModel.get('alwaysShowContent');\n alwaysShowContent && this._moveTooltipIfResized(); // Hide the tooltip\n // PENDING\n // this.hide();\n },\n\n /**\n * when `alwaysShowContent` is true,\n * we should move the tooltip after chart resized\n */\n _moveTooltipIfResized: function () {\n var ratioX = this._styleCoord[2]; // The ratio of left to width\n\n var ratioY = this._styleCoord[3]; // The ratio of top to height\n\n var realX = ratioX * this._zr.getWidth();\n\n var realY = ratioY * this._zr.getHeight();\n\n this.moveTo(realX, realY);\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 occasionally move over the tooltip, a mouseout event will be\n // triggered by canvas, and cause some unexpectable result like dragging\n // stop, \"unfocusAdjacency\". Here `pointer-events: none` is used to solve\n // it. Although it is not supported 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 multiple 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;","// https://github.com/mziccard/node-timsort\nvar DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\n\nfunction minRunLength(n) {\n var r = 0;\n\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n\n return n + r;\n}\n\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n\n if (runHi === hi) {\n return 1;\n }\n\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n\n reverseRun(array, lo, runHi);\n } else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n\n return runHi - lo;\n}\n\nfunction reverseRun(array, lo, hi) {\n hi--;\n\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\n\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n\n while (left < right) {\n mid = left + right >>> 1;\n\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n } else {\n left = mid + 1;\n }\n }\n\n var n = start - left;\n\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n\n case 2:\n array[left + 2] = array[left + 1];\n\n case 1:\n array[left + 1] = array[left];\n break;\n\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n\n }\n\n array[left] = pivot;\n }\n}\n\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n } else {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n } else {\n offset = m;\n }\n }\n\n return offset;\n}\n\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n } else {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n } else {\n lastOffset = m + 1;\n }\n }\n\n return offset;\n}\n\nfunction TimSort(array, compare) {\n var minGallop = DEFAULT_MIN_GALLOPING;\n var length = 0;\n var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n var stackLength = 0;\n var runStart;\n var runLength;\n var stackSize = 0;\n length = array.length;\n\n if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n tmpStorageLength = length >>> 1;\n }\n\n var tmp = [];\n stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n runStart = [];\n runLength = [];\n\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n } else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n\n mergeAt(n);\n }\n }\n\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n\n mergeAt(n);\n }\n }\n\n function mergeAt(i) {\n var start1 = runStart[i];\n var length1 = runLength[i];\n var start2 = runStart[i + 1];\n var length2 = runLength[i + 1];\n runLength[i] = length1 + length2;\n\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n\n if (length1 === 0) {\n return;\n }\n\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n\n if (length2 === 0) {\n return;\n }\n\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n } else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n return;\n }\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n return;\n }\n\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = tmp[cursor1++];\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n } else if (length1 === 0) {\n throw new Error(); // throw new Error('mergeLow preconditions were not respected');\n } else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n\n return;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n return;\n }\n\n var _minGallop = minGallop;\n\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = tmp[cursor2--];\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n\n if (minGallop < 1) {\n minGallop = 1;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n } else if (length2 === 0) {\n throw new Error(); // throw new Error('mergeHigh preconditions were not respected');\n } else {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n\n this.mergeRuns = mergeRuns;\n this.forceMergeRuns = forceMergeRuns;\n this.pushRun = pushRun;\n}\n\nfunction sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n\n if (!hi) {\n hi = array.length;\n }\n\n var remaining = hi - lo;\n\n if (remaining < 2) {\n return;\n }\n\n var runLength = 0;\n\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n\n var ts = new TimSort(array, compare);\n var minRun = minRunLength(remaining);\n\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n\n if (runLength < minRun) {\n var force = remaining;\n\n if (force > minRun) {\n force = minRun;\n }\n\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n\n ts.forceMergeRuns();\n}\n\nmodule.exports = sort;","var windingLine = require(\"./windingLine\");\n\nvar EPSILON = 1e-8;\n\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\n\nfunction contain(points, x, y) {\n var w = 0;\n var p = points[0];\n\n if (!p) {\n return false;\n }\n\n for (var i = 1; i < points.length; i++) {\n var p2 = points[i];\n w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n p = p2;\n } // Close polygon\n\n\n var p0 = points[0];\n\n if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n }\n\n return w !== 0;\n}\n\nexports.contain = contain;","var Clip = require(\"./Clip\");\n\nvar color = require(\"../tool/color\");\n\nvar _util = require(\"../core/util\");\n\nvar isArrayLike = _util.isArrayLike;\n\n/**\n * @module echarts/animation/Animator\n */\nvar arraySlice = Array.prototype.slice;\n\nfunction defaultGetter(target, key) {\n return target[key];\n}\n\nfunction defaultSetter(target, key, value) {\n target[key] = value;\n}\n/**\n * @param {number} p0\n * @param {number} p1\n * @param {number} percent\n * @return {number}\n */\n\n\nfunction interpolateNumber(p0, p1, percent) {\n return (p1 - p0) * percent + p0;\n}\n/**\n * @param {string} p0\n * @param {string} p1\n * @param {number} percent\n * @return {string}\n */\n\n\nfunction interpolateString(p0, p1, percent) {\n return percent > 0.5 ? p1 : p0;\n}\n/**\n * @param {Array} p0\n * @param {Array} p1\n * @param {number} percent\n * @param {Array} out\n * @param {number} arrDim\n */\n\n\nfunction interpolateArray(p0, p1, percent, out, arrDim) {\n var len = p0.length;\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n out[i] = interpolateNumber(p0[i], p1[i], percent);\n }\n } else {\n var len2 = len && p0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n }\n }\n }\n} // arr0 is source array, arr1 is target array.\n// Do some preprocess to avoid error happened when interpolating from arr0 to arr1\n\n\nfunction fillArr(arr0, arr1, arrDim) {\n var arr0Len = arr0.length;\n var arr1Len = arr1.length;\n\n if (arr0Len !== arr1Len) {\n // FIXME Not work for TypedArray\n var isPreviousLarger = arr0Len > arr1Len;\n\n if (isPreviousLarger) {\n // Cut the previous\n arr0.length = arr1Len;\n } else {\n // Fill the previous\n for (var i = arr0Len; i < arr1Len; i++) {\n arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n }\n }\n } // Handling NaN value\n\n\n var len2 = arr0[0] && arr0[0].length;\n\n for (var i = 0; i < arr0.length; i++) {\n if (arrDim === 1) {\n if (isNaN(arr0[i])) {\n arr0[i] = arr1[i];\n }\n } else {\n for (var j = 0; j < len2; j++) {\n if (isNaN(arr0[i][j])) {\n arr0[i][j] = arr1[i][j];\n }\n }\n }\n }\n}\n/**\n * @param {Array} arr0\n * @param {Array} arr1\n * @param {number} arrDim\n * @return {boolean}\n */\n\n\nfunction isArraySame(arr0, arr1, arrDim) {\n if (arr0 === arr1) {\n return true;\n }\n\n var len = arr0.length;\n\n if (len !== arr1.length) {\n return false;\n }\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n if (arr0[i] !== arr1[i]) {\n return false;\n }\n }\n } else {\n var len2 = arr0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n if (arr0[i][j] !== arr1[i][j]) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n/**\n * Catmull Rom interpolate array\n * @param {Array} p0\n * @param {Array} p1\n * @param {Array} p2\n * @param {Array} p3\n * @param {number} t\n * @param {number} t2\n * @param {number} t3\n * @param {Array} out\n * @param {number} arrDim\n */\n\n\nfunction catmullRomInterpolateArray(p0, p1, p2, p3, t, t2, t3, out, arrDim) {\n var len = p0.length;\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\n }\n } else {\n var len2 = p0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\n }\n }\n }\n}\n/**\n * Catmull Rom interpolate number\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @param {number} t2\n * @param {number} t3\n * @return {number}\n */\n\n\nfunction catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nfunction cloneValue(value) {\n if (isArrayLike(value)) {\n var len = value.length;\n\n if (isArrayLike(value[0])) {\n var ret = [];\n\n for (var i = 0; i < len; i++) {\n ret.push(arraySlice.call(value[i]));\n }\n\n return ret;\n }\n\n return arraySlice.call(value);\n }\n\n return value;\n}\n\nfunction rgba2String(rgba) {\n rgba[0] = Math.floor(rgba[0]);\n rgba[1] = Math.floor(rgba[1]);\n rgba[2] = Math.floor(rgba[2]);\n return 'rgba(' + rgba.join(',') + ')';\n}\n\nfunction getArrayDim(keyframes) {\n var lastValue = keyframes[keyframes.length - 1].value;\n return isArrayLike(lastValue && lastValue[0]) ? 2 : 1;\n}\n\nfunction createTrackClip(animator, easing, oneTrackDone, keyframes, propName, forceAnimate) {\n var getter = animator._getter;\n var setter = animator._setter;\n var useSpline = easing === 'spline';\n var trackLen = keyframes.length;\n\n if (!trackLen) {\n return;\n } // Guess data type\n\n\n var firstVal = keyframes[0].value;\n var isValueArray = isArrayLike(firstVal);\n var isValueColor = false;\n var isValueString = false; // For vertices morphing\n\n var arrDim = isValueArray ? getArrayDim(keyframes) : 0;\n var trackMaxTime; // Sort keyframe as ascending\n\n keyframes.sort(function (a, b) {\n return a.time - b.time;\n });\n trackMaxTime = keyframes[trackLen - 1].time; // Percents of each keyframe\n\n var kfPercents = []; // Value of each keyframe\n\n var kfValues = [];\n var prevValue = keyframes[0].value;\n var isAllValueEqual = true;\n\n for (var i = 0; i < trackLen; i++) {\n kfPercents.push(keyframes[i].time / trackMaxTime); // Assume value is a color when it is a string\n\n var value = keyframes[i].value; // Check if value is equal, deep check if value is array\n\n if (!(isValueArray && isArraySame(value, prevValue, arrDim) || !isValueArray && value === prevValue)) {\n isAllValueEqual = false;\n }\n\n prevValue = value; // Try converting a string to a color array\n\n if (typeof value === 'string') {\n var colorArray = color.parse(value);\n\n if (colorArray) {\n value = colorArray;\n isValueColor = true;\n } else {\n isValueString = true;\n }\n }\n\n kfValues.push(value);\n }\n\n if (!forceAnimate && isAllValueEqual) {\n return;\n }\n\n var lastValue = kfValues[trackLen - 1]; // Polyfill array and NaN value\n\n for (var i = 0; i < trackLen - 1; i++) {\n if (isValueArray) {\n fillArr(kfValues[i], lastValue, arrDim);\n } else {\n if (isNaN(kfValues[i]) && !isNaN(lastValue) && !isValueString && !isValueColor) {\n kfValues[i] = lastValue;\n }\n }\n }\n\n isValueArray && fillArr(getter(animator._target, propName), lastValue, arrDim); // Cache the key of last frame to speed up when\n // animation playback is sequency\n\n var lastFrame = 0;\n var lastFramePercent = 0;\n var start;\n var w;\n var p0;\n var p1;\n var p2;\n var p3;\n\n if (isValueColor) {\n var rgba = [0, 0, 0, 0];\n }\n\n var onframe = function (target, percent) {\n // Find the range keyframes\n // kf1-----kf2---------current--------kf3\n // find kf2 and kf3 and do interpolation\n var frame; // In the easing function like elasticOut, percent may less than 0\n\n if (percent < 0) {\n frame = 0;\n } else if (percent < lastFramePercent) {\n // Start from next key\n // PENDING start from lastFrame ?\n start = Math.min(lastFrame + 1, trackLen - 1);\n\n for (frame = start; frame >= 0; frame--) {\n if (kfPercents[frame] <= percent) {\n break;\n }\n } // PENDING really need to do this ?\n\n\n frame = Math.min(frame, trackLen - 2);\n } else {\n for (frame = lastFrame; frame < trackLen; frame++) {\n if (kfPercents[frame] > percent) {\n break;\n }\n }\n\n frame = Math.min(frame - 1, trackLen - 2);\n }\n\n lastFrame = frame;\n lastFramePercent = percent;\n var range = kfPercents[frame + 1] - kfPercents[frame];\n\n if (range === 0) {\n return;\n } else {\n w = (percent - kfPercents[frame]) / range;\n }\n\n if (useSpline) {\n p1 = kfValues[frame];\n p0 = kfValues[frame === 0 ? frame : frame - 1];\n p2 = kfValues[frame > trackLen - 2 ? trackLen - 1 : frame + 1];\n p3 = kfValues[frame > trackLen - 3 ? trackLen - 1 : frame + 2];\n\n if (isValueArray) {\n catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, getter(target, propName), arrDim);\n } else {\n var value;\n\n if (isValueColor) {\n value = catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, rgba, 1);\n value = rgba2String(rgba);\n } else if (isValueString) {\n // String is step(0.5)\n return interpolateString(p1, p2, w);\n } else {\n value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\n }\n\n setter(target, propName, value);\n }\n } else {\n if (isValueArray) {\n interpolateArray(kfValues[frame], kfValues[frame + 1], w, getter(target, propName), arrDim);\n } else {\n var value;\n\n if (isValueColor) {\n interpolateArray(kfValues[frame], kfValues[frame + 1], w, rgba, 1);\n value = rgba2String(rgba);\n } else if (isValueString) {\n // String is step(0.5)\n return interpolateString(kfValues[frame], kfValues[frame + 1], w);\n } else {\n value = interpolateNumber(kfValues[frame], kfValues[frame + 1], w);\n }\n\n setter(target, propName, value);\n }\n }\n };\n\n var clip = new Clip({\n target: animator._target,\n life: trackMaxTime,\n loop: animator._loop,\n delay: animator._delay,\n onframe: onframe,\n ondestroy: oneTrackDone\n });\n\n if (easing && easing !== 'spline') {\n clip.easing = easing;\n }\n\n return clip;\n}\n/**\n * @alias module:zrender/animation/Animator\n * @constructor\n * @param {Object} target\n * @param {boolean} loop\n * @param {Function} getter\n * @param {Function} setter\n */\n\n\nvar Animator = function (target, loop, getter, setter) {\n this._tracks = {};\n this._target = target;\n this._loop = loop || false;\n this._getter = getter || defaultGetter;\n this._setter = setter || defaultSetter;\n this._clipCount = 0;\n this._delay = 0;\n this._doneList = [];\n this._onframeList = [];\n this._clipList = [];\n};\n\nAnimator.prototype = {\n /**\n * Set Animation keyframe\n * @param {number} time 关键帧时间,单位是ms\n * @param {Object} props 关键帧的属性值,key-value表示\n * @return {module:zrender/animation/Animator}\n */\n when: function (time\n /* ms */\n , props) {\n var tracks = this._tracks;\n\n for (var propName in props) {\n if (!props.hasOwnProperty(propName)) {\n continue;\n }\n\n if (!tracks[propName]) {\n tracks[propName] = []; // Invalid value\n\n var value = this._getter(this._target, propName);\n\n if (value == null) {\n // zrLog('Invalid property ' + propName);\n continue;\n } // If time is 0\n // Then props is given initialize value\n // Else\n // Initialize value from current prop value\n\n\n if (time !== 0) {\n tracks[propName].push({\n time: 0,\n value: cloneValue(value)\n });\n }\n }\n\n tracks[propName].push({\n time: time,\n value: props[propName]\n });\n }\n\n return this;\n },\n\n /**\n * 添加动画每一帧的回调函数\n * @param {Function} callback\n * @return {module:zrender/animation/Animator}\n */\n during: function (callback) {\n this._onframeList.push(callback);\n\n return this;\n },\n pause: function () {\n for (var i = 0; i < this._clipList.length; i++) {\n this._clipList[i].pause();\n }\n\n this._paused = true;\n },\n resume: function () {\n for (var i = 0; i < this._clipList.length; i++) {\n this._clipList[i].resume();\n }\n\n this._paused = false;\n },\n isPaused: function () {\n return !!this._paused;\n },\n _doneCallback: function () {\n // Clear all tracks\n this._tracks = {}; // Clear all clips\n\n this._clipList.length = 0;\n var doneList = this._doneList;\n var len = doneList.length;\n\n for (var i = 0; i < len; i++) {\n doneList[i].call(this);\n }\n },\n\n /**\n * Start the animation\n * @param {string|Function} [easing]\n * 动画缓动函数,详见{@link module:zrender/animation/easing}\n * @param {boolean} forceAnimate\n * @return {module:zrender/animation/Animator}\n */\n start: function (easing, forceAnimate) {\n var self = this;\n var clipCount = 0;\n\n var oneTrackDone = function () {\n clipCount--;\n\n if (!clipCount) {\n self._doneCallback();\n }\n };\n\n var lastClip;\n\n for (var propName in this._tracks) {\n if (!this._tracks.hasOwnProperty(propName)) {\n continue;\n }\n\n var clip = createTrackClip(this, easing, oneTrackDone, this._tracks[propName], propName, forceAnimate);\n\n if (clip) {\n this._clipList.push(clip);\n\n clipCount++; // If start after added to animation\n\n if (this.animation) {\n this.animation.addClip(clip);\n }\n\n lastClip = clip;\n }\n } // Add during callback on the last clip\n\n\n if (lastClip) {\n var oldOnFrame = lastClip.onframe;\n\n lastClip.onframe = function (target, percent) {\n oldOnFrame(target, percent);\n\n for (var i = 0; i < self._onframeList.length; i++) {\n self._onframeList[i](target, percent);\n }\n };\n } // This optimization will help the case that in the upper application\n // the view may be refreshed frequently, where animation will be\n // called repeatly but nothing changed.\n\n\n if (!clipCount) {\n this._doneCallback();\n }\n\n return this;\n },\n\n /**\n * Stop animation\n * @param {boolean} forwardToLast If move to last frame before stop\n */\n stop: function (forwardToLast) {\n var clipList = this._clipList;\n var animation = this.animation;\n\n for (var i = 0; i < clipList.length; i++) {\n var clip = clipList[i];\n\n if (forwardToLast) {\n // Move to last frame before stop\n clip.onframe(this._target, 1);\n }\n\n animation && animation.removeClip(clip);\n }\n\n clipList.length = 0;\n },\n\n /**\n * Set when animation delay starts\n * @param {number} time 单位ms\n * @return {module:zrender/animation/Animator}\n */\n delay: function (time) {\n this._delay = time;\n return this;\n },\n\n /**\n * Add callback for animation end\n * @param {Function} cb\n * @return {module:zrender/animation/Animator}\n */\n done: function (cb) {\n if (cb) {\n this._doneList.push(cb);\n }\n\n return this;\n },\n\n /**\n * @return {Array.}\n */\n getClips: function () {\n return this._clipList;\n }\n};\nvar _default = Animator;\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 linkList = require(\"./helper/linkList\");\n\nvar List = require(\"./List\");\n\nvar createDimensions = require(\"./helper/createDimensions\");\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 * Tree data structure\n *\n * @module echarts/data/Tree\n */\n\n/**\n * @constructor module:echarts/data/Tree~TreeNode\n * @param {string} name\n * @param {module:echarts/data/Tree} hostTree\n */\nvar TreeNode = function (name, hostTree) {\n /**\n * @type {string}\n */\n this.name = name || '';\n /**\n * Depth of node\n *\n * @type {number}\n * @readOnly\n */\n\n this.depth = 0;\n /**\n * Height of the subtree rooted at this node.\n * @type {number}\n * @readOnly\n */\n\n this.height = 0;\n /**\n * @type {module:echarts/data/Tree~TreeNode}\n * @readOnly\n */\n\n this.parentNode = null;\n /**\n * Reference to list item.\n * Do not persistent dataIndex outside,\n * besause it may be changed by list.\n * If dataIndex -1,\n * this node is logical deleted (filtered) in list.\n *\n * @type {Object}\n * @readOnly\n */\n\n this.dataIndex = -1;\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.children = [];\n /**\n * @type {Array.}\n * @pubilc\n */\n\n this.viewChildren = [];\n /**\n * @type {moduel:echarts/data/Tree}\n * @readOnly\n */\n\n this.hostTree = hostTree;\n};\n\nTreeNode.prototype = {\n constructor: TreeNode,\n\n /**\n * The node is removed.\n * @return {boolean} is removed.\n */\n isRemoved: function () {\n return this.dataIndex < 0;\n },\n\n /**\n * Travel this subtree (include this node).\n * Usage:\n * node.eachNode(function () { ... }); // preorder\n * node.eachNode('preorder', function () { ... }); // preorder\n * node.eachNode('postorder', function () { ... }); // postorder\n * node.eachNode(\n * {order: 'postorder', attr: 'viewChildren'},\n * function () { ... }\n * ); // postorder\n *\n * @param {(Object|string)} options If string, means order.\n * @param {string=} options.order 'preorder' or 'postorder'\n * @param {string=} options.attr 'children' or 'viewChildren'\n * @param {Function} cb If in preorder and return false,\n * its subtree will not be visited.\n * @param {Object} [context]\n */\n eachNode: function (options, cb, context) {\n if (typeof options === 'function') {\n context = cb;\n cb = options;\n options = null;\n }\n\n options = options || {};\n\n if (zrUtil.isString(options)) {\n options = {\n order: options\n };\n }\n\n var order = options.order || 'preorder';\n var children = this[options.attr || 'children'];\n var suppressVisitSub;\n order === 'preorder' && (suppressVisitSub = cb.call(context, this));\n\n for (var i = 0; !suppressVisitSub && i < children.length; i++) {\n children[i].eachNode(options, cb, context);\n }\n\n order === 'postorder' && cb.call(context, this);\n },\n\n /**\n * Update depth and height of this subtree.\n *\n * @param {number} depth\n */\n updateDepthAndHeight: function (depth) {\n var height = 0;\n this.depth = depth;\n\n for (var i = 0; i < this.children.length; i++) {\n var child = this.children[i];\n child.updateDepthAndHeight(depth + 1);\n\n if (child.height > height) {\n height = child.height;\n }\n }\n\n this.height = height + 1;\n },\n\n /**\n * @param {string} id\n * @return {module:echarts/data/Tree~TreeNode}\n */\n getNodeById: function (id) {\n if (this.getId() === id) {\n return this;\n }\n\n for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n var res = children[i].getNodeById(id);\n\n if (res) {\n return res;\n }\n }\n },\n\n /**\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {boolean}\n */\n contains: function (node) {\n if (node === this) {\n return true;\n }\n\n for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n var res = children[i].contains(node);\n\n if (res) {\n return res;\n }\n }\n },\n\n /**\n * @param {boolean} includeSelf Default false.\n * @return {Array.} order: [root, child, grandchild, ...]\n */\n getAncestors: function (includeSelf) {\n var ancestors = [];\n var node = includeSelf ? this : this.parentNode;\n\n while (node) {\n ancestors.push(node);\n node = node.parentNode;\n }\n\n ancestors.reverse();\n return ancestors;\n },\n\n /**\n * @param {string|Array=} [dimension='value'] Default 'value'. can be 0, 1, 2, 3\n * @return {number} Value.\n */\n getValue: function (dimension) {\n var data = this.hostTree.data;\n return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n },\n\n /**\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n setLayout: function (layout, merge) {\n this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout, merge);\n },\n\n /**\n * @return {Object} layout\n */\n getLayout: function () {\n return this.hostTree.data.getItemLayout(this.dataIndex);\n },\n\n /**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var hostTree = this.hostTree;\n var itemModel = hostTree.data.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n },\n\n /**\n * @example\n * setItemVisual('color', color);\n * setItemVisual({\n * 'color': color\n * });\n */\n setVisual: function (key, value) {\n this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value);\n },\n\n /**\n * Get item visual\n */\n getVisual: function (key, ignoreParent) {\n return this.hostTree.data.getItemVisual(this.dataIndex, key, ignoreParent);\n },\n\n /**\n * @public\n * @return {number}\n */\n getRawIndex: function () {\n return this.hostTree.data.getRawIndex(this.dataIndex);\n },\n\n /**\n * @public\n * @return {string}\n */\n getId: function () {\n return this.hostTree.data.getId(this.dataIndex);\n },\n\n /**\n * if this is an ancestor of another node\n *\n * @public\n * @param {TreeNode} node another node\n * @return {boolean} if is ancestor\n */\n isAncestorOf: function (node) {\n var parent = node.parentNode;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parentNode;\n }\n\n return false;\n },\n\n /**\n * if this is an descendant of another node\n *\n * @public\n * @param {TreeNode} node another node\n * @return {boolean} if is descendant\n */\n isDescendantOf: function (node) {\n return node !== this && node.isAncestorOf(this);\n }\n};\n/**\n * @constructor\n * @alias module:echarts/data/Tree\n * @param {module:echarts/model/Model} hostModel\n */\n\nfunction Tree(hostModel) {\n /**\n * @type {module:echarts/data/Tree~TreeNode}\n * @readOnly\n */\n this.root;\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.data;\n /**\n * Index of each item is the same as the raw index of coresponding list item.\n * @private\n * @type {Array.}, ...]\n * @private\n * @type {Array.}\n */\n\n this._pieceList = [];\n this.resetExtent();\n /**\n * 'pieces', 'categories', 'splitNumber'\n * @type {string}\n */\n\n var mode = this._mode = this._determineMode();\n\n resetMethods[this._mode].call(this);\n\n this._resetSelected(newOption, isInit);\n\n var categories = this.option.categories;\n this.resetVisual(function (mappingOption, state) {\n if (mode === 'categories') {\n mappingOption.mappingMethod = 'category';\n mappingOption.categories = zrUtil.clone(categories);\n } else {\n mappingOption.dataExtent = this.getExtent();\n mappingOption.mappingMethod = 'piecewise';\n mappingOption.pieceList = zrUtil.map(this._pieceList, function (piece) {\n var piece = zrUtil.clone(piece);\n\n if (state !== 'inRange') {\n // FIXME\n // outOfRange do not support special visual in pieces.\n piece.visual = null;\n }\n\n return piece;\n });\n }\n });\n },\n\n /**\n * @protected\n * @override\n */\n completeVisualOption: function () {\n // Consider this case:\n // visualMap: {\n // pieces: [{symbol: 'circle', lt: 0}, {symbol: 'rect', gte: 0}]\n // }\n // where no inRange/outOfRange set but only pieces. So we should make\n // default inRange/outOfRange for this case, otherwise visuals that only\n // appear in `pieces` will not be taken into account in visual encoding.\n var option = this.option;\n var visualTypesInPieces = {};\n var visualTypes = VisualMapping.listVisualTypes();\n var isCategory = this.isCategory();\n zrUtil.each(option.pieces, function (piece) {\n zrUtil.each(visualTypes, function (visualType) {\n if (piece.hasOwnProperty(visualType)) {\n visualTypesInPieces[visualType] = 1;\n }\n });\n });\n zrUtil.each(visualTypesInPieces, function (v, visualType) {\n var exists = 0;\n zrUtil.each(this.stateList, function (state) {\n exists |= has(option, state, visualType) || has(option.target, state, visualType);\n }, this);\n !exists && zrUtil.each(this.stateList, function (state) {\n (option[state] || (option[state] = {}))[visualType] = visualDefault.get(visualType, state === 'inRange' ? 'active' : 'inactive', isCategory);\n });\n }, this);\n\n function has(obj, state, visualType) {\n return obj && obj[state] && (zrUtil.isObject(obj[state]) ? obj[state].hasOwnProperty(visualType) : obj[state] === visualType // e.g., inRange: 'symbol'\n );\n }\n\n VisualMapModel.prototype.completeVisualOption.apply(this, arguments);\n },\n _resetSelected: function (newOption, isInit) {\n var thisOption = this.option;\n var pieceList = this._pieceList; // Selected do not merge but all override.\n\n var selected = (isInit ? thisOption : newOption).selected || {};\n thisOption.selected = selected; // Consider 'not specified' means true.\n\n zrUtil.each(pieceList, function (piece, index) {\n var key = this.getSelectedMapKey(piece);\n\n if (!selected.hasOwnProperty(key)) {\n selected[key] = true;\n }\n }, this);\n\n if (thisOption.selectedMode === 'single') {\n // Ensure there is only one selected.\n var hasSel = false;\n zrUtil.each(pieceList, function (piece, index) {\n var key = this.getSelectedMapKey(piece);\n\n if (selected[key]) {\n hasSel ? selected[key] = false : hasSel = true;\n }\n }, this);\n } // thisOption.selectedMode === 'multiple', default: all selected.\n\n },\n\n /**\n * @public\n */\n getSelectedMapKey: function (piece) {\n return this._mode === 'categories' ? piece.value + '' : piece.index + '';\n },\n\n /**\n * @public\n */\n getPieceList: function () {\n return this._pieceList;\n },\n\n /**\n * @private\n * @return {string}\n */\n _determineMode: function () {\n var option = this.option;\n return option.pieces && option.pieces.length > 0 ? 'pieces' : this.option.categories ? 'categories' : 'splitNumber';\n },\n\n /**\n * @public\n * @override\n */\n setSelected: function (selected) {\n this.option.selected = zrUtil.clone(selected);\n },\n\n /**\n * @public\n * @override\n */\n getValueState: function (value) {\n var index = VisualMapping.findPieceIndex(value, this._pieceList);\n return index != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index])] ? 'inRange' : 'outOfRange' : 'outOfRange';\n },\n\n /**\n * @public\n * @params {number} pieceIndex piece index in visualMapModel.getPieceList()\n * @return {Array.} [{seriesId, dataIndex: >}, ...]\n */\n findTargetDataIndices: function (pieceIndex) {\n var result = [];\n this.eachTargetSeries(function (seriesModel) {\n var dataIndices = [];\n var data = seriesModel.getData();\n data.each(this.getDataDimension(data), function (value, dataIndex) {\n // Should always base on model pieceList, because it is order sensitive.\n var pIdx = VisualMapping.findPieceIndex(value, this._pieceList);\n pIdx === pieceIndex && dataIndices.push(dataIndex);\n }, this);\n result.push({\n seriesId: seriesModel.id,\n dataIndex: dataIndices\n });\n }, this);\n return result;\n },\n\n /**\n * @private\n * @param {Object} piece piece.value or piece.interval is required.\n * @return {number} Can be Infinity or -Infinity\n */\n getRepresentValue: function (piece) {\n var representValue;\n\n if (this.isCategory()) {\n representValue = piece.value;\n } else {\n if (piece.value != null) {\n representValue = piece.value;\n } else {\n var pieceInterval = piece.interval || [];\n representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2;\n }\n }\n\n return representValue;\n },\n getVisualMeta: function (getColorVisual) {\n // Do not support category. (category axis is ordinal, numerical)\n if (this.isCategory()) {\n return;\n }\n\n var stops = [];\n var outerColors = [];\n var visualMapModel = this;\n\n function setStop(interval, valueState) {\n var representValue = visualMapModel.getRepresentValue({\n interval: interval\n });\n\n if (!valueState) {\n valueState = visualMapModel.getValueState(representValue);\n }\n\n var color = getColorVisual(representValue, valueState);\n\n if (interval[0] === -Infinity) {\n outerColors[0] = color;\n } else if (interval[1] === Infinity) {\n outerColors[1] = color;\n } else {\n stops.push({\n value: interval[0],\n color: color\n }, {\n value: interval[1],\n color: color\n });\n }\n } // Suplement\n\n\n var pieceList = this._pieceList.slice();\n\n if (!pieceList.length) {\n pieceList.push({\n interval: [-Infinity, Infinity]\n });\n } else {\n var edge = pieceList[0].interval[0];\n edge !== -Infinity && pieceList.unshift({\n interval: [-Infinity, edge]\n });\n edge = pieceList[pieceList.length - 1].interval[1];\n edge !== Infinity && pieceList.push({\n interval: [edge, Infinity]\n });\n }\n\n var curr = -Infinity;\n zrUtil.each(pieceList, function (piece) {\n var interval = piece.interval;\n\n if (interval) {\n // Fulfill gap.\n interval[0] > curr && setStop([curr, interval[0]], 'outOfRange');\n setStop(interval.slice());\n curr = interval[1];\n }\n }, this);\n return {\n stops: stops,\n outerColors: outerColors\n };\n }\n});\n/**\n * Key is this._mode\n * @type {Object}\n * @this {module:echarts/component/viusalMap/PiecewiseMode}\n */\n\nvar resetMethods = {\n splitNumber: function () {\n var thisOption = this.option;\n var pieceList = this._pieceList;\n var precision = Math.min(thisOption.precision, 20);\n var dataExtent = this.getExtent();\n var splitNumber = thisOption.splitNumber;\n splitNumber = Math.max(parseInt(splitNumber, 10), 1);\n thisOption.splitNumber = splitNumber;\n var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber; // Precision auto-adaption\n\n while (+splitStep.toFixed(precision) !== splitStep && precision < 5) {\n precision++;\n }\n\n thisOption.precision = precision;\n splitStep = +splitStep.toFixed(precision);\n\n if (thisOption.minOpen) {\n pieceList.push({\n interval: [-Infinity, dataExtent[0]],\n close: [0, 0]\n });\n }\n\n for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) {\n var max = index === splitNumber - 1 ? dataExtent[1] : curr + splitStep;\n pieceList.push({\n interval: [curr, max],\n close: [1, 1]\n });\n }\n\n if (thisOption.maxOpen) {\n pieceList.push({\n interval: [dataExtent[1], Infinity],\n close: [0, 0]\n });\n }\n\n reformIntervals(pieceList);\n zrUtil.each(pieceList, function (piece, index) {\n piece.index = index;\n piece.text = this.formatValueText(piece.interval);\n }, this);\n },\n categories: function () {\n var thisOption = this.option;\n zrUtil.each(thisOption.categories, function (cate) {\n // FIXME category模式也使用pieceList,但在visualMapping中不是使用pieceList。\n // 是否改一致。\n this._pieceList.push({\n text: this.formatValueText(cate, true),\n value: cate\n });\n }, this); // See \"Order Rule\".\n\n normalizeReverse(thisOption, this._pieceList);\n },\n pieces: function () {\n var thisOption = this.option;\n var pieceList = this._pieceList;\n zrUtil.each(thisOption.pieces, function (pieceListItem, index) {\n if (!zrUtil.isObject(pieceListItem)) {\n pieceListItem = {\n value: pieceListItem\n };\n }\n\n var item = {\n text: '',\n index: index\n };\n\n if (pieceListItem.label != null) {\n item.text = pieceListItem.label;\n }\n\n if (pieceListItem.hasOwnProperty('value')) {\n var value = item.value = pieceListItem.value;\n item.interval = [value, value];\n item.close = [1, 1];\n } else {\n // `min` `max` is legacy option.\n // `lt` `gt` `lte` `gte` is recommanded.\n var interval = item.interval = [];\n var close = item.close = [0, 0];\n var closeList = [1, 0, 1];\n var infinityList = [-Infinity, Infinity];\n var useMinMax = [];\n\n for (var lg = 0; lg < 2; lg++) {\n var names = [['gte', 'gt', 'min'], ['lte', 'lt', 'max']][lg];\n\n for (var i = 0; i < 3 && interval[lg] == null; i++) {\n interval[lg] = pieceListItem[names[i]];\n close[lg] = closeList[i];\n useMinMax[lg] = i === 2;\n }\n\n interval[lg] == null && (interval[lg] = infinityList[lg]);\n }\n\n useMinMax[0] && interval[1] === Infinity && (close[0] = 0);\n useMinMax[1] && interval[0] === -Infinity && (close[1] = 0);\n\n if (interval[0] === interval[1] && close[0] && close[1]) {\n // Consider: [{min: 5, max: 5, visual: {...}}, {min: 0, max: 5}],\n // we use value to lift the priority when min === max\n item.value = interval[0];\n }\n }\n\n item.visual = VisualMapping.retrieveVisuals(pieceListItem);\n pieceList.push(item);\n }, this); // See \"Order Rule\".\n\n normalizeReverse(thisOption, pieceList); // Only pieces\n\n reformIntervals(pieceList);\n zrUtil.each(pieceList, function (piece) {\n var close = piece.close;\n var edgeSymbols = [['<', '≤'][close[1]], ['>', '≥'][close[0]]];\n piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols);\n }, this);\n }\n};\n\nfunction normalizeReverse(thisOption, pieceList) {\n var inverse = thisOption.inverse;\n\n if (thisOption.orient === 'vertical' ? !inverse : inverse) {\n pieceList.reverse();\n }\n}\n\nvar _default = PiecewiseModel;\nmodule.exports = _default;","var eventUtil = require(\"./event\");\n\n/**\n * Only implements needed gestures for mobile.\n */\nvar GestureMgr = function () {\n /**\n * @private\n * @type {Array.}\n */\n this._track = [];\n};\n\nGestureMgr.prototype = {\n constructor: GestureMgr,\n recognize: function (event, target, root) {\n this._doTrack(event, target, root);\n\n return this._recognize(event);\n },\n clear: function () {\n this._track.length = 0;\n return this;\n },\n _doTrack: function (event, target, root) {\n var touches = event.touches;\n\n if (!touches) {\n return;\n }\n\n var trackItem = {\n points: [],\n touches: [],\n target: target,\n event: event\n };\n\n for (var i = 0, len = touches.length; i < len; i++) {\n var touch = touches[i];\n var pos = eventUtil.clientToLocal(root, touch, {});\n trackItem.points.push([pos.zrX, pos.zrY]);\n trackItem.touches.push(touch);\n }\n\n this._track.push(trackItem);\n },\n _recognize: function (event) {\n for (var eventName in recognizers) {\n if (recognizers.hasOwnProperty(eventName)) {\n var gestureInfo = recognizers[eventName](this._track, event);\n\n if (gestureInfo) {\n return gestureInfo;\n }\n }\n }\n }\n};\n\nfunction dist(pointPair) {\n var dx = pointPair[1][0] - pointPair[0][0];\n var dy = pointPair[1][1] - pointPair[0][1];\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction center(pointPair) {\n return [(pointPair[0][0] + pointPair[1][0]) / 2, (pointPair[0][1] + pointPair[1][1]) / 2];\n}\n\nvar recognizers = {\n pinch: function (track, event) {\n var trackLen = track.length;\n\n if (!trackLen) {\n return;\n }\n\n var pinchEnd = (track[trackLen - 1] || {}).points;\n var pinchPre = (track[trackLen - 2] || {}).points || pinchEnd;\n\n if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) {\n var pinchScale = dist(pinchEnd) / dist(pinchPre);\n !isFinite(pinchScale) && (pinchScale = 1);\n event.pinchScale = pinchScale;\n var pinchCenter = center(pinchEnd);\n event.pinchX = pinchCenter[0];\n event.pinchY = pinchCenter[1];\n return {\n type: 'pinch',\n target: track[0].target,\n event: event\n };\n }\n } // Only pinch currently.\n\n};\nvar _default = GestureMgr;\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\nrequire(\"./legend\");\n\nrequire(\"./legend/ScrollableLegendModel\");\n\nrequire(\"./legend/ScrollableLegendView\");\n\nrequire(\"./legend/scrollableLegendAction\");","\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/parallel\");\n\nrequire(\"./parallel/ParallelSeries\");\n\nrequire(\"./parallel/ParallelView\");\n\nvar parallelVisual = require(\"./parallel/parallelVisual\");\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.registerVisual(parallelVisual);","\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(\"./candlestick/CandlestickSeries\");\n\nrequire(\"./candlestick/CandlestickView\");\n\nvar preprocessor = require(\"./candlestick/preprocessor\");\n\nvar candlestickVisual = require(\"./candlestick/candlestickVisual\");\n\nvar candlestickLayout = require(\"./candlestick/candlestickLayout\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerPreprocessor(preprocessor);\necharts.registerVisual(candlestickVisual);\necharts.registerLayout(candlestickLayout);","\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(\"../../coord/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*/\n\n/**\n * Extend axis 2d\n * @constructor module:echarts/coord/cartesian/Axis2D\n * @extends {module:echarts/coord/cartesian/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar TimelineAxis = function (dim, scale, coordExtent, axisType) {\n Axis.call(this, dim, scale, coordExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = axisType || 'value';\n /**\n * Axis model\n * @param {module:echarts/component/TimelineModel}\n */\n\n this.model = null;\n};\n\nTimelineAxis.prototype = {\n constructor: TimelineAxis,\n\n /**\n * @override\n */\n getLabelModel: function () {\n return this.model.getModel('label');\n },\n\n /**\n * @override\n */\n isHorizontal: function () {\n return this.model.get('orient') === 'horizontal';\n }\n};\nzrUtil.inherits(TimelineAxis, Axis);\nvar _default = TimelineAxis;\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 subPixelOptimize = _graphic.subPixelOptimize;\n\nvar createRenderPlanner = require(\"../helper/createRenderPlanner\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar retrieve2 = _util.retrieve2;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nvar _default = {\n seriesType: 'candlestick',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var candleWidth = calculateCandleWidth(seriesModel, data);\n var cDimIdx = 0;\n var vDimIdx = 1;\n var coordDims = ['x', 'y'];\n var cDim = data.mapDimension(coordDims[cDimIdx]);\n var vDims = data.mapDimension(coordDims[vDimIdx], true);\n var openDim = vDims[0];\n var closeDim = vDims[1];\n var lowestDim = vDims[2];\n var highestDim = vDims[3];\n data.setLayout({\n candleWidth: candleWidth,\n // The value is experimented visually.\n isSimpleBox: candleWidth <= 1.3\n });\n\n if (cDim == null || vDims.length < 4) {\n return;\n }\n\n return {\n progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress\n };\n\n function normalProgress(params, data) {\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var axisDimVal = data.get(cDim, dataIndex);\n var openVal = data.get(openDim, dataIndex);\n var closeVal = data.get(closeDim, dataIndex);\n var lowestVal = data.get(lowestDim, dataIndex);\n var highestVal = data.get(highestDim, dataIndex);\n var ocLow = Math.min(openVal, closeVal);\n var ocHigh = Math.max(openVal, closeVal);\n var ocLowPoint = getPoint(ocLow, axisDimVal);\n var ocHighPoint = getPoint(ocHigh, axisDimVal);\n var lowestPoint = getPoint(lowestVal, axisDimVal);\n var highestPoint = getPoint(highestVal, axisDimVal);\n var ends = [];\n addBodyEnd(ends, ocHighPoint, 0);\n addBodyEnd(ends, ocLowPoint, 1);\n ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));\n data.setItemLayout(dataIndex, {\n sign: getSign(data, dataIndex, openVal, closeVal, closeDim),\n initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],\n // open point.\n ends: ends,\n brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)\n });\n }\n\n function getPoint(val, axisDimVal) {\n var p = [];\n p[cDimIdx] = axisDimVal;\n p[vDimIdx] = val;\n return isNaN(axisDimVal) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p);\n }\n\n function addBodyEnd(ends, point, start) {\n var point1 = point.slice();\n var point2 = point.slice();\n point1[cDimIdx] = subPixelOptimize(point1[cDimIdx] + candleWidth / 2, 1, false);\n point2[cDimIdx] = subPixelOptimize(point2[cDimIdx] - candleWidth / 2, 1, true);\n start ? ends.push(point1, point2) : ends.push(point2, point1);\n }\n\n function makeBrushRect(lowestVal, highestVal, axisDimVal) {\n var pmin = getPoint(lowestVal, axisDimVal);\n var pmax = getPoint(highestVal, axisDimVal);\n pmin[cDimIdx] -= candleWidth / 2;\n pmax[cDimIdx] -= candleWidth / 2;\n return {\n x: pmin[0],\n y: pmin[1],\n width: vDimIdx ? candleWidth : pmax[0] - pmin[0],\n height: vDimIdx ? pmax[1] - pmin[1] : candleWidth\n };\n }\n\n function subPixelOptimizePoint(point) {\n point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1);\n return point;\n }\n }\n\n function largeProgress(params, data) {\n // Structure: [sign, x, yhigh, ylow, sign, x, yhigh, ylow, ...]\n var points = new LargeArr(params.count * 4);\n var offset = 0;\n var point;\n var tmpIn = [];\n var tmpOut = [];\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var axisDimVal = data.get(cDim, dataIndex);\n var openVal = data.get(openDim, dataIndex);\n var closeVal = data.get(closeDim, dataIndex);\n var lowestVal = data.get(lowestDim, dataIndex);\n var highestVal = data.get(highestDim, dataIndex);\n\n if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {\n points[offset++] = NaN;\n offset += 3;\n continue;\n }\n\n points[offset++] = getSign(data, dataIndex, openVal, closeVal, closeDim);\n tmpIn[cDimIdx] = axisDimVal;\n tmpIn[vDimIdx] = lowestVal;\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n points[offset++] = point ? point[0] : NaN;\n points[offset++] = point ? point[1] : NaN;\n tmpIn[vDimIdx] = highestVal;\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n points[offset++] = point ? point[1] : NaN;\n }\n\n data.setLayout('largePoints', points);\n }\n }\n};\n\nfunction getSign(data, dataIndex, openVal, closeVal, closeDim) {\n var sign;\n\n if (openVal > closeVal) {\n sign = -1;\n } else if (openVal < closeVal) {\n sign = 1;\n } else {\n sign = dataIndex > 0 // If close === open, compare with close of last record\n ? data.get(closeDim, dataIndex - 1) <= closeVal ? 1 : -1 : // No record of previous, set to be positive\n 1;\n }\n\n return sign;\n}\n\nfunction calculateCandleWidth(seriesModel, data) {\n var baseAxis = seriesModel.getBaseAxis();\n var extent;\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : (extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / data.count());\n var barMaxWidth = parsePercent(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth);\n var barMinWidth = parsePercent(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth);\n var barWidth = seriesModel.get('barWidth');\n return barWidth != null ? parsePercent(barWidth, bandWidth) // Put max outer to ensure bar visible in spite of overlap.\n : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);\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\nrequire(\"./dataZoomSlider\");\n\nrequire(\"./dataZoomInside\");","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAkCAYAAAAKNyObAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJ6ADAAQAAAABAAAAJAAAAAB5lLh4AAADXUlEQVRYCeWYa28TMRBFE0iBFsqjlBIKAoFA4v//HQSlpFSlUGh5ludyTrSOnHazL7sfECNd7WbXHt+5Ho+9GQz+FyuKYhWsgWGOmEc5nOgDQle4PAX63AJ7IMnOJfUuO5dKbfLzEvgF7vBsqXzd+5KFHKNfA2vgHdgHqngbJFkyuUi18zA5Aj/BZzDmnUr2tmRyjHwTXAcqFkwFV8A4POhzTSKHMqplrhXgS0TgN/eHYIM2l6PnnW6TyDHSLbAK3lSMesCzi6C3er3JoYir0YF/gGNw0lTzPVin7dWTL9v87k0O5xtA1d7WDPSBdxfAJgQ7F+ZWHUrHKuU0BZhr5lZTsTUAF80u+Aq+BwyHQ9VdaHPkIKGSYfBwtRyY1JJzAQjbOZUO+Ac0WVDZdgYkLNaS/QZmhL2HtO8GM3IQM7nvA7cfCXg1MuuWnc2tcJ125ndXMyin2cDjq89j0pai7XhvtVaZuNarEE2t7LTraqqs4lULSLJiDEyDHRkHM3es8JJUrdzEcFlrzoziODuvndrZtNqNqTV5HwNz7BXoO3107WwuMNPpJcSmdXOOnO4g6KYtQa8ToIpnaXK4Ww4gsdk2eIqcjSCock+ASqrgWRF0/HvAFHoBMRfCzCrJ+RaCbtwqaA6qoLmQ0xzb6mDqPIeYu8mcLSRnKwha41RQgjsgF0EXosRcBBJzJzllteRsDUFrkgq6vHMo6JgPgOVEYlaISotLSWUDOqvWM+AB8kZlo24PXWjWO3NsITFdNpKzEWZeGLFVPNX00cpXW3JO7QjkyDl9WM/M51rrSs4ETrWgnAHXWltyRmm0OZSTkGmSjZyOTOJc+60z4MKoNfOojS3TqGlKw6HS2TgE1q5FwTgDy5SpEStWFSutkRwOXFl15PygtgaaSxIyiHXgR7YkrfyqHpvkVM50sURVWiM5eoVz1qfIg4TdNax7Ru53hCeJI5QgnmKPe0+/HmAf+RxIMpQiAzCHTZckcmExWNElJSHhAJ4gJPVRUlynxr3fsFsRSYk+BAZ4ADxINJaTNsoZnY48CAqnZBfsQyJWk0fzxntP1NuQNABV9P8Tty6/HbTaFduGnApJyOmdAEmpTGujvapPSpKqKPSbfhTD6QqojZKBWhu+loB/NJom/6b9BXbIEl5RvPD5AAAAAElFTkSuQmCC\"","\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*/\n\n/**\n * @constructor module:echarts/coord/parallel/ParallelAxis\n * @extends {module:echarts/coord/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.} coordExtent\n * @param {string} axisType\n */\nvar ParallelAxis = function (dim, scale, coordExtent, axisType, axisIndex) {\n Axis.call(this, dim, scale, coordExtent);\n /**\n * Axis type\n * - 'category'\n * - 'value'\n * - 'time'\n * - 'log'\n * @type {string}\n */\n\n this.type = axisType || 'value';\n /**\n * @type {number}\n * @readOnly\n */\n\n this.axisIndex = axisIndex;\n};\n\nParallelAxis.prototype = {\n constructor: ParallelAxis,\n\n /**\n * Axis model\n * @param {module:echarts/coord/parallel/AxisModel}\n */\n model: null,\n\n /**\n * @override\n */\n isHorizontal: function () {\n return this.coordinateSystem.getModel().get('layout') !== 'horizontal';\n }\n};\nzrUtil.inherits(ParallelAxis, Axis);\nvar _default = ParallelAxis;\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 _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar getDataItemValue = _model.getDataItemValue;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\nvar isTypedArray = _util.isTypedArray;\nvar isArrayLike = _util.isArrayLike;\nvar extend = _util.extend;\nvar assert = _util.assert;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SERIES_LAYOUT_BY_ROW = _sourceType.SERIES_LAYOUT_BY_ROW;\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// The result of `guessOrdinal`.\nvar BE_ORDINAL = {\n Must: 1,\n // Encounter string but not '-' and not number-like.\n Might: 2,\n // Encounter string but number-like.\n Not: 3 // Other cases\n\n};\nvar inner = makeInner();\n/**\n * @see {module:echarts/data/Source}\n * @param {module:echarts/component/dataset/DatasetModel} datasetModel\n * @return {string} sourceFormat\n */\n\nfunction detectSourceFormat(datasetModel) {\n var data = datasetModel.option.source;\n var sourceFormat = SOURCE_FORMAT_UNKNOWN;\n\n if (isTypedArray(data)) {\n sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\n } else if (isArray(data)) {\n // FIXME Whether tolerate null in top level array?\n if (data.length === 0) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n }\n\n for (var i = 0, len = data.length; i < len; i++) {\n var item = data[i];\n\n if (item == null) {\n continue;\n } else if (isArray(item)) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n break;\n } else if (isObject(item)) {\n sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\n break;\n }\n }\n } else if (isObject(data)) {\n for (var key in data) {\n if (data.hasOwnProperty(key) && isArrayLike(data[key])) {\n sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\n break;\n }\n }\n } else if (data != null) {\n throw new Error('Invalid data');\n }\n\n inner(datasetModel).sourceFormat = sourceFormat;\n}\n/**\n * [Scenarios]:\n * (1) Provide source data directly:\n * series: {\n * encode: {...},\n * dimensions: [...]\n * seriesLayoutBy: 'row',\n * data: [[...]]\n * }\n * (2) Refer to datasetModel.\n * series: [{\n * encode: {...}\n * // Ignore datasetIndex means `datasetIndex: 0`\n * // and the dimensions defination in dataset is used\n * }, {\n * encode: {...},\n * seriesLayoutBy: 'column',\n * datasetIndex: 1\n * }]\n *\n * Get data from series itself or datset.\n * @return {module:echarts/data/Source} source\n */\n\n\nfunction getSource(seriesModel) {\n return inner(seriesModel).source;\n}\n/**\n * MUST be called before mergeOption of all series.\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction resetSourceDefaulter(ecModel) {\n // `datasetMap` is used to make default encode.\n inner(ecModel).datasetMap = createHashMap();\n}\n/**\n * [Caution]:\n * MUST be called after series option merged and\n * before \"series.getInitailData()\" called.\n *\n * [The rule of making default encode]:\n * Category axis (if exists) alway map to the first dimension.\n * Each other axis occupies a subsequent dimension.\n *\n * [Why make default encode]:\n * Simplify the typing of encode in option, avoiding the case like that:\n * series: [{encode: {x: 0, y: 1}}, {encode: {x: 0, y: 2}}, {encode: {x: 0, y: 3}}],\n * where the \"y\" have to be manually typed as \"1, 2, 3, ...\".\n *\n * @param {module:echarts/model/Series} seriesModel\n */\n\n\nfunction prepareSource(seriesModel) {\n var seriesOption = seriesModel.option;\n var data = seriesOption.data;\n var sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\n var fromDataset = false;\n var seriesLayoutBy = seriesOption.seriesLayoutBy;\n var sourceHeader = seriesOption.sourceHeader;\n var dimensionsDefine = seriesOption.dimensions;\n var datasetModel = getDatasetModel(seriesModel);\n\n if (datasetModel) {\n var datasetOption = datasetModel.option;\n data = datasetOption.source;\n sourceFormat = inner(datasetModel).sourceFormat;\n fromDataset = true; // These settings from series has higher priority.\n\n seriesLayoutBy = seriesLayoutBy || datasetOption.seriesLayoutBy;\n sourceHeader == null && (sourceHeader = datasetOption.sourceHeader);\n dimensionsDefine = dimensionsDefine || datasetOption.dimensions;\n }\n\n var completeResult = completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine);\n inner(seriesModel).source = new Source({\n data: data,\n fromDataset: fromDataset,\n seriesLayoutBy: seriesLayoutBy,\n sourceFormat: sourceFormat,\n dimensionsDefine: completeResult.dimensionsDefine,\n startIndex: completeResult.startIndex,\n dimensionsDetectCount: completeResult.dimensionsDetectCount,\n // Note: dataset option does not have `encode`.\n encodeDefine: seriesOption.encode\n });\n} // return {startIndex, dimensionsDefine, dimensionsCount}\n\n\nfunction completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\n if (!data) {\n return {\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine)\n };\n }\n\n var dimensionsDetectCount;\n var startIndex;\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n // Rule: Most of the first line are string: it is header.\n // Caution: consider a line with 5 string and 1 number,\n // it still can not be sure it is a head, because the\n // 5 string may be 5 values of category columns.\n if (sourceHeader === 'auto' || sourceHeader == null) {\n arrayRowsTravelFirst(function (val) {\n // '-' is regarded as null/undefined.\n if (val != null && val !== '-') {\n if (isString(val)) {\n startIndex == null && (startIndex = 1);\n } else {\n startIndex = 0;\n }\n } // 10 is an experience number, avoid long loop.\n\n }, seriesLayoutBy, data, 10);\n } else {\n startIndex = sourceHeader ? 1 : 0;\n }\n\n if (!dimensionsDefine && startIndex === 1) {\n dimensionsDefine = [];\n arrayRowsTravelFirst(function (val, index) {\n dimensionsDefine[index] = val != null ? val : '';\n }, seriesLayoutBy, data);\n }\n\n dimensionsDetectCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? data.length : data[0] ? data[0].length : null;\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimensionsDefine) {\n dimensionsDefine = objectRowsCollectDimensions(data);\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimensionsDefine) {\n dimensionsDefine = [];\n each(data, function (colArr, key) {\n dimensionsDefine.push(key);\n });\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var value0 = getDataItemValue(data[0]);\n dimensionsDetectCount = isArray(value0) && value0.length || 1;\n } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {}\n\n return {\n startIndex: startIndex,\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine),\n dimensionsDetectCount: dimensionsDetectCount\n };\n} // Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'],\n// which is reasonable. But dimension name is duplicated.\n// Returns undefined or an array contains only object without null/undefiend or string.\n\n\nfunction normalizeDimensionsDefine(dimensionsDefine) {\n if (!dimensionsDefine) {\n // The meaning of null/undefined is different from empty array.\n return;\n }\n\n var nameMap = createHashMap();\n return map(dimensionsDefine, function (item, index) {\n item = extend({}, isObject(item) ? item : {\n name: item\n }); // User can set null in dimensions.\n // We dont auto specify name, othewise a given name may\n // cause it be refered unexpectedly.\n\n if (item.name == null) {\n return item;\n } // Also consider number form like 2012.\n\n\n item.name += ''; // User may also specify displayName.\n // displayName will always exists except user not\n // specified or dim name is not specified or detected.\n // (A auto generated dim name will not be used as\n // displayName).\n\n if (item.displayName == null) {\n item.displayName = item.name;\n }\n\n var exist = nameMap.get(item.name);\n\n if (!exist) {\n nameMap.set(item.name, {\n count: 1\n });\n } else {\n item.name += '-' + exist.count++;\n }\n\n return item;\n });\n}\n\nfunction arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\n maxLoop == null && (maxLoop = Infinity);\n\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n cb(data[i] ? data[i][0] : null, i);\n }\n } else {\n var value0 = data[0] || [];\n\n for (var i = 0; i < value0.length && i < maxLoop; i++) {\n cb(value0[i], i);\n }\n }\n}\n\nfunction objectRowsCollectDimensions(data) {\n var firstIndex = 0;\n var obj;\n\n while (firstIndex < data.length && !(obj = data[firstIndex++])) {} // jshint ignore: line\n\n\n if (obj) {\n var dimensions = [];\n each(obj, function (value, key) {\n dimensions.push(key);\n });\n return dimensions;\n }\n}\n/**\n * [The strategy of the arrengment of data dimensions for dataset]:\n * \"value way\": all axes are non-category axes. So series one by one take\n * several (the number is coordSysDims.length) dimensions from dataset.\n * The result of data arrengment of data dimensions like:\n * | ser0_x | ser0_y | ser1_x | ser1_y | ser2_x | ser2_y |\n * \"category way\": at least one axis is category axis. So the the first data\n * dimension is always mapped to the first category axis and shared by\n * all of the series. The other data dimensions are taken by series like\n * \"value way\" does.\n * The result of data arrengment of data dimensions like:\n * | ser_shared_x | ser0_y | ser1_y | ser2_y |\n *\n * @param {Array.} coordDimensions [{name: , type: , dimsDef: }, ...]\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel || !coordDimensions) {\n return encode;\n }\n\n var encodeItemName = [];\n var encodeSeriesName = [];\n var ecModel = seriesModel.ecModel;\n var datasetMap = inner(ecModel).datasetMap;\n var key = datasetModel.uid + '_' + source.seriesLayoutBy;\n var baseCategoryDimIndex;\n var categoryWayValueDimStart;\n coordDimensions = coordDimensions.slice();\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n !isObject(coordDimInfo) && (coordDimensions[coordDimIdx] = {\n name: coordDimInfo\n });\n\n if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\n baseCategoryDimIndex = coordDimIdx;\n categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimensions[coordDimIdx]);\n }\n\n encode[coordDimInfo.name] = [];\n });\n var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {\n categoryWayDim: categoryWayValueDimStart,\n valueWayDim: 0\n }); // TODO\n // Auto detect first time axis and do arrangement.\n\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n var coordDimName = coordDimInfo.name;\n var count = getDataDimCountOnCoordDim(coordDimInfo); // In value way.\n\n if (baseCategoryDimIndex == null) {\n var start = datasetRecord.valueWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.valueWayDim += count; // ??? TODO give a better default series name rule?\n // especially when encode x y specified.\n // consider: when mutiple series share one dimension\n // category axis, series name should better use\n // the other dimsion name. On the other hand, use\n // both dimensions name.\n } // In category way, the first category axis.\n else if (baseCategoryDimIndex === coordDimIdx) {\n pushDim(encode[coordDimName], 0, count);\n pushDim(encodeItemName, 0, count);\n } // In category way, the other axis.\n else {\n var start = datasetRecord.categoryWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.categoryWayDim += count;\n }\n });\n\n function pushDim(dimIdxArr, idxFrom, idxCount) {\n for (var i = 0; i < idxCount; i++) {\n dimIdxArr.push(idxFrom + i);\n }\n }\n\n function getDataDimCountOnCoordDim(coordDimInfo) {\n var dimsDef = coordDimInfo.dimsDef;\n return dimsDef ? dimsDef.length : 1;\n }\n\n encodeItemName.length && (encode.itemName = encodeItemName);\n encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\n return encode;\n}\n/**\n * Work for data like [{name: ..., value: ...}, ...].\n *\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel) {\n return encode;\n }\n\n var sourceFormat = source.sourceFormat;\n var dimensionsDefine = source.dimensionsDefine;\n var potentialNameDimIndex;\n\n if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n each(dimensionsDefine, function (dim, idx) {\n if ((isObject(dim) ? dim.name : dim) === 'name') {\n potentialNameDimIndex = idx;\n }\n });\n } // idxResult: {v, n}.\n\n\n var idxResult = function () {\n var idxRes0 = {};\n var idxRes1 = {};\n var guessRecords = []; // 5 is an experience value.\n\n for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\n var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\n guessRecords.push(guessResult);\n var isPureNumber = guessResult === BE_ORDINAL.Not; // [Strategy of idxRes0]: find the first BE_ORDINAL.Not as the value dim,\n // and then find a name dim with the priority:\n // \"BE_ORDINAL.Might|BE_ORDINAL.Must\" > \"other dim\" > \"the value dim itself\".\n\n if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\n idxRes0.v = i;\n }\n\n if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) {\n idxRes0.n = i;\n }\n\n if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\n return idxRes0;\n } // [Strategy of idxRes1]: if idxRes0 not satisfied (that is, no BE_ORDINAL.Not),\n // find the first BE_ORDINAL.Might as the value dim,\n // and then find a name dim with the priority:\n // \"other dim\" > \"the value dim itself\".\n // That is for backward compat: number-like (e.g., `'3'`, `'55'`) can be\n // treated as number.\n\n\n if (!isPureNumber) {\n if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\n idxRes1.v = i;\n }\n\n if (idxRes1.n == null || idxRes1.n === idxRes1.v) {\n idxRes1.n = i;\n }\n }\n }\n\n function fulfilled(idxResult) {\n return idxResult.v != null && idxResult.n != null;\n }\n\n return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\n }();\n\n if (idxResult) {\n encode.value = idxResult.v; // `potentialNameDimIndex` has highest priority.\n\n var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; // By default, label use itemName in charts.\n // So we dont set encodeLabel here.\n\n encode.itemName = [nameDimIndex];\n encode.seriesName = [nameDimIndex];\n }\n\n return encode;\n}\n/**\n * If return null/undefined, indicate that should not use datasetModel.\n */\n\n\nfunction getDatasetModel(seriesModel) {\n var option = seriesModel.option; // Caution: consider the scenario:\n // A dataset is declared and a series is not expected to use the dataset,\n // and at the beginning `setOption({series: { noData })` (just prepare other\n // option but no data), then `setOption({series: {data: [...]}); In this case,\n // the user should set an empty array to avoid that dataset is used by default.\n\n var thisData = option.data;\n\n if (!thisData) {\n return seriesModel.ecModel.getComponent('dataset', option.datasetIndex || 0);\n }\n}\n/**\n * The rule should not be complex, otherwise user might not\n * be able to known where the data is wrong.\n * The code is ugly, but how to make it neat?\n *\n * @param {module:echars/data/Source} source\n * @param {number} dimIndex\n * @return {BE_ORDINAL} guess result.\n */\n\n\nfunction guessOrdinal(source, dimIndex) {\n return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\n} // dimIndex may be overflow source data.\n// return {BE_ORDINAL}\n\n\nfunction doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\n var result; // Experience value.\n\n var maxLoop = 5;\n\n if (isTypedArray(data)) {\n return BE_ORDINAL.Not;\n } // When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine\n // always exists in source.\n\n\n var dimName;\n var dimType;\n\n if (dimensionsDefine) {\n var dimDefItem = dimensionsDefine[dimIndex];\n\n if (isObject(dimDefItem)) {\n dimName = dimDefItem.name;\n dimType = dimDefItem.type;\n } else if (isString(dimDefItem)) {\n dimName = dimDefItem;\n }\n }\n\n if (dimType != null) {\n return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\n }\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n var sample = data[dimIndex];\n\n for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\n if ((result = detectValue(sample[startIndex + i])) != null) {\n return result;\n }\n }\n } else {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var row = data[startIndex + i];\n\n if (row && (result = detectValue(row[dimIndex])) != null) {\n return result;\n }\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n\n if (item && (result = detectValue(item[dimName])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n var sample = data[dimName];\n\n if (!sample || isTypedArray(sample)) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < sample.length && i < maxLoop; i++) {\n if ((result = detectValue(sample[i])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n var val = getDataItemValue(item);\n\n if (!isArray(val)) {\n return BE_ORDINAL.Not;\n }\n\n if ((result = detectValue(val[dimIndex])) != null) {\n return result;\n }\n }\n }\n\n function detectValue(val) {\n var beStr = isString(val); // Consider usage convenience, '1', '2' will be treated as \"number\".\n // `isFinit('')` get `true`.\n\n if (val != null && isFinite(val) && val !== '') {\n return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\n } else if (beStr && val !== '-') {\n return BE_ORDINAL.Must;\n }\n }\n\n return BE_ORDINAL.Not;\n}\n\nexports.BE_ORDINAL = BE_ORDINAL;\nexports.detectSourceFormat = detectSourceFormat;\nexports.getSource = getSource;\nexports.resetSourceDefaulter = resetSourceDefaulter;\nexports.prepareSource = prepareSource;\nexports.makeSeriesEncodeForAxisCoordSys = makeSeriesEncodeForAxisCoordSys;\nexports.makeSeriesEncodeForNameBased = makeSeriesEncodeForNameBased;\nexports.guessOrdinal = guessOrdinal;","\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 Line = require(\"./Line\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar curveUtil = require(\"zrender/lib/core/curve\");\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 * Provide effect for line\n * @module echarts/chart/helper/EffectLine\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\nfunction EffectLine(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n this.add(this.createLine(lineData, idx, seriesScope));\n\n this._updateEffectSymbol(lineData, idx);\n}\n\nvar effectLineProto = EffectLine.prototype;\n\neffectLineProto.createLine = function (lineData, idx, seriesScope) {\n return new Line(lineData, idx, seriesScope);\n};\n\neffectLineProto._updateEffectSymbol = function (lineData, idx) {\n var itemModel = lineData.getItemModel(idx);\n var effectModel = itemModel.getModel('effect');\n var size = effectModel.get('symbolSize');\n var symbolType = effectModel.get('symbol');\n\n if (!zrUtil.isArray(size)) {\n size = [size, size];\n }\n\n var color = effectModel.get('color') || lineData.getItemVisual(idx, 'color');\n var symbol = this.childAt(1);\n\n if (this._symbolType !== symbolType) {\n // Remove previous\n this.remove(symbol);\n symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color);\n symbol.z2 = 100;\n symbol.culling = true;\n this.add(symbol);\n } // Symbol may be removed if loop is false\n\n\n if (!symbol) {\n return;\n } // Shadow color is same with color in default\n\n\n symbol.setStyle('shadowColor', color);\n symbol.setStyle(effectModel.getItemStyle(['color']));\n symbol.attr('scale', size);\n symbol.setColor(color);\n symbol.attr('scale', size);\n this._symbolType = symbolType;\n this._symbolScale = size;\n\n this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\neffectLineProto._updateEffectAnimation = function (lineData, effectModel, idx) {\n var symbol = this.childAt(1);\n\n if (!symbol) {\n return;\n }\n\n var self = this;\n var points = lineData.getItemLayout(idx);\n var period = effectModel.get('period') * 1000;\n var loop = effectModel.get('loop');\n var constantSpeed = effectModel.get('constantSpeed');\n var delayExpr = zrUtil.retrieve(effectModel.get('delay'), function (idx) {\n return idx / lineData.count() * period / 3;\n });\n var isDelayFunc = typeof delayExpr === 'function'; // Ignore when updating\n\n symbol.ignore = true;\n this.updateAnimationPoints(symbol, points);\n\n if (constantSpeed > 0) {\n period = this.getLineLength(symbol) / constantSpeed * 1000;\n }\n\n if (period !== this._period || loop !== this._loop) {\n symbol.stopAnimation();\n var delay = delayExpr;\n\n if (isDelayFunc) {\n delay = delayExpr(idx);\n }\n\n if (symbol.__t > 0) {\n delay = -period * symbol.__t;\n }\n\n symbol.__t = 0;\n var animator = symbol.animate('', loop).when(period, {\n __t: 1\n }).delay(delay).during(function () {\n self.updateSymbolPosition(symbol);\n });\n\n if (!loop) {\n animator.done(function () {\n self.remove(symbol);\n });\n }\n\n animator.start();\n }\n\n this._period = period;\n this._loop = loop;\n};\n\neffectLineProto.getLineLength = function (symbol) {\n // Not so accurate\n return vec2.dist(symbol.__p1, symbol.__cp1) + vec2.dist(symbol.__cp1, symbol.__p2);\n};\n\neffectLineProto.updateAnimationPoints = function (symbol, points) {\n symbol.__p1 = points[0];\n symbol.__p2 = points[1];\n symbol.__cp1 = points[2] || [(points[0][0] + points[1][0]) / 2, (points[0][1] + points[1][1]) / 2];\n};\n\neffectLineProto.updateData = function (lineData, idx, seriesScope) {\n this.childAt(0).updateData(lineData, idx, seriesScope);\n\n this._updateEffectSymbol(lineData, idx);\n};\n\neffectLineProto.updateSymbolPosition = function (symbol) {\n var p1 = symbol.__p1;\n var p2 = symbol.__p2;\n var cp1 = symbol.__cp1;\n var t = symbol.__t;\n var pos = symbol.position;\n var lastPos = [pos[0], pos[1]];\n var quadraticAt = curveUtil.quadraticAt;\n var quadraticDerivativeAt = curveUtil.quadraticDerivativeAt;\n pos[0] = quadraticAt(p1[0], cp1[0], p2[0], t);\n pos[1] = quadraticAt(p1[1], cp1[1], p2[1], t); // Tangent\n\n var tx = quadraticDerivativeAt(p1[0], cp1[0], p2[0], t);\n var ty = quadraticDerivativeAt(p1[1], cp1[1], p2[1], t);\n symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; // enable continuity trail for 'line', 'rect', 'roundRect' symbolType\n\n if (this._symbolType === 'line' || this._symbolType === 'rect' || this._symbolType === 'roundRect') {\n if (symbol.__lastT !== undefined && symbol.__lastT < symbol.__t) {\n var scaleY = vec2.dist(lastPos, pos) * 1.05;\n symbol.attr('scale', [symbol.scale[0], scaleY]); // make sure the last segment render within endPoint\n\n if (t === 1) {\n pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2;\n pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2;\n }\n } else if (symbol.__lastT === 1) {\n // After first loop, symbol.__t does NOT start with 0, so connect p1 to pos directly.\n var scaleY = 2 * vec2.dist(p1, pos);\n symbol.attr('scale', [symbol.scale[0], scaleY]);\n } else {\n symbol.attr('scale', this._symbolScale);\n }\n }\n\n symbol.__lastT = symbol.__t;\n symbol.ignore = false;\n};\n\neffectLineProto.updateLayout = function (lineData, idx) {\n this.childAt(0).updateLayout(lineData, idx);\n var effectModel = lineData.getItemModel(idx).getModel('effect');\n\n this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\nzrUtil.inherits(EffectLine, graphic.Group);\nvar _default = EffectLine;\nmodule.exports = _default;","// Myers' Diff Algorithm\n// Modified from https://github.com/kpdecker/jsdiff/blob/master/src/diff/base.js\nfunction Diff() {}\n\nDiff.prototype = {\n diff: function (oldArr, newArr, equals) {\n if (!equals) {\n equals = function (a, b) {\n return a === b;\n };\n }\n\n this.equals = equals;\n var self = this;\n oldArr = oldArr.slice();\n newArr = newArr.slice(); // Allow subclasses to massage the input prior to running\n\n var newLen = newArr.length;\n var oldLen = oldArr.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n var bestPath = [{\n newPos: -1,\n components: []\n }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n var oldPos = this.extractCommon(bestPath[0], newArr, oldArr, 0);\n\n if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n var indices = [];\n\n for (var i = 0; i < newArr.length; i++) {\n indices.push(i);\n } // Identity per the equality and tokenizer\n\n\n return [{\n indices: indices,\n count: newArr.length\n }];\n } // Main worker method. checks all permutations of a given edit length for acceptance.\n\n\n function execEditLength() {\n for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n var basePath;\n var addPath = bestPath[diagonalPath - 1];\n var removePath = bestPath[diagonalPath + 1];\n var oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\n\n if (addPath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n\n var canAdd = addPath && addPath.newPos + 1 < newLen;\n var canRemove = removePath && 0 <= oldPos && oldPos < oldLen;\n\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n } // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the new string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n\n\n if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n basePath = clonePath(removePath);\n self.pushComponent(basePath.components, undefined, true);\n } else {\n basePath = addPath; // No need to clone, we've pulled it from the list\n\n basePath.newPos++;\n self.pushComponent(basePath.components, true, undefined);\n }\n\n oldPos = self.extractCommon(basePath, newArr, oldArr, diagonalPath); // If we have hit the end of both strings, then we are done\n\n if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n return buildValues(self, basePath.components, newArr, oldArr);\n } else {\n // Otherwise track this path as a potential candidate and continue.\n bestPath[diagonalPath] = basePath;\n }\n }\n\n editLength++;\n }\n\n while (editLength <= maxEditLength) {\n var ret = execEditLength();\n\n if (ret) {\n return ret;\n }\n }\n },\n pushComponent: function (components, added, removed) {\n var last = components[components.length - 1];\n\n if (last && last.added === added && last.removed === removed) {\n // We need to clone here as the component clone operation is just\n // as shallow array clone\n components[components.length - 1] = {\n count: last.count + 1,\n added: added,\n removed: removed\n };\n } else {\n components.push({\n count: 1,\n added: added,\n removed: removed\n });\n }\n },\n extractCommon: function (basePath, newArr, oldArr, diagonalPath) {\n var newLen = newArr.length;\n var oldLen = oldArr.length;\n var newPos = basePath.newPos;\n var oldPos = newPos - diagonalPath;\n var commonCount = 0;\n\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newArr[newPos + 1], oldArr[oldPos + 1])) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n\n if (commonCount) {\n basePath.components.push({\n count: commonCount\n });\n }\n\n basePath.newPos = newPos;\n return oldPos;\n },\n tokenize: function (value) {\n return value.slice();\n },\n join: function (value) {\n return value.slice();\n }\n};\n\nfunction buildValues(diff, components, newArr, oldArr) {\n var componentPos = 0;\n var componentLen = components.length;\n var newPos = 0;\n var oldPos = 0;\n\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n\n if (!component.removed) {\n var indices = [];\n\n for (var i = newPos; i < newPos + component.count; i++) {\n indices.push(i);\n }\n\n component.indices = indices;\n newPos += component.count; // Common case\n\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n var indices = [];\n\n for (var i = oldPos; i < oldPos + component.count; i++) {\n indices.push(i);\n }\n\n component.indices = indices;\n oldPos += component.count;\n }\n }\n\n return components;\n}\n\nfunction clonePath(path) {\n return {\n newPos: path.newPos,\n components: path.components.slice(0)\n };\n}\n\nvar arrayDiff = new Diff();\n\nfunction _default(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\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*/\nvar KEY_DELIMITER = '-->';\n/**\n * params handler\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {*}\n */\n\nvar getAutoCurvenessParams = function (seriesModel) {\n return seriesModel.get('autoCurveness') || null;\n};\n/**\n * Generate a list of edge curvatures, 20 is the default\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} appendLength\n * @return 20 => [0, -0.2, 0.2, -0.4, 0.4, -0.6, 0.6, -0.8, 0.8, -1, 1, -1.2, 1.2, -1.4, 1.4, -1.6, 1.6, -1.8, 1.8, -2]\n */\n\n\nvar createCurveness = function (seriesModel, appendLength) {\n var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);\n var length = 20;\n var curvenessList = []; // handler the function set\n\n if (typeof autoCurvenessParmas === 'number') {\n length = autoCurvenessParmas;\n } else if (zrUtil.isArray(autoCurvenessParmas)) {\n seriesModel.__curvenessList = autoCurvenessParmas;\n return;\n } // append length\n\n\n if (appendLength > length) {\n length = appendLength;\n } // make sure the length is even\n\n\n var len = length % 2 ? length + 2 : length + 3;\n curvenessList = [];\n\n for (var i = 0; i < len; i++) {\n curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));\n }\n\n seriesModel.__curvenessList = curvenessList;\n};\n/**\n * Create different cache key data in the positive and negative directions, in order to set the curvature later\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {string} key\n */\n\n\nvar getKeyOfEdges = function (n1, n2, seriesModel) {\n var source = [n1.id, n1.dataIndex].join('.');\n var target = [n2.id, n2.dataIndex].join('.');\n return [seriesModel.uid, source, target].join(KEY_DELIMITER);\n};\n/**\n * get opposite key\n * @param {string} key\n * @returns {string}\n */\n\n\nvar getOppositeKey = function (key) {\n var keys = key.split(KEY_DELIMITER);\n return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);\n};\n/**\n * get edgeMap with key\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nvar getEdgeFromMap = function (edge, seriesModel) {\n var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n return seriesModel.__edgeMap[key];\n};\n/**\n * calculate all cases total length\n * @param edge\n * @param seriesModel\n * @returns {number}\n */\n\n\nvar getTotalLengthBetweenNodes = function (edge, seriesModel) {\n var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);\n var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);\n return len + lenV;\n};\n/**\n *\n * @param key\n */\n\n\nvar getEdgeMapLengthWithKey = function (key, seriesModel) {\n var edgeMap = seriesModel.__edgeMap;\n return edgeMap[key] ? edgeMap[key].length : 0;\n};\n/**\n * Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge\n * @see /graph/GraphSeries.js@getInitialData\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nfunction initCurvenessList(seriesModel) {\n if (!getAutoCurvenessParams(seriesModel)) {\n return;\n }\n\n seriesModel.__curvenessList = [];\n seriesModel.__edgeMap = {}; // calc the array of curveness List\n\n createCurveness(seriesModel);\n}\n/**\n * set edgeMap with key\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} index\n */\n\n\nfunction createEdgeMapForCurveness(n1, n2, seriesModel, index) {\n if (!getAutoCurvenessParams(seriesModel)) {\n return;\n }\n\n var key = getKeyOfEdges(n1, n2, seriesModel);\n var edgeMap = seriesModel.__edgeMap;\n var oppositeEdges = edgeMap[getOppositeKey(key)]; // set direction\n\n if (edgeMap[key] && !oppositeEdges) {\n edgeMap[key].isForward = true;\n } else if (oppositeEdges && edgeMap[key]) {\n oppositeEdges.isForward = true;\n edgeMap[key].isForward = false;\n }\n\n edgeMap[key] = edgeMap[key] || [];\n edgeMap[key].push(index);\n}\n/**\n * get curvature for edge\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param index\n */\n\n\nfunction getCurvenessForEdge(edge, seriesModel, index, needReverse) {\n var autoCurvenessParams = getAutoCurvenessParams(seriesModel);\n var isArrayParam = zrUtil.isArray(autoCurvenessParams);\n\n if (!autoCurvenessParams) {\n return null;\n }\n\n var edgeArray = getEdgeFromMap(edge, seriesModel);\n\n if (!edgeArray) {\n return null;\n }\n\n var edgeIndex = -1;\n\n for (var i = 0; i < edgeArray.length; i++) {\n if (edgeArray[i] === index) {\n edgeIndex = i;\n break;\n }\n } // if totalLen is Longer createCurveness\n\n\n var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);\n createCurveness(seriesModel, totalLen);\n edge.lineStyle = edge.lineStyle || {}; // if is opposite edge, must set curvenss to opposite number\n\n var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n var curvenessList = seriesModel.__curvenessList; // if pass array no need parity\n\n var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;\n\n if (!edgeArray.isForward) {\n // the opposite edge show outside\n var oppositeKey = getOppositeKey(curKey);\n var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);\n var resValue = curvenessList[edgeIndex + len + parityCorrection]; // isNeedReverse, simple, force type need reverse the curveness in the junction of the forword and the opposite\n\n if (needReverse) {\n // set as array may make the parity handle with the len of opposite\n if (isArrayParam) {\n if (autoCurvenessParams && autoCurvenessParams[0] === 0) {\n return (len + parityCorrection) % 2 ? resValue : -resValue;\n } else {\n return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;\n }\n } else {\n return (len + parityCorrection) % 2 ? resValue : -resValue;\n }\n } else {\n return curvenessList[edgeIndex + len + parityCorrection];\n }\n } else {\n return curvenessList[parityCorrection + edgeIndex];\n }\n}\n\nexports.initCurvenessList = initCurvenessList;\nexports.createEdgeMapForCurveness = createEdgeMapForCurveness;\nexports.getCurvenessForEdge = getCurvenessForEdge;","\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 RoamController = require(\"./RoamController\");\n\nvar roamHelper = require(\"../../component/helper/roamHelper\");\n\nvar _cursorHelper = require(\"../../component/helper/cursorHelper\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar geoSourceManager = require(\"../../coord/geo/geoSourceManager\");\n\nvar _component = require(\"../../util/component\");\n\nvar getUID = _component.getUID;\n\nvar Transformable = require(\"zrender/lib/mixin/Transformable\");\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 getFixedItemStyle(model) {\n var itemStyle = model.getItemStyle();\n var areaColor = model.get('areaColor'); // If user want the color not to be changed when hover,\n // they should both set areaColor and color to be null.\n\n if (areaColor != null) {\n itemStyle.fill = areaColor;\n }\n\n return itemStyle;\n}\n\nfunction updateMapSelectHandler(mapDraw, mapOrGeoModel, regionsGroup, api, fromView) {\n regionsGroup.off('click');\n regionsGroup.off('mousedown');\n\n if (mapOrGeoModel.get('selectedMode')) {\n regionsGroup.on('mousedown', function () {\n mapDraw._mouseDownFlag = true;\n });\n regionsGroup.on('click', function (e) {\n if (!mapDraw._mouseDownFlag) {\n return;\n }\n\n mapDraw._mouseDownFlag = false;\n var el = e.target;\n\n while (!el.__regions) {\n el = el.parent;\n }\n\n if (!el) {\n return;\n }\n\n var action = {\n type: (mapOrGeoModel.mainType === 'geo' ? 'geo' : 'map') + 'ToggleSelect',\n batch: zrUtil.map(el.__regions, function (region) {\n return {\n name: region.name,\n from: fromView.uid\n };\n })\n };\n action[mapOrGeoModel.mainType + 'Id'] = mapOrGeoModel.id;\n api.dispatchAction(action);\n updateMapSelected(mapOrGeoModel, regionsGroup);\n });\n }\n}\n\nfunction updateMapSelected(mapOrGeoModel, regionsGroup) {\n // FIXME\n regionsGroup.eachChild(function (otherRegionEl) {\n zrUtil.each(otherRegionEl.__regions, function (region) {\n otherRegionEl.trigger(mapOrGeoModel.isSelected(region.name) ? 'emphasis' : 'normal');\n });\n });\n}\n/**\n * @alias module:echarts/component/helper/MapDraw\n * @param {module:echarts/ExtensionAPI} api\n * @param {boolean} updateGroup\n */\n\n\nfunction MapDraw(api, updateGroup) {\n var group = new graphic.Group();\n /**\n * @type {string}\n * @private\n */\n\n this.uid = getUID('ec_map_draw');\n /**\n * @type {module:echarts/component/helper/RoamController}\n * @private\n */\n\n this._controller = new RoamController(api.getZr());\n /**\n * @type {Object} {target, zoom, zoomLimit}\n * @private\n */\n\n this._controllerHost = {\n target: updateGroup ? group : null\n };\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n\n this.group = group;\n /**\n * @type {boolean}\n * @private\n */\n\n this._updateGroup = updateGroup;\n /**\n * This flag is used to make sure that only one among\n * `pan`, `zoom`, `click` can occurs, otherwise 'selected'\n * action may be triggered when `pan`, which is unexpected.\n * @type {booelan}\n */\n\n this._mouseDownFlag;\n /**\n * @type {string}\n */\n\n this._mapName;\n /**\n * @type {boolean}\n */\n\n this._initialized;\n /**\n * @type {module:zrender/container/Group}\n */\n\n group.add(this._regionsGroup = new graphic.Group());\n /**\n * @type {module:zrender/container/Group}\n */\n\n group.add(this._backgroundGroup = new graphic.Group());\n}\n\nMapDraw.prototype = {\n constructor: MapDraw,\n draw: function (mapOrGeoModel, ecModel, api, fromView, payload) {\n var isGeo = mapOrGeoModel.mainType === 'geo'; // Map series has data. GEO model that controlled by map series\n // will be assigned with map data. Other GEO model has no data.\n\n var data = mapOrGeoModel.getData && mapOrGeoModel.getData();\n isGeo && ecModel.eachComponent({\n mainType: 'series',\n subType: 'map'\n }, function (mapSeries) {\n if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) {\n data = mapSeries.getData();\n }\n });\n var geo = mapOrGeoModel.coordinateSystem;\n\n this._updateBackground(geo);\n\n var regionsGroup = this._regionsGroup;\n var group = this.group;\n var transformInfo = geo.getTransformInfo(); // No animation when first draw or in action\n\n var isFirstDraw = !regionsGroup.childAt(0) || payload;\n var targetScale;\n\n if (isFirstDraw) {\n group.transform = transformInfo.roamTransform;\n group.decomposeTransform();\n group.dirty();\n } else {\n var target = new Transformable();\n target.transform = transformInfo.roamTransform;\n target.decomposeTransform();\n var props = {\n scale: target.scale,\n position: target.position\n };\n targetScale = target.scale;\n graphic.updateProps(group, props, mapOrGeoModel);\n }\n\n var scale = transformInfo.rawScale;\n var position = transformInfo.rawPosition;\n regionsGroup.removeAll();\n var itemStyleAccessPath = ['itemStyle'];\n var hoverItemStyleAccessPath = ['emphasis', 'itemStyle'];\n var labelAccessPath = ['label'];\n var hoverLabelAccessPath = ['emphasis', 'label'];\n var nameMap = zrUtil.createHashMap();\n zrUtil.each(geo.regions, function (region) {\n // Consider in GeoJson properties.name may be duplicated, for example,\n // there is multiple region named \"United Kindom\" or \"France\" (so many\n // colonies). And it is not appropriate to merge them in geo, which\n // will make them share the same label and bring trouble in label\n // location calculation.\n var regionGroup = nameMap.get(region.name) || nameMap.set(region.name, new graphic.Group());\n var compoundPath = new graphic.CompoundPath({\n segmentIgnoreThreshold: 1,\n shape: {\n paths: []\n }\n });\n regionGroup.add(compoundPath);\n var regionModel = mapOrGeoModel.getRegionModel(region.name) || mapOrGeoModel;\n var itemStyleModel = regionModel.getModel(itemStyleAccessPath);\n var hoverItemStyleModel = regionModel.getModel(hoverItemStyleAccessPath);\n var itemStyle = getFixedItemStyle(itemStyleModel);\n var hoverItemStyle = getFixedItemStyle(hoverItemStyleModel);\n var labelModel = regionModel.getModel(labelAccessPath);\n var hoverLabelModel = regionModel.getModel(hoverLabelAccessPath);\n var dataIdx; // Use the itemStyle in data if has data\n\n if (data) {\n dataIdx = data.indexOfName(region.name); // Only visual color of each item will be used. It can be encoded by dataRange\n // But visual color of series is used in symbol drawing\n //\n // Visual color for each series is for the symbol draw\n\n var visualColor = data.getItemVisual(dataIdx, 'color', true);\n\n if (visualColor) {\n itemStyle.fill = visualColor;\n }\n }\n\n var transformPoint = function (point) {\n return [point[0] * scale[0] + position[0], point[1] * scale[1] + position[1]];\n };\n\n zrUtil.each(region.geometries, function (geometry) {\n if (geometry.type !== 'polygon') {\n return;\n }\n\n var points = [];\n\n for (var i = 0; i < geometry.exterior.length; ++i) {\n points.push(transformPoint(geometry.exterior[i]));\n }\n\n compoundPath.shape.paths.push(new graphic.Polygon({\n segmentIgnoreThreshold: 1,\n shape: {\n points: points\n }\n }));\n\n for (var i = 0; i < (geometry.interiors ? geometry.interiors.length : 0); ++i) {\n var interior = geometry.interiors[i];\n var points = [];\n\n for (var j = 0; j < interior.length; ++j) {\n points.push(transformPoint(interior[j]));\n }\n\n compoundPath.shape.paths.push(new graphic.Polygon({\n segmentIgnoreThreshold: 1,\n shape: {\n points: points\n }\n }));\n }\n });\n compoundPath.setStyle(itemStyle);\n compoundPath.style.strokeNoScale = true;\n compoundPath.culling = true; // Label\n\n var showLabel = labelModel.get('show');\n var hoverShowLabel = hoverLabelModel.get('show');\n var isDataNaN = data && isNaN(data.get(data.mapDimension('value'), dataIdx));\n var itemLayout = data && data.getItemLayout(dataIdx); // In the following cases label will be drawn\n // 1. In map series and data value is NaN\n // 2. In geo component\n // 4. Region has no series legendSymbol, which will be add a showLabel flag in mapSymbolLayout\n\n if (isGeo || isDataNaN && (showLabel || hoverShowLabel) || itemLayout && itemLayout.showLabel) {\n var query = !isGeo ? dataIdx : region.name;\n var labelFetcher; // Consider dataIdx not found.\n\n if (!data || dataIdx >= 0) {\n labelFetcher = mapOrGeoModel;\n }\n\n var textEl = new graphic.Text({\n position: transformPoint(region.center.slice()),\n // FIXME\n // label rotation is not support yet in geo or regions of series-map\n // that has no data. The rotation will be effected by this `scale`.\n // So needed to change to RectText?\n scale: [1 / group.scale[0], 1 / group.scale[1]],\n z2: 10,\n silent: true\n });\n graphic.setLabelStyle(textEl.style, textEl.hoverStyle = {}, labelModel, hoverLabelModel, {\n labelFetcher: labelFetcher,\n labelDataIndex: query,\n defaultText: region.name,\n useInsideStyle: false\n }, {\n textAlign: 'center',\n textVerticalAlign: 'middle'\n });\n\n if (!isFirstDraw) {\n // Text animation\n var textScale = [1 / targetScale[0], 1 / targetScale[1]];\n graphic.updateProps(textEl, {\n scale: textScale\n }, mapOrGeoModel);\n }\n\n regionGroup.add(textEl);\n } // setItemGraphicEl, setHoverStyle after all polygons and labels\n // are added to the rigionGroup\n\n\n if (data) {\n data.setItemGraphicEl(dataIdx, regionGroup);\n } else {\n var regionModel = mapOrGeoModel.getRegionModel(region.name); // Package custom mouse event for geo component\n\n compoundPath.eventData = {\n componentType: 'geo',\n componentIndex: mapOrGeoModel.componentIndex,\n geoIndex: mapOrGeoModel.componentIndex,\n name: region.name,\n region: regionModel && regionModel.option || {}\n };\n }\n\n var groupRegions = regionGroup.__regions || (regionGroup.__regions = []);\n groupRegions.push(region);\n regionGroup.highDownSilentOnTouch = !!mapOrGeoModel.get('selectedMode');\n graphic.setHoverStyle(regionGroup, hoverItemStyle);\n regionsGroup.add(regionGroup);\n });\n\n this._updateController(mapOrGeoModel, ecModel, api);\n\n updateMapSelectHandler(this, mapOrGeoModel, regionsGroup, api, fromView);\n updateMapSelected(mapOrGeoModel, regionsGroup);\n },\n remove: function () {\n this._regionsGroup.removeAll();\n\n this._backgroundGroup.removeAll();\n\n this._controller.dispose();\n\n this._mapName && geoSourceManager.removeGraphic(this._mapName, this.uid);\n this._mapName = null;\n this._controllerHost = {};\n },\n _updateBackground: function (geo) {\n var mapName = geo.map;\n\n if (this._mapName !== mapName) {\n zrUtil.each(geoSourceManager.makeGraphic(mapName, this.uid), function (root) {\n this._backgroundGroup.add(root);\n }, this);\n }\n\n this._mapName = mapName;\n },\n _updateController: function (mapOrGeoModel, ecModel, api) {\n var geo = mapOrGeoModel.coordinateSystem;\n var controller = this._controller;\n var controllerHost = this._controllerHost;\n controllerHost.zoomLimit = mapOrGeoModel.get('scaleLimit');\n controllerHost.zoom = geo.getZoom(); // roamType is will be set default true if it is null\n\n controller.enable(mapOrGeoModel.get('roam') || false);\n var mainType = mapOrGeoModel.mainType;\n\n function makeActionBase() {\n var action = {\n type: 'geoRoam',\n componentType: mainType\n };\n action[mainType + 'Id'] = mapOrGeoModel.id;\n return action;\n }\n\n controller.off('pan').on('pan', function (e) {\n this._mouseDownFlag = false;\n roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n api.dispatchAction(zrUtil.extend(makeActionBase(), {\n dx: e.dx,\n dy: e.dy\n }));\n }, this);\n controller.off('zoom').on('zoom', function (e) {\n this._mouseDownFlag = false;\n roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n api.dispatchAction(zrUtil.extend(makeActionBase(), {\n zoom: e.scale,\n originX: e.originX,\n originY: e.originY\n }));\n\n if (this._updateGroup) {\n var scale = this.group.scale;\n\n this._regionsGroup.traverse(function (el) {\n if (el.type === 'text') {\n el.attr('scale', [1 / scale[0], 1 / scale[1]]);\n }\n });\n }\n }, this);\n controller.setPointerChecker(function (e, x, y) {\n return geo.getViewRectAfterRoam().contain(x, y) && !onIrrelevantElement(e, api, mapOrGeoModel);\n });\n }\n};\nvar _default = MapDraw;\nmodule.exports = _default;","import { logger, metrics } from './slardar-utils'\n\nconst handleError = (\n err: Error,\n config?: {\n req?: any\n level?: 'warn' | 'info' | 'log' | 'error'\n }\n) => {\n const { req, level = 'error' } = config || {}\n if (req?.metrics?.emitCounter && req.logger) {\n req.metrics.emitCounter('catch.error', 1, undefined, {\n errorType: err?.name || 'unknown',\n })\n req.logger[level](`[catch error] catched error. err = ${err?.stack}`)\n } else {\n metrics.counter('catch.error', {\n errorType: err?.name || 'unknown',\n })\n logger[level](`[catch error] catched error. err = ${err?.stack}`)\n }\n}\n\nexport default handleError\n","import fetch from 'lib/decorated-fetch'\nimport handleError from './error-handle'\nimport getUrl from './url'\nconst getCarIds = async (seriesId: string, req?: any) => {\n let seriesCarIds = ''\n\n try {\n const json = await fetch(\n getUrl(`/motor/m_api/pc_get_series_car_ids?series_id=${seriesId}`),\n { req }\n )\n try {\n seriesCarIds = json.data?.car_ids\n } catch (err) {\n handleError(err, { req })\n }\n } catch (err) {\n // no-op\n }\n\n return seriesCarIds\n}\n\nexport default getCarIds\n","var matrix = require(\"../core/matrix\");\n\nvar vector = require(\"../core/vector\");\n\n/**\n * 提供变换扩展\n * @module zrender/mixin/Transformable\n * @author pissang (https://www.github.com/pissang)\n */\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n/**\n * @alias module:zrender/mixin/Transformable\n * @constructor\n */\n\n\nvar Transformable = function (opts) {\n opts = opts || {}; // If there are no given position, rotation, scale\n\n if (!opts.position) {\n /**\n * 平移\n * @type {Array.}\n * @default [0, 0]\n */\n this.position = [0, 0];\n }\n\n if (opts.rotation == null) {\n /**\n * 旋转\n * @type {Array.}\n * @default 0\n */\n this.rotation = 0;\n }\n\n if (!opts.scale) {\n /**\n * 缩放\n * @type {Array.}\n * @default [1, 1]\n */\n this.scale = [1, 1];\n }\n /**\n * 旋转和缩放的原点\n * @type {Array.}\n * @default null\n */\n\n\n this.origin = this.origin || null;\n};\n\nvar transformableProto = Transformable.prototype;\ntransformableProto.transform = null;\n/**\n * 判断是否需要有坐标变换\n * 如果有坐标变换, 则从position, rotation, scale以及父节点的transform计算出自身的transform矩阵\n */\n\ntransformableProto.needLocalTransform = function () {\n return isNotAroundZero(this.rotation) || isNotAroundZero(this.position[0]) || isNotAroundZero(this.position[1]) || isNotAroundZero(this.scale[0] - 1) || isNotAroundZero(this.scale[1] - 1);\n};\n\nvar scaleTmp = [];\n\ntransformableProto.updateTransform = function () {\n var parent = this.parent;\n var parentHasTransform = parent && parent.transform;\n var needLocalTransform = this.needLocalTransform();\n var m = this.transform;\n\n if (!(needLocalTransform || parentHasTransform)) {\n m && mIdentity(m);\n return;\n }\n\n m = m || matrix.create();\n\n if (needLocalTransform) {\n this.getLocalTransform(m);\n } else {\n mIdentity(m);\n } // 应用父节点变换\n\n\n if (parentHasTransform) {\n if (needLocalTransform) {\n matrix.mul(m, parent.transform, m);\n } else {\n matrix.copy(m, parent.transform);\n }\n } // 保存这个变换矩阵\n\n\n this.transform = m;\n var globalScaleRatio = this.globalScaleRatio;\n\n if (globalScaleRatio != null && globalScaleRatio !== 1) {\n this.getGlobalScale(scaleTmp);\n var relX = scaleTmp[0] < 0 ? -1 : 1;\n var relY = scaleTmp[1] < 0 ? -1 : 1;\n var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n m[0] *= sx;\n m[1] *= sx;\n m[2] *= sy;\n m[3] *= sy;\n }\n\n this.invTransform = this.invTransform || matrix.create();\n matrix.invert(this.invTransform, m);\n};\n\ntransformableProto.getLocalTransform = function (m) {\n return Transformable.getLocalTransform(this, m);\n};\n/**\n * 将自己的transform应用到context上\n * @param {CanvasRenderingContext2D} ctx\n */\n\n\ntransformableProto.setTransform = function (ctx) {\n var m = this.transform;\n var dpr = ctx.dpr || 1;\n\n if (m) {\n ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n } else {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n};\n\ntransformableProto.restoreTransform = function (ctx) {\n var dpr = ctx.dpr || 1;\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n};\n\nvar tmpTransform = [];\nvar originTransform = matrix.create();\n\ntransformableProto.setLocalTransform = function (m) {\n if (!m) {\n // TODO return or set identity?\n return;\n }\n\n var sx = m[0] * m[0] + m[1] * m[1];\n var sy = m[2] * m[2] + m[3] * m[3];\n var position = this.position;\n var scale = this.scale;\n\n if (isNotAroundZero(sx - 1)) {\n sx = Math.sqrt(sx);\n }\n\n if (isNotAroundZero(sy - 1)) {\n sy = Math.sqrt(sy);\n }\n\n if (m[0] < 0) {\n sx = -sx;\n }\n\n if (m[3] < 0) {\n sy = -sy;\n }\n\n position[0] = m[4];\n position[1] = m[5];\n scale[0] = sx;\n scale[1] = sy;\n this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\n};\n/**\n * 分解`transform`矩阵到`position`, `rotation`, `scale`\n */\n\n\ntransformableProto.decomposeTransform = function () {\n if (!this.transform) {\n return;\n }\n\n var parent = this.parent;\n var m = this.transform;\n\n if (parent && parent.transform) {\n // Get local transform and decompose them to position, scale, rotation\n matrix.mul(tmpTransform, parent.invTransform, m);\n m = tmpTransform;\n }\n\n var origin = this.origin;\n\n if (origin && (origin[0] || origin[1])) {\n originTransform[4] = origin[0];\n originTransform[5] = origin[1];\n matrix.mul(tmpTransform, m, originTransform);\n tmpTransform[4] -= origin[0];\n tmpTransform[5] -= origin[1];\n m = tmpTransform;\n }\n\n this.setLocalTransform(m);\n};\n/**\n * Get global scale\n * @return {Array.}\n */\n\n\ntransformableProto.getGlobalScale = function (out) {\n var m = this.transform;\n out = out || [];\n\n if (!m) {\n out[0] = 1;\n out[1] = 1;\n return out;\n }\n\n out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n\n if (m[0] < 0) {\n out[0] = -out[0];\n }\n\n if (m[3] < 0) {\n out[1] = -out[1];\n }\n\n return out;\n};\n/**\n * 变换坐标位置到 shape 的局部坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.}\n */\n\n\ntransformableProto.transformCoordToLocal = function (x, y) {\n var v2 = [x, y];\n var invTransform = this.invTransform;\n\n if (invTransform) {\n vector.applyTransform(v2, v2, invTransform);\n }\n\n return v2;\n};\n/**\n * 变换局部坐标位置到全局坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.}\n */\n\n\ntransformableProto.transformCoordToGlobal = function (x, y) {\n var v2 = [x, y];\n var transform = this.transform;\n\n if (transform) {\n vector.applyTransform(v2, v2, transform);\n }\n\n return v2;\n};\n/**\n * @static\n * @param {Object} target\n * @param {Array.} target.origin\n * @param {number} target.rotation\n * @param {Array.} target.position\n * @param {Array.} [m]\n */\n\n\nTransformable.getLocalTransform = function (target, m) {\n m = m || [];\n mIdentity(m);\n var origin = target.origin;\n var scale = target.scale || [1, 1];\n var rotation = target.rotation || 0;\n var position = target.position || [0, 0];\n\n if (origin) {\n // Translate to origin\n m[4] -= origin[0];\n m[5] -= origin[1];\n }\n\n matrix.scale(m, m, scale);\n\n if (rotation) {\n matrix.rotate(m, m, rotation);\n }\n\n if (origin) {\n // Translate back from origin\n m[4] += origin[0];\n m[5] += origin[1];\n }\n\n m[4] += position[0];\n m[5] += position[1];\n return m;\n};\n\nvar _default = Transformable;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar imageHelper = require(\"./helper/image\");\n\n/**\n * @alias zrender/graphic/Image\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nfunction ZImage(opts) {\n Displayable.call(this, opts);\n}\n\nZImage.prototype = {\n constructor: ZImage,\n type: 'image',\n brush: function (ctx, prevEl) {\n var style = this.style;\n var src = style.image; // Must bind each time\n\n style.bind(ctx, this, prevEl);\n var image = this._image = imageHelper.createOrUpdateImage(src, this._image, this, this.onload);\n\n if (!image || !imageHelper.isImageReady(image)) {\n return;\n } // 图片已经加载完成\n // if (image.nodeName.toUpperCase() == 'IMG') {\n // if (!image.complete) {\n // return;\n // }\n // }\n // Else is canvas\n\n\n var x = style.x || 0;\n var y = style.y || 0;\n var width = style.width;\n var height = style.height;\n var aspect = image.width / image.height;\n\n if (width == null && height != null) {\n // Keep image/height ratio\n width = height * aspect;\n } else if (height == null && width != null) {\n height = width / aspect;\n } else if (width == null && height == null) {\n width = image.width;\n height = image.height;\n } // 设置transform\n\n\n this.setTransform(ctx);\n\n if (style.sWidth && style.sHeight) {\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n } else if (style.sx && style.sy) {\n var sx = style.sx;\n var sy = style.sy;\n var sWidth = width - sx;\n var sHeight = height - sy;\n ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n } else {\n ctx.drawImage(image, x, y, width, height);\n } // Draw rect text\n\n\n if (style.text != null) {\n // Only restore transform when needs draw text.\n this.restoreTransform(ctx);\n this.drawRectText(ctx, this.getBoundingRect());\n }\n },\n getBoundingRect: function () {\n var style = this.style;\n\n if (!this._rect) {\n this._rect = new BoundingRect(style.x || 0, style.y || 0, style.width || 0, style.height || 0);\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(ZImage, Displayable);\nvar _default = ZImage;\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 VisualMapping = require(\"../../visual/VisualMapping\");\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, payload) {\n ecModel.eachSeriesByType('sankey', function (seriesModel) {\n var graph = seriesModel.getGraph();\n var nodes = graph.nodes;\n\n if (nodes.length) {\n var minValue = Infinity;\n var maxValue = -Infinity;\n zrUtil.each(nodes, function (node) {\n var nodeValue = node.getLayout().value;\n\n if (nodeValue < minValue) {\n minValue = nodeValue;\n }\n\n if (nodeValue > maxValue) {\n maxValue = nodeValue;\n }\n });\n zrUtil.each(nodes, function (node) {\n var mapping = new VisualMapping({\n type: 'color',\n mappingMethod: 'linear',\n dataExtent: [minValue, maxValue],\n visual: seriesModel.get('color')\n });\n var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value);\n var customColor = node.getModel().get('itemStyle.color');\n customColor != null ? node.setVisual('color', customColor) : node.setVisual('color', mapValueToColor);\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 layoutUtil = require(\"../../util/layout\");\n\nvar LegendView = require(\"./LegendView\");\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 * Separate legend and scrollable legend to reduce package size.\n */\nvar Group = graphic.Group;\nvar WH = ['width', 'height'];\nvar XY = ['x', 'y'];\nvar ScrollableLegendView = LegendView.extend({\n type: 'legend.scroll',\n newlineDisabled: true,\n init: function () {\n ScrollableLegendView.superCall(this, 'init');\n /**\n * @private\n * @type {number} For `scroll`.\n */\n\n this._currentIndex = 0;\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n this.group.add(this._containerGroup = new Group());\n\n this._containerGroup.add(this.getContentGroup());\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n\n this.group.add(this._controllerGroup = new Group());\n /**\n *\n * @private\n */\n\n this._showController;\n },\n\n /**\n * @override\n */\n resetInner: function () {\n ScrollableLegendView.superCall(this, 'resetInner');\n\n this._controllerGroup.removeAll();\n\n this._containerGroup.removeClipPath();\n\n this._containerGroup.__rectSize = null;\n },\n\n /**\n * @override\n */\n renderInner: function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n var me = this; // Render content items.\n\n ScrollableLegendView.superCall(this, 'renderInner', itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition);\n var controllerGroup = this._controllerGroup; // FIXME: support be 'auto' adapt to size number text length,\n // e.g., '3/12345' should not overlap with the control arrow button.\n\n var pageIconSize = legendModel.get('pageIconSize', true);\n\n if (!zrUtil.isArray(pageIconSize)) {\n pageIconSize = [pageIconSize, pageIconSize];\n }\n\n createPageButton('pagePrev', 0);\n var pageTextStyleModel = legendModel.getModel('pageTextStyle');\n controllerGroup.add(new graphic.Text({\n name: 'pageText',\n style: {\n textFill: pageTextStyleModel.getTextColor(),\n font: pageTextStyleModel.getFont(),\n textVerticalAlign: 'middle',\n textAlign: 'center'\n },\n silent: true\n }));\n createPageButton('pageNext', 1);\n\n function createPageButton(name, iconIdx) {\n var pageDataIndexName = name + 'DataIndex';\n var icon = graphic.createIcon(legendModel.get('pageIcons', true)[legendModel.getOrient().name][iconIdx], {\n // Buttons will be created in each render, so we do not need\n // to worry about avoiding using legendModel kept in scope.\n onclick: zrUtil.bind(me._pageGo, me, pageDataIndexName, legendModel, api)\n }, {\n x: -pageIconSize[0] / 2,\n y: -pageIconSize[1] / 2,\n width: pageIconSize[0],\n height: pageIconSize[1]\n });\n icon.name = name;\n controllerGroup.add(icon);\n }\n },\n\n /**\n * @override\n */\n layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n var selectorGroup = this.getSelectorGroup();\n var orientIdx = legendModel.getOrient().index;\n var wh = WH[orientIdx];\n var xy = XY[orientIdx];\n var hw = WH[1 - orientIdx];\n var yx = XY[1 - orientIdx];\n selector && layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n var selectorRect = selectorGroup.getBoundingRect();\n var selectorPos = [-selectorRect.x, -selectorRect.y];\n var processMaxSize = zrUtil.clone(maxSize);\n selector && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap);\n\n var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx);\n\n if (selector) {\n if (selectorPosition === 'end') {\n selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap;\n } else {\n var offset = selectorRect[wh] + selectorButtonGap;\n selectorPos[orientIdx] -= offset;\n mainRect[xy] -= offset;\n }\n\n mainRect[wh] += selectorRect[wh] + selectorButtonGap;\n selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2;\n mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]);\n mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]);\n selectorGroup.attr('position', selectorPos);\n }\n\n return mainRect;\n },\n _layoutContentAndController: function (legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx) {\n var contentGroup = this.getContentGroup();\n var containerGroup = this._containerGroup;\n var controllerGroup = this._controllerGroup; // Place items in contentGroup.\n\n layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height);\n layoutUtil.box( // Buttons in controller are layout always horizontally.\n 'horizontal', controllerGroup, legendModel.get('pageButtonItemGap', true));\n var contentRect = contentGroup.getBoundingRect();\n var controllerRect = controllerGroup.getBoundingRect();\n var showController = this._showController = contentRect[wh] > maxSize[wh];\n var contentPos = [-contentRect.x, -contentRect.y]; // Remain contentPos when scroll animation perfroming.\n // If first rendering, `contentGroup.position` is [0, 0], which\n // does not make sense and may cause unexepcted animation if adopted.\n\n if (!isFirstRender) {\n contentPos[orientIdx] = contentGroup.position[orientIdx];\n } // Layout container group based on 0.\n\n\n var containerPos = [0, 0];\n var controllerPos = [-controllerRect.x, -controllerRect.y];\n var pageButtonGap = zrUtil.retrieve2(legendModel.get('pageButtonGap', true), legendModel.get('itemGap', true)); // Place containerGroup and controllerGroup and contentGroup.\n\n if (showController) {\n var pageButtonPosition = legendModel.get('pageButtonPosition', true); // controller is on the right / bottom.\n\n if (pageButtonPosition === 'end') {\n controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh];\n } // controller is on the left / top.\n else {\n containerPos[orientIdx] += controllerRect[wh] + pageButtonGap;\n }\n } // Always align controller to content as 'middle'.\n\n\n controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2;\n contentGroup.attr('position', contentPos);\n containerGroup.attr('position', containerPos);\n controllerGroup.attr('position', controllerPos); // Calculate `mainRect` and set `clipPath`.\n // mainRect should not be calculated by `this.group.getBoundingRect()`\n // for sake of the overflow.\n\n var mainRect = {\n x: 0,\n y: 0\n }; // Consider content may be overflow (should be clipped).\n\n mainRect[wh] = showController ? maxSize[wh] : contentRect[wh];\n mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); // `containerRect[yx] + containerPos[1 - orientIdx]` is 0.\n\n mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]);\n containerGroup.__rectSize = maxSize[wh];\n\n if (showController) {\n var clipShape = {\n x: 0,\n y: 0\n };\n clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0);\n clipShape[hw] = mainRect[hw];\n containerGroup.setClipPath(new graphic.Rect({\n shape: clipShape\n })); // Consider content may be larger than container, container rect\n // can not be obtained from `containerGroup.getBoundingRect()`.\n\n containerGroup.__rectSize = clipShape[wh];\n } else {\n // Do not remove or ignore controller. Keep them set as placeholders.\n controllerGroup.eachChild(function (child) {\n child.attr({\n invisible: true,\n silent: true\n });\n });\n } // Content translate animation.\n\n\n var pageInfo = this._getPageInfo(legendModel);\n\n pageInfo.pageIndex != null && graphic.updateProps(contentGroup, {\n position: pageInfo.contentPosition\n }, // When switch from \"show controller\" to \"not show controller\", view should be\n // updated immediately without animation, otherwise causes weird effect.\n showController ? legendModel : false);\n\n this._updatePageInfoView(legendModel, pageInfo);\n\n return mainRect;\n },\n _pageGo: function (to, legendModel, api) {\n var scrollDataIndex = this._getPageInfo(legendModel)[to];\n\n scrollDataIndex != null && api.dispatchAction({\n type: 'legendScroll',\n scrollDataIndex: scrollDataIndex,\n legendId: legendModel.id\n });\n },\n _updatePageInfoView: function (legendModel, pageInfo) {\n var controllerGroup = this._controllerGroup;\n zrUtil.each(['pagePrev', 'pageNext'], function (name) {\n var canJump = pageInfo[name + 'DataIndex'] != null;\n var icon = controllerGroup.childOfName(name);\n\n if (icon) {\n icon.setStyle('fill', canJump ? legendModel.get('pageIconColor', true) : legendModel.get('pageIconInactiveColor', true));\n icon.cursor = canJump ? 'pointer' : 'default';\n }\n });\n var pageText = controllerGroup.childOfName('pageText');\n var pageFormatter = legendModel.get('pageFormatter');\n var pageIndex = pageInfo.pageIndex;\n var current = pageIndex != null ? pageIndex + 1 : 0;\n var total = pageInfo.pageCount;\n pageText && pageFormatter && pageText.setStyle('text', zrUtil.isString(pageFormatter) ? pageFormatter.replace('{current}', current).replace('{total}', total) : pageFormatter({\n current: current,\n total: total\n }));\n },\n\n /**\n * @param {module:echarts/model/Model} legendModel\n * @return {Object} {\n * contentPosition: Array., null when data item not found.\n * pageIndex: number, null when data item not found.\n * pageCount: number, always be a number, can be 0.\n * pagePrevDataIndex: number, null when no previous page.\n * pageNextDataIndex: number, null when no next page.\n * }\n */\n _getPageInfo: function (legendModel) {\n var scrollDataIndex = legendModel.get('scrollDataIndex', true);\n var contentGroup = this.getContentGroup();\n var containerRectSize = this._containerGroup.__rectSize;\n var orientIdx = legendModel.getOrient().index;\n var wh = WH[orientIdx];\n var xy = XY[orientIdx];\n\n var targetItemIndex = this._findTargetItemIndex(scrollDataIndex);\n\n var children = contentGroup.children();\n var targetItem = children[targetItemIndex];\n var itemCount = children.length;\n var pCount = !itemCount ? 0 : 1;\n var result = {\n contentPosition: contentGroup.position.slice(),\n pageCount: pCount,\n pageIndex: pCount - 1,\n pagePrevDataIndex: null,\n pageNextDataIndex: null\n };\n\n if (!targetItem) {\n return result;\n }\n\n var targetItemInfo = getItemInfo(targetItem);\n result.contentPosition[orientIdx] = -targetItemInfo.s; // Strategy:\n // (1) Always align based on the left/top most item.\n // (2) It is user-friendly that the last item shown in the\n // current window is shown at the begining of next window.\n // Otherwise if half of the last item is cut by the window,\n // it will have no chance to display entirely.\n // (3) Consider that item size probably be different, we\n // have calculate pageIndex by size rather than item index,\n // and we can not get page index directly by division.\n // (4) The window is to narrow to contain more than\n // one item, we should make sure that the page can be fliped.\n\n for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) {\n currItemInfo = getItemInfo(children[i]);\n\n if ( // Half of the last item is out of the window.\n !currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize || // If the current item does not intersect with the window, the new page\n // can be started at the current item or the last item.\n currItemInfo && !intersect(currItemInfo, winStartItemInfo.s)) {\n if (winEndItemInfo.i > winStartItemInfo.i) {\n winStartItemInfo = winEndItemInfo;\n } else {\n // e.g., when page size is smaller than item size.\n winStartItemInfo = currItemInfo;\n }\n\n if (winStartItemInfo) {\n if (result.pageNextDataIndex == null) {\n result.pageNextDataIndex = winStartItemInfo.i;\n }\n\n ++result.pageCount;\n }\n }\n\n winEndItemInfo = currItemInfo;\n }\n\n for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) {\n currItemInfo = getItemInfo(children[i]);\n\n if ( // If the the end item does not intersect with the window started\n // from the current item, a page can be settled.\n (!currItemInfo || !intersect(winEndItemInfo, currItemInfo.s)) && // e.g., when page size is smaller than item size.\n winStartItemInfo.i < winEndItemInfo.i) {\n winEndItemInfo = winStartItemInfo;\n\n if (result.pagePrevDataIndex == null) {\n result.pagePrevDataIndex = winStartItemInfo.i;\n }\n\n ++result.pageCount;\n ++result.pageIndex;\n }\n\n winStartItemInfo = currItemInfo;\n }\n\n return result;\n\n function getItemInfo(el) {\n if (el) {\n var itemRect = el.getBoundingRect();\n var start = itemRect[xy] + el.position[orientIdx];\n return {\n s: start,\n e: start + itemRect[wh],\n i: el.__legendDataIndex\n };\n }\n }\n\n function intersect(itemInfo, winStart) {\n return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize;\n }\n },\n _findTargetItemIndex: function (targetDataIndex) {\n if (!this._showController) {\n return 0;\n }\n\n var index;\n var contentGroup = this.getContentGroup();\n var defaultIndex;\n contentGroup.eachChild(function (child, idx) {\n var legendDataIdx = child.__legendDataIndex; // FIXME\n // If the given targetDataIndex (from model) is illegal,\n // we use defaultIndex. But the index on the legend model and\n // action payload is still illegal. That case will not be\n // changed until some scenario requires.\n\n if (defaultIndex == null && legendDataIdx != null) {\n defaultIndex = idx;\n }\n\n if (legendDataIdx === targetDataIndex) {\n index = idx;\n }\n });\n return index != null ? index : defaultIndex;\n }\n});\nvar _default = ScrollableLegendView;\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 BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar selector = require(\"./selector\");\n\nvar throttleUtil = require(\"../../util/throttle\");\n\nvar BrushTargetManager = require(\"../helper/BrushTargetManager\");\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 STATE_LIST = ['inBrush', 'outOfBrush'];\nvar DISPATCH_METHOD = '__ecBrushSelect';\nvar DISPATCH_FLAG = '__ecInBrushSelectEvent';\nvar PRIORITY_BRUSH = echarts.PRIORITY.VISUAL.BRUSH;\n/**\n * Layout for visual, the priority higher than other layout, and before brush visual.\n */\n\necharts.registerLayout(PRIORITY_BRUSH, function (ecModel, api, payload) {\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel) {\n payload && payload.type === 'takeGlobalCursor' && brushModel.setBrushOption(payload.key === 'brush' ? payload.brushOption : {\n brushType: false\n });\n });\n layoutCovers(ecModel);\n});\n\nfunction layoutCovers(ecModel) {\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel) {\n var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel);\n brushTargetManager.setInputRanges(brushModel.areas, ecModel);\n });\n}\n/**\n * Register the visual encoding if this modules required.\n */\n\n\necharts.registerVisual(PRIORITY_BRUSH, function (ecModel, api, payload) {\n var brushSelected = [];\n var throttleType;\n var throttleDelay;\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel, brushIndex) {\n var thisBrushSelected = {\n brushId: brushModel.id,\n brushIndex: brushIndex,\n brushName: brushModel.name,\n areas: zrUtil.clone(brushModel.areas),\n selected: []\n }; // Every brush component exists in event params, convenient\n // for user to find by index.\n\n brushSelected.push(thisBrushSelected);\n var brushOption = brushModel.option;\n var brushLink = brushOption.brushLink;\n var linkedSeriesMap = [];\n var selectedDataIndexForLink = [];\n var rangeInfoBySeries = [];\n var hasBrushExists = 0;\n\n if (!brushIndex) {\n // Only the first throttle setting works.\n throttleType = brushOption.throttleType;\n throttleDelay = brushOption.throttleDelay;\n } // Add boundingRect and selectors to range.\n\n\n var areas = zrUtil.map(brushModel.areas, function (area) {\n return bindSelector(zrUtil.defaults({\n boundingRect: boundingRectBuilders[area.brushType](area)\n }, area));\n });\n var visualMappings = visualSolution.createVisualMappings(brushModel.option, STATE_LIST, function (mappingOption) {\n mappingOption.mappingMethod = 'fixed';\n });\n zrUtil.isArray(brushLink) && zrUtil.each(brushLink, function (seriesIndex) {\n linkedSeriesMap[seriesIndex] = 1;\n });\n\n function linkOthers(seriesIndex) {\n return brushLink === 'all' || linkedSeriesMap[seriesIndex];\n } // If no supported brush or no brush on the series,\n // all visuals should be in original state.\n\n\n function brushed(rangeInfoList) {\n return !!rangeInfoList.length;\n }\n /**\n * Logic for each series: (If the logic has to be modified one day, do it carefully!)\n *\n * ( brushed ┬ && ┬hasBrushExist ┬ && linkOthers ) => StepA: ┬record, ┬ StepB: ┬visualByRecord.\n * !brushed┘ ├hasBrushExist ┤ └nothing,┘ ├visualByRecord.\n * └!hasBrushExist┘ └nothing.\n * ( !brushed && ┬hasBrushExist ┬ && linkOthers ) => StepA: nothing, StepB: ┬visualByRecord.\n * └!hasBrushExist┘ └nothing.\n * ( brushed ┬ && !linkOthers ) => StepA: nothing, StepB: ┬visualByCheck.\n * !brushed┘ └nothing.\n * ( !brushed && !linkOthers ) => StepA: nothing, StepB: nothing.\n */\n // Step A\n\n\n ecModel.eachSeries(function (seriesModel, seriesIndex) {\n var rangeInfoList = rangeInfoBySeries[seriesIndex] = [];\n seriesModel.subType === 'parallel' ? stepAParallel(seriesModel, seriesIndex, rangeInfoList) : stepAOthers(seriesModel, seriesIndex, rangeInfoList);\n });\n\n function stepAParallel(seriesModel, seriesIndex) {\n var coordSys = seriesModel.coordinateSystem;\n hasBrushExists |= coordSys.hasAxisBrushed();\n linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function (activeState, dataIndex) {\n activeState === 'active' && (selectedDataIndexForLink[dataIndex] = 1);\n });\n }\n\n function stepAOthers(seriesModel, seriesIndex, rangeInfoList) {\n var selectorsByBrushType = getSelectorsByBrushType(seriesModel);\n\n if (!selectorsByBrushType || brushModelNotControll(brushModel, seriesIndex)) {\n return;\n }\n\n zrUtil.each(areas, function (area) {\n selectorsByBrushType[area.brushType] && brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel) && rangeInfoList.push(area);\n hasBrushExists |= brushed(rangeInfoList);\n });\n\n if (linkOthers(seriesIndex) && brushed(rangeInfoList)) {\n var data = seriesModel.getData();\n data.each(function (dataIndex) {\n if (checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex)) {\n selectedDataIndexForLink[dataIndex] = 1;\n }\n });\n }\n } // Step B\n\n\n ecModel.eachSeries(function (seriesModel, seriesIndex) {\n var seriesBrushSelected = {\n seriesId: seriesModel.id,\n seriesIndex: seriesIndex,\n seriesName: seriesModel.name,\n dataIndex: []\n }; // Every series exists in event params, convenient\n // for user to find series by seriesIndex.\n\n thisBrushSelected.selected.push(seriesBrushSelected);\n var selectorsByBrushType = getSelectorsByBrushType(seriesModel);\n var rangeInfoList = rangeInfoBySeries[seriesIndex];\n var data = seriesModel.getData();\n var getValueState = linkOthers(seriesIndex) ? function (dataIndex) {\n return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n } : function (dataIndex) {\n return checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n }; // If no supported brush or no brush, all visuals are in original state.\n\n (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && visualSolution.applyVisual(STATE_LIST, visualMappings, data, getValueState);\n });\n });\n dispatchAction(api, throttleType, throttleDelay, brushSelected, payload);\n});\n\nfunction dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) {\n // This event will not be triggered when `setOpion`, otherwise dead lock may\n // triggered when do `setOption` in event listener, which we do not find\n // satisfactory way to solve yet. Some considered resolutions:\n // (a) Diff with prevoius selected data ant only trigger event when changed.\n // But store previous data and diff precisely (i.e., not only by dataIndex, but\n // also detect value changes in selected data) might bring complexity or fragility.\n // (b) Use spectial param like `silent` to suppress event triggering.\n // But such kind of volatile param may be weird in `setOption`.\n if (!payload) {\n return;\n }\n\n var zr = api.getZr();\n\n if (zr[DISPATCH_FLAG]) {\n return;\n }\n\n if (!zr[DISPATCH_METHOD]) {\n zr[DISPATCH_METHOD] = doDispatch;\n }\n\n var fn = throttleUtil.createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType);\n fn(api, brushSelected);\n}\n\nfunction doDispatch(api, brushSelected) {\n if (!api.isDisposed()) {\n var zr = api.getZr();\n zr[DISPATCH_FLAG] = true;\n api.dispatchAction({\n type: 'brushSelect',\n batch: brushSelected\n });\n zr[DISPATCH_FLAG] = false;\n }\n}\n\nfunction checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) {\n for (var i = 0, len = rangeInfoList.length; i < len; i++) {\n var area = rangeInfoList[i];\n\n if (selectorsByBrushType[area.brushType](dataIndex, data, area.selectors, area)) {\n return true;\n }\n }\n}\n\nfunction getSelectorsByBrushType(seriesModel) {\n var brushSelector = seriesModel.brushSelector;\n\n if (zrUtil.isString(brushSelector)) {\n var sels = [];\n zrUtil.each(selector, function (selectorsByElementType, brushType) {\n sels[brushType] = function (dataIndex, data, selectors, area) {\n var itemLayout = data.getItemLayout(dataIndex);\n return selectorsByElementType[brushSelector](itemLayout, selectors, area);\n };\n });\n return sels;\n } else if (zrUtil.isFunction(brushSelector)) {\n var bSelector = {};\n zrUtil.each(selector, function (sel, brushType) {\n bSelector[brushType] = brushSelector;\n });\n return bSelector;\n }\n\n return brushSelector;\n}\n\nfunction brushModelNotControll(brushModel, seriesIndex) {\n var seriesIndices = brushModel.option.seriesIndex;\n return seriesIndices != null && seriesIndices !== 'all' && (zrUtil.isArray(seriesIndices) ? zrUtil.indexOf(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices);\n}\n\nfunction bindSelector(area) {\n var selectors = area.selectors = {};\n zrUtil.each(selector[area.brushType], function (selFn, elType) {\n // Do not use function binding or curry for performance.\n selectors[elType] = function (itemLayout) {\n return selFn(itemLayout, selectors, area);\n };\n });\n return area;\n}\n\nvar boundingRectBuilders = {\n lineX: zrUtil.noop,\n lineY: zrUtil.noop,\n rect: function (area) {\n return getBoundingRectFromMinMax(area.range);\n },\n polygon: function (area) {\n var minMax;\n var range = area.range;\n\n for (var i = 0, len = range.length; i < len; i++) {\n minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]];\n var rg = range[i];\n rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]);\n rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]);\n rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]);\n rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]);\n }\n\n return minMax && getBoundingRectFromMinMax(minMax);\n }\n};\n\nfunction getBoundingRectFromMinMax(minMax) {\n return new BoundingRect(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]);\n}\n\nexports.layoutCovers = layoutCovers;","\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(\"./effectScatter/EffectScatterSeries\");\n\nrequire(\"./effectScatter/EffectScatterView\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar layoutPoints = 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.registerVisual(visualSymbol('effectScatter', 'circle'));\necharts.registerLayout(layoutPoints('effectScatter'));","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJKADAAQAAAABAAAAJAAAAAAqDuP8AAABhklEQVRYCe2XoUsEQRSHb1UEwSBiEYOcIhYRTEZtVqMGwfPCVav/gNjEJkYFi9WgSQyCTRCLyWQwGMxyrN8LA3PHc3fO2zcu3D74sTNvZ97v4y0sM7VaFVUHInUgTdM5NBnJLtsGkAX0jb7QXvbqCG+BWEd+XDOZjmCtW2DeDSRwn2hL32Gc/QVIoCSu0JQxQmd5DLUOCYyLDwabnbsMZ5jlATmwcwYT/aAM9bNZ2btD7gWoDeVdUKpoIDGdQTdAnaLxIApvkQWQK99i8AzUmkuEPC2BxL+O7oA6RmNlABKGBO2jJ6BWJZEV1h3yvReZPAB1iEb9F/44JpD4DqMDdCkTLWIDOYa2G3Q/YwMJyBGS/5UaI2rWJvlK2d0kSR6zysfoUArACVrJgxFQ6w694dEA5F7MQsKyQ2cALPcCI8AWHXqnbhOQWzHoNYru0AUAS3+FCYbnz5p3HirVAa00R1g55G8Ht7nIhcon+/dr0CxQbVSOi6J0G5h5FPe6U+RnrmoNTAd+AAzfe7Kh3qpjAAAAAElFTkSuQmCC\"","\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 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\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 coordsOffsetMap = {\n '南海诸岛': [32, 80],\n // 全国\n '广东': [0, -10],\n '香港': [10, 5],\n '澳门': [-10, 10],\n //'北京': [-10, 0],\n '天津': [5, 5]\n};\n\nfunction _default(mapType, region) {\n if (mapType === 'china') {\n var coordFix = coordsOffsetMap[region.name];\n\n if (coordFix) {\n var cp = region.center;\n cp[0] += coordFix[0] / 10.5;\n cp[1] += -coordFix[1] / (10.5 / 0.75);\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 BaseBarSeries = require(\"./BaseBarSeries\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = BaseBarSeries.extend({\n type: 'series.bar',\n dependencies: ['grid', 'polar'],\n brushSelector: 'rect',\n\n /**\n * @override\n */\n getProgressive: function () {\n // Do not support progressive in normal mode.\n return this.get('large') ? this.get('progressive') : false;\n },\n\n /**\n * @override\n */\n getProgressiveThreshold: function () {\n // Do not support progressive in normal mode.\n var progressiveThreshold = this.get('progressiveThreshold');\n var largeThreshold = this.get('largeThreshold');\n\n if (largeThreshold > progressiveThreshold) {\n progressiveThreshold = largeThreshold;\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n // If clipped\n // Only available on cartesian2d\n clip: true,\n // If use caps on two sides of bars\n // Only available on tangential polar bar\n roundCap: false,\n showBackground: false,\n backgroundStyle: {\n color: 'rgba(180, 180, 180, 0.2)',\n borderColor: null,\n borderWidth: 0,\n borderType: 'solid',\n borderRadius: 0,\n shadowBlur: 0,\n shadowColor: null,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n opacity: 1\n }\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar 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/*\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: 1,\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 var symbolRotate = data.getItemVisual(idx, 'symbolRotate') || 0;\n symbolPath.attr({\n style: {\n strokeNoScale: true\n },\n z2: 100,\n scale: [symbolSize[0] / 2, symbolSize[1] / 2],\n rotation: symbolRotate * Math.PI / 180 || 0\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar AxisView = require(\"./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 axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitLine', 'splitArea', 'minorSplitLine'];\n\nvar _default = AxisView.extend({\n type: 'radiusAxis',\n axisPointerClass: 'PolarAxisPointer',\n render: function (radiusAxisModel, ecModel) {\n this.group.removeAll();\n\n if (!radiusAxisModel.get('show')) {\n return;\n }\n\n var radiusAxis = radiusAxisModel.axis;\n var polar = radiusAxis.polar;\n var angleAxis = polar.getAngleAxis();\n var ticksCoords = radiusAxis.getTicksCoords();\n var minorTicksCoords = radiusAxis.getMinorTicksCoords();\n var axisAngle = angleAxis.getExtent()[0];\n var radiusExtent = radiusAxis.getExtent();\n var layout = layoutAxis(polar, radiusAxisModel, axisAngle);\n var axisBuilder = new AxisBuilder(radiusAxisModel, layout);\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n this.group.add(axisBuilder.getGroup());\n zrUtil.each(selfBuilderAttrs, function (name) {\n if (radiusAxisModel.get(name + '.show') && !radiusAxis.scale.isBlank()) {\n this['_' + name](radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords);\n }\n }, this);\n },\n\n /**\n * @private\n */\n _splitLine: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n var splitLineModel = radiusAxisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineColors = lineStyleModel.get('color');\n var lineCount = 0;\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n var splitLines = [];\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var colorIndex = lineCount++ % lineColors.length;\n splitLines[colorIndex] = splitLines[colorIndex] || [];\n splitLines[colorIndex].push(new graphic.Circle({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: ticksCoords[i].coord\n }\n }));\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitLines.length; i++) {\n this.group.add(graphic.mergePath(splitLines[i], {\n style: zrUtil.defaults({\n stroke: lineColors[i % lineColors.length],\n fill: null\n }, lineStyleModel.getLineStyle()),\n silent: true\n }));\n }\n },\n\n /**\n * @private\n */\n _minorSplitLine: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) {\n if (!minorTicksCoords.length) {\n return;\n }\n\n var minorSplitLineModel = radiusAxisModel.getModel('minorSplitLine');\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n var lines = [];\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n for (var k = 0; k < minorTicksCoords[i].length; k++) {\n lines.push(new graphic.Circle({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: minorTicksCoords[i][k].coord\n }\n }));\n }\n }\n\n this.group.add(graphic.mergePath(lines, {\n style: zrUtil.defaults({\n fill: null\n }, lineStyleModel.getLineStyle()),\n silent: true\n }));\n },\n\n /**\n * @private\n */\n _splitArea: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n if (!ticksCoords.length) {\n return;\n }\n\n var splitAreaModel = radiusAxisModel.getModel('splitArea');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var areaColors = areaStyleModel.get('color');\n var lineCount = 0;\n areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n var splitAreas = [];\n var prevRadius = ticksCoords[0].coord;\n\n for (var i = 1; i < ticksCoords.length; i++) {\n var colorIndex = lineCount++ % areaColors.length;\n splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n splitAreas[colorIndex].push(new graphic.Sector({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r0: prevRadius,\n r: ticksCoords[i].coord,\n startAngle: 0,\n endAngle: Math.PI * 2\n },\n silent: true\n }));\n prevRadius = ticksCoords[i].coord;\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitAreas.length; i++) {\n this.group.add(graphic.mergePath(splitAreas[i], {\n style: zrUtil.defaults({\n fill: areaColors[i % areaColors.length]\n }, areaStyleModel.getAreaStyle()),\n silent: true\n }));\n }\n }\n});\n/**\n * @inner\n */\n\n\nfunction layoutAxis(polar, radiusAxisModel, axisAngle) {\n return {\n position: [polar.cx, polar.cy],\n rotation: axisAngle / 180 * Math.PI,\n labelDirection: -1,\n tickDirection: -1,\n nameDirection: 1,\n labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'),\n // Over splitLine and splitArea\n z2: 1\n };\n}\n\nmodule.exports = _default;","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/dcar-score-cd1674c77c03f1c9feee12721e0930f5.png\";","\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 createListFromArray = require(\"./chart/helper/createListFromArray\");\n\nvar axisHelper = require(\"./coord/axisHelper\");\n\nvar axisModelCommonMixin = require(\"./coord/axisModelCommonMixin\");\n\nvar Model = require(\"./model/Model\");\n\nvar _layout = require(\"./util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nexports.getLayoutRect = _layout.getLayoutRect;\n\nvar _dataStackHelper = require(\"./data/helper/dataStackHelper\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nvar _completeDimensions = require(\"./data/helper/completeDimensions\");\n\nexports.completeDimensions = _completeDimensions;\n\nvar _createDimensions = require(\"./data/helper/createDimensions\");\n\nexports.createDimensions = _createDimensions;\n\nvar _symbol = require(\"./util/symbol\");\n\nexports.createSymbol = _symbol.createSymbol;\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 createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge';\n\n/**\n * Create a muti dimension List structure from seriesModel.\n * @param {module:echarts/model/Model} seriesModel\n * @return {module:echarts/data/List} list\n */\nfunction createList(seriesModel) {\n return createListFromArray(seriesModel.getSource(), seriesModel);\n} // export function createGraph(seriesModel) {\n// var nodes = seriesModel.get('data');\n// var links = seriesModel.get('links');\n// return createGraphFromNodeEdge(nodes, links, seriesModel);\n// }\n\n\nvar dataStack = {\n isDimensionStacked: isDimensionStacked,\n enableDataStack: enableDataStack,\n getStackedDimension: getStackedDimension\n};\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolDesc\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n */\n\n/**\n * Create scale\n * @param {Array.} dataExtent\n * @param {Object|module:echarts/Model} option\n */\nfunction createScale(dataExtent, option) {\n var axisModel = option;\n\n if (!Model.isInstance(option)) {\n axisModel = new Model(option);\n zrUtil.mixin(axisModel, axisModelCommonMixin);\n }\n\n var scale = axisHelper.createScaleByModel(axisModel);\n scale.setExtent(dataExtent[0], dataExtent[1]);\n axisHelper.niceScaleExtent(scale, axisModel);\n return scale;\n}\n/**\n * Mixin common methods to axis model,\n *\n * Inlcude methods\n * `getFormattedLabels() => Array.`\n * `getCategories() => Array.`\n * `getMin(origin: boolean) => number`\n * `getMax(origin: boolean) => number`\n * `getNeedCrossZero() => boolean`\n * `setRange(start: number, end: number)`\n * `resetRange()`\n */\n\n\nfunction mixinAxisModelCommonMethods(Model) {\n zrUtil.mixin(Model, axisModelCommonMixin);\n}\n\nexports.createList = createList;\nexports.dataStack = dataStack;\nexports.createScale = createScale;\nexports.mixinAxisModelCommonMethods = mixinAxisModelCommonMethods;","\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 * 3x2矩阵操作类\n * @exports zrender/tool/matrix\n */\n\n/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * Create a identity matrix.\n * @return {Float32Array|Array.}\n */\n\nfunction create() {\n var out = new ArrayCtor(6);\n identity(out);\n return out;\n}\n/**\n * 设置矩阵为单位矩阵\n * @param {Float32Array|Array.} out\n */\n\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * 复制矩阵\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} m\n */\n\n\nfunction copy(out, m) {\n out[0] = m[0];\n out[1] = m[1];\n out[2] = m[2];\n out[3] = m[3];\n out[4] = m[4];\n out[5] = m[5];\n return out;\n}\n/**\n * 矩阵相乘\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} m1\n * @param {Float32Array|Array.} m2\n */\n\n\nfunction mul(out, m1, m2) {\n // Consider matrix.mul(m, m2, m);\n // where out is the same as m2.\n // So use temp variable to escape error.\n var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = out3;\n out[4] = out4;\n out[5] = out5;\n return out;\n}\n/**\n * 平移变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {Float32Array|Array.} v\n */\n\n\nfunction translate(out, a, v) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4] + v[0];\n out[5] = a[5] + v[1];\n return out;\n}\n/**\n * 旋转变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {number} rad\n */\n\n\nfunction rotate(out, a, rad) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var st = Math.sin(rad);\n var ct = Math.cos(rad);\n out[0] = aa * ct + ab * st;\n out[1] = -aa * st + ab * ct;\n out[2] = ac * ct + ad * st;\n out[3] = -ac * st + ct * ad;\n out[4] = ct * atx + st * aty;\n out[5] = ct * aty - st * atx;\n return out;\n}\n/**\n * 缩放变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {Float32Array|Array.} v\n */\n\n\nfunction scale(out, a, v) {\n var vx = v[0];\n var vy = v[1];\n out[0] = a[0] * vx;\n out[1] = a[1] * vy;\n out[2] = a[2] * vx;\n out[3] = a[3] * vy;\n out[4] = a[4] * vx;\n out[5] = a[5] * vy;\n return out;\n}\n/**\n * 求逆矩阵\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n */\n\n\nfunction invert(out, a) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var det = aa * ad - ab * ac;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\n/**\n * Clone a new matrix.\n * @param {Float32Array|Array.} a\n */\n\n\nfunction clone(a) {\n var b = create();\n copy(b, a);\n return b;\n}\n\nexports.create = create;\nexports.identity = identity;\nexports.copy = copy;\nexports.mul = mul;\nexports.translate = translate;\nexports.rotate = rotate;\nexports.scale = scale;\nexports.invert = invert;\nexports.clone = clone;","\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 Scale = require(\"./Scale\");\n\nvar OrdinalMeta = require(\"../data/OrdinalMeta\");\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 * Linear continuous scale\n * @module echarts/coord/scale/Ordinal\n *\n * http://en.wikipedia.org/wiki/Level_of_measurement\n */\n// FIXME only one data\nvar scaleProto = Scale.prototype;\nvar OrdinalScale = Scale.extend({\n type: 'ordinal',\n\n /**\n * @param {module:echarts/data/OrdianlMeta|Array.} ordinalMeta\n */\n init: function (ordinalMeta, extent) {\n // Caution: Should not use instanceof, consider ec-extensions using\n // import approach to get OrdinalMeta class.\n if (!ordinalMeta || zrUtil.isArray(ordinalMeta)) {\n ordinalMeta = new OrdinalMeta({\n categories: ordinalMeta\n });\n }\n\n this._ordinalMeta = ordinalMeta;\n this._extent = extent || [0, ordinalMeta.categories.length - 1];\n },\n parse: function (val) {\n return typeof val === 'string' ? this._ordinalMeta.getOrdinal(val) // val might be float.\n : Math.round(val);\n },\n contain: function (rank) {\n rank = this.parse(rank);\n return scaleProto.contain.call(this, rank) && this._ordinalMeta.categories[rank] != null;\n },\n\n /**\n * Normalize given rank or name to linear [0, 1]\n * @param {number|string} [val]\n * @return {number}\n */\n normalize: function (val) {\n return scaleProto.normalize.call(this, this.parse(val));\n },\n scale: function (val) {\n return Math.round(scaleProto.scale.call(this, val));\n },\n\n /**\n * @return {Array}\n */\n getTicks: function () {\n var ticks = [];\n var extent = this._extent;\n var rank = extent[0];\n\n while (rank <= extent[1]) {\n ticks.push(rank);\n rank++;\n }\n\n return ticks;\n },\n\n /**\n * Get item on rank n\n * @param {number} n\n * @return {string}\n */\n getLabel: function (n) {\n if (!this.isBlank()) {\n // Note that if no data, ordinalMeta.categories is an empty array.\n return this._ordinalMeta.categories[n];\n }\n },\n\n /**\n * @return {number}\n */\n count: function () {\n return this._extent[1] - this._extent[0] + 1;\n },\n\n /**\n * @override\n */\n unionExtentFromData: function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n },\n getOrdinalMeta: function () {\n return this._ordinalMeta;\n },\n niceTicks: zrUtil.noop,\n niceExtent: zrUtil.noop\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nOrdinalScale.create = function () {\n return new OrdinalScale();\n};\n\nvar _default = OrdinalScale;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar MarkerModel = require(\"./MarkerModel\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = MarkerModel.extend({\n type: 'markLine',\n defaultOption: {\n zlevel: 0,\n z: 5,\n symbol: ['circle', 'arrow'],\n symbolSize: [8, 16],\n //symbolRotate: 0,\n precision: 2,\n tooltip: {\n trigger: 'item'\n },\n label: {\n show: true,\n position: 'end',\n distance: 5\n },\n lineStyle: {\n type: 'dashed'\n },\n emphasis: {\n label: {\n show: true\n },\n lineStyle: {\n width: 3\n }\n },\n animationEasing: 'linear'\n }\n});\n\nmodule.exports = _default;","import React, { useState, useEffect } from 'react'\n\nimport fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport Loading from 'Components/loading'\n\ninterface ISeriesItem {\n series_id: number\n series_name: string\n sub_brand_name: string\n}\ninterface ISeries {\n type: string\n info: ISeriesItem\n}\ninterface IProp {\n show?: boolean\n style?: React.CSSProperties\n brandId?: number\n onChange: (id: number, name: string) => void\n}\n\nconst Series = ({ brandId, onChange, show = false, style = {} }: IProp) => {\n const [series, setSeries] = useState([])\n const [loading, setLoading] = useState(false)\n const [empty, setEmpty] = useState(false)\n useEffect(() => {\n fetchSeries()\n }, [brandId])\n // 获取品牌数据\n function fetchSeries() {\n if (!brandId) return\n setLoading(true)\n fetch(\n getUrl(\n `/motor/brand/v4/brand_series_list/?no_sales=3&show_historical_series=0&with_offline_series_list=0&brand_id=${brandId}`\n )\n )\n .then(res => {\n setLoading(false)\n // 找不到车系\n if (!res.data || res.data.length === 0) {\n setEmpty(true)\n setSeries([])\n return\n }\n if (res.status === 0) {\n setSeries(res.data)\n setEmpty(false)\n }\n })\n .catch(e => {\n setLoading(false)\n })\n }\n\n if (!show || !brandId) return null\n return (\n
\n {loading && }\n {empty &&
暂无车系
}\n {series.map((item: ISeries) => {\n if (item.type === '1003') {\n return (\n

{item.info.sub_brand_name}

\n )\n }\n return (\n {\n e.stopPropagation()\n onChange(item.info.series_id, item.info.series_name)\n }}\n >\n {item.info.series_name}\n

\n )\n })}\n \n
\n )\n}\n\nexport default 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*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar NORMAL_ITEM_STYLE_PATH = ['itemStyle'];\nvar EMPHASIS_ITEM_STYLE_PATH = ['emphasis', 'itemStyle'];\nvar SKIP_PROPS = ['color', 'color0', 'borderColor', 'borderColor0'];\nvar CandlestickView = ChartView.extend({\n type: 'candlestick',\n render: function (seriesModel, ecModel, api) {\n // If there is clipPath created in large mode. Remove it.\n this.group.removeClipPath();\n\n this._updateDrawMode(seriesModel);\n\n this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel);\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._clear();\n\n this._updateDrawMode(seriesModel);\n },\n incrementalRender: function (params, seriesModel, ecModel, api) {\n this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel);\n },\n _updateDrawMode: function (seriesModel) {\n var isLargeDraw = seriesModel.pipelineContext.large;\n\n if (this._isLargeDraw == null || isLargeDraw ^ this._isLargeDraw) {\n this._isLargeDraw = isLargeDraw;\n\n this._clear();\n }\n },\n _renderNormal: function (seriesModel) {\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var isSimpleBox = data.getLayout('isSimpleBox');\n var needsClip = seriesModel.get('clip', true);\n var coord = seriesModel.coordinateSystem;\n var clipArea = coord.getArea && coord.getArea(); // There is no old data only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!this._data) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n if (data.hasValue(newIdx)) {\n var el;\n var itemLayout = data.getItemLayout(newIdx);\n\n if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n return;\n }\n\n el = createNormalBox(itemLayout, newIdx, true);\n graphic.initProps(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, newIdx);\n setBoxCommon(el, data, newIdx, isSimpleBox);\n group.add(el);\n data.setItemGraphicEl(newIdx, el);\n }\n }).update(function (newIdx, oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n if (!data.hasValue(newIdx)) {\n group.remove(el);\n return;\n }\n\n var itemLayout = data.getItemLayout(newIdx);\n\n if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n group.remove(el);\n return;\n }\n\n if (!el) {\n el = createNormalBox(itemLayout, newIdx);\n } else {\n graphic.updateProps(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, newIdx);\n }\n\n setBoxCommon(el, data, newIdx, isSimpleBox);\n group.add(el);\n data.setItemGraphicEl(newIdx, el);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute();\n this._data = data;\n },\n _renderLarge: function (seriesModel) {\n this._clear();\n\n createLarge(seriesModel, this.group);\n var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n },\n _incrementalRenderNormal: function (params, seriesModel) {\n var data = seriesModel.getData();\n var isSimpleBox = data.getLayout('isSimpleBox');\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var el;\n var itemLayout = data.getItemLayout(dataIndex);\n el = createNormalBox(itemLayout, dataIndex);\n setBoxCommon(el, data, dataIndex, isSimpleBox);\n el.incremental = true;\n this.group.add(el);\n }\n },\n _incrementalRenderLarge: function (params, seriesModel) {\n createLarge(seriesModel, this.group, true);\n },\n remove: function (ecModel) {\n this._clear();\n },\n _clear: function () {\n this.group.removeAll();\n this._data = null;\n },\n dispose: zrUtil.noop\n});\nvar NormalBoxPath = Path.extend({\n type: 'normalCandlestickBox',\n shape: {},\n buildPath: function (ctx, shape) {\n var ends = shape.points;\n\n if (this.__simpleBox) {\n ctx.moveTo(ends[4][0], ends[4][1]);\n ctx.lineTo(ends[6][0], ends[6][1]);\n } else {\n ctx.moveTo(ends[0][0], ends[0][1]);\n ctx.lineTo(ends[1][0], ends[1][1]);\n ctx.lineTo(ends[2][0], ends[2][1]);\n ctx.lineTo(ends[3][0], ends[3][1]);\n ctx.closePath();\n ctx.moveTo(ends[4][0], ends[4][1]);\n ctx.lineTo(ends[5][0], ends[5][1]);\n ctx.moveTo(ends[6][0], ends[6][1]);\n ctx.lineTo(ends[7][0], ends[7][1]);\n }\n }\n});\n\nfunction createNormalBox(itemLayout, dataIndex, isInit) {\n var ends = itemLayout.ends;\n return new NormalBoxPath({\n shape: {\n points: isInit ? transInit(ends, itemLayout) : ends\n },\n z2: 100\n });\n}\n\nfunction isNormalBoxClipped(clipArea, itemLayout) {\n var clipped = true;\n\n for (var i = 0; i < itemLayout.ends.length; i++) {\n // If any point are in the region.\n if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) {\n clipped = false;\n break;\n }\n }\n\n return clipped;\n}\n\nfunction setBoxCommon(el, data, dataIndex, isSimpleBox) {\n var itemModel = data.getItemModel(dataIndex);\n var normalItemStyleModel = itemModel.getModel(NORMAL_ITEM_STYLE_PATH);\n var color = data.getItemVisual(dataIndex, 'color');\n var borderColor = data.getItemVisual(dataIndex, 'borderColor') || color; // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var itemStyle = normalItemStyleModel.getItemStyle(SKIP_PROPS);\n el.useStyle(itemStyle);\n el.style.strokeNoScale = true;\n el.style.fill = color;\n el.style.stroke = borderColor;\n el.__simpleBox = isSimpleBox;\n var hoverStyle = itemModel.getModel(EMPHASIS_ITEM_STYLE_PATH).getItemStyle();\n graphic.setHoverStyle(el, hoverStyle);\n}\n\nfunction transInit(points, itemLayout) {\n return zrUtil.map(points, function (point) {\n point = point.slice();\n point[1] = itemLayout.initBaseline;\n return point;\n });\n}\n\nvar LargeBoxPath = Path.extend({\n type: 'largeCandlestickBox',\n shape: {},\n buildPath: function (ctx, shape) {\n // Drawing lines is more efficient than drawing\n // a whole line or drawing rects.\n var points = shape.points;\n\n for (var i = 0; i < points.length;) {\n if (this.__sign === points[i++]) {\n var x = points[i++];\n ctx.moveTo(x, points[i++]);\n ctx.lineTo(x, points[i++]);\n } else {\n i += 3;\n }\n }\n }\n});\n\nfunction createLarge(seriesModel, group, incremental) {\n var data = seriesModel.getData();\n var largePoints = data.getLayout('largePoints');\n var elP = new LargeBoxPath({\n shape: {\n points: largePoints\n },\n __sign: 1\n });\n group.add(elP);\n var elN = new LargeBoxPath({\n shape: {\n points: largePoints\n },\n __sign: -1\n });\n group.add(elN);\n setLargeStyle(1, elP, seriesModel, data);\n setLargeStyle(-1, elN, seriesModel, data);\n\n if (incremental) {\n elP.incremental = true;\n elN.incremental = true;\n }\n}\n\nfunction setLargeStyle(sign, el, seriesModel, data) {\n var suffix = sign > 0 ? 'P' : 'N';\n var borderColor = data.getVisual('borderColor' + suffix) || data.getVisual('color' + suffix); // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var itemStyle = seriesModel.getModel(NORMAL_ITEM_STYLE_PATH).getItemStyle(SKIP_PROPS);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor; // No different\n // el.style.lineWidth = .5;\n}\n\nvar _default = CandlestickView;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Style = require(\"./Style\");\n\nvar Element = require(\"../Element\");\n\nvar RectText = require(\"./mixin/RectText\");\n\n/**\n * Base class of all displayable graphic objects\n * @module zrender/graphic/Displayable\n */\n\n/**\n * @alias module:zrender/graphic/Displayable\n * @extends module:zrender/Element\n * @extends module:zrender/graphic/mixin/RectText\n */\nfunction Displayable(opts) {\n opts = opts || {};\n Element.call(this, opts); // Extend properties\n\n for (var name in opts) {\n if (opts.hasOwnProperty(name) && name !== 'style') {\n this[name] = opts[name];\n }\n }\n /**\n * @type {module:zrender/graphic/Style}\n */\n\n\n this.style = new Style(opts.style, this);\n this._rect = null; // Shapes for cascade clipping.\n // Can only be `null`/`undefined` or an non-empty array, MUST NOT be an empty array.\n // because it is easy to only using null to check whether clipPaths changed.\n\n this.__clipPaths = null; // FIXME Stateful must be mixined after style is setted\n // Stateful.call(this, opts);\n}\n\nDisplayable.prototype = {\n constructor: Displayable,\n type: 'displayable',\n\n /**\n * Dirty flag. From which painter will determine if this displayable object needs brush.\n * @name module:zrender/graphic/Displayable#__dirty\n * @type {boolean}\n */\n __dirty: true,\n\n /**\n * Whether the displayable object is visible. when it is true, the displayable object\n * is not drawn, but the mouse event can still trigger the object.\n * @name module:/zrender/graphic/Displayable#invisible\n * @type {boolean}\n * @default false\n */\n invisible: false,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z: 0,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z2: 0,\n\n /**\n * The z level determines the displayable object can be drawn in which layer canvas.\n * @name module:/zrender/graphic/Displayable#zlevel\n * @type {number}\n * @default 0\n */\n zlevel: 0,\n\n /**\n * Whether it can be dragged.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n draggable: false,\n\n /**\n * Whether is it dragging.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n dragging: false,\n\n /**\n * Whether to respond to mouse events.\n * @name module:/zrender/graphic/Displayable#silent\n * @type {boolean}\n * @default false\n */\n silent: false,\n\n /**\n * If enable culling\n * @type {boolean}\n * @default false\n */\n culling: false,\n\n /**\n * Mouse cursor when hovered\n * @name module:/zrender/graphic/Displayable#cursor\n * @type {string}\n */\n cursor: 'pointer',\n\n /**\n * If hover area is bounding rect\n * @name module:/zrender/graphic/Displayable#rectHover\n * @type {string}\n */\n rectHover: false,\n\n /**\n * Render the element progressively when the value >= 0,\n * usefull for large data.\n * @type {boolean}\n */\n progressive: false,\n\n /**\n * @type {boolean}\n */\n incremental: false,\n\n /**\n * Scale ratio for global scale.\n * @type {boolean}\n */\n globalScaleRatio: 1,\n beforeBrush: function (ctx) {},\n afterBrush: function (ctx) {},\n\n /**\n * Graphic drawing method.\n * @param {CanvasRenderingContext2D} ctx\n */\n // Interface\n brush: function (ctx, prevEl) {},\n\n /**\n * Get the minimum bounding box.\n * @return {module:zrender/core/BoundingRect}\n */\n // Interface\n getBoundingRect: function () {},\n\n /**\n * If displayable element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n contain: function (x, y) {\n return this.rectContain(x, y);\n },\n\n /**\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {\n cb.call(context, this);\n },\n\n /**\n * If bounding rect of element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n rectContain: function (x, y) {\n var coord = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n return rect.contain(coord[0], coord[1]);\n },\n\n /**\n * Mark displayable element dirty and refresh next frame\n */\n dirty: function () {\n this.__dirty = this.__dirtyText = true;\n this._rect = null;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * If displayable object binded any event\n * @return {boolean}\n */\n // TODO, events bound by bind\n // isSilent: function () {\n // return !(\n // this.hoverable || this.draggable\n // || this.onmousemove || this.onmouseover || this.onmouseout\n // || this.onmousedown || this.onmouseup || this.onclick\n // || this.ondragenter || this.ondragover || this.ondragleave\n // || this.ondrop\n // );\n // },\n\n /**\n * Alias for animate('style')\n * @param {boolean} loop\n */\n animateStyle: function (loop) {\n return this.animate('style', loop);\n },\n attrKV: function (key, value) {\n if (key !== 'style') {\n Element.prototype.attrKV.call(this, key, value);\n } else {\n this.style.set(value);\n }\n },\n\n /**\n * @param {Object|string} key\n * @param {*} value\n */\n setStyle: function (key, value) {\n this.style.set(key, value);\n this.dirty(false);\n return this;\n },\n\n /**\n * Use given style object\n * @param {Object} obj\n */\n useStyle: function (obj) {\n this.style = new Style(obj, this);\n this.dirty(false);\n return this;\n },\n\n /**\n * The string value of `textPosition` needs to be calculated to a real postion.\n * For example, `'inside'` is calculated to `[rect.width/2, rect.height/2]`\n * by default. See `contain/text.js#calculateTextPosition` for more details.\n * But some coutom shapes like \"pin\", \"flag\" have center that is not exactly\n * `[width/2, height/2]`. So we provide this hook to customize the calculation\n * for those shapes. It will be called if the `style.textPosition` is a string.\n * @param {Obejct} [out] Prepared out object. If not provided, this method should\n * be responsible for creating one.\n * @param {module:zrender/graphic/Style} style\n * @param {Object} rect {x, y, width, height}\n * @return {Obejct} out The same as the input out.\n * {\n * x: number. mandatory.\n * y: number. mandatory.\n * textAlign: string. optional. use style.textAlign by default.\n * textVerticalAlign: string. optional. use style.textVerticalAlign by default.\n * }\n */\n calculateTextPosition: null\n};\nzrUtil.inherits(Displayable, Element);\nzrUtil.mixin(Displayable, RectText); // zrUtil.mixin(Displayable, Stateful);\n\nvar _default = Displayable;\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 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;","/**\n * Event Mixin\n * @module zrender/mixin/Eventful\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * pissang (https://www.github.com/pissang)\n */\nvar arrySlice = Array.prototype.slice;\n/**\n * Event dispatcher.\n *\n * @alias module:zrender/mixin/Eventful\n * @constructor\n * @param {Object} [eventProcessor] The object eventProcessor is the scope when\n * `eventProcessor.xxx` called.\n * @param {Function} [eventProcessor.normalizeQuery]\n * param: {string|Object} Raw query.\n * return: {string|Object} Normalized query.\n * @param {Function} [eventProcessor.filter] Event will be dispatched only\n * if it returns `true`.\n * param: {string} eventType\n * param: {string|Object} query\n * return: {boolean}\n * @param {Function} [eventProcessor.afterTrigger] Called after all handlers called.\n * param: {string} eventType\n */\n\nvar Eventful = function (eventProcessor) {\n this._$handlers = {};\n this._$eventProcessor = eventProcessor;\n};\n\nEventful.prototype = {\n constructor: Eventful,\n\n /**\n * The handler can only be triggered once, then removed.\n *\n * @param {string} event The event name.\n * @param {string|Object} [query] Condition used on event filter.\n * @param {Function} handler The event handler.\n * @param {Object} context\n */\n one: function (event, query, handler, context) {\n return on(this, event, query, handler, context, true);\n },\n\n /**\n * Bind a handler.\n *\n * @param {string} event The event name.\n * @param {string|Object} [query] Condition used on event filter.\n * @param {Function} handler The event handler.\n * @param {Object} [context]\n */\n on: function (event, query, handler, context) {\n return on(this, event, query, handler, context, false);\n },\n\n /**\n * Whether any handler has bound.\n *\n * @param {string} event\n * @return {boolean}\n */\n isSilent: function (event) {\n var _h = this._$handlers;\n return !_h[event] || !_h[event].length;\n },\n\n /**\n * Unbind a event.\n *\n * @param {string} [event] The event name.\n * If no `event` input, \"off\" all listeners.\n * @param {Function} [handler] The event handler.\n * If no `handler` input, \"off\" all listeners of the `event`.\n */\n off: function (event, handler) {\n var _h = this._$handlers;\n\n if (!event) {\n this._$handlers = {};\n return this;\n }\n\n if (handler) {\n if (_h[event]) {\n var newList = [];\n\n for (var i = 0, l = _h[event].length; i < l; i++) {\n if (_h[event][i].h !== handler) {\n newList.push(_h[event][i]);\n }\n }\n\n _h[event] = newList;\n }\n\n if (_h[event] && _h[event].length === 0) {\n delete _h[event];\n }\n } else {\n delete _h[event];\n }\n\n return this;\n },\n\n /**\n * Dispatch a event.\n *\n * @param {string} type The event name.\n */\n trigger: function (type) {\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n\n if (argLen > 3) {\n args = arrySlice.call(args, 1);\n }\n\n var len = _h.length;\n\n for (var i = 0; i < len;) {\n var hItem = _h[i];\n\n if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n i++;\n continue;\n } // Optimize advise from backbone\n\n\n switch (argLen) {\n case 1:\n hItem.h.call(hItem.ctx);\n break;\n\n case 2:\n hItem.h.call(hItem.ctx, args[1]);\n break;\n\n case 3:\n hItem.h.call(hItem.ctx, args[1], args[2]);\n break;\n\n default:\n // have more than 2 given arguments\n hItem.h.apply(hItem.ctx, args);\n break;\n }\n\n if (hItem.one) {\n _h.splice(i, 1);\n\n len--;\n } else {\n i++;\n }\n }\n }\n\n eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n return this;\n },\n\n /**\n * Dispatch a event with context, which is specified at the last parameter.\n *\n * @param {string} type The event name.\n */\n triggerWithContext: function (type) {\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n\n if (argLen > 4) {\n args = arrySlice.call(args, 1, args.length - 1);\n }\n\n var ctx = args[args.length - 1];\n var len = _h.length;\n\n for (var i = 0; i < len;) {\n var hItem = _h[i];\n\n if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n i++;\n continue;\n } // Optimize advise from backbone\n\n\n switch (argLen) {\n case 1:\n hItem.h.call(ctx);\n break;\n\n case 2:\n hItem.h.call(ctx, args[1]);\n break;\n\n case 3:\n hItem.h.call(ctx, args[1], args[2]);\n break;\n\n default:\n // have more than 2 given arguments\n hItem.h.apply(ctx, args);\n break;\n }\n\n if (hItem.one) {\n _h.splice(i, 1);\n\n len--;\n } else {\n i++;\n }\n }\n }\n\n eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n return this;\n }\n};\n\nfunction normalizeQuery(host, query) {\n var eventProcessor = host._$eventProcessor;\n\n if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\n query = eventProcessor.normalizeQuery(query);\n }\n\n return query;\n}\n\nfunction on(eventful, event, query, handler, context, isOnce) {\n var _h = eventful._$handlers;\n\n if (typeof query === 'function') {\n context = handler;\n handler = query;\n query = null;\n }\n\n if (!handler || !event) {\n return eventful;\n }\n\n query = normalizeQuery(eventful, query);\n\n if (!_h[event]) {\n _h[event] = [];\n }\n\n for (var i = 0; i < _h[event].length; i++) {\n if (_h[event][i].h === handler) {\n return eventful;\n }\n }\n\n var wrap = {\n h: handler,\n one: isOnce,\n query: query,\n ctx: context || eventful,\n // FIXME\n // Do not publish this feature util it is proved that it makes sense.\n callAtLast: handler.zrEventfulCallAtLast\n };\n var lastIndex = _h[event].length - 1;\n var lastWrap = _h[event][lastIndex];\n lastWrap && lastWrap.callAtLast ? _h[event].splice(lastIndex, 0, wrap) : _h[event].push(wrap);\n return eventful;\n} // ----------------------\n// The events in zrender\n// ----------------------\n\n/**\n * @event module:zrender/mixin/Eventful#onclick\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseout\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousemove\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousewheel\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousedown\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseup\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrag\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragstart\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragend\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragenter\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragleave\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrop\n * @type {Function}\n * @default null\n */\n\n\nvar _default = Eventful;\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 vec2 = require(\"zrender/lib/core/vector\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _multipleGraphEdgeHelper = require(\"../helper/multipleGraphEdgeHelper\");\n\nvar getCurvenessForEdge = _multipleGraphEdgeHelper.getCurvenessForEdge;\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 simpleLayout(seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n return;\n }\n\n var graph = seriesModel.getGraph();\n graph.eachNode(function (node) {\n var model = node.getModel();\n node.setLayout([+model.get('x'), +model.get('y')]);\n });\n simpleLayoutEdge(graph, seriesModel);\n}\n\nfunction simpleLayoutEdge(graph, seriesModel) {\n graph.eachEdge(function (edge, index) {\n var curveness = zrUtil.retrieve3(edge.getModel().get('lineStyle.curveness'), -getCurvenessForEdge(edge, seriesModel, index, true), 0);\n var p1 = vec2.clone(edge.node1.getLayout());\n var p2 = vec2.clone(edge.node2.getLayout());\n var points = [p1, p2];\n\n if (+curveness) {\n points.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]);\n }\n\n edge.setLayout(points);\n });\n}\n\nexports.simpleLayout = simpleLayout;\nexports.simpleLayoutEdge = simpleLayoutEdge;","\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 Polar = require(\"./Polar\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar createScaleByModel = _axisHelper.createScaleByModel;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nrequire(\"./PolarModel\");\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 Axis scale\n\n/**\n * Resize method bound to the polar\n * @param {module:echarts/coord/polar/PolarModel} polarModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction resizePolar(polar, polarModel, api) {\n var center = polarModel.get('center');\n var width = api.getWidth();\n var height = api.getHeight();\n polar.cx = parsePercent(center[0], width);\n polar.cy = parsePercent(center[1], height);\n var radiusAxis = polar.getRadiusAxis();\n var size = Math.min(width, height) / 2;\n var radius = polarModel.get('radius');\n\n if (radius == null) {\n radius = [0, '100%'];\n } else if (!zrUtil.isArray(radius)) {\n // r0 = 0\n radius = [0, radius];\n }\n\n radius = [parsePercent(radius[0], size), parsePercent(radius[1], size)];\n radiusAxis.inverse ? radiusAxis.setExtent(radius[1], radius[0]) : radiusAxis.setExtent(radius[0], radius[1]);\n}\n/**\n * Update polar\n */\n\n\nfunction updatePolarScale(ecModel, api) {\n var polar = this;\n var angleAxis = polar.getAngleAxis();\n var radiusAxis = polar.getRadiusAxis(); // Reset scale\n\n angleAxis.scale.setExtent(Infinity, -Infinity);\n radiusAxis.scale.setExtent(Infinity, -Infinity);\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.coordinateSystem === polar) {\n var data = seriesModel.getData();\n zrUtil.each(data.mapDimension('radius', true), function (dim) {\n radiusAxis.scale.unionExtentFromData(data, getStackedDimension(data, dim));\n });\n zrUtil.each(data.mapDimension('angle', true), function (dim) {\n angleAxis.scale.unionExtentFromData(data, getStackedDimension(data, dim));\n });\n }\n });\n niceScaleExtent(angleAxis.scale, angleAxis.model);\n niceScaleExtent(radiusAxis.scale, radiusAxis.model); // Fix extent of category angle axis\n\n if (angleAxis.type === 'category' && !angleAxis.onBand) {\n var extent = angleAxis.getExtent();\n var diff = 360 / angleAxis.scale.count();\n angleAxis.inverse ? extent[1] += diff : extent[1] -= diff;\n angleAxis.setExtent(extent[0], extent[1]);\n }\n}\n/**\n * Set common axis properties\n * @param {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n * @param {module:echarts/coord/polar/AxisModel}\n * @inner\n */\n\n\nfunction setAxis(axis, axisModel) {\n axis.type = axisModel.get('type');\n axis.scale = createScaleByModel(axisModel);\n axis.onBand = axisModel.get('boundaryGap') && axis.type === 'category';\n axis.inverse = axisModel.get('inverse');\n\n if (axisModel.mainType === 'angleAxis') {\n axis.inverse ^= axisModel.get('clockwise');\n var startAngle = axisModel.get('startAngle');\n axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360));\n } // Inject axis instance\n\n\n axisModel.axis = axis;\n axis.model = axisModel;\n}\n\nvar polarCreator = {\n dimensions: Polar.prototype.dimensions,\n create: function (ecModel, api) {\n var polarList = [];\n ecModel.eachComponent('polar', function (polarModel, idx) {\n var polar = new Polar(idx); // Inject resize and update method\n\n polar.update = updatePolarScale;\n var radiusAxis = polar.getRadiusAxis();\n var angleAxis = polar.getAngleAxis();\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\n setAxis(radiusAxis, radiusAxisModel);\n setAxis(angleAxis, angleAxisModel);\n resizePolar(polar, polarModel, api);\n polarList.push(polar);\n polarModel.coordinateSystem = polar;\n polar.model = polarModel;\n }); // Inject coordinateSystem to series\n\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.get('coordinateSystem') === 'polar') {\n var polarModel = ecModel.queryComponents({\n mainType: 'polar',\n index: seriesModel.get('polarIndex'),\n id: seriesModel.get('polarId')\n })[0];\n seriesModel.coordinateSystem = polarModel.coordinateSystem;\n }\n });\n return polarList;\n }\n};\nCoordinateSystem.register('polar', polarCreator);","\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 _number = require(\"../util/number\");\n\nvar parsePercent = _number.parsePercent;\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*/\nfunction getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || '__ec_stack_' + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(polar, axis) {\n return axis.dim + polar.model.componentIndex;\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction barLayoutPolar(seriesType, ecModel, api) {\n var lastStackCoords = {};\n var barWidthAndOffset = calRadialBar(zrUtil.filter(ecModel.getSeriesByType(seriesType), function (seriesModel) {\n return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'polar';\n }));\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for polar only\n if (seriesModel.coordinateSystem.type !== 'polar') {\n return;\n }\n\n var data = seriesModel.getData();\n var polar = seriesModel.coordinateSystem;\n var baseAxis = polar.getBaseAxis();\n var axisKey = getAxisKey(polar, baseAxis);\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[axisKey][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n var valueAxis = polar.getOtherAxis(baseAxis);\n var cx = seriesModel.coordinateSystem.cx;\n var cy = seriesModel.coordinateSystem.cy;\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n var barMinAngle = seriesModel.get('barMinAngle') || 0;\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var stacked = isDimensionStacked(data, valueDim\n /*, baseDim*/\n );\n var clampLayout = baseAxis.dim !== 'radius' || !seriesModel.get('roundCap', true);\n var valueAxisStart = valueAxis.dim === 'radius' ? valueAxis.dataToRadius(0) : valueAxis.dataToAngle(0);\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n var value = data.get(valueDim, idx);\n var baseValue = data.get(baseDim, idx);\n var sign = value >= 0 ? 'p' : 'n';\n var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n // Only ordinal axis can be stacked.\n\n if (stacked) {\n if (!lastStackCoords[stackId][baseValue]) {\n lastStackCoords[stackId][baseValue] = {\n p: valueAxisStart,\n // Positive stack\n n: valueAxisStart // Negative stack\n\n };\n } // Should also consider #4243\n\n\n baseCoord = lastStackCoords[stackId][baseValue][sign];\n }\n\n var r0;\n var r;\n var startAngle;\n var endAngle; // radial sector\n\n if (valueAxis.dim === 'radius') {\n var radiusSpan = valueAxis.dataToRadius(value) - valueAxisStart;\n var angle = baseAxis.dataToAngle(baseValue);\n\n if (Math.abs(radiusSpan) < barMinHeight) {\n radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight;\n }\n\n r0 = baseCoord;\n r = baseCoord + radiusSpan;\n startAngle = angle - columnOffset;\n endAngle = startAngle - columnWidth;\n stacked && (lastStackCoords[stackId][baseValue][sign] = r);\n } // tangential sector\n else {\n var angleSpan = valueAxis.dataToAngle(value, clampLayout) - valueAxisStart;\n var radius = baseAxis.dataToRadius(baseValue);\n\n if (Math.abs(angleSpan) < barMinAngle) {\n angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle;\n }\n\n r0 = radius + columnOffset;\n r = r0 + columnWidth;\n startAngle = baseCoord;\n endAngle = baseCoord + angleSpan; // if the previous stack is at the end of the ring,\n // add a round to differentiate it from origin\n // var extent = angleAxis.getExtent();\n // var stackCoord = angle;\n // if (stackCoord === extent[0] && value > 0) {\n // stackCoord = extent[1];\n // }\n // else if (stackCoord === extent[1] && value < 0) {\n // stackCoord = extent[0];\n // }\n\n stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle);\n }\n\n data.setItemLayout(idx, {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n // Consider that positive angle is anti-clockwise,\n // while positive radian of sector is clockwise\n startAngle: -startAngle * Math.PI / 180,\n endAngle: -endAngle * Math.PI / 180\n });\n }\n }, this);\n}\n/**\n * Calculate bar width and offset for radial bar charts\n */\n\n\nfunction calRadialBar(barSeries, api) {\n // Columns info on each category axis. Key is polar name\n var columnsMap = {};\n zrUtil.each(barSeries, function (seriesModel, idx) {\n var data = seriesModel.getData();\n var polar = seriesModel.coordinateSystem;\n var baseAxis = polar.getBaseAxis();\n var axisKey = getAxisKey(polar, baseAxis);\n var axisExtent = baseAxis.getExtent();\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: '20%',\n gap: '30%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = getSeriesStackId(seriesModel);\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n };\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n\n if (barWidth && !stacks[stackId].width) {\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n stacks[stackId].width = barWidth;\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n barGap != null && (columnsOnAxis.gap = barGap);\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n zrUtil.each(stacks, function (column, stack) {\n var maxWidth = column.maxWidth;\n\n if (maxWidth && maxWidth < autoWidth) {\n maxWidth = Math.min(maxWidth, remainedWidth);\n\n if (column.width) {\n maxWidth = Math.min(maxWidth, column.width);\n }\n\n remainedWidth -= maxWidth;\n column.width = maxWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n zrUtil.each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n zrUtil.each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n\nvar _default = barLayoutPolar;\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\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 = Path.extend({\n type: 'echartsGaugePointer',\n shape: {\n angle: 0,\n width: 10,\n r: 10,\n x: 0,\n y: 0\n },\n buildPath: function (ctx, shape) {\n var mathCos = Math.cos;\n var mathSin = Math.sin;\n var r = shape.r;\n var width = shape.width;\n var angle = shape.angle;\n var x = shape.x - mathCos(angle) * width * (width >= r / 3 ? 1 : 2);\n var y = shape.y - mathSin(angle) * width * (width >= r / 3 ? 1 : 2);\n angle = shape.angle - Math.PI / 2;\n ctx.moveTo(x, y);\n ctx.lineTo(shape.x + mathCos(angle) * width, shape.y + mathSin(angle) * width);\n ctx.lineTo(shape.x + mathCos(shape.angle) * r, shape.y + mathSin(shape.angle) * r);\n ctx.lineTo(shape.x - mathCos(angle) * width, shape.y - mathSin(angle) * width);\n ctx.lineTo(x, y);\n return;\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 modelUtil = require(\"../../util/model\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\nvar Model = require(\"../../model/Model\");\n\nvar selectableMixin = require(\"../../component/helper/selectableMixin\");\n\nvar geoCreator = require(\"./geoCreator\");\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 GeoModel = ComponentModel.extend({\n type: 'geo',\n\n /**\n * @type {module:echarts/coord/geo/Geo}\n */\n coordinateSystem: null,\n layoutMode: 'box',\n init: function (option) {\n ComponentModel.prototype.init.apply(this, arguments); // Default label emphasis `show`\n\n modelUtil.defaultEmphasis(option, 'label', ['show']);\n },\n optionUpdated: function () {\n var option = this.option;\n var self = this;\n option.regions = geoCreator.getFilledRegions(option.regions, option.map, option.nameMap);\n this._optionModelMap = zrUtil.reduce(option.regions || [], function (optionModelMap, regionOpt) {\n if (regionOpt.name) {\n optionModelMap.set(regionOpt.name, new Model(regionOpt, self));\n }\n\n return optionModelMap;\n }, zrUtil.createHashMap());\n this.updateSelectedMap(option.regions);\n },\n defaultOption: {\n zlevel: 0,\n z: 0,\n show: true,\n left: 'center',\n top: 'center',\n // width:,\n // height:,\n // right\n // bottom\n // Aspect is width / height. Inited to be geoJson bbox aspect\n // This parameter is used for scale this aspect\n // If svg used, aspectScale is 1 by default.\n // aspectScale: 0.75,\n aspectScale: null,\n ///// Layout with center and size\n // If you wan't to put map in a fixed size box with right aspect ratio\n // This two properties may more conveninet\n // layoutCenter: [50%, 50%]\n // layoutSize: 100\n silent: false,\n // Map type\n map: '',\n // Define left-top, right-bottom coords to control view\n // For example, [ [180, 90], [-180, -90] ]\n boundingCoords: null,\n // Default on center of map\n center: null,\n zoom: 1,\n scaleLimit: null,\n // selectedMode: false\n label: {\n show: false,\n color: '#000'\n },\n itemStyle: {\n // color: 各异,\n borderWidth: 0.5,\n borderColor: '#444',\n color: '#eee'\n },\n emphasis: {\n label: {\n show: true,\n color: 'rgb(100,0,0)'\n },\n itemStyle: {\n color: 'rgba(255,215,0,0.8)'\n }\n },\n regions: []\n },\n\n /**\n * Get model of region\n * @param {string} name\n * @return {module:echarts/model/Model}\n */\n getRegionModel: function (name) {\n return this._optionModelMap.get(name) || new Model(null, this, this.ecModel);\n },\n\n /**\n * Format label\n * @param {string} name Region name\n * @param {string} [status='normal'] 'normal' or 'emphasis'\n * @return {string}\n */\n getFormattedLabel: function (name, status) {\n status = status || 'normal';\n var regionModel = this.getRegionModel(name);\n var formatter = regionModel.get((status === 'normal' ? '' : status + '.') + 'label.formatter');\n var params = {\n name: name\n };\n\n if (typeof formatter === 'function') {\n params.status = status;\n return formatter(params);\n } else if (typeof formatter === 'string') {\n return formatter.replace('{a}', name != null ? name : '');\n }\n },\n setZoom: function (zoom) {\n this.option.zoom = zoom;\n },\n setCenter: function (center) {\n this.option.center = center;\n }\n});\nzrUtil.mixin(GeoModel, selectableMixin);\nvar _default = GeoModel;\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(\"./graph/GraphSeries\");\n\nrequire(\"./graph/GraphView\");\n\nrequire(\"./graph/graphAction\");\n\nvar categoryFilter = require(\"./graph/categoryFilter\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar categoryVisual = require(\"./graph/categoryVisual\");\n\nvar edgeVisual = require(\"./graph/edgeVisual\");\n\nvar simpleLayout = require(\"./graph/simpleLayout\");\n\nvar circularLayout = require(\"./graph/circularLayout\");\n\nvar forceLayout = require(\"./graph/forceLayout\");\n\nvar createView = require(\"./graph/createView\");\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.registerProcessor(categoryFilter);\necharts.registerVisual(visualSymbol('graph', 'circle', null));\necharts.registerVisual(categoryVisual);\necharts.registerVisual(edgeVisual);\necharts.registerLayout(simpleLayout);\necharts.registerLayout(echarts.PRIORITY.VISUAL.POST_CHART_LAYOUT, circularLayout);\necharts.registerLayout(forceLayout); // Graph view coordinate system\n\necharts.registerCoordinateSystem('graphView', {\n create: createView\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 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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar Graph = require(\"../../data/Graph\");\n\nvar linkList = require(\"../../data/helper/linkList\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar createListFromArray = require(\"./createListFromArray\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(nodes, edges, seriesModel, directed, beforeLink) {\n // ??? TODO\n // support dataset?\n var graph = new Graph(directed);\n\n for (var i = 0; i < nodes.length; i++) {\n graph.addNode(zrUtil.retrieve( // Id, name, dataIndex\n nodes[i].id, nodes[i].name, i), i);\n }\n\n var linkNameList = [];\n var validEdges = [];\n var linkCount = 0;\n\n for (var i = 0; i < edges.length; i++) {\n var link = edges[i];\n var source = link.source;\n var target = link.target; // addEdge may fail when source or target not exists\n\n if (graph.addEdge(source, target, linkCount)) {\n validEdges.push(link);\n linkNameList.push(zrUtil.retrieve(link.id, source + ' > ' + target));\n linkCount++;\n }\n }\n\n var coordSys = seriesModel.get('coordinateSystem');\n var nodeData;\n\n if (coordSys === 'cartesian2d' || coordSys === 'polar') {\n nodeData = createListFromArray(nodes, seriesModel);\n } else {\n var coordSysCtor = CoordinateSystem.get(coordSys);\n var coordDimensions = coordSysCtor && coordSysCtor.type !== 'view' ? coordSysCtor.dimensions || [] : []; // FIXME: Some geo do not need `value` dimenson, whereas `calendar` needs\n // `value` dimension, but graph need `value` dimension. It's better to\n // uniform this behavior.\n\n if (zrUtil.indexOf(coordDimensions, 'value') < 0) {\n coordDimensions.concat(['value']);\n }\n\n var dimensionNames = createDimensions(nodes, {\n coordDimensions: coordDimensions\n });\n nodeData = new List(dimensionNames, seriesModel);\n nodeData.initData(nodes);\n }\n\n var edgeData = new List(['value'], seriesModel);\n edgeData.initData(validEdges, linkNameList);\n beforeLink && beforeLink(nodeData, edgeData);\n linkList({\n mainData: nodeData,\n struct: graph,\n structAttr: 'graph',\n datas: {\n node: nodeData,\n edge: edgeData\n },\n datasAttr: {\n node: 'data',\n edge: 'edgeData'\n }\n }); // Update dataIndex of nodes and edges because invalid edge may be removed\n\n graph.update();\n return graph;\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// import * as axisHelper from './axisHelper';\nvar _default = {\n /**\n * @param {boolean} origin\n * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN\n */\n getMin: function (origin) {\n var option = this.option;\n var min = !origin && option.rangeStart != null ? option.rangeStart : option.min;\n\n if (this.axis && min != null && min !== 'dataMin' && typeof min !== 'function' && !zrUtil.eqNaN(min)) {\n min = this.axis.scale.parse(min);\n }\n\n return min;\n },\n\n /**\n * @param {boolean} origin\n * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN\n */\n getMax: function (origin) {\n var option = this.option;\n var max = !origin && option.rangeEnd != null ? option.rangeEnd : option.max;\n\n if (this.axis && max != null && max !== 'dataMax' && typeof max !== 'function' && !zrUtil.eqNaN(max)) {\n max = this.axis.scale.parse(max);\n }\n\n return max;\n },\n\n /**\n * @return {boolean}\n */\n getNeedCrossZero: function () {\n var option = this.option;\n return option.rangeStart != null || option.rangeEnd != null ? false : !option.scale;\n },\n\n /**\n * Should be implemented by each axis model if necessary.\n * @return {module:echarts/model/Component} coordinate system model\n */\n getCoordSysModel: zrUtil.noop,\n\n /**\n * @param {number} rangeStart Can only be finite number or null/undefined or NaN.\n * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.\n */\n setRange: function (rangeStart, rangeEnd) {\n this.option.rangeStart = rangeStart;\n this.option.rangeEnd = rangeEnd;\n },\n\n /**\n * Reset range\n */\n resetRange: function () {\n // rangeStart and rangeEnd is readonly.\n this.option.rangeStart = this.option.rangeEnd = null;\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*/\nvar coordinateSystemCreators = {};\n\nfunction CoordinateSystemManager() {\n this._coordinateSystems = [];\n}\n\nCoordinateSystemManager.prototype = {\n constructor: CoordinateSystemManager,\n create: function (ecModel, api) {\n var coordinateSystems = [];\n zrUtil.each(coordinateSystemCreators, function (creater, type) {\n var list = creater.create(ecModel, api);\n coordinateSystems = coordinateSystems.concat(list || []);\n });\n this._coordinateSystems = coordinateSystems;\n },\n update: function (ecModel, api) {\n zrUtil.each(this._coordinateSystems, function (coordSys) {\n coordSys.update && coordSys.update(ecModel, api);\n });\n },\n getCoordinateSystems: function () {\n return this._coordinateSystems.slice();\n }\n};\n\nCoordinateSystemManager.register = function (type, coordinateSystemCreator) {\n coordinateSystemCreators[type] = coordinateSystemCreator;\n};\n\nCoordinateSystemManager.get = function (type) {\n return coordinateSystemCreators[type];\n};\n\nvar _default = CoordinateSystemManager;\nmodule.exports = _default;","var curve = require(\"./curve\");\n\nvar vec2 = require(\"./vector\");\n\nvar bbox = require(\"./bbox\");\n\nvar BoundingRect = require(\"./BoundingRect\");\n\nvar _config = require(\"../config\");\n\nvar dpr = _config.devicePixelRatio;\n\n/**\n * Path 代理,可以在`buildPath`中用于替代`ctx`, 会保存每个path操作的命令到pathCommands属性中\n * 可以用于 isInsidePath 判断以及获取boundingRect\n *\n * @module zrender/core/PathProxy\n * @author Yi Shen (http://www.github.com/pissang)\n */\n// TODO getTotalLength, getPointAtLength\n\n/* global Float32Array */\nvar CMD = {\n M: 1,\n L: 2,\n C: 3,\n Q: 4,\n A: 5,\n Z: 6,\n // Rect\n R: 7\n}; // var CMD_MEM_SIZE = {\n// M: 3,\n// L: 3,\n// C: 7,\n// Q: 5,\n// A: 9,\n// R: 5,\n// Z: 1\n// };\n\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathSqrt = Math.sqrt;\nvar mathAbs = Math.abs;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\n/**\n * @alias module:zrender/core/PathProxy\n * @constructor\n */\n\nvar PathProxy = function (notSaveData) {\n this._saveData = !(notSaveData || false);\n\n if (this._saveData) {\n /**\n * Path data. Stored as flat array\n * @type {Array.}\n */\n this.data = [];\n }\n\n this._ctx = null;\n};\n/**\n * 快速计算Path包围盒(并不是最小包围盒)\n * @return {Object}\n */\n\n\nPathProxy.prototype = {\n constructor: PathProxy,\n _xi: 0,\n _yi: 0,\n _x0: 0,\n _y0: 0,\n // Unit x, Unit y. Provide for avoiding drawing that too short line segment\n _ux: 0,\n _uy: 0,\n _len: 0,\n _lineDash: null,\n _dashOffset: 0,\n _dashIdx: 0,\n _dashSum: 0,\n\n /**\n * @readOnly\n */\n setScale: function (sx, sy, segmentIgnoreThreshold) {\n // Compat. Previously there is no segmentIgnoreThreshold.\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n },\n getContext: function () {\n return this._ctx;\n },\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n beginPath: function (ctx) {\n this._ctx = ctx;\n ctx && ctx.beginPath();\n ctx && (this.dpr = ctx.dpr); // Reset\n\n if (this._saveData) {\n this._len = 0;\n }\n\n if (this._lineDash) {\n this._lineDash = null;\n this._dashOffset = 0;\n }\n\n return this;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @return {module:zrender/core/PathProxy}\n */\n moveTo: function (x, y) {\n this.addData(CMD.M, x, y);\n this._ctx && this._ctx.moveTo(x, y); // x0, y0, xi, yi 是记录在 _dashedXXXXTo 方法中使用\n // xi, yi 记录当前点, x0, y0 在 closePath 的时候回到起始点。\n // 有可能在 beginPath 之后直接调用 lineTo,这时候 x0, y0 需要\n // 在 lineTo 方法中记录,这里先不考虑这种情况,dashed line 也只在 IE10- 中不支持\n\n this._x0 = x;\n this._y0 = y;\n this._xi = x;\n this._yi = y;\n return this;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @return {module:zrender/core/PathProxy}\n */\n lineTo: function (x, y) {\n var exceedUnit = mathAbs(x - this._xi) > this._ux || mathAbs(y - this._yi) > this._uy // Force draw the first segment\n || this._len < 5;\n this.addData(CMD.L, x, y);\n\n if (this._ctx && exceedUnit) {\n this._needsDash() ? this._dashedLineTo(x, y) : this._ctx.lineTo(x, y);\n }\n\n if (exceedUnit) {\n this._xi = x;\n this._yi = y;\n }\n\n return this;\n },\n\n /**\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @return {module:zrender/core/PathProxy}\n */\n bezierCurveTo: function (x1, y1, x2, y2, x3, y3) {\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n\n if (this._ctx) {\n this._needsDash() ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3) : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n\n this._xi = x3;\n this._yi = y3;\n return this;\n },\n\n /**\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @return {module:zrender/core/PathProxy}\n */\n quadraticCurveTo: function (x1, y1, x2, y2) {\n this.addData(CMD.Q, x1, y1, x2, y2);\n\n if (this._ctx) {\n this._needsDash() ? this._dashedQuadraticTo(x1, y1, x2, y2) : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n }\n\n this._xi = x2;\n this._yi = y2;\n return this;\n },\n\n /**\n * @param {number} cx\n * @param {number} cy\n * @param {number} r\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {boolean} anticlockwise\n * @return {module:zrender/core/PathProxy}\n */\n arc: function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n this.addData(CMD.A, cx, cy, r, r, startAngle, endAngle - startAngle, 0, anticlockwise ? 0 : 1);\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n this._xi = mathCos(endAngle) * r + cx;\n this._yi = mathSin(endAngle) * r + cy;\n return this;\n },\n // TODO\n arcTo: function (x1, y1, x2, y2, radius) {\n if (this._ctx) {\n this._ctx.arcTo(x1, y1, x2, y2, radius);\n }\n\n return this;\n },\n // TODO\n rect: function (x, y, w, h) {\n this._ctx && this._ctx.rect(x, y, w, h);\n this.addData(CMD.R, x, y, w, h);\n return this;\n },\n\n /**\n * @return {module:zrender/core/PathProxy}\n */\n closePath: function () {\n this.addData(CMD.Z);\n var ctx = this._ctx;\n var x0 = this._x0;\n var y0 = this._y0;\n\n if (ctx) {\n this._needsDash() && this._dashedLineTo(x0, y0);\n ctx.closePath();\n }\n\n this._xi = x0;\n this._yi = y0;\n return this;\n },\n\n /**\n * Context 从外部传入,因为有可能是 rebuildPath 完之后再 fill。\n * stroke 同样\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n fill: function (ctx) {\n ctx && ctx.fill();\n this.toStatic();\n },\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n stroke: function (ctx) {\n ctx && ctx.stroke();\n this.toStatic();\n },\n\n /**\n * 必须在其它绘制命令前调用\n * Must be invoked before all other path drawing methods\n * @return {module:zrender/core/PathProxy}\n */\n setLineDash: function (lineDash) {\n if (lineDash instanceof Array) {\n this._lineDash = lineDash;\n this._dashIdx = 0;\n var lineDashSum = 0;\n\n for (var i = 0; i < lineDash.length; i++) {\n lineDashSum += lineDash[i];\n }\n\n this._dashSum = lineDashSum;\n }\n\n return this;\n },\n\n /**\n * 必须在其它绘制命令前调用\n * Must be invoked before all other path drawing methods\n * @return {module:zrender/core/PathProxy}\n */\n setLineDashOffset: function (offset) {\n this._dashOffset = offset;\n return this;\n },\n\n /**\n *\n * @return {boolean}\n */\n len: function () {\n return this._len;\n },\n\n /**\n * 直接设置 Path 数据\n */\n setData: function (data) {\n var len = data.length;\n\n if (!(this.data && this.data.length === len) && hasTypedArray) {\n this.data = new Float32Array(len);\n }\n\n for (var i = 0; i < len; i++) {\n this.data[i] = data[i];\n }\n\n this._len = len;\n },\n\n /**\n * 添加子路径\n * @param {module:zrender/core/PathProxy|Array.} path\n */\n appendPath: function (path) {\n if (!(path instanceof Array)) {\n path = [path];\n }\n\n var len = path.length;\n var appendSize = 0;\n var offset = this._len;\n\n for (var i = 0; i < len; i++) {\n appendSize += path[i].len();\n }\n\n if (hasTypedArray && this.data instanceof Float32Array) {\n this.data = new Float32Array(offset + appendSize);\n }\n\n for (var i = 0; i < len; i++) {\n var appendPathData = path[i].data;\n\n for (var k = 0; k < appendPathData.length; k++) {\n this.data[offset++] = appendPathData[k];\n }\n }\n\n this._len = offset;\n },\n\n /**\n * 填充 Path 数据。\n * 尽量复用而不申明新的数组。大部分图形重绘的指令数据长度都是不变的。\n */\n addData: function (cmd) {\n if (!this._saveData) {\n return;\n }\n\n var data = this.data;\n\n if (this._len + arguments.length > data.length) {\n // 因为之前的数组已经转换成静态的 Float32Array\n // 所以不够用时需要扩展一个新的动态数组\n this._expandData();\n\n data = this.data;\n }\n\n for (var i = 0; i < arguments.length; i++) {\n data[this._len++] = arguments[i];\n }\n\n this._prevCmd = cmd;\n },\n _expandData: function () {\n // Only if data is Float32Array\n if (!(this.data instanceof Array)) {\n var newData = [];\n\n for (var i = 0; i < this._len; i++) {\n newData[i] = this.data[i];\n }\n\n this.data = newData;\n }\n },\n\n /**\n * If needs js implemented dashed line\n * @return {boolean}\n * @private\n */\n _needsDash: function () {\n return this._lineDash;\n },\n _dashedLineTo: function (x1, y1) {\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var x0 = this._xi;\n var y0 = this._yi;\n var dx = x1 - x0;\n var dy = y1 - y0;\n var dist = mathSqrt(dx * dx + dy * dy);\n var x = x0;\n var y = y0;\n var dash;\n var nDash = lineDash.length;\n var idx;\n dx /= dist;\n dy /= dist;\n\n if (offset < 0) {\n // Convert to positive offset\n offset = dashSum + offset;\n }\n\n offset %= dashSum;\n x -= offset * dx;\n y -= offset * dy;\n\n while (dx > 0 && x <= x1 || dx < 0 && x >= x1 || dx === 0 && (dy > 0 && y <= y1 || dy < 0 && y >= y1)) {\n idx = this._dashIdx;\n dash = lineDash[idx];\n x += dx * dash;\n y += dy * dash;\n this._dashIdx = (idx + 1) % nDash; // Skip positive offset\n\n if (dx > 0 && x < x0 || dx < 0 && x > x0 || dy > 0 && y < y0 || dy < 0 && y > y0) {\n continue;\n }\n\n ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin(x, x1) : mathMax(x, x1), dy >= 0 ? mathMin(y, y1) : mathMax(y, y1));\n } // Offset for next lineTo\n\n\n dx = x - x1;\n dy = y - y1;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n },\n // Not accurate dashed line to\n _dashedBezierTo: function (x1, y1, x2, y2, x3, y3) {\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var x0 = this._xi;\n var y0 = this._yi;\n var t;\n var dx;\n var dy;\n var cubicAt = curve.cubicAt;\n var bezierLen = 0;\n var idx = this._dashIdx;\n var nDash = lineDash.length;\n var x;\n var y;\n var tmpLen = 0;\n\n if (offset < 0) {\n // Convert to positive offset\n offset = dashSum + offset;\n }\n\n offset %= dashSum; // Bezier approx length\n\n for (t = 0; t < 1; t += 0.1) {\n dx = cubicAt(x0, x1, x2, x3, t + 0.1) - cubicAt(x0, x1, x2, x3, t);\n dy = cubicAt(y0, y1, y2, y3, t + 0.1) - cubicAt(y0, y1, y2, y3, t);\n bezierLen += mathSqrt(dx * dx + dy * dy);\n } // Find idx after add offset\n\n\n for (; idx < nDash; idx++) {\n tmpLen += lineDash[idx];\n\n if (tmpLen > offset) {\n break;\n }\n }\n\n t = (tmpLen - offset) / bezierLen;\n\n while (t <= 1) {\n x = cubicAt(x0, x1, x2, x3, t);\n y = cubicAt(y0, y1, y2, y3, t); // Use line to approximate dashed bezier\n // Bad result if dash is long\n\n idx % 2 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);\n t += lineDash[idx] / bezierLen;\n idx = (idx + 1) % nDash;\n } // Finish the last segment and calculate the new offset\n\n\n idx % 2 !== 0 && ctx.lineTo(x3, y3);\n dx = x3 - x;\n dy = y3 - y;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n },\n _dashedQuadraticTo: function (x1, y1, x2, y2) {\n // Convert quadratic to cubic using degree elevation\n var x3 = x2;\n var y3 = y2;\n x2 = (x2 + 2 * x1) / 3;\n y2 = (y2 + 2 * y1) / 3;\n x1 = (this._xi + 2 * x1) / 3;\n y1 = (this._yi + 2 * y1) / 3;\n\n this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\n },\n\n /**\n * 转成静态的 Float32Array 减少堆内存占用\n * Convert dynamic array to static Float32Array\n */\n toStatic: function () {\n var data = this.data;\n\n if (data instanceof Array) {\n data.length = this._len;\n\n if (hasTypedArray) {\n this.data = new Float32Array(data);\n }\n }\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function () {\n min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n var data = this.data;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n min2[0] = x0;\n min2[1] = y0;\n max2[0] = x0;\n max2[1] = y0;\n break;\n\n case CMD.L:\n bbox.fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n bbox.fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n bbox.fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle; // TODO Arc 旋转\n\n i += 1;\n var anticlockwise = 1 - data[i++];\n\n if (i === 1) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n\n bbox.fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++]; // Use fromLine\n\n bbox.fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n break;\n\n case CMD.Z:\n xi = x0;\n yi = y0;\n break;\n } // Union\n\n\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n } // No data\n\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n },\n\n /**\n * Rebuild path from current data\n * Rebuild path will not consider javascript implemented line dash.\n * @param {CanvasRenderingContext2D} ctx\n */\n rebuildPath: function (ctx) {\n var d = this.data;\n var x0;\n var y0;\n var xi;\n var yi;\n var x;\n var y;\n var ux = this._ux;\n var uy = this._uy;\n var len = this._len;\n\n for (var i = 0; i < len;) {\n var cmd = d[i++];\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = d[i];\n yi = d[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n x0 = xi = d[i++];\n y0 = yi = d[i++];\n ctx.moveTo(xi, yi);\n break;\n\n case CMD.L:\n x = d[i++];\n y = d[i++]; // Not draw too small seg between\n\n if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\n ctx.lineTo(x, y);\n xi = x;\n yi = y;\n }\n\n break;\n\n case CMD.C:\n ctx.bezierCurveTo(d[i++], d[i++], d[i++], d[i++], d[i++], d[i++]);\n xi = d[i - 2];\n yi = d[i - 1];\n break;\n\n case CMD.Q:\n ctx.quadraticCurveTo(d[i++], d[i++], d[i++], d[i++]);\n xi = d[i - 2];\n yi = d[i - 1];\n break;\n\n case CMD.A:\n var cx = d[i++];\n var cy = d[i++];\n var rx = d[i++];\n var ry = d[i++];\n var theta = d[i++];\n var dTheta = d[i++];\n var psi = d[i++];\n var fs = d[i++];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n var isEllipse = Math.abs(rx - ry) > 1e-3;\n var endAngle = theta + dTheta;\n\n if (isEllipse) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, endAngle, 1 - fs);\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n } else {\n ctx.arc(cx, cy, r, theta, endAngle, 1 - fs);\n }\n\n if (i === 1) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = mathCos(theta) * rx + cx;\n y0 = mathSin(theta) * ry + cy;\n }\n\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = d[i];\n y0 = yi = d[i + 1];\n ctx.rect(d[i++], d[i++], d[i++], d[i++]);\n break;\n\n case CMD.Z:\n ctx.closePath();\n xi = x0;\n yi = y0;\n }\n }\n }\n};\nPathProxy.CMD = CMD;\nvar _default = PathProxy;\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 features = {};\n\nfunction register(name, ctor) {\n features[name] = ctor;\n}\n\nfunction get(name) {\n return features[name];\n}\n\nexports.register = register;\nexports.get = get;","\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 Tree = require(\"../../data/Tree\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar Model = require(\"../../model/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*/\nvar _default = SeriesModel.extend({\n type: 'series.tree',\n layoutInfo: null,\n // can support the position parameters 'left', 'top','right','bottom', 'width',\n // 'height' in the setOption() with 'merge' mode normal.\n layoutMode: 'box',\n\n /**\n * Init a tree data structure from data in option series\n * @param {Object} option the object used to config echarts view\n * @return {module:echarts/data/List} storage initial data\n */\n getInitialData: function (option) {\n //create an virtual root\n var root = {\n name: option.name,\n children: option.data\n };\n var leaves = option.leaves || {};\n var leavesModel = new Model(leaves, this, this.ecModel);\n var tree = Tree.createTree(root, this, beforeLink);\n\n function beforeLink(nodeData) {\n nodeData.wrapMethod('getItemModel', function (model, idx) {\n var node = tree.getNodeByDataIndex(idx);\n\n if (!node.children.length || !node.isExpand) {\n model.parentModel = leavesModel;\n }\n\n return model;\n });\n }\n\n var treeDepth = 0;\n tree.eachNode('preorder', function (node) {\n if (node.depth > treeDepth) {\n treeDepth = node.depth;\n }\n });\n var expandAndCollapse = option.expandAndCollapse;\n var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth;\n tree.root.eachNode('preorder', function (node) {\n var item = node.hostTree.data.getRawDataItem(node.dataIndex); // Add item.collapsed != null, because users can collapse node original in the series.data.\n\n node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth;\n });\n return tree.data;\n },\n\n /**\n * Make the configuration 'orient' backward compatibly, with 'horizontal = LR', 'vertical = TB'.\n * @returns {string} orient\n */\n getOrient: function () {\n var orient = this.get('orient');\n\n if (orient === 'horizontal') {\n orient = 'LR';\n } else if (orient === 'vertical') {\n orient = 'TB';\n }\n\n return orient;\n },\n setZoom: function (zoom) {\n this.option.zoom = zoom;\n },\n setCenter: function (center) {\n this.option.center = center;\n },\n\n /**\n * @override\n * @param {number} dataIndex\n */\n formatTooltip: function (dataIndex) {\n var tree = this.getData().tree;\n var realRoot = tree.root.children[0];\n var node = tree.getNodeByDataIndex(dataIndex);\n var value = node.getValue();\n var name = node.name;\n\n while (node && node !== realRoot) {\n name = node.parentNode.name + '.' + name;\n node = node.parentNode;\n }\n\n return encodeHTML(name + (isNaN(value) || value == null ? '' : ' : ' + value));\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'view',\n // the position of the whole view\n left: '12%',\n top: '12%',\n right: '12%',\n bottom: '12%',\n // the layout of the tree, two value can be selected, 'orthogonal' or 'radial'\n layout: 'orthogonal',\n // value can be 'polyline'\n edgeShape: 'curve',\n edgeForkPosition: '50%',\n // true | false | 'move' | 'scale', see module:component/helper/RoamController.\n roam: false,\n // Symbol size scale ratio in roam\n nodeScaleRatio: 0.4,\n // Default on center of graph\n center: null,\n zoom: 1,\n // The orient of orthoginal layout, can be setted to 'LR', 'TB', 'RL', 'BT'.\n // and the backward compatibility configuration 'horizontal = LR', 'vertical = TB'.\n orient: 'LR',\n symbol: 'emptyCircle',\n symbolSize: 7,\n expandAndCollapse: true,\n initialTreeDepth: 2,\n lineStyle: {\n color: '#ccc',\n width: 1.5,\n curveness: 0.5\n },\n itemStyle: {\n color: 'lightsteelblue',\n borderColor: '#c23531',\n borderWidth: 1.5\n },\n label: {\n show: true,\n color: '#555'\n },\n leaves: {\n label: {\n show: true\n }\n },\n animationEasing: 'linear',\n animationDuration: 700,\n animationDurationUpdate: 1000\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 numberUtil = require(\"../util/number\");\n\nvar formatUtil = require(\"../util/format\");\n\nvar scaleHelper = require(\"./helper\");\n\nvar IntervalScale = require(\"./Interval\");\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* A third-party license is embeded for some of the code in this file:\n* The \"scaleLevels\" was originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment on the definition of \"scaleLevels\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\n// [About UTC and local time zone]:\n// In most cases, `number.parseDate` will treat input data string as local time\n// (except time zone is specified in time string). And `format.formateTime` returns\n// local time by default. option.useUTC is false by default. This design have\n// concidered these common case:\n// (1) Time that is persistent in server is in UTC, but it is needed to be diplayed\n// in local time by default.\n// (2) By default, the input data string (e.g., '2011-01-02') should be displayed\n// as its original time, without any time difference.\nvar intervalScaleProto = IntervalScale.prototype;\nvar mathCeil = Math.ceil;\nvar mathFloor = Math.floor;\nvar ONE_SECOND = 1000;\nvar ONE_MINUTE = ONE_SECOND * 60;\nvar ONE_HOUR = ONE_MINUTE * 60;\nvar ONE_DAY = ONE_HOUR * 24; // FIXME 公用?\n\nvar bisect = function (a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n\n if (a[mid][1] < x) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n\n return lo;\n};\n/**\n * @alias module:echarts/coord/scale/Time\n * @constructor\n */\n\n\nvar TimeScale = IntervalScale.extend({\n type: 'time',\n\n /**\n * @override\n */\n getLabel: function (val) {\n var stepLvl = this._stepLvl;\n var date = new Date(val);\n return formatUtil.formatTime(stepLvl[0], date, this.getSetting('useUTC'));\n },\n\n /**\n * @override\n */\n niceExtent: function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n // Expand extent\n extent[0] -= ONE_DAY;\n extent[1] += ONE_DAY;\n } // If there are no data and extent are [Infinity, -Infinity]\n\n\n if (extent[1] === -Infinity && extent[0] === Infinity) {\n var d = new Date();\n extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\n extent[0] = extent[1] - ONE_DAY;\n }\n\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n var interval = this._interval;\n\n if (!opt.fixMin) {\n extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);\n }\n\n if (!opt.fixMax) {\n extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);\n }\n },\n\n /**\n * @override\n */\n niceTicks: function (approxTickNum, minInterval, maxInterval) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n var approxInterval = span / approxTickNum;\n\n if (minInterval != null && approxInterval < minInterval) {\n approxInterval = minInterval;\n }\n\n if (maxInterval != null && approxInterval > maxInterval) {\n approxInterval = maxInterval;\n }\n\n var scaleLevelsLen = scaleLevels.length;\n var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);\n var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];\n var interval = level[1]; // Same with interval scale if span is much larger than 1 year\n\n if (level[0] === 'year') {\n var yearSpan = span / interval; // From \"Nice Numbers for Graph Labels\" of Graphic Gems\n // var niceYearSpan = numberUtil.nice(yearSpan, false);\n\n var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);\n interval *= yearStep;\n }\n\n var timezoneOffset = this.getSetting('useUTC') ? 0 : new Date(+extent[0] || +extent[1]).getTimezoneOffset() * 60 * 1000;\n var niceExtent = [Math.round(mathCeil((extent[0] - timezoneOffset) / interval) * interval + timezoneOffset), Math.round(mathFloor((extent[1] - timezoneOffset) / interval) * interval + timezoneOffset)];\n scaleHelper.fixExtent(niceExtent, extent);\n this._stepLvl = level; // Interval will be used in getTicks\n\n this._interval = interval;\n this._niceExtent = niceExtent;\n },\n parse: function (val) {\n // val might be float.\n return +numberUtil.parseDate(val);\n }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n TimeScale.prototype[methodName] = function (val) {\n return intervalScaleProto[methodName].call(this, this.parse(val));\n };\n});\n/**\n * This implementation was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\nvar scaleLevels = [// Format interval\n['hh:mm:ss', ONE_SECOND], // 1s\n['hh:mm:ss', ONE_SECOND * 5], // 5s\n['hh:mm:ss', ONE_SECOND * 10], // 10s\n['hh:mm:ss', ONE_SECOND * 15], // 15s\n['hh:mm:ss', ONE_SECOND * 30], // 30s\n['hh:mm\\nMM-dd', ONE_MINUTE], // 1m\n['hh:mm\\nMM-dd', ONE_MINUTE * 5], // 5m\n['hh:mm\\nMM-dd', ONE_MINUTE * 10], // 10m\n['hh:mm\\nMM-dd', ONE_MINUTE * 15], // 15m\n['hh:mm\\nMM-dd', ONE_MINUTE * 30], // 30m\n['hh:mm\\nMM-dd', ONE_HOUR], // 1h\n['hh:mm\\nMM-dd', ONE_HOUR * 2], // 2h\n['hh:mm\\nMM-dd', ONE_HOUR * 6], // 6h\n['hh:mm\\nMM-dd', ONE_HOUR * 12], // 12h\n['MM-dd\\nyyyy', ONE_DAY], // 1d\n['MM-dd\\nyyyy', ONE_DAY * 2], // 2d\n['MM-dd\\nyyyy', ONE_DAY * 3], // 3d\n['MM-dd\\nyyyy', ONE_DAY * 4], // 4d\n['MM-dd\\nyyyy', ONE_DAY * 5], // 5d\n['MM-dd\\nyyyy', ONE_DAY * 6], // 6d\n['week', ONE_DAY * 7], // 7d\n['MM-dd\\nyyyy', ONE_DAY * 10], // 10d\n['week', ONE_DAY * 14], // 2w\n['week', ONE_DAY * 21], // 3w\n['month', ONE_DAY * 31], // 1M\n['week', ONE_DAY * 42], // 6w\n['month', ONE_DAY * 62], // 2M\n['week', ONE_DAY * 70], // 10w\n['quarter', ONE_DAY * 95], // 3M\n['month', ONE_DAY * 31 * 4], // 4M\n['month', ONE_DAY * 31 * 5], // 5M\n['half-year', ONE_DAY * 380 / 2], // 6M\n['month', ONE_DAY * 31 * 8], // 8M\n['month', ONE_DAY * 31 * 10], // 10M\n['year', ONE_DAY * 380] // 1Y\n];\n/**\n * @param {module:echarts/model/Model}\n * @return {module:echarts/scale/Time}\n */\n\nTimeScale.create = function (model) {\n return new TimeScale({\n useUTC: model.ecModel.get('useUTC')\n });\n};\n\nvar _default = TimeScale;\nmodule.exports = _default;","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/auto/series\",\n function () {\n return require(\"private-next-pages/auto/series.tsx\");\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 _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 Component = require(\"../../model/Component\");\n\nrequire(\"./AxisModel\");\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 = Component.extend({\n type: 'parallel',\n dependencies: ['parallelAxis'],\n\n /**\n * @type {module:echarts/coord/parallel/Parallel}\n */\n coordinateSystem: null,\n\n /**\n * Each item like: 'dim0', 'dim1', 'dim2', ...\n * @type {Array.}\n * @readOnly\n */\n dimensions: null,\n\n /**\n * Coresponding to dimensions.\n * @type {Array.}\n * @readOnly\n */\n parallelAxisIndex: null,\n layoutMode: 'box',\n defaultOption: {\n zlevel: 0,\n z: 0,\n left: 80,\n top: 60,\n right: 80,\n bottom: 60,\n // width: {totalWidth} - left - right,\n // height: {totalHeight} - top - bottom,\n layout: 'horizontal',\n // 'horizontal' or 'vertical'\n // FIXME\n // naming?\n axisExpandable: false,\n axisExpandCenter: null,\n axisExpandCount: 0,\n axisExpandWidth: 50,\n // FIXME '10%' ?\n axisExpandRate: 17,\n axisExpandDebounce: 50,\n // [out, in, jumpTarget]. In percentage. If use [null, 0.05], null means full.\n // Do not doc to user until necessary.\n axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4],\n axisExpandTriggerOn: 'click',\n // 'mousemove' or 'click'\n parallelAxisDefault: null\n },\n\n /**\n * @override\n */\n init: function () {\n Component.prototype.init.apply(this, arguments);\n this.mergeOption({});\n },\n\n /**\n * @override\n */\n mergeOption: function (newOption) {\n var thisOption = this.option;\n newOption && zrUtil.merge(thisOption, newOption, true);\n\n this._initDimensions();\n },\n\n /**\n * Whether series or axis is in this coordinate system.\n * @param {module:echarts/model/Series|module:echarts/coord/parallel/AxisModel} model\n * @param {module:echarts/model/Global} ecModel\n */\n contains: function (model, ecModel) {\n var parallelIndex = model.get('parallelIndex');\n return parallelIndex != null && ecModel.getComponent('parallel', parallelIndex) === this;\n },\n setAxisExpand: function (opt) {\n zrUtil.each(['axisExpandable', 'axisExpandCenter', 'axisExpandCount', 'axisExpandWidth', 'axisExpandWindow'], function (name) {\n if (opt.hasOwnProperty(name)) {\n this.option[name] = opt[name];\n }\n }, this);\n },\n\n /**\n * @private\n */\n _initDimensions: function () {\n var dimensions = this.dimensions = [];\n var parallelAxisIndex = this.parallelAxisIndex = [];\n var axisModels = zrUtil.filter(this.dependentModels.parallelAxis, function (axisModel) {\n // Can not use this.contains here, because\n // initialization has not been completed yet.\n return (axisModel.get('parallelIndex') || 0) === this.componentIndex;\n }, this);\n zrUtil.each(axisModels, function (axisModel) {\n dimensions.push('dim' + axisModel.get('dim'));\n parallelAxisIndex.push(axisModel.componentIndex);\n });\n }\n});\n\nmodule.exports = _default;","/**\n * echarts设备环境识别\n *\n * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。\n * @author firede[firede@firede.us]\n * @desc thanks zepto.\n */\n\n/* global wx */\nvar env = {};\n\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n // In Weixin Application\n env = {\n browser: {},\n os: {},\n node: false,\n wxa: true,\n // Weixin Application\n canvasSupported: true,\n svgSupported: false,\n touchEventsSupported: true,\n domSupported: false\n };\n} else if (typeof document === 'undefined' && typeof self !== 'undefined') {\n // In worker\n env = {\n browser: {},\n os: {},\n node: false,\n worker: true,\n canvasSupported: true,\n domSupported: false\n };\n} else if (typeof navigator === 'undefined') {\n // In node\n env = {\n browser: {},\n os: {},\n node: true,\n worker: false,\n // Assume canvas is supported\n canvasSupported: true,\n svgSupported: true,\n domSupported: false\n };\n} else {\n env = detect(navigator.userAgent);\n}\n\nvar _default = env; // Zepto.js\n// (c) 2010-2013 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nfunction detect(ua) {\n var os = {};\n var browser = {}; // var webkit = ua.match(/Web[kK]it[\\/]{0,1}([\\d.]+)/);\n // var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n // var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n // var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n // var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n // var webos = ua.match(/(webOS|hpwOS)[\\s\\/]([\\d.]+)/);\n // var touchpad = webos && ua.match(/TouchPad/);\n // var kindle = ua.match(/Kindle\\/([\\d.]+)/);\n // var silk = ua.match(/Silk\\/([\\d._]+)/);\n // var blackberry = ua.match(/(BlackBerry).*Version\\/([\\d.]+)/);\n // var bb10 = ua.match(/(BB10).*Version\\/([\\d.]+)/);\n // var rimtabletos = ua.match(/(RIM\\sTablet\\sOS)\\s([\\d.]+)/);\n // var playbook = ua.match(/PlayBook/);\n // var chrome = ua.match(/Chrome\\/([\\d.]+)/) || ua.match(/CriOS\\/([\\d.]+)/);\n\n var firefox = ua.match(/Firefox\\/([\\d.]+)/); // var safari = webkit && ua.match(/Mobile\\//) && !chrome;\n // var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome;\n\n var ie = ua.match(/MSIE\\s([\\d.]+)/) // IE 11 Trident/7.0; rv:11.0\n || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n var edge = ua.match(/Edge\\/([\\d.]+)/); // IE 12 and 12+\n\n var weChat = /micromessenger/i.test(ua); // Todo: clean this up with a better OS/browser seperation:\n // - discern (more) between multiple browsers on android\n // - decide if kindle fire in silk mode is android or not\n // - Firefox on Android doesn't specify the Android version\n // - possibly devide in os, device and browser hashes\n // if (browser.webkit = !!webkit) browser.version = webkit[1];\n // if (android) os.android = true, os.version = android[2];\n // if (iphone && !ipod) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.');\n // if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.');\n // if (ipod) os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n // if (webos) os.webos = true, os.version = webos[2];\n // if (touchpad) os.touchpad = true;\n // if (blackberry) os.blackberry = true, os.version = blackberry[2];\n // if (bb10) os.bb10 = true, os.version = bb10[2];\n // if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2];\n // if (playbook) browser.playbook = true;\n // if (kindle) os.kindle = true, os.version = kindle[1];\n // if (silk) browser.silk = true, browser.version = silk[1];\n // if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true;\n // if (chrome) browser.chrome = true, browser.version = chrome[1];\n\n if (firefox) {\n browser.firefox = true;\n browser.version = firefox[1];\n } // if (safari && (ua.match(/Safari/) || !!os.ios)) browser.safari = true;\n // if (webview) browser.webview = true;\n\n\n if (ie) {\n browser.ie = true;\n browser.version = ie[1];\n }\n\n if (edge) {\n browser.edge = true;\n browser.version = edge[1];\n } // It is difficult to detect WeChat in Win Phone precisely, because ua can\n // not be set on win phone. So we do not consider Win Phone.\n\n\n if (weChat) {\n browser.weChat = true;\n } // os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) ||\n // (firefox && ua.match(/Tablet/)) || (ie && !ua.match(/Phone/) && ua.match(/Touch/)));\n // os.phone = !!(!os.tablet && !os.ipod && (android || iphone || webos ||\n // (chrome && ua.match(/Android/)) || (chrome && ua.match(/CriOS\\/([\\d.]+)/)) ||\n // (firefox && ua.match(/Mobile/)) || (ie && ua.match(/Touch/))));\n\n\n return {\n browser: browser,\n os: os,\n node: false,\n // 原生canvas支持,改极端点了\n // canvasSupported : !(browser.ie && parseFloat(browser.version) < 9)\n canvasSupported: !!document.createElement('canvas').getContext,\n svgSupported: typeof SVGRect !== 'undefined',\n // works on most browsers\n // IE10/11 does not support touch event, and MS Edge supports them but not by\n // default, so we dont check navigator.maxTouchPoints for them here.\n touchEventsSupported: 'ontouchstart' in window && !browser.ie && !browser.edge,\n // .\n pointerEventsSupported: // (1) Firefox supports pointer but not by default, only MS browsers are reliable on pointer\n // events currently. So we dont use that on other browsers unless tested sufficiently.\n // For example, in iOS 13 Mobile Chromium 78, if the touching behavior starts page\n // scroll, the `pointermove` event can not be fired any more. That will break some\n // features like \"pan horizontally to move something and pan vertically to page scroll\".\n // The horizontal pan probably be interrupted by the casually triggered page scroll.\n // (2) Although IE 10 supports pointer event, it use old style and is different from the\n // standard. So we exclude that. (IE 10 is hardly used on touch device)\n 'onpointerdown' in window && (browser.edge || browser.ie && browser.version >= 11),\n // passiveSupported: detectPassiveSupport()\n domSupported: typeof document !== 'undefined'\n };\n} // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n// function detectPassiveSupport() {\n// // Test via a getter in the options object to see if the passive property is accessed\n// var supportsPassive = false;\n// try {\n// var opts = Object.defineProperty({}, 'passive', {\n// get: function() {\n// supportsPassive = true;\n// }\n// });\n// window.addEventListener('testPassive', function() {}, opts);\n// } catch (e) {\n// }\n// return supportsPassive;\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\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* A third-party license is embeded for some of the code in this file:\n* The tree layoutHelper implementation was originally copied from\n* \"d3.js\"(https://github.com/d3/d3-hierarchy) with\n* some modifications made for this project.\n* (see more details in the comment of the specific method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the licence of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\n\n/**\n * @file The layout algorithm of node-link tree diagrams. Here we using Reingold-Tilford algorithm to drawing\n * the tree.\n */\n\n/**\n * Initialize all computational message for following algorithm.\n *\n * @param {module:echarts/data/Tree~TreeNode} root The virtual root of the tree.\n */\nfunction init(root) {\n root.hierNode = {\n defaultAncestor: null,\n ancestor: root,\n prelim: 0,\n modifier: 0,\n change: 0,\n shift: 0,\n i: 0,\n thread: null\n };\n var nodes = [root];\n var node;\n var children;\n\n while (node = nodes.pop()) {\n // jshint ignore:line\n children = node.children;\n\n if (node.isExpand && children.length) {\n var n = children.length;\n\n for (var i = n - 1; i >= 0; i--) {\n var child = children[i];\n child.hierNode = {\n defaultAncestor: null,\n ancestor: child,\n prelim: 0,\n modifier: 0,\n change: 0,\n shift: 0,\n i: i,\n thread: null\n };\n nodes.push(child);\n }\n }\n }\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Computes a preliminary x coordinate for node. Before that, this function is\n * applied recursively to the children of node, as well as the function\n * apportion(). After spacing out the children by calling executeShifts(), the\n * node is placed to the midpoint of its outermost children.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n * @param {Function} separation\n */\n\n\nfunction firstWalk(node, separation) {\n var children = node.isExpand ? node.children : [];\n var siblings = node.parentNode.children;\n var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null;\n\n if (children.length) {\n executeShifts(node);\n var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2;\n\n if (subtreeW) {\n node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n node.hierNode.modifier = node.hierNode.prelim - midPoint;\n } else {\n node.hierNode.prelim = midPoint;\n }\n } else if (subtreeW) {\n node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n }\n\n node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation);\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Computes all real x-coordinates by summing up the modifiers recursively.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n */\n\n\nfunction secondWalk(node) {\n var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier;\n node.setLayout({\n x: nodeX\n }, true);\n node.hierNode.modifier += node.parentNode.hierNode.modifier;\n}\n\nfunction separation(cb) {\n return arguments.length ? cb : defaultSeparation;\n}\n/**\n * Transform the common coordinate to radial coordinate.\n *\n * @param {number} x\n * @param {number} y\n * @return {Object}\n */\n\n\nfunction radialCoordinate(x, y) {\n var radialCoor = {};\n x -= Math.PI / 2;\n radialCoor.x = y * Math.cos(x);\n radialCoor.y = y * Math.sin(x);\n return radialCoor;\n}\n/**\n * Get the layout position of the whole view.\n *\n * @param {module:echarts/model/Series} seriesModel the model object of sankey series\n * @param {module:echarts/ExtensionAPI} api provide the API list that the developer can call\n * @return {module:zrender/core/BoundingRect} size of rect to draw the sankey view\n */\n\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n/**\n * All other shifts, applied to the smaller subtrees between w- and w+, are\n * performed by this function.\n *\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n */\n\n\nfunction executeShifts(node) {\n var children = node.children;\n var n = children.length;\n var shift = 0;\n var change = 0;\n\n while (--n >= 0) {\n var child = children[n];\n child.hierNode.prelim += shift;\n child.hierNode.modifier += shift;\n change += child.hierNode.change;\n shift += child.hierNode.shift + change;\n }\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * The core of the algorithm. Here, a new subtree is combined with the\n * previous subtrees. Threads are used to traverse the inside and outside\n * contours of the left and right subtree up to the highest common level.\n * Whenever two nodes of the inside contours conflict, we compute the left\n * one of the greatest uncommon ancestors using the function nextAncestor()\n * and call moveSubtree() to shift the subtree and prepare the shifts of\n * smaller subtrees. Finally, we add a new thread (if necessary).\n *\n * @param {module:echarts/data/Tree~TreeNode} subtreeV\n * @param {module:echarts/data/Tree~TreeNode} subtreeW\n * @param {module:echarts/data/Tree~TreeNode} ancestor\n * @param {Function} separation\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction apportion(subtreeV, subtreeW, ancestor, separation) {\n if (subtreeW) {\n var nodeOutRight = subtreeV;\n var nodeInRight = subtreeV;\n var nodeOutLeft = nodeInRight.parentNode.children[0];\n var nodeInLeft = subtreeW;\n var sumOutRight = nodeOutRight.hierNode.modifier;\n var sumInRight = nodeInRight.hierNode.modifier;\n var sumOutLeft = nodeOutLeft.hierNode.modifier;\n var sumInLeft = nodeInLeft.hierNode.modifier;\n\n while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) {\n nodeOutRight = nextRight(nodeOutRight);\n nodeOutLeft = nextLeft(nodeOutLeft);\n nodeOutRight.hierNode.ancestor = subtreeV;\n var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation(nodeInLeft, nodeInRight);\n\n if (shift > 0) {\n moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift);\n sumInRight += shift;\n sumOutRight += shift;\n }\n\n sumInLeft += nodeInLeft.hierNode.modifier;\n sumInRight += nodeInRight.hierNode.modifier;\n sumOutRight += nodeOutRight.hierNode.modifier;\n sumOutLeft += nodeOutLeft.hierNode.modifier;\n }\n\n if (nodeInLeft && !nextRight(nodeOutRight)) {\n nodeOutRight.hierNode.thread = nodeInLeft;\n nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight;\n }\n\n if (nodeInRight && !nextLeft(nodeOutLeft)) {\n nodeOutLeft.hierNode.thread = nodeInRight;\n nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft;\n ancestor = subtreeV;\n }\n }\n\n return ancestor;\n}\n/**\n * This function is used to traverse the right contour of a subtree.\n * It returns the rightmost child of node or the thread of node. The function\n * returns null if and only if node is on the highest depth of its subtree.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextRight(node) {\n var children = node.children;\n return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread;\n}\n/**\n * This function is used to traverse the left contour of a subtree (or a subforest).\n * It returns the leftmost child of node or the thread of node. The function\n * returns null if and only if node is on the highest depth of its subtree.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextLeft(node) {\n var children = node.children;\n return children.length && node.isExpand ? children[0] : node.hierNode.thread;\n}\n/**\n * If nodeInLeft’s ancestor is a sibling of node, returns nodeInLeft’s ancestor.\n * Otherwise, returns the specified ancestor.\n *\n * @param {module:echarts/data/Tree~TreeNode} nodeInLeft\n * @param {module:echarts/data/Tree~TreeNode} node\n * @param {module:echarts/data/Tree~TreeNode} ancestor\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextAncestor(nodeInLeft, node, ancestor) {\n return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor;\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Shifts the current subtree rooted at wr.\n * This is done by increasing prelim(w+) and modifier(w+) by shift.\n *\n * @param {module:echarts/data/Tree~TreeNode} wl\n * @param {module:echarts/data/Tree~TreeNode} wr\n * @param {number} shift [description]\n */\n\n\nfunction moveSubtree(wl, wr, shift) {\n var change = shift / (wr.hierNode.i - wl.hierNode.i);\n wr.hierNode.change -= change;\n wr.hierNode.shift += shift;\n wr.hierNode.modifier += shift;\n wr.hierNode.prelim += shift;\n wl.hierNode.change += change;\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\n\nfunction defaultSeparation(node1, node2) {\n return node1.parentNode === node2.parentNode ? 1 : 2;\n}\n\nexports.init = init;\nexports.firstWalk = firstWalk;\nexports.secondWalk = secondWalk;\nexports.separation = separation;\nexports.radialCoordinate = radialCoordinate;\nexports.getViewRect = getViewRect;","\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 pathTool = require(\"zrender/lib/tool/path\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar Transformable = require(\"zrender/lib/mixin/Transformable\");\n\nvar ZImage = require(\"zrender/lib/graphic/Image\");\n\nexports.Image = ZImage;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nexports.Group = Group;\n\nvar Text = require(\"zrender/lib/graphic/Text\");\n\nexports.Text = Text;\n\nvar Circle = require(\"zrender/lib/graphic/shape/Circle\");\n\nexports.Circle = Circle;\n\nvar Sector = require(\"zrender/lib/graphic/shape/Sector\");\n\nexports.Sector = Sector;\n\nvar Ring = require(\"zrender/lib/graphic/shape/Ring\");\n\nexports.Ring = Ring;\n\nvar Polygon = require(\"zrender/lib/graphic/shape/Polygon\");\n\nexports.Polygon = Polygon;\n\nvar Polyline = require(\"zrender/lib/graphic/shape/Polyline\");\n\nexports.Polyline = Polyline;\n\nvar Rect = require(\"zrender/lib/graphic/shape/Rect\");\n\nexports.Rect = Rect;\n\nvar Line = require(\"zrender/lib/graphic/shape/Line\");\n\nexports.Line = Line;\n\nvar BezierCurve = require(\"zrender/lib/graphic/shape/BezierCurve\");\n\nexports.BezierCurve = BezierCurve;\n\nvar Arc = require(\"zrender/lib/graphic/shape/Arc\");\n\nexports.Arc = Arc;\n\nvar CompoundPath = require(\"zrender/lib/graphic/CompoundPath\");\n\nexports.CompoundPath = CompoundPath;\n\nvar LinearGradient = require(\"zrender/lib/graphic/LinearGradient\");\n\nexports.LinearGradient = LinearGradient;\n\nvar RadialGradient = require(\"zrender/lib/graphic/RadialGradient\");\n\nexports.RadialGradient = RadialGradient;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nexports.BoundingRect = BoundingRect;\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\nexports.IncrementalDisplayable = IncrementalDisplayable;\n\nvar subPixelOptimizeUtil = require(\"zrender/lib/graphic/helper/subPixelOptimize\");\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 mathMax = Math.max;\nvar mathMin = Math.min;\nvar EMPTY_OBJ = {};\nvar Z2_EMPHASIS_LIFT = 1; // key: label model property nane, value: style property name.\n\nvar CACHED_LABEL_STYLE_PROPERTIES = {\n color: 'textFill',\n textBorderColor: 'textStroke',\n textBorderWidth: 'textStrokeWidth'\n};\nvar EMPHASIS = 'emphasis';\nvar NORMAL = 'normal'; // Reserve 0 as default.\n\nvar _highlightNextDigit = 1;\nvar _highlightKeyMap = {};\nvar _customShapeMap = {};\n/**\n * Extend shape with parameters\n */\n\nfunction extendShape(opts) {\n return Path.extend(opts);\n}\n/**\n * Extend path\n */\n\n\nfunction extendPath(pathData, opts) {\n return pathTool.extendFromString(pathData, opts);\n}\n/**\n * Register a user defined shape.\n * The shape class can be fetched by `getShapeClass`\n * This method will overwrite the registered shapes, including\n * the registered built-in shapes, if using the same `name`.\n * The shape can be used in `custom series` and\n * `graphic component` by declaring `{type: name}`.\n *\n * @param {string} name\n * @param {Object} ShapeClass Can be generated by `extendShape`.\n */\n\n\nfunction registerShape(name, ShapeClass) {\n _customShapeMap[name] = ShapeClass;\n}\n/**\n * Find shape class registered by `registerShape`. Usually used in\n * fetching user defined shape.\n *\n * [Caution]:\n * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared\n * to use user registered shapes.\n * Because the built-in shape (see `getBuiltInShape`) will be registered by\n * `registerShape` by default. That enables users to get both built-in\n * shapes as well as the shapes belonging to themsleves. But users can overwrite\n * the built-in shapes by using names like 'circle', 'rect' via calling\n * `registerShape`. So the echarts inner featrues should not fetch shapes from here\n * in case that it is overwritten by users, except that some features, like\n * `custom series`, `graphic component`, do it deliberately.\n *\n * (2) In the features like `custom series`, `graphic component`, the user input\n * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic\n * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names\n * are reserved names, that is, if some user register a shape named `'image'`,\n * the shape will not be used. If we intending to add some more reserved names\n * in feature, that might bring break changes (disable some existing user shape\n * names). But that case probably rearly happen. So we dont make more mechanism\n * to resolve this issue here.\n *\n * @param {string} name\n * @return {Object} The shape class. If not found, return nothing.\n */\n\n\nfunction getShapeClass(name) {\n if (_customShapeMap.hasOwnProperty(name)) {\n return _customShapeMap[name];\n }\n}\n/**\n * Create a path element from path data string\n * @param {string} pathData\n * @param {Object} opts\n * @param {module:zrender/core/BoundingRect} rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makePath(pathData, opts, rect, layout) {\n var path = pathTool.createFromString(pathData, opts);\n\n if (rect) {\n if (layout === 'center') {\n rect = centerGraphic(rect, path.getBoundingRect());\n }\n\n resizePath(path, rect);\n }\n\n return path;\n}\n/**\n * Create a image element from image url\n * @param {string} imageUrl image url\n * @param {Object} opts options\n * @param {module:zrender/core/BoundingRect} rect constrain rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makeImage(imageUrl, rect, layout) {\n var path = new ZImage({\n style: {\n image: imageUrl,\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n onload: function (img) {\n if (layout === 'center') {\n var boundingRect = {\n width: img.width,\n height: img.height\n };\n path.setStyle(centerGraphic(rect, boundingRect));\n }\n }\n });\n return path;\n}\n/**\n * Get position of centered element in bounding box.\n *\n * @param {Object} rect element local bounding box\n * @param {Object} boundingRect constraint bounding box\n * @return {Object} element position containing x, y, width, and height\n */\n\n\nfunction centerGraphic(rect, boundingRect) {\n // Set rect to center, keep width / height ratio.\n var aspect = boundingRect.width / boundingRect.height;\n var width = rect.height * aspect;\n var height;\n\n if (width <= rect.width) {\n height = rect.height;\n } else {\n width = rect.width;\n height = width / aspect;\n }\n\n var cx = rect.x + rect.width / 2;\n var cy = rect.y + rect.height / 2;\n return {\n x: cx - width / 2,\n y: cy - height / 2,\n width: width,\n height: height\n };\n}\n\nvar mergePath = pathTool.mergePath;\n/**\n * Resize a path to fit the rect\n * @param {module:zrender/graphic/Path} path\n * @param {Object} rect\n */\n\nfunction resizePath(path, rect) {\n if (!path.applyTransform) {\n return;\n }\n\n var pathRect = path.getBoundingRect();\n var m = pathRect.calculateTransform(rect);\n path.applyTransform(m);\n}\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x1]\n * @param {number} [param.shape.y1]\n * @param {number} [param.shape.x2]\n * @param {number} [param.shape.y2]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeLine(param) {\n subPixelOptimizeUtil.subPixelOptimizeLine(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x]\n * @param {number} [param.shape.y]\n * @param {number} [param.shape.width]\n * @param {number} [param.shape.height]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeRect(param) {\n subPixelOptimizeUtil.subPixelOptimizeRect(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth Should be nonnegative integer.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nvar subPixelOptimize = subPixelOptimizeUtil.subPixelOptimize;\n\nfunction hasFillOrStroke(fillOrStroke) {\n return fillOrStroke != null && fillOrStroke !== 'none';\n} // Most lifted color are duplicated.\n\n\nvar liftedColorMap = zrUtil.createHashMap();\nvar liftedColorCount = 0;\n\nfunction liftColor(color) {\n if (typeof color !== 'string') {\n return color;\n }\n\n var liftedColor = liftedColorMap.get(color);\n\n if (!liftedColor) {\n liftedColor = colorTool.lift(color, -0.1);\n\n if (liftedColorCount < 10000) {\n liftedColorMap.set(color, liftedColor);\n liftedColorCount++;\n }\n }\n\n return liftedColor;\n}\n\nfunction cacheElementStl(el) {\n if (!el.__hoverStlDirty) {\n return;\n }\n\n el.__hoverStlDirty = false;\n var hoverStyle = el.__hoverStl;\n\n if (!hoverStyle) {\n el.__cachedNormalStl = el.__cachedNormalZ2 = null;\n return;\n }\n\n var normalStyle = el.__cachedNormalStl = {};\n el.__cachedNormalZ2 = el.z2;\n var elStyle = el.style;\n\n for (var name in hoverStyle) {\n // See comment in `singleEnterEmphasis`.\n if (hoverStyle[name] != null) {\n normalStyle[name] = elStyle[name];\n }\n } // Always cache fill and stroke to normalStyle for lifting color.\n\n\n normalStyle.fill = elStyle.fill;\n normalStyle.stroke = elStyle.stroke;\n}\n\nfunction singleEnterEmphasis(el) {\n var hoverStl = el.__hoverStl;\n\n if (!hoverStl || el.__highlighted) {\n return;\n }\n\n var zr = el.__zr;\n var useHoverLayer = el.useHoverLayer && zr && zr.painter.type === 'canvas';\n el.__highlighted = useHoverLayer ? 'layer' : 'plain';\n\n if (el.isGroup || !zr && el.useHoverLayer) {\n return;\n }\n\n var elTarget = el;\n var targetStyle = el.style;\n\n if (useHoverLayer) {\n elTarget = zr.addHover(el);\n targetStyle = elTarget.style;\n }\n\n rollbackDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n cacheElementStl(elTarget);\n } // styles can be:\n // {\n // label: {\n // show: false,\n // position: 'outside',\n // fontSize: 18\n // },\n // emphasis: {\n // label: {\n // show: true\n // }\n // }\n // },\n // where properties of `emphasis` may not appear in `normal`. We previously use\n // module:echarts/util/model#defaultEmphasis to merge `normal` to `emphasis`.\n // But consider rich text and setOption in merge mode, it is impossible to cover\n // all properties in merge. So we use merge mode when setting style here.\n // But we choose the merge strategy that only properties that is not `null/undefined`.\n // Because when making a textStyle (espacially rich text), it is not easy to distinguish\n // `hasOwnProperty` and `null/undefined` in code, so we trade them as the same for simplicity.\n // But this strategy brings a trouble that `null/undefined` can not be used to remove\n // style any more in `emphasis`. Users can both set properties directly on normal and\n // emphasis to avoid this issue, or we might support `'none'` for this case if required.\n\n\n targetStyle.extendFrom(hoverStl);\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'fill');\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'stroke');\n applyDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n el.dirty(false);\n el.z2 += Z2_EMPHASIS_LIFT;\n }\n}\n\nfunction setDefaultHoverFillStroke(targetStyle, hoverStyle, prop) {\n if (!hasFillOrStroke(hoverStyle[prop]) && hasFillOrStroke(targetStyle[prop])) {\n targetStyle[prop] = liftColor(targetStyle[prop]);\n }\n}\n\nfunction singleEnterNormal(el) {\n var highlighted = el.__highlighted;\n\n if (!highlighted) {\n return;\n }\n\n el.__highlighted = false;\n\n if (el.isGroup) {\n return;\n }\n\n if (highlighted === 'layer') {\n el.__zr && el.__zr.removeHover(el);\n } else {\n var style = el.style;\n var normalStl = el.__cachedNormalStl;\n\n if (normalStl) {\n rollbackDefaultTextStyle(style);\n el.setStyle(normalStl);\n applyDefaultTextStyle(style);\n } // `__cachedNormalZ2` will not be reset if calling `setElementHoverStyle`\n // when `el` is on emphasis state. So here by comparing with 1, we try\n // hard to make the bug case rare.\n\n\n var normalZ2 = el.__cachedNormalZ2;\n\n if (normalZ2 != null && el.z2 - normalZ2 === Z2_EMPHASIS_LIFT) {\n el.z2 = normalZ2;\n }\n }\n}\n\nfunction traverseUpdate(el, updater, commonParam) {\n // If root is group, also enter updater for `highDownOnUpdate`.\n var fromState = NORMAL;\n var toState = NORMAL;\n var trigger; // See the rule of `highDownOnUpdate` on `graphic.setAsHighDownDispatcher`.\n\n el.__highlighted && (fromState = EMPHASIS, trigger = true);\n updater(el, commonParam);\n el.__highlighted && (toState = EMPHASIS, trigger = true);\n el.isGroup && el.traverse(function (child) {\n !child.isGroup && updater(child, commonParam);\n });\n trigger && el.__highDownOnUpdate && el.__highDownOnUpdate(fromState, toState);\n}\n/**\n * Set hover style (namely \"emphasis style\") of element, based on the current\n * style of the given `el`.\n * This method should be called after all of the normal styles have been adopted\n * to the `el`. See the reason on `setHoverStyle`.\n *\n * @param {module:zrender/Element} el Should not be `zrender/container/Group`.\n * @param {Object} [el.hoverStyle] Can be set on el or its descendants,\n * e.g., `el.hoverStyle = ...; graphic.setHoverStyle(el); `.\n * Often used when item group has a label element and it's hoverStyle is different.\n * @param {Object|boolean} [hoverStl] The specified hover style.\n * If set as `false`, disable the hover style.\n * Similarly, The `el.hoverStyle` can alse be set\n * as `false` to disable the hover style.\n * Otherwise, use the default hover style if not provided.\n */\n\n\nfunction setElementHoverStyle(el, hoverStl) {\n // For performance consideration, it might be better to make the \"hover style\" only the\n // difference properties from the \"normal style\", but not a entire copy of all styles.\n hoverStl = el.__hoverStl = hoverStl !== false && (el.hoverStyle || hoverStl || {});\n el.__hoverStlDirty = true; // FIXME\n // It is not completely right to save \"normal\"/\"emphasis\" flag on elements.\n // It probably should be saved on `data` of series. Consider the cases:\n // (1) A highlighted elements are moved out of the view port and re-enter\n // again by dataZoom.\n // (2) call `setOption` and replace elements totally when they are highlighted.\n\n if (el.__highlighted) {\n // Consider the case:\n // The styles of a highlighted `el` is being updated. The new \"emphasis style\"\n // should be adapted to the `el`. Notice here new \"normal styles\" should have\n // been set outside and the cached \"normal style\" is out of date.\n el.__cachedNormalStl = null; // Do not clear `__cachedNormalZ2` here, because setting `z2` is not a constraint\n // of this method. In most cases, `z2` is not set and hover style should be able\n // to rollback. Of course, that would bring bug, but only in a rare case, see\n // `doSingleLeaveHover` for details.\n\n singleEnterNormal(el);\n singleEnterEmphasis(el);\n }\n}\n\nfunction onElementMouseOver(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementMouseOut(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction onElementEmphasisEvent(highlightDigit) {\n this.__highByOuter |= 1 << (highlightDigit || 0);\n traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementNormalEvent(highlightDigit) {\n !(this.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction shouldSilent(el, e) {\n return el.__highDownSilentOnTouch && e.zrByTouch;\n}\n/**\n * Set hover style (namely \"emphasis style\") of element,\n * based on the current style of the given `el`.\n *\n * (1)\n * **CONSTRAINTS** for this method:\n * This method MUST be called after all of the normal styles having been adopted\n * to the `el`.\n * The input `hoverStyle` (that is, \"emphasis style\") MUST be the subset of the\n * \"normal style\" having been set to the el.\n * `color` MUST be one of the \"normal styles\" (because color might be lifted as\n * a default hover style).\n *\n * The reason: this method treat the current style of the `el` as the \"normal style\"\n * and cache them when enter/update the \"emphasis style\". Consider the case: the `el`\n * is in \"emphasis\" state and `setOption`/`dispatchAction` trigger the style updating\n * logic, where the el should shift from the original emphasis style to the new\n * \"emphasis style\" and should be able to \"downplay\" back to the new \"normal style\".\n *\n * Indeed, it is error-prone to make a interface has so many constraints, but I have\n * not found a better solution yet to fit the backward compatibility, performance and\n * the current programming style.\n *\n * (2)\n * Call the method for a \"root\" element once. Do not call it for each descendants.\n * If the descendants elemenets of a group has itself hover style different from the\n * root group, we can simply mount the style on `el.hoverStyle` for them, but should\n * not call this method for them.\n *\n * (3) These input parameters can be set directly on `el`:\n *\n * @param {module:zrender/Element} el\n * @param {Object} [el.hoverStyle] See `graphic.setElementHoverStyle`.\n * @param {boolean} [el.highDownSilentOnTouch=false] See `graphic.setAsHighDownDispatcher`.\n * @param {Function} [el.highDownOnUpdate] See `graphic.setAsHighDownDispatcher`.\n * @param {Object|boolean} [hoverStyle] See `graphic.setElementHoverStyle`.\n */\n\n\nfunction setHoverStyle(el, hoverStyle) {\n setAsHighDownDispatcher(el, true);\n traverseUpdate(el, setElementHoverStyle, hoverStyle);\n}\n/**\n * @param {module:zrender/Element} el\n * @param {Function} [el.highDownOnUpdate] Called when state updated.\n * Since `setHoverStyle` has the constraint that it must be called after\n * all of the normal style updated, `highDownOnUpdate` is not needed to\n * trigger if both `fromState` and `toState` is 'normal', and needed to\n * trigger if both `fromState` and `toState` is 'emphasis', which enables\n * to sync outside style settings to \"emphasis\" state.\n * @this {string} This dispatcher `el`.\n * @param {string} fromState Can be \"normal\" or \"emphasis\".\n * `fromState` might equal to `toState`,\n * for example, when this method is called when `el` is\n * on \"emphasis\" state.\n * @param {string} toState Can be \"normal\" or \"emphasis\".\n *\n * FIXME\n * CAUTION: Do not expose `highDownOnUpdate` outside echarts.\n * Because it is not a complete solution. The update\n * listener should not have been mount in element,\n * and the normal/emphasis state should not have\n * mantained on elements.\n *\n * @param {boolean} [el.highDownSilentOnTouch=false]\n * In touch device, mouseover event will be trigger on touchstart event\n * (see module:zrender/dom/HandlerProxy). By this mechanism, we can\n * conveniently use hoverStyle when tap on touch screen without additional\n * code for compatibility.\n * But if the chart/component has select feature, which usually also use\n * hoverStyle, there might be conflict between 'select-highlight' and\n * 'hover-highlight' especially when roam is enabled (see geo for example).\n * In this case, `highDownSilentOnTouch` should be used to disable\n * hover-highlight on touch device.\n * @param {boolean} [asDispatcher=true] If `false`, do not set as \"highDownDispatcher\".\n */\n\n\nfunction setAsHighDownDispatcher(el, asDispatcher) {\n var disable = asDispatcher === false; // Make `highDownSilentOnTouch` and `highDownOnUpdate` only work after\n // `setAsHighDownDispatcher` called. Avoid it is modified by user unexpectedly.\n\n el.__highDownSilentOnTouch = el.highDownSilentOnTouch;\n el.__highDownOnUpdate = el.highDownOnUpdate; // Simple optimize, since this method might be\n // called for each elements of a group in some cases.\n\n if (!disable || el.__highDownDispatcher) {\n var method = disable ? 'off' : 'on'; // Duplicated function will be auto-ignored, see Eventful.js.\n\n el[method]('mouseover', onElementMouseOver)[method]('mouseout', onElementMouseOut); // Emphasis, normal can be triggered manually by API or other components like hover link.\n\n el[method]('emphasis', onElementEmphasisEvent)[method]('normal', onElementNormalEvent); // Also keep previous record.\n\n el.__highByOuter = el.__highByOuter || 0;\n el.__highDownDispatcher = !disable;\n }\n}\n/**\n * @param {module:zrender/src/Element} el\n * @return {boolean}\n */\n\n\nfunction isHighDownDispatcher(el) {\n return !!(el && el.__highDownDispatcher);\n}\n/**\n * Support hightlight/downplay record on each elements.\n * For the case: hover highlight/downplay (legend, visualMap, ...) and\n * user triggerred hightlight/downplay should not conflict.\n * Only all of the highlightDigit cleared, return to normal.\n * @param {string} highlightKey\n * @return {number} highlightDigit\n */\n\n\nfunction getHighlightDigit(highlightKey) {\n var highlightDigit = _highlightKeyMap[highlightKey];\n\n if (highlightDigit == null && _highlightNextDigit <= 32) {\n highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\n }\n\n return highlightDigit;\n}\n/**\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} normalStyle\n * @param {Object} emphasisStyle\n * @param {module:echarts/model/Model} normalModel\n * @param {module:echarts/model/Model} emphasisModel\n * @param {Object} opt Check `opt` of `setTextStyleCommon` to find other props.\n * @param {string|Function} [opt.defaultText]\n * @param {module:echarts/model/Model} [opt.labelFetcher] Fetch text by\n * `opt.labelFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDataIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDimIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {string} [opt.labelProp] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {Object} [normalSpecified]\n * @param {Object} [emphasisSpecified]\n */\n\n\nfunction setLabelStyle(normalStyle, emphasisStyle, normalModel, emphasisModel, opt, normalSpecified, emphasisSpecified) {\n opt = opt || EMPTY_OBJ;\n var labelFetcher = opt.labelFetcher;\n var labelDataIndex = opt.labelDataIndex;\n var labelDimIndex = opt.labelDimIndex;\n var labelProp = opt.labelProp; // This scenario, `label.normal.show = true; label.emphasis.show = false`,\n // is not supported util someone requests.\n\n var showNormal = normalModel.getShallow('show');\n var showEmphasis = emphasisModel.getShallow('show'); // Consider performance, only fetch label when necessary.\n // If `normal.show` is `false` and `emphasis.show` is `true` and `emphasis.formatter` is not set,\n // label should be displayed, where text is fetched by `normal.formatter` or `opt.defaultText`.\n\n var baseText;\n\n if (showNormal || showEmphasis) {\n if (labelFetcher) {\n baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, labelProp);\n }\n\n if (baseText == null) {\n baseText = zrUtil.isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt) : opt.defaultText;\n }\n }\n\n var normalStyleText = showNormal ? baseText : null;\n var emphasisStyleText = showEmphasis ? zrUtil.retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, 'emphasis', null, labelDimIndex, labelProp) : null, baseText) : null; // Optimize: If style.text is null, text will not be drawn.\n\n if (normalStyleText != null || emphasisStyleText != null) {\n // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n // If we set default values on `emphasisStyle`, consider case:\n // Firstly, `setOption(... label: {normal: {text: null}, emphasis: {show: true}} ...);`\n // Secondly, `setOption(... label: {noraml: {show: true, text: 'abc', color: 'red'} ...);`\n // Then the 'red' will not work on emphasis.\n setTextStyle(normalStyle, normalModel, normalSpecified, opt);\n setTextStyle(emphasisStyle, emphasisModel, emphasisSpecified, opt, true);\n }\n\n normalStyle.text = normalStyleText;\n emphasisStyle.text = emphasisStyleText;\n}\n/**\n * Modify label style manually.\n * Only works after `setLabelStyle` and `setElementHoverStyle` called.\n *\n * @param {module:zrender/src/Element} el\n * @param {Object} [normalStyleProps] optional\n * @param {Object} [emphasisStyleProps] optional\n */\n\n\nfunction modifyLabelStyle(el, normalStyleProps, emphasisStyleProps) {\n var elStyle = el.style;\n\n if (normalStyleProps) {\n rollbackDefaultTextStyle(elStyle);\n el.setStyle(normalStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n\n elStyle = el.__hoverStl;\n\n if (emphasisStyleProps && elStyle) {\n rollbackDefaultTextStyle(elStyle);\n zrUtil.extend(elStyle, emphasisStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n}\n/**\n * Set basic textStyle properties.\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} textStyle\n * @param {module:echarts/model/Model} model\n * @param {Object} [specifiedTextStyle] Can be overrided by settings in model.\n * @param {Object} [opt] See `opt` of `setTextStyleCommon`.\n * @param {boolean} [isEmphasis]\n */\n\n\nfunction setTextStyle(textStyle, textStyleModel, specifiedTextStyle, opt, isEmphasis) {\n setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis);\n specifiedTextStyle && zrUtil.extend(textStyle, specifiedTextStyle); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n\n return textStyle;\n}\n/**\n * Set text option in the style.\n * See more info in `setTextStyleCommon`.\n * @deprecated\n * @param {Object} textStyle\n * @param {module:echarts/model/Model} labelModel\n * @param {string|boolean} defaultColor Default text color.\n * If set as false, it will be processed as a emphasis style.\n */\n\n\nfunction setText(textStyle, labelModel, defaultColor) {\n var opt = {\n isRectText: true\n };\n var isEmphasis;\n\n if (defaultColor === false) {\n isEmphasis = true;\n } else {\n // Support setting color as 'auto' to get visual color.\n opt.autoColor = defaultColor;\n }\n\n setTextStyleCommon(textStyle, labelModel, opt, isEmphasis); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n}\n/**\n * The uniform entry of set text style, that is, retrieve style definitions\n * from `model` and set to `textStyle` object.\n *\n * Never in merge mode, but in overwrite mode, that is, all of the text style\n * properties will be set. (Consider the states of normal and emphasis and\n * default value can be adopted, merge would make the logic too complicated\n * to manage.)\n *\n * The `textStyle` object can either be a plain object or an instance of\n * `zrender/src/graphic/Style`, and either be the style of normal or emphasis.\n * After this mothod called, the `textStyle` object can then be used in\n * `el.setStyle(textStyle)` or `el.hoverStyle = textStyle`.\n *\n * Default value will be adopted and `insideRollbackOpt` will be created.\n * See `applyDefaultTextStyle` `rollbackDefaultTextStyle` for more details.\n *\n * opt: {\n * disableBox: boolean, Whether diable drawing box of block (outer most).\n * isRectText: boolean,\n * autoColor: string, specify a color when color is 'auto',\n * for textFill, textStroke, textBackgroundColor, and textBorderColor.\n * If autoColor specified, it is used as default textFill.\n * useInsideStyle:\n * `true`: Use inside style (textFill, textStroke, textStrokeWidth)\n * if `textFill` is not specified.\n * `false`: Do not use inside style.\n * `null/undefined`: use inside style if `isRectText` is true and\n * `textFill` is not specified and textPosition contains `'inside'`.\n * forceRich: boolean\n * }\n */\n\n\nfunction setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis) {\n // Consider there will be abnormal when merge hover style to normal style if given default value.\n opt = opt || EMPTY_OBJ;\n\n if (opt.isRectText) {\n var textPosition;\n\n if (opt.getTextPosition) {\n textPosition = opt.getTextPosition(textStyleModel, isEmphasis);\n } else {\n textPosition = textStyleModel.getShallow('position') || (isEmphasis ? null : 'inside'); // 'outside' is not a valid zr textPostion value, but used\n // in bar series, and magric type should be considered.\n\n textPosition === 'outside' && (textPosition = 'top');\n }\n\n textStyle.textPosition = textPosition;\n textStyle.textOffset = textStyleModel.getShallow('offset');\n var labelRotate = textStyleModel.getShallow('rotate');\n labelRotate != null && (labelRotate *= Math.PI / 180);\n textStyle.textRotation = labelRotate;\n textStyle.textDistance = zrUtil.retrieve2(textStyleModel.getShallow('distance'), isEmphasis ? null : 5);\n }\n\n var ecModel = textStyleModel.ecModel;\n var globalTextStyle = ecModel && ecModel.option.textStyle; // Consider case:\n // {\n // data: [{\n // value: 12,\n // label: {\n // rich: {\n // // no 'a' here but using parent 'a'.\n // }\n // }\n // }],\n // rich: {\n // a: { ... }\n // }\n // }\n\n var richItemNames = getRichItemNames(textStyleModel);\n var richResult;\n\n if (richItemNames) {\n richResult = {};\n\n for (var name in richItemNames) {\n if (richItemNames.hasOwnProperty(name)) {\n // Cascade is supported in rich.\n var richTextStyle = textStyleModel.getModel(['rich', name]); // In rich, never `disableBox`.\n // FIXME: consider `label: {formatter: '{a|xx}', color: 'blue', rich: {a: {}}}`,\n // the default color `'blue'` will not be adopted if no color declared in `rich`.\n // That might confuses users. So probably we should put `textStyleModel` as the\n // root ancestor of the `richTextStyle`. But that would be a break change.\n\n setTokenTextStyle(richResult[name] = {}, richTextStyle, globalTextStyle, opt, isEmphasis);\n }\n }\n }\n\n textStyle.rich = richResult;\n setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, true);\n\n if (opt.forceRich && !opt.textStyle) {\n opt.textStyle = {};\n }\n\n return textStyle;\n} // Consider case:\n// {\n// data: [{\n// value: 12,\n// label: {\n// rich: {\n// // no 'a' here but using parent 'a'.\n// }\n// }\n// }],\n// rich: {\n// a: { ... }\n// }\n// }\n\n\nfunction getRichItemNames(textStyleModel) {\n // Use object to remove duplicated names.\n var richItemNameMap;\n\n while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\n var rich = (textStyleModel.option || EMPTY_OBJ).rich;\n\n if (rich) {\n richItemNameMap = richItemNameMap || {};\n\n for (var name in rich) {\n if (rich.hasOwnProperty(name)) {\n richItemNameMap[name] = 1;\n }\n }\n }\n\n textStyleModel = textStyleModel.parentModel;\n }\n\n return richItemNameMap;\n}\n\nfunction setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, isBlock) {\n // In merge mode, default value should not be given.\n globalTextStyle = !isEmphasis && globalTextStyle || EMPTY_OBJ;\n textStyle.textFill = getAutoColor(textStyleModel.getShallow('color'), opt) || globalTextStyle.color;\n textStyle.textStroke = getAutoColor(textStyleModel.getShallow('textBorderColor'), opt) || globalTextStyle.textBorderColor;\n textStyle.textStrokeWidth = zrUtil.retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\n\n if (!isEmphasis) {\n if (isBlock) {\n textStyle.insideRollbackOpt = opt;\n applyDefaultTextStyle(textStyle);\n } // Set default finally.\n\n\n if (textStyle.textFill == null) {\n textStyle.textFill = opt.autoColor;\n }\n } // Do not use `getFont` here, because merge should be supported, where\n // part of these properties may be changed in emphasis style, and the\n // others should remain their original value got from normal style.\n\n\n textStyle.fontStyle = textStyleModel.getShallow('fontStyle') || globalTextStyle.fontStyle;\n textStyle.fontWeight = textStyleModel.getShallow('fontWeight') || globalTextStyle.fontWeight;\n textStyle.fontSize = textStyleModel.getShallow('fontSize') || globalTextStyle.fontSize;\n textStyle.fontFamily = textStyleModel.getShallow('fontFamily') || globalTextStyle.fontFamily;\n textStyle.textAlign = textStyleModel.getShallow('align');\n textStyle.textVerticalAlign = textStyleModel.getShallow('verticalAlign') || textStyleModel.getShallow('baseline');\n textStyle.textLineHeight = textStyleModel.getShallow('lineHeight');\n textStyle.textWidth = textStyleModel.getShallow('width');\n textStyle.textHeight = textStyleModel.getShallow('height');\n textStyle.textTag = textStyleModel.getShallow('tag');\n\n if (!isBlock || !opt.disableBox) {\n textStyle.textBackgroundColor = getAutoColor(textStyleModel.getShallow('backgroundColor'), opt);\n textStyle.textPadding = textStyleModel.getShallow('padding');\n textStyle.textBorderColor = getAutoColor(textStyleModel.getShallow('borderColor'), opt);\n textStyle.textBorderWidth = textStyleModel.getShallow('borderWidth');\n textStyle.textBorderRadius = textStyleModel.getShallow('borderRadius');\n textStyle.textBoxShadowColor = textStyleModel.getShallow('shadowColor');\n textStyle.textBoxShadowBlur = textStyleModel.getShallow('shadowBlur');\n textStyle.textBoxShadowOffsetX = textStyleModel.getShallow('shadowOffsetX');\n textStyle.textBoxShadowOffsetY = textStyleModel.getShallow('shadowOffsetY');\n }\n\n textStyle.textShadowColor = textStyleModel.getShallow('textShadowColor') || globalTextStyle.textShadowColor;\n textStyle.textShadowBlur = textStyleModel.getShallow('textShadowBlur') || globalTextStyle.textShadowBlur;\n textStyle.textShadowOffsetX = textStyleModel.getShallow('textShadowOffsetX') || globalTextStyle.textShadowOffsetX;\n textStyle.textShadowOffsetY = textStyleModel.getShallow('textShadowOffsetY') || globalTextStyle.textShadowOffsetY;\n}\n\nfunction getAutoColor(color, opt) {\n return color !== 'auto' ? color : opt && opt.autoColor ? opt.autoColor : null;\n}\n/**\n * Give some default value to the input `textStyle` object, based on the current settings\n * in this `textStyle` object.\n *\n * The Scenario:\n * when text position is `inside` and `textFill` is not specified, we show\n * text border by default for better view. But it should be considered that text position\n * might be changed when hovering or being emphasis, where the `insideRollback` is used to\n * restore the style.\n *\n * Usage (& NOTICE):\n * When a style object (eithor plain object or instance of `zrender/src/graphic/Style`) is\n * about to be modified on its text related properties, `rollbackDefaultTextStyle` should\n * be called before the modification and `applyDefaultTextStyle` should be called after that.\n * (For the case that all of the text related properties is reset, like `setTextStyleCommon`\n * does, `rollbackDefaultTextStyle` is not needed to be called).\n */\n\n\nfunction applyDefaultTextStyle(textStyle) {\n var textPosition = textStyle.textPosition;\n var opt = textStyle.insideRollbackOpt;\n var insideRollback;\n\n if (opt && textStyle.textFill == null) {\n var autoColor = opt.autoColor;\n var isRectText = opt.isRectText;\n var useInsideStyle = opt.useInsideStyle;\n var useInsideStyleCache = useInsideStyle !== false && (useInsideStyle === true || isRectText && textPosition // textPosition can be [10, 30]\n && typeof textPosition === 'string' && textPosition.indexOf('inside') >= 0);\n var useAutoColorCache = !useInsideStyleCache && autoColor != null; // All of the props declared in `CACHED_LABEL_STYLE_PROPERTIES` are to be cached.\n\n if (useInsideStyleCache || useAutoColorCache) {\n insideRollback = {\n textFill: textStyle.textFill,\n textStroke: textStyle.textStroke,\n textStrokeWidth: textStyle.textStrokeWidth\n };\n }\n\n if (useInsideStyleCache) {\n textStyle.textFill = '#fff'; // Consider text with #fff overflow its container.\n\n if (textStyle.textStroke == null) {\n textStyle.textStroke = autoColor;\n textStyle.textStrokeWidth == null && (textStyle.textStrokeWidth = 2);\n }\n }\n\n if (useAutoColorCache) {\n textStyle.textFill = autoColor;\n }\n } // Always set `insideRollback`, so that the previous one can be cleared.\n\n\n textStyle.insideRollback = insideRollback;\n}\n/**\n * Consider the case: in a scatter,\n * label: {\n * normal: {position: 'inside'},\n * emphasis: {position: 'top'}\n * }\n * In the normal state, the `textFill` will be set as '#fff' for pretty view (see\n * `applyDefaultTextStyle`), but when switching to emphasis state, the `textFill`\n * should be retured to 'autoColor', but not keep '#fff'.\n */\n\n\nfunction rollbackDefaultTextStyle(style) {\n var insideRollback = style.insideRollback;\n\n if (insideRollback) {\n // Reset all of the props in `CACHED_LABEL_STYLE_PROPERTIES`.\n style.textFill = insideRollback.textFill;\n style.textStroke = insideRollback.textStroke;\n style.textStrokeWidth = insideRollback.textStrokeWidth;\n style.insideRollback = null;\n }\n}\n\nfunction getFont(opt, ecModel) {\n var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\n return zrUtil.trim([// FIXME in node-canvas fontWeight is before fontStyle\n opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));\n}\n\nfunction animateOrSetProps(isUpdate, el, props, animatableModel, dataIndex, cb) {\n if (typeof dataIndex === 'function') {\n cb = dataIndex;\n dataIndex = null;\n } // Do not check 'animation' property directly here. Consider this case:\n // animation model is an `itemModel`, whose does not have `isAnimationEnabled`\n // but its parent model (`seriesModel`) does.\n\n\n var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\n\n if (animationEnabled) {\n var postfix = isUpdate ? 'Update' : '';\n var duration = animatableModel.getShallow('animationDuration' + postfix);\n var animationEasing = animatableModel.getShallow('animationEasing' + postfix);\n var animationDelay = animatableModel.getShallow('animationDelay' + postfix);\n\n if (typeof animationDelay === 'function') {\n animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null);\n }\n\n if (typeof duration === 'function') {\n duration = duration(dataIndex);\n }\n\n duration > 0 ? el.animateTo(props, duration, animationDelay || 0, animationEasing, cb, !!cb) : (el.stopAnimation(), el.attr(props), cb && cb());\n } else {\n el.stopAnimation();\n el.attr(props);\n cb && cb();\n }\n}\n/**\n * Update graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} [cb]\n * @example\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, dataIndex, function () { console.log('Animation done!'); });\n * // Or\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, function () { console.log('Animation done!'); });\n */\n\n\nfunction updateProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(true, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Init graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} cb\n */\n\n\nfunction initProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(false, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Get transform matrix of target (param target),\n * in coordinate of its ancestor (param ancestor)\n *\n * @param {module:zrender/mixin/Transformable} target\n * @param {module:zrender/mixin/Transformable} [ancestor]\n */\n\n\nfunction getTransform(target, ancestor) {\n var mat = matrix.identity([]);\n\n while (target && target !== ancestor) {\n matrix.mul(mat, target.getLocalTransform(), mat);\n target = target.parent;\n }\n\n return mat;\n}\n/**\n * Apply transform to an vertex.\n * @param {Array.} target [x, y]\n * @param {Array.|TypedArray.|Object} transform Can be:\n * + Transform matrix: like [1, 0, 0, 1, 0, 0]\n * + {position, rotation, scale}, the same as `zrender/Transformable`.\n * @param {boolean=} invert Whether use invert matrix.\n * @return {Array.} [x, y]\n */\n\n\nfunction applyTransform(target, transform, invert) {\n if (transform && !zrUtil.isArrayLike(transform)) {\n transform = Transformable.getLocalTransform(transform);\n }\n\n if (invert) {\n transform = matrix.invert([], transform);\n }\n\n return vector.applyTransform([], target, transform);\n}\n/**\n * @param {string} direction 'left' 'right' 'top' 'bottom'\n * @param {Array.} transform Transform matrix: like [1, 0, 0, 1, 0, 0]\n * @param {boolean=} invert Whether use invert matrix.\n * @return {string} Transformed direction. 'left' 'right' 'top' 'bottom'\n */\n\n\nfunction transformDirection(direction, transform, invert) {\n // Pick a base, ensure that transform result will not be (0, 0).\n var hBase = transform[4] === 0 || transform[5] === 0 || transform[0] === 0 ? 1 : Math.abs(2 * transform[4] / transform[0]);\n var vBase = transform[4] === 0 || transform[5] === 0 || transform[2] === 0 ? 1 : Math.abs(2 * transform[4] / transform[2]);\n var vertex = [direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0];\n vertex = applyTransform(vertex, transform, invert);\n return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? 'right' : 'left' : vertex[1] > 0 ? 'bottom' : 'top';\n}\n/**\n * Apply group transition animation from g1 to g2.\n * If no animatableModel, no animation.\n */\n\n\nfunction groupTransition(g1, g2, animatableModel, cb) {\n if (!g1 || !g2) {\n return;\n }\n\n function getElMap(g) {\n var elMap = {};\n g.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n elMap[el.anid] = el;\n }\n });\n return elMap;\n }\n\n function getAnimatableProps(el) {\n var obj = {\n position: vector.clone(el.position),\n rotation: el.rotation\n };\n\n if (el.shape) {\n obj.shape = zrUtil.extend({}, el.shape);\n }\n\n return obj;\n }\n\n var elMap1 = getElMap(g1);\n g2.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n var oldEl = elMap1[el.anid];\n\n if (oldEl) {\n var newProp = getAnimatableProps(el);\n el.attr(getAnimatableProps(oldEl));\n updateProps(el, newProp, animatableModel, el.dataIndex);\n } // else {\n // if (el.previousProps) {\n // graphic.updateProps\n // }\n // }\n\n }\n });\n}\n/**\n * @param {Array.>} points Like: [[23, 44], [53, 66], ...]\n * @param {Object} rect {x, y, width, height}\n * @return {Array.>} A new clipped points.\n */\n\n\nfunction clipPointsByRect(points, rect) {\n // FIXME: this way migth be incorrect when grpahic clipped by a corner.\n // and when element have border.\n return zrUtil.map(points, function (point) {\n var x = point[0];\n x = mathMax(x, rect.x);\n x = mathMin(x, rect.x + rect.width);\n var y = point[1];\n y = mathMax(y, rect.y);\n y = mathMin(y, rect.y + rect.height);\n return [x, y];\n });\n}\n/**\n * @param {Object} targetRect {x, y, width, height}\n * @param {Object} rect {x, y, width, height}\n * @return {Object} A new clipped rect. If rect size are negative, return undefined.\n */\n\n\nfunction clipRectByRect(targetRect, rect) {\n var x = mathMax(targetRect.x, rect.x);\n var x2 = mathMin(targetRect.x + targetRect.width, rect.x + rect.width);\n var y = mathMax(targetRect.y, rect.y);\n var y2 = mathMin(targetRect.y + targetRect.height, rect.y + rect.height); // If the total rect is cliped, nothing, including the border,\n // should be painted. So return undefined.\n\n if (x2 >= x && y2 >= y) {\n return {\n x: x,\n y: y,\n width: x2 - x,\n height: y2 - y\n };\n }\n}\n/**\n * @param {string} iconStr Support 'image://' or 'path://' or direct svg path.\n * @param {Object} [opt] Properties of `module:zrender/Element`, except `style`.\n * @param {Object} [rect] {x, y, width, height}\n * @return {module:zrender/Element} Icon path or image element.\n */\n\n\nfunction createIcon(iconStr, opt, rect) {\n opt = zrUtil.extend({\n rectHover: true\n }, opt);\n var style = opt.style = {\n strokeNoScale: true\n };\n rect = rect || {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n };\n\n if (iconStr) {\n return iconStr.indexOf('image://') === 0 ? (style.image = iconStr.slice(8), zrUtil.defaults(style, rect), new ZImage(opt)) : makePath(iconStr.replace('path://', ''), opt, rect, 'center');\n }\n}\n/**\n * Return `true` if the given line (line `a`) and the given polygon\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {Array.>} points Points of the polygon.\n * @return {boolean}\n */\n\n\nfunction linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\n for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\n var p = points[i];\n\n if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\n return true;\n }\n\n p2 = p;\n }\n}\n/**\n * Return `true` if the given two lines (line `a` and line `b`)\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {number} b1x\n * @param {number} b1y\n * @param {number} b2x\n * @param {number} b2y\n * @return {boolean}\n */\n\n\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n // let `vec_m` to be `vec_a2 - vec_a1` and `vec_n` to be `vec_b2 - vec_b1`.\n var mx = a2x - a1x;\n var my = a2y - a1y;\n var nx = b2x - b1x;\n var ny = b2y - b1y; // `vec_m` and `vec_n` are parallel iff\n // exising `k` such that `vec_m = k · vec_n`, equivalent to `vec_m X vec_n = 0`.\n\n var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n\n if (nearZero(nmCrossProduct)) {\n return false;\n } // `vec_m` and `vec_n` are intersect iff\n // existing `p` and `q` in [0, 1] such that `vec_a1 + p * vec_m = vec_b1 + q * vec_n`,\n // such that `q = ((vec_a1 - vec_b1) X vec_m) / (vec_n X vec_m)`\n // and `p = ((vec_a1 - vec_b1) X vec_n) / (vec_n X vec_m)`.\n\n\n var b1a1x = a1x - b1x;\n var b1a1y = a1y - b1y;\n var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\n\n if (q < 0 || q > 1) {\n return false;\n }\n\n var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n\n if (p < 0 || p > 1) {\n return false;\n }\n\n return true;\n}\n/**\n * Cross product of 2-dimension vector.\n */\n\n\nfunction crossProduct2d(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\n\nfunction nearZero(val) {\n return val <= 1e-6 && val >= -1e-6;\n} // Register built-in shapes. These shapes might be overwirtten\n// by users, although we do not recommend that.\n\n\nregisterShape('circle', Circle);\nregisterShape('sector', Sector);\nregisterShape('ring', Ring);\nregisterShape('polygon', Polygon);\nregisterShape('polyline', Polyline);\nregisterShape('rect', Rect);\nregisterShape('line', Line);\nregisterShape('bezierCurve', BezierCurve);\nregisterShape('arc', Arc);\nexports.Z2_EMPHASIS_LIFT = Z2_EMPHASIS_LIFT;\nexports.CACHED_LABEL_STYLE_PROPERTIES = CACHED_LABEL_STYLE_PROPERTIES;\nexports.extendShape = extendShape;\nexports.extendPath = extendPath;\nexports.registerShape = registerShape;\nexports.getShapeClass = getShapeClass;\nexports.makePath = makePath;\nexports.makeImage = makeImage;\nexports.mergePath = mergePath;\nexports.resizePath = resizePath;\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;\nexports.setElementHoverStyle = setElementHoverStyle;\nexports.setHoverStyle = setHoverStyle;\nexports.setAsHighDownDispatcher = setAsHighDownDispatcher;\nexports.isHighDownDispatcher = isHighDownDispatcher;\nexports.getHighlightDigit = getHighlightDigit;\nexports.setLabelStyle = setLabelStyle;\nexports.modifyLabelStyle = modifyLabelStyle;\nexports.setTextStyle = setTextStyle;\nexports.setText = setText;\nexports.getFont = getFont;\nexports.updateProps = updateProps;\nexports.initProps = initProps;\nexports.getTransform = getTransform;\nexports.applyTransform = applyTransform;\nexports.transformDirection = transformDirection;\nexports.groupTransition = groupTransition;\nexports.clipPointsByRect = clipPointsByRect;\nexports.clipRectByRect = clipRectByRect;\nexports.createIcon = createIcon;\nexports.linePolygonIntersect = linePolygonIntersect;\nexports.lineLineIntersect = lineLineIntersect;","\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 eventTool = require(\"zrender/lib/core/event\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar throttle = require(\"../../util/throttle\");\n\nvar DataZoomView = require(\"./DataZoomView\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar layout = require(\"../../util/layout\");\n\nvar sliderMove = require(\"../helper/sliderMove\");\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 Rect = graphic.Rect;\nvar linearMap = numberUtil.linearMap;\nvar asc = numberUtil.asc;\nvar bind = zrUtil.bind;\nvar each = zrUtil.each; // Constants\n\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\nvar DEFAULT_FILLER_SIZE = 30;\nvar HORIZONTAL = 'horizontal';\nvar VERTICAL = 'vertical';\nvar LABEL_GAP = 5;\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\nvar SliderZoomView = DataZoomView.extend({\n type: 'dataZoom.slider',\n init: function (ecModel, api) {\n /**\n * @private\n * @type {Object}\n */\n this._displayables = {};\n /**\n * @private\n * @type {string}\n */\n\n this._orient;\n /**\n * [0, 100]\n * @private\n */\n\n this._range;\n /**\n * [coord of the first handle, coord of the second handle]\n * @private\n */\n\n this._handleEnds;\n /**\n * [length, thick]\n * @private\n * @type {Array.}\n */\n\n this._size;\n /**\n * @private\n * @type {number}\n */\n\n this._handleWidth;\n /**\n * @private\n * @type {number}\n */\n\n this._handleHeight;\n /**\n * @private\n */\n\n this._location;\n /**\n * @private\n */\n\n this._dragging;\n /**\n * @private\n */\n\n this._dataShadowInfo;\n this.api = api;\n },\n\n /**\n * @override\n */\n render: function (dataZoomModel, ecModel, api, payload) {\n SliderZoomView.superApply(this, 'render', arguments);\n throttle.createOrUpdate(this, '_dispatchZoomAction', this.dataZoomModel.get('throttle'), 'fixRate');\n this._orient = dataZoomModel.get('orient');\n\n if (this.dataZoomModel.get('show') === false) {\n this.group.removeAll();\n return;\n } // Notice: this._resetInterval() should not be executed when payload.type\n // is 'dataZoom', origin this._range should be maintained, otherwise 'pan'\n // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction,\n\n\n if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\n this._buildView();\n }\n\n this._updateView();\n },\n\n /**\n * @override\n */\n remove: function () {\n SliderZoomView.superApply(this, 'remove', arguments);\n throttle.clear(this, '_dispatchZoomAction');\n },\n\n /**\n * @override\n */\n dispose: function () {\n SliderZoomView.superApply(this, 'dispose', arguments);\n throttle.clear(this, '_dispatchZoomAction');\n },\n _buildView: function () {\n var thisGroup = this.group;\n thisGroup.removeAll();\n\n this._resetLocation();\n\n this._resetInterval();\n\n var barGroup = this._displayables.barGroup = new graphic.Group();\n\n this._renderBackground();\n\n this._renderHandle();\n\n this._renderDataShadow();\n\n thisGroup.add(barGroup);\n\n this._positionGroup();\n },\n\n /**\n * @private\n */\n _resetLocation: function () {\n var dataZoomModel = this.dataZoomModel;\n var api = this.api; // If some of x/y/width/height are not specified,\n // auto-adapt according to target grid.\n\n var coordRect = this._findCoordRect();\n\n var ecSize = {\n width: api.getWidth(),\n height: api.getHeight()\n }; // Default align by coordinate system rect.\n\n var positionInfo = this._orient === HORIZONTAL ? {\n // Why using 'right', because right should be used in vertical,\n // and it is better to be consistent for dealing with position param merge.\n right: ecSize.width - coordRect.x - coordRect.width,\n top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP,\n width: coordRect.width,\n height: DEFAULT_FILLER_SIZE\n } : {\n // vertical\n right: DEFAULT_LOCATION_EDGE_GAP,\n top: coordRect.y,\n width: DEFAULT_FILLER_SIZE,\n height: coordRect.height\n }; // Do not write back to option and replace value 'ph', because\n // the 'ph' value should be recalculated when resize.\n\n var layoutParams = layout.getLayoutParams(dataZoomModel.option); // Replace the placeholder value.\n\n zrUtil.each(['right', 'top', 'width', 'height'], function (name) {\n if (layoutParams[name] === 'ph') {\n layoutParams[name] = positionInfo[name];\n }\n });\n var layoutRect = layout.getLayoutRect(layoutParams, ecSize, dataZoomModel.padding);\n this._location = {\n x: layoutRect.x,\n y: layoutRect.y\n };\n this._size = [layoutRect.width, layoutRect.height];\n this._orient === VERTICAL && this._size.reverse();\n },\n\n /**\n * @private\n */\n _positionGroup: function () {\n var thisGroup = this.group;\n var location = this._location;\n var orient = this._orient; // Just use the first axis to determine mapping.\n\n var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\n var inverse = targetAxisModel && targetAxisModel.get('inverse');\n var barGroup = this._displayables.barGroup;\n var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; // Transform barGroup.\n\n barGroup.attr(orient === HORIZONTAL && !inverse ? {\n scale: otherAxisInverse ? [1, 1] : [1, -1]\n } : orient === HORIZONTAL && inverse ? {\n scale: otherAxisInverse ? [-1, 1] : [-1, -1]\n } : orient === VERTICAL && !inverse ? {\n scale: otherAxisInverse ? [1, -1] : [1, 1],\n rotation: Math.PI / 2 // Dont use Math.PI, considering shadow direction.\n\n } : {\n scale: otherAxisInverse ? [-1, -1] : [-1, 1],\n rotation: Math.PI / 2\n }); // Position barGroup\n\n var rect = thisGroup.getBoundingRect([barGroup]);\n thisGroup.attr('position', [location.x - rect.x, location.y - rect.y]);\n },\n\n /**\n * @private\n */\n _getViewExtent: function () {\n return [0, this._size[0]];\n },\n _renderBackground: function () {\n var dataZoomModel = this.dataZoomModel;\n var size = this._size;\n var barGroup = this._displayables.barGroup;\n barGroup.add(new Rect({\n silent: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: dataZoomModel.get('backgroundColor')\n },\n z2: -40\n })); // Click panel, over shadow, below handles.\n\n barGroup.add(new Rect({\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: 'transparent'\n },\n z2: 0,\n onclick: zrUtil.bind(this._onClickPanelClick, this)\n }));\n },\n _renderDataShadow: function () {\n var info = this._dataShadowInfo = this._prepareDataShadowInfo();\n\n if (!info) {\n return;\n }\n\n var size = this._size;\n var seriesModel = info.series;\n var data = seriesModel.getRawData();\n var otherDim = seriesModel.getShadowDim ? seriesModel.getShadowDim() // @see candlestick\n : info.otherDim;\n\n if (otherDim == null) {\n return;\n }\n\n var otherDataExtent = data.getDataExtent(otherDim); // Nice extent.\n\n var otherOffset = (otherDataExtent[1] - otherDataExtent[0]) * 0.3;\n otherDataExtent = [otherDataExtent[0] - otherOffset, otherDataExtent[1] + otherOffset];\n var otherShadowExtent = [0, size[1]];\n var thisShadowExtent = [0, size[0]];\n var areaPoints = [[size[0], 0], [0, 0]];\n var linePoints = [];\n var step = thisShadowExtent[1] / (data.count() - 1);\n var thisCoord = 0; // Optimize for large data shadow\n\n var stride = Math.round(data.count() / size[0]);\n var lastIsEmpty;\n data.each([otherDim], function (value, index) {\n if (stride > 0 && index % stride) {\n thisCoord += step;\n return;\n } // FIXME\n // Should consider axis.min/axis.max when drawing dataShadow.\n // FIXME\n // 应该使用统一的空判断?还是在list里进行空判断?\n\n\n var isEmpty = value == null || isNaN(value) || value === ''; // See #4235.\n\n var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent, otherShadowExtent, true); // Attempt to draw data shadow precisely when there are empty value.\n\n if (isEmpty && !lastIsEmpty && index) {\n areaPoints.push([areaPoints[areaPoints.length - 1][0], 0]);\n linePoints.push([linePoints[linePoints.length - 1][0], 0]);\n } else if (!isEmpty && lastIsEmpty) {\n areaPoints.push([thisCoord, 0]);\n linePoints.push([thisCoord, 0]);\n }\n\n areaPoints.push([thisCoord, otherCoord]);\n linePoints.push([thisCoord, otherCoord]);\n thisCoord += step;\n lastIsEmpty = isEmpty;\n });\n var dataZoomModel = this.dataZoomModel; // var dataBackgroundModel = dataZoomModel.getModel('dataBackground');\n\n this._displayables.barGroup.add(new graphic.Polygon({\n shape: {\n points: areaPoints\n },\n style: zrUtil.defaults({\n fill: dataZoomModel.get('dataBackgroundColor')\n }, dataZoomModel.getModel('dataBackground.areaStyle').getAreaStyle()),\n silent: true,\n z2: -20\n }));\n\n this._displayables.barGroup.add(new graphic.Polyline({\n shape: {\n points: linePoints\n },\n style: dataZoomModel.getModel('dataBackground.lineStyle').getLineStyle(),\n silent: true,\n z2: -19\n }));\n },\n _prepareDataShadowInfo: function () {\n var dataZoomModel = this.dataZoomModel;\n var showDataShadow = dataZoomModel.get('showDataShadow');\n\n if (showDataShadow === false) {\n return;\n } // Find a representative series.\n\n\n var result;\n var ecModel = this.ecModel;\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) {\n var seriesModels = dataZoomModel.getAxisProxy(dimNames.name, axisIndex).getTargetSeriesModels();\n zrUtil.each(seriesModels, function (seriesModel) {\n if (result) {\n return;\n }\n\n if (showDataShadow !== true && zrUtil.indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\n return;\n }\n\n var thisAxis = ecModel.getComponent(dimNames.axis, axisIndex).axis;\n var otherDim = getOtherDim(dimNames.name);\n var otherAxisInverse;\n var coordSys = seriesModel.coordinateSystem;\n\n if (otherDim != null && coordSys.getOtherAxis) {\n otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\n }\n\n otherDim = seriesModel.getData().mapDimension(otherDim);\n result = {\n thisAxis: thisAxis,\n series: seriesModel,\n thisDim: dimNames.name,\n otherDim: otherDim,\n otherAxisInverse: otherAxisInverse\n };\n }, this);\n }, this);\n return result;\n },\n _renderHandle: function () {\n var displaybles = this._displayables;\n var handles = displaybles.handles = [];\n var handleLabels = displaybles.handleLabels = [];\n var barGroup = this._displayables.barGroup;\n var size = this._size;\n var dataZoomModel = this.dataZoomModel;\n barGroup.add(displaybles.filler = new Rect({\n draggable: true,\n cursor: getCursor(this._orient),\n drift: bind(this._onDragMove, this, 'all'),\n ondragstart: bind(this._showDataInfo, this, true),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false),\n style: {\n fill: dataZoomModel.get('fillerColor'),\n textPosition: 'inside'\n }\n })); // Frame border.\n\n barGroup.add(new Rect({\n silent: true,\n subPixelOptimize: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n stroke: dataZoomModel.get('dataBackgroundColor') || dataZoomModel.get('borderColor'),\n lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\n fill: 'rgba(0,0,0,0)'\n }\n }));\n each([0, 1], function (handleIndex) {\n var path = graphic.createIcon(dataZoomModel.get('handleIcon'), {\n cursor: getCursor(this._orient),\n draggable: true,\n drift: bind(this._onDragMove, this, handleIndex),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false)\n }, {\n x: -1,\n y: 0,\n width: 2,\n height: 2\n });\n var bRect = path.getBoundingRect();\n this._handleHeight = numberUtil.parsePercent(dataZoomModel.get('handleSize'), this._size[1]);\n this._handleWidth = bRect.width / bRect.height * this._handleHeight;\n path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\n var handleColor = dataZoomModel.get('handleColor'); // Compatitable with previous version\n\n if (handleColor != null) {\n path.style.fill = handleColor;\n }\n\n barGroup.add(handles[handleIndex] = path);\n var textStyleModel = dataZoomModel.textStyleModel;\n this.group.add(handleLabels[handleIndex] = new graphic.Text({\n silent: true,\n invisible: true,\n style: {\n x: 0,\n y: 0,\n text: '',\n textVerticalAlign: 'middle',\n textAlign: 'center',\n textFill: textStyleModel.getTextColor(),\n textFont: textStyleModel.getFont()\n },\n z2: 10\n }));\n }, this);\n },\n\n /**\n * @private\n */\n _resetInterval: function () {\n var range = this._range = this.dataZoomModel.getPercentRange();\n\n var viewExtent = this._getViewExtent();\n\n this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)];\n },\n\n /**\n * @private\n * @param {(number|string)} handleIndex 0 or 1 or 'all'\n * @param {number} delta\n * @return {boolean} changed\n */\n _updateInterval: function (handleIndex, delta) {\n var dataZoomModel = this.dataZoomModel;\n var handleEnds = this._handleEnds;\n\n var viewExtend = this._getViewExtent();\n\n var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n var percentExtent = [0, 100];\n sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\n var lastRange = this._range;\n var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]);\n return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];\n },\n\n /**\n * @private\n */\n _updateView: function (nonRealtime) {\n var displaybles = this._displayables;\n var handleEnds = this._handleEnds;\n var handleInterval = asc(handleEnds.slice());\n var size = this._size;\n each([0, 1], function (handleIndex) {\n // Handles\n var handle = displaybles.handles[handleIndex];\n var handleHeight = this._handleHeight;\n handle.attr({\n scale: [handleHeight / 2, handleHeight / 2],\n position: [handleEnds[handleIndex], size[1] / 2 - handleHeight / 2]\n });\n }, this); // Filler\n\n displaybles.filler.setShape({\n x: handleInterval[0],\n y: 0,\n width: handleInterval[1] - handleInterval[0],\n height: size[1]\n });\n\n this._updateDataInfo(nonRealtime);\n },\n\n /**\n * @private\n */\n _updateDataInfo: function (nonRealtime) {\n var dataZoomModel = this.dataZoomModel;\n var displaybles = this._displayables;\n var handleLabels = displaybles.handleLabels;\n var orient = this._orient;\n var labelTexts = ['', '']; // FIXME\n // date型,支持formatter,autoformatter(ec2 date.getAutoFormatter)\n\n if (dataZoomModel.get('showDetail')) {\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n var axis = axisProxy.getAxisModel().axis;\n var range = this._range;\n var dataInterval = nonRealtime // See #4434, data and axis are not processed and reset yet in non-realtime mode.\n ? axisProxy.calculateDataWindow({\n start: range[0],\n end: range[1]\n }).valueWindow : axisProxy.getDataValueWindow();\n labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];\n }\n }\n\n var orderedHandleEnds = asc(this._handleEnds.slice());\n setLabel.call(this, 0);\n setLabel.call(this, 1);\n\n function setLabel(handleIndex) {\n // Label\n // Text should not transform by barGroup.\n // Ignore handlers transform\n var barTransform = graphic.getTransform(displaybles.handles[handleIndex].parent, this.group);\n var direction = graphic.transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\n var offset = this._handleWidth / 2 + LABEL_GAP;\n var textPoint = graphic.applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform);\n handleLabels[handleIndex].setStyle({\n x: textPoint[0],\n y: textPoint[1],\n textVerticalAlign: orient === HORIZONTAL ? 'middle' : direction,\n textAlign: orient === HORIZONTAL ? direction : 'center',\n text: labelTexts[handleIndex]\n });\n }\n },\n\n /**\n * @private\n */\n _formatLabel: function (value, axis) {\n var dataZoomModel = this.dataZoomModel;\n var labelFormatter = dataZoomModel.get('labelFormatter');\n var labelPrecision = dataZoomModel.get('labelPrecision');\n\n if (labelPrecision == null || labelPrecision === 'auto') {\n labelPrecision = axis.getPixelPrecision();\n }\n\n var valueStr = value == null || isNaN(value) ? '' // FIXME Glue code\n : axis.type === 'category' || axis.type === 'time' ? axis.scale.getLabel(Math.round(value)) // param of toFixed should less then 20.\n : value.toFixed(Math.min(labelPrecision, 20));\n return zrUtil.isFunction(labelFormatter) ? labelFormatter(value, valueStr) : zrUtil.isString(labelFormatter) ? labelFormatter.replace('{value}', valueStr) : valueStr;\n },\n\n /**\n * @private\n * @param {boolean} showOrHide true: show, false: hide\n */\n _showDataInfo: function (showOrHide) {\n // Always show when drgging.\n showOrHide = this._dragging || showOrHide;\n var handleLabels = this._displayables.handleLabels;\n handleLabels[0].attr('invisible', !showOrHide);\n handleLabels[1].attr('invisible', !showOrHide);\n },\n _onDragMove: function (handleIndex, dx, dy, event) {\n this._dragging = true; // For mobile device, prevent screen slider on the button.\n\n eventTool.stop(event.event); // Transform dx, dy to bar coordination.\n\n var barTransform = this._displayables.barGroup.getLocalTransform();\n\n var vertex = graphic.applyTransform([dx, dy], barTransform, true);\n\n var changed = this._updateInterval(handleIndex, vertex[0]);\n\n var realtime = this.dataZoomModel.get('realtime');\n\n this._updateView(!realtime); // Avoid dispatch dataZoom repeatly but range not changed,\n // which cause bad visual effect when progressive enabled.\n\n\n changed && realtime && this._dispatchZoomAction();\n },\n _onDragEnd: function () {\n this._dragging = false;\n\n this._showDataInfo(false); // While in realtime mode and stream mode, dispatch action when\n // drag end will cause the whole view rerender, which is unnecessary.\n\n\n var realtime = this.dataZoomModel.get('realtime');\n !realtime && this._dispatchZoomAction();\n },\n _onClickPanelClick: function (e) {\n var size = this._size;\n\n var localPoint = this._displayables.barGroup.transformCoordToLocal(e.offsetX, e.offsetY);\n\n if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {\n return;\n }\n\n var handleEnds = this._handleEnds;\n var center = (handleEnds[0] + handleEnds[1]) / 2;\n\n var changed = this._updateInterval('all', localPoint[0] - center);\n\n this._updateView();\n\n changed && this._dispatchZoomAction();\n },\n\n /**\n * This action will be throttled.\n * @private\n */\n _dispatchZoomAction: function () {\n var range = this._range;\n this.api.dispatchAction({\n type: 'dataZoom',\n from: this.uid,\n dataZoomId: this.dataZoomModel.id,\n start: range[0],\n end: range[1]\n });\n },\n\n /**\n * @private\n */\n _findCoordRect: function () {\n // Find the grid coresponding to the first axis referred by dataZoom.\n var rect;\n each(this.getTargetCoordInfo(), function (coordInfoList) {\n if (!rect && coordInfoList.length) {\n var coordSys = coordInfoList[0].model.coordinateSystem;\n rect = coordSys.getRect && coordSys.getRect();\n }\n });\n\n if (!rect) {\n var width = this.api.getWidth();\n var height = this.api.getHeight();\n rect = {\n x: width * 0.2,\n y: height * 0.2,\n width: width * 0.6,\n height: height * 0.6\n };\n }\n\n return rect;\n }\n});\n\nfunction getOtherDim(thisDim) {\n // FIXME\n // 这个逻辑和getOtherAxis里一致,但是写在这里是否不好\n var map = {\n x: 'y',\n y: 'x',\n radius: 'angle',\n angle: 'radius'\n };\n return map[thisDim];\n}\n\nfunction getCursor(orient) {\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nvar _default = SliderZoomView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar dataFormatMixin = require(\"../../model/mixin/dataFormat\");\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 addCommas = formatUtil.addCommas;\nvar encodeHTML = formatUtil.encodeHTML;\n\nfunction fillLabel(opt) {\n modelUtil.defaultEmphasis(opt, 'label', ['show']);\n}\n\nvar MarkerModel = echarts.extendComponentModel({\n type: 'marker',\n dependencies: ['series', 'grid', 'polar', 'geo'],\n\n /**\n * @overrite\n */\n init: function (option, parentModel, ecModel) {\n this.mergeDefaultAndTheme(option, ecModel);\n\n this._mergeOption(option, ecModel, false, true);\n },\n\n /**\n * @return {boolean}\n */\n isAnimationEnabled: function () {\n if (env.node) {\n return false;\n }\n\n var hostSeries = this.__hostSeries;\n return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled();\n },\n\n /**\n * @overrite\n */\n mergeOption: function (newOpt, ecModel) {\n this._mergeOption(newOpt, ecModel, false, false);\n },\n _mergeOption: function (newOpt, ecModel, createdBySelf, isInit) {\n var MarkerModel = this.constructor;\n var modelPropName = this.mainType + 'Model';\n\n if (!createdBySelf) {\n ecModel.eachSeries(function (seriesModel) {\n var markerOpt = seriesModel.get(this.mainType, true);\n var markerModel = seriesModel[modelPropName];\n\n if (!markerOpt || !markerOpt.data) {\n seriesModel[modelPropName] = null;\n return;\n }\n\n if (!markerModel) {\n if (isInit) {\n // Default label emphasis `position` and `show`\n fillLabel(markerOpt);\n }\n\n zrUtil.each(markerOpt.data, function (item) {\n // FIXME Overwrite fillLabel method ?\n if (item instanceof Array) {\n fillLabel(item[0]);\n fillLabel(item[1]);\n } else {\n fillLabel(item);\n }\n });\n markerModel = new MarkerModel(markerOpt, this, ecModel);\n zrUtil.extend(markerModel, {\n mainType: this.mainType,\n // Use the same series index and name\n seriesIndex: seriesModel.seriesIndex,\n name: seriesModel.name,\n createdBySelf: true\n });\n markerModel.__hostSeries = seriesModel;\n } else {\n markerModel._mergeOption(markerOpt, ecModel, true);\n }\n\n seriesModel[modelPropName] = markerModel;\n }, this);\n }\n },\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n var data = this.getData();\n var value = this.getRawValue(dataIndex);\n var formattedValue = zrUtil.isArray(value) ? zrUtil.map(value, addCommas).join(', ') : addCommas(value);\n var name = data.getName(dataIndex);\n var html = encodeHTML(this.name);\n var newLine = renderMode === 'html' ? '
' : '\\n';\n\n if (value != null || name) {\n html += newLine;\n }\n\n if (name) {\n html += encodeHTML(name);\n\n if (value != null) {\n html += ' : ';\n }\n }\n\n if (value != null) {\n html += encodeHTML(formattedValue);\n }\n\n return html;\n },\n getData: function () {\n return this._data;\n },\n setData: function (data) {\n this._data = data;\n }\n});\nzrUtil.mixin(MarkerModel, dataFormatMixin);\nvar _default = MarkerModel;\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 layout = require(\"../../util/layout\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar linearMap = _number.linearMap;\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 getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nfunction getSortedIndices(data, sort) {\n var valueDim = data.mapDimension('value');\n var valueArr = data.mapArray(valueDim, function (val) {\n return val;\n });\n var indices = [];\n var isAscending = sort === 'ascending';\n\n for (var i = 0, len = data.count(); i < len; i++) {\n indices[i] = i;\n } // Add custom sortable function & none sortable opetion by \"options.sort\"\n\n\n if (typeof sort === 'function') {\n indices.sort(sort);\n } else if (sort !== 'none') {\n indices.sort(function (a, b) {\n return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a];\n });\n }\n\n return indices;\n}\n\nfunction labelLayout(data) {\n data.each(function (idx) {\n var itemModel = data.getItemModel(idx);\n var labelModel = itemModel.getModel('label');\n var labelPosition = labelModel.get('position');\n var orient = itemModel.get('orient');\n var labelLineModel = itemModel.getModel('labelLine');\n var layout = data.getItemLayout(idx);\n var points = layout.points;\n var isLabelInside = labelPosition === 'inner' || labelPosition === 'inside' || labelPosition === 'center' || labelPosition === 'insideLeft' || labelPosition === 'insideRight';\n var textAlign;\n var textX;\n var textY;\n var linePoints;\n\n if (isLabelInside) {\n if (labelPosition === 'insideLeft') {\n textX = (points[0][0] + points[3][0]) / 2 + 5;\n textY = (points[0][1] + points[3][1]) / 2;\n textAlign = 'left';\n } else if (labelPosition === 'insideRight') {\n textX = (points[1][0] + points[2][0]) / 2 - 5;\n textY = (points[1][1] + points[2][1]) / 2;\n textAlign = 'right';\n } else {\n textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4;\n textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4;\n textAlign = 'center';\n }\n\n linePoints = [[textX, textY], [textX, textY]];\n } else {\n var x1;\n var y1;\n var x2;\n var y2;\n var labelLineLen = labelLineModel.get('length');\n\n if (labelPosition === 'left') {\n // Left side\n x1 = (points[3][0] + points[0][0]) / 2;\n y1 = (points[3][1] + points[0][1]) / 2;\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n } else if (labelPosition === 'right') {\n // Right side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'left';\n } else if (labelPosition === 'top') {\n // Top side\n x1 = (points[3][0] + points[0][0]) / 2;\n y1 = (points[3][1] + points[0][1]) / 2;\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else if (labelPosition === 'bottom') {\n // Bottom side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else if (labelPosition === 'rightTop') {\n // RightTop side\n x1 = orient === 'horizontal' ? points[3][0] : points[1][0];\n y1 = orient === 'horizontal' ? points[3][1] : points[1][1];\n\n if (orient === 'horizontal') {\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'top';\n }\n } else if (labelPosition === 'rightBottom') {\n // RightBottom side\n x1 = points[2][0];\n y1 = points[2][1];\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'bottom';\n }\n } else if (labelPosition === 'leftTop') {\n // LeftTop side\n x1 = points[0][0];\n y1 = orient === 'horizontal' ? points[0][1] : points[1][1];\n\n if (orient === 'horizontal') {\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else {\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n }\n } else if (labelPosition === 'leftBottom') {\n // LeftBottom side\n x1 = orient === 'horizontal' ? points[1][0] : points[3][0];\n y1 = orient === 'horizontal' ? points[1][1] : points[2][1];\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n }\n } else {\n // Right side or Bottom side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'left';\n }\n }\n\n if (orient === 'horizontal') {\n x2 = x1;\n textX = x2;\n } else {\n y2 = y1;\n textY = y2;\n }\n\n linePoints = [[x1, y1], [x2, y2]];\n }\n\n layout.label = {\n linePoints: linePoints,\n x: textX,\n y: textY,\n verticalAlign: 'middle',\n textAlign: textAlign,\n inside: isLabelInside\n };\n });\n}\n\nfunction _default(ecModel, api, payload) {\n ecModel.eachSeriesByType('funnel', function (seriesModel) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var sort = seriesModel.get('sort');\n var viewRect = getViewRect(seriesModel, api);\n var indices = getSortedIndices(data, sort);\n var orient = seriesModel.get('orient');\n var viewWidth = viewRect.width;\n var viewHeight = viewRect.height;\n var x = viewRect.x;\n var y = viewRect.y;\n var sizeExtent = orient === 'horizontal' ? [parsePercent(seriesModel.get('minSize'), viewHeight), parsePercent(seriesModel.get('maxSize'), viewHeight)] : [parsePercent(seriesModel.get('minSize'), viewWidth), parsePercent(seriesModel.get('maxSize'), viewWidth)];\n var dataExtent = data.getDataExtent(valueDim);\n var min = seriesModel.get('min');\n var max = seriesModel.get('max');\n\n if (min == null) {\n min = Math.min(dataExtent[0], 0);\n }\n\n if (max == null) {\n max = dataExtent[1];\n }\n\n var funnelAlign = seriesModel.get('funnelAlign');\n var gap = seriesModel.get('gap');\n var viewSize = orient === 'horizontal' ? viewWidth : viewHeight;\n var itemSize = (viewSize - gap * (data.count() - 1)) / data.count();\n\n var getLinePoints = function (idx, offset) {\n // End point index is data.count() and we assign it 0\n if (orient === 'horizontal') {\n var val = data.get(valueDim, idx) || 0;\n var itemHeight = linearMap(val, [min, max], sizeExtent, true);\n var y0;\n\n switch (funnelAlign) {\n case 'top':\n y0 = y;\n break;\n\n case 'center':\n y0 = y + (viewHeight - itemHeight) / 2;\n break;\n\n case 'bottom':\n y0 = y + (viewHeight - itemHeight);\n break;\n }\n\n return [[offset, y0], [offset, y0 + itemHeight]];\n }\n\n var val = data.get(valueDim, idx) || 0;\n var itemWidth = linearMap(val, [min, max], sizeExtent, true);\n var x0;\n\n switch (funnelAlign) {\n case 'left':\n x0 = x;\n break;\n\n case 'center':\n x0 = x + (viewWidth - itemWidth) / 2;\n break;\n\n case 'right':\n x0 = x + viewWidth - itemWidth;\n break;\n }\n\n return [[x0, offset], [x0 + itemWidth, offset]];\n };\n\n if (sort === 'ascending') {\n // From bottom to top\n itemSize = -itemSize;\n gap = -gap;\n\n if (orient === 'horizontal') {\n x += viewWidth;\n } else {\n y += viewHeight;\n }\n\n indices = indices.reverse();\n }\n\n for (var i = 0; i < indices.length; i++) {\n var idx = indices[i];\n var nextIdx = indices[i + 1];\n var itemModel = data.getItemModel(idx);\n\n if (orient === 'horizontal') {\n var width = itemModel.get('itemStyle.width');\n\n if (width == null) {\n width = itemSize;\n } else {\n width = parsePercent(width, viewWidth);\n\n if (sort === 'ascending') {\n width = -width;\n }\n }\n\n var start = getLinePoints(idx, x);\n var end = getLinePoints(nextIdx, x + width);\n x += width + gap;\n data.setItemLayout(idx, {\n points: start.concat(end.slice().reverse())\n });\n } else {\n var height = itemModel.get('itemStyle.height');\n\n if (height == null) {\n height = itemSize;\n } else {\n height = parsePercent(height, viewHeight);\n\n if (sort === 'ascending') {\n height = -height;\n }\n }\n\n var start = orient === 'horizontal' ? getLinePoints(idx, x) : getLinePoints(idx, y);\n var end = orient === 'horizontal' ? getLinePoints(nextIdx, x + width) : getLinePoints(nextIdx, y + height);\n y += height + gap;\n data.setItemLayout(idx, {\n points: start.concat(end.slice().reverse())\n });\n }\n }\n\n labelLayout(data);\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 _poly = require(\"../line/poly\");\n\nvar Polygon = _poly.Polygon;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar bind = _util.bind;\nvar extend = _util.extend;\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendChartView({\n type: 'themeRiver',\n init: function () {\n this._layers = [];\n },\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var group = this.group;\n var layerSeries = seriesModel.getLayerSeries();\n var layoutInfo = data.getLayout('layoutInfo');\n var rect = layoutInfo.rect;\n var boundaryGap = layoutInfo.boundaryGap;\n group.attr('position', [0, rect.y + boundaryGap[0]]);\n\n function keyGetter(item) {\n return item.name;\n }\n\n var dataDiffer = new DataDiffer(this._layersSeries || [], layerSeries, keyGetter, keyGetter);\n var newLayersGroups = {};\n dataDiffer.add(bind(process, this, 'add')).update(bind(process, this, 'update')).remove(bind(process, this, 'remove')).execute();\n\n function process(status, idx, oldIdx) {\n var oldLayersGroups = this._layers;\n\n if (status === 'remove') {\n group.remove(oldLayersGroups[idx]);\n return;\n }\n\n var points0 = [];\n var points1 = [];\n var color;\n var indices = layerSeries[idx].indices;\n\n for (var j = 0; j < indices.length; j++) {\n var layout = data.getItemLayout(indices[j]);\n var x = layout.x;\n var y0 = layout.y0;\n var y = layout.y;\n points0.push([x, y0]);\n points1.push([x, y0 + y]);\n color = data.getItemVisual(indices[j], 'color');\n }\n\n var polygon;\n var text;\n var textLayout = data.getItemLayout(indices[0]);\n var itemModel = data.getItemModel(indices[j - 1]);\n var labelModel = itemModel.getModel('label');\n var margin = labelModel.get('margin');\n\n if (status === 'add') {\n var layerGroup = newLayersGroups[idx] = new graphic.Group();\n polygon = new Polygon({\n shape: {\n points: points0,\n stackedOnPoints: points1,\n smooth: 0.4,\n stackedOnSmooth: 0.4,\n smoothConstraint: false\n },\n z2: 0\n });\n text = new graphic.Text({\n style: {\n x: textLayout.x - margin,\n y: textLayout.y0 + textLayout.y / 2\n }\n });\n layerGroup.add(polygon);\n layerGroup.add(text);\n group.add(layerGroup);\n polygon.setClipPath(createGridClipShape(polygon.getBoundingRect(), seriesModel, function () {\n polygon.removeClipPath();\n }));\n } else {\n var layerGroup = oldLayersGroups[oldIdx];\n polygon = layerGroup.childAt(0);\n text = layerGroup.childAt(1);\n group.add(layerGroup);\n newLayersGroups[idx] = layerGroup;\n graphic.updateProps(polygon, {\n shape: {\n points: points0,\n stackedOnPoints: points1\n }\n }, seriesModel);\n graphic.updateProps(text, {\n style: {\n x: textLayout.x - margin,\n y: textLayout.y0 + textLayout.y / 2\n }\n }, seriesModel);\n }\n\n var hoverItemStyleModel = itemModel.getModel('emphasis.itemStyle');\n var itemStyleModel = itemModel.getModel('itemStyle');\n graphic.setTextStyle(text.style, labelModel, {\n text: labelModel.get('show') ? seriesModel.getFormattedLabel(indices[j - 1], 'normal') || data.getName(indices[j - 1]) : null,\n textVerticalAlign: 'middle'\n });\n polygon.setStyle(extend({\n fill: color\n }, itemStyleModel.getItemStyle(['color'])));\n graphic.setHoverStyle(polygon, hoverItemStyleModel.getItemStyle());\n }\n\n this._layersSeries = layerSeries;\n this._layers = newLayersGroups;\n },\n dispose: function () {}\n}); // add animation to the view\n\n\nfunction createGridClipShape(rect, seriesModel, cb) {\n var rectEl = new graphic.Rect({\n shape: {\n x: rect.x - 10,\n y: rect.y - 10,\n width: 0,\n height: rect.height + 20\n }\n });\n graphic.initProps(rectEl, {\n shape: {\n width: rect.width + 20,\n height: rect.height + 20\n }\n }, seriesModel, cb);\n return rectEl;\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 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*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar POSSIBLE_STYLES = ['areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle', 'chordStyle', 'label', 'labelLine'];\n\nfunction compatEC2ItemStyle(opt) {\n var itemStyleOpt = opt && opt.itemStyle;\n\n if (!itemStyleOpt) {\n return;\n }\n\n for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\n var styleName = POSSIBLE_STYLES[i];\n var normalItemStyleOpt = itemStyleOpt.normal;\n var emphasisItemStyleOpt = itemStyleOpt.emphasis;\n\n if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\n opt[styleName] = opt[styleName] || {};\n\n if (!opt[styleName].normal) {\n opt[styleName].normal = normalItemStyleOpt[styleName];\n } else {\n zrUtil.merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\n }\n\n normalItemStyleOpt[styleName] = null;\n }\n\n if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\n opt[styleName] = opt[styleName] || {};\n\n if (!opt[styleName].emphasis) {\n opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\n } else {\n zrUtil.merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\n }\n\n emphasisItemStyleOpt[styleName] = null;\n }\n }\n}\n\nfunction convertNormalEmphasis(opt, optType, useExtend) {\n if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\n var normalOpt = opt[optType].normal;\n var emphasisOpt = opt[optType].emphasis;\n\n if (normalOpt) {\n // Timeline controlStyle has other properties besides normal and emphasis\n if (useExtend) {\n opt[optType].normal = opt[optType].emphasis = null;\n zrUtil.defaults(opt[optType], normalOpt);\n } else {\n opt[optType] = normalOpt;\n }\n }\n\n if (emphasisOpt) {\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[optType] = emphasisOpt;\n }\n }\n}\n\nfunction removeEC3NormalStatus(opt) {\n convertNormalEmphasis(opt, 'itemStyle');\n convertNormalEmphasis(opt, 'lineStyle');\n convertNormalEmphasis(opt, 'areaStyle');\n convertNormalEmphasis(opt, 'label');\n convertNormalEmphasis(opt, 'labelLine'); // treemap\n\n convertNormalEmphasis(opt, 'upperLabel'); // graph\n\n convertNormalEmphasis(opt, 'edgeLabel');\n}\n\nfunction compatTextStyle(opt, propName) {\n // Check whether is not object (string\\null\\undefined ...)\n var labelOptSingle = isObject(opt) && opt[propName];\n var textStyle = isObject(labelOptSingle) && labelOptSingle.textStyle;\n\n if (textStyle) {\n for (var i = 0, len = modelUtil.TEXT_STYLE_OPTIONS.length; i < len; i++) {\n var propName = modelUtil.TEXT_STYLE_OPTIONS[i];\n\n if (textStyle.hasOwnProperty(propName)) {\n labelOptSingle[propName] = textStyle[propName];\n }\n }\n }\n}\n\nfunction compatEC3CommonStyles(opt) {\n if (opt) {\n removeEC3NormalStatus(opt);\n compatTextStyle(opt, 'label');\n opt.emphasis && compatTextStyle(opt.emphasis, 'label');\n }\n}\n\nfunction processSeries(seriesOpt) {\n if (!isObject(seriesOpt)) {\n return;\n }\n\n compatEC2ItemStyle(seriesOpt);\n removeEC3NormalStatus(seriesOpt);\n compatTextStyle(seriesOpt, 'label'); // treemap\n\n compatTextStyle(seriesOpt, 'upperLabel'); // graph\n\n compatTextStyle(seriesOpt, 'edgeLabel');\n\n if (seriesOpt.emphasis) {\n compatTextStyle(seriesOpt.emphasis, 'label'); // treemap\n\n compatTextStyle(seriesOpt.emphasis, 'upperLabel'); // graph\n\n compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\n }\n\n var markPoint = seriesOpt.markPoint;\n\n if (markPoint) {\n compatEC2ItemStyle(markPoint);\n compatEC3CommonStyles(markPoint);\n }\n\n var markLine = seriesOpt.markLine;\n\n if (markLine) {\n compatEC2ItemStyle(markLine);\n compatEC3CommonStyles(markLine);\n }\n\n var markArea = seriesOpt.markArea;\n\n if (markArea) {\n compatEC3CommonStyles(markArea);\n }\n\n var data = seriesOpt.data; // Break with ec3: if `setOption` again, there may be no `type` in option,\n // then the backward compat based on option type will not be performed.\n\n if (seriesOpt.type === 'graph') {\n data = data || seriesOpt.nodes;\n var edgeData = seriesOpt.links || seriesOpt.edges;\n\n if (edgeData && !zrUtil.isTypedArray(edgeData)) {\n for (var i = 0; i < edgeData.length; i++) {\n compatEC3CommonStyles(edgeData[i]);\n }\n }\n\n zrUtil.each(seriesOpt.categories, function (opt) {\n removeEC3NormalStatus(opt);\n });\n }\n\n if (data && !zrUtil.isTypedArray(data)) {\n for (var i = 0; i < data.length; i++) {\n compatEC3CommonStyles(data[i]);\n }\n } // mark point data\n\n\n var markPoint = seriesOpt.markPoint;\n\n if (markPoint && markPoint.data) {\n var mpData = markPoint.data;\n\n for (var i = 0; i < mpData.length; i++) {\n compatEC3CommonStyles(mpData[i]);\n }\n } // mark line data\n\n\n var markLine = seriesOpt.markLine;\n\n if (markLine && markLine.data) {\n var mlData = markLine.data;\n\n for (var i = 0; i < mlData.length; i++) {\n if (zrUtil.isArray(mlData[i])) {\n compatEC3CommonStyles(mlData[i][0]);\n compatEC3CommonStyles(mlData[i][1]);\n } else {\n compatEC3CommonStyles(mlData[i]);\n }\n }\n } // Series\n\n\n if (seriesOpt.type === 'gauge') {\n compatTextStyle(seriesOpt, 'axisLabel');\n compatTextStyle(seriesOpt, 'title');\n compatTextStyle(seriesOpt, 'detail');\n } else if (seriesOpt.type === 'treemap') {\n convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\n zrUtil.each(seriesOpt.levels, function (opt) {\n removeEC3NormalStatus(opt);\n });\n } else if (seriesOpt.type === 'tree') {\n removeEC3NormalStatus(seriesOpt.leaves);\n } // sunburst starts from ec4, so it does not need to compat levels.\n\n}\n\nfunction toArr(o) {\n return zrUtil.isArray(o) ? o : o ? [o] : [];\n}\n\nfunction toObj(o) {\n return (zrUtil.isArray(o) ? o[0] : o) || {};\n}\n\nfunction _default(option, isTheme) {\n each(toArr(option.series), function (seriesOpt) {\n isObject(seriesOpt) && processSeries(seriesOpt);\n });\n var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\n isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\n each(axes, function (axisName) {\n each(toArr(option[axisName]), function (axisOpt) {\n if (axisOpt) {\n compatTextStyle(axisOpt, 'axisLabel');\n compatTextStyle(axisOpt.axisPointer, 'label');\n }\n });\n });\n each(toArr(option.parallel), function (parallelOpt) {\n var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\n compatTextStyle(parallelAxisDefault, 'axisLabel');\n compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\n });\n each(toArr(option.calendar), function (calendarOpt) {\n convertNormalEmphasis(calendarOpt, 'itemStyle');\n compatTextStyle(calendarOpt, 'dayLabel');\n compatTextStyle(calendarOpt, 'monthLabel');\n compatTextStyle(calendarOpt, 'yearLabel');\n }); // radar.name.textStyle\n\n each(toArr(option.radar), function (radarOpt) {\n compatTextStyle(radarOpt, 'name');\n });\n each(toArr(option.geo), function (geoOpt) {\n if (isObject(geoOpt)) {\n compatEC3CommonStyles(geoOpt);\n each(toArr(geoOpt.regions), function (regionObj) {\n compatEC3CommonStyles(regionObj);\n });\n }\n });\n each(toArr(option.timeline), function (timelineOpt) {\n compatEC3CommonStyles(timelineOpt);\n convertNormalEmphasis(timelineOpt, 'label');\n convertNormalEmphasis(timelineOpt, 'itemStyle');\n convertNormalEmphasis(timelineOpt, 'controlStyle', true);\n var data = timelineOpt.data;\n zrUtil.isArray(data) && zrUtil.each(data, function (item) {\n if (zrUtil.isObject(item)) {\n convertNormalEmphasis(item, 'label');\n convertNormalEmphasis(item, 'itemStyle');\n }\n });\n });\n each(toArr(option.toolbox), function (toolboxOpt) {\n convertNormalEmphasis(toolboxOpt, 'iconStyle');\n each(toolboxOpt.feature, function (featureOpt) {\n convertNormalEmphasis(featureOpt, 'iconStyle');\n });\n });\n compatTextStyle(toObj(option.axisPointer), 'label');\n compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\n}\n\nmodule.exports = _default;","var fixShadow = require(\"./helper/fixShadow\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\nvar STYLE_COMMON_PROPS = [['shadowBlur', 0], ['shadowOffsetX', 0], ['shadowOffsetY', 0], ['shadowColor', '#000'], ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]]; // var SHADOW_PROPS = STYLE_COMMON_PROPS.slice(0, 4);\n// var LINE_PROPS = STYLE_COMMON_PROPS.slice(4);\n\nvar Style = function (opts) {\n this.extendFrom(opts, false);\n};\n\nfunction createLinearGradient(ctx, obj, rect) {\n var x = obj.x == null ? 0 : obj.x;\n var x2 = obj.x2 == null ? 1 : obj.x2;\n var y = obj.y == null ? 0 : obj.y;\n var y2 = obj.y2 == null ? 0 : obj.y2;\n\n if (!obj.global) {\n x = x * rect.width + rect.x;\n x2 = x2 * rect.width + rect.x;\n y = y * rect.height + rect.y;\n y2 = y2 * rect.height + rect.y;\n } // Fix NaN when rect is Infinity\n\n\n x = isNaN(x) ? 0 : x;\n x2 = isNaN(x2) ? 1 : x2;\n y = isNaN(y) ? 0 : y;\n y2 = isNaN(y2) ? 0 : y2;\n var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\n return canvasGradient;\n}\n\nfunction createRadialGradient(ctx, obj, rect) {\n var width = rect.width;\n var height = rect.height;\n var min = Math.min(width, height);\n var x = obj.x == null ? 0.5 : obj.x;\n var y = obj.y == null ? 0.5 : obj.y;\n var r = obj.r == null ? 0.5 : obj.r;\n\n if (!obj.global) {\n x = x * width + rect.x;\n y = y * height + rect.y;\n r = r * min;\n }\n\n var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n return canvasGradient;\n}\n\nStyle.prototype = {\n constructor: Style,\n\n /**\n * @type {string}\n */\n fill: '#000',\n\n /**\n * @type {string}\n */\n stroke: null,\n\n /**\n * @type {number}\n */\n opacity: 1,\n\n /**\n * @type {number}\n */\n fillOpacity: null,\n\n /**\n * @type {number}\n */\n strokeOpacity: null,\n\n /**\n * `true` is not supported.\n * `false`/`null`/`undefined` are the same.\n * `false` is used to remove lineDash in some\n * case that `null`/`undefined` can not be set.\n * (e.g., emphasis.lineStyle in echarts)\n * @type {Array.|boolean}\n */\n lineDash: null,\n\n /**\n * @type {number}\n */\n lineDashOffset: 0,\n\n /**\n * @type {number}\n */\n shadowBlur: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetY: 0,\n\n /**\n * @type {number}\n */\n lineWidth: 1,\n\n /**\n * If stroke ignore scale\n * @type {Boolean}\n */\n strokeNoScale: false,\n // Bounding rect text configuration\n // Not affected by element transform\n\n /**\n * @type {string}\n */\n text: null,\n\n /**\n * If `fontSize` or `fontFamily` exists, `font` will be reset by\n * `fontSize`, `fontStyle`, `fontWeight`, `fontFamily`.\n * So do not visit it directly in upper application (like echarts),\n * but use `contain/text#makeFont` instead.\n * @type {string}\n */\n font: null,\n\n /**\n * The same as font. Use font please.\n * @deprecated\n * @type {string}\n */\n textFont: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontStyle: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontWeight: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * Should be 12 but not '12px'.\n * @type {number}\n */\n fontSize: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontFamily: null,\n\n /**\n * Reserved for special functinality, like 'hr'.\n * @type {string}\n */\n textTag: null,\n\n /**\n * @type {string}\n */\n textFill: '#000',\n\n /**\n * @type {string}\n */\n textStroke: null,\n\n /**\n * @type {number}\n */\n textWidth: null,\n\n /**\n * Only for textBackground.\n * @type {number}\n */\n textHeight: null,\n\n /**\n * textStroke may be set as some color as a default\n * value in upper applicaion, where the default value\n * of textStrokeWidth should be 0 to make sure that\n * user can choose to do not use text stroke.\n * @type {number}\n */\n textStrokeWidth: 0,\n\n /**\n * @type {number}\n */\n textLineHeight: null,\n\n /**\n * 'inside', 'left', 'right', 'top', 'bottom'\n * [x, y]\n * Based on x, y of rect.\n * @type {string|Array.}\n * @default 'inside'\n */\n textPosition: 'inside',\n\n /**\n * If not specified, use the boundingRect of a `displayable`.\n * @type {Object}\n */\n textRect: null,\n\n /**\n * [x, y]\n * @type {Array.}\n */\n textOffset: null,\n\n /**\n * @type {string}\n */\n textAlign: null,\n\n /**\n * @type {string}\n */\n textVerticalAlign: null,\n\n /**\n * @type {number}\n */\n textDistance: 5,\n\n /**\n * @type {string}\n */\n textShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetY: 0,\n\n /**\n * @type {string}\n */\n textBoxShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textBoxShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetY: 0,\n\n /**\n * Whether transform text.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n * @type {boolean}\n */\n transformText: false,\n\n /**\n * Text rotate around position of Path or Image.\n * The origin of the rotation can be specified by `textOrigin`.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n */\n textRotation: 0,\n\n /**\n * Text origin of text rotation.\n * Useful in the case like label rotation of circular symbol.\n * Only available in Path and Image element, where the text is called\n * as `RectText` and the element is called as \"host element\".\n * The value can be:\n * + If specified as a coordinate like `[10, 40]`, it is the `[x, y]`\n * base on the left-top corner of the rect of its host element.\n * + If specified as a string `center`, it is the center of the rect of\n * its host element.\n * + By default, this origin is the `textPosition`.\n * @type {string|Array.}\n */\n textOrigin: null,\n\n /**\n * @type {string}\n */\n textBackgroundColor: null,\n\n /**\n * @type {string}\n */\n textBorderColor: null,\n\n /**\n * @type {number}\n */\n textBorderWidth: 0,\n\n /**\n * @type {number}\n */\n textBorderRadius: 0,\n\n /**\n * Can be `2` or `[2, 4]` or `[2, 3, 4, 5]`\n * @type {number|Array.}\n */\n textPadding: null,\n\n /**\n * Text styles for rich text.\n * @type {Object}\n */\n rich: null,\n\n /**\n * {outerWidth, outerHeight, ellipsis, placeholder}\n * @type {Object}\n */\n truncate: null,\n\n /**\n * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n * @type {string}\n */\n blend: null,\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n */\n bind: function (ctx, el, prevEl) {\n var style = this;\n var prevStyle = prevEl && prevEl.style; // If no prevStyle, it means first draw.\n // Only apply cache if the last time cachced by this function.\n\n var notCheckCache = !prevStyle || ctx.__attrCachedBy !== ContextCachedBy.STYLE_BIND;\n ctx.__attrCachedBy = ContextCachedBy.STYLE_BIND;\n\n for (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n var styleName = prop[0];\n\n if (notCheckCache || style[styleName] !== prevStyle[styleName]) {\n // FIXME Invalid property value will cause style leak from previous element.\n ctx[styleName] = fixShadow(ctx, styleName, style[styleName] || prop[1]);\n }\n }\n\n if (notCheckCache || style.fill !== prevStyle.fill) {\n ctx.fillStyle = style.fill;\n }\n\n if (notCheckCache || style.stroke !== prevStyle.stroke) {\n ctx.strokeStyle = style.stroke;\n }\n\n if (notCheckCache || style.opacity !== prevStyle.opacity) {\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n }\n\n if (notCheckCache || style.blend !== prevStyle.blend) {\n ctx.globalCompositeOperation = style.blend || 'source-over';\n }\n\n if (this.hasStroke()) {\n var lineWidth = style.lineWidth;\n ctx.lineWidth = lineWidth / (this.strokeNoScale && el && el.getLineScale ? el.getLineScale() : 1);\n }\n },\n hasFill: function () {\n var fill = this.fill;\n return fill != null && fill !== 'none';\n },\n hasStroke: function () {\n var stroke = this.stroke;\n return stroke != null && stroke !== 'none' && this.lineWidth > 0;\n },\n\n /**\n * Extend from other style\n * @param {zrender/graphic/Style} otherStyle\n * @param {boolean} overwrite true: overwrirte any way.\n * false: overwrite only when !target.hasOwnProperty\n * others: overwrite when property is not null/undefined.\n */\n extendFrom: function (otherStyle, overwrite) {\n if (otherStyle) {\n for (var name in otherStyle) {\n if (otherStyle.hasOwnProperty(name) && (overwrite === true || (overwrite === false ? !this.hasOwnProperty(name) : otherStyle[name] != null))) {\n this[name] = otherStyle[name];\n }\n }\n }\n },\n\n /**\n * Batch setting style with a given object\n * @param {Object|string} obj\n * @param {*} [obj]\n */\n set: function (obj, value) {\n if (typeof obj === 'string') {\n this[obj] = value;\n } else {\n this.extendFrom(obj, true);\n }\n },\n\n /**\n * Clone\n * @return {zrender/graphic/Style} [description]\n */\n clone: function () {\n var newStyle = new this.constructor();\n newStyle.extendFrom(this, true);\n return newStyle;\n },\n getGradient: function (ctx, obj, rect) {\n var method = obj.type === 'radial' ? createRadialGradient : createLinearGradient;\n var canvasGradient = method(ctx, obj, rect);\n var colorStops = obj.colorStops;\n\n for (var i = 0; i < colorStops.length; i++) {\n canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n }\n\n return canvasGradient;\n }\n};\nvar styleProto = Style.prototype;\n\nfor (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n\n if (!(prop[0] in styleProto)) {\n styleProto[prop[0]] = prop[1];\n }\n} // Provide for others\n\n\nStyle.getGradient = styleProto.getGradient;\nvar _default = Style;\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 VisualMapping = require(\"./VisualMapping\");\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 * @file Visual solution, for consistent option specification.\n */\nvar each = zrUtil.each;\n\nfunction hasKeys(obj) {\n if (obj) {\n for (var name in obj) {\n if (obj.hasOwnProperty(name)) {\n return true;\n }\n }\n }\n}\n/**\n * @param {Object} option\n * @param {Array.} stateList\n * @param {Function} [supplementVisualOption]\n * @return {Object} visualMappings >\n */\n\n\nfunction createVisualMappings(option, stateList, supplementVisualOption) {\n var visualMappings = {};\n each(stateList, function (state) {\n var mappings = visualMappings[state] = createMappings();\n each(option[state], function (visualData, visualType) {\n if (!VisualMapping.isValidType(visualType)) {\n return;\n }\n\n var mappingOption = {\n type: visualType,\n visual: visualData\n };\n supplementVisualOption && supplementVisualOption(mappingOption, state);\n mappings[visualType] = new VisualMapping(mappingOption); // Prepare a alpha for opacity, for some case that opacity\n // is not supported, such as rendering using gradient color.\n\n if (visualType === 'opacity') {\n mappingOption = zrUtil.clone(mappingOption);\n mappingOption.type = 'colorAlpha';\n mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption);\n }\n });\n });\n return visualMappings;\n\n function createMappings() {\n var Creater = function () {}; // Make sure hidden fields will not be visited by\n // object iteration (with hasOwnProperty checking).\n\n\n Creater.prototype.__hidden = Creater.prototype;\n var obj = new Creater();\n return obj;\n }\n}\n/**\n * @param {Object} thisOption\n * @param {Object} newOption\n * @param {Array.} keys\n */\n\n\nfunction replaceVisualOption(thisOption, newOption, keys) {\n // Visual attributes merge is not supported, otherwise it\n // brings overcomplicated merge logic. See #2853. So if\n // newOption has anyone of these keys, all of these keys\n // will be reset. Otherwise, all keys remain.\n var has;\n zrUtil.each(keys, function (key) {\n if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n has = true;\n }\n });\n has && zrUtil.each(keys, function (key) {\n if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n thisOption[key] = zrUtil.clone(newOption[key]);\n } else {\n delete thisOption[key];\n }\n });\n}\n/**\n * @param {Array.} stateList\n * @param {Object} visualMappings >\n * @param {module:echarts/data/List} list\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {object} [scope] Scope for getValueState\n * @param {string} [dimension] Concrete dimension, if used.\n */\n// ???! handle brush?\n\n\nfunction applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {\n var visualTypesMap = {};\n zrUtil.each(stateList, function (state) {\n var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n visualTypesMap[state] = visualTypes;\n });\n var dataIndex;\n\n function getVisual(key) {\n return data.getItemVisual(dataIndex, key);\n }\n\n function setVisual(key, value) {\n data.setItemVisual(dataIndex, key, value);\n }\n\n if (dimension == null) {\n data.each(eachItem);\n } else {\n data.each([dimension], eachItem);\n }\n\n function eachItem(valueOrIndex, index) {\n dataIndex = dimension == null ? valueOrIndex : index;\n var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n if (rawDataItem && rawDataItem.visualMap === false) {\n return;\n }\n\n var valueState = getValueState.call(scope, valueOrIndex);\n var mappings = visualMappings[valueState];\n var visualTypes = visualTypesMap[valueState];\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual);\n }\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Array.} stateList\n * @param {Object} visualMappings >\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {number} [dim] dimension or dimension index.\n */\n\n\nfunction incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {\n var visualTypesMap = {};\n zrUtil.each(stateList, function (state) {\n var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n visualTypesMap[state] = visualTypes;\n });\n\n function progress(params, data) {\n if (dim != null) {\n dim = data.getDimension(dim);\n }\n\n function getVisual(key) {\n return data.getItemVisual(dataIndex, key);\n }\n\n function setVisual(key, value) {\n data.setItemVisual(dataIndex, key, value);\n }\n\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n if (rawDataItem && rawDataItem.visualMap === false) {\n continue;\n }\n\n var value = dim != null ? data.get(dim, dataIndex, true) : dataIndex;\n var valueState = getValueState(value);\n var mappings = visualMappings[valueState];\n var visualTypes = visualTypesMap[valueState];\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);\n }\n }\n }\n\n return {\n progress: progress\n };\n}\n\nexports.createVisualMappings = createVisualMappings;\nexports.replaceVisualOption = replaceVisualOption;\nexports.applyVisual = applyVisual;\nexports.incrementalApplyVisual = incrementalApplyVisual;","\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// TODO Parse shadow style\n// TODO Only shallow path support\nfunction _default(properties) {\n // Normalize\n for (var i = 0; i < properties.length; i++) {\n if (!properties[i][1]) {\n properties[i][1] = properties[i][0];\n }\n }\n\n return function (model, excludes, includes) {\n var style = {};\n\n for (var i = 0; i < properties.length; i++) {\n var propName = properties[i][1];\n\n if (excludes && zrUtil.indexOf(excludes, propName) >= 0 || includes && zrUtil.indexOf(includes, propName) < 0) {\n continue;\n }\n\n var val = model.getShallow(propName);\n\n if (val != null) {\n style[properties[i][0]] = val;\n }\n }\n\n return style;\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 _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;","\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 paletteScope = {};\n ecModel.eachSeriesByType('graph', function (seriesModel) {\n var categoriesData = seriesModel.getCategoriesData();\n var data = seriesModel.getData();\n var categoryNameIdxMap = {};\n categoriesData.each(function (idx) {\n var name = categoriesData.getName(idx); // Add prefix to avoid conflict with Object.prototype.\n\n categoryNameIdxMap['ec-' + name] = idx;\n var itemModel = categoriesData.getItemModel(idx);\n var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(name, paletteScope);\n categoriesData.setItemVisual(idx, 'color', color);\n var itemStyleList = ['opacity', 'symbol', 'symbolSize', 'symbolKeepAspect'];\n\n for (var i = 0; i < itemStyleList.length; i++) {\n var itemStyle = itemModel.getShallow(itemStyleList[i], true);\n\n if (itemStyle != null) {\n categoriesData.setItemVisual(idx, itemStyleList[i], itemStyle);\n }\n }\n }); // Assign category color to visual\n\n if (categoriesData.count()) {\n data.each(function (idx) {\n var model = data.getItemModel(idx);\n var category = model.getShallow('category');\n\n if (category != null) {\n if (typeof category === 'string') {\n category = categoryNameIdxMap['ec-' + category];\n }\n\n var itemStyleList = ['color', 'opacity', 'symbol', 'symbolSize', 'symbolKeepAspect'];\n\n for (var i = 0; i < itemStyleList.length; i++) {\n if (data.getItemVisual(idx, itemStyleList[i], true) == null) {\n data.setItemVisual(idx, itemStyleList[i], categoriesData.getItemVisual(category, itemStyleList[i]));\n }\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\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 * Language: (Simplified) Chinese.\n */\nvar _default = {\n legend: {\n selector: {\n all: '全选',\n inverse: '反选'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: '矩形选择',\n polygon: '圈选',\n lineX: '横向选择',\n lineY: '纵向选择',\n keep: '保持选择',\n clear: '清除选择'\n }\n },\n dataView: {\n title: '数据视图',\n lang: ['数据视图', '关闭', '刷新']\n },\n dataZoom: {\n title: {\n zoom: '区域缩放',\n back: '区域缩放还原'\n }\n },\n magicType: {\n title: {\n line: '切换为折线图',\n bar: '切换为柱状图',\n stack: '切换为堆叠',\n tiled: '切换为平铺'\n }\n },\n restore: {\n title: '还原'\n },\n saveAsImage: {\n title: '保存为图片',\n lang: ['右键另存为图片']\n }\n },\n series: {\n typeNames: {\n pie: '饼图',\n bar: '柱状图',\n line: '折线图',\n scatter: '散点图',\n effectScatter: '涟漪散点图',\n radar: '雷达图',\n tree: '树图',\n treemap: '矩形树图',\n boxplot: '箱型图',\n candlestick: 'K线图',\n k: 'K线图',\n heatmap: '热力图',\n map: '地图',\n parallel: '平行坐标图',\n lines: '线图',\n graph: '关系图',\n sankey: '桑基图',\n funnel: '漏斗图',\n gauge: '仪表盘图',\n pictorialBar: '象形柱图',\n themeRiver: '主题河流图',\n sunburst: '旭日图'\n }\n },\n aria: {\n general: {\n withTitle: '这是一个关于“{title}”的图表。',\n withoutTitle: '这是一个图表,'\n },\n series: {\n single: {\n prefix: '',\n withName: '图表类型是{seriesType},表示{seriesName}。',\n withoutName: '图表类型是{seriesType}。'\n },\n multiple: {\n prefix: '它由{seriesCount}个图表系列组成。',\n withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType},',\n withoutName: '第{seriesId}个系列是一个{seriesType},',\n separator: {\n middle: ';',\n end: '。'\n }\n }\n },\n data: {\n allData: '其数据是——',\n partialData: '其中,前{displayCnt}项是——',\n withName: '{name}的数据是{value}',\n withoutName: '{value}',\n separator: {\n middle: ',',\n end: ''\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 preprocessor = require(\"./visualMap/preprocessor\");\n\nrequire(\"./visualMap/typeDefaulter\");\n\nrequire(\"./visualMap/visualEncoding\");\n\nrequire(\"./visualMap/PiecewiseModel\");\n\nrequire(\"./visualMap/PiecewiseView\");\n\nrequire(\"./visualMap/visualMapAction\");\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 * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","\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 _util = require(\"zrender/lib/core/util\");\n\nvar isTypedArray = _util.isTypedArray;\nvar extend = _util.extend;\nvar assert = _util.assert;\nvar each = _util.each;\nvar isObject = _util.isObject;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\nvar isDataItemOption = _model.isDataItemOption;\n\nvar _number = require(\"../../util/number\");\n\nvar parseDate = _number.parseDate;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\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\n// ??? refactor? check the outer usage of data provider.\n// merge with defaultDimValueGetter?\n\n/**\n * If normal array used, mutable chunk size is supported.\n * If typed array used, chunk size must be fixed.\n */\nfunction DefaultDataProvider(source, dimSize) {\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n this._source = source;\n var data = this._data = source.data;\n var sourceFormat = source.sourceFormat; // Typed array. TODO IE10+?\n\n if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\n this._offset = 0;\n this._dimSize = dimSize;\n this._data = data;\n }\n\n var methods = providerMethods[sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + '_' + source.seriesLayoutBy : sourceFormat];\n extend(this, methods);\n}\n\nvar providerProto = DefaultDataProvider.prototype; // If data is pure without style configuration\n\nproviderProto.pure = false; // If data is persistent and will not be released after use.\n\nproviderProto.persistent = true; // ???! FIXME legacy data provider do not has method getSource\n\nproviderProto.getSource = function () {\n return this._source;\n};\n\nvar providerMethods = {\n 'arrayRows_column': {\n pure: true,\n count: function () {\n return Math.max(0, this._data.length - this._source.startIndex);\n },\n getItem: function (idx) {\n return this._data[idx + this._source.startIndex];\n },\n appendData: appendDataSimply\n },\n 'arrayRows_row': {\n pure: true,\n count: function () {\n var row = this._data[0];\n return row ? Math.max(0, row.length - this._source.startIndex) : 0;\n },\n getItem: function (idx) {\n idx += this._source.startIndex;\n var item = [];\n var data = this._data;\n\n for (var i = 0; i < data.length; i++) {\n var row = data[i];\n item.push(row ? row[idx] : null);\n }\n\n return item;\n },\n appendData: function () {\n throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\n }\n },\n 'objectRows': {\n pure: true,\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'keyedColumns': {\n pure: true,\n count: function () {\n var dimName = this._source.dimensionsDefine[0].name;\n var col = this._data[dimName];\n return col ? col.length : 0;\n },\n getItem: function (idx) {\n var item = [];\n var dims = this._source.dimensionsDefine;\n\n for (var i = 0; i < dims.length; i++) {\n var col = this._data[dims[i].name];\n item.push(col ? col[idx] : null);\n }\n\n return item;\n },\n appendData: function (newData) {\n var data = this._data;\n each(newData, function (newCol, key) {\n var oldCol = data[key] || (data[key] = []);\n\n for (var i = 0; i < (newCol || []).length; i++) {\n oldCol.push(newCol[i]);\n }\n });\n }\n },\n 'original': {\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'typedArray': {\n persistent: false,\n pure: true,\n count: function () {\n return this._data ? this._data.length / this._dimSize : 0;\n },\n getItem: function (idx, out) {\n idx = idx - this._offset;\n out = out || [];\n var offset = this._dimSize * idx;\n\n for (var i = 0; i < this._dimSize; i++) {\n out[i] = this._data[offset + i];\n }\n\n return out;\n },\n appendData: function (newData) {\n this._data = newData;\n },\n // Clean self if data is already used.\n clean: function () {\n // PENDING\n this._offset += this.count();\n this._data = null;\n }\n }\n};\n\nfunction countSimply() {\n return this._data.length;\n}\n\nfunction getItemSimply(idx) {\n return this._data[idx];\n}\n\nfunction appendDataSimply(newData) {\n for (var i = 0; i < newData.length; i++) {\n this._data.push(newData[i]);\n }\n}\n\nvar rawValueGetters = {\n arrayRows: getRawValueSimply,\n objectRows: function (dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimName] : dataItem;\n },\n keyedColumns: getRawValueSimply,\n original: function (dataItem, dataIndex, dimIndex, dimName) {\n // FIXME\n // In some case (markpoint in geo (geo-map.html)), dataItem\n // is {coord: [...]}\n var value = getDataItemValue(dataItem);\n return dimIndex == null || !(value instanceof Array) ? value : value[dimIndex];\n },\n typedArray: getRawValueSimply\n};\n\nfunction getRawValueSimply(dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimIndex] : dataItem;\n}\n\nvar defaultDimValueGetters = {\n arrayRows: getDimValueSimply,\n objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\n },\n keyedColumns: getDimValueSimply,\n original: function (dataItem, dimName, dataIndex, dimIndex) {\n // Performance sensitive, do not use modelUtil.getDataItemValue.\n // If dataItem is an plain object with no value field, the var `value`\n // will be assigned with the object, but it will be tread correctly\n // in the `convertDataValue`.\n var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); // If any dataItem is like { value: 10 }\n\n if (!this._rawData.pure && isDataItemOption(dataItem)) {\n this.hasItemOption = true;\n }\n\n return converDataValue(value instanceof Array ? value[dimIndex] // If value is a single number or something else not array.\n : value, this._dimensionInfos[dimName]);\n },\n typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\n return dataItem[dimIndex];\n }\n};\n\nfunction getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\n}\n/**\n * This helper method convert value in data.\n * @param {string|number|Date} value\n * @param {Object|string} [dimInfo] If string (like 'x'), dimType defaults 'number'.\n * If \"dimInfo.ordinalParseAndSave\", ordinal value can be parsed.\n */\n\n\nfunction converDataValue(value, dimInfo) {\n // Performance sensitive.\n var dimType = dimInfo && dimInfo.type;\n\n if (dimType === 'ordinal') {\n // If given value is a category string\n var ordinalMeta = dimInfo && dimInfo.ordinalMeta;\n return ordinalMeta ? ordinalMeta.parseAndCollect(value) : value;\n }\n\n if (dimType === 'time' // spead up when using timestamp\n && typeof value !== 'number' && value != null && value !== '-') {\n value = +parseDate(value);\n } // dimType defaults 'number'.\n // If dimType is not ordinal and value is null or undefined or NaN or '-',\n // parse to NaN.\n\n\n return value == null || value === '' ? NaN // If string (like '-'), using '+' parse to NaN\n // If object, also parse to NaN\n : +value;\n} // ??? FIXME can these logic be more neat: getRawValue, getRawDataItem,\n// Consider persistent.\n// Caution: why use raw value to display on label or tooltip?\n// A reason is to avoid format. For example time value we do not know\n// how to format is expected. More over, if stack is used, calculated\n// value may be 0.91000000001, which have brings trouble to display.\n// TODO: consider how to treat null/undefined/NaN when display?\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string|number} [dim] dimName or dimIndex\n * @return {Array.|string|number} can be null/undefined.\n */\n\n\nfunction retrieveRawValue(data, dataIndex, dim) {\n if (!data) {\n return;\n } // Consider data may be not persistent.\n\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (dataItem == null) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n var dimName;\n var dimIndex;\n var dimInfo = data.getDimensionInfo(dim);\n\n if (dimInfo) {\n dimName = dimInfo.name;\n dimIndex = dimInfo.index;\n }\n\n return rawValueGetters[sourceFormat](dataItem, dataIndex, dimIndex, dimName);\n}\n/**\n * Compatible with some cases (in pie, map) like:\n * data: [{name: 'xx', value: 5, selected: true}, ...]\n * where only sourceFormat is 'original' and 'objectRows' supported.\n *\n * ??? TODO\n * Supported detail options in data item when using 'arrayRows'.\n *\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string} attr like 'selected'\n */\n\n\nfunction retrieveRawAttr(data, dataIndex, attr) {\n if (!data) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n\n if (sourceFormat !== SOURCE_FORMAT_ORIGINAL && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\n return;\n }\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (sourceFormat === SOURCE_FORMAT_ORIGINAL && !isObject(dataItem)) {\n dataItem = null;\n }\n\n if (dataItem) {\n return dataItem[attr];\n }\n}\n\nexports.DefaultDataProvider = DefaultDataProvider;\nexports.defaultDimValueGetters = defaultDimValueGetters;\nexports.retrieveRawValue = retrieveRawValue;\nexports.retrieveRawAttr = retrieveRawAttr;","\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 each = _util.each;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\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 OTHER_DIMENSIONS = createHashMap(['tooltip', 'label', 'itemName', 'itemId', 'seriesName']);\n\nfunction summarizeDimensions(data) {\n var summary = {};\n var encode = summary.encode = {};\n var notExtraCoordDimMap = createHashMap();\n var defaultedLabel = [];\n var defaultedTooltip = []; // See the comment of `List.js#userOutput`.\n\n var userOutput = summary.userOutput = {\n dimensionNames: data.dimensions.slice(),\n encode: {}\n };\n each(data.dimensions, function (dimName) {\n var dimItem = data.getDimensionInfo(dimName);\n var coordDim = dimItem.coordDim;\n\n if (coordDim) {\n var coordDimIndex = dimItem.coordDimIndex;\n getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\n\n if (!dimItem.isExtraCoord) {\n notExtraCoordDimMap.set(coordDim, 1); // Use the last coord dim (and label friendly) as default label,\n // because when dataset is used, it is hard to guess which dimension\n // can be value dimension. If both show x, y on label is not look good,\n // and conventionally y axis is focused more.\n\n if (mayLabelDimType(dimItem.type)) {\n defaultedLabel[0] = dimName;\n } // User output encode do not contain generated coords.\n // And it only has index. User can use index to retrieve value from the raw item array.\n\n\n getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\n }\n\n if (dimItem.defaultTooltip) {\n defaultedTooltip.push(dimName);\n }\n }\n\n OTHER_DIMENSIONS.each(function (v, otherDim) {\n var encodeArr = getOrCreateEncodeArr(encode, otherDim);\n var dimIndex = dimItem.otherDims[otherDim];\n\n if (dimIndex != null && dimIndex !== false) {\n encodeArr[dimIndex] = dimItem.name;\n }\n });\n });\n var dataDimsOnCoord = [];\n var encodeFirstDimNotExtra = {};\n notExtraCoordDimMap.each(function (v, coordDim) {\n var dimArr = encode[coordDim]; // ??? FIXME extra coord should not be set in dataDimsOnCoord.\n // But should fix the case that radar axes: simplify the logic\n // of `completeDimension`, remove `extraPrefix`.\n\n encodeFirstDimNotExtra[coordDim] = dimArr[0]; // Not necessary to remove duplicate, because a data\n // dim canot on more than one coordDim.\n\n dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\n });\n summary.dataDimsOnCoord = dataDimsOnCoord;\n summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\n var encodeLabel = encode.label; // FIXME `encode.label` is not recommanded, because formatter can not be set\n // in this way. Use label.formatter instead. May be remove this approach someday.\n\n if (encodeLabel && encodeLabel.length) {\n defaultedLabel = encodeLabel.slice();\n }\n\n var encodeTooltip = encode.tooltip;\n\n if (encodeTooltip && encodeTooltip.length) {\n defaultedTooltip = encodeTooltip.slice();\n } else if (!defaultedTooltip.length) {\n defaultedTooltip = defaultedLabel.slice();\n }\n\n encode.defaultedLabel = defaultedLabel;\n encode.defaultedTooltip = defaultedTooltip;\n return summary;\n}\n\nfunction getOrCreateEncodeArr(encode, dim) {\n if (!encode.hasOwnProperty(dim)) {\n encode[dim] = [];\n }\n\n return encode[dim];\n}\n\nfunction getDimensionTypeByAxis(axisType) {\n return axisType === 'category' ? 'ordinal' : axisType === 'time' ? 'time' : 'float';\n}\n\nfunction mayLabelDimType(dimType) {\n // In most cases, ordinal and time do not suitable for label.\n // Ordinal info can be displayed on axis. Time is too long.\n return !(dimType === 'ordinal' || dimType === 'time');\n} // function findTheLastDimMayLabel(data) {\n// // Get last value dim\n// var dimensions = data.dimensions.slice();\n// var valueType;\n// var valueDim;\n// while (dimensions.length && (\n// valueDim = dimensions.pop(),\n// valueType = data.getDimensionInfo(valueDim).type,\n// valueType === 'ordinal' || valueType === 'time'\n// )) {} // jshint ignore:line\n// return valueDim;\n// }\n\n\nexports.OTHER_DIMENSIONS = OTHER_DIMENSIONS;\nexports.summarizeDimensions = summarizeDimensions;\nexports.getDimensionTypeByAxis = getDimensionTypeByAxis;","\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 barPolar = require(\"../layout/barPolar\");\n\nrequire(\"../coord/polar/polarCreator\");\n\nrequire(\"./angleAxis\");\n\nrequire(\"./radiusAxis\");\n\nrequire(\"./axisPointer\");\n\nrequire(\"./axisPointer/PolarAxisPointer\");\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// For reducing size of echarts.min, barLayoutPolar is required by polar.\necharts.registerLayout(zrUtil.curry(barPolar, 'bar')); // Polar view\n\necharts.extendComponentView({\n type: 'polar'\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*/\nvar borderColorQuery = ['itemStyle', 'borderColor'];\n\nfunction _default(ecModel, api) {\n var globalColors = ecModel.get('color');\n ecModel.eachRawSeriesByType('boxplot', function (seriesModel) {\n var defaulColor = globalColors[seriesModel.seriesIndex % globalColors.length];\n var data = seriesModel.getData();\n data.setVisual({\n legendSymbol: 'roundRect',\n // Use name 'color' but not 'borderColor' for legend usage and\n // visual coding from other component like dataRange.\n color: seriesModel.get(borderColorQuery) || defaulColor\n }); // Only visible series has each data be visual encoded\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n data.each(function (idx) {\n var itemModel = data.getItemModel(idx);\n data.setItemVisual(idx, {\n color: itemModel.get(borderColorQuery, true)\n });\n });\n }\n });\n}\n\nmodule.exports = _default;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAKqADAAQAAAABAAAAKgAAAADUGqULAAAB50lEQVRYCe1WPU8CQRDdXUCDFHoasASMJiIWJBZ2hh9gpYmNtiYW2Npb8AcsbLWxMtr7C6xMiOFAo4EjsQJyQGX8unWWZMkGwt3uHQXFXjOzb9588G72AkL60QpoBbQCWgGtgFZAK6AVkFcAy1LTqxsHjoNuEKVh2Rw3Hsb4B1N0WK9Xbt14PEa442UJxe1JDcl6UUojGCPbqy+Ph7jjZTudVt0wEovA2/biysQxwheg5qUMl3GkFWXkcCh5Bio8Mz/Iw2qwWio1pHeUF02ubWbQ798TnKMcU7Sf8Iu3Gm/lqkqe9KvnRXt2s20sJWBf0S7HVCwhpGC9mw8qOYyrrChvkFrJ3FGK9vhZxsIrv7dq1X0Z7jBHaUfF5FiUHCOMP0TM1QduP8eVND7oe1DTNG1MQkdQ2hlffhBxGJflDBBFR3lHxfpdu9lYMJYj8FXcEfFRnxQbtfLVKC6P+FaUt0gn4+ew6I/8PGxZjHGGcdWz78skNkqt51Lo+6sEl2texOHy9NDMbM56KVki7scPrChr2h8Ek5ORAQCbxJCsbqAdFQfrdlplw4inAcsxHP50XFu1SlHkBPEnoigfIDZHCrBLrzClGYviU45Ppc3n8+FsNjszlcPpobQCWgGtgFZAK6AVmFoF/gEiCWynIElCMgAAAABJRU5ErkJggg==\"","\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 _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\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.registerProcessor({\n // `dataZoomProcessor` will only be performed in needed series. Consider if\n // there is a line series and a pie series, it is better not to update the\n // line series if only pie series is needed to be updated.\n getTargetSeries: function (ecModel) {\n var seriesModelMap = createHashMap();\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n var axisProxy = dataZoomModel.getAxisProxy(dimNames.name, axisIndex);\n each(axisProxy.getTargetSeriesModels(), function (seriesModel) {\n seriesModelMap.set(seriesModel.uid, seriesModel);\n });\n });\n });\n return seriesModelMap;\n },\n modifyOutputEnd: true,\n // Consider appendData, where filter should be performed. Because data process is\n // in block mode currently, it is not need to worry about that the overallProgress\n // execute every frame.\n overallReset: function (ecModel, api) {\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n // We calculate window and reset axis here but not in model\n // init stage and not after action dispatch handler, because\n // reset should be called after seriesData.restoreData.\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n dataZoomModel.getAxisProxy(dimNames.name, axisIndex).reset(dataZoomModel, api);\n }); // Caution: data zoom filtering is order sensitive when using\n // percent range and no min/max/scale set on axis.\n // For example, we have dataZoom definition:\n // [\n // {xAxisIndex: 0, start: 30, end: 70},\n // {yAxisIndex: 0, start: 20, end: 80}\n // ]\n // In this case, [20, 80] of y-dataZoom should be based on data\n // that have filtered by x-dataZoom using range of [30, 70],\n // but should not be based on full raw data. Thus sliding\n // x-dataZoom will change both ranges of xAxis and yAxis,\n // while sliding y-dataZoom will only change the range of yAxis.\n // So we should filter x-axis after reset x-axis immediately,\n // and then reset y-axis and filter y-axis.\n\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n dataZoomModel.getAxisProxy(dimNames.name, axisIndex).filterData(dataZoomModel, api);\n });\n });\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n // Fullfill all of the range props so that user\n // is able to get them from chart.getOption().\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n var percentRange = axisProxy.getDataPercentWindow();\n var valueRange = axisProxy.getDataValueWindow();\n dataZoomModel.setCalculatedRange({\n start: percentRange[0],\n end: percentRange[1],\n startValue: valueRange[0],\n endValue: valueRange[1]\n });\n });\n }\n});","var dpr = 1; // If in browser environment\n\nif (typeof window !== 'undefined') {\n dpr = Math.max(window.devicePixelRatio || 1, 1);\n}\n/**\n * config默认配置项\n * @exports zrender/config\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n */\n\n/**\n * Debug log mode:\n * 0: Do nothing, for release.\n * 1: console.error, for debug.\n */\n\n\nvar debugMode = 0; // retina 屏幕优化\n\nvar devicePixelRatio = dpr;\nexports.debugMode = debugMode;\nexports.devicePixelRatio = devicePixelRatio;","\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(\"../coord/single/singleCreator\");\n\nrequire(\"./axis/SingleAxisView\");\n\nrequire(\"../coord/single/AxisModel\");\n\nrequire(\"./axisPointer\");\n\nrequire(\"./axisPointer/SingleAxisPointer\");\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.extendComponentView({\n type: 'single'\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 preprocessor = require(\"./brush/preprocessor\");\n\nrequire(\"./brush/visualEncoding\");\n\nrequire(\"./brush/BrushModel\");\n\nrequire(\"./brush/BrushView\");\n\nrequire(\"./brush/brushAction\");\n\nrequire(\"./toolbox/feature/Brush\");\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 * Brush component entry\n */\necharts.registerPreprocessor(preprocessor);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.__base_bar__',\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n getMarkerPosition: function (value) {\n var coordSys = this.coordinateSystem;\n\n if (coordSys) {\n // PENDING if clamp ?\n var pt = coordSys.dataToPoint(coordSys.clampData(value));\n var data = this.getData();\n var offset = data.getLayout('offset');\n var size = data.getLayout('size');\n var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\n pt[offsetIndex] += offset + size / 2;\n return pt;\n }\n\n return [NaN, NaN];\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n // stack: null\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // 最小高度改为0\n barMinHeight: 0,\n // 最小角度为0,仅对极坐标系下的柱状图有效\n barMinAngle: 0,\n // cursor: null,\n large: false,\n largeThreshold: 400,\n progressive: 3e3,\n progressiveChunkMode: 'mod',\n // barMaxWidth: null,\n // In cartesian, the default value is 1. Otherwise null.\n // barMinWidth: null,\n // 默认自适应\n // barWidth: null,\n // 柱间距离,默认为柱形宽度的30%,可设固定值\n // barGap: '30%',\n // 类目间柱形距离,默认为类目间距的20%,可设固定值\n // barCategoryGap: '20%',\n // label: {\n // show: false\n // },\n itemStyle: {},\n emphasis: {}\n }\n});\n\nmodule.exports = _default;","var Group = require(\"../container/Group\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar Text = require(\"../graphic/Text\");\n\nvar Circle = require(\"../graphic/shape/Circle\");\n\nvar Rect = require(\"../graphic/shape/Rect\");\n\nvar Ellipse = require(\"../graphic/shape/Ellipse\");\n\nvar Line = require(\"../graphic/shape/Line\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar Polygon = require(\"../graphic/shape/Polygon\");\n\nvar Polyline = require(\"../graphic/shape/Polyline\");\n\nvar LinearGradient = require(\"../graphic/LinearGradient\");\n\nvar Style = require(\"../graphic/Style\");\n\nvar matrix = require(\"../core/matrix\");\n\nvar _path = require(\"./path\");\n\nvar createFromString = _path.createFromString;\n\nvar _util = require(\"../core/util\");\n\nvar isString = _util.isString;\nvar extend = _util.extend;\nvar defaults = _util.defaults;\nvar trim = _util.trim;\nvar each = _util.each;\n// import RadialGradient from '../graphic/RadialGradient';\n// import Pattern from '../graphic/Pattern';\n// import * as vector from '../core/vector';\n// Most of the values can be separated by comma and/or white space.\nvar DILIMITER_REG = /[\\s,]+/;\n/**\n * For big svg string, this method might be time consuming.\n *\n * @param {string} svg xml string\n * @return {Object} xml root.\n */\n\nfunction parseXML(svg) {\n if (isString(svg)) {\n var parser = new DOMParser();\n svg = parser.parseFromString(svg, 'text/xml');\n } // Document node. If using $.get, doc node may be input.\n\n\n if (svg.nodeType === 9) {\n svg = svg.firstChild;\n } // nodeName of is also 'svg'.\n\n\n while (svg.nodeName.toLowerCase() !== 'svg' || svg.nodeType !== 1) {\n svg = svg.nextSibling;\n }\n\n return svg;\n}\n\nfunction SVGParser() {\n this._defs = {};\n this._root = null;\n this._isDefine = false;\n this._isText = false;\n}\n\nSVGParser.prototype.parse = function (xml, opt) {\n opt = opt || {};\n var svg = parseXML(xml);\n\n if (!svg) {\n throw new Error('Illegal svg');\n }\n\n var root = new Group();\n this._root = root; // parse view port\n\n var viewBox = svg.getAttribute('viewBox') || ''; // If width/height not specified, means \"100%\" of `opt.width/height`.\n // TODO: Other percent value not supported yet.\n\n var width = parseFloat(svg.getAttribute('width') || opt.width);\n var height = parseFloat(svg.getAttribute('height') || opt.height); // If width/height not specified, set as null for output.\n\n isNaN(width) && (width = null);\n isNaN(height) && (height = null); // Apply inline style on svg element.\n\n parseAttributes(svg, root, null, true);\n var child = svg.firstChild;\n\n while (child) {\n this._parseNode(child, root);\n\n child = child.nextSibling;\n }\n\n var viewBoxRect;\n var viewBoxTransform;\n\n if (viewBox) {\n var viewBoxArr = trim(viewBox).split(DILIMITER_REG); // Some invalid case like viewBox: 'none'.\n\n if (viewBoxArr.length >= 4) {\n viewBoxRect = {\n x: parseFloat(viewBoxArr[0] || 0),\n y: parseFloat(viewBoxArr[1] || 0),\n width: parseFloat(viewBoxArr[2]),\n height: parseFloat(viewBoxArr[3])\n };\n }\n }\n\n if (viewBoxRect && width != null && height != null) {\n viewBoxTransform = makeViewBoxTransform(viewBoxRect, width, height);\n\n if (!opt.ignoreViewBox) {\n // If set transform on the output group, it probably bring trouble when\n // some users only intend to show the clipped content inside the viewBox,\n // but not intend to transform the output group. So we keep the output\n // group no transform. If the user intend to use the viewBox as a\n // camera, just set `opt.ignoreViewBox` as `true` and set transfrom\n // manually according to the viewBox info in the output of this method.\n var elRoot = root;\n root = new Group();\n root.add(elRoot);\n elRoot.scale = viewBoxTransform.scale.slice();\n elRoot.position = viewBoxTransform.position.slice();\n }\n } // Some shapes might be overflow the viewport, which should be\n // clipped despite whether the viewBox is used, as the SVG does.\n\n\n if (!opt.ignoreRootClip && width != null && height != null) {\n root.setClipPath(new Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n }));\n } // Set width/height on group just for output the viewport size.\n\n\n return {\n root: root,\n width: width,\n height: height,\n viewBoxRect: viewBoxRect,\n viewBoxTransform: viewBoxTransform\n };\n};\n\nSVGParser.prototype._parseNode = function (xmlNode, parentGroup) {\n var nodeName = xmlNode.nodeName.toLowerCase(); // TODO\n // support in svg, where nodeName is 'style',\n // CSS classes is defined globally wherever the style tags are declared.\n\n if (nodeName === 'defs') {\n // define flag\n this._isDefine = true;\n } else if (nodeName === 'text') {\n this._isText = true;\n }\n\n var el;\n\n if (this._isDefine) {\n var parser = defineParsers[nodeName];\n\n if (parser) {\n var def = parser.call(this, xmlNode);\n var id = xmlNode.getAttribute('id');\n\n if (id) {\n this._defs[id] = def;\n }\n }\n } else {\n var parser = nodeParsers[nodeName];\n\n if (parser) {\n el = parser.call(this, xmlNode, parentGroup);\n parentGroup.add(el);\n }\n }\n\n var child = xmlNode.firstChild;\n\n while (child) {\n if (child.nodeType === 1) {\n this._parseNode(child, el);\n } // Is text\n\n\n if (child.nodeType === 3 && this._isText) {\n this._parseText(child, el);\n }\n\n child = child.nextSibling;\n } // Quit define\n\n\n if (nodeName === 'defs') {\n this._isDefine = false;\n } else if (nodeName === 'text') {\n this._isText = false;\n }\n};\n\nSVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n if (xmlNode.nodeType === 1) {\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX += parseFloat(dx);\n this._textY += parseFloat(dy);\n }\n\n var text = new Text({\n style: {\n text: xmlNode.textContent,\n transformText: true\n },\n position: [this._textX || 0, this._textY || 0]\n });\n inheritStyle(parentGroup, text);\n parseAttributes(xmlNode, text, this._defs);\n var fontSize = text.style.fontSize;\n\n if (fontSize && fontSize < 9) {\n // PENDING\n text.style.fontSize = 9;\n text.scale = text.scale || [1, 1];\n text.scale[0] *= fontSize / 9;\n text.scale[1] *= fontSize / 9;\n }\n\n var rect = text.getBoundingRect();\n this._textX += rect.width;\n parentGroup.add(text);\n return text;\n};\n\nvar nodeParsers = {\n 'g': function (xmlNode, parentGroup) {\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'rect': function (xmlNode, parentGroup) {\n var rect = new Rect();\n inheritStyle(parentGroup, rect);\n parseAttributes(xmlNode, rect, this._defs);\n rect.setShape({\n x: parseFloat(xmlNode.getAttribute('x') || 0),\n y: parseFloat(xmlNode.getAttribute('y') || 0),\n width: parseFloat(xmlNode.getAttribute('width') || 0),\n height: parseFloat(xmlNode.getAttribute('height') || 0)\n }); // console.log(xmlNode.getAttribute('transform'));\n // console.log(rect.transform);\n\n return rect;\n },\n 'circle': function (xmlNode, parentGroup) {\n var circle = new Circle();\n inheritStyle(parentGroup, circle);\n parseAttributes(xmlNode, circle, this._defs);\n circle.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n r: parseFloat(xmlNode.getAttribute('r') || 0)\n });\n return circle;\n },\n 'line': function (xmlNode, parentGroup) {\n var line = new Line();\n inheritStyle(parentGroup, line);\n parseAttributes(xmlNode, line, this._defs);\n line.setShape({\n x1: parseFloat(xmlNode.getAttribute('x1') || 0),\n y1: parseFloat(xmlNode.getAttribute('y1') || 0),\n x2: parseFloat(xmlNode.getAttribute('x2') || 0),\n y2: parseFloat(xmlNode.getAttribute('y2') || 0)\n });\n return line;\n },\n 'ellipse': function (xmlNode, parentGroup) {\n var ellipse = new Ellipse();\n inheritStyle(parentGroup, ellipse);\n parseAttributes(xmlNode, ellipse, this._defs);\n ellipse.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n rx: parseFloat(xmlNode.getAttribute('rx') || 0),\n ry: parseFloat(xmlNode.getAttribute('ry') || 0)\n });\n return ellipse;\n },\n 'polygon': function (xmlNode, parentGroup) {\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polygon = new Polygon({\n shape: {\n points: points || []\n }\n });\n inheritStyle(parentGroup, polygon);\n parseAttributes(xmlNode, polygon, this._defs);\n return polygon;\n },\n 'polyline': function (xmlNode, parentGroup) {\n var path = new Path();\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polyline = new Polyline({\n shape: {\n points: points || []\n }\n });\n return polyline;\n },\n 'image': function (xmlNode, parentGroup) {\n var img = new ZImage();\n inheritStyle(parentGroup, img);\n parseAttributes(xmlNode, img, this._defs);\n img.setStyle({\n image: xmlNode.getAttribute('xlink:href'),\n x: xmlNode.getAttribute('x'),\n y: xmlNode.getAttribute('y'),\n width: xmlNode.getAttribute('width'),\n height: xmlNode.getAttribute('height')\n });\n return img;\n },\n 'text': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x') || 0;\n var y = xmlNode.getAttribute('y') || 0;\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX = parseFloat(x) + parseFloat(dx);\n this._textY = parseFloat(y) + parseFloat(dy);\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'tspan': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x');\n var y = xmlNode.getAttribute('y');\n\n if (x != null) {\n // new offset x\n this._textX = parseFloat(x);\n }\n\n if (y != null) {\n // new offset y\n this._textY = parseFloat(y);\n }\n\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n this._textX += dx;\n this._textY += dy;\n return g;\n },\n 'path': function (xmlNode, parentGroup) {\n // TODO svg fill rule\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule\n // path.style.globalCompositeOperation = 'xor';\n var d = xmlNode.getAttribute('d') || ''; // Performance sensitive.\n\n var path = createFromString(d);\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n return path;\n }\n};\nvar defineParsers = {\n 'lineargradient': function (xmlNode) {\n var x1 = parseInt(xmlNode.getAttribute('x1') || 0, 10);\n var y1 = parseInt(xmlNode.getAttribute('y1') || 0, 10);\n var x2 = parseInt(xmlNode.getAttribute('x2') || 10, 10);\n var y2 = parseInt(xmlNode.getAttribute('y2') || 0, 10);\n var gradient = new LinearGradient(x1, y1, x2, y2);\n\n _parseGradientColorStops(xmlNode, gradient);\n\n return gradient;\n },\n 'radialgradient': function (xmlNode) {}\n};\n\nfunction _parseGradientColorStops(xmlNode, gradient) {\n var stop = xmlNode.firstChild;\n\n while (stop) {\n if (stop.nodeType === 1) {\n var offset = stop.getAttribute('offset');\n\n if (offset.indexOf('%') > 0) {\n // percentage\n offset = parseInt(offset, 10) / 100;\n } else if (offset) {\n // number from 0 to 1\n offset = parseFloat(offset);\n } else {\n offset = 0;\n }\n\n var stopColor = stop.getAttribute('stop-color') || '#000000';\n gradient.addColorStop(offset, stopColor);\n }\n\n stop = stop.nextSibling;\n }\n}\n\nfunction inheritStyle(parent, child) {\n if (parent && parent.__inheritedStyle) {\n if (!child.__inheritedStyle) {\n child.__inheritedStyle = {};\n }\n\n defaults(child.__inheritedStyle, parent.__inheritedStyle);\n }\n}\n\nfunction parsePoints(pointsString) {\n var list = trim(pointsString).split(DILIMITER_REG);\n var points = [];\n\n for (var i = 0; i < list.length; i += 2) {\n var x = parseFloat(list[i]);\n var y = parseFloat(list[i + 1]);\n points.push([x, y]);\n }\n\n return points;\n}\n\nvar attributesMap = {\n 'fill': 'fill',\n 'stroke': 'stroke',\n 'stroke-width': 'lineWidth',\n 'opacity': 'opacity',\n 'fill-opacity': 'fillOpacity',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-dasharray': 'lineDash',\n 'stroke-dashoffset': 'lineDashOffset',\n 'stroke-linecap': 'lineCap',\n 'stroke-linejoin': 'lineJoin',\n 'stroke-miterlimit': 'miterLimit',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'text-align': 'textAlign',\n 'alignment-baseline': 'textBaseline'\n};\n\nfunction parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\n var zrStyle = el.__inheritedStyle || {};\n var isTextEl = el.type === 'text'; // TODO Shadow\n\n if (xmlNode.nodeType === 1) {\n parseTransformAttribute(xmlNode, el);\n extend(zrStyle, parseStyleAttribute(xmlNode));\n\n if (!onlyInlineStyle) {\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName)) {\n var attrValue = xmlNode.getAttribute(svgAttrName);\n\n if (attrValue != null) {\n zrStyle[attributesMap[svgAttrName]] = attrValue;\n }\n }\n }\n }\n }\n\n var elFillProp = isTextEl ? 'textFill' : 'fill';\n var elStrokeProp = isTextEl ? 'textStroke' : 'stroke';\n el.style = el.style || new Style();\n var elStyle = el.style;\n zrStyle.fill != null && elStyle.set(elFillProp, getPaint(zrStyle.fill, defs));\n zrStyle.stroke != null && elStyle.set(elStrokeProp, getPaint(zrStyle.stroke, defs));\n each(['lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'], function (propName) {\n var elPropName = propName === 'lineWidth' && isTextEl ? 'textStrokeWidth' : propName;\n zrStyle[propName] != null && elStyle.set(elPropName, parseFloat(zrStyle[propName]));\n });\n\n if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\n zrStyle.textBaseline = 'alphabetic';\n }\n\n if (zrStyle.textBaseline === 'alphabetic') {\n zrStyle.textBaseline = 'bottom';\n }\n\n if (zrStyle.textAlign === 'start') {\n zrStyle.textAlign = 'left';\n }\n\n if (zrStyle.textAlign === 'end') {\n zrStyle.textAlign = 'right';\n }\n\n each(['lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'], function (propName) {\n zrStyle[propName] != null && elStyle.set(propName, zrStyle[propName]);\n });\n\n if (zrStyle.lineDash) {\n el.style.lineDash = trim(zrStyle.lineDash).split(DILIMITER_REG);\n }\n\n if (elStyle[elStrokeProp] && elStyle[elStrokeProp] !== 'none') {\n // enable stroke\n el[elStrokeProp] = true;\n }\n\n el.__inheritedStyle = zrStyle;\n}\n\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\n\nfunction getPaint(str, defs) {\n // if (str === 'none') {\n // return;\n // }\n var urlMatch = defs && str && str.match(urlRegex);\n\n if (urlMatch) {\n var url = trim(urlMatch[1]);\n var def = defs[url];\n return def;\n }\n\n return str;\n}\n\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\n\nfunction parseTransformAttribute(xmlNode, node) {\n var transform = xmlNode.getAttribute('transform');\n\n if (transform) {\n transform = transform.replace(/,/g, ' ');\n var m = null;\n var transformOps = [];\n transform.replace(transformRegex, function (str, type, value) {\n transformOps.push(type, value);\n });\n\n for (var i = transformOps.length - 1; i > 0; i -= 2) {\n var value = transformOps[i];\n var type = transformOps[i - 1];\n m = m || matrix.create();\n\n switch (type) {\n case 'translate':\n value = trim(value).split(DILIMITER_REG);\n matrix.translate(m, m, [parseFloat(value[0]), parseFloat(value[1] || 0)]);\n break;\n\n case 'scale':\n value = trim(value).split(DILIMITER_REG);\n matrix.scale(m, m, [parseFloat(value[0]), parseFloat(value[1] || value[0])]);\n break;\n\n case 'rotate':\n value = trim(value).split(DILIMITER_REG);\n matrix.rotate(m, m, parseFloat(value[0]));\n break;\n\n case 'skew':\n value = trim(value).split(DILIMITER_REG);\n console.warn('Skew transform is not supported yet');\n break;\n\n case 'matrix':\n var value = trim(value).split(DILIMITER_REG);\n m[0] = parseFloat(value[0]);\n m[1] = parseFloat(value[1]);\n m[2] = parseFloat(value[2]);\n m[3] = parseFloat(value[3]);\n m[4] = parseFloat(value[4]);\n m[5] = parseFloat(value[5]);\n break;\n }\n }\n\n node.setLocalTransform(m);\n }\n} // Value may contain space.\n\n\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\n\nfunction parseStyleAttribute(xmlNode) {\n var style = xmlNode.getAttribute('style');\n var result = {};\n\n if (!style) {\n return result;\n }\n\n var styleList = {};\n styleRegex.lastIndex = 0;\n var styleRegResult;\n\n while ((styleRegResult = styleRegex.exec(style)) != null) {\n styleList[styleRegResult[1]] = styleRegResult[2];\n }\n\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\n result[attributesMap[svgAttrName]] = styleList[svgAttrName];\n }\n }\n\n return result;\n}\n/**\n * @param {Array.} viewBoxRect\n * @param {number} width\n * @param {number} height\n * @return {Object} {scale, position}\n */\n\n\nfunction makeViewBoxTransform(viewBoxRect, width, height) {\n var scaleX = width / viewBoxRect.width;\n var scaleY = height / viewBoxRect.height;\n var scale = Math.min(scaleX, scaleY); // preserveAspectRatio 'xMidYMid'\n\n var viewBoxScale = [scale, scale];\n var viewBoxPosition = [-(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2, -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2];\n return {\n scale: viewBoxScale,\n position: viewBoxPosition\n };\n}\n/**\n * @param {string|XMLElement} xml\n * @param {Object} [opt]\n * @param {number} [opt.width] Default width if svg width not specified or is a percent value.\n * @param {number} [opt.height] Default height if svg height not specified or is a percent value.\n * @param {boolean} [opt.ignoreViewBox]\n * @param {boolean} [opt.ignoreRootClip]\n * @return {Object} result:\n * {\n * root: Group, The root of the the result tree of zrender shapes,\n * width: number, the viewport width of the SVG,\n * height: number, the viewport height of the SVG,\n * viewBoxRect: {x, y, width, height}, the declared viewBox rect of the SVG, if exists,\n * viewBoxTransform: the {scale, position} calculated by viewBox and viewport, is exists.\n * }\n */\n\n\nfunction parseSVG(xml, opt) {\n var parser = new SVGParser();\n return parser.parse(xml, opt);\n}\n\nexports.parseXML = parseXML;\nexports.makeViewBoxTransform = makeViewBoxTransform;\nexports.parseSVG = parseSVG;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar markerHelper = require(\"./markerHelper\");\n\nvar LineDraw = require(\"../../chart/helper/LineDraw\");\n\nvar MarkerView = require(\"./MarkerView\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar markLineTransform = function (seriesModel, coordSys, mlModel, item) {\n var data = seriesModel.getData(); // Special type markLine like 'min', 'max', 'average', 'median'\n\n var mlType = item.type;\n\n if (!zrUtil.isArray(item) && (mlType === 'min' || mlType === 'max' || mlType === 'average' || mlType === 'median' // In case\n // data: [{\n // yAxis: 10\n // }]\n || item.xAxis != null || item.yAxis != null)) {\n var valueAxis;\n var value;\n\n if (item.yAxis != null || item.xAxis != null) {\n valueAxis = coordSys.getAxis(item.yAxis != null ? 'y' : 'x');\n value = zrUtil.retrieve(item.yAxis, item.xAxis);\n } else {\n var axisInfo = markerHelper.getAxisInfo(item, data, coordSys, seriesModel);\n valueAxis = axisInfo.valueAxis;\n var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim);\n value = markerHelper.numCalculate(data, valueDataDim, mlType);\n }\n\n var valueIndex = valueAxis.dim === 'x' ? 0 : 1;\n var baseIndex = 1 - valueIndex;\n var mlFrom = zrUtil.clone(item);\n var mlTo = {};\n mlFrom.type = null;\n mlFrom.coord = [];\n mlTo.coord = [];\n mlFrom.coord[baseIndex] = -Infinity;\n mlTo.coord[baseIndex] = Infinity;\n var precision = mlModel.get('precision');\n\n if (precision >= 0 && typeof value === 'number') {\n value = +value.toFixed(Math.min(precision, 20));\n }\n\n mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value;\n item = [mlFrom, mlTo, {\n // Extra option for tooltip and label\n type: mlType,\n valueIndex: item.valueIndex,\n // Force to use the value of calculated value.\n value: value\n }];\n }\n\n item = [markerHelper.dataTransform(seriesModel, item[0]), markerHelper.dataTransform(seriesModel, item[1]), zrUtil.extend({}, item[2])]; // Avoid line data type is extended by from(to) data type\n\n item[2].type = item[2].type || ''; // Merge from option and to option into line option\n\n zrUtil.merge(item[2], item[0]);\n zrUtil.merge(item[2], item[1]);\n return item;\n};\n\nfunction isInifinity(val) {\n return !isNaN(val) && !isFinite(val);\n} // If a markLine has one dim\n\n\nfunction ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\n var otherDimIndex = 1 - dimIndex;\n var dimName = coordSys.dimensions[dimIndex];\n return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]);\n}\n\nfunction markLineFilter(coordSys, item) {\n if (coordSys.type === 'cartesian2d') {\n var fromCoord = item[0].coord;\n var toCoord = item[1].coord; // In case\n // {\n // markLine: {\n // data: [{ yAxis: 2 }]\n // }\n // }\n\n if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\n return true;\n }\n }\n\n return markerHelper.dataFilter(coordSys, item[0]) && markerHelper.dataFilter(coordSys, item[1]);\n}\n\nfunction updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var itemModel = data.getItemModel(idx);\n var point;\n var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth());\n var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight());\n\n if (!isNaN(xPx) && !isNaN(yPx)) {\n point = [xPx, yPx];\n } else {\n // Chart like bar may have there own marker positioning logic\n if (seriesModel.getMarkerPosition) {\n // Use the getMarkerPoisition\n point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx));\n } else {\n var dims = coordSys.dimensions;\n var x = data.get(dims[0], idx);\n var y = data.get(dims[1], idx);\n point = coordSys.dataToPoint([x, y]);\n } // Expand line to the edge of grid if value on one axis is Inifnity\n // In case\n // markLine: {\n // data: [{\n // yAxis: 2\n // // or\n // type: 'average'\n // }]\n // }\n\n\n if (coordSys.type === 'cartesian2d') {\n var xAxis = coordSys.getAxis('x');\n var yAxis = coordSys.getAxis('y');\n var dims = coordSys.dimensions;\n\n if (isInifinity(data.get(dims[0], idx))) {\n point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]);\n } else if (isInifinity(data.get(dims[1], idx))) {\n point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]);\n }\n } // Use x, y if has any\n\n\n if (!isNaN(xPx)) {\n point[0] = xPx;\n }\n\n if (!isNaN(yPx)) {\n point[1] = yPx;\n }\n }\n\n data.setItemLayout(idx, point);\n}\n\nvar _default = MarkerView.extend({\n type: 'markLine',\n // updateLayout: function (markLineModel, ecModel, api) {\n // ecModel.eachSeries(function (seriesModel) {\n // var mlModel = seriesModel.markLineModel;\n // if (mlModel) {\n // var mlData = mlModel.getData();\n // var fromData = mlModel.__from;\n // var toData = mlModel.__to;\n // // Update visual and layout of from symbol and to symbol\n // fromData.each(function (idx) {\n // updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api);\n // updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api);\n // });\n // // Update layout of line\n // mlData.each(function (idx) {\n // mlData.setItemLayout(idx, [\n // fromData.getItemLayout(idx),\n // toData.getItemLayout(idx)\n // ]);\n // });\n // this.markerGroupMap.get(seriesModel.id).updateLayout();\n // }\n // }, this);\n // },\n updateTransform: function (markLineModel, ecModel, api) {\n ecModel.eachSeries(function (seriesModel) {\n var mlModel = seriesModel.markLineModel;\n\n if (mlModel) {\n var mlData = mlModel.getData();\n var fromData = mlModel.__from;\n var toData = mlModel.__to; // Update visual and layout of from symbol and to symbol\n\n fromData.each(function (idx) {\n updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api);\n updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api);\n }); // Update layout of line\n\n mlData.each(function (idx) {\n mlData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n });\n this.markerGroupMap.get(seriesModel.id).updateLayout();\n }\n }, this);\n },\n renderSeries: function (seriesModel, mlModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var seriesId = seriesModel.id;\n var seriesData = seriesModel.getData();\n var lineDrawMap = this.markerGroupMap;\n var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw());\n this.group.add(lineDraw.group);\n var mlData = createList(coordSys, seriesModel, mlModel);\n var fromData = mlData.from;\n var toData = mlData.to;\n var lineData = mlData.line;\n mlModel.__from = fromData;\n mlModel.__to = toData; // Line data for tooltip and formatter\n\n mlModel.setData(lineData);\n var symbolType = mlModel.get('symbol');\n var symbolSize = mlModel.get('symbolSize');\n\n if (!zrUtil.isArray(symbolType)) {\n symbolType = [symbolType, symbolType];\n }\n\n if (typeof symbolSize === 'number') {\n symbolSize = [symbolSize, symbolSize];\n } // Update visual and layout of from symbol and to symbol\n\n\n mlData.from.each(function (idx) {\n updateDataVisualAndLayout(fromData, idx, true);\n updateDataVisualAndLayout(toData, idx, false);\n }); // Update visual and layout of line\n\n lineData.each(function (idx) {\n var lineColor = lineData.getItemModel(idx).get('lineStyle.color');\n lineData.setItemVisual(idx, {\n color: lineColor || fromData.getItemVisual(idx, 'color')\n });\n lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n lineData.setItemVisual(idx, {\n 'fromSymbolRotate': fromData.getItemVisual(idx, 'symbolRotate'),\n 'fromSymbolSize': fromData.getItemVisual(idx, 'symbolSize'),\n 'fromSymbol': fromData.getItemVisual(idx, 'symbol'),\n 'toSymbolRotate': toData.getItemVisual(idx, 'symbolRotate'),\n 'toSymbolSize': toData.getItemVisual(idx, 'symbolSize'),\n 'toSymbol': toData.getItemVisual(idx, 'symbol')\n });\n });\n lineDraw.updateData(lineData); // Set host model for tooltip\n // FIXME\n\n mlData.line.eachItemGraphicEl(function (el, idx) {\n el.traverse(function (child) {\n child.dataModel = mlModel;\n });\n });\n\n function updateDataVisualAndLayout(data, idx, isFrom) {\n var itemModel = data.getItemModel(idx);\n updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api);\n data.setItemVisual(idx, {\n symbolRotate: itemModel.get('symbolRotate'),\n symbolSize: itemModel.get('symbolSize') || symbolSize[isFrom ? 0 : 1],\n symbol: itemModel.get('symbol', true) || symbolType[isFrom ? 0 : 1],\n color: itemModel.get('itemStyle.color') || seriesData.getVisual('color')\n });\n }\n\n lineDraw.__keep = true;\n lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent');\n }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} coordSys\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\n\nfunction createList(coordSys, seriesModel, mlModel) {\n var coordDimsInfos;\n\n if (coordSys) {\n coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n return zrUtil.defaults({\n name: coordDim\n }, info);\n });\n } else {\n coordDimsInfos = [{\n name: 'value',\n type: 'float'\n }];\n }\n\n var fromData = new List(coordDimsInfos, mlModel);\n var toData = new List(coordDimsInfos, mlModel); // No dimensions\n\n var lineData = new List([], mlModel);\n var optData = zrUtil.map(mlModel.get('data'), zrUtil.curry(markLineTransform, seriesModel, coordSys, mlModel));\n\n if (coordSys) {\n optData = zrUtil.filter(optData, zrUtil.curry(markLineFilter, coordSys));\n }\n\n var dimValueGetter = coordSys ? markerHelper.dimValueGetter : function (item) {\n return item.value;\n };\n fromData.initData(zrUtil.map(optData, function (item) {\n return item[0];\n }), null, dimValueGetter);\n toData.initData(zrUtil.map(optData, function (item) {\n return item[1];\n }), null, dimValueGetter);\n lineData.initData(zrUtil.map(optData, function (item) {\n return item[2];\n }));\n lineData.hasItemOption = true;\n return {\n from: fromData,\n to: toData,\n line: lineData\n };\n}\n\nmodule.exports = _default;","\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 VisualMapModel = require(\"./VisualMapModel\");\n\nvar numberUtil = require(\"../../util/number\");\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// Constant\nvar DEFAULT_BAR_BOUND = [20, 140];\nvar ContinuousModel = VisualMapModel.extend({\n type: 'visualMap.continuous',\n\n /**\n * @protected\n */\n defaultOption: {\n align: 'auto',\n // 'auto', 'left', 'right', 'top', 'bottom'\n calculable: false,\n // This prop effect default component type determine,\n // See echarts/component/visualMap/typeDefaulter.\n range: null,\n // selected range. In default case `range` is [min, max]\n // and can auto change along with modification of min max,\n // util use specifid a range.\n realtime: true,\n // Whether realtime update.\n itemHeight: null,\n // The length of the range control edge.\n itemWidth: null,\n // The length of the other side.\n hoverLink: true,\n // Enable hover highlight.\n hoverLinkDataSize: null,\n // The size of hovered data.\n hoverLinkOnHandle: null // Whether trigger hoverLink when hover handle.\n // If not specified, follow the value of `realtime`.\n\n },\n\n /**\n * @override\n */\n optionUpdated: function (newOption, isInit) {\n ContinuousModel.superApply(this, 'optionUpdated', arguments);\n this.resetExtent();\n this.resetVisual(function (mappingOption) {\n mappingOption.mappingMethod = 'linear';\n mappingOption.dataExtent = this.getExtent();\n });\n\n this._resetRange();\n },\n\n /**\n * @protected\n * @override\n */\n resetItemSize: function () {\n ContinuousModel.superApply(this, 'resetItemSize', arguments);\n var itemSize = this.itemSize;\n this._orient === 'horizontal' && itemSize.reverse();\n (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]);\n (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]);\n },\n\n /**\n * @private\n */\n _resetRange: function () {\n var dataExtent = this.getExtent();\n var range = this.option.range;\n\n if (!range || range.auto) {\n // `range` should always be array (so we dont use other\n // value like 'auto') for user-friend. (consider getOption).\n dataExtent.auto = 1;\n this.option.range = dataExtent;\n } else if (zrUtil.isArray(range)) {\n if (range[0] > range[1]) {\n range.reverse();\n }\n\n range[0] = Math.max(range[0], dataExtent[0]);\n range[1] = Math.min(range[1], dataExtent[1]);\n }\n },\n\n /**\n * @protected\n * @override\n */\n completeVisualOption: function () {\n VisualMapModel.prototype.completeVisualOption.apply(this, arguments);\n zrUtil.each(this.stateList, function (state) {\n var symbolSize = this.option.controller[state].symbolSize;\n\n if (symbolSize && symbolSize[0] !== symbolSize[1]) {\n symbolSize[0] = 0; // For good looking.\n }\n }, this);\n },\n\n /**\n * @override\n */\n setSelected: function (selected) {\n this.option.range = selected.slice();\n\n this._resetRange();\n },\n\n /**\n * @public\n */\n getSelected: function () {\n var dataExtent = this.getExtent();\n var dataInterval = numberUtil.asc((this.get('range') || []).slice()); // Clamp\n\n dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]);\n dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]);\n dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]);\n dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]);\n return dataInterval;\n },\n\n /**\n * @override\n */\n getValueState: function (value) {\n var range = this.option.range;\n var dataExtent = this.getExtent(); // When range[0] === dataExtent[0], any value larger than dataExtent[0] maps to 'inRange'.\n // range[1] is processed likewise.\n\n return (range[0] <= dataExtent[0] || range[0] <= value) && (range[1] >= dataExtent[1] || value <= range[1]) ? 'inRange' : 'outOfRange';\n },\n\n /**\n * @params {Array.} range target value: range[0] <= value && value <= range[1]\n * @return {Array.} [{seriesId, dataIndices: >}, ...]\n */\n findTargetDataIndices: function (range) {\n var result = [];\n this.eachTargetSeries(function (seriesModel) {\n var dataIndices = [];\n var data = seriesModel.getData();\n data.each(this.getDataDimension(data), function (value, dataIndex) {\n range[0] <= value && value <= range[1] && dataIndices.push(dataIndex);\n }, this);\n result.push({\n seriesId: seriesModel.id,\n dataIndex: dataIndices\n });\n }, this);\n return result;\n },\n\n /**\n * @implement\n */\n getVisualMeta: function (getColorVisual) {\n var oVals = getColorStopValues(this, 'outOfRange', this.getExtent());\n var iVals = getColorStopValues(this, 'inRange', this.option.range.slice());\n var stops = [];\n\n function setStop(value, valueState) {\n stops.push({\n value: value,\n color: getColorVisual(value, valueState)\n });\n } // Format to: outOfRange -- inRange -- outOfRange.\n\n\n var iIdx = 0;\n var oIdx = 0;\n var iLen = iVals.length;\n var oLen = oVals.length;\n\n for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) {\n // If oVal[oIdx] === iVals[iIdx], oVal[oIdx] should be ignored.\n if (oVals[oIdx] < iVals[iIdx]) {\n setStop(oVals[oIdx], 'outOfRange');\n }\n }\n\n for (var first = 1; iIdx < iLen; iIdx++, first = 0) {\n // If range is full, value beyond min, max will be clamped.\n // make a singularity\n first && stops.length && setStop(iVals[iIdx], 'outOfRange');\n setStop(iVals[iIdx], 'inRange');\n }\n\n for (var first = 1; oIdx < oLen; oIdx++) {\n if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) {\n // make a singularity\n if (first) {\n stops.length && setStop(stops[stops.length - 1].value, 'outOfRange');\n first = 0;\n }\n\n setStop(oVals[oIdx], 'outOfRange');\n }\n }\n\n var stopsLen = stops.length;\n return {\n stops: stops,\n outerColors: [stopsLen ? stops[0].color : 'transparent', stopsLen ? stops[stopsLen - 1].color : 'transparent']\n };\n }\n});\n\nfunction getColorStopValues(visualMapModel, valueState, dataExtent) {\n if (dataExtent[0] === dataExtent[1]) {\n return dataExtent.slice();\n } // When using colorHue mapping, it is not linear color any more.\n // Moreover, canvas gradient seems not to be accurate linear.\n // FIXME\n // Should be arbitrary value 100? or based on pixel size?\n\n\n var count = 200;\n var step = (dataExtent[1] - dataExtent[0]) / count;\n var value = dataExtent[0];\n var stopValues = [];\n\n for (var i = 0; i <= count && value < dataExtent[1]; i++) {\n stopValues.push(value);\n value += step;\n }\n\n stopValues.push(dataExtent[1]);\n return stopValues;\n}\n\nvar _default = ContinuousModel;\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 dataToCoordSize(dataSize, dataItem) {\n // dataItem is necessary in log axis.\n var axis = this.getAxis();\n var val = dataItem instanceof Array ? dataItem[0] : dataItem;\n var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2;\n return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\n}\n\nfunction _default(coordSys) {\n var rect = coordSys.getRect();\n return {\n coordSys: {\n type: 'singleAxis',\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n api: {\n coord: function (val) {\n // do not provide \"out\" param\n return coordSys.dataToPoint(val);\n },\n size: zrUtil.bind(dataToCoordSize, coordSys)\n }\n };\n}\n\nmodule.exports = _default;","var util = require(\"../core/util\");\n\nvar _event = require(\"../core/event\");\n\nvar Dispatcher = _event.Dispatcher;\n\nvar requestAnimationFrame = require(\"./requestAnimationFrame\");\n\nvar Animator = require(\"./Animator\");\n\n/**\n * Animation main class, dispatch and manage all animation controllers\n *\n * @module zrender/animation/Animation\n * @author pissang(https://github.com/pissang)\n */\n// TODO Additive animation\n// http://iosoteric.com/additive-animations-animatewithduration-in-ios-8/\n// https://developer.apple.com/videos/wwdc2014/#236\n\n/**\n * @typedef {Object} IZRenderStage\n * @property {Function} update\n */\n\n/**\n * @alias module:zrender/animation/Animation\n * @constructor\n * @param {Object} [options]\n * @param {Function} [options.onframe]\n * @param {IZRenderStage} [options.stage]\n * @example\n * var animation = new Animation();\n * var obj = {\n * x: 100,\n * y: 100\n * };\n * animation.animate(node.position)\n * .when(1000, {\n * x: 500,\n * y: 500\n * })\n * .when(2000, {\n * x: 100,\n * y: 100\n * })\n * .start('spline');\n */\nvar Animation = function (options) {\n options = options || {};\n this.stage = options.stage || {};\n\n this.onframe = options.onframe || function () {}; // private properties\n\n\n this._clips = [];\n this._running = false;\n this._time;\n this._pausedTime;\n this._pauseStart;\n this._paused = false;\n Dispatcher.call(this);\n};\n\nAnimation.prototype = {\n constructor: Animation,\n\n /**\n * Add clip\n * @param {module:zrender/animation/Clip} clip\n */\n addClip: function (clip) {\n this._clips.push(clip);\n },\n\n /**\n * Add animator\n * @param {module:zrender/animation/Animator} animator\n */\n addAnimator: function (animator) {\n animator.animation = this;\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.addClip(clips[i]);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Clip} clip\n */\n removeClip: function (clip) {\n var idx = util.indexOf(this._clips, clip);\n\n if (idx >= 0) {\n this._clips.splice(idx, 1);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Animator} animator\n */\n removeAnimator: function (animator) {\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.removeClip(clips[i]);\n }\n\n animator.animation = null;\n },\n _update: function () {\n var time = new Date().getTime() - this._pausedTime;\n\n var delta = time - this._time;\n var clips = this._clips;\n var len = clips.length;\n var deferredEvents = [];\n var deferredClips = [];\n\n for (var i = 0; i < len; i++) {\n var clip = clips[i];\n var e = clip.step(time, delta); // Throw out the events need to be called after\n // stage.update, like destroy\n\n if (e) {\n deferredEvents.push(e);\n deferredClips.push(clip);\n }\n } // Remove the finished clip\n\n\n for (var i = 0; i < len;) {\n if (clips[i]._needsRemove) {\n clips[i] = clips[len - 1];\n clips.pop();\n len--;\n } else {\n i++;\n }\n }\n\n len = deferredEvents.length;\n\n for (var i = 0; i < len; i++) {\n deferredClips[i].fire(deferredEvents[i]);\n }\n\n this._time = time;\n this.onframe(delta); // 'frame' should be triggered before stage, because upper application\n // depends on the sequence (e.g., echarts-stream and finish\n // event judge)\n\n this.trigger('frame', delta);\n\n if (this.stage.update) {\n this.stage.update();\n }\n },\n _startLoop: function () {\n var self = this;\n this._running = true;\n\n function step() {\n if (self._running) {\n requestAnimationFrame(step);\n !self._paused && self._update();\n }\n }\n\n requestAnimationFrame(step);\n },\n\n /**\n * Start animation.\n */\n start: function () {\n this._time = new Date().getTime();\n this._pausedTime = 0;\n\n this._startLoop();\n },\n\n /**\n * Stop animation.\n */\n stop: function () {\n this._running = false;\n },\n\n /**\n * Pause animation.\n */\n pause: function () {\n if (!this._paused) {\n this._pauseStart = new Date().getTime();\n this._paused = true;\n }\n },\n\n /**\n * Resume animation.\n */\n resume: function () {\n if (this._paused) {\n this._pausedTime += new Date().getTime() - this._pauseStart;\n this._paused = false;\n }\n },\n\n /**\n * Clear animation.\n */\n clear: function () {\n this._clips = [];\n },\n\n /**\n * Whether animation finished.\n */\n isFinished: function () {\n return !this._clips.length;\n },\n\n /**\n * Creat animator for a target, whose props can be animated.\n *\n * @param {Object} target\n * @param {Object} options\n * @param {boolean} [options.loop=false] Whether loop animation.\n * @param {Function} [options.getter=null] Get value from target.\n * @param {Function} [options.setter=null] Set value to target.\n * @return {module:zrender/animation/Animation~Animator}\n */\n // TODO Gap\n animate: function (target, options) {\n options = options || {};\n var animator = new Animator(target, options.loop, options.getter, options.setter);\n this.addAnimator(animator);\n return animator;\n }\n};\nutil.mixin(Animation, Dispatcher);\nvar _default = Animation;\nmodule.exports = _default;","/* 车系详情 */\nimport React from 'react'\nimport get from 'lodash/get'\nimport Link from 'next/link'\nimport 'styled-jsx/css'\nimport getLinkHref from 'lib/get-link-href'\nimport fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport { getZT } from 'lib/zt-util'\n\nconst show_more_icon = require('static/show-more.png')\nimport Image from 'Components/image'\nimport Button from 'Components/button'\nimport { useCityName } from 'Components/hooks'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport classNames from 'classnames'\nconst moreIconGrey = require('static/more-icon-grey@3x.png')\nconst moreIconYellow = require('static/right-arrow-yellow.png')\nconst emptyImage =\n 'https://sf3-ttcdn-tos.pstatp.com/img/motor-img/106030f33daf22a3c7b1018410e74f1d~noop.png'\ntype IPcConfig = {\n environmental_standards: string\n driver_form: string\n fuel_comprehensive: string\n gearbox_description: string\n air_control_model_2: string\n fuel_form: string\n fuel_label: string\n seat_material: string\n engine_description: string\n is_new_energy_type: boolean\n}\nexport interface IHeader {\n brand_name: string\n brand_id: string\n avatar_url: string\n cover_url: string\n dealer_price: string\n official_price: string\n name: string\n head_info: string\n extra: string\n entrance_list: string\n series_id: number\n car_id_list: string\n pic_summary: IImages[]\n white_cover_url: string\n motor_id: number\n vr_image: string\n pc_config: any\n}\nexport interface IExtra {\n car_type?: string\n oil_consume?: string\n logo_url: string\n}\n\ninterface IImages {\n SeriesId?: number\n Category?: string\n PicCount?: number\n CoverPicUrl: string\n}\ninterface IProps {\n seriesId: number\n hasVR?: boolean\n}\n\nexport default function Header({ seriesId, hasVR }: IProps) {\n const [params, setParams] = React.useState({\n brand_name: '',\n brand_id: '',\n avatar_url: '',\n cover_url: '',\n dealer_price: '',\n official_price: '',\n name: '',\n head_info: '',\n extra: '',\n entrance_list: '',\n series_id: seriesId,\n car_id_list: '',\n pic_summary: [],\n white_cover_url: '',\n motor_id: 0,\n vr_image: '',\n pc_config: {\n is_new_energy_type: false,\n environmental_standards: '',\n driver_form: '',\n fuel_comprehensive: '',\n gearbox_description: '',\n air_control_model_2: '',\n fuel_form: '',\n fuel_label: '',\n seat_material: '',\n engine_description: '',\n },\n })\n\n const cityName = useCityName()\n const [price, setPrice] = React.useState('')\n React.useEffect(() => {\n fetch(\n getUrl(\n `/motor/car_page/m/v1/get_head/?series_id=${seriesId}&city_name=${encodeURIComponent(\n cityName || '北京'\n )}&data_from=pc_station`\n )\n )\n .then((res: any) => get(res, 'concern_obj'))\n .then((data: any) => {\n if (!data) return\n setParams(data)\n })\n .catch((err) => {\n // no-op\n })\n\n fetch(\n getUrl(\n `/cloud/api/invoke/get_price_by_series_id?series_id=${seriesId}&city_name=${encodeURIComponent(\n cityName || ''\n )}`\n )\n )\n .then((res: any) => {\n if (\n !res ||\n !res.data ||\n !res.data.DealerLowPrice ||\n !res.data.DealerHighPrice\n ) {\n return\n }\n setPrice(`${res.data.DealerLowPrice}万-${res.data.DealerHighPrice}万`)\n })\n .catch((err) => {\n // no-op\n })\n }, [seriesId, cityName])\n\n // eslint-disable-next-line complexity\n function CarParams({ params }: { params: IHeader }) {\n let extra: IExtra\n try {\n extra = JSON.parse(params.extra)\n } catch {\n return null\n }\n\n const subsidyPrice = get(params, 'subsidy_price', '')\n const pirceHintText = subsidyPrice ? '补贴价格:' : '厂商指导价:'\n const priceText = subsidyPrice\n ? subsidyPrice\n : get(params, 'official_price', '')\n\n return (\n
\n

\n \"avatar\"\n\n {params.name}\n

\n
\n
\n \n 经销商报价:\n {price || '暂无报价'}\n \n \n {pirceHintText}\n {priceText || '暂无报价'}\n \n
\n
\n \n \n {\n sendTeaCommEvent('click_series_top_inquiry', {\n car_series_id: seriesId,\n })\n }}\n type=\"new_primary\"\n disabled={\n !params.dealer_price || params.dealer_price.indexOf('暂无') >= 0\n }\n className={`button button-price`}\n >\n 询底价\n \n \n \n \n \n {\n sendTeaCommEvent('click_series_top_config', {\n car_series_id: seriesId,\n })\n }}\n >\n 车友圈\n \n \n \n
\n {params?.pc_config?.is_new_energy_type ? (\n \n {extra?.car_type ? (\n

\n 级别:{extra.car_type}\n

\n ) : null}\n {params?.pc_config?.recharge_mileage ? (\n

\n 续航:{params.pc_config.recharge_mileage}\n

\n ) : null}\n\n {params?.pc_config?.max_horsepower ? (\n

\n 最大马力:{params.pc_config.max_horsepower}\n

\n ) : null}\n\n {params?.pc_config?.electric_drive_number ? (\n

\n 电机数:\n {params?.pc_config?.electric_drive_number}\n

\n ) : null}\n {params?.pc_config?.electric_type ? (\n

\n 电机类型:{params.pc_config.electric_type}\n

\n ) : null}\n\n {params?.pc_config?.driver_form ? (\n

\n 驱动方式:{params?.pc_config?.driver_form}\n

\n ) : null}\n\n {params?.pc_config?.acceleration_time ? (\n

\n 百公里加速:{params.pc_config.acceleration_time}\n

\n ) : null}\n\n {params?.pc_config?.max_speed ? (\n

\n 最高车速:{params.pc_config.max_speed}\n

\n ) : null}\n\n {params?.pc_config?.fuel_form ? (\n

\n 能源类型:{params.pc_config.fuel_form}\n

\n ) : null}\n\n {params?.pc_config?.battery_charge_time ? (\n

\n 充电时间:{params.pc_config.battery_charge_time}\n

\n ) : null}\n\n {params?.pc_config?.seat_material ? (\n

\n 座椅材质:{params.pc_config.seat_material}\n

\n ) : null}\n
\n ) : (\n \n {extra?.car_type ? (\n

\n 级别:{extra.car_type}\n

\n ) : null}\n\n {params?.pc_config?.series_displacement ? (\n

\n 排量:{params?.pc_config?.series_displacement}\n

\n ) : null}\n\n {params?.pc_config?.environmental_standards ? (\n

\n 环保标准:\n {params?.pc_config?.environmental_standards}\n

\n ) : null}\n {params?.pc_config?.engine_description ? (\n

\n 动力:{params?.pc_config?.engine_description}\n

\n ) : null}\n {params?.pc_config?.driver_form ? (\n

\n 驱动方式:{params.pc_config.driver_form}\n

\n ) : null}\n\n {params?.pc_config?.gearbox_description ? (\n

\n 变速箱:{params.pc_config.gearbox_description}\n

\n ) : null}\n\n {params?.pc_config?.fuel_comprehensive ? (\n

\n 油耗:{params.pc_config.fuel_comprehensive}\n

\n ) : null}\n\n {params?.pc_config?.fuel_label ? (\n

\n 燃油标号:{params.pc_config.fuel_label}\n

\n ) : null}\n\n {params?.pc_config?.fuel_form ? (\n

\n 能源类型:{params.pc_config.fuel_form}\n

\n ) : null}\n\n {params?.pc_config?.air_control_model_2 ? (\n

\n 空调控制方式:\n {params.pc_config.air_control_model_2}\n

\n ) : null}\n\n {params?.pc_config?.seat_material ? (\n

\n 座椅材质:{params.pc_config.seat_material}\n

\n ) : null}\n
\n )}\n\n \n {\n sendTeaCommEvent('click_series_top_config', {\n car_series_id: seriesId,\n })\n }}\n >\n 更多参数配置\n \n \n \n
\n \n
\n )\n }\n\n return (\n
\n \n \n \n
\n )\n}\n\ntype HeaderProps = {\n params: IHeader\n seriesId: number\n cityName?: string\n hasVR?: boolean\n}\n\nconst Photos: React.FC = (props) => {\n const { params, seriesId, hasVR } = props\n\n const images: IImages[] = params.pic_summary || []\n if (images.length === 0) {\n images[0] = {\n SeriesId: seriesId,\n Category: 'wg',\n PicCount: 0,\n CoverPicUrl: '',\n }\n images[1] = {\n SeriesId: seriesId,\n Category: 'ns',\n PicCount: 0,\n CoverPicUrl: '',\n }\n images[2] = {\n SeriesId: seriesId,\n Category: 'kj',\n PicCount: 0,\n CoverPicUrl: '',\n }\n }\n if (images.every((img) => img.Category !== 'vr_image')) {\n images.unshift({\n SeriesId: seriesId,\n Category: 'vr_image',\n PicCount: 0,\n CoverPicUrl: params.vr_image,\n })\n }\n\n const num =\n images.reduce((pre: number, cur) => {\n return pre + (cur.PicCount || 0)\n }, 0) || 0\n const categoryMap = new Map()\n categoryMap.set('wg', '外观')\n categoryMap.set('ns', '内饰')\n categoryMap.set('kj', '空间')\n categoryMap.set('vr_image', '全景看车')\n return (\n
\n \n {\n if (num <= 0) {\n e.preventDefault()\n }\n }}\n >\n
\n \n

\n 共{num}张图\n {num > 0 && }\n

\n
\n \n \n\n
\n {images.length &&\n images.map((item: IImages) => {\n const category = categoryMap.get(item.Category)\n if (!category) {\n return null\n }\n return (\n {\n sendTeaCommEvent('click_series_top_pic', {\n car_series_id: seriesId,\n sub_tab: category,\n })\n }}\n >\n {item.Category === 'vr_image' ? (\n {\n if (!item.CoverPicUrl || !hasVR) {\n e.preventDefault()\n }\n }}\n href={`https://m.dcdapp.com/motor/inapp/pano-new/inner.html?series_id=${seriesId}`}\n >\n \n \n {item.CoverPicUrl && hasVR ? category : '暂无全景'}\n

\n \n ) : (\n \n {\n if (!item.CoverPicUrl) {\n e.preventDefault()\n }\n }}\n >\n \n \n {item.CoverPicUrl ? '' : '暂无'}\n {category}\n

\n \n \n )}\n
\n )\n })}\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 echarts = require(\"../echarts\");\n\nrequire(\"./sankey/SankeySeries\");\n\nrequire(\"./sankey/SankeyView\");\n\nrequire(\"./sankey/sankeyAction\");\n\nvar sankeyLayout = require(\"./sankey/sankeyLayout\");\n\nvar sankeyVisual = require(\"./sankey/sankeyVisual\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerLayout(sankeyLayout);\necharts.registerVisual(sankeyVisual);","\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(\"./lib/echarts\");\n\n(function () {\n for (var key in _echarts) {\n if (_echarts == null || !_echarts.hasOwnProperty(key) || key === 'default' || key === '__esModule') return;\n exports[key] = _echarts[key];\n }\n})();\n\nvar _export = require(\"./lib/export\");\n\n(function () {\n for (var key in _export) {\n if (_export == null || !_export.hasOwnProperty(key) || key === 'default' || key === '__esModule') return;\n exports[key] = _export[key];\n }\n})();\n\nrequire(\"./lib/component/dataset\");\n\nrequire(\"./lib/chart/line\");\n\nrequire(\"./lib/chart/bar\");\n\nrequire(\"./lib/chart/pie\");\n\nrequire(\"./lib/chart/scatter\");\n\nrequire(\"./lib/chart/radar\");\n\nrequire(\"./lib/chart/map\");\n\nrequire(\"./lib/chart/tree\");\n\nrequire(\"./lib/chart/treemap\");\n\nrequire(\"./lib/chart/graph\");\n\nrequire(\"./lib/chart/gauge\");\n\nrequire(\"./lib/chart/funnel\");\n\nrequire(\"./lib/chart/parallel\");\n\nrequire(\"./lib/chart/sankey\");\n\nrequire(\"./lib/chart/boxplot\");\n\nrequire(\"./lib/chart/candlestick\");\n\nrequire(\"./lib/chart/effectScatter\");\n\nrequire(\"./lib/chart/lines\");\n\nrequire(\"./lib/chart/heatmap\");\n\nrequire(\"./lib/chart/pictorialBar\");\n\nrequire(\"./lib/chart/themeRiver\");\n\nrequire(\"./lib/chart/sunburst\");\n\nrequire(\"./lib/chart/custom\");\n\nrequire(\"./lib/component/grid\");\n\nrequire(\"./lib/component/polar\");\n\nrequire(\"./lib/component/geo\");\n\nrequire(\"./lib/component/singleAxis\");\n\nrequire(\"./lib/component/parallel\");\n\nrequire(\"./lib/component/calendar\");\n\nrequire(\"./lib/component/graphic\");\n\nrequire(\"./lib/component/toolbox\");\n\nrequire(\"./lib/component/tooltip\");\n\nrequire(\"./lib/component/axisPointer\");\n\nrequire(\"./lib/component/brush\");\n\nrequire(\"./lib/component/title\");\n\nrequire(\"./lib/component/timeline\");\n\nrequire(\"./lib/component/markPoint\");\n\nrequire(\"./lib/component/markLine\");\n\nrequire(\"./lib/component/markArea\");\n\nrequire(\"./lib/component/legendScroll\");\n\nrequire(\"./lib/component/legend\");\n\nrequire(\"./lib/component/dataZoom\");\n\nrequire(\"./lib/component/dataZoomInside\");\n\nrequire(\"./lib/component/dataZoomSlider\");\n\nrequire(\"./lib/component/visualMap\");\n\nrequire(\"./lib/component/visualMapContinuous\");\n\nrequire(\"./lib/component/visualMapPiecewise\");\n\nrequire(\"zrender/lib/vml/vml\");\n\nrequire(\"zrender/lib/svg/svg\");","\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 * Link lists and struct (graph or tree)\n */\nvar each = zrUtil.each;\nvar DATAS = '\\0__link_datas';\nvar MAIN_DATA = '\\0__link_mainData'; // Caution:\n// In most case, either list or its shallow clones (see list.cloneShallow)\n// is active in echarts process. So considering heap memory consumption,\n// we do not clone tree or graph, but share them among list and its shallow clones.\n// But in some rare case, we have to keep old list (like do animation in chart). So\n// please take care that both the old list and the new list share the same tree/graph.\n\n/**\n * @param {Object} opt\n * @param {module:echarts/data/List} opt.mainData\n * @param {Object} [opt.struct] For example, instance of Graph or Tree.\n * @param {string} [opt.structAttr] designation: list[structAttr] = struct;\n * @param {Object} [opt.datas] {dataType: data},\n * like: {node: nodeList, edge: edgeList}.\n * Should contain mainData.\n * @param {Object} [opt.datasAttr] {dataType: attr},\n * designation: struct[datasAttr[dataType]] = list;\n */\n\nfunction linkList(opt) {\n var mainData = opt.mainData;\n var datas = opt.datas;\n\n if (!datas) {\n datas = {\n main: mainData\n };\n opt.datasAttr = {\n main: 'data'\n };\n }\n\n opt.datas = opt.mainData = null;\n linkAll(mainData, datas, opt); // Porxy data original methods.\n\n each(datas, function (data) {\n each(mainData.TRANSFERABLE_METHODS, function (methodName) {\n data.wrapMethod(methodName, zrUtil.curry(transferInjection, opt));\n });\n }); // Beyond transfer, additional features should be added to `cloneShallow`.\n\n mainData.wrapMethod('cloneShallow', zrUtil.curry(cloneShallowInjection, opt)); // Only mainData trigger change, because struct.update may trigger\n // another changable methods, which may bring about dead lock.\n\n each(mainData.CHANGABLE_METHODS, function (methodName) {\n mainData.wrapMethod(methodName, zrUtil.curry(changeInjection, opt));\n }); // Make sure datas contains mainData.\n\n zrUtil.assert(datas[mainData.dataType] === mainData);\n}\n\nfunction transferInjection(opt, res) {\n if (isMainData(this)) {\n // Transfer datas to new main data.\n var datas = zrUtil.extend({}, this[DATAS]);\n datas[this.dataType] = res;\n linkAll(res, datas, opt);\n } else {\n // Modify the reference in main data to point newData.\n linkSingle(res, this.dataType, this[MAIN_DATA], opt);\n }\n\n return res;\n}\n\nfunction changeInjection(opt, res) {\n opt.struct && opt.struct.update(this);\n return res;\n}\n\nfunction cloneShallowInjection(opt, res) {\n // cloneShallow, which brings about some fragilities, may be inappropriate\n // to be exposed as an API. So for implementation simplicity we can make\n // the restriction that cloneShallow of not-mainData should not be invoked\n // outside, but only be invoked here.\n each(res[DATAS], function (data, dataType) {\n data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);\n });\n return res;\n}\n/**\n * Supplement method to List.\n *\n * @public\n * @param {string} [dataType] If not specified, return mainData.\n * @return {module:echarts/data/List}\n */\n\n\nfunction getLinkedData(dataType) {\n var mainData = this[MAIN_DATA];\n return dataType == null || mainData == null ? mainData : mainData[DATAS][dataType];\n}\n\nfunction isMainData(data) {\n return data[MAIN_DATA] === data;\n}\n\nfunction linkAll(mainData, datas, opt) {\n mainData[DATAS] = {};\n each(datas, function (data, dataType) {\n linkSingle(data, dataType, mainData, opt);\n });\n}\n\nfunction linkSingle(data, dataType, mainData, opt) {\n mainData[DATAS][dataType] = data;\n data[MAIN_DATA] = mainData;\n data.dataType = dataType;\n\n if (opt.struct) {\n data[opt.structAttr] = opt.struct;\n opt.struct[opt.datasAttr[dataType]] = data;\n } // Supplement method.\n\n\n data.getLinkedData = getLinkedData;\n}\n\nvar _default = linkList;\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 Region = require(\"../Region\");\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// Fix for 南海诸岛\nvar geoCoord = [126, 25];\nvar points = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]];\n\nfor (var i = 0; i < points.length; i++) {\n for (var k = 0; k < points[i].length; k++) {\n points[i][k][0] /= 10.5;\n points[i][k][1] /= -10.5 / 0.75;\n points[i][k][0] += geoCoord[0];\n points[i][k][1] += geoCoord[1];\n }\n}\n\nfunction _default(mapType, regions) {\n if (mapType === 'china') {\n regions.push(new Region('南海诸岛', zrUtil.map(points, function (exterior) {\n return {\n type: 'polygon',\n exterior: exterior\n };\n }), geoCoord));\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 DataZoomView = require(\"./DataZoomView\");\n\nvar sliderMove = require(\"../helper/sliderMove\");\n\nvar roams = require(\"./roams\");\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 InsideZoomView = DataZoomView.extend({\n type: 'dataZoom.inside',\n\n /**\n * @override\n */\n init: function (ecModel, api) {\n /**\n * 'throttle' is used in this.dispatchAction, so we save range\n * to avoid missing some 'pan' info.\n * @private\n * @type {Array.}\n */\n this._range;\n },\n\n /**\n * @override\n */\n render: function (dataZoomModel, ecModel, api, payload) {\n InsideZoomView.superApply(this, 'render', arguments); // Hence the `throttle` util ensures to preserve command order,\n // here simply updating range all the time will not cause missing\n // any of the the roam change.\n\n this._range = dataZoomModel.getPercentRange(); // Reset controllers.\n\n zrUtil.each(this.getTargetCoordInfo(), function (coordInfoList, coordSysName) {\n var allCoordIds = zrUtil.map(coordInfoList, function (coordInfo) {\n return roams.generateCoordId(coordInfo.model);\n });\n zrUtil.each(coordInfoList, function (coordInfo) {\n var coordModel = coordInfo.model;\n var getRange = {};\n zrUtil.each(['pan', 'zoom', 'scrollMove'], function (eventName) {\n getRange[eventName] = bind(roamHandlers[eventName], this, coordInfo, coordSysName);\n }, this);\n roams.register(api, {\n coordId: roams.generateCoordId(coordModel),\n allCoordIds: allCoordIds,\n containsPoint: function (e, x, y) {\n return coordModel.coordinateSystem.containPoint([x, y]);\n },\n dataZoomId: dataZoomModel.id,\n dataZoomModel: dataZoomModel,\n getRange: getRange\n });\n }, this);\n }, this);\n },\n\n /**\n * @override\n */\n dispose: function () {\n roams.unregister(this.api, this.dataZoomModel.id);\n InsideZoomView.superApply(this, 'dispose', arguments);\n this._range = null;\n }\n});\nvar roamHandlers = {\n /**\n * @this {module:echarts/component/dataZoom/InsideZoomView}\n */\n zoom: function (coordInfo, coordSysName, controller, e) {\n var lastRange = this._range;\n var range = lastRange.slice(); // Calculate transform by the first axis.\n\n var axisModel = coordInfo.axisModels[0];\n\n if (!axisModel) {\n return;\n }\n\n var directionInfo = getDirectionInfo[coordSysName](null, [e.originX, e.originY], axisModel, controller, coordInfo);\n var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0];\n var scale = Math.max(1 / e.scale, 0);\n range[0] = (range[0] - percentPoint) * scale + percentPoint;\n range[1] = (range[1] - percentPoint) * scale + percentPoint; // Restrict range.\n\n var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);\n this._range = range;\n\n if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\n return range;\n }\n },\n\n /**\n * @this {module:echarts/component/dataZoom/InsideZoomView}\n */\n pan: makeMover(function (range, axisModel, coordInfo, coordSysName, controller, e) {\n var directionInfo = getDirectionInfo[coordSysName]([e.oldX, e.oldY], [e.newX, e.newY], axisModel, controller, coordInfo);\n return directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength;\n }),\n\n /**\n * @this {module:echarts/component/dataZoom/InsideZoomView}\n */\n scrollMove: makeMover(function (range, axisModel, coordInfo, coordSysName, controller, e) {\n var directionInfo = getDirectionInfo[coordSysName]([0, 0], [e.scrollDelta, e.scrollDelta], axisModel, controller, coordInfo);\n return directionInfo.signal * (range[1] - range[0]) * e.scrollDelta;\n })\n};\n\nfunction makeMover(getPercentDelta) {\n return function (coordInfo, coordSysName, controller, e) {\n var lastRange = this._range;\n var range = lastRange.slice(); // Calculate transform by the first axis.\n\n var axisModel = coordInfo.axisModels[0];\n\n if (!axisModel) {\n return;\n }\n\n var percentDelta = getPercentDelta(range, axisModel, coordInfo, coordSysName, controller, e);\n sliderMove(percentDelta, range, [0, 100], 'all');\n this._range = range;\n\n if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\n return range;\n }\n };\n}\n\nvar getDirectionInfo = {\n grid: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n var axis = axisModel.axis;\n var ret = {};\n var rect = coordInfo.model.coordinateSystem.getRect();\n oldPoint = oldPoint || [0, 0];\n\n if (axis.dim === 'x') {\n ret.pixel = newPoint[0] - oldPoint[0];\n ret.pixelLength = rect.width;\n ret.pixelStart = rect.x;\n ret.signal = axis.inverse ? 1 : -1;\n } else {\n // axis.dim === 'y'\n ret.pixel = newPoint[1] - oldPoint[1];\n ret.pixelLength = rect.height;\n ret.pixelStart = rect.y;\n ret.signal = axis.inverse ? -1 : 1;\n }\n\n return ret;\n },\n polar: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n var axis = axisModel.axis;\n var ret = {};\n var polar = coordInfo.model.coordinateSystem;\n var radiusExtent = polar.getRadiusAxis().getExtent();\n var angleExtent = polar.getAngleAxis().getExtent();\n oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0];\n newPoint = polar.pointToCoord(newPoint);\n\n if (axisModel.mainType === 'radiusAxis') {\n ret.pixel = newPoint[0] - oldPoint[0]; // ret.pixelLength = Math.abs(radiusExtent[1] - radiusExtent[0]);\n // ret.pixelStart = Math.min(radiusExtent[0], radiusExtent[1]);\n\n ret.pixelLength = radiusExtent[1] - radiusExtent[0];\n ret.pixelStart = radiusExtent[0];\n ret.signal = axis.inverse ? 1 : -1;\n } else {\n // 'angleAxis'\n ret.pixel = newPoint[1] - oldPoint[1]; // ret.pixelLength = Math.abs(angleExtent[1] - angleExtent[0]);\n // ret.pixelStart = Math.min(angleExtent[0], angleExtent[1]);\n\n ret.pixelLength = angleExtent[1] - angleExtent[0];\n ret.pixelStart = angleExtent[0];\n ret.signal = axis.inverse ? -1 : 1;\n }\n\n return ret;\n },\n singleAxis: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n var axis = axisModel.axis;\n var rect = coordInfo.model.coordinateSystem.getRect();\n var ret = {};\n oldPoint = oldPoint || [0, 0];\n\n if (axis.orient === 'horizontal') {\n ret.pixel = newPoint[0] - oldPoint[0];\n ret.pixelLength = rect.width;\n ret.pixelStart = rect.x;\n ret.signal = axis.inverse ? 1 : -1;\n } else {\n // 'vertical'\n ret.pixel = newPoint[1] - oldPoint[1];\n ret.pixelLength = rect.height;\n ret.pixelStart = rect.y;\n ret.signal = axis.inverse ? -1 : 1;\n }\n\n return ret;\n }\n};\nvar _default = InsideZoomView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar _sourceType = require(\"../../data/helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _referHelper = require(\"../../model/referHelper\");\n\nvar getCoordSysInfoBySeries = _referHelper.getCoordSysInfoBySeries;\n\nvar Source = require(\"../../data/Source\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\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/data/Source|Array} source Or raw data.\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object} [opt]\n * @param {string} [opt.generateCoord]\n * @param {boolean} [opt.useEncodeDefaulter]\n */\nfunction createListFromArray(source, seriesModel, opt) {\n opt = opt || {};\n\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n var coordSysName = seriesModel.get('coordinateSystem');\n var registeredCoordSys = CoordinateSystem.get(coordSysName);\n var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n var coordSysDimDefs;\n\n if (coordSysInfo) {\n coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n var dimInfo = {\n name: dim\n };\n var axisModel = coordSysInfo.axisMap.get(dim);\n\n if (axisModel) {\n var axisType = axisModel.get('type');\n dimInfo.type = getDimensionTypeByAxis(axisType); // dimInfo.stackable = isStackable(axisType);\n }\n\n return dimInfo;\n });\n }\n\n if (!coordSysDimDefs) {\n // Get dimensions from registered coordinate system\n coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n }\n\n var dimInfoList = createDimensions(source, {\n coordDimensions: coordSysDimDefs,\n generateCoord: opt.generateCoord,\n encodeDefaulter: opt.useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null\n });\n var firstCategoryDimIndex;\n var hasNameEncode;\n coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n var coordDim = dimInfo.coordDim;\n var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n if (categoryAxisModel) {\n if (firstCategoryDimIndex == null) {\n firstCategoryDimIndex = dimIndex;\n }\n\n dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n }\n\n if (dimInfo.otherDims.itemName != null) {\n hasNameEncode = true;\n }\n });\n\n if (!hasNameEncode && firstCategoryDimIndex != null) {\n dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n }\n\n var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\n var list = new List(dimInfoList, seriesModel);\n list.setCalculationInfo(stackCalculationInfo);\n var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n // Use dataIndex as ordinal value in categoryAxis\n return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n } : null;\n list.hasItemOption = false;\n list.initData(source, null, dimValueGetter);\n return list;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var sampleItem = firstDataNotNull(source.data || []);\n return sampleItem != null && !zrUtil.isArray(getDataItemValue(sampleItem));\n }\n}\n\nfunction firstDataNotNull(data) {\n var i = 0;\n\n while (i < data.length && data[i] == null) {\n i++;\n }\n\n return data[i];\n}\n\nvar _default = createListFromArray;\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 graphic = require(\"../../util/graphic\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar isNumeric = _number.isNumeric;\n\nvar _helper = require(\"./helper\");\n\nvar setLabel = _helper.setLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth']; // index: +isHorizontal\n\nvar LAYOUT_ATTRS = [{\n xy: 'x',\n wh: 'width',\n index: 0,\n posDesc: ['left', 'right']\n}, {\n xy: 'y',\n wh: 'height',\n index: 1,\n posDesc: ['top', 'bottom']\n}];\nvar pathForLineWidth = new graphic.Circle();\nvar BarView = echarts.extendChartView({\n type: 'pictorialBar',\n render: function (seriesModel, ecModel, api) {\n var group = this.group;\n var data = seriesModel.getData();\n var oldData = this._data;\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var isHorizontal = !!baseAxis.isHorizontal();\n var coordSysRect = cartesian.grid.getRect();\n var opt = {\n ecSize: {\n width: api.getWidth(),\n height: api.getHeight()\n },\n seriesModel: seriesModel,\n coordSys: cartesian,\n coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]],\n isHorizontal: isHorizontal,\n valueDim: LAYOUT_ATTRS[+isHorizontal],\n categoryDim: LAYOUT_ATTRS[1 - isHorizontal]\n };\n data.diff(oldData).add(function (dataIndex) {\n if (!data.hasValue(dataIndex)) {\n return;\n }\n\n var itemModel = getItemModel(data, dataIndex);\n var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt);\n var bar = createBar(data, opt, symbolMeta);\n data.setItemGraphicEl(dataIndex, bar);\n group.add(bar);\n updateCommon(bar, opt, symbolMeta);\n }).update(function (newIndex, oldIndex) {\n var bar = oldData.getItemGraphicEl(oldIndex);\n\n if (!data.hasValue(newIndex)) {\n group.remove(bar);\n return;\n }\n\n var itemModel = getItemModel(data, newIndex);\n var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt);\n var pictorialShapeStr = getShapeStr(data, symbolMeta);\n\n if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {\n group.remove(bar);\n data.setItemGraphicEl(newIndex, null);\n bar = null;\n }\n\n if (bar) {\n updateBar(bar, opt, symbolMeta);\n } else {\n bar = createBar(data, opt, symbolMeta, true);\n }\n\n data.setItemGraphicEl(newIndex, bar);\n bar.__pictorialSymbolMeta = symbolMeta; // Add back\n\n group.add(bar);\n updateCommon(bar, opt, symbolMeta);\n }).remove(function (dataIndex) {\n var bar = oldData.getItemGraphicEl(dataIndex);\n bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar);\n }).execute();\n this._data = data;\n return this.group;\n },\n dispose: zrUtil.noop,\n remove: function (ecModel, api) {\n var group = this.group;\n var data = this._data;\n\n if (ecModel.get('animation')) {\n if (data) {\n data.eachItemGraphicEl(function (bar) {\n removeBar(data, bar.dataIndex, ecModel, bar);\n });\n }\n } else {\n group.removeAll();\n }\n }\n}); // Set or calculate default value about symbol, and calculate layout info.\n\nfunction getSymbolMeta(data, dataIndex, itemModel, opt) {\n var layout = data.getItemLayout(dataIndex);\n var symbolRepeat = itemModel.get('symbolRepeat');\n var symbolClip = itemModel.get('symbolClip');\n var symbolPosition = itemModel.get('symbolPosition') || 'start';\n var symbolRotate = itemModel.get('symbolRotate');\n var rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n var symbolPatternSize = itemModel.get('symbolPatternSize') || 2;\n var isAnimationEnabled = itemModel.isAnimationEnabled();\n var symbolMeta = {\n dataIndex: dataIndex,\n layout: layout,\n itemModel: itemModel,\n symbolType: data.getItemVisual(dataIndex, 'symbol') || 'circle',\n color: data.getItemVisual(dataIndex, 'color'),\n symbolClip: symbolClip,\n symbolRepeat: symbolRepeat,\n symbolRepeatDirection: itemModel.get('symbolRepeatDirection'),\n symbolPatternSize: symbolPatternSize,\n rotation: rotation,\n animationModel: isAnimationEnabled ? itemModel : null,\n hoverAnimation: isAnimationEnabled && itemModel.get('hoverAnimation'),\n z2: itemModel.getShallow('z', true) || 0\n };\n prepareBarLength(itemModel, symbolRepeat, layout, opt, symbolMeta);\n prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta);\n prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta);\n var symbolSize = symbolMeta.symbolSize;\n var symbolOffset = itemModel.get('symbolOffset');\n\n if (zrUtil.isArray(symbolOffset)) {\n symbolOffset = [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])];\n }\n\n prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta);\n return symbolMeta;\n} // bar length can be negative.\n\n\nfunction prepareBarLength(itemModel, symbolRepeat, layout, opt, output) {\n var valueDim = opt.valueDim;\n var symbolBoundingData = itemModel.get('symbolBoundingData');\n var valueAxis = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis());\n var zeroPx = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0));\n var pxSignIdx = 1 - +(layout[valueDim.wh] <= 0);\n var boundingLength;\n\n if (zrUtil.isArray(symbolBoundingData)) {\n var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis, symbolBoundingData[1]) - zeroPx];\n symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse();\n boundingLength = symbolBoundingExtent[pxSignIdx];\n } else if (symbolBoundingData != null) {\n boundingLength = convertToCoordOnAxis(valueAxis, symbolBoundingData) - zeroPx;\n } else if (symbolRepeat) {\n boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx;\n } else {\n boundingLength = layout[valueDim.wh];\n }\n\n output.boundingLength = boundingLength;\n\n if (symbolRepeat) {\n output.repeatCutLength = layout[valueDim.wh];\n }\n\n output.pxSign = boundingLength > 0 ? 1 : boundingLength < 0 ? -1 : 0;\n}\n\nfunction convertToCoordOnAxis(axis, value) {\n return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));\n} // Support ['100%', '100%']\n\n\nfunction prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, output) {\n var valueDim = opt.valueDim;\n var categoryDim = opt.categoryDim;\n var categorySize = Math.abs(layout[categoryDim.wh]);\n var symbolSize = data.getItemVisual(dataIndex, 'symbolSize');\n\n if (zrUtil.isArray(symbolSize)) {\n symbolSize = symbolSize.slice();\n } else {\n if (symbolSize == null) {\n symbolSize = '100%';\n }\n\n symbolSize = [symbolSize, symbolSize];\n } // Note: percentage symbolSize (like '100%') do not consider lineWidth, because it is\n // to complicated to calculate real percent value if considering scaled lineWidth.\n // So the actual size will bigger than layout size if lineWidth is bigger than zero,\n // which can be tolerated in pictorial chart.\n\n\n symbolSize[categoryDim.index] = parsePercent(symbolSize[categoryDim.index], categorySize);\n symbolSize[valueDim.index] = parsePercent(symbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength));\n output.symbolSize = symbolSize; // If x or y is less than zero, show reversed shape.\n\n var symbolScale = output.symbolScale = [symbolSize[0] / symbolPatternSize, symbolSize[1] / symbolPatternSize]; // Follow convention, 'right' and 'top' is the normal scale.\n\n symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;\n}\n\nfunction prepareLineWidth(itemModel, symbolScale, rotation, opt, output) {\n // In symbols are drawn with scale, so do not need to care about the case that width\n // or height are too small. But symbol use strokeNoScale, where acture lineWidth should\n // be calculated.\n var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\n\n if (valueLineWidth) {\n pathForLineWidth.attr({\n scale: symbolScale.slice(),\n rotation: rotation\n });\n pathForLineWidth.updateTransform();\n valueLineWidth /= pathForLineWidth.getLineScale();\n valueLineWidth *= symbolScale[opt.valueDim.index];\n }\n\n output.valueLineWidth = valueLineWidth;\n}\n\nfunction prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, output) {\n var categoryDim = opt.categoryDim;\n var valueDim = opt.valueDim;\n var pxSign = output.pxSign;\n var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0);\n var pathLen = unitLength; // Note: rotation will not effect the layout of symbols, because user may\n // want symbols to rotate on its center, which should not be translated\n // when rotating.\n\n if (symbolRepeat) {\n var absBoundingLength = Math.abs(boundingLength);\n var symbolMargin = zrUtil.retrieve(itemModel.get('symbolMargin'), '15%') + '';\n var hasEndGap = false;\n\n if (symbolMargin.lastIndexOf('!') === symbolMargin.length - 1) {\n hasEndGap = true;\n symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1);\n }\n\n symbolMargin = parsePercent(symbolMargin, symbolSize[valueDim.index]);\n var uLenWithMargin = Math.max(unitLength + symbolMargin * 2, 0); // When symbol margin is less than 0, margin at both ends will be subtracted\n // to ensure that all of the symbols will not be overflow the given area.\n\n var endFix = hasEndGap ? 0 : symbolMargin * 2; // Both final repeatTimes and final symbolMargin area calculated based on\n // boundingLength.\n\n var repeatSpecified = isNumeric(symbolRepeat);\n var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin); // Adjust calculate margin, to ensure each symbol is displayed\n // entirely in the given layout area.\n\n var mDiff = absBoundingLength - repeatTimes * unitLength;\n symbolMargin = mDiff / 2 / (hasEndGap ? repeatTimes : repeatTimes - 1);\n uLenWithMargin = unitLength + symbolMargin * 2;\n endFix = hasEndGap ? 0 : symbolMargin * 2; // Update repeatTimes when not all symbol will be shown.\n\n if (!repeatSpecified && symbolRepeat !== 'fixed') {\n repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0;\n }\n\n pathLen = repeatTimes * uLenWithMargin - endFix;\n output.repeatTimes = repeatTimes;\n output.symbolMargin = symbolMargin;\n }\n\n var sizeFix = pxSign * (pathLen / 2);\n var pathPosition = output.pathPosition = [];\n pathPosition[categoryDim.index] = layout[categoryDim.wh] / 2;\n pathPosition[valueDim.index] = symbolPosition === 'start' ? sizeFix : symbolPosition === 'end' ? boundingLength - sizeFix : boundingLength / 2; // 'center'\n\n if (symbolOffset) {\n pathPosition[0] += symbolOffset[0];\n pathPosition[1] += symbolOffset[1];\n }\n\n var bundlePosition = output.bundlePosition = [];\n bundlePosition[categoryDim.index] = layout[categoryDim.xy];\n bundlePosition[valueDim.index] = layout[valueDim.xy];\n var barRectShape = output.barRectShape = zrUtil.extend({}, layout);\n barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix));\n barRectShape[categoryDim.wh] = layout[categoryDim.wh];\n var clipShape = output.clipShape = {}; // Consider that symbol may be overflow layout rect.\n\n clipShape[categoryDim.xy] = -layout[categoryDim.xy];\n clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh];\n clipShape[valueDim.xy] = 0;\n clipShape[valueDim.wh] = layout[valueDim.wh];\n}\n\nfunction createPath(symbolMeta) {\n var symbolPatternSize = symbolMeta.symbolPatternSize;\n var path = createSymbol( // Consider texture img, make a big size.\n symbolMeta.symbolType, -symbolPatternSize / 2, -symbolPatternSize / 2, symbolPatternSize, symbolPatternSize, symbolMeta.color);\n path.attr({\n culling: true\n });\n path.type !== 'image' && path.setStyle({\n strokeNoScale: true\n });\n return path;\n}\n\nfunction createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {\n var bundle = bar.__pictorialBundle;\n var symbolSize = symbolMeta.symbolSize;\n var valueLineWidth = symbolMeta.valueLineWidth;\n var pathPosition = symbolMeta.pathPosition;\n var valueDim = opt.valueDim;\n var repeatTimes = symbolMeta.repeatTimes || 0;\n var index = 0;\n var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2;\n eachPath(bar, function (path) {\n path.__pictorialAnimationIndex = index;\n path.__pictorialRepeatTimes = repeatTimes;\n\n if (index < repeatTimes) {\n updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate);\n } else {\n updateAttr(path, null, {\n scale: [0, 0]\n }, symbolMeta, isUpdate, function () {\n bundle.remove(path);\n });\n }\n\n updateHoverAnimation(path, symbolMeta);\n index++;\n });\n\n for (; index < repeatTimes; index++) {\n var path = createPath(symbolMeta);\n path.__pictorialAnimationIndex = index;\n path.__pictorialRepeatTimes = repeatTimes;\n bundle.add(path);\n var target = makeTarget(index);\n updateAttr(path, {\n position: target.position,\n scale: [0, 0]\n }, {\n scale: target.scale,\n rotation: target.rotation\n }, symbolMeta, isUpdate); // FIXME\n // If all emphasis/normal through action.\n\n path.on('mouseover', onMouseOver).on('mouseout', onMouseOut);\n updateHoverAnimation(path, symbolMeta);\n }\n\n function makeTarget(index) {\n var position = pathPosition.slice(); // (start && pxSign > 0) || (end && pxSign < 0): i = repeatTimes - index\n // Otherwise: i = index;\n\n var pxSign = symbolMeta.pxSign;\n var i = index;\n\n if (symbolMeta.symbolRepeatDirection === 'start' ? pxSign > 0 : pxSign < 0) {\n i = repeatTimes - 1 - index;\n }\n\n position[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index];\n return {\n position: position,\n scale: symbolMeta.symbolScale.slice(),\n rotation: symbolMeta.rotation\n };\n }\n\n function onMouseOver() {\n eachPath(bar, function (path) {\n path.trigger('emphasis');\n });\n }\n\n function onMouseOut() {\n eachPath(bar, function (path) {\n path.trigger('normal');\n });\n }\n}\n\nfunction createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {\n var bundle = bar.__pictorialBundle;\n var mainPath = bar.__pictorialMainPath;\n\n if (!mainPath) {\n mainPath = bar.__pictorialMainPath = createPath(symbolMeta);\n bundle.add(mainPath);\n updateAttr(mainPath, {\n position: symbolMeta.pathPosition.slice(),\n scale: [0, 0],\n rotation: symbolMeta.rotation\n }, {\n scale: symbolMeta.symbolScale.slice()\n }, symbolMeta, isUpdate);\n mainPath.on('mouseover', onMouseOver).on('mouseout', onMouseOut);\n } else {\n updateAttr(mainPath, null, {\n position: symbolMeta.pathPosition.slice(),\n scale: symbolMeta.symbolScale.slice(),\n rotation: symbolMeta.rotation\n }, symbolMeta, isUpdate);\n }\n\n updateHoverAnimation(mainPath, symbolMeta);\n\n function onMouseOver() {\n this.trigger('emphasis');\n }\n\n function onMouseOut() {\n this.trigger('normal');\n }\n} // bar rect is used for label.\n\n\nfunction createOrUpdateBarRect(bar, symbolMeta, isUpdate) {\n var rectShape = zrUtil.extend({}, symbolMeta.barRectShape);\n var barRect = bar.__pictorialBarRect;\n\n if (!barRect) {\n barRect = bar.__pictorialBarRect = new graphic.Rect({\n z2: 2,\n shape: rectShape,\n silent: true,\n style: {\n stroke: 'transparent',\n fill: 'transparent',\n lineWidth: 0\n }\n });\n bar.add(barRect);\n } else {\n updateAttr(barRect, null, {\n shape: rectShape\n }, symbolMeta, isUpdate);\n }\n}\n\nfunction createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {\n // If not clip, symbol will be remove and rebuilt.\n if (symbolMeta.symbolClip) {\n var clipPath = bar.__pictorialClipPath;\n var clipShape = zrUtil.extend({}, symbolMeta.clipShape);\n var valueDim = opt.valueDim;\n var animationModel = symbolMeta.animationModel;\n var dataIndex = symbolMeta.dataIndex;\n\n if (clipPath) {\n graphic.updateProps(clipPath, {\n shape: clipShape\n }, animationModel, dataIndex);\n } else {\n clipShape[valueDim.wh] = 0;\n clipPath = new graphic.Rect({\n shape: clipShape\n });\n\n bar.__pictorialBundle.setClipPath(clipPath);\n\n bar.__pictorialClipPath = clipPath;\n var target = {};\n target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh];\n graphic[isUpdate ? 'updateProps' : 'initProps'](clipPath, {\n shape: target\n }, animationModel, dataIndex);\n }\n }\n}\n\nfunction getItemModel(data, dataIndex) {\n var itemModel = data.getItemModel(dataIndex);\n itemModel.getAnimationDelayParams = getAnimationDelayParams;\n itemModel.isAnimationEnabled = isAnimationEnabled;\n return itemModel;\n}\n\nfunction getAnimationDelayParams(path) {\n // The order is the same as the z-order, see `symbolRepeatDiretion`.\n return {\n index: path.__pictorialAnimationIndex,\n count: path.__pictorialRepeatTimes\n };\n}\n\nfunction isAnimationEnabled() {\n // `animation` prop can be set on itemModel in pictorial bar chart.\n return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation');\n}\n\nfunction updateHoverAnimation(path, symbolMeta) {\n path.off('emphasis').off('normal');\n var scale = symbolMeta.symbolScale.slice();\n symbolMeta.hoverAnimation && path.on('emphasis', function () {\n this.animateTo({\n scale: [scale[0] * 1.1, scale[1] * 1.1]\n }, 400, 'elasticOut');\n }).on('normal', function () {\n this.animateTo({\n scale: scale.slice()\n }, 400, 'elasticOut');\n });\n}\n\nfunction createBar(data, opt, symbolMeta, isUpdate) {\n // bar is the main element for each data.\n var bar = new graphic.Group(); // bundle is used for location and clip.\n\n var bundle = new graphic.Group();\n bar.add(bundle);\n bar.__pictorialBundle = bundle;\n bundle.attr('position', symbolMeta.bundlePosition.slice());\n\n if (symbolMeta.symbolRepeat) {\n createOrUpdateRepeatSymbols(bar, opt, symbolMeta);\n } else {\n createOrUpdateSingleSymbol(bar, opt, symbolMeta);\n }\n\n createOrUpdateBarRect(bar, symbolMeta, isUpdate);\n createOrUpdateClip(bar, opt, symbolMeta, isUpdate);\n bar.__pictorialShapeStr = getShapeStr(data, symbolMeta);\n bar.__pictorialSymbolMeta = symbolMeta;\n return bar;\n}\n\nfunction updateBar(bar, opt, symbolMeta) {\n var animationModel = symbolMeta.animationModel;\n var dataIndex = symbolMeta.dataIndex;\n var bundle = bar.__pictorialBundle;\n graphic.updateProps(bundle, {\n position: symbolMeta.bundlePosition.slice()\n }, animationModel, dataIndex);\n\n if (symbolMeta.symbolRepeat) {\n createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true);\n } else {\n createOrUpdateSingleSymbol(bar, opt, symbolMeta, true);\n }\n\n createOrUpdateBarRect(bar, symbolMeta, true);\n createOrUpdateClip(bar, opt, symbolMeta, true);\n}\n\nfunction removeBar(data, dataIndex, animationModel, bar) {\n // Not show text when animating\n var labelRect = bar.__pictorialBarRect;\n labelRect && (labelRect.style.text = null);\n var pathes = [];\n eachPath(bar, function (path) {\n pathes.push(path);\n });\n bar.__pictorialMainPath && pathes.push(bar.__pictorialMainPath); // I do not find proper remove animation for clip yet.\n\n bar.__pictorialClipPath && (animationModel = null);\n zrUtil.each(pathes, function (path) {\n graphic.updateProps(path, {\n scale: [0, 0]\n }, animationModel, dataIndex, function () {\n bar.parent && bar.parent.remove(bar);\n });\n });\n data.setItemGraphicEl(dataIndex, null);\n}\n\nfunction getShapeStr(data, symbolMeta) {\n return [data.getItemVisual(symbolMeta.dataIndex, 'symbol') || 'none', !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(':');\n}\n\nfunction eachPath(bar, cb, context) {\n // Do not use Group#eachChild, because it do not support remove.\n zrUtil.each(bar.__pictorialBundle.children(), function (el) {\n el !== bar.__pictorialBarRect && cb.call(context, el);\n });\n}\n\nfunction updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) {\n immediateAttrs && el.attr(immediateAttrs); // when symbolCip used, only clip path has init animation, otherwise it would be weird effect.\n\n if (symbolMeta.symbolClip && !isUpdate) {\n animationAttrs && el.attr(animationAttrs);\n } else {\n animationAttrs && graphic[isUpdate ? 'updateProps' : 'initProps'](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb);\n }\n}\n\nfunction updateCommon(bar, opt, symbolMeta) {\n var color = symbolMeta.color;\n var dataIndex = symbolMeta.dataIndex;\n var itemModel = symbolMeta.itemModel; // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var normalStyle = itemModel.getModel('itemStyle').getItemStyle(['color']);\n var hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n var cursorStyle = itemModel.getShallow('cursor');\n eachPath(bar, function (path) {\n // PENDING setColor should be before setStyle!!!\n path.setColor(color);\n path.setStyle(zrUtil.defaults({\n fill: color,\n opacity: symbolMeta.opacity\n }, normalStyle));\n graphic.setHoverStyle(path, hoverStyle);\n cursorStyle && (path.cursor = cursorStyle);\n path.z2 = symbolMeta.z2;\n });\n var barRectHoverStyle = {};\n var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)];\n var barRect = bar.__pictorialBarRect;\n setLabel(barRect.style, barRectHoverStyle, itemModel, color, opt.seriesModel, dataIndex, barPositionOutside);\n graphic.setHoverStyle(barRect, barRectHoverStyle);\n}\n\nfunction toIntTimes(times) {\n var roundedTimes = Math.round(times); // Escapse accurate error\n\n return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times);\n}\n\nvar _default = BarView;\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 DataZoomModel = require(\"./DataZoomModel\");\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 SliderZoomModel = DataZoomModel.extend({\n type: 'dataZoom.slider',\n layoutMode: 'box',\n\n /**\n * @protected\n */\n defaultOption: {\n show: true,\n // ph => placeholder. Using placehoder here because\n // deault value can only be drived in view stage.\n right: 'ph',\n // Default align to grid rect.\n top: 'ph',\n // Default align to grid rect.\n width: 'ph',\n // Default align to grid rect.\n height: 'ph',\n // Default align to grid rect.\n left: null,\n // Default align to grid rect.\n bottom: null,\n // Default align to grid rect.\n backgroundColor: 'rgba(47,69,84,0)',\n // Background of slider zoom component.\n // dataBackgroundColor: '#ddd', // Background coor of data shadow and border of box,\n // highest priority, remain for compatibility of\n // previous version, but not recommended any more.\n dataBackground: {\n lineStyle: {\n color: '#2f4554',\n width: 0.5,\n opacity: 0.3\n },\n areaStyle: {\n color: 'rgba(47,69,84,0.3)',\n opacity: 0.3\n }\n },\n borderColor: '#ddd',\n // border color of the box. For compatibility,\n // if dataBackgroundColor is set, borderColor\n // is ignored.\n fillerColor: 'rgba(167,183,204,0.4)',\n // Color of selected area.\n // handleColor: 'rgba(89,170,216,0.95)', // Color of handle.\n // handleIcon: 'path://M4.9,17.8c0-1.4,4.5-10.5,5.5-12.4c0-0.1,0.6-1.1,0.9-1.1c0.4,0,0.9,1,0.9,1.1c1.1,2.2,5.4,11,5.4,12.4v17.8c0,1.5-0.6,2.1-1.3,2.1H6.1c-0.7,0-1.3-0.6-1.3-2.1V17.8z',\n\n /* eslint-disable */\n handleIcon: 'M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z',\n\n /* eslint-enable */\n // Percent of the slider height\n handleSize: '100%',\n handleStyle: {\n color: '#a7b7cc'\n },\n labelPrecision: null,\n labelFormatter: null,\n showDetail: true,\n showDataShadow: 'auto',\n // Default auto decision.\n realtime: true,\n zoomLock: false,\n // Whether disable zoom.\n textStyle: {\n color: '#333'\n }\n }\n});\nvar _default = SliderZoomModel;\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 ChartView = require(\"../../view/Chart\");\n\nvar SunburstPiece = require(\"./SunburstPiece\");\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\n\nvar _format = require(\"../../util/format\");\n\nvar windowOpen = _format.windowOpen;\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 ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\nvar SunburstView = ChartView.extend({\n type: 'sunburst',\n init: function () {},\n render: function (seriesModel, ecModel, api, payload) {\n var that = this;\n this.seriesModel = seriesModel;\n this.api = api;\n this.ecModel = ecModel;\n var data = seriesModel.getData();\n var virtualRoot = data.tree.root;\n var newRoot = seriesModel.getViewRoot();\n var group = this.group;\n var renderLabelForZeroData = seriesModel.get('renderLabelForZeroData');\n var newChildren = [];\n newRoot.eachNode(function (node) {\n newChildren.push(node);\n });\n var oldChildren = this._oldChildren || [];\n dualTravel(newChildren, oldChildren);\n renderRollUp(virtualRoot, newRoot);\n\n if (payload && payload.highlight && payload.highlight.piece) {\n var highlightPolicy = seriesModel.getShallow('highlightPolicy');\n payload.highlight.piece.onEmphasis(highlightPolicy);\n } else if (payload && payload.unhighlight) {\n var piece = this.virtualPiece;\n\n if (!piece && virtualRoot.children.length) {\n piece = virtualRoot.children[0].piece;\n }\n\n if (piece) {\n piece.onNormal();\n }\n }\n\n this._initEvents();\n\n this._oldChildren = newChildren;\n\n function dualTravel(newChildren, oldChildren) {\n if (newChildren.length === 0 && oldChildren.length === 0) {\n return;\n }\n\n new DataDiffer(oldChildren, newChildren, getKey, getKey).add(processNode).update(processNode).remove(zrUtil.curry(processNode, null)).execute();\n\n function getKey(node) {\n return node.getId();\n }\n\n function processNode(newId, oldId) {\n var newNode = newId == null ? null : newChildren[newId];\n var oldNode = oldId == null ? null : oldChildren[oldId];\n doRenderNode(newNode, oldNode);\n }\n }\n\n function doRenderNode(newNode, oldNode) {\n if (!renderLabelForZeroData && newNode && !newNode.getValue()) {\n // Not render data with value 0\n newNode = null;\n }\n\n if (newNode !== virtualRoot && oldNode !== virtualRoot) {\n if (oldNode && oldNode.piece) {\n if (newNode) {\n // Update\n oldNode.piece.updateData(false, newNode, 'normal', seriesModel, ecModel); // For tooltip\n\n data.setItemGraphicEl(newNode.dataIndex, oldNode.piece);\n } else {\n // Remove\n removeNode(oldNode);\n }\n } else if (newNode) {\n // Add\n var piece = new SunburstPiece(newNode, seriesModel, ecModel);\n group.add(piece); // For tooltip\n\n data.setItemGraphicEl(newNode.dataIndex, piece);\n }\n }\n }\n\n function removeNode(node) {\n if (!node) {\n return;\n }\n\n if (node.piece) {\n group.remove(node.piece);\n node.piece = null;\n }\n }\n\n function renderRollUp(virtualRoot, viewRoot) {\n if (viewRoot.depth > 0) {\n // Render\n if (that.virtualPiece) {\n // Update\n that.virtualPiece.updateData(false, virtualRoot, 'normal', seriesModel, ecModel);\n } else {\n // Add\n that.virtualPiece = new SunburstPiece(virtualRoot, seriesModel, ecModel);\n group.add(that.virtualPiece);\n }\n\n if (viewRoot.piece._onclickEvent) {\n viewRoot.piece.off('click', viewRoot.piece._onclickEvent);\n }\n\n var event = function (e) {\n that._rootToNode(viewRoot.parentNode);\n };\n\n viewRoot.piece._onclickEvent = event;\n that.virtualPiece.on('click', event);\n } else if (that.virtualPiece) {\n // Remove\n group.remove(that.virtualPiece);\n that.virtualPiece = null;\n }\n }\n },\n dispose: function () {},\n\n /**\n * @private\n */\n _initEvents: function () {\n var that = this;\n\n var event = function (e) {\n var targetFound = false;\n var viewRoot = that.seriesModel.getViewRoot();\n viewRoot.eachNode(function (node) {\n if (!targetFound && node.piece && node.piece.childAt(0) === e.target) {\n var nodeClick = node.getModel().get('nodeClick');\n\n if (nodeClick === 'rootToNode') {\n that._rootToNode(node);\n } else if (nodeClick === 'link') {\n var itemModel = node.getModel();\n var link = itemModel.get('link');\n\n if (link) {\n var linkTarget = itemModel.get('target', true) || '_blank';\n windowOpen(link, linkTarget);\n }\n }\n\n targetFound = true;\n }\n });\n };\n\n if (this.group._onclickEvent) {\n this.group.off('click', this.group._onclickEvent);\n }\n\n this.group.on('click', event);\n this.group._onclickEvent = event;\n },\n\n /**\n * @private\n */\n _rootToNode: function (node) {\n if (node !== this.seriesModel.getViewRoot()) {\n this.api.dispatchAction({\n type: ROOT_TO_NODE_ACTION,\n from: this.uid,\n seriesId: this.seriesModel.id,\n targetNode: node\n });\n }\n },\n\n /**\n * @implement\n */\n containPoint: function (point, seriesModel) {\n var treeRoot = seriesModel.getData();\n var itemLayout = treeRoot.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 = SunburstView;\nmodule.exports = _default;","var Path = require(\"../graphic/Path\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar transformPath = require(\"./transformPath\");\n\n// command chars\n// var cc = [\n// 'm', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z',\n// 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A'\n// ];\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\n\nvar vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n};\n\nvar vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n};\n\nvar vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n};\n\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n var psi = psiDeg * (PI / 180.0);\n var xp = mathCos(psi) * (x1 - x2) / 2.0 + mathSin(psi) * (y1 - y2) / 2.0;\n var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0 + mathCos(psi) * (y1 - y2) / 2.0;\n var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n\n if (lambda > 1) {\n rx *= mathSqrt(lambda);\n ry *= mathSqrt(lambda);\n }\n\n var f = (fa === fs ? -1 : 1) * mathSqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0;\n var cxp = f * rx * yp / ry;\n var cyp = f * -ry * xp / rx;\n var cx = (x1 + x2) / 2.0 + mathCos(psi) * cxp - mathSin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + mathSin(psi) * cxp + mathCos(psi) * cyp;\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = PI;\n }\n\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * PI;\n }\n\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * PI;\n }\n\n path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\n\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; // Consider case:\n// (1) delimiter can be comma or space, where continuous commas\n// or spaces should be seen as one comma.\n// (2) value can be like:\n// '2e-4', 'l.5.9' (ignore 0), 'M-10-10', 'l-2.43e-1,34.9983',\n// 'l-.5E1,54', '121-23-44-11' (no delimiter)\n\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g; // var valueSplitReg = /[\\s,]+/;\n\nfunction createPathProxyFromString(data) {\n if (!data) {\n return new PathProxy();\n } // var data = data.replace(/-/g, ' -')\n // .replace(/ /g, ' ')\n // .replace(/ /g, ',')\n // .replace(/,,/g, ',');\n // var n;\n // create pipes so that we can split the data\n // for (n = 0; n < cc.length; n++) {\n // cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n // }\n // data = data.replace(/-/g, ',-');\n // create array\n // var arr = cs.split('|');\n // init context point\n\n\n var cpx = 0;\n var cpy = 0;\n var subpathX = cpx;\n var subpathY = cpy;\n var prevCmd;\n var path = new PathProxy();\n var CMD = PathProxy.CMD; // commandReg.lastIndex = 0;\n // var cmdResult;\n // while ((cmdResult = commandReg.exec(data)) != null) {\n // var cmdStr = cmdResult[1];\n // var cmdContent = cmdResult[2];\n\n var cmdList = data.match(commandReg);\n\n for (var l = 0; l < cmdList.length; l++) {\n var cmdText = cmdList[l];\n var cmdStr = cmdText.charAt(0);\n var cmd; // String#split is faster a little bit than String#replace or RegExp#exec.\n // var p = cmdContent.split(valueSplitReg);\n // var pLen = 0;\n // for (var i = 0; i < p.length; i++) {\n // // '' and other invalid str => NaN\n // var val = parseFloat(p[i]);\n // !isNaN(val) && (p[pLen++] = val);\n // }\n\n var p = cmdText.match(numberReg) || [];\n var pLen = p.length;\n\n for (var i = 0; i < pLen; i++) {\n p[i] = parseFloat(p[i]);\n }\n\n var off = 0;\n\n while (off < pLen) {\n var ctlPtx;\n var ctlPty;\n var rx;\n var ry;\n var psi;\n var fa;\n var fs;\n var x1 = cpx;\n var y1 = cpy; // convert l, H, h, V, and v to L\n\n switch (cmdStr) {\n case 'l':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'L':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'm':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'l';\n break;\n\n case 'M':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'L';\n break;\n\n case 'h':\n cpx += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'H':\n cpx = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'v':\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'V':\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'C':\n cmd = CMD.C;\n path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n cpx = p[off - 2];\n cpy = p[off - 1];\n break;\n\n case 'c':\n cmd = CMD.C;\n path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n cpx += p[off - 2];\n cpy += p[off - 1];\n break;\n\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = cpx + p[off++];\n y1 = cpy + p[off++];\n cpx += p[off++];\n cpy += p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 'Q':\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'q':\n x1 = p[off++] + cpx;\n y1 = p[off++] + cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 'A':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n\n case 'a':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n }\n }\n\n if (cmdStr === 'z' || cmdStr === 'Z') {\n cmd = CMD.Z;\n path.addData(cmd); // z may be in the middle of the path.\n\n cpx = subpathX;\n cpy = subpathY;\n }\n\n prevCmd = cmd;\n }\n\n path.toStatic();\n return path;\n} // TODO Optimize double memory cost problem\n\n\nfunction createPathOptions(str, opts) {\n var pathProxy = createPathProxyFromString(str);\n opts = opts || {};\n\n opts.buildPath = function (path) {\n if (path.setData) {\n path.setData(pathProxy.data); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n } else {\n var ctx = path;\n pathProxy.rebuildPath(ctx);\n }\n };\n\n opts.applyTransform = function (m) {\n transformPath(pathProxy, m);\n this.dirty(true);\n };\n\n return opts;\n}\n/**\n * Create a Path object from path string data\n * http://www.w3.org/TR/SVG/paths.html#PathData\n * @param {Object} opts Other options\n */\n\n\nfunction createFromString(str, opts) {\n return new Path(createPathOptions(str, opts));\n}\n/**\n * Create a Path class from path string data\n * @param {string} str\n * @param {Object} opts Other options\n */\n\n\nfunction extendFromString(str, opts) {\n return Path.extend(createPathOptions(str, opts));\n}\n/**\n * Merge multiple paths\n */\n// TODO Apply transform\n// TODO stroke dash\n// TODO Optimize double memory cost problem\n\n\nfunction mergePath(pathEls, opts) {\n var pathList = [];\n var len = pathEls.length;\n\n for (var i = 0; i < len; i++) {\n var pathEl = pathEls[i];\n\n if (!pathEl.path) {\n pathEl.createPathProxy();\n }\n\n if (pathEl.__dirtyPath) {\n pathEl.buildPath(pathEl.path, pathEl.shape, true);\n }\n\n pathList.push(pathEl.path);\n }\n\n var pathBundle = new Path(opts); // Need path proxy.\n\n pathBundle.createPathProxy();\n\n pathBundle.buildPath = function (path) {\n path.appendPath(pathList); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n };\n\n return pathBundle;\n}\n\nexports.createFromString = createFromString;\nexports.extendFromString = extendFromString;\nexports.mergePath = mergePath;","\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 BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar layout = require(\"../../util/layout\");\n\nvar TimelineView = require(\"./TimelineView\");\n\nvar TimelineAxis = require(\"./TimelineAxis\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\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 PI = Math.PI;\n\nvar _default = TimelineView.extend({\n type: 'timeline.slider',\n init: function (ecModel, api) {\n this.api = api;\n /**\n * @private\n * @type {module:echarts/component/timeline/TimelineAxis}\n */\n\n this._axis;\n /**\n * @private\n * @type {module:zrender/core/BoundingRect}\n */\n\n this._viewRect;\n /**\n * @type {number}\n */\n\n this._timer;\n /**\n * @type {module:zrender/Element}\n */\n\n this._currentPointer;\n /**\n * @type {module:zrender/container/Group}\n */\n\n this._mainGroup;\n /**\n * @type {module:zrender/container/Group}\n */\n\n this._labelGroup;\n },\n\n /**\n * @override\n */\n render: function (timelineModel, ecModel, api, payload) {\n this.model = timelineModel;\n this.api = api;\n this.ecModel = ecModel;\n this.group.removeAll();\n\n if (timelineModel.get('show', true)) {\n var layoutInfo = this._layout(timelineModel, api);\n\n var mainGroup = this._createGroup('mainGroup');\n\n var labelGroup = this._createGroup('labelGroup');\n /**\n * @private\n * @type {module:echarts/component/timeline/TimelineAxis}\n */\n\n\n var axis = this._axis = this._createAxis(layoutInfo, timelineModel);\n\n timelineModel.formatTooltip = function (dataIndex) {\n return encodeHTML(axis.scale.getLabel(dataIndex));\n };\n\n each(['AxisLine', 'AxisTick', 'Control', 'CurrentPointer'], function (name) {\n this['_render' + name](layoutInfo, mainGroup, axis, timelineModel);\n }, this);\n\n this._renderAxisLabel(layoutInfo, labelGroup, axis, timelineModel);\n\n this._position(layoutInfo, timelineModel);\n }\n\n this._doPlayStop();\n },\n\n /**\n * @override\n */\n remove: function () {\n this._clearTimer();\n\n this.group.removeAll();\n },\n\n /**\n * @override\n */\n dispose: function () {\n this._clearTimer();\n },\n _layout: function (timelineModel, api) {\n var labelPosOpt = timelineModel.get('label.position');\n var orient = timelineModel.get('orient');\n var viewRect = getViewRect(timelineModel, api); // Auto label offset.\n\n if (labelPosOpt == null || labelPosOpt === 'auto') {\n labelPosOpt = orient === 'horizontal' ? viewRect.y + viewRect.height / 2 < api.getHeight() / 2 ? '-' : '+' : viewRect.x + viewRect.width / 2 < api.getWidth() / 2 ? '+' : '-';\n } else if (isNaN(labelPosOpt)) {\n labelPosOpt = {\n horizontal: {\n top: '-',\n bottom: '+'\n },\n vertical: {\n left: '-',\n right: '+'\n }\n }[orient][labelPosOpt];\n }\n\n var labelAlignMap = {\n horizontal: 'center',\n vertical: labelPosOpt >= 0 || labelPosOpt === '+' ? 'left' : 'right'\n };\n var labelBaselineMap = {\n horizontal: labelPosOpt >= 0 || labelPosOpt === '+' ? 'top' : 'bottom',\n vertical: 'middle'\n };\n var rotationMap = {\n horizontal: 0,\n vertical: PI / 2\n }; // Position\n\n var mainLength = orient === 'vertical' ? viewRect.height : viewRect.width;\n var controlModel = timelineModel.getModel('controlStyle');\n var showControl = controlModel.get('show', true);\n var controlSize = showControl ? controlModel.get('itemSize') : 0;\n var controlGap = showControl ? controlModel.get('itemGap') : 0;\n var sizePlusGap = controlSize + controlGap; // Special label rotate.\n\n var labelRotation = timelineModel.get('label.rotate') || 0;\n labelRotation = labelRotation * PI / 180; // To radian.\n\n var playPosition;\n var prevBtnPosition;\n var nextBtnPosition;\n var axisExtent;\n var controlPosition = controlModel.get('position', true);\n var showPlayBtn = showControl && controlModel.get('showPlayBtn', true);\n var showPrevBtn = showControl && controlModel.get('showPrevBtn', true);\n var showNextBtn = showControl && controlModel.get('showNextBtn', true);\n var xLeft = 0;\n var xRight = mainLength; // position[0] means left, position[1] means middle.\n\n if (controlPosition === 'left' || controlPosition === 'bottom') {\n showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap);\n showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap);\n showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n } else {\n // 'top' 'right'\n showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap);\n showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n }\n\n axisExtent = [xLeft, xRight];\n\n if (timelineModel.get('inverse')) {\n axisExtent.reverse();\n }\n\n return {\n viewRect: viewRect,\n mainLength: mainLength,\n orient: orient,\n rotation: rotationMap[orient],\n labelRotation: labelRotation,\n labelPosOpt: labelPosOpt,\n labelAlign: timelineModel.get('label.align') || labelAlignMap[orient],\n labelBaseline: timelineModel.get('label.verticalAlign') || timelineModel.get('label.baseline') || labelBaselineMap[orient],\n // Based on mainGroup.\n playPosition: playPosition,\n prevBtnPosition: prevBtnPosition,\n nextBtnPosition: nextBtnPosition,\n axisExtent: axisExtent,\n controlSize: controlSize,\n controlGap: controlGap\n };\n },\n _position: function (layoutInfo, timelineModel) {\n // Position is be called finally, because bounding rect is needed for\n // adapt content to fill viewRect (auto adapt offset).\n // Timeline may be not all in the viewRect when 'offset' is specified\n // as a number, because it is more appropriate that label aligns at\n // 'offset' but not the other edge defined by viewRect.\n var mainGroup = this._mainGroup;\n var labelGroup = this._labelGroup;\n var viewRect = layoutInfo.viewRect;\n\n if (layoutInfo.orient === 'vertical') {\n // transform to horizontal, inverse rotate by left-top point.\n var m = matrix.create();\n var rotateOriginX = viewRect.x;\n var rotateOriginY = viewRect.y + viewRect.height;\n matrix.translate(m, m, [-rotateOriginX, -rotateOriginY]);\n matrix.rotate(m, m, -PI / 2);\n matrix.translate(m, m, [rotateOriginX, rotateOriginY]);\n viewRect = viewRect.clone();\n viewRect.applyTransform(m);\n }\n\n var viewBound = getBound(viewRect);\n var mainBound = getBound(mainGroup.getBoundingRect());\n var labelBound = getBound(labelGroup.getBoundingRect());\n var mainPosition = mainGroup.position;\n var labelsPosition = labelGroup.position;\n labelsPosition[0] = mainPosition[0] = viewBound[0][0];\n var labelPosOpt = layoutInfo.labelPosOpt;\n\n if (isNaN(labelPosOpt)) {\n // '+' or '-'\n var mainBoundIdx = labelPosOpt === '+' ? 0 : 1;\n toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\n toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx);\n } else {\n var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1;\n toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\n labelsPosition[1] = mainPosition[1] + labelPosOpt;\n }\n\n mainGroup.attr('position', mainPosition);\n labelGroup.attr('position', labelsPosition);\n mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation;\n setOrigin(mainGroup);\n setOrigin(labelGroup);\n\n function setOrigin(targetGroup) {\n var pos = targetGroup.position;\n targetGroup.origin = [viewBound[0][0] - pos[0], viewBound[1][0] - pos[1]];\n }\n\n function getBound(rect) {\n // [[xmin, xmax], [ymin, ymax]]\n return [[rect.x, rect.x + rect.width], [rect.y, rect.y + rect.height]];\n }\n\n function toBound(fromPos, from, to, dimIdx, boundIdx) {\n fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx];\n }\n },\n _createAxis: function (layoutInfo, timelineModel) {\n var data = timelineModel.getData();\n var axisType = timelineModel.get('axisType');\n var scale = axisHelper.createScaleByModel(timelineModel, axisType); // Customize scale. The `tickValue` is `dataIndex`.\n\n scale.getTicks = function () {\n return data.mapArray(['value'], function (value) {\n return value;\n });\n };\n\n var dataExtent = data.getDataExtent('value');\n scale.setExtent(dataExtent[0], dataExtent[1]);\n scale.niceTicks();\n var axis = new TimelineAxis('value', scale, layoutInfo.axisExtent, axisType);\n axis.model = timelineModel;\n return axis;\n },\n _createGroup: function (name) {\n var newGroup = this['_' + name] = new graphic.Group();\n this.group.add(newGroup);\n return newGroup;\n },\n _renderAxisLine: function (layoutInfo, group, axis, timelineModel) {\n var axisExtent = axis.getExtent();\n\n if (!timelineModel.get('lineStyle.show')) {\n return;\n }\n\n group.add(new graphic.Line({\n shape: {\n x1: axisExtent[0],\n y1: 0,\n x2: axisExtent[1],\n y2: 0\n },\n style: zrUtil.extend({\n lineCap: 'round'\n }, timelineModel.getModel('lineStyle').getLineStyle()),\n silent: true,\n z2: 1\n }));\n },\n\n /**\n * @private\n */\n _renderAxisTick: function (layoutInfo, group, axis, timelineModel) {\n var data = timelineModel.getData(); // Show all ticks, despite ignoring strategy.\n\n var ticks = axis.scale.getTicks(); // The value is dataIndex, see the costomized scale.\n\n each(ticks, function (value) {\n var tickCoord = axis.dataToCoord(value);\n var itemModel = data.getItemModel(value);\n var itemStyleModel = itemModel.getModel('itemStyle');\n var hoverStyleModel = itemModel.getModel('emphasis.itemStyle');\n var symbolOpt = {\n position: [tickCoord, 0],\n onclick: bind(this._changeTimeline, this, value)\n };\n var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt);\n graphic.setHoverStyle(el, hoverStyleModel.getItemStyle());\n\n if (itemModel.get('tooltip')) {\n el.dataIndex = value;\n el.dataModel = timelineModel;\n } else {\n el.dataIndex = el.dataModel = null;\n }\n }, this);\n },\n\n /**\n * @private\n */\n _renderAxisLabel: function (layoutInfo, group, axis, timelineModel) {\n var labelModel = axis.getLabelModel();\n\n if (!labelModel.get('show')) {\n return;\n }\n\n var data = timelineModel.getData();\n var labels = axis.getViewLabels();\n each(labels, function (labelItem) {\n // The tickValue is dataIndex, see the costomized scale.\n var dataIndex = labelItem.tickValue;\n var itemModel = data.getItemModel(dataIndex);\n var normalLabelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n var tickCoord = axis.dataToCoord(labelItem.tickValue);\n var textEl = new graphic.Text({\n position: [tickCoord, 0],\n rotation: layoutInfo.labelRotation - layoutInfo.rotation,\n onclick: bind(this._changeTimeline, this, dataIndex),\n silent: false\n });\n graphic.setTextStyle(textEl.style, normalLabelModel, {\n text: labelItem.formattedLabel,\n textAlign: layoutInfo.labelAlign,\n textVerticalAlign: layoutInfo.labelBaseline\n });\n group.add(textEl);\n graphic.setHoverStyle(textEl, graphic.setTextStyle({}, hoverLabelModel));\n }, this);\n },\n\n /**\n * @private\n */\n _renderControl: function (layoutInfo, group, axis, timelineModel) {\n var controlSize = layoutInfo.controlSize;\n var rotation = layoutInfo.rotation;\n var itemStyle = timelineModel.getModel('controlStyle').getItemStyle();\n var hoverStyle = timelineModel.getModel('emphasis.controlStyle').getItemStyle();\n var rect = [0, -controlSize / 2, controlSize, controlSize];\n var playState = timelineModel.getPlayState();\n var inverse = timelineModel.get('inverse', true);\n makeBtn(layoutInfo.nextBtnPosition, 'controlStyle.nextIcon', bind(this._changeTimeline, this, inverse ? '-' : '+'));\n makeBtn(layoutInfo.prevBtnPosition, 'controlStyle.prevIcon', bind(this._changeTimeline, this, inverse ? '+' : '-'));\n makeBtn(layoutInfo.playPosition, 'controlStyle.' + (playState ? 'stopIcon' : 'playIcon'), bind(this._handlePlayClick, this, !playState), true);\n\n function makeBtn(position, iconPath, onclick, willRotate) {\n if (!position) {\n return;\n }\n\n var opt = {\n position: position,\n origin: [controlSize / 2, 0],\n rotation: willRotate ? -rotation : 0,\n rectHover: true,\n style: itemStyle,\n onclick: onclick\n };\n var btn = makeIcon(timelineModel, iconPath, rect, opt);\n group.add(btn);\n graphic.setHoverStyle(btn, hoverStyle);\n }\n },\n _renderCurrentPointer: function (layoutInfo, group, axis, timelineModel) {\n var data = timelineModel.getData();\n var currentIndex = timelineModel.getCurrentIndex();\n var pointerModel = data.getItemModel(currentIndex).getModel('checkpointStyle');\n var me = this;\n var callback = {\n onCreate: function (pointer) {\n pointer.draggable = true;\n pointer.drift = bind(me._handlePointerDrag, me);\n pointer.ondragend = bind(me._handlePointerDragend, me);\n pointerMoveTo(pointer, currentIndex, axis, timelineModel, true);\n },\n onUpdate: function (pointer) {\n pointerMoveTo(pointer, currentIndex, axis, timelineModel);\n }\n }; // Reuse when exists, for animation and drag.\n\n this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback);\n },\n _handlePlayClick: function (nextState) {\n this._clearTimer();\n\n this.api.dispatchAction({\n type: 'timelinePlayChange',\n playState: nextState,\n from: this.uid\n });\n },\n _handlePointerDrag: function (dx, dy, e) {\n this._clearTimer();\n\n this._pointerChangeTimeline([e.offsetX, e.offsetY]);\n },\n _handlePointerDragend: function (e) {\n this._pointerChangeTimeline([e.offsetX, e.offsetY], true);\n },\n _pointerChangeTimeline: function (mousePos, trigger) {\n var toCoord = this._toAxisCoord(mousePos)[0];\n\n var axis = this._axis;\n var axisExtent = numberUtil.asc(axis.getExtent().slice());\n toCoord > axisExtent[1] && (toCoord = axisExtent[1]);\n toCoord < axisExtent[0] && (toCoord = axisExtent[0]);\n this._currentPointer.position[0] = toCoord;\n\n this._currentPointer.dirty();\n\n var targetDataIndex = this._findNearestTick(toCoord);\n\n var timelineModel = this.model;\n\n if (trigger || targetDataIndex !== timelineModel.getCurrentIndex() && timelineModel.get('realtime')) {\n this._changeTimeline(targetDataIndex);\n }\n },\n _doPlayStop: function () {\n this._clearTimer();\n\n if (this.model.getPlayState()) {\n this._timer = setTimeout(bind(handleFrame, this), this.model.get('playInterval'));\n }\n\n function handleFrame() {\n // Do not cache\n var timelineModel = this.model;\n\n this._changeTimeline(timelineModel.getCurrentIndex() + (timelineModel.get('rewind', true) ? -1 : 1));\n }\n },\n _toAxisCoord: function (vertex) {\n var trans = this._mainGroup.getLocalTransform();\n\n return graphic.applyTransform(vertex, trans, true);\n },\n _findNearestTick: function (axisCoord) {\n var data = this.model.getData();\n var dist = Infinity;\n var targetDataIndex;\n var axis = this._axis;\n data.each(['value'], function (value, dataIndex) {\n var coord = axis.dataToCoord(value);\n var d = Math.abs(coord - axisCoord);\n\n if (d < dist) {\n dist = d;\n targetDataIndex = dataIndex;\n }\n });\n return targetDataIndex;\n },\n _clearTimer: function () {\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n },\n _changeTimeline: function (nextIndex) {\n var currentIndex = this.model.getCurrentIndex();\n\n if (nextIndex === '+') {\n nextIndex = currentIndex + 1;\n } else if (nextIndex === '-') {\n nextIndex = currentIndex - 1;\n }\n\n this.api.dispatchAction({\n type: 'timelineChange',\n currentIndex: nextIndex,\n from: this.uid\n });\n }\n});\n\nfunction getViewRect(model, api) {\n return layout.getLayoutRect(model.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n }, model.get('padding'));\n}\n\nfunction makeIcon(timelineModel, objPath, rect, opts) {\n var style = opts.style;\n var icon = graphic.createIcon(timelineModel.get(objPath), opts || {}, new BoundingRect(rect[0], rect[1], rect[2], rect[3])); // TODO createIcon won't use style in opt.\n\n if (style) {\n icon.setStyle(style);\n }\n\n return icon;\n}\n/**\n * Create symbol or update symbol\n * opt: basic position and event handlers\n */\n\n\nfunction giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) {\n var color = itemStyleModel.get('color');\n\n if (!symbol) {\n var symbolType = hostModel.get('symbol');\n symbol = createSymbol(symbolType, -1, -1, 2, 2, color);\n symbol.setStyle('strokeNoScale', true);\n group.add(symbol);\n callback && callback.onCreate(symbol);\n } else {\n symbol.setColor(color);\n group.add(symbol); // Group may be new, also need to add.\n\n callback && callback.onUpdate(symbol);\n } // Style\n\n\n var itemStyle = itemStyleModel.getItemStyle(['color', 'symbol', 'symbolSize']);\n symbol.setStyle(itemStyle); // Transform and events.\n\n opt = zrUtil.merge({\n rectHover: true,\n z2: 100\n }, opt, true);\n var symbolSize = hostModel.get('symbolSize');\n symbolSize = symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n symbolSize[0] /= 2;\n symbolSize[1] /= 2;\n opt.scale = symbolSize;\n var symbolOffset = hostModel.get('symbolOffset');\n\n if (symbolOffset) {\n var pos = opt.position = opt.position || [0, 0];\n pos[0] += numberUtil.parsePercent(symbolOffset[0], symbolSize[0]);\n pos[1] += numberUtil.parsePercent(symbolOffset[1], symbolSize[1]);\n }\n\n var symbolRotate = hostModel.get('symbolRotate');\n opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n symbol.attr(opt); // FIXME\n // (1) When symbol.style.strokeNoScale is true and updateTransform is not performed,\n // getBoundingRect will return wrong result.\n // (This is supposed to be resolved in zrender, but it is a little difficult to\n // leverage performance and auto updateTransform)\n // (2) All of ancesters of symbol do not scale, so we can just updateTransform symbol.\n\n symbol.updateTransform();\n return symbol;\n}\n\nfunction pointerMoveTo(pointer, dataIndex, axis, timelineModel, noAnimation) {\n if (pointer.dragging) {\n return;\n }\n\n var pointerModel = timelineModel.getModel('checkpointStyle');\n var toCoord = axis.dataToCoord(timelineModel.getData().get(['value'], dataIndex));\n\n if (noAnimation || !pointerModel.get('animation', true)) {\n pointer.attr({\n position: [toCoord, 0]\n });\n } else {\n pointer.stopAnimation(true);\n pointer.animateTo({\n position: [toCoord, 0]\n }, pointerModel.get('animationDuration', true), pointerModel.get('animationEasing', true));\n }\n}\n\nmodule.exports = _default;","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/default-article-4d311a36521066323a26d3b26c3afa42.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJKADAAQAAAABAAAAJAAAAAAqDuP8AAABNklEQVRYCWNgGAWjITAaAqMhMBoClIfA////44D4ORD7UW4aqglMqFyieUpAlRJAvBHoqKlAzEG0TgIKyXUQsrFZQM5poKN0kAXJZVPDQSC7QY4BOQrkOIoAtRwEcgQo2kDRB4pGYXJdRU0HwdwASuiXgI5yggmQQtPCQSD7pYB4N9BR7UDMMhgcBHIDyLMVQHwU6CglkAAxgFYhhGy3GZBzAegoc2RBXGx6OAhm938YAx9NDwedAjrAkJGREUQTBLR00D+g7R1AbA10zF2CLoEqICkHEGsoUN0zII4FOmQfCXrASmkRQpuAJuuR4xiQi6jpoB9A87KBDvEH4rcgw8kB1IqyK0DLI4EOAdEUAWqE0DSgC0yp4RiyfQIs5GKB+AUQU72BRrajRjWOhsBoCIyGwHANAQC+UFB7GH+xgwAAAABJRU5ErkJggg==\"","\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* A third-party license is embeded for some of the code in this file:\n* The method \"quantile\" was copied from \"d3.js\".\n* (See more details in the comment of the method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nvar RADIAN_EPSILON = 1e-4;\n\nfunction _trim(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n/**\n * Linear mapping a value from domain to range\n * @memberOf module:echarts/util/number\n * @param {(number|Array.)} val\n * @param {Array.} domain Domain extent domain[0] can be bigger than domain[1]\n * @param {Array.} range Range extent range[0] can be bigger than range[1]\n * @param {boolean} clamp\n * @return {(number|Array.}\n */\n\n\nfunction linearMap(val, domain, range, clamp) {\n var subDomain = domain[1] - domain[0];\n var subRange = range[1] - range[0];\n\n if (subDomain === 0) {\n return subRange === 0 ? range[0] : (range[0] + range[1]) / 2;\n } // Avoid accuracy problem in edge, such as\n // 146.39 - 62.83 === 83.55999999999999.\n // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError\n // It is a little verbose for efficiency considering this method\n // is a hotspot.\n\n\n if (clamp) {\n if (subDomain > 0) {\n if (val <= domain[0]) {\n return range[0];\n } else if (val >= domain[1]) {\n return range[1];\n }\n } else {\n if (val >= domain[0]) {\n return range[0];\n } else if (val <= domain[1]) {\n return range[1];\n }\n }\n } else {\n if (val === domain[0]) {\n return range[0];\n }\n\n if (val === domain[1]) {\n return range[1];\n }\n }\n\n return (val - domain[0]) / subDomain * subRange + range[0];\n}\n/**\n * Convert a percent string to absolute number.\n * Returns NaN if percent is not a valid string or number\n * @memberOf module:echarts/util/number\n * @param {string|number} percent\n * @param {number} all\n * @return {number}\n */\n\n\nfunction parsePercent(percent, all) {\n switch (percent) {\n case 'center':\n case 'middle':\n percent = '50%';\n break;\n\n case 'left':\n case 'top':\n percent = '0%';\n break;\n\n case 'right':\n case 'bottom':\n percent = '100%';\n break;\n }\n\n if (typeof percent === 'string') {\n if (_trim(percent).match(/%$/)) {\n return parseFloat(percent) / 100 * all;\n }\n\n return parseFloat(percent);\n }\n\n return percent == null ? NaN : +percent;\n}\n/**\n * (1) Fix rounding error of float numbers.\n * (2) Support return string to avoid scientific notation like '3.5e-7'.\n *\n * @param {number} x\n * @param {number} [precision]\n * @param {boolean} [returnStr]\n * @return {number|string}\n */\n\n\nfunction round(x, precision, returnStr) {\n if (precision == null) {\n precision = 10;\n } // Avoid range error\n\n\n precision = Math.min(Math.max(0, precision), 20);\n x = (+x).toFixed(precision);\n return returnStr ? x : +x;\n}\n/**\n * asc sort arr.\n * The input arr will be modified.\n *\n * @param {Array} arr\n * @return {Array} The input arr.\n */\n\n\nfunction asc(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n return arr;\n}\n/**\n * Get precision\n * @param {number} val\n */\n\n\nfunction getPrecision(val) {\n val = +val;\n\n if (isNaN(val)) {\n return 0;\n } // It is much faster than methods converting number to string as follows\n // var tmp = val.toString();\n // return tmp.length - 1 - tmp.indexOf('.');\n // especially when precision is low\n\n\n var e = 1;\n var count = 0;\n\n while (Math.round(val * e) / e !== val) {\n e *= 10;\n count++;\n }\n\n return count;\n}\n/**\n * @param {string|number} val\n * @return {number}\n */\n\n\nfunction getPrecisionSafe(val) {\n var str = val.toString(); // Consider scientific notation: '3.4e-12' '3.4e+12'\n\n var eIndex = str.indexOf('e');\n\n if (eIndex > 0) {\n var precision = +str.slice(eIndex + 1);\n return precision < 0 ? -precision : 0;\n } else {\n var dotIndex = str.indexOf('.');\n return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\n }\n}\n/**\n * Minimal dicernible data precisioin according to a single pixel.\n *\n * @param {Array.} dataExtent\n * @param {Array.} pixelExtent\n * @return {number} precision\n */\n\n\nfunction getPixelPrecision(dataExtent, pixelExtent) {\n var log = Math.log;\n var LN10 = Math.LN10;\n var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\n var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); // toFixed() digits argument must be between 0 and 20.\n\n var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\n return !isFinite(precision) ? 20 : precision;\n}\n/**\n * Get a data of given precision, assuring the sum of percentages\n * in valueList is 1.\n * The largest remainer method is used.\n * https://en.wikipedia.org/wiki/Largest_remainder_method\n *\n * @param {Array.} valueList a list of all data\n * @param {number} idx index of the data to be processed in valueList\n * @param {number} precision integer number showing digits of precision\n * @return {number} percent ranging from 0 to 100\n */\n\n\nfunction getPercentWithPrecision(valueList, idx, precision) {\n if (!valueList[idx]) {\n return 0;\n }\n\n var sum = zrUtil.reduce(valueList, function (acc, val) {\n return acc + (isNaN(val) ? 0 : val);\n }, 0);\n\n if (sum === 0) {\n return 0;\n }\n\n var digits = Math.pow(10, precision);\n var votesPerQuota = zrUtil.map(valueList, function (val) {\n return (isNaN(val) ? 0 : val) / sum * digits * 100;\n });\n var targetSeats = digits * 100;\n var seats = zrUtil.map(votesPerQuota, function (votes) {\n // Assign automatic seats.\n return Math.floor(votes);\n });\n var currentSum = zrUtil.reduce(seats, function (acc, val) {\n return acc + val;\n }, 0);\n var remainder = zrUtil.map(votesPerQuota, function (votes, idx) {\n return votes - seats[idx];\n }); // Has remainding votes.\n\n while (currentSum < targetSeats) {\n // Find next largest remainder.\n var max = Number.NEGATIVE_INFINITY;\n var maxId = null;\n\n for (var i = 0, len = remainder.length; i < len; ++i) {\n if (remainder[i] > max) {\n max = remainder[i];\n maxId = i;\n }\n } // Add a vote to max remainder.\n\n\n ++seats[maxId];\n remainder[maxId] = 0;\n ++currentSum;\n }\n\n return seats[idx] / digits;\n} // Number.MAX_SAFE_INTEGER, ie do not support.\n\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * To 0 - 2 * PI, considering negative radian.\n * @param {number} radian\n * @return {number}\n */\n\nfunction remRadian(radian) {\n var pi2 = Math.PI * 2;\n return (radian % pi2 + pi2) % pi2;\n}\n/**\n * @param {type} radian\n * @return {boolean}\n */\n\n\nfunction isRadianAroundZero(val) {\n return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\n}\n/* eslint-disable */\n\n\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d\\d)(?::(\\d\\d)(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/; // jshint ignore:line\n\n/* eslint-enable */\n\n/**\n * @param {string|Date|number} value These values can be accepted:\n * + An instance of Date, represent a time in its own time zone.\n * + Or string in a subset of ISO 8601, only including:\n * + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',\n * + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',\n * + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',\n * all of which will be treated as local time if time zone is not specified\n * (see ).\n * + Or other string format, including (all of which will be treated as loacal time):\n * '2012', '2012-3-1', '2012/3/1', '2012/03/01',\n * '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'\n * + a timestamp, which represent a time in UTC.\n * @return {Date} date\n */\n\nfunction parseDate(value) {\n if (value instanceof Date) {\n return value;\n } else if (typeof value === 'string') {\n // Different browsers parse date in different way, so we parse it manually.\n // Some other issues:\n // new Date('1970-01-01') is UTC,\n // new Date('1970/01/01') and new Date('1970-1-01') is local.\n // See issue #3623\n var match = TIME_REG.exec(value);\n\n if (!match) {\n // return Invalid Date.\n return new Date(NaN);\n } // Use local time when no timezone offset specifed.\n\n\n if (!match[8]) {\n // match[n] can only be string or undefined.\n // But take care of '12' + 1 => '121'.\n return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\n } // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time,\n // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment).\n // For example, system timezone is set as \"Time Zone: America/Toronto\",\n // then these code will get different result:\n // `new Date(1478411999999).getTimezoneOffset(); // get 240`\n // `new Date(1478412000000).getTimezoneOffset(); // get 300`\n // So we should not use `new Date`, but use `Date.UTC`.\n else {\n var hour = +match[4] || 0;\n\n if (match[8].toUpperCase() !== 'Z') {\n hour -= match[8].slice(0, 3);\n }\n\n return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\n }\n } else if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(Math.round(value));\n}\n/**\n * Quantity of a number. e.g. 0.1, 1, 10, 100\n *\n * @param {number} val\n * @return {number}\n */\n\n\nfunction quantity(val) {\n return Math.pow(10, quantityExponent(val));\n}\n/**\n * Exponent of the quantity of a number\n * e.g., 1234 equals to 1.234*10^3, so quantityExponent(1234) is 3\n *\n * @param {number} val non-negative value\n * @return {number}\n */\n\n\nfunction quantityExponent(val) {\n if (val === 0) {\n return 0;\n }\n\n var exp = Math.floor(Math.log(val) / Math.LN10);\n /**\n * exp is expected to be the rounded-down result of the base-10 log of val.\n * But due to the precision loss with Math.log(val), we need to restore it\n * using 10^exp to make sure we can get val back from exp. #11249\n */\n\n if (val / Math.pow(10, exp) >= 10) {\n exp++;\n }\n\n return exp;\n}\n/**\n * find a “nice” number approximately equal to x. Round the number if round = true,\n * take ceiling if round = false. The primary observation is that the “nicest”\n * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers.\n *\n * See \"Nice Numbers for Graph Labels\" of Graphic Gems.\n *\n * @param {number} val Non-negative value.\n * @param {boolean} round\n * @return {number}\n */\n\n\nfunction nice(val, round) {\n var exponent = quantityExponent(val);\n var exp10 = Math.pow(10, exponent);\n var f = val / exp10; // 1 <= f < 10\n\n var nf;\n\n if (round) {\n if (f < 1.5) {\n nf = 1;\n } else if (f < 2.5) {\n nf = 2;\n } else if (f < 4) {\n nf = 3;\n } else if (f < 7) {\n nf = 5;\n } else {\n nf = 10;\n }\n } else {\n if (f < 1) {\n nf = 1;\n } else if (f < 2) {\n nf = 2;\n } else if (f < 3) {\n nf = 3;\n } else if (f < 5) {\n nf = 5;\n } else {\n nf = 10;\n }\n }\n\n val = nf * exp10; // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754).\n // 20 is the uppper bound of toFixed.\n\n return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\n}\n/**\n * This code was copied from \"d3.js\"\n * .\n * See the license statement at the head of this file.\n * @param {Array.} ascArr\n */\n\n\nfunction quantile(ascArr, p) {\n var H = (ascArr.length - 1) * p + 1;\n var h = Math.floor(H);\n var v = +ascArr[h - 1];\n var e = H - h;\n return e ? v + e * (ascArr[h] - v) : v;\n}\n/**\n * Order intervals asc, and split them when overlap.\n * expect(numberUtil.reformIntervals([\n * {interval: [18, 62], close: [1, 1]},\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [1, 1]},\n * {interval: [62, 150], close: [1, 1]},\n * {interval: [106, 150], close: [1, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ])).toEqual([\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [0, 1]},\n * {interval: [18, 62], close: [0, 1]},\n * {interval: [62, 150], close: [0, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ]);\n * @param {Array.} list, where `close` mean open or close\n * of the interval, and Infinity can be used.\n * @return {Array.} The origin list, which has been reformed.\n */\n\n\nfunction reformIntervals(list) {\n list.sort(function (a, b) {\n return littleThan(a, b, 0) ? -1 : 1;\n });\n var curr = -Infinity;\n var currClose = 1;\n\n for (var i = 0; i < list.length;) {\n var interval = list[i].interval;\n var close = list[i].close;\n\n for (var lg = 0; lg < 2; lg++) {\n if (interval[lg] <= curr) {\n interval[lg] = curr;\n close[lg] = !lg ? 1 - currClose : 1;\n }\n\n curr = interval[lg];\n currClose = close[lg];\n }\n\n if (interval[0] === interval[1] && close[0] * close[1] !== 1) {\n list.splice(i, 1);\n } else {\n i++;\n }\n }\n\n return list;\n\n function littleThan(a, b, lg) {\n return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1));\n }\n}\n/**\n * parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n * ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n * subtraction forces infinities to NaN\n *\n * @param {*} v\n * @return {boolean}\n */\n\n\nfunction isNumeric(v) {\n return v - parseFloat(v) >= 0;\n}\n\nexports.linearMap = linearMap;\nexports.parsePercent = parsePercent;\nexports.round = round;\nexports.asc = asc;\nexports.getPrecision = getPrecision;\nexports.getPrecisionSafe = getPrecisionSafe;\nexports.getPixelPrecision = getPixelPrecision;\nexports.getPercentWithPrecision = getPercentWithPrecision;\nexports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nexports.remRadian = remRadian;\nexports.isRadianAroundZero = isRadianAroundZero;\nexports.parseDate = parseDate;\nexports.quantity = quantity;\nexports.quantityExponent = quantityExponent;\nexports.nice = nice;\nexports.quantile = quantile;\nexports.reformIntervals = reformIntervals;\nexports.isNumeric = isNumeric;","\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 _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\nvar _format = require(\"../../util/format\");\n\nvar getTooltipMarker = _format.getTooltipMarker;\nvar formatTpl = _format.formatTpl;\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 DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g; // PENDING A little ugly\n\nvar _default = {\n /**\n * Get params for formatter\n * @param {number} dataIndex\n * @param {string} [dataType]\n * @return {Object}\n */\n getDataParams: function (dataIndex, dataType) {\n var data = this.getData(dataType);\n var rawValue = this.getRawValue(dataIndex, dataType);\n var rawDataIndex = data.getRawIndex(dataIndex);\n var name = data.getName(dataIndex);\n var itemOpt = data.getRawDataItem(dataIndex);\n var color = data.getItemVisual(dataIndex, 'color');\n var borderColor = data.getItemVisual(dataIndex, 'borderColor');\n var tooltipModel = this.ecModel.getComponent('tooltip');\n var renderModeOption = tooltipModel && tooltipModel.get('renderMode');\n var renderMode = getTooltipRenderMode(renderModeOption);\n var mainType = this.mainType;\n var isSeries = mainType === 'series';\n var userOutput = data.userOutput;\n return {\n componentType: mainType,\n componentSubType: this.subType,\n componentIndex: this.componentIndex,\n seriesType: isSeries ? this.subType : null,\n seriesIndex: this.seriesIndex,\n seriesId: isSeries ? this.id : null,\n seriesName: isSeries ? this.name : null,\n name: name,\n dataIndex: rawDataIndex,\n data: itemOpt,\n dataType: dataType,\n value: rawValue,\n color: color,\n borderColor: borderColor,\n dimensionNames: userOutput ? userOutput.dimensionNames : null,\n encode: userOutput ? userOutput.encode : null,\n marker: getTooltipMarker({\n color: color,\n renderMode: renderMode\n }),\n // Param name list for mapping `a`, `b`, `c`, `d`, `e`\n $vars: ['seriesName', 'name', 'value']\n };\n },\n\n /**\n * Format label\n * @param {number} dataIndex\n * @param {string} [status='normal'] 'normal' or 'emphasis'\n * @param {string} [dataType]\n * @param {number} [dimIndex] Only used in some chart that\n * use formatter in different dimensions, like radar.\n * @param {string} [labelProp='label']\n * @return {string} If not formatter, return null/undefined\n */\n getFormattedLabel: function (dataIndex, status, dataType, dimIndex, labelProp) {\n status = status || 'normal';\n var data = this.getData(dataType);\n var itemModel = data.getItemModel(dataIndex);\n var params = this.getDataParams(dataIndex, dataType);\n\n if (dimIndex != null && params.value instanceof Array) {\n params.value = params.value[dimIndex];\n }\n\n var formatter = itemModel.get(status === 'normal' ? [labelProp || 'label', 'formatter'] : [status, labelProp || 'label', 'formatter']);\n\n if (typeof formatter === 'function') {\n params.status = status;\n params.dimensionIndex = dimIndex;\n return formatter(params);\n } else if (typeof formatter === 'string') {\n var str = formatTpl(formatter, params); // Support 'aaa{@[3]}bbb{@product}ccc'.\n // Do not support '}' in dim name util have to.\n\n return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\n var len = dim.length;\n\n if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\n dim = +dim.slice(1, len - 1); // Also: '[]' => 0\n }\n\n return retrieveRawValue(data, dataIndex, dim);\n });\n }\n },\n\n /**\n * Get raw value in option\n * @param {number} idx\n * @param {string} [dataType]\n * @return {Array|number|string}\n */\n getRawValue: function (idx, dataType) {\n return retrieveRawValue(this.getData(dataType), idx);\n },\n\n /**\n * Should be implemented.\n * @param {number} dataIndex\n * @param {boolean} [multipleSeries=false]\n * @param {number} [dataType]\n * @return {string} tooltip string\n */\n formatTooltip: function () {// Empty 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 makeStyleMapper = require(\"./makeStyleMapper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getLineStyle = makeStyleMapper([['lineWidth', 'width'], ['stroke', 'color'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n getLineStyle: function (excludes) {\n var style = getLineStyle(this, excludes); // Always set lineDash whether dashed, otherwise we can not\n // erase the previous style when assigning to el.style.\n\n style.lineDash = this.getLineDash(style.lineWidth);\n return style;\n },\n getLineDash: function (lineWidth) {\n if (lineWidth == null) {\n lineWidth = 1;\n }\n\n var lineType = this.get('type');\n var dotSize = Math.max(lineWidth, 2);\n var dashSize = lineWidth * 4;\n return lineType === 'solid' || lineType == null ? // Use `false` but not `null` for the solid line here, because `null` might be\n // ignored when assigning to `el.style`. e.g., when setting `lineStyle.type` as\n // `'dashed'` and `emphasis.lineStyle.type` as `'solid'` in graph series, the\n // `lineDash` gotten form the latter one is not able to erase that from the former\n // one if using `null` here according to the emhpsis strategy in `util/graphic.js`.\n false : lineType === 'dashed' ? [dashSize, dashSize] : [dotSize, dotSize];\n }\n};\nmodule.exports = _default;","var _util = require(\"../core/util\");\n\nvar inherits = _util.inherits;\n\nvar Displayble = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Displayable for incremental rendering. It will be rendered in a separate layer\n * IncrementalDisplay have two main methods. `clearDisplayables` and `addDisplayables`\n * addDisplayables will render the added displayables incremetally.\n *\n * It use a not clearFlag to tell the painter don't clear the layer if it's the first element.\n */\n// TODO Style override ?\nfunction IncrementalDisplayble(opts) {\n Displayble.call(this, opts);\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.notClear = true;\n}\n\nIncrementalDisplayble.prototype.incremental = true;\n\nIncrementalDisplayble.prototype.clearDisplaybles = function () {\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.dirty();\n this.notClear = false;\n};\n\nIncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\n if (notPersistent) {\n this._temporaryDisplayables.push(displayable);\n } else {\n this._displayables.push(displayable);\n }\n\n this.dirty();\n};\n\nIncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\n notPersistent = notPersistent || false;\n\n for (var i = 0; i < displayables.length; i++) {\n this.addDisplayable(displayables[i], notPersistent);\n }\n};\n\nIncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\n for (var i = this._cursor; i < this._displayables.length; i++) {\n cb && cb(this._displayables[i]);\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n cb && cb(this._temporaryDisplayables[i]);\n }\n};\n\nIncrementalDisplayble.prototype.update = function () {\n this.updateTransform();\n\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n};\n\nIncrementalDisplayble.prototype.brush = function (ctx, prevEl) {\n // Render persistant displayables.\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === this._cursor ? null : this._displayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._cursor = i; // Render temporary displayables.\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === 0 ? null : this._temporaryDisplayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._temporaryDisplayables = [];\n this.notClear = true;\n};\n\nvar m = [];\n\nIncrementalDisplayble.prototype.getBoundingRect = function () {\n if (!this._rect) {\n var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n var childRect = displayable.getBoundingRect().clone();\n\n if (displayable.needLocalTransform()) {\n childRect.applyTransform(displayable.getLocalTransform(m));\n }\n\n rect.union(childRect);\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n};\n\nIncrementalDisplayble.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n\n if (rect.contain(localPos[0], localPos[1])) {\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n\n if (displayable.contain(x, y)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\ninherits(IncrementalDisplayble, Displayble);\nvar _default = IncrementalDisplayble;\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*/\necharts.registerAction({\n type: 'timelineChange',\n event: 'timelineChanged',\n update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n var timelineModel = ecModel.getComponent('timeline');\n\n if (timelineModel && payload.currentIndex != null) {\n timelineModel.setCurrentIndex(payload.currentIndex);\n\n if (!timelineModel.get('loop', true) && timelineModel.isIndexMax()) {\n timelineModel.setPlayState(false);\n }\n } // Set normalized currentIndex to payload.\n\n\n ecModel.resetOption('timeline');\n return zrUtil.defaults({\n currentIndex: timelineModel.option.currentIndex\n }, payload);\n});\necharts.registerAction({\n type: 'timelinePlayChange',\n event: 'timelinePlayChanged',\n update: 'update'\n}, function (payload, ecModel) {\n var timelineModel = ecModel.getComponent('timeline');\n\n if (timelineModel && payload.playState != null) {\n timelineModel.setPlayState(payload.playState);\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 SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.heatmap',\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n generateCoord: 'value'\n });\n },\n preventIncremental: function () {\n var coordSysCreator = CoordinateSystem.get(this.get('coordinateSystem'));\n\n if (coordSysCreator && coordSysCreator.dimensions) {\n return coordSysCreator.dimensions[0] === 'lng' && coordSysCreator.dimensions[1] === 'lat';\n }\n },\n defaultOption: {\n // Cartesian2D or geo\n coordinateSystem: 'cartesian2d',\n zlevel: 0,\n z: 2,\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // Geo coordinate system\n geoIndex: 0,\n blurSize: 30,\n pointSize: 20,\n maxOpacity: 1,\n minOpacity: 0\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar helper = require(\"./helper\");\n\nvar AxisProxy = require(\"./AxisProxy\");\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 eachAxisDim = helper.eachAxisDim;\nvar DataZoomModel = echarts.extendComponentModel({\n type: 'dataZoom',\n dependencies: ['xAxis', 'yAxis', 'zAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series'],\n\n /**\n * @protected\n */\n defaultOption: {\n zlevel: 0,\n z: 4,\n // Higher than normal component (z: 2).\n orient: null,\n // Default auto by axisIndex. Possible value: 'horizontal', 'vertical'.\n xAxisIndex: null,\n // Default the first horizontal category axis.\n yAxisIndex: null,\n // Default the first vertical category axis.\n filterMode: 'filter',\n // Possible values: 'filter' or 'empty' or 'weakFilter'.\n // 'filter': data items which are out of window will be removed. This option is\n // applicable when filtering outliers. For each data item, it will be\n // filtered if one of the relevant dimensions is out of the window.\n // 'weakFilter': data items which are out of window will be removed. This option\n // is applicable when filtering outliers. For each data item, it will be\n // filtered only if all of the relevant dimensions are out of the same\n // side of the window.\n // 'empty': data items which are out of window will be set to empty.\n // This option is applicable when user should not neglect\n // that there are some data items out of window.\n // 'none': Do not filter.\n // Taking line chart as an example, line will be broken in\n // the filtered points when filterModel is set to 'empty', but\n // be connected when set to 'filter'.\n throttle: null,\n // Dispatch action by the fixed rate, avoid frequency.\n // default 100. Do not throttle when use null/undefined.\n // If animation === true and animationDurationUpdate > 0,\n // default value is 100, otherwise 20.\n start: 0,\n // Start percent. 0 ~ 100\n end: 100,\n // End percent. 0 ~ 100\n startValue: null,\n // Start value. If startValue specified, start is ignored.\n endValue: null,\n // End value. If endValue specified, end is ignored.\n minSpan: null,\n // 0 ~ 100\n maxSpan: null,\n // 0 ~ 100\n minValueSpan: null,\n // The range of dataZoom can not be smaller than that.\n maxValueSpan: null,\n // The range of dataZoom can not be larger than that.\n rangeMode: null // Array, can be 'value' or 'percent'.\n\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel) {\n /**\n * key like x_0, y_1\n * @private\n * @type {Object}\n */\n this._dataIntervalByAxis = {};\n /**\n * @private\n */\n\n this._dataInfo = {};\n /**\n * key like x_0, y_1\n * @private\n */\n\n this._axisProxies = {};\n /**\n * @readOnly\n */\n\n this.textStyleModel;\n /**\n * @private\n */\n\n this._autoThrottle = true;\n /**\n * It is `[rangeModeForMin, rangeModeForMax]`.\n * The optional values for `rangeMode`:\n * + `'value'` mode: the axis extent will always be determined by\n * `dataZoom.startValue` and `dataZoom.endValue`, despite\n * how data like and how `axis.min` and `axis.max` are.\n * + `'percent'` mode: `100` represents 100% of the `[dMin, dMax]`,\n * where `dMin` is `axis.min` if `axis.min` specified, otherwise `data.extent[0]`,\n * and `dMax` is `axis.max` if `axis.max` specified, otherwise `data.extent[1]`.\n * Axis extent will be determined by the result of the percent of `[dMin, dMax]`.\n *\n * For example, when users are using dynamic data (update data periodically via `setOption`),\n * if in `'value`' mode, the window will be kept in a fixed value range despite how\n * data are appended, while if in `'percent'` mode, whe window range will be changed alone with\n * the appended data (suppose `axis.min` and `axis.max` are not specified).\n *\n * @private\n */\n\n this._rangePropMode = ['percent', 'percent'];\n var inputRawOption = retrieveRawOption(option);\n /**\n * Suppose a \"main process\" start at the point that model prepared (that is,\n * model initialized or merged or method called in `action`).\n * We should keep the `main process` idempotent, that is, given a set of values\n * on `option`, we get the same result.\n *\n * But sometimes, values on `option` will be updated for providing users\n * a \"final calculated value\" (`dataZoomProcessor` will do that). Those value\n * should not be the base/input of the `main process`.\n *\n * So in that case we should save and keep the input of the `main process`\n * separately, called `settledOption`.\n *\n * For example, consider the case:\n * (Step_1) brush zoom the grid by `toolbox.dataZoom`,\n * where the original input `option.startValue`, `option.endValue` are earsed by\n * calculated value.\n * (Step)2) click the legend to hide and show a series,\n * where the new range is calculated by the earsed `startValue` and `endValue`,\n * which brings incorrect result.\n *\n * @readOnly\n */\n\n this.settledOption = inputRawOption;\n this.mergeDefaultAndTheme(option, ecModel);\n this.doInit(inputRawOption);\n },\n\n /**\n * @override\n */\n mergeOption: function (newOption) {\n var inputRawOption = retrieveRawOption(newOption); //FIX #2591\n\n zrUtil.merge(this.option, newOption, true);\n zrUtil.merge(this.settledOption, inputRawOption, true);\n this.doInit(inputRawOption);\n },\n\n /**\n * @protected\n */\n doInit: function (inputRawOption) {\n var thisOption = this.option; // Disable realtime view update if canvas is not supported.\n\n if (!env.canvasSupported) {\n thisOption.realtime = false;\n }\n\n this._setDefaultThrottle(inputRawOption);\n\n updateRangeUse(this, inputRawOption);\n var settledOption = this.settledOption;\n each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n // start/end has higher priority over startValue/endValue if they\n // both set, but we should make chart.setOption({endValue: 1000})\n // effective, rather than chart.setOption({endValue: 1000, end: null}).\n if (this._rangePropMode[index] === 'value') {\n thisOption[names[0]] = settledOption[names[0]] = null;\n } // Otherwise do nothing and use the merge result.\n\n }, this);\n this.textStyleModel = this.getModel('textStyle');\n\n this._resetTarget();\n\n this._giveAxisProxies();\n },\n\n /**\n * @private\n */\n _giveAxisProxies: function () {\n var axisProxies = this._axisProxies;\n this.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel, ecModel) {\n var axisModel = this.dependentModels[dimNames.axis][axisIndex]; // If exists, share axisProxy with other dataZoomModels.\n\n var axisProxy = axisModel.__dzAxisProxy || ( // Use the first dataZoomModel as the main model of axisProxy.\n axisModel.__dzAxisProxy = new AxisProxy(dimNames.name, axisIndex, this, ecModel)); // FIXME\n // dispose __dzAxisProxy\n\n axisProxies[dimNames.name + '_' + axisIndex] = axisProxy;\n }, this);\n },\n\n /**\n * @private\n */\n _resetTarget: function () {\n var thisOption = this.option;\n\n var autoMode = this._judgeAutoMode();\n\n eachAxisDim(function (dimNames) {\n var axisIndexName = dimNames.axisIndex;\n thisOption[axisIndexName] = modelUtil.normalizeToArray(thisOption[axisIndexName]);\n }, this);\n\n if (autoMode === 'axisIndex') {\n this._autoSetAxisIndex();\n } else if (autoMode === 'orient') {\n this._autoSetOrient();\n }\n },\n\n /**\n * @private\n */\n _judgeAutoMode: function () {\n // Auto set only works for setOption at the first time.\n // The following is user's reponsibility. So using merged\n // option is OK.\n var thisOption = this.option;\n var hasIndexSpecified = false;\n eachAxisDim(function (dimNames) {\n // When user set axisIndex as a empty array, we think that user specify axisIndex\n // but do not want use auto mode. Because empty array may be encountered when\n // some error occured.\n if (thisOption[dimNames.axisIndex] != null) {\n hasIndexSpecified = true;\n }\n }, this);\n var orient = thisOption.orient;\n\n if (orient == null && hasIndexSpecified) {\n return 'orient';\n } else if (!hasIndexSpecified) {\n if (orient == null) {\n thisOption.orient = 'horizontal';\n }\n\n return 'axisIndex';\n }\n },\n\n /**\n * @private\n */\n _autoSetAxisIndex: function () {\n var autoAxisIndex = true;\n var orient = this.get('orient', true);\n var thisOption = this.option;\n var dependentModels = this.dependentModels;\n\n if (autoAxisIndex) {\n // Find axis that parallel to dataZoom as default.\n var dimName = orient === 'vertical' ? 'y' : 'x';\n\n if (dependentModels[dimName + 'Axis'].length) {\n thisOption[dimName + 'AxisIndex'] = [0];\n autoAxisIndex = false;\n } else {\n each(dependentModels.singleAxis, function (singleAxisModel) {\n if (autoAxisIndex && singleAxisModel.get('orient', true) === orient) {\n thisOption.singleAxisIndex = [singleAxisModel.componentIndex];\n autoAxisIndex = false;\n }\n });\n }\n }\n\n if (autoAxisIndex) {\n // Find the first category axis as default. (consider polar)\n eachAxisDim(function (dimNames) {\n if (!autoAxisIndex) {\n return;\n }\n\n var axisIndices = [];\n var axisModels = this.dependentModels[dimNames.axis];\n\n if (axisModels.length && !axisIndices.length) {\n for (var i = 0, len = axisModels.length; i < len; i++) {\n if (axisModels[i].get('type') === 'category') {\n axisIndices.push(i);\n }\n }\n }\n\n thisOption[dimNames.axisIndex] = axisIndices;\n\n if (axisIndices.length) {\n autoAxisIndex = false;\n }\n }, this);\n }\n\n if (autoAxisIndex) {\n // FIXME\n // 这里是兼容ec2的写法(没指定xAxisIndex和yAxisIndex时把scatter和双数值轴折柱纳入dataZoom控制),\n // 但是实际是否需要Grid.js#getScaleByOption来判断(考虑time,log等axis type)?\n // If both dataZoom.xAxisIndex and dataZoom.yAxisIndex is not specified,\n // dataZoom component auto adopts series that reference to\n // both xAxis and yAxis which type is 'value'.\n this.ecModel.eachSeries(function (seriesModel) {\n if (this._isSeriesHasAllAxesTypeOf(seriesModel, 'value')) {\n eachAxisDim(function (dimNames) {\n var axisIndices = thisOption[dimNames.axisIndex];\n var axisIndex = seriesModel.get(dimNames.axisIndex);\n var axisId = seriesModel.get(dimNames.axisId);\n var axisModel = seriesModel.ecModel.queryComponents({\n mainType: dimNames.axis,\n index: axisIndex,\n id: axisId\n })[0];\n axisIndex = axisModel.componentIndex;\n\n if (zrUtil.indexOf(axisIndices, axisIndex) < 0) {\n axisIndices.push(axisIndex);\n }\n });\n }\n }, this);\n }\n },\n\n /**\n * @private\n */\n _autoSetOrient: function () {\n var dim; // Find the first axis\n\n this.eachTargetAxis(function (dimNames) {\n !dim && (dim = dimNames.name);\n }, this);\n this.option.orient = dim === 'y' ? 'vertical' : 'horizontal';\n },\n\n /**\n * @private\n */\n _isSeriesHasAllAxesTypeOf: function (seriesModel, axisType) {\n // FIXME\n // 需要series的xAxisIndex和yAxisIndex都首先自动设置上。\n // 例如series.type === scatter时。\n var is = true;\n eachAxisDim(function (dimNames) {\n var seriesAxisIndex = seriesModel.get(dimNames.axisIndex);\n var axisModel = this.dependentModels[dimNames.axis][seriesAxisIndex];\n\n if (!axisModel || axisModel.get('type') !== axisType) {\n is = false;\n }\n }, this);\n return is;\n },\n\n /**\n * @private\n */\n _setDefaultThrottle: function (inputRawOption) {\n // When first time user set throttle, auto throttle ends.\n if (inputRawOption.hasOwnProperty('throttle')) {\n this._autoThrottle = false;\n }\n\n if (this._autoThrottle) {\n var globalOption = this.ecModel.option;\n this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20;\n }\n },\n\n /**\n * @public\n */\n getFirstTargetAxisModel: function () {\n var firstAxisModel;\n eachAxisDim(function (dimNames) {\n if (firstAxisModel == null) {\n var indices = this.get(dimNames.axisIndex);\n\n if (indices.length) {\n firstAxisModel = this.dependentModels[dimNames.axis][indices[0]];\n }\n }\n }, this);\n return firstAxisModel;\n },\n\n /**\n * @public\n * @param {Function} callback param: axisModel, dimNames, axisIndex, dataZoomModel, ecModel\n */\n eachTargetAxis: function (callback, context) {\n var ecModel = this.ecModel;\n eachAxisDim(function (dimNames) {\n each(this.get(dimNames.axisIndex), function (axisIndex) {\n callback.call(context, dimNames, axisIndex, this, ecModel);\n }, this);\n }, this);\n },\n\n /**\n * @param {string} dimName\n * @param {number} axisIndex\n * @return {module:echarts/component/dataZoom/AxisProxy} If not found, return null/undefined.\n */\n getAxisProxy: function (dimName, axisIndex) {\n return this._axisProxies[dimName + '_' + axisIndex];\n },\n\n /**\n * @param {string} dimName\n * @param {number} axisIndex\n * @return {module:echarts/model/Model} If not found, return null/undefined.\n */\n getAxisModel: function (dimName, axisIndex) {\n var axisProxy = this.getAxisProxy(dimName, axisIndex);\n return axisProxy && axisProxy.getAxisModel();\n },\n\n /**\n * If not specified, set to undefined.\n *\n * @public\n * @param {Object} opt\n * @param {number} [opt.start]\n * @param {number} [opt.end]\n * @param {number} [opt.startValue]\n * @param {number} [opt.endValue]\n */\n setRawRange: function (opt) {\n var thisOption = this.option;\n var settledOption = this.settledOption;\n each([['start', 'startValue'], ['end', 'endValue']], function (names) {\n // Consider the pair :\n // If one has value and the other one is `null/undefined`, we both set them\n // to `settledOption`. This strategy enables the feature to clear the original\n // value in `settledOption` to `null/undefined`.\n // But if both of them are `null/undefined`, we do not set them to `settledOption`\n // and keep `settledOption` with the original value. This strategy enables users to\n // only set but not set when calling\n // `dispatchAction`.\n // The pair is treated in the same way.\n if (opt[names[0]] != null || opt[names[1]] != null) {\n thisOption[names[0]] = settledOption[names[0]] = opt[names[0]];\n thisOption[names[1]] = settledOption[names[1]] = opt[names[1]];\n }\n }, this);\n updateRangeUse(this, opt);\n },\n\n /**\n * @public\n * @param {Object} opt\n * @param {number} [opt.start]\n * @param {number} [opt.end]\n * @param {number} [opt.startValue]\n * @param {number} [opt.endValue]\n */\n setCalculatedRange: function (opt) {\n var option = this.option;\n each(['start', 'startValue', 'end', 'endValue'], function (name) {\n option[name] = opt[name];\n });\n },\n\n /**\n * @public\n * @return {Array.} [startPercent, endPercent]\n */\n getPercentRange: function () {\n var axisProxy = this.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n return axisProxy.getDataPercentWindow();\n }\n },\n\n /**\n * @public\n * For example, chart.getModel().getComponent('dataZoom').getValueRange('y', 0);\n *\n * @param {string} [axisDimName]\n * @param {number} [axisIndex]\n * @return {Array.} [startValue, endValue] value can only be '-' or finite number.\n */\n getValueRange: function (axisDimName, axisIndex) {\n if (axisDimName == null && axisIndex == null) {\n var axisProxy = this.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n return axisProxy.getDataValueWindow();\n }\n } else {\n return this.getAxisProxy(axisDimName, axisIndex).getDataValueWindow();\n }\n },\n\n /**\n * @public\n * @param {module:echarts/model/Model} [axisModel] If axisModel given, find axisProxy\n * corresponding to the axisModel\n * @return {module:echarts/component/dataZoom/AxisProxy}\n */\n findRepresentativeAxisProxy: function (axisModel) {\n if (axisModel) {\n return axisModel.__dzAxisProxy;\n } // Find the first hosted axisProxy\n\n\n var axisProxies = this._axisProxies;\n\n for (var key in axisProxies) {\n if (axisProxies.hasOwnProperty(key) && axisProxies[key].hostedBy(this)) {\n return axisProxies[key];\n }\n } // If no hosted axis find not hosted axisProxy.\n // Consider this case: dataZoomModel1 and dataZoomModel2 control the same axis,\n // and the option.start or option.end settings are different. The percentRange\n // should follow axisProxy.\n // (We encounter this problem in toolbox data zoom.)\n\n\n for (var key in axisProxies) {\n if (axisProxies.hasOwnProperty(key) && !axisProxies[key].hostedBy(this)) {\n return axisProxies[key];\n }\n }\n },\n\n /**\n * @return {Array.}\n */\n getRangePropMode: function () {\n return this._rangePropMode.slice();\n }\n});\n/**\n * Retrieve the those raw params from option, which will be cached separately.\n * becasue they will be overwritten by normalized/calculated values in the main\n * process.\n */\n\nfunction retrieveRawOption(option) {\n var ret = {};\n each(['start', 'end', 'startValue', 'endValue', 'throttle'], function (name) {\n option.hasOwnProperty(name) && (ret[name] = option[name]);\n });\n return ret;\n}\n\nfunction updateRangeUse(dataZoomModel, inputRawOption) {\n var rangePropMode = dataZoomModel._rangePropMode;\n var rangeModeInOption = dataZoomModel.get('rangeMode');\n each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n var percentSpecified = inputRawOption[names[0]] != null;\n var valueSpecified = inputRawOption[names[1]] != null;\n\n if (percentSpecified && !valueSpecified) {\n rangePropMode[index] = 'percent';\n } else if (!percentSpecified && valueSpecified) {\n rangePropMode[index] = 'value';\n } else if (rangeModeInOption) {\n rangePropMode[index] = rangeModeInOption[index];\n } else if (percentSpecified) {\n // percentSpecified && valueSpecified\n rangePropMode[index] = 'percent';\n } // else remain its original setting.\n\n });\n}\n\nvar _default = DataZoomModel;\nmodule.exports = _default;","var _core = require(\"./core\");\n\nvar createElement = _core.createElement;\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar matrix = require(\"../core/matrix\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"../graphic/helper/text\");\n\nvar Text = require(\"../graphic/Text\");\n\n// TODO\n// 1. shadow\n// 2. Image: sx, sy, sw, sh\nvar CMD = PathProxy.CMD;\nvar arrayJoin = Array.prototype.join;\nvar NONE = 'none';\nvar mathRound = Math.round;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\nvar PI2 = Math.PI * 2;\nvar degree = 180 / PI;\nvar EPSILON = 1e-4;\n\nfunction round4(val) {\n return mathRound(val * 1e4) / 1e4;\n}\n\nfunction isAroundZero(val) {\n return val < EPSILON && val > -EPSILON;\n}\n\nfunction pathHasFill(style, isText) {\n var fill = isText ? style.textFill : style.fill;\n return fill != null && fill !== NONE;\n}\n\nfunction pathHasStroke(style, isText) {\n var stroke = isText ? style.textStroke : style.stroke;\n return stroke != null && stroke !== NONE;\n}\n\nfunction setTransform(svgEl, m) {\n if (m) {\n attr(svgEl, 'transform', 'matrix(' + arrayJoin.call(m, ',') + ')');\n }\n}\n\nfunction attr(el, key, val) {\n if (!val || val.type !== 'linear' && val.type !== 'radial') {\n // Don't set attribute for gradient, since it need new dom nodes\n el.setAttribute(key, val);\n }\n}\n\nfunction attrXLink(el, key, val) {\n el.setAttributeNS('http://www.w3.org/1999/xlink', key, val);\n}\n\nfunction bindStyle(svgEl, style, isText, el) {\n if (pathHasFill(style, isText)) {\n var fill = isText ? style.textFill : style.fill;\n fill = fill === 'transparent' ? NONE : fill;\n attr(svgEl, 'fill', fill);\n attr(svgEl, 'fill-opacity', style.fillOpacity != null ? style.fillOpacity * style.opacity : style.opacity);\n } else {\n attr(svgEl, 'fill', NONE);\n }\n\n if (pathHasStroke(style, isText)) {\n var stroke = isText ? style.textStroke : style.stroke;\n stroke = stroke === 'transparent' ? NONE : stroke;\n attr(svgEl, 'stroke', stroke);\n var strokeWidth = isText ? style.textStrokeWidth : style.lineWidth;\n var strokeScale = !isText && style.strokeNoScale ? el.getLineScale() : 1;\n attr(svgEl, 'stroke-width', strokeWidth / strokeScale); // stroke then fill for text; fill then stroke for others\n\n attr(svgEl, 'paint-order', isText ? 'stroke' : 'fill');\n attr(svgEl, 'stroke-opacity', style.strokeOpacity != null ? style.strokeOpacity : style.opacity);\n var lineDash = style.lineDash;\n\n if (lineDash) {\n attr(svgEl, 'stroke-dasharray', style.lineDash.join(','));\n attr(svgEl, 'stroke-dashoffset', mathRound(style.lineDashOffset || 0));\n } else {\n attr(svgEl, 'stroke-dasharray', '');\n } // PENDING\n\n\n style.lineCap && attr(svgEl, 'stroke-linecap', style.lineCap);\n style.lineJoin && attr(svgEl, 'stroke-linejoin', style.lineJoin);\n style.miterLimit && attr(svgEl, 'stroke-miterlimit', style.miterLimit);\n } else {\n attr(svgEl, 'stroke', NONE);\n }\n}\n/***************************************************\n * PATH\n **************************************************/\n\n\nfunction pathDataToString(path) {\n var str = [];\n var data = path.data;\n var dataLength = path.len();\n\n for (var i = 0; i < dataLength;) {\n var cmd = data[i++];\n var cmdStr = '';\n var nData = 0;\n\n switch (cmd) {\n case CMD.M:\n cmdStr = 'M';\n nData = 2;\n break;\n\n case CMD.L:\n cmdStr = 'L';\n nData = 2;\n break;\n\n case CMD.Q:\n cmdStr = 'Q';\n nData = 4;\n break;\n\n case CMD.C:\n cmdStr = 'C';\n nData = 6;\n break;\n\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++];\n var psi = data[i++];\n var clockwise = data[i++];\n var dThetaPositive = Math.abs(dTheta);\n var isCircle = isAroundZero(dThetaPositive - PI2) || (clockwise ? dTheta >= PI2 : -dTheta >= PI2); // Mapping to 0~2PI\n\n var unifiedTheta = dTheta > 0 ? dTheta % PI2 : dTheta % PI2 + PI2;\n var large = false;\n\n if (isCircle) {\n large = true;\n } else if (isAroundZero(dThetaPositive)) {\n large = false;\n } else {\n large = unifiedTheta >= PI === !!clockwise;\n }\n\n var x0 = round4(cx + rx * mathCos(theta));\n var y0 = round4(cy + ry * mathSin(theta)); // It will not draw if start point and end point are exactly the same\n // We need to shift the end point with a small value\n // FIXME A better way to draw circle ?\n\n if (isCircle) {\n if (clockwise) {\n dTheta = PI2 - 1e-4;\n } else {\n dTheta = -PI2 + 1e-4;\n }\n\n large = true;\n\n if (i === 9) {\n // Move to (x0, y0) only when CMD.A comes at the\n // first position of a shape.\n // For instance, when drawing a ring, CMD.A comes\n // after CMD.M, so it's unnecessary to move to\n // (x0, y0).\n str.push('M', x0, y0);\n }\n }\n\n var x = round4(cx + rx * mathCos(theta + dTheta));\n var y = round4(cy + ry * mathSin(theta + dTheta)); // FIXME Ellipse\n\n str.push('A', round4(rx), round4(ry), mathRound(psi * degree), +large, +clockwise, x, y);\n break;\n\n case CMD.Z:\n cmdStr = 'Z';\n break;\n\n case CMD.R:\n var x = round4(data[i++]);\n var y = round4(data[i++]);\n var w = round4(data[i++]);\n var h = round4(data[i++]);\n str.push('M', x, y, 'L', x + w, y, 'L', x + w, y + h, 'L', x, y + h, 'L', x, y);\n break;\n }\n\n cmdStr && str.push(cmdStr);\n\n for (var j = 0; j < nData; j++) {\n // PENDING With scale\n str.push(round4(data[i++]));\n }\n }\n\n return str.join(' ');\n}\n\nvar svgPath = {};\n\nsvgPath.brush = function (el) {\n var style = el.style;\n var svgEl = el.__svgEl;\n\n if (!svgEl) {\n svgEl = createElement('path');\n el.__svgEl = svgEl;\n }\n\n if (!el.path) {\n el.createPathProxy();\n }\n\n var path = el.path;\n\n if (el.__dirtyPath) {\n path.beginPath();\n path.subPixelOptimize = false;\n el.buildPath(path, el.shape);\n el.__dirtyPath = false;\n var pathStr = pathDataToString(path);\n\n if (pathStr.indexOf('NaN') < 0) {\n // Ignore illegal path, which may happen such in out-of-range\n // data in Calendar series.\n attr(svgEl, 'd', pathStr);\n }\n }\n\n bindStyle(svgEl, style, false, el);\n setTransform(svgEl, el.transform);\n\n if (style.text != null) {\n svgTextDrawRectText(el, el.getBoundingRect());\n } else {\n removeOldTextNode(el);\n }\n};\n/***************************************************\n * IMAGE\n **************************************************/\n\n\nvar svgImage = {};\n\nsvgImage.brush = function (el) {\n var style = el.style;\n var image = style.image;\n\n if (image instanceof HTMLImageElement) {\n var src = image.src;\n image = src;\n }\n\n if (!image) {\n return;\n }\n\n var x = style.x || 0;\n var y = style.y || 0;\n var dw = style.width;\n var dh = style.height;\n var svgEl = el.__svgEl;\n\n if (!svgEl) {\n svgEl = createElement('image');\n el.__svgEl = svgEl;\n }\n\n if (image !== el.__imageSrc) {\n attrXLink(svgEl, 'href', image); // Caching image src\n\n el.__imageSrc = image;\n }\n\n attr(svgEl, 'width', dw);\n attr(svgEl, 'height', dh);\n attr(svgEl, 'x', x);\n attr(svgEl, 'y', y);\n setTransform(svgEl, el.transform);\n\n if (style.text != null) {\n svgTextDrawRectText(el, el.getBoundingRect());\n } else {\n removeOldTextNode(el);\n }\n};\n/***************************************************\n * TEXT\n **************************************************/\n\n\nvar svgText = {};\n\nvar _tmpTextHostRect = new BoundingRect();\n\nvar _tmpTextBoxPos = {};\nvar _tmpTextTransform = [];\nvar TEXT_ALIGN_TO_ANCHRO = {\n left: 'start',\n right: 'end',\n center: 'middle',\n middle: 'middle'\n};\n/**\n * @param {module:zrender/Element} el\n * @param {Object|boolean} [hostRect] {x, y, width, height}\n * If set false, rect text is not used.\n */\n\nvar svgTextDrawRectText = function (el, hostRect) {\n var style = el.style;\n var elTransform = el.transform;\n var needTransformTextByHostEl = el instanceof Text || style.transformText;\n el.__dirty && textHelper.normalizeTextStyle(style, true);\n var text = style.text; // Convert to string\n\n text != null && (text += '');\n\n if (!textHelper.needDrawText(text, style)) {\n return;\n } // render empty text for svg if no text but need draw text.\n\n\n text == null && (text = ''); // Follow the setting in the canvas renderer, if not transform the\n // text, transform the hostRect, by which the text is located.\n\n if (!needTransformTextByHostEl && elTransform) {\n _tmpTextHostRect.copy(hostRect);\n\n _tmpTextHostRect.applyTransform(elTransform);\n\n hostRect = _tmpTextHostRect;\n }\n\n var textSvgEl = el.__textSvgEl;\n\n if (!textSvgEl) {\n textSvgEl = createElement('text');\n el.__textSvgEl = textSvgEl;\n } // style.font has been normalized by `normalizeTextStyle`.\n\n\n var textSvgElStyle = textSvgEl.style;\n var font = style.font || textContain.DEFAULT_FONT;\n var computedFont = textSvgEl.__computedFont;\n\n if (font !== textSvgEl.__styleFont) {\n textSvgElStyle.font = textSvgEl.__styleFont = font; // The computedFont might not be the orginal font if it is illegal font.\n\n computedFont = textSvgEl.__computedFont = textSvgElStyle.font;\n }\n\n var textPadding = style.textPadding;\n var textLineHeight = style.textLineHeight;\n var contentBlock = el.__textCotentBlock;\n\n if (!contentBlock || el.__dirtyText) {\n contentBlock = el.__textCotentBlock = textContain.parsePlainText(text, computedFont, textPadding, textLineHeight, style.truncate);\n }\n\n var outerHeight = contentBlock.outerHeight;\n var lineHeight = contentBlock.lineHeight;\n textHelper.getBoxPosition(_tmpTextBoxPos, el, style, hostRect);\n var baseX = _tmpTextBoxPos.baseX;\n var baseY = _tmpTextBoxPos.baseY;\n var textAlign = _tmpTextBoxPos.textAlign || 'left';\n var textVerticalAlign = _tmpTextBoxPos.textVerticalAlign;\n setTextTransform(textSvgEl, needTransformTextByHostEl, elTransform, style, hostRect, baseX, baseY);\n var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n var textX = baseX;\n var textY = boxY; // TODO needDrawBg\n\n if (textPadding) {\n textX = getTextXForPadding(baseX, textAlign, textPadding);\n textY += textPadding[0];\n } // `textBaseline` is set as 'middle'.\n\n\n textY += lineHeight / 2;\n bindStyle(textSvgEl, style, true, el); // FIXME\n // Add a \n \n )\n\n function handleBrandChange(id: number, name: string) {\n setState({\n brandId: id,\n brandName: name,\n })\n // 展示车系\n setCurr(Type['series'])\n }\n\n function handleSeriesChange(id: number, name: string) {\n if (!state) {\n return\n }\n setState({\n brandId: state.brandId,\n brandName: state.brandName,\n seriesId: id,\n seriesName: name,\n })\n // 展示车型\n setCurr(Type['car'])\n }\n\n function handleCarChange(id: number, name: string) {\n if (!state) {\n return\n }\n const newState = {\n ...state,\n carId: id,\n carName: name,\n }\n setState(newState)\n onChange(newState as IResult)\n }\n}\n","import * as React from 'react'\nimport Link from 'next/link'\nimport { on, off } from '@arsenal/arsenal/modules/event'\n\nimport Button from 'Components/button'\nimport BrandSeriesCarSelector from 'Components/selector/brand-series-car-single'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nimport { ICar, IAction } from '../series/store'\ninterface IProps {\n pkCars: ICar[]\n dispatch: React.Dispatch\n className?: string\n}\nexport default function PkList(props: IProps) {\n const { pkCars, dispatch, className } = props\n const [showSelector, setSelector] = React.useState(false)\n const carIds = React.useMemo(() => {\n return pkCars.map((item) => item.carId).join(',')\n }, [pkCars])\n const ref = React.useRef(null)\n React.useEffect(() => {\n function handleDocumentClick(e: Event) {\n dispatch({\n type: 'togglePk',\n payload: false,\n })\n }\n on(window, 'click', handleDocumentClick)\n return () => {\n off(window, 'click', handleDocumentClick)\n }\n }, [])\n return (\n {\n e.stopPropagation()\n }}\n className={className}\n >\n

车型对比

\n
    \n {pkCars.map((item) => (\n
  • \n {item.carName}\n {\n dispatch({\n type: 'removeCar',\n payload: item.carId,\n })\n }}\n className=\"icon-dislike-ic\"\n />\n
  • \n ))}\n
\n
\n {\n setSelector(!showSelector)\n }}\n >\n 选择车型\n \n {showSelector && (\n {\n dispatch({\n type: 'addCar',\n payload: car,\n })\n setSelector(false)\n }}\n />\n )}\n
\n \n \n {\n sendTeaCommEvent('click_start_compare_button', {\n car_style_id: carIds,\n })\n }}\n >\n 开始对比\n \n \n \n {pkCars && pkCars.length ? (\n {\n dispatch({\n type: 'clearCars',\n })\n }}\n >\n {\n sendTeaCommEvent('click_clear_selected_cars', {\n car_style_id: carIds,\n })\n }}\n />\n 清空车款\n \n ) : null}\n \n \n )\n}\n","/**\n * @module zrender/core/util\n */\n// 用于处理merge时无法遍历Date等对象的问题\nvar BUILTIN_OBJECT = {\n '[object Function]': 1,\n '[object RegExp]': 1,\n '[object Date]': 1,\n '[object Error]': 1,\n '[object CanvasGradient]': 1,\n '[object CanvasPattern]': 1,\n // For node-canvas\n '[object Image]': 1,\n '[object Canvas]': 1\n};\nvar TYPED_ARRAY = {\n '[object Int8Array]': 1,\n '[object Uint8Array]': 1,\n '[object Uint8ClampedArray]': 1,\n '[object Int16Array]': 1,\n '[object Uint16Array]': 1,\n '[object Int32Array]': 1,\n '[object Uint32Array]': 1,\n '[object Float32Array]': 1,\n '[object Float64Array]': 1\n};\nvar objToString = Object.prototype.toString;\nvar arrayProto = Array.prototype;\nvar nativeForEach = arrayProto.forEach;\nvar nativeFilter = arrayProto.filter;\nvar nativeSlice = arrayProto.slice;\nvar nativeMap = arrayProto.map;\nvar nativeReduce = arrayProto.reduce; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n // Clear ctx instance for different environment\n if (name === 'createCanvas') {\n _ctx = null;\n }\n\n methods[name] = fn;\n}\n/**\n * Those data types can be cloned:\n * Plain object, Array, TypedArray, number, string, null, undefined.\n * Those data types will be assgined using the orginal data:\n * BUILTIN_OBJECT\n * Instance of user defined class will be cloned to a plain object, without\n * properties in prototype.\n * Other data types is not supported (not sure what will happen).\n *\n * Caution: do not support clone Date, for performance consideration.\n * (There might be a large number of date in `series.data`).\n * So date should not be modified in and out of echarts.\n *\n * @param {*} source\n * @return {*} new\n */\n\n\nfunction clone(source) {\n if (source == null || typeof source !== 'object') {\n return source;\n }\n\n var result = source;\n var typeStr = objToString.call(source);\n\n if (typeStr === '[object Array]') {\n if (!isPrimitive(source)) {\n result = [];\n\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n } else if (TYPED_ARRAY[typeStr]) {\n if (!isPrimitive(source)) {\n var Ctor = source.constructor;\n\n if (source.constructor.from) {\n result = Ctor.from(source);\n } else {\n result = new Ctor(source.length);\n\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n }\n } else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n result = {};\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n result[key] = clone(source[key]);\n }\n }\n }\n\n return result;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overwrite=false]\n */\n\n\nfunction merge(target, source, overwrite) {\n // We should escapse that source is string\n // and enter for ... in ...\n if (!isObject(source) || !isObject(target)) {\n return overwrite ? clone(source) : target;\n }\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n var targetProp = target[key];\n var sourceProp = source[key];\n\n if (isObject(sourceProp) && isObject(targetProp) && !isArray(sourceProp) && !isArray(targetProp) && !isDom(sourceProp) && !isDom(targetProp) && !isBuiltInObject(sourceProp) && !isBuiltInObject(targetProp) && !isPrimitive(sourceProp) && !isPrimitive(targetProp)) {\n // 如果需要递归覆盖,就递归调用merge\n merge(targetProp, sourceProp, overwrite);\n } else if (overwrite || !(key in target)) {\n // 否则只处理overwrite为true,或者在目标对象中没有此属性的情况\n // NOTE,在 target[key] 不存在的时候也是直接覆盖\n target[key] = clone(source[key], true);\n }\n }\n }\n\n return target;\n}\n/**\n * @param {Array} targetAndSources The first item is target, and the rests are source.\n * @param {boolean} [overwrite=false]\n * @return {*} target\n */\n\n\nfunction mergeAll(targetAndSources, overwrite) {\n var result = targetAndSources[0];\n\n for (var i = 1, len = targetAndSources.length; i < len; i++) {\n result = merge(result, targetAndSources[i], overwrite);\n }\n\n return result;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @memberOf module:zrender/core/util\n */\n\n\nfunction extend(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overlay=false]\n * @memberOf module:zrender/core/util\n */\n\n\nfunction defaults(target, source, overlay) {\n for (var key in source) {\n if (source.hasOwnProperty(key) && (overlay ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar createCanvas = function () {\n return methods.createCanvas();\n};\n\nmethods.createCanvas = function () {\n return document.createElement('canvas');\n}; // FIXME\n\n\nvar _ctx;\n\nfunction getContext() {\n if (!_ctx) {\n // Use util.createCanvas instead of createCanvas\n // because createCanvas may be overwritten in different environment\n _ctx = createCanvas().getContext('2d');\n }\n\n return _ctx;\n}\n/**\n * 查询数组中元素的index\n * @memberOf module:zrender/core/util\n */\n\n\nfunction indexOf(array, value) {\n if (array) {\n if (array.indexOf) {\n return array.indexOf(value);\n }\n\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n }\n\n return -1;\n}\n/**\n * 构造类继承关系\n *\n * @memberOf module:zrender/core/util\n * @param {Function} clazz 源类\n * @param {Function} baseClazz 基类\n */\n\n\nfunction inherits(clazz, baseClazz) {\n var clazzPrototype = clazz.prototype;\n\n function F() {}\n\n F.prototype = baseClazz.prototype;\n clazz.prototype = new F();\n\n for (var prop in clazzPrototype) {\n if (clazzPrototype.hasOwnProperty(prop)) {\n clazz.prototype[prop] = clazzPrototype[prop];\n }\n }\n\n clazz.prototype.constructor = clazz;\n clazz.superClass = baseClazz;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Object|Function} target\n * @param {Object|Function} sorce\n * @param {boolean} overlay\n */\n\n\nfunction mixin(target, source, overlay) {\n target = 'prototype' in target ? target.prototype : target;\n source = 'prototype' in source ? source.prototype : source;\n defaults(target, source, overlay);\n}\n/**\n * Consider typed array.\n * @param {Array|TypedArray} data\n */\n\n\nfunction isArrayLike(data) {\n if (!data) {\n return;\n }\n\n if (typeof data === 'string') {\n return false;\n }\n\n return typeof data.length === 'number';\n}\n/**\n * 数组或对象遍历\n * @memberOf module:zrender/core/util\n * @param {Object|Array} obj\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\nfunction each(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.forEach && obj.forEach === nativeForEach) {\n obj.forEach(cb, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, len = obj.length; i < len; i++) {\n cb.call(context, obj[i], i, obj);\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n cb.call(context, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * 数组映射\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction map(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.map && obj.map === nativeMap) {\n return obj.map(cb, context);\n } else {\n var result = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n result.push(cb.call(context, obj[i], i, obj));\n }\n\n return result;\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {Object} [memo]\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction reduce(obj, cb, memo, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.reduce && obj.reduce === nativeReduce) {\n return obj.reduce(cb, memo, context);\n } else {\n for (var i = 0, len = obj.length; i < len; i++) {\n memo = cb.call(context, memo, obj[i], i, obj);\n }\n\n return memo;\n }\n}\n/**\n * 数组过滤\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction filter(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.filter && obj.filter === nativeFilter) {\n return obj.filter(cb, context);\n } else {\n var result = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (cb.call(context, obj[i], i, obj)) {\n result.push(obj[i]);\n }\n }\n\n return result;\n }\n}\n/**\n * 数组项查找\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {*}\n */\n\n\nfunction find(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (cb.call(context, obj[i], i, obj)) {\n return obj[i];\n }\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @param {*} context\n * @return {Function}\n */\n\n\nfunction bind(func, context) {\n var args = nativeSlice.call(arguments, 2);\n return function () {\n return func.apply(context, args.concat(nativeSlice.call(arguments)));\n };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @return {Function}\n */\n\n\nfunction curry(func) {\n var args = nativeSlice.call(arguments, 1);\n return function () {\n return func.apply(this, args.concat(nativeSlice.call(arguments)));\n };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isArray(value) {\n return objToString.call(value) === '[object Array]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isString(value) {\n return objToString.call(value) === '[object String]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return type === 'function' || !!value && type === 'object';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isBuiltInObject(value) {\n return !!BUILTIN_OBJECT[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isTypedArray(value) {\n return !!TYPED_ARRAY[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isDom(value) {\n return typeof value === 'object' && typeof value.nodeType === 'number' && typeof value.ownerDocument === 'object';\n}\n/**\n * Whether is exactly NaN. Notice isNaN('a') returns true.\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction eqNaN(value) {\n /* eslint-disable-next-line no-self-compare */\n return value !== value;\n}\n/**\n * If value1 is not null, then return value1, otherwise judget rest of values.\n * Low performance.\n * @memberOf module:zrender/core/util\n * @return {*} Final value\n */\n\n\nfunction retrieve(values) {\n for (var i = 0, len = arguments.length; i < len; i++) {\n if (arguments[i] != null) {\n return arguments[i];\n }\n }\n}\n\nfunction retrieve2(value0, value1) {\n return value0 != null ? value0 : value1;\n}\n\nfunction retrieve3(value0, value1, value2) {\n return value0 != null ? value0 : value1 != null ? value1 : value2;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} arr\n * @param {number} startIndex\n * @param {number} endIndex\n * @return {Array}\n */\n\n\nfunction slice() {\n return Function.call.apply(nativeSlice, arguments);\n}\n/**\n * Normalize css liked array configuration\n * e.g.\n * 3 => [3, 3, 3, 3]\n * [4, 2] => [4, 2, 4, 2]\n * [4, 3, 2] => [4, 3, 2, 3]\n * @param {number|Array.} val\n * @return {Array.}\n */\n\n\nfunction normalizeCssArray(val) {\n if (typeof val === 'number') {\n return [val, val, val, val];\n }\n\n var len = val.length;\n\n if (len === 2) {\n // vertical | horizontal\n return [val[0], val[1], val[0], val[1]];\n } else if (len === 3) {\n // top | horizontal | bottom\n return [val[0], val[1], val[2], val[1]];\n }\n\n return val;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {boolean} condition\n * @param {string} message\n */\n\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {string} str string to be trimed\n * @return {string} trimed string\n */\n\n\nfunction trim(str) {\n if (str == null) {\n return null;\n } else if (typeof str.trim === 'function') {\n return str.trim();\n } else {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n}\n\nvar primitiveKey = '__ec_primitive__';\n/**\n * Set an object as primitive to be ignored traversing children in clone or merge\n */\n\nfunction setAsPrimitive(obj) {\n obj[primitiveKey] = true;\n}\n\nfunction isPrimitive(obj) {\n return obj[primitiveKey];\n}\n/**\n * @constructor\n * @param {Object} obj Only apply `ownProperty`.\n */\n\n\nfunction HashMap(obj) {\n var isArr = isArray(obj); // Key should not be set on this, otherwise\n // methods get/set/... may be overrided.\n\n this.data = {};\n var thisMap = this;\n obj instanceof HashMap ? obj.each(visit) : obj && each(obj, visit);\n\n function visit(value, key) {\n isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n }\n}\n\nHashMap.prototype = {\n constructor: HashMap,\n // Do not provide `has` method to avoid defining what is `has`.\n // (We usually treat `null` and `undefined` as the same, different\n // from ES6 Map).\n get: function (key) {\n return this.data.hasOwnProperty(key) ? this.data[key] : null;\n },\n set: function (key, value) {\n // Comparing with invocation chaining, `return value` is more commonly\n // used in this case: `var someVal = map.set('a', genVal());`\n return this.data[key] = value;\n },\n // Although util.each can be performed on this hashMap directly, user\n // should not use the exposed keys, who are prefixed.\n each: function (cb, context) {\n context !== void 0 && (cb = bind(cb, context));\n /* eslint-disable guard-for-in */\n\n for (var key in this.data) {\n this.data.hasOwnProperty(key) && cb(this.data[key], key);\n }\n /* eslint-enable guard-for-in */\n\n },\n // Do not use this method if performance sensitive.\n removeKey: function (key) {\n delete this.data[key];\n }\n};\n\nfunction createHashMap(obj) {\n return new HashMap(obj);\n}\n\nfunction concatArray(a, b) {\n var newArray = new a.constructor(a.length + b.length);\n\n for (var i = 0; i < a.length; i++) {\n newArray[i] = a[i];\n }\n\n var offset = a.length;\n\n for (i = 0; i < b.length; i++) {\n newArray[i + offset] = b[i];\n }\n\n return newArray;\n}\n\nfunction noop() {}\n\nexports.$override = $override;\nexports.clone = clone;\nexports.merge = merge;\nexports.mergeAll = mergeAll;\nexports.extend = extend;\nexports.defaults = defaults;\nexports.createCanvas = createCanvas;\nexports.getContext = getContext;\nexports.indexOf = indexOf;\nexports.inherits = inherits;\nexports.mixin = mixin;\nexports.isArrayLike = isArrayLike;\nexports.each = each;\nexports.map = map;\nexports.reduce = reduce;\nexports.filter = filter;\nexports.find = find;\nexports.bind = bind;\nexports.curry = curry;\nexports.isArray = isArray;\nexports.isFunction = isFunction;\nexports.isString = isString;\nexports.isObject = isObject;\nexports.isBuiltInObject = isBuiltInObject;\nexports.isTypedArray = isTypedArray;\nexports.isDom = isDom;\nexports.eqNaN = eqNaN;\nexports.retrieve = retrieve;\nexports.retrieve2 = retrieve2;\nexports.retrieve3 = retrieve3;\nexports.slice = slice;\nexports.normalizeCssArray = normalizeCssArray;\nexports.assert = assert;\nexports.trim = trim;\nexports.setAsPrimitive = setAsPrimitive;\nexports.isPrimitive = isPrimitive;\nexports.createHashMap = createHashMap;\nexports.concatArray = concatArray;\nexports.noop = noop;","\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 * Traverse the tree from bottom to top and do something\n * @param {module:echarts/data/Tree~TreeNode} root The real root of the tree\n * @param {Function} callback\n */\nfunction eachAfter(root, callback, separation) {\n var nodes = [root];\n var next = [];\n var node;\n\n while (node = nodes.pop()) {\n // jshint ignore:line\n next.push(node);\n\n if (node.isExpand) {\n var children = node.children;\n\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n nodes.push(children[i]);\n }\n }\n }\n }\n\n while (node = next.pop()) {\n // jshint ignore:line\n callback(node, separation);\n }\n}\n/**\n * Traverse the tree from top to bottom and do something\n * @param {module:echarts/data/Tree~TreeNode} root The real root of the tree\n * @param {Function} callback\n */\n\n\nfunction eachBefore(root, callback) {\n var nodes = [root];\n var node;\n\n while (node = nodes.pop()) {\n // jshint ignore:line\n callback(node);\n\n if (node.isExpand) {\n var children = node.children;\n\n if (children.length) {\n for (var i = children.length - 1; i >= 0; i--) {\n nodes.push(children[i]);\n }\n }\n }\n }\n}\n\nexports.eachAfter = eachAfter;\nexports.eachBefore = eachBefore;","\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 _clazz = require(\"../util/clazz\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\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// id may be function name of Object, add a prefix to avoid this problem.\nfunction generateNodeKey(id) {\n return '_EC_' + id;\n}\n/**\n * @alias module:echarts/data/Graph\n * @constructor\n * @param {boolean} directed\n */\n\n\nvar Graph = function (directed) {\n /**\n * 是否是有向图\n * @type {boolean}\n * @private\n */\n this._directed = directed || false;\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.nodes = [];\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.edges = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._nodesMap = {};\n /**\n * @type {Object.}\n * @private\n */\n\n this._edgesMap = {};\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.data;\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.edgeData;\n};\n\nvar graphProto = Graph.prototype;\n/**\n * @type {string}\n */\n\ngraphProto.type = 'graph';\n/**\n * If is directed graph\n * @return {boolean}\n */\n\ngraphProto.isDirected = function () {\n return this._directed;\n};\n/**\n * Add a new node\n * @param {string} id\n * @param {number} [dataIndex]\n */\n\n\ngraphProto.addNode = function (id, dataIndex) {\n id = id == null ? '' + dataIndex : '' + id;\n var nodesMap = this._nodesMap;\n\n if (nodesMap[generateNodeKey(id)]) {\n return;\n }\n\n var node = new Node(id, dataIndex);\n node.hostGraph = this;\n this.nodes.push(node);\n nodesMap[generateNodeKey(id)] = node;\n return node;\n};\n/**\n * Get node by data index\n * @param {number} dataIndex\n * @return {module:echarts/data/Graph~Node}\n */\n\n\ngraphProto.getNodeByIndex = function (dataIndex) {\n var rawIdx = this.data.getRawIndex(dataIndex);\n return this.nodes[rawIdx];\n};\n/**\n * Get node by id\n * @param {string} id\n * @return {module:echarts/data/Graph.Node}\n */\n\n\ngraphProto.getNodeById = function (id) {\n return this._nodesMap[generateNodeKey(id)];\n};\n/**\n * Add a new edge\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {number} [dataIndex=-1]\n * @return {module:echarts/data/Graph.Edge}\n */\n\n\ngraphProto.addEdge = function (n1, n2, dataIndex) {\n var nodesMap = this._nodesMap;\n var edgesMap = this._edgesMap; // PNEDING\n\n if (typeof n1 === 'number') {\n n1 = this.nodes[n1];\n }\n\n if (typeof n2 === 'number') {\n n2 = this.nodes[n2];\n }\n\n if (!Node.isInstance(n1)) {\n n1 = nodesMap[generateNodeKey(n1)];\n }\n\n if (!Node.isInstance(n2)) {\n n2 = nodesMap[generateNodeKey(n2)];\n }\n\n if (!n1 || !n2) {\n return;\n }\n\n var key = n1.id + '-' + n2.id;\n var edge = new Edge(n1, n2, dataIndex);\n edge.hostGraph = this;\n\n if (this._directed) {\n n1.outEdges.push(edge);\n n2.inEdges.push(edge);\n }\n\n n1.edges.push(edge);\n\n if (n1 !== n2) {\n n2.edges.push(edge);\n }\n\n this.edges.push(edge);\n edgesMap[key] = edge;\n return edge;\n};\n/**\n * Get edge by data index\n * @param {number} dataIndex\n * @return {module:echarts/data/Graph~Node}\n */\n\n\ngraphProto.getEdgeByIndex = function (dataIndex) {\n var rawIdx = this.edgeData.getRawIndex(dataIndex);\n return this.edges[rawIdx];\n};\n/**\n * Get edge by two linked nodes\n * @param {module:echarts/data/Graph.Node|string} n1\n * @param {module:echarts/data/Graph.Node|string} n2\n * @return {module:echarts/data/Graph.Edge}\n */\n\n\ngraphProto.getEdge = function (n1, n2) {\n if (Node.isInstance(n1)) {\n n1 = n1.id;\n }\n\n if (Node.isInstance(n2)) {\n n2 = n2.id;\n }\n\n var edgesMap = this._edgesMap;\n\n if (this._directed) {\n return edgesMap[n1 + '-' + n2];\n } else {\n return edgesMap[n1 + '-' + n2] || edgesMap[n2 + '-' + n1];\n }\n};\n/**\n * Iterate all nodes\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\ngraphProto.eachNode = function (cb, context) {\n var nodes = this.nodes;\n var len = nodes.length;\n\n for (var i = 0; i < len; i++) {\n if (nodes[i].dataIndex >= 0) {\n cb.call(context, nodes[i], i);\n }\n }\n};\n/**\n * Iterate all edges\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\ngraphProto.eachEdge = function (cb, context) {\n var edges = this.edges;\n var len = edges.length;\n\n for (var i = 0; i < len; i++) {\n if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) {\n cb.call(context, edges[i], i);\n }\n }\n};\n/**\n * Breadth first traverse\n * @param {Function} cb\n * @param {module:echarts/data/Graph.Node} startNode\n * @param {string} [direction='none'] 'none'|'in'|'out'\n * @param {*} [context]\n */\n\n\ngraphProto.breadthFirstTraverse = function (cb, startNode, direction, context) {\n if (!Node.isInstance(startNode)) {\n startNode = this._nodesMap[generateNodeKey(startNode)];\n }\n\n if (!startNode) {\n return;\n }\n\n var edgeType = direction === 'out' ? 'outEdges' : direction === 'in' ? 'inEdges' : 'edges';\n\n for (var i = 0; i < this.nodes.length; i++) {\n this.nodes[i].__visited = false;\n }\n\n if (cb.call(context, startNode, null)) {\n return;\n }\n\n var queue = [startNode];\n\n while (queue.length) {\n var currentNode = queue.shift();\n var edges = currentNode[edgeType];\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n var otherNode = e.node1 === currentNode ? e.node2 : e.node1;\n\n if (!otherNode.__visited) {\n if (cb.call(context, otherNode, currentNode)) {\n // Stop traversing\n return;\n }\n\n queue.push(otherNode);\n otherNode.__visited = true;\n }\n }\n }\n}; // TODO\n// graphProto.depthFirstTraverse = function (\n// cb, startNode, direction, context\n// ) {\n// };\n// Filter update\n\n\ngraphProto.update = function () {\n var data = this.data;\n var edgeData = this.edgeData;\n var nodes = this.nodes;\n var edges = this.edges;\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n nodes[i].dataIndex = -1;\n }\n\n for (var i = 0, len = data.count(); i < len; i++) {\n nodes[data.getRawIndex(i)].dataIndex = i;\n }\n\n edgeData.filterSelf(function (idx) {\n var edge = edges[edgeData.getRawIndex(idx)];\n return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;\n }); // Update edge\n\n for (var i = 0, len = edges.length; i < len; i++) {\n edges[i].dataIndex = -1;\n }\n\n for (var i = 0, len = edgeData.count(); i < len; i++) {\n edges[edgeData.getRawIndex(i)].dataIndex = i;\n }\n};\n/**\n * @return {module:echarts/data/Graph}\n */\n\n\ngraphProto.clone = function () {\n var graph = new Graph(this._directed);\n var nodes = this.nodes;\n var edges = this.edges;\n\n for (var i = 0; i < nodes.length; i++) {\n graph.addNode(nodes[i].id, nodes[i].dataIndex);\n }\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n graph.addEdge(e.node1.id, e.node2.id, e.dataIndex);\n }\n\n return graph;\n};\n/**\n * @alias module:echarts/data/Graph.Node\n */\n\n\nfunction Node(id, dataIndex) {\n /**\n * @type {string}\n */\n this.id = id == null ? '' : id;\n /**\n * @type {Array.}\n */\n\n this.inEdges = [];\n /**\n * @type {Array.}\n */\n\n this.outEdges = [];\n /**\n * @type {Array.}\n */\n\n this.edges = [];\n /**\n * @type {module:echarts/data/Graph}\n */\n\n this.hostGraph;\n /**\n * @type {number}\n */\n\n this.dataIndex = dataIndex == null ? -1 : dataIndex;\n}\n\nNode.prototype = {\n constructor: Node,\n\n /**\n * @return {number}\n */\n degree: function () {\n return this.edges.length;\n },\n\n /**\n * @return {number}\n */\n inDegree: function () {\n return this.inEdges.length;\n },\n\n /**\n * @return {number}\n */\n outDegree: function () {\n return this.outEdges.length;\n },\n\n /**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var graph = this.hostGraph;\n var itemModel = graph.data.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n }\n};\n/**\n * 图边\n * @alias module:echarts/data/Graph.Edge\n * @param {module:echarts/data/Graph.Node} n1\n * @param {module:echarts/data/Graph.Node} n2\n * @param {number} [dataIndex=-1]\n */\n\nfunction Edge(n1, n2, dataIndex) {\n /**\n * 节点1,如果是有向图则为源节点\n * @type {module:echarts/data/Graph.Node}\n */\n this.node1 = n1;\n /**\n * 节点2,如果是有向图则为目标节点\n * @type {module:echarts/data/Graph.Node}\n */\n\n this.node2 = n2;\n this.dataIndex = dataIndex == null ? -1 : dataIndex;\n}\n/**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n\n\nEdge.prototype.getModel = function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var graph = this.hostGraph;\n var itemModel = graph.edgeData.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n};\n\nvar createGraphDataProxyMixin = function (hostName, dataName) {\n return {\n /**\n * @param {string=} [dimension='value'] Default 'value'. can be 'a', 'b', 'c', 'd', 'e'.\n * @return {number}\n */\n getValue: function (dimension) {\n var data = this[hostName][dataName];\n return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n },\n\n /**\n * @param {Object|string} key\n * @param {*} [value]\n */\n setVisual: function (key, value) {\n this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);\n },\n\n /**\n * @param {string} key\n * @return {boolean}\n */\n getVisual: function (key, ignoreParent) {\n return this[hostName][dataName].getItemVisual(this.dataIndex, key, ignoreParent);\n },\n\n /**\n * @param {Object} layout\n * @return {boolean} [merge=false]\n */\n setLayout: function (layout, merge) {\n this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout, merge);\n },\n\n /**\n * @return {Object}\n */\n getLayout: function () {\n return this[hostName][dataName].getItemLayout(this.dataIndex);\n },\n\n /**\n * @return {module:zrender/Element}\n */\n getGraphicEl: function () {\n return this[hostName][dataName].getItemGraphicEl(this.dataIndex);\n },\n\n /**\n * @return {number}\n */\n getRawIndex: function () {\n return this[hostName][dataName].getRawIndex(this.dataIndex);\n }\n };\n};\n\nzrUtil.mixin(Node, createGraphDataProxyMixin('hostGraph', 'data'));\nzrUtil.mixin(Edge, createGraphDataProxyMixin('hostGraph', 'edgeData'));\nGraph.Node = Node;\nGraph.Edge = Edge;\nenableClassCheck(Node);\nenableClassCheck(Edge);\nvar _default = Graph;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar LineGroup = require(\"./Line\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/LineDraw\n */\n// import IncrementalDisplayable from 'zrender/src/graphic/IncrementalDisplayable';\n\n/**\n * @alias module:echarts/component/marker/LineDraw\n * @constructor\n */\nfunction LineDraw(ctor) {\n this._ctor = ctor || LineGroup;\n this.group = new graphic.Group();\n}\n\nvar lineDrawProto = LineDraw.prototype;\n\nlineDrawProto.isPersistent = function () {\n return true;\n};\n/**\n * @param {module:echarts/data/List} lineData\n */\n\n\nlineDrawProto.updateData = function (lineData) {\n var lineDraw = this;\n var group = lineDraw.group;\n var oldLineData = lineDraw._lineData;\n lineDraw._lineData = lineData; // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!oldLineData) {\n group.removeAll();\n }\n\n var seriesScope = makeSeriesScope(lineData);\n lineData.diff(oldLineData).add(function (idx) {\n doAdd(lineDraw, lineData, idx, seriesScope);\n }).update(function (newIdx, oldIdx) {\n doUpdate(lineDraw, oldLineData, lineData, oldIdx, newIdx, seriesScope);\n }).remove(function (idx) {\n group.remove(oldLineData.getItemGraphicEl(idx));\n }).execute();\n};\n\nfunction doAdd(lineDraw, lineData, idx, seriesScope) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (!lineNeedsDraw(itemLayout)) {\n return;\n }\n\n var el = new lineDraw._ctor(lineData, idx, seriesScope);\n lineData.setItemGraphicEl(idx, el);\n lineDraw.group.add(el);\n}\n\nfunction doUpdate(lineDraw, oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\n var itemEl = oldLineData.getItemGraphicEl(oldIdx);\n\n if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\n lineDraw.group.remove(itemEl);\n return;\n }\n\n if (!itemEl) {\n itemEl = new lineDraw._ctor(newLineData, newIdx, seriesScope);\n } else {\n itemEl.updateData(newLineData, newIdx, seriesScope);\n }\n\n newLineData.setItemGraphicEl(newIdx, itemEl);\n lineDraw.group.add(itemEl);\n}\n\nlineDrawProto.updateLayout = function () {\n var lineData = this._lineData; // Do not support update layout in incremental mode.\n\n if (!lineData) {\n return;\n }\n\n lineData.eachItemGraphicEl(function (el, idx) {\n el.updateLayout(lineData, idx);\n }, this);\n};\n\nlineDrawProto.incrementalPrepareUpdate = function (lineData) {\n this._seriesScope = makeSeriesScope(lineData);\n this._lineData = null;\n this.group.removeAll();\n};\n\nfunction isEffectObject(el) {\n return el.animators && el.animators.length > 0;\n}\n\nlineDrawProto.incrementalUpdate = function (taskParams, lineData) {\n function updateIncrementalAndHover(el) {\n if (!el.isGroup && !isEffectObject(el)) {\n el.incremental = el.useHoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (lineNeedsDraw(itemLayout)) {\n var el = new this._ctor(lineData, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n this.group.add(el);\n lineData.setItemGraphicEl(idx, el);\n }\n }\n};\n\nfunction makeSeriesScope(lineData) {\n var hostModel = lineData.hostModel;\n return {\n lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\n hoverLineStyle: hostModel.getModel('emphasis.lineStyle').getLineStyle(),\n labelModel: hostModel.getModel('label'),\n hoverLabelModel: hostModel.getModel('emphasis.label')\n };\n}\n\nlineDrawProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlineDrawProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\n }\n};\n\nfunction isPointNaN(pt) {\n return isNaN(pt[0]) || isNaN(pt[1]);\n}\n\nfunction lineNeedsDraw(pts) {\n return !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\n}\n\nvar _default = LineDraw;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\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;","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/wave-point-246aa388b9098d05cdae251297342087.png\";","\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*/\nvar defaultOption = {\n show: true,\n zlevel: 0,\n z: 0,\n // Inverse the axis.\n inverse: false,\n // Axis name displayed.\n name: '',\n // 'start' | 'middle' | 'end'\n nameLocation: 'end',\n // By degree. By default auto rotate by nameLocation.\n nameRotate: null,\n nameTruncate: {\n maxWidth: null,\n ellipsis: '...',\n placeholder: '.'\n },\n // Use global text style by default.\n nameTextStyle: {},\n // The gap between axisName and axisLine.\n nameGap: 15,\n // Default `false` to support tooltip.\n silent: false,\n // Default `false` to avoid legacy user event listener fail.\n triggerEvent: false,\n tooltip: {\n show: false\n },\n axisPointer: {},\n axisLine: {\n show: true,\n onZero: true,\n onZeroAxisIndex: null,\n lineStyle: {\n color: '#333',\n width: 1,\n type: 'solid'\n },\n // The arrow at both ends the the axis.\n symbol: ['none', 'none'],\n symbolSize: [10, 15]\n },\n axisTick: {\n show: true,\n // Whether axisTick is inside the grid or outside the grid.\n inside: false,\n // The length of axisTick.\n length: 5,\n lineStyle: {\n width: 1\n }\n },\n axisLabel: {\n show: true,\n // Whether axisLabel is inside the grid or outside the grid.\n inside: false,\n rotate: 0,\n // true | false | null/undefined (auto)\n showMinLabel: null,\n // true | false | null/undefined (auto)\n showMaxLabel: null,\n margin: 8,\n // formatter: null,\n fontSize: 12\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: ['#ccc'],\n width: 1,\n type: 'solid'\n }\n },\n splitArea: {\n show: false,\n areaStyle: {\n color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)']\n }\n }\n};\nvar axisDefault = {};\naxisDefault.categoryAxis = zrUtil.merge({\n // The gap at both ends of the axis. For categoryAxis, boolean.\n boundaryGap: true,\n // Set false to faster category collection.\n // Only usefull in the case like: category is\n // ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // null means \"auto\":\n // if axis.data provided, do not deduplication,\n // else do deduplication.\n deduplication: null,\n // splitArea: {\n // show: false\n // },\n splitLine: {\n show: false\n },\n axisTick: {\n // If tick is align with label when boundaryGap is true\n alignWithLabel: false,\n interval: 'auto'\n },\n axisLabel: {\n interval: 'auto'\n }\n}, defaultOption);\naxisDefault.valueAxis = zrUtil.merge({\n // The gap at both ends of the axis. For value axis, [GAP, GAP], where\n // `GAP` can be an absolute pixel number (like `35`), or percent (like `'30%'`)\n boundaryGap: [0, 0],\n // TODO\n // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60]\n // Min value of the axis. can be:\n // + a number\n // + 'dataMin': use the min value in data.\n // + null/undefined: auto decide min value (consider pretty look and boundaryGap).\n // min: null,\n // Max value of the axis. can be:\n // + a number\n // + 'dataMax': use the max value in data.\n // + null/undefined: auto decide max value (consider pretty look and boundaryGap).\n // max: null,\n // Readonly prop, specifies start value of the range when using data zoom.\n // rangeStart: null\n // Readonly prop, specifies end value of the range when using data zoom.\n // rangeEnd: null\n // Optional value can be:\n // + `false`: always include value 0.\n // + `true`: the extent do not consider value 0.\n // scale: false,\n // AxisTick and axisLabel and splitLine are caculated based on splitNumber.\n splitNumber: 5,\n // Interval specifies the span of the ticks is mandatorily.\n // interval: null\n // Specify min interval when auto calculate tick interval.\n // minInterval: null\n // Specify max interval when auto calculate tick interval.\n // maxInterval: null\n minorTick: {\n // Minor tick, not available for cateogry axis.\n show: false,\n // Split number of minor ticks. The value should be in range of (0, 100)\n splitNumber: 5,\n // Lenght of minor tick\n length: 3,\n // Same inside with axisTick\n // Line style\n lineStyle: {// Default to be same with axisTick\n }\n },\n minorSplitLine: {\n show: false,\n lineStyle: {\n color: '#eee',\n width: 1\n }\n }\n}, defaultOption);\naxisDefault.timeAxis = zrUtil.defaults({\n scale: true,\n min: 'dataMin',\n max: 'dataMax'\n}, axisDefault.valueAxis);\naxisDefault.logAxis = zrUtil.defaults({\n scale: true,\n logBase: 10\n}, axisDefault.valueAxis);\nvar _default = axisDefault;\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 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*/\nfunction _default(ecModel) {\n ecModel.eachSeriesByType('themeRiver', function (seriesModel) {\n var data = seriesModel.getData();\n var rawData = seriesModel.getRawData();\n var colorList = seriesModel.get('color');\n var idxMap = createHashMap();\n data.each(function (idx) {\n idxMap.set(data.getRawIndex(idx), idx);\n });\n rawData.each(function (rawIndex) {\n var name = rawData.getName(rawIndex);\n var color = colorList[(seriesModel.nameMap.get(name) - 1) % colorList.length];\n rawData.setItemVisual(rawIndex, 'color', color);\n var idx = idxMap.get(rawIndex);\n\n if (idx != null) {\n data.setItemVisual(idx, 'color', color);\n }\n });\n });\n}\n\nmodule.exports = _default;","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/brown-live-show-2edcf8eb8af271433acb2e26b4a9ae8e.gif\";","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar List = require(\"../../data/List\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar concatArray = _util.concatArray;\nvar mergeAll = _util.mergeAll;\nvar map = _util.map;\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Uint32Array, Float64Array, Float32Array */\nvar Uint32Arr = typeof Uint32Array === 'undefined' ? Array : Uint32Array;\nvar Float64Arr = typeof Float64Array === 'undefined' ? Array : Float64Array;\n\nfunction compatEc2(seriesOpt) {\n var data = seriesOpt.data;\n\n if (data && data[0] && data[0][0] && data[0][0].coord) {\n seriesOpt.data = map(data, function (itemOpt) {\n var coords = [itemOpt[0].coord, itemOpt[1].coord];\n var target = {\n coords: coords\n };\n\n if (itemOpt[0].name) {\n target.fromName = itemOpt[0].name;\n }\n\n if (itemOpt[1].name) {\n target.toName = itemOpt[1].name;\n }\n\n return mergeAll([target, itemOpt[0], itemOpt[1]]);\n });\n }\n}\n\nvar LinesSeries = SeriesModel.extend({\n type: 'series.lines',\n dependencies: ['grid', 'polar'],\n visualColorAccessPath: 'lineStyle.color',\n init: function (option) {\n // The input data may be null/undefined.\n option.data = option.data || []; // Not using preprocessor because mergeOption may not have series.type\n\n compatEc2(option);\n\n var result = this._processFlatCoordsArray(option.data);\n\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n\n if (result.flatCoords) {\n option.data = new Float32Array(result.count);\n }\n\n LinesSeries.superApply(this, 'init', arguments);\n },\n mergeOption: function (option) {\n compatEc2(option);\n\n if (option.data) {\n // Only update when have option data to merge.\n var result = this._processFlatCoordsArray(option.data);\n\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n\n if (result.flatCoords) {\n option.data = new Float32Array(result.count);\n }\n }\n\n LinesSeries.superApply(this, 'mergeOption', arguments);\n },\n appendData: function (params) {\n var result = this._processFlatCoordsArray(params.data);\n\n if (result.flatCoords) {\n if (!this._flatCoords) {\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n } else {\n this._flatCoords = concatArray(this._flatCoords, result.flatCoords);\n this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);\n }\n\n params.data = new Float32Array(result.count);\n }\n\n this.getRawData().appendData(params.data);\n },\n _getCoordsFromItemModel: function (idx) {\n var itemModel = this.getData().getItemModel(idx);\n var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow('coords');\n return coords;\n },\n getLineCoordsCount: function (idx) {\n if (this._flatCoordsOffset) {\n return this._flatCoordsOffset[idx * 2 + 1];\n } else {\n return this._getCoordsFromItemModel(idx).length;\n }\n },\n getLineCoords: function (idx, out) {\n if (this._flatCoordsOffset) {\n var offset = this._flatCoordsOffset[idx * 2];\n var len = this._flatCoordsOffset[idx * 2 + 1];\n\n for (var i = 0; i < len; i++) {\n out[i] = out[i] || [];\n out[i][0] = this._flatCoords[offset + i * 2];\n out[i][1] = this._flatCoords[offset + i * 2 + 1];\n }\n\n return len;\n } else {\n var coords = this._getCoordsFromItemModel(idx);\n\n for (var i = 0; i < coords.length; i++) {\n out[i] = out[i] || [];\n out[i][0] = coords[i][0];\n out[i][1] = coords[i][1];\n }\n\n return coords.length;\n }\n },\n _processFlatCoordsArray: function (data) {\n var startOffset = 0;\n\n if (this._flatCoords) {\n startOffset = this._flatCoords.length;\n } // Stored as a typed array. In format\n // Points Count(2) | x | y | x | y | Points Count(3) | x | y | x | y | x | y |\n\n\n if (typeof data[0] === 'number') {\n var len = data.length; // Store offset and len of each segment\n\n var coordsOffsetAndLenStorage = new Uint32Arr(len);\n var coordsStorage = new Float64Arr(len);\n var coordsCursor = 0;\n var offsetCursor = 0;\n var dataCount = 0;\n\n for (var i = 0; i < len;) {\n dataCount++;\n var count = data[i++]; // Offset\n\n coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset; // Len\n\n coordsOffsetAndLenStorage[offsetCursor++] = count;\n\n for (var k = 0; k < count; k++) {\n var x = data[i++];\n var y = data[i++];\n coordsStorage[coordsCursor++] = x;\n coordsStorage[coordsCursor++] = y;\n\n if (i > len) {}\n }\n }\n\n return {\n flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),\n flatCoords: coordsStorage,\n count: dataCount\n };\n }\n\n return {\n flatCoordsOffset: null,\n flatCoords: null,\n count: data.length\n };\n },\n getInitialData: function (option, ecModel) {\n var lineData = new List(['value'], this);\n lineData.hasItemOption = false;\n lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) {\n // dataItem is simply coords\n if (dataItem instanceof Array) {\n return NaN;\n } else {\n lineData.hasItemOption = true;\n var value = dataItem.value;\n\n if (value != null) {\n return value instanceof Array ? value[dimIndex] : value;\n }\n }\n });\n return lineData;\n },\n formatTooltip: function (dataIndex) {\n var data = this.getData();\n var itemModel = data.getItemModel(dataIndex);\n var name = itemModel.get('name');\n\n if (name) {\n return name;\n }\n\n var fromName = itemModel.get('fromName');\n var toName = itemModel.get('toName');\n var html = [];\n fromName != null && html.push(fromName);\n toName != null && html.push(toName);\n return encodeHTML(html.join(' > '));\n },\n preventIncremental: function () {\n return !!this.get('effect.show');\n },\n getProgressive: function () {\n var progressive = this.option.progressive;\n\n if (progressive == null) {\n return this.option.large ? 1e4 : this.get('progressive');\n }\n\n return progressive;\n },\n getProgressiveThreshold: function () {\n var progressiveThreshold = this.option.progressiveThreshold;\n\n if (progressiveThreshold == null) {\n return this.option.large ? 2e4 : this.get('progressiveThreshold');\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n coordinateSystem: 'geo',\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n hoverAnimation: true,\n // Cartesian coordinate system\n xAxisIndex: 0,\n yAxisIndex: 0,\n symbol: ['none', 'none'],\n symbolSize: [10, 10],\n // Geo coordinate system\n geoIndex: 0,\n effect: {\n show: false,\n period: 4,\n // Animation delay. support callback\n // delay: 0,\n // If move with constant speed px/sec\n // period will be ignored if this property is > 0,\n constantSpeed: 0,\n symbol: 'circle',\n symbolSize: 3,\n loop: true,\n // Length of trail, 0 - 1\n trailLength: 0.2 // Same with lineStyle.color\n // color\n\n },\n large: false,\n // Available when large is true\n largeThreshold: 2000,\n // If lines are polyline\n // polyline not support curveness, label, animation\n polyline: false,\n // If clip the overflow.\n // Available when coordinateSystem is cartesian or polar.\n clip: true,\n label: {\n show: false,\n position: 'end' // distance: 5,\n // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n\n },\n lineStyle: {\n opacity: 0.5\n }\n }\n});\nvar _default = LinesSeries;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar layout = require(\"../../util/layout\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\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.extendComponentView({\n type: 'visualMap',\n\n /**\n * @readOnly\n * @type {Object}\n */\n autoPositionValues: {\n left: 1,\n right: 1,\n top: 1,\n bottom: 1\n },\n init: function (ecModel, api) {\n /**\n * @readOnly\n * @type {module:echarts/model/Global}\n */\n this.ecModel = ecModel;\n /**\n * @readOnly\n * @type {module:echarts/ExtensionAPI}\n */\n\n this.api = api;\n /**\n * @readOnly\n * @type {module:echarts/component/visualMap/visualMapModel}\n */\n\n this.visualMapModel;\n },\n\n /**\n * @protected\n */\n render: function (visualMapModel, ecModel, api, payload) {\n this.visualMapModel = visualMapModel;\n\n if (visualMapModel.get('show') === false) {\n this.group.removeAll();\n return;\n }\n\n this.doRender.apply(this, arguments);\n },\n\n /**\n * @protected\n */\n renderBackground: function (group) {\n var visualMapModel = this.visualMapModel;\n var padding = formatUtil.normalizeCssArray(visualMapModel.get('padding') || 0);\n var rect = group.getBoundingRect();\n group.add(new graphic.Rect({\n z2: -1,\n // Lay background rect on the lowest layer.\n silent: true,\n shape: {\n x: rect.x - padding[3],\n y: rect.y - padding[0],\n width: rect.width + padding[3] + padding[1],\n height: rect.height + padding[0] + padding[2]\n },\n style: {\n fill: visualMapModel.get('backgroundColor'),\n stroke: visualMapModel.get('borderColor'),\n lineWidth: visualMapModel.get('borderWidth')\n }\n }));\n },\n\n /**\n * @protected\n * @param {number} targetValue can be Infinity or -Infinity\n * @param {string=} visualCluster Only can be 'color' 'opacity' 'symbol' 'symbolSize'\n * @param {Object} [opts]\n * @param {string=} [opts.forceState] Specify state, instead of using getValueState method.\n * @param {string=} [opts.convertOpacityToAlpha=false] For color gradient in controller widget.\n * @return {*} Visual value.\n */\n getControllerVisual: function (targetValue, visualCluster, opts) {\n opts = opts || {};\n var forceState = opts.forceState;\n var visualMapModel = this.visualMapModel;\n var visualObj = {}; // Default values.\n\n if (visualCluster === 'symbol') {\n visualObj.symbol = visualMapModel.get('itemSymbol');\n }\n\n if (visualCluster === 'color') {\n var defaultColor = visualMapModel.get('contentColor');\n visualObj.color = defaultColor;\n }\n\n function getter(key) {\n return visualObj[key];\n }\n\n function setter(key, value) {\n visualObj[key] = value;\n }\n\n var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)];\n var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n zrUtil.each(visualTypes, function (type) {\n var visualMapping = mappings[type];\n\n if (opts.convertOpacityToAlpha && type === 'opacity') {\n type = 'colorAlpha';\n visualMapping = mappings.__alphaForOpacity;\n }\n\n if (VisualMapping.dependsOn(type, visualCluster)) {\n visualMapping && visualMapping.applyVisual(targetValue, getter, setter);\n }\n });\n return visualObj[visualCluster];\n },\n\n /**\n * @protected\n */\n positionGroup: function (group) {\n var model = this.visualMapModel;\n var api = this.api;\n layout.positionElement(group, model.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n },\n\n /**\n * @protected\n * @abstract\n */\n doRender: zrUtil.noop\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 echarts = require(\"../echarts\");\n\nvar preprocessor = require(\"./visualMap/preprocessor\");\n\nrequire(\"./visualMap/typeDefaulter\");\n\nrequire(\"./visualMap/visualEncoding\");\n\nrequire(\"./visualMap/ContinuousModel\");\n\nrequire(\"./visualMap/ContinuousView\");\n\nrequire(\"./visualMap/visualMapAction\");\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 * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","/**\n * 缓动代码来自 https://github.com/sole/tween.js/blob/master/src/Tween.js\n * @see http://sole.github.io/tween.js/examples/03_graphs.html\n * @exports zrender/animation/easing\n */\nvar easing = {\n /**\n * @param {number} k\n * @return {number}\n */\n linear: function (k) {\n return k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticIn: function (k) {\n return k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticOut: function (k) {\n return k * (2 - k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k;\n }\n\n return -0.5 * (--k * (k - 2) - 1);\n },\n // 三次方的缓动(t^3)\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicIn: function (k) {\n return k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicOut: function (k) {\n return --k * k * k + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k;\n }\n\n return 0.5 * ((k -= 2) * k * k + 2);\n },\n // 四次方的缓动(t^4)\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticIn: function (k) {\n return k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticOut: function (k) {\n return 1 - --k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k;\n }\n\n return -0.5 * ((k -= 2) * k * k * k - 2);\n },\n // 五次方的缓动(t^5)\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticIn: function (k) {\n return k * k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticOut: function (k) {\n return --k * k * k * k * k + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k * k;\n }\n\n return 0.5 * ((k -= 2) * k * k * k * k + 2);\n },\n // 正弦曲线的缓动(sin(t))\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalIn: function (k) {\n return 1 - Math.cos(k * Math.PI / 2);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalOut: function (k) {\n return Math.sin(k * Math.PI / 2);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalInOut: function (k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n },\n // 指数曲线的缓动(2^t)\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialIn: function (k) {\n return k === 0 ? 0 : Math.pow(1024, k - 1);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialOut: function (k) {\n return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialInOut: function (k) {\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if ((k *= 2) < 1) {\n return 0.5 * Math.pow(1024, k - 1);\n }\n\n return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n },\n // 圆形曲线的缓动(sqrt(1-t^2))\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularIn: function (k) {\n return 1 - Math.sqrt(1 - k * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularOut: function (k) {\n return Math.sqrt(1 - --k * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularInOut: function (k) {\n if ((k *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - k * k) - 1);\n }\n\n return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n },\n // 创建类似于弹簧在停止前来回振荡的动画\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticIn: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticInOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n if ((k *= 2) < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n }\n\n return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n // 在某一动画开始沿指示的路径进行动画处理前稍稍收回该动画的移动\n\n /**\n * @param {number} k\n * @return {number}\n */\n backIn: function (k) {\n var s = 1.70158;\n return k * k * ((s + 1) * k - s);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n backOut: function (k) {\n var s = 1.70158;\n return --k * k * ((s + 1) * k + s) + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n backInOut: function (k) {\n var s = 1.70158 * 1.525;\n\n if ((k *= 2) < 1) {\n return 0.5 * (k * k * ((s + 1) * k - s));\n }\n\n return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n },\n // 创建弹跳效果\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceIn: function (k) {\n return 1 - easing.bounceOut(1 - k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceOut: function (k) {\n if (k < 1 / 2.75) {\n return 7.5625 * k * k;\n } else if (k < 2 / 2.75) {\n return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75;\n } else if (k < 2.5 / 2.75) {\n return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375;\n } else {\n return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375;\n }\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceInOut: function (k) {\n if (k < 0.5) {\n return easing.bounceIn(k * 2) * 0.5;\n }\n\n return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n }\n};\nvar _default = easing;\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 MapDraw = require(\"../helper/MapDraw\");\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.extendComponentView({\n type: 'geo',\n init: function (ecModel, api) {\n var mapDraw = new MapDraw(api, true);\n this._mapDraw = mapDraw;\n this.group.add(mapDraw.group);\n },\n render: function (geoModel, ecModel, api, payload) {\n // Not render if it is an toggleSelect action from self\n if (payload && payload.type === 'geoToggleSelect' && payload.from === this.uid) {\n return;\n }\n\n var mapDraw = this._mapDraw;\n\n if (geoModel.get('show')) {\n mapDraw.draw(geoModel, ecModel, api, this, payload);\n } else {\n this._mapDraw.group.removeAll();\n }\n\n this.group.silent = geoModel.get('silent');\n },\n dispose: function () {\n this._mapDraw && this._mapDraw.remove();\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 eventTool = require(\"zrender/lib/core/event\");\n\nvar lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\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 dataViewLang = lang.toolbox.dataView;\nvar BLOCK_SPLITER = new Array(60).join('-');\nvar ITEM_SPLITER = '\\t';\n/**\n * Group series into two types\n * 1. on category axis, like line, bar\n * 2. others, like scatter, pie\n * @param {module:echarts/model/Global} ecModel\n * @return {Object}\n * @inner\n */\n\nfunction groupSeries(ecModel) {\n var seriesGroupByCategoryAxis = {};\n var otherSeries = [];\n var meta = [];\n ecModel.eachRawSeries(function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && (coordSys.type === 'cartesian2d' || coordSys.type === 'polar')) {\n var baseAxis = coordSys.getBaseAxis();\n\n if (baseAxis.type === 'category') {\n var key = baseAxis.dim + '_' + baseAxis.index;\n\n if (!seriesGroupByCategoryAxis[key]) {\n seriesGroupByCategoryAxis[key] = {\n categoryAxis: baseAxis,\n valueAxis: coordSys.getOtherAxis(baseAxis),\n series: []\n };\n meta.push({\n axisDim: baseAxis.dim,\n axisIndex: baseAxis.index\n });\n }\n\n seriesGroupByCategoryAxis[key].series.push(seriesModel);\n } else {\n otherSeries.push(seriesModel);\n }\n } else {\n otherSeries.push(seriesModel);\n }\n });\n return {\n seriesGroupByCategoryAxis: seriesGroupByCategoryAxis,\n other: otherSeries,\n meta: meta\n };\n}\n/**\n * Assemble content of series on cateogory axis\n * @param {Array.} series\n * @return {string}\n * @inner\n */\n\n\nfunction assembleSeriesWithCategoryAxis(series) {\n var tables = [];\n zrUtil.each(series, function (group, key) {\n var categoryAxis = group.categoryAxis;\n var valueAxis = group.valueAxis;\n var valueAxisDim = valueAxis.dim;\n var headers = [' '].concat(zrUtil.map(group.series, function (series) {\n return series.name;\n }));\n var columns = [categoryAxis.model.getCategories()];\n zrUtil.each(group.series, function (series) {\n var rawData = series.getRawData();\n columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function (val) {\n return val;\n }));\n }); // Assemble table content\n\n var lines = [headers.join(ITEM_SPLITER)];\n\n for (var i = 0; i < columns[0].length; i++) {\n var items = [];\n\n for (var j = 0; j < columns.length; j++) {\n items.push(columns[j][i]);\n }\n\n lines.push(items.join(ITEM_SPLITER));\n }\n\n tables.push(lines.join('\\n'));\n });\n return tables.join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\n}\n/**\n * Assemble content of other series\n * @param {Array.} series\n * @return {string}\n * @inner\n */\n\n\nfunction assembleOtherSeries(series) {\n return zrUtil.map(series, function (series) {\n var data = series.getRawData();\n var lines = [series.name];\n var vals = [];\n data.each(data.dimensions, function () {\n var argLen = arguments.length;\n var dataIndex = arguments[argLen - 1];\n var name = data.getName(dataIndex);\n\n for (var i = 0; i < argLen - 1; i++) {\n vals[i] = arguments[i];\n }\n\n lines.push((name ? name + ITEM_SPLITER : '') + vals.join(ITEM_SPLITER));\n });\n return lines.join('\\n');\n }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\n}\n/**\n * @param {module:echarts/model/Global}\n * @return {Object}\n * @inner\n */\n\n\nfunction getContentFromModel(ecModel) {\n var result = groupSeries(ecModel);\n return {\n value: zrUtil.filter([assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis), assembleOtherSeries(result.other)], function (str) {\n return str.replace(/[\\n\\t\\s]/g, '');\n }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n'),\n meta: result.meta\n };\n}\n\nfunction trim(str) {\n return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n}\n/**\n * If a block is tsv format\n */\n\n\nfunction isTSVFormat(block) {\n // Simple method to find out if a block is tsv format\n var firstLine = block.slice(0, block.indexOf('\\n'));\n\n if (firstLine.indexOf(ITEM_SPLITER) >= 0) {\n return true;\n }\n}\n\nvar itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g');\n/**\n * @param {string} tsv\n * @return {Object}\n */\n\nfunction parseTSVContents(tsv) {\n var tsvLines = tsv.split(/\\n+/g);\n var headers = trim(tsvLines.shift()).split(itemSplitRegex);\n var categories = [];\n var series = zrUtil.map(headers, function (header) {\n return {\n name: header,\n data: []\n };\n });\n\n for (var i = 0; i < tsvLines.length; i++) {\n var items = trim(tsvLines[i]).split(itemSplitRegex);\n categories.push(items.shift());\n\n for (var j = 0; j < items.length; j++) {\n series[j] && (series[j].data[i] = items[j]);\n }\n }\n\n return {\n series: series,\n categories: categories\n };\n}\n/**\n * @param {string} str\n * @return {Array.}\n * @inner\n */\n\n\nfunction parseListContents(str) {\n var lines = str.split(/\\n+/g);\n var seriesName = trim(lines.shift());\n var data = [];\n\n for (var i = 0; i < lines.length; i++) {\n // if line is empty, ignore it.\n // there is a case that a user forgot to delete `\\n`.\n var line = trim(lines[i]);\n\n if (!line) {\n continue;\n }\n\n var items = line.split(itemSplitRegex);\n var name = '';\n var value;\n var hasName = false;\n\n if (isNaN(items[0])) {\n // First item is name\n hasName = true;\n name = items[0];\n items = items.slice(1);\n data[i] = {\n name: name,\n value: []\n };\n value = data[i].value;\n } else {\n value = data[i] = [];\n }\n\n for (var j = 0; j < items.length; j++) {\n value.push(+items[j]);\n }\n\n if (value.length === 1) {\n hasName ? data[i].value = value[0] : data[i] = value[0];\n }\n }\n\n return {\n name: seriesName,\n data: data\n };\n}\n/**\n * @param {string} str\n * @param {Array.} blockMetaList\n * @return {Object}\n * @inner\n */\n\n\nfunction parseContents(str, blockMetaList) {\n var blocks = str.split(new RegExp('\\n*' + BLOCK_SPLITER + '\\n*', 'g'));\n var newOption = {\n series: []\n };\n zrUtil.each(blocks, function (block, idx) {\n if (isTSVFormat(block)) {\n var result = parseTSVContents(block);\n var blockMeta = blockMetaList[idx];\n var axisKey = blockMeta.axisDim + 'Axis';\n\n if (blockMeta) {\n newOption[axisKey] = newOption[axisKey] || [];\n newOption[axisKey][blockMeta.axisIndex] = {\n data: result.categories\n };\n newOption.series = newOption.series.concat(result.series);\n }\n } else {\n var result = parseListContents(block);\n newOption.series.push(result);\n }\n });\n return newOption;\n}\n/**\n * @alias {module:echarts/component/toolbox/feature/DataView}\n * @constructor\n * @param {module:echarts/model/Model} model\n */\n\n\nfunction DataView(model) {\n this._dom = null;\n this.model = model;\n}\n\nDataView.defaultOption = {\n show: true,\n readOnly: false,\n optionToContent: null,\n contentToOption: null,\n icon: 'M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28',\n title: zrUtil.clone(dataViewLang.title),\n lang: zrUtil.clone(dataViewLang.lang),\n backgroundColor: '#fff',\n textColor: '#000',\n textareaColor: '#fff',\n textareaBorderColor: '#333',\n buttonColor: '#c23531',\n buttonTextColor: '#fff'\n};\n\nDataView.prototype.onclick = function (ecModel, api) {\n var container = api.getDom();\n var model = this.model;\n\n if (this._dom) {\n container.removeChild(this._dom);\n }\n\n var root = document.createElement('div');\n root.style.cssText = 'position:absolute;left:5px;top:5px;bottom:5px;right:5px;';\n root.style.backgroundColor = model.get('backgroundColor') || '#fff'; // Create elements\n\n var header = document.createElement('h4');\n var lang = model.get('lang') || [];\n header.innerHTML = lang[0] || model.get('title');\n header.style.cssText = 'margin: 10px 20px;';\n header.style.color = model.get('textColor');\n var viewMain = document.createElement('div');\n var textarea = document.createElement('textarea');\n viewMain.style.cssText = 'display:block;width:100%;overflow:auto;';\n var optionToContent = model.get('optionToContent');\n var contentToOption = model.get('contentToOption');\n var result = getContentFromModel(ecModel);\n\n if (typeof optionToContent === 'function') {\n var htmlOrDom = optionToContent(api.getOption());\n\n if (typeof htmlOrDom === 'string') {\n viewMain.innerHTML = htmlOrDom;\n } else if (zrUtil.isDom(htmlOrDom)) {\n viewMain.appendChild(htmlOrDom);\n }\n } else {\n // Use default textarea\n viewMain.appendChild(textarea);\n textarea.readOnly = model.get('readOnly');\n textarea.style.cssText = 'width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;';\n textarea.style.color = model.get('textColor');\n textarea.style.borderColor = model.get('textareaBorderColor');\n textarea.style.backgroundColor = model.get('textareaColor');\n textarea.value = result.value;\n }\n\n var blockMetaList = result.meta;\n var buttonContainer = document.createElement('div');\n buttonContainer.style.cssText = 'position:absolute;bottom:0;left:0;right:0;';\n var buttonStyle = 'float:right;margin-right:20px;border:none;' + 'cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px';\n var closeButton = document.createElement('div');\n var refreshButton = document.createElement('div');\n buttonStyle += ';background-color:' + model.get('buttonColor');\n buttonStyle += ';color:' + model.get('buttonTextColor');\n var self = this;\n\n function close() {\n container.removeChild(root);\n self._dom = null;\n }\n\n eventTool.addEventListener(closeButton, 'click', close);\n eventTool.addEventListener(refreshButton, 'click', function () {\n var newOption;\n\n try {\n if (typeof contentToOption === 'function') {\n newOption = contentToOption(viewMain, api.getOption());\n } else {\n newOption = parseContents(textarea.value, blockMetaList);\n }\n } catch (e) {\n close();\n throw new Error('Data view format error ' + e);\n }\n\n if (newOption) {\n api.dispatchAction({\n type: 'changeDataView',\n newOption: newOption\n });\n }\n\n close();\n });\n closeButton.innerHTML = lang[1];\n refreshButton.innerHTML = lang[2];\n refreshButton.style.cssText = buttonStyle;\n closeButton.style.cssText = buttonStyle;\n !model.get('readOnly') && buttonContainer.appendChild(refreshButton);\n buttonContainer.appendChild(closeButton);\n root.appendChild(header);\n root.appendChild(viewMain);\n root.appendChild(buttonContainer);\n viewMain.style.height = container.clientHeight - 80 + 'px';\n container.appendChild(root);\n this._dom = root;\n};\n\nDataView.prototype.remove = function (ecModel, api) {\n this._dom && api.getDom().removeChild(this._dom);\n};\n\nDataView.prototype.dispose = function (ecModel, api) {\n this.remove(ecModel, api);\n};\n/**\n * @inner\n */\n\n\nfunction tryMergeDataOption(newData, originalData) {\n return zrUtil.map(newData, function (newVal, idx) {\n var original = originalData && originalData[idx];\n\n if (zrUtil.isObject(original) && !zrUtil.isArray(original)) {\n var newValIsObject = zrUtil.isObject(newVal) && !zrUtil.isArray(newVal);\n\n if (!newValIsObject) {\n newVal = {\n value: newVal\n };\n } // original data has name but new data has no name\n\n\n var shouldDeleteName = original.name != null && newVal.name == null; // Original data has option\n\n newVal = zrUtil.defaults(newVal, original);\n shouldDeleteName && delete newVal.name;\n return newVal;\n } else {\n return newVal;\n }\n });\n}\n\nfeatureManager.register('dataView', DataView);\necharts.registerAction({\n type: 'changeDataView',\n event: 'dataViewChanged',\n update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n var newSeriesOptList = [];\n zrUtil.each(payload.newOption.series, function (seriesOpt) {\n var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0];\n\n if (!seriesModel) {\n // New created series\n // Geuss the series type\n newSeriesOptList.push(zrUtil.extend({\n // Default is scatter\n type: 'scatter'\n }, seriesOpt));\n } else {\n var originalData = seriesModel.get('data');\n newSeriesOptList.push({\n name: seriesOpt.name,\n data: tryMergeDataOption(seriesOpt.data, originalData)\n });\n }\n });\n ecModel.mergeOption(zrUtil.defaults({\n series: newSeriesOptList\n }, payload.newOption));\n});\nvar _default = DataView;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"./helper/text\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\n\n/**\n * @alias zrender/graphic/Text\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nvar Text = function (opts) {\n // jshint ignore:line\n Displayable.call(this, opts);\n};\n\nText.prototype = {\n constructor: Text,\n type: 'text',\n brush: function (ctx, prevEl) {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true); // Use props with prefix 'text'.\n\n style.fill = style.stroke = style.shadowBlur = style.shadowColor = style.shadowOffsetX = style.shadowOffsetY = null;\n var text = style.text; // Convert to string\n\n text != null && (text += ''); // Do not apply style.bind in Text node. Because the real bind job\n // is in textHelper.renderText, and performance of text render should\n // be considered.\n // style.bind(ctx, this, prevEl);\n\n if (!textHelper.needDrawText(text, style)) {\n // The current el.style is not applied\n // and should not be used as cache.\n ctx.__attrCachedBy = ContextCachedBy.NONE;\n return;\n }\n\n this.setTransform(ctx);\n textHelper.renderText(this, ctx, text, style, null, prevEl);\n this.restoreTransform(ctx);\n },\n getBoundingRect: function () {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true);\n\n if (!this._rect) {\n var text = style.text;\n text != null ? text += '' : text = '';\n var rect = textContain.getBoundingRect(style.text + '', style.font, style.textAlign, style.textVerticalAlign, style.textPadding, style.textLineHeight, style.rich);\n rect.x += style.x || 0;\n rect.y += style.y || 0;\n\n if (textHelper.getStroke(style.textStroke, style.textStrokeWidth)) {\n var w = style.textStrokeWidth;\n rect.x -= w / 2;\n rect.y -= w / 2;\n rect.width += w;\n rect.height += w;\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(Text, Displayable);\nvar _default = Text;\nmodule.exports = _default;","import React from 'react'\nimport Link from 'next/link'\nimport classnames from 'classnames'\n\nimport { IFeedData } from 'lib/fetch-feed'\nimport Button from 'Components/button'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\ninterface IProps {\n hideLine?: boolean\n curIndex?: number\n leftContent: string\n rightContent?: string[]\n moreContent?: string\n moreLink?: string\n children?: React.ReactChild\n setCurIndex?: (e: number) => void\n setList?: (e: IFeedData[]) => void\n onClick?: (index: number) => void\n handleMoreClick?: () => void\n id?: string\n}\n\nexport default function Tab({\n curIndex = -1,\n setCurIndex,\n leftContent,\n rightContent,\n setList,\n hideLine,\n children,\n onClick,\n moreContent,\n moreLink,\n handleMoreClick,\n id,\n}: IProps) {\n return (\n \n

\n {leftContent}\n

\n {children}\n
\n {rightContent &&\n rightContent.map((item: string, index: number) => (\n // {\n // e.stopPropagation()\n // setCurIndex && setCurIndex(index)\n // setList && setList([])\n // onClick && onClick(index)\n // }}\n // >\n // {item}\n // \n\n {\n e.stopPropagation()\n setCurIndex && setCurIndex(index)\n setList && setList([])\n onClick && onClick(index)\n }}\n type=\"default\"\n >\n {item}\n \n ))}\n
\n
\n {moreLink ? (\n \n \n {moreContent || '查看更多'}\n \n \n ) : null}\n
\n \n \n )\n}\n","/* 同级对比 */\nimport React from 'react'\nimport Link from 'next/link'\nimport Image from 'Components/image'\nimport Tab from './common/tab'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nimport getLinkHref from 'lib/get-link-href'\nimport Button from 'Components/button'\n\nexport interface IPk {\n series_id: number\n series_name: string\n price: string\n cover_image: string\n}\n\ninterface IProps {\n seriesId: number\n compare: IPk[]\n className?: string\n}\n\nexport default function Pk({ seriesId, compare, className }: IProps) {\n return (\n
\n \n
\n {compare.slice(0, 3).map((item: IPk) => (\n \n {\n sendTeaCommEvent('click_same_series_card', {\n car_series_id: item.series_id,\n })\n }}\n >\n
\n \n
\n
\n

{item.series_name}

\n

{item.price}

\n
\n {\n eve.preventDefault()\n sendTeaCommEvent('click_same_series_btn', {\n car_series_id: item.series_id,\n click_same_series_btn: '对比',\n })\n window.open(\n `/auto/compare/${seriesId},${item.series_id}`,\n '_blank'\n )\n }}\n >\n 对比\n \n
\n \n ))}\n \n \n
\n )\n}\n","/* 实拍大图 */\nimport React from 'react'\nimport Link from 'next/link'\n\nimport getLinkHref from 'lib/get-link-href'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport Image from 'Components/image'\n\ninterface IPhoto {\n name: string\n realname: string\n list: [\n {\n toutiaothumburl: string\n id: number\n }\n ]\n}\n\ninterface IProps {\n seriesId: number\n photosData: any[]\n}\n\nexport default function Photos({ seriesId, photosData }: IProps) {\n if (!photosData || !photosData.length) {\n return null\n }\n const categoryList = React.useMemo(() => {\n return photosData.map((item: any) => ({\n text: item.realname,\n key: item.name,\n }))\n }, [photosData])\n\n function renderPhotos(data: IPhoto, which: number) {\n // 当前的图片类型\n const category = categoryList[which]\n return (\n
\n {data.list.slice(0, 4).map((item: IPhoto['list'][0], index: number) => (\n {\n sendTeaCommEvent('click_series_picture', {\n car_series_id: seriesId,\n sub_tab: category.text,\n })\n }}\n >\n \n \n \n \n \n
\n ))}\n \n \n )\n }\n\n return (\n
\n
\n
\n \n {\n sendTeaCommEvent('click_series_picture_more', {\n car_series_id: seriesId,\n })\n }}\n target=\"_blank\"\n >\n
\n 更多\n \n
\n \n \n
\n

\n 实拍大图\n

\n
\n
\n {photosData.length\n ? photosData.map((item: IPhoto, index: number) =>\n renderPhotos(item, index)\n )\n : null}\n
\n \n
\n )\n}\n","import React, { useState, useEffect } from 'react'\nimport get from 'lodash/get'\nimport Link from 'next/link'\nimport fetch from 'lib/decorated-fetch'\nimport classnames from 'classnames'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { getZT } from 'lib/zt-util'\nimport getUrl from 'lib/url'\nimport getLinkHref from 'lib/get-link-href'\n\nimport Button from 'Components/button'\nimport { useCityName } from 'Components/hooks'\n\nimport Tab from './common/tab'\nimport { ICar, IAction } from './store'\nimport getQuery from '@arsenal/arsenal/modules/getQuery'\n\nconst hoverIcon = require('static/hover-icon.png')\nconst hoverIcon2 = require('static/hover-icon@2x.png')\nconst hoverIcon3 = require('static/hover-icon@3x.png')\ninterface IOnline {\n type: string\n info: {\n name: string\n dealer_price: string\n price: string\n id: number\n year: number\n car_id: number\n }\n}\n\ninterface ICarItem {\n type: '1037'\n info: {\n name: string\n price: string\n id: number\n year: number\n car_id: number\n dealer_price: string\n owner_price_summary: {\n naked_price_avg: string\n price_num: number\n }\n }\n}\ninterface ITitle {\n type: '1036'\n info: {\n name: string\n }\n}\ntype IOption = ICarItem | ITitle\ninterface IProps {\n seriesId: number\n seriesName: string\n pkCars: ICar[]\n dispatch: React.Dispatch\n}\n\ninterface IYear {\n [year: string]: IOption[]\n}\ninterface IData {\n years: string[]\n yearsList: IYear | null\n}\n\nfunction hanldeOnlineData(data: IOption[], years: number[]): IYear {\n return years.reduce((acc: IYear, year) => {\n const filted = data.filter(item => {\n if (item.type === '1036') {\n return true\n }\n if (item.type === '1037') {\n return item.info.year === year\n }\n return false\n })\n acc[`${year}款`] = filted.filter((item, index) => {\n // 过滤连续两个1036的情况,这里可以改写成reduce\n const next = filted[index + 1]\n if (item.type === '1036' && (!next || next.type === '1036')) {\n return false\n }\n return true\n })\n return acc\n }, {})\n}\n\nexport default function CarModels({\n pkCars,\n dispatch,\n seriesId,\n seriesName,\n}: IProps) {\n const [curIndex, setCurIndex] = useState(0)\n const [data, setData] = useState({\n years: [],\n yearsList: null,\n })\n const [fold, setFold] = useState(true)\n const cityName = useCityName()\n useEffect(() => {\n if (typeof cityName === 'undefined') {\n return\n }\n // show_city_price=1 根据城市名出报价,不加此参数默认为全国最低价\n fetch(\n getUrl(\n `/motor/car_page/m/v1/series_all_json/?series_id=${seriesId}&city_name=${encodeURIComponent(\n cityName\n )}&show_city_price=1&m_station_dealer_price_v=1`\n )\n )\n .then(json => {\n const online = get(json, 'data.online', []) as IOption[]\n const offline = get(json, 'data.offline', []) as IOption[]\n const urban = get(json, 'data.urban', []) as IOption[]\n const years = online\n .filter(item => item.type === '1037')\n .map(item => (item as ICarItem).info.year)\n const yearsText = Array.from(new Set(years))\n .sort((a, b) => b - a)\n .map(item => `${item}款`)\n\n const yearsList = hanldeOnlineData(online, years)\n if (offline.length) {\n yearsText.push('停售')\n yearsList['停售'] = offline\n }\n if (urban.length) {\n yearsText.push('未售')\n yearsList['未售'] = urban\n }\n // setList([...online, [offline]])\n setData({\n years: yearsText,\n yearsList,\n })\n // 支持定位\n if (yearsText?.length && getQuery('anchorId') === 'carModels') {\n setTimeout(() => {\n const element = document?.querySelector(`#carModels`) as HTMLElement\n if (element?.offsetTop) {\n window.scrollTo(0, element?.offsetTop - 80)\n }\n }, 100)\n }\n })\n .catch(err => {\n // no-op\n })\n }, [cityName, seriesId])\n let yearData = null\n if (data.years.length && data.yearsList) {\n yearData = data.yearsList[data.years[curIndex]]\n }\n function renderCar(list: IOption[]) {\n const len = list.length\n if (!len) {\n return null\n }\n const newList: IOption[] = []\n list.forEach(item => {\n if (newList.filter(item => item.type === '1037').length < 6) {\n newList.push(item)\n }\n })\n const showList = fold ? newList : list\n return (\n
\n {showList.map((data, index) => {\n const isTitle = data.type === '1036'\n const isPkButtonDisable = pkCars.some(\n item => item.carId === (data as ICarItem).info.car_id\n )\n return (\n \n {isTitle ?
: null}\n\n {/*
*/}\n {/* {isTitle ? (*/}\n {/* {data.info.name}*/}\n {/* ) : (*/}\n {/* data.info.name*/}\n {/* )}*/}\n {/*
*/}\n\n
\n {isTitle ? (\n {data.info.name}\n ) : (\n
{data.info.name}
\n )}\n
\n\n \n {isTitle ? '指导价' : (data as ICarItem).info.price}\n
\n \n {isTitle ? (\n \n \n 经销商报价\n \n \n
\n
\n 经销商报价为车辆裸车最低价,不同商家优惠金额与方式不同,部分商家优惠会搭配优惠条件\n
\n
\n
\n \n ) : (data as ICarItem).info.dealer_price ? (\n \n \n \n {(data as ICarItem).info.dealer_price}\n \n {\n sendTeaCommEvent('click_style_button', {\n car_series_id: seriesId,\n car_style_id: (data as ICarItem).info.car_id,\n button_text: '询底价',\n sub_tab: String((data as ICarItem).info.year),\n })\n }}\n >\n 询底价\n \n \n \n ) : (\n 暂无报价\n )}\n
\n
\n {isTitle ? (\n
\n \n \n 车主参考价\n \n \n
\n
\n 车主参考价为近6个月所有车主购买裸车价的平均值,优先展示本地价格平均值,若无本地则展示全国价格平均值\n
\n
\n
\n \n {/*
真实
*/}\n
\n ) : /* eslint-disable indent */\n (data as ICarItem).info.owner_price_summary ? (\n {\n sendTeaCommEvent('show_series_page_owner_price_hover', {\n car_series_name: seriesName,\n car_series_id: seriesId,\n series_module_name: '全部车型',\n car_style_id: (data as ICarItem).info.car_id,\n car_style_name: (data as ICarItem).info.name,\n })\n }}\n >\n \n {\n (data as ICarItem).info.owner_price_summary\n .naked_price_avg\n }\n 万\n
\n
\n
\n 共\n \n {\n (data as ICarItem).info.owner_price_summary\n .price_num\n }\n 条\n \n 条车主参考价\n
\n 解锁更多车主参考价,扫码下载懂车帝App\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n 共\n \n {\n (data as ICarItem).info.owner_price_summary\n .price_num\n }\n 条\n \n 条车主参考价\n
\n 解锁更多车主参考价,扫码下载懂车帝App\n
\n
\n
\n
\n
\n
\n
\n \n
\n ) : (\n 暂无\n )}\n
\n
\n {isTitle ? (\n '车型详情'\n ) : (\n \n \n \n {\n sendTeaCommEvent('click_style_button', {\n car_series_id: seriesId,\n car_style_id: (data as ICarItem).info.car_id,\n button_text: '参数',\n sub_tab: String((data as ICarItem).info.year),\n })\n }}\n >\n 配置\n \n \n \n \n \n {\n sendTeaCommEvent('click_style_button', {\n car_series_id: seriesId,\n car_style_id: (data as ICarItem).info.car_id,\n button_text: '图片',\n sub_tab: String((data as ICarItem).info.year),\n })\n }}\n >\n 图片\n \n \n \n {\n e.stopPropagation()\n e.nativeEvent.stopImmediatePropagation()\n dispatch({\n type: 'togglePk',\n payload: true,\n })\n dispatch({\n type: 'addCar',\n payload: {\n carId: (data as ICarItem).info.car_id,\n carName: data.info.name,\n },\n })\n sendTeaCommEvent('click_style_button', {\n car_series_id: seriesId,\n car_style_id: (data as ICarItem).info.car_id,\n button_text: isPkButtonDisable ? '已对比' : '对比',\n sub_tab: String((data as ICarItem).info.year),\n })\n }}\n className={`button button-config`}\n >\n {isPkButtonDisable ? '已对比' : '对比'}\n \n \n )}\n
\n
\n )\n })}\n \n
\n )\n }\n\n return (\n yearData && (\n
\n \n {renderCar(yearData)}\n {yearData.length > 6 && fold ? (\n {\n setFold(!fold)\n sendTeaCommEvent('click_series_style_more', {\n car_series_id: seriesId,\n sub_tab: data?.years[curIndex],\n })\n }}\n >\n {fold ? '查看更多' : '收起'}\n \n

\n ) : null}\n \n
\n )\n )\n}\n","/* 渲染feed流 */\n\nimport React, { useState, useEffect, useRef } from 'react'\nimport ScrollLoader from 'Components/scroll-loader'\nimport get from 'lodash/get'\n\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport fetchFeed, { IFeedData } from 'lib/fetch-feed'\n\nimport Loading from 'Components/loading'\nimport Article from 'Components/article'\nimport FeedAd from 'Components/feed-ad'\nimport { IFeedAdData } from './hooks'\nconst empty_icon = require('static/empty-envelope.png')\ninterface IProps {\n category: string\n subCategory?: string\n /**\n * 来自哪个页面,目前取值\n * * home 首页\n * * article 文章页\n * * series_home 车系详情\n */\n page: 'home' | 'article' | 'series_home' | 'feed'\n concern_id?: number\n onClick?: (\n group_id: string | number,\n content_type: number,\n index?: number\n ) => void\n feedAd?: IFeedAdData[]\n gid?: string\n contentType?: string\n from?: string\n}\n\nfunction Feed({\n category,\n subCategory = '',\n concern_id,\n onClick,\n feedAd,\n gid,\n page,\n contentType,\n}: IProps) {\n const [list, updateList] = useState([])\n // 是否在加载中\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n setLoading(true)\n updateList([])\n fetchFeed({\n tt_from: 'enter_auto',\n concern_id,\n category,\n sub_category: subCategory,\n })\n .then(data => {\n updateList(get(data, 'data'))\n setLoading(false)\n })\n .catch(() => {\n setLoading(false)\n })\n }, [category, concern_id, subCategory])\n\n /* 懒加载 */\n function loadMoreHandler() {\n let lastFeedItem: IFeedData | null = null\n if (list.length > 0) {\n lastFeedItem = list[list.length - 1]\n }\n setLoading(true)\n fetchFeed({\n tt_from: 'load_more',\n sub_category: subCategory,\n category,\n count: 20,\n concern_id,\n max_behot_time: get(lastFeedItem, 'info.behot_time', undefined),\n })\n .then(data => {\n sendTeaCommEvent('loadmore_home_news')\n updateList(list.concat(get(data, 'data')))\n setLoading(false)\n })\n .catch(() => {\n setLoading(false)\n })\n }\n\n let renderIdx = 0\n\n return (\n <>\n \n
\n {list && list.length\n ? list.map((item: IFeedData, index) => {\n // 过滤非图文视频(不准确) // TODO: 确认这里过滤掉的类型具体有哪些\n // https://ee.byted.org/madeira/browse/service_rpc/idl/blob/master/motor/cell.thrift/\n if (item.type < 2000 || item.type >= 2300) {\n return null\n }\n renderIdx++\n if (feedAd && feedAd.length) {\n const findAd = feedAd.find(adItem => {\n return adItem.fix_position === renderIdx\n })\n if (findAd) {\n return (\n \n )\n }\n }\n const info = get(item, 'info', {}) as IFeedData['info']\n return (\n \n )\n })\n : null}\n
\n \n {loading ? : null}\n {!loading && list.length === 0 ? (\n \n \n 暂无文章\n \n ) : null}\n \n \n )\n}\nexport default Feed\n","/* 热门资讯 */\nimport React, { useState, useEffect } from 'react'\n\nimport { IFeedData } from 'lib/fetch-feed'\n\nimport Feed from 'Components/feed-new-series'\nimport Tab from './common/tab'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\ninterface IProps {\n seriesId: number\n}\n\nconst conditions = ['all', 'all', 'pingche']\nconst subCategory = ['', 'video', '']\n\nexport default function PopularContent({ seriesId }: IProps) {\n const [curIndex, setCurIndex] = useState(0)\n const [list, setList] = useState([])\n\n return (\n
\n {\n sendTeaCommEvent('click_series_picture_list_tab', {\n car_series_id: seriesId,\n sub_tab: conditions[index],\n })\n }}\n />\n
\n {\n sendTeaCommEvent('click_series_hot_news', {\n car_series_id: seriesId,\n group_id,\n sub_tab: conditions[curIndex],\n content_type,\n })\n }}\n />\n
\n \n
\n )\n}\n","import classNames from 'classnames'\nimport React from 'react'\n\ninterface IIndicator {\n align?: 'left' | 'right' | 'center'\n name: string\n value?: number\n className?: string\n}\n\nexport default function Indicator(props: IIndicator) {\n const { align, name, value, className } = props\n\n return (\n
\n {name}\n {value && {Number(value).toFixed(1)}}\n \n
\n )\n}\n","import classNames from 'classnames'\nimport React, { useMemo } from 'react'\n\ninterface IBar {\n color: string\n colorVacant: string\n percent: number\n className?: string\n}\n\nexport default function Bar(props: IBar) {\n const { color, colorVacant, percent, className } = props\n const computedPercent = useMemo(() => {\n if (percent < 0) {\n return 0\n } else if (percent > 100) {\n return 100\n } else {\n return percent\n }\n }, [percent])\n return (\n
\n \n \n \n
\n )\n}\n","import React, { Fragment } from 'react'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nconst dcar_score_icon = require('static/dcar-score.png')\n\nexport interface IRankItem {\n series_id: number\n series_name: string // 车系名称\n score: number // 懂车分\n rank: number // 排名\n single_highest_desc: string // 单项最高描述\n single_highest_score: number // 单项最高得分\n}\nexport default function SeriesRank({\n rankItems,\n seriesType,\n}: {\n rankItems: IRankItem[]\n seriesType: string\n}) {\n return (\n <>\n
同级{seriesType}排行
\n
\n 排名\n 对比车系\n \n 单项最高\n
\n
\n {rankItems.map((rankItem, index) => {\n const {\n rank,\n series_id,\n series_name,\n score,\n single_highest_desc,\n single_highest_score,\n } = rankItem\n return (\n \n {rank}\n \n {\n sendTeaCommEvent('click_dcar_score_series_rank', {\n rank: index,\n car_series_id: series_id,\n car_series_name: series_name,\n })\n }}\n >\n {series_name}\n \n \n \n {score ? `${(score / 100).toFixed(2)}分` : '暂无评分'}\n \n \n {single_highest_desc && single_highest_score && (\n <>\n \n {single_highest_desc}\n \n \n {single_highest_score}分\n \n \n )}\n \n \n )\n })}\n
\n\n \n \n )\n}\n","import React, { useEffect, useMemo, useState } from 'react'\nimport { stringify } from 'querystring'\nimport RadarChart from 'Components/radar-chart'\nimport Indicator from './indicator'\nimport Stars from 'Components/stars'\nimport Bar from 'Components/bar'\nimport { IAuthor } from 'Components/author'\nimport SeriesRank, { IRankItem } from './series-rank'\nimport classNames from 'classnames'\nimport fetch from 'lib/decorated-fetch'\n\nconst dcar_score_icon = require('static/dcar-score.png')\nconst star_icon = require('static/star-bling.png')\nconst star_modest_icon = require('static/star-modest.png')\nconst wave_point_icon = require('static/wave-point.png')\ninterface IScoreInfoItem {\n name: string\n value: number\n}\ninterface IReviewCountInfo {\n range1: number\n range2: number\n range3: number\n range4: number\n range5: number\n total: number\n}\n\nexport default function DCarScore({\n series_id,\n className,\n}: {\n series_id: number\n className?: string\n}) {\n const [scoreInfo, setScoreInfo] = useState([])\n const [score, setScore] = useState(0)\n const [reviewCountInfo, setReviewCountInfo] = useState()\n const [authors, setAuthors] = useState([])\n useEffect(() => {\n if (!series_id) {\n return\n }\n const fetchData = async () => {\n const query = {\n series_id,\n data_from: 'pc_station',\n }\n\n const json = await fetch(\n `/motor/car_score/api/m/v1/landing_page/get_detail/?${stringify(query)}`\n )\n setScoreInfo(json.data?.score_info || [])\n setScore(json.data?.series_info?.score || 0)\n setReviewCountInfo(json.data?.review_count_info)\n setAuthors(json.data?.authors || [])\n }\n try {\n fetchData()\n } catch (err) {\n console.error(err)\n }\n }, [series_id])\n\n const sortedScoreInfo = useMemo(\n () =>\n ['外观', '动力', '操控', '舒适性', '空间', '配置', '内饰'].map(label => ({\n name: label,\n value: scoreInfo.find(ele => ele.name === label)?.value,\n })),\n [scoreInfo]\n )\n\n const remark = useMemo(() => {\n if (!score) {\n return '暂无评分'\n }\n if (score < 1) {\n return '极差'\n } else if (score < 2) {\n return '较差'\n } else if (score < 3) {\n return '一般'\n } else if (score < 4) {\n return '良好'\n } else if (score <= 5) {\n return '优秀'\n }\n }, [score])\n\n const option = useMemo(() => {\n if (scoreInfo.length === 0) {\n return\n }\n const [\n { value: appearance_score },\n { value: power_score },\n { value: control_score },\n { value: comfort_score },\n { value: space_score },\n { value: configuration_score },\n { value: interiors_score },\n ] = scoreInfo\n const MAX = 5\n return {\n title: {\n text: score ? (score / 100).toFixed(2) : '暂无评分',\n x: 'center',\n y: 'center',\n textStyle: {\n color: '#606370',\n lineHeight: '18px',\n fontSize: 10,\n },\n },\n radar: {\n // shape: 'circle',\n center: ['50%', '50%'],\n indicator: scoreInfo.map(scoreInfoItem => ({\n name: `${scoreInfoItem.name}`,\n max: MAX,\n })),\n radius: 45,\n splitNumber: 3,\n silent: true,\n nameGap: 13,\n shape: 'circle',\n splitArea: {\n areaStyle: {\n color: '#f2f4fa',\n },\n },\n name: {\n textStyle: {\n color: '#1f2129',\n fontSize: 10,\n lineHeight: 14,\n },\n show: false,\n },\n splitLine: {\n lineStyle: {\n color: '#c9cbd6',\n width: 0.6,\n },\n },\n axisLine: {\n lineStyle: {\n color: '#c9cbd6',\n width: 0.6,\n },\n },\n },\n series: [\n {\n type: 'radar',\n symbol: 'none',\n lineStyle: {\n color: 'rgba(255, 206, 52, 100)',\n },\n areaStyle: {\n normal: {\n color: {\n type: 'radial',\n x: 0.5,\n y: 0.54,\n r: 0.5,\n colorStops: [\n {\n color: 'rgba(255, 208, 66, 60)',\n offset: 0,\n },\n {\n color: 'rgba(255, 118, 36, 100)',\n offset: 1,\n },\n ],\n },\n },\n },\n\n data: [\n {\n value: [\n appearance_score,\n interiors_score,\n configuration_score,\n space_score,\n comfort_score,\n control_score,\n power_score,\n ],\n },\n ],\n },\n ],\n }\n }, [scoreInfo, score])\n\n const ratios = useMemo(() => {\n const {\n range1 = 0,\n range2 = 0,\n range3 = 0,\n range4 = 0,\n range5 = 0,\n total = 0,\n } = reviewCountInfo || {}\n const ratios = [\n ((range1 / total) * 100).toFixed(0),\n ((range2 / total) * 100).toFixed(0),\n ((range3 / total) * 100).toFixed(0),\n ((range4 / total) * 100).toFixed(0),\n ((range5 / total) * 100).toFixed(0),\n ]\n return ratios.map(ratio =>\n Number.isNaN(Number(ratio)) ? 0 : Number(ratio)\n )\n }, [reviewCountInfo])\n\n const [seriesType, setSeriesType] = useState('')\n const [rankItems, setRankItems] = useState([])\n\n useEffect(() => {\n const fetchData = async () => {\n const query = {\n series_id,\n }\n const json = await fetch(\n `/motor/m_api/pc_compared_series_rank?${stringify(query)}`\n ).catch(e => {\n // no-op\n })\n setRankItems(json?.data?.list || [])\n setSeriesType(json?.data?.series_type)\n }\n fetchData()\n }, [])\n\n return score > 0 ? (\n
\n \n
\n \n

每次评分都源自一次真实的体验

\n
\n\n
\n {score}\n \n “{remark}”\n
\n
\n \n
\n
\n 4分-5分\n \n \n \n {ratios[4]}%\n 3分-4分\n \n \n \n {ratios[3]}%\n 2分-3分\n \n \n \n {ratios[2]}%\n 1分-2分\n \n \n \n {ratios[1]}%\n 0分-1分\n \n \n \n {ratios[0]}%\n
\n {authors.length > 0 && (\n
\n \n {authors.map(author => (\n \n ))}\n \n \n 共{reviewCountInfo?.total || 0}人评分\n \n
\n )}\n {option && (\n <>\n \n {sortedScoreInfo.map(({ name, value }, index) => {\n let align = 'left'\n if (index === 0) {\n align = 'center'\n } else if (index <= 3) {\n align = 'right'\n } else {\n align = 'left'\n }\n return (\n \n \n \n )\n })}\n \n )}\n {rankItems.length > 0 && (\n
\n
\n \n
\n )}\n\n \n
\n ) : null\n}\n","import Cookies from '@arsenal/arsenal/modules/Cookies'\nimport classNames from 'classnames'\nimport Button from 'Components/button'\nimport getCarIds from 'lib/get-cars-from-series'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport React, { useEffect, useState } from 'react'\nimport fetch from 'lib/decorated-fetch'\nimport serializeObject from '@arsenal/arsenal/modules/serializeObject'\ninterface ICar {\n series_id: number\n cover_image: string\n min_price: number\n max_price: number\n series_name: string\n}\n\nfunction Card(props: ICar) {\n const { series_id, cover_image, min_price, max_price, series_name } = props\n const [carIds, setCarIds] = useState('')\n\n useEffect(() => {\n getCarIds(`${series_id}`)\n .then(setCarIds)\n .catch((err) => {\n // TODO:\n })\n }, [series_id])\n\n return (\n
\n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n \n \n\n
\n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n {series_name}\n \n \n {\n sendTeaCommEvent('click_favour_series_price', {\n car_series_id: series_id,\n })\n }}\n >\n {`${min_price}-${max_price}`}万\n \n
\n \n
\n )\n}\n\nexport default function Favour({\n className,\n quantity = 6,\n}: {\n className?: string\n quantity?: number\n}) {\n const [carItems, setCarItems] = useState([])\n useEffect(() => {\n const web_id = Cookies('tt_webid') || ''\n const fetchData = async () => {\n const query = {\n web_id,\n }\n const json = await fetch(\n `/motor/m_api/pc_recommend_series?${serializeObject(query)}`\n )\n setCarItems(json?.data?.recommend_series?.list || [])\n }\n try {\n fetchData()\n } catch (err) {\n console.error(err)\n }\n }, [])\n return carItems.length > 0 ? (\n
\n
猜你喜欢
\n
    \n {carItems.slice(0, quantity).map((carItem, index) => (\n
  • \n \n
  • \n ))}\n
\n \n
\n ) : null\n}\n","import classNames from 'classnames'\nimport React from 'react'\n\ninterface ISubNav {\n align: 'left' | 'right' | 'center'\n className?: string\n tabs: {\n value: string\n text: string\n }[]\n tabNow: string\n onClick?: (tab: string) => void\n}\n\nexport default function SubNav(props: ISubNav) {\n const { align, tabs, className, tabNow, onClick } = props\n return (\n <>\n
\n {tabs.map(({ value, text }, index) => (\n {\n if (onClick) {\n onClick(value)\n }\n }}\n key={`${value} ${index}`}\n >\n {text}\n \n ))}\n
\n
\n \n \n )\n}\n","import classNames from 'classnames'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { stringify } from 'querystring'\nimport SubNav from './sub-nav'\nimport formatTime from 'lib/format-time'\nimport Button from 'Components/button'\nimport Modal from 'Components/modal'\nimport Publisher, { IPB } from 'Components/publisher/publisher'\nimport { CloseIconForPublisher } from 'Components/publisher/close-icon'\nimport { useRouter } from 'next/router'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport Link from 'next/link'\nimport fetch from 'lib/decorated-fetch'\nimport useLoginCheckCallback from 'Components/hooks/use-login-check-callback'\nconst show_more_icon = require('static/show-more.png')\nconst replace_img = require('static/selected-dafault.png')\ninterface RepostInfo {\n title: string\n image_url: string\n item_id_str: number\n behot_time: number\n comment_count: number\n is_pgc_article?: 0 | 1\n}\n\ninterface ICommunity {\n series_id: string\n series_name: string\n motor_id: number\n}\n\nexport default function Community(props: ICommunity) {\n const { series_id, series_name = '当前车友圈', motor_id } = props\n const router = useRouter()\n const [tabNow, setTabNow] = useState('selected')\n const [selectedReposts, setSelectedReposts] = useState([])\n const [qaReposts, setQAReposts] = useState([])\n const [showPublisher, setShowPublisher] = useState(false)\n const handleClick = useCallback((payload) => {\n setTabNow(payload)\n }, [])\n useEffect(() => {\n const fetchData = async () => {\n const query = {\n series_id,\n }\n const json = await fetch(\n `/motor/m_api/pc_hot_community_content?${stringify(query)}`\n ).catch((e) => {\n // no-op\n })\n setSelectedReposts(\n json?.data?.list?.map((item: any) => ({\n ...item.info?.repost_info,\n is_pgc_article: item.is_pgc_article,\n })) || []\n )\n }\n try {\n fetchData()\n } catch (err) {\n console.error(err)\n }\n }, [])\n useEffect(() => {\n const fetchData = async () => {\n const query = {\n series_id,\n type: 'cheyou_wenda',\n }\n const json = await fetch(\n `/motor/m_api/pc_series_community_content?${stringify(query)}`\n ).catch((e) => {\n // no-op\n })\n setQAReposts(\n json?.data?.map((item: any) => ({\n ...item.info?.repost_info,\n behot_time: item.info?.behot_time,\n comment_count: item.info?.comment_count,\n })) || []\n )\n }\n try {\n fetchData()\n } catch (err) {\n console.error(err)\n }\n }, [])\n const handleTogglePublisher = useLoginCheckCallback(\n useCallback(() => {\n sendTeaCommEvent('click_series_forum_publish', {\n car_series_id: series_id,\n motor_id,\n })\n setShowPublisher(!showPublisher)\n }, [showPublisher]),\n useMemo(() => {\n return {\n enter_method: 'publish',\n }\n }, [])\n )\n\n const handlePublish = async (props: IPB) => {\n const { isTimer } = props\n\n if (!isTimer) {\n router.push(`/community/${series_id}`)\n }\n\n setShowPublisher(false)\n }\n const reposts = useMemo(() => {\n if (tabNow === 'selected') {\n return selectedReposts\n } else {\n return qaReposts\n }\n }, [tabNow, selectedReposts, qaReposts])\n\n const tabs = useMemo(() => {\n const tabs = []\n if (selectedReposts.length > 0) {\n tabs.push({\n text: '热门',\n value: 'selected',\n })\n }\n if (qaReposts.length > 0) {\n tabs.push({\n text: '问答',\n value: 'qa',\n })\n }\n setTabNow(tabs[0]?.value || '')\n return tabs\n }, [selectedReposts, qaReposts])\n return (\n
\n 车友圈\n \n {tabs.length > 0 ? (\n
\n {tabNow === 'selected' ? (\n <>\n
\n {reposts.slice(0, 2).map((repost: any, index: number) => {\n const {\n title,\n image_url,\n item_id_str: item_id = 0,\n is_pgc_article,\n } = repost || {}\n return (\n {\n sendTeaCommEvent('click_series_forum_pic', {\n sub_tab: '热门',\n car_series_id: series_id,\n motor_id,\n group_id: item_id,\n })\n }}\n >\n \n \n \n\n \n {title}\n \n \n )\n })}\n
\n\n
\n {reposts.slice(2, 10).map((repost, index) => {\n const {\n title,\n image_url,\n item_id_str: item_id,\n is_pgc_article,\n } = repost\n return (\n \n {\n sendTeaCommEvent('click_series_forum_group', {\n sub_tab: '热门',\n car_series_id: series_id,\n motor_id,\n group_id: item_id,\n rank: index,\n })\n }}\n >\n {title}\n \n \n )\n })}\n
\n \n ) : (\n <>\n {qaReposts.slice(0, 3).map((item, index) => (\n {\n sendTeaCommEvent('click_series_forum_qa', {\n sub_tab: '问答',\n car_series_id: series_id,\n motor_id,\n group_id: item.item_id_str,\n rank: index,\n })\n }}\n >\n
\n

{item.title}

\n \n {formatTime(item.behot_time * 1000)}\n \n \n {item.comment_count}个回答\n \n
\n \n ))}\n {qaReposts.length > 0 && (\n \n {\n sendTeaCommEvent('click_series_forum_qa_more', {\n car_series_id: series_id,\n motor_id,\n sub_tab: '问答',\n })\n }}\n >\n 查看更多问答\n \n \n \n )}\n \n )}\n
\n ) : (\n <>\n
\n 暂无热门内容和问答\n \n 发布\n \n
\n\n \n \n \n \n )}\n\n \n
\n )\n}\n","import React, { useState } from 'react'\nimport Button from 'Components/button'\nimport classNames from 'classnames'\nimport { secToMin } from 'lib/format-time'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nconst play_icon = require('static/play-video.png')\nconst live_show_icon = require('static/brown-live-show.gif')\nconst default_article_icon = require('static/default-article.png')\ninterface ICardInfo {\n banner_type?: 'live' | 'article'\n title: string\n cover_url: string\n uid: number\n user_info: {\n username: string\n avatar: string\n }\n unique_id_str: string\n video_duration?: number\n comment_count?: number\n abstract_content: string\n series_id: number\n}\n\nexport default function ArticleCard(article: ICardInfo) {\n const {\n banner_type,\n title,\n cover_url,\n user_info,\n unique_id_str: unique_id,\n video_duration = 0,\n comment_count,\n abstract_content,\n uid,\n series_id,\n } = article || {}\n const { username, avatar } = user_info || {}\n const [shouldShowAbstract, setShowAbstract] = useState(false)\n const titleRef = (node: HTMLParagraphElement) => {\n if (node === null) {\n return\n }\n const compStyles = window.getComputedStyle(node)\n const height = compStyles?.getPropertyValue('height')\n if (Number(height?.slice(0, height.length - 2)) <= 24) {\n setShowAbstract(true)\n } else {\n setShowAbstract(false)\n }\n }\n\n return (\n {\n sendTeaCommEvent('click_series_module_group', {\n sub_tab: banner_type ? '文章' : '视频',\n group_id: unique_id,\n car_series_id: series_id,\n })\n }}\n >\n
\n
\n
\n \n
\n {video_duration > 0 && (\n \n \n {secToMin(video_duration)}\n \n )}\n
\n
\n \n {title}\n

\n {banner_type === 'live' && (\n \n )}\n {banner_type !== 'live' && shouldShowAbstract && (\n

\n {abstract_content}\n

\n )}\n
\n \n \n \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n {username}\n \n {comment_count !== undefined && (\n {comment_count}人评论\n )}\n
\n
\n
\n \n \n )\n}\n","const groupBy = (arr: T[], len: number) => {\n if (!arr || arr.length === 0 || len <= 0) {\n return []\n }\n const result = []\n let i = 0\n let sub: T[] = []\n for (let j = 0; j < arr.length; j++) {\n if (i === len) {\n result.push(sub)\n sub = []\n i = 0\n }\n sub.push(arr[j])\n i++\n if (j === arr.length - 1) {\n result.push(sub)\n }\n }\n return result\n}\nexport default groupBy\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport SubNav from './sub-nav'\nimport { stringify } from 'querystring'\nimport Cookies from '@arsenal/arsenal/modules/Cookies'\nimport ArticleCard from './article-card'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport SwiperCore, { Pagination } from 'swiper'\nimport groupBy from 'lib/groupBy'\nimport { useCityName } from 'Components/hooks'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport Link from 'next/link'\nSwiperCore.use([Pagination])\nimport fetch from 'lib/decorated-fetch'\nconst show_more_icon = require('static/show-more.png')\nconst empty_icon = require('static/empty-envelope.png')\ninterface IArticles {\n series_id: number\n}\n\ninterface IVideoInfo {\n repost_info: {\n title: string // 标题\n item_id_str: string // GID\n image_url: string // 封面\n }\n user_info: {\n avatar_url: string // 用户头像\n name: string // 昵称\n user_id: number\n }\n video_duration: number // 视频时长(单位s)\n comment_count?: number // 评论人数\n abstract_content: string\n}\ninterface IArticleInfo {\n banner_type: 'live' | 'article'\n title: string\n cover_url: string\n user_info: {\n username: string\n avatar: string\n }\n uid: number\n unique_id_str: string\n comment_count: number\n abstract_content: string\n}\n\nexport default function Articles(props: IArticles) {\n const { series_id } = props\n const [tabNow, setTabNow] = useState('article')\n const [articles, setArticles] = useState([])\n const [videos, setVideos] = useState([])\n const cityName = useCityName()\n useEffect(() => {\n const fetchData = async () => {\n const query = {\n series_id,\n city_name: cityName,\n }\n const json = await fetch(\n `/motor/m_api/pc_series_entrance_list?${stringify(query)}`\n ).catch((e) => {\n // no-op\n })\n setArticles(json?.data?.list?.map((item: any) => item.detail) || [])\n }\n try {\n fetchData()\n } catch (err) {\n console.error(err)\n }\n }, [])\n useEffect(() => {\n const web_id: any = Cookies('tt_webid') || ''\n const query = {\n concern_id: series_id,\n category: 'video',\n device_platform: 'web',\n channel: 'web',\n tt_from: 'enter_auto',\n web_id,\n motor_feed_extra_params: JSON.stringify({\n refresh_num: 0,\n loadmore_num: 0,\n feed_type: 0,\n new_feed: true,\n }),\n sub_category: 'video',\n impression_info: JSON.stringify({\n page_id: 'page_car_series',\n sub_tab: 'video',\n }),\n source: 'pc',\n }\n const fetchData = async () => {\n const json = await fetch(\n `/motor/stream_entrance/get_feed_pc/v47/?${stringify(query)}`\n ).catch((e) => {\n // no-op\n })\n setVideos(json?.data?.slice?.(0, 6)?.map((e: any) => e?.info) || [])\n }\n try {\n fetchData()\n } catch (err) {\n console.error(err)\n }\n }, [])\n\n const handleClick = useCallback((payload) => {\n setTabNow(payload)\n }, [])\n const tabs = useMemo(() => {\n const tabs = []\n if (articles.length > 0) {\n tabs.push({\n value: 'article',\n text: '文章',\n })\n }\n if (videos.length > 0) {\n tabs.push({\n value: 'video',\n text: '视频',\n })\n }\n if (tabs.length === 0) {\n tabs.push({\n value: 'article',\n text: '文章',\n })\n }\n setTabNow(tabs[0]?.value || '')\n return tabs\n }, [articles, videos])\n const paginationRef = useRef(null)\n const params = {\n pagination: {\n el: paginationRef.current,\n clickable: true,\n },\n }\n\n const cards = useMemo(() => {\n return groupBy(\n tabNow === 'article'\n ? articles.map((article) => (\n \n ))\n : videos.map((video) => {\n const {\n repost_info,\n user_info,\n video_duration,\n comment_count,\n abstract_content,\n } = video\n const {\n title,\n item_id_str: unique_id,\n image_url: cover_url,\n } = repost_info || {}\n const {\n avatar_url: avatar,\n name: username,\n user_id: uid,\n } = user_info || {}\n return (\n \n )\n }),\n 2\n ).map((group, index) => {\n return (\n \n
{group}
\n
\n )\n })\n }, [tabNow, articles, videos])\n return (\n
\n \n {cards.length > 0 && (\n \n {\n sendTeaCommEvent('click_series_group_module_more', {\n car_series_id: series_id,\n sub_tab: tabNow === 'article' ? '文章' : '视频',\n })\n }}\n >\n 更多{tabNow === 'article' ? '文章' : '视频'}\n \n \n \n )}\n {cards.length === 0 && (\n \n \n 暂无文章\n \n )}\n \n {cards}\n
\n \n \n
\n )\n}\n","import React, { useEffect, useState } from 'react'\nimport { stringify } from 'querystring'\nimport classNames from 'classnames'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport fetch from 'lib/decorated-fetch'\ninterface ICarItem {\n series_id: number\n min_price: number\n max_price: number\n series_name: string\n}\n\nexport default function CarList({\n series_id,\n className,\n}: {\n series_id: number\n className?: string\n}) {\n const [carList, setCarList] = useState([])\n useEffect(() => {\n const fetchData = async () => {\n const json = await fetch(\n `/motor/m_api/pc_series_info_in_brand?${stringify({ series_id })}`\n ).catch(e => {\n // no-op\n })\n setCarList(json?.data?.list || [])\n }\n fetchData()\n }, [])\n\n return carList.length > 0 ? (\n
\n
同品牌车系
\n
    \n {carList.slice(0, 8).map(carItem => (\n
  • \n {\n sendTeaCommEvent('click_same_brand_series_card', {\n car_series_id: carItem.series_id,\n })\n }}\n >\n {carItem.series_name}\n \n \n {carItem.min_price}-{carItem.max_price}万\n \n
  • \n ))}\n
\n \n
\n ) : null\n}\n","import React, { useEffect, useReducer } from 'react'\n\nimport Header, { IHeader } from 'Pages/auto/series/header'\nimport Pk, { IPk } from './pk'\nimport Photos from './photos'\nimport Models from 'Pages/auto/series/all-car-models'\nimport PopularContent from './popular-content'\nimport { getInitState, reducer } from 'Pages/auto/series/store'\nimport DCarScore from 'Components/series/dcar-score'\nimport Favour from 'Components/series/favour'\nimport Community from 'Components/series/community'\nimport Articles from 'Components/series/articles'\nimport VideoManual from './video-manual'\nimport PkList from 'Pages/auto/series/pk-list'\nimport CarList from 'Components/series/car-list'\nimport Head from 'next/head'\n\ninterface IProps {\n params: IHeader\n seriesId: number\n seriesName: string\n /* 同级车数据 */\n compare: IPk[]\n videoManualData: any\n photosData: any[]\n hasVR?: boolean\n}\nfunction CarSeries({\n params,\n seriesId,\n seriesName,\n compare,\n videoManualData,\n photosData,\n hasVR,\n}: IProps) {\n const [state, dispatch] = useReducer(reducer, getInitState())\n\n return (\n
\n \n \n \n
\n
\n
\n
\n \n \n
\n \n \n {/* 视频说明书 */}\n {videoManualData?.data_list?.length !== 0 ? (\n \n ) : null}\n \n
\n
\n \n \n {compare?.length ? (\n \n ) : null}\n \n
\n
\n {state.showPk && }\n \n
\n )\n}\nexport default CarSeries\n","import classNames from 'classnames'\nimport React from 'react'\nimport formatNumber from '@arsenal/arsenal/modules/formatNumber'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nexport interface IItemInfo {\n title: string\n count: number\n group_id_str: string\n is_pgc_article: 0 | 1\n}\ninterface ILeaderboard {\n type: 'qa' | 'article' | 'video'\n data: IItemInfo[]\n seriesId: number\n className?: string\n}\n\ninterface IItem {\n index: number\n data: IItemInfo\n type: 'qa' | 'article' | 'video'\n onClick?: () => void\n}\n\nconst Item = (props: IItem) => {\n const { index, data, type, onClick } = props\n const { title, count, group_id_str, is_pgc_article } = data\n return (\n \n
\n \n {index + 1}\n {index > 2 && '.'}\n \n
\n

{title}

\n \n {formatNumber(count)}\n {type === 'qa' ? `人评论` : `人阅读`}\n \n
\n \n
\n \n )\n}\n\nexport default function Leaderboard(props: ILeaderboard) {\n const { type, data = [], className, seriesId } = props\n let title = ''\n switch (type) {\n case 'article':\n title = '车系文章排行'\n break\n case 'video':\n title = '车系视频排行'\n break\n case 'qa':\n title = '问答排行'\n break\n }\n return data.length > 0 ? (\n
\n
{title}
\n\n {data.map((item, index) => (\n {\n sendTeaCommEvent('click_group_list_item', {\n module_title: title,\n group_id: item.group_id_str,\n car_series_id: seriesId,\n })\n }}\n />\n ))}\n\n \n
\n ) : null\n}\n","import Leaderboard, { IItemInfo } from 'Components/series/leaderboard'\nimport { ICommunity } from 'Pages/community/recommend-communities'\nimport React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport ScrollLoader from 'Components/scroll-loader'\nimport Loading from 'Components/loading'\nimport ArticleCard from 'Components/ugc/article-card'\nimport { stringify } from 'querystring'\nimport classNames from 'classnames'\nimport Button from 'Components/button'\nimport { CloseIconForPublisher } from 'Components/publisher/close-icon'\nimport Modal from 'Components/modal'\nimport Publisher, { IPB } from 'Components/publisher/publisher'\nimport { GlobalStoreContext } from 'Components/store'\nimport { mockNewCard } from 'lib/mock-new-card'\nimport { FeedContext } from 'Pages/car_fans_community/feed'\nimport Favour from 'Components/series/favour'\nimport CarList from 'Components/series/car-list'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport fetch from 'lib/decorated-fetch'\nimport useLoginCheckCallback from 'Components/hooks/use-login-check-callback'\n\nconst publish_icon = require('static/publish@3x.png')\nconst empty_icon = require('static/empty-envelope.png')\n\ninterface IQA {\n rankData: IItemInfo[]\n seriesId: number\n seriesName: string\n}\n\ninterface IQATab {\n chi_name: string\n tab_name: string\n dropdown_list: {\n tab_filter_show_name: string\n type: number\n name: string\n tab_filter_select_name: string\n }[]\n dropdown_enter_name: string\n}\n\nexport default function QA(props: IQA) {\n const { rankData, seriesId, seriesName } = props\n const [motorId, setMotorId] = useState(0)\n const [qas, setQAs] = useState([])\n const [refresh_num, setRefreshNum] = useState(0)\n const [lastMax, setLastMax] = useState(0)\n const [loading, setLoading] = useState(false)\n const [subMenu, setSubMenu] = useState([])\n const [activeSubTab, setActiveSubTab] = useState('all')\n const [showPublisher, setShowPublisher] = useState(false)\n const [useSkin2, setUseSkin2] = useState(false)\n const { state: globalState } = useContext(GlobalStoreContext)\n const ref = useRef(null)\n\n const fetchQAs = async (refresh_num: number) => {\n let newQAs = []\n try {\n const category =\n activeSubTab === 'all' ? 'series_wenda_publish' : activeSubTab\n const params: any = {\n motor_feed_extra_params: JSON.stringify({\n new_feed: true,\n feed_type: 0,\n }),\n category,\n motor_id: motorId,\n impression_info: JSON.stringify({\n page_id: 'page_common_question_ask',\n sub_tab: category,\n motor_id: motorId,\n }),\n cmg_flag: category,\n count: 20,\n }\n if (refresh_num === 0) {\n params.min_cursor = 0\n } else {\n params.max_cursor = lastMax\n }\n // cmg_flag 为 wenda 时 替换为 series_wenda_publish\n if (params?.cmg_flag === 'wenda') {\n params.cmg_flag = 'series_wenda_publish'\n }\n const json = await fetch(\n `/motor/discuss_ugc/cheyou_feed_list_v3/v1/?${stringify(params)}`\n ).catch((e) => {\n // no-op\n })\n newQAs = json?.data?.list || []\n setLastMax(newQAs[newQAs.length - 1]?.info?.cursor)\n setRefreshNum(refresh_num + 1)\n } catch (err) {\n // no-op\n }\n if (refresh_num > 0) {\n setQAs([...qas, ...newQAs])\n } else {\n setQAs([...newQAs])\n }\n }\n\n useEffect(() => {\n fetch(`/motor/discuss_ugc/wenda/get_head?series_id=${seriesId}`)\n .then((json) => {\n setSubMenu(json.data?.tab_info?.tab_list || [])\n setMotorId(json.data?.car_info?.motor_id || 0)\n })\n .catch((err) => {\n // no-op\n })\n }, [seriesId])\n\n useEffect(() => {\n if (motorId === 0) {\n return\n }\n setQAs([])\n setLoading(true)\n fetchQAs(0).finally(() => {\n setLoading(false)\n })\n }, [motorId, activeSubTab])\n\n useEffect(() => {\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: [0],\n }\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting) {\n setUseSkin2(true)\n }\n })\n }, options)\n if (ref.current) {\n observer.observe(ref.current)\n }\n return () => {\n observer.disconnect()\n }\n }, [])\n useEffect(() => {\n const options = {\n root: null,\n rootMargin: '-1px',\n threshold: [1],\n }\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n setUseSkin2(false)\n }\n })\n }, options)\n if (ref.current) {\n observer.observe(ref.current)\n }\n return () => {\n observer.disconnect()\n }\n }, [])\n\n const loadMoreHandler = async () => {\n if (motorId === 0) {\n return\n }\n setLoading(true)\n await fetchQAs(refresh_num)\n setLoading(false)\n }\n const handleTogglePublisher = useLoginCheckCallback(\n useCallback(() => {\n sendTeaCommEvent('click_publish_btn', {\n car_series_id: seriesId,\n })\n setShowPublisher(!showPublisher)\n }, [showPublisher]),\n useMemo(() => {\n return {\n enter_method: 'publish',\n }\n }, [])\n )\n\n const handlePublish = async (props: IPB) => {\n const { isTimer } = props\n if (!isTimer) {\n const user_id = globalState?.userData?.user_id\n if (!user_id) {\n return\n }\n const newData = await mockNewCard({ ...props, user_id })\n setQAs([newData as any, ...qas])\n }\n setShowPublisher(false)\n }\n const handleDelete = useCallback(\n (gid: string) => {\n setQAs(qas.filter((ele) => ele.unique_id_str !== gid))\n },\n [qas]\n )\n\n return (\n \n
\n
\n \n {\n setActiveSubTab('all')\n sendTeaCommEvent('click_series_qa_top_tab', {\n car_series_id: seriesId,\n tab_name: '最新问答',\n })\n }}\n >\n 最新问答\n {/* */}\n \n {subMenu.map(\n ({ chi_name, tab_name }) =>\n tab_name !== 'all' && (\n {\n setActiveSubTab(tab_name)\n sendTeaCommEvent('click_series_qa_top_tab', {\n car_series_id: seriesId,\n tab_name: subMenu.find(\n (item) => item.tab_name === tab_name\n )?.chi_name,\n })\n }}\n >\n {chi_name}\n \n )\n )}\n \n <>\n \n 提问\n \n \n
\n \n \n \n \n {qas.length > 0 ? (\n <>\n \n
\n {qas.map((item) => {\n const { ugcType, info, unique_id_str } = item\n info.group_id = unique_id_str\n info.ugcType = ugcType\n if (!item?.info?.user_info) {\n return null\n }\n return (\n {\n sendTeaCommEvent('click_series_qa_list_item', {\n car_series_id: seriesId,\n group_id: unique_id_str,\n article_type: '最新问答',\n })\n }}\n >\n \n
\n )\n })}\n
\n \n {loading && }\n \n ) : (\n \n \n 暂无问答\n \n )}\n \n \n
\n \n \n \n
\n
\n \n \n )\n}\n","import classNames from 'classnames'\nimport React, { useState } from 'react'\n\ninterface Ipopup {\n menu: {\n value: string\n text: string\n }[]\n active: string\n onChange: (key: { value: string; text: string }) => void\n className?: string\n}\n\nconst drop_down_arrow = require('static/drop-down-arrow.png')\n\nexport default function Popup(props: Ipopup) {\n const { menu, active, onChange, className } = props\n const [show, setShow] = useState(false)\n const activeItem = menu.find(({ value }) => value === active)\n\n const handleToggle = (command?: boolean) => {\n if (command !== undefined) {\n setShow(command)\n return\n }\n setShow(!show)\n }\n\n return (\n handleToggle(false)}\n >\n handleToggle()}>\n {activeItem?.text}\n {menu.length > 1 && }\n \n {show && menu.length > 1 && (\n
\n {menu.map(({ text, value }) => (\n {\n handleToggle(false)\n onChange({ value, text })\n }}\n key={value}\n >\n {text}\n \n ))}\n
\n )}\n \n
\n )\n}\n","import Cookies from '@arsenal/arsenal/modules/Cookies'\nimport classNames from 'classnames'\nimport Leaderboard, { IItemInfo } from 'Components/series/leaderboard'\nimport { IFeedData } from 'lib/fetch-community-feed'\nimport fetch from 'lib/decorated-fetch'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport Popup from './popup'\nimport { stringify } from 'querystring'\nimport { get } from 'lodash'\nimport Article from 'Components/article'\nimport ScrollLoader from 'Components/scroll-loader'\nimport Loading from 'Components/loading'\nimport { Accordion } from '@material-ui/core'\nimport Favour from 'Components/series/favour'\nimport CarList from 'Components/series/car-list'\nimport { sendTeaCommEvent, sendTeaEnterEvent } from 'lib/tea-analyze'\nimport { logger } from 'lib/slardar-utils'\nconst empty_icon = require('static/empty-envelope.png')\ninterface IArticle {\n rankData: IItemInfo[]\n seriesId: number\n}\n\nexport default function ArticlePage(props: IArticle) {\n const { rankData, seriesId } = props\n const [activeTab, setActiveTab] = useState('recommended')\n const [activeSubTab, setActiveSubTab] = useState('overall')\n const menu = useMemo(\n () =>\n activeSubTab === 'overall'\n ? [\n {\n value: 'recommended',\n text: '推荐资讯',\n },\n {\n value: 'latest',\n text: '最新资讯',\n },\n ]\n : [\n {\n value: 'recommended',\n text: '推荐资讯',\n },\n ],\n [activeSubTab]\n )\n const subMenu = useMemo(\n () => [\n {\n value: 'overall',\n text: '综合',\n },\n {\n value: 'practical',\n text: '实测',\n },\n ],\n []\n )\n useEffect(() => {\n if (activeSubTab === 'practical') {\n setActiveTab('recommended')\n }\n }, [activeSubTab])\n const handleChange = ({ value, text }: { value: string; text: string }) => {\n sendTeaCommEvent('click_article_type_select', {\n obj_text: text,\n car_series_id: seriesId,\n })\n setActiveTab(value)\n }\n\n const [articles, setArticles] = useState([])\n const [loading, setLoading] = useState(false)\n const [max_behot_time, setMaxBeHotTime] = useState(0)\n const fetchArticles = async (maxBehotTime: number) => {\n let newArticles = []\n const web_id: any = Cookies('tt_webid') || ''\n try {\n const params = {\n concern_id: seriesId,\n category: 'all',\n web_id,\n device_platform: 'web',\n channel: 'web',\n tt_from: 'enter_auto',\n motor_feed_extra_params: JSON.stringify({\n new_feed: true,\n series_page_sort:\n activeSubTab === 'practical' ? undefined : activeTab,\n }),\n sub_category: activeSubTab === 'practical' ? 'pingche' : 'all',\n impression_info: JSON.stringify({\n page_id: 'page_car_series',\n sub_tab: 'all',\n }),\n max_behot_time: maxBehotTime,\n aid: 1839,\n }\n const json = await fetch(\n `/motor/stream_entrance/get_feed_pc/v47/?${stringify(params)}`\n ).catch((e) => {\n // no-op\n })\n newArticles = json?.data || []\n setMaxBeHotTime(\n newArticles?.[newArticles.length - 1]?.info?.behot_time || maxBehotTime\n )\n newArticles = newArticles.filter(\n (e: IFeedData) => e?.type >= 2000 && e?.type < 2300\n )\n } catch (err) {\n // no-op\n }\n if (maxBehotTime > 0) {\n setArticles([...articles, ...newArticles])\n } else {\n setArticles([...newArticles])\n }\n }\n\n useEffect(() => {\n if (activeTab === 'latest' && activeSubTab === 'practical') {\n // impossible\n logger.warn('最新 实测 同时出现')\n return\n }\n setArticles([])\n setLoading(true)\n fetchArticles(0).finally(() => {\n setLoading(false)\n })\n }, [activeTab, activeSubTab])\n\n const loadMoreHandler = async () => {\n setLoading(true)\n await fetchArticles(max_behot_time)\n setLoading(false)\n }\n return (\n \n
\n
\n
\n \n
\n {subMenu.map(({ text, value }) => (\n {\n sendTeaCommEvent('click_article_type_tag', {\n tag_name: text,\n car_series_id: seriesId,\n })\n setActiveSubTab(value)\n }}\n key={value}\n >\n {text}\n \n ))}\n
\n
\n {articles.length > 0 ? (\n <>\n \n
\n {articles.map((item, index) => {\n const info = item?.info || {}\n return (\n {\n sendTeaCommEvent('click_series_article_list_item', {\n car_series_id: seriesId,\n group_id: item.unique_id_str,\n tag_name: subMenu.find(\n (item) => item.value === activeSubTab\n )?.value,\n article_type: menu.find(\n (item) => item.value === activeTab\n )?.value,\n })\n }}\n />\n )\n })}\n
\n \n {loading && }\n \n ) : (\n \n \n 暂无文章\n \n )}\n
\n
\n \n \n \n
\n
\n \n
\n )\n}\n","import classNames from 'classnames'\nimport { IFeedData } from 'lib/fetch-community-feed'\nimport getLinkHref from 'lib/get-link-href'\nimport React from 'react'\nimport SquareDuration from './square-duration'\n\nexport default function VideoCard({\n data,\n className,\n onClick,\n}: {\n data: IFeedData\n className?: string\n onClick?: () => void\n}) {\n const {\n unique_id_str,\n info: { video_duration, title, image_list },\n type,\n } = data\n const isUGC = type < 2000 || type >= 2300\n const href = `/${isUGC ? 'ugc/' : ''}article/${unique_id_str}`\n return (\n
\n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n
\n \n \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n
{title}
\n
\n \n
\n )\n}\n","import Cookies from '@arsenal/arsenal/modules/Cookies'\nimport CarList from 'Components/series/car-list'\nimport Favour from 'Components/series/favour'\nimport Leaderboard, { IItemInfo } from 'Components/series/leaderboard'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport Popup from '../article/popup'\nimport { stringify } from 'querystring'\nimport ScrollLoader from 'Components/scroll-loader'\nimport { IFeedData } from 'lib/fetch-community-feed'\nimport fetch from 'lib/decorated-fetch'\nimport VideoCard from './video-card'\nimport Loading from 'Components/loading'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nconst empty_icon = require('static/empty-envelope.png')\n\ninterface IVideo {\n rankData: IItemInfo[]\n seriesId: number\n}\n\nexport default function Video(props: IVideo) {\n const { rankData, seriesId } = props\n const [activeTab, setActiveTab] = useState('recommended')\n const menu = useMemo(\n () => [\n {\n value: 'recommended',\n text: '推荐视频',\n },\n {\n value: 'latest',\n text: '最新视频',\n },\n ],\n []\n )\n const handleChange = ({ value, text }: { value: string; text: string }) => {\n sendTeaCommEvent('click_video_type_select', {\n obj_text: text,\n car_series_id: seriesId,\n })\n setActiveTab(value)\n }\n\n const [videos, setVideos] = useState([])\n const [loading, setLoading] = useState(false)\n const [max_behot_time, setMaxBeHotTime] = useState(0)\n const fetchVideos = async (maxBehotTime: number) => {\n let newVideos = []\n const web_id: any = Cookies('tt_webid') || ''\n try {\n const params = {\n concern_id: seriesId,\n category: 'video',\n web_id,\n device_platform: 'web',\n channel: 'web',\n tt_from: 'enter_auto',\n motor_feed_extra_params: JSON.stringify({\n new_feed: true,\n series_page_sort: activeTab,\n }),\n sub_category: 'video',\n impression_info: JSON.stringify({\n page_id: 'page_car_series',\n sub_tab: 'video',\n }),\n max_behot_time: maxBehotTime,\n aid: 1839,\n }\n const json = await fetch(\n `/motor/stream_entrance/get_feed_pc/v47/?${stringify(params)}`\n ).catch((e) => {\n // no-op\n })\n newVideos = json?.data || []\n setMaxBeHotTime(\n newVideos?.[newVideos.length - 1]?.info?.behot_time || maxBehotTime\n )\n } catch (err) {\n // no-op\n }\n if (maxBehotTime > 0) {\n setVideos([...videos, ...newVideos])\n } else {\n setVideos([...newVideos])\n }\n }\n\n useEffect(() => {\n setVideos([])\n setLoading(true)\n fetchVideos(0).finally(() => {\n setLoading(false)\n })\n }, [activeTab])\n\n const loadMoreHandler = async () => {\n setLoading(true)\n await fetchVideos(max_behot_time)\n setLoading(false)\n }\n\n return (\n \n
\n
\n \n {videos.length > 0 ? (\n <>\n \n
\n {videos.map((video, index) => {\n return (\n {\n sendTeaCommEvent('click_series_video_list_item', {\n car_series_id: seriesId,\n group_id: video.unique_id_str,\n article_type: menu.find(\n (item) => item.value === activeTab\n )?.value,\n })\n }}\n />\n )\n })}\n
\n \n {loading && }\n \n ) : (\n \n \n 暂无视频\n \n )}\n
\n
\n \n \n \n
\n
\n \n
\n )\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport CarSeriesHome from 'Pages/auto/series/home'\nimport { IHeader } from 'Pages/auto/series/header'\nimport { IPk } from 'Pages/auto/series/pk'\nimport Breadcrumb from 'Components/breadcrumb'\nimport TopAnchor from 'Pages/auto/series/top-anchor'\nimport Head from 'next/head'\nimport { useRouter } from 'next/router'\nimport { stringify } from 'querystring'\nimport { IItemInfo } from 'Components/series/leaderboard'\nimport QA from 'Pages/auto/series/qa/home'\nimport { GetServerSideProps } from 'next'\nimport getUrl from 'lib/url'\nimport fetchFeed from 'lib/fetch-feed'\nimport Article from 'Pages/auto/series/article/home'\nimport Video from 'Pages/auto/series/video/home'\nimport fetch from 'lib/decorated-fetch'\nimport { isNewVersion } from 'lib/version'\nimport getQuery from '@arsenal/arsenal/modules/getQuery'\ninterface IProps {\n params: IHeader\n seriesId: number\n seriesName: string\n compare: IPk[]\n videoManualData: any\n photosData: any[]\n rankData: IItemInfo[]\n hasVR?: boolean\n}\n\nconst getType = (path: string) => path?.match(/auto\\/series\\/\\d+\\/(\\w+)/)?.[1]\n\nfunction Series({\n params,\n seriesId,\n seriesName,\n compare,\n videoManualData,\n photosData,\n rankData,\n hasVR,\n}: IProps) {\n const titles = [\n {\n name: '车系首页',\n url: `/auto/series/${seriesId}`,\n },\n {\n name: '参数配置',\n url: `/auto/params?carIds=${params?.car_id_list}`,\n outer: true,\n },\n {\n name: '车友圈',\n url: `/community/${seriesId}`,\n outer: true,\n },\n {\n name: '问答',\n url: `/auto/series/${seriesId}/qa`,\n },\n {\n name: '实拍大图',\n url: `/auto/series/${seriesId}/images`,\n outer: true,\n },\n {\n name: '文章',\n url: `/auto/series/${seriesId}/article`,\n },\n {\n name: '视频',\n url: `/auto/series/${seriesId}/video`,\n },\n ]\n\n const router = useRouter()\n const type = getType(router.asPath)\n // 切换背景色\n useEffect(() => {\n const color = document.body.style.backgroundColor\n document.body.style.backgroundColor = '#f7f8fc'\n return () => {\n document.body.style.backgroundColor = color\n }\n }, [])\n const activeIndex = useMemo(() => {\n return type ? type : 'home'\n }, [type])\n\n const renderPage = () => {\n switch (type) {\n case undefined:\n return (\n \n )\n case 'qa':\n return (\n \n )\n case 'article':\n return
\n case 'video':\n return