1 |
- {"version":3,"file":"js/chunk-vendors-76cd72f5.92c3891c.js","mappings":"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","sources":["webpack://app/./node_modules/echarts/lib/component/dataZoom.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/DataZoomView.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/InsideZoomView.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/SelectZoomView.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/SliderZoomView.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/dataZoomAction.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/helper.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/history.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/roams.js","webpack://app/./node_modules/echarts/lib/component/dataZoom/typeDefaulter.js","webpack://app/./node_modules/echarts/lib/component/dataset.js","webpack://app/./node_modules/echarts/lib/component/geo.js","webpack://app/./node_modules/echarts/lib/component/geo/GeoView.js","webpack://app/./node_modules/echarts/lib/component/graphic.js","webpack://app/./node_modules/echarts/lib/component/grid.js","webpack://app/./node_modules/echarts/lib/component/gridSimple.js"],"sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"./dataZoomSlider\");\n\nrequire(\"./dataZoomInside\");","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar helper = require(\"./helper\");\n\nvar AxisProxy = require(\"./AxisProxy\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar eachAxisDim = helper.eachAxisDim;\nvar DataZoomModel = echarts.extendComponentModel({\n type: 'dataZoom',\n dependencies: ['xAxis', 'yAxis', 'zAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series'],\n\n /**\n * @protected\n */\n defaultOption: {\n zlevel: 0,\n z: 4,\n // Higher than normal component (z: 2).\n orient: null,\n // Default auto by axisIndex. Possible value: 'horizontal', 'vertical'.\n xAxisIndex: null,\n // Default the first horizontal category axis.\n yAxisIndex: null,\n // Default the first vertical category axis.\n filterMode: 'filter',\n // Possible values: 'filter' or 'empty' or 'weakFilter'.\n // 'filter': data items which are out of window will be removed. This option is\n // applicable when filtering outliers. For each data item, it will be\n // filtered if one of the relevant dimensions is out of the window.\n // 'weakFilter': data items which are out of window will be removed. This option\n // is applicable when filtering outliers. For each data item, it will be\n // filtered only if all of the relevant dimensions are out of the same\n // side of the window.\n // 'empty': data items which are out of window will be set to empty.\n // This option is applicable when user should not neglect\n // that there are some data items out of window.\n // 'none': Do not filter.\n // Taking line chart as an example, line will be broken in\n // the filtered points when filterModel is set to 'empty', but\n // be connected when set to 'filter'.\n throttle: null,\n // Dispatch action by the fixed rate, avoid frequency.\n // default 100. Do not throttle when use null/undefined.\n // If animation === true and animationDurationUpdate > 0,\n // default value is 100, otherwise 20.\n start: 0,\n // Start percent. 0 ~ 100\n end: 100,\n // End percent. 0 ~ 100\n startValue: null,\n // Start value. If startValue specified, start is ignored.\n endValue: null,\n // End value. If endValue specified, end is ignored.\n minSpan: null,\n // 0 ~ 100\n maxSpan: null,\n // 0 ~ 100\n minValueSpan: null,\n // The range of dataZoom can not be smaller than that.\n maxValueSpan: null,\n // The range of dataZoom can not be larger than that.\n rangeMode: null // Array, can be 'value' or 'percent'.\n\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel) {\n /**\n * key like x_0, y_1\n * @private\n * @type {Object}\n */\n this._dataIntervalByAxis = {};\n /**\n * @private\n */\n\n this._dataInfo = {};\n /**\n * key like x_0, y_1\n * @private\n */\n\n this._axisProxies = {};\n /**\n * @readOnly\n */\n\n this.textStyleModel;\n /**\n * @private\n */\n\n this._autoThrottle = true;\n /**\n * It is `[rangeModeForMin, rangeModeForMax]`.\n * The optional values for `rangeMode`:\n * + `'value'` mode: the axis extent will always be determined by\n * `dataZoom.startValue` and `dataZoom.endValue`, despite\n * how data like and how `axis.min` and `axis.max` are.\n * + `'percent'` mode: `100` represents 100% of the `[dMin, dMax]`,\n * where `dMin` is `axis.min` if `axis.min` specified, otherwise `data.extent[0]`,\n * and `dMax` is `axis.max` if `axis.max` specified, otherwise `data.extent[1]`.\n * Axis extent will be determined by the result of the percent of `[dMin, dMax]`.\n *\n * For example, when users are using dynamic data (update data periodically via `setOption`),\n * if in `'value`' mode, the window will be kept in a fixed value range despite how\n * data are appended, while if in `'percent'` mode, whe window range will be changed alone with\n * the appended data (suppose `axis.min` and `axis.max` are not specified).\n *\n * @private\n */\n\n this._rangePropMode = ['percent', 'percent'];\n var inputRawOption = retrieveRawOption(option);\n /**\n * Suppose a \"main process\" start at the point that model prepared (that is,\n * model initialized or merged or method called in `action`).\n * We should keep the `main process` idempotent, that is, given a set of values\n * on `option`, we get the same result.\n *\n * But sometimes, values on `option` will be updated for providing users\n * a \"final calculated value\" (`dataZoomProcessor` will do that). Those value\n * should not be the base/input of the `main process`.\n *\n * So in that case we should save and keep the input of the `main process`\n * separately, called `settledOption`.\n *\n * For example, consider the case:\n * (Step_1) brush zoom the grid by `toolbox.dataZoom`,\n * where the original input `option.startValue`, `option.endValue` are earsed by\n * calculated value.\n * (Step)2) click the legend to hide and show a series,\n * where the new range is calculated by the earsed `startValue` and `endValue`,\n * which brings incorrect result.\n *\n * @readOnly\n */\n\n this.settledOption = inputRawOption;\n this.mergeDefaultAndTheme(option, ecModel);\n this.doInit(inputRawOption);\n },\n\n /**\n * @override\n */\n mergeOption: function (newOption) {\n var inputRawOption = retrieveRawOption(newOption); //FIX #2591\n\n zrUtil.merge(this.option, newOption, true);\n zrUtil.merge(this.settledOption, inputRawOption, true);\n this.doInit(inputRawOption);\n },\n\n /**\n * @protected\n */\n doInit: function (inputRawOption) {\n var thisOption = this.option; // Disable realtime view update if canvas is not supported.\n\n if (!env.canvasSupported) {\n thisOption.realtime = false;\n }\n\n this._setDefaultThrottle(inputRawOption);\n\n updateRangeUse(this, inputRawOption);\n var settledOption = this.settledOption;\n each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n // start/end has higher priority over startValue/endValue if they\n // both set, but we should make chart.setOption({endValue: 1000})\n // effective, rather than chart.setOption({endValue: 1000, end: null}).\n if (this._rangePropMode[index] === 'value') {\n thisOption[names[0]] = settledOption[names[0]] = null;\n } // Otherwise do nothing and use the merge result.\n\n }, this);\n this.textStyleModel = this.getModel('textStyle');\n\n this._resetTarget();\n\n this._giveAxisProxies();\n },\n\n /**\n * @private\n */\n _giveAxisProxies: function () {\n var axisProxies = this._axisProxies;\n this.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel, ecModel) {\n var axisModel = this.dependentModels[dimNames.axis][axisIndex]; // If exists, share axisProxy with other dataZoomModels.\n\n var axisProxy = axisModel.__dzAxisProxy || ( // Use the first dataZoomModel as the main model of axisProxy.\n axisModel.__dzAxisProxy = new AxisProxy(dimNames.name, axisIndex, this, ecModel)); // FIXME\n // dispose __dzAxisProxy\n\n axisProxies[dimNames.name + '_' + axisIndex] = axisProxy;\n }, this);\n },\n\n /**\n * @private\n */\n _resetTarget: function () {\n var thisOption = this.option;\n\n var autoMode = this._judgeAutoMode();\n\n eachAxisDim(function (dimNames) {\n var axisIndexName = dimNames.axisIndex;\n thisOption[axisIndexName] = modelUtil.normalizeToArray(thisOption[axisIndexName]);\n }, this);\n\n if (autoMode === 'axisIndex') {\n this._autoSetAxisIndex();\n } else if (autoMode === 'orient') {\n this._autoSetOrient();\n }\n },\n\n /**\n * @private\n */\n _judgeAutoMode: function () {\n // Auto set only works for setOption at the first time.\n // The following is user's reponsibility. So using merged\n // option is OK.\n var thisOption = this.option;\n var hasIndexSpecified = false;\n eachAxisDim(function (dimNames) {\n // When user set axisIndex as a empty array, we think that user specify axisIndex\n // but do not want use auto mode. Because empty array may be encountered when\n // some error occured.\n if (thisOption[dimNames.axisIndex] != null) {\n hasIndexSpecified = true;\n }\n }, this);\n var orient = thisOption.orient;\n\n if (orient == null && hasIndexSpecified) {\n return 'orient';\n } else if (!hasIndexSpecified) {\n if (orient == null) {\n thisOption.orient = 'horizontal';\n }\n\n return 'axisIndex';\n }\n },\n\n /**\n * @private\n */\n _autoSetAxisIndex: function () {\n var autoAxisIndex = true;\n var orient = this.get('orient', true);\n var thisOption = this.option;\n var dependentModels = this.dependentModels;\n\n if (autoAxisIndex) {\n // Find axis that parallel to dataZoom as default.\n var dimName = orient === 'vertical' ? 'y' : 'x';\n\n if (dependentModels[dimName + 'Axis'].length) {\n thisOption[dimName + 'AxisIndex'] = [0];\n autoAxisIndex = false;\n } else {\n each(dependentModels.singleAxis, function (singleAxisModel) {\n if (autoAxisIndex && singleAxisModel.get('orient', true) === orient) {\n thisOption.singleAxisIndex = [singleAxisModel.componentIndex];\n autoAxisIndex = false;\n }\n });\n }\n }\n\n if (autoAxisIndex) {\n // Find the first category axis as default. (consider polar)\n eachAxisDim(function (dimNames) {\n if (!autoAxisIndex) {\n return;\n }\n\n var axisIndices = [];\n var axisModels = this.dependentModels[dimNames.axis];\n\n if (axisModels.length && !axisIndices.length) {\n for (var i = 0, len = axisModels.length; i < len; i++) {\n if (axisModels[i].get('type') === 'category') {\n axisIndices.push(i);\n }\n }\n }\n\n thisOption[dimNames.axisIndex] = axisIndices;\n\n if (axisIndices.length) {\n autoAxisIndex = false;\n }\n }, this);\n }\n\n if (autoAxisIndex) {\n // FIXME\n // 这里是兼容ec2的写法(没指定xAxisIndex和yAxisIndex时把scatter和双数值轴折柱纳入dataZoom控制),\n // 但是实际是否需要Grid.js#getScaleByOption来判断(考虑time,log等axis type)?\n // If both dataZoom.xAxisIndex and dataZoom.yAxisIndex is not specified,\n // dataZoom component auto adopts series that reference to\n // both xAxis and yAxis which type is 'value'.\n this.ecModel.eachSeries(function (seriesModel) {\n if (this._isSeriesHasAllAxesTypeOf(seriesModel, 'value')) {\n eachAxisDim(function (dimNames) {\n var axisIndices = thisOption[dimNames.axisIndex];\n var axisIndex = seriesModel.get(dimNames.axisIndex);\n var axisId = seriesModel.get(dimNames.axisId);\n var axisModel = seriesModel.ecModel.queryComponents({\n mainType: dimNames.axis,\n index: axisIndex,\n id: axisId\n })[0];\n axisIndex = axisModel.componentIndex;\n\n if (zrUtil.indexOf(axisIndices, axisIndex) < 0) {\n axisIndices.push(axisIndex);\n }\n });\n }\n }, this);\n }\n },\n\n /**\n * @private\n */\n _autoSetOrient: function () {\n var dim; // Find the first axis\n\n this.eachTargetAxis(function (dimNames) {\n !dim && (dim = dimNames.name);\n }, this);\n this.option.orient = dim === 'y' ? 'vertical' : 'horizontal';\n },\n\n /**\n * @private\n */\n _isSeriesHasAllAxesTypeOf: function (seriesModel, axisType) {\n // FIXME\n // 需要series的xAxisIndex和yAxisIndex都首先自动设置上。\n // 例如series.type === scatter时。\n var is = true;\n eachAxisDim(function (dimNames) {\n var seriesAxisIndex = seriesModel.get(dimNames.axisIndex);\n var axisModel = this.dependentModels[dimNames.axis][seriesAxisIndex];\n\n if (!axisModel || axisModel.get('type') !== axisType) {\n is = false;\n }\n }, this);\n return is;\n },\n\n /**\n * @private\n */\n _setDefaultThrottle: function (inputRawOption) {\n // When first time user set throttle, auto throttle ends.\n if (inputRawOption.hasOwnProperty('throttle')) {\n this._autoThrottle = false;\n }\n\n if (this._autoThrottle) {\n var globalOption = this.ecModel.option;\n this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20;\n }\n },\n\n /**\n * @public\n */\n getFirstTargetAxisModel: function () {\n var firstAxisModel;\n eachAxisDim(function (dimNames) {\n if (firstAxisModel == null) {\n var indices = this.get(dimNames.axisIndex);\n\n if (indices.length) {\n firstAxisModel = this.dependentModels[dimNames.axis][indices[0]];\n }\n }\n }, this);\n return firstAxisModel;\n },\n\n /**\n * @public\n * @param {Function} callback param: axisModel, dimNames, axisIndex, dataZoomModel, ecModel\n */\n eachTargetAxis: function (callback, context) {\n var ecModel = this.ecModel;\n eachAxisDim(function (dimNames) {\n each(this.get(dimNames.axisIndex), function (axisIndex) {\n callback.call(context, dimNames, axisIndex, this, ecModel);\n }, this);\n }, this);\n },\n\n /**\n * @param {string} dimName\n * @param {number} axisIndex\n * @return {module:echarts/component/dataZoom/AxisProxy} If not found, return null/undefined.\n */\n getAxisProxy: function (dimName, axisIndex) {\n return this._axisProxies[dimName + '_' + axisIndex];\n },\n\n /**\n * @param {string} dimName\n * @param {number} axisIndex\n * @return {module:echarts/model/Model} If not found, return null/undefined.\n */\n getAxisModel: function (dimName, axisIndex) {\n var axisProxy = this.getAxisProxy(dimName, axisIndex);\n return axisProxy && axisProxy.getAxisModel();\n },\n\n /**\n * If not specified, set to undefined.\n *\n * @public\n * @param {Object} opt\n * @param {number} [opt.start]\n * @param {number} [opt.end]\n * @param {number} [opt.startValue]\n * @param {number} [opt.endValue]\n */\n setRawRange: function (opt) {\n var thisOption = this.option;\n var settledOption = this.settledOption;\n each([['start', 'startValue'], ['end', 'endValue']], function (names) {\n // Consider the pair <start, startValue>:\n // If one has value and the other one is `null/undefined`, we both set them\n // to `settledOption`. This strategy enables the feature to clear the original\n // value in `settledOption` to `null/undefined`.\n // But if both of them are `null/undefined`, we do not set them to `settledOption`\n // and keep `settledOption` with the original value. This strategy enables users to\n // only set <end or endValue> but not set <start or startValue> when calling\n // `dispatchAction`.\n // The pair <end, endValue> is treated in the same way.\n if (opt[names[0]] != null || opt[names[1]] != null) {\n thisOption[names[0]] = settledOption[names[0]] = opt[names[0]];\n thisOption[names[1]] = settledOption[names[1]] = opt[names[1]];\n }\n }, this);\n updateRangeUse(this, opt);\n },\n\n /**\n * @public\n * @param {Object} opt\n * @param {number} [opt.start]\n * @param {number} [opt.end]\n * @param {number} [opt.startValue]\n * @param {number} [opt.endValue]\n */\n setCalculatedRange: function (opt) {\n var option = this.option;\n each(['start', 'startValue', 'end', 'endValue'], function (name) {\n option[name] = opt[name];\n });\n },\n\n /**\n * @public\n * @return {Array.<number>} [startPercent, endPercent]\n */\n getPercentRange: function () {\n var axisProxy = this.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n return axisProxy.getDataPercentWindow();\n }\n },\n\n /**\n * @public\n * For example, chart.getModel().getComponent('dataZoom').getValueRange('y', 0);\n *\n * @param {string} [axisDimName]\n * @param {number} [axisIndex]\n * @return {Array.<number>} [startValue, endValue] value can only be '-' or finite number.\n */\n getValueRange: function (axisDimName, axisIndex) {\n if (axisDimName == null && axisIndex == null) {\n var axisProxy = this.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n return axisProxy.getDataValueWindow();\n }\n } else {\n return this.getAxisProxy(axisDimName, axisIndex).getDataValueWindow();\n }\n },\n\n /**\n * @public\n * @param {module:echarts/model/Model} [axisModel] If axisModel given, find axisProxy\n * corresponding to the axisModel\n * @return {module:echarts/component/dataZoom/AxisProxy}\n */\n findRepresentativeAxisProxy: function (axisModel) {\n if (axisModel) {\n return axisModel.__dzAxisProxy;\n } // Find the first hosted axisProxy\n\n\n var axisProxies = this._axisProxies;\n\n for (var key in axisProxies) {\n if (axisProxies.hasOwnProperty(key) && axisProxies[key].hostedBy(this)) {\n return axisProxies[key];\n }\n } // If no hosted axis find not hosted axisProxy.\n // Consider this case: dataZoomModel1 and dataZoomModel2 control the same axis,\n // and the option.start or option.end settings are different. The percentRange\n // should follow axisProxy.\n // (We encounter this problem in toolbox data zoom.)\n\n\n for (var key in axisProxies) {\n if (axisProxies.hasOwnProperty(key) && !axisProxies[key].hostedBy(this)) {\n return axisProxies[key];\n }\n }\n },\n\n /**\n * @return {Array.<string>}\n */\n getRangePropMode: function () {\n return this._rangePropMode.slice();\n }\n});\n/**\n * Retrieve the those raw params from option, which will be cached separately.\n * becasue they will be overwritten by normalized/calculated values in the main\n * process.\n */\n\nfunction retrieveRawOption(option) {\n var ret = {};\n each(['start', 'end', 'startValue', 'endValue', 'throttle'], function (name) {\n option.hasOwnProperty(name) && (ret[name] = option[name]);\n });\n return ret;\n}\n\nfunction updateRangeUse(dataZoomModel, inputRawOption) {\n var rangePropMode = dataZoomModel._rangePropMode;\n var rangeModeInOption = dataZoomModel.get('rangeMode');\n each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n var percentSpecified = inputRawOption[names[0]] != null;\n var valueSpecified = inputRawOption[names[1]] != null;\n\n if (percentSpecified && !valueSpecified) {\n rangePropMode[index] = 'percent';\n } else if (!percentSpecified && valueSpecified) {\n rangePropMode[index] = 'value';\n } else if (rangeModeInOption) {\n rangePropMode[index] = rangeModeInOption[index];\n } else if (percentSpecified) {\n // percentSpecified && valueSpecified\n rangePropMode[index] = 'percent';\n } // else remain its original setting.\n\n });\n}\n\nvar _default = DataZoomModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar ComponentView = require(\"../../view/Component\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = ComponentView.extend({\n type: 'dataZoom',\n render: function (dataZoomModel, ecModel, api, payload) {\n this.dataZoomModel = dataZoomModel;\n this.ecModel = ecModel;\n this.api = api;\n },\n\n /**\n * Find the first target coordinate system.\n *\n * @protected\n * @return {Object} {\n * grid: [\n * {model: coord0, axisModels: [axis1, axis3], coordIndex: 1},\n * {model: coord1, axisModels: [axis0, axis2], coordIndex: 0},\n * ...\n * ], // cartesians must not be null/undefined.\n * polar: [\n * {model: coord0, axisModels: [axis4], coordIndex: 0},\n * ...\n * ], // polars must not be null/undefined.\n * singleAxis: [\n * {model: coord0, axisModels: [], coordIndex: 0}\n * ]\n */\n getTargetCoordInfo: function () {\n var dataZoomModel = this.dataZoomModel;\n var ecModel = this.ecModel;\n var coordSysLists = {};\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) {\n var axisModel = ecModel.getComponent(dimNames.axis, axisIndex);\n\n if (axisModel) {\n var coordModel = axisModel.getCoordSysModel();\n coordModel && save(coordModel, axisModel, coordSysLists[coordModel.mainType] || (coordSysLists[coordModel.mainType] = []), coordModel.componentIndex);\n }\n }, this);\n\n function save(coordModel, axisModel, store, coordIndex) {\n var item;\n\n for (var i = 0; i < store.length; i++) {\n if (store[i].model === coordModel) {\n item = store[i];\n break;\n }\n }\n\n if (!item) {\n store.push(item = {\n model: coordModel,\n axisModels: [],\n coordIndex: coordIndex\n });\n }\n\n item.axisModels.push(axisModel);\n }\n\n return coordSysLists;\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar DataZoomModel = require(\"./DataZoomModel\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = DataZoomModel.extend({\n type: 'dataZoom.inside',\n\n /**\n * @protected\n */\n defaultOption: {\n disabled: false,\n // Whether disable this inside zoom.\n zoomLock: false,\n // Whether disable zoom but only pan.\n zoomOnMouseWheel: true,\n // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n moveOnMouseMove: true,\n // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n moveOnMouseWheel: false,\n // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n preventDefaultMouseMove: true\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar DataZoomView = require(\"./DataZoomView\");\n\nvar sliderMove = require(\"../helper/sliderMove\");\n\nvar roams = require(\"./roams\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar bind = zrUtil.bind;\nvar InsideZoomView = DataZoomView.extend({\n type: 'dataZoom.inside',\n\n /**\n * @override\n */\n init: function (ecModel, api) {\n /**\n * 'throttle' is used in this.dispatchAction, so we save range\n * to avoid missing some 'pan' info.\n * @private\n * @type {Array.<number>}\n */\n this._range;\n },\n\n /**\n * @override\n */\n render: function (dataZoomModel, ecModel, api, payload) {\n InsideZoomView.superApply(this, 'render', arguments); // Hence the `throttle` util ensures to preserve command order,\n // here simply updating range all the time will not cause missing\n // any of the the roam change.\n\n this._range = dataZoomModel.getPercentRange(); // Reset controllers.\n\n zrUtil.each(this.getTargetCoordInfo(), function (coordInfoList, coordSysName) {\n var allCoordIds = zrUtil.map(coordInfoList, function (coordInfo) {\n return roams.generateCoordId(coordInfo.model);\n });\n zrUtil.each(coordInfoList, function (coordInfo) {\n var coordModel = coordInfo.model;\n var getRange = {};\n zrUtil.each(['pan', 'zoom', 'scrollMove'], function (eventName) {\n getRange[eventName] = bind(roamHandlers[eventName], this, coordInfo, coordSysName);\n }, this);\n roams.register(api, {\n coordId: roams.generateCoordId(coordModel),\n allCoordIds: allCoordIds,\n containsPoint: function (e, x, y) {\n return coordModel.coordinateSystem.containPoint([x, y]);\n },\n dataZoomId: dataZoomModel.id,\n dataZoomModel: dataZoomModel,\n getRange: getRange\n });\n }, this);\n }, this);\n },\n\n /**\n * @override\n */\n dispose: function () {\n roams.unregister(this.api, this.dataZoomModel.id);\n InsideZoomView.superApply(this, 'dispose', arguments);\n this._range = null;\n }\n});\nvar roamHandlers = {\n /**\n * @this {module:echarts/component/dataZoom/InsideZoomView}\n */\n zoom: function (coordInfo, coordSysName, controller, e) {\n var lastRange = this._range;\n var range = lastRange.slice(); // Calculate transform by the first axis.\n\n var axisModel = coordInfo.axisModels[0];\n\n if (!axisModel) {\n return;\n }\n\n var directionInfo = getDirectionInfo[coordSysName](null, [e.originX, e.originY], axisModel, controller, coordInfo);\n var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0];\n var scale = Math.max(1 / e.scale, 0);\n range[0] = (range[0] - percentPoint) * scale + percentPoint;\n range[1] = (range[1] - percentPoint) * scale + percentPoint; // Restrict range.\n\n var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);\n this._range = range;\n\n if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\n return range;\n }\n },\n\n /**\n * @this {module:echarts/component/dataZoom/InsideZoomView}\n */\n pan: makeMover(function (range, axisModel, coordInfo, coordSysName, controller, e) {\n var directionInfo = getDirectionInfo[coordSysName]([e.oldX, e.oldY], [e.newX, e.newY], axisModel, controller, coordInfo);\n return directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength;\n }),\n\n /**\n * @this {module:echarts/component/dataZoom/InsideZoomView}\n */\n scrollMove: makeMover(function (range, axisModel, coordInfo, coordSysName, controller, e) {\n var directionInfo = getDirectionInfo[coordSysName]([0, 0], [e.scrollDelta, e.scrollDelta], axisModel, controller, coordInfo);\n return directionInfo.signal * (range[1] - range[0]) * e.scrollDelta;\n })\n};\n\nfunction makeMover(getPercentDelta) {\n return function (coordInfo, coordSysName, controller, e) {\n var lastRange = this._range;\n var range = lastRange.slice(); // Calculate transform by the first axis.\n\n var axisModel = coordInfo.axisModels[0];\n\n if (!axisModel) {\n return;\n }\n\n var percentDelta = getPercentDelta(range, axisModel, coordInfo, coordSysName, controller, e);\n sliderMove(percentDelta, range, [0, 100], 'all');\n this._range = range;\n\n if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\n return range;\n }\n };\n}\n\nvar getDirectionInfo = {\n grid: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n var axis = axisModel.axis;\n var ret = {};\n var rect = coordInfo.model.coordinateSystem.getRect();\n oldPoint = oldPoint || [0, 0];\n\n if (axis.dim === 'x') {\n ret.pixel = newPoint[0] - oldPoint[0];\n ret.pixelLength = rect.width;\n ret.pixelStart = rect.x;\n ret.signal = axis.inverse ? 1 : -1;\n } else {\n // axis.dim === 'y'\n ret.pixel = newPoint[1] - oldPoint[1];\n ret.pixelLength = rect.height;\n ret.pixelStart = rect.y;\n ret.signal = axis.inverse ? -1 : 1;\n }\n\n return ret;\n },\n polar: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n var axis = axisModel.axis;\n var ret = {};\n var polar = coordInfo.model.coordinateSystem;\n var radiusExtent = polar.getRadiusAxis().getExtent();\n var angleExtent = polar.getAngleAxis().getExtent();\n oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0];\n newPoint = polar.pointToCoord(newPoint);\n\n if (axisModel.mainType === 'radiusAxis') {\n ret.pixel = newPoint[0] - oldPoint[0]; // ret.pixelLength = Math.abs(radiusExtent[1] - radiusExtent[0]);\n // ret.pixelStart = Math.min(radiusExtent[0], radiusExtent[1]);\n\n ret.pixelLength = radiusExtent[1] - radiusExtent[0];\n ret.pixelStart = radiusExtent[0];\n ret.signal = axis.inverse ? 1 : -1;\n } else {\n // 'angleAxis'\n ret.pixel = newPoint[1] - oldPoint[1]; // ret.pixelLength = Math.abs(angleExtent[1] - angleExtent[0]);\n // ret.pixelStart = Math.min(angleExtent[0], angleExtent[1]);\n\n ret.pixelLength = angleExtent[1] - angleExtent[0];\n ret.pixelStart = angleExtent[0];\n ret.signal = axis.inverse ? -1 : 1;\n }\n\n return ret;\n },\n singleAxis: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n var axis = axisModel.axis;\n var rect = coordInfo.model.coordinateSystem.getRect();\n var ret = {};\n oldPoint = oldPoint || [0, 0];\n\n if (axis.orient === 'horizontal') {\n ret.pixel = newPoint[0] - oldPoint[0];\n ret.pixelLength = rect.width;\n ret.pixelStart = rect.x;\n ret.signal = axis.inverse ? 1 : -1;\n } else {\n // 'vertical'\n ret.pixel = newPoint[1] - oldPoint[1];\n ret.pixelLength = rect.height;\n ret.pixelStart = rect.y;\n ret.signal = axis.inverse ? -1 : 1;\n }\n\n return ret;\n }\n};\nvar _default = InsideZoomView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar DataZoomModel = require(\"./DataZoomModel\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = DataZoomModel.extend({\n type: 'dataZoom.select'\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar DataZoomView = require(\"./DataZoomView\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = DataZoomView.extend({\n type: 'dataZoom.select'\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar DataZoomModel = require(\"./DataZoomModel\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar SliderZoomModel = DataZoomModel.extend({\n type: 'dataZoom.slider',\n layoutMode: 'box',\n\n /**\n * @protected\n */\n defaultOption: {\n show: true,\n // ph => placeholder. Using placehoder here because\n // deault value can only be drived in view stage.\n right: 'ph',\n // Default align to grid rect.\n top: 'ph',\n // Default align to grid rect.\n width: 'ph',\n // Default align to grid rect.\n height: 'ph',\n // Default align to grid rect.\n left: null,\n // Default align to grid rect.\n bottom: null,\n // Default align to grid rect.\n backgroundColor: 'rgba(47,69,84,0)',\n // Background of slider zoom component.\n // dataBackgroundColor: '#ddd', // Background coor of data shadow and border of box,\n // highest priority, remain for compatibility of\n // previous version, but not recommended any more.\n dataBackground: {\n lineStyle: {\n color: '#2f4554',\n width: 0.5,\n opacity: 0.3\n },\n areaStyle: {\n color: 'rgba(47,69,84,0.3)',\n opacity: 0.3\n }\n },\n borderColor: '#ddd',\n // border color of the box. For compatibility,\n // if dataBackgroundColor is set, borderColor\n // is ignored.\n fillerColor: 'rgba(167,183,204,0.4)',\n // Color of selected area.\n // handleColor: 'rgba(89,170,216,0.95)', // Color of handle.\n // handleIcon: 'path://M4.9,17.8c0-1.4,4.5-10.5,5.5-12.4c0-0.1,0.6-1.1,0.9-1.1c0.4,0,0.9,1,0.9,1.1c1.1,2.2,5.4,11,5.4,12.4v17.8c0,1.5-0.6,2.1-1.3,2.1H6.1c-0.7,0-1.3-0.6-1.3-2.1V17.8z',\n\n /* eslint-disable */\n handleIcon: 'M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z',\n\n /* eslint-enable */\n // Percent of the slider height\n handleSize: '100%',\n handleStyle: {\n color: '#a7b7cc'\n },\n labelPrecision: null,\n labelFormatter: null,\n showDetail: true,\n showDataShadow: 'auto',\n // Default auto decision.\n realtime: true,\n zoomLock: false,\n // Whether disable zoom.\n textStyle: {\n color: '#333'\n }\n }\n});\nvar _default = SliderZoomModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar throttle = require(\"../../util/throttle\");\n\nvar DataZoomView = require(\"./DataZoomView\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar layout = require(\"../../util/layout\");\n\nvar sliderMove = require(\"../helper/sliderMove\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar Rect = graphic.Rect;\nvar linearMap = numberUtil.linearMap;\nvar asc = numberUtil.asc;\nvar bind = zrUtil.bind;\nvar each = zrUtil.each; // Constants\n\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\nvar DEFAULT_FILLER_SIZE = 30;\nvar HORIZONTAL = 'horizontal';\nvar VERTICAL = 'vertical';\nvar LABEL_GAP = 5;\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\nvar SliderZoomView = DataZoomView.extend({\n type: 'dataZoom.slider',\n init: function (ecModel, api) {\n /**\n * @private\n * @type {Object}\n */\n this._displayables = {};\n /**\n * @private\n * @type {string}\n */\n\n this._orient;\n /**\n * [0, 100]\n * @private\n */\n\n this._range;\n /**\n * [coord of the first handle, coord of the second handle]\n * @private\n */\n\n this._handleEnds;\n /**\n * [length, thick]\n * @private\n * @type {Array.<number>}\n */\n\n this._size;\n /**\n * @private\n * @type {number}\n */\n\n this._handleWidth;\n /**\n * @private\n * @type {number}\n */\n\n this._handleHeight;\n /**\n * @private\n */\n\n this._location;\n /**\n * @private\n */\n\n this._dragging;\n /**\n * @private\n */\n\n this._dataShadowInfo;\n this.api = api;\n },\n\n /**\n * @override\n */\n render: function (dataZoomModel, ecModel, api, payload) {\n SliderZoomView.superApply(this, 'render', arguments);\n throttle.createOrUpdate(this, '_dispatchZoomAction', this.dataZoomModel.get('throttle'), 'fixRate');\n this._orient = dataZoomModel.get('orient');\n\n if (this.dataZoomModel.get('show') === false) {\n this.group.removeAll();\n return;\n } // Notice: this._resetInterval() should not be executed when payload.type\n // is 'dataZoom', origin this._range should be maintained, otherwise 'pan'\n // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction,\n\n\n if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\n this._buildView();\n }\n\n this._updateView();\n },\n\n /**\n * @override\n */\n remove: function () {\n SliderZoomView.superApply(this, 'remove', arguments);\n throttle.clear(this, '_dispatchZoomAction');\n },\n\n /**\n * @override\n */\n dispose: function () {\n SliderZoomView.superApply(this, 'dispose', arguments);\n throttle.clear(this, '_dispatchZoomAction');\n },\n _buildView: function () {\n var thisGroup = this.group;\n thisGroup.removeAll();\n\n this._resetLocation();\n\n this._resetInterval();\n\n var barGroup = this._displayables.barGroup = new graphic.Group();\n\n this._renderBackground();\n\n this._renderHandle();\n\n this._renderDataShadow();\n\n thisGroup.add(barGroup);\n\n this._positionGroup();\n },\n\n /**\n * @private\n */\n _resetLocation: function () {\n var dataZoomModel = this.dataZoomModel;\n var api = this.api; // If some of x/y/width/height are not specified,\n // auto-adapt according to target grid.\n\n var coordRect = this._findCoordRect();\n\n var ecSize = {\n width: api.getWidth(),\n height: api.getHeight()\n }; // Default align by coordinate system rect.\n\n var positionInfo = this._orient === HORIZONTAL ? {\n // Why using 'right', because right should be used in vertical,\n // and it is better to be consistent for dealing with position param merge.\n right: ecSize.width - coordRect.x - coordRect.width,\n top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP,\n width: coordRect.width,\n height: DEFAULT_FILLER_SIZE\n } : {\n // vertical\n right: DEFAULT_LOCATION_EDGE_GAP,\n top: coordRect.y,\n width: DEFAULT_FILLER_SIZE,\n height: coordRect.height\n }; // Do not write back to option and replace value 'ph', because\n // the 'ph' value should be recalculated when resize.\n\n var layoutParams = layout.getLayoutParams(dataZoomModel.option); // Replace the placeholder value.\n\n zrUtil.each(['right', 'top', 'width', 'height'], function (name) {\n if (layoutParams[name] === 'ph') {\n layoutParams[name] = positionInfo[name];\n }\n });\n var layoutRect = layout.getLayoutRect(layoutParams, ecSize, dataZoomModel.padding);\n this._location = {\n x: layoutRect.x,\n y: layoutRect.y\n };\n this._size = [layoutRect.width, layoutRect.height];\n this._orient === VERTICAL && this._size.reverse();\n },\n\n /**\n * @private\n */\n _positionGroup: function () {\n var thisGroup = this.group;\n var location = this._location;\n var orient = this._orient; // Just use the first axis to determine mapping.\n\n var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\n var inverse = targetAxisModel && targetAxisModel.get('inverse');\n var barGroup = this._displayables.barGroup;\n var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; // Transform barGroup.\n\n barGroup.attr(orient === HORIZONTAL && !inverse ? {\n scale: otherAxisInverse ? [1, 1] : [1, -1]\n } : orient === HORIZONTAL && inverse ? {\n scale: otherAxisInverse ? [-1, 1] : [-1, -1]\n } : orient === VERTICAL && !inverse ? {\n scale: otherAxisInverse ? [1, -1] : [1, 1],\n rotation: Math.PI / 2 // Dont use Math.PI, considering shadow direction.\n\n } : {\n scale: otherAxisInverse ? [-1, -1] : [-1, 1],\n rotation: Math.PI / 2\n }); // Position barGroup\n\n var rect = thisGroup.getBoundingRect([barGroup]);\n thisGroup.attr('position', [location.x - rect.x, location.y - rect.y]);\n },\n\n /**\n * @private\n */\n _getViewExtent: function () {\n return [0, this._size[0]];\n },\n _renderBackground: function () {\n var dataZoomModel = this.dataZoomModel;\n var size = this._size;\n var barGroup = this._displayables.barGroup;\n barGroup.add(new Rect({\n silent: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: dataZoomModel.get('backgroundColor')\n },\n z2: -40\n })); // Click panel, over shadow, below handles.\n\n barGroup.add(new Rect({\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: 'transparent'\n },\n z2: 0,\n onclick: zrUtil.bind(this._onClickPanelClick, this)\n }));\n },\n _renderDataShadow: function () {\n var info = this._dataShadowInfo = this._prepareDataShadowInfo();\n\n if (!info) {\n return;\n }\n\n var size = this._size;\n var seriesModel = info.series;\n var data = seriesModel.getRawData();\n var otherDim = seriesModel.getShadowDim ? seriesModel.getShadowDim() // @see candlestick\n : info.otherDim;\n\n if (otherDim == null) {\n return;\n }\n\n var otherDataExtent = data.getDataExtent(otherDim); // Nice extent.\n\n var otherOffset = (otherDataExtent[1] - otherDataExtent[0]) * 0.3;\n otherDataExtent = [otherDataExtent[0] - otherOffset, otherDataExtent[1] + otherOffset];\n var otherShadowExtent = [0, size[1]];\n var thisShadowExtent = [0, size[0]];\n var areaPoints = [[size[0], 0], [0, 0]];\n var linePoints = [];\n var step = thisShadowExtent[1] / (data.count() - 1);\n var thisCoord = 0; // Optimize for large data shadow\n\n var stride = Math.round(data.count() / size[0]);\n var lastIsEmpty;\n data.each([otherDim], function (value, index) {\n if (stride > 0 && index % stride) {\n thisCoord += step;\n return;\n } // FIXME\n // Should consider axis.min/axis.max when drawing dataShadow.\n // FIXME\n // 应该使用统一的空判断?还是在list里进行空判断?\n\n\n var isEmpty = value == null || isNaN(value) || value === ''; // See #4235.\n\n var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent, otherShadowExtent, true); // Attempt to draw data shadow precisely when there are empty value.\n\n if (isEmpty && !lastIsEmpty && index) {\n areaPoints.push([areaPoints[areaPoints.length - 1][0], 0]);\n linePoints.push([linePoints[linePoints.length - 1][0], 0]);\n } else if (!isEmpty && lastIsEmpty) {\n areaPoints.push([thisCoord, 0]);\n linePoints.push([thisCoord, 0]);\n }\n\n areaPoints.push([thisCoord, otherCoord]);\n linePoints.push([thisCoord, otherCoord]);\n thisCoord += step;\n lastIsEmpty = isEmpty;\n });\n var dataZoomModel = this.dataZoomModel; // var dataBackgroundModel = dataZoomModel.getModel('dataBackground');\n\n this._displayables.barGroup.add(new graphic.Polygon({\n shape: {\n points: areaPoints\n },\n style: zrUtil.defaults({\n fill: dataZoomModel.get('dataBackgroundColor')\n }, dataZoomModel.getModel('dataBackground.areaStyle').getAreaStyle()),\n silent: true,\n z2: -20\n }));\n\n this._displayables.barGroup.add(new graphic.Polyline({\n shape: {\n points: linePoints\n },\n style: dataZoomModel.getModel('dataBackground.lineStyle').getLineStyle(),\n silent: true,\n z2: -19\n }));\n },\n _prepareDataShadowInfo: function () {\n var dataZoomModel = this.dataZoomModel;\n var showDataShadow = dataZoomModel.get('showDataShadow');\n\n if (showDataShadow === false) {\n return;\n } // Find a representative series.\n\n\n var result;\n var ecModel = this.ecModel;\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) {\n var seriesModels = dataZoomModel.getAxisProxy(dimNames.name, axisIndex).getTargetSeriesModels();\n zrUtil.each(seriesModels, function (seriesModel) {\n if (result) {\n return;\n }\n\n if (showDataShadow !== true && zrUtil.indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\n return;\n }\n\n var thisAxis = ecModel.getComponent(dimNames.axis, axisIndex).axis;\n var otherDim = getOtherDim(dimNames.name);\n var otherAxisInverse;\n var coordSys = seriesModel.coordinateSystem;\n\n if (otherDim != null && coordSys.getOtherAxis) {\n otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\n }\n\n otherDim = seriesModel.getData().mapDimension(otherDim);\n result = {\n thisAxis: thisAxis,\n series: seriesModel,\n thisDim: dimNames.name,\n otherDim: otherDim,\n otherAxisInverse: otherAxisInverse\n };\n }, this);\n }, this);\n return result;\n },\n _renderHandle: function () {\n var displaybles = this._displayables;\n var handles = displaybles.handles = [];\n var handleLabels = displaybles.handleLabels = [];\n var barGroup = this._displayables.barGroup;\n var size = this._size;\n var dataZoomModel = this.dataZoomModel;\n barGroup.add(displaybles.filler = new Rect({\n draggable: true,\n cursor: getCursor(this._orient),\n drift: bind(this._onDragMove, this, 'all'),\n ondragstart: bind(this._showDataInfo, this, true),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false),\n style: {\n fill: dataZoomModel.get('fillerColor'),\n textPosition: 'inside'\n }\n })); // Frame border.\n\n barGroup.add(new Rect({\n silent: true,\n subPixelOptimize: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n stroke: dataZoomModel.get('dataBackgroundColor') || dataZoomModel.get('borderColor'),\n lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\n fill: 'rgba(0,0,0,0)'\n }\n }));\n each([0, 1], function (handleIndex) {\n var path = graphic.createIcon(dataZoomModel.get('handleIcon'), {\n cursor: getCursor(this._orient),\n draggable: true,\n drift: bind(this._onDragMove, this, handleIndex),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false)\n }, {\n x: -1,\n y: 0,\n width: 2,\n height: 2\n });\n var bRect = path.getBoundingRect();\n this._handleHeight = numberUtil.parsePercent(dataZoomModel.get('handleSize'), this._size[1]);\n this._handleWidth = bRect.width / bRect.height * this._handleHeight;\n path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\n var handleColor = dataZoomModel.get('handleColor'); // Compatitable with previous version\n\n if (handleColor != null) {\n path.style.fill = handleColor;\n }\n\n barGroup.add(handles[handleIndex] = path);\n var textStyleModel = dataZoomModel.textStyleModel;\n this.group.add(handleLabels[handleIndex] = new graphic.Text({\n silent: true,\n invisible: true,\n style: {\n x: 0,\n y: 0,\n text: '',\n textVerticalAlign: 'middle',\n textAlign: 'center',\n textFill: textStyleModel.getTextColor(),\n textFont: textStyleModel.getFont()\n },\n z2: 10\n }));\n }, this);\n },\n\n /**\n * @private\n */\n _resetInterval: function () {\n var range = this._range = this.dataZoomModel.getPercentRange();\n\n var viewExtent = this._getViewExtent();\n\n this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)];\n },\n\n /**\n * @private\n * @param {(number|string)} handleIndex 0 or 1 or 'all'\n * @param {number} delta\n * @return {boolean} changed\n */\n _updateInterval: function (handleIndex, delta) {\n var dataZoomModel = this.dataZoomModel;\n var handleEnds = this._handleEnds;\n\n var viewExtend = this._getViewExtent();\n\n var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n var percentExtent = [0, 100];\n sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\n var lastRange = this._range;\n var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]);\n return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];\n },\n\n /**\n * @private\n */\n _updateView: function (nonRealtime) {\n var displaybles = this._displayables;\n var handleEnds = this._handleEnds;\n var handleInterval = asc(handleEnds.slice());\n var size = this._size;\n each([0, 1], function (handleIndex) {\n // Handles\n var handle = displaybles.handles[handleIndex];\n var handleHeight = this._handleHeight;\n handle.attr({\n scale: [handleHeight / 2, handleHeight / 2],\n position: [handleEnds[handleIndex], size[1] / 2 - handleHeight / 2]\n });\n }, this); // Filler\n\n displaybles.filler.setShape({\n x: handleInterval[0],\n y: 0,\n width: handleInterval[1] - handleInterval[0],\n height: size[1]\n });\n\n this._updateDataInfo(nonRealtime);\n },\n\n /**\n * @private\n */\n _updateDataInfo: function (nonRealtime) {\n var dataZoomModel = this.dataZoomModel;\n var displaybles = this._displayables;\n var handleLabels = displaybles.handleLabels;\n var orient = this._orient;\n var labelTexts = ['', '']; // FIXME\n // date型,支持formatter,autoformatter(ec2 date.getAutoFormatter)\n\n if (dataZoomModel.get('showDetail')) {\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n var axis = axisProxy.getAxisModel().axis;\n var range = this._range;\n var dataInterval = nonRealtime // See #4434, data and axis are not processed and reset yet in non-realtime mode.\n ? axisProxy.calculateDataWindow({\n start: range[0],\n end: range[1]\n }).valueWindow : axisProxy.getDataValueWindow();\n labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];\n }\n }\n\n var orderedHandleEnds = asc(this._handleEnds.slice());\n setLabel.call(this, 0);\n setLabel.call(this, 1);\n\n function setLabel(handleIndex) {\n // Label\n // Text should not transform by barGroup.\n // Ignore handlers transform\n var barTransform = graphic.getTransform(displaybles.handles[handleIndex].parent, this.group);\n var direction = graphic.transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\n var offset = this._handleWidth / 2 + LABEL_GAP;\n var textPoint = graphic.applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform);\n handleLabels[handleIndex].setStyle({\n x: textPoint[0],\n y: textPoint[1],\n textVerticalAlign: orient === HORIZONTAL ? 'middle' : direction,\n textAlign: orient === HORIZONTAL ? direction : 'center',\n text: labelTexts[handleIndex]\n });\n }\n },\n\n /**\n * @private\n */\n _formatLabel: function (value, axis) {\n var dataZoomModel = this.dataZoomModel;\n var labelFormatter = dataZoomModel.get('labelFormatter');\n var labelPrecision = dataZoomModel.get('labelPrecision');\n\n if (labelPrecision == null || labelPrecision === 'auto') {\n labelPrecision = axis.getPixelPrecision();\n }\n\n var valueStr = value == null || isNaN(value) ? '' // FIXME Glue code\n : axis.type === 'category' || axis.type === 'time' ? axis.scale.getLabel(Math.round(value)) // param of toFixed should less then 20.\n : value.toFixed(Math.min(labelPrecision, 20));\n return zrUtil.isFunction(labelFormatter) ? labelFormatter(value, valueStr) : zrUtil.isString(labelFormatter) ? labelFormatter.replace('{value}', valueStr) : valueStr;\n },\n\n /**\n * @private\n * @param {boolean} showOrHide true: show, false: hide\n */\n _showDataInfo: function (showOrHide) {\n // Always show when drgging.\n showOrHide = this._dragging || showOrHide;\n var handleLabels = this._displayables.handleLabels;\n handleLabels[0].attr('invisible', !showOrHide);\n handleLabels[1].attr('invisible', !showOrHide);\n },\n _onDragMove: function (handleIndex, dx, dy, event) {\n this._dragging = true; // For mobile device, prevent screen slider on the button.\n\n eventTool.stop(event.event); // Transform dx, dy to bar coordination.\n\n var barTransform = this._displayables.barGroup.getLocalTransform();\n\n var vertex = graphic.applyTransform([dx, dy], barTransform, true);\n\n var changed = this._updateInterval(handleIndex, vertex[0]);\n\n var realtime = this.dataZoomModel.get('realtime');\n\n this._updateView(!realtime); // Avoid dispatch dataZoom repeatly but range not changed,\n // which cause bad visual effect when progressive enabled.\n\n\n changed && realtime && this._dispatchZoomAction();\n },\n _onDragEnd: function () {\n this._dragging = false;\n\n this._showDataInfo(false); // While in realtime mode and stream mode, dispatch action when\n // drag end will cause the whole view rerender, which is unnecessary.\n\n\n var realtime = this.dataZoomModel.get('realtime');\n !realtime && this._dispatchZoomAction();\n },\n _onClickPanelClick: function (e) {\n var size = this._size;\n\n var localPoint = this._displayables.barGroup.transformCoordToLocal(e.offsetX, e.offsetY);\n\n if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {\n return;\n }\n\n var handleEnds = this._handleEnds;\n var center = (handleEnds[0] + handleEnds[1]) / 2;\n\n var changed = this._updateInterval('all', localPoint[0] - center);\n\n this._updateView();\n\n changed && this._dispatchZoomAction();\n },\n\n /**\n * This action will be throttled.\n * @private\n */\n _dispatchZoomAction: function () {\n var range = this._range;\n this.api.dispatchAction({\n type: 'dataZoom',\n from: this.uid,\n dataZoomId: this.dataZoomModel.id,\n start: range[0],\n end: range[1]\n });\n },\n\n /**\n * @private\n */\n _findCoordRect: function () {\n // Find the grid coresponding to the first axis referred by dataZoom.\n var rect;\n each(this.getTargetCoordInfo(), function (coordInfoList) {\n if (!rect && coordInfoList.length) {\n var coordSys = coordInfoList[0].model.coordinateSystem;\n rect = coordSys.getRect && coordSys.getRect();\n }\n });\n\n if (!rect) {\n var width = this.api.getWidth();\n var height = this.api.getHeight();\n rect = {\n x: width * 0.2,\n y: height * 0.2,\n width: width * 0.6,\n height: height * 0.6\n };\n }\n\n return rect;\n }\n});\n\nfunction getOtherDim(thisDim) {\n // FIXME\n // 这个逻辑和getOtherAxis里一致,但是写在这里是否不好\n var map = {\n x: 'y',\n y: 'x',\n radius: 'angle',\n angle: 'radius'\n };\n return map[thisDim];\n}\n\nfunction getCursor(orient) {\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nvar _default = SliderZoomView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar helper = require(\"./helper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerAction('dataZoom', function (payload, ecModel) {\n var linkedNodesFinder = helper.createLinkedNodesFinder(zrUtil.bind(ecModel.eachComponent, ecModel, 'dataZoom'), helper.eachAxisDim, function (model, dimNames) {\n return model.get(dimNames.axisIndex);\n });\n var effectedModels = [];\n ecModel.eachComponent({\n mainType: 'dataZoom',\n query: payload\n }, function (model, index) {\n effectedModels.push.apply(effectedModels, linkedNodesFinder(model).nodes);\n });\n zrUtil.each(effectedModels, function (dataZoomModel, index) {\n dataZoomModel.setRawRange({\n start: payload.start,\n end: payload.end,\n startValue: payload.startValue,\n endValue: payload.endValue\n });\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerProcessor({\n // `dataZoomProcessor` will only be performed in needed series. Consider if\n // there is a line series and a pie series, it is better not to update the\n // line series if only pie series is needed to be updated.\n getTargetSeries: function (ecModel) {\n var seriesModelMap = createHashMap();\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n var axisProxy = dataZoomModel.getAxisProxy(dimNames.name, axisIndex);\n each(axisProxy.getTargetSeriesModels(), function (seriesModel) {\n seriesModelMap.set(seriesModel.uid, seriesModel);\n });\n });\n });\n return seriesModelMap;\n },\n modifyOutputEnd: true,\n // Consider appendData, where filter should be performed. Because data process is\n // in block mode currently, it is not need to worry about that the overallProgress\n // execute every frame.\n overallReset: function (ecModel, api) {\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n // We calculate window and reset axis here but not in model\n // init stage and not after action dispatch handler, because\n // reset should be called after seriesData.restoreData.\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n dataZoomModel.getAxisProxy(dimNames.name, axisIndex).reset(dataZoomModel, api);\n }); // Caution: data zoom filtering is order sensitive when using\n // percent range and no min/max/scale set on axis.\n // For example, we have dataZoom definition:\n // [\n // {xAxisIndex: 0, start: 30, end: 70},\n // {yAxisIndex: 0, start: 20, end: 80}\n // ]\n // In this case, [20, 80] of y-dataZoom should be based on data\n // that have filtered by x-dataZoom using range of [30, 70],\n // but should not be based on full raw data. Thus sliding\n // x-dataZoom will change both ranges of xAxis and yAxis,\n // while sliding y-dataZoom will only change the range of yAxis.\n // So we should filter x-axis after reset x-axis immediately,\n // and then reset y-axis and filter y-axis.\n\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n dataZoomModel.getAxisProxy(dimNames.name, axisIndex).filterData(dataZoomModel, api);\n });\n });\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n // Fullfill all of the range props so that user\n // is able to get them from chart.getOption().\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n var percentRange = axisProxy.getDataPercentWindow();\n var valueRange = axisProxy.getDataValueWindow();\n dataZoomModel.setCalculatedRange({\n start: percentRange[0],\n end: percentRange[1],\n startValue: valueRange[0],\n endValue: valueRange[1]\n });\n });\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar formatUtil = require(\"../../util/format\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AXIS_DIMS = ['x', 'y', 'z', 'radius', 'angle', 'single']; // Supported coords.\n\nvar COORDS = ['cartesian2d', 'polar', 'singleAxis'];\n/**\n * @param {string} coordType\n * @return {boolean}\n */\n\nfunction isCoordSupported(coordType) {\n return zrUtil.indexOf(COORDS, coordType) >= 0;\n}\n/**\n * Create \"each\" method to iterate names.\n *\n * @pubilc\n * @param {Array.<string>} names\n * @param {Array.<string>=} attrs\n * @return {Function}\n */\n\n\nfunction createNameEach(names, attrs) {\n names = names.slice();\n var capitalNames = zrUtil.map(names, formatUtil.capitalFirst);\n attrs = (attrs || []).slice();\n var capitalAttrs = zrUtil.map(attrs, formatUtil.capitalFirst);\n return function (callback, context) {\n zrUtil.each(names, function (name, index) {\n var nameObj = {\n name: name,\n capital: capitalNames[index]\n };\n\n for (var j = 0; j < attrs.length; j++) {\n nameObj[attrs[j]] = name + capitalAttrs[j];\n }\n\n callback.call(context, nameObj);\n });\n };\n}\n/**\n * Iterate each dimension name.\n *\n * @public\n * @param {Function} callback The parameter is like:\n * {\n * name: 'angle',\n * capital: 'Angle',\n * axis: 'angleAxis',\n * axisIndex: 'angleAixs',\n * index: 'angleIndex'\n * }\n * @param {Object} context\n */\n\n\nvar eachAxisDim = createNameEach(AXIS_DIMS, ['axisIndex', 'axis', 'index', 'id']);\n/**\n * If tow dataZoomModels has the same axis controlled, we say that they are 'linked'.\n * dataZoomModels and 'links' make up one or more graphics.\n * This function finds the graphic where the source dataZoomModel is in.\n *\n * @public\n * @param {Function} forEachNode Node iterator.\n * @param {Function} forEachEdgeType edgeType iterator\n * @param {Function} edgeIdGetter Giving node and edgeType, return an array of edge id.\n * @return {Function} Input: sourceNode, Output: Like {nodes: [], dims: {}}\n */\n\nfunction createLinkedNodesFinder(forEachNode, forEachEdgeType, edgeIdGetter) {\n return function (sourceNode) {\n var result = {\n nodes: [],\n records: {} // key: edgeType.name, value: Object (key: edge id, value: boolean).\n\n };\n forEachEdgeType(function (edgeType) {\n result.records[edgeType.name] = {};\n });\n\n if (!sourceNode) {\n return result;\n }\n\n absorb(sourceNode, result);\n var existsLink;\n\n do {\n existsLink = false;\n forEachNode(processSingleNode);\n } while (existsLink);\n\n function processSingleNode(node) {\n if (!isNodeAbsorded(node, result) && isLinked(node, result)) {\n absorb(node, result);\n existsLink = true;\n }\n }\n\n return result;\n };\n\n function isNodeAbsorded(node, result) {\n return zrUtil.indexOf(result.nodes, node) >= 0;\n }\n\n function isLinked(node, result) {\n var hasLink = false;\n forEachEdgeType(function (edgeType) {\n zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) {\n result.records[edgeType.name][edgeId] && (hasLink = true);\n });\n });\n return hasLink;\n }\n\n function absorb(node, result) {\n result.nodes.push(node);\n forEachEdgeType(function (edgeType) {\n zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) {\n result.records[edgeType.name][edgeId] = true;\n });\n });\n }\n}\n\nexports.isCoordSupported = isCoordSupported;\nexports.createNameEach = createNameEach;\nexports.eachAxisDim = eachAxisDim;\nexports.createLinkedNodesFinder = createLinkedNodesFinder;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar ATTR = '\\0_ec_hist_store';\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} newSnapshot {dataZoomId, batch: [payloadInfo, ...]}\n */\n\nfunction push(ecModel, newSnapshot) {\n var store = giveStore(ecModel); // If previous dataZoom can not be found,\n // complete an range with current range.\n\n each(newSnapshot, function (batchItem, dataZoomId) {\n var i = store.length - 1;\n\n for (; i >= 0; i--) {\n var snapshot = store[i];\n\n if (snapshot[dataZoomId]) {\n break;\n }\n }\n\n if (i < 0) {\n // No origin range set, create one by current range.\n var dataZoomModel = ecModel.queryComponents({\n mainType: 'dataZoom',\n subType: 'select',\n id: dataZoomId\n })[0];\n\n if (dataZoomModel) {\n var percentRange = dataZoomModel.getPercentRange();\n store[0][dataZoomId] = {\n dataZoomId: dataZoomId,\n start: percentRange[0],\n end: percentRange[1]\n };\n }\n }\n });\n store.push(newSnapshot);\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} snapshot\n */\n\n\nfunction pop(ecModel) {\n var store = giveStore(ecModel);\n var head = store[store.length - 1];\n store.length > 1 && store.pop(); // Find top for all dataZoom.\n\n var snapshot = {};\n each(head, function (batchItem, dataZoomId) {\n for (var i = store.length - 1; i >= 0; i--) {\n var batchItem = store[i][dataZoomId];\n\n if (batchItem) {\n snapshot[dataZoomId] = batchItem;\n break;\n }\n }\n });\n return snapshot;\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction clear(ecModel) {\n ecModel[ATTR] = null;\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n * @return {number} records. always >= 1.\n */\n\n\nfunction count(ecModel) {\n return giveStore(ecModel).length;\n}\n/**\n * [{key: dataZoomId, value: {dataZoomId, range}}, ...]\n * History length of each dataZoom may be different.\n * this._history[0] is used to store origin range.\n * @type {Array.<Object>}\n */\n\n\nfunction giveStore(ecModel) {\n var store = ecModel[ATTR];\n\n if (!store) {\n store = ecModel[ATTR] = [{}];\n }\n\n return store;\n}\n\nexports.push = push;\nexports.pop = pop;\nexports.clear = clear;\nexports.count = count;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar RoamController = require(\"../../component/helper/RoamController\");\n\nvar throttleUtil = require(\"../../util/throttle\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Only create one roam controller for each coordinate system.\n// one roam controller might be refered by two inside data zoom\n// components (for example, one for x and one for y). When user\n// pan or zoom, only dispatch one action for those data zoom\n// components.\nvar ATTR = '\\0_ec_dataZoom_roams';\n/**\n * @public\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} dataZoomInfo\n * @param {string} dataZoomInfo.coordId\n * @param {Function} dataZoomInfo.containsPoint\n * @param {Array.<string>} dataZoomInfo.allCoordIds\n * @param {string} dataZoomInfo.dataZoomId\n * @param {Object} dataZoomInfo.getRange\n * @param {Function} dataZoomInfo.getRange.pan\n * @param {Function} dataZoomInfo.getRange.zoom\n * @param {Function} dataZoomInfo.getRange.scrollMove\n * @param {boolean} dataZoomInfo.dataZoomModel\n */\n\nfunction register(api, dataZoomInfo) {\n var store = giveStore(api);\n var theDataZoomId = dataZoomInfo.dataZoomId;\n var theCoordId = dataZoomInfo.coordId; // Do clean when a dataZoom changes its target coordnate system.\n // Avoid memory leak, dispose all not-used-registered.\n\n zrUtil.each(store, function (record, coordId) {\n var dataZoomInfos = record.dataZoomInfos;\n\n if (dataZoomInfos[theDataZoomId] && zrUtil.indexOf(dataZoomInfo.allCoordIds, theCoordId) < 0) {\n delete dataZoomInfos[theDataZoomId];\n record.count--;\n }\n });\n cleanStore(store);\n var record = store[theCoordId]; // Create if needed.\n\n if (!record) {\n record = store[theCoordId] = {\n coordId: theCoordId,\n dataZoomInfos: {},\n count: 0\n };\n record.controller = createController(api, record);\n record.dispatchAction = zrUtil.curry(dispatchAction, api);\n } // Update reference of dataZoom.\n\n\n !record.dataZoomInfos[theDataZoomId] && record.count++;\n record.dataZoomInfos[theDataZoomId] = dataZoomInfo;\n var controllerParams = mergeControllerParams(record.dataZoomInfos);\n record.controller.enable(controllerParams.controlType, controllerParams.opt); // Consider resize, area should be always updated.\n\n record.controller.setPointerChecker(dataZoomInfo.containsPoint); // Update throttle.\n\n throttleUtil.createOrUpdate(record, 'dispatchAction', dataZoomInfo.dataZoomModel.get('throttle', true), 'fixRate');\n}\n/**\n * @public\n * @param {module:echarts/ExtensionAPI} api\n * @param {string} dataZoomId\n */\n\n\nfunction unregister(api, dataZoomId) {\n var store = giveStore(api);\n zrUtil.each(store, function (record) {\n record.controller.dispose();\n var dataZoomInfos = record.dataZoomInfos;\n\n if (dataZoomInfos[dataZoomId]) {\n delete dataZoomInfos[dataZoomId];\n record.count--;\n }\n });\n cleanStore(store);\n}\n/**\n * @public\n */\n\n\nfunction generateCoordId(coordModel) {\n return coordModel.type + '\\0_' + coordModel.id;\n}\n/**\n * Key: coordId, value: {dataZoomInfos: [], count, controller}\n * @type {Array.<Object>}\n */\n\n\nfunction giveStore(api) {\n // Mount store on zrender instance, so that we do not\n // need to worry about dispose.\n var zr = api.getZr();\n return zr[ATTR] || (zr[ATTR] = {});\n}\n\nfunction createController(api, newRecord) {\n var controller = new RoamController(api.getZr());\n zrUtil.each(['pan', 'zoom', 'scrollMove'], function (eventName) {\n controller.on(eventName, function (event) {\n var batch = [];\n zrUtil.each(newRecord.dataZoomInfos, function (info) {\n // Check whether the behaviors (zoomOnMouseWheel, moveOnMouseMove,\n // moveOnMouseWheel, ...) enabled.\n if (!event.isAvailableBehavior(info.dataZoomModel.option)) {\n return;\n }\n\n var method = (info.getRange || {})[eventName];\n var range = method && method(newRecord.controller, event);\n !info.dataZoomModel.get('disabled', true) && range && batch.push({\n dataZoomId: info.dataZoomId,\n start: range[0],\n end: range[1]\n });\n });\n batch.length && newRecord.dispatchAction(batch);\n });\n });\n return controller;\n}\n\nfunction cleanStore(store) {\n zrUtil.each(store, function (record, coordId) {\n if (!record.count) {\n record.controller.dispose();\n delete store[coordId];\n }\n });\n}\n/**\n * This action will be throttled.\n */\n\n\nfunction dispatchAction(api, batch) {\n api.dispatchAction({\n type: 'dataZoom',\n batch: batch\n });\n}\n/**\n * Merge roamController settings when multiple dataZooms share one roamController.\n */\n\n\nfunction mergeControllerParams(dataZoomInfos) {\n var controlType; // DO NOT use reserved word (true, false, undefined) as key literally. Even if encapsulated\n // as string, it is probably revert to reserved word by compress tool. See #7411.\n\n var prefix = 'type_';\n var typePriority = {\n 'type_true': 2,\n 'type_move': 1,\n 'type_false': 0,\n 'type_undefined': -1\n };\n var preventDefaultMouseMove = true;\n zrUtil.each(dataZoomInfos, function (dataZoomInfo) {\n var dataZoomModel = dataZoomInfo.dataZoomModel;\n var oneType = dataZoomModel.get('disabled', true) ? false : dataZoomModel.get('zoomLock', true) ? 'move' : true;\n\n if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) {\n controlType = oneType;\n } // Prevent default move event by default. If one false, do not prevent. Otherwise\n // users may be confused why it does not work when multiple insideZooms exist.\n\n\n preventDefaultMouseMove &= dataZoomModel.get('preventDefaultMouseMove', true);\n });\n return {\n controlType: controlType,\n opt: {\n // RoamController will enable all of these functionalities,\n // and the final behavior is determined by its event listener\n // provided by each inside zoom.\n zoomOnMouseWheel: true,\n moveOnMouseMove: true,\n moveOnMouseWheel: true,\n preventDefaultMouseMove: !!preventDefaultMouseMove\n }\n };\n}\n\nexports.register = register;\nexports.unregister = unregister;\nexports.generateCoordId = generateCoordId;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Component = require(\"../../model/Component\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nComponent.registerSubTypeDefaulter('dataZoom', function () {\n // Default 'slider' when no type specified.\n return 'slider';\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar ComponentModel = require(\"../model/Component\");\n\nvar ComponentView = require(\"../view/Component\");\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar detectSourceFormat = _sourceHelper.detectSourceFormat;\n\nvar _sourceType = require(\"../data/helper/sourceType\");\n\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * This module is imported by echarts directly.\n *\n * Notice:\n * Always keep this file exists for backward compatibility.\n * Because before 4.1.0, dataset is an optional component,\n * some users may import this module manually.\n */\nComponentModel.extend({\n type: 'dataset',\n\n /**\n * @protected\n */\n defaultOption: {\n // 'row', 'column'\n seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\n // null/'auto': auto detect header, see \"module:echarts/data/helper/sourceHelper\"\n sourceHeader: null,\n dimensions: null,\n source: null\n },\n optionUpdated: function () {\n detectSourceFormat(this);\n }\n});\nComponentView.extend({\n type: 'dataset'\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nrequire(\"../coord/geo/GeoModel\");\n\nrequire(\"../coord/geo/geoCreator\");\n\nrequire(\"./geo/GeoView\");\n\nrequire(\"../action/geoRoam\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction makeAction(method, actionInfo) {\n actionInfo.update = 'updateView';\n echarts.registerAction(actionInfo, function (payload, ecModel) {\n var selected = {};\n ecModel.eachComponent({\n mainType: 'geo',\n query: payload\n }, function (geoModel) {\n geoModel[method](payload.name);\n var geo = geoModel.coordinateSystem;\n zrUtil.each(geo.regions, function (region) {\n selected[region.name] = geoModel.isSelected(region.name) || false;\n });\n });\n return {\n selected: selected,\n name: payload.name\n };\n });\n}\n\nmakeAction('toggleSelected', {\n type: 'geoToggleSelect',\n event: 'geoselectchanged'\n});\nmakeAction('select', {\n type: 'geoSelect',\n event: 'geoselected'\n});\nmakeAction('unSelect', {\n type: 'geoUnSelect',\n event: 'geounselected'\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar MapDraw = require(\"../helper/MapDraw\");\n\nvar echarts = require(\"../../echarts\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n type: 'geo',\n init: function (ecModel, api) {\n var mapDraw = new MapDraw(api, true);\n this._mapDraw = mapDraw;\n this.group.add(mapDraw.group);\n },\n render: function (geoModel, ecModel, api, payload) {\n // Not render if it is an toggleSelect action from self\n if (payload && payload.type === 'geoToggleSelect' && payload.from === this.uid) {\n return;\n }\n\n var mapDraw = this._mapDraw;\n\n if (geoModel.get('show')) {\n mapDraw.draw(geoModel, ecModel, api, this, payload);\n } else {\n this._mapDraw.group.removeAll();\n }\n\n this.group.silent = geoModel.get('silent');\n },\n dispose: function () {\n this._mapDraw && this._mapDraw.remove();\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar graphicUtil = require(\"../util/graphic\");\n\nvar layoutUtil = require(\"../util/layout\");\n\nvar _number = require(\"../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _nonShapeGraphicElements = {\n // Reserved but not supported in graphic component.\n path: null,\n compoundPath: null,\n // Supported in graphic component.\n group: graphicUtil.Group,\n image: graphicUtil.Image,\n text: graphicUtil.Text\n}; // -------------\n// Preprocessor\n// -------------\n\necharts.registerPreprocessor(function (option) {\n var graphicOption = option.graphic; // Convert\n // {graphic: [{left: 10, type: 'circle'}, ...]}\n // or\n // {graphic: {left: 10, type: 'circle'}}\n // to\n // {graphic: [{elements: [{left: 10, type: 'circle'}, ...]}]}\n\n if (zrUtil.isArray(graphicOption)) {\n if (!graphicOption[0] || !graphicOption[0].elements) {\n option.graphic = [{\n elements: graphicOption\n }];\n } else {\n // Only one graphic instance can be instantiated. (We dont\n // want that too many views are created in echarts._viewMap)\n option.graphic = [option.graphic[0]];\n }\n } else if (graphicOption && !graphicOption.elements) {\n option.graphic = [{\n elements: [graphicOption]\n }];\n }\n}); // ------\n// Model\n// ------\n\nvar GraphicModel = echarts.extendComponentModel({\n type: 'graphic',\n defaultOption: {\n // Extra properties for each elements:\n //\n // left/right/top/bottom: (like 12, '22%', 'center', default undefined)\n // If left/rigth is set, shape.x/shape.cx/position will not be used.\n // If top/bottom is set, shape.y/shape.cy/position will not be used.\n // This mechanism is useful when you want to position a group/element\n // against the right side or the center of this container.\n //\n // width/height: (can only be pixel value, default 0)\n // Only be used to specify contianer(group) size, if needed. And\n // can not be percentage value (like '33%'). See the reason in the\n // layout algorithm below.\n //\n // bounding: (enum: 'all' (default) | 'raw')\n // Specify how to calculate boundingRect when locating.\n // 'all': Get uioned and transformed boundingRect\n // from both itself and its descendants.\n // This mode simplies confining a group of elements in the bounding\n // of their ancester container (e.g., using 'right: 0').\n // 'raw': Only use the boundingRect of itself and before transformed.\n // This mode is similar to css behavior, which is useful when you\n // want an element to be able to overflow its container. (Consider\n // a rotated circle needs to be located in a corner.)\n // info: custom info. enables user to mount some info on elements and use them\n // in event handlers. Update them only when user specified, otherwise, remain.\n // Note: elements is always behind its ancestors in this elements array.\n elements: [],\n parentId: null\n },\n\n /**\n * Save el options for the sake of the performance (only update modified graphics).\n * The order is the same as those in option. (ancesters -> descendants)\n *\n * @private\n * @type {Array.<Object>}\n */\n _elOptionsToUpdate: null,\n\n /**\n * @override\n */\n mergeOption: function (option) {\n // Prevent default merge to elements\n var elements = this.option.elements;\n this.option.elements = null;\n GraphicModel.superApply(this, 'mergeOption', arguments);\n this.option.elements = elements;\n },\n\n /**\n * @override\n */\n optionUpdated: function (newOption, isInit) {\n var thisOption = this.option;\n var newList = (isInit ? thisOption : newOption).elements;\n var existList = thisOption.elements = isInit ? [] : thisOption.elements;\n var flattenedList = [];\n\n this._flatten(newList, flattenedList);\n\n var mappingResult = modelUtil.mappingToExists(existList, flattenedList);\n modelUtil.makeIdAndName(mappingResult); // Clear elOptionsToUpdate\n\n var elOptionsToUpdate = this._elOptionsToUpdate = [];\n zrUtil.each(mappingResult, function (resultItem, index) {\n var newElOption = resultItem.option;\n\n if (!newElOption) {\n return;\n }\n\n elOptionsToUpdate.push(newElOption);\n setKeyInfoToNewElOption(resultItem, newElOption);\n mergeNewElOptionToExist(existList, index, newElOption);\n setLayoutInfoToExist(existList[index], newElOption);\n }, this); // Clean\n\n for (var i = existList.length - 1; i >= 0; i--) {\n if (existList[i] == null) {\n existList.splice(i, 1);\n } else {\n // $action should be volatile, otherwise option gotten from\n // `getOption` will contain unexpected $action.\n delete existList[i].$action;\n }\n }\n },\n\n /**\n * Convert\n * [{\n * type: 'group',\n * id: 'xx',\n * children: [{type: 'circle'}, {type: 'polygon'}]\n * }]\n * to\n * [\n * {type: 'group', id: 'xx'},\n * {type: 'circle', parentId: 'xx'},\n * {type: 'polygon', parentId: 'xx'}\n * ]\n *\n * @private\n * @param {Array.<Object>} optionList option list\n * @param {Array.<Object>} result result of flatten\n * @param {Object} parentOption parent option\n */\n _flatten: function (optionList, result, parentOption) {\n zrUtil.each(optionList, function (option) {\n if (!option) {\n return;\n }\n\n if (parentOption) {\n option.parentOption = parentOption;\n }\n\n result.push(option);\n var children = option.children;\n\n if (option.type === 'group' && children) {\n this._flatten(children, result, option);\n } // Deleting for JSON output, and for not affecting group creation.\n\n\n delete option.children;\n }, this);\n },\n // FIXME\n // Pass to view using payload? setOption has a payload?\n useElOptionsToUpdate: function () {\n var els = this._elOptionsToUpdate; // Clear to avoid render duplicately when zooming.\n\n this._elOptionsToUpdate = null;\n return els;\n }\n}); // -----\n// View\n// -----\n\necharts.extendComponentView({\n type: 'graphic',\n\n /**\n * @override\n */\n init: function (ecModel, api) {\n /**\n * @private\n * @type {module:zrender/core/util.HashMap}\n */\n this._elMap = zrUtil.createHashMap();\n /**\n * @private\n * @type {module:echarts/graphic/GraphicModel}\n */\n\n this._lastGraphicModel;\n },\n\n /**\n * @override\n */\n render: function (graphicModel, ecModel, api) {\n // Having leveraged between use cases and algorithm complexity, a very\n // simple layout mechanism is used:\n // The size(width/height) can be determined by itself or its parent (not\n // implemented yet), but can not by its children. (Top-down travel)\n // The location(x/y) can be determined by the bounding rect of itself\n // (can including its descendants or not) and the size of its parent.\n // (Bottom-up travel)\n // When `chart.clear()` or `chart.setOption({...}, true)` with the same id,\n // view will be reused.\n if (graphicModel !== this._lastGraphicModel) {\n this._clear();\n }\n\n this._lastGraphicModel = graphicModel;\n\n this._updateElements(graphicModel);\n\n this._relocate(graphicModel, api);\n },\n\n /**\n * Update graphic elements.\n *\n * @private\n * @param {Object} graphicModel graphic model\n */\n _updateElements: function (graphicModel) {\n var elOptionsToUpdate = graphicModel.useElOptionsToUpdate();\n\n if (!elOptionsToUpdate) {\n return;\n }\n\n var elMap = this._elMap;\n var rootGroup = this.group; // Top-down tranverse to assign graphic settings to each elements.\n\n zrUtil.each(elOptionsToUpdate, function (elOption) {\n var $action = elOption.$action;\n var id = elOption.id;\n var existEl = elMap.get(id);\n var parentId = elOption.parentId;\n var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup;\n var elOptionStyle = elOption.style;\n\n if (elOption.type === 'text' && elOptionStyle) {\n // In top/bottom mode, textVerticalAlign should not be used, which cause\n // inaccurately locating.\n if (elOption.hv && elOption.hv[1]) {\n elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = null;\n } // Compatible with previous setting: both support fill and textFill,\n // stroke and textStroke.\n\n\n !elOptionStyle.hasOwnProperty('textFill') && elOptionStyle.fill && (elOptionStyle.textFill = elOptionStyle.fill);\n !elOptionStyle.hasOwnProperty('textStroke') && elOptionStyle.stroke && (elOptionStyle.textStroke = elOptionStyle.stroke);\n } // Remove unnecessary props to avoid potential problems.\n\n\n var elOptionCleaned = getCleanedElOption(elOption); // For simple, do not support parent change, otherwise reorder is needed.\n\n if (!$action || $action === 'merge') {\n existEl ? existEl.attr(elOptionCleaned) : createEl(id, targetElParent, elOptionCleaned, elMap);\n } else if ($action === 'replace') {\n removeEl(existEl, elMap);\n createEl(id, targetElParent, elOptionCleaned, elMap);\n } else if ($action === 'remove') {\n removeEl(existEl, elMap);\n }\n\n var el = elMap.get(id);\n\n if (el) {\n el.__ecGraphicWidthOption = elOption.width;\n el.__ecGraphicHeightOption = elOption.height;\n setEventData(el, graphicModel, elOption);\n }\n });\n },\n\n /**\n * Locate graphic elements.\n *\n * @private\n * @param {Object} graphicModel graphic model\n * @param {module:echarts/ExtensionAPI} api extension API\n */\n _relocate: function (graphicModel, api) {\n var elOptions = graphicModel.option.elements;\n var rootGroup = this.group;\n var elMap = this._elMap;\n var apiWidth = api.getWidth();\n var apiHeight = api.getHeight(); // Top-down to calculate percentage width/height of group\n\n for (var i = 0; i < elOptions.length; i++) {\n var elOption = elOptions[i];\n var el = elMap.get(elOption.id);\n\n if (!el || !el.isGroup) {\n continue;\n }\n\n var parentEl = el.parent;\n var isParentRoot = parentEl === rootGroup; // Like 'position:absolut' in css, default 0.\n\n el.__ecGraphicWidth = parsePercent(el.__ecGraphicWidthOption, isParentRoot ? apiWidth : parentEl.__ecGraphicWidth) || 0;\n el.__ecGraphicHeight = parsePercent(el.__ecGraphicHeightOption, isParentRoot ? apiHeight : parentEl.__ecGraphicHeight) || 0;\n } // Bottom-up tranvese all elements (consider ec resize) to locate elements.\n\n\n for (var i = elOptions.length - 1; i >= 0; i--) {\n var elOption = elOptions[i];\n var el = elMap.get(elOption.id);\n\n if (!el) {\n continue;\n }\n\n var parentEl = el.parent;\n var containerInfo = parentEl === rootGroup ? {\n width: apiWidth,\n height: apiHeight\n } : {\n width: parentEl.__ecGraphicWidth,\n height: parentEl.__ecGraphicHeight\n }; // PENDING\n // Currently, when `bounding: 'all'`, the union bounding rect of the group\n // does not include the rect of [0, 0, group.width, group.height], which\n // is probably weird for users. Should we make a break change for it?\n\n layoutUtil.positionElement(el, elOption, containerInfo, null, {\n hv: elOption.hv,\n boundingMode: elOption.bounding\n });\n }\n },\n\n /**\n * Clear all elements.\n *\n * @private\n */\n _clear: function () {\n var elMap = this._elMap;\n elMap.each(function (el) {\n removeEl(el, elMap);\n });\n this._elMap = zrUtil.createHashMap();\n },\n\n /**\n * @override\n */\n dispose: function () {\n this._clear();\n }\n});\n\nfunction createEl(id, targetElParent, elOption, elMap) {\n var graphicType = elOption.type;\n var Clz = _nonShapeGraphicElements.hasOwnProperty(graphicType) // Those graphic elements are not shapes. They should not be\n // overwritten by users, so do them first.\n ? _nonShapeGraphicElements[graphicType] : graphicUtil.getShapeClass(graphicType);\n var el = new Clz(elOption);\n targetElParent.add(el);\n elMap.set(id, el);\n el.__ecGraphicId = id;\n}\n\nfunction removeEl(existEl, elMap) {\n var existElParent = existEl && existEl.parent;\n\n if (existElParent) {\n existEl.type === 'group' && existEl.traverse(function (el) {\n removeEl(el, elMap);\n });\n elMap.removeKey(existEl.__ecGraphicId);\n existElParent.remove(existEl);\n }\n} // Remove unnecessary props to avoid potential problems.\n\n\nfunction getCleanedElOption(elOption) {\n elOption = zrUtil.extend({}, elOption);\n zrUtil.each(['id', 'parentId', '$action', 'hv', 'bounding'].concat(layoutUtil.LOCATION_PARAMS), function (name) {\n delete elOption[name];\n });\n return elOption;\n}\n\nfunction isSetLoc(obj, props) {\n var isSet;\n zrUtil.each(props, function (prop) {\n obj[prop] != null && obj[prop] !== 'auto' && (isSet = true);\n });\n return isSet;\n}\n\nfunction setKeyInfoToNewElOption(resultItem, newElOption) {\n var existElOption = resultItem.exist; // Set id and type after id assigned.\n\n newElOption.id = resultItem.keyInfo.id;\n !newElOption.type && existElOption && (newElOption.type = existElOption.type); // Set parent id if not specified\n\n if (newElOption.parentId == null) {\n var newElParentOption = newElOption.parentOption;\n\n if (newElParentOption) {\n newElOption.parentId = newElParentOption.id;\n } else if (existElOption) {\n newElOption.parentId = existElOption.parentId;\n }\n } // Clear\n\n\n newElOption.parentOption = null;\n}\n\nfunction mergeNewElOptionToExist(existList, index, newElOption) {\n // Update existing options, for `getOption` feature.\n var newElOptCopy = zrUtil.extend({}, newElOption);\n var existElOption = existList[index];\n var $action = newElOption.$action || 'merge';\n\n if ($action === 'merge') {\n if (existElOption) {\n // We can ensure that newElOptCopy and existElOption are not\n // the same object, so `merge` will not change newElOptCopy.\n zrUtil.merge(existElOption, newElOptCopy, true); // Rigid body, use ignoreSize.\n\n layoutUtil.mergeLayoutParam(existElOption, newElOptCopy, {\n ignoreSize: true\n }); // Will be used in render.\n\n layoutUtil.copyLayoutParams(newElOption, existElOption);\n } else {\n existList[index] = newElOptCopy;\n }\n } else if ($action === 'replace') {\n existList[index] = newElOptCopy;\n } else if ($action === 'remove') {\n // null will be cleaned later.\n existElOption && (existList[index] = null);\n }\n}\n\nfunction setLayoutInfoToExist(existItem, newElOption) {\n if (!existItem) {\n return;\n }\n\n existItem.hv = newElOption.hv = [// Rigid body, dont care `width`.\n isSetLoc(newElOption, ['left', 'right']), // Rigid body, dont care `height`.\n isSetLoc(newElOption, ['top', 'bottom'])]; // Give default group size. Otherwise layout error may occur.\n\n if (existItem.type === 'group') {\n existItem.width == null && (existItem.width = newElOption.width = 0);\n existItem.height == null && (existItem.height = newElOption.height = 0);\n }\n}\n\nfunction setEventData(el, graphicModel, elOption) {\n var eventData = el.eventData; // Simple optimize for large amount of elements that no need event.\n\n if (!el.silent && !el.ignore && !eventData) {\n eventData = el.eventData = {\n componentType: 'graphic',\n componentIndex: graphicModel.componentIndex,\n name: el.name\n };\n } // `elOption.info` enables user to mount some info on\n // elements and use them in event handlers.\n\n\n if (eventData) {\n eventData.info = el.info;\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"./gridSimple\");\n\nrequire(\"./axisPointer/CartesianAxisPointer\");\n\nrequire(\"./axisPointer\");","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../util/graphic\");\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./axis\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Grid view\necharts.extendComponentView({\n type: 'grid',\n render: function (gridModel, ecModel) {\n this.group.removeAll();\n\n if (gridModel.get('show')) {\n this.group.add(new graphic.Rect({\n shape: gridModel.coordinateSystem.getRect(),\n style: zrUtil.defaults({\n fill: gridModel.get('backgroundColor')\n }, gridModel.getItemStyle()),\n silent: true,\n z2: -1\n }));\n }\n }\n});\necharts.registerPreprocessor(function (option) {\n // Only create grid when need\n if (option.xAxis && option.yAxis && !option.grid) {\n option.grid = {};\n }\n});"],"names":["_config","echarts","__DEV__","zrUtil","env","modelUtil","helper","AxisProxy","each","eachAxisDim","DataZoomModel","extendComponentModel","type","dependencies","defaultOption","zlevel","z","orient","xAxisIndex","yAxisIndex","filterMode","throttle","start","end","startValue","endValue","minSpan","maxSpan","minValueSpan","maxValueSpan","rangeMode","init","option","parentModel","ecModel","this","_dataIntervalByAxis","_dataInfo","_axisProxies","textStyleModel","_autoThrottle","_rangePropMode","inputRawOption","retrieveRawOption","settledOption","mergeDefaultAndTheme","doInit","mergeOption","newOption","merge","thisOption","canvasSupported","realtime","_setDefaultThrottle","updateRangeUse","names","index","getModel","_resetTarget","_giveAxisProxies","axisProxies","eachTargetAxis","dimNames","axisIndex","dataZoomModel","axisModel","dependentModels","axis","axisProxy","__dzAxisProxy","name","autoMode","_judgeAutoMode","axisIndexName","normalizeToArray","_autoSetAxisIndex","_autoSetOrient","hasIndexSpecified","autoAxisIndex","get","dimName","length","singleAxis","singleAxisModel","singleAxisIndex","componentIndex","axisIndices","axisModels","i","len","push","eachSeries","seriesModel","_isSeriesHasAllAxesTypeOf","axisId","queryComponents","mainType","id","indexOf","dim","axisType","is","seriesAxisIndex","hasOwnProperty","globalOption","animation","animationDurationUpdate","getFirstTargetAxisModel","firstAxisModel","indices","callback","context","call","getAxisProxy","getAxisModel","setRawRange","opt","setCalculatedRange","getPercentRange","findRepresentativeAxisProxy","getDataPercentWindow","getValueRange","axisDimName","getDataValueWindow","key","hostedBy","getRangePropMode","slice","ret","rangePropMode","rangeModeInOption","percentSpecified","valueSpecified","_default","module","exports","ComponentView","extend","render","api","payload","getTargetCoordInfo","coordSysLists","save","coordModel","store","coordIndex","item","model","getComponent","getCoordSysModel","disabled","zoomLock","zoomOnMouseWheel","moveOnMouseMove","moveOnMouseWheel","preventDefaultMouseMove","DataZoomView","sliderMove","roams","bind","InsideZoomView","_range","superApply","arguments","coordInfoList","coordSysName","allCoordIds","map","coordInfo","generateCoordId","getRange","eventName","roamHandlers","register","coordId","containsPoint","e","x","y","coordinateSystem","containPoint","dataZoomId","dispose","unregister","zoom","controller","lastRange","range","directionInfo","getDirectionInfo","originX","originY","percentPoint","signal","pixelStart","pixelLength","pixel","scale","Math","max","minMaxSpan","getMinMaxSpan","pan","makeMover","oldX","oldY","newX","newY","scrollMove","scrollDelta","getPercentDelta","percentDelta","grid","oldPoint","newPoint","rect","getRect","width","inverse","height","polar","radiusExtent","getRadiusAxis","getExtent","angleExtent","getAngleAxis","pointToCoord","SliderZoomModel","layoutMode","show","right","top","left","bottom","backgroundColor","dataBackground","lineStyle","color","opacity","areaStyle","borderColor","fillerColor","handleIcon","handleSize","handleStyle","labelPrecision","labelFormatter","showDetail","showDataShadow","textStyle","eventTool","graphic","numberUtil","layout","Rect","linearMap","asc","DEFAULT_LOCATION_EDGE_GAP","DEFAULT_FRAME_BORDER_WIDTH","DEFAULT_FILLER_SIZE","HORIZONTAL","VERTICAL","LABEL_GAP","SHOW_DATA_SHADOW_SERIES_TYPE","SliderZoomView","_displayables","_orient","_handleEnds","_size","_handleWidth","_handleHeight","_location","_dragging","_dataShadowInfo","createOrUpdate","from","uid","_buildView","_updateView","group","removeAll","remove","clear","thisGroup","_resetLocation","_resetInterval","barGroup","Group","_renderBackground","_renderHandle","_renderDataShadow","add","_positionGroup","coordRect","_findCoordRect","ecSize","getWidth","getHeight","positionInfo","layoutParams","getLayoutParams","layoutRect","getLayoutRect","padding","reverse","location","targetAxisModel","otherAxisInverse","attr","rotation","PI","getBoundingRect","_getViewExtent","size","silent","shape","style","fill","z2","onclick","_onClickPanelClick","info","_prepareDataShadowInfo","series","data","getRawData","otherDim","getShadowDim","otherDataExtent","getDataExtent","otherOffset","lastIsEmpty","otherShadowExtent","thisShadowExtent","areaPoints","linePoints","step","count","thisCoord","stride","round","value","isEmpty","isNaN","otherCoord","Polygon","points","defaults","getAreaStyle","Polyline","getLineStyle","result","seriesModels","getTargetSeriesModels","thisAxis","getOtherDim","coordSys","getOtherAxis","getData","mapDimension","thisDim","displaybles","handles","handleLabels","filler","draggable","cursor","getCursor","drift","_onDragMove","ondragstart","_showDataInfo","ondragend","_onDragEnd","onmouseover","onmouseout","textPosition","subPixelOptimize","stroke","lineWidth","handleIndex","path","createIcon","bRect","parsePercent","setStyle","getItemStyle","handleColor","Text","invisible","text","textVerticalAlign","textAlign","textFill","getTextColor","textFont","getFont","viewExtent","_updateInterval","delta","handleEnds","viewExtend","percentExtent","nonRealtime","handleInterval","handle","handleHeight","position","setShape","_updateDataInfo","labelTexts","dataInterval","calculateDataWindow","valueWindow","_formatLabel","orderedHandleEnds","setLabel","barTransform","getTransform","parent","direction","transformDirection","offset","textPoint","applyTransform","getPixelPrecision","valueStr","getLabel","toFixed","min","isFunction","isString","replace","showOrHide","dx","dy","event","stop","getLocalTransform","vertex","changed","_dispatchZoomAction","localPoint","transformCoordToLocal","offsetX","offsetY","center","dispatchAction","radius","angle","registerAction","linkedNodesFinder","createLinkedNodesFinder","eachComponent","effectedModels","query","apply","nodes","_util","createHashMap","registerProcessor","getTargetSeries","seriesModelMap","set","modifyOutputEnd","overallReset","reset","filterData","percentRange","valueRange","formatUtil","AXIS_DIMS","COORDS","isCoordSupported","coordType","createNameEach","attrs","capitalNames","capitalFirst","capitalAttrs","nameObj","capital","j","forEachNode","forEachEdgeType","edgeIdGetter","sourceNode","existsLink","records","edgeType","absorb","processSingleNode","node","isNodeAbsorded","isLinked","hasLink","edgeId","ATTR","newSnapshot","giveStore","batchItem","snapshot","subType","pop","head","RoamController","throttleUtil","dataZoomInfo","theDataZoomId","theCoordId","record","dataZoomInfos","cleanStore","createController","curry","controllerParams","mergeControllerParams","enable","controlType","setPointerChecker","zr","getZr","newRecord","on","batch","isAvailableBehavior","method","prefix","typePriority","oneType","Component","registerSubTypeDefaulter","ComponentModel","_sourceHelper","detectSourceFormat","_sourceType","SERIES_LAYOUT_BY_COLUMN","seriesLayoutBy","sourceHeader","dimensions","source","optionUpdated","makeAction","actionInfo","update","selected","geoModel","geo","regions","region","isSelected","MapDraw","extendComponentView","mapDraw","_mapDraw","draw","graphicUtil","layoutUtil","_number","_nonShapeGraphicElements","compoundPath","image","Image","registerPreprocessor","graphicOption","isArray","elements","GraphicModel","parentId","_elOptionsToUpdate","isInit","newList","existList","flattenedList","_flatten","mappingResult","mappingToExists","makeIdAndName","elOptionsToUpdate","resultItem","newElOption","setKeyInfoToNewElOption","mergeNewElOptionToExist","setLayoutInfoToExist","splice","$action","optionList","parentOption","children","useElOptionsToUpdate","els","createEl","targetElParent","elOption","elMap","graphicType","Clz","getShapeClass","el","__ecGraphicId","removeEl","existEl","existElParent","traverse","removeKey","getCleanedElOption","concat","LOCATION_PARAMS","isSetLoc","obj","props","isSet","prop","existElOption","exist","keyInfo","newElParentOption","newElOptCopy","mergeLayoutParam","ignoreSize","copyLayoutParams","existItem","hv","setEventData","graphicModel","eventData","ignore","componentType","_elMap","_lastGraphicModel","_clear","_updateElements","_relocate","rootGroup","elOptionStyle","textBaseline","textStroke","elOptionCleaned","__ecGraphicWidthOption","__ecGraphicHeightOption","elOptions","apiWidth","apiHeight","isGroup","parentEl","isParentRoot","__ecGraphicWidth","__ecGraphicHeight","containerInfo","positionElement","boundingMode","bounding","gridModel","xAxis","yAxis"],"sourceRoot":""}
|