You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by sh...@apache.org on 2020/11/05 08:18:46 UTC

[incubator-echarts] 01/01: fix(type): optimize types for dts bundling

This is an automated email from the ASF dual-hosted git repository.

shenyi pushed a commit to branch bundle-dts
in repository https://gitbox.apache.org/repos/asf/incubator-echarts.git

commit f9bd8da1884492fdfa234a95df86ff5605708bda
Author: pissang <bm...@gmail.com>
AuthorDate: Thu Nov 5 15:59:16 2020 +0800

    fix(type): optimize types for dts bundling
---
 src/ExtensionAPI.ts                              | 14 ++++++++---
 src/chart/boxplot/boxplotLayout.ts               |  2 +-
 src/chart/boxplot/boxplotVisual.ts               |  2 +-
 src/chart/boxplot/prepareBoxplotData.ts          |  2 +-
 src/chart/candlestick/preprocessor.ts            |  2 +-
 src/chart/custom.ts                              | 31 ++++++++++++++++--------
 src/chart/funnel/funnelLayout.ts                 |  2 +-
 src/chart/graph/adjustEdge.ts                    |  2 +-
 src/chart/graph/categoryFilter.ts                |  2 +-
 src/chart/graph/categoryVisual.ts                |  2 +-
 src/chart/graph/circularLayout.ts                |  2 +-
 src/chart/graph/createView.ts                    |  2 +-
 src/chart/graph/edgeVisual.ts                    |  2 +-
 src/chart/graph/forceLayout.ts                   |  2 +-
 src/chart/graph/simpleLayout.ts                  |  2 +-
 src/chart/helper/createGraphFromNodeEdge.ts      |  2 +-
 src/chart/helper/createListSimply.ts             |  2 +-
 src/chart/helper/createRenderPlanner.ts          |  2 +-
 src/chart/helper/enableAriaDecalForTree.ts       |  2 +-
 src/chart/line/lineAnimationDiff.ts              |  2 +-
 src/chart/map/mapDataStatistic.ts                |  2 +-
 src/chart/map/mapSymbolLayout.ts                 |  2 +-
 src/chart/pie/labelLayout.ts                     |  2 +-
 src/chart/pie/pieLayout.ts                       |  2 +-
 src/chart/radar/backwardCompat.ts                |  2 +-
 src/chart/radar/radarLayout.ts                   |  2 +-
 src/chart/sankey/sankeyLayout.ts                 |  2 +-
 src/chart/sankey/sankeyVisual.ts                 |  2 +-
 src/chart/sunburst/sunburstLayout.ts             |  2 +-
 src/chart/sunburst/sunburstVisual.ts             |  2 +-
 src/chart/themeRiver/themeRiverLayout.ts         |  8 +++---
 src/chart/tree/treeLayout.ts                     |  2 +-
 src/chart/tree/treeVisual.ts                     |  2 +-
 src/component/aria/preprocessor.ts               |  2 +-
 src/component/axisPointer/axisTrigger.ts         |  2 +-
 src/component/axisPointer/findPointFromSeries.ts |  2 +-
 src/component/brush/preprocessor.ts              |  2 +-
 src/component/helper/sliderMove.ts               |  2 +-
 src/component/legend/legendFilter.ts             |  2 +-
 src/component/timeline/TimelineModel.ts          |  2 +-
 src/component/timeline/preprocessor.ts           |  2 +-
 src/component/toolbox/featureManager.ts          |  4 +--
 src/component/visualMap/preprocessor.ts          |  2 +-
 src/coord/axisModelCreator.ts                    |  4 +--
 src/coord/calendar/prepareCustom.ts              |  2 +-
 src/coord/cartesian/prepareCustom.ts             |  2 +-
 src/coord/geo/fix/diaoyuIsland.ts                |  2 +-
 src/coord/geo/fix/geoCoord.ts                    |  2 +-
 src/coord/geo/fix/nanhai.ts                      |  2 +-
 src/coord/geo/fix/textCoord.ts                   |  2 +-
 src/coord/geo/parseGeoJson.ts                    |  2 +-
 src/coord/geo/prepareCustom.ts                   |  2 +-
 src/coord/parallel/parallelPreprocessor.ts       |  2 +-
 src/coord/polar/prepareCustom.ts                 |  2 +-
 src/coord/single/prepareCustom.ts                |  2 +-
 src/data/helper/createDimensions.ts              |  2 +-
 src/echarts.ts                                   | 28 ++++++++++++++-------
 src/layout/barGrid.ts                            | 10 +++++---
 src/layout/points.ts                             |  2 +-
 src/legacy/dataSelectAction.ts                   | 16 ++++++------
 src/loading/default.ts                           |  2 +-
 src/model/mixin/makeStyleMapper.ts               |  2 +-
 src/preprocessor/backwardCompat.ts               |  2 +-
 src/preprocessor/helper/compatStyle.ts           |  2 +-
 src/processor/dataFilter.ts                      |  2 +-
 src/processor/dataSample.ts                      |  2 +-
 src/processor/dataStack.ts                       |  2 +-
 src/stream/Scheduler.ts                          |  2 +-
 src/util/states.ts                               | 28 ++++++++++-----------
 src/visual/aria.ts                               |  2 +-
 src/visual/decal.ts                              |  2 +-
 71 files changed, 150 insertions(+), 117 deletions(-)

diff --git a/src/ExtensionAPI.ts b/src/ExtensionAPI.ts
index 40b16e7..58550b6 100644
--- a/src/ExtensionAPI.ts
+++ b/src/ExtensionAPI.ts
@@ -22,6 +22,10 @@ import {EChartsType} from './echarts';
 import {CoordinateSystemMaster} from './coord/CoordinateSystem';
 import Element from 'zrender/src/Element';
 import ComponentModel from './model/Component';
