{"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/./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/./public/static/change-ic@3x.png","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/./public/static/more-ic-b.png","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/./node_modules/core-js/internals/array-reduce.js","webpack://_N_E/./node_modules/zrender/lib/Element.js","webpack://_N_E/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?f87a","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/./public/static/downLoad/code-hover.png","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/./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/./public/static/change-ic@2x.png","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/./public/static/vertical-slash-line.png","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/./public/static sync ^\\.\\/.*_img@3x\\.png$","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/./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/./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/./public/static/star-black.png","webpack://_N_E/./node_modules/echarts/lib/component/angleAxis.js","webpack://_N_E/./node_modules/echarts/lib/chart/treemap/Breadcrumb.js","webpack://_N_E/./public/static/default.png","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/./public/static/6@3x.png","webpack://_N_E/./public/static/dong-che-fen-logo.png","webpack://_N_E/./node_modules/echarts/lib/chart/gauge.js","webpack://_N_E/./node_modules/core-js/modules/es.object.values.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/./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/./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/core-js/modules/es.array.reduce.js","webpack://_N_E/./public/static/pop-btn.png","webpack://_N_E/./node_modules/echarts/lib/component/brush/visualEncoding.js","webpack://_N_E/./node_modules/echarts/lib/chart/effectScatter.js","webpack://_N_E/./node_modules/core-js/internals/string-repeat.js","webpack://_N_E/./node_modules/core-js/internals/same-value.js","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/./public/static/large-video-icon.png","webpack://_N_E/./node_modules/echarts/lib/component/axis/RadiusAxisView.js","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/./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/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/./public/static/star.png","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/./lib/fetch-with-timeout.ts","webpack://_N_E/./node_modules/react-transition-group/esm/CSSTransition.js","webpack://_N_E/./pages-components/home/ad/tianmu.tsx","webpack://_N_E/./pages-components/home/ad/tonglan-1.tsx","webpack://_N_E/./pages-components/home/ad/close.ts","webpack://_N_E/./pages-components/home/ad/xuanjing.tsx","webpack://_N_E/./pages-components/home/ad/past_24.ts","webpack://_N_E/./pages-components/home/ad/popUp.tsx","webpack://_N_E/./pages-components/home/context.tsx","webpack://_N_E/./pages-components/home/ad/index.tsx","webpack://_N_E/./pages-components/home/ad/hot-news-right.tsx","webpack://_N_E/./components/toggle-image-group.tsx","webpack://_N_E/./pages-components/home/hot-news.tsx","webpack://_N_E/./components/RadarChart.tsx","webpack://_N_E/./components/value-card.tsx","webpack://_N_E/./pages-components/home/dong-che-fen.tsx","webpack://_N_E/./pages-components/home/type-list.tsx","webpack://_N_E/./pages-components/home/ad/tonglan-2.tsx","webpack://_N_E/./pages-components/home/ad/series.tsx","webpack://_N_E/./pages-components/home/popular-models.tsx","webpack://_N_E/./pages-components/home/popular-brands.tsx","webpack://_N_E/./pages-components/home/featured-videos.tsx","webpack://_N_E/./pages-components/home/common/car-list.tsx","webpack://_N_E/./pages-components/home/sales-leaderboard.tsx","webpack://_N_E/./components/new-car-card.tsx","webpack://_N_E/./components/new-release.tsx","webpack://_N_E/./pages-components/home/ad/left-label.tsx","webpack://_N_E/./pages-components/home/ad/swiper.tsx","webpack://_N_E/./pages-components/home/today-news.tsx","webpack://_N_E/./pages-components/home/banner.tsx","webpack://_N_E/./pages-components/home/original-column.tsx","webpack://_N_E/./components/links/series-detail.tsx","webpack://_N_E/./pages-components/home/carAtlas.tsx","webpack://_N_E/./pages-components/home/home.tsx","webpack://_N_E/./pages/home.tsx","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/./public/static/carType.png","webpack://_N_E/./node_modules/echarts/lib/lang.js","webpack://_N_E/./node_modules/echarts/lib/component/visualMapPiecewise.js","webpack://_N_E/./public/static/score-bg.png","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/./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/./public/static/more-ic-b@2x.png","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/./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/./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/./public/static/downLoad/apk-hover.png","webpack://_N_E/./node_modules/zrender/lib/svg/graphic.js","webpack://_N_E/./public/static/original-logo@3x.png","webpack://_N_E/./node_modules/echarts/lib/component/visualMap/ContinuousView.js","webpack://_N_E/./node_modules/echarts/lib/echarts.js","webpack://_N_E/./public/static/1_img@3x.png","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/core-js/internals/this-number-value.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/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/./public/static/more-ic-b@3x.png","webpack://_N_E/./node_modules/echarts/lib/model/Series.js","webpack://_N_E/./node_modules/zrender/lib/graphic/helper/poly.js","webpack://_N_E/./public/static/original-column-bg@3x.png","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/echarts/lib/component/toolbox/feature/SaveAsImage.js","webpack://_N_E/./node_modules/@babel/runtime/helpers/interopRequireDefault.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/dom-helpers/class/removeClass.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/./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/dayjs/dayjs.min.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/./public/static/6.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/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/./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/core-js/internals/object-to-array.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/./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/./node_modules/echarts/lib/coord/axisDefault.js","webpack://_N_E/./node_modules/echarts/lib/chart/themeRiver/themeRiverVisual.js","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/./public/static/3_img@3x.png","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/./public/static/left-ic.png","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/./lib/zt-util.ts","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/./node_modules/echarts/lib/component/marker/MarkPointView.js","webpack://_N_E/./node_modules/echarts/lib/coord/calendar/CalendarModel.js","webpack://_N_E/./public/static/change-ic.png","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/core-js/internals/array-fill.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/./public/static/downLoad/apple-store.png","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/core-js/modules/es.string.search.js","webpack://_N_E/./node_modules/echarts/lib/ExtensionAPI.js","webpack://_N_E/./public/static/ic-arrow-right-white@3x.png","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/./public/static/star-black@2x.png","webpack://_N_E/./node_modules/echarts/lib/data/helper/completeDimensions.js","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/./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/./public/static/star-black@3x.png","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/./public/static/downLoad/apk.png","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/./public/static/star@3x.png","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/./public/static/2_img@3x.png","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/./node_modules/echarts/lib/chart/helper/LargeLineDraw.js","webpack://_N_E/./public/static/downLoad/apple-store-hover.png","webpack://_N_E/./public/static/pop-close.png","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.array.splice.js","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/./public/static/star@2x.png","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/./public/static/downLoad/download-tip.png","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/./public/static/downLoad/code.png","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/./node_modules/echarts/lib/component/axis/AngleAxisView.js","webpack://_N_E/./node_modules/echarts/lib/chart/bar/barItemStyle.js","webpack://_N_E/./node_modules/core-js/modules/es.number.to-fixed.js","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/./public/static/pop-min.png","webpack://_N_E/./node_modules/core-js/internals/freezing.js","webpack://_N_E/./public/static/video-icon.png","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/./public/static/arrow-ic-r@3x.png","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/./public/static/6@2x.png","webpack://_N_E/./node_modules/echarts/lib/coord/single/AxisModel.js","webpack://_N_E/./public/static/new-card-span.svg","webpack://_N_E/./node_modules/zrender/lib/graphic/Path.js","webpack://_N_E/./node_modules/echarts/lib/coord/cartesian/Cartesian2D.js","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/dom-helpers/class/hasClass.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/dom-helpers/class/addClass.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/core-js/modules/es.array.fill.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","__DEV__","Eventful","interactionMutex","DataDiffer","map","mathMin","min","mathMax","mathPow","pow","DIRECTION_MAP","w","e","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","id","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","params","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","item","query","subType","newSeriesOpt","categoryAxis","axisType","queryComponents","boundaryGap","tiled","currentType","featureName","registerAction","payload","mergeOption","doCreateNode","env","urn","win","window","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","aFunction","toObject","IndexedObject","toLength","createMethod","IS_RIGHT","that","callbackfn","argumentsLength","memo","O","self","TypeError","guid","Transformable","Animatable","Element","opts","isGroup","dirty","beforeUpdate","afterUpdate","attrKV","hide","refresh","setClipPath","addSelfToZr","removeClipPath","__clipTarget","removeSelfFromZr","animators","animation","addAnimator","removeAnimator","__NEXT_P","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","titles","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","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","info","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","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","Object","resolve","_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","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","open","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","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","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","$","$values","stat","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","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","$reduce","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","1","forced","reduce","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","toInteger","requireObjectCoercible","String","RangeError","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","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","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","level","yearSpan","nice","timezoneOffset","getTimezoneOffset","fixExtent","_niceExtent","ONE_SECOND","ONE_MINUTE","useUTC","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","timeoutPromise","ms","promise","Promise","reject","then","classes","forEach","_React$Component","CSSTransition","_this","_key","appliedClasses","appear","enter","onEnter","appearing","removeClasses","addClass","onEntering","onEntered","onExit","onExiting","onExited","getClassNames","classNames","isStringClassNames","baseClassName","activeClassName","doneClassName","_proto","phase","className","scrollTop","_addClass","_this$appliedClasses$","active","_this$props","Transition","defaultProps","propTypes","TianmuAd","useState","showBig","setShowBig","showSmall","setShowSmall","timer","useRef","closeBig","useEffect","sendTeaAdEvent","ad_material_id","materiel_str","ad_target_url","web_url","log_extra","ad_id","id_str","ad_req_id","req_id","showed","localStorage","getItem","setItem","err","removeItem","image_big","url","in","timeout","mountOnEnter","unmountOnExit","BigImage","onClose","SmallImage","onClickReplay","useAdStat","send","click","ref","handleClick","useInView","threshold","ref2","inView","adData","click_track_url_list","sendAdMonitor","requestId","ad_log_id","eventId","onClick","role","stopPropagation","ref1","sendStatRef","useLayoutEffect","applyHttpsImage","image_icon","TonglanAd","expaned","setExpaned","onMouseEnter","onMouseLeave","image_expand","isClosed","setClose","XuanjingAd","setIsShow","setType","documentElement","imageLeft","image_left_small","image_left_big","imageRight","image_right_small","image_right_big","image_banner","isPast","old","PopUpAd","past","setPast","background_image","car_icon","require","sendTeaCommEvent","shrink_type","bg","getElementById","car","button","minmize","classList","handleMin","handleClose","initState","HomeStoreContext","createContext","reducer","HomeStoreProvider","useReducer","Provider","useAdData","useContext","fetch","sendRequest","ok","createFetch","BannerAD","adInfo","setAdInfo","showPopUp","setShowPopUp","cityName","useCityName","credentials","json","catch","waitTime","sky_fall_banner_ad","dazzling_banner_ad","showPop","main_splash_ad","showXuanjingAd","showTianmuAd","showTonglanAd","pc_common_banner_ad","AdItem","HotNewsRightAD","hotNewsAd","right_button_banner_ad","left_ic_img","ToggleImageGroup","imgArray","setSlideIndex","show_home_live_banner_tea","room_ids","navigation","nextEl","autoplay","disableOnInteraction","slideChangeTransitionStart","activeIndex","imgGroup","rel","href","live_black_gif","default_svg","HotNews","hotSpot","isVisible","useVisible","hasShow","setHasShow","slideIndex","liveDatas","setLiveDatas","loaded","setLoaded","getUrl","room_id","preview_id","create_time","popularity","user_info","user_name","avatar","user_id_str","author_profile_url","live_card_img_group","cover_url","group_id","content_type","alt","prevPressed","nextPressed","switch_direction","anchor_id","is_live_preview","formatNumber","renderTitle","unique_id_str","gid","RadarChart","theStyle","comfort_score","appearance_score","configuration_score","control_score","power_score","space_score","interiors_score","score","jumpTo","myChart","setOption","star","star2","star3","star_black","star_black2","star_black3","quoter","quoter2","quoter3","ValueCard","mark_text","author_info","series_name","series_id","related_group_id","group_list","scoreObj","scorePartial","review_detail_url","car_profile_url","user_id","classListValue","evaluate_card_clk_position","avatar_url","srcSet","overflow","score_bg","logo","change_ic","change_ic2","change_ic3","DongCheFen","reviewData","indexNext","setIndexNext","arr","TypeList","as","series_type","series_type_id","classnames","renderCar","TonglanAD2","targetAD","video_down_banner_ad","PopularSeriesAd","adShowRef","car_series_id","car_series_name","showStr","track_url_list","ConditionList","nav","RegExp","PopularModels","setParams","setNav","carList","setCarList","newCarList","setNewCarList","tempStorage","Map","headers","fetchData","acc","usePopularSeriesAd","seriesIdList","adItem","newDedupArr","handleReplacePosition","onMouseOver","price_range","country_type","outter_name","brand_name","FirstRowSeriesItem","RowSeriesItemWithAD","series_status_tag","SeriesDetail","carIds","car_ids","renderCarList","getZT","showAd","setShowAd","handleMouseEnter","handleMouseLeave","PopularBrands","brands","hotBrandIds","showBrands","brand","brandId","brand_id","image_url","backgroundImage","renderBrands","video_icon","videoTitle","column_id","FeaturedVideos","featuredVideos","articleList","list_type","item_type","key_name","pagination","clickable","spaceBetween","program_id","videoList","videoBig","item_rank","infoItem","infoIndex","formatDuration","marginTop","gid_str","REG_EX","CarList","hasIcon","isOrigin","regRes","online_date","monthStr","price","min_price","max_price","SalesLeaderborard","sales","leftContent","rightContent","getLinkHref","new_card_span_img","vertical_slash_line_img","NewCarCard","more_ic_b_img","more_ic_b_img2","more_ic_b_img3","NewRelease","carData","setCarData","tagNow","setTagNow","containerRef","tag","onClickTag","dataset","scrollTo","data-type","tab_name","Label","SwiperAD","customStat","useMemo","ad_picture_url","TodayNews","todayNews","hot","is_video","Banner","banner","showBanner","setShowBanner","BannerSwiper","swiperInstance","setSwiperInstance","bannerWithAd","React","newBanner","second_frames_banner_ad","five_frames_banner_ad","six_frames_banner_ad","seven_frames_banner_ad","eight_frames_banner_ad","nine_frames_banner_ad","material_url","img_url","getSwiper","bannerItem","originalColumn","program_name","logo_url","dayjs","update_time","format","episode","SeriesDetailLink","CarAtlas","panoramicCar","currectList","seriesBig","panoramic_url","ns_cover_url","Home","newCar","atlas","friendshipLinkData","originalColumnData","carAtlasData","pcHotVideoList","dCarScoreList","onSSR","article","getInitialProps","months","month","series_list","pcHotVideo","pcHotArticle","dcarScoreData","all","hotSpotData","todayNewsData","bannerData","nice_series_list","panoramic_car","withRouter","validDataCount","unitRadian","roseType","restAngle","valueSumLargerThanMinAngle","currentAngle","paletteScope","categoriesData","getCategoriesData","categoryNameIdxMap","itemStyleList","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","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","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","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","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","getPrecision","getPrecisionSafe","toString","eIndex","dotIndex","pixelExtent","dataQuantity","sizeQuantity","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","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","classof","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","legendSelectActionHandler","selectedMap","isToggleSelect","legendData","isItemSelected","fixRegExpWellKnownSymbolLogic","anObject","advanceStringIndex","regExpExec","MATCH","nativeMatch","maybeCallNative","regexp","matcher","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","message","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","saveAsImageLang","SaveAsImage","MouseEvent","msSaveOrOpenBlob","bstr","atob","u8arr","Uint8Array","blob","Blob","write","$a","download","evt","bubbles","cancelable","dispatchEvent","__esModule","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","replaceClassName","origClass","classToRemove","baseVal","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","utcOffset","year","D","weekdays","locale","$L","$u","$offset","$d","$y","$M","$D","$W","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","unix","valueOf","toDate","$locale","weekStart","$set","daysInMonth","subtract","meridiem","YY","YYYY","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","HH","hh","mm","ss","SSS","toJSON","toISOString","toUTCString","isDayjs","en","Ls","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","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","categoryMap","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","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","dataProcessorHandlers","_dataProcessorHandlers","_visualHandlers","_allHandlers","_stageTaskMap","performStageTasks","stageHandlers","needSetDirty","stageHandlerRecord","seriesTaskMap","overallTask","overallNeedDirty","stub","pipelineId","taskRecord","_pipelineMap","pCtx","progressiveEnabled","__idxInPipeline","blockIndex","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","objectKeys","toIndexedObject","propertyIsEnumerable","TO_ENTRIES","entries","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","fails","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","common","IS_WEAK","NativeConstructor","NativePrototype","Constructor","exported","fixMethod","KEY","nativeMethod","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","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","find","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","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","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","_sessionStorage","sessionStorage","appendLabel","paramZT","getQuery","search","zt","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","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","toAbsoluteIndex","endPos","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","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","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","isValidPoint","getValueMissingPoint","firstPoint","createElementNS","CoordSysInfo","fetchers","ORIGIN_METHOD","RATE","debounce","currCall","lastCall","lastExec","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","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","disabled","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","arraySpeciesCreate","createProperty","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","ACCESSORS","0","deleteCount","insertCount","actualDeleteCount","actualStart","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","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","dataList","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","fadein","_onPan","_onZoom","_clearController","mouseX","mouseY","findTarget","_zoomToNode","thisWidth","thisHeight","thisInvisible","thisRawIndex","oldRawIndex","isParent","itemStyleNormalModel","itemStyleEmphasisModel","giveGraphic","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","getAxisLineShape","rExtent","getRadiusIdx","fixAngleOverlap","firstItem","ticksAngles","minorTickAngles","_axisLine","rId","r0Id","_axisTick","tickAngleItem","_minorTick","tickAngles","_axisLabel","commonLabelModel","labelTextAlign","labelTextVerticalAlign","prevAngle","thisNumberValue","nativeToFixed","fractionDigits","number","fractDigits","multiply","c2","divide","dataToString","_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","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","_dragStart","_drag","_dragEnd","draggingTarget","_draggingTarget","dropTarget","lastDropTarget","_dropTarget","isAsc","sortOrder","rootDepth","renderRollupNode","rPerLevel","rStart","rEnd","siblingAngle","axisTrigger","collect","realIndex","paramsSet","reals","fakeValue","layoutInput","rParam","default","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","_interopRequireDefault","_hasClass","_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","real","expect","oldOption","oldOptionBackup","newParsedOption","newCptOpt","oldCptOpt","isRecreate","optionBackup","indices1","indices2","addToUnscopables","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","stopImmediatePropagation","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/home-0cc5852a001655378d55.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;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAJKADAAQAAAABAAAAJAAAAAAqDuP8AAADB0lEQVRYCe2YTYhNYRjH7x3TGBrTJAtJUsyUpowoC5mVUpOSEvmYjZqVhBUpiYWNzSSKDSsLacL4WiixsVFEWYyF7zFRYkFDGq7f/7rPneec3nPvnDvnGmqe+s379bz/9znPe977niaXm7b/LAP5tPEWCoUG5qyBTbAKFpRQ/0cYhvtwD27n8/kxyuyNQJrhAHyAido7HI/AnEwjQnAzvIFaTYFtmXRQiOTheCCKt/Sdhh7ogBaYDYtgA5wABRG3fjpm+MBoN/t2Yh1HBXMRvGmRPoiIhkTwaYSdMAzeBmjofctR6jVQ5s/DkpBOuQ+HeGYG6Uv9LjBH2bsF3k6VAtrnOl9SLwZaDsIqDOid8XaSRtjZJlUomdsEV70g9V4YcX27gxI4WBrNV5mpORhbBA1tobbLbMwqlNrWmeYbKRnQ0TbTO5N6myKCriEtCJ3WPc5tvIpzA/jfmb7x0Wxq6G8Db3ro8EljYK3z1NGueprShilNeOXW2es1Gn2Duq4Ds0F+9n9aI6tSmgTTjl5bideJ2jjedZH3JDrWcSB+enRRmj23ypSVZOeLy1DLlAXytxfmoR+7B+/y68e3zI/Vs+5fjZF6LlRVm8y0wq9Shn5QRj4SI8eewaUojsJnjue3quq1Oej0WhCPWKcQlCGYFWCRq+wIOk6yE91LYHYoUQ6PK+ZVKs8mOtc4gG4n+Et1WVAKpy6w7FAtmibqIz4zQ+/mH+ni3+uJwgxfdo7+CYbon584McUAOgdja3QGp+Pks6MsbYSvbvIz6guDkyfYyfztoDvMrD9xKh4XzItyQI6UW8Fv4Qvalb95AyswR9/lx2Jad2hHTndkKoNtcBQ+wXIbpL4fvI3SOAyt5lOpxG8dPARvT2nMrTSvPIbjrHKjVKGvF76DN23nOdgB7aAfOn32LoZuUEaeQNxu0DGhh4nHEWkjshIexNVTtPUAymx215TEYBf4S5FmRdMWn4FUp9R+wiNZqdRggdWMr4du0FUzD5rgPeiiHIJroH801Ov6QX7a/pEM/AYC6NYjFmXeuQAAAABJRU5ErkJggg==\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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});","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAADKADAAQAAAABAAAADAAAAAATDPpdAAAAf0lEQVQoFWNgoCtQUNaOUFDWDG9oaGDCZTEjsoSxsTHr23ff1zAwMvwTFuQMO3v27G9keRAbRQNIgJAmDKtBpgoLcYYw/GdgAtsGMgUJsCCx0Zn/gfb/RxfEsAHqpNUgxSB/4NUAVvz++yqQIlyeRjEAFKQqKlra+IIVRQNNOABNWi/6KUzSQAAAAABJRU5ErkJggg==\"","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;","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","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 (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/home\",\n function () {\n return require(\"private-next-pages/home.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 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;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABIBAMAAACnw650AAAAHlBMVEUAAAD/zTL/zzL/zTP/0DX/zzL/zjX/zTX/zTP/zTJafra0AAAACXRSTlMAZn/mKKM/XPCVNvoHAAAAuElEQVRIx2MY9sBREAk4MDCwIPNFoIokZyIBAQYGRmT+xIFSNBXqSlGYokCoQCRCEZzFCFMkAJMaUEVJSkoJyIrYlJTUMBRpzpypgKyIaebMSUNCEQ7fDfJowZeeBnFGIJCDRwLAFQQFQCmChZgBOBXQTxHhRNcJVEQw+VrSW1EjLCNgZnOEIhDALDAGUlEhNCPgUwQH6L4jpAgMSFdUCE2Z1I87RHrCpwgOBo0iLDnYARZOI6AQAwAw7cBN/KNxFQAAAABJRU5ErkJggg==\"","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;","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}","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAAB30lEQVRIDd2VvytFYRjH73X9KmJgYLhKtygZTCYTE6VIBsPFYrIw2swUf4AfZRD/AaNFFhsLV24GSYlBFLmOz/d4X52n3OvQnTz16XmfX+85Pe95n5NI/GsJgqAKxmEbzuARnuASdmD4zw2geBQu4Cc5JmEo9oNIroClyK6nrOegC+qhGfpgHq7Ay4J/CI4eaPS20QSWXcULehYqTELEIFYNevgbSBYhBTl4gO5IeiKBQ22RaPN+EyxhkDsGryDZ+lThmaW+ynDqQH3PZ78CMRfUqmVRyZpSIvpaJOp50baYoohBjdqVB4laFL59ZSRnxK3Xk8nke8Qfa0mNWjRKci+cYhdMIUF955IuEyiXwca6RJL6cu1Z9n14udXwFfl0/ea/PkxfWESnnf/GxHmqLocuVVZrE4xpUFcJ9yDJmDIcU/I6mTHBmAa1E67+xJTg9FfbxYNrFnUm6QeD/AbQhJVMm3Qck6E7CM7Rh259gI71NZFXA3uuTpPVniuOTRdU/9sh7+wjdMk7QTwDypPcQpt5e28Q0PgNDxedBl11SQH0YxmBTqiFVhiEDfADTu2xk9Nv/p0mWTN/BZ6hlGhMr0HTd/vIlywWkJ/CFpQm6wB0QAPcQR72YZeZk0P/Y/kA2+91bJPdqegAAAAASUVORK5CYII=\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAABUCAYAAACoYebOAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAqADAAQAAAABAAAAVAAAAABaS4bBAAAAKklEQVQoFWN8/vJzPQMDAxMTkAADTAZMBh/NOGoOvuBhGA0fvMFD1/ABALXrJDryDXELAAAAAElFTkSuQmCC\"","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 map = {\n\t\"./1_img@3x.png\": \"PtpI\",\n\t\"./2_img@3x.png\": \"mTdr\",\n\t\"./3_img@3x.png\": \"dHmk\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"58Uh\";","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;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAADKADAAQAAAABAAAADAAAAAATDPpdAAAA8UlEQVQoFa1RvU6EQBCebxHxhwS6I9TXXIyF1XXWPoZvYWHpG2h8KKsrrrCyukJyJFjghcTAzs0g4h5I5ySTnf1+Zndnif4j3rPyUfLpr14Ygln2ecngleJgXCVJuHY1xt0UBUcW/MzMnqbWirka5PkurZvmQfotCbQQ4UETAJaYXon4xTPm/sj3z6raltcinAsxiq7BBUBBEJx/mTjGh6HjGxC2I3UHKKeaKELRHj+bnbyRMbdTBuVajQj6+3rUlFMGl+sNDSH9NaCSIUh+h8v1BlgdHzbyuLvTIEw1tW6xlvuxd6tMA8ORKiWY/kn/wXtwkF32bkbxQAAAAABJRU5ErkJggg==\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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;","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/default-127363fed38cdea23389fd32310c6413.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*/\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});","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAPKADAAQAAAABAAAAPAAAAACL3+lcAAADAElEQVRoBe1YsW4TQRDdWTtR3KBIgRYJmgBfwS8FV3RugCa+yEmK/AQNFQ00VJZ7BDQhdAREwFIUO9i37MWMsr7dPe+sPN248OzO+t7Me7vnezql5CMKiAKigCggCogCooAoIAqIAjkKQM5F1TXdbvfuZDp/kXo9KPPr+HjwPPX3XPg6tYH67yaT2ZN6rnmuvzSvL69y4WcTBjBEwoZEmAs/i7AxRpdKP1rek+YZwDyZMCd+q7nN8Op4PH5QluppeDWQNXBh7983gZVgihM/a4evr0vW48yJn0VYa/U4uDWRJGyoz5GlYJoTn0x4b6/ozI16GOw0koR5J/n+5cYnE56ab7ugIPk6o9Tvo6NXPyJaeGlu/OTGsTM9oz2OAIjHmRsfiaRHIP1htXUr+TgveuDFJ+1wZffsEb2XLo5S0w1IJsyNX/VNIky1e9X9e7K/f54qEDc+mTDV7mmVvrtVM9z4JMI5dq/V0snPX278imz1SbaWZLtnwbXuvB4OP1zeVFrxxY2P5ZPvYbLdA/NnMHj5HQutitz4WD+ZMNnumfTjXDXDjY+Ek954VHZv+vesoDos+6d1gYUwag2jw8PiHc6ryI3v1mq7k9iYavcqHKvktlFmu46ptXlbz3Hju/WSjjTVTroF3LEVoAS47/1zc+O7PSQRtvtFspNuAXdsj/jpwcGzKze3GHPj31ZcSTjH7t3CL4/ss/bjcmbx9pNqV+sYOA/h4xrGlYSpdg+BQ3FzU3uEufHrfawkTLV79QI4t7t4VRTFV5xj5MbHOhgbCefYPQSuR63KTwBQunlufLcWjhutZY7dQ2AvGvV+NBqeuXlufLcWjht3eDYzpJd1CBqKW1tt7/7lxg/10UhYKdrrnFCBmxyY836//9Nf58b3K0YJ57w99OEXGfv89XaXGz/eS2Qlx+5FoGzafxxx48d6ie7wuuyeMmq+s3OHzU7G8MmE12UnlTanvV5v4jewHjsZx/crSkYUEAVEAVFAFBAFRAFRQBQQBUQBUUAU+K/APwJ4aiHcl19fAAAAAElFTkSuQmCC\"","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/dong-che-fen-logo-9f41a9cfcfcc5d4dedc2abaf2d7f2228.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(\"./gauge/GaugeSeries\");\n\nrequire(\"./gauge/GaugeView\");","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\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 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\");","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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;","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;","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/pop-btn-a47e94c8dae9ca09c9b0110cc2a56007.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 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'));","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\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 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;","module.exports = \"https://sf6-scmcdn2-tos.pstatp.com/motor/pc/_next/static/images/large-video-icon-6af3b8944220f8667a34d1bd6676d39d.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 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;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAADKADAAQAAAABAAAADAAAAAATDPpdAAAA6UlEQVQoFa2PsUoDQRiE5789ME1If7WNHAmYCCmE1L6A/b1FijRC3sDgGwkSSGJhYZXKzsIUFgGFG2eXO271vC4LP7c3883sLnCKxc3kntvx6r8u+ysKHkp7rvRLu9q+xEwS/wgewPAA0IXRPmgRZNxdZ+BxCdoUxgsQv0pUUMp7lbdGzy1SpHbEN2ZqPBfcXqGAuYwzIP1KbPR4UMONmt7bdKV4T4zlTx/heD1sD0uK7kBSBEZAc9+Sn52ByGsCxqwJ6F3wU63IawLAQNCbrjaH62dh/N5rwavT1ZekkXdxQXDIW+e9Gv8BFtRK17L1Y08AAAAASUVORK5CYII=\"","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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;","import fetch from 'isomorphic-unfetch'\n\ninterface IParams {\n /**\n * 超时时间\n */\n timeout?: number\n}\ntype CustomFetch = (\n input: RequestInfo,\n init?: RequestInit\n) => Promise<{\n [key: string]: any\n}>\nexport default function createFetch({ timeout = 5000 }: IParams): CustomFetch {\n return (...args) => {\n const sendRequest: () => Promise = () => {\n return timeoutPromise(timeout, fetch(...args)).then(res => {\n if (!res.ok) {\n return Promise.reject(new Error('network_error'))\n }\n return res\n })\n }\n\n return sendRequest()\n }\n}\n\n/**\n * @param ms 超时时间\n * @param promise\n */\nfunction timeoutPromise(ms: number, promise: Promise): Promise {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n reject(new Error('network_timeout'))\n }, ms)\n promise.then(resolve, reject)\n })\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport * as PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/class/addClass';\nimport removeOneClass from 'dom-helpers/class/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (node, appearing) {\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n if (type === 'appear' && phase === 'done') {\n className += \" \" + this.getClassNames('enter').doneClassName;\n } // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n }\n\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import React, { useEffect, useState, useRef, useLayoutEffect } from 'react'\nimport { CSSTransition } from 'react-transition-group'\nimport { useInView } from 'react-intersection-observer'\n\nimport { useAdStat } from 'Components/ad'\nimport applyHttpsImage from 'lib/apply-https-img'\nimport { sendTeaAdEvent, sendAdMonitor } from 'lib/tea-analyze'\n\nimport Label from './label'\nimport { SkyFallBannerAd } from './interface'\nconst timeout = 400\n\n// 天幕广告\nexport default function TianmuAd({ data }: { data: SkyFallBannerAd }) {\n const [showBig, setShowBig] = useState(false)\n const [showSmall, setShowSmall] = useState(false)\n // 是否展示小图上的关闭按钮\n // const [showButton, setShowButton] = useState(false)\n const timer = useRef()\n function closeBig() {\n timer.current = window.setTimeout(() => {\n setShowBig(false)\n setShowSmall(true)\n }, 5000)\n }\n useEffect(() => {\n sendTeaAdEvent('ad_send_float_curtain', {\n ad_material_id: data.materiel_str,\n ad_target_url: data.web_url,\n log_extra: data.log_extra,\n ad_id: data.id_str,\n ad_req_id: JSON.parse(data.log_extra).req_id,\n })\n }, [data.id_str, data.log_extra, data.materiel_str, data.web_url])\n useEffect(() => {\n let showed = false\n // 每两次刷新首页,只在第一次展现天幕广告\n try {\n showed = !!localStorage.getItem('tianmu_ad_showed')\n localStorage.setItem('tianmu_ad_showed', '1')\n } catch (err) {}\n if (showed) {\n try {\n localStorage.removeItem('tianmu_ad_showed')\n } catch (err) {}\n return\n }\n\n setShowBig(true)\n closeBig()\n return () => {\n clearTimeout(timer.current)\n }\n }, [data.image_big.url])\n\n if (!data) return null\n return (\n <>\n {\n clearTimeout(timer.current)\n setShowSmall(true)\n }}\n >\n {\n setShowBig(false)\n setShowSmall(true)\n }}\n />\n \n \n {\n setShowBig(true)\n closeBig()\n setShowSmall(false)\n }}\n onClose={() => {\n setShowSmall(false)\n }}\n />\n \n\n \n \n )\n}\n\ninterface IBigImageProps {\n data: SkyFallBannerAd\n onClose(): void\n}\n\nfunction BigImage({ data, onClose }: IBigImageProps) {\n const { ref, handleClick } = useAdStat(\n {\n send: '',\n show: '',\n click: 'ad_click_float_curtain',\n },\n data,\n undefined,\n 4000\n )\n const [ref2, inView] = useInView({\n threshold: 0,\n })\n const adData = {\n ad_material_id: data.materiel_str,\n ad_target_url: data.web_url,\n log_extra: data.log_extra,\n ad_id: data.id_str,\n ad_req_id: JSON.parse(data.log_extra).req_id,\n }\n useEffect(() => {\n if (inView) {\n sendTeaAdEvent('ad_show_float_curtain', {\n ad_material_id: data.materiel_str,\n ad_target_url: data.web_url,\n log_extra: data.log_extra,\n ad_id: data.id_str,\n ad_req_id: JSON.parse(data.log_extra).req_id,\n })\n if (data.click_track_url_list) {\n data.click_track_url_list.forEach(url => {\n sendAdMonitor({\n url,\n requestId: data.ad_log_id,\n eventId: 'show',\n })\n })\n }\n }\n }, [inView])\n return (\n {\n handleClick()\n setTimeout(() => window.open(data.web_url, '_blank'), 50)\n }}\n >\n \n {\n e.stopPropagation()\n sendTeaAdEvent('ad_dislike_float_curtain', adData)\n onClose()\n }}\n >\n \n \n
\n {data.image_expand ? (\n \n {\n handleClick()\n window.open(data.web_url, '_blank')\n }}\n className=\"expand\"\n >\n \n {/* pc广告优化,展开广告去掉广告标签 */}\n \n \n ) : null}\n \n \n \n \n )\n}\n","export function isClosed(type: string, id: string): boolean {\n if (typeof window === 'undefined') {\n return false\n }\n let result\n try {\n result = window.localStorage.getItem(`${type}_${id}`)\n } catch (error) {}\n return !!result\n}\n\nexport function setClose(type: string, id: string): void {\n if (typeof window === 'undefined') {\n return\n }\n try {\n window.localStorage.setItem(`${type}_${id}`, '1')\n } catch (err) {}\n}\n","// 炫景广告\nimport React, { useEffect, useState } from 'react'\n\nimport { sendTeaAdEvent } from 'lib/tea-analyze'\nimport { useAdStat } from 'Components/ad'\nimport Label from './label'\nimport { setClose, isClosed } from './close'\nimport { DazzlingBannerAd } from './interface'\nimport applyHttpsImage from 'lib/apply-https-img'\nexport default function XuanjingAd({ data }: { data: DazzlingBannerAd }) {\n const [isShow, setIsShow] = useState(true)\n const [type, setType] = useState<'small' | 'big'>()\n\n const adData = {\n ad_material_id: data.materiel_str,\n ad_target_url: data.web_url,\n log_extra: data.log_extra,\n ad_id: data.id_str,\n ad_req_id: JSON.parse(data.log_extra).req_id,\n }\n const { ref, handleClick } = useAdStat(\n {\n send: 'ad_send_background_and_banner',\n show: 'ad_show_background_and_banner',\n click: 'ad_click_background_and_banner',\n },\n data,\n undefined,\n 1000\n )\n useEffect(() => {\n const width = document.documentElement.clientWidth\n setType(width > 1440 ? 'big' : 'small')\n setIsShow(!isClosed('xuanjing', data.id_str))\n }, [data.id_str])\n if (!data) return null\n // if (!isShow) return null\n const imageLeft =\n type === 'small' ? data.image_left_small : data.image_left_big\n const imageRight =\n type === 'small' ? data.image_right_small : data.image_right_big\n\n return (\n
\n {isShow && (\n {\n handleClick()\n window.open(data.web_url, '_blank')\n }}\n ref={ref}\n >\n
\n )\n}\n","export function isPast(type: string, id: string): boolean {\n if (typeof window === 'undefined') {\n return false\n }\n let result\n const now = new Date()\n const old = Number(window.localStorage.getItem(`${type}_${id}_past`) || 0)\n if (!old) {\n return true\n }\n // 大于24小时\n result = now.getTime() - old > 86400000\n return !!result\n}\n\nexport function setPast(type: string, id: string): void {\n if (typeof window === 'undefined') {\n return\n }\n try {\n const now = new Date()\n window.localStorage.setItem(`${type}_${id}_past`, String(now.getTime()))\n } catch (err) {}\n}\n","// 弹窗广告\nimport React, { useEffect, useState } from 'react'\n\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { useAdStat } from 'Components/ad'\nimport { setClose, isClosed } from './close'\nimport { setPast, isPast } from './past_24'\nimport { MainPopUpAd } from './interface'\n\nexport default function PopUpAd({ data }: { data: MainPopUpAd }) {\n const [isShow, setIsShow] = useState(true)\n\n const past = isPast('popUp', data.id_str)\n\n const adData = {\n ad_material_id: data.materiel_str,\n ad_target_url: data.web_url,\n log_extra: data.log_extra,\n ad_req_id: JSON.parse(data.log_extra).req_id,\n }\n const { ref, handleClick } = useAdStat(\n {\n send: 'ad_send_main_popup_window',\n show: 'ad_show_main_popup_window',\n click: 'ad_click_main_popup_window',\n },\n data,\n undefined,\n 1000\n )\n\n // 如果已经过期或者未关闭过弹窗,才展示弹窗\n useEffect(() => {\n if (past || !isClosed('popUp', data.id_str)) {\n setClose('popUp', data.id_str)\n setPast('popUp', data.id_str)\n setIsShow(!isClosed('popUp', data.id_str) || past)\n return\n }\n setIsShow(false)\n }, [data.id_str])\n\n if (!data || !isShow) return null\n\n // 点击最小化时动效\n const handleMin = (e: any) => {\n e.stopPropagation()\n sendTeaCommEvent('click_main_popup_window_shrink', {\n ...adData,\n shrink_type: 'fold',\n })\n\n const bg = document.getElementById('pop-bg')\n const car = document.getElementById('pop-car')\n const label = document.getElementById('pop-label')\n const button = document.getElementById('pop-button')\n const minmize = document.getElementById('pop-minmize')\n button && button.classList.add('show')\n bg && bg.classList.add('fade-out')\n car && car.classList.add('lessen')\n label && label.classList.add('fade-out')\n minmize && minmize.classList.add('fade-out')\n button && button.classList.add('fade-in')\n\n setTimeout(() => {\n bg && bg.classList.add('hide')\n label && label.classList.add('hide')\n minmize && minmize.classList.add('hide')\n car && car.classList.add('small-car')\n }, 700)\n }\n\n // 点击关闭按钮\n const handleClose = (e: any) => {\n e.stopPropagation()\n setIsShow(false)\n setClose('popUp', data.id_str)\n sendTeaCommEvent('click_main_popup_window_close', adData)\n }\n\n // 点击广告\n const handleClickAd = () => {\n handleClick()\n window.open(data.web_url, '_blank')\n }\n\n return (\n
handleClickAd()}>\n
\n
\n
\n handleMin(e)}\n id=\"pop-minmize\"\n />\n
\n \n {data.label}\n \n
\n {data.button}\n handleClose(e)}\n />\n
\n \n
\n )\n}\n","// 首页的store\n\nimport React, { useReducer, createContext, useContext } from 'react'\n\nimport { AdData } from './ad/interface'\n\ninterface IStore {\n /**\n * 首页的广告数据\n * undefined 代表未加载\n * null 代表没有广告数据\n */\n adData: AdData | null | undefined\n}\n\ninterface ISetAdData {\n type: 'setAdData'\n payload: IStore['adData'] | null\n}\n\ntype TAction = ISetAdData\n\ninterface StoreContext {\n state: Partial\n dispatch(param: ISetAdData): void\n}\nconst initState = {\n adData: undefined,\n}\nconst HomeStoreContext = createContext({\n state: initState,\n dispatch: () => {},\n})\n\nfunction reducer(state: Partial = initState, action: TAction) {\n switch (action.type) {\n case 'setAdData':\n return {\n ...state,\n adData: action.payload || null,\n }\n default:\n return state\n }\n}\n\nconst HomeStoreProvider = (props: {\n children: React.ReactNode\n value?: Partial\n}) => {\n const { children, value = {} } = props\n const [state, dispatch] = useReducer(reducer, initState)\n return (\n \n {children}\n \n )\n}\n\nfunction useAdData() {\n return useContext(HomeStoreContext).state.adData\n}\n\nexport { HomeStoreProvider, HomeStoreContext, useAdData }\n","import React, { useState, useEffect, useContext } from 'react'\n\nimport getUrl from 'lib/url'\nimport createFetch from 'lib/fetch-with-timeout'\nimport { useCityName } from 'Components/hooks'\n\n// 天幕广告\nimport TianmuAd from './tianmu'\n// 通栏广告\nimport TonglanAd from './tonglan-1'\n// 炫景广告\nimport XuanjingAd from './xuanjing'\n// 弹窗广告\nimport PopUpAd from './popUp'\n\nimport { isClosed } from './close'\nimport { isPast } from './past_24'\nimport { HomeStoreContext } from '../context'\nimport { AdData, AdResult } from './interface'\n\nconst fetch = createFetch({\n timeout: 5000,\n})\nexport default function BannerAD() {\n const { dispatch } = useContext(HomeStoreContext)\n const [adInfo, setAdInfo] = useState()\n const [showPopUp, setShowPopUp] = useState(false)\n const cityName = useCityName()\n useEffect(() => {\n if (typeof cityName !== 'undefined') {\n fetch(\n `/motor/ad/m/pc/banners?city_name=${encodeURIComponent(cityName)}`,\n {\n credentials: 'include',\n }\n )\n .then(res => res.json())\n .then((data: AdResult) => {\n if (data.status !== 0 || !data.data) {\n // 没有广告数据\n dispatch({\n type: 'setAdData',\n payload: null,\n })\n return\n }\n setAdInfo(data.data)\n dispatch({\n type: 'setAdData',\n payload: data.data,\n })\n })\n .catch(err => {\n console.error('fetch ad error')\n // 没有广告数据\n dispatch({\n type: 'setAdData',\n payload: null,\n })\n throw err\n })\n }\n }, [cityName, dispatch])\n\n // 弹窗广告需要等带炫景广告以及天幕广告之后再展示\n useEffect(() => {\n if (!adInfo) {\n return\n }\n let waitTime = 0\n if (adInfo.sky_fall_banner_ad || adInfo.dazzling_banner_ad) {\n waitTime = 5000\n }\n setTimeout(() => {\n const showPop =\n adInfo.main_splash_ad &&\n (!isClosed('popUp', adInfo.main_splash_ad.id_str) ||\n isPast('popUp', adInfo.main_splash_ad.id_str))\n setShowPopUp(showPop)\n }, waitTime)\n }, [adInfo])\n\n if (!adInfo) return null\n // 是否显示炫景广告\n const showXuanjingAd = adInfo.dazzling_banner_ad\n const showTianmuAd = adInfo.sky_fall_banner_ad\n const showTonglanAd =\n adInfo.pc_common_banner_ad &&\n !isClosed('tonglan', adInfo.pc_common_banner_ad.id_str)\n\n return (\n <>\n {showXuanjingAd &&\n Object.keys(adInfo.dazzling_banner_ad).length !== 0 && (\n \n )}\n {showTianmuAd && Object.keys(adInfo.sky_fall_banner_ad).length !== 0 && (\n \n )}\n {showTonglanAd &&\n Object.keys(adInfo.pc_common_banner_ad).length !== 0 && (\n \n )}\n {showPopUp && Object.keys(adInfo.main_splash_ad).length !== 0 && (\n \n )}\n \n )\n}\n","// 热点内容右侧广告\nimport React from 'react'\nimport { useAdData } from '../context'\nimport get from 'lodash/get'\nimport Label from './label'\nimport { useAdStat } from 'Components/ad'\nimport { RightButtonBannerAd } from './interface'\nimport applyHttpsImage from 'lib/apply-https-img'\n\ninterface IProps {\n /**\n * 如果没有广告,就展示children内容\n */\n children: Exclude\n}\n\nconst HotNewsRightAD: React.FC = ({ children }) => {\n const adData = useAdData()\n const hotNewsAd = adData ? adData.right_button_banner_ad : undefined\n\n // 广告还未加载时为undefined, 加载完毕后仍未空则代表没有广告\n if (adData === undefined) {\n return (\n
\n \n
\n )\n }\n\n if (!hotNewsAd || Object.keys(hotNewsAd).length === 0) {\n return children\n }\n return \n}\n\nfunction AdItem({ data }: { data: RightButtonBannerAd }) {\n const { ref, handleClick } = useAdStat(\n {\n send: 'ad_send_hot_news_picture',\n show: 'ad_show_hot_news_picture',\n click: 'ad_click_hot_news_picture',\n },\n data\n )\n return (\n
\n
\n {\n handleClick()\n setTimeout(() => {\n window.open(data.web_url, '_blank')\n }, 50)\n }}\n />\n
\n

{data.title || ''}

\n \n
\n )\n}\nexport default HotNewsRightAD\n","import React from 'react'\nimport Swiper from 'react-id-swiper'\nimport get from 'lodash/get'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nexport interface LiveData {\n room_id: string\n preview_id: string\n type: 0 | 1 | 2\n title: string\n create_time: number\n finish_time: number\n cover_url: string\n popularity: number\n user_info: {\n user_name: string\n avatar: string\n user_id_str: string\n }\n}\ninterface IProps {\n children?: React.ReactNode\n imgArray: string[]\n room_ids: string[]\n setSlideIndex?: (x: number) => void\n show_home_live_banner_tea?: (x: number) => void\n}\n\nconst left_ic_img = require('static/left-ic.svg')\n\nexport default function ToggleImageGroup(props: IProps) {\n const {\n children,\n imgArray,\n setSlideIndex,\n show_home_live_banner_tea,\n room_ids,\n } = props\n\n const params = {\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n autoplay: {\n delay: 8000,\n disableOnInteraction: true,\n },\n loop: true,\n on: {\n slideChangeTransitionStart() {\n const activeIndex = get(this, 'activeIndex', 1) - 1 + imgArray.length\n setSlideIndex && setSlideIndex(activeIndex % imgArray.length)\n show_home_live_banner_tea &&\n show_home_live_banner_tea(activeIndex % imgArray.length)\n },\n },\n }\n const imgGroup = imgArray.map((e, index) => (\n \n \n \n \n ))\n return (\n <>\n
\n {imgGroup}\n {children}\n
\n \n \n )\n}\n","/* 热点内容 */\nimport React, { useEffect, useState, SyntheticEvent } from 'react'\nimport { useInView } from 'react-intersection-observer'\nimport useVisible from 'Components/hooks/use-visible'\nimport get from 'lodash/get'\nimport getUrl from 'lib/url'\n\nimport ArticleLink from 'Components/links/article-link'\nimport { IFeedData } from 'lib/fetch-feed'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nimport HotNewsRightAD from './ad/hot-news-right'\nimport applyHttpsImage from 'lib/apply-https-img'\nimport ToggleImgGroup, { LiveData } from 'Components/toggle-image-group'\nimport Link from 'next/link'\nimport formatNumber from '@arsenal/arsenal/modules/formatNumber'\nimport formatTime from 'lib/format-time'\nimport { renderTitle } from 'Pages/live/home'\n\nconst live_black_gif = require('static/live-black.gif')\nconst default_svg = require('static/default.png')\ninterface IProps {\n hotSpot: IFeedData[]\n}\n\nexport default function HotNews({ hotSpot }: IProps) {\n const [ref, inView] = useInView({\n threshold: 0,\n })\n const isVisible = useVisible()\n const [hasShow, setHasShow] = useState(false)\n const [slideIndex, setSlideIndex] = useState(0)\n const [liveDatas, setLiveDatas] = useState([])\n const [loaded, setLoaded] = useState<0 | 1 | 2>(0) // 0未加载 1已加载 2加载失败\n\n useEffect(() => {\n if (liveDatas.length === 0) {\n fetch(getUrl('/motor/m_api/pc_live_rooms')).then(res => {\n res\n .json()\n .then(json => {\n setLoaded(1)\n setLiveDatas(\n json.data?.filter((e: LiveData) => {\n return e?.type !== 0 || false\n })\n )\n })\n .catch(error => {\n setLoaded(2)\n console.error(error)\n })\n })\n }\n }, [])\n const {\n room_id = '',\n preview_id = '',\n type = 0,\n title = '',\n create_time = NaN,\n popularity = 0,\n user_info = {\n user_name: '',\n avatar: '',\n user_id_str: '',\n },\n } = liveDatas.length > 0 ? liveDatas[slideIndex] : {}\n const author_profile_url = `/user/ugc_profile/${user_info.user_id_str}`\n let date\n if (!Number.isNaN(create_time)) {\n date = new Date(create_time * 1000)\n }\n const live_card_img_group = liveDatas.map(e => e.cover_url)\n const room_ids = liveDatas.map(e => e.room_id)\n useEffect(() => {\n if (!hasShow && inView && isVisible && hotSpot.length) {\n sendTeaCommEvent('show_hot_news_potrait', {\n group_id: get(hotSpot, `[0].unique_id_str`, ''),\n content_type: get(hotSpot, `[0].type`, ''),\n })\n sendTeaCommEvent('show_hot_news_potrait', {\n group_id: get(hotSpot, `[${hotSpot.length - 1}].unique_id_str`, ''),\n content_type: get(hotSpot, `[${hotSpot.length - 1}].type`, ''),\n })\n sendTeaCommEvent('show_hot_news_list')\n setHasShow(true)\n }\n }, [hasShow, hotSpot, inView, isVisible])\n return (\n
\n
\n
\n
\n {live_card_img_group.length > 0 && (\n \n \n \n {user_info.user_name}\n \n \n )}\n
\n {\n const target = e.target as HTMLElement\n const prevPressed = target.classList.contains(\n 'swiper-button-prev'\n )\n const nextPressed = target.classList.contains(\n 'swiper-button-next'\n )\n if (prevPressed || nextPressed) {\n sendTeaCommEvent('click_home_live_banner_switch', {\n switch_direction: nextPressed ? 'right' : 'left',\n })\n return\n }\n sendTeaCommEvent('click_home_live_banner', {\n rank: slideIndex,\n anchor_id: user_info.user_id_str,\n room_id,\n is_live_preview: type === 2 ? 1 : 0,\n })\n }}\n >\n
\n {live_card_img_group.length > 1 && (\n {\n setSlideIndex(a)\n }}\n show_home_live_banner_tea={index => {\n sendTeaCommEvent('show_home_live_banner', {\n rank: index,\n room_id,\n anchor_id: user_info.user_id_str,\n is_live_preview: type === 2 ? 1 : 0,\n })\n }}\n >\n {\n
\n \n {type === 1 && (\n \n )}\n {type === 1 ? '直播中' : '直播预告'}\n \n \n \n {type === 1\n ? `${formatNumber(popularity)}人在观看`\n : date && formatTime(date.getTime())}\n \n \n
\n }\n \n )}\n {live_card_img_group.length === 1 && (\n \n )}\n {live_card_img_group.length === 0 && (\n \n )}\n
\n
\n
\n \n {renderTitle(\n live_card_img_group.length === 0,\n title,\n loaded,\n {\n margin: '14px 0 0 12px',\n height: '22px',\n fontSize: '16px',\n color: '#1f2129',\n fontWeight: 500,\n },\n {\n textAlign: 'center',\n fontSize: '16px',\n fontWeight: 500,\n color: '#606370',\n }\n )}\n \n
\n
\n
    \n {hotSpot\n .slice(1, hotSpot.length - 1)\n .slice(0, 8)\n .map((item: IFeedData, index) => (\n
  • \n {\n sendTeaCommEvent('click_hot_news_cell', {\n group_id: gid,\n content_type: `${item.type}`,\n rank: index,\n })\n }}\n >\n {item.info.title}\n \n
  • \n ))}\n
