{"version":3,"sources":["webpack:///./node_modules/echarts/lib/helper.js","webpack:///./node_modules/echarts/lib/lang.js","webpack:///./node_modules/echarts/lib/echarts.js","webpack:///./node_modules/echarts/lib/export.js"],"names":["zrUtil","createListFromArray","axisHelper","axisModelCommonMixin","Model","_layout","getLayoutRect","exports","_dataStackHelper","enableDataStack","isDimensionStacked","getStackedDimension","_completeDimensions","completeDimensions","_createDimensions","createDimensions","_symbol","createList","seriesModel","getSource","createSymbol","dataStack","createScale","dataExtent","option","axisModel","isInstance","mixin","scale","createScaleByModel","setExtent","niceScaleExtent","mixinAxisModelCommonMethods","_default","legend","selector","all","inverse","toolbox","brush","title","rect","polygon","lineX","lineY","keep","clear","dataView","lang","dataZoom","zoom","back","magicType","line","bar","stack","tiled","restore","saveAsImage","series","typeNames","pie","scatter","effectScatter","radar","tree","treemap","boxplot","candlestick","k","heatmap","map","parallel","lines","graph","sankey","funnel","gauge","pictorialBar","themeRiver","sunburst","aria","general","withTitle","withoutTitle","single","prefix","withName","withoutName","multiple","separator","middle","end","data","allData","partialData","module","_config","zrender","__DEV__","colorTool","env","timsort","Eventful","GlobalModel","ExtensionAPI","CoordinateSystemManager","OptionManager","backwardCompat","ComponentModel","SeriesModel","ComponentView","ChartView","graphic","modelUtil","_throttle","throttle","seriesColor","loadingDefault","Scheduler","lightTheme","darkTheme","mapDataStorage","assert","each","isFunction","isObject","parseClassType","version","dependencies","TEST_FRAME_REMAIN_TIME","PRIORITY_PROCESSOR_FILTER","PRIORITY_PROCESSOR_SERIES_FILTER","PRIORITY_PROCESSOR_DATASTACK","PRIORITY_PROCESSOR_STATISTIC","PRIORITY_VISUAL_LAYOUT","PRIORITY_VISUAL_PROGRESSIVE_LAYOUT","PRIORITY_VISUAL_GLOBAL","PRIORITY_VISUAL_CHART","PRIORITY_VISUAL_POST_CHART_LAYOUT","PRIORITY_VISUAL_COMPONENT","PRIORITY_VISUAL_BRUSH","PRIORITY","PROCESSOR","FILTER","SERIES_FILTER","STATISTIC","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","GLOBAL","CHART","POST_CHART_LAYOUT","COMPONENT","BRUSH","IN_MAIN_PROCESS","OPTION_UPDATED","ACTION_REG","createRegisterEventWithLowercaseName","method","ignoreDisposed","eventName","handler","context","this","_disposed","toLowerCase","prototype","call","disposedWarning","id","MessageCenter","ECharts","dom","theme","opts","themeStorage","group","_dom","defaultRenderer","zr","_zr","init","renderer","devicePixelRatio","width","height","_throttledZrFlush","bind","flush","clone","_theme","_chartsViews","_chartsMap","_componentsViews","_componentsMap","_coordSysMgr","api","_api","createExtensionAPI","prioritySortFunc","a","b","__prio","visualFuncs","dataProcessorFuncs","_scheduler","_ecEventProcessor","EventProcessor","_messageCenter","_initEvents","resize","_pendingActions","animation","on","_onframe","bindRenderedEvent","setAsPrimitive","off","one","echartsProto","doConvertPixel","methodName","finder","value","result","ecModel","_model","coordSysList","getCoordinateSystems","parseFinder","i","length","coordSys","scheduler","silent","prepare","updateMethods","update","flushPendingActions","triggerUpdatedEvent","unfinished","remainTime","startTime","Date","performSeriesTasks","performDataProcessorTasks","updateStreamModes","performVisualTasks","renderSeries","getDom","getZr","setOption","notMerge","lazyUpdate","optionManager","optionPreprocessorFuncs","setTheme","console","error","getModel","getOption","getWidth","getHeight","getDevicePixelRatio","painter","dpr","window","getRenderedCanvas","canvasSupported","pixelRatio","backgroundColor","get","getSvgDataURL","svgSupported","list","storage","getDisplayList","el","stopAnimation","toDataURL","getDataURL","excludeComponents","excludesComponentViews","self","componentType","eachComponent","mainType","component","view","__viewId","ignore","push","url","getType","type","getConnectedDataURL","isSvg","groupId","mathMin","Math","min","mathMax","max","MAX_NUMBER","Infinity","connectedGroups","left","top","right","bottom","canvasList","instances","chart","canvas","getSvgDom","innerHTML","boundingRect","getBoundingClientRect","targetCanvas","createCanvas","content","item","x","y","getSvgRoot","connectedBackgroundColor","setBackgroundColor","refreshImmediately","add","Rect","shape","style","fill","img","Image","image","convertToPixel","curry","convertFromPixel","containPixel","models","key","indexOf","model","coordinateSystem","containPoint","getVisual","visualType","defaultMainType","getData","dataIndexInside","hasOwnProperty","indexOfRawIndex","dataIndex","getItemVisual","getViewOfComponentModel","componentModel","getViewOfSeriesModel","prepareAndUpdate","payload","coordSysMgr","restoreData","create","clearColorPalette","render","colorArr","parse","stringify","performPostUpdateFuncs","updateTransform","ecIns","componentDirtyList","componentView","__alive","seriesDirtyMap","createHashMap","eachSeries","chartView","set","uid","setDirty","dirtyMap","updateView","markUpdateMethod","updateVisual","updateLayout","restorePipelines","prepareStageTasks","prepareView","plan","updateDirectly","subType","query","condition","excludeSeriesId","normalizeToArray","callView","concat","__model","chartsMap","doDispatchAction","payloadType","escapeConnect","actionWrap","actions","actionInfo","cptType","split","updateMethod","pop","payloads","batched","batch","defaults","extend","eventObj","eventObjBatch","isHighDown","batchItem","action","event","main","sub","trigger","pendingActions","shift","isFinished","isComponent","viewList","viewMap","doPrepare","viewId","classType","Clazz","getClass","__id","__ecComponentInfo","index","componentIndex","renderTask","dispose","remove","splice","renderComponents","dirtyList","updateZ","updatePayload","dirty","perform","getPerformArgs","updateBlend","updateHoverLayerStatus","postUpdateFuncs","func","_loadingFX","optionChanged","resetOption","showLoading","name","cfg","hideLoading","loadingEffects","makeActionFromEvent","eventActionMap","dispatchAction","opt","browser","weChat","appendData","params","seriesIndex","getSeriesByIndex","MOUSE_EVENT_NAMES","elCount","traverse","node","preventUsingHoverLayer","useHoverLayer","blendMode","isGroup","blend","setStyle","eachPendingDisplayable","displayable","z","zlevel","ecInstance","getComponentByElement","modelInfo","getComponent","parent","eventInfo","eveName","e","target","isGlobalOut","dataModel","getDataParams","dataType","eventData","targetEl","packedEvent","zrEventfulCallAtLast","actionType","eventType","isDisposed","setAttribute","DOM_ATTRIBUTE_KEY","constructor","normalizeQuery","cptQuery","dataQuery","otherQuery","isString","condCptType","suffixes","dataKeys","val","reserved","propSuffix","suffixPos","lastIndexOf","slice","filter","args","check","filterForExposedEvent","host","prop","propOnHost","afterTrigger","idBase","groupIdBase","enableConnect","STATUS_PENDING","STATUS_UPDATING","STATUS_UPDATED","STATUS_KEY","updateConnectedChartsStatus","charts","status","otherChart","otherCharts","existInstance","getInstanceByDom","connect","isArray","disConnect","disconnect","getAttribute","getInstanceById","registerTheme","registerPreprocessor","preprocessorFunc","registerProcessor","priority","processor","normalizeRegister","registerPostUpdate","postUpdateFunc","registerAction","test","registerCoordinateSystem","CoordinateSystem","register","getCoordinateSystemDimensions","coordSysCreator","getDimensionsInfo","dimensions","registerLayout","layoutTask","registerVisual","visualTask","targetList","fn","defaultPriority","stageHandler","wrapStageHandler","__raw","registerLoading","loadingFx","extendComponentModel","extendComponentView","extendSeriesModel","extendChartView","setCanvasCreator","creator","$override","registerMap","mapName","geoJson","specialAreas","getMap","records","retrieveMap","geoJSON","noop","dataTool","___ec_export","matrix","vector","color","graphicUtil","numberUtil","number","formatUtil","format","ecHelper","helper","parseGeoJSON","_List","List","_Model","_Axis","Axis","_env","parseGeoJson","ecUtil","util"],"mappings":"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","file":"js/chunk-16540deb.28000cd8.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 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\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Language: (Simplified) Chinese.\n */\nvar _default = {\n legend: {\n selector: {\n all: '全选',\n inverse: '反选'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: '矩形选择',\n polygon: '圈选',\n lineX: '横向选择',\n lineY: '纵向选择',\n keep: '保持选择',\n clear: '清除选择'\n }\n },\n dataView: {\n title: '数据视图',\n lang: ['数据视图', '关闭', '刷新']\n },\n dataZoom: {\n title: {\n zoom: '区域缩放',\n back: '区域缩放还原'\n }\n },\n magicType: {\n title: {\n line: '切换为折线图',\n bar: '切换为柱状图',\n stack: '切换为堆叠',\n tiled: '切换为平铺'\n }\n },\n restore: {\n title: '还原'\n },\n saveAsImage: {\n title: '保存为图片',\n lang: ['右键另存为图片']\n }\n },\n series: {\n typeNames: {\n pie: '饼图',\n bar: '柱状图',\n line: '折线图',\n scatter: '散点图',\n effectScatter: '涟漪散点图',\n radar: '雷达图',\n tree: '树图',\n treemap: '矩形树图',\n boxplot: '箱型图',\n candlestick: 'K线图',\n k: 'K线图',\n heatmap: '热力图',\n map: '地图',\n parallel: '平行坐标图',\n lines: '线图',\n graph: '关系图',\n sankey: '桑基图',\n funnel: '漏斗图',\n gauge: '仪表盘图',\n pictorialBar: '象形柱图',\n themeRiver: '主题河流图',\n sunburst: '旭日图'\n }\n },\n aria: {\n general: {\n withTitle: '这是一个关于“{title}”的图表。',\n withoutTitle: '这是一个图表,'\n },\n series: {\n single: {\n prefix: '',\n withName: '图表类型是{seriesType},表示{seriesName}。',\n withoutName: '图表类型是{seriesType}。'\n },\n multiple: {\n prefix: '它由{seriesCount}个图表系列组成。',\n withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType},',\n withoutName: '第{seriesId}个系列是一个{seriesType},',\n separator: {\n middle: ';',\n end: '。'\n }\n }\n },\n data: {\n allData: '其数据是——',\n partialData: '其中,前{displayCnt}项是——',\n withName: '{name}的数据是{value}',\n withoutName: '{value}',\n separator: {\n middle: ',',\n end: ''\n }\n }\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"./config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrender = require(\"zrender/lib/zrender\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar timsort = require(\"zrender/lib/core/timsort\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar GlobalModel = require(\"./model/Global\");\n\nvar ExtensionAPI = require(\"./ExtensionAPI\");\n\nvar CoordinateSystemManager = require(\"./CoordinateSystem\");\n\nvar OptionManager = require(\"./model/OptionManager\");\n\nvar backwardCompat = require(\"./preprocessor/backwardCompat\");\n\nvar dataStack = require(\"./processor/dataStack\");\n\nvar ComponentModel = require(\"./model/Component\");\n\nvar SeriesModel = require(\"./model/Series\");\n\nvar ComponentView = require(\"./view/Component\");\n\nvar ChartView = require(\"./view/Chart\");\n\nvar graphic = require(\"./util/graphic\");\n\nvar modelUtil = require(\"./util/model\");\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\n\nvar seriesColor = require(\"./visual/seriesColor\");\n\nvar aria = require(\"./visual/aria\");\n\nvar loadingDefault = require(\"./loading/default\");\n\nvar Scheduler = require(\"./stream/Scheduler\");\n\nvar lightTheme = require(\"./theme/light\");\n\nvar darkTheme = require(\"./theme/dark\");\n\nrequire(\"./component/dataset\");\n\nvar mapDataStorage = require(\"./coord/geo/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*/\nvar assert = zrUtil.assert;\nvar each = zrUtil.each;\nvar isFunction = zrUtil.isFunction;\nvar isObject = zrUtil.isObject;\nvar parseClassType = ComponentModel.parseClassType;\nvar version = '4.8.0';\nvar dependencies = {\n zrender: '4.3.1'\n};\nvar TEST_FRAME_REMAIN_TIME = 1;\nvar PRIORITY_PROCESSOR_FILTER = 1000;\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800;\nvar PRIORITY_PROCESSOR_DATASTACK = 900;\nvar PRIORITY_PROCESSOR_STATISTIC = 5000;\nvar PRIORITY_VISUAL_LAYOUT = 1000;\nvar PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\nvar PRIORITY_VISUAL_GLOBAL = 2000;\nvar PRIORITY_VISUAL_CHART = 3000;\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 3500;\nvar PRIORITY_VISUAL_COMPONENT = 4000; // FIXME\n// necessary?\n\nvar PRIORITY_VISUAL_BRUSH = 5000;\nvar PRIORITY = {\n PROCESSOR: {\n FILTER: PRIORITY_PROCESSOR_FILTER,\n SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\n STATISTIC: PRIORITY_PROCESSOR_STATISTIC\n },\n VISUAL: {\n LAYOUT: PRIORITY_VISUAL_LAYOUT,\n PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\n GLOBAL: PRIORITY_VISUAL_GLOBAL,\n CHART: PRIORITY_VISUAL_CHART,\n POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\n COMPONENT: PRIORITY_VISUAL_COMPONENT,\n BRUSH: PRIORITY_VISUAL_BRUSH\n }\n}; // Main process have three entries: `setOption`, `dispatchAction` and `resize`,\n// where they must not be invoked nestedly, except the only case: invoke\n// dispatchAction with updateMethod \"none\" in main process.\n// This flag is used to carry out this rule.\n// All events will be triggered out side main process (i.e. when !this[IN_MAIN_PROCESS]).\n\nvar IN_MAIN_PROCESS = '__flagInMainProcess';\nvar OPTION_UPDATED = '__optionUpdated';\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\n\nfunction createRegisterEventWithLowercaseName(method, ignoreDisposed) {\n return function (eventName, handler, context) {\n if (!ignoreDisposed && this._disposed) {\n disposedWarning(this.id);\n return;\n } // Event name is all lowercase\n\n\n eventName = eventName && eventName.toLowerCase();\n Eventful.prototype[method].call(this, eventName, handler, context);\n };\n}\n/**\n * @module echarts~MessageCenter\n */\n\n\nfunction MessageCenter() {\n Eventful.call(this);\n}\n\nMessageCenter.prototype.on = createRegisterEventWithLowercaseName('on', true);\nMessageCenter.prototype.off = createRegisterEventWithLowercaseName('off', true);\nMessageCenter.prototype.one = createRegisterEventWithLowercaseName('one', true);\nzrUtil.mixin(MessageCenter, Eventful);\n/**\n * @module echarts~ECharts\n */\n\nfunction ECharts(dom, theme, opts) {\n opts = opts || {}; // Get theme by name\n\n if (typeof theme === 'string') {\n theme = themeStorage[theme];\n }\n /**\n * @type {string}\n */\n\n\n this.id;\n /**\n * Group id\n * @type {string}\n */\n\n this.group;\n /**\n * @type {HTMLElement}\n * @private\n */\n\n this._dom = dom;\n var defaultRenderer = 'canvas';\n\n /**\n * @type {module:zrender/ZRender}\n * @private\n */\n var zr = this._zr = zrender.init(dom, {\n renderer: opts.renderer || defaultRenderer,\n devicePixelRatio: opts.devicePixelRatio,\n width: opts.width,\n height: opts.height\n });\n /**\n * Expect 60 fps.\n * @type {Function}\n * @private\n */\n\n this._throttledZrFlush = throttle(zrUtil.bind(zr.flush, zr), 17);\n var theme = zrUtil.clone(theme);\n theme && backwardCompat(theme, true);\n /**\n * @type {Object}\n * @private\n */\n\n this._theme = theme;\n /**\n * @type {Array.}\n * @private\n */\n\n this._chartsViews = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._chartsMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._componentsViews = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._componentsMap = {};\n /**\n * @type {module:echarts/CoordinateSystem}\n * @private\n */\n\n this._coordSysMgr = new CoordinateSystemManager();\n /**\n * @type {module:echarts/ExtensionAPI}\n * @private\n */\n\n var api = this._api = createExtensionAPI(this); // Sort on demand\n\n function prioritySortFunc(a, b) {\n return a.__prio - b.__prio;\n }\n\n timsort(visualFuncs, prioritySortFunc);\n timsort(dataProcessorFuncs, prioritySortFunc);\n /**\n * @type {module:echarts/stream/Scheduler}\n */\n\n this._scheduler = new Scheduler(this, api, dataProcessorFuncs, visualFuncs);\n Eventful.call(this, this._ecEventProcessor = new EventProcessor());\n /**\n * @type {module:echarts~MessageCenter}\n * @private\n */\n\n this._messageCenter = new MessageCenter(); // Init mouse events\n\n this._initEvents(); // In case some people write `window.onresize = chart.resize`\n\n\n this.resize = zrUtil.bind(this.resize, this); // Can't dispatch action during rendering procedure\n\n this._pendingActions = [];\n zr.animation.on('frame', this._onframe, this);\n bindRenderedEvent(zr, this); // ECharts instance can be used as value.\n\n zrUtil.setAsPrimitive(this);\n}\n\nvar echartsProto = ECharts.prototype;\n\nechartsProto._onframe = function () {\n if (this._disposed) {\n return;\n }\n\n var scheduler = this._scheduler; // Lazy update\n\n if (this[OPTION_UPDATED]) {\n var silent = this[OPTION_UPDATED].silent;\n this[IN_MAIN_PROCESS] = true;\n prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n this[OPTION_UPDATED] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n } // Avoid do both lazy update and progress in one frame.\n else if (scheduler.unfinished) {\n // Stream progress.\n var remainTime = TEST_FRAME_REMAIN_TIME;\n var ecModel = this._model;\n var api = this._api;\n scheduler.unfinished = false;\n\n do {\n var startTime = +new Date();\n scheduler.performSeriesTasks(ecModel); // Currently dataProcessorFuncs do not check threshold.\n\n scheduler.performDataProcessorTasks(ecModel);\n updateStreamModes(this, ecModel); // Do not update coordinate system here. Because that coord system update in\n // each frame is not a good user experience. So we follow the rule that\n // the extent of the coordinate system is determin in the first frame (the\n // frame is executed immedietely after task reset.\n // this._coordSysMgr.update(ecModel, api);\n // console.log('--- ec frame visual ---', remainTime);\n\n scheduler.performVisualTasks(ecModel);\n renderSeries(this, this._model, api, 'remain');\n remainTime -= +new Date() - startTime;\n } while (remainTime > 0 && scheduler.unfinished); // Call flush explicitly for trigger finished event.\n\n\n if (!scheduler.unfinished) {\n this._zr.flush();\n } // Else, zr flushing be ensue within the same frame,\n // because zr flushing is after onframe event.\n\n }\n};\n/**\n * @return {HTMLElement}\n */\n\n\nechartsProto.getDom = function () {\n return this._dom;\n};\n/**\n * @return {module:zrender~ZRender}\n */\n\n\nechartsProto.getZr = function () {\n return this._zr;\n};\n/**\n * Usage:\n * chart.setOption(option, notMerge, lazyUpdate);\n * chart.setOption(option, {\n * notMerge: ...,\n * lazyUpdate: ...,\n * silent: ...\n * });\n *\n * @param {Object} option\n * @param {Object|boolean} [opts] opts or notMerge.\n * @param {boolean} [opts.notMerge=false]\n * @param {boolean} [opts.lazyUpdate=false] Useful when setOption frequently.\n */\n\n\nechartsProto.setOption = function (option, notMerge, lazyUpdate) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var silent;\n\n if (isObject(notMerge)) {\n lazyUpdate = notMerge.lazyUpdate;\n silent = notMerge.silent;\n notMerge = notMerge.notMerge;\n }\n\n this[IN_MAIN_PROCESS] = true;\n\n if (!this._model || notMerge) {\n var optionManager = new OptionManager(this._api);\n var theme = this._theme;\n var ecModel = this._model = new GlobalModel();\n ecModel.scheduler = this._scheduler;\n ecModel.init(null, null, theme, optionManager);\n }\n\n this._model.setOption(option, optionPreprocessorFuncs);\n\n if (lazyUpdate) {\n this[OPTION_UPDATED] = {\n silent: silent\n };\n this[IN_MAIN_PROCESS] = false;\n } else {\n prepare(this);\n updateMethods.update.call(this); // Ensure zr refresh sychronously, and then pixel in canvas can be\n // fetched after `setOption`.\n\n this._zr.flush();\n\n this[OPTION_UPDATED] = false;\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n }\n};\n/**\n * @DEPRECATED\n */\n\n\nechartsProto.setTheme = function () {\n console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\n};\n/**\n * @return {module:echarts/model/Global}\n */\n\n\nechartsProto.getModel = function () {\n return this._model;\n};\n/**\n * @return {Object}\n */\n\n\nechartsProto.getOption = function () {\n return this._model && this._model.getOption();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getWidth = function () {\n return this._zr.getWidth();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getHeight = function () {\n return this._zr.getHeight();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getDevicePixelRatio = function () {\n return this._zr.painter.dpr || window.devicePixelRatio || 1;\n};\n/**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @return {string}\n */\n\n\nechartsProto.getRenderedCanvas = function (opts) {\n if (!env.canvasSupported) {\n return;\n }\n\n opts = opts || {};\n opts.pixelRatio = opts.pixelRatio || 1;\n opts.backgroundColor = opts.backgroundColor || this._model.get('backgroundColor');\n var zr = this._zr; // var list = zr.storage.getDisplayList();\n // Stop animations\n // Never works before in init animation, so remove it.\n // zrUtil.each(list, function (el) {\n // el.stopAnimation(true);\n // });\n\n return zr.painter.getRenderedCanvas(opts);\n};\n/**\n * Get svg data url\n * @return {string}\n */\n\n\nechartsProto.getSvgDataURL = function () {\n if (!env.svgSupported) {\n return;\n }\n\n var zr = this._zr;\n var list = zr.storage.getDisplayList(); // Stop animations\n\n zrUtil.each(list, function (el) {\n el.stopAnimation(true);\n });\n return zr.painter.toDataURL();\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n * @param {string} [opts.excludeComponents]\n */\n\n\nechartsProto.getDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n opts = opts || {};\n var excludeComponents = opts.excludeComponents;\n var ecModel = this._model;\n var excludesComponentViews = [];\n var self = this;\n each(excludeComponents, function (componentType) {\n ecModel.eachComponent({\n mainType: componentType\n }, function (component) {\n var view = self._componentsMap[component.__viewId];\n\n if (!view.group.ignore) {\n excludesComponentViews.push(view);\n view.group.ignore = true;\n }\n });\n });\n var url = this._zr.painter.getType() === 'svg' ? this.getSvgDataURL() : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\n each(excludesComponentViews, function (view) {\n view.group.ignore = false;\n });\n return url;\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n */\n\n\nechartsProto.getConnectedDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!env.canvasSupported) {\n return;\n }\n\n var isSvg = opts.type === 'svg';\n var groupId = this.group;\n var mathMin = Math.min;\n var mathMax = Math.max;\n var MAX_NUMBER = Infinity;\n\n if (connectedGroups[groupId]) {\n var left = MAX_NUMBER;\n var top = MAX_NUMBER;\n var right = -MAX_NUMBER;\n var bottom = -MAX_NUMBER;\n var canvasList = [];\n var dpr = opts && opts.pixelRatio || 1;\n zrUtil.each(instances, function (chart, id) {\n if (chart.group === groupId) {\n var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.getRenderedCanvas(zrUtil.clone(opts));\n var boundingRect = chart.getDom().getBoundingClientRect();\n left = mathMin(boundingRect.left, left);\n top = mathMin(boundingRect.top, top);\n right = mathMax(boundingRect.right, right);\n bottom = mathMax(boundingRect.bottom, bottom);\n canvasList.push({\n dom: canvas,\n left: boundingRect.left,\n top: boundingRect.top\n });\n }\n });\n left *= dpr;\n top *= dpr;\n right *= dpr;\n bottom *= dpr;\n var width = right - left;\n var height = bottom - top;\n var targetCanvas = zrUtil.createCanvas();\n var zr = zrender.init(targetCanvas, {\n renderer: isSvg ? 'svg' : 'canvas'\n });\n zr.resize({\n width: width,\n height: height\n });\n\n if (isSvg) {\n var content = '';\n each(canvasList, function (item) {\n var x = item.left - left;\n var y = item.top - top;\n content += '' + item.dom + '';\n });\n zr.painter.getSvgRoot().innerHTML = content;\n\n if (opts.connectedBackgroundColor) {\n zr.painter.setBackgroundColor(opts.connectedBackgroundColor);\n }\n\n zr.refreshImmediately();\n return zr.painter.toDataURL();\n } else {\n // Background between the charts\n if (opts.connectedBackgroundColor) {\n zr.add(new graphic.Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n style: {\n fill: opts.connectedBackgroundColor\n }\n }));\n }\n\n each(canvasList, function (item) {\n var img = new graphic.Image({\n style: {\n x: item.left * dpr - left,\n y: item.top * dpr - top,\n image: item.dom\n }\n });\n zr.add(img);\n });\n zr.refreshImmediately();\n return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\n }\n } else {\n return this.getDataURL(opts);\n }\n};\n/**\n * Convert from logical coordinate system to pixel coordinate system.\n * See CoordinateSystem#convertToPixel.\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 * @param {Array|number} value\n * @return {Array|number} result\n */\n\n\nechartsProto.convertToPixel = zrUtil.curry(doConvertPixel, 'convertToPixel');\n/**\n * Convert from pixel coordinate system to logical coordinate system.\n * See CoordinateSystem#convertFromPixel.\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 * @param {Array|number} value\n * @return {Array|number} result\n */\n\nechartsProto.convertFromPixel = zrUtil.curry(doConvertPixel, 'convertFromPixel');\n\nfunction doConvertPixel(methodName, finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n\n var coordSysList = this._coordSysMgr.getCoordinateSystems();\n\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n\n for (var i = 0; i < coordSysList.length; i++) {\n var coordSys = coordSysList[i];\n\n if (coordSys[methodName] && (result = coordSys[methodName](ecModel, finder, value)) != null) {\n return result;\n }\n }\n}\n/**\n * Is the specified coordinate systems or components contain the given pixel point.\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 * @param {Array|number} value\n * @return {boolean} result\n */\n\n\nechartsProto.containPixel = function (finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n zrUtil.each(finder, function (models, key) {\n key.indexOf('Models') >= 0 && zrUtil.each(models, function (model) {\n var coordSys = model.coordinateSystem;\n\n if (coordSys && coordSys.containPoint) {\n result |= !!coordSys.containPoint(value);\n } else if (key === 'seriesModels') {\n var view = this._chartsMap[model.__viewId];\n\n if (view && view.containPoint) {\n result |= view.containPoint(value, model);\n } else {}\n } else {}\n }, this);\n }, this);\n return !!result;\n};\n/**\n * Get visual from series or data.\n * @param {string|Object} finder\n * If string, e.g., 'series', means {seriesIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * dataIndex / dataIndexInside\n * }\n * If dataIndex is not specified, series visual will be fetched,\n * but not data item visual.\n * If all of seriesIndex, seriesId, seriesName are not specified,\n * visual will be fetched from first series.\n * @param {string} visualType 'color', 'symbol', 'symbolSize'\n */\n\n\nechartsProto.getVisual = function (finder, visualType) {\n var ecModel = this._model;\n finder = modelUtil.parseFinder(ecModel, finder, {\n defaultMainType: 'series'\n });\n var seriesModel = finder.seriesModel;\n var data = seriesModel.getData();\n var dataIndexInside = finder.hasOwnProperty('dataIndexInside') ? finder.dataIndexInside : finder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(finder.dataIndex) : null;\n return dataIndexInside != null ? data.getItemVisual(dataIndexInside, visualType) : data.getVisual(visualType);\n};\n/**\n * Get view of corresponding component model\n * @param {module:echarts/model/Component} componentModel\n * @return {module:echarts/view/Component}\n */\n\n\nechartsProto.getViewOfComponentModel = function (componentModel) {\n return this._componentsMap[componentModel.__viewId];\n};\n/**\n * Get view of corresponding series model\n * @param {module:echarts/model/Series} seriesModel\n * @return {module:echarts/view/Chart}\n */\n\n\nechartsProto.getViewOfSeriesModel = function (seriesModel) {\n return this._chartsMap[seriesModel.__viewId];\n};\n\nvar updateMethods = {\n prepareAndUpdate: function (payload) {\n prepare(this);\n updateMethods.update.call(this, payload);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n update: function (payload) {\n // console.profile && console.profile('update');\n var ecModel = this._model;\n var api = this._api;\n var zr = this._zr;\n var coordSysMgr = this._coordSysMgr;\n var scheduler = this._scheduler; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n scheduler.restoreData(ecModel, payload);\n scheduler.performSeriesTasks(ecModel); // TODO\n // Save total ecModel here for undo/redo (after restoring data and before processing data).\n // Undo (restoration of total ecModel) can be carried out in 'action' or outside API call.\n // Create new coordinate system each update\n // In LineView may save the old coordinate system and use it to get the orignal point\n\n coordSysMgr.create(ecModel, api);\n scheduler.performDataProcessorTasks(ecModel, payload); // Current stream render is not supported in data process. So we can update\n // stream modes after data processing, where the filtered data is used to\n // deteming whether use progressive rendering.\n\n updateStreamModes(this, ecModel); // We update stream modes before coordinate system updated, then the modes info\n // can be fetched when coord sys updating (consider the barGrid extent fix). But\n // the drawback is the full coord info can not be fetched. Fortunately this full\n // coord is not requied in stream mode updater currently.\n\n coordSysMgr.update(ecModel, api);\n clearColorPalette(ecModel);\n scheduler.performVisualTasks(ecModel, payload);\n render(this, ecModel, api, payload); // Set background\n\n var backgroundColor = ecModel.get('backgroundColor') || 'transparent'; // In IE8\n\n if (!env.canvasSupported) {\n var colorArr = colorTool.parse(backgroundColor);\n backgroundColor = colorTool.stringify(colorArr, 'rgb');\n\n if (colorArr[3] === 0) {\n backgroundColor = 'transparent';\n }\n } else {\n zr.setBackgroundColor(backgroundColor);\n }\n\n performPostUpdateFuncs(ecModel, api); // console.profile && console.profileEnd('update');\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateTransform: function (payload) {\n var ecModel = this._model;\n var ecIns = this;\n var api = this._api; // update before setOption\n\n if (!ecModel) {\n return;\n } // ChartView.markUpdateMethod(payload, 'updateTransform');\n\n\n var componentDirtyList = [];\n ecModel.eachComponent(function (componentType, componentModel) {\n var componentView = ecIns.getViewOfComponentModel(componentModel);\n\n if (componentView && componentView.__alive) {\n if (componentView.updateTransform) {\n var result = componentView.updateTransform(componentModel, ecModel, api, payload);\n result && result.update && componentDirtyList.push(componentView);\n } else {\n componentDirtyList.push(componentView);\n }\n }\n });\n var seriesDirtyMap = zrUtil.createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.updateTransform) {\n var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\n result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\n } else {\n seriesDirtyMap.set(seriesModel.uid, 1);\n }\n });\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true,\n dirtyMap: seriesDirtyMap\n }); // Currently, not call render of components. Geo render cost a lot.\n // renderComponents(ecIns, ecModel, api, payload, componentDirtyList);\n\n\n renderSeries(ecIns, ecModel, api, payload, seriesDirtyMap);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateView: function (payload) {\n var ecModel = this._model; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ChartView.markUpdateMethod(payload, 'updateView');\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true\n });\n\n render(this, this._model, this._api, payload);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateVisual: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateVisual');\n // clearColorPalette(ecModel);\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, {visualType: 'visual', setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateLayout: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateLayout');\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n // this._scheduler.performVisualTasks(ecModel, payload, {setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n }\n};\n\nfunction prepare(ecIns) {\n var ecModel = ecIns._model;\n var scheduler = ecIns._scheduler;\n scheduler.restorePipelines(ecModel);\n scheduler.prepareStageTasks();\n prepareView(ecIns, 'component', ecModel, scheduler);\n prepareView(ecIns, 'chart', ecModel, scheduler);\n scheduler.plan();\n}\n/**\n * @private\n */\n\n\nfunction updateDirectly(ecIns, method, payload, mainType, subType) {\n var ecModel = ecIns._model; // broadcast\n\n if (!mainType) {\n // FIXME\n // Chart will not be update directly here, except set dirty.\n // But there is no such scenario now.\n each(ecIns._componentsViews.concat(ecIns._chartsViews), callView);\n return;\n }\n\n var query = {};\n query[mainType + 'Id'] = payload[mainType + 'Id'];\n query[mainType + 'Index'] = payload[mainType + 'Index'];\n query[mainType + 'Name'] = payload[mainType + 'Name'];\n var condition = {\n mainType: mainType,\n query: query\n };\n subType && (condition.subType = subType); // subType may be '' by parseClassType;\n\n var excludeSeriesId = payload.excludeSeriesId;\n\n if (excludeSeriesId != null) {\n excludeSeriesId = zrUtil.createHashMap(modelUtil.normalizeToArray(excludeSeriesId));\n } // If dispatchAction before setOption, do nothing.\n\n\n ecModel && ecModel.eachComponent(condition, function (model) {\n if (!excludeSeriesId || excludeSeriesId.get(model.id) == null) {\n callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\n }\n }, ecIns);\n\n function callView(view) {\n view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\n }\n}\n/**\n * Resize the chart\n * @param {Object} opts\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n * @param {boolean} [opts.silent=false]\n */\n\n\nechartsProto.resize = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._zr.resize(opts);\n\n var ecModel = this._model; // Resize loading effect\n\n this._loadingFX && this._loadingFX.resize();\n\n if (!ecModel) {\n return;\n }\n\n var optionChanged = ecModel.resetOption('media');\n var silent = opts && opts.silent;\n this[IN_MAIN_PROCESS] = true;\n optionChanged && prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n};\n\nfunction updateStreamModes(ecIns, ecModel) {\n var chartsMap = ecIns._chartsMap;\n var scheduler = ecIns._scheduler;\n ecModel.eachSeries(function (seriesModel) {\n scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\n });\n}\n/**\n * Show loading effect\n * @param {string} [name='default']\n * @param {Object} [cfg]\n */\n\n\nechartsProto.showLoading = function (name, cfg) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (isObject(name)) {\n cfg = name;\n name = '';\n }\n\n name = name || 'default';\n this.hideLoading();\n\n if (!loadingEffects[name]) {\n return;\n }\n\n var el = loadingEffects[name](this._api, cfg);\n var zr = this._zr;\n this._loadingFX = el;\n zr.add(el);\n};\n/**\n * Hide loading effect\n */\n\n\nechartsProto.hideLoading = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._loadingFX && this._zr.remove(this._loadingFX);\n this._loadingFX = null;\n};\n/**\n * @param {Object} eventObj\n * @return {Object}\n */\n\n\nechartsProto.makeActionFromEvent = function (eventObj) {\n var payload = zrUtil.extend({}, eventObj);\n payload.type = eventActionMap[eventObj.type];\n return payload;\n};\n/**\n * @pubilc\n * @param {Object} payload\n * @param {string} [payload.type] Action type\n * @param {Object|boolean} [opt] If pass boolean, means opt.silent\n * @param {boolean} [opt.silent=false] Whether trigger events.\n * @param {boolean} [opt.flush=undefined]\n * true: Flush immediately, and then pixel in canvas can be fetched\n * immediately. Caution: it might affect performance.\n * false: Not flush.\n * undefined: Auto decide whether perform flush.\n */\n\n\nechartsProto.dispatchAction = function (payload, opt) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!isObject(opt)) {\n opt = {\n silent: !!opt\n };\n }\n\n if (!actions[payload.type]) {\n return;\n } // Avoid dispatch action before setOption. Especially in `connect`.\n\n\n if (!this._model) {\n return;\n } // May dispatchAction in rendering procedure\n\n\n if (this[IN_MAIN_PROCESS]) {\n this._pendingActions.push(payload);\n\n return;\n }\n\n doDispatchAction.call(this, payload, opt.silent);\n\n if (opt.flush) {\n this._zr.flush(true);\n } else if (opt.flush !== false && env.browser.weChat) {\n // In WeChat embeded browser, `requestAnimationFrame` and `setInterval`\n // hang when sliding page (on touch event), which cause that zr does not\n // refresh util user interaction finished, which is not expected.\n // But `dispatchAction` may be called too frequently when pan on touch\n // screen, which impacts performance if do not throttle them.\n this._throttledZrFlush();\n }\n\n flushPendingActions.call(this, opt.silent);\n triggerUpdatedEvent.call(this, opt.silent);\n};\n\nfunction doDispatchAction(payload, silent) {\n var payloadType = payload.type;\n var escapeConnect = payload.escapeConnect;\n var actionWrap = actions[payloadType];\n var actionInfo = actionWrap.actionInfo;\n var cptType = (actionInfo.update || 'update').split(':');\n var updateMethod = cptType.pop();\n cptType = cptType[0] != null && parseClassType(cptType[0]);\n this[IN_MAIN_PROCESS] = true;\n var payloads = [payload];\n var batched = false; // Batch action\n\n if (payload.batch) {\n batched = true;\n payloads = zrUtil.map(payload.batch, function (item) {\n item = zrUtil.defaults(zrUtil.extend({}, item), payload);\n item.batch = null;\n return item;\n });\n }\n\n var eventObjBatch = [];\n var eventObj;\n var isHighDown = payloadType === 'highlight' || payloadType === 'downplay';\n each(payloads, function (batchItem) {\n // Action can specify the event by return it.\n eventObj = actionWrap.action(batchItem, this._model, this._api); // Emit event outside\n\n eventObj = eventObj || zrUtil.extend({}, batchItem); // Convert type to eventType\n\n eventObj.type = actionInfo.event || eventObj.type;\n eventObjBatch.push(eventObj); // light update does not perform data process, layout and visual.\n\n if (isHighDown) {\n // method, payload, mainType, subType\n updateDirectly(this, updateMethod, batchItem, 'series');\n } else if (cptType) {\n updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub);\n }\n }, this);\n\n if (updateMethod !== 'none' && !isHighDown && !cptType) {\n // Still dirty\n if (this[OPTION_UPDATED]) {\n // FIXME Pass payload ?\n prepare(this);\n updateMethods.update.call(this, payload);\n this[OPTION_UPDATED] = false;\n } else {\n updateMethods[updateMethod].call(this, payload);\n }\n } // Follow the rule of action batch\n\n\n if (batched) {\n eventObj = {\n type: actionInfo.event || payloadType,\n escapeConnect: escapeConnect,\n batch: eventObjBatch\n };\n } else {\n eventObj = eventObjBatch[0];\n }\n\n this[IN_MAIN_PROCESS] = false;\n !silent && this._messageCenter.trigger(eventObj.type, eventObj);\n}\n\nfunction flushPendingActions(silent) {\n var pendingActions = this._pendingActions;\n\n while (pendingActions.length) {\n var payload = pendingActions.shift();\n doDispatchAction.call(this, payload, silent);\n }\n}\n\nfunction triggerUpdatedEvent(silent) {\n !silent && this.trigger('updated');\n}\n/**\n * Event `rendered` is triggered when zr\n * rendered. It is useful for realtime\n * snapshot (reflect animation).\n *\n * Event `finished` is triggered when:\n * (1) zrender rendering finished.\n * (2) initial animation finished.\n * (3) progressive rendering finished.\n * (4) no pending action.\n * (5) no delayed setOption needs to be processed.\n */\n\n\nfunction bindRenderedEvent(zr, ecIns) {\n zr.on('rendered', function () {\n ecIns.trigger('rendered'); // The `finished` event should not be triggered repeatly,\n // so it should only be triggered when rendering indeed happend\n // in zrender. (Consider the case that dipatchAction is keep\n // triggering when mouse move).\n\n if ( // Although zr is dirty if initial animation is not finished\n // and this checking is called on frame, we also check\n // animation finished for robustness.\n zr.animation.isFinished() && !ecIns[OPTION_UPDATED] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) {\n ecIns.trigger('finished');\n }\n });\n}\n/**\n * @param {Object} params\n * @param {number} params.seriesIndex\n * @param {Array|TypedArray} params.data\n */\n\n\nechartsProto.appendData = function (params) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var seriesIndex = params.seriesIndex;\n var ecModel = this.getModel();\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n seriesModel.appendData(params); // Note: `appendData` does not support that update extent of coordinate\n // system, util some scenario require that. In the expected usage of\n // `appendData`, the initial extent of coordinate system should better\n // be fixed by axis `min`/`max` setting or initial data, otherwise if\n // the extent changed while `appendData`, the location of the painted\n // graphic elements have to be changed, which make the usage of\n // `appendData` meaningless.\n\n this._scheduler.unfinished = true;\n};\n/**\n * Register event\n * @method\n */\n\n\nechartsProto.on = createRegisterEventWithLowercaseName('on', false);\nechartsProto.off = createRegisterEventWithLowercaseName('off', false);\nechartsProto.one = createRegisterEventWithLowercaseName('one', false);\n/**\n * Prepare view instances of charts and components\n * @param {module:echarts/model/Global} ecModel\n * @private\n */\n\nfunction prepareView(ecIns, type, ecModel, scheduler) {\n var isComponent = type === 'component';\n var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\n var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\n var zr = ecIns._zr;\n var api = ecIns._api;\n\n for (var i = 0; i < viewList.length; i++) {\n viewList[i].__alive = false;\n }\n\n isComponent ? ecModel.eachComponent(function (componentType, model) {\n componentType !== 'series' && doPrepare(model);\n }) : ecModel.eachSeries(doPrepare);\n\n function doPrepare(model) {\n // Consider: id same and type changed.\n var viewId = '_ec_' + model.id + '_' + model.type;\n var view = viewMap[viewId];\n\n if (!view) {\n var classType = parseClassType(model.type);\n var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : ChartView.getClass(classType.sub);\n view = new Clazz();\n view.init(ecModel, api);\n viewMap[viewId] = view;\n viewList.push(view);\n zr.add(view.group);\n }\n\n model.__viewId = view.__id = viewId;\n view.__alive = true;\n view.__model = model;\n view.group.__ecComponentInfo = {\n mainType: model.mainType,\n index: model.componentIndex\n };\n !isComponent && scheduler.prepareView(view, model, ecModel, api);\n }\n\n for (var i = 0; i < viewList.length;) {\n var view = viewList[i];\n\n if (!view.__alive) {\n !isComponent && view.renderTask.dispose();\n zr.remove(view.group);\n view.dispose(ecModel, api);\n viewList.splice(i, 1);\n delete viewMap[view.__id];\n view.__id = view.group.__ecComponentInfo = null;\n } else {\n i++;\n }\n }\n} // /**\n// * Encode visual infomation from data after data processing\n// *\n// * @param {module:echarts/model/Global} ecModel\n// * @param {object} layout\n// * @param {boolean} [layoutFilter] `true`: only layout,\n// * `false`: only not layout,\n// * `null`/`undefined`: all.\n// * @param {string} taskBaseTag\n// * @private\n// */\n// function startVisualEncoding(ecIns, ecModel, api, payload, layoutFilter) {\n// each(visualFuncs, function (visual, index) {\n// var isLayout = visual.isLayout;\n// if (layoutFilter == null\n// || (layoutFilter === false && !isLayout)\n// || (layoutFilter === true && isLayout)\n// ) {\n// visual.func(ecModel, api, payload);\n// }\n// });\n// }\n\n\nfunction clearColorPalette(ecModel) {\n ecModel.clearColorPalette();\n ecModel.eachSeries(function (seriesModel) {\n seriesModel.clearColorPalette();\n });\n}\n\nfunction render(ecIns, ecModel, api, payload) {\n renderComponents(ecIns, ecModel, api, payload);\n each(ecIns._chartsViews, function (chart) {\n chart.__alive = false;\n });\n renderSeries(ecIns, ecModel, api, payload); // Remove groups of unrendered charts\n\n each(ecIns._chartsViews, function (chart) {\n if (!chart.__alive) {\n chart.remove(ecModel, api);\n }\n });\n}\n\nfunction renderComponents(ecIns, ecModel, api, payload, dirtyList) {\n each(dirtyList || ecIns._componentsViews, function (componentView) {\n var componentModel = componentView.__model;\n componentView.render(componentModel, ecModel, api, payload);\n updateZ(componentModel, componentView);\n });\n}\n/**\n * Render each chart and component\n * @private\n */\n\n\nfunction renderSeries(ecIns, ecModel, api, payload, dirtyMap) {\n // Render all charts\n var scheduler = ecIns._scheduler;\n var unfinished;\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n chartView.__alive = true;\n var renderTask = chartView.renderTask;\n scheduler.updatePayload(renderTask, payload);\n\n if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\n renderTask.dirty();\n }\n\n unfinished |= renderTask.perform(scheduler.getPerformArgs(renderTask));\n chartView.group.silent = !!seriesModel.get('silent');\n updateZ(seriesModel, chartView);\n updateBlend(seriesModel, chartView);\n });\n scheduler.unfinished |= unfinished; // If use hover layer\n\n updateHoverLayerStatus(ecIns, ecModel); // Add aria\n\n aria(ecIns._zr.dom, ecModel);\n}\n\nfunction performPostUpdateFuncs(ecModel, api) {\n each(postUpdateFuncs, function (func) {\n func(ecModel, api);\n });\n}\n\nvar MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];\n/**\n * @private\n */\n\nechartsProto._initEvents = function () {\n each(MOUSE_EVENT_NAMES, function (eveName) {\n var handler = function (e) {\n var ecModel = this.getModel();\n var el = e.target;\n var params;\n var isGlobalOut = eveName === 'globalout'; // no e.target when 'globalout'.\n\n if (isGlobalOut) {\n params = {};\n } else if (el && el.dataIndex != null) {\n var dataModel = el.dataModel || ecModel.getSeriesByIndex(el.seriesIndex);\n params = dataModel && dataModel.getDataParams(el.dataIndex, el.dataType, el) || {};\n } // If element has custom eventData of components\n else if (el && el.eventData) {\n params = zrUtil.extend({}, el.eventData);\n } // Contract: if params prepared in mouse event,\n // these properties must be specified:\n // {\n // componentType: string (component main type)\n // componentIndex: number\n // }\n // Otherwise event query can not work.\n\n\n if (params) {\n var componentType = params.componentType;\n var componentIndex = params.componentIndex; // Special handling for historic reason: when trigger by\n // markLine/markPoint/markArea, the componentType is\n // 'markLine'/'markPoint'/'markArea', but we should better\n // enable them to be queried by seriesIndex, since their\n // option is set in each series.\n\n if (componentType === 'markLine' || componentType === 'markPoint' || componentType === 'markArea') {\n componentType = 'series';\n componentIndex = params.seriesIndex;\n }\n\n var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex);\n var view = model && this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\n params.event = e;\n params.type = eveName;\n this._ecEventProcessor.eventInfo = {\n targetEl: el,\n packedEvent: params,\n model: model,\n view: view\n };\n this.trigger(eveName, params);\n }\n }; // Consider that some component (like tooltip, brush, ...)\n // register zr event handler, but user event handler might\n // do anything, such as call `setOption` or `dispatchAction`,\n // which probably update any of the content and probably\n // cause problem if it is called previous other inner handlers.\n\n\n handler.zrEventfulCallAtLast = true;\n\n this._zr.on(eveName, handler, this);\n }, this);\n each(eventActionMap, function (actionType, eventType) {\n this._messageCenter.on(eventType, function (event) {\n this.trigger(eventType, event);\n }, this);\n }, this);\n};\n/**\n * @return {boolean}\n */\n\n\nechartsProto.isDisposed = function () {\n return this._disposed;\n};\n/**\n * Clear\n */\n\n\nechartsProto.clear = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this.setOption({\n series: []\n }, true);\n};\n/**\n * Dispose instance\n */\n\n\nechartsProto.dispose = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._disposed = true;\n modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\n var api = this._api;\n var ecModel = this._model;\n each(this._componentsViews, function (component) {\n component.dispose(ecModel, api);\n });\n each(this._chartsViews, function (chart) {\n chart.dispose(ecModel, api);\n }); // Dispose after all views disposed\n\n this._zr.dispose();\n\n delete instances[this.id];\n};\n\nzrUtil.mixin(ECharts, Eventful);\n\nfunction disposedWarning(id) {}\n\nfunction updateHoverLayerStatus(ecIns, ecModel) {\n var zr = ecIns._zr;\n var storage = zr.storage;\n var elCount = 0;\n storage.traverse(function (el) {\n elCount++;\n });\n\n if (elCount > ecModel.get('hoverLayerThreshold') && !env.node) {\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.preventUsingHoverLayer) {\n return;\n }\n\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.__alive) {\n chartView.group.traverse(function (el) {\n // Don't switch back.\n el.useHoverLayer = true;\n });\n }\n });\n }\n}\n/**\n * Update chart progressive and blend.\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateBlend(seriesModel, chartView) {\n var blendMode = seriesModel.get('blendMode') || null;\n chartView.group.traverse(function (el) {\n // FIXME marker and other components\n if (!el.isGroup) {\n // Only set if blendMode is changed. In case element is incremental and don't wan't to rerender.\n if (el.style.blend !== blendMode) {\n el.setStyle('blend', blendMode);\n }\n }\n\n if (el.eachPendingDisplayable) {\n el.eachPendingDisplayable(function (displayable) {\n displayable.setStyle('blend', blendMode);\n });\n }\n });\n}\n/**\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateZ(model, view) {\n var z = model.get('z');\n var zlevel = model.get('zlevel'); // Set z and zlevel\n\n view.group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n }\n });\n}\n\nfunction createExtensionAPI(ecInstance) {\n var coordSysMgr = ecInstance._coordSysMgr;\n return zrUtil.extend(new ExtensionAPI(ecInstance), {\n // Inject methods\n getCoordinateSystems: zrUtil.bind(coordSysMgr.getCoordinateSystems, coordSysMgr),\n getComponentByElement: function (el) {\n while (el) {\n var modelInfo = el.__ecComponentInfo;\n\n if (modelInfo != null) {\n return ecInstance._model.getComponent(modelInfo.mainType, modelInfo.index);\n }\n\n el = el.parent;\n }\n }\n });\n}\n/**\n * @class\n * Usage of query:\n * `chart.on('click', query, handler);`\n * The `query` can be:\n * + The component type query string, only `mainType` or `mainType.subType`,\n * like: 'xAxis', 'series', 'xAxis.category' or 'series.line'.\n * + The component query object, like:\n * `{seriesIndex: 2}`, `{seriesName: 'xx'}`, `{seriesId: 'some'}`,\n * `{xAxisIndex: 2}`, `{xAxisName: 'xx'}`, `{xAxisId: 'some'}`.\n * + The data query object, like:\n * `{dataIndex: 123}`, `{dataType: 'link'}`, `{name: 'some'}`.\n * + The other query object (cmponent customized query), like:\n * `{element: 'some'}` (only available in custom series).\n *\n * Caveat: If a prop in the `query` object is `null/undefined`, it is the\n * same as there is no such prop in the `query` object.\n */\n\n\nfunction EventProcessor() {\n // These info required: targetEl, packedEvent, model, view\n this.eventInfo;\n}\n\nEventProcessor.prototype = {\n constructor: EventProcessor,\n normalizeQuery: function (query) {\n var cptQuery = {};\n var dataQuery = {};\n var otherQuery = {}; // `query` is `mainType` or `mainType.subType` of component.\n\n if (zrUtil.isString(query)) {\n var condCptType = parseClassType(query); // `.main` and `.sub` may be ''.\n\n cptQuery.mainType = condCptType.main || null;\n cptQuery.subType = condCptType.sub || null;\n } // `query` is an object, convert to {mainType, index, name, id}.\n else {\n // `xxxIndex`, `xxxName`, `xxxId`, `name`, `dataIndex`, `dataType` is reserved,\n // can not be used in `compomentModel.filterForExposedEvent`.\n var suffixes = ['Index', 'Name', 'Id'];\n var dataKeys = {\n name: 1,\n dataIndex: 1,\n dataType: 1\n };\n zrUtil.each(query, function (val, key) {\n var reserved = false;\n\n for (var i = 0; i < suffixes.length; i++) {\n var propSuffix = suffixes[i];\n var suffixPos = key.lastIndexOf(propSuffix);\n\n if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\n var mainType = key.slice(0, suffixPos); // Consider `dataIndex`.\n\n if (mainType !== 'data') {\n cptQuery.mainType = mainType;\n cptQuery[propSuffix.toLowerCase()] = val;\n reserved = true;\n }\n }\n }\n\n if (dataKeys.hasOwnProperty(key)) {\n dataQuery[key] = val;\n reserved = true;\n }\n\n if (!reserved) {\n otherQuery[key] = val;\n }\n });\n }\n\n return {\n cptQuery: cptQuery,\n dataQuery: dataQuery,\n otherQuery: otherQuery\n };\n },\n filter: function (eventType, query, args) {\n // They should be assigned before each trigger call.\n var eventInfo = this.eventInfo;\n\n if (!eventInfo) {\n return true;\n }\n\n var targetEl = eventInfo.targetEl;\n var packedEvent = eventInfo.packedEvent;\n var model = eventInfo.model;\n var view = eventInfo.view; // For event like 'globalout'.\n\n if (!model || !view) {\n return true;\n }\n\n var cptQuery = query.cptQuery;\n var dataQuery = query.dataQuery;\n return check(cptQuery, model, 'mainType') && check(cptQuery, model, 'subType') && check(cptQuery, model, 'index', 'componentIndex') && check(cptQuery, model, 'name') && check(cptQuery, model, 'id') && check(dataQuery, packedEvent, 'name') && check(dataQuery, packedEvent, 'dataIndex') && check(dataQuery, packedEvent, 'dataType') && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\n\n function check(query, host, prop, propOnHost) {\n return query[prop] == null || host[propOnHost || prop] === query[prop];\n }\n },\n afterTrigger: function () {\n // Make sure the eventInfo wont be used in next trigger.\n this.eventInfo = null;\n }\n};\n/**\n * @type {Object} key: actionType.\n * @inner\n */\n\nvar actions = {};\n/**\n * Map eventType to actionType\n * @type {Object}\n */\n\nvar eventActionMap = {};\n/**\n * Data processor functions of each stage\n * @type {Array.>}\n * @inner\n */\n\nvar dataProcessorFuncs = [];\n/**\n * @type {Array.}\n * @inner\n */\n\nvar optionPreprocessorFuncs = [];\n/**\n * @type {Array.}\n * @inner\n */\n\nvar postUpdateFuncs = [];\n/**\n * Visual encoding functions of each stage\n * @type {Array.>}\n */\n\nvar visualFuncs = [];\n/**\n * Theme storage\n * @type {Object.}\n */\n\nvar themeStorage = {};\n/**\n * Loading effects\n */\n\nvar loadingEffects = {};\nvar instances = {};\nvar connectedGroups = {};\nvar idBase = new Date() - 0;\nvar groupIdBase = new Date() - 0;\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\n\nfunction enableConnect(chart) {\n var STATUS_PENDING = 0;\n var STATUS_UPDATING = 1;\n var STATUS_UPDATED = 2;\n var STATUS_KEY = '__connectUpdateStatus';\n\n function updateConnectedChartsStatus(charts, status) {\n for (var i = 0; i < charts.length; i++) {\n var otherChart = charts[i];\n otherChart[STATUS_KEY] = status;\n }\n }\n\n each(eventActionMap, function (actionType, eventType) {\n chart._messageCenter.on(eventType, function (event) {\n if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) {\n if (event && event.escapeConnect) {\n return;\n }\n\n var action = chart.makeActionFromEvent(event);\n var otherCharts = [];\n each(instances, function (otherChart) {\n if (otherChart !== chart && otherChart.group === chart.group) {\n otherCharts.push(otherChart);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_PENDING);\n each(otherCharts, function (otherChart) {\n if (otherChart[STATUS_KEY] !== STATUS_UPDATING) {\n otherChart.dispatchAction(action);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_UPDATED);\n }\n });\n });\n}\n/**\n * @param {HTMLElement} dom\n * @param {Object} [theme]\n * @param {Object} opts\n * @param {number} [opts.devicePixelRatio] Use window.devicePixelRatio by default\n * @param {string} [opts.renderer] Can choose 'canvas' or 'svg' to render the chart.\n * @param {number} [opts.width] Use clientWidth of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Use clientHeight of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n */\n\n\nfunction init(dom, theme, opts) {\n var existInstance = getInstanceByDom(dom);\n\n if (existInstance) {\n return existInstance;\n }\n\n var chart = new ECharts(dom, theme, opts);\n chart.id = 'ec_' + idBase++;\n instances[chart.id] = chart;\n modelUtil.setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\n enableConnect(chart);\n return chart;\n}\n/**\n * @return {string|Array.} groupId\n */\n\n\nfunction connect(groupId) {\n // Is array of charts\n if (zrUtil.isArray(groupId)) {\n var charts = groupId;\n groupId = null; // If any chart has group\n\n each(charts, function (chart) {\n if (chart.group != null) {\n groupId = chart.group;\n }\n });\n groupId = groupId || 'g_' + groupIdBase++;\n each(charts, function (chart) {\n chart.group = groupId;\n });\n }\n\n connectedGroups[groupId] = true;\n return groupId;\n}\n/**\n * @DEPRECATED\n * @return {string} groupId\n */\n\n\nfunction disConnect(groupId) {\n connectedGroups[groupId] = false;\n}\n/**\n * @return {string} groupId\n */\n\n\nvar disconnect = disConnect;\n/**\n * Dispose a chart instance\n * @param {module:echarts~ECharts|HTMLDomElement|string} chart\n */\n\nfunction dispose(chart) {\n if (typeof chart === 'string') {\n chart = instances[chart];\n } else if (!(chart instanceof ECharts)) {\n // Try to treat as dom\n chart = getInstanceByDom(chart);\n }\n\n if (chart instanceof ECharts && !chart.isDisposed()) {\n chart.dispose();\n }\n}\n/**\n * @param {HTMLElement} dom\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceByDom(dom) {\n return instances[modelUtil.getAttribute(dom, DOM_ATTRIBUTE_KEY)];\n}\n/**\n * @param {string} key\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceById(key) {\n return instances[key];\n}\n/**\n * Register theme\n */\n\n\nfunction registerTheme(name, theme) {\n themeStorage[name] = theme;\n}\n/**\n * Register option preprocessor\n * @param {Function} preprocessorFunc\n */\n\n\nfunction registerPreprocessor(preprocessorFunc) {\n optionPreprocessorFuncs.push(preprocessorFunc);\n}\n/**\n * @param {number} [priority=1000]\n * @param {Object|Function} processor\n */\n\n\nfunction registerProcessor(priority, processor) {\n normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_FILTER);\n}\n/**\n * Register postUpdater\n * @param {Function} postUpdateFunc\n */\n\n\nfunction registerPostUpdate(postUpdateFunc) {\n postUpdateFuncs.push(postUpdateFunc);\n}\n/**\n * Usage:\n * registerAction('someAction', 'someEvent', function () { ... });\n * registerAction('someAction', function () { ... });\n * registerAction(\n * {type: 'someAction', event: 'someEvent', update: 'updateView'},\n * function () { ... }\n * );\n *\n * @param {(string|Object)} actionInfo\n * @param {string} actionInfo.type\n * @param {string} [actionInfo.event]\n * @param {string} [actionInfo.update]\n * @param {string} [eventName]\n * @param {Function} action\n */\n\n\nfunction registerAction(actionInfo, eventName, action) {\n if (typeof eventName === 'function') {\n action = eventName;\n eventName = '';\n }\n\n var actionType = isObject(actionInfo) ? actionInfo.type : [actionInfo, actionInfo = {\n event: eventName\n }][0]; // Event name is all lowercase\n\n actionInfo.event = (actionInfo.event || actionType).toLowerCase();\n eventName = actionInfo.event; // Validate action type and event name.\n\n assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\n\n if (!actions[actionType]) {\n actions[actionType] = {\n action: action,\n actionInfo: actionInfo\n };\n }\n\n eventActionMap[eventName] = actionType;\n}\n/**\n * @param {string} type\n * @param {*} CoordinateSystem\n */\n\n\nfunction registerCoordinateSystem(type, CoordinateSystem) {\n CoordinateSystemManager.register(type, CoordinateSystem);\n}\n/**\n * Get dimensions of specified coordinate system.\n * @param {string} type\n * @return {Array.}\n */\n\n\nfunction getCoordinateSystemDimensions(type) {\n var coordSysCreator = CoordinateSystemManager.get(type);\n\n if (coordSysCreator) {\n return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();\n }\n}\n/**\n * Layout is a special stage of visual encoding\n * Most visual encoding like color are common for different chart\n * But each chart has it's own layout algorithm\n *\n * @param {number} [priority=1000]\n * @param {Function} layoutTask\n */\n\n\nfunction registerLayout(priority, layoutTask) {\n normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\n}\n/**\n * @param {number} [priority=3000]\n * @param {module:echarts/stream/Task} visualTask\n */\n\n\nfunction registerVisual(priority, visualTask) {\n normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\n}\n/**\n * @param {Object|Function} fn: {seriesType, createOnAllSeries, performRawSeries, reset}\n */\n\n\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\n if (isFunction(priority) || isObject(priority)) {\n fn = priority;\n priority = defaultPriority;\n }\n\n var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\n stageHandler.__prio = priority;\n stageHandler.__raw = fn;\n targetList.push(stageHandler);\n return stageHandler;\n}\n/**\n * @param {string} name\n */\n\n\nfunction registerLoading(name, loadingFx) {\n loadingEffects[name] = loadingFx;\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentModel(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentModel;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return ComponentModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentView(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentView;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentView.getClass(classType.main, classType.sub, true);\n // }\n return ComponentView.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendSeriesModel(opts\n/*, superClass*/\n) {\n // var Clazz = SeriesModel;\n // if (superClass) {\n // superClass = 'series.' + superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return SeriesModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendChartView(opts\n/*, superClass*/\n) {\n // var Clazz = ChartView;\n // if (superClass) {\n // superClass = superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ChartView.getClass(classType.main, true);\n // }\n return ChartView.extend(opts);\n}\n/**\n * ZRender need a canvas context to do measureText.\n * But in node environment canvas may be created by node-canvas.\n * So we need to specify how to create a canvas instead of using document.createElement('canvas')\n *\n * Be careful of using it in the browser.\n *\n * @param {Function} creator\n * @example\n * var Canvas = require('canvas');\n * var echarts = require('echarts');\n * echarts.setCanvasCreator(function () {\n * // Small size is enough.\n * return new Canvas(32, 32);\n * });\n */\n\n\nfunction setCanvasCreator(creator) {\n zrUtil.$override('createCanvas', creator);\n}\n/**\n * @param {string} mapName\n * @param {Array.|Object|string} geoJson\n * @param {Object} [specialAreas]\n *\n * @example GeoJSON\n * $.get('USA.json', function (geoJson) {\n * echarts.registerMap('USA', geoJson);\n * // Or\n * echarts.registerMap('USA', {\n * geoJson: geoJson,\n * specialAreas: {}\n * })\n * });\n *\n * $.get('airport.svg', function (svg) {\n * echarts.registerMap('airport', {\n * svg: svg\n * }\n * });\n *\n * echarts.registerMap('eu', [\n * {svg: eu-topographic.svg},\n * {geoJSON: eu.json}\n * ])\n */\n\n\nfunction registerMap(mapName, geoJson, specialAreas) {\n mapDataStorage.registerMap(mapName, geoJson, specialAreas);\n}\n/**\n * @param {string} mapName\n * @return {Object}\n */\n\n\nfunction getMap(mapName) {\n // For backward compatibility, only return the first one.\n var records = mapDataStorage.retrieveMap(mapName);\n return records && records[0] && {\n geoJson: records[0].geoJSON,\n specialAreas: records[0].specialAreas\n };\n}\n\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesColor);\nregisterPreprocessor(backwardCompat);\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\nregisterLoading('default', loadingDefault); // Default actions\n\nregisterAction({\n type: 'highlight',\n event: 'highlight',\n update: 'highlight'\n}, zrUtil.noop);\nregisterAction({\n type: 'downplay',\n event: 'downplay',\n update: 'downplay'\n}, zrUtil.noop); // Default theme\n\nregisterTheme('light', lightTheme);\nregisterTheme('dark', darkTheme); // For backward compatibility, where the namespace `dataTool` will\n// be mounted on `echarts` is the extension `dataTool` is imported.\n\nvar dataTool = {};\nexports.version = version;\nexports.dependencies = dependencies;\nexports.PRIORITY = PRIORITY;\nexports.init = init;\nexports.connect = connect;\nexports.disConnect = disConnect;\nexports.disconnect = disconnect;\nexports.dispose = dispose;\nexports.getInstanceByDom = getInstanceByDom;\nexports.getInstanceById = getInstanceById;\nexports.registerTheme = registerTheme;\nexports.registerPreprocessor = registerPreprocessor;\nexports.registerProcessor = registerProcessor;\nexports.registerPostUpdate = registerPostUpdate;\nexports.registerAction = registerAction;\nexports.registerCoordinateSystem = registerCoordinateSystem;\nexports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\nexports.registerLayout = registerLayout;\nexports.registerVisual = registerVisual;\nexports.registerLoading = registerLoading;\nexports.extendComponentModel = extendComponentModel;\nexports.extendComponentView = extendComponentView;\nexports.extendSeriesModel = extendSeriesModel;\nexports.extendChartView = extendChartView;\nexports.setCanvasCreator = setCanvasCreator;\nexports.registerMap = registerMap;\nexports.getMap = getMap;\nexports.dataTool = dataTool;\nvar ___ec_export = require(\"./export\");\n(function () {\n for (var key in ___ec_export) {\n if (___ec_export.hasOwnProperty(key)) {\n exports[key] = ___ec_export[key];\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 zrender = require(\"zrender/lib/zrender\");\n\nexports.zrender = zrender;\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nexports.matrix = matrix;\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nexports.vector = vector;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nexports.color = colorTool;\n\nvar graphicUtil = require(\"./util/graphic\");\n\nvar numberUtil = require(\"./util/number\");\n\nexports.number = numberUtil;\n\nvar formatUtil = require(\"./util/format\");\n\nexports.format = formatUtil;\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\nexports.throttle = _throttle.throttle;\n\nvar ecHelper = require(\"./helper\");\n\nexports.helper = ecHelper;\n\nvar parseGeoJSON = require(\"./coord/geo/parseGeoJson\");\n\nexports.parseGeoJSON = parseGeoJSON;\n\nvar _List = require(\"./data/List\");\n\nexports.List = _List;\n\nvar _Model = require(\"./model/Model\");\n\nexports.Model = _Model;\n\nvar _Axis = require(\"./coord/Axis\");\n\nexports.Axis = _Axis;\n\nvar _env = require(\"zrender/lib/core/env\");\n\nexports.env = _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*/\n\n/**\n * Do not mount those modules on 'src/echarts' for better tree shaking.\n */\nvar parseGeoJson = parseGeoJSON;\nvar ecUtil = {};\nzrUtil.each(['map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter', 'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction', 'extend', 'defaults', 'clone', 'merge'], function (name) {\n ecUtil[name] = zrUtil[name];\n});\nvar graphic = {};\nzrUtil.each(['extendShape', 'extendPath', 'makePath', 'makeImage', 'mergePath', 'resizePath', 'createIcon', 'setHoverStyle', 'setLabelStyle', 'setTextStyle', 'setText', 'getFont', 'updateProps', 'initProps', 'getTransform', 'clipPointsByRect', 'clipRectByRect', 'registerShape', 'getShapeClass', 'Group', 'Image', 'Text', 'Circle', 'Sector', 'Ring', 'Polygon', 'Polyline', 'Rect', 'Line', 'BezierCurve', 'Arc', 'IncrementalDisplayable', 'CompoundPath', 'LinearGradient', 'RadialGradient', 'BoundingRect'], function (name) {\n graphic[name] = graphicUtil[name];\n});\nexports.parseGeoJson = parseGeoJson;\nexports.util = ecUtil;\nexports.graphic = graphic;"],"sourceRoot":""}