{"ast":null,"code":"import \"core-js/modules/es.error.cause.js\";\nimport \"core-js/modules/es.string.sub.js\";\nimport \"core-js/modules/es.array.splice.js\";\nimport \"core-js/modules/es.array.concat.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport \"core-js/modules/es.regexp.test.js\";\nimport \"core-js/modules/es.array.slice.js\";\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\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 * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\nimport { __extends } from \"tslib\";\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nimport * as zrender from 'zrender/lib/zrender.js';\nimport { assert, each, isFunction, isObject, indexOf, bind, clone, setAsPrimitive, extend, createHashMap, map, defaults, isDom, isArray, noop, isString, retrieve2 } from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport timsort from 'zrender/lib/core/timsort.js';\nimport Eventful from 'zrender/lib/core/Eventful.js';\nimport GlobalModel from '../model/Global.js';\nimport ExtensionAPI from './ExtensionAPI.js';\nimport CoordinateSystemManager from './CoordinateSystem.js';\nimport OptionManager from '../model/OptionManager.js';\nimport backwardCompat from '../preprocessor/backwardCompat.js';\nimport dataStack from '../processor/dataStack.js';\nimport SeriesModel from '../model/Series.js';\nimport ComponentView from '../view/Component.js';\nimport ChartView from '../view/Chart.js';\nimport * as graphic from '../util/graphic.js';\nimport { getECData } from '../util/innerStore.js';\nimport { isHighDownDispatcher, HOVER_STATE_EMPHASIS, HOVER_STATE_BLUR, blurSeriesFromHighlightPayload, toggleSelectionFromPayload, updateSeriesElementSelection, getAllSelectedIndices, isSelectChangePayload, isHighDownPayload, HIGHLIGHT_ACTION_TYPE, DOWNPLAY_ACTION_TYPE, SELECT_ACTION_TYPE, UNSELECT_ACTION_TYPE, TOGGLE_SELECT_ACTION_TYPE, savePathStates, enterEmphasis, leaveEmphasis, leaveBlur, enterSelect, leaveSelect, enterBlur, allLeaveBlur, findComponentHighDownDispatchers, blurComponent, handleGlobalMouseOverForHighDown, handleGlobalMouseOutForHighDown } from '../util/states.js';\nimport * as modelUtil from '../util/model.js';\nimport { throttle } from '../util/throttle.js';\nimport { seriesStyleTask, dataStyleTask, dataColorPaletteTask } from '../visual/style.js';\nimport loadingDefault from '../loading/default.js';\nimport Scheduler from './Scheduler.js';\nimport lightTheme from '../theme/light.js';\nimport darkTheme from '../theme/dark.js';\nimport { parseClassType } from '../util/clazz.js';\nimport { ECEventProcessor } from '../util/ECEventProcessor.js';\nimport { seriesSymbolTask, dataSymbolTask } from '../visual/symbol.js';\nimport { getVisualFromData, getItemVisualFromData } from '../visual/helper.js';\nimport { deprecateLog, deprecateReplaceLog, error, warn } from '../util/log.js';\nimport { handleLegacySelectEvents } from '../legacy/dataSelectAction.js';\nimport { registerExternalTransform } from '../data/helper/transform.js';\nimport { createLocaleObject, SYSTEM_LANG } from './locale.js';\nimport { findEventDispatcher } from '../util/event.js';\nimport decal from '../visual/decal.js';\nimport lifecycle from './lifecycle.js';\nimport { platformApi, setPlatformAPI } from 'zrender/lib/core/platform.js';\nimport { getImpl } from './impl.js';\nexport var version = '5.4.2';\nexport var dependencies = {\n zrender: '5.4.3'\n};\nvar TEST_FRAME_REMAIN_TIME = 1;\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800; // Some data processors depends on the stack result dimension (to calculate data extent).\n// So data stack stage should be in front of data processing stage.\n\nvar PRIORITY_PROCESSOR_DATASTACK = 900; // \"Data filter\" will block the stream, so it should be\n// put at the beginning of data processing.\n\nvar PRIORITY_PROCESSOR_FILTER = 1000;\nvar PRIORITY_PROCESSOR_DEFAULT = 2000;\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_COMPONENT = 4000; // Visual property in data. Greater than `PRIORITY_VISUAL_COMPONENT` to enable to\n// overwrite the viusal result of component (like `visualMap`)\n// using data item specific setting (like itemStyle.xxx on data item)\n\nvar PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500; // Greater than `PRIORITY_VISUAL_CHART_DATA_CUSTOM` to enable to layout based on\n// visual result like `symbolSize`.\n\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600;\nvar PRIORITY_VISUAL_BRUSH = 5000;\nvar PRIORITY_VISUAL_ARIA = 6000;\nvar PRIORITY_VISUAL_DECAL = 7000;\nexport var 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 CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM,\n ARIA: PRIORITY_VISUAL_ARIA,\n DECAL: PRIORITY_VISUAL_DECAL\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_KEY = '__flagInMainProcess';\nvar PENDING_UPDATE = '__pendingUpdate';\nvar STATUS_NEEDS_UPDATE_KEY = '__needsUpdateStatus';\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\nvar CONNECT_STATUS_KEY = '__connectUpdateStatus';\nvar CONNECT_STATUS_PENDING = 0;\nvar CONNECT_STATUS_UPDATING = 1;\nvar CONNECT_STATUS_UPDATED = 2;\n;\n;\n\nfunction createRegisterEventWithLowercaseECharts(method) {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (this.isDisposed()) {\n disposedWarning(this.id);\n return;\n }\n\n return toLowercaseNameAndCallEventful(this, method, args);\n };\n}\n\nfunction createRegisterEventWithLowercaseMessageCenter(method) {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return toLowercaseNameAndCallEventful(this, method, args);\n };\n}\n\nfunction toLowercaseNameAndCallEventful(host, method, args) {\n // `args[0]` is event name. Event name is all lowercase.\n args[0] = args[0] && args[0].toLowerCase();\n return Eventful.prototype[method].apply(host, args);\n}\n\nvar MessageCenter =\n/** @class */\nfunction (_super) {\n __extends(MessageCenter, _super);\n\n function MessageCenter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return MessageCenter;\n}(Eventful);\n\nvar messageCenterProto = MessageCenter.prototype;\nmessageCenterProto.on = createRegisterEventWithLowercaseMessageCenter('on');\nmessageCenterProto.off = createRegisterEventWithLowercaseMessageCenter('off'); // ---------------------------------------\n// Internal method names for class ECharts\n// ---------------------------------------\n\nvar prepare;\nvar prepareView;\nvar updateDirectly;\nvar updateMethods;\nvar doConvertPixel;\nvar updateStreamModes;\nvar doDispatchAction;\nvar flushPendingActions;\nvar triggerUpdatedEvent;\nvar bindRenderedEvent;\nvar bindMouseEvent;\nvar render;\nvar renderComponents;\nvar renderSeries;\nvar createExtensionAPI;\nvar enableConnect;\nvar markStatusToUpdate;\nvar applyChangedStates;\n\nvar ECharts =\n/** @class */\nfunction (_super) {\n __extends(ECharts, _super);\n\n function ECharts(dom, // Theme name or themeOption.\n theme, opts) {\n var _this = _super.call(this, new ECEventProcessor()) || this;\n\n _this._chartsViews = [];\n _this._chartsMap = {};\n _this._componentsViews = [];\n _this._componentsMap = {}; // Can't dispatch action during rendering procedure\n\n _this._pendingActions = [];\n opts = opts || {}; // Get theme by name\n\n if (isString(theme)) {\n theme = themeStorage[theme];\n }\n\n _this._dom = dom;\n var defaultRenderer = 'canvas';\n var defaultCoarsePointer = 'auto';\n var defaultUseDirtyRect = false;\n\n if (process.env.NODE_ENV !== 'production') {\n var root =\n /* eslint-disable-next-line */\n env.hasGlobalWindow ? window : global;\n defaultRenderer = root.__ECHARTS__DEFAULT__RENDERER__ || defaultRenderer;\n defaultCoarsePointer = retrieve2(root.__ECHARTS__DEFAULT__COARSE_POINTER, defaultCoarsePointer);\n var devUseDirtyRect = root.__ECHARTS__DEFAULT__USE_DIRTY_RECT__;\n defaultUseDirtyRect = devUseDirtyRect == null ? defaultUseDirtyRect : devUseDirtyRect;\n }\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 ssr: opts.ssr,\n useDirtyRect: retrieve2(opts.useDirtyRect, defaultUseDirtyRect),\n useCoarsePointer: retrieve2(opts.useCoarsePointer, defaultCoarsePointer),\n pointerSize: opts.pointerSize\n });\n _this._ssr = opts.ssr; // Expect 60 fps.\n\n _this._throttledZrFlush = throttle(bind(zr.flush, zr), 17);\n theme = clone(theme);\n theme && backwardCompat(theme, true);\n _this._theme = theme;\n _this._locale = createLocaleObject(opts.locale || SYSTEM_LANG);\n _this._coordSysMgr = new CoordinateSystemManager();\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 _this._scheduler = new Scheduler(_this, api, dataProcessorFuncs, visualFuncs);\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 = bind(_this.resize, _this);\n zr.animation.on('frame', _this._onframe, _this);\n bindRenderedEvent(zr, _this);\n bindMouseEvent(zr, _this); // ECharts instance can be used as value.\n\n setAsPrimitive(_this);\n return _this;\n }\n\n ECharts.prototype._onframe = function () {\n if (this._disposed) {\n return;\n }\n\n applyChangedStates(this);\n var scheduler = this._scheduler; // Lazy update\n\n if (this[PENDING_UPDATE]) {\n var silent = this[PENDING_UPDATE].silent;\n this[IN_MAIN_PROCESS_KEY] = true;\n\n try {\n prepare(this);\n updateMethods.update.call(this, null, this[PENDING_UPDATE].updateParams);\n } catch (e) {\n this[IN_MAIN_PROCESS_KEY] = false;\n this[PENDING_UPDATE] = null;\n throw e;\n } // At present, in each frame, zrender performs:\n // (1) animation step forward.\n // (2) trigger('frame') (where this `_onframe` is called)\n // (3) zrender flush (render).\n // If we do nothing here, since we use `setToFinal: true`, the step (3) above\n // will render the final state of the elements before the real animation started.\n\n\n this._zr.flush();\n\n this[IN_MAIN_PROCESS_KEY] = false;\n this[PENDING_UPDATE] = null;\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 determined in the first frame (the\n // frame is executed immediately 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 ECharts.prototype.getDom = function () {\n return this._dom;\n };\n\n ECharts.prototype.getId = function () {\n return this.id;\n };\n\n ECharts.prototype.getZr = function () {\n return this._zr;\n };\n\n ECharts.prototype.isSSR = function () {\n return this._ssr;\n };\n /* eslint-disable-next-line */\n\n\n ECharts.prototype.setOption = function (option, notMerge, lazyUpdate) {\n if (this[IN_MAIN_PROCESS_KEY]) {\n if (process.env.NODE_ENV !== 'production') {\n error('`setOption` should not be called during main process.');\n }\n\n return;\n }\n\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var silent;\n var replaceMerge;\n var transitionOpt;\n\n if (isObject(notMerge)) {\n lazyUpdate = notMerge.lazyUpdate;\n silent = notMerge.silent;\n replaceMerge = notMerge.replaceMerge;\n transitionOpt = notMerge.transition;\n notMerge = notMerge.notMerge;\n }\n\n this[IN_MAIN_PROCESS_KEY] = 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.ssr = this._ssr;\n ecModel.init(null, null, null, theme, this._locale, optionManager);\n }\n\n this._model.setOption(option, {\n replaceMerge: replaceMerge\n }, optionPreprocessorFuncs);\n\n var updateParams = {\n seriesTransition: transitionOpt,\n optionChanged: true\n };\n\n if (lazyUpdate) {\n this[PENDING_UPDATE] = {\n silent: silent,\n updateParams: updateParams\n };\n this[IN_MAIN_PROCESS_KEY] = false; // `setOption(option, {lazyMode: true})` may be called when zrender has been slept.\n // It should wake it up to make sure zrender start to render at the next frame.\n\n this.getZr().wakeUp();\n } else {\n try {\n prepare(this);\n updateMethods.update.call(this, null, updateParams);\n } catch (e) {\n this[PENDING_UPDATE] = null;\n this[IN_MAIN_PROCESS_KEY] = false;\n throw e;\n } // Ensure zr refresh sychronously, and then pixel in canvas can be\n // fetched after `setOption`.\n\n\n if (!this._ssr) {\n // not use flush when using ssr mode.\n this._zr.flush();\n }\n\n this[PENDING_UPDATE] = null;\n this[IN_MAIN_PROCESS_KEY] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n }\n };\n /**\n * @deprecated\n */\n\n\n ECharts.prototype.setTheme = function () {\n deprecateLog('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\n }; // We don't want developers to use getModel directly.\n\n\n ECharts.prototype.getModel = function () {\n return this._model;\n };\n\n ECharts.prototype.getOption = function () {\n return this._model && this._model.getOption();\n };\n\n ECharts.prototype.getWidth = function () {\n return this._zr.getWidth();\n };\n\n ECharts.prototype.getHeight = function () {\n return this._zr.getHeight();\n };\n\n ECharts.prototype.getDevicePixelRatio = function () {\n return this._zr.painter.dpr\n /* eslint-disable-next-line */\n || env.hasGlobalWindow && window.devicePixelRatio || 1;\n };\n /**\n * Get canvas which has all thing rendered\n * @deprecated Use renderToCanvas instead.\n */\n\n\n ECharts.prototype.getRenderedCanvas = function (opts) {\n if (process.env.NODE_ENV !== 'production') {\n deprecateReplaceLog('getRenderedCanvas', 'renderToCanvas');\n }\n\n return this.renderToCanvas(opts);\n };\n\n ECharts.prototype.renderToCanvas = function (opts) {\n opts = opts || {};\n var painter = this._zr.painter;\n\n if (process.env.NODE_ENV !== 'production') {\n if (painter.type !== 'canvas') {\n throw new Error('renderToCanvas can only be used in the canvas renderer.');\n }\n }\n\n return painter.getRenderedCanvas({\n backgroundColor: opts.backgroundColor || this._model.get('backgroundColor'),\n pixelRatio: opts.pixelRatio || this.getDevicePixelRatio()\n });\n };\n\n ECharts.prototype.renderToSVGString = function (opts) {\n opts = opts || {};\n var painter = this._zr.painter;\n\n if (process.env.NODE_ENV !== 'production') {\n if (painter.type !== 'svg') {\n throw new Error('renderToSVGString can only be used in the svg renderer.');\n }\n }\n\n return painter.renderToString({\n useViewBox: opts.useViewBox\n });\n };\n /**\n * Get svg data url\n */\n\n\n ECharts.prototype.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 each(list, function (el) {\n el.stopAnimation(null, true);\n });\n return zr.painter.toDataURL();\n };\n\n ECharts.prototype.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.renderToCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\n each(excludesComponentViews, function (view) {\n view.group.ignore = false;\n });\n return url;\n };\n\n ECharts.prototype.getConnectedDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\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_1 = MAX_NUMBER;\n var top_1 = MAX_NUMBER;\n var right_1 = -MAX_NUMBER;\n var bottom_1 = -MAX_NUMBER;\n var canvasList_1 = [];\n var dpr_1 = opts && opts.pixelRatio || this.getDevicePixelRatio();\n each(instances, function (chart, id) {\n if (chart.group === groupId) {\n var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.renderToCanvas(clone(opts));\n var boundingRect = chart.getDom().getBoundingClientRect();\n left_1 = mathMin(boundingRect.left, left_1);\n top_1 = mathMin(boundingRect.top, top_1);\n right_1 = mathMax(boundingRect.right, right_1);\n bottom_1 = mathMax(boundingRect.bottom, bottom_1);\n canvasList_1.push({\n dom: canvas,\n left: boundingRect.left,\n top: boundingRect.top\n });\n }\n });\n left_1 *= dpr_1;\n top_1 *= dpr_1;\n right_1 *= dpr_1;\n bottom_1 *= dpr_1;\n var width = right_1 - left_1;\n var height = bottom_1 - top_1;\n var targetCanvas = platformApi.createCanvas();\n var zr_1 = zrender.init(targetCanvas, {\n renderer: isSvg ? 'svg' : 'canvas'\n });\n zr_1.resize({\n width: width,\n height: height\n });\n\n if (isSvg) {\n var content_1 = '';\n each(canvasList_1, function (item) {\n var x = item.left - left_1;\n var y = item.top - top_1;\n content_1 += '' + item.dom + '';\n });\n zr_1.painter.getSvgRoot().innerHTML = content_1;\n\n if (opts.connectedBackgroundColor) {\n zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor);\n }\n\n zr_1.refreshImmediately();\n return zr_1.painter.toDataURL();\n } else {\n // Background between the charts\n if (opts.connectedBackgroundColor) {\n zr_1.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_1, function (item) {\n var img = new graphic.Image({\n style: {\n x: item.left * dpr_1 - left_1,\n y: item.top * dpr_1 - top_1,\n image: item.dom\n }\n });\n zr_1.add(img);\n });\n zr_1.refreshImmediately();\n return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\n }\n } else {\n return this.getDataURL(opts);\n }\n };\n\n ECharts.prototype.convertToPixel = function (finder, value) {\n return doConvertPixel(this, 'convertToPixel', finder, value);\n };\n\n ECharts.prototype.convertFromPixel = function (finder, value) {\n return doConvertPixel(this, 'convertFromPixel', finder, value);\n };\n /**\n * Is the specified coordinate systems or components contain the given pixel point.\n * @param {Array|number} value\n * @return {boolean} result\n */\n\n\n ECharts.prototype.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 var findResult = modelUtil.parseFinder(ecModel, finder);\n each(findResult, function (models, key) {\n key.indexOf('Models') >= 0 && each(models, function (model) {\n var coordSys = model.coordinateSystem;\n\n if (coordSys && coordSys.containPoint) {\n result = result || !!coordSys.containPoint(value);\n } else if (key === 'seriesModels') {\n var view = this._chartsMap[model.__viewId];\n\n if (view && view.containPoint) {\n result = result || view.containPoint(value, model);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(key + ': ' + (view ? 'The found component do not support containPoint.' : 'No view mapping to the found component.'));\n }\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(key + ': containPoint is not supported');\n }\n }\n }, this);\n }, this);\n return !!result;\n };\n /**\n * Get visual from series or data.\n * @param 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 visualType 'color', 'symbol', 'symbolSize'\n */\n\n\n ECharts.prototype.getVisual = function (finder, visualType) {\n var ecModel = this._model;\n var parsedFinder = modelUtil.parseFinder(ecModel, finder, {\n defaultMainType: 'series'\n });\n var seriesModel = parsedFinder.seriesModel;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!seriesModel) {\n warn('There is no specified series model');\n }\n }\n\n var data = seriesModel.getData();\n var dataIndexInside = parsedFinder.hasOwnProperty('dataIndexInside') ? parsedFinder.dataIndexInside : parsedFinder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(parsedFinder.dataIndex) : null;\n return dataIndexInside != null ? getItemVisualFromData(data, dataIndexInside, visualType) : getVisualFromData(data, visualType);\n };\n /**\n * Get view of corresponding component model\n */\n\n\n ECharts.prototype.getViewOfComponentModel = function (componentModel) {\n return this._componentsMap[componentModel.__viewId];\n };\n /**\n * Get view of corresponding series model\n */\n\n\n ECharts.prototype.getViewOfSeriesModel = function (seriesModel) {\n return this._chartsMap[seriesModel.__viewId];\n };\n\n ECharts.prototype._initEvents = function () {\n var _this = this;\n\n each(MOUSE_EVENT_NAMES, function (eveName) {\n var handler = function handler(e) {\n var ecModel = _this.getModel();\n\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 {\n el && findEventDispatcher(el, function (parent) {\n var ecData = getECData(parent);\n\n if (ecData && ecData.dataIndex != null) {\n var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex);\n params = dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType) || {};\n return true;\n } // If element has custom eventData of components\n else if (ecData.eventData) {\n params = extend({}, ecData.eventData);\n return true;\n }\n }, true);\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\n if (process.env.NODE_ENV !== 'production') {\n // `event.componentType` and `event[componentTpype + 'Index']` must not\n // be missed, otherwise there is no way to distinguish source component.\n // See `dataFormat.getDataParams`.\n if (!isGlobalOut && !(model && view)) {\n warn('model or view can not be found by params');\n }\n }\n\n params.event = e;\n params.type = eveName;\n _this._$eventProcessor.eventInfo = {\n targetEl: el,\n packedEvent: params,\n model: model,\n view: view\n };\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 });\n each(eventActionMap, function (actionType, eventType) {\n _this._messageCenter.on(eventType, function (event) {\n this.trigger(eventType, event);\n }, _this);\n }); // Extra events\n // TODO register?\n\n each(['selectchanged'], function (eventType) {\n _this._messageCenter.on(eventType, function (event) {\n this.trigger(eventType, event);\n }, _this);\n });\n handleLegacySelectEvents(this._messageCenter, this, this._api);\n };\n\n ECharts.prototype.isDisposed = function () {\n return this._disposed;\n };\n\n ECharts.prototype.clear = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this.setOption({\n series: []\n }, true);\n };\n\n ECharts.prototype.dispose = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._disposed = true;\n var dom = this.getDom();\n\n if (dom) {\n modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\n }\n\n var chart = this;\n var api = chart._api;\n var ecModel = chart._model;\n each(chart._componentsViews, function (component) {\n component.dispose(ecModel, api);\n });\n each(chart._chartsViews, function (chart) {\n chart.dispose(ecModel, api);\n }); // Dispose after all views disposed\n\n chart._zr.dispose(); // Set properties to null.\n // To reduce the memory cost in case the top code still holds this instance unexpectedly.\n\n\n chart._dom = chart._model = chart._chartsMap = chart._componentsMap = chart._chartsViews = chart._componentsViews = chart._scheduler = chart._api = chart._zr = chart._throttledZrFlush = chart._theme = chart._coordSysMgr = chart._messageCenter = null;\n delete instances[chart.id];\n };\n /**\n * Resize the chart\n */\n\n\n ECharts.prototype.resize = function (opts) {\n if (this[IN_MAIN_PROCESS_KEY]) {\n if (process.env.NODE_ENV !== 'production') {\n error('`resize` should not be called during main process.');\n }\n\n return;\n }\n\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 needPrepare = ecModel.resetOption('media');\n var silent = opts && opts.silent; // There is some real cases that:\n // chart.setOption(option, { lazyUpdate: true });\n // chart.resize();\n\n if (this[PENDING_UPDATE]) {\n if (silent == null) {\n silent = this[PENDING_UPDATE].silent;\n }\n\n needPrepare = true;\n this[PENDING_UPDATE] = null;\n }\n\n this[IN_MAIN_PROCESS_KEY] = true;\n\n try {\n needPrepare && prepare(this);\n updateMethods.update.call(this, {\n type: 'resize',\n animation: extend({\n // Disable animation\n duration: 0\n }, opts && opts.animation)\n });\n } catch (e) {\n this[IN_MAIN_PROCESS_KEY] = false;\n throw e;\n }\n\n this[IN_MAIN_PROCESS_KEY] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n };\n\n ECharts.prototype.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 if (process.env.NODE_ENV !== 'production') {\n warn('Loading effects ' + name + ' not exists.');\n }\n\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\n ECharts.prototype.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 ECharts.prototype.makeActionFromEvent = function (eventObj) {\n var payload = extend({}, eventObj);\n payload.type = eventActionMap[eventObj.type];\n return payload;\n };\n /**\n * @param opt If pass boolean, means opt.silent\n * @param opt.silent Default `false`. Whether trigger events.\n * @param opt.flush Default `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\n ECharts.prototype.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_KEY]) {\n this._pendingActions.push(payload);\n\n return;\n }\n\n var silent = opt.silent;\n doDispatchAction.call(this, payload, silent);\n var flush = opt.flush;\n\n if (flush) {\n this._zr.flush();\n } else if (flush !== false && env.browser.weChat) {\n // In WeChat embedded browser, `requestAnimationFrame` and `setInterval`\n // hang when sliding page (on touch event), which cause that zr does not\n // refresh until 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, silent);\n triggerUpdatedEvent.call(this, silent);\n };\n\n ECharts.prototype.updateLabelLayout = function () {\n lifecycle.trigger('series:layoutlabels', this._model, this._api, {\n // Not adding series labels.\n // TODO\n updatedSeries: []\n });\n };\n\n ECharts.prototype.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\n if (process.env.NODE_ENV !== 'production') {\n assert(params.data && seriesModel);\n }\n\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 this.getZr().wakeUp();\n }; // A work around for no `internal` modifier in ts yet but\n // need to strictly hide private methods to JS users.\n\n\n ECharts.internalField = function () {\n prepare = function prepare(ecIns) {\n var scheduler = ecIns._scheduler;\n scheduler.restorePipelines(ecIns._model);\n scheduler.prepareStageTasks();\n prepareView(ecIns, true);\n prepareView(ecIns, false);\n scheduler.plan();\n };\n /**\n * Prepare view instances of charts and components\n */\n\n\n prepareView = function prepareView(ecIns, isComponent) {\n var ecModel = ecIns._model;\n var scheduler = ecIns._scheduler;\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 // By default view will be reused if possible for the case that `setOption` with \"notMerge\"\n // mode and need to enable transition animation. (Usually, when they have the same id, or\n // especially no id but have the same type & name & index. See the `model.id` generation\n // rule in `makeIdAndName` and `viewId` generation rule here).\n // But in `replaceMerge` mode, this feature should be able to disabled when it is clear that\n // the new model has nothing to do with the old model.\n var requireNewView = model.__requireNewView; // This command should not work twice.\n\n model.__requireNewView = false; // Consider: id same and type changed.\n\n var viewId = '_ec_' + model.id + '_' + model.type;\n var view = !requireNewView && viewMap[viewId];\n\n if (!view) {\n var classType = parseClassType(model.type);\n var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : // FIXME:TS\n // (ChartView as ChartViewConstructor).getClass('series', classType.sub)\n // For backward compat, still support a chart type declared as only subType\n // like \"liquidfill\", but recommend \"series.liquidfill\"\n // But need a base class to make a type series.\n ChartView.getClass(classType.sub);\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Clazz, classType.sub + ' does not exist.');\n }\n\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\n if (viewMap[view.__id] === view) {\n delete viewMap[view.__id];\n }\n\n view.__id = view.group.__ecComponentInfo = null;\n } else {\n i++;\n }\n }\n };\n\n updateDirectly = function updateDirectly(ecIns, method, payload, mainType, subType) {\n var ecModel = ecIns._model;\n ecModel.setUpdatePayload(payload); // 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([].concat(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 var excludeSeriesIdMap;\n\n if (excludeSeriesId != null) {\n excludeSeriesIdMap = createHashMap();\n each(modelUtil.normalizeToArray(excludeSeriesId), function (id) {\n var modelId = modelUtil.convertOptionIdName(id, null);\n\n if (modelId != null) {\n excludeSeriesIdMap.set(modelId, true);\n }\n });\n } // If dispatchAction before setOption, do nothing.\n\n\n ecModel && ecModel.eachComponent(condition, function (model) {\n var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null;\n\n if (isExcluded) {\n return;\n }\n\n ;\n\n if (isHighDownPayload(payload)) {\n if (model instanceof SeriesModel) {\n if (payload.type === HIGHLIGHT_ACTION_TYPE && !payload.notBlur && !model.get(['emphasis', 'disabled'])) {\n blurSeriesFromHighlightPayload(model, payload, ecIns._api);\n }\n } else {\n var _a = findComponentHighDownDispatchers(model.mainType, model.componentIndex, payload.name, ecIns._api),\n focusSelf = _a.focusSelf,\n dispatchers = _a.dispatchers;\n\n if (payload.type === HIGHLIGHT_ACTION_TYPE && focusSelf && !payload.notBlur) {\n blurComponent(model.mainType, model.componentIndex, ecIns._api);\n } // PENDING:\n // Whether to put this \"enter emphasis\" code in `ComponentView`,\n // which will be the same as `ChartView` but might be not necessary\n // and will be far from this logic.\n\n\n if (dispatchers) {\n each(dispatchers, function (dispatcher) {\n payload.type === HIGHLIGHT_ACTION_TYPE ? enterEmphasis(dispatcher) : leaveEmphasis(dispatcher);\n });\n }\n }\n } else if (isSelectChangePayload(payload)) {\n // TODO geo\n if (model instanceof SeriesModel) {\n toggleSelectionFromPayload(model, payload, ecIns._api);\n updateSeriesElementSelection(model);\n markStatusToUpdate(ecIns);\n }\n }\n }, ecIns);\n ecModel && ecModel.eachComponent(condition, function (model) {\n var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null;\n\n if (isExcluded) {\n return;\n }\n\n ;\n callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\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 updateMethods = {\n prepareAndUpdate: function prepareAndUpdate(payload) {\n prepare(this);\n updateMethods.update.call(this, payload, {\n // Needs to mark option changed if newOption is given.\n // It's from MagicType.\n // TODO If use a separate flag optionChanged in payload?\n optionChanged: payload.newOption != null\n });\n },\n update: function update(payload, updateParams) {\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 ecModel.setUpdatePayload(payload);\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 original 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 // determine whether to 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 required 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, updateParams); // Set background\n\n var backgroundColor = ecModel.get('backgroundColor') || 'transparent';\n var darkMode = ecModel.get('darkMode');\n zr.setBackgroundColor(backgroundColor); // Force set dark mode.\n\n if (darkMode != null && darkMode !== 'auto') {\n zr.setDarkMode(darkMode);\n }\n\n lifecycle.trigger('afterupdate', ecModel, api);\n },\n updateTransform: function updateTransform(payload) {\n var _this = this;\n\n var ecModel = this._model;\n var api = this._api; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ecModel.setUpdatePayload(payload); // ChartView.markUpdateMethod(payload, 'updateTransform');\n\n var componentDirtyList = [];\n ecModel.eachComponent(function (componentType, componentModel) {\n if (componentType === 'series') {\n return;\n }\n\n var componentView = _this.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 = createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var chartView = _this._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(this, ecModel, api, payload, {}, seriesDirtyMap);\n lifecycle.trigger('afterupdate', ecModel, api);\n },\n updateView: function updateView(payload) {\n var ecModel = this._model; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ecModel.setUpdatePayload(payload);\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, ecModel, this._api, payload, {});\n lifecycle.trigger('afterupdate', ecModel, this._api);\n },\n updateVisual: function updateVisual(payload) {\n // updateMethods.update.call(this, payload);\n var _this = this;\n\n var ecModel = this._model; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ecModel.setUpdatePayload(payload); // clear all visual\n\n ecModel.eachSeries(function (seriesModel) {\n seriesModel.getData().clearAllVisual();\n }); // Perform visual\n\n ChartView.markUpdateMethod(payload, 'updateVisual');\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 visualType: 'visual',\n setDirty: true\n });\n\n ecModel.eachComponent(function (componentType, componentModel) {\n if (componentType !== 'series') {\n var componentView = _this.getViewOfComponentModel(componentModel);\n\n componentView && componentView.__alive && componentView.updateVisual(componentModel, ecModel, _this._api, payload);\n }\n });\n ecModel.eachSeries(function (seriesModel) {\n var chartView = _this._chartsMap[seriesModel.__viewId];\n chartView.updateVisual(seriesModel, ecModel, _this._api, payload);\n });\n lifecycle.trigger('afterupdate', ecModel, this._api);\n },\n updateLayout: function updateLayout(payload) {\n updateMethods.update.call(this, payload);\n }\n };\n\n doConvertPixel = function doConvertPixel(ecIns, methodName, finder, value) {\n if (ecIns._disposed) {\n disposedWarning(ecIns.id);\n return;\n }\n\n var ecModel = ecIns._model;\n\n var coordSysList = ecIns._coordSysMgr.getCoordinateSystems();\n\n var result;\n var parsedFinder = 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, parsedFinder, value)) != null) {\n return result;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n warn('No coordinate system that supports ' + methodName + ' found by the given finder.');\n }\n };\n\n updateStreamModes = function 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 doDispatchAction = function doDispatchAction(payload, silent) {\n var _this = this;\n\n var ecModel = this.getModel();\n var payloadType = payload.type;\n var escapeConnect = payload.escapeConnect;\n var actionWrap = actions[payloadType];\n var actionInfo = actionWrap.actionInfo;\n var cptTypeTmp = (actionInfo.update || 'update').split(':');\n var updateMethod = cptTypeTmp.pop();\n var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]);\n this[IN_MAIN_PROCESS_KEY] = true;\n var payloads = [payload];\n var batched = false; // Batch action\n\n if (payload.batch) {\n batched = true;\n payloads = map(payload.batch, function (item) {\n item = defaults(extend({}, item), payload);\n item.batch = null;\n return item;\n });\n }\n\n var eventObjBatch = [];\n var eventObj;\n var isSelectChange = isSelectChangePayload(payload);\n var isHighDown = isHighDownPayload(payload); // Only leave blur once if there are multiple batches.\n\n if (isHighDown) {\n allLeaveBlur(this._api);\n }\n\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 || 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 var _a = modelUtil.preParseFinder(payload),\n queryOptionMap = _a.queryOptionMap,\n mainTypeSpecified = _a.mainTypeSpecified;\n\n var componentMainType = mainTypeSpecified ? queryOptionMap.keys()[0] : 'series';\n updateDirectly(_this, updateMethod, batchItem, componentMainType);\n markStatusToUpdate(_this);\n } else if (isSelectChange) {\n // At present `dispatchAction({ type: 'select', ... })` is not supported on components.\n // geo still use 'geoselect'.\n updateDirectly(_this, updateMethod, batchItem, 'series');\n markStatusToUpdate(_this);\n } else if (cptType) {\n updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub);\n }\n });\n\n if (updateMethod !== 'none' && !isHighDown && !isSelectChange && !cptType) {\n try {\n // Still dirty\n if (this[PENDING_UPDATE]) {\n prepare(this);\n updateMethods.update.call(this, payload);\n this[PENDING_UPDATE] = null;\n } else {\n updateMethods[updateMethod].call(this, payload);\n }\n } catch (e) {\n this[IN_MAIN_PROCESS_KEY] = false;\n throw e;\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_KEY] = false;\n\n if (!silent) {\n var messageCenter = this._messageCenter;\n messageCenter.trigger(eventObj.type, eventObj); // Extra triggered 'selectchanged' event\n\n if (isSelectChange) {\n var newObj = {\n type: 'selectchanged',\n escapeConnect: escapeConnect,\n selected: getAllSelectedIndices(ecModel),\n isFromClick: payload.isFromClick || false,\n fromAction: payload.type,\n fromActionPayload: payload\n };\n messageCenter.trigger(newObj.type, newObj);\n }\n }\n };\n\n flushPendingActions = function 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\n triggerUpdatedEvent = function 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\n bindRenderedEvent = function bindRenderedEvent(zr, ecIns) {\n zr.on('rendered', function (params) {\n ecIns.trigger('rendered', params); // The `finished` event should not be triggered repeatedly,\n // so it should only be triggered when rendering indeed happens\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[PENDING_UPDATE] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) {\n ecIns.trigger('finished');\n }\n });\n };\n\n bindMouseEvent = function bindMouseEvent(zr, ecIns) {\n zr.on('mouseover', function (e) {\n var el = e.target;\n var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\n\n if (dispatcher) {\n handleGlobalMouseOverForHighDown(dispatcher, e, ecIns._api);\n markStatusToUpdate(ecIns);\n }\n }).on('mouseout', function (e) {\n var el = e.target;\n var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\n\n if (dispatcher) {\n handleGlobalMouseOutForHighDown(dispatcher, e, ecIns._api);\n markStatusToUpdate(ecIns);\n }\n }).on('click', function (e) {\n var el = e.target;\n var dispatcher = findEventDispatcher(el, function (target) {\n return getECData(target).dataIndex != null;\n }, true);\n\n if (dispatcher) {\n var actionType = dispatcher.selected ? 'unselect' : 'select';\n var ecData = getECData(dispatcher);\n\n ecIns._api.dispatchAction({\n type: actionType,\n dataType: ecData.dataType,\n dataIndexInside: ecData.dataIndex,\n seriesIndex: ecData.seriesIndex,\n isFromClick: true\n });\n }\n });\n };\n\n function clearColorPalette(ecModel) {\n ecModel.clearColorPalette();\n ecModel.eachSeries(function (seriesModel) {\n seriesModel.clearColorPalette();\n });\n }\n\n ; // Allocate zlevels for series and components\n\n function allocateZlevels(ecModel) {\n ;\n var componentZLevels = [];\n var seriesZLevels = [];\n var hasSeperateZLevel = false;\n ecModel.eachComponent(function (componentType, componentModel) {\n var zlevel = componentModel.get('zlevel') || 0;\n var z = componentModel.get('z') || 0;\n var zlevelKey = componentModel.getZLevelKey();\n hasSeperateZLevel = hasSeperateZLevel || !!zlevelKey;\n (componentType === 'series' ? seriesZLevels : componentZLevels).push({\n zlevel: zlevel,\n z: z,\n idx: componentModel.componentIndex,\n type: componentType,\n key: zlevelKey\n });\n });\n\n if (hasSeperateZLevel) {\n // Series after component\n var zLevels = componentZLevels.concat(seriesZLevels);\n var lastSeriesZLevel_1;\n var lastSeriesKey_1;\n timsort(zLevels, function (a, b) {\n if (a.zlevel === b.zlevel) {\n return a.z - b.z;\n }\n\n return a.zlevel - b.zlevel;\n });\n each(zLevels, function (item) {\n var componentModel = ecModel.getComponent(item.type, item.idx);\n var zlevel = item.zlevel;\n var key = item.key;\n\n if (lastSeriesZLevel_1 != null) {\n zlevel = Math.max(lastSeriesZLevel_1, zlevel);\n }\n\n if (key) {\n if (zlevel === lastSeriesZLevel_1 && key !== lastSeriesKey_1) {\n zlevel++;\n }\n\n lastSeriesKey_1 = key;\n } else if (lastSeriesKey_1) {\n if (zlevel === lastSeriesZLevel_1) {\n zlevel++;\n }\n\n lastSeriesKey_1 = '';\n }\n\n lastSeriesZLevel_1 = zlevel;\n componentModel.setZLevel(zlevel);\n });\n }\n }\n\n render = function render(ecIns, ecModel, api, payload, updateParams) {\n allocateZlevels(ecModel);\n renderComponents(ecIns, ecModel, api, payload, updateParams);\n each(ecIns._chartsViews, function (chart) {\n chart.__alive = false;\n });\n renderSeries(ecIns, ecModel, api, payload, updateParams); // 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\n renderComponents = function renderComponents(ecIns, ecModel, api, payload, updateParams, dirtyList) {\n each(dirtyList || ecIns._componentsViews, function (componentView) {\n var componentModel = componentView.__model;\n clearStates(componentModel, componentView);\n componentView.render(componentModel, ecModel, api, payload);\n updateZ(componentModel, componentView);\n updateStates(componentModel, componentView);\n });\n };\n /**\n * Render each chart and component\n */\n\n\n renderSeries = function renderSeries(ecIns, ecModel, api, payload, updateParams, dirtyMap) {\n // Render all charts\n var scheduler = ecIns._scheduler;\n updateParams = extend(updateParams || {}, {\n updatedSeries: ecModel.getSeries()\n }); // TODO progressive?\n\n lifecycle.trigger('series:beforeupdate', ecModel, api, updateParams);\n var unfinished = false;\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); // TODO states on marker.\n\n clearStates(seriesModel, chartView);\n\n if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\n renderTask.dirty();\n }\n\n if (renderTask.perform(scheduler.getPerformArgs(renderTask))) {\n unfinished = true;\n }\n\n chartView.group.silent = !!seriesModel.get('silent'); // Should not call markRedraw on group, because it will disable zrender\n // incremental render (always render from the __startIndex each frame)\n // chartView.group.markRedraw();\n\n updateBlend(seriesModel, chartView);\n updateSeriesElementSelection(seriesModel);\n });\n scheduler.unfinished = unfinished || scheduler.unfinished;\n lifecycle.trigger('series:layoutlabels', ecModel, api, updateParams); // transition after label is layouted.\n\n lifecycle.trigger('series:transition', ecModel, api, updateParams);\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId]; // Update Z after labels updated. Before applying states.\n\n updateZ(seriesModel, chartView); // NOTE: Update states after label is updated.\n // label should be in normal status when layouting.\n\n updateStates(seriesModel, chartView);\n }); // If use hover layer\n\n updateHoverLayerStatus(ecIns, ecModel);\n lifecycle.trigger('series:afterupdate', ecModel, api, updateParams);\n };\n\n markStatusToUpdate = function markStatusToUpdate(ecIns) {\n ecIns[STATUS_NEEDS_UPDATE_KEY] = true; // Wake up zrender if it's sleep. Let it update states in the next frame.\n\n ecIns.getZr().wakeUp();\n };\n\n applyChangedStates = function applyChangedStates(ecIns) {\n if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) {\n return;\n }\n\n ecIns.getZr().storage.traverse(function (el) {\n // Not applied on removed elements, it may still in fading.\n if (graphic.isElementRemoved(el)) {\n return;\n }\n\n applyElementStates(el);\n });\n ecIns[STATUS_NEEDS_UPDATE_KEY] = false;\n };\n\n function applyElementStates(el) {\n var newStates = [];\n var oldStates = el.currentStates; // Keep other states.\n\n for (var i = 0; i < oldStates.length; i++) {\n var stateName = oldStates[i];\n\n if (!(stateName === 'emphasis' || stateName === 'blur' || stateName === 'select')) {\n newStates.push(stateName);\n }\n } // Only use states when it's exists.\n\n\n if (el.selected && el.states.select) {\n newStates.push('select');\n }\n\n if (el.hoverState === HOVER_STATE_EMPHASIS && el.states.emphasis) {\n newStates.push('emphasis');\n } else if (el.hoverState === HOVER_STATE_BLUR && el.states.blur) {\n newStates.push('blur');\n }\n\n el.useStates(newStates);\n }\n\n function updateHoverLayerStatus(ecIns, ecModel) {\n var zr = ecIns._zr;\n var storage = zr.storage;\n var elCount = 0;\n storage.traverse(function (el) {\n if (!el.isGroup) {\n elCount++;\n }\n });\n\n if (elCount > ecModel.get('hoverLayerThreshold') && !env.node && !env.worker) {\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.eachRendered(function (el) {\n if (el.states.emphasis) {\n el.states.emphasis.hoverLayer = true;\n }\n });\n }\n });\n }\n }\n\n ;\n /**\n * Update chart and blend.\n */\n\n function updateBlend(seriesModel, chartView) {\n var blendMode = seriesModel.get('blendMode') || null;\n chartView.eachRendered(function (el) {\n // FIXME marker and other components\n if (!el.isGroup) {\n // DON'T mark the element dirty. In case element is incremental and don't want to rerender.\n el.style.blend = blendMode;\n }\n });\n }\n\n ;\n\n function updateZ(model, view) {\n if (model.preventAutoZ) {\n return;\n }\n\n var z = model.get('z') || 0;\n var zlevel = model.get('zlevel') || 0; // Set z and zlevel\n\n view.eachRendered(function (el) {\n doUpdateZ(el, z, zlevel, -Infinity); // Don't traverse the children because it has been traversed in _updateZ.\n\n return true;\n });\n }\n\n ;\n\n function doUpdateZ(el, z, zlevel, maxZ2) {\n // Group may also have textContent\n var label = el.getTextContent();\n var labelLine = el.getTextGuideLine();\n var isGroup = el.isGroup;\n\n if (isGroup) {\n // set z & zlevel of children elements of Group\n var children = el.childrenRef();\n\n for (var i = 0; i < children.length; i++) {\n maxZ2 = Math.max(doUpdateZ(children[i], z, zlevel, maxZ2), maxZ2);\n }\n } else {\n // not Group\n el.z = z;\n el.zlevel = zlevel;\n maxZ2 = Math.max(el.z2, maxZ2);\n } // always set z and zlevel if label/labelLine exists\n\n\n if (label) {\n label.z = z;\n label.zlevel = zlevel; // lift z2 of text content\n // TODO if el.emphasis.z2 is spcefied, what about textContent.\n\n isFinite(maxZ2) && (label.z2 = maxZ2 + 2);\n }\n\n if (labelLine) {\n var textGuideLineConfig = el.textGuideLineConfig;\n labelLine.z = z;\n labelLine.zlevel = zlevel;\n isFinite(maxZ2) && (labelLine.z2 = maxZ2 + (textGuideLineConfig && textGuideLineConfig.showAbove ? 1 : -1));\n }\n\n return maxZ2;\n } // Clear states without animation.\n // TODO States on component.\n\n\n function clearStates(model, view) {\n view.eachRendered(function (el) {\n // Not applied on removed elements, it may still in fading.\n if (graphic.isElementRemoved(el)) {\n return;\n }\n\n var textContent = el.getTextContent();\n var textGuide = el.getTextGuideLine();\n\n if (el.stateTransition) {\n el.stateTransition = null;\n }\n\n if (textContent && textContent.stateTransition) {\n textContent.stateTransition = null;\n }\n\n if (textGuide && textGuide.stateTransition) {\n textGuide.stateTransition = null;\n } // TODO If el is incremental.\n\n\n if (el.hasState()) {\n el.prevStates = el.currentStates;\n el.clearStates();\n } else if (el.prevStates) {\n el.prevStates = null;\n }\n });\n }\n\n function updateStates(model, view) {\n var stateAnimationModel = model.getModel('stateAnimation');\n var enableAnimation = model.isAnimationEnabled();\n var duration = stateAnimationModel.get('duration');\n var stateTransition = duration > 0 ? {\n duration: duration,\n delay: stateAnimationModel.get('delay'),\n easing: stateAnimationModel.get('easing') // additive: stateAnimationModel.get('additive')\n\n } : null;\n view.eachRendered(function (el) {\n if (el.states && el.states.emphasis) {\n // Not applied on removed elements, it may still in fading.\n if (graphic.isElementRemoved(el)) {\n return;\n }\n\n if (el instanceof graphic.Path) {\n savePathStates(el);\n } // Only updated on changed element. In case element is incremental and don't want to rerender.\n // TODO, a more proper way?\n\n\n if (el.__dirty) {\n var prevStates = el.prevStates; // Restore states without animation\n\n if (prevStates) {\n el.useStates(prevStates);\n }\n } // Update state transition and enable animation again.\n\n\n if (enableAnimation) {\n el.stateTransition = stateTransition;\n var textContent = el.getTextContent();\n var textGuide = el.getTextGuideLine(); // TODO Is it necessary to animate label?\n\n if (textContent) {\n textContent.stateTransition = stateTransition;\n }\n\n if (textGuide) {\n textGuide.stateTransition = stateTransition;\n }\n } // Use highlighted and selected flag to toggle states.\n\n\n if (el.__dirty) {\n applyElementStates(el);\n }\n }\n });\n }\n\n ;\n\n createExtensionAPI = function createExtensionAPI(ecIns) {\n return new (\n /** @class */\n function (_super) {\n __extends(class_1, _super);\n\n function class_1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n class_1.prototype.getCoordinateSystems = function () {\n return ecIns._coordSysMgr.getCoordinateSystems();\n };\n\n class_1.prototype.getComponentByElement = function (el) {\n while (el) {\n var modelInfo = el.__ecComponentInfo;\n\n if (modelInfo != null) {\n return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index);\n }\n\n el = el.parent;\n }\n };\n\n class_1.prototype.enterEmphasis = function (el, highlightDigit) {\n enterEmphasis(el, highlightDigit);\n markStatusToUpdate(ecIns);\n };\n\n class_1.prototype.leaveEmphasis = function (el, highlightDigit) {\n leaveEmphasis(el, highlightDigit);\n markStatusToUpdate(ecIns);\n };\n\n class_1.prototype.enterBlur = function (el) {\n enterBlur(el);\n markStatusToUpdate(ecIns);\n };\n\n class_1.prototype.leaveBlur = function (el) {\n leaveBlur(el);\n markStatusToUpdate(ecIns);\n };\n\n class_1.prototype.enterSelect = function (el) {\n enterSelect(el);\n markStatusToUpdate(ecIns);\n };\n\n class_1.prototype.leaveSelect = function (el) {\n leaveSelect(el);\n markStatusToUpdate(ecIns);\n };\n\n class_1.prototype.getModel = function () {\n return ecIns.getModel();\n };\n\n class_1.prototype.getViewOfComponentModel = function (componentModel) {\n return ecIns.getViewOfComponentModel(componentModel);\n };\n\n class_1.prototype.getViewOfSeriesModel = function (seriesModel) {\n return ecIns.getViewOfSeriesModel(seriesModel);\n };\n\n return class_1;\n }(ExtensionAPI))(ecIns);\n };\n\n enableConnect = function enableConnect(chart) {\n function updateConnectedChartsStatus(charts, status) {\n for (var i = 0; i < charts.length; i++) {\n var otherChart = charts[i];\n otherChart[CONNECT_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[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) {\n if (event && event.escapeConnect) {\n return;\n }\n\n var action_1 = chart.makeActionFromEvent(event);\n var otherCharts_1 = [];\n each(instances, function (otherChart) {\n if (otherChart !== chart && otherChart.group === chart.group) {\n otherCharts_1.push(otherChart);\n }\n });\n updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING);\n each(otherCharts_1, function (otherChart) {\n if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) {\n otherChart.dispatchAction(action_1);\n }\n });\n updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED);\n }\n });\n });\n };\n }();\n\n return ECharts;\n}(Eventful);\n\nvar echartsProto = ECharts.prototype;\nechartsProto.on = createRegisterEventWithLowercaseECharts('on');\nechartsProto.off = createRegisterEventWithLowercaseECharts('off');\n/**\n * @deprecated\n */\n// @ts-ignore\n\nechartsProto.one = function (eventName, cb, ctx) {\n var self = this;\n deprecateLog('ECharts#one is deprecated.');\n\n function wrapped() {\n var args2 = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args2[_i] = arguments[_i];\n }\n\n cb && cb.apply && cb.apply(this, args2); // @ts-ignore\n\n self.off(eventName, wrapped);\n }\n\n ; // @ts-ignore\n\n this.on.call(this, eventName, wrapped, ctx);\n};\n\nvar MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];\n\nfunction disposedWarning(id) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Instance ' + id + ' has been disposed');\n }\n}\n\nvar actions = {};\n/**\n * Map eventType to actionType\n */\n\nvar eventActionMap = {};\nvar dataProcessorFuncs = [];\nvar optionPreprocessorFuncs = [];\nvar visualFuncs = [];\nvar themeStorage = {};\nvar loadingEffects = {};\nvar instances = {};\nvar connectedGroups = {};\nvar idBase = +new Date() - 0;\nvar groupIdBase = +new Date() - 0;\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\n/**\n * @param opts.devicePixelRatio Use window.devicePixelRatio by default\n * @param opts.renderer Can choose 'canvas' or 'svg' to render the chart.\n * @param opts.width Use clientWidth of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n * @param opts.height Use clientHeight of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n * @param opts.locale Specify the locale.\n * @param opts.useDirtyRect Enable dirty rectangle rendering or not.\n */\n\nexport function init(dom, theme, opts) {\n var isClient = !(opts && opts.ssr);\n\n if (isClient) {\n if (process.env.NODE_ENV !== 'production') {\n if (!dom) {\n throw new Error('Initialize failed: invalid dom.');\n }\n }\n\n var existInstance = getInstanceByDom(dom);\n\n if (existInstance) {\n if (process.env.NODE_ENV !== 'production') {\n warn('There is a chart instance already initialized on the dom.');\n }\n\n return existInstance;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isDom(dom) && dom.nodeName.toUpperCase() !== 'CANVAS' && (!dom.clientWidth && (!opts || opts.width == null) || !dom.clientHeight && (!opts || opts.height == null))) {\n warn('Can\\'t get DOM width or height. Please check ' + 'dom.clientWidth and dom.clientHeight. They should not be 0.' + 'For example, you may need to call this in the callback ' + 'of window.onload.');\n }\n }\n }\n\n var chart = new ECharts(dom, theme, opts);\n chart.id = 'ec_' + idBase++;\n instances[chart.id] = chart;\n isClient && modelUtil.setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\n enableConnect(chart);\n lifecycle.trigger('afterinit', chart);\n return chart;\n}\n/**\n * @usage\n * (A)\n * ```js\n * let chart1 = echarts.init(dom1);\n * let chart2 = echarts.init(dom2);\n * chart1.group = 'xxx';\n * chart2.group = 'xxx';\n * echarts.connect('xxx');\n * ```\n * (B)\n * ```js\n * let chart1 = echarts.init(dom1);\n * let chart2 = echarts.init(dom2);\n * echarts.connect('xxx', [chart1, chart2]);\n * ```\n */\n\nexport function connect(groupId) {\n // Is array of charts\n if (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 */\n\nexport function disConnect(groupId) {\n connectedGroups[groupId] = false;\n}\n/**\n * Alias and backward compatibility\n */\n\nexport var disconnect = disConnect;\n/**\n * Dispose a chart instance\n */\n\nexport function dispose(chart) {\n if (isString(chart)) {\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}\nexport function getInstanceByDom(dom) {\n return instances[modelUtil.getAttribute(dom, DOM_ATTRIBUTE_KEY)];\n}\nexport function getInstanceById(key) {\n return instances[key];\n}\n/**\n * Register theme\n */\n\nexport function registerTheme(name, theme) {\n themeStorage[name] = theme;\n}\n/**\n * Register option preprocessor\n */\n\nexport function registerPreprocessor(preprocessorFunc) {\n if (indexOf(optionPreprocessorFuncs, preprocessorFunc) < 0) {\n optionPreprocessorFuncs.push(preprocessorFunc);\n }\n}\nexport function registerProcessor(priority, processor) {\n normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT);\n}\n/**\n * Register postIniter\n * @param {Function} postInitFunc\n */\n\nexport function registerPostInit(postInitFunc) {\n registerUpdateLifecycle('afterinit', postInitFunc);\n}\n/**\n * Register postUpdater\n * @param {Function} postUpdateFunc\n */\n\nexport function registerPostUpdate(postUpdateFunc) {\n registerUpdateLifecycle('afterupdate', postUpdateFunc);\n}\nexport function registerUpdateLifecycle(name, cb) {\n lifecycle.on(name, cb);\n}\nexport function registerAction(actionInfo, eventName, action) {\n if (isFunction(eventName)) {\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;\n\n if (eventActionMap[eventName]) {\n // Already registered.\n return;\n } // Validate action type and event name.\n\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}\nexport function registerCoordinateSystem(type, coordSysCreator) {\n CoordinateSystemManager.register(type, coordSysCreator);\n}\n/**\n * Get dimensions of specified coordinate system.\n * @param {string} type\n * @return {Array.}\n */\n\nexport function getCoordinateSystemDimensions(type) {\n var coordSysCreator = CoordinateSystemManager.get(type);\n\n if (coordSysCreator) {\n return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();\n }\n}\nexport { registerLocale } from './locale.js';\n\nfunction registerLayout(priority, layoutTask) {\n normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\n}\n\nfunction registerVisual(priority, visualTask) {\n normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\n}\n\nexport { registerLayout, registerVisual };\nvar registeredTasks = [];\n\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\n if (isFunction(priority) || isObject(priority)) {\n fn = priority;\n priority = defaultPriority;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isNaN(priority) || priority == null) {\n throw new Error('Illegal priority');\n } // Check duplicate\n\n\n each(targetList, function (wrap) {\n assert(wrap.__raw !== fn);\n });\n } // Already registered\n\n\n if (indexOf(registeredTasks, fn) >= 0) {\n return;\n }\n\n registeredTasks.push(fn);\n var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\n stageHandler.__prio = priority;\n stageHandler.__raw = fn;\n targetList.push(stageHandler);\n}\n\nexport function registerLoading(name, loadingFx) {\n loadingEffects[name] = loadingFx;\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 *\n * @deprecated use setPlatformAPI({ createCanvas }) instead.\n *\n * @example\n * let Canvas = require('canvas');\n * let echarts = require('echarts');\n * echarts.setCanvasCreator(function () {\n * // Small size is enough.\n * return new Canvas(32, 32);\n * });\n */\n\nexport function setCanvasCreator(creator) {\n if (process.env.NODE_ENV !== 'production') {\n deprecateLog('setCanvasCreator is deprecated. Use setPlatformAPI({ createCanvas }) instead.');\n }\n\n setPlatformAPI({\n createCanvas: creator\n });\n}\n/**\n * The parameters and usage: see `geoSourceManager.registerMap`.\n * Compatible with previous `echarts.registerMap`.\n */\n\nexport function registerMap(mapName, geoJson, specialAreas) {\n var registerMap = getImpl('registerMap');\n registerMap && registerMap(mapName, geoJson, specialAreas);\n}\nexport function getMap(mapName) {\n var getMap = getImpl('getMap');\n return getMap && getMap(mapName);\n}\nexport var registerTransform = registerExternalTransform;\n/**\n * Globa dispatchAction to a specified chart instance.\n */\n// export function dispatchAction(payload: { chartId: string } & Payload, opt?: Parameters[1]) {\n// if (!payload || !payload.chartId) {\n// // Must have chartId to find chart\n// return;\n// }\n// const chart = instances[payload.chartId];\n// if (chart) {\n// chart.dispatchAction(payload, opt);\n// }\n// }\n// Builtin global visual\n\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask);\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask);\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask);\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask);\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask);\nregisterVisual(PRIORITY_VISUAL_DECAL, decal);\nregisterPreprocessor(backwardCompat);\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\nregisterLoading('default', loadingDefault); // Default actions\n\nregisterAction({\n type: HIGHLIGHT_ACTION_TYPE,\n event: HIGHLIGHT_ACTION_TYPE,\n update: HIGHLIGHT_ACTION_TYPE\n}, noop);\nregisterAction({\n type: DOWNPLAY_ACTION_TYPE,\n event: DOWNPLAY_ACTION_TYPE,\n update: DOWNPLAY_ACTION_TYPE\n}, noop);\nregisterAction({\n type: SELECT_ACTION_TYPE,\n event: SELECT_ACTION_TYPE,\n update: SELECT_ACTION_TYPE\n}, noop);\nregisterAction({\n type: UNSELECT_ACTION_TYPE,\n event: UNSELECT_ACTION_TYPE,\n update: UNSELECT_ACTION_TYPE\n}, noop);\nregisterAction({\n type: TOGGLE_SELECT_ACTION_TYPE,\n event: TOGGLE_SELECT_ACTION_TYPE,\n update: TOGGLE_SELECT_ACTION_TYPE\n}, 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\nexport var dataTool = {};","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src啊/ElectronicMallVue/node_modules/echarts/lib/core/echarts.js"],"names":["__extends","zrender","assert","each","isFunction","isObject","indexOf","bind","clone","setAsPrimitive","extend","createHashMap","map","defaults","isDom","isArray","noop","isString","retrieve2","env","timsort","Eventful","GlobalModel","ExtensionAPI","CoordinateSystemManager","OptionManager","backwardCompat","dataStack","SeriesModel","ComponentView","ChartView","graphic","getECData","isHighDownDispatcher","HOVER_STATE_EMPHASIS","HOVER_STATE_BLUR","blurSeriesFromHighlightPayload","toggleSelectionFromPayload","updateSeriesElementSelection","getAllSelectedIndices","isSelectChangePayload","isHighDownPayload","HIGHLIGHT_ACTION_TYPE","DOWNPLAY_ACTION_TYPE","SELECT_ACTION_TYPE","UNSELECT_ACTION_TYPE","TOGGLE_SELECT_ACTION_TYPE","savePathStates","enterEmphasis","leaveEmphasis","leaveBlur","enterSelect","leaveSelect","enterBlur","allLeaveBlur","findComponentHighDownDispatchers","blurComponent","handleGlobalMouseOverForHighDown","handleGlobalMouseOutForHighDown","modelUtil","throttle","seriesStyleTask","dataStyleTask","dataColorPaletteTask","loadingDefault","Scheduler","lightTheme","darkTheme","parseClassType","ECEventProcessor","seriesSymbolTask","dataSymbolTask","getVisualFromData","getItemVisualFromData","deprecateLog","deprecateReplaceLog","error","warn","handleLegacySelectEvents","registerExternalTransform","createLocaleObject","SYSTEM_LANG","findEventDispatcher","decal","lifecycle","platformApi","setPlatformAPI","getImpl","version","dependencies","TEST_FRAME_REMAIN_TIME","PRIORITY_PROCESSOR_SERIES_FILTER","PRIORITY_PROCESSOR_DATASTACK","PRIORITY_PROCESSOR_FILTER","PRIORITY_PROCESSOR_DEFAULT","PRIORITY_PROCESSOR_STATISTIC","PRIORITY_VISUAL_LAYOUT","PRIORITY_VISUAL_PROGRESSIVE_LAYOUT","PRIORITY_VISUAL_GLOBAL","PRIORITY_VISUAL_CHART","PRIORITY_VISUAL_COMPONENT","PRIORITY_VISUAL_CHART_DATA_CUSTOM","PRIORITY_VISUAL_POST_CHART_LAYOUT","PRIORITY_VISUAL_BRUSH","PRIORITY_VISUAL_ARIA","PRIORITY_VISUAL_DECAL","PRIORITY","PROCESSOR","FILTER","SERIES_FILTER","STATISTIC","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","GLOBAL","CHART","POST_CHART_LAYOUT","COMPONENT","BRUSH","CHART_ITEM","ARIA","DECAL","IN_MAIN_PROCESS_KEY","PENDING_UPDATE","STATUS_NEEDS_UPDATE_KEY","ACTION_REG","CONNECT_STATUS_KEY","CONNECT_STATUS_PENDING","CONNECT_STATUS_UPDATING","CONNECT_STATUS_UPDATED","createRegisterEventWithLowercaseECharts","method","args","_i","arguments","length","isDisposed","disposedWarning","id","toLowercaseNameAndCallEventful","createRegisterEventWithLowercaseMessageCenter","host","toLowerCase","prototype","apply","MessageCenter","_super","messageCenterProto","on","off","prepare","prepareView","updateDirectly","updateMethods","doConvertPixel","updateStreamModes","doDispatchAction","flushPendingActions","triggerUpdatedEvent","bindRenderedEvent","bindMouseEvent","render","renderComponents","renderSeries","createExtensionAPI","enableConnect","markStatusToUpdate","applyChangedStates","ECharts","dom","theme","opts","_this","call","_chartsViews","_chartsMap","_componentsViews","_componentsMap","_pendingActions","themeStorage","_dom","defaultRenderer","defaultCoarsePointer","defaultUseDirtyRect","process","NODE_ENV","root","hasGlobalWindow","window","global","__ECHARTS__DEFAULT__RENDERER__","__ECHARTS__DEFAULT__COARSE_POINTER","devUseDirtyRect","__ECHARTS__DEFAULT__USE_DIRTY_RECT__","zr","_zr","init","renderer","devicePixelRatio","width","height","ssr","useDirtyRect","useCoarsePointer","pointerSize","_ssr","_throttledZrFlush","flush","_theme","_locale","locale","_coordSysMgr","api","_api","prioritySortFunc","a","b","__prio","visualFuncs","dataProcessorFuncs","_scheduler","_messageCenter","_initEvents","resize","animation","_onframe","_disposed","scheduler","silent","update","updateParams","e","unfinished","remainTime","ecModel","_model","startTime","Date","performSeriesTasks","performDataProcessorTasks","performVisualTasks","getDom","getId","getZr","isSSR","setOption","option","notMerge","lazyUpdate","replaceMerge","transitionOpt","transition","optionManager","optionPreprocessorFuncs","seriesTransition","optionChanged","wakeUp","setTheme","getModel","getOption","getWidth","getHeight","getDevicePixelRatio","painter","dpr","getRenderedCanvas","renderToCanvas","type","Error","backgroundColor","get","pixelRatio","renderToSVGString","renderToString","useViewBox","getSvgDataURL","svgSupported","list","storage","getDisplayList","el","stopAnimation","toDataURL","getDataURL","excludeComponents","excludesComponentViews","self","componentType","eachComponent","mainType","component","view","__viewId","group","ignore","push","url","getType","getConnectedDataURL","isSvg","groupId","mathMin","Math","min","mathMax","max","MAX_NUMBER","Infinity","connectedGroups","left_1","top_1","right_1","bottom_1","canvasList_1","dpr_1","instances","chart","canvas","getSvgDom","innerHTML","boundingRect","getBoundingClientRect","left","top","right","bottom","targetCanvas","createCanvas","zr_1","content_1","item","x","y","getSvgRoot","connectedBackgroundColor","setBackgroundColor","refreshImmediately","add","Rect","shape","style","fill","img","Image","image","convertToPixel","finder","value","convertFromPixel","containPixel","result","findResult","parseFinder","models","key","model","coordSys","coordinateSystem","containPoint","getVisual","visualType","parsedFinder","defaultMainType","seriesModel","data","getData","dataIndexInside","hasOwnProperty","indexOfRawIndex","dataIndex","getViewOfComponentModel","componentModel","getViewOfSeriesModel","MOUSE_EVENT_NAMES","eveName","handler","target","params","isGlobalOut","parent","ecData","dataModel","getSeriesByIndex","seriesIndex","getDataParams","dataType","eventData","componentIndex","getComponent","event","_$eventProcessor","eventInfo","targetEl","packedEvent","trigger","zrEventfulCallAtLast","eventActionMap","actionType","eventType","clear","series","dispose","setAttribute","DOM_ATTRIBUTE_KEY","_loadingFX","needPrepare","resetOption","duration","showLoading","name","cfg","hideLoading","loadingEffects","remove","makeActionFromEvent","eventObj","payload","dispatchAction","opt","actions","browser","weChat","updateLabelLayout","updatedSeries","appendData","internalField","ecIns","restorePipelines","prepareStageTasks","plan","isComponent","viewList","viewMap","i","__alive","doPrepare","eachSeries","requireNewView","__requireNewView","viewId","classType","Clazz","getClass","main","sub","__id","__model","__ecComponentInfo","index","renderTask","splice","subType","setUpdatePayload","concat","callView","query","condition","excludeSeriesId","excludeSeriesIdMap","normalizeToArray","modelId","convertOptionIdName","set","isExcluded","notBlur","_a","focusSelf","dispatchers","dispatcher","prepareAndUpdate","newOption","coordSysMgr","restoreData","create","clearColorPalette","darkMode","setDarkMode","updateTransform","componentDirtyList","componentView","seriesDirtyMap","chartView","uid","setDirty","dirtyMap","updateView","markUpdateMethod","updateVisual","clearAllVisual","updateLayout","methodName","coordSysList","getCoordinateSystems","chartsMap","payloadType","escapeConnect","actionWrap","actionInfo","cptTypeTmp","split","updateMethod","pop","cptType","payloads","batched","batch","eventObjBatch","isSelectChange","isHighDown","batchItem","action","preParseFinder","queryOptionMap","mainTypeSpecified","componentMainType","keys","messageCenter","newObj","selected","isFromClick","fromAction","fromActionPayload","pendingActions","shift","isFinished","allocateZlevels","componentZLevels","seriesZLevels","hasSeperateZLevel","zlevel","z","zlevelKey","getZLevelKey","idx","zLevels","lastSeriesZLevel_1","lastSeriesKey_1","setZLevel","dirtyList","clearStates","updateZ","updateStates","getSeries","updatePayload","dirty","perform","getPerformArgs","updateBlend","updateHoverLayerStatus","traverse","isElementRemoved","applyElementStates","newStates","oldStates","currentStates","stateName","states","select","hoverState","emphasis","blur","useStates","elCount","isGroup","node","worker","preventUsingHoverLayer","eachRendered","hoverLayer","blendMode","blend","preventAutoZ","doUpdateZ","maxZ2","label","getTextContent","labelLine","getTextGuideLine","children","childrenRef","z2","isFinite","textGuideLineConfig","showAbove","textContent","textGuide","stateTransition","hasState","prevStates","stateAnimationModel","enableAnimation","isAnimationEnabled","delay","easing","Path","__dirty","class_1","getComponentByElement","modelInfo","highlightDigit","updateConnectedChartsStatus","charts","status","otherChart","action_1","otherCharts_1","echartsProto","one","eventName","cb","ctx","wrapped","args2","idBase","groupIdBase","isClient","existInstance","getInstanceByDom","nodeName","toUpperCase","clientWidth","clientHeight","connect","disConnect","disconnect","getAttribute","getInstanceById","registerTheme","registerPreprocessor","preprocessorFunc","registerProcessor","priority","processor","normalizeRegister","registerPostInit","postInitFunc","registerUpdateLifecycle","registerPostUpdate","postUpdateFunc","registerAction","test","registerCoordinateSystem","coordSysCreator","register","getCoordinateSystemDimensions","getDimensionsInfo","dimensions","slice","registerLocale","registerLayout","layoutTask","registerVisual","visualTask","registeredTasks","targetList","fn","defaultPriority","isNaN","wrap","__raw","stageHandler","wrapStageHandler","registerLoading","loadingFx","setCanvasCreator","creator","registerMap","mapName","geoJson","specialAreas","getMap","registerTransform","dataTool"],"mappings":"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","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\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\nimport { __extends } from \"tslib\";\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nimport * as zrender from 'zrender/lib/zrender.js';\nimport { assert, each, isFunction, isObject, indexOf, bind, clone, setAsPrimitive, extend, createHashMap, map, defaults, isDom, isArray, noop, isString, retrieve2 } from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport timsort from 'zrender/lib/core/timsort.js';\nimport Eventful from 'zrender/lib/core/Eventful.js';\nimport GlobalModel from '../model/Global.js';\nimport ExtensionAPI from './ExtensionAPI.js';\nimport CoordinateSystemManager from './CoordinateSystem.js';\nimport OptionManager from '../model/OptionManager.js';\nimport backwardCompat from '../preprocessor/backwardCompat.js';\nimport dataStack from '../processor/dataStack.js';\nimport SeriesModel from '../model/Series.js';\nimport ComponentView from '../view/Component.js';\nimport ChartView from '../view/Chart.js';\nimport * as graphic from '../util/graphic.js';\nimport { getECData } from '../util/innerStore.js';\nimport { isHighDownDispatcher, HOVER_STATE_EMPHASIS, HOVER_STATE_BLUR, blurSeriesFromHighlightPayload, toggleSelectionFromPayload, updateSeriesElementSelection, getAllSelectedIndices, isSelectChangePayload, isHighDownPayload, HIGHLIGHT_ACTION_TYPE, DOWNPLAY_ACTION_TYPE, SELECT_ACTION_TYPE, UNSELECT_ACTION_TYPE, TOGGLE_SELECT_ACTION_TYPE, savePathStates, enterEmphasis, leaveEmphasis, leaveBlur, enterSelect, leaveSelect, enterBlur, allLeaveBlur, findComponentHighDownDispatchers, blurComponent, handleGlobalMouseOverForHighDown, handleGlobalMouseOutForHighDown } from '../util/states.js';\nimport * as modelUtil from '../util/model.js';\nimport { throttle } from '../util/throttle.js';\nimport { seriesStyleTask, dataStyleTask, dataColorPaletteTask } from '../visual/style.js';\nimport loadingDefault from '../loading/default.js';\nimport Scheduler from './Scheduler.js';\nimport lightTheme from '../theme/light.js';\nimport darkTheme from '../theme/dark.js';\nimport { parseClassType } from '../util/clazz.js';\nimport { ECEventProcessor } from '../util/ECEventProcessor.js';\nimport { seriesSymbolTask, dataSymbolTask } from '../visual/symbol.js';\nimport { getVisualFromData, getItemVisualFromData } from '../visual/helper.js';\nimport { deprecateLog, deprecateReplaceLog, error, warn } from '../util/log.js';\nimport { handleLegacySelectEvents } from '../legacy/dataSelectAction.js';\nimport { registerExternalTransform } from '../data/helper/transform.js';\nimport { createLocaleObject, SYSTEM_LANG } from './locale.js';\nimport { findEventDispatcher } from '../util/event.js';\nimport decal from '../visual/decal.js';\nimport lifecycle from './lifecycle.js';\nimport { platformApi, setPlatformAPI } from 'zrender/lib/core/platform.js';\nimport { getImpl } from './impl.js';\nexport var version = '5.4.2';\nexport var dependencies = {\n zrender: '5.4.3'\n};\nvar TEST_FRAME_REMAIN_TIME = 1;\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800; // Some data processors depends on the stack result dimension (to calculate data extent).\n// So data stack stage should be in front of data processing stage.\n\nvar PRIORITY_PROCESSOR_DATASTACK = 900; // \"Data filter\" will block the stream, so it should be\n// put at the beginning of data processing.\n\nvar PRIORITY_PROCESSOR_FILTER = 1000;\nvar PRIORITY_PROCESSOR_DEFAULT = 2000;\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_COMPONENT = 4000; // Visual property in data. Greater than `PRIORITY_VISUAL_COMPONENT` to enable to\n// overwrite the viusal result of component (like `visualMap`)\n// using data item specific setting (like itemStyle.xxx on data item)\n\nvar PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500; // Greater than `PRIORITY_VISUAL_CHART_DATA_CUSTOM` to enable to layout based on\n// visual result like `symbolSize`.\n\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600;\nvar PRIORITY_VISUAL_BRUSH = 5000;\nvar PRIORITY_VISUAL_ARIA = 6000;\nvar PRIORITY_VISUAL_DECAL = 7000;\nexport var 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 CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM,\n ARIA: PRIORITY_VISUAL_ARIA,\n DECAL: PRIORITY_VISUAL_DECAL\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_KEY = '__flagInMainProcess';\nvar PENDING_UPDATE = '__pendingUpdate';\nvar STATUS_NEEDS_UPDATE_KEY = '__needsUpdateStatus';\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\nvar CONNECT_STATUS_KEY = '__connectUpdateStatus';\nvar CONNECT_STATUS_PENDING = 0;\nvar CONNECT_STATUS_UPDATING = 1;\nvar CONNECT_STATUS_UPDATED = 2;\n;\n;\n\nfunction createRegisterEventWithLowercaseECharts(method) {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (this.isDisposed()) {\n disposedWarning(this.id);\n return;\n }\n\n return toLowercaseNameAndCallEventful(this, method, args);\n };\n}\n\nfunction createRegisterEventWithLowercaseMessageCenter(method) {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return toLowercaseNameAndCallEventful(this, method, args);\n };\n}\n\nfunction toLowercaseNameAndCallEventful(host, method, args) {\n // `args[0]` is event name. Event name is all lowercase.\n args[0] = args[0] && args[0].toLowerCase();\n return Eventful.prototype[method].apply(host, args);\n}\n\nvar MessageCenter =\n/** @class */\nfunction (_super) {\n __extends(MessageCenter, _super);\n\n function MessageCenter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return MessageCenter;\n}(Eventful);\n\nvar messageCenterProto = MessageCenter.prototype;\nmessageCenterProto.on = createRegisterEventWithLowercaseMessageCenter('on');\nmessageCenterProto.off = createRegisterEventWithLowercaseMessageCenter('off'); // ---------------------------------------\n// Internal method names for class ECharts\n// ---------------------------------------\n\nvar prepare;\nvar prepareView;\nvar updateDirectly;\nvar updateMethods;\nvar doConvertPixel;\nvar updateStreamModes;\nvar doDispatchAction;\nvar flushPendingActions;\nvar triggerUpdatedEvent;\nvar bindRenderedEvent;\nvar bindMouseEvent;\nvar render;\nvar renderComponents;\nvar renderSeries;\nvar createExtensionAPI;\nvar enableConnect;\nvar markStatusToUpdate;\nvar applyChangedStates;\n\nvar ECharts =\n/** @class */\nfunction (_super) {\n __extends(ECharts, _super);\n\n function ECharts(dom, // Theme name or themeOption.\n theme, opts) {\n var _this = _super.call(this, new ECEventProcessor()) || this;\n\n _this._chartsViews = [];\n _this._chartsMap = {};\n _this._componentsViews = [];\n _this._componentsMap = {}; // Can't dispatch action during rendering procedure\n\n _this._pendingActions = [];\n opts = opts || {}; // Get theme by name\n\n if (isString(theme)) {\n theme = themeStorage[theme];\n }\n\n _this._dom = dom;\n var defaultRenderer = 'canvas';\n var defaultCoarsePointer = 'auto';\n var defaultUseDirtyRect = false;\n\n if (process.env.NODE_ENV !== 'production') {\n var root =\n /* eslint-disable-next-line */\n env.hasGlobalWindow ? window : global;\n defaultRenderer = root.__ECHARTS__DEFAULT__RENDERER__ || defaultRenderer;\n defaultCoarsePointer = retrieve2(root.__ECHARTS__DEFAULT__COARSE_POINTER, defaultCoarsePointer);\n var devUseDirtyRect = root.__ECHARTS__DEFAULT__USE_DIRTY_RECT__;\n defaultUseDirtyRect = devUseDirtyRect == null ? defaultUseDirtyRect : devUseDirtyRect;\n }\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 ssr: opts.ssr,\n useDirtyRect: retrieve2(opts.useDirtyRect, defaultUseDirtyRect),\n useCoarsePointer: retrieve2(opts.useCoarsePointer, defaultCoarsePointer),\n pointerSize: opts.pointerSize\n });\n _this._ssr = opts.ssr; // Expect 60 fps.\n\n _this._throttledZrFlush = throttle(bind(zr.flush, zr), 17);\n theme = clone(theme);\n theme && backwardCompat(theme, true);\n _this._theme = theme;\n _this._locale = createLocaleObject(opts.locale || SYSTEM_LANG);\n _this._coordSysMgr = new CoordinateSystemManager();\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 _this._scheduler = new Scheduler(_this, api, dataProcessorFuncs, visualFuncs);\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 = bind(_this.resize, _this);\n zr.animation.on('frame', _this._onframe, _this);\n bindRenderedEvent(zr, _this);\n bindMouseEvent(zr, _this); // ECharts instance can be used as value.\n\n setAsPrimitive(_this);\n return _this;\n }\n\n ECharts.prototype._onframe = function () {\n if (this._disposed) {\n return;\n }\n\n applyChangedStates(this);\n var scheduler = this._scheduler; // Lazy update\n\n if (this[PENDING_UPDATE]) {\n var silent = this[PENDING_UPDATE].silent;\n this[IN_MAIN_PROCESS_KEY] = true;\n\n try {\n prepare(this);\n updateMethods.update.call(this, null, this[PENDING_UPDATE].updateParams);\n } catch (e) {\n this[IN_MAIN_PROCESS_KEY] = false;\n this[PENDING_UPDATE] = null;\n throw e;\n } // At present, in each frame, zrender performs:\n // (1) animation step forward.\n // (2) trigger('frame') (where this `_onframe` is called)\n // (3) zrender flush (render).\n // If we do nothing here, since we use `setToFinal: true`, the step (3) above\n // will render the final state of the elements before the real animation started.\n\n\n this._zr.flush();\n\n this[IN_MAIN_PROCESS_KEY] = false;\n this[PENDING_UPDATE] = null;\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 determined in the first frame (the\n // frame is executed immediately 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 ECharts.prototype.getDom = function () {\n return this._dom;\n };\n\n ECharts.prototype.getId = function () {\n return this.id;\n };\n\n ECharts.prototype.getZr = function () {\n return this._zr;\n };\n\n ECharts.prototype.isSSR = function () {\n return this._ssr;\n };\n /* eslint-disable-next-line */\n\n\n ECharts.prototype.setOption = function (option, notMerge, lazyUpdate) {\n if (this[IN_MAIN_PROCESS_KEY]) {\n if (process.env.NODE_ENV !== 'production') {\n error('`setOption` should not be called during main process.');\n }\n\n return;\n }\n\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var silent;\n var replaceMerge;\n var transitionOpt;\n\n if (isObject(notMerge)) {\n lazyUpdate = notMerge.lazyUpdate;\n silent = notMerge.silent;\n replaceMerge = notMerge.replaceMerge;\n transitionOpt = notMerge.transition;\n notMerge = notMerge.notMerge;\n }\n\n this[IN_MAIN_PROCESS_KEY] = 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.ssr = this._ssr;\n ecModel.init(null, null, null, theme, this._locale, optionManager);\n }\n\n this._model.setOption(option, {\n replaceMerge: replaceMerge\n }, optionPreprocessorFuncs);\n\n var updateParams = {\n seriesTransition: transitionOpt,\n optionChanged: true\n };\n\n if (lazyUpdate) {\n this[PENDING_UPDATE] = {\n silent: silent,\n updateParams: updateParams\n };\n this[IN_MAIN_PROCESS_KEY] = false; // `setOption(option, {lazyMode: true})` may be called when zrender has been slept.\n // It should wake it up to make sure zrender start to render at the next frame.\n\n this.getZr().wakeUp();\n } else {\n try {\n prepare(this);\n updateMethods.update.call(this, null, updateParams);\n } catch (e) {\n this[PENDING_UPDATE] = null;\n this[IN_MAIN_PROCESS_KEY] = false;\n throw e;\n } // Ensure zr refresh sychronously, and then pixel in canvas can be\n // fetched after `setOption`.\n\n\n if (!this._ssr) {\n // not use flush when using ssr mode.\n this._zr.flush();\n }\n\n this[PENDING_UPDATE] = null;\n this[IN_MAIN_PROCESS_KEY] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n }\n };\n /**\n * @deprecated\n */\n\n\n ECharts.prototype.setTheme = function () {\n deprecateLog('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\n }; // We don't want developers to use getModel directly.\n\n\n ECharts.prototype.getModel = function () {\n return this._model;\n };\n\n ECharts.prototype.getOption = function () {\n return this._model && this._model.getOption();\n };\n\n ECharts.prototype.getWidth = function () {\n return this._zr.getWidth();\n };\n\n ECharts.prototype.getHeight = function () {\n return this._zr.getHeight();\n };\n\n ECharts.prototype.getDevicePixelRatio = function () {\n return this._zr.painter.dpr\n /* eslint-disable-next-line */\n || env.hasGlobalWindow && window.devicePixelRatio || 1;\n };\n /**\n * Get canvas which has all thing rendered\n * @deprecated Use renderToCanvas instead.\n */\n\n\n ECharts.prototype.getRenderedCanvas = function (opts) {\n if (process.env.NODE_ENV !== 'production') {\n deprecateReplaceLog('getRenderedCanvas', 'renderToCanvas');\n }\n\n return this.renderToCanvas(opts);\n };\n\n ECharts.prototype.renderToCanvas = function (opts) {\n opts = opts || {};\n var painter = this._zr.painter;\n\n if (process.env.NODE_ENV !== 'production') {\n if (painter.type !== 'canvas') {\n throw new Error('renderToCanvas can only be used in the canvas renderer.');\n }\n }\n\n return painter.getRenderedCanvas({\n backgroundColor: opts.backgroundColor || this._model.get('backgroundColor'),\n pixelRatio: opts.pixelRatio || this.getDevicePixelRatio()\n });\n };\n\n ECharts.prototype.renderToSVGString = function (opts) {\n opts = opts || {};\n var painter = this._zr.painter;\n\n if (process.env.NODE_ENV !== 'production') {\n if (painter.type !== 'svg') {\n throw new Error('renderToSVGString can only be used in the svg renderer.');\n }\n }\n\n return painter.renderToString({\n useViewBox: opts.useViewBox\n });\n };\n /**\n * Get svg data url\n */\n\n\n ECharts.prototype.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 each(list, function (el) {\n el.stopAnimation(null, true);\n });\n return zr.painter.toDataURL();\n };\n\n ECharts.prototype.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.renderToCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\n each(excludesComponentViews, function (view) {\n view.group.ignore = false;\n });\n return url;\n };\n\n ECharts.prototype.getConnectedDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\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_1 = MAX_NUMBER;\n var top_1 = MAX_NUMBER;\n var right_1 = -MAX_NUMBER;\n var bottom_1 = -MAX_NUMBER;\n var canvasList_1 = [];\n var dpr_1 = opts && opts.pixelRatio || this.getDevicePixelRatio();\n each(instances, function (chart, id) {\n if (chart.group === groupId) {\n var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.renderToCanvas(clone(opts));\n var boundingRect = chart.getDom().getBoundingClientRect();\n left_1 = mathMin(boundingRect.left, left_1);\n top_1 = mathMin(boundingRect.top, top_1);\n right_1 = mathMax(boundingRect.right, right_1);\n bottom_1 = mathMax(boundingRect.bottom, bottom_1);\n canvasList_1.push({\n dom: canvas,\n left: boundingRect.left,\n top: boundingRect.top\n });\n }\n });\n left_1 *= dpr_1;\n top_1 *= dpr_1;\n right_1 *= dpr_1;\n bottom_1 *= dpr_1;\n var width = right_1 - left_1;\n var height = bottom_1 - top_1;\n var targetCanvas = platformApi.createCanvas();\n var zr_1 = zrender.init(targetCanvas, {\n renderer: isSvg ? 'svg' : 'canvas'\n });\n zr_1.resize({\n width: width,\n height: height\n });\n\n if (isSvg) {\n var content_1 = '';\n each(canvasList_1, function (item) {\n var x = item.left - left_1;\n var y = item.top - top_1;\n content_1 += '' + item.dom + '';\n });\n zr_1.painter.getSvgRoot().innerHTML = content_1;\n\n if (opts.connectedBackgroundColor) {\n zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor);\n }\n\n zr_1.refreshImmediately();\n return zr_1.painter.toDataURL();\n } else {\n // Background between the charts\n if (opts.connectedBackgroundColor) {\n zr_1.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_1, function (item) {\n var img = new graphic.Image({\n style: {\n x: item.left * dpr_1 - left_1,\n y: item.top * dpr_1 - top_1,\n image: item.dom\n }\n });\n zr_1.add(img);\n });\n zr_1.refreshImmediately();\n return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\n }\n } else {\n return this.getDataURL(opts);\n }\n };\n\n ECharts.prototype.convertToPixel = function (finder, value) {\n return doConvertPixel(this, 'convertToPixel', finder, value);\n };\n\n ECharts.prototype.convertFromPixel = function (finder, value) {\n return doConvertPixel(this, 'convertFromPixel', finder, value);\n };\n /**\n * Is the specified coordinate systems or components contain the given pixel point.\n * @param {Array|number} value\n * @return {boolean} result\n */\n\n\n ECharts.prototype.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 var findResult = modelUtil.parseFinder(ecModel, finder);\n each(findResult, function (models, key) {\n key.indexOf('Models') >= 0 && each(models, function (model) {\n var coordSys = model.coordinateSystem;\n\n if (coordSys && coordSys.containPoint) {\n result = result || !!coordSys.containPoint(value);\n } else if (key === 'seriesModels') {\n var view = this._chartsMap[model.__viewId];\n\n if (view && view.containPoint) {\n result = result || view.containPoint(value, model);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(key + ': ' + (view ? 'The found component do not support containPoint.' : 'No view mapping to the found component.'));\n }\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(key + ': containPoint is not supported');\n }\n }\n }, this);\n }, this);\n return !!result;\n };\n /**\n * Get visual from series or data.\n * @param 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 visualType 'color', 'symbol', 'symbolSize'\n */\n\n\n ECharts.prototype.getVisual = function (finder, visualType) {\n var ecModel = this._model;\n var parsedFinder = modelUtil.parseFinder(ecModel, finder, {\n defaultMainType: 'series'\n });\n var seriesModel = parsedFinder.seriesModel;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!seriesModel) {\n warn('There is no specified series model');\n }\n }\n\n var data = seriesModel.getData();\n var dataIndexInside = parsedFinder.hasOwnProperty('dataIndexInside') ? parsedFinder.dataIndexInside : parsedFinder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(parsedFinder.dataIndex) : null;\n return dataIndexInside != null ? getItemVisualFromData(data, dataIndexInside, visualType) : getVisualFromData(data, visualType);\n };\n /**\n * Get view of corresponding component model\n */\n\n\n ECharts.prototype.getViewOfComponentModel = function (componentModel) {\n return this._componentsMap[componentModel.__viewId];\n };\n /**\n * Get view of corresponding series model\n */\n\n\n ECharts.prototype.getViewOfSeriesModel = function (seriesModel) {\n return this._chartsMap[seriesModel.__viewId];\n };\n\n ECharts.prototype._initEvents = function () {\n var _this = this;\n\n each(MOUSE_EVENT_NAMES, function (eveName) {\n var handler = function (e) {\n var ecModel = _this.getModel();\n\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 {\n el && findEventDispatcher(el, function (parent) {\n var ecData = getECData(parent);\n\n if (ecData && ecData.dataIndex != null) {\n var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex);\n params = dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType) || {};\n return true;\n } // If element has custom eventData of components\n else if (ecData.eventData) {\n params = extend({}, ecData.eventData);\n return true;\n }\n }, true);\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\n if (process.env.NODE_ENV !== 'production') {\n // `event.componentType` and `event[componentTpype + 'Index']` must not\n // be missed, otherwise there is no way to distinguish source component.\n // See `dataFormat.getDataParams`.\n if (!isGlobalOut && !(model && view)) {\n warn('model or view can not be found by params');\n }\n }\n\n params.event = e;\n params.type = eveName;\n _this._$eventProcessor.eventInfo = {\n targetEl: el,\n packedEvent: params,\n model: model,\n view: view\n };\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 });\n each(eventActionMap, function (actionType, eventType) {\n _this._messageCenter.on(eventType, function (event) {\n this.trigger(eventType, event);\n }, _this);\n }); // Extra events\n // TODO register?\n\n each(['selectchanged'], function (eventType) {\n _this._messageCenter.on(eventType, function (event) {\n this.trigger(eventType, event);\n }, _this);\n });\n handleLegacySelectEvents(this._messageCenter, this, this._api);\n };\n\n ECharts.prototype.isDisposed = function () {\n return this._disposed;\n };\n\n ECharts.prototype.clear = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this.setOption({\n series: []\n }, true);\n };\n\n ECharts.prototype.dispose = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._disposed = true;\n var dom = this.getDom();\n\n if (dom) {\n modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\n }\n\n var chart = this;\n var api = chart._api;\n var ecModel = chart._model;\n each(chart._componentsViews, function (component) {\n component.dispose(ecModel, api);\n });\n each(chart._chartsViews, function (chart) {\n chart.dispose(ecModel, api);\n }); // Dispose after all views disposed\n\n chart._zr.dispose(); // Set properties to null.\n // To reduce the memory cost in case the top code still holds this instance unexpectedly.\n\n\n chart._dom = chart._model = chart._chartsMap = chart._componentsMap = chart._chartsViews = chart._componentsViews = chart._scheduler = chart._api = chart._zr = chart._throttledZrFlush = chart._theme = chart._coordSysMgr = chart._messageCenter = null;\n delete instances[chart.id];\n };\n /**\n * Resize the chart\n */\n\n\n ECharts.prototype.resize = function (opts) {\n if (this[IN_MAIN_PROCESS_KEY]) {\n if (process.env.NODE_ENV !== 'production') {\n error('`resize` should not be called during main process.');\n }\n\n return;\n }\n\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 needPrepare = ecModel.resetOption('media');\n var silent = opts && opts.silent; // There is some real cases that:\n // chart.setOption(option, { lazyUpdate: true });\n // chart.resize();\n\n if (this[PENDING_UPDATE]) {\n if (silent == null) {\n silent = this[PENDING_UPDATE].silent;\n }\n\n needPrepare = true;\n this[PENDING_UPDATE] = null;\n }\n\n this[IN_MAIN_PROCESS_KEY] = true;\n\n try {\n needPrepare && prepare(this);\n updateMethods.update.call(this, {\n type: 'resize',\n animation: extend({\n // Disable animation\n duration: 0\n }, opts && opts.animation)\n });\n } catch (e) {\n this[IN_MAIN_PROCESS_KEY] = false;\n throw e;\n }\n\n this[IN_MAIN_PROCESS_KEY] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n };\n\n ECharts.prototype.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 if (process.env.NODE_ENV !== 'production') {\n warn('Loading effects ' + name + ' not exists.');\n }\n\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\n ECharts.prototype.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 ECharts.prototype.makeActionFromEvent = function (eventObj) {\n var payload = extend({}, eventObj);\n payload.type = eventActionMap[eventObj.type];\n return payload;\n };\n /**\n * @param opt If pass boolean, means opt.silent\n * @param opt.silent Default `false`. Whether trigger events.\n * @param opt.flush Default `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\n ECharts.prototype.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_KEY]) {\n this._pendingActions.push(payload);\n\n return;\n }\n\n var silent = opt.silent;\n doDispatchAction.call(this, payload, silent);\n var flush = opt.flush;\n\n if (flush) {\n this._zr.flush();\n } else if (flush !== false && env.browser.weChat) {\n // In WeChat embedded browser, `requestAnimationFrame` and `setInterval`\n // hang when sliding page (on touch event), which cause that zr does not\n // refresh until 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, silent);\n triggerUpdatedEvent.call(this, silent);\n };\n\n ECharts.prototype.updateLabelLayout = function () {\n lifecycle.trigger('series:layoutlabels', this._model, this._api, {\n // Not adding series labels.\n // TODO\n updatedSeries: []\n });\n };\n\n ECharts.prototype.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\n if (process.env.NODE_ENV !== 'production') {\n assert(params.data && seriesModel);\n }\n\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 this.getZr().wakeUp();\n }; // A work around for no `internal` modifier in ts yet but\n // need to strictly hide private methods to JS users.\n\n\n ECharts.internalField = function () {\n prepare = function (ecIns) {\n var scheduler = ecIns._scheduler;\n scheduler.restorePipelines(ecIns._model);\n scheduler.prepareStageTasks();\n prepareView(ecIns, true);\n prepareView(ecIns, false);\n scheduler.plan();\n };\n /**\n * Prepare view instances of charts and components\n */\n\n\n prepareView = function (ecIns, isComponent) {\n var ecModel = ecIns._model;\n var scheduler = ecIns._scheduler;\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 // By default view will be reused if possible for the case that `setOption` with \"notMerge\"\n // mode and need to enable transition animation. (Usually, when they have the same id, or\n // especially no id but have the same type & name & index. See the `model.id` generation\n // rule in `makeIdAndName` and `viewId` generation rule here).\n // But in `replaceMerge` mode, this feature should be able to disabled when it is clear that\n // the new model has nothing to do with the old model.\n var requireNewView = model.__requireNewView; // This command should not work twice.\n\n model.__requireNewView = false; // Consider: id same and type changed.\n\n var viewId = '_ec_' + model.id + '_' + model.type;\n var view = !requireNewView && viewMap[viewId];\n\n if (!view) {\n var classType = parseClassType(model.type);\n var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : // FIXME:TS\n // (ChartView as ChartViewConstructor).getClass('series', classType.sub)\n // For backward compat, still support a chart type declared as only subType\n // like \"liquidfill\", but recommend \"series.liquidfill\"\n // But need a base class to make a type series.\n ChartView.getClass(classType.sub);\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Clazz, classType.sub + ' does not exist.');\n }\n\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\n if (viewMap[view.__id] === view) {\n delete viewMap[view.__id];\n }\n\n view.__id = view.group.__ecComponentInfo = null;\n } else {\n i++;\n }\n }\n };\n\n updateDirectly = function (ecIns, method, payload, mainType, subType) {\n var ecModel = ecIns._model;\n ecModel.setUpdatePayload(payload); // 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([].concat(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 var excludeSeriesIdMap;\n\n if (excludeSeriesId != null) {\n excludeSeriesIdMap = createHashMap();\n each(modelUtil.normalizeToArray(excludeSeriesId), function (id) {\n var modelId = modelUtil.convertOptionIdName(id, null);\n\n if (modelId != null) {\n excludeSeriesIdMap.set(modelId, true);\n }\n });\n } // If dispatchAction before setOption, do nothing.\n\n\n ecModel && ecModel.eachComponent(condition, function (model) {\n var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null;\n\n if (isExcluded) {\n return;\n }\n\n ;\n\n if (isHighDownPayload(payload)) {\n if (model instanceof SeriesModel) {\n if (payload.type === HIGHLIGHT_ACTION_TYPE && !payload.notBlur && !model.get(['emphasis', 'disabled'])) {\n blurSeriesFromHighlightPayload(model, payload, ecIns._api);\n }\n } else {\n var _a = findComponentHighDownDispatchers(model.mainType, model.componentIndex, payload.name, ecIns._api),\n focusSelf = _a.focusSelf,\n dispatchers = _a.dispatchers;\n\n if (payload.type === HIGHLIGHT_ACTION_TYPE && focusSelf && !payload.notBlur) {\n blurComponent(model.mainType, model.componentIndex, ecIns._api);\n } // PENDING:\n // Whether to put this \"enter emphasis\" code in `ComponentView`,\n // which will be the same as `ChartView` but might be not necessary\n // and will be far from this logic.\n\n\n if (dispatchers) {\n each(dispatchers, function (dispatcher) {\n payload.type === HIGHLIGHT_ACTION_TYPE ? enterEmphasis(dispatcher) : leaveEmphasis(dispatcher);\n });\n }\n }\n } else if (isSelectChangePayload(payload)) {\n // TODO geo\n if (model instanceof SeriesModel) {\n toggleSelectionFromPayload(model, payload, ecIns._api);\n updateSeriesElementSelection(model);\n markStatusToUpdate(ecIns);\n }\n }\n }, ecIns);\n ecModel && ecModel.eachComponent(condition, function (model) {\n var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null;\n\n if (isExcluded) {\n return;\n }\n\n ;\n callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\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 updateMethods = {\n prepareAndUpdate: function (payload) {\n prepare(this);\n updateMethods.update.call(this, payload, {\n // Needs to mark option changed if newOption is given.\n // It's from MagicType.\n // TODO If use a separate flag optionChanged in payload?\n optionChanged: payload.newOption != null\n });\n },\n update: function (payload, updateParams) {\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 ecModel.setUpdatePayload(payload);\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 original 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 // determine whether to 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 required 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, updateParams); // Set background\n\n var backgroundColor = ecModel.get('backgroundColor') || 'transparent';\n var darkMode = ecModel.get('darkMode');\n zr.setBackgroundColor(backgroundColor); // Force set dark mode.\n\n if (darkMode != null && darkMode !== 'auto') {\n zr.setDarkMode(darkMode);\n }\n\n lifecycle.trigger('afterupdate', ecModel, api);\n },\n updateTransform: function (payload) {\n var _this = this;\n\n var ecModel = this._model;\n var api = this._api; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ecModel.setUpdatePayload(payload); // ChartView.markUpdateMethod(payload, 'updateTransform');\n\n var componentDirtyList = [];\n ecModel.eachComponent(function (componentType, componentModel) {\n if (componentType === 'series') {\n return;\n }\n\n var componentView = _this.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 = createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var chartView = _this._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(this, ecModel, api, payload, {}, seriesDirtyMap);\n lifecycle.trigger('afterupdate', ecModel, api);\n },\n updateView: function (payload) {\n var ecModel = this._model; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ecModel.setUpdatePayload(payload);\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, ecModel, this._api, payload, {});\n lifecycle.trigger('afterupdate', ecModel, this._api);\n },\n updateVisual: function (payload) {\n // updateMethods.update.call(this, payload);\n var _this = this;\n\n var ecModel = this._model; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ecModel.setUpdatePayload(payload); // clear all visual\n\n ecModel.eachSeries(function (seriesModel) {\n seriesModel.getData().clearAllVisual();\n }); // Perform visual\n\n ChartView.markUpdateMethod(payload, 'updateVisual');\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 visualType: 'visual',\n setDirty: true\n });\n\n ecModel.eachComponent(function (componentType, componentModel) {\n if (componentType !== 'series') {\n var componentView = _this.getViewOfComponentModel(componentModel);\n\n componentView && componentView.__alive && componentView.updateVisual(componentModel, ecModel, _this._api, payload);\n }\n });\n ecModel.eachSeries(function (seriesModel) {\n var chartView = _this._chartsMap[seriesModel.__viewId];\n chartView.updateVisual(seriesModel, ecModel, _this._api, payload);\n });\n lifecycle.trigger('afterupdate', ecModel, this._api);\n },\n updateLayout: function (payload) {\n updateMethods.update.call(this, payload);\n }\n };\n\n doConvertPixel = function (ecIns, methodName, finder, value) {\n if (ecIns._disposed) {\n disposedWarning(ecIns.id);\n return;\n }\n\n var ecModel = ecIns._model;\n\n var coordSysList = ecIns._coordSysMgr.getCoordinateSystems();\n\n var result;\n var parsedFinder = 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, parsedFinder, value)) != null) {\n return result;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n warn('No coordinate system that supports ' + methodName + ' found by the given finder.');\n }\n };\n\n updateStreamModes = function (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 doDispatchAction = function (payload, silent) {\n var _this = this;\n\n var ecModel = this.getModel();\n var payloadType = payload.type;\n var escapeConnect = payload.escapeConnect;\n var actionWrap = actions[payloadType];\n var actionInfo = actionWrap.actionInfo;\n var cptTypeTmp = (actionInfo.update || 'update').split(':');\n var updateMethod = cptTypeTmp.pop();\n var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]);\n this[IN_MAIN_PROCESS_KEY] = true;\n var payloads = [payload];\n var batched = false; // Batch action\n\n if (payload.batch) {\n batched = true;\n payloads = map(payload.batch, function (item) {\n item = defaults(extend({}, item), payload);\n item.batch = null;\n return item;\n });\n }\n\n var eventObjBatch = [];\n var eventObj;\n var isSelectChange = isSelectChangePayload(payload);\n var isHighDown = isHighDownPayload(payload); // Only leave blur once if there are multiple batches.\n\n if (isHighDown) {\n allLeaveBlur(this._api);\n }\n\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 || 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 var _a = modelUtil.preParseFinder(payload),\n queryOptionMap = _a.queryOptionMap,\n mainTypeSpecified = _a.mainTypeSpecified;\n\n var componentMainType = mainTypeSpecified ? queryOptionMap.keys()[0] : 'series';\n updateDirectly(_this, updateMethod, batchItem, componentMainType);\n markStatusToUpdate(_this);\n } else if (isSelectChange) {\n // At present `dispatchAction({ type: 'select', ... })` is not supported on components.\n // geo still use 'geoselect'.\n updateDirectly(_this, updateMethod, batchItem, 'series');\n markStatusToUpdate(_this);\n } else if (cptType) {\n updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub);\n }\n });\n\n if (updateMethod !== 'none' && !isHighDown && !isSelectChange && !cptType) {\n try {\n // Still dirty\n if (this[PENDING_UPDATE]) {\n prepare(this);\n updateMethods.update.call(this, payload);\n this[PENDING_UPDATE] = null;\n } else {\n updateMethods[updateMethod].call(this, payload);\n }\n } catch (e) {\n this[IN_MAIN_PROCESS_KEY] = false;\n throw e;\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_KEY] = false;\n\n if (!silent) {\n var messageCenter = this._messageCenter;\n messageCenter.trigger(eventObj.type, eventObj); // Extra triggered 'selectchanged' event\n\n if (isSelectChange) {\n var newObj = {\n type: 'selectchanged',\n escapeConnect: escapeConnect,\n selected: getAllSelectedIndices(ecModel),\n isFromClick: payload.isFromClick || false,\n fromAction: payload.type,\n fromActionPayload: payload\n };\n messageCenter.trigger(newObj.type, newObj);\n }\n }\n };\n\n flushPendingActions = function (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\n triggerUpdatedEvent = function (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\n bindRenderedEvent = function (zr, ecIns) {\n zr.on('rendered', function (params) {\n ecIns.trigger('rendered', params); // The `finished` event should not be triggered repeatedly,\n // so it should only be triggered when rendering indeed happens\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[PENDING_UPDATE] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) {\n ecIns.trigger('finished');\n }\n });\n };\n\n bindMouseEvent = function (zr, ecIns) {\n zr.on('mouseover', function (e) {\n var el = e.target;\n var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\n\n if (dispatcher) {\n handleGlobalMouseOverForHighDown(dispatcher, e, ecIns._api);\n markStatusToUpdate(ecIns);\n }\n }).on('mouseout', function (e) {\n var el = e.target;\n var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\n\n if (dispatcher) {\n handleGlobalMouseOutForHighDown(dispatcher, e, ecIns._api);\n markStatusToUpdate(ecIns);\n }\n }).on('click', function (e) {\n var el = e.target;\n var dispatcher = findEventDispatcher(el, function (target) {\n return getECData(target).dataIndex != null;\n }, true);\n\n if (dispatcher) {\n var actionType = dispatcher.selected ? 'unselect' : 'select';\n var ecData = getECData(dispatcher);\n\n ecIns._api.dispatchAction({\n type: actionType,\n dataType: ecData.dataType,\n dataIndexInside: ecData.dataIndex,\n seriesIndex: ecData.seriesIndex,\n isFromClick: true\n });\n }\n });\n };\n\n function clearColorPalette(ecModel) {\n ecModel.clearColorPalette();\n ecModel.eachSeries(function (seriesModel) {\n seriesModel.clearColorPalette();\n });\n }\n\n ; // Allocate zlevels for series and components\n\n function allocateZlevels(ecModel) {\n ;\n var componentZLevels = [];\n var seriesZLevels = [];\n var hasSeperateZLevel = false;\n ecModel.eachComponent(function (componentType, componentModel) {\n var zlevel = componentModel.get('zlevel') || 0;\n var z = componentModel.get('z') || 0;\n var zlevelKey = componentModel.getZLevelKey();\n hasSeperateZLevel = hasSeperateZLevel || !!zlevelKey;\n (componentType === 'series' ? seriesZLevels : componentZLevels).push({\n zlevel: zlevel,\n z: z,\n idx: componentModel.componentIndex,\n type: componentType,\n key: zlevelKey\n });\n });\n\n if (hasSeperateZLevel) {\n // Series after component\n var zLevels = componentZLevels.concat(seriesZLevels);\n var lastSeriesZLevel_1;\n var lastSeriesKey_1;\n timsort(zLevels, function (a, b) {\n if (a.zlevel === b.zlevel) {\n return a.z - b.z;\n }\n\n return a.zlevel - b.zlevel;\n });\n each(zLevels, function (item) {\n var componentModel = ecModel.getComponent(item.type, item.idx);\n var zlevel = item.zlevel;\n var key = item.key;\n\n if (lastSeriesZLevel_1 != null) {\n zlevel = Math.max(lastSeriesZLevel_1, zlevel);\n }\n\n if (key) {\n if (zlevel === lastSeriesZLevel_1 && key !== lastSeriesKey_1) {\n zlevel++;\n }\n\n lastSeriesKey_1 = key;\n } else if (lastSeriesKey_1) {\n if (zlevel === lastSeriesZLevel_1) {\n zlevel++;\n }\n\n lastSeriesKey_1 = '';\n }\n\n lastSeriesZLevel_1 = zlevel;\n componentModel.setZLevel(zlevel);\n });\n }\n }\n\n render = function (ecIns, ecModel, api, payload, updateParams) {\n allocateZlevels(ecModel);\n renderComponents(ecIns, ecModel, api, payload, updateParams);\n each(ecIns._chartsViews, function (chart) {\n chart.__alive = false;\n });\n renderSeries(ecIns, ecModel, api, payload, updateParams); // 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\n renderComponents = function (ecIns, ecModel, api, payload, updateParams, dirtyList) {\n each(dirtyList || ecIns._componentsViews, function (componentView) {\n var componentModel = componentView.__model;\n clearStates(componentModel, componentView);\n componentView.render(componentModel, ecModel, api, payload);\n updateZ(componentModel, componentView);\n updateStates(componentModel, componentView);\n });\n };\n /**\n * Render each chart and component\n */\n\n\n renderSeries = function (ecIns, ecModel, api, payload, updateParams, dirtyMap) {\n // Render all charts\n var scheduler = ecIns._scheduler;\n updateParams = extend(updateParams || {}, {\n updatedSeries: ecModel.getSeries()\n }); // TODO progressive?\n\n lifecycle.trigger('series:beforeupdate', ecModel, api, updateParams);\n var unfinished = false;\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); // TODO states on marker.\n\n clearStates(seriesModel, chartView);\n\n if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\n renderTask.dirty();\n }\n\n if (renderTask.perform(scheduler.getPerformArgs(renderTask))) {\n unfinished = true;\n }\n\n chartView.group.silent = !!seriesModel.get('silent'); // Should not call markRedraw on group, because it will disable zrender\n // incremental render (always render from the __startIndex each frame)\n // chartView.group.markRedraw();\n\n updateBlend(seriesModel, chartView);\n updateSeriesElementSelection(seriesModel);\n });\n scheduler.unfinished = unfinished || scheduler.unfinished;\n lifecycle.trigger('series:layoutlabels', ecModel, api, updateParams); // transition after label is layouted.\n\n lifecycle.trigger('series:transition', ecModel, api, updateParams);\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId]; // Update Z after labels updated. Before applying states.\n\n updateZ(seriesModel, chartView); // NOTE: Update states after label is updated.\n // label should be in normal status when layouting.\n\n updateStates(seriesModel, chartView);\n }); // If use hover layer\n\n updateHoverLayerStatus(ecIns, ecModel);\n lifecycle.trigger('series:afterupdate', ecModel, api, updateParams);\n };\n\n markStatusToUpdate = function (ecIns) {\n ecIns[STATUS_NEEDS_UPDATE_KEY] = true; // Wake up zrender if it's sleep. Let it update states in the next frame.\n\n ecIns.getZr().wakeUp();\n };\n\n applyChangedStates = function (ecIns) {\n if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) {\n return;\n }\n\n ecIns.getZr().storage.traverse(function (el) {\n // Not applied on removed elements, it may still in fading.\n if (graphic.isElementRemoved(el)) {\n return;\n }\n\n applyElementStates(el);\n });\n ecIns[STATUS_NEEDS_UPDATE_KEY] = false;\n };\n\n function applyElementStates(el) {\n var newStates = [];\n var oldStates = el.currentStates; // Keep other states.\n\n for (var i = 0; i < oldStates.length; i++) {\n var stateName = oldStates[i];\n\n if (!(stateName === 'emphasis' || stateName === 'blur' || stateName === 'select')) {\n newStates.push(stateName);\n }\n } // Only use states when it's exists.\n\n\n if (el.selected && el.states.select) {\n newStates.push('select');\n }\n\n if (el.hoverState === HOVER_STATE_EMPHASIS && el.states.emphasis) {\n newStates.push('emphasis');\n } else if (el.hoverState === HOVER_STATE_BLUR && el.states.blur) {\n newStates.push('blur');\n }\n\n el.useStates(newStates);\n }\n\n function updateHoverLayerStatus(ecIns, ecModel) {\n var zr = ecIns._zr;\n var storage = zr.storage;\n var elCount = 0;\n storage.traverse(function (el) {\n if (!el.isGroup) {\n elCount++;\n }\n });\n\n if (elCount > ecModel.get('hoverLayerThreshold') && !env.node && !env.worker) {\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.eachRendered(function (el) {\n if (el.states.emphasis) {\n el.states.emphasis.hoverLayer = true;\n }\n });\n }\n });\n }\n }\n\n ;\n /**\n * Update chart and blend.\n */\n\n function updateBlend(seriesModel, chartView) {\n var blendMode = seriesModel.get('blendMode') || null;\n chartView.eachRendered(function (el) {\n // FIXME marker and other components\n if (!el.isGroup) {\n // DON'T mark the element dirty. In case element is incremental and don't want to rerender.\n el.style.blend = blendMode;\n }\n });\n }\n\n ;\n\n function updateZ(model, view) {\n if (model.preventAutoZ) {\n return;\n }\n\n var z = model.get('z') || 0;\n var zlevel = model.get('zlevel') || 0; // Set z and zlevel\n\n view.eachRendered(function (el) {\n doUpdateZ(el, z, zlevel, -Infinity); // Don't traverse the children because it has been traversed in _updateZ.\n\n return true;\n });\n }\n\n ;\n\n function doUpdateZ(el, z, zlevel, maxZ2) {\n // Group may also have textContent\n var label = el.getTextContent();\n var labelLine = el.getTextGuideLine();\n var isGroup = el.isGroup;\n\n if (isGroup) {\n // set z & zlevel of children elements of Group\n var children = el.childrenRef();\n\n for (var i = 0; i < children.length; i++) {\n maxZ2 = Math.max(doUpdateZ(children[i], z, zlevel, maxZ2), maxZ2);\n }\n } else {\n // not Group\n el.z = z;\n el.zlevel = zlevel;\n maxZ2 = Math.max(el.z2, maxZ2);\n } // always set z and zlevel if label/labelLine exists\n\n\n if (label) {\n label.z = z;\n label.zlevel = zlevel; // lift z2 of text content\n // TODO if el.emphasis.z2 is spcefied, what about textContent.\n\n isFinite(maxZ2) && (label.z2 = maxZ2 + 2);\n }\n\n if (labelLine) {\n var textGuideLineConfig = el.textGuideLineConfig;\n labelLine.z = z;\n labelLine.zlevel = zlevel;\n isFinite(maxZ2) && (labelLine.z2 = maxZ2 + (textGuideLineConfig && textGuideLineConfig.showAbove ? 1 : -1));\n }\n\n return maxZ2;\n } // Clear states without animation.\n // TODO States on component.\n\n\n function clearStates(model, view) {\n view.eachRendered(function (el) {\n // Not applied on removed elements, it may still in fading.\n if (graphic.isElementRemoved(el)) {\n return;\n }\n\n var textContent = el.getTextContent();\n var textGuide = el.getTextGuideLine();\n\n if (el.stateTransition) {\n el.stateTransition = null;\n }\n\n if (textContent && textContent.stateTransition) {\n textContent.stateTransition = null;\n }\n\n if (textGuide && textGuide.stateTransition) {\n textGuide.stateTransition = null;\n } // TODO If el is incremental.\n\n\n if (el.hasState()) {\n el.prevStates = el.currentStates;\n el.clearStates();\n } else if (el.prevStates) {\n el.prevStates = null;\n }\n });\n }\n\n function updateStates(model, view) {\n var stateAnimationModel = model.getModel('stateAnimation');\n var enableAnimation = model.isAnimationEnabled();\n var duration = stateAnimationModel.get('duration');\n var stateTransition = duration > 0 ? {\n duration: duration,\n delay: stateAnimationModel.get('delay'),\n easing: stateAnimationModel.get('easing') // additive: stateAnimationModel.get('additive')\n\n } : null;\n view.eachRendered(function (el) {\n if (el.states && el.states.emphasis) {\n // Not applied on removed elements, it may still in fading.\n if (graphic.isElementRemoved(el)) {\n return;\n }\n\n if (el instanceof graphic.Path) {\n savePathStates(el);\n } // Only updated on changed element. In case element is incremental and don't want to rerender.\n // TODO, a more proper way?\n\n\n if (el.__dirty) {\n var prevStates = el.prevStates; // Restore states without animation\n\n if (prevStates) {\n el.useStates(prevStates);\n }\n } // Update state transition and enable animation again.\n\n\n if (enableAnimation) {\n el.stateTransition = stateTransition;\n var textContent = el.getTextContent();\n var textGuide = el.getTextGuideLine(); // TODO Is it necessary to animate label?\n\n if (textContent) {\n textContent.stateTransition = stateTransition;\n }\n\n if (textGuide) {\n textGuide.stateTransition = stateTransition;\n }\n } // Use highlighted and selected flag to toggle states.\n\n\n if (el.__dirty) {\n applyElementStates(el);\n }\n }\n });\n }\n\n ;\n\n createExtensionAPI = function (ecIns) {\n return new (\n /** @class */\n function (_super) {\n __extends(class_1, _super);\n\n function class_1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n class_1.prototype.getCoordinateSystems = function () {\n return ecIns._coordSysMgr.getCoordinateSystems();\n };\n\n class_1.prototype.getComponentByElement = function (el) {\n while (el) {\n var modelInfo = el.__ecComponentInfo;\n\n if (modelInfo != null) {\n return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index);\n }\n\n el = el.parent;\n }\n };\n\n class_1.prototype.enterEmphasis = function (el, highlightDigit) {\n enterEmphasis(el, highlightDigit);\n markStatusToUpdate(ecIns);\n };\n\n class_1.prototype.leaveEmphasis = function (el, highlightDigit) {\n leaveEmphasis(el, highlightDigit);\n markStatusToUpdate(ecIns);\n };\n\n class_1.prototype.enterBlur = function (el) {\n enterBlur(el);\n markStatusToUpdate(ecIns);\n };\n\n class_1.prototype.leaveBlur = function (el) {\n leaveBlur(el);\n markStatusToUpdate(ecIns);\n };\n\n class_1.prototype.enterSelect = function (el) {\n enterSelect(el);\n markStatusToUpdate(ecIns);\n };\n\n class_1.prototype.leaveSelect = function (el) {\n leaveSelect(el);\n markStatusToUpdate(ecIns);\n };\n\n class_1.prototype.getModel = function () {\n return ecIns.getModel();\n };\n\n class_1.prototype.getViewOfComponentModel = function (componentModel) {\n return ecIns.getViewOfComponentModel(componentModel);\n };\n\n class_1.prototype.getViewOfSeriesModel = function (seriesModel) {\n return ecIns.getViewOfSeriesModel(seriesModel);\n };\n\n return class_1;\n }(ExtensionAPI))(ecIns);\n };\n\n enableConnect = function (chart) {\n function updateConnectedChartsStatus(charts, status) {\n for (var i = 0; i < charts.length; i++) {\n var otherChart = charts[i];\n otherChart[CONNECT_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[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) {\n if (event && event.escapeConnect) {\n return;\n }\n\n var action_1 = chart.makeActionFromEvent(event);\n var otherCharts_1 = [];\n each(instances, function (otherChart) {\n if (otherChart !== chart && otherChart.group === chart.group) {\n otherCharts_1.push(otherChart);\n }\n });\n updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING);\n each(otherCharts_1, function (otherChart) {\n if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) {\n otherChart.dispatchAction(action_1);\n }\n });\n updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED);\n }\n });\n });\n };\n }();\n\n return ECharts;\n}(Eventful);\n\nvar echartsProto = ECharts.prototype;\nechartsProto.on = createRegisterEventWithLowercaseECharts('on');\nechartsProto.off = createRegisterEventWithLowercaseECharts('off');\n/**\n * @deprecated\n */\n// @ts-ignore\n\nechartsProto.one = function (eventName, cb, ctx) {\n var self = this;\n deprecateLog('ECharts#one is deprecated.');\n\n function wrapped() {\n var args2 = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args2[_i] = arguments[_i];\n }\n\n cb && cb.apply && cb.apply(this, args2); // @ts-ignore\n\n self.off(eventName, wrapped);\n }\n\n ; // @ts-ignore\n\n this.on.call(this, eventName, wrapped, ctx);\n};\n\nvar MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];\n\nfunction disposedWarning(id) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Instance ' + id + ' has been disposed');\n }\n}\n\nvar actions = {};\n/**\n * Map eventType to actionType\n */\n\nvar eventActionMap = {};\nvar dataProcessorFuncs = [];\nvar optionPreprocessorFuncs = [];\nvar visualFuncs = [];\nvar themeStorage = {};\nvar loadingEffects = {};\nvar instances = {};\nvar connectedGroups = {};\nvar idBase = +new Date() - 0;\nvar groupIdBase = +new Date() - 0;\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\n/**\n * @param opts.devicePixelRatio Use window.devicePixelRatio by default\n * @param opts.renderer Can choose 'canvas' or 'svg' to render the chart.\n * @param opts.width Use clientWidth of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n * @param opts.height Use clientHeight of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n * @param opts.locale Specify the locale.\n * @param opts.useDirtyRect Enable dirty rectangle rendering or not.\n */\n\nexport function init(dom, theme, opts) {\n var isClient = !(opts && opts.ssr);\n\n if (isClient) {\n if (process.env.NODE_ENV !== 'production') {\n if (!dom) {\n throw new Error('Initialize failed: invalid dom.');\n }\n }\n\n var existInstance = getInstanceByDom(dom);\n\n if (existInstance) {\n if (process.env.NODE_ENV !== 'production') {\n warn('There is a chart instance already initialized on the dom.');\n }\n\n return existInstance;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isDom(dom) && dom.nodeName.toUpperCase() !== 'CANVAS' && (!dom.clientWidth && (!opts || opts.width == null) || !dom.clientHeight && (!opts || opts.height == null))) {\n warn('Can\\'t get DOM width or height. Please check ' + 'dom.clientWidth and dom.clientHeight. They should not be 0.' + 'For example, you may need to call this in the callback ' + 'of window.onload.');\n }\n }\n }\n\n var chart = new ECharts(dom, theme, opts);\n chart.id = 'ec_' + idBase++;\n instances[chart.id] = chart;\n isClient && modelUtil.setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\n enableConnect(chart);\n lifecycle.trigger('afterinit', chart);\n return chart;\n}\n/**\n * @usage\n * (A)\n * ```js\n * let chart1 = echarts.init(dom1);\n * let chart2 = echarts.init(dom2);\n * chart1.group = 'xxx';\n * chart2.group = 'xxx';\n * echarts.connect('xxx');\n * ```\n * (B)\n * ```js\n * let chart1 = echarts.init(dom1);\n * let chart2 = echarts.init(dom2);\n * echarts.connect('xxx', [chart1, chart2]);\n * ```\n */\n\nexport function connect(groupId) {\n // Is array of charts\n if (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 */\n\nexport function disConnect(groupId) {\n connectedGroups[groupId] = false;\n}\n/**\n * Alias and backward compatibility\n */\n\nexport var disconnect = disConnect;\n/**\n * Dispose a chart instance\n */\n\nexport function dispose(chart) {\n if (isString(chart)) {\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}\nexport function getInstanceByDom(dom) {\n return instances[modelUtil.getAttribute(dom, DOM_ATTRIBUTE_KEY)];\n}\nexport function getInstanceById(key) {\n return instances[key];\n}\n/**\n * Register theme\n */\n\nexport function registerTheme(name, theme) {\n themeStorage[name] = theme;\n}\n/**\n * Register option preprocessor\n */\n\nexport function registerPreprocessor(preprocessorFunc) {\n if (indexOf(optionPreprocessorFuncs, preprocessorFunc) < 0) {\n optionPreprocessorFuncs.push(preprocessorFunc);\n }\n}\nexport function registerProcessor(priority, processor) {\n normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT);\n}\n/**\n * Register postIniter\n * @param {Function} postInitFunc\n */\n\nexport function registerPostInit(postInitFunc) {\n registerUpdateLifecycle('afterinit', postInitFunc);\n}\n/**\n * Register postUpdater\n * @param {Function} postUpdateFunc\n */\n\nexport function registerPostUpdate(postUpdateFunc) {\n registerUpdateLifecycle('afterupdate', postUpdateFunc);\n}\nexport function registerUpdateLifecycle(name, cb) {\n lifecycle.on(name, cb);\n}\nexport function registerAction(actionInfo, eventName, action) {\n if (isFunction(eventName)) {\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;\n\n if (eventActionMap[eventName]) {\n // Already registered.\n return;\n } // Validate action type and event name.\n\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}\nexport function registerCoordinateSystem(type, coordSysCreator) {\n CoordinateSystemManager.register(type, coordSysCreator);\n}\n/**\n * Get dimensions of specified coordinate system.\n * @param {string} type\n * @return {Array.}\n */\n\nexport function getCoordinateSystemDimensions(type) {\n var coordSysCreator = CoordinateSystemManager.get(type);\n\n if (coordSysCreator) {\n return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();\n }\n}\nexport { registerLocale } from './locale.js';\n\nfunction registerLayout(priority, layoutTask) {\n normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\n}\n\nfunction registerVisual(priority, visualTask) {\n normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\n}\n\nexport { registerLayout, registerVisual };\nvar registeredTasks = [];\n\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\n if (isFunction(priority) || isObject(priority)) {\n fn = priority;\n priority = defaultPriority;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isNaN(priority) || priority == null) {\n throw new Error('Illegal priority');\n } // Check duplicate\n\n\n each(targetList, function (wrap) {\n assert(wrap.__raw !== fn);\n });\n } // Already registered\n\n\n if (indexOf(registeredTasks, fn) >= 0) {\n return;\n }\n\n registeredTasks.push(fn);\n var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\n stageHandler.__prio = priority;\n stageHandler.__raw = fn;\n targetList.push(stageHandler);\n}\n\nexport function registerLoading(name, loadingFx) {\n loadingEffects[name] = loadingFx;\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 *\n * @deprecated use setPlatformAPI({ createCanvas }) instead.\n *\n * @example\n * let Canvas = require('canvas');\n * let echarts = require('echarts');\n * echarts.setCanvasCreator(function () {\n * // Small size is enough.\n * return new Canvas(32, 32);\n * });\n */\n\nexport function setCanvasCreator(creator) {\n if (process.env.NODE_ENV !== 'production') {\n deprecateLog('setCanvasCreator is deprecated. Use setPlatformAPI({ createCanvas }) instead.');\n }\n\n setPlatformAPI({\n createCanvas: creator\n });\n}\n/**\n * The parameters and usage: see `geoSourceManager.registerMap`.\n * Compatible with previous `echarts.registerMap`.\n */\n\nexport function registerMap(mapName, geoJson, specialAreas) {\n var registerMap = getImpl('registerMap');\n registerMap && registerMap(mapName, geoJson, specialAreas);\n}\nexport function getMap(mapName) {\n var getMap = getImpl('getMap');\n return getMap && getMap(mapName);\n}\nexport var registerTransform = registerExternalTransform;\n/**\n * Globa dispatchAction to a specified chart instance.\n */\n// export function dispatchAction(payload: { chartId: string } & Payload, opt?: Parameters[1]) {\n// if (!payload || !payload.chartId) {\n// // Must have chartId to find chart\n// return;\n// }\n// const chart = instances[payload.chartId];\n// if (chart) {\n// chart.dispatchAction(payload, opt);\n// }\n// }\n// Builtin global visual\n\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask);\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask);\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask);\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask);\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask);\nregisterVisual(PRIORITY_VISUAL_DECAL, decal);\nregisterPreprocessor(backwardCompat);\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\nregisterLoading('default', loadingDefault); // Default actions\n\nregisterAction({\n type: HIGHLIGHT_ACTION_TYPE,\n event: HIGHLIGHT_ACTION_TYPE,\n update: HIGHLIGHT_ACTION_TYPE\n}, noop);\nregisterAction({\n type: DOWNPLAY_ACTION_TYPE,\n event: DOWNPLAY_ACTION_TYPE,\n update: DOWNPLAY_ACTION_TYPE\n}, noop);\nregisterAction({\n type: SELECT_ACTION_TYPE,\n event: SELECT_ACTION_TYPE,\n update: SELECT_ACTION_TYPE\n}, noop);\nregisterAction({\n type: UNSELECT_ACTION_TYPE,\n event: UNSELECT_ACTION_TYPE,\n update: UNSELECT_ACTION_TYPE\n}, noop);\nregisterAction({\n type: TOGGLE_SELECT_ACTION_TYPE,\n event: TOGGLE_SELECT_ACTION_TYPE,\n update: TOGGLE_SELECT_ACTION_TYPE\n}, 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\nexport var dataTool = {};"]},"metadata":{},"sourceType":"module"}