\n \n {\n sendTeaCommEvent('click_hot_news_potrait', {\n group_id: gid,\n content_type: get(hotSpot, `[${hotSpot.length - 1}].type`, ''),\n })\n }}\n >\n
\n \n
\n \n {get(hotSpot, `[${hotSpot.length - 1}].info.title`, '')}\n \n
\n
\n \n
\n
\n \n \n )\n}\n","import React, { useEffect, useRef, SyntheticEvent } from 'react'\nimport Link from 'next/link'\nimport echarts from 'echarts'\n\ninterface IProps {\n theStyle: Record\n comfort_score: number\n appearance_score: number\n configuration_score: number\n control_score: number\n power_score: number\n space_score: number\n interiors_score: number\n score: number\n jumpTo: string\n}\nexport default function RadarChart(props: IProps) {\n const {\n theStyle,\n comfort_score,\n appearance_score,\n configuration_score,\n control_score,\n power_score,\n space_score,\n interiors_score,\n score,\n jumpTo,\n } = props\n const ref = useRef(null)\n useEffect(() => {\n const dom = ref.current as HTMLDivElement\n const myChart = echarts.init(dom)\n const max = 500\n const option = {\n title: {\n text: (score / 100).toFixed(2),\n x: 'center',\n y: 'center',\n textStyle: {\n color: '#000000',\n fontSize: 18,\n fontWeight: 'bold',\n },\n },\n radar: {\n // shape: 'circle',\n textStyle: {\n color: '#1f2129',\n fontSize: 10,\n lineHeight: 1.4,\n },\n indicator: [\n { name: '外观', max },\n { name: '动力', max },\n { name: '操控', max },\n { name: '舒适性', max },\n { name: '空间', max },\n { name: '配置', max },\n { name: '内饰', max },\n ],\n radius: 32,\n splitNumber: 3,\n silent: true,\n nameGap: 6,\n shape: 'circle',\n splitArea: {\n areaStyle: {\n color: '#f7f8fc',\n },\n },\n name: {\n textStyle: {\n color: '#1f2129',\n fontSize: 10,\n lineHeight: 14,\n },\n },\n splitLine: {\n lineStyle: {\n color: '#e6e8f2',\n width: 0.5,\n },\n },\n axisLine: {\n lineStyle: {\n color: '#e6e8f2',\n width: 0.5,\n },\n },\n },\n series: [\n {\n type: 'radar',\n // areaStyle: {normal: {}},\n symbol: 'none',\n areaStyle: {\n normal: {\n color: 'rgba(255,205,50,0.4)',\n },\n },\n lineStyle: {\n normal: {\n width: 2,\n color: '#ffcd32',\n },\n },\n\n data: [\n {\n value: [\n appearance_score,\n power_score,\n control_score,\n comfort_score,\n space_score,\n configuration_score,\n interiors_score,\n ],\n },\n ],\n },\n ],\n }\n myChart.setOption(option as any)\n }, [])\n\n return (\n \n
\n \n )\n}\n","import React, { SyntheticEvent } from 'react'\nimport Link from 'next/link'\nimport RadarChart from './RadarChart'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nconst star = require('static/star.png')\nconst star2 = require('static/star@2x.png')\nconst star3 = require('static/star@3x.png')\n\nconst star_black = require('static/star-black.png')\nconst star_black2 = require('static/star-black@2x.png')\nconst star_black3 = require('static/star-black@3x.png')\n\nconst quoter = require('static/6.png')\nconst quoter2 = require('static/6@2x.png')\nconst quoter3 = require('static/6@3x.png')\n\ninterface CarReview {\n series_id: number\n series_name: string\n author_info: {\n user_id: number\n user_name: string\n avatar_url: string\n }\n related_group_id: {\n group_count: number\n group_list: [string]\n }\n score: number\n content: string\n comfort_score: number\n appearance_score: number\n configuration_score: number\n control_score: number\n power_score: number\n space_score: number\n interiors_score: number\n cover_url: string\n}\nexport default function ValueCard(props: CarReview) {\n let mark_text = ''\n const {\n score,\n author_info,\n series_name,\n series_id,\n content,\n cover_url,\n appearance_score,\n power_score,\n control_score,\n comfort_score,\n space_score,\n configuration_score,\n interiors_score,\n related_group_id,\n } = props\n const group_id = related_group_id.group_list[0] || ''\n const scoreObj = {\n appearance_score,\n power_score,\n control_score,\n comfort_score,\n space_score,\n configuration_score,\n interiors_score,\n score,\n }\n if (score < 100) {\n mark_text = '极差'\n } else if (score < 200) {\n mark_text = '较差'\n } else if (score < 300) {\n mark_text = '一般'\n } else if (score < 400) {\n mark_text = '良好'\n } else if (score < 500) {\n mark_text = '优秀'\n }\n const scorePartial = score / 500.0\n\n const review_detail_url = `/article/${group_id}`\n const car_profile_url = `/auto/series/${series_id}`\n const author_profile_url = `/user/ugc_profile/${author_info.user_id}`\n\n // const sendTeaEvent = (eventType: string) => {\n // sendTeaCommEvent(eventType, {\n // car_series_name: series_name,\n // car_series_id: series_id,\n // group_id: related_group_id.group_list[0]\n // })\n // }\n\n return (\n {\n const target = e.target as HTMLElement\n let position = ''\n const classListValue = target.classList.value\n if (\n classListValue.includes('avatar') ||\n classListValue.includes('author-name')\n ) {\n position = 'author'\n } else if (\n classListValue.includes('car-name') ||\n classListValue.includes('car-cover')\n ) {\n position = 'car'\n } else if (\n classListValue.includes('content') ||\n classListValue.includes('quoter') ||\n classListValue.includes('radar-chart')\n ) {\n position = 'article'\n }\n if (position !== '') {\n sendTeaCommEvent('click_dcar_score_card', {\n evaluate_card_clk_position: position,\n group_id: related_group_id.group_list[0],\n })\n }\n }}\n >\n \n
\n
\n {[0, 1, 2, 3, 4].map((e, index) => (\n \n ))}\n
\n {[0, 1, 2, 3, 4].map((e, index) => (\n \n ))}\n {(score / 100.0).toFixed(1)}\n {mark_text}\n
\n \n \n \n { sendTeaCommEvent('click_car_cover') }}\n />\n \n \n \n \n
\n )\n}\n","import React, { useState, SyntheticEvent } from 'react'\nimport ValueCard from '../../components/value-card'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport getUrl from 'lib/url'\n\nconst score_bg = require('static/score-bg.png')\n\nconst logo = require('static/dong-che-fen-logo.png')\n\nconst change_ic = require('static/change-ic.png')\nconst change_ic2 = require('static/change-ic@2x.png')\nconst change_ic3 = require('static/change-ic@3x.png')\n\nexport interface CarReview {\n series_id: number\n series_name: string\n author_info: {\n user_id: number\n user_name: string\n avatar_url: string\n }\n related_group_id: {\n group_count: number\n group_list: [string]\n }\n cover_url: string\n score: number\n content: string\n comfort_score: number\n appearance_score: number\n configuration_score: number\n control_score: number\n power_score: number\n space_score: number\n interiors_score: number\n}\nexport default function DongCheFen({\n reviewData = [],\n}: {\n reviewData: CarReview[]\n}) {\n const [indexNext, setIndexNext] = useState(0)\n const onChangeClick = () => {\n setIndexNext((indexNext + 3) % reviewData.length)\n }\n\n const arr: CarReview[] =\n reviewData.length >= indexNext + 3\n ? reviewData.slice(indexNext, indexNext + 3)\n : reviewData\n .slice(indexNext)\n .concat(reviewData.slice(0, indexNext + 3 - reviewData.length))\n return (\n
\n
\n \n
\n \n 每次评分都源自一次真实的体验\n \n 换一换\n \n \n
\n
\n {arr.map(e => (\n \n ))}\n
\n
\n \n
\n )\n}\n","/* 渲染顶部车的类型 */\nimport React from 'react'\nimport classnames from 'classnames'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport Link from 'next/link'\n\ninterface ICarData {\n value: number | string\n text: string\n}\n\nexport default function TypeList() {\n const carList = [\n {\n value: 0,\n text: '轿车',\n },\n {\n value: 1,\n text: 'SUV',\n },\n {\n value: 2,\n text: 'MPV',\n },\n {\n value: 4,\n text: '跑车',\n },\n {\n value: 3,\n text: '皮卡',\n },\n {\n value: 7,\n text: '微面',\n },\n {\n value: 8,\n text: '微卡',\n },\n {\n value: 6,\n text: '轻客',\n },\n ]\n\n /* 渲染车型的分类 */\n function renderCar(param: ICarData, index: number) {\n return (\n \n {\n sendTeaCommEvent('click_home_top_series_type', {\n series_type: param.text,\n series_type_id: param.value,\n })\n }}\n >\n
\n \n \n \n )\n }\n\n return (\n
\n {carList.map((item: ICarData, index: number) => renderCar(item, index))}\n \n
\n )\n}\n","import React, { useEffect, useState, useMemo, useRef } from 'react'\n\nimport Label from './label'\nimport { useAdData } from '../context'\nimport { useAdStat } from 'Components/ad'\nimport { AdData } from './interface'\nimport applyHttpsImage from 'lib/apply-https-img'\n// 视频下方的通栏广告\n\nconst TonglanAD2: React.FC<{}> = () => {\n const adData = useAdData()\n if (!adData) {\n return null\n }\n const targetAD = adData.video_down_banner_ad\n if (!targetAD || Object.keys(targetAD).length === 0) {\n return null\n }\n return \n}\nfunction AdItem({ data }: { data: AdData['video_down_banner_ad'] }) {\n const { ref, handleClick } = useAdStat(\n {\n send: 'ad_send_home_page_middle_banner',\n show: 'ad_show_home_page_middle_banner',\n click: 'ad_click_home_page_middle_banner',\n },\n data\n )\n return (\n {\n handleClick()\n window.open(data.web_url, '_blank')\n }}\n >\n \n
\n )\n}\n\nfunction FirstRowSeriesItem({ nav, data }: { nav: string; data: ISeriesItem }) {\n const name = data.outter_name || data.info.series_name || data.info.brand_name\n const id = data.id || data.info.series_id\n const carIds = data.car_ids\n const cover = data.cover_url || data.info.cover_url\n return (\n
\n \n {\n sendTeaCommEvent('click_home_top_series', {\n series_type: getType(nav, 'series_type'),\n price_range: getType(nav, 'price'),\n country_type: getType(nav, 'country'),\n car_series_id: id,\n car_series_name: name,\n })\n }}\n >\n \n
\n {name}\n {data.series_status_tag && }\n
\n \n \n \n \n
\n )\n}\n\n// 广告item,区分第一行\nfunction RowSeriesItemWithAD({\n nav,\n data,\n index,\n rank,\n}: {\n nav: string\n data: IPopularSeriesAd\n index: number\n rank: number\n}) {\n // 特指广告\n const name = data?.series_name\n const id = data?.series_id\n const carIds = data?.car_ids\n const cover = data?.cover_url\n const [showAd, setShowAd] = useState(false)\n const track =\n index === 0\n ? {\n send: '',\n show: 'ad_show_hot_series_hover_card',\n click: 'ad_click_hot_series_hover_card',\n }\n : {\n send: '',\n show: '',\n click: 'ad_click_home_text_hover',\n }\n\n const { ref, handleClick } = useAdStat(track, data, { rank }, 2000)\n function handleMouseEnter() {\n setShowAd(true)\n }\n function handleMouseLeave() {\n setShowAd(false)\n }\n return (\n
\n {\n // 第一行\n if (index === 0) {\n sendTeaCommEvent('click_home_top_series', {\n series_type: getType(nav, 'series_type'),\n price_range: getType(nav, 'price'),\n country_type: getType(nav, 'country'),\n car_series_id: id,\n car_series_name: name,\n })\n }\n handleClick()\n setTimeout(() => {\n window.open(`/auto/series/${id}`, '_blank')\n }, 50)\n }}\n >\n {/* 第一行,hover image */}\n {index === 0 ? (\n <>\n \n \n \n
\n
\n {name}\n
\n \n ) : (\n // 其他hover 车系名字\n \n {name}\n \n
\n )}\n \n \n\n \n \n )\n}\n\nfunction handleReplacePosition(data: any[], adData: IPopularSeriesAd[]) {\n // 全部广告的车系id\n const seriesIdList = [...adData].map((adItem: IPopularSeriesAd) => {\n return adItem.series_id\n })\n // 去重,只保留没有重复的item\n const newDedupArr: any = []\n data.map((item: ISeriesItem) => {\n if (!seriesIdList.includes(item.id)) {\n newDedupArr.push(item)\n }\n return item\n })\n // 按位置插入\n adData.map((adInfo: IPopularSeriesAd) => {\n newDedupArr.splice(adInfo.idx - 1, 0, adInfo)\n return adInfo\n })\n return newDedupArr\n}\n","/* 热门品牌栏 */\nimport React from 'react'\nimport Link from 'next/link'\n\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport { IBrands } from './interface'\nimport applyHttpsImage from 'lib/apply-https-img'\nimport { get } from 'lodash'\n\ninterface IProps {\n brands: IBrands[]\n}\n\nexport default function PopularBrands({ brands }: IProps) {\n /* 渲染热门品牌 */\n const hotBrandIds = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n const showBrands: IBrands[] = []\n brands &&\n brands.forEach(brand => {\n const brandId = get(brand, 'info.brand_id')\n if (hotBrandIds.indexOf(brandId) >= 0) {\n // 热门品牌集合\n showBrands.push({\n brand_id: brandId,\n image_url: get(brand, 'info.image_url', '').replace('http:', ''),\n brand_name: get(brand, 'info.brand_name', ''),\n })\n }\n })\n\n function renderBrands() {\n const list = [[...showBrands.slice(0, 5)], [...showBrands.slice(5, 10)]]\n return (\n
\n {list.map((brand: IBrands[], index: number) => {\n return (\n
\n {brand.map((item: IBrands) => (\n \n {\n sendTeaCommEvent('click_home_brand_selector', item)\n }}\n >\n \n {item.brand_name}\n \n \n ))}\n
\n )\n })}\n \n
\n )\n }\n\n return (\n
\n
\n

热门品牌

\n \n {\n sendTeaCommEvent('click_home_brand_selector_more')\n }}\n target=\"_blank\"\n className=\"icon\"\n >\n 更多品牌\n \n \n \n
\n {renderBrands()}\n
\n
\n
\n {\n sendTeaCommEvent('click_top_download_ios')\n }}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://apps.apple.com/cn/app/懂车帝-帮你买车用车的车友之家/id1232131998\"\n className=\"ios-download\"\n />\n \n {\n sendTeaCommEvent('click_top_download_apk')\n }}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://d.toutiao.com/jLdp/\"\n className=\"apk-download\"\n />\n
\n
\n \n
\n
\n

