{"version":3,"file":"js/chunk-vendors-b886e5fb-legacy.59d7358d.js","mappings":"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","sources":["webpack://i4proportal/./node_modules/echarts/lib/component/axis/parallelAxisAction.js","webpack://i4proportal/./node_modules/echarts/lib/component/brush.js","webpack://i4proportal/./node_modules/echarts/lib/component/brush/BrushModel.js","webpack://i4proportal/./node_modules/echarts/lib/component/brush/BrushView.js","webpack://i4proportal/./node_modules/echarts/lib/component/brush/brushAction.js","webpack://i4proportal/./node_modules/echarts/lib/component/brush/preprocessor.js","webpack://i4proportal/./node_modules/echarts/lib/component/brush/selector.js","webpack://i4proportal/./node_modules/echarts/lib/component/brush/visualEncoding.js","webpack://i4proportal/./node_modules/echarts/lib/component/calendar.js","webpack://i4proportal/./node_modules/echarts/lib/component/calendar/CalendarView.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoomInside.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoomSelect.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoomSlider.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/AxisProxy.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/DataZoomView.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/InsideZoomView.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/SelectZoomView.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/SliderZoomView.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/dataZoomAction.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/helper.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/history.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/roams.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataZoom/typeDefaulter.js","webpack://i4proportal/./node_modules/echarts/lib/component/dataset.js","webpack://i4proportal/./node_modules/echarts/lib/component/geo.js","webpack://i4proportal/./node_modules/echarts/lib/component/geo/GeoView.js"],"sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @payload\n * @property {string} parallelAxisId\n * @property {Array.>} intervals\n */\nvar actionInfo = {\n type: 'axisAreaSelect',\n event: 'axisAreaSelected' // update: 'updateVisual'\n\n};\necharts.registerAction(actionInfo, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'parallelAxis',\n query: payload\n }, function (parallelAxisModel) {\n parallelAxisModel.axis.model.setActiveIntervals(payload.intervals);\n });\n});\n/**\n * @payload\n */\n\necharts.registerAction('parallelAxisExpand', function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'parallel',\n query: payload\n }, function (parallelModel) {\n parallelModel.setAxisExpand(payload);\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 preprocessor = require(\"./brush/preprocessor\");\n\nrequire(\"./brush/visualEncoding\");\n\nrequire(\"./brush/BrushModel\");\n\nrequire(\"./brush/BrushView\");\n\nrequire(\"./brush/brushAction\");\n\nrequire(\"./toolbox/feature/Brush\");\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 * Brush component entry\n */\necharts.registerPreprocessor(preprocessor);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar Model = require(\"../../model/Model\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DEFAULT_OUT_OF_BRUSH_COLOR = ['#ddd'];\nvar BrushModel = echarts.extendComponentModel({\n type: 'brush',\n dependencies: ['geo', 'grid', 'xAxis', 'yAxis', 'parallel', 'series'],\n\n /**\n * @protected\n */\n defaultOption: {\n // inBrush: null,\n // outOfBrush: null,\n toolbox: null,\n // Default value see preprocessor.\n brushLink: null,\n // Series indices array, broadcast using dataIndex.\n // or 'all', which means all series. 'none' or null means no series.\n seriesIndex: 'all',\n // seriesIndex array, specify series controlled by this brush component.\n geoIndex: null,\n //\n xAxisIndex: null,\n yAxisIndex: null,\n brushType: 'rect',\n // Default brushType, see BrushController.\n brushMode: 'single',\n // Default brushMode, 'single' or 'multiple'\n transformable: true,\n // Default transformable.\n brushStyle: {\n // Default brushStyle\n borderWidth: 1,\n color: 'rgba(120,140,180,0.3)',\n borderColor: 'rgba(120,140,180,0.8)'\n },\n throttleType: 'fixRate',\n // Throttle in brushSelected event. 'fixRate' or 'debounce'.\n // If null, no throttle. Valid only in the first brush component\n throttleDelay: 0,\n // Unit: ms, 0 means every event will be triggered.\n // FIXME\n // 试验效果\n removeOnClick: true,\n z: 10000\n },\n\n /**\n * @readOnly\n * @type {Array.}\n */\n areas: [],\n\n /**\n * Current activated brush type.\n * If null, brush is inactived.\n * see module:echarts/component/helper/BrushController\n * @readOnly\n * @type {string}\n */\n brushType: null,\n\n /**\n * Current brush opt.\n * see module:echarts/component/helper/BrushController\n * @readOnly\n * @type {Object}\n */\n brushOption: {},\n\n /**\n * @readOnly\n * @type {Array.}\n */\n coordInfoList: [],\n optionUpdated: function (newOption, isInit) {\n var thisOption = this.option;\n !isInit && visualSolution.replaceVisualOption(thisOption, newOption, ['inBrush', 'outOfBrush']);\n var inBrush = thisOption.inBrush = thisOption.inBrush || {}; // Always give default visual, consider setOption at the second time.\n\n thisOption.outOfBrush = thisOption.outOfBrush || {\n color: DEFAULT_OUT_OF_BRUSH_COLOR\n };\n\n if (!inBrush.hasOwnProperty('liftZ')) {\n // Bigger than the highlight z lift, otherwise it will\n // be effected by the highlight z when brush.\n inBrush.liftZ = 5;\n }\n },\n\n /**\n * If ranges is null/undefined, range state remain.\n *\n * @param {Array.} [ranges]\n */\n setAreas: function (areas) {\n // If ranges is null/undefined, range state remain.\n // This helps user to dispatchAction({type: 'brush'}) with no areas\n // set but just want to get the current brush select info from a `brush` event.\n if (!areas) {\n return;\n }\n\n this.areas = zrUtil.map(areas, function (area) {\n return generateBrushOption(this.option, area);\n }, this);\n },\n\n /**\n * see module:echarts/component/helper/BrushController\n * @param {Object} brushOption\n */\n setBrushOption: function (brushOption) {\n this.brushOption = generateBrushOption(this.option, brushOption);\n this.brushType = this.brushOption.brushType;\n }\n});\n\nfunction generateBrushOption(option, brushOption) {\n return zrUtil.merge({\n brushType: option.brushType,\n brushMode: option.brushMode,\n transformable: option.transformable,\n brushStyle: new Model(option.brushStyle).getItemStyle(),\n removeOnClick: option.removeOnClick,\n z: option.z\n }, brushOption, true);\n}\n\nvar _default = BrushModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BrushController = require(\"../helper/BrushController\");\n\nvar _visualEncoding = require(\"./visualEncoding\");\n\nvar layoutCovers = _visualEncoding.layoutCovers;\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: 'brush',\n init: function (ecModel, api) {\n /**\n * @readOnly\n * @type {module:echarts/model/Global}\n */\n this.ecModel = ecModel;\n /**\n * @readOnly\n * @type {module:echarts/ExtensionAPI}\n */\n\n this.api = api;\n /**\n * @readOnly\n * @type {module:echarts/component/brush/BrushModel}\n */\n\n this.model;\n /**\n * @private\n * @type {module:echarts/component/helper/BrushController}\n */\n\n (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this)).mount();\n },\n\n /**\n * @override\n */\n render: function (brushModel) {\n this.model = brushModel;\n return updateController.apply(this, arguments);\n },\n\n /**\n * @override\n */\n updateTransform: function (brushModel, ecModel) {\n // PENDING: `updateTransform` is a little tricky, whose layout need\n // to be calculate mandatorily and other stages will not be performed.\n // Take care the correctness of the logic. See #11754 .\n layoutCovers(ecModel);\n return updateController.apply(this, arguments);\n },\n\n /**\n * @override\n */\n updateView: updateController,\n // /**\n // * @override\n // */\n // updateLayout: updateController,\n // /**\n // * @override\n // */\n // updateVisual: updateController,\n\n /**\n * @override\n */\n dispose: function () {\n this._brushController.dispose();\n },\n\n /**\n * @private\n */\n _onBrush: function (areas, opt) {\n var modelId = this.model.id;\n this.model.brushTargetManager.setOutputRanges(areas, this.ecModel); // Action is not dispatched on drag end, because the drag end\n // emits the same params with the last drag move event, and\n // may have some delay when using touch pad, which makes\n // animation not smooth (when using debounce).\n\n (!opt.isEnd || opt.removeOnClick) && this.api.dispatchAction({\n type: 'brush',\n brushId: modelId,\n areas: zrUtil.clone(areas),\n $from: modelId\n });\n opt.isEnd && this.api.dispatchAction({\n type: 'brushEnd',\n brushId: modelId,\n areas: zrUtil.clone(areas),\n $from: modelId\n });\n }\n});\n\nfunction updateController(brushModel, ecModel, api, payload) {\n // Do not update controller when drawing.\n (!payload || payload.$from !== brushModel.id) && this._brushController.setPanels(brushModel.brushTargetManager.makePanelOpts(api)).enableBrush(brushModel.brushOption).updateCovers(brushModel.areas.slice());\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * payload: {\n * brushIndex: number, or,\n * brushId: string, or,\n * brushName: string,\n * globalRanges: Array\n * }\n */\necharts.registerAction({\n type: 'brush',\n event: 'brush'\n /*, update: 'updateView' */\n\n}, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'brush',\n query: payload\n }, function (brushModel) {\n brushModel.setAreas(payload.areas);\n });\n});\n/**\n * payload: {\n * brushComponents: [\n * {\n * brushId,\n * brushIndex,\n * brushName,\n * series: [\n * {\n * seriesId,\n * seriesIndex,\n * seriesName,\n * rawIndices: [21, 34, ...]\n * },\n * ...\n * ]\n * },\n * ...\n * ]\n * }\n */\n\necharts.registerAction({\n type: 'brushSelect',\n event: 'brushSelected',\n update: 'none'\n}, function () {});\necharts.registerAction({\n type: 'brushEnd',\n event: 'brushEnd',\n update: 'none'\n}, function () {});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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 DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear'];\n\nfunction _default(option, isNew) {\n var brushComponents = option && option.brush;\n\n if (!zrUtil.isArray(brushComponents)) {\n brushComponents = brushComponents ? [brushComponents] : [];\n }\n\n if (!brushComponents.length) {\n return;\n }\n\n var brushComponentSpecifiedBtns = [];\n zrUtil.each(brushComponents, function (brushOpt) {\n var tbs = brushOpt.hasOwnProperty('toolbox') ? brushOpt.toolbox : [];\n\n if (tbs instanceof Array) {\n brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs);\n }\n });\n var toolbox = option && option.toolbox;\n\n if (zrUtil.isArray(toolbox)) {\n toolbox = toolbox[0];\n }\n\n if (!toolbox) {\n toolbox = {\n feature: {}\n };\n option.toolbox = [toolbox];\n }\n\n var toolboxFeature = toolbox.feature || (toolbox.feature = {});\n var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {});\n var brushTypes = toolboxBrush.type || (toolboxBrush.type = []);\n brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns);\n removeDuplicate(brushTypes);\n\n if (isNew && !brushTypes.length) {\n brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS);\n }\n}\n\nfunction removeDuplicate(arr) {\n var map = {};\n zrUtil.each(arr, function (val) {\n map[val] = 1;\n });\n arr.length = 0;\n zrUtil.each(map, function (flag, val) {\n arr.push(val);\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 polygonContain = require(\"zrender/lib/contain/polygon\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _graphic = require(\"../../util/graphic\");\n\nvar linePolygonIntersect = _graphic.linePolygonIntersect;\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// Key of the first level is brushType: `line`, `rect`, `polygon`.\n// Key of the second level is chart element type: `point`, `rect`.\n// See moudule:echarts/component/helper/BrushController\n// function param:\n// {Object} itemLayout fetch from data.getItemLayout(dataIndex)\n// {Object} selectors {point: selector, rect: selector, ...}\n// {Object} area {range: [[], [], ..], boudingRect}\n// function return:\n// {boolean} Whether in the given brush.\nvar selector = {\n lineX: getLineSelectors(0),\n lineY: getLineSelectors(1),\n rect: {\n point: function (itemLayout, selectors, area) {\n return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]);\n },\n rect: function (itemLayout, selectors, area) {\n return itemLayout && area.boundingRect.intersect(itemLayout);\n }\n },\n polygon: {\n point: function (itemLayout, selectors, area) {\n return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]) && polygonContain.contain(area.range, itemLayout[0], itemLayout[1]);\n },\n rect: function (itemLayout, selectors, area) {\n var points = area.range;\n\n if (!itemLayout || points.length <= 1) {\n return false;\n }\n\n var x = itemLayout.x;\n var y = itemLayout.y;\n var width = itemLayout.width;\n var height = itemLayout.height;\n var p = points[0];\n\n if (polygonContain.contain(points, x, y) || polygonContain.contain(points, x + width, y) || polygonContain.contain(points, x, y + height) || polygonContain.contain(points, x + width, y + height) || BoundingRect.create(itemLayout).contain(p[0], p[1]) || linePolygonIntersect(x, y, x + width, y, points) || linePolygonIntersect(x, y, x, y + height, points) || linePolygonIntersect(x + width, y, x + width, y + height, points) || linePolygonIntersect(x, y + height, x + width, y + height, points)) {\n return true;\n }\n }\n }\n};\n\nfunction getLineSelectors(xyIndex) {\n var xy = ['x', 'y'];\n var wh = ['width', 'height'];\n return {\n point: function (itemLayout, selectors, area) {\n if (itemLayout) {\n var range = area.range;\n var p = itemLayout[xyIndex];\n return inLineRange(p, range);\n }\n },\n rect: function (itemLayout, selectors, area) {\n if (itemLayout) {\n var range = area.range;\n var layoutRange = [itemLayout[xy[xyIndex]], itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]];\n layoutRange[1] < layoutRange[0] && layoutRange.reverse();\n return inLineRange(layoutRange[0], range) || inLineRange(layoutRange[1], range) || inLineRange(range[0], layoutRange) || inLineRange(range[1], layoutRange);\n }\n }\n };\n}\n\nfunction inLineRange(p, range) {\n return range[0] <= p && p <= range[1];\n}\n\nvar _default = selector;\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 BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar selector = require(\"./selector\");\n\nvar throttleUtil = require(\"../../util/throttle\");\n\nvar BrushTargetManager = require(\"../helper/BrushTargetManager\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar STATE_LIST = ['inBrush', 'outOfBrush'];\nvar DISPATCH_METHOD = '__ecBrushSelect';\nvar DISPATCH_FLAG = '__ecInBrushSelectEvent';\nvar PRIORITY_BRUSH = echarts.PRIORITY.VISUAL.BRUSH;\n/**\n * Layout for visual, the priority higher than other layout, and before brush visual.\n */\n\necharts.registerLayout(PRIORITY_BRUSH, function (ecModel, api, payload) {\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel) {\n payload && payload.type === 'takeGlobalCursor' && brushModel.setBrushOption(payload.key === 'brush' ? payload.brushOption : {\n brushType: false\n });\n });\n layoutCovers(ecModel);\n});\n\nfunction layoutCovers(ecModel) {\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel) {\n var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel);\n brushTargetManager.setInputRanges(brushModel.areas, ecModel);\n });\n}\n/**\n * Register the visual encoding if this modules required.\n */\n\n\necharts.registerVisual(PRIORITY_BRUSH, function (ecModel, api, payload) {\n var brushSelected = [];\n var throttleType;\n var throttleDelay;\n ecModel.eachComponent({\n mainType: 'brush'\n }, function (brushModel, brushIndex) {\n var thisBrushSelected = {\n brushId: brushModel.id,\n brushIndex: brushIndex,\n brushName: brushModel.name,\n areas: zrUtil.clone(brushModel.areas),\n selected: []\n }; // Every brush component exists in event params, convenient\n // for user to find by index.\n\n brushSelected.push(thisBrushSelected);\n var brushOption = brushModel.option;\n var brushLink = brushOption.brushLink;\n var linkedSeriesMap = [];\n var selectedDataIndexForLink = [];\n var rangeInfoBySeries = [];\n var hasBrushExists = 0;\n\n if (!brushIndex) {\n // Only the first throttle setting works.\n throttleType = brushOption.throttleType;\n throttleDelay = brushOption.throttleDelay;\n } // Add boundingRect and selectors to range.\n\n\n var areas = zrUtil.map(brushModel.areas, function (area) {\n return bindSelector(zrUtil.defaults({\n boundingRect: boundingRectBuilders[area.brushType](area)\n }, area));\n });\n var visualMappings = visualSolution.createVisualMappings(brushModel.option, STATE_LIST, function (mappingOption) {\n mappingOption.mappingMethod = 'fixed';\n });\n zrUtil.isArray(brushLink) && zrUtil.each(brushLink, function (seriesIndex) {\n linkedSeriesMap[seriesIndex] = 1;\n });\n\n function linkOthers(seriesIndex) {\n return brushLink === 'all' || linkedSeriesMap[seriesIndex];\n } // If no supported brush or no brush on the series,\n // all visuals should be in original state.\n\n\n function brushed(rangeInfoList) {\n return !!rangeInfoList.length;\n }\n /**\n * Logic for each series: (If the logic has to be modified one day, do it carefully!)\n *\n * ( brushed ┬ && ┬hasBrushExist ┬ && linkOthers ) => StepA: ┬record, ┬ StepB: ┬visualByRecord.\n * !brushed┘ ├hasBrushExist ┤ └nothing,┘ ├visualByRecord.\n * └!hasBrushExist┘ └nothing.\n * ( !brushed && ┬hasBrushExist ┬ && linkOthers ) => StepA: nothing, StepB: ┬visualByRecord.\n * └!hasBrushExist┘ └nothing.\n * ( brushed ┬ && !linkOthers ) => StepA: nothing, StepB: ┬visualByCheck.\n * !brushed┘ └nothing.\n * ( !brushed && !linkOthers ) => StepA: nothing, StepB: nothing.\n */\n // Step A\n\n\n ecModel.eachSeries(function (seriesModel, seriesIndex) {\n var rangeInfoList = rangeInfoBySeries[seriesIndex] = [];\n seriesModel.subType === 'parallel' ? stepAParallel(seriesModel, seriesIndex, rangeInfoList) : stepAOthers(seriesModel, seriesIndex, rangeInfoList);\n });\n\n function stepAParallel(seriesModel, seriesIndex) {\n var coordSys = seriesModel.coordinateSystem;\n hasBrushExists |= coordSys.hasAxisBrushed();\n linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function (activeState, dataIndex) {\n activeState === 'active' && (selectedDataIndexForLink[dataIndex] = 1);\n });\n }\n\n function stepAOthers(seriesModel, seriesIndex, rangeInfoList) {\n var selectorsByBrushType = getSelectorsByBrushType(seriesModel);\n\n if (!selectorsByBrushType || brushModelNotControll(brushModel, seriesIndex)) {\n return;\n }\n\n zrUtil.each(areas, function (area) {\n selectorsByBrushType[area.brushType] && brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel) && rangeInfoList.push(area);\n hasBrushExists |= brushed(rangeInfoList);\n });\n\n if (linkOthers(seriesIndex) && brushed(rangeInfoList)) {\n var data = seriesModel.getData();\n data.each(function (dataIndex) {\n if (checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex)) {\n selectedDataIndexForLink[dataIndex] = 1;\n }\n });\n }\n } // Step B\n\n\n ecModel.eachSeries(function (seriesModel, seriesIndex) {\n var seriesBrushSelected = {\n seriesId: seriesModel.id,\n seriesIndex: seriesIndex,\n seriesName: seriesModel.name,\n dataIndex: []\n }; // Every series exists in event params, convenient\n // for user to find series by seriesIndex.\n\n thisBrushSelected.selected.push(seriesBrushSelected);\n var selectorsByBrushType = getSelectorsByBrushType(seriesModel);\n var rangeInfoList = rangeInfoBySeries[seriesIndex];\n var data = seriesModel.getData();\n var getValueState = linkOthers(seriesIndex) ? function (dataIndex) {\n return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n } : function (dataIndex) {\n return checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n }; // If no supported brush or no brush, all visuals are in original state.\n\n (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && visualSolution.applyVisual(STATE_LIST, visualMappings, data, getValueState);\n });\n });\n dispatchAction(api, throttleType, throttleDelay, brushSelected, payload);\n});\n\nfunction dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) {\n // This event will not be triggered when `setOpion`, otherwise dead lock may\n // triggered when do `setOption` in event listener, which we do not find\n // satisfactory way to solve yet. Some considered resolutions:\n // (a) Diff with prevoius selected data ant only trigger event when changed.\n // But store previous data and diff precisely (i.e., not only by dataIndex, but\n // also detect value changes in selected data) might bring complexity or fragility.\n // (b) Use spectial param like `silent` to suppress event triggering.\n // But such kind of volatile param may be weird in `setOption`.\n if (!payload) {\n return;\n }\n\n var zr = api.getZr();\n\n if (zr[DISPATCH_FLAG]) {\n return;\n }\n\n if (!zr[DISPATCH_METHOD]) {\n zr[DISPATCH_METHOD] = doDispatch;\n }\n\n var fn = throttleUtil.createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType);\n fn(api, brushSelected);\n}\n\nfunction doDispatch(api, brushSelected) {\n if (!api.isDisposed()) {\n var zr = api.getZr();\n zr[DISPATCH_FLAG] = true;\n api.dispatchAction({\n type: 'brushSelect',\n batch: brushSelected\n });\n zr[DISPATCH_FLAG] = false;\n }\n}\n\nfunction checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) {\n for (var i = 0, len = rangeInfoList.length; i < len; i++) {\n var area = rangeInfoList[i];\n\n if (selectorsByBrushType[area.brushType](dataIndex, data, area.selectors, area)) {\n return true;\n }\n }\n}\n\nfunction getSelectorsByBrushType(seriesModel) {\n var brushSelector = seriesModel.brushSelector;\n\n if (zrUtil.isString(brushSelector)) {\n var sels = [];\n zrUtil.each(selector, function (selectorsByElementType, brushType) {\n sels[brushType] = function (dataIndex, data, selectors, area) {\n var itemLayout = data.getItemLayout(dataIndex);\n return selectorsByElementType[brushSelector](itemLayout, selectors, area);\n };\n });\n return sels;\n } else if (zrUtil.isFunction(brushSelector)) {\n var bSelector = {};\n zrUtil.each(selector, function (sel, brushType) {\n bSelector[brushType] = brushSelector;\n });\n return bSelector;\n }\n\n return brushSelector;\n}\n\nfunction brushModelNotControll(brushModel, seriesIndex) {\n var seriesIndices = brushModel.option.seriesIndex;\n return seriesIndices != null && seriesIndices !== 'all' && (zrUtil.isArray(seriesIndices) ? zrUtil.indexOf(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices);\n}\n\nfunction bindSelector(area) {\n var selectors = area.selectors = {};\n zrUtil.each(selector[area.brushType], function (selFn, elType) {\n // Do not use function binding or curry for performance.\n selectors[elType] = function (itemLayout) {\n return selFn(itemLayout, selectors, area);\n };\n });\n return area;\n}\n\nvar boundingRectBuilders = {\n lineX: zrUtil.noop,\n lineY: zrUtil.noop,\n rect: function (area) {\n return getBoundingRectFromMinMax(area.range);\n },\n polygon: function (area) {\n var minMax;\n var range = area.range;\n\n for (var i = 0, len = range.length; i < len; i++) {\n minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]];\n var rg = range[i];\n rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]);\n rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]);\n rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]);\n rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]);\n }\n\n return minMax && getBoundingRectFromMinMax(minMax);\n }\n};\n\nfunction getBoundingRectFromMinMax(minMax) {\n return new BoundingRect(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]);\n}\n\nexports.layoutCovers = layoutCovers;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"../coord/calendar/Calendar\");\n\nrequire(\"../coord/calendar/CalendarModel\");\n\nrequire(\"./calendar/CalendarView\");","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar numberUtil = require(\"../../util/number\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar MONTH_TEXT = {\n EN: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n CN: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']\n};\nvar WEEK_TEXT = {\n EN: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n CN: ['日', '一', '二', '三', '四', '五', '六']\n};\n\nvar _default = echarts.extendComponentView({\n type: 'calendar',\n\n /**\n * top/left line points\n * @private\n */\n _tlpoints: null,\n\n /**\n * bottom/right line points\n * @private\n */\n _blpoints: null,\n\n /**\n * first day of month\n * @private\n */\n _firstDayOfMonth: null,\n\n /**\n * first day point of month\n * @private\n */\n _firstDayPoints: null,\n render: function (calendarModel, ecModel, api) {\n var group = this.group;\n group.removeAll();\n var coordSys = calendarModel.coordinateSystem; // range info\n\n var rangeData = coordSys.getRangeInfo();\n var orient = coordSys.getOrient();\n\n this._renderDayRect(calendarModel, rangeData, group); // _renderLines must be called prior to following function\n\n\n this._renderLines(calendarModel, rangeData, orient, group);\n\n this._renderYearText(calendarModel, rangeData, orient, group);\n\n this._renderMonthText(calendarModel, orient, group);\n\n this._renderWeekText(calendarModel, rangeData, orient, group);\n },\n // render day rect\n _renderDayRect: function (calendarModel, rangeData, group) {\n var coordSys = calendarModel.coordinateSystem;\n var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle();\n var sw = coordSys.getCellWidth();\n var sh = coordSys.getCellHeight();\n\n for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {\n var point = coordSys.dataToRect([i], false).tl; // every rect\n\n var rect = new graphic.Rect({\n shape: {\n x: point[0],\n y: point[1],\n width: sw,\n height: sh\n },\n cursor: 'default',\n style: itemRectStyleModel\n });\n group.add(rect);\n }\n },\n // render separate line\n _renderLines: function (calendarModel, rangeData, orient, group) {\n var self = this;\n var coordSys = calendarModel.coordinateSystem;\n var lineStyleModel = calendarModel.getModel('splitLine.lineStyle').getLineStyle();\n var show = calendarModel.get('splitLine.show');\n var lineWidth = lineStyleModel.lineWidth;\n this._tlpoints = [];\n this._blpoints = [];\n this._firstDayOfMonth = [];\n this._firstDayPoints = [];\n var firstDay = rangeData.start;\n\n for (var i = 0; firstDay.time <= rangeData.end.time; i++) {\n addPoints(firstDay.formatedDate);\n\n if (i === 0) {\n firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m);\n }\n\n var date = firstDay.date;\n date.setMonth(date.getMonth() + 1);\n firstDay = coordSys.getDateInfo(date);\n }\n\n addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);\n\n function addPoints(date) {\n self._firstDayOfMonth.push(coordSys.getDateInfo(date));\n\n self._firstDayPoints.push(coordSys.dataToRect([date], false).tl);\n\n var points = self._getLinePointsOfOneWeek(calendarModel, date, orient);\n\n self._tlpoints.push(points[0]);\n\n self._blpoints.push(points[points.length - 1]);\n\n show && self._drawSplitline(points, lineStyleModel, group);\n } // render top/left line\n\n\n show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group); // render bottom/right line\n\n show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group);\n },\n // get points at both ends\n _getEdgesPoints: function (points, lineWidth, orient) {\n var rs = [points[0].slice(), points[points.length - 1].slice()];\n var idx = orient === 'horizontal' ? 0 : 1; // both ends of the line are extend half lineWidth\n\n rs[0][idx] = rs[0][idx] - lineWidth / 2;\n rs[1][idx] = rs[1][idx] + lineWidth / 2;\n return rs;\n },\n // render split line\n _drawSplitline: function (points, lineStyleModel, group) {\n var poyline = new graphic.Polyline({\n z2: 20,\n shape: {\n points: points\n },\n style: lineStyleModel\n });\n group.add(poyline);\n },\n // render month line of one week points\n _getLinePointsOfOneWeek: function (calendarModel, date, orient) {\n var coordSys = calendarModel.coordinateSystem;\n date = coordSys.getDateInfo(date);\n var points = [];\n\n for (var i = 0; i < 7; i++) {\n var tmpD = coordSys.getNextNDay(date.time, i);\n var point = coordSys.dataToRect([tmpD.time], false);\n points[2 * tmpD.day] = point.tl;\n points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr'];\n }\n\n return points;\n },\n _formatterLabel: function (formatter, params) {\n if (typeof formatter === 'string' && formatter) {\n return formatUtil.formatTplSimple(formatter, params);\n }\n\n if (typeof formatter === 'function') {\n return formatter(params);\n }\n\n return params.nameMap;\n },\n _yearTextPositionControl: function (textEl, point, orient, position, margin) {\n point = point.slice();\n var aligns = ['center', 'bottom'];\n\n if (position === 'bottom') {\n point[1] += margin;\n aligns = ['center', 'top'];\n } else if (position === 'left') {\n point[0] -= margin;\n } else if (position === 'right') {\n point[0] += margin;\n aligns = ['center', 'top'];\n } else {\n // top\n point[1] -= margin;\n }\n\n var rotate = 0;\n\n if (position === 'left' || position === 'right') {\n rotate = Math.PI / 2;\n }\n\n return {\n rotation: rotate,\n position: point,\n style: {\n textAlign: aligns[0],\n textVerticalAlign: aligns[1]\n }\n };\n },\n // render year\n _renderYearText: function (calendarModel, rangeData, orient, group) {\n var yearLabel = calendarModel.getModel('yearLabel');\n\n if (!yearLabel.get('show')) {\n return;\n }\n\n var margin = yearLabel.get('margin');\n var pos = yearLabel.get('position');\n\n if (!pos) {\n pos = orient !== 'horizontal' ? 'top' : 'left';\n }\n\n var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];\n var xc = (points[0][0] + points[1][0]) / 2;\n var yc = (points[0][1] + points[1][1]) / 2;\n var idx = orient === 'horizontal' ? 0 : 1;\n var posPoints = {\n top: [xc, points[idx][1]],\n bottom: [xc, points[1 - idx][1]],\n left: [points[1 - idx][0], yc],\n right: [points[idx][0], yc]\n };\n var name = rangeData.start.y;\n\n if (+rangeData.end.y > +rangeData.start.y) {\n name = name + '-' + rangeData.end.y;\n }\n\n var formatter = yearLabel.get('formatter');\n var params = {\n start: rangeData.start.y,\n end: rangeData.end.y,\n nameMap: name\n };\n\n var content = this._formatterLabel(formatter, params);\n\n var yearText = new graphic.Text({\n z2: 30\n });\n graphic.setTextStyle(yearText.style, yearLabel, {\n text: content\n }), yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));\n group.add(yearText);\n },\n _monthTextPositionControl: function (point, isCenter, orient, position, margin) {\n var align = 'left';\n var vAlign = 'top';\n var x = point[0];\n var y = point[1];\n\n if (orient === 'horizontal') {\n y = y + margin;\n\n if (isCenter) {\n align = 'center';\n }\n\n if (position === 'start') {\n vAlign = 'bottom';\n }\n } else {\n x = x + margin;\n\n if (isCenter) {\n vAlign = 'middle';\n }\n\n if (position === 'start') {\n align = 'right';\n }\n }\n\n return {\n x: x,\n y: y,\n textAlign: align,\n textVerticalAlign: vAlign\n };\n },\n // render month and year text\n _renderMonthText: function (calendarModel, orient, group) {\n var monthLabel = calendarModel.getModel('monthLabel');\n\n if (!monthLabel.get('show')) {\n return;\n }\n\n var nameMap = monthLabel.get('nameMap');\n var margin = monthLabel.get('margin');\n var pos = monthLabel.get('position');\n var align = monthLabel.get('align');\n var termPoints = [this._tlpoints, this._blpoints];\n\n if (zrUtil.isString(nameMap)) {\n nameMap = MONTH_TEXT[nameMap.toUpperCase()] || [];\n }\n\n var idx = pos === 'start' ? 0 : 1;\n var axis = orient === 'horizontal' ? 0 : 1;\n margin = pos === 'start' ? -margin : margin;\n var isCenter = align === 'center';\n\n for (var i = 0; i < termPoints[idx].length - 1; i++) {\n var tmp = termPoints[idx][i].slice();\n var firstDay = this._firstDayOfMonth[i];\n\n if (isCenter) {\n var firstDayPoints = this._firstDayPoints[i];\n tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;\n }\n\n var formatter = monthLabel.get('formatter');\n var name = nameMap[+firstDay.m - 1];\n var params = {\n yyyy: firstDay.y,\n yy: (firstDay.y + '').slice(2),\n MM: firstDay.m,\n M: +firstDay.m,\n nameMap: name\n };\n\n var content = this._formatterLabel(formatter, params);\n\n var monthText = new graphic.Text({\n z2: 30\n });\n zrUtil.extend(graphic.setTextStyle(monthText.style, monthLabel, {\n text: content\n }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin));\n group.add(monthText);\n }\n },\n _weekTextPositionControl: function (point, orient, position, margin, cellSize) {\n var align = 'center';\n var vAlign = 'middle';\n var x = point[0];\n var y = point[1];\n var isStart = position === 'start';\n\n if (orient === 'horizontal') {\n x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;\n align = isStart ? 'right' : 'left';\n } else {\n y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;\n vAlign = isStart ? 'bottom' : 'top';\n }\n\n return {\n x: x,\n y: y,\n textAlign: align,\n textVerticalAlign: vAlign\n };\n },\n // render weeks\n _renderWeekText: function (calendarModel, rangeData, orient, group) {\n var dayLabel = calendarModel.getModel('dayLabel');\n\n if (!dayLabel.get('show')) {\n return;\n }\n\n var coordSys = calendarModel.coordinateSystem;\n var pos = dayLabel.get('position');\n var nameMap = dayLabel.get('nameMap');\n var margin = dayLabel.get('margin');\n var firstDayOfWeek = coordSys.getFirstDayOfWeek();\n\n if (zrUtil.isString(nameMap)) {\n nameMap = WEEK_TEXT[nameMap.toUpperCase()] || [];\n }\n\n var start = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time;\n var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];\n margin = numberUtil.parsePercent(margin, cellSize[orient === 'horizontal' ? 0 : 1]);\n\n if (pos === 'start') {\n start = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;\n margin = -margin;\n }\n\n for (var i = 0; i < 7; i++) {\n var tmpD = coordSys.getNextNDay(start, i);\n var point = coordSys.dataToRect([tmpD.time], false).center;\n var day = i;\n day = Math.abs((i + firstDayOfWeek) % 7);\n var weekText = new graphic.Text({\n z2: 30\n });\n zrUtil.extend(graphic.setTextStyle(weekText.style, dayLabel, {\n text: nameMap[day]\n }), this._weekTextPositionControl(point, orient, pos, margin, cellSize));\n group.add(weekText);\n }\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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\nrequire(\"./dataZoom/typeDefaulter\");\n\nrequire(\"./dataZoom/DataZoomModel\");\n\nrequire(\"./dataZoom/DataZoomView\");\n\nrequire(\"./dataZoom/InsideZoomModel\");\n\nrequire(\"./dataZoom/InsideZoomView\");\n\nrequire(\"./dataZoom/dataZoomProcessor\");\n\nrequire(\"./dataZoom/dataZoomAction\");","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"./dataZoom/typeDefaulter\");\n\nrequire(\"./dataZoom/DataZoomModel\");\n\nrequire(\"./dataZoom/DataZoomView\");\n\nrequire(\"./dataZoom/SelectZoomModel\");\n\nrequire(\"./dataZoom/SelectZoomView\");\n\nrequire(\"./dataZoom/dataZoomProcessor\");\n\nrequire(\"./dataZoom/dataZoomAction\");","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"./dataZoom/typeDefaulter\");\n\nrequire(\"./dataZoom/DataZoomModel\");\n\nrequire(\"./dataZoom/DataZoomView\");\n\nrequire(\"./dataZoom/SliderZoomModel\");\n\nrequire(\"./dataZoom/SliderZoomView\");\n\nrequire(\"./dataZoom/dataZoomProcessor\");\n\nrequire(\"./dataZoom/dataZoomAction\");","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar helper = require(\"./helper\");\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 each = zrUtil.each;\nvar asc = numberUtil.asc;\n/**\n * Operate single axis.\n * One axis can only operated by one axis operator.\n * Different dataZoomModels may be defined to operate the same axis.\n * (i.e. 'inside' data zoom and 'slider' data zoom components)\n * So dataZoomModels share one axisProxy in that case.\n *\n * @class\n */\n\nvar AxisProxy = function (dimName, axisIndex, dataZoomModel, ecModel) {\n /**\n * @private\n * @type {string}\n */\n this._dimName = dimName;\n /**\n * @private\n */\n\n this._axisIndex = axisIndex;\n /**\n * @private\n * @type {Array.}\n */\n\n this._valueWindow;\n /**\n * @private\n * @type {Array.}\n */\n\n this._percentWindow;\n /**\n * @private\n * @type {Array.}\n */\n\n this._dataExtent;\n /**\n * {minSpan, maxSpan, minValueSpan, maxValueSpan}\n * @private\n * @type {Object}\n */\n\n this._minMaxSpan;\n /**\n * @readOnly\n * @type {module: echarts/model/Global}\n */\n\n this.ecModel = ecModel;\n /**\n * @private\n * @type {module: echarts/component/dataZoom/DataZoomModel}\n */\n\n this._dataZoomModel = dataZoomModel; // /**\n // * @readOnly\n // * @private\n // */\n // this.hasSeriesStacked;\n};\n\nAxisProxy.prototype = {\n constructor: AxisProxy,\n\n /**\n * Whether the axisProxy is hosted by dataZoomModel.\n *\n * @public\n * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n * @return {boolean}\n */\n hostedBy: function (dataZoomModel) {\n return this._dataZoomModel === dataZoomModel;\n },\n\n /**\n * @return {Array.} Value can only be NaN or finite value.\n */\n getDataValueWindow: function () {\n return this._valueWindow.slice();\n },\n\n /**\n * @return {Array.}\n */\n getDataPercentWindow: function () {\n return this._percentWindow.slice();\n },\n\n /**\n * @public\n * @param {number} axisIndex\n * @return {Array} seriesModels\n */\n getTargetSeriesModels: function () {\n var seriesModels = [];\n var ecModel = this.ecModel;\n ecModel.eachSeries(function (seriesModel) {\n if (helper.isCoordSupported(seriesModel.get('coordinateSystem'))) {\n var dimName = this._dimName;\n var axisModel = ecModel.queryComponents({\n mainType: dimName + 'Axis',\n index: seriesModel.get(dimName + 'AxisIndex'),\n id: seriesModel.get(dimName + 'AxisId')\n })[0];\n\n if (this._axisIndex === (axisModel && axisModel.componentIndex)) {\n seriesModels.push(seriesModel);\n }\n }\n }, this);\n return seriesModels;\n },\n getAxisModel: function () {\n return this.ecModel.getComponent(this._dimName + 'Axis', this._axisIndex);\n },\n getOtherAxisModel: function () {\n var axisDim = this._dimName;\n var ecModel = this.ecModel;\n var axisModel = this.getAxisModel();\n var isCartesian = axisDim === 'x' || axisDim === 'y';\n var otherAxisDim;\n var coordSysIndexName;\n\n if (isCartesian) {\n coordSysIndexName = 'gridIndex';\n otherAxisDim = axisDim === 'x' ? 'y' : 'x';\n } else {\n coordSysIndexName = 'polarIndex';\n otherAxisDim = axisDim === 'angle' ? 'radius' : 'angle';\n }\n\n var foundOtherAxisModel;\n ecModel.eachComponent(otherAxisDim + 'Axis', function (otherAxisModel) {\n if ((otherAxisModel.get(coordSysIndexName) || 0) === (axisModel.get(coordSysIndexName) || 0)) {\n foundOtherAxisModel = otherAxisModel;\n }\n });\n return foundOtherAxisModel;\n },\n getMinMaxSpan: function () {\n return zrUtil.clone(this._minMaxSpan);\n },\n\n /**\n * Only calculate by given range and this._dataExtent, do not change anything.\n *\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 calculateDataWindow: function (opt) {\n var dataExtent = this._dataExtent;\n var axisModel = this.getAxisModel();\n var scale = axisModel.axis.scale;\n\n var rangePropMode = this._dataZoomModel.getRangePropMode();\n\n var percentExtent = [0, 100];\n var percentWindow = [];\n var valueWindow = [];\n var hasPropModeValue;\n each(['start', 'end'], function (prop, idx) {\n var boundPercent = opt[prop];\n var boundValue = opt[prop + 'Value']; // Notice: dataZoom is based either on `percentProp` ('start', 'end') or\n // on `valueProp` ('startValue', 'endValue'). (They are based on the data extent\n // but not min/max of axis, which will be calculated by data window then).\n // The former one is suitable for cases that a dataZoom component controls multiple\n // axes with different unit or extent, and the latter one is suitable for accurate\n // zoom by pixel (e.g., in dataZoomSelect).\n // we use `getRangePropMode()` to mark which prop is used. `rangePropMode` is updated\n // only when setOption or dispatchAction, otherwise it remains its original value.\n // (Why not only record `percentProp` and always map to `valueProp`? Because\n // the map `valueProp` -> `percentProp` -> `valueProp` probably not the original\n // `valueProp`. consider two axes constrolled by one dataZoom. They have different\n // data extent. All of values that are overflow the `dataExtent` will be calculated\n // to percent '100%').\n\n if (rangePropMode[idx] === 'percent') {\n boundPercent == null && (boundPercent = percentExtent[idx]); // Use scale.parse to math round for category or time axis.\n\n boundValue = scale.parse(numberUtil.linearMap(boundPercent, percentExtent, dataExtent));\n } else {\n hasPropModeValue = true;\n boundValue = boundValue == null ? dataExtent[idx] : scale.parse(boundValue); // Calculating `percent` from `value` may be not accurate, because\n // This calculation can not be inversed, because all of values that\n // are overflow the `dataExtent` will be calculated to percent '100%'\n\n boundPercent = numberUtil.linearMap(boundValue, dataExtent, percentExtent);\n } // valueWindow[idx] = round(boundValue);\n // percentWindow[idx] = round(boundPercent);\n\n\n valueWindow[idx] = boundValue;\n percentWindow[idx] = boundPercent;\n });\n asc(valueWindow);\n asc(percentWindow); // The windows from user calling of `dispatchAction` might be out of the extent,\n // or do not obey the `min/maxSpan`, `min/maxValueSpan`. But we dont restrict window\n // by `zoomLock` here, because we see `zoomLock` just as a interaction constraint,\n // where API is able to initialize/modify the window size even though `zoomLock`\n // specified.\n\n var spans = this._minMaxSpan;\n hasPropModeValue ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false) : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true);\n\n function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) {\n var suffix = toValue ? 'Span' : 'ValueSpan';\n sliderMove(0, fromWindow, fromExtent, 'all', spans['min' + suffix], spans['max' + suffix]);\n\n for (var i = 0; i < 2; i++) {\n toWindow[i] = numberUtil.linearMap(fromWindow[i], fromExtent, toExtent, true);\n toValue && (toWindow[i] = scale.parse(toWindow[i]));\n }\n }\n\n return {\n valueWindow: valueWindow,\n percentWindow: percentWindow\n };\n },\n\n /**\n * Notice: reset should not be called before series.restoreData() called,\n * so it is recommanded to be called in \"process stage\" but not \"model init\n * stage\".\n *\n * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n */\n reset: function (dataZoomModel) {\n if (dataZoomModel !== this._dataZoomModel) {\n return;\n }\n\n var targetSeries = this.getTargetSeriesModels(); // Culculate data window and data extent, and record them.\n\n this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries); // this.hasSeriesStacked = false;\n // each(targetSeries, function (series) {\n // var data = series.getData();\n // var dataDim = data.mapDimension(this._dimName);\n // var stackedDimension = data.getCalculationInfo('stackedDimension');\n // if (stackedDimension && stackedDimension === dataDim) {\n // this.hasSeriesStacked = true;\n // }\n // }, this);\n // `calculateDataWindow` uses min/maxSpan.\n\n setMinMaxSpan(this);\n var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption);\n this._valueWindow = dataWindow.valueWindow;\n this._percentWindow = dataWindow.percentWindow; // Update axis setting then.\n\n setAxisModel(this);\n },\n\n /**\n * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n */\n restore: function (dataZoomModel) {\n if (dataZoomModel !== this._dataZoomModel) {\n return;\n }\n\n this._valueWindow = this._percentWindow = null;\n setAxisModel(this, true);\n },\n\n /**\n * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n */\n filterData: function (dataZoomModel, api) {\n if (dataZoomModel !== this._dataZoomModel) {\n return;\n }\n\n var axisDim = this._dimName;\n var seriesModels = this.getTargetSeriesModels();\n var filterMode = dataZoomModel.get('filterMode');\n var valueWindow = this._valueWindow;\n\n if (filterMode === 'none') {\n return;\n } // FIXME\n // Toolbox may has dataZoom injected. And if there are stacked bar chart\n // with NaN data, NaN will be filtered and stack will be wrong.\n // So we need to force the mode to be set empty.\n // In fect, it is not a big deal that do not support filterMode-'filter'\n // when using toolbox#dataZoom, utill tooltip#dataZoom support \"single axis\n // selection\" some day, which might need \"adapt to data extent on the\n // otherAxis\", which is disabled by filterMode-'empty'.\n // But currently, stack has been fixed to based on value but not index,\n // so this is not an issue any more.\n // var otherAxisModel = this.getOtherAxisModel();\n // if (dataZoomModel.get('$fromToolbox')\n // && otherAxisModel\n // && otherAxisModel.hasSeriesStacked\n // ) {\n // filterMode = 'empty';\n // }\n // TODO\n // filterMode 'weakFilter' and 'empty' is not optimized for huge data yet.\n\n\n each(seriesModels, function (seriesModel) {\n var seriesData = seriesModel.getData();\n var dataDims = seriesData.mapDimension(axisDim, true);\n\n if (!dataDims.length) {\n return;\n }\n\n if (filterMode === 'weakFilter') {\n seriesData.filterSelf(function (dataIndex) {\n var leftOut;\n var rightOut;\n var hasValue;\n\n for (var i = 0; i < dataDims.length; i++) {\n var value = seriesData.get(dataDims[i], dataIndex);\n var thisHasValue = !isNaN(value);\n var thisLeftOut = value < valueWindow[0];\n var thisRightOut = value > valueWindow[1];\n\n if (thisHasValue && !thisLeftOut && !thisRightOut) {\n return true;\n }\n\n thisHasValue && (hasValue = true);\n thisLeftOut && (leftOut = true);\n thisRightOut && (rightOut = true);\n } // If both left out and right out, do not filter.\n\n\n return hasValue && leftOut && rightOut;\n });\n } else {\n each(dataDims, function (dim) {\n if (filterMode === 'empty') {\n seriesModel.setData(seriesData = seriesData.map(dim, function (value) {\n return !isInWindow(value) ? NaN : value;\n }));\n } else {\n var range = {};\n range[dim] = valueWindow; // console.time('select');\n\n seriesData.selectRange(range); // console.timeEnd('select');\n }\n });\n }\n\n each(dataDims, function (dim) {\n seriesData.setApproximateExtent(valueWindow, dim);\n });\n });\n\n function isInWindow(value) {\n return value >= valueWindow[0] && value <= valueWindow[1];\n }\n }\n};\n\nfunction calculateDataExtent(axisProxy, axisDim, seriesModels) {\n var dataExtent = [Infinity, -Infinity];\n each(seriesModels, function (seriesModel) {\n var seriesData = seriesModel.getData();\n\n if (seriesData) {\n each(seriesData.mapDimension(axisDim, true), function (dim) {\n var seriesExtent = seriesData.getApproximateExtent(dim);\n seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\n seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\n });\n }\n });\n\n if (dataExtent[1] < dataExtent[0]) {\n dataExtent = [NaN, NaN];\n } // It is important to get \"consistent\" extent when more then one axes is\n // controlled by a `dataZoom`, otherwise those axes will not be synchronized\n // when zooming. But it is difficult to know what is \"consistent\", considering\n // axes have different type or even different meanings (For example, two\n // time axes are used to compare data of the same date in different years).\n // So basically dataZoom just obtains extent by series.data (in category axis\n // extent can be obtained from axis.data).\n // Nevertheless, user can set min/max/scale on axes to make extent of axes\n // consistent.\n\n\n fixExtentByAxis(axisProxy, dataExtent);\n return dataExtent;\n}\n\nfunction fixExtentByAxis(axisProxy, dataExtent) {\n var axisModel = axisProxy.getAxisModel();\n var min = axisModel.getMin(true); // For category axis, if min/max/scale are not set, extent is determined\n // by axis.data by default.\n\n var isCategoryAxis = axisModel.get('type') === 'category';\n var axisDataLen = isCategoryAxis && axisModel.getCategories().length;\n\n if (min != null && min !== 'dataMin' && typeof min !== 'function') {\n dataExtent[0] = min;\n } else if (isCategoryAxis) {\n dataExtent[0] = axisDataLen > 0 ? 0 : NaN;\n }\n\n var max = axisModel.getMax(true);\n\n if (max != null && max !== 'dataMax' && typeof max !== 'function') {\n dataExtent[1] = max;\n } else if (isCategoryAxis) {\n dataExtent[1] = axisDataLen > 0 ? axisDataLen - 1 : NaN;\n }\n\n if (!axisModel.get('scale', true)) {\n dataExtent[0] > 0 && (dataExtent[0] = 0);\n dataExtent[1] < 0 && (dataExtent[1] = 0);\n } // For value axis, if min/max/scale are not set, we just use the extent obtained\n // by series data, which may be a little different from the extent calculated by\n // `axisHelper.getScaleExtent`. But the different just affects the experience a\n // little when zooming. So it will not be fixed until some users require it strongly.\n\n\n return dataExtent;\n}\n\nfunction setAxisModel(axisProxy, isRestore) {\n var axisModel = axisProxy.getAxisModel();\n var percentWindow = axisProxy._percentWindow;\n var valueWindow = axisProxy._valueWindow;\n\n if (!percentWindow) {\n return;\n } // [0, 500]: arbitrary value, guess axis extent.\n\n\n var precision = numberUtil.getPixelPrecision(valueWindow, [0, 500]);\n precision = Math.min(precision, 20); // isRestore or isFull\n\n var useOrigin = isRestore || percentWindow[0] === 0 && percentWindow[1] === 100;\n axisModel.setRange(useOrigin ? null : +valueWindow[0].toFixed(precision), useOrigin ? null : +valueWindow[1].toFixed(precision));\n}\n\nfunction setMinMaxSpan(axisProxy) {\n var minMaxSpan = axisProxy._minMaxSpan = {};\n var dataZoomModel = axisProxy._dataZoomModel;\n var dataExtent = axisProxy._dataExtent;\n each(['min', 'max'], function (minMax) {\n var percentSpan = dataZoomModel.get(minMax + 'Span');\n var valueSpan = dataZoomModel.get(minMax + 'ValueSpan');\n valueSpan != null && (valueSpan = axisProxy.getAxisModel().axis.scale.parse(valueSpan)); // minValueSpan and maxValueSpan has higher priority than minSpan and maxSpan\n\n if (valueSpan != null) {\n percentSpan = numberUtil.linearMap(dataExtent[0] + valueSpan, dataExtent, [0, 100], true);\n } else if (percentSpan != null) {\n valueSpan = numberUtil.linearMap(percentSpan, [0, 100], dataExtent, true) - dataExtent[0];\n }\n\n minMaxSpan[minMax + 'Span'] = percentSpan;\n minMaxSpan[minMax + 'ValueSpan'] = valueSpan;\n });\n}\n\nvar _default = AxisProxy;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar 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 :\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 but not set when calling\n // `dispatchAction`.\n // The pair 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.} [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.} [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.}\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.}\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.}\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.} names\n * @param {Array.=} 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.}\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.} 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.}\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;"],"names":["echarts","actionInfo","type","event","registerAction","payload","ecModel","eachComponent","mainType","query","parallelAxisModel","axis","model","setActiveIntervals","intervals","parallelModel","setAxisExpand","preprocessor","registerPreprocessor","_config","__DEV__","zrUtil","visualSolution","Model","DEFAULT_OUT_OF_BRUSH_COLOR","BrushModel","extendComponentModel","dependencies","defaultOption","toolbox","brushLink","seriesIndex","geoIndex","xAxisIndex","yAxisIndex","brushType","brushMode","transformable","brushStyle","borderWidth","color","borderColor","throttleType","throttleDelay","removeOnClick","z","areas","brushOption","coordInfoList","optionUpdated","newOption","isInit","thisOption","this","option","replaceVisualOption","inBrush","outOfBrush","hasOwnProperty","liftZ","setAreas","map","area","generateBrushOption","setBrushOption","merge","getItemStyle","_default","module","exports","BrushController","_visualEncoding","layoutCovers","extendComponentView","init","api","_brushController","getZr","on","bind","_onBrush","mount","render","brushModel","updateController","apply","arguments","updateTransform","updateView","dispose","opt","modelId","id","brushTargetManager","setOutputRanges","isEnd","dispatchAction","brushId","clone","$from","setPanels","makePanelOpts","enableBrush","updateCovers","slice","update","DEFAULT_TOOLBOX_BTNS","isNew","brushComponents","brush","isArray","length","brushComponentSpecifiedBtns","each","brushOpt","tbs","Array","concat","feature","toolboxFeature","toolboxBrush","brushTypes","push","removeDuplicate","arr","val","flag","polygonContain","BoundingRect","_graphic","linePolygonIntersect","selector","lineX","getLineSelectors","lineY","rect","point","itemLayout","selectors","boundingRect","contain","intersect","polygon","range","points","x","y","width","height","p","create","xyIndex","xy","wh","inLineRange","layoutRange","reverse","throttleUtil","BrushTargetManager","STATE_LIST","DISPATCH_METHOD","DISPATCH_FLAG","PRIORITY_BRUSH","PRIORITY","VISUAL","BRUSH","setInputRanges","brushSelected","zr","doDispatch","fn","createOrUpdate","isDisposed","batch","checkInRange","selectorsByBrushType","rangeInfoList","data","dataIndex","i","len","getSelectorsByBrushType","seriesModel","brushSelector","isString","sels","selectorsByElementType","getItemLayout","isFunction","bSelector","sel","brushModelNotControll","seriesIndices","indexOf","bindSelector","selFn","elType","registerLayout","key","registerVisual","brushIndex","thisBrushSelected","brushName","name","selected","linkedSeriesMap","selectedDataIndexForLink","rangeInfoBySeries","hasBrushExists","defaults","boundingRectBuilders","visualMappings","createVisualMappings","mappingOption","mappingMethod","linkOthers","brushed","stepAParallel","coordSys","coordinateSystem","hasAxisBrushed","eachActiveState","getData","activeState","stepAOthers","controlSeries","eachSeries","subType","seriesBrushSelected","seriesId","seriesName","getValueState","getRawIndex","applyVisual","noop","getBoundingRectFromMinMax","minMax","Infinity","rg","graphic","formatUtil","numberUtil","MONTH_TEXT","EN","CN","WEEK_TEXT","_tlpoints","_blpoints","_firstDayOfMonth","_firstDayPoints","calendarModel","group","removeAll","rangeData","getRangeInfo","orient","getOrient","_renderDayRect","_renderLines","_renderYearText","_renderMonthText","_renderWeekText","itemRectStyleModel","getModel","sw","getCellWidth","sh","getCellHeight","start","time","end","getNextNDay","dataToRect","tl","Rect","shape","cursor","style","add","self","lineStyleModel","getLineStyle","show","get","lineWidth","firstDay","addPoints","formatedDate","getDateInfo","m","date","setMonth","getMonth","_getLinePointsOfOneWeek","_drawSplitline","_getEdgesPoints","rs","idx","poyline","Polyline","z2","tmpD","day","_formatterLabel","formatter","params","formatTplSimple","nameMap","_yearTextPositionControl","textEl","position","margin","aligns","rotate","Math","PI","rotation","textAlign","textVerticalAlign","yearLabel","pos","xc","yc","posPoints","top","bottom","left","right","content","yearText","Text","setTextStyle","text","attr","_monthTextPositionControl","isCenter","align","vAlign","monthLabel","termPoints","toUpperCase","tmp","firstDayPoints","yyyy","yy","MM","M","monthText","extend","_weekTextPositionControl","cellSize","isStart","dayLabel","firstDayOfWeek","getFirstDayOfWeek","lweek","parsePercent","fweek","center","abs","weekText","helper","sliderMove","asc","AxisProxy","dimName","axisIndex","dataZoomModel","_dimName","_axisIndex","_valueWindow","_percentWindow","_dataExtent","_minMaxSpan","_dataZoomModel","calculateDataExtent","axisProxy","axisDim","seriesModels","dataExtent","seriesData","mapDimension","dim","seriesExtent","getApproximateExtent","NaN","fixExtentByAxis","axisModel","getAxisModel","min","getMin","isCategoryAxis","axisDataLen","getCategories","max","getMax","setAxisModel","isRestore","percentWindow","valueWindow","precision","getPixelPrecision","useOrigin","setRange","toFixed","setMinMaxSpan","minMaxSpan","percentSpan","valueSpan","scale","parse","linearMap","prototype","constructor","hostedBy","getDataValueWindow","getDataPercentWindow","getTargetSeriesModels","isCoordSupported","queryComponents","index","componentIndex","getComponent","getOtherAxisModel","otherAxisDim","coordSysIndexName","foundOtherAxisModel","isCartesian","otherAxisModel","getMinMaxSpan","calculateDataWindow","hasPropModeValue","rangePropMode","getRangePropMode","percentExtent","prop","boundPercent","boundValue","spans","restrictSet","fromWindow","toWindow","fromExtent","toExtent","toValue","suffix","reset","targetSeries","dataWindow","settledOption","restore","filterData","filterMode","dataDims","filterSelf","leftOut","rightOut","hasValue","value","thisHasValue","isNaN","thisLeftOut","thisRightOut","setData","isInWindow","selectRange","setApproximateExtent","env","modelUtil","eachAxisDim","DataZoomModel","zlevel","throttle","startValue","endValue","minSpan","maxSpan","minValueSpan","maxValueSpan","rangeMode","parentModel","_dataIntervalByAxis","_dataInfo","_axisProxies","textStyleModel","_autoThrottle","_rangePropMode","inputRawOption","retrieveRawOption","mergeDefaultAndTheme","doInit","mergeOption","canvasSupported","realtime","_setDefaultThrottle","updateRangeUse","names","_resetTarget","_giveAxisProxies","axisProxies","eachTargetAxis","dimNames","dependentModels","__dzAxisProxy","autoMode","_judgeAutoMode","axisIndexName","normalizeToArray","_autoSetAxisIndex","_autoSetOrient","hasIndexSpecified","autoAxisIndex","singleAxis","singleAxisModel","singleAxisIndex","axisIndices","axisModels","_isSeriesHasAllAxesTypeOf","axisId","axisType","is","seriesAxisIndex","globalOption","animation","animationDurationUpdate","getFirstTargetAxisModel","firstAxisModel","indices","callback","context","call","getAxisProxy","setRawRange","setCalculatedRange","getPercentRange","findRepresentativeAxisProxy","getValueRange","axisDimName","ret","rangeModeInOption","percentSpecified","valueSpecified","ComponentView","getTargetCoordInfo","coordSysLists","save","coordModel","store","coordIndex","item","getCoordSysModel","disabled","zoomLock","zoomOnMouseWheel","moveOnMouseMove","moveOnMouseWheel","preventDefaultMouseMove","DataZoomView","roams","InsideZoomView","_range","superApply","coordSysName","allCoordIds","coordInfo","generateCoordId","getRange","eventName","roamHandlers","register","coordId","containsPoint","e","containPoint","dataZoomId","unregister","zoom","controller","lastRange","directionInfo","getDirectionInfo","originX","originY","percentPoint","signal","pixelStart","pixelLength","pixel","pan","makeMover","oldX","oldY","newX","newY","scrollMove","scrollDelta","getPercentDelta","percentDelta","grid","oldPoint","newPoint","getRect","inverse","polar","radiusExtent","getRadiusAxis","getExtent","angleExtent","getAngleAxis","pointToCoord","SliderZoomModel","layoutMode","backgroundColor","dataBackground","lineStyle","opacity","areaStyle","fillerColor","handleIcon","handleSize","handleStyle","labelPrecision","labelFormatter","showDetail","showDataShadow","textStyle","eventTool","layout","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","from","uid","_buildView","_updateView","remove","clear","thisGroup","_resetLocation","_resetInterval","barGroup","Group","_renderBackground","_renderHandle","_renderDataShadow","_positionGroup","coordRect","_findCoordRect","ecSize","getWidth","getHeight","positionInfo","layoutParams","getLayoutParams","layoutRect","getLayoutRect","padding","location","targetAxisModel","otherAxisInverse","getBoundingRect","_getViewExtent","size","silent","fill","onclick","_onClickPanelClick","info","_prepareDataShadowInfo","series","getRawData","otherDim","getShadowDim","otherDataExtent","getDataExtent","otherOffset","lastIsEmpty","otherShadowExtent","thisShadowExtent","areaPoints","linePoints","step","count","thisCoord","stride","round","isEmpty","otherCoord","Polygon","getAreaStyle","result","thisAxis","getOtherDim","getOtherAxis","thisDim","displaybles","handles","handleLabels","filler","draggable","getCursor","drift","_onDragMove","ondragstart","_showDataInfo","ondragend","_onDragEnd","onmouseover","onmouseout","textPosition","subPixelOptimize","stroke","handleIndex","path","createIcon","bRect","setStyle","handleColor","invisible","textFill","getTextColor","textFont","getFont","viewExtent","_updateInterval","delta","handleEnds","viewExtend","nonRealtime","handleInterval","handle","handleHeight","setShape","_updateDataInfo","labelTexts","dataInterval","_formatLabel","orderedHandleEnds","setLabel","barTransform","getTransform","parent","direction","transformDirection","offset","textPoint","applyTransform","valueStr","getLabel","replace","showOrHide","dx","dy","stop","getLocalTransform","vertex","changed","_dispatchZoomAction","localPoint","transformCoordToLocal","offsetX","offsetY","radius","angle","linkedNodesFinder","createLinkedNodesFinder","effectedModels","nodes","_util","createHashMap","registerProcessor","getTargetSeries","seriesModelMap","set","modifyOutputEnd","overallReset","percentRange","valueRange","AXIS_DIMS","COORDS","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","pop","head","RoamController","dataZoomInfo","theDataZoomId","theCoordId","record","dataZoomInfos","cleanStore","createController","curry","controllerParams","mergeControllerParams","enable","controlType","setPointerChecker","newRecord","isAvailableBehavior","method","prefix","typePriority","oneType","Component","registerSubTypeDefaulter","ComponentModel","_sourceHelper","detectSourceFormat","_sourceType","SERIES_LAYOUT_BY_COLUMN","seriesLayoutBy","sourceHeader","dimensions","source","makeAction","geoModel","geo","regions","region","isSelected","MapDraw","mapDraw","_mapDraw","draw"],"sourceRoot":""}