+import ComponentView from './view/Component';
+import ChartView from './view/Chart';
+import SeriesModel from './model/Series';
+import GlobalModel from './model/Global';
 
 const availableMethods: (keyof EChartsType)[] = [
     'getDom',
@@ -35,10 +39,10 @@ const availableMethods: (keyof EChartsType)[] = [
     'off',
     'getDataURL',
     'getConnectedDataURL',
-    'getModel',
+    // 'getModel',
     'getOption',
-    'getViewOfComponentModel',
-    'getViewOfSeriesModel',
+    // 'getViewOfComponentModel',
+    // 'getViewOfSeriesModel',
     'getId',
     'updateLabelLayout'
 ];
@@ -62,6 +66,10 @@ abstract class ExtensionAPI {
     abstract leaveSelect(el: Element): void;
     abstract enterBlur(el: Element): void;
     abstract leaveBlur(el: Element): void;
+    // These methods are not planned to be exposed to outside.
+    abstract getViewOfComponentModel(componentModel: ComponentModel): ComponentView;
+    abstract getViewOfSeriesModel(seriesModel: SeriesModel): ChartView;
+    abstract getModel(): GlobalModel;
 }
 
 export default ExtensionAPI;
diff --git a/src/chart/boxplot/boxplotLayout.ts b/src/chart/boxplot/boxplotLayout.ts
index a7a3997..03d9a49 100644
--- a/src/chart/boxplot/boxplotLayout.ts
+++ b/src/chart/boxplot/boxplotLayout.ts
@@ -37,7 +37,7 @@ export interface BoxplotItemLayout {
     initBaseline: number
 }
 
-export default function (ecModel: GlobalModel) {
+export default function boxplotLayout(ecModel: GlobalModel) {
 
     const groupResult = groupSeriesByAxis(ecModel);
 
diff --git a/src/chart/boxplot/boxplotVisual.ts b/src/chart/boxplot/boxplotVisual.ts
index 4deee98..ae89251 100644
--- a/src/chart/boxplot/boxplotVisual.ts
+++ b/src/chart/boxplot/boxplotVisual.ts
@@ -21,7 +21,7 @@ import GlobalModel from '../../model/Global';
 import ExtensionAPI from '../../ExtensionAPI';
 import BoxplotSeriesModel from './BoxplotSeries';
 
-export default function (ecModel: GlobalModel, api: ExtensionAPI) {
+export default function boxplotVisual(ecModel: GlobalModel, api: ExtensionAPI) {
     ecModel.eachRawSeriesByType('boxplot', function (seriesModel: BoxplotSeriesModel) {
         seriesModel.getData().setVisual('legendSymbol', 'roundRect');
     });
diff --git a/src/chart/boxplot/prepareBoxplotData.ts b/src/chart/boxplot/prepareBoxplotData.ts
index c7cb47c..f9b682d 100644
--- a/src/chart/boxplot/prepareBoxplotData.ts
+++ b/src/chart/boxplot/prepareBoxplotData.ts
@@ -44,7 +44,7 @@ export interface PrepareBoxplotDataOpt {
  *      default 1.5, means Q1 - 1.5 * (Q3 - Q1).
  *      If 'none'/0 passed, min bound will not be used.
  */
-export default function (
+export default function prepareBoxplotData(
     rawData: number[][],
     opt: PrepareBoxplotDataOpt
 ): {
diff --git a/src/chart/candlestick/preprocessor.ts b/src/chart/candlestick/preprocessor.ts
index 953d3b2..f41dbb4 100644
--- a/src/chart/candlestick/preprocessor.ts
+++ b/src/chart/candlestick/preprocessor.ts
@@ -20,7 +20,7 @@
 import * as zrUtil from 'zrender/src/core/util';
 import { ECUnitOption } from '../../util/types';
 
-export default function (option: ECUnitOption) {
+export default function candlestickPreprocessor(option: ECUnitOption) {
     if (!option || !zrUtil.isArray(option.series)) {
         return;
     }
diff --git a/src/chart/custom.ts b/src/chart/custom.ts
index 8db0f0f..7484bc5 100644
--- a/src/chart/custom.ts
+++ b/src/chart/custom.ts
@@ -26,7 +26,7 @@ import { setDefaultStateProxy, enableHoverEmphasis } from '../util/states';
 import * as labelStyleHelper from '../label/labelStyle';
 import {getDefaultLabel} from './helper/labelHelper';
 import createListFromArray from './helper/createListFromArray';
-import {getLayoutOnAxis} from '../layout/barGrid';
+import {getLayoutOnAxis, BarGridLayoutResult, BarGridLayoutOptionForCustomSeries} from '../layout/barGrid';
 import DataDiffer, { DataDiffMode } from '../data/DataDiffer';
 import SeriesModel from '../model/Series';
 import Model from '../model/Model';
@@ -55,7 +55,8 @@ import {
     OrdinalRawValue,
     PayloadAnimationPart,
     DecalObject,
-    InnerDecalObject
+    InnerDecalObject,
+    TextCommonOption
 } from '../util/types';
 import Element, { ElementProps, ElementTextConfig } from 'zrender/src/Element';
 import prepareCartesian2d from '../coord/cartesian/prepareCustom';
@@ -93,6 +94,7 @@ import { AnimationEasing } from 'zrender/src/animation/easing';
 import * as matrix from 'zrender/src/core/matrix';
 import { PatternObject } from 'zrender/src/graphic/Pattern';
 import { createOrUpdatePatternFromDecal } from '../util/decal';
+import { ZRenderType } from 'zrender/src/zrender';
 
 
 const inner = makeInner<{
@@ -229,8 +231,15 @@ type CustomElementOptionOnState = CustomDisplayableOptionOnState | CustomImageOp
 
 
 export interface CustomSeriesRenderItemAPI extends
-        CustomSeriesRenderItemCoordinateSystemAPI,
-        Pick<ExtensionAPI, 'getWidth' | 'getHeight' | 'getZr' | 'getDevicePixelRatio'> {
+        CustomSeriesRenderItemCoordinateSystemAPI {
+
+    // Methods from ExtensionAPI.
+    // NOTE: Not using Pick<ExtensionAPI> here because we don't want to bundle ExtensionAPI into the d.ts
+    getWidth(): number
+    getHeight(): number
+    getZr(): ZRenderType
+    getDevicePixelRatio(): number
+
     value(dim: DimensionLoose, dataIndexInside?: number): ParsedValue;
     ordinalRawValue(dim: DimensionLoose, dataIndexInside?: number): ParsedValue | OrdinalRawValue;
     style(userProps?: ZRStyleProps, dataIndexInside?: number): ZRStyleProps;
@@ -241,9 +250,9 @@ export interface CustomSeriesRenderItemAPI extends
     ): VT extends NonStyleVisualProps ? DefaultDataVisual[VT]
         : VT extends StyleVisualProps ? PathStyleProps[typeof STYLE_VISUAL_TYPE[VT]]
         : void;
-    barLayout(opt: Omit<Parameters<typeof getLayoutOnAxis>[0], 'axis'>): ReturnType<typeof getLayoutOnAxis>;
-    currentSeriesIndices(): ReturnType<GlobalModel['getCurrentSeriesIndices']>;
-    font(opt: Parameters<typeof labelStyleHelper.getFont>[0]): ReturnType<typeof labelStyleHelper.getFont>;
+    barLayout(opt: BarGridLayoutOptionForCustomSeries): BarGridLayoutResult;
+    currentSeriesIndices(): number[];
+    font(opt: Pick<TextCommonOption, 'fontStyle' | 'fontWeight' | 'fontSize' | 'fontFamily'>): string;
 }
 interface CustomSeriesRenderItemParamsCoordSys {
     type: string;
@@ -266,7 +275,7 @@ export interface CustomSeriesRenderItemParams {
     seriesIndex: number;
     coordSys: CustomSeriesRenderItemParamsCoordSys;
     dataInsideLength: number;
-    encode: ReturnType<typeof wrapEncodeDef>;
+    encode: WrapEncodeDefRet;
 }
 type CustomSeriesRenderItem = (
     params: CustomSeriesRenderItemParams,
@@ -1889,8 +1898,10 @@ function makeRenderItem(
     }
 }
 
-function wrapEncodeDef(data: List<CustomSeriesModel>): Dictionary<number[]> {
-    const encodeDef = {} as Dictionary<number[]>;
+type WrapEncodeDefRet = Dictionary<number[]>;
+
+function wrapEncodeDef(data: List<CustomSeriesModel>): WrapEncodeDefRet {
+    const encodeDef = {} as WrapEncodeDefRet;
     each(data.dimensions, function (dimName, dataDimIndex) {
         const dimInfo = data.getDimensionInfo(dimName);
         if (!dimInfo.isExtraCoord) {
diff --git a/src/chart/funnel/funnelLayout.ts b/src/chart/funnel/funnelLayout.ts
index e309fb9..22d4d28 100644
--- a/src/chart/funnel/funnelLayout.ts
+++ b/src/chart/funnel/funnelLayout.ts
@@ -245,7 +245,7 @@ function labelLayout(data: List) {
     });
 }
 
-export default function (ecModel: GlobalModel, api: ExtensionAPI) {
+export default function funnelLayout(ecModel: GlobalModel, api: ExtensionAPI) {
     ecModel.eachSeriesByType('funnel', function (seriesModel: FunnelSeriesModel) {
         const data = seriesModel.getData();
         const valueDim = data.mapDimension('value');
diff --git a/src/chart/graph/adjustEdge.ts b/src/chart/graph/adjustEdge.ts
index 28243ab..e64a817 100644
--- a/src/chart/graph/adjustEdge.ts
+++ b/src/chart/graph/adjustEdge.ts
@@ -95,7 +95,7 @@ function intersectCurveCircle(
 }
 
 // Adjust edge to avoid
-export default function (graph: Graph, scale: number) {
+export default function adjustEdge(graph: Graph, scale: number) {
     const tmp0: number[] = [];
     const quadraticSubdivide = curveTool.quadraticSubdivide;
     const pts: number[][] = [[], [], []];
diff --git a/src/chart/graph/categoryFilter.ts b/src/chart/graph/categoryFilter.ts
index ef477df..b0aa3b1 100644
--- a/src/chart/graph/categoryFilter.ts
+++ b/src/chart/graph/categoryFilter.ts
@@ -21,7 +21,7 @@ import GlobalModel from '../../model/Global';
 import GraphSeriesModel, { GraphNodeItemOption } from './GraphSeries';
 import type LegendModel from '../../component/legend/LegendModel';
 
-export default function (ecModel: GlobalModel) {
+export default function categoryFilter(ecModel: GlobalModel) {
     const legendModels = ecModel.findComponents({
         mainType: 'legend'
     }) as LegendModel[];
diff --git a/src/chart/graph/categoryVisual.ts b/src/chart/graph/categoryVisual.ts
index fe5c36c..fb6c9ed 100644
--- a/src/chart/graph/categoryVisual.ts
+++ b/src/chart/graph/categoryVisual.ts
@@ -22,7 +22,7 @@ import GraphSeriesModel, { GraphNodeItemOption } from './GraphSeries';
 import { Dictionary, ColorString } from '../../util/types';
 import { extend } from 'zrender/src/core/util';
 
-export default function (ecModel: GlobalModel) {
+export default function categoryVisual(ecModel: GlobalModel) {
 
     const paletteScope: Dictionary<ColorString> = {};
     ecModel.eachSeriesByType('graph', function (seriesModel: GraphSeriesModel) {
diff --git a/src/chart/graph/circularLayout.ts b/src/chart/graph/circularLayout.ts
index 8f1712a..312a6a5 100644
--- a/src/chart/graph/circularLayout.ts
+++ b/src/chart/graph/circularLayout.ts
@@ -21,7 +21,7 @@ import {circularLayout} from './circularLayoutHelper';
 import GlobalModel from '../../model/Global';
 import GraphSeriesModel from './GraphSeries';
 
-export default function (ecModel: GlobalModel) {
+export default function graphCircularLayout(ecModel: GlobalModel) {
     ecModel.eachSeriesByType('graph', function (seriesModel: GraphSeriesModel) {
         if (seriesModel.get('layout') === 'circular') {
             circularLayout(seriesModel, 'symbolSize');
diff --git a/src/chart/graph/createView.ts b/src/chart/graph/createView.ts
index 213749a..79a6388 100644
--- a/src/chart/graph/createView.ts
+++ b/src/chart/graph/createView.ts
@@ -36,7 +36,7 @@ function getViewRect(seriesModel: GraphSeriesModel, api: ExtensionAPI, aspect: n
     });
 }
 
-export default function (ecModel: GlobalModel, api: ExtensionAPI) {
+export default function createViewCoordSys(ecModel: GlobalModel, api: ExtensionAPI) {
     const viewList: View[] = [];
     ecModel.eachSeriesByType('graph', function (seriesModel: GraphSeriesModel) {
         const coordSysType = seriesModel.get('coordinateSystem');
diff --git a/src/chart/graph/edgeVisual.ts b/src/chart/graph/edgeVisual.ts
index a134794..7107399 100644
--- a/src/chart/graph/edgeVisual.ts
+++ b/src/chart/graph/edgeVisual.ts
@@ -30,7 +30,7 @@ function normalize(a: string | number | (string | number)[]): (string | number)[
     return a;
 }
 
-export default function (ecModel: GlobalModel) {
+export default function graphEdgeVisual(ecModel: GlobalModel) {
     ecModel.eachSeriesByType('graph', function (seriesModel: GraphSeriesModel) {
         const graph = seriesModel.getGraph();
         const edgeData = seriesModel.getEdgeData();
diff --git a/src/chart/graph/forceLayout.ts b/src/chart/graph/forceLayout.ts
index 70a1d1d..eeec04b 100644
--- a/src/chart/graph/forceLayout.ts
+++ b/src/chart/graph/forceLayout.ts
@@ -35,7 +35,7 @@ export interface ForceLayoutInstance {
 }
 
 
-export default function (ecModel: GlobalModel) {
+export default function graphForceLayout(ecModel: GlobalModel) {
     ecModel.eachSeriesByType('graph', function (graphSeries: GraphSeriesModel) {
         const coordSys = graphSeries.coordinateSystem;
         if (coordSys && coordSys.type !== 'view') {
diff --git a/src/chart/graph/simpleLayout.ts b/src/chart/graph/simpleLayout.ts
index 8b6d785..a288ed5 100644
--- a/src/chart/graph/simpleLayout.ts
+++ b/src/chart/graph/simpleLayout.ts
@@ -23,7 +23,7 @@ import GlobalModel from '../../model/Global';
 import ExtensionAPI from '../../ExtensionAPI';
 import GraphSeriesModel from './GraphSeries';
 
-export default function (ecModel: GlobalModel, api: ExtensionAPI) {
+export default function graphSimpleLayout(ecModel: GlobalModel, api: ExtensionAPI) {
     ecModel.eachSeriesByType('graph', function (seriesModel: GraphSeriesModel) {
         const layout = seriesModel.get('layout');
         const coordSys = seriesModel.coordinateSystem;
diff --git a/src/chart/helper/createGraphFromNodeEdge.ts b/src/chart/helper/createGraphFromNodeEdge.ts
index 6e07d27..5e30dcf 100644
--- a/src/chart/helper/createGraphFromNodeEdge.ts
+++ b/src/chart/helper/createGraphFromNodeEdge.ts
@@ -32,7 +32,7 @@ import {
 import SeriesModel from '../../model/Series';
 import { convertOptionIdName } from '../../util/model';
 
-export default function (
+export default function createGraphFromNodeEdge(
     nodes: OptionSourceDataOriginal<OptionDataValue, OptionDataItemObject<OptionDataValue>>,
     edges: OptionSourceDataOriginal<OptionDataValue, GraphEdgeItemObject<OptionDataValue>>,
     seriesModel: SeriesModel,
diff --git a/src/chart/helper/createListSimply.ts b/src/chart/helper/createListSimply.ts
index fb50f95..b38d3cd 100644
--- a/src/chart/helper/createListSimply.ts
+++ b/src/chart/helper/createListSimply.ts
@@ -32,7 +32,7 @@ import SeriesModel from '../../model/Series';
  *     dimensionsCount: 5
  * });
  */
-export default function (
+export default function createListSimply(
     seriesModel: SeriesModel,
     opt: CreateDimensionsParams | CreateDimensionsParams['coordDimensions'],
     nameList?: string[]
diff --git a/src/chart/helper/createRenderPlanner.ts b/src/chart/helper/createRenderPlanner.ts
index 72daef1..f225f76 100644
--- a/src/chart/helper/createRenderPlanner.ts
+++ b/src/chart/helper/createRenderPlanner.ts
@@ -24,7 +24,7 @@ import { StageHandlerPlanReturn } from '../../util/types';
 /**
  * @return {string} If large mode changed, return string 'reset';
  */
-export default function () {
+export default function createRenderPlanner() {
     const inner = makeInner<{
         large: boolean
         progressiveRender: boolean
diff --git a/src/chart/helper/enableAriaDecalForTree.ts b/src/chart/helper/enableAriaDecalForTree.ts
index fca0cf9..520a089 100644
--- a/src/chart/helper/enableAriaDecalForTree.ts
+++ b/src/chart/helper/enableAriaDecalForTree.ts
@@ -2,7 +2,7 @@ import SeriesModel from '../../model/Series';
 import {Dictionary, DecalObject} from '../../util/types';
 import { getDecalFromPalette } from '../../model/mixin/palette';
 
-export default function (seriesModel: SeriesModel) {
+export default function enableAriaDecalForTree(seriesModel: SeriesModel) {
     const data = seriesModel.getData();
     const tree = data.tree;
     const decalPaletteScope: Dictionary<DecalObject> = {};
diff --git a/src/chart/line/lineAnimationDiff.ts b/src/chart/line/lineAnimationDiff.ts
index 84cc409..fbc2ee8 100644
--- a/src/chart/line/lineAnimationDiff.ts
+++ b/src/chart/line/lineAnimationDiff.ts
@@ -48,7 +48,7 @@ function diffData(oldData: List, newData: List) {
     return diffResult;
 }
 
-export default function (
+export default function lineAnimationDiff(
     oldData: List, newData: List,
     oldStackedOnPoints: ArrayLike<number>, newStackedOnPoints: ArrayLike<number>,
     oldCoordSys: Cartesian2D | Polar, newCoordSys: Cartesian2D | Polar,
diff --git a/src/chart/map/mapDataStatistic.ts b/src/chart/map/mapDataStatistic.ts
index d986094..0df4040 100644
--- a/src/chart/map/mapDataStatistic.ts
+++ b/src/chart/map/mapDataStatistic.ts
@@ -66,7 +66,7 @@ function dataStatistics(datas: List[], statisticType: MapValueCalculationType):
     });
 }
 
-export default function (ecModel: GlobalModel): void {
+export default function mapDataStatistic(ecModel: GlobalModel): void {
     const seriesGroups = {} as {[key: string]: MapSeries[]};
     ecModel.eachSeriesByType('map', function (seriesModel: MapSeries) {
         const hostGeoModel = seriesModel.getHostGeoModel();
diff --git a/src/chart/map/mapSymbolLayout.ts b/src/chart/map/mapSymbolLayout.ts
index 671c9fb..65e8d31 100644
--- a/src/chart/map/mapSymbolLayout.ts
+++ b/src/chart/map/mapSymbolLayout.ts
@@ -23,7 +23,7 @@ import GlobalModel from '../../model/Global';
 import MapSeries from './MapSeries';
 import { Dictionary } from '../../util/types';
 
-export default function (ecModel: GlobalModel) {
+export default function mapSymbolLayout(ecModel: GlobalModel) {
 
     const processedMapType = {} as {[mapType: string]: boolean};
 
diff --git a/src/chart/pie/labelLayout.ts b/src/chart/pie/labelLayout.ts
index 696ad0f..48dc7ce 100644
--- a/src/chart/pie/labelLayout.ts
+++ b/src/chart/pie/labelLayout.ts
@@ -233,7 +233,7 @@ function isPositionCenter(sectorShape: LabelLayout) {
     return sectorShape.position === 'center';
 }
 
-export default function (
+export default function pieLabelLayout(
     seriesModel: PieSeriesModel
 ) {
     const data = seriesModel.getData();
diff --git a/src/chart/pie/pieLayout.ts b/src/chart/pie/pieLayout.ts
index 5639b4e..d216b5b 100644
--- a/src/chart/pie/pieLayout.ts
+++ b/src/chart/pie/pieLayout.ts
@@ -36,7 +36,7 @@ function getViewRect(seriesModel: PieSeriesModel, api: ExtensionAPI) {
     );
 }
 
-export default function (
+export default function pieLayout(
     seriesType: 'pie',
     ecModel: GlobalModel,
     api: ExtensionAPI
diff --git a/src/chart/radar/backwardCompat.ts b/src/chart/radar/backwardCompat.ts
index 7898dce..2bdaf4c 100644
--- a/src/chart/radar/backwardCompat.ts
+++ b/src/chart/radar/backwardCompat.ts
@@ -22,7 +22,7 @@
 // Backward compat for radar chart in 2
 import * as zrUtil from 'zrender/src/core/util';
 
-export default function (option) {
+export default function radarBackwardCompat(option) {
     let polarOptArr = option.polar;
     if (polarOptArr) {
         if (!zrUtil.isArray(polarOptArr)) {
diff --git a/src/chart/radar/radarLayout.ts b/src/chart/radar/radarLayout.ts
index b02439a..3d36118 100644
--- a/src/chart/radar/radarLayout.ts
+++ b/src/chart/radar/radarLayout.ts
@@ -23,7 +23,7 @@ import RadarSeriesModel from './RadarSeries';
 import Radar from '../../coord/radar/Radar';
 
 type Point = number[];
-export default function (ecModel: GlobalModel) {
+export default function radarLayout(ecModel: GlobalModel) {
     ecModel.eachSeriesByType('radar', function (seriesModel: RadarSeriesModel) {
         const data = seriesModel.getData();
         const points: Point[][] = [];
diff --git a/src/chart/sankey/sankeyLayout.ts b/src/chart/sankey/sankeyLayout.ts
index fe9acaf..ba872f7 100644
--- a/src/chart/sankey/sankeyLayout.ts
+++ b/src/chart/sankey/sankeyLayout.ts
@@ -26,7 +26,7 @@ import { GraphNode, GraphEdge } from '../../data/Graph';
 import { LayoutOrient } from '../../util/types';
 import GlobalModel from '../../model/Global';
 
-export default function (ecModel: GlobalModel, api: ExtensionAPI) {
+export default function sankeyLayout(ecModel: GlobalModel, api: ExtensionAPI) {
 
     ecModel.eachSeriesByType('sankey', function (seriesModel: SankeySeriesModel) {
 
diff --git a/src/chart/sankey/sankeyVisual.ts b/src/chart/sankey/sankeyVisual.ts
index 19b4926..9425a61 100644
--- a/src/chart/sankey/sankeyVisual.ts
+++ b/src/chart/sankey/sankeyVisual.ts
@@ -22,7 +22,7 @@ import VisualMapping from '../../visual/VisualMapping';
 import GlobalModel from '../../model/Global';
 import SankeySeriesModel, { SankeyNodeItemOption } from './SankeySeries';
 
-export default function (ecModel: GlobalModel) {
+export default function sankeyVisual(ecModel: GlobalModel) {
     ecModel.eachSeriesByType('sankey', function (seriesModel: SankeySeriesModel) {
         const graph = seriesModel.getGraph();
         const nodes = graph.nodes;
diff --git a/src/chart/sunburst/sunburstLayout.ts b/src/chart/sunburst/sunburstLayout.ts
index f1da06c..db59ec0 100644
--- a/src/chart/sunburst/sunburstLayout.ts
+++ b/src/chart/sunburst/sunburstLayout.ts
@@ -27,7 +27,7 @@ import { TreeNode } from '../../data/Tree';
 // let PI2 = Math.PI * 2;
 const RADIAN = Math.PI / 180;
 
-export default function (
+export default function sunburstLayout(
     seriesType: 'sunburst',
     ecModel: GlobalModel,
     api: ExtensionAPI
diff --git a/src/chart/sunburst/sunburstVisual.ts b/src/chart/sunburst/sunburstVisual.ts
index d0b982e..de68e7a 100644
--- a/src/chart/sunburst/sunburstVisual.ts
+++ b/src/chart/sunburst/sunburstVisual.ts
@@ -24,7 +24,7 @@ import { Dictionary, ColorString } from '../../util/types';
 import { TreeNode } from '../../data/Tree';
 import { lift } from 'zrender/src/tool/color';
 
-export default function (ecModel: GlobalModel) {
+export default function sunburstVisual(ecModel: GlobalModel) {
 
     const paletteScope: Dictionary<ColorString> = {};
 
diff --git a/src/chart/themeRiver/themeRiverLayout.ts b/src/chart/themeRiver/themeRiverLayout.ts
index 396e704..fcd8b7d 100644
--- a/src/chart/themeRiver/themeRiverLayout.ts
+++ b/src/chart/themeRiver/themeRiverLayout.ts
@@ -30,7 +30,7 @@ export interface ThemeRiverLayoutInfo {
     boundaryGap: ThemeRiverSeriesOption['boundaryGap']
 }
 
-export default function (ecModel: GlobalModel, api: ExtensionAPI) {
+export default function themeRiverLayout(ecModel: GlobalModel, api: ExtensionAPI) {
 
     ecModel.eachSeriesByType('themeRiver', function (seriesModel: ThemeRiverSeriesModel) {
 
@@ -55,13 +55,13 @@ export default function (ecModel: GlobalModel, api: ExtensionAPI) {
             boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.height);
             boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.height);
             const height = rect.height - boundaryGap[0] - boundaryGap[1];
-            themeRiverLayout(data, seriesModel, height);
+            doThemeRiverLayout(data, seriesModel, height);
         }
         else {
             boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.width);
             boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.width);
             const width = rect.width - boundaryGap[0] - boundaryGap[1];
-            themeRiverLayout(data, seriesModel, width);
+            doThemeRiverLayout(data, seriesModel, width);
         }
 
         data.setLayout('layoutInfo', layoutInfo);
@@ -75,7 +75,7 @@ export default function (ecModel: GlobalModel, api: ExtensionAPI) {
  * @param seriesModel  the model object of themeRiver series
  * @param height  value used to compute every series height
  */
-function themeRiverLayout(data: List<ThemeRiverSeriesModel>, seriesModel: ThemeRiverSeriesModel, height: number) {
+function doThemeRiverLayout(data: List<ThemeRiverSeriesModel>, seriesModel: ThemeRiverSeriesModel, height: number) {
     if (!data.count()) {
         return;
     }
diff --git a/src/chart/tree/treeLayout.ts b/src/chart/tree/treeLayout.ts
index 0395b81..04425fd 100644
--- a/src/chart/tree/treeLayout.ts
+++ b/src/chart/tree/treeLayout.ts
@@ -34,7 +34,7 @@ import GlobalModel from '../../model/Global';
 import ExtensionAPI from '../../ExtensionAPI';
 import TreeSeriesModel from './TreeSeries';
 
-export default function (ecModel: GlobalModel, api: ExtensionAPI) {
+export default function treeLayout(ecModel: GlobalModel, api: ExtensionAPI) {
     ecModel.eachSeriesByType('tree', function (seriesModel: TreeSeriesModel) {
         commonLayout(seriesModel, api);
     });
diff --git a/src/chart/tree/treeVisual.ts b/src/chart/tree/treeVisual.ts
index b4f9332..6958dbb 100644
--- a/src/chart/tree/treeVisual.ts
+++ b/src/chart/tree/treeVisual.ts
@@ -21,7 +21,7 @@ import GlobalModel from '../../model/Global';
 import TreeSeriesModel, { TreeSeriesNodeItemOption } from './TreeSeries';
 import { extend } from 'zrender/src/core/util';
 
-export default function (ecModel: GlobalModel) {
+export default function treeVisual(ecModel: GlobalModel) {
 
     ecModel.eachSeriesByType('tree', function (seriesModel: TreeSeriesModel) {
         const data = seriesModel.getData();
diff --git a/src/component/aria/preprocessor.ts b/src/component/aria/preprocessor.ts
index 9e403de..771e142 100644
--- a/src/component/aria/preprocessor.ts
+++ b/src/component/aria/preprocessor.ts
@@ -20,7 +20,7 @@
 import * as zrUtil from 'zrender/src/core/util';
 import { ECUnitOption } from '../../util/types';
 
-export default function (option: ECUnitOption) {
+export default function ariaPreprocessor(option: ECUnitOption) {
     if (!option || !option.aria) {
         return;
     }
diff --git a/src/component/axisPointer/axisTrigger.ts b/src/component/axisPointer/axisTrigger.ts
index 27aa8c5..c8031cd 100644
--- a/src/component/axisPointer/axisTrigger.ts
+++ b/src/component/axisPointer/axisTrigger.ts
@@ -108,7 +108,7 @@ type ShowValueMap = Dictionary<{
  *
  * @return content of event obj for echarts.connect.
  */
-export default function (
+export default function axisTrigger(
     payload: AxisTriggerPayload,
     ecModel: GlobalModel,
     api: ExtensionAPI
diff --git a/src/component/axisPointer/findPointFromSeries.ts b/src/component/axisPointer/findPointFromSeries.ts
index 6ff9851..603f607 100644
--- a/src/component/axisPointer/findPointFromSeries.ts
+++ b/src/component/axisPointer/findPointFromSeries.ts
@@ -28,7 +28,7 @@ import { Payload } from '../../util/types';
  * @param ecModel
  * @return  {point: [x, y], el: ...} point Will not be null.
  */
-export default function (finder: {
+export default function findPointFromSeries(finder: {
     seriesIndex?: number
     dataIndex?: number | number[]
     dataIndexInside?: number | number[]
diff --git a/src/component/brush/preprocessor.ts b/src/component/brush/preprocessor.ts
index 2c49e2a..5bbbfc8 100644
--- a/src/component/brush/preprocessor.ts
+++ b/src/component/brush/preprocessor.ts
@@ -27,7 +27,7 @@ import { normalizeToArray } from '../../util/model';
 
 const DEFAULT_TOOLBOX_BTNS: BrushToolboxIconType[] = ['rect', 'polygon', 'keep', 'clear'];
 
-export default function (option: ECUnitOption, isNew: boolean): void {
+export default function brushPreprocessor(option: ECUnitOption, isNew: boolean): void {
     const brushComponents = normalizeToArray(option ? option.brush : []);
 
     if (!brushComponents.length) {
diff --git a/src/component/helper/sliderMove.ts b/src/component/helper/sliderMove.ts
index c1dabb6..902312d 100644
--- a/src/component/helper/sliderMove.ts
+++ b/src/component/helper/sliderMove.ts
@@ -37,7 +37,7 @@
  * @param maxSpan The range of dataZoom can not be larger than that.
  * @return The input handleEnds.
  */
-export default function (
+export default function sliderMove(
     delta: number,
     handleEnds: number[],
     extent: number[],
diff --git a/src/component/legend/legendFilter.ts b/src/component/legend/legendFilter.ts
index e8638d0..e2374f2 100644
--- a/src/component/legend/legendFilter.ts
+++ b/src/component/legend/legendFilter.ts
@@ -21,7 +21,7 @@ import LegendModel from './LegendModel';
 * under the License.
 */
 
-export default function (ecModel: GlobalModel) {
+export default function legendFilter(ecModel: GlobalModel) {
 
     const legendModels = ecModel.findComponents({
         mainType: 'legend'
diff --git a/src/component/timeline/TimelineModel.ts b/src/component/timeline/TimelineModel.ts
index 7160d14..57a8f19 100644
--- a/src/component/timeline/TimelineModel.ts
+++ b/src/component/timeline/TimelineModel.ts
@@ -36,7 +36,7 @@ import {
 } from '../../util/types';
 import Model from '../../model/Model';
 import GlobalModel, { GlobalModelSetOptionOpts } from '../../model/Global';
-import { each, isObject, clone, isString } from 'zrender/src/core/util';
+import { each, isObject, clone } from 'zrender/src/core/util';
 import { convertOptionIdName, getDataItemValue } from '../../util/model';
 
 
diff --git a/src/component/timeline/preprocessor.ts b/src/component/timeline/preprocessor.ts
index 5663cc8..6de95d4 100644
--- a/src/component/timeline/preprocessor.ts
+++ b/src/component/timeline/preprocessor.ts
@@ -21,7 +21,7 @@
 
 import * as zrUtil from 'zrender/src/core/util';
 
-export default function (option) {
+export default function timelinePreprocessor(option) {
     let timelineOpt = option && option.timeline;
 
     if (!zrUtil.isArray(timelineOpt)) {
diff --git a/src/component/toolbox/featureManager.ts b/src/component/toolbox/featureManager.ts
index 756e013..8bf7575 100644
--- a/src/component/toolbox/featureManager.ts
+++ b/src/component/toolbox/featureManager.ts
@@ -49,7 +49,7 @@ export interface ToolboxFeatureOption {
 
     iconStatus?: Dictionary<DisplayState>
 
-    onclick?: (ecModel: GlobalModel, api: ExtensionAPI, type: string, event: ZRElementEvent) => void
+    onclick?: () => void
 }
 
 export interface ToolboxFeatureModel<Opts extends ToolboxFeatureOption = ToolboxFeatureOption> extends Model<Opts> {
@@ -98,7 +98,7 @@ export interface UserDefinedToolboxFeature {
 
     featureName?: string
 
-    onclick(ecModel: GlobalModel, api: ExtensionAPI, type: string, event: ZRElementEvent): void
+    onclick(): void
 }
 
 type ToolboxFeatureCtor = {
diff --git a/src/component/visualMap/preprocessor.ts b/src/component/visualMap/preprocessor.ts
index e908c29..08ba687 100644
--- a/src/component/visualMap/preprocessor.ts
+++ b/src/component/visualMap/preprocessor.ts
@@ -22,7 +22,7 @@ import * as zrUtil from 'zrender/src/core/util';
 
 const each = zrUtil.each;
 
-export default function (option) {
+export default function visualMapPreprocessor(option) {
     let visualMap = option && option.visualMap;
 
     if (!zrUtil.isArray(visualMap)) {
diff --git a/src/coord/axisModelCreator.ts b/src/coord/axisModelCreator.ts
index 10e5978..8eff111 100644
--- a/src/coord/axisModelCreator.ts
+++ b/src/coord/axisModelCreator.ts
@@ -42,10 +42,10 @@ export interface AxisModelExtendedInCreator<Opt extends AxisBaseOption> {
  * Generate sub axis model class
  * @param axisName 'x' 'y' 'radius' 'angle' 'parallel' ...
  */
-export default function <
+export default function axisModelCreator<
     AxisOptionT extends AxisBaseOption,
     AxisModelCtor extends Constructor<ComponentModel<AxisOptionT>>
-> (
+>(
     axisName: DimensionName,
     BaseAxisModelClass: AxisModelCtor,
     extraDefaultOption?: AxisOptionT
diff --git a/src/coord/calendar/prepareCustom.ts b/src/coord/calendar/prepareCustom.ts
index 747271c..abd1436 100644
--- a/src/coord/calendar/prepareCustom.ts
+++ b/src/coord/calendar/prepareCustom.ts
@@ -20,7 +20,7 @@
 import Calendar from './Calendar';
 import { OptionDataValueDate } from '../../util/types';
 
-export default function (coordSys: Calendar) {
+export default function calendarPrepareCustom(coordSys: Calendar) {
     const rect = coordSys.getRect();
     const rangeInfo = coordSys.getRangeInfo();
 
diff --git a/src/coord/cartesian/prepareCustom.ts b/src/coord/cartesian/prepareCustom.ts
index 29cbf93..1244be9 100644
--- a/src/coord/cartesian/prepareCustom.ts
+++ b/src/coord/cartesian/prepareCustom.ts
@@ -33,7 +33,7 @@ function dataToCoordSize(this: Cartesian2D, dataSize: number[], dataItem: number
     }, this);
 }
 
-export default function (coordSys: Cartesian2D) {
+export default function cartesianPrepareCustom(coordSys: Cartesian2D) {
     const rect = coordSys.master.getRect();
     return {
         coordSys: {
diff --git a/src/coord/geo/fix/diaoyuIsland.ts b/src/coord/geo/fix/diaoyuIsland.ts
index e1d8f72..06042cc 100644
--- a/src/coord/geo/fix/diaoyuIsland.ts
+++ b/src/coord/geo/fix/diaoyuIsland.ts
@@ -36,7 +36,7 @@ const points = [
     ]
 ];
 
-export default function (mapType: string, region: Region) {
+export default function fixDiaoyuIsland(mapType: string, region: Region) {
     if (mapType === 'china' && region.name === '台湾') {
         region.geometries.push({
             type: 'polygon',
diff --git a/src/coord/geo/fix/geoCoord.ts b/src/coord/geo/fix/geoCoord.ts
index 5005c7e..bfef6e9 100644
--- a/src/coord/geo/fix/geoCoord.ts
+++ b/src/coord/geo/fix/geoCoord.ts
@@ -26,7 +26,7 @@ const geoCoordMap = {
     'United States of America': [-99, 38]
 } as Dictionary<number[]>;
 
-export default function (mapType: string, region: Region) {
+export default function fixGeoCoords(mapType: string, region: Region) {
     if (mapType === 'world') {
         const geoCoord = geoCoordMap[region.name];
         if (geoCoord) {
diff --git a/src/coord/geo/fix/nanhai.ts b/src/coord/geo/fix/nanhai.ts
index 39ac1e9..2bbc3d0 100644
--- a/src/coord/geo/fix/nanhai.ts
+++ b/src/coord/geo/fix/nanhai.ts
@@ -51,7 +51,7 @@ for (let i = 0; i < points.length; i++) {
     }
 }
 
-export default function (mapType: string, regions: Region[]) {
+export default function fixNanhai(mapType: string, regions: Region[]) {
     if (mapType === 'china') {
         regions.push(new Region(
             '南海诸岛',
diff --git a/src/coord/geo/fix/textCoord.ts b/src/coord/geo/fix/textCoord.ts
index 44c9bae..477d644 100644
--- a/src/coord/geo/fix/textCoord.ts
+++ b/src/coord/geo/fix/textCoord.ts
@@ -31,7 +31,7 @@ const coordsOffsetMap = {
     '天津': [5, 5]
 } as Dictionary<number[]>;
 
-export default function (mapType: string, region: Region) {
+export default function fixTextCoords(mapType: string, region: Region) {
     if (mapType === 'china') {
         const coordFix = coordsOffsetMap[region.name];
         if (coordFix) {
diff --git a/src/coord/geo/parseGeoJson.ts b/src/coord/geo/parseGeoJson.ts
index a223659..e37260e 100644
--- a/src/coord/geo/parseGeoJson.ts
+++ b/src/coord/geo/parseGeoJson.ts
@@ -100,7 +100,7 @@ function decodePolygon(
     return result;
 }
 
-export default function (geoJson: GeoJSON | GeoJSONCompressed, nameProperty: string): Region[] {
+export default function parseGeoJSON(geoJson: GeoJSON | GeoJSONCompressed, nameProperty: string): Region[] {
 
     geoJson = decode(geoJson);
 
diff --git a/src/coord/geo/prepareCustom.ts b/src/coord/geo/prepareCustom.ts
index 2f431c1..88ebd16 100644
--- a/src/coord/geo/prepareCustom.ts
+++ b/src/coord/geo/prepareCustom.ts
@@ -34,7 +34,7 @@ function dataToCoordSize(this: Geo, dataSize: number[], dataItem: number[]): num
     }, this);
 }
 
-export default function (coordSys: Geo) {
+export default function geoPrepareCustom(coordSys: Geo) {
     const rect = coordSys.getBoundingRect();
     return {
         coordSys: {
diff --git a/src/coord/parallel/parallelPreprocessor.ts b/src/coord/parallel/parallelPreprocessor.ts
index fda2a2f..ba42630 100644
--- a/src/coord/parallel/parallelPreprocessor.ts
+++ b/src/coord/parallel/parallelPreprocessor.ts
@@ -24,7 +24,7 @@ import { ECUnitOption, SeriesOption } from '../../util/types';
 import { ParallelAxisOption } from './AxisModel';
 import { ParallelSeriesOption } from '../../chart/parallel/ParallelSeries';
 
-export default function (option: ECUnitOption): void {
+export default function parallelPreprocessor(option: ECUnitOption): void {
     createParallelIfNeeded(option);
     mergeAxisOptionFromParallel(option);
 }
diff --git a/src/coord/polar/prepareCustom.ts b/src/coord/polar/prepareCustom.ts
index 1907f7f..ebbd997 100644
--- a/src/coord/polar/prepareCustom.ts
+++ b/src/coord/polar/prepareCustom.ts
@@ -45,7 +45,7 @@ function dataToCoordSize(this: Polar, dataSize: number[], dataItem: number[]) {
     }, this);
 }
 
-export default function (coordSys: Polar) {
+export default function polarPrepareCustom(coordSys: Polar) {
     const radiusAxis = coordSys.getRadiusAxis();
     const angleAxis = coordSys.getAngleAxis();
     const radius = radiusAxis.getExtent();
diff --git a/src/coord/single/prepareCustom.ts b/src/coord/single/prepareCustom.ts
index 0144228..45b0053 100644
--- a/src/coord/single/prepareCustom.ts
+++ b/src/coord/single/prepareCustom.ts
@@ -30,7 +30,7 @@ function dataToCoordSize(this: Single, dataSize: number | number[], dataItem: nu
         : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));
 }
 
-export default function (coordSys: Single) {
+export default function singlePrepareCustom(coordSys: Single) {
     const rect = coordSys.getRect();
 
     return {
diff --git a/src/data/helper/createDimensions.ts b/src/data/helper/createDimensions.ts
index 2161770..102104c 100644
--- a/src/data/helper/createDimensions.ts
+++ b/src/data/helper/createDimensions.ts
@@ -58,7 +58,7 @@ export type CreateDimensionsParams = {
  * @param opt.encodeDefine By default `source.encodeDefine` Overwrite source define.
  * @param opt.encodeDefaulter Make default encode if user not specified.
  */
-export default function (
+export default function createDimensions(
     // TODO: TYPE completeDimensions type
     source: Source | List | OptionSourceData,
     opt?: CreateDimensionsParams
diff --git a/src/echarts.ts b/src/echarts.ts
index d120bbb..b36df31 100644
--- a/src/echarts.ts
+++ b/src/echarts.ts
@@ -595,11 +595,12 @@ class ECharts extends Eventful {
     /**
      * @DEPRECATED
      */
-    setTheme(): void {
+    private setTheme(): void {
         console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');
     }
 
-    getModel(): GlobalModel {
+    // We don't want developers to use getModel directly.
+    private getModel(): GlobalModel {
         return this._model;
     }
 
@@ -933,14 +934,14 @@ class ECharts extends Eventful {
     /**
      * Get view of corresponding component model
      */
-    getViewOfComponentModel(componentModel: ComponentModel): ComponentView {
+    private getViewOfComponentModel(componentModel: ComponentModel): ComponentView {
         return this._componentsMap[componentModel.__viewId];
     }
 
     /**
      * Get view of corresponding series model
      */
-    getViewOfSeriesModel(seriesModel: SeriesModel): ChartView {
+    private getViewOfSeriesModel(seriesModel: SeriesModel): ChartView {
         return this._chartsMap[seriesModel.__viewId];
     }
 
@@ -1051,7 +1052,7 @@ class ECharts extends Eventful {
             }
         );
 
-        handleLegacySelectEvents(this._messageCenter, this);
+        handleLegacySelectEvents(this._messageCenter, this, this._model);
     }
 
     isDisposed(): boolean {
@@ -1442,13 +1443,13 @@ class ECharts extends Eventful {
                 if (!excludeSeriesIdMap || excludeSeriesIdMap.get(model.id) == null) {
                     if (isHighDownPayload(payload) && !payload.notBlur) {
                         if (model instanceof SeriesModel) {
-                            toggleSeriesBlurStateFromPayload(model, payload, ecIns);
+                            toggleSeriesBlurStateFromPayload(model, payload, ecIns._api);
                         }
                     }
                     else if (isSelectChangePayload(payload)) {
                         // TODO geo
                         if (model instanceof SeriesModel) {
-                            toggleSelectionFromPayload(model, payload, ecIns);
+                            toggleSelectionFromPayload(model, payload, ecIns._api);
                             updateSeriesElementSelection(model);
                             markStatusToUpdate(ecIns);
                         }
@@ -1868,7 +1869,7 @@ class ECharts extends Eventful {
                     // Try blur all in the related series. Then emphasis the hoverred.
                     // TODO. progressive mode.
                     toggleSeriesBlurState(
-                        ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns, true
+                        ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns._api, true
                     );
                     enterEmphasisWhenMouseOver(dispatcher, e);
 
@@ -1880,7 +1881,7 @@ class ECharts extends Eventful {
                 if (dispatcher) {
                     const ecData = getECData(dispatcher);
                     toggleSeriesBlurState(
-                        ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns, false
+                        ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns._api, false
                     );
 
                     leaveEmphasisWhenMouseOut(dispatcher, e);
@@ -2277,6 +2278,15 @@ class ECharts extends Eventful {
                     leaveSelect(el);
                     markStatusToUpdate(ecIns);
                 }
+                getModel(): GlobalModel {
+                    return ecIns.getModel();
+                }
+                getViewOfComponentModel(componentModel: ComponentModel): ComponentView {
+                    return ecIns.getViewOfComponentModel(componentModel);
+                }
+                getViewOfSeriesModel(seriesModel: SeriesModel): ChartView {
+                    return ecIns.getViewOfSeriesModel(seriesModel);
+                }
             })(ecIns);
         };
 
diff --git a/src/layout/barGrid.ts b/src/layout/barGrid.ts
index ea3efc6..06c0456 100644
--- a/src/layout/barGrid.ts
+++ b/src/layout/barGrid.ts
@@ -74,8 +74,7 @@ type BarWidthAndOffset = Dictionary<Dictionary<{
     width: number
 }>>;
 
-interface LayoutOption {
-    axis: Axis2D
+export interface BarGridLayoutOptionForCustomSeries {
     count: number
 
     barWidth?: number
@@ -84,10 +83,15 @@ interface LayoutOption {
     barGap?: number
     barCategoryGap?: number
 }
+interface LayoutOption extends BarGridLayoutOptionForCustomSeries {
+    axis: Axis2D
+}
+
+export type BarGridLayoutResult = BarWidthAndOffset[string][string][];
 /**
  * @return {Object} {width, offset, offsetCenter} If axis.type is not 'category', return undefined.
  */
-export function getLayoutOnAxis(opt: LayoutOption) {
+export function getLayoutOnAxis(opt: LayoutOption): BarGridLayoutResult {
     const params: LayoutSeriesInfo[] = [];
     const baseAxis = opt.axis;
     const axisKey = 'axis0';
diff --git a/src/layout/points.ts b/src/layout/points.ts
index 853330d..8946852 100644
--- a/src/layout/points.ts
+++ b/src/layout/points.ts
@@ -27,7 +27,7 @@ import { StageHandler, ParsedValueNumeric } from '../util/types';
 import { createFloat32Array } from '../util/vendor';
 
 
-export default function (seriesType: string, forceStoreInTypedArray?: boolean): StageHandler {
+export default function pointsLayout(seriesType: string, forceStoreInTypedArray?: boolean): StageHandler {
     return {
         seriesType: seriesType,
 
diff --git a/src/legacy/dataSelectAction.ts b/src/legacy/dataSelectAction.ts
index cae9f63..109496a 100644
--- a/src/legacy/dataSelectAction.ts
+++ b/src/legacy/dataSelectAction.ts
@@ -64,6 +64,7 @@ function handleSeriesLegacySelectEvents(
     type: 'map' | 'pie',
     eventPostfix: 'selectchanged' | 'selected' | 'unselected',
     ecIns: EChartsType,
+    ecModel: GlobalModel,
     payload: SelectChangedPayload
 ) {
     const legacyEventName = type + eventPostfix;
@@ -71,7 +72,6 @@ function handleSeriesLegacySelectEvents(
         if (__DEV__) {
             deprecateLog(`event ${legacyEventName} is deprecated.`);
         }
-        const ecModel = ecIns.getModel();
         ecModel.eachComponent({
             mainType: 'series', subType: 'pie'
         }, function (seriesModel: SeriesModel) {
@@ -93,19 +93,19 @@ function handleSeriesLegacySelectEvents(
     }
 }
 
-export function handleLegacySelectEvents(messageCenter: Eventful, ecIns: EChartsType) {
+export function handleLegacySelectEvents(messageCenter: Eventful, ecIns: EChartsType, ecModel: GlobalModel) {
     messageCenter.on('selectchanged', function (params: SelectChangedPayload) {
         if (params.isFromClick) {
-            handleSeriesLegacySelectEvents('map', 'selectchanged', ecIns, params);
-            handleSeriesLegacySelectEvents('pie', 'selectchanged', ecIns, params);
+            handleSeriesLegacySelectEvents('map', 'selectchanged', ecIns, ecModel, params);
+            handleSeriesLegacySelectEvents('pie', 'selectchanged', ecIns, ecModel, params);
         }
         else if (params.fromAction === 'select') {
-            handleSeriesLegacySelectEvents('map', 'selected', ecIns, params);
-            handleSeriesLegacySelectEvents('pie', 'selected', ecIns, params);
+            handleSeriesLegacySelectEvents('map', 'selected', ecIns, ecModel, params);
+            handleSeriesLegacySelectEvents('pie', 'selected', ecIns, ecModel, params);
         }
         else if (params.fromAction === 'unselect') {
-            handleSeriesLegacySelectEvents('map', 'unselected', ecIns, params);
-            handleSeriesLegacySelectEvents('pie', 'unselected', ecIns, params);
+            handleSeriesLegacySelectEvents('map', 'unselected', ecIns, ecModel, params);
+            handleSeriesLegacySelectEvents('pie', 'unselected', ecIns, ecModel, params);
         }
     });
 }
diff --git a/src/loading/default.ts b/src/loading/default.ts
index e1944ea..0a122af 100644
--- a/src/loading/default.ts
+++ b/src/loading/default.ts
@@ -33,7 +33,7 @@ const PI = Math.PI;
  * @param {string} [opts.textColor]
  * @return {module:zrender/Element}
  */
-export default function (
+export default function defaultLoading(
     api: ExtensionAPI,
     opts?: {
         text?: string;
diff --git a/src/model/mixin/makeStyleMapper.ts b/src/model/mixin/makeStyleMapper.ts
index c123599..05bd2df 100644
--- a/src/model/mixin/makeStyleMapper.ts
+++ b/src/model/mixin/makeStyleMapper.ts
@@ -24,7 +24,7 @@ import {Dictionary} from 'zrender/src/core/types';
 import {PathStyleProps} from 'zrender/src/graphic/Path';
 import Model from '../Model';
 
-export default function (properties: readonly string[][], ignoreParent?: boolean) {
+export default function makeStyleMapper(properties: readonly string[][], ignoreParent?: boolean) {
     // Normalize
     for (let i = 0; i < properties.length; i++) {
         if (!properties[i][1]) {
diff --git a/src/preprocessor/backwardCompat.ts b/src/preprocessor/backwardCompat.ts
index 167dafa..faa874f 100644
--- a/src/preprocessor/backwardCompat.ts
+++ b/src/preprocessor/backwardCompat.ts
@@ -141,7 +141,7 @@ function traverseTree(data: any[], cb: Function) {
     }
 }
 
-export default function (option: ECUnitOption, isTheme?: boolean) {
+export default function globalBackwardCompat(option: ECUnitOption, isTheme?: boolean) {
     compatStyle(option, isTheme);
 
     // Make sure series array for model initialization.
diff --git a/src/preprocessor/helper/compatStyle.ts b/src/preprocessor/helper/compatStyle.ts
index 87b30c2..215e0fd 100644
--- a/src/preprocessor/helper/compatStyle.ts
+++ b/src/preprocessor/helper/compatStyle.ts
@@ -256,7 +256,7 @@ function toObj(o: any) {
     return (zrUtil.isArray(o) ? o[0] : o) || {};
 }
 
-export default function (option: any, isTheme?: boolean) {
+export default function globalCompatStyle(option: any, isTheme?: boolean) {
     each(toArr(option.series), function (seriesOpt) {
         isObject(seriesOpt) && processSeries(seriesOpt);
     });
diff --git a/src/processor/dataFilter.ts b/src/processor/dataFilter.ts
index ce08b41..08393eb 100644
--- a/src/processor/dataFilter.ts
+++ b/src/processor/dataFilter.ts
@@ -19,7 +19,7 @@ import { StageHandler } from '../util/types';
 * under the License.
 */
 
-export default function (seriesType: string): StageHandler {
+export default function dataFilter(seriesType: string): StageHandler {
     return {
         seriesType: seriesType,
         reset: function (seriesModel, ecModel) {
diff --git a/src/processor/dataSample.ts b/src/processor/dataSample.ts
index b292504..d492f84 100644
--- a/src/processor/dataSample.ts
+++ b/src/processor/dataSample.ts
@@ -71,7 +71,7 @@ const indexSampler = function (frame: ArrayLike<number>) {
     return Math.round(frame.length / 2);
 };
 
-export default function (seriesType: string): StageHandler {
+export default function dataSample(seriesType: string): StageHandler {
     return {
 
         seriesType: seriesType,
diff --git a/src/processor/dataStack.ts b/src/processor/dataStack.ts
index b1516bc..be46570 100644
--- a/src/processor/dataStack.ts
+++ b/src/processor/dataStack.ts
@@ -37,7 +37,7 @@ interface StackInfo {
 //     See <module:echarts/stream/Scheduler#performDataProcessorTasks>
 // (2) Only register once when import repeatly.
 //     Should be executed after series filtered and before stack calculation.
-export default function (ecModel: GlobalModel) {
+export default function dataStack(ecModel: GlobalModel) {
     const stackInfoMap = createHashMap<StackInfo[]>();
     ecModel.eachSeries(function (seriesModel: SeriesModel<SeriesOption & SeriesStackOptionMixin>) {
         const stack = seriesModel.get('stack');
diff --git a/src/stream/Scheduler.ts b/src/stream/Scheduler.ts
index 9dbc1f7..ded74c4 100644
--- a/src/stream/Scheduler.ts
+++ b/src/stream/Scheduler.ts
@@ -257,7 +257,7 @@ class Scheduler {
 
     prepareStageTasks(): void {
         const stageTaskMap = this._stageTaskMap;
-        const ecModel = this.ecInstance.getModel();
+        const ecModel = this.api.getModel();
         const api = this.api;
 
         each(this._allHandlers, function (handler) {
diff --git a/src/util/states.ts b/src/util/states.ts
index e34d6df..5af7ee6 100644
--- a/src/util/states.ts
+++ b/src/util/states.ts
@@ -20,13 +20,13 @@ import {
 import { extend, indexOf, isArrayLike, isObject, keys, isArray, each } from 'zrender/src/core/util';
 import { getECData } from './innerStore';
 import * as colorTool from 'zrender/src/tool/color';
-import { EChartsType } from '../echarts';
 import List from '../data/List';
 import SeriesModel from '../model/Series';
 import { CoordinateSystemMaster, CoordinateSystem } from '../coord/CoordinateSystem';
 import { queryDataIndex, makeInner } from './model';
 import Path, { PathStyleProps } from 'zrender/src/graphic/Path';
 import GlobalModel from '../model/Global';
+import ExtensionAPI from '../ExtensionAPI';
 
 // Reserve 0 as default.
 let _highlightNextDigit = 1;
@@ -368,12 +368,12 @@ function shouldSilent(el: Element, e: ElementEvent) {
     return (el as ExtendedElement).__highDownSilentOnTouch && e.zrByTouch;
 }
 
-function allLeaveBlur(ecIns: EChartsType) {
-    const model = ecIns.getModel();
+function allLeaveBlur(api: ExtensionAPI) {
+    const model = api.getModel();
     model.eachComponent(function (componentType, componentModel) {
         const view = componentType === 'series'
-            ? ecIns.getViewOfSeriesModel(componentModel as SeriesModel)
-            : ecIns.getViewOfComponentModel(componentModel);
+            ? api.getViewOfSeriesModel(componentModel as SeriesModel)
+            : api.getViewOfComponentModel(componentModel);
         // Leave blur anyway
         view.group.traverse(function (child) {
             singleLeaveBlur(child);
@@ -385,10 +385,10 @@ export function toggleSeriesBlurState(
     targetSeriesIndex: number,
     focus: InnerFocus,
     blurScope: BlurScope,
-    ecIns: EChartsType,
+    api: ExtensionAPI,
     isBlur: boolean
 ) {
-    const ecModel = ecIns.getModel();
+    const ecModel = api.getModel();
     blurScope = blurScope || 'coordinateSystem';
 
     function leaveBlurOfIndices(data: List, dataIndices: ArrayLike<number>) {
@@ -399,7 +399,7 @@ export function toggleSeriesBlurState(
     }
 
     if (!isBlur) {
-        allLeaveBlur(ecIns);
+        allLeaveBlur(api);
         return;
     }
 
@@ -438,7 +438,7 @@ export function toggleSeriesBlurState(
             || focus === 'series' && sameSeries
             // TODO blurScope: coordinate system
         )) {
-            const view = ecIns.getViewOfSeriesModel(seriesModel);
+            const view = api.getViewOfSeriesModel(seriesModel);
             view.group.traverse(function (child) {
                 singleEnterBlur(child);
             });
@@ -461,7 +461,7 @@ export function toggleSeriesBlurState(
         if (componentType === 'series') {
             return;
         }
-        const view = ecIns.getViewOfComponentModel(componentModel);
+        const view = api.getViewOfComponentModel(componentModel);
         if (view && view.blurSeries) {
             view.blurSeries(blurredSeries, ecModel);
         }
@@ -471,7 +471,7 @@ export function toggleSeriesBlurState(
 export function toggleSeriesBlurStateFromPayload(
     seriesModel: SeriesModel,
     payload: Payload,
-    ecIns: EChartsType
+    api: ExtensionAPI
 ) {
     if (!isHighDownPayload(payload)) {
         return;
@@ -495,7 +495,7 @@ export function toggleSeriesBlurStateFromPayload(
     if (el) {
         const ecData = getECData(el);
         toggleSeriesBlurState(
-            seriesIndex, ecData.focus, ecData.blurScope, ecIns, isHighlight
+            seriesIndex, ecData.focus, ecData.blurScope, api, isHighlight
         );
     }
     else {
@@ -504,7 +504,7 @@ export function toggleSeriesBlurStateFromPayload(
         const focus = seriesModel.get(['emphasis', 'focus']);
         const blurScope = seriesModel.get(['emphasis', 'blurScope']);
         if (focus != null) {
-            toggleSeriesBlurState(seriesIndex, focus, blurScope, ecIns, isHighlight);
+            toggleSeriesBlurState(seriesIndex, focus, blurScope, api, isHighlight);
         }
     }
 }
@@ -512,7 +512,7 @@ export function toggleSeriesBlurStateFromPayload(
 export function toggleSelectionFromPayload(
     seriesModel: SeriesModel,
     payload: Payload,
-    ecIns: EChartsType
+    api: ExtensionAPI
 ) {
     if (!(isSelectChangePayload(payload))) {
         return;
diff --git a/src/visual/aria.ts b/src/visual/aria.ts
index 2a14d2f..392b59a 100644
--- a/src/visual/aria.ts
+++ b/src/visual/aria.ts
@@ -45,7 +45,7 @@ const decalPaletteScope: Dictionary<DecalObject> = {};
 
 type SeriesTypes = keyof LocaleOption['series']['typeNames'];
 
-export default function (ecModel: GlobalModel, api: ExtensionAPI) {
+export default function ariaVisual(ecModel: GlobalModel, api: ExtensionAPI) {
     const ariaModel: Model<AriaOption> = ecModel.getModel('aria');
 
     // See "area enabled" detection code in `GlobalModel.ts`.
diff --git a/src/visual/decal.ts b/src/visual/decal.ts
index 65f74e4..b5b2835 100644
--- a/src/visual/decal.ts
+++ b/src/visual/decal.ts
@@ -21,7 +21,7 @@ import ExtensionAPI from '../ExtensionAPI';
 import GlobalModel from '../model/Global';
 import {createOrUpdatePatternFromDecal} from '../util/decal';
 
-export default function (ecModel: GlobalModel, api: ExtensionAPI) {
+export default function decalVisual(ecModel: GlobalModel, api: ExtensionAPI) {
     ecModel.eachRawSeries(seriesModel => {
         if (ecModel.isSeriesFiltered(seriesModel)) {
             return;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org