扫码下载懂车帝APP

\n \n
\n
\n
\n
\n \n
\n )\n}\n","/* swiper不支持Image组件,精选视频 */\nimport React, { useEffect, useState, SyntheticEvent } from 'react'\nimport { useInView } from 'react-intersection-observer'\nimport useVisible from 'Components/hooks/use-visible'\nimport formatDuration from 'lib/format-duration'\nimport classnames from 'classnames'\nimport ArticleLink from 'Components/links/article-link'\nimport { IFeedData } from 'lib/fetch-feed'\nimport Link from 'next/link'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport get from 'lodash/get'\n\nimport Swiper from 'react-id-swiper'\nimport 'lib/swiper.less'\nimport applyHttpsImage from 'lib/apply-https-img'\n\nconst video_icon = require('../../public/static/large-video-icon.png')\ninterface IProps {\n featuredVideos: IFeedData[]\n articleList: ArticleData[]\n}\n\ninterface IVideo {\n name: string\n column_id: number\n}\n\nexport interface ArticleData {\n gid: number\n gid_str: string\n title: string\n count: number\n type: number\n}\nconst videoTitle = [\n {\n name: '大神评测官',\n column_id: 128,\n },\n {\n name: '38号车评中心',\n column_id: 111,\n },\n {\n name: '明星评测官',\n column_id: 144,\n },\n {\n name: '丈母娘唠车',\n column_id: 131,\n },\n]\n\nexport default function FeaturedVideos({\n featuredVideos,\n articleList = [],\n}: IProps) {\n const FRAME_TIMES = 3\n\n const [ref, inView] = useInView({\n threshold: 0,\n })\n const isVisible = useVisible()\n const [hasShow, setHasShow] = useState(false)\n useEffect(() => {\n if (!hasShow && inView && isVisible && featuredVideos.length) {\n sendTeaCommEvent('show_selected_video_list')\n sendTeaCommEvent('web_client_show', {\n list_type: 1,\n item_type: 1,\n key_name: 'home_hot_video_card',\n })\n setHasShow(true)\n }\n }, [featuredVideos, hasShow, inView, isVisible])\n const params = {\n pagination: {\n el: '.swiper-pagination',\n type: 'bullets',\n clickable: true,\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n autoplay: {\n delay: 8000,\n disableOnInteraction: false,\n },\n loop: true,\n spaceBetween: 30,\n on: {\n slideChangeTransitionStart() {\n const activeIndex =\n (get(this, 'activeIndex', 1) - 1 + FRAME_TIMES) % FRAME_TIMES\n sendTeaCommEvent('show_excellent_car_video_card', {\n rank: activeIndex,\n })\n },\n },\n }\n return (\n
\n {\n const target = e.target as HTMLElement\n const prevPressed = target.classList.contains('swiper-button-prev')\n const nextPressed = target.classList.contains('swiper-button-next')\n if (prevPressed || nextPressed) {\n sendTeaCommEvent('click_excellent_video_switch', {\n switch_direction: nextPressed ? 'right' : 'left',\n })\n return\n }\n }}\n >\n
\n
\n

精选视频

\n
\n
    \n {videoTitle.map((item: IVideo) => (\n {\n sendTeaCommEvent('click_excellent_video_card_desc', {\n program_id: item.column_id,\n })\n }}\n >\n \n \n {item.name}\n \n \n \n ))}\n
\n
\n \n {\n sendTeaCommEvent('click_excellent_video_card_channel')\n }}\n >\n 进入视频频道\n \n \n \n
\n
\n \n {new Array(FRAME_TIMES)\n .fill(undefined)\n .map((item: number, index: number) => {\n const currentIndex = index * 5\n const videoList = featuredVideos.slice(\n currentIndex + 1,\n currentIndex + 5\n )\n const videoBig = featuredVideos[currentIndex]\n if (!videoBig) {\n return
\n }\n return (\n
\n
\n \n
\n {\n sendTeaCommEvent(\n 'click_excellent_video_card_item',\n {\n group_id: videoBig.unique_id_str,\n rank: index,\n item_rank: 0,\n }\n )\n }}\n >\n \n
\n
\n
\n\n
\n
\n {get(\n featuredVideos,\n `[${currentIndex}].info.title`,\n ''\n )}\n
\n
\n
\n \n
\n
\n {videoList.map((infoItem: IFeedData, infoIndex: number) => (\n \n \n
\n {\n sendTeaCommEvent(\n 'click_excellent_video_card_item',\n {\n group_id: videoBig.unique_id_str,\n rank: index,\n item_rank: infoIndex + 1,\n }\n )\n }}\n >\n
\n {formatDuration(\n get(infoItem, 'info.video_duration', '')\n )}\n
\n
\n
\n
\n
\n {get(infoItem, `info.title`, '')}\n
\n
\n \n
\n ))}\n
\n
\n )\n })}\n \n \n
\n
\n
\n

视频排行榜

\n
\n
\n
    \n {Array.isArray(articleList) &&\n articleList.slice(0, 10).map((item, index) => {\n return (\n
  • \n {\n sendTeaCommEvent('click_home_top_video', {\n group_id: item.gid_str,\n })\n }}\n className=\"line-1\"\n >\n \n {index + 1}\n {index < 3 ? null : '.'}\n \n \n {item.title}\n \n \n {item.count}万次播放\n
  • \n )\n })}\n
\n
\n \n \n )\n}\n","import React, { Fragment } from 'react'\nimport Link from 'next/link'\n\nimport getLinkHref from 'lib/url'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nimport Image from 'Components/image'\n\nimport { ICarList } from '../interface'\n\ninterface IProps {\n /* 汽车详细数据 */\n list: ICarList\n /* 显示的月份还是第几的icon */\n hasIcon?: boolean\n /* 显示的是价格还是销量 */\n isOrigin?: boolean\n /* 显示第几的icon */\n index?: number\n // 用于统计,表明来自哪个组件\n from?: string\n}\n\nconst REG_EX = /\\d{0,}月/\n\nexport default function CarList({\n list,\n from = '',\n index = 1,\n hasIcon = true,\n isOrigin = true,\n}: IProps) {\n // background: url(${require(`static/${index}_img@3x.png`)}) no-repeat\n // center / 36px 36px;\n\n const regRes = REG_EX.exec(list.online_date)\n const monthStr = (regRes && regRes[0]) || 0\n\n return (\n
\n {hasIcon ? (\n \n ) : (\n {monthStr}\n )}\n \n {\n sendTeaCommEvent(from, {\n car_series_name: list.series_name,\n car_series_id: list.series_id,\n rank: index,\n })\n }}\n >\n \n {list.series_name}\n {isOrigin ? (\n \n {`${\n list.price\n ? list.price\n : `${\n list.min_price && list.max_price\n ? `${list.min_price}-${list.max_price}万`\n : '暂无报价'\n }`\n }`}\n \n ) : (\n 总销量 {list.count}\n )}\n \n \n \n
\n )\n}\n","/* 销量排行榜 */\nimport React from 'react'\n\nimport getLinkHref from 'lib/get-link-href'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nimport Header from './common/header'\nimport CarList from './common/car-list'\n\nimport { ICarList } from './interface'\n\ninterface IProps {\n sales: ICarList[]\n}\n\nexport default function SalesLeaderborard({ sales }: IProps) {\n return (\n
\n {\n sendTeaCommEvent('click_sale_series_rank_list_more')\n }}\n />\n
\n {sales.map((item: ICarList, index: number) => (\n \n ))}\n
\n \n
\n )\n}\n","import React, { SyntheticEvent } from 'react'\nimport Link from 'next/link'\n\nconst new_card_span_img = require('../public/static/new-card-span.svg')\nconst vertical_slash_line_img = require('../public/static/vertical-slash-line.png')\ninterface ListedItem {\n series_id: number\n series_name: string\n price: string\n online_date: string\n cover_url: string\n series_type: string\n onClick?: (e: SyntheticEvent) => void\n}\nexport default function NewCarCard(props: ListedItem) {\n const {\n series_id,\n series_name,\n price,\n online_date,\n cover_url,\n series_type,\n onClick,\n } = props\n const car_profile_url = `/auto/series/${series_id}`\n return (\n
\n \n {online_date.slice(0, -2)}\n \n
\n \n \n {series_name}\n \n \n {series_type}\n \n 指导价:\n \n \n {price}\n \n \n \n \n \n \"car_img_here\"\n \n \n
\n\n \n
\n )\n}\n","import React, { useState, useEffect, SyntheticEvent, useRef } from 'react'\nimport Link from 'next/link'\nimport NewCarCard from './new-car-card'\nimport getLinkHref from 'lib/get-link-href'\nimport getUrl from 'lib/url'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\nconst more_ic_b_img = require('../public/static/more-ic-b.png')\nconst more_ic_b_img2 = require('../public/static/more-ic-b@2x.png')\nconst more_ic_b_img3 = require('../public/static/more-ic-b@3x.png')\n\ninterface ListedItem {\n series_id: number\n series_name: string\n price: string\n online_date: string\n cover_url: string\n series_type: string\n}\n\nexport default function NewRelease() {\n const [carData, setCarData] = useState([])\n const [tagNow, setTagNow] = useState('listed')\n const containerRef = useRef(null)\n useEffect(() => {\n let tag = 'already'\n tagNow === 'listed' ? (tag = 'already_online') : (tag = 'ready_online')\n fetch(getUrl(`/motor/m_api/new_cars?car_type=${tag}`))\n .then(res => res.json())\n .then(json => {\n setCarData(json.data)\n })\n .catch(error => {\n console.error(error)\n })\n }, [tagNow])\n const onClickTag = (e: SyntheticEvent) => {\n const target = e.target as HTMLElement\n setTagNow(target.dataset.type || 'listed')\n if (containerRef.current) {\n containerRef.current.scrollTo({\n top: 0,\n })\n }\n }\n return (\n
\n \n
\n \n 已上市\n \n \n 即将上市\n \n
\n
\n {carData.map((e: ListedItem, index: number) => (\n {\n sendTeaCommEvent('click_new_car_list', {\n tab_name: tagNow === 'listed' ? '已上市' : '即将上市',\n rank: index,\n car_series_name: e.series_name,\n })\n }}\n />\n ))}\n
\n \n
\n )\n}\n","import React from 'react'\nexport default function Label({\n text = '广告',\n className,\n}: {\n text: string\n className?: string\n}) {\n return (\n \n {text}\n \n \n )\n}\n","// 轮播图广告\nimport React, { useEffect, useMemo } from 'react'\n\nimport { useAdStat } from 'Components/ad'\nimport Label from './left-label'\nimport { ISwiperAD } from './interface'\nimport applyHttpsImage from 'lib/apply-https-img'\n\ninterface IProps {\n /**\n * 当前的序号\n */\n index: number\n /**\n * 广告数据\n */\n data: ISwiperAD\n}\nfunction SwiperAD({ data, index }: IProps) {\n const customStat = useMemo(\n () => ({\n rank: index,\n ad_picture_url: data.image.url,\n }),\n [data.image.url, index]\n )\n const { ref, handleClick } = useAdStat(\n {\n send: 'ad_send_home_carousel_banner',\n show: 'ad_show_home_carousel_banner',\n click: 'ad_click_home_carousel_banner',\n },\n data,\n customStat\n )\n return (\n {\n handleClick()\n setTimeout(() => {\n window.open(data.web_url, '_blank')\n }, 50)\n }}\n >\n \n