{"version":3,"file":"js/chunk-vendors-bcd1cd2e.b626dd52.js","mappings":"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","sources":["webpack://i4proportal/./node_modules/echarts/lib/component/angleAxis.js","webpack://i4proportal/./node_modules/echarts/lib/component/axis.js","webpack://i4proportal/./node_modules/echarts/lib/component/axisPointer.js","webpack://i4proportal/./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js","webpack://i4proportal/./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js","webpack://i4proportal/./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js","webpack://i4proportal/./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js","webpack://i4proportal/./node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js","webpack://i4proportal/./node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js","webpack://i4proportal/./node_modules/echarts/lib/component/axisPointer/axisTrigger.js","webpack://i4proportal/./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js","webpack://i4proportal/./node_modules/echarts/lib/component/axisPointer/globalListener.js","webpack://i4proportal/./node_modules/echarts/lib/component/axisPointer/modelHelper.js","webpack://i4proportal/./node_modules/echarts/lib/component/axisPointer/viewHelper.js","webpack://i4proportal/./node_modules/echarts/lib/component/axis/AngleAxisView.js","webpack://i4proportal/./node_modules/echarts/lib/component/axis/AxisBuilder.js","webpack://i4proportal/./node_modules/echarts/lib/component/axis/AxisView.js","webpack://i4proportal/./node_modules/echarts/lib/component/axis/CartesianAxisView.js","webpack://i4proportal/./node_modules/echarts/lib/component/axis/ParallelAxisView.js","webpack://i4proportal/./node_modules/echarts/lib/component/axis/RadiusAxisView.js","webpack://i4proportal/./node_modules/echarts/lib/component/axis/SingleAxisView.js","webpack://i4proportal/./node_modules/echarts/lib/component/axis/axisSplitHelper.js"],"sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"../coord/polar/polarCreator\");\n\nrequire(\"./axis/AngleAxisView\");","\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/cartesian/AxisModel\");\n\nrequire(\"./axis/CartesianAxisView\");","\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 axisPointerModelHelper = require(\"./axisPointer/modelHelper\");\n\nvar axisTrigger = require(\"./axisPointer/axisTrigger\");\n\nrequire(\"./axisPointer/AxisPointerModel\");\n\nrequire(\"./axisPointer/AxisPointerView\");\n\nrequire(\"./axisPointer/CartesianAxisPointer\");\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// CartesianAxisPointer is not supposed to be required here. But consider\n// echarts.simple.js and online build tooltip, which only require gridSimple,\n// CartesianAxisPointer should be able to required somewhere.\necharts.registerPreprocessor(function (option) {\n // Always has a global axisPointerModel for default setting.\n if (option) {\n (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {});\n var link = option.axisPointer.link; // Normalize to array to avoid object mergin. But if link\n // is not set, remain null/undefined, otherwise it will\n // override existent link setting.\n\n if (link && !zrUtil.isArray(link)) {\n option.axisPointer.link = [link];\n }\n }\n}); // This process should proformed after coordinate systems created\n// and series data processed. So put it on statistic processing stage.\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\n // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n // allAxesInfo should be updated when setOption performed.\n ecModel.getComponent('axisPointer').coordSysAxesInfo = axisPointerModelHelper.collect(ecModel, api);\n}); // Broadcast to all views.\n\necharts.registerAction({\n type: 'updateAxisPointer',\n event: 'updateAxisPointer',\n update: ':updateAxisPointer'\n}, axisTrigger);","\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*/\nvar AxisPointerModel = echarts.extendComponentModel({\n type: 'axisPointer',\n coordSysAxesInfo: null,\n defaultOption: {\n // 'auto' means that show when triggered by tooltip or handle.\n show: 'auto',\n // 'click' | 'mousemove' | 'none'\n triggerOn: null,\n // set default in AxisPonterView.js\n zlevel: 0,\n z: 50,\n type: 'line',\n // 'line' 'shadow' 'cross' 'none'.\n // axispointer triggered by tootip determine snap automatically,\n // see `modelHelper`.\n snap: false,\n triggerTooltip: true,\n value: null,\n status: null,\n // Init value depends on whether handle is used.\n // [group0, group1, ...]\n // Each group can be: {\n // mapper: function () {},\n // singleTooltip: 'multiple', // 'multiple' or 'single'\n // xAxisId: ...,\n // yAxisName: ...,\n // angleAxisIndex: ...\n // }\n // mapper: can be ignored.\n // input: {axisInfo, value}\n // output: {axisInfo, value}\n link: [],\n // Do not set 'auto' here, otherwise global animation: false\n // will not effect at this axispointer.\n animation: null,\n animationDurationUpdate: 200,\n lineStyle: {\n color: '#aaa',\n width: 1,\n type: 'solid'\n },\n shadowStyle: {\n color: 'rgba(150,150,150,0.3)'\n },\n label: {\n show: true,\n formatter: null,\n // string | Function\n precision: 'auto',\n // Or a number like 0, 1, 2 ...\n margin: 3,\n color: '#fff',\n padding: [5, 7, 5, 7],\n backgroundColor: 'auto',\n // default: axis line color\n borderColor: null,\n borderWidth: 0,\n shadowBlur: 3,\n shadowColor: '#aaa' // Considering applicability, common style should\n // better not have shadowOffset.\n // shadowOffsetX: 0,\n // shadowOffsetY: 2\n\n },\n handle: {\n show: false,\n\n /* eslint-disable */\n icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\n // jshint ignore:line\n\n /* eslint-enable */\n size: 45,\n // handle margin is from symbol center to axis, which is stable when circular move.\n margin: 50,\n // color: '#1b8bbd'\n // color: '#2f4554'\n color: '#333',\n shadowBlur: 3,\n shadowColor: '#aaa',\n shadowOffsetX: 0,\n shadowOffsetY: 2,\n // For mobile performance\n throttle: 40\n }\n }\n});\nvar _default = AxisPointerModel;\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 globalListener = require(\"./globalListener\");\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 AxisPointerView = echarts.extendComponentView({\n type: 'axisPointer',\n render: function (globalAxisPointerModel, ecModel, api) {\n var globalTooltipModel = ecModel.getComponent('tooltip');\n var triggerOn = globalAxisPointerModel.get('triggerOn') || globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click'; // Register global listener in AxisPointerView to enable\n // AxisPointerView to be independent to Tooltip.\n\n globalListener.register('axisPointer', api, function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none' && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) {\n dispatchAction({\n type: 'updateAxisPointer',\n currTrigger: currTrigger,\n x: e && e.offsetX,\n y: e && e.offsetY\n });\n }\n });\n },\n\n /**\n * @override\n */\n remove: function (ecModel, api) {\n globalListener.unregister(api.getZr(), 'axisPointer');\n AxisPointerView.superApply(this._model, 'remove', arguments);\n },\n\n /**\n * @override\n */\n dispose: function (ecModel, api) {\n globalListener.unregister('axisPointer', api);\n AxisPointerView.superApply(this._model, 'dispose', arguments);\n }\n});\nvar _default = AxisPointerView;\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 clazzUtil = require(\"../../util/clazz\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar axisPointerModelHelper = require(\"./modelHelper\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar throttleUtil = require(\"../../util/throttle\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\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 inner = makeInner();\nvar clone = zrUtil.clone;\nvar bind = zrUtil.bind;\n/**\n * Base axis pointer class in 2D.\n * Implemenents {module:echarts/component/axis/IAxisPointer}.\n */\n\nfunction BaseAxisPointer() {}\n\nBaseAxisPointer.prototype = {\n /**\n * @private\n */\n _group: null,\n\n /**\n * @private\n */\n _lastGraphicKey: null,\n\n /**\n * @private\n */\n _handle: null,\n\n /**\n * @private\n */\n _dragging: false,\n\n /**\n * @private\n */\n _lastValue: null,\n\n /**\n * @private\n */\n _lastStatus: null,\n\n /**\n * @private\n */\n _payloadInfo: null,\n\n /**\n * In px, arbitrary value. Do not set too small,\n * no animation is ok for most cases.\n * @protected\n */\n animationThreshold: 15,\n\n /**\n * @implement\n */\n render: function (axisModel, axisPointerModel, api, forceRender) {\n var value = axisPointerModel.get('value');\n var status = axisPointerModel.get('status'); // Bind them to `this`, not in closure, otherwise they will not\n // be replaced when user calling setOption in not merge mode.\n\n this._axisModel = axisModel;\n this._axisPointerModel = axisPointerModel;\n this._api = api; // Optimize: `render` will be called repeatly during mouse move.\n // So it is power consuming if performing `render` each time,\n // especially on mobile device.\n\n if (!forceRender && this._lastValue === value && this._lastStatus === status) {\n return;\n }\n\n this._lastValue = value;\n this._lastStatus = status;\n var group = this._group;\n var handle = this._handle;\n\n if (!status || status === 'hide') {\n // Do not clear here, for animation better.\n group && group.hide();\n handle && handle.hide();\n return;\n }\n\n group && group.show();\n handle && handle.show(); // Otherwise status is 'show'\n\n var elOption = {};\n this.makeElOption(elOption, value, axisModel, axisPointerModel, api); // Enable change axis pointer type.\n\n var graphicKey = elOption.graphicKey;\n\n if (graphicKey !== this._lastGraphicKey) {\n this.clear(api);\n }\n\n this._lastGraphicKey = graphicKey;\n var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel);\n\n if (!group) {\n group = this._group = new graphic.Group();\n this.createPointerEl(group, elOption, axisModel, axisPointerModel);\n this.createLabelEl(group, elOption, axisModel, axisPointerModel);\n api.getZr().add(group);\n } else {\n var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);\n this.updatePointerEl(group, elOption, doUpdateProps, axisPointerModel);\n this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\n }\n\n updateMandatoryProps(group, axisPointerModel, true);\n\n this._renderHandle(value);\n },\n\n /**\n * @implement\n */\n remove: function (api) {\n this.clear(api);\n },\n\n /**\n * @implement\n */\n dispose: function (api) {\n this.clear(api);\n },\n\n /**\n * @protected\n */\n determineAnimation: function (axisModel, axisPointerModel) {\n var animation = axisPointerModel.get('animation');\n var axis = axisModel.axis;\n var isCategoryAxis = axis.type === 'category';\n var useSnap = axisPointerModel.get('snap'); // Value axis without snap always do not snap.\n\n if (!useSnap && !isCategoryAxis) {\n return false;\n }\n\n if (animation === 'auto' || animation == null) {\n var animationThreshold = this.animationThreshold;\n\n if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\n return true;\n } // It is important to auto animation when snap used. Consider if there is\n // a dataZoom, animation will be disabled when too many points exist, while\n // it will be enabled for better visual effect when little points exist.\n\n\n if (useSnap) {\n var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;\n var axisExtent = axis.getExtent(); // Approximate band width\n\n return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\n }\n\n return false;\n }\n\n return animation === true;\n },\n\n /**\n * add {pointer, label, graphicKey} to elOption\n * @protected\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {// Shoule be implemenented by sub-class.\n },\n\n /**\n * @protected\n */\n createPointerEl: function (group, elOption, axisModel, axisPointerModel) {\n var pointerOption = elOption.pointer;\n\n if (pointerOption) {\n var pointerEl = inner(group).pointerEl = new graphic[pointerOption.type](clone(elOption.pointer));\n group.add(pointerEl);\n }\n },\n\n /**\n * @protected\n */\n createLabelEl: function (group, elOption, axisModel, axisPointerModel) {\n if (elOption.label) {\n var labelEl = inner(group).labelEl = new graphic.Rect(clone(elOption.label));\n group.add(labelEl);\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n },\n\n /**\n * @protected\n */\n updatePointerEl: function (group, elOption, updateProps) {\n var pointerEl = inner(group).pointerEl;\n\n if (pointerEl && elOption.pointer) {\n pointerEl.setStyle(elOption.pointer.style);\n updateProps(pointerEl, {\n shape: elOption.pointer.shape\n });\n }\n },\n\n /**\n * @protected\n */\n updateLabelEl: function (group, elOption, updateProps, axisPointerModel) {\n var labelEl = inner(group).labelEl;\n\n if (labelEl) {\n labelEl.setStyle(elOption.label.style);\n updateProps(labelEl, {\n // Consider text length change in vertical axis, animation should\n // be used on shape, otherwise the effect will be weird.\n shape: elOption.label.shape,\n position: elOption.label.position\n });\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n },\n\n /**\n * @private\n */\n _renderHandle: function (value) {\n if (this._dragging || !this.updateHandleTransform) {\n return;\n }\n\n var axisPointerModel = this._axisPointerModel;\n\n var zr = this._api.getZr();\n\n var handle = this._handle;\n var handleModel = axisPointerModel.getModel('handle');\n var status = axisPointerModel.get('status');\n\n if (!handleModel.get('show') || !status || status === 'hide') {\n handle && zr.remove(handle);\n this._handle = null;\n return;\n }\n\n var isInit;\n\n if (!this._handle) {\n isInit = true;\n handle = this._handle = graphic.createIcon(handleModel.get('icon'), {\n cursor: 'move',\n draggable: true,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n onmousedown: bind(this._onHandleDragMove, this, 0, 0),\n drift: bind(this._onHandleDragMove, this),\n ondragend: bind(this._onHandleDragEnd, this)\n });\n zr.add(handle);\n }\n\n updateMandatoryProps(handle, axisPointerModel, false); // update style\n\n var includeStyles = ['color', 'borderColor', 'borderWidth', 'opacity', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\n handle.setStyle(handleModel.getItemStyle(null, includeStyles)); // update position\n\n var handleSize = handleModel.get('size');\n\n if (!zrUtil.isArray(handleSize)) {\n handleSize = [handleSize, handleSize];\n }\n\n handle.attr('scale', [handleSize[0] / 2, handleSize[1] / 2]);\n throttleUtil.createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate');\n\n this._moveHandleToValue(value, isInit);\n },\n\n /**\n * @private\n */\n _moveHandleToValue: function (value, isInit) {\n updateProps(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));\n },\n\n /**\n * @private\n */\n _onHandleDragMove: function (dx, dy) {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n this._dragging = true; // Persistent for throttle.\n\n var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);\n this._payloadInfo = trans;\n handle.stopAnimation();\n handle.attr(getHandleTransProps(trans));\n inner(handle).lastProp = null;\n\n this._doDispatchAxisPointer();\n },\n\n /**\n * Throttled method.\n * @private\n */\n _doDispatchAxisPointer: function () {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var payloadInfo = this._payloadInfo;\n var axisModel = this._axisModel;\n\n this._api.dispatchAction({\n type: 'updateAxisPointer',\n x: payloadInfo.cursorPoint[0],\n y: payloadInfo.cursorPoint[1],\n tooltipOption: payloadInfo.tooltipOption,\n axesInfo: [{\n axisDim: axisModel.axis.dim,\n axisIndex: axisModel.componentIndex\n }]\n });\n },\n\n /**\n * @private\n */\n _onHandleDragEnd: function (moveAnimation) {\n this._dragging = false;\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var value = this._axisPointerModel.get('value'); // Consider snap or categroy axis, handle may be not consistent with\n // axisPointer. So move handle to align the exact value position when\n // drag ended.\n\n\n this._moveHandleToValue(value); // For the effect: tooltip will be shown when finger holding on handle\n // button, and will be hidden after finger left handle button.\n\n\n this._api.dispatchAction({\n type: 'hideTip'\n });\n },\n\n /**\n * Should be implemenented by sub-class if support `handle`.\n * @protected\n * @param {number} value\n * @param {module:echarts/model/Model} axisModel\n * @param {module:echarts/model/Model} axisPointerModel\n * @return {Object} {position: [x, y], rotation: 0}\n */\n getHandleTransform: null,\n\n /**\n * * Should be implemenented by sub-class if support `handle`.\n * @protected\n * @param {Object} transform {position, rotation}\n * @param {Array.} delta [dx, dy]\n * @param {module:echarts/model/Model} axisModel\n * @param {module:echarts/model/Model} axisPointerModel\n * @return {Object} {position: [x, y], rotation: 0, cursorPoint: [x, y]}\n */\n updateHandleTransform: null,\n\n /**\n * @private\n */\n clear: function (api) {\n this._lastValue = null;\n this._lastStatus = null;\n var zr = api.getZr();\n var group = this._group;\n var handle = this._handle;\n\n if (zr && group) {\n this._lastGraphicKey = null;\n group && zr.remove(group);\n handle && zr.remove(handle);\n this._group = null;\n this._handle = null;\n this._payloadInfo = null;\n }\n },\n\n /**\n * @protected\n */\n doClear: function () {// Implemented by sub-class if necessary.\n },\n\n /**\n * @protected\n * @param {Array.} xy\n * @param {Array.} wh\n * @param {number} [xDimIndex=0] or 1\n */\n buildLabel: function (xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n }\n};\nBaseAxisPointer.prototype.constructor = BaseAxisPointer;\n\nfunction updateProps(animationModel, moveAnimation, el, props) {\n // Animation optimize.\n if (!propsEqual(inner(el).lastProp, props)) {\n inner(el).lastProp = props;\n moveAnimation ? graphic.updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props));\n }\n}\n\nfunction propsEqual(lastProps, newProps) {\n if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {\n var equals = true;\n zrUtil.each(newProps, function (item, key) {\n equals = equals && propsEqual(lastProps[key], item);\n });\n return !!equals;\n } else {\n return lastProps === newProps;\n }\n}\n\nfunction updateLabelShowHide(labelEl, axisPointerModel) {\n labelEl[axisPointerModel.get('label.show') ? 'show' : 'hide']();\n}\n\nfunction getHandleTransProps(trans) {\n return {\n position: trans.position.slice(),\n rotation: trans.rotation || 0\n };\n}\n\nfunction updateMandatoryProps(group, axisPointerModel, silent) {\n var z = axisPointerModel.get('z');\n var zlevel = axisPointerModel.get('zlevel');\n group && group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n el.silent = silent;\n }\n });\n}\n\nclazzUtil.enableClassExtend(BaseAxisPointer);\nvar _default = BaseAxisPointer;\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 BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar cartesianAxisHelper = require(\"../../coord/cartesian/cartesianAxisHelper\");\n\nvar AxisView = require(\"../axis/AxisView\");\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 CartesianAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisPointerType = axisPointerModel.get('type');\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);\n viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n },\n\n /**\n * @override\n */\n getHandleTransform: function (value, axisModel, axisPointerModel) {\n var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {\n labelInside: false\n });\n layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n return {\n position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n };\n },\n\n /**\n * @override\n */\n updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisExtent = axis.getGlobalExtent(true);\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var dimIndex = axis.dim === 'x' ? 0 : 1;\n var currPosition = transform.position;\n currPosition[dimIndex] += delta[dimIndex];\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\n cursorPoint[dimIndex] = currPosition[dimIndex]; // Make tooltip do not overlap axisPointer and in the middle of the grid.\n\n var tooltipOptions = [{\n verticalAlign: 'middle'\n }, {\n align: 'center'\n }];\n return {\n position: currPosition,\n rotation: transform.rotation,\n cursorPoint: cursorPoint,\n tooltipOption: tooltipOptions[dimIndex]\n };\n }\n});\n\nfunction getCartesian(grid, axis) {\n var opt = {};\n opt[axis.dim + 'AxisIndex'] = axis.index;\n return grid.getCartesian(opt);\n}\n\nvar pointerShapeBuilder = {\n line: function (axis, pixelValue, otherExtent) {\n var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\n return {\n type: 'Line',\n subPixelOptimize: true,\n shape: targetShape\n };\n },\n shadow: function (axis, pixelValue, otherExtent) {\n var bandWidth = Math.max(1, axis.getBandWidth());\n var span = otherExtent[1] - otherExtent[0];\n return {\n type: 'Rect',\n shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\n };\n }\n};\n\nfunction getAxisDimIndex(axis) {\n return axis.dim === 'x' ? 0 : 1;\n}\n\nAxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\nvar _default = CartesianAxisPointer;\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 formatUtil = require(\"../../util/format\");\n\nvar BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar AxisBuilder = require(\"../axis/AxisBuilder\");\n\nvar AxisView = require(\"../axis/AxisView\");\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 PolarAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n\n if (axis.dim === 'angle') {\n this.animationThreshold = Math.PI / 18;\n }\n\n var polar = axis.polar;\n var otherAxis = polar.getOtherAxis(axis);\n var otherExtent = otherAxis.getExtent();\n var coordValue;\n coordValue = axis['dataTo' + formatUtil.capitalFirst(axis.dim)](value);\n var axisPointerType = axisPointerModel.get('type');\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, polar, coordValue, otherExtent, elStyle);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var labelMargin = axisPointerModel.get('label.margin');\n var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin);\n viewHelper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos);\n } // Do not support handle, utill any user requires it.\n\n});\n\nfunction getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) {\n var axis = axisModel.axis;\n var coord = axis.dataToCoord(value);\n var axisAngle = polar.getAngleAxis().getExtent()[0];\n axisAngle = axisAngle / 180 * Math.PI;\n var radiusExtent = polar.getRadiusAxis().getExtent();\n var position;\n var align;\n var verticalAlign;\n\n if (axis.dim === 'radius') {\n var transform = matrix.create();\n matrix.rotate(transform, transform, axisAngle);\n matrix.translate(transform, transform, [polar.cx, polar.cy]);\n position = graphic.applyTransform([coord, -labelMargin], transform);\n var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0;\n var labelLayout = AxisBuilder.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1);\n align = labelLayout.textAlign;\n verticalAlign = labelLayout.textVerticalAlign;\n } else {\n // angle axis\n var r = radiusExtent[1];\n position = polar.coordToPoint([r + labelMargin, coord]);\n var cx = polar.cx;\n var cy = polar.cy;\n align = Math.abs(position[0] - cx) / r < 0.3 ? 'center' : position[0] > cx ? 'left' : 'right';\n verticalAlign = Math.abs(position[1] - cy) / r < 0.3 ? 'middle' : position[1] > cy ? 'top' : 'bottom';\n }\n\n return {\n position: position,\n align: align,\n verticalAlign: verticalAlign\n };\n}\n\nvar pointerShapeBuilder = {\n line: function (axis, polar, coordValue, otherExtent, elStyle) {\n return axis.dim === 'angle' ? {\n type: 'Line',\n shape: viewHelper.makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue]))\n } : {\n type: 'Circle',\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: coordValue\n }\n };\n },\n shadow: function (axis, polar, coordValue, otherExtent, elStyle) {\n var bandWidth = Math.max(1, axis.getBandWidth());\n var radian = Math.PI / 180;\n return axis.dim === 'angle' ? {\n type: 'Sector',\n shape: viewHelper.makeSectorShape(polar.cx, polar.cy, otherExtent[0], otherExtent[1], // In ECharts y is negative if angle is positive\n (-coordValue - bandWidth / 2) * radian, (-coordValue + bandWidth / 2) * radian)\n } : {\n type: 'Sector',\n shape: viewHelper.makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2)\n };\n }\n};\nAxisView.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer);\nvar _default = PolarAxisPointer;\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 BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar singleAxisHelper = require(\"../../coord/single/singleAxisHelper\");\n\nvar AxisView = require(\"../axis/AxisView\");\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 XY = ['x', 'y'];\nvar WH = ['width', 'height'];\nvar SingleAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n var coordSys = axis.coordinateSystem;\n var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis));\n var pixelValue = coordSys.dataToPoint(value)[0];\n var axisPointerType = axisPointerModel.get('type');\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var layoutInfo = singleAxisHelper.layout(axisModel);\n viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n },\n\n /**\n * @override\n */\n getHandleTransform: function (value, axisModel, axisPointerModel) {\n var layoutInfo = singleAxisHelper.layout(axisModel, {\n labelInside: false\n });\n layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n return {\n position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n };\n },\n\n /**\n * @override\n */\n updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n var axis = axisModel.axis;\n var coordSys = axis.coordinateSystem;\n var dimIndex = getPointDimIndex(axis);\n var axisExtent = getGlobalExtent(coordSys, dimIndex);\n var currPosition = transform.position;\n currPosition[dimIndex] += delta[dimIndex];\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex);\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\n cursorPoint[dimIndex] = currPosition[dimIndex];\n return {\n position: currPosition,\n rotation: transform.rotation,\n cursorPoint: cursorPoint,\n tooltipOption: {\n verticalAlign: 'middle'\n }\n };\n }\n});\nvar pointerShapeBuilder = {\n line: function (axis, pixelValue, otherExtent) {\n var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis));\n return {\n type: 'Line',\n subPixelOptimize: true,\n shape: targetShape\n };\n },\n shadow: function (axis, pixelValue, otherExtent) {\n var bandWidth = axis.getBandWidth();\n var span = otherExtent[1] - otherExtent[0];\n return {\n type: 'Rect',\n shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis))\n };\n }\n};\n\nfunction getPointDimIndex(axis) {\n return axis.isHorizontal() ? 0 : 1;\n}\n\nfunction getGlobalExtent(coordSys, dimIndex) {\n var rect = coordSys.getRect();\n return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]];\n}\n\nAxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer);\nvar _default = SingleAxisPointer;\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 _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar modelHelper = require(\"./modelHelper\");\n\nvar findPointFromSeries = require(\"./findPointFromSeries\");\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 curry = zrUtil.curry;\nvar inner = makeInner();\n/**\n * Basic logic: check all axis, if they do not demand show/highlight,\n * then hide/downplay them.\n *\n * @param {Object} coordSysAxesInfo\n * @param {Object} payload\n * @param {string} [payload.currTrigger] 'click' | 'mousemove' | 'leave'\n * @param {Array.} [payload.x] x and y, which are mandatory, specify a point to\n * trigger axisPointer and tooltip.\n * @param {Array.} [payload.y] x and y, which are mandatory, specify a point to\n * trigger axisPointer and tooltip.\n * @param {Object} [payload.seriesIndex] finder, optional, restrict target axes.\n * @param {Object} [payload.dataIndex] finder, restrict target axes.\n * @param {Object} [payload.axesInfo] finder, restrict target axes.\n * [{\n * axisDim: 'x'|'y'|'angle'|...,\n * axisIndex: ...,\n * value: ...\n * }, ...]\n * @param {Function} [payload.dispatchAction]\n * @param {Object} [payload.tooltipOption]\n * @param {Object|Array.|Function} [payload.position] Tooltip position,\n * which can be specified in dispatchAction\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @return {Object} content of event obj for echarts.connect.\n */\n\nfunction _default(payload, ecModel, api) {\n var currTrigger = payload.currTrigger;\n var point = [payload.x, payload.y];\n var finder = payload;\n var dispatchAction = payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; // Pending\n // See #6121. But we are not able to reproduce it yet.\n\n if (!coordSysAxesInfo) {\n return;\n }\n\n if (illegalPoint(point)) {\n // Used in the default behavior of `connection`: use the sample seriesIndex\n // and dataIndex. And also used in the tooltipView trigger.\n point = findPointFromSeries({\n seriesIndex: finder.seriesIndex,\n // Do not use dataIndexInside from other ec instance.\n // FIXME: auto detect it?\n dataIndex: finder.dataIndex\n }, ecModel).point;\n }\n\n var isIllegalPoint = illegalPoint(point); // Axis and value can be specified when calling dispatchAction({type: 'updateAxisPointer'}).\n // Notice: In this case, it is difficult to get the `point` (which is necessary to show\n // tooltip, so if point is not given, we just use the point found by sample seriesIndex\n // and dataIndex.\n\n var inputAxesInfo = finder.axesInfo;\n var axesInfo = coordSysAxesInfo.axesInfo;\n var shouldHide = currTrigger === 'leave' || illegalPoint(point);\n var outputFinder = {};\n var showValueMap = {};\n var dataByCoordSys = {\n list: [],\n map: {}\n };\n var updaters = {\n showPointer: curry(showPointer, showValueMap),\n showTooltip: curry(showTooltip, dataByCoordSys)\n }; // Process for triggered axes.\n\n each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {\n // If a point given, it must be contained by the coordinate system.\n var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);\n each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {\n var axis = axisInfo.axis;\n var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); // If no inputAxesInfo, no axis is restricted.\n\n if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {\n var val = inputAxisInfo && inputAxisInfo.value;\n\n if (val == null && !isIllegalPoint) {\n val = axis.pointToData(point);\n }\n\n val != null && processOnAxis(axisInfo, val, updaters, false, outputFinder);\n }\n });\n }); // Process for linked axes.\n\n var linkTriggers = {};\n each(axesInfo, function (tarAxisInfo, tarKey) {\n var linkGroup = tarAxisInfo.linkGroup; // If axis has been triggered in the previous stage, it should not be triggered by link.\n\n if (linkGroup && !showValueMap[tarKey]) {\n each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {\n var srcValItem = showValueMap[srcKey]; // If srcValItem exist, source axis is triggered, so link to target axis.\n\n if (srcAxisInfo !== tarAxisInfo && srcValItem) {\n var val = srcValItem.value;\n linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));\n linkTriggers[tarAxisInfo.key] = val;\n }\n });\n }\n });\n each(linkTriggers, function (val, tarKey) {\n processOnAxis(axesInfo[tarKey], val, updaters, true, outputFinder);\n });\n updateModelActually(showValueMap, axesInfo, outputFinder);\n dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction);\n dispatchHighDownActually(axesInfo, dispatchAction, api);\n return outputFinder;\n}\n\nfunction processOnAxis(axisInfo, newValue, updaters, dontSnap, outputFinder) {\n var axis = axisInfo.axis;\n\n if (axis.scale.isBlank() || !axis.containData(newValue)) {\n return;\n }\n\n if (!axisInfo.involveSeries) {\n updaters.showPointer(axisInfo, newValue);\n return;\n } // Heavy calculation. So put it after axis.containData checking.\n\n\n var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);\n var payloadBatch = payloadInfo.payloadBatch;\n var snapToValue = payloadInfo.snapToValue; // Fill content of event obj for echarts.connect.\n // By default use the first involved series data as a sample to connect.\n\n if (payloadBatch[0] && outputFinder.seriesIndex == null) {\n zrUtil.extend(outputFinder, payloadBatch[0]);\n } // If no linkSource input, this process is for collecting link\n // target, where snap should not be accepted.\n\n\n if (!dontSnap && axisInfo.snap) {\n if (axis.containData(snapToValue) && snapToValue != null) {\n newValue = snapToValue;\n }\n }\n\n updaters.showPointer(axisInfo, newValue, payloadBatch, outputFinder); // Tooltip should always be snapToValue, otherwise there will be\n // incorrect \"axis value ~ series value\" mapping displayed in tooltip.\n\n updaters.showTooltip(axisInfo, payloadInfo, snapToValue);\n}\n\nfunction buildPayloadsBySeries(value, axisInfo) {\n var axis = axisInfo.axis;\n var dim = axis.dim;\n var snapToValue = value;\n var payloadBatch = [];\n var minDist = Number.MAX_VALUE;\n var minDiff = -1;\n each(axisInfo.seriesModels, function (series, idx) {\n var dataDim = series.getData().mapDimension(dim, true);\n var seriesNestestValue;\n var dataIndices;\n\n if (series.getAxisTooltipData) {\n var result = series.getAxisTooltipData(dataDim, value, axis);\n dataIndices = result.dataIndices;\n seriesNestestValue = result.nestestValue;\n } else {\n dataIndices = series.getData().indicesOfNearest(dataDim[0], value, // Add a threshold to avoid find the wrong dataIndex\n // when data length is not same.\n // false,\n axis.type === 'category' ? 0.5 : null);\n\n if (!dataIndices.length) {\n return;\n }\n\n seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);\n }\n\n if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {\n return;\n }\n\n var diff = value - seriesNestestValue;\n var dist = Math.abs(diff); // Consider category case\n\n if (dist <= minDist) {\n if (dist < minDist || diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n snapToValue = seriesNestestValue;\n payloadBatch.length = 0;\n }\n\n each(dataIndices, function (dataIndex) {\n payloadBatch.push({\n seriesIndex: series.seriesIndex,\n dataIndexInside: dataIndex,\n dataIndex: series.getData().getRawIndex(dataIndex)\n });\n });\n }\n });\n return {\n payloadBatch: payloadBatch,\n snapToValue: snapToValue\n };\n}\n\nfunction showPointer(showValueMap, axisInfo, value, payloadBatch) {\n showValueMap[axisInfo.key] = {\n value: value,\n payloadBatch: payloadBatch\n };\n}\n\nfunction showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {\n var payloadBatch = payloadInfo.payloadBatch;\n var axis = axisInfo.axis;\n var axisModel = axis.model;\n var axisPointerModel = axisInfo.axisPointerModel; // If no data, do not create anything in dataByCoordSys,\n // whose length will be used to judge whether dispatch action.\n\n if (!axisInfo.triggerTooltip || !payloadBatch.length) {\n return;\n }\n\n var coordSysModel = axisInfo.coordSys.model;\n var coordSysKey = modelHelper.makeKey(coordSysModel);\n var coordSysItem = dataByCoordSys.map[coordSysKey];\n\n if (!coordSysItem) {\n coordSysItem = dataByCoordSys.map[coordSysKey] = {\n coordSysId: coordSysModel.id,\n coordSysIndex: coordSysModel.componentIndex,\n coordSysType: coordSysModel.type,\n coordSysMainType: coordSysModel.mainType,\n dataByAxis: []\n };\n dataByCoordSys.list.push(coordSysItem);\n }\n\n coordSysItem.dataByAxis.push({\n axisDim: axis.dim,\n axisIndex: axisModel.componentIndex,\n axisType: axisModel.type,\n axisId: axisModel.id,\n value: value,\n // Caustion: viewHelper.getValueLabel is actually on \"view stage\", which\n // depends that all models have been updated. So it should not be performed\n // here. Considering axisPointerModel used here is volatile, which is hard\n // to be retrieve in TooltipView, we prepare parameters here.\n valueLabelOpt: {\n precision: axisPointerModel.get('label.precision'),\n formatter: axisPointerModel.get('label.formatter')\n },\n seriesDataIndices: payloadBatch.slice()\n });\n}\n\nfunction updateModelActually(showValueMap, axesInfo, outputFinder) {\n var outputAxesInfo = outputFinder.axesInfo = []; // Basic logic: If no 'show' required, 'hide' this axisPointer.\n\n each(axesInfo, function (axisInfo, key) {\n var option = axisInfo.axisPointerModel.option;\n var valItem = showValueMap[key];\n\n if (valItem) {\n !axisInfo.useHandle && (option.status = 'show');\n option.value = valItem.value; // For label formatter param and highlight.\n\n option.seriesDataIndices = (valItem.payloadBatch || []).slice();\n } // When always show (e.g., handle used), remain\n // original value and status.\n else {\n // If hide, value still need to be set, consider\n // click legend to toggle axis blank.\n !axisInfo.useHandle && (option.status = 'hide');\n } // If status is 'hide', should be no info in payload.\n\n\n option.status === 'show' && outputAxesInfo.push({\n axisDim: axisInfo.axis.dim,\n axisIndex: axisInfo.axis.model.componentIndex,\n value: option.value\n });\n });\n}\n\nfunction dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) {\n // Basic logic: If no showTip required, hideTip will be dispatched.\n if (illegalPoint(point) || !dataByCoordSys.list.length) {\n dispatchAction({\n type: 'hideTip'\n });\n return;\n } // In most case only one axis (or event one series is used). It is\n // convinient to fetch payload.seriesIndex and payload.dataIndex\n // dirtectly. So put the first seriesIndex and dataIndex of the first\n // axis on the payload.\n\n\n var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};\n dispatchAction({\n type: 'showTip',\n escapeConnect: true,\n x: point[0],\n y: point[1],\n tooltipOption: payload.tooltipOption,\n position: payload.position,\n dataIndexInside: sampleItem.dataIndexInside,\n dataIndex: sampleItem.dataIndex,\n seriesIndex: sampleItem.seriesIndex,\n dataByCoordSys: dataByCoordSys.list\n });\n}\n\nfunction dispatchHighDownActually(axesInfo, dispatchAction, api) {\n // FIXME\n // highlight status modification shoule be a stage of main process?\n // (Consider confilct (e.g., legend and axisPointer) and setOption)\n var zr = api.getZr();\n var highDownKey = 'axisPointerLastHighlights';\n var lastHighlights = inner(zr)[highDownKey] || {};\n var newHighlights = inner(zr)[highDownKey] = {}; // Update highlight/downplay status according to axisPointer model.\n // Build hash map and remove duplicate incidentally.\n\n each(axesInfo, function (axisInfo, key) {\n var option = axisInfo.axisPointerModel.option;\n option.status === 'show' && each(option.seriesDataIndices, function (batchItem) {\n var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;\n newHighlights[key] = batchItem;\n });\n }); // Diff.\n\n var toHighlight = [];\n var toDownplay = [];\n zrUtil.each(lastHighlights, function (batchItem, key) {\n !newHighlights[key] && toDownplay.push(batchItem);\n });\n zrUtil.each(newHighlights, function (batchItem, key) {\n !lastHighlights[key] && toHighlight.push(batchItem);\n });\n toDownplay.length && api.dispatchAction({\n type: 'downplay',\n escapeConnect: true,\n batch: toDownplay\n });\n toHighlight.length && api.dispatchAction({\n type: 'highlight',\n escapeConnect: true,\n batch: toHighlight\n });\n}\n\nfunction findInputAxisInfo(inputAxesInfo, axisInfo) {\n for (var i = 0; i < (inputAxesInfo || []).length; i++) {\n var inputAxisInfo = inputAxesInfo[i];\n\n if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {\n return inputAxisInfo;\n }\n }\n}\n\nfunction makeMapperParam(axisInfo) {\n var axisModel = axisInfo.axis.model;\n var item = {};\n var dim = item.axisDim = axisInfo.axis.dim;\n item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;\n item.axisName = item[dim + 'AxisName'] = axisModel.name;\n item.axisId = item[dim + 'AxisId'] = axisModel.id;\n return item;\n}\n\nfunction illegalPoint(point) {\n return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\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 modelUtil = require(\"../../util/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*/\n\n/**\n * @param {Object} finder contains {seriesIndex, dataIndex, dataIndexInside}\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} {point: [x, y], el: ...} point Will not be null.\n */\nfunction _default(finder, ecModel) {\n var point = [];\n var seriesIndex = finder.seriesIndex;\n var seriesModel;\n\n if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\n return {\n point: []\n };\n }\n\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, finder);\n\n if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) {\n return {\n point: []\n };\n }\n\n var el = data.getItemGraphicEl(dataIndex);\n var coordSys = seriesModel.coordinateSystem;\n\n if (seriesModel.getTooltipPosition) {\n point = seriesModel.getTooltipPosition(dataIndex) || [];\n } else if (coordSys && coordSys.dataToPoint) {\n point = coordSys.dataToPoint(data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }), dataIndex, true)) || [];\n } else if (el) {\n // Use graphic bounding rect\n var rect = el.getBoundingRect().clone();\n rect.applyTransform(el.transform);\n point = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n }\n\n return {\n point: point,\n el: el\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 env = require(\"zrender/lib/core/env\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\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 inner = makeInner();\nvar each = zrUtil.each;\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n * @param {Function} handler\n * param: {string} currTrigger\n * param: {Array.} point\n */\n\nfunction register(key, api, handler) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n inner(zr).records || (inner(zr).records = {});\n initGlobalListeners(zr, api);\n var record = inner(zr).records[key] || (inner(zr).records[key] = {});\n record.handler = handler;\n}\n\nfunction initGlobalListeners(zr, api) {\n if (inner(zr).initialized) {\n return;\n }\n\n inner(zr).initialized = true;\n useHandler('click', zrUtil.curry(doEnter, 'click'));\n useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove')); // useHandler('mouseout', onLeave);\n\n useHandler('globalout', onLeave);\n\n function useHandler(eventType, cb) {\n zr.on(eventType, function (e) {\n var dis = makeDispatchAction(api);\n each(inner(zr).records, function (record) {\n record && cb(record, e, dis.dispatchAction);\n });\n dispatchTooltipFinally(dis.pendings, api);\n });\n }\n}\n\nfunction dispatchTooltipFinally(pendings, api) {\n var showLen = pendings.showTip.length;\n var hideLen = pendings.hideTip.length;\n var actuallyPayload;\n\n if (showLen) {\n actuallyPayload = pendings.showTip[showLen - 1];\n } else if (hideLen) {\n actuallyPayload = pendings.hideTip[hideLen - 1];\n }\n\n if (actuallyPayload) {\n actuallyPayload.dispatchAction = null;\n api.dispatchAction(actuallyPayload);\n }\n}\n\nfunction onLeave(record, e, dispatchAction) {\n record.handler('leave', null, dispatchAction);\n}\n\nfunction doEnter(currTrigger, record, e, dispatchAction) {\n record.handler(currTrigger, e, dispatchAction);\n}\n\nfunction makeDispatchAction(api) {\n var pendings = {\n showTip: [],\n hideTip: []\n }; // FIXME\n // better approach?\n // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,\n // which may be conflict, (axisPointer call showTip but tooltip call hideTip);\n // So we have to add \"final stage\" to merge those dispatched actions.\n\n var dispatchAction = function (payload) {\n var pendingList = pendings[payload.type];\n\n if (pendingList) {\n pendingList.push(payload);\n } else {\n payload.dispatchAction = dispatchAction;\n api.dispatchAction(payload);\n }\n };\n\n return {\n dispatchAction: dispatchAction,\n pendings: pendings\n };\n}\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction unregister(key, api) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n var record = (inner(zr).records || {})[key];\n\n if (record) {\n inner(zr).records[key] = null;\n }\n}\n\nexports.register = register;\nexports.unregister = unregister;","\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 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 each = zrUtil.each;\nvar curry = zrUtil.curry; // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n// allAxesInfo should be updated when setOption performed.\n\nfunction collect(ecModel, api) {\n var result = {\n /**\n * key: makeKey(axis.model)\n * value: {\n * axis,\n * coordSys,\n * axisPointerModel,\n * triggerTooltip,\n * involveSeries,\n * snap,\n * seriesModels,\n * seriesDataCount\n * }\n */\n axesInfo: {},\n seriesInvolved: false,\n\n /**\n * key: makeKey(coordSys.model)\n * value: Object: key makeKey(axis.model), value: axisInfo\n */\n coordSysAxesInfo: {},\n coordSysMap: {}\n };\n collectAxesInfo(result, ecModel, api); // Check seriesInvolved for performance, in case too many series in some chart.\n\n result.seriesInvolved && collectSeriesInfo(result, ecModel);\n return result;\n}\n\nfunction collectAxesInfo(result, ecModel, api) {\n var globalTooltipModel = ecModel.getComponent('tooltip');\n var globalAxisPointerModel = ecModel.getComponent('axisPointer'); // links can only be set on global.\n\n var linksOption = globalAxisPointerModel.get('link', true) || [];\n var linkGroups = []; // Collect axes info.\n\n each(api.getCoordinateSystems(), function (coordSys) {\n // Some coordinate system do not support axes, like geo.\n if (!coordSys.axisPointerEnabled) {\n return;\n }\n\n var coordSysKey = makeKey(coordSys.model);\n var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};\n result.coordSysMap[coordSysKey] = coordSys; // Set tooltip (like 'cross') is a convienent way to show axisPointer\n // for user. So we enable seting tooltip on coordSys model.\n\n var coordSysModel = coordSys.model;\n var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);\n each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null)); // If axis tooltip used, choose tooltip axis for each coordSys.\n // Notice this case: coordSys is `grid` but not `cartesian2D` here.\n\n if (coordSys.getTooltipAxes && globalTooltipModel // If tooltip.showContent is set as false, tooltip will not\n // show but axisPointer will show as normal.\n && baseTooltipModel.get('show')) {\n // Compatible with previous logic. But series.tooltip.trigger: 'axis'\n // or series.data[n].tooltip.trigger: 'axis' are not support any more.\n var triggerAxis = baseTooltipModel.get('trigger') === 'axis';\n var cross = baseTooltipModel.get('axisPointer.type') === 'cross';\n var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get('axisPointer.axis'));\n\n if (triggerAxis || cross) {\n each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis));\n }\n\n if (cross) {\n each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));\n }\n } // fromTooltip: true | false | 'cross'\n // triggerTooltip: true | false | null\n\n\n function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {\n var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);\n var axisPointerShow = axisPointerModel.get('show');\n\n if (!axisPointerShow || axisPointerShow === 'auto' && !fromTooltip && !isHandleTrigger(axisPointerModel)) {\n return;\n }\n\n if (triggerTooltip == null) {\n triggerTooltip = axisPointerModel.get('triggerTooltip');\n }\n\n axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel;\n var snap = axisPointerModel.get('snap');\n var key = makeKey(axis.model);\n var involveSeries = triggerTooltip || snap || axis.type === 'category'; // If result.axesInfo[key] exist, override it (tooltip has higher priority).\n\n var axisInfo = result.axesInfo[key] = {\n key: key,\n axis: axis,\n coordSys: coordSys,\n axisPointerModel: axisPointerModel,\n triggerTooltip: triggerTooltip,\n involveSeries: involveSeries,\n snap: snap,\n useHandle: isHandleTrigger(axisPointerModel),\n seriesModels: []\n };\n axesInfoInCoordSys[key] = axisInfo;\n result.seriesInvolved |= involveSeries;\n var groupIndex = getLinkGroupIndex(linksOption, axis);\n\n if (groupIndex != null) {\n var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {\n axesInfo: {}\n });\n linkGroup.axesInfo[key] = axisInfo;\n linkGroup.mapper = linksOption[groupIndex].mapper;\n axisInfo.linkGroup = linkGroup;\n }\n }\n });\n}\n\nfunction makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {\n var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');\n var volatileOption = {};\n each(['type', 'snap', 'lineStyle', 'shadowStyle', 'label', 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'], function (field) {\n volatileOption[field] = zrUtil.clone(tooltipAxisPointerModel.get(field));\n }); // category axis do not auto snap, otherwise some tick that do not\n // has value can not be hovered. value/time/log axis default snap if\n // triggered from tooltip and trigger tooltip.\n\n volatileOption.snap = axis.type !== 'category' && !!triggerTooltip; // Compatibel with previous behavior, tooltip axis do not show label by default.\n // Only these properties can be overrided from tooltip to axisPointer.\n\n if (tooltipAxisPointerModel.get('type') === 'cross') {\n volatileOption.type = 'line';\n }\n\n var labelOption = volatileOption.label || (volatileOption.label = {}); // Follow the convention, do not show label when triggered by tooltip by default.\n\n labelOption.show == null && (labelOption.show = false);\n\n if (fromTooltip === 'cross') {\n // When 'cross', both axes show labels.\n var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get('label.show');\n labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true; // If triggerTooltip, this is a base axis, which should better not use cross style\n // (cross style is dashed by default)\n\n if (!triggerTooltip) {\n var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');\n crossStyle && zrUtil.defaults(labelOption, crossStyle.textStyle);\n }\n }\n\n return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel));\n}\n\nfunction collectSeriesInfo(result, ecModel) {\n // Prepare data for axis trigger\n ecModel.eachSeries(function (seriesModel) {\n // Notice this case: this coordSys is `cartesian2D` but not `grid`.\n var coordSys = seriesModel.coordinateSystem;\n var seriesTooltipTrigger = seriesModel.get('tooltip.trigger', true);\n var seriesTooltipShow = seriesModel.get('tooltip.show', true);\n\n if (!coordSys || seriesTooltipTrigger === 'none' || seriesTooltipTrigger === false || seriesTooltipTrigger === 'item' || seriesTooltipShow === false || seriesModel.get('axisPointer.show', true) === false) {\n return;\n }\n\n each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {\n var axis = axisInfo.axis;\n\n if (coordSys.getAxis(axis.dim) === axis) {\n axisInfo.seriesModels.push(seriesModel);\n axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);\n axisInfo.seriesDataCount += seriesModel.getData().count();\n }\n });\n }, this);\n}\n/**\n * For example:\n * {\n * axisPointer: {\n * links: [{\n * xAxisIndex: [2, 4],\n * yAxisIndex: 'all'\n * }, {\n * xAxisId: ['a5', 'a7'],\n * xAxisName: 'xxx'\n * }]\n * }\n * }\n */\n\n\nfunction getLinkGroupIndex(linksOption, axis) {\n var axisModel = axis.model;\n var dim = axis.dim;\n\n for (var i = 0; i < linksOption.length; i++) {\n var linkOption = linksOption[i] || {};\n\n if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id) || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex) || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) {\n return i;\n }\n }\n}\n\nfunction checkPropInLink(linkPropValue, axisPropValue) {\n return linkPropValue === 'all' || zrUtil.isArray(linkPropValue) && zrUtil.indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue;\n}\n\nfunction fixValue(axisModel) {\n var axisInfo = getAxisInfo(axisModel);\n\n if (!axisInfo) {\n return;\n }\n\n var axisPointerModel = axisInfo.axisPointerModel;\n var scale = axisInfo.axis.scale;\n var option = axisPointerModel.option;\n var status = axisPointerModel.get('status');\n var value = axisPointerModel.get('value'); // Parse init value for category and time axis.\n\n if (value != null) {\n value = scale.parse(value);\n }\n\n var useHandle = isHandleTrigger(axisPointerModel); // If `handle` used, `axisPointer` will always be displayed, so value\n // and status should be initialized.\n\n if (status == null) {\n option.status = useHandle ? 'show' : 'hide';\n }\n\n var extent = scale.getExtent().slice();\n extent[0] > extent[1] && extent.reverse();\n\n if ( // Pick a value on axis when initializing.\n value == null // If both `handle` and `dataZoom` are used, value may be out of axis extent,\n // where we should re-pick a value to keep `handle` displaying normally.\n || value > extent[1]) {\n // Make handle displayed on the end of the axis when init, which looks better.\n value = extent[1];\n }\n\n if (value < extent[0]) {\n value = extent[0];\n }\n\n option.value = value;\n\n if (useHandle) {\n option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\n }\n}\n\nfunction getAxisInfo(axisModel) {\n var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo;\n return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\n}\n\nfunction getAxisPointerModel(axisModel) {\n var axisInfo = getAxisInfo(axisModel);\n return axisInfo && axisInfo.axisPointerModel;\n}\n\nfunction isHandleTrigger(axisPointerModel) {\n return !!axisPointerModel.get('handle.show');\n}\n/**\n * @param {module:echarts/model/Model} model\n * @return {string} unique key\n */\n\n\nfunction makeKey(model) {\n return model.type + '||' + model.id;\n}\n\nexports.collect = collect;\nexports.fixValue = fixValue;\nexports.getAxisInfo = getAxisInfo;\nexports.getAxisPointerModel = getAxisPointerModel;\nexports.makeKey = makeKey;","\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 graphic = require(\"../../util/graphic\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar AxisBuilder = require(\"../axis/AxisBuilder\");\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 * @param {module:echarts/model/Model} axisPointerModel\n */\nfunction buildElStyle(axisPointerModel) {\n var axisPointerType = axisPointerModel.get('type');\n var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\n var style;\n\n if (axisPointerType === 'line') {\n style = styleModel.getLineStyle();\n style.fill = null;\n } else if (axisPointerType === 'shadow') {\n style = styleModel.getAreaStyle();\n style.stroke = null;\n }\n\n return style;\n}\n/**\n * @param {Function} labelPos {align, verticalAlign, position}\n */\n\n\nfunction buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\n var value = axisPointerModel.get('value');\n var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\n precision: axisPointerModel.get('label.precision'),\n formatter: axisPointerModel.get('label.formatter')\n });\n var labelModel = axisPointerModel.getModel('label');\n var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);\n var font = labelModel.getFont();\n var textRect = textContain.getBoundingRect(text, font);\n var position = labelPos.position;\n var width = textRect.width + paddings[1] + paddings[3];\n var height = textRect.height + paddings[0] + paddings[2]; // Adjust by align.\n\n var align = labelPos.align;\n align === 'right' && (position[0] -= width);\n align === 'center' && (position[0] -= width / 2);\n var verticalAlign = labelPos.verticalAlign;\n verticalAlign === 'bottom' && (position[1] -= height);\n verticalAlign === 'middle' && (position[1] -= height / 2); // Not overflow ec container\n\n confineInContainer(position, width, height, api);\n var bgColor = labelModel.get('backgroundColor');\n\n if (!bgColor || bgColor === 'auto') {\n bgColor = axisModel.get('axisLine.lineStyle.color');\n }\n\n elOption.label = {\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height,\n r: labelModel.get('borderRadius')\n },\n position: position.slice(),\n // TODO: rich\n style: {\n text: text,\n textFont: font,\n textFill: labelModel.getTextColor(),\n textPosition: 'inside',\n textPadding: paddings,\n fill: bgColor,\n stroke: labelModel.get('borderColor') || 'transparent',\n lineWidth: labelModel.get('borderWidth') || 0,\n shadowBlur: labelModel.get('shadowBlur'),\n shadowColor: labelModel.get('shadowColor'),\n shadowOffsetX: labelModel.get('shadowOffsetX'),\n shadowOffsetY: labelModel.get('shadowOffsetY')\n },\n // Lable should be over axisPointer.\n z2: 10\n };\n} // Do not overflow ec container\n\n\nfunction confineInContainer(position, width, height, api) {\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n position[0] = Math.min(position[0] + width, viewWidth) - width;\n position[1] = Math.min(position[1] + height, viewHeight) - height;\n position[0] = Math.max(position[0], 0);\n position[1] = Math.max(position[1], 0);\n}\n/**\n * @param {number} value\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} opt\n * @param {Array.} seriesDataIndices\n * @param {number|string} opt.precision 'auto' or a number\n * @param {string|Function} opt.formatter label formatter\n */\n\n\nfunction getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\n value = axis.scale.parse(value);\n var text = axis.scale.getLabel( // If `precision` is set, width can be fixed (like '12.00500'), which\n // helps to debounce when when moving label.\n value, {\n precision: opt.precision\n });\n var formatter = opt.formatter;\n\n if (formatter) {\n var params = {\n value: axisHelper.getAxisRawValue(axis, value),\n axisDimension: axis.dim,\n axisIndex: axis.index,\n seriesData: []\n };\n zrUtil.each(seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var dataParams = series && series.getDataParams(dataIndex);\n dataParams && params.seriesData.push(dataParams);\n });\n\n if (zrUtil.isString(formatter)) {\n text = formatter.replace('{value}', text);\n } else if (zrUtil.isFunction(formatter)) {\n text = formatter(params);\n }\n }\n\n return text;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @param {number} value\n * @param {Object} layoutInfo {\n * rotation, position, labelOffset, labelDirection, labelMargin\n * }\n */\n\n\nfunction getTransformedPosition(axis, value, layoutInfo) {\n var transform = matrix.create();\n matrix.rotate(transform, transform, layoutInfo.rotation);\n matrix.translate(transform, transform, layoutInfo.position);\n return graphic.applyTransform([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform);\n}\n\nfunction buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\n var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\n layoutInfo.labelMargin = axisPointerModel.get('label.margin');\n buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\n position: getTransformedPosition(axisModel.axis, value, layoutInfo),\n align: textLayout.textAlign,\n verticalAlign: textLayout.textVerticalAlign\n });\n}\n/**\n * @param {Array.} p1\n * @param {Array.} p2\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeLineShape(p1, p2, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x1: p1[xDimIndex],\n y1: p1[1 - xDimIndex],\n x2: p2[xDimIndex],\n y2: p2[1 - xDimIndex]\n };\n}\n/**\n * @param {Array.} xy\n * @param {Array.} wh\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeRectShape(xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n}\n\nfunction makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {\n return {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n startAngle: startAngle,\n endAngle: endAngle,\n clockwise: true\n };\n}\n\nexports.buildElStyle = buildElStyle;\nexports.buildLabelElOption = buildLabelElOption;\nexports.getValueLabel = getValueLabel;\nexports.getTransformedPosition = getTransformedPosition;\nexports.buildCartesianSingleLabelElOption = buildCartesianSingleLabelElOption;\nexports.makeLineShape = makeLineShape;\nexports.makeRectShape = makeRectShape;\nexports.makeSectorShape = makeSectorShape;","\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 graphic = require(\"../../util/graphic\");\n\nvar Model = require(\"../../model/Model\");\n\nvar AxisView = require(\"./AxisView\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\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 elementList = ['axisLine', 'axisLabel', 'axisTick', 'minorTick', 'splitLine', 'minorSplitLine', 'splitArea'];\n\nfunction getAxisLineShape(polar, rExtent, angle) {\n rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse());\n var start = polar.coordToPoint([rExtent[0], angle]);\n var end = polar.coordToPoint([rExtent[1], angle]);\n return {\n x1: start[0],\n y1: start[1],\n x2: end[0],\n y2: end[1]\n };\n}\n\nfunction getRadiusIdx(polar) {\n var radiusAxis = polar.getRadiusAxis();\n return radiusAxis.inverse ? 0 : 1;\n} // Remove the last tick which will overlap the first tick\n\n\nfunction fixAngleOverlap(list) {\n var firstItem = list[0];\n var lastItem = list[list.length - 1];\n\n if (firstItem && lastItem && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) {\n list.pop();\n }\n}\n\nvar _default = AxisView.extend({\n type: 'angleAxis',\n axisPointerClass: 'PolarAxisPointer',\n render: function (angleAxisModel, ecModel) {\n this.group.removeAll();\n\n if (!angleAxisModel.get('show')) {\n return;\n }\n\n var angleAxis = angleAxisModel.axis;\n var polar = angleAxis.polar;\n var radiusExtent = polar.getRadiusAxis().getExtent();\n var ticksAngles = angleAxis.getTicksCoords();\n var minorTickAngles = angleAxis.getMinorTicksCoords();\n var labels = zrUtil.map(angleAxis.getViewLabels(), function (labelItem) {\n var labelItem = zrUtil.clone(labelItem);\n labelItem.coord = angleAxis.dataToCoord(labelItem.tickValue);\n return labelItem;\n });\n fixAngleOverlap(labels);\n fixAngleOverlap(ticksAngles);\n zrUtil.each(elementList, function (name) {\n if (angleAxisModel.get(name + '.show') && (!angleAxis.scale.isBlank() || name === 'axisLine')) {\n this['_' + name](angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels);\n }\n }, this);\n },\n\n /**\n * @private\n */\n _axisLine: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n var lineStyleModel = angleAxisModel.getModel('axisLine.lineStyle'); // extent id of the axis radius (r0 and r)\n\n var rId = getRadiusIdx(polar);\n var r0Id = rId ? 0 : 1;\n var shape;\n\n if (radiusExtent[r0Id] === 0) {\n shape = new graphic.Circle({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: radiusExtent[rId]\n },\n style: lineStyleModel.getLineStyle(),\n z2: 1,\n silent: true\n });\n } else {\n shape = new graphic.Ring({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: radiusExtent[rId],\n r0: radiusExtent[r0Id]\n },\n style: lineStyleModel.getLineStyle(),\n z2: 1,\n silent: true\n });\n }\n\n shape.style.fill = null;\n this.group.add(shape);\n },\n\n /**\n * @private\n */\n _axisTick: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n var tickModel = angleAxisModel.getModel('axisTick');\n var tickLen = (tickModel.get('inside') ? -1 : 1) * tickModel.get('length');\n var radius = radiusExtent[getRadiusIdx(polar)];\n var lines = zrUtil.map(ticksAngles, function (tickAngleItem) {\n return new graphic.Line({\n shape: getAxisLineShape(polar, [radius, radius + tickLen], tickAngleItem.coord)\n });\n });\n this.group.add(graphic.mergePath(lines, {\n style: zrUtil.defaults(tickModel.getModel('lineStyle').getLineStyle(), {\n stroke: angleAxisModel.get('axisLine.lineStyle.color')\n })\n }));\n },\n\n /**\n * @private\n */\n _minorTick: function (angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) {\n if (!minorTickAngles.length) {\n return;\n }\n\n var tickModel = angleAxisModel.getModel('axisTick');\n var minorTickModel = angleAxisModel.getModel('minorTick');\n var tickLen = (tickModel.get('inside') ? -1 : 1) * minorTickModel.get('length');\n var radius = radiusExtent[getRadiusIdx(polar)];\n var lines = [];\n\n for (var i = 0; i < minorTickAngles.length; i++) {\n for (var k = 0; k < minorTickAngles[i].length; k++) {\n lines.push(new graphic.Line({\n shape: getAxisLineShape(polar, [radius, radius + tickLen], minorTickAngles[i][k].coord)\n }));\n }\n }\n\n this.group.add(graphic.mergePath(lines, {\n style: zrUtil.defaults(minorTickModel.getModel('lineStyle').getLineStyle(), zrUtil.defaults(tickModel.getLineStyle(), {\n stroke: angleAxisModel.get('axisLine.lineStyle.color')\n }))\n }));\n },\n\n /**\n * @private\n */\n _axisLabel: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) {\n var rawCategoryData = angleAxisModel.getCategories(true);\n var commonLabelModel = angleAxisModel.getModel('axisLabel');\n var labelMargin = commonLabelModel.get('margin');\n var triggerEvent = angleAxisModel.get('triggerEvent'); // Use length of ticksAngles because it may remove the last tick to avoid overlapping\n\n zrUtil.each(labels, function (labelItem, idx) {\n var labelModel = commonLabelModel;\n var tickValue = labelItem.tickValue;\n var r = radiusExtent[getRadiusIdx(polar)];\n var p = polar.coordToPoint([r + labelMargin, labelItem.coord]);\n var cx = polar.cx;\n var cy = polar.cy;\n var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3 ? 'center' : p[0] > cx ? 'left' : 'right';\n var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3 ? 'middle' : p[1] > cy ? 'top' : 'bottom';\n\n if (rawCategoryData && rawCategoryData[tickValue] && rawCategoryData[tickValue].textStyle) {\n labelModel = new Model(rawCategoryData[tickValue].textStyle, commonLabelModel, commonLabelModel.ecModel);\n }\n\n var textEl = new graphic.Text({\n silent: AxisBuilder.isLabelSilent(angleAxisModel)\n });\n this.group.add(textEl);\n graphic.setTextStyle(textEl.style, labelModel, {\n x: p[0],\n y: p[1],\n textFill: labelModel.getTextColor() || angleAxisModel.get('axisLine.lineStyle.color'),\n text: labelItem.formattedLabel,\n textAlign: labelTextAlign,\n textVerticalAlign: labelTextVerticalAlign\n }); // Pack data for mouse event\n\n if (triggerEvent) {\n textEl.eventData = AxisBuilder.makeAxisEventDataBase(angleAxisModel);\n textEl.eventData.targetType = 'axisLabel';\n textEl.eventData.value = labelItem.rawLabel;\n }\n }, this);\n },\n\n /**\n * @private\n */\n _splitLine: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n var splitLineModel = angleAxisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineColors = lineStyleModel.get('color');\n var lineCount = 0;\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n var splitLines = [];\n\n for (var i = 0; i < ticksAngles.length; i++) {\n var colorIndex = lineCount++ % lineColors.length;\n splitLines[colorIndex] = splitLines[colorIndex] || [];\n splitLines[colorIndex].push(new graphic.Line({\n shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i].coord)\n }));\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitLines.length; i++) {\n this.group.add(graphic.mergePath(splitLines[i], {\n style: zrUtil.defaults({\n stroke: lineColors[i % lineColors.length]\n }, lineStyleModel.getLineStyle()),\n silent: true,\n z: angleAxisModel.get('z')\n }));\n }\n },\n\n /**\n * @private\n */\n _minorSplitLine: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n if (!minorTickAngles.length) {\n return;\n }\n\n var minorSplitLineModel = angleAxisModel.getModel('minorSplitLine');\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n var lines = [];\n\n for (var i = 0; i < minorTickAngles.length; i++) {\n for (var k = 0; k < minorTickAngles[i].length; k++) {\n lines.push(new graphic.Line({\n shape: getAxisLineShape(polar, radiusExtent, minorTickAngles[i][k].coord)\n }));\n }\n }\n\n this.group.add(graphic.mergePath(lines, {\n style: lineStyleModel.getLineStyle(),\n silent: true,\n z: angleAxisModel.get('z')\n }));\n },\n\n /**\n * @private\n */\n _splitArea: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n if (!ticksAngles.length) {\n return;\n }\n\n var splitAreaModel = angleAxisModel.getModel('splitArea');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var areaColors = areaStyleModel.get('color');\n var lineCount = 0;\n areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n var splitAreas = [];\n var RADIAN = Math.PI / 180;\n var prevAngle = -ticksAngles[0].coord * RADIAN;\n var r0 = Math.min(radiusExtent[0], radiusExtent[1]);\n var r1 = Math.max(radiusExtent[0], radiusExtent[1]);\n var clockwise = angleAxisModel.get('clockwise');\n\n for (var i = 1; i < ticksAngles.length; i++) {\n var colorIndex = lineCount++ % areaColors.length;\n splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n splitAreas[colorIndex].push(new graphic.Sector({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r0: r0,\n r: r1,\n startAngle: prevAngle,\n endAngle: -ticksAngles[i].coord * RADIAN,\n clockwise: clockwise\n },\n silent: true\n }));\n prevAngle = -ticksAngles[i].coord * RADIAN;\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitAreas.length; i++) {\n this.group.add(graphic.mergePath(splitAreas[i], {\n style: zrUtil.defaults({\n fill: areaColors[i % areaColors.length]\n }, areaStyleModel.getAreaStyle()),\n silent: true\n }));\n }\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar retrieve = _util.retrieve;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar each = _util.each;\n\nvar formatUtil = require(\"../../util/format\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _number = require(\"../../util/number\");\n\nvar isRadianAroundZero = _number.isRadianAroundZero;\nvar remRadian = _number.remRadian;\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar matrixUtil = require(\"zrender/lib/core/matrix\");\n\nvar _vector = require(\"zrender/lib/core/vector\");\n\nvar v2ApplyTransform = _vector.applyTransform;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\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 PI = Math.PI;\n/**\n * A final axis is translated and rotated from a \"standard axis\".\n * So opt.position and opt.rotation is required.\n *\n * A standard axis is and axis from [0, 0] to [0, axisExtent[1]],\n * for example: (0, 0) ------------> (0, 50)\n *\n * nameDirection or tickDirection or labelDirection is 1 means tick\n * or label is below the standard axis, whereas is -1 means above\n * the standard axis. labelOffset means offset between label and axis,\n * which is useful when 'onZero', where axisLabel is in the grid and\n * label in outside grid.\n *\n * Tips: like always,\n * positive rotation represents anticlockwise, and negative rotation\n * represents clockwise.\n * The direction of position coordinate is the same as the direction\n * of screen coordinate.\n *\n * Do not need to consider axis 'inverse', which is auto processed by\n * axis extent.\n *\n * @param {module:zrender/container/Group} group\n * @param {Object} axisModel\n * @param {Object} opt Standard axis parameters.\n * @param {Array.} opt.position [x, y]\n * @param {number} opt.rotation by radian\n * @param {number} [opt.nameDirection=1] 1 or -1 Used when nameLocation is 'middle' or 'center'.\n * @param {number} [opt.tickDirection=1] 1 or -1\n * @param {number} [opt.labelDirection=1] 1 or -1\n * @param {number} [opt.labelOffset=0] Usefull when onZero.\n * @param {string} [opt.axisLabelShow] default get from axisModel.\n * @param {string} [opt.axisName] default get from axisModel.\n * @param {number} [opt.axisNameAvailableWidth]\n * @param {number} [opt.labelRotate] by degree, default get from axisModel.\n * @param {number} [opt.strokeContainThreshold] Default label interval when label\n * @param {number} [opt.nameTruncateMaxWidth]\n */\n\nvar AxisBuilder = function (axisModel, opt) {\n /**\n * @readOnly\n */\n this.opt = opt;\n /**\n * @readOnly\n */\n\n this.axisModel = axisModel; // Default value\n\n defaults(opt, {\n labelOffset: 0,\n nameDirection: 1,\n tickDirection: 1,\n labelDirection: 1,\n silent: true\n });\n /**\n * @readOnly\n */\n\n this.group = new graphic.Group(); // FIXME Not use a seperate text group?\n\n var dumbGroup = new graphic.Group({\n position: opt.position.slice(),\n rotation: opt.rotation\n }); // this.group.add(dumbGroup);\n // this._dumbGroup = dumbGroup;\n\n dumbGroup.updateTransform();\n this._transform = dumbGroup.transform;\n this._dumbGroup = dumbGroup;\n};\n\nAxisBuilder.prototype = {\n constructor: AxisBuilder,\n hasBuilder: function (name) {\n return !!builders[name];\n },\n add: function (name) {\n builders[name].call(this);\n },\n getGroup: function () {\n return this.group;\n }\n};\nvar builders = {\n /**\n * @private\n */\n axisLine: function () {\n var opt = this.opt;\n var axisModel = this.axisModel;\n\n if (!axisModel.get('axisLine.show')) {\n return;\n }\n\n var extent = this.axisModel.axis.getExtent();\n var matrix = this._transform;\n var pt1 = [extent[0], 0];\n var pt2 = [extent[1], 0];\n\n if (matrix) {\n v2ApplyTransform(pt1, pt1, matrix);\n v2ApplyTransform(pt2, pt2, matrix);\n }\n\n var lineStyle = extend({\n lineCap: 'round'\n }, axisModel.getModel('axisLine.lineStyle').getLineStyle());\n this.group.add(new graphic.Line({\n // Id for animation\n anid: 'line',\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: lineStyle,\n strokeContainThreshold: opt.strokeContainThreshold || 5,\n silent: true,\n z2: 1\n }));\n var arrows = axisModel.get('axisLine.symbol');\n var arrowSize = axisModel.get('axisLine.symbolSize');\n var arrowOffset = axisModel.get('axisLine.symbolOffset') || 0;\n\n if (typeof arrowOffset === 'number') {\n arrowOffset = [arrowOffset, arrowOffset];\n }\n\n if (arrows != null) {\n if (typeof arrows === 'string') {\n // Use the same arrow for start and end point\n arrows = [arrows, arrows];\n }\n\n if (typeof arrowSize === 'string' || typeof arrowSize === 'number') {\n // Use the same size for width and height\n arrowSize = [arrowSize, arrowSize];\n }\n\n var symbolWidth = arrowSize[0];\n var symbolHeight = arrowSize[1];\n each([{\n rotate: opt.rotation + Math.PI / 2,\n offset: arrowOffset[0],\n r: 0\n }, {\n rotate: opt.rotation - Math.PI / 2,\n offset: arrowOffset[1],\n r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\n }], function (point, index) {\n if (arrows[index] !== 'none' && arrows[index] != null) {\n var symbol = createSymbol(arrows[index], -symbolWidth / 2, -symbolHeight / 2, symbolWidth, symbolHeight, lineStyle.stroke, true); // Calculate arrow position with offset\n\n var r = point.r + point.offset;\n var pos = [pt1[0] + r * Math.cos(opt.rotation), pt1[1] - r * Math.sin(opt.rotation)];\n symbol.attr({\n rotation: point.rotate,\n position: pos,\n silent: true,\n z2: 11\n });\n this.group.add(symbol);\n }\n }, this);\n }\n },\n\n /**\n * @private\n */\n axisTickLabel: function () {\n var axisModel = this.axisModel;\n var opt = this.opt;\n var ticksEls = buildAxisMajorTicks(this, axisModel, opt);\n var labelEls = buildAxisLabel(this, axisModel, opt);\n fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\n buildAxisMinorTicks(this, axisModel, opt);\n },\n\n /**\n * @private\n */\n axisName: function () {\n var opt = this.opt;\n var axisModel = this.axisModel;\n var name = retrieve(opt.axisName, axisModel.get('name'));\n\n if (!name) {\n return;\n }\n\n var nameLocation = axisModel.get('nameLocation');\n var nameDirection = opt.nameDirection;\n var textStyleModel = axisModel.getModel('nameTextStyle');\n var gap = axisModel.get('nameGap') || 0;\n var extent = this.axisModel.axis.getExtent();\n var gapSignal = extent[0] > extent[1] ? -1 : 1;\n var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, // 'middle'\n // Reuse labelOffset.\n isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0];\n var labelLayout;\n var nameRotation = axisModel.get('nameRotate');\n\n if (nameRotation != null) {\n nameRotation = nameRotation * PI / 180; // To radian.\n }\n\n var axisNameAvailableWidth;\n\n if (isNameLocationCenter(nameLocation)) {\n labelLayout = innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.\n nameDirection);\n } else {\n labelLayout = endTextLayout(opt, nameLocation, nameRotation || 0, extent);\n axisNameAvailableWidth = opt.axisNameAvailableWidth;\n\n if (axisNameAvailableWidth != null) {\n axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\n !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\n }\n }\n\n var textFont = textStyleModel.getFont();\n var truncateOpt = axisModel.get('nameTruncate', true) || {};\n var ellipsis = truncateOpt.ellipsis;\n var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth); // FIXME\n // truncate rich text? (consider performance)\n\n var truncatedText = ellipsis != null && maxWidth != null ? formatUtil.truncateText(name, maxWidth, textFont, ellipsis, {\n minChar: 2,\n placeholder: truncateOpt.placeholder\n }) : name;\n var tooltipOpt = axisModel.get('tooltip', true);\n var mainType = axisModel.mainType;\n var formatterParams = {\n componentType: mainType,\n name: name,\n $vars: ['name']\n };\n formatterParams[mainType + 'Index'] = axisModel.componentIndex;\n var textEl = new graphic.Text({\n // Id for animation\n anid: 'name',\n __fullText: name,\n __truncatedText: truncatedText,\n position: pos,\n rotation: labelLayout.rotation,\n silent: isLabelSilent(axisModel),\n z2: 1,\n tooltip: tooltipOpt && tooltipOpt.show ? extend({\n content: name,\n formatter: function () {\n return name;\n },\n formatterParams: formatterParams\n }, tooltipOpt) : null\n });\n graphic.setTextStyle(textEl.style, textStyleModel, {\n text: truncatedText,\n textFont: textFont,\n textFill: textStyleModel.getTextColor() || axisModel.get('axisLine.lineStyle.color'),\n textAlign: textStyleModel.get('align') || labelLayout.textAlign,\n textVerticalAlign: textStyleModel.get('verticalAlign') || labelLayout.textVerticalAlign\n });\n\n if (axisModel.get('triggerEvent')) {\n textEl.eventData = makeAxisEventDataBase(axisModel);\n textEl.eventData.targetType = 'axisName';\n textEl.eventData.name = name;\n } // FIXME\n\n\n this._dumbGroup.add(textEl);\n\n textEl.updateTransform();\n this.group.add(textEl);\n textEl.decomposeTransform();\n }\n};\n\nvar makeAxisEventDataBase = AxisBuilder.makeAxisEventDataBase = function (axisModel) {\n var eventData = {\n componentType: axisModel.mainType,\n componentIndex: axisModel.componentIndex\n };\n eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\n return eventData;\n};\n/**\n * @public\n * @static\n * @param {Object} opt\n * @param {number} axisRotation in radian\n * @param {number} textRotation in radian\n * @param {number} direction\n * @return {Object} {\n * rotation, // according to axis\n * textAlign,\n * textVerticalAlign\n * }\n */\n\n\nvar innerTextLayout = AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\n var rotationDiff = remRadian(textRotation - axisRotation);\n var textAlign;\n var textVerticalAlign;\n\n if (isRadianAroundZero(rotationDiff)) {\n // Label is parallel with axis line.\n textVerticalAlign = direction > 0 ? 'top' : 'bottom';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI)) {\n // Label is inverse parallel with axis line.\n textVerticalAlign = direction > 0 ? 'bottom' : 'top';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff > 0 && rotationDiff < PI) {\n textAlign = direction > 0 ? 'right' : 'left';\n } else {\n textAlign = direction > 0 ? 'left' : 'right';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n};\n\nfunction endTextLayout(opt, textPosition, textRotate, extent) {\n var rotationDiff = remRadian(textRotate - opt.rotation);\n var textAlign;\n var textVerticalAlign;\n var inverse = extent[0] > extent[1];\n var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse;\n\n if (isRadianAroundZero(rotationDiff - PI / 2)) {\n textVerticalAlign = onLeft ? 'bottom' : 'top';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {\n textVerticalAlign = onLeft ? 'top' : 'bottom';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {\n textAlign = onLeft ? 'left' : 'right';\n } else {\n textAlign = onLeft ? 'right' : 'left';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n}\n\nvar isLabelSilent = AxisBuilder.isLabelSilent = function (axisModel) {\n var tooltipOpt = axisModel.get('tooltip');\n return axisModel.get('silent') // Consider mouse cursor, add these restrictions.\n || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show);\n};\n\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\n if (shouldShowAllLabels(axisModel.axis)) {\n return;\n } // If min or max are user set, we need to check\n // If the tick on min(max) are overlap on their neighbour tick\n // If they are overlapped, we need to hide the min(max) tick label\n\n\n var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n var showMaxLabel = axisModel.get('axisLabel.showMaxLabel'); // FIXME\n // Have not consider onBand yet, where tick els is more than label els.\n\n labelEls = labelEls || [];\n tickEls = tickEls || [];\n var firstLabel = labelEls[0];\n var nextLabel = labelEls[1];\n var lastLabel = labelEls[labelEls.length - 1];\n var prevLabel = labelEls[labelEls.length - 2];\n var firstTick = tickEls[0];\n var nextTick = tickEls[1];\n var lastTick = tickEls[tickEls.length - 1];\n var prevTick = tickEls[tickEls.length - 2];\n\n if (showMinLabel === false) {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\n if (showMinLabel) {\n ignoreEl(nextLabel);\n ignoreEl(nextTick);\n } else {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n }\n }\n\n if (showMaxLabel === false) {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\n if (showMaxLabel) {\n ignoreEl(prevLabel);\n ignoreEl(prevTick);\n } else {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n }\n }\n}\n\nfunction ignoreEl(el) {\n el && (el.ignore = true);\n}\n\nfunction isTwoLabelOverlapped(current, next, labelLayout) {\n // current and next has the same rotation.\n var firstRect = current && current.getBoundingRect().clone();\n var nextRect = next && next.getBoundingRect().clone();\n\n if (!firstRect || !nextRect) {\n return;\n } // When checking intersect of two rotated labels, we use mRotationBack\n // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`.\n\n\n var mRotationBack = matrixUtil.identity([]);\n matrixUtil.rotate(mRotationBack, mRotationBack, -current.rotation);\n firstRect.applyTransform(matrixUtil.mul([], mRotationBack, current.getLocalTransform()));\n nextRect.applyTransform(matrixUtil.mul([], mRotationBack, next.getLocalTransform()));\n return firstRect.intersect(nextRect);\n}\n\nfunction isNameLocationCenter(nameLocation) {\n return nameLocation === 'middle' || nameLocation === 'center';\n}\n\nfunction createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, aniid) {\n var tickEls = [];\n var pt1 = [];\n var pt2 = [];\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = ticksCoords[i].coord;\n pt1[0] = tickCoord;\n pt1[1] = 0;\n pt2[0] = tickCoord;\n pt2[1] = tickEndCoord;\n\n if (tickTransform) {\n v2ApplyTransform(pt1, pt1, tickTransform);\n v2ApplyTransform(pt2, pt2, tickTransform);\n } // Tick line, Not use group transform to have better line draw\n\n\n var tickEl = new graphic.Line({\n // Id for animation\n anid: aniid + '_' + ticksCoords[i].tickValue,\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: tickLineStyle,\n z2: 2,\n silent: true\n });\n tickEls.push(tickEl);\n }\n\n return tickEls;\n}\n\nfunction buildAxisMajorTicks(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var tickModel = axisModel.getModel('axisTick');\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var lineStyleModel = tickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * tickModel.get('length');\n var ticksCoords = axis.getTicksCoords();\n var ticksEls = createTicks(ticksCoords, axisBuilder._transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\n stroke: axisModel.get('axisLine.lineStyle.color')\n }), 'ticks');\n\n for (var i = 0; i < ticksEls.length; i++) {\n axisBuilder.group.add(ticksEls[i]);\n }\n\n return ticksEls;\n}\n\nfunction buildAxisMinorTicks(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var minorTickModel = axisModel.getModel('minorTick');\n\n if (!minorTickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var lineStyleModel = minorTickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * minorTickModel.get('length');\n var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\n stroke: axisModel.get('axisLine.lineStyle.color')\n }));\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n var minorTicksEls = createTicks(minorTicksCoords[i], axisBuilder._transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\n\n for (var k = 0; k < minorTicksEls.length; k++) {\n axisBuilder.group.add(minorTicksEls[k]);\n }\n }\n}\n\nfunction buildAxisLabel(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));\n\n if (!show || axis.scale.isBlank()) {\n return;\n }\n\n var labelModel = axisModel.getModel('axisLabel');\n var labelMargin = labelModel.get('margin');\n var labels = axis.getViewLabels(); // Special label rotate.\n\n var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI / 180;\n var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\n var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\n var labelEls = [];\n var silent = isLabelSilent(axisModel);\n var triggerEvent = axisModel.get('triggerEvent');\n each(labels, function (labelItem, index) {\n var tickValue = labelItem.tickValue;\n var formattedLabel = labelItem.formattedLabel;\n var rawLabel = labelItem.rawLabel;\n var itemLabelModel = labelModel;\n\n if (rawCategoryData && rawCategoryData[tickValue] && rawCategoryData[tickValue].textStyle) {\n itemLabelModel = new Model(rawCategoryData[tickValue].textStyle, labelModel, axisModel.ecModel);\n }\n\n var textColor = itemLabelModel.getTextColor() || axisModel.get('axisLine.lineStyle.color');\n var tickCoord = axis.dataToCoord(tickValue);\n var pos = [tickCoord, opt.labelOffset + opt.labelDirection * labelMargin];\n var textEl = new graphic.Text({\n // Id for animation\n anid: 'label_' + tickValue,\n position: pos,\n rotation: labelLayout.rotation,\n silent: silent,\n z2: 10\n });\n graphic.setTextStyle(textEl.style, itemLabelModel, {\n text: formattedLabel,\n textAlign: itemLabelModel.getShallow('align', true) || labelLayout.textAlign,\n textVerticalAlign: itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign,\n textFill: typeof textColor === 'function' ? textColor( // (1) In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n // (2) Compatible with previous version, which always use formatted label as\n // input. But in interval scale the formatted label is like '223,445', which\n // maked user repalce ','. So we modify it to return original val but remain\n // it as 'string' to avoid error in replacing.\n axis.type === 'category' ? rawLabel : axis.type === 'value' ? tickValue + '' : tickValue, index) : textColor\n }); // Pack data for mouse event\n\n if (triggerEvent) {\n textEl.eventData = makeAxisEventDataBase(axisModel);\n textEl.eventData.targetType = 'axisLabel';\n textEl.eventData.value = rawLabel;\n } // FIXME\n\n\n axisBuilder._dumbGroup.add(textEl);\n\n textEl.updateTransform();\n labelEls.push(textEl);\n axisBuilder.group.add(textEl);\n textEl.decomposeTransform();\n });\n return labelEls;\n}\n\nvar _default = AxisBuilder;\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 axisPointerModelHelper = require(\"../axisPointer/modelHelper\");\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 * Base class of AxisView.\n */\nvar AxisView = echarts.extendComponentView({\n type: 'axis',\n\n /**\n * @private\n */\n _axisPointer: null,\n\n /**\n * @protected\n * @type {string}\n */\n axisPointerClass: null,\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n // FIXME\n // This process should proformed after coordinate systems updated\n // (axis scale updated), and should be performed each time update.\n // So put it here temporarily, although it is not appropriate to\n // put a model-writing procedure in `view`.\n this.axisPointerClass && axisPointerModelHelper.fixValue(axisModel);\n AxisView.superApply(this, 'render', arguments);\n updateAxisPointer(this, axisModel, ecModel, api, payload, true);\n },\n\n /**\n * Action handler.\n * @public\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n updateAxisPointer: function (axisModel, ecModel, api, payload, force) {\n updateAxisPointer(this, axisModel, ecModel, api, payload, false);\n },\n\n /**\n * @override\n */\n remove: function (ecModel, api) {\n var axisPointer = this._axisPointer;\n axisPointer && axisPointer.remove(api);\n AxisView.superApply(this, 'remove', arguments);\n },\n\n /**\n * @override\n */\n dispose: function (ecModel, api) {\n disposeAxisPointer(this, api);\n AxisView.superApply(this, 'dispose', arguments);\n }\n});\n\nfunction updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) {\n var Clazz = AxisView.getAxisPointerClass(axisView.axisPointerClass);\n\n if (!Clazz) {\n return;\n }\n\n var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);\n axisPointerModel ? (axisView._axisPointer || (axisView._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : disposeAxisPointer(axisView, api);\n}\n\nfunction disposeAxisPointer(axisView, ecModel, api) {\n var axisPointer = axisView._axisPointer;\n axisPointer && axisPointer.dispose(ecModel, api);\n axisView._axisPointer = null;\n}\n\nvar axisPointerClazz = [];\n\nAxisView.registerAxisPointerClass = function (type, clazz) {\n axisPointerClazz[type] = clazz;\n};\n\nAxisView.getAxisPointerClass = function (type) {\n return type && axisPointerClazz[type];\n};\n\nvar _default = AxisView;\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 graphic = require(\"../../util/graphic\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar AxisView = require(\"./AxisView\");\n\nvar cartesianAxisHelper = require(\"../../coord/cartesian/cartesianAxisHelper\");\n\nvar _axisSplitHelper = require(\"./axisSplitHelper\");\n\nvar rectCoordAxisBuildSplitArea = _axisSplitHelper.rectCoordAxisBuildSplitArea;\nvar rectCoordAxisHandleRemove = _axisSplitHelper.rectCoordAxisHandleRemove;\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 axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine', 'minorSplitLine'];\nvar CartesianAxisView = AxisView.extend({\n type: 'cartesianAxis',\n axisPointerClass: 'CartesianAxisPointer',\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n this.group.removeAll();\n var oldAxisGroup = this._axisGroup;\n this._axisGroup = new graphic.Group();\n this.group.add(this._axisGroup);\n\n if (!axisModel.get('show')) {\n return;\n }\n\n var gridModel = axisModel.getCoordSysModel();\n var layout = cartesianAxisHelper.layout(gridModel, axisModel);\n var axisBuilder = new AxisBuilder(axisModel, layout);\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n\n this._axisGroup.add(axisBuilder.getGroup());\n\n zrUtil.each(selfBuilderAttrs, function (name) {\n if (axisModel.get(name + '.show')) {\n this['_' + name](axisModel, gridModel);\n }\n }, this);\n graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n CartesianAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);\n },\n remove: function () {\n rectCoordAxisHandleRemove(this);\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _splitLine: function (axisModel, gridModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitLineModel = axisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineColors = lineStyleModel.get('color');\n lineColors = zrUtil.isArray(lineColors) ? lineColors : [lineColors];\n var gridRect = gridModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var lineCount = 0;\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitLineModel\n });\n var p1 = [];\n var p2 = [];\n var lineStyle = lineStyleModel.getLineStyle();\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n var colorIndex = lineCount++ % lineColors.length;\n var tickValue = ticksCoords[i].tickValue;\n\n this._axisGroup.add(new graphic.Line({\n anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: zrUtil.defaults({\n stroke: lineColors[colorIndex]\n }, lineStyle),\n silent: true\n }));\n }\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _minorSplitLine: function (axisModel, gridModel) {\n var axis = axisModel.axis;\n var minorSplitLineModel = axisModel.getModel('minorSplitLine');\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n var gridRect = gridModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var p1 = [];\n var p2 = [];\n var lineStyle = lineStyleModel.getLineStyle();\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n for (var k = 0; k < minorTicksCoords[i].length; k++) {\n var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n this._axisGroup.add(new graphic.Line({\n anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: lineStyle,\n silent: true\n }));\n }\n }\n },\n\n /**\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @private\n */\n _splitArea: function (axisModel, gridModel) {\n rectCoordAxisBuildSplitArea(this, this._axisGroup, axisModel, gridModel);\n }\n});\nCartesianAxisView.extend({\n type: 'xAxis'\n});\nCartesianAxisView.extend({\n type: 'yAxis'\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\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar BrushController = require(\"../helper/BrushController\");\n\nvar brushHelper = require(\"../helper/brushHelper\");\n\nvar graphic = require(\"../../util/graphic\");\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 elementList = ['axisLine', 'axisTickLabel', 'axisName'];\nvar AxisView = echarts.extendComponentView({\n type: 'parallelAxis',\n\n /**\n * @override\n */\n init: function (ecModel, api) {\n AxisView.superApply(this, 'init', arguments);\n /**\n * @type {module:echarts/component/helper/BrushController}\n */\n\n (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this));\n },\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n if (fromAxisAreaSelect(axisModel, ecModel, payload)) {\n return;\n }\n\n this.axisModel = axisModel;\n this.api = api;\n this.group.removeAll();\n var oldAxisGroup = this._axisGroup;\n this._axisGroup = new graphic.Group();\n this.group.add(this._axisGroup);\n\n if (!axisModel.get('show')) {\n return;\n }\n\n var coordSysModel = getCoordSysModel(axisModel, ecModel);\n var coordSys = coordSysModel.coordinateSystem;\n var areaSelectStyle = axisModel.getAreaSelectStyle();\n var areaWidth = areaSelectStyle.width;\n var dim = axisModel.axis.dim;\n var axisLayout = coordSys.getAxisLayout(dim);\n var builderOpt = zrUtil.extend({\n strokeContainThreshold: areaWidth\n }, axisLayout);\n var axisBuilder = new AxisBuilder(axisModel, builderOpt);\n zrUtil.each(elementList, axisBuilder.add, axisBuilder);\n\n this._axisGroup.add(axisBuilder.getGroup());\n\n this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api);\n\n var animationModel = payload && payload.animation === false ? null : axisModel;\n graphic.groupTransition(oldAxisGroup, this._axisGroup, animationModel);\n },\n // /**\n // * @override\n // */\n // updateVisual: function (axisModel, ecModel, api, payload) {\n // this._brushController && this._brushController\n // .updateCovers(getCoverInfoList(axisModel));\n // },\n _refreshBrushController: function (builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) {\n // After filtering, axis may change, select area needs to be update.\n var extent = axisModel.axis.getExtent();\n var extentLen = extent[1] - extent[0];\n var extra = Math.min(30, Math.abs(extentLen) * 0.1); // Arbitrary value.\n // width/height might be negative, which will be\n // normalized in BoundingRect.\n\n var rect = graphic.BoundingRect.create({\n x: extent[0],\n y: -areaWidth / 2,\n width: extentLen,\n height: areaWidth\n });\n rect.x -= extra;\n rect.width += 2 * extra;\n\n this._brushController.mount({\n enableGlobalPan: true,\n rotation: builderOpt.rotation,\n position: builderOpt.position\n }).setPanels([{\n panelId: 'pl',\n clipPath: brushHelper.makeRectPanelClipPath(rect),\n isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, coordSysModel),\n getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect, 0)\n }]).enableBrush({\n brushType: 'lineX',\n brushStyle: areaSelectStyle,\n removeOnClick: true\n }).updateCovers(getCoverInfoList(axisModel));\n },\n _onBrush: function (coverInfoList, opt) {\n // Do not cache these object, because the mey be changed.\n var axisModel = this.axisModel;\n var axis = axisModel.axis;\n var intervals = zrUtil.map(coverInfoList, function (coverInfo) {\n return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)];\n }); // If realtime is true, action is not dispatched on drag end, because\n // the drag end emits the same params with the last drag move event,\n // and may have some delay when using touch pad.\n\n if (!axisModel.option.realtime === opt.isEnd || opt.removeOnClick) {\n // jshint ignore:line\n this.api.dispatchAction({\n type: 'axisAreaSelect',\n parallelAxisId: axisModel.id,\n intervals: intervals\n });\n }\n },\n\n /**\n * @override\n */\n dispose: function () {\n this._brushController.dispose();\n }\n});\n\nfunction fromAxisAreaSelect(axisModel, ecModel, payload) {\n return payload && payload.type === 'axisAreaSelect' && ecModel.findComponents({\n mainType: 'parallelAxis',\n query: payload\n })[0] === axisModel;\n}\n\nfunction getCoverInfoList(axisModel) {\n var axis = axisModel.axis;\n return zrUtil.map(axisModel.activeIntervals, function (interval) {\n return {\n brushType: 'lineX',\n panelId: 'pl',\n range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)]\n };\n });\n}\n\nfunction getCoordSysModel(axisModel, ecModel) {\n return ecModel.getComponent('parallel', axisModel.get('parallelIndex'));\n}\n\nvar _default = AxisView;\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 graphic = require(\"../../util/graphic\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar AxisView = require(\"./AxisView\");\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 axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitLine', 'splitArea', 'minorSplitLine'];\n\nvar _default = AxisView.extend({\n type: 'radiusAxis',\n axisPointerClass: 'PolarAxisPointer',\n render: function (radiusAxisModel, ecModel) {\n this.group.removeAll();\n\n if (!radiusAxisModel.get('show')) {\n return;\n }\n\n var radiusAxis = radiusAxisModel.axis;\n var polar = radiusAxis.polar;\n var angleAxis = polar.getAngleAxis();\n var ticksCoords = radiusAxis.getTicksCoords();\n var minorTicksCoords = radiusAxis.getMinorTicksCoords();\n var axisAngle = angleAxis.getExtent()[0];\n var radiusExtent = radiusAxis.getExtent();\n var layout = layoutAxis(polar, radiusAxisModel, axisAngle);\n var axisBuilder = new AxisBuilder(radiusAxisModel, layout);\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n this.group.add(axisBuilder.getGroup());\n zrUtil.each(selfBuilderAttrs, function (name) {\n if (radiusAxisModel.get(name + '.show') && !radiusAxis.scale.isBlank()) {\n this['_' + name](radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords);\n }\n }, this);\n },\n\n /**\n * @private\n */\n _splitLine: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n var splitLineModel = radiusAxisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineColors = lineStyleModel.get('color');\n var lineCount = 0;\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n var splitLines = [];\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var colorIndex = lineCount++ % lineColors.length;\n splitLines[colorIndex] = splitLines[colorIndex] || [];\n splitLines[colorIndex].push(new graphic.Circle({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: ticksCoords[i].coord\n }\n }));\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitLines.length; i++) {\n this.group.add(graphic.mergePath(splitLines[i], {\n style: zrUtil.defaults({\n stroke: lineColors[i % lineColors.length],\n fill: null\n }, lineStyleModel.getLineStyle()),\n silent: true\n }));\n }\n },\n\n /**\n * @private\n */\n _minorSplitLine: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) {\n if (!minorTicksCoords.length) {\n return;\n }\n\n var minorSplitLineModel = radiusAxisModel.getModel('minorSplitLine');\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n var lines = [];\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n for (var k = 0; k < minorTicksCoords[i].length; k++) {\n lines.push(new graphic.Circle({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r: minorTicksCoords[i][k].coord\n }\n }));\n }\n }\n\n this.group.add(graphic.mergePath(lines, {\n style: zrUtil.defaults({\n fill: null\n }, lineStyleModel.getLineStyle()),\n silent: true\n }));\n },\n\n /**\n * @private\n */\n _splitArea: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n if (!ticksCoords.length) {\n return;\n }\n\n var splitAreaModel = radiusAxisModel.getModel('splitArea');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var areaColors = areaStyleModel.get('color');\n var lineCount = 0;\n areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n var splitAreas = [];\n var prevRadius = ticksCoords[0].coord;\n\n for (var i = 1; i < ticksCoords.length; i++) {\n var colorIndex = lineCount++ % areaColors.length;\n splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n splitAreas[colorIndex].push(new graphic.Sector({\n shape: {\n cx: polar.cx,\n cy: polar.cy,\n r0: prevRadius,\n r: ticksCoords[i].coord,\n startAngle: 0,\n endAngle: Math.PI * 2\n },\n silent: true\n }));\n prevRadius = ticksCoords[i].coord;\n } // Simple optimization\n // Batching the lines if color are the same\n\n\n for (var i = 0; i < splitAreas.length; i++) {\n this.group.add(graphic.mergePath(splitAreas[i], {\n style: zrUtil.defaults({\n fill: areaColors[i % areaColors.length]\n }, areaStyleModel.getAreaStyle()),\n silent: true\n }));\n }\n }\n});\n/**\n * @inner\n */\n\n\nfunction layoutAxis(polar, radiusAxisModel, axisAngle) {\n return {\n position: [polar.cx, polar.cy],\n rotation: axisAngle / 180 * Math.PI,\n labelDirection: -1,\n tickDirection: -1,\n nameDirection: 1,\n labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'),\n // Over splitLine and splitArea\n z2: 1\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 AxisBuilder = require(\"./AxisBuilder\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar singleAxisHelper = require(\"../../coord/single/singleAxisHelper\");\n\nvar AxisView = require(\"./AxisView\");\n\nvar _axisSplitHelper = require(\"./axisSplitHelper\");\n\nvar rectCoordAxisBuildSplitArea = _axisSplitHelper.rectCoordAxisBuildSplitArea;\nvar rectCoordAxisHandleRemove = _axisSplitHelper.rectCoordAxisHandleRemove;\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 axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine'];\nvar SingleAxisView = AxisView.extend({\n type: 'singleAxis',\n axisPointerClass: 'SingleAxisPointer',\n render: function (axisModel, ecModel, api, payload) {\n var group = this.group;\n group.removeAll();\n var oldAxisGroup = this._axisGroup;\n this._axisGroup = new graphic.Group();\n var layout = singleAxisHelper.layout(axisModel);\n var axisBuilder = new AxisBuilder(axisModel, layout);\n zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n group.add(this._axisGroup);\n group.add(axisBuilder.getGroup());\n zrUtil.each(selfBuilderAttrs, function (name) {\n if (axisModel.get(name + '.show')) {\n this['_' + name](axisModel);\n }\n }, this);\n graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n SingleAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);\n },\n remove: function () {\n rectCoordAxisHandleRemove(this);\n },\n _splitLine: function (axisModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitLineModel = axisModel.getModel('splitLine');\n var lineStyleModel = splitLineModel.getModel('lineStyle');\n var lineWidth = lineStyleModel.get('width');\n var lineColors = lineStyleModel.get('color');\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n var gridRect = axisModel.coordinateSystem.getRect();\n var isHorizontal = axis.isHorizontal();\n var splitLines = [];\n var lineCount = 0;\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitLineModel\n });\n var p1 = [];\n var p2 = [];\n\n for (var i = 0; i < ticksCoords.length; ++i) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n\n if (isHorizontal) {\n p1[0] = tickCoord;\n p1[1] = gridRect.y;\n p2[0] = tickCoord;\n p2[1] = gridRect.y + gridRect.height;\n } else {\n p1[0] = gridRect.x;\n p1[1] = tickCoord;\n p2[0] = gridRect.x + gridRect.width;\n p2[1] = tickCoord;\n }\n\n var colorIndex = lineCount++ % lineColors.length;\n splitLines[colorIndex] = splitLines[colorIndex] || [];\n splitLines[colorIndex].push(new graphic.Line({\n subPixelOptimize: true,\n shape: {\n x1: p1[0],\n y1: p1[1],\n x2: p2[0],\n y2: p2[1]\n },\n style: {\n lineWidth: lineWidth\n },\n silent: true\n }));\n }\n\n for (var i = 0; i < splitLines.length; ++i) {\n this.group.add(graphic.mergePath(splitLines[i], {\n style: {\n stroke: lineColors[i % lineColors.length],\n lineDash: lineStyleModel.getLineDash(lineWidth),\n lineWidth: lineWidth\n },\n silent: true\n }));\n }\n },\n _splitArea: function (axisModel) {\n rectCoordAxisBuildSplitArea(this, this._axisGroup, axisModel, axisModel);\n }\n});\nvar _default = SingleAxisView;\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 graphic = require(\"../../util/graphic\");\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 rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitAreaModel = axisModel.getModel('splitArea');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var areaColors = areaStyleModel.get('color');\n var gridRect = gridModel.coordinateSystem.getRect();\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitAreaModel,\n clamp: true\n });\n\n if (!ticksCoords.length) {\n return;\n } // For Making appropriate splitArea animation, the color and anid\n // should be corresponding to previous one if possible.\n\n\n var areaColorsLen = areaColors.length;\n var lastSplitAreaColors = axisView.__splitAreaColors;\n var newSplitAreaColors = zrUtil.createHashMap();\n var colorIndex = 0;\n\n if (lastSplitAreaColors) {\n for (var i = 0; i < ticksCoords.length; i++) {\n var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);\n\n if (cIndex != null) {\n colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;\n break;\n }\n }\n }\n\n var prev = axis.toGlobalCoord(ticksCoords[0].coord);\n var areaStyle = areaStyleModel.getAreaStyle();\n areaColors = zrUtil.isArray(areaColors) ? areaColors : [areaColors];\n\n for (var i = 1; i < ticksCoords.length; i++) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n var x;\n var y;\n var width;\n var height;\n\n if (axis.isHorizontal()) {\n x = prev;\n y = gridRect.y;\n width = tickCoord - x;\n height = gridRect.height;\n prev = x + width;\n } else {\n x = gridRect.x;\n y = prev;\n width = gridRect.width;\n height = tickCoord - y;\n prev = y + height;\n }\n\n var tickValue = ticksCoords[i - 1].tickValue;\n tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);\n axisGroup.add(new graphic.Rect({\n anid: tickValue != null ? 'area_' + tickValue : null,\n shape: {\n x: x,\n y: y,\n width: width,\n height: height\n },\n style: zrUtil.defaults({\n fill: areaColors[colorIndex]\n }, areaStyle),\n silent: true\n }));\n colorIndex = (colorIndex + 1) % areaColorsLen;\n }\n\n axisView.__splitAreaColors = newSplitAreaColors;\n}\n\nfunction rectCoordAxisHandleRemove(axisView) {\n axisView.__splitAreaColors = null;\n}\n\nexports.rectCoordAxisBuildSplitArea = rectCoordAxisBuildSplitArea;\nexports.rectCoordAxisHandleRemove = rectCoordAxisHandleRemove;"],"names":["echarts","zrUtil","axisPointerModelHelper","axisTrigger","registerPreprocessor","option","axisPointer","length","link","isArray","registerProcessor","PRIORITY","PROCESSOR","STATISTIC","ecModel","api","getComponent","coordSysAxesInfo","collect","registerAction","type","event","update","AxisPointerModel","extendComponentModel","defaultOption","show","triggerOn","zlevel","z","snap","triggerTooltip","value","status","animation","animationDurationUpdate","lineStyle","color","width","shadowStyle","label","formatter","precision","margin","padding","backgroundColor","borderColor","borderWidth","shadowBlur","shadowColor","handle","icon","size","shadowOffsetX","shadowOffsetY","throttle","_default","module","exports","globalListener","AxisPointerView","extendComponentView","render","globalAxisPointerModel","globalTooltipModel","get","register","currTrigger","e","dispatchAction","indexOf","x","offsetX","y","offsetY","remove","unregister","getZr","superApply","this","_model","arguments","dispose","clazzUtil","graphic","eventTool","throttleUtil","makeInner","inner","clone","bind","BaseAxisPointer","updateProps","animationModel","moveAnimation","el","props","propsEqual","lastProp","stopAnimation","attr","lastProps","newProps","isObject","equals","each","item","key","updateLabelShowHide","labelEl","axisPointerModel","getHandleTransProps","trans","position","slice","rotation","updateMandatoryProps","group","silent","traverse","prototype","_group","_lastGraphicKey","_handle","_dragging","_lastValue","_lastStatus","_payloadInfo","animationThreshold","axisModel","forceRender","_axisModel","_axisPointerModel","_api","hide","elOption","makeElOption","graphicKey","clear","_moveAnimation","determineAnimation","doUpdateProps","curry","updatePointerEl","updateLabelEl","Group","createPointerEl","createLabelEl","add","_renderHandle","axis","isCategoryAxis","useSnap","getBandWidth","seriesDataCount","getAxisInfo","axisExtent","getExtent","Math","abs","pointerOption","pointer","pointerEl","Rect","setStyle","style","shape","updateHandleTransform","isInit","zr","handleModel","getModel","createIcon","cursor","draggable","onmousemove","stop","onmousedown","_onHandleDragMove","drift","ondragend","_onHandleDragEnd","includeStyles","getItemStyle","handleSize","createOrUpdate","_moveHandleToValue","getHandleTransform","dx","dy","_doDispatchAxisPointer","payloadInfo","cursorPoint","tooltipOption","axesInfo","axisDim","dim","axisIndex","componentIndex","doClear","buildLabel","xy","wh","xDimIndex","height","constructor","enableClassExtend","viewHelper","cartesianAxisHelper","AxisView","CartesianAxisPointer","extend","grid","axisPointerType","otherExtent","getCartesian","getOtherAxis","getGlobalExtent","pixelValue","toGlobalCoord","dataToCoord","elStyle","buildElStyle","pointerShapeBuilder","layoutInfo","layout","model","buildCartesianSingleLabelElOption","labelInside","labelMargin","getTransformedPosition","labelDirection","PI","transform","delta","dimIndex","currPosition","min","max","cursorOtherValue","tooltipOptions","verticalAlign","align","opt","index","line","targetShape","makeLineShape","getAxisDimIndex","subPixelOptimize","shadow","bandWidth","span","makeRectShape","registerAxisPointerClass","formatUtil","matrix","AxisBuilder","PolarAxisPointer","coordValue","polar","otherAxis","capitalFirst","labelPos","getLabelPosition","buildLabelElOption","coord","axisAngle","getAngleAxis","radiusExtent","getRadiusAxis","create","rotate","translate","cx","cy","applyTransform","labelRotation","labelLayout","innerTextLayout","textAlign","textVerticalAlign","r","coordToPoint","radian","makeSectorShape","singleAxisHelper","XY","WH","SingleAxisPointer","coordSys","coordinateSystem","getPointDimIndex","dataToPoint","isHorizontal","rect","getRect","modelHelper","findPointFromSeries","payload","point","finder","illegalPoint","seriesIndex","dataIndex","isIllegalPoint","inputAxesInfo","shouldHide","outputFinder","showValueMap","dataByCoordSys","list","map","updaters","showPointer","showTooltip","coordSysMap","coordSysKey","coordSysContainsPoint","containPoint","axisInfo","inputAxisInfo","findInputAxisInfo","val","pointToData","processOnAxis","linkTriggers","tarAxisInfo","tarKey","linkGroup","srcAxisInfo","srcKey","srcValItem","mapper","scale","parse","makeMapperParam","updateModelActually","dispatchTooltipActually","dispatchHighDownActually","newValue","dontSnap","isBlank","containData","involveSeries","buildPayloadsBySeries","payloadBatch","snapToValue","minDist","Number","MAX_VALUE","minDiff","seriesModels","series","idx","seriesNestestValue","dataIndices","dataDim","getData","mapDimension","getAxisTooltipData","result","nestestValue","indicesOfNearest","isFinite","diff","dist","push","dataIndexInside","getRawIndex","coordSysModel","makeKey","coordSysItem","coordSysId","id","coordSysIndex","coordSysType","coordSysMainType","mainType","dataByAxis","axisType","axisId","valueLabelOpt","seriesDataIndices","outputAxesInfo","valItem","useHandle","sampleItem","escapeConnect","highDownKey","lastHighlights","newHighlights","batchItem","toHighlight","toDownplay","batch","i","axisName","name","isNaN","modelUtil","seriesModel","getSeriesByIndex","data","queryDataIndex","getItemGraphicEl","getTooltipPosition","getValues","dimensions","getBoundingRect","env","handler","node","records","initGlobalListeners","record","useHandler","eventType","cb","on","dis","makeDispatchAction","dispatchTooltipFinally","pendings","initialized","doEnter","onLeave","actuallyPayload","showLen","showTip","hideLen","hideTip","pendingList","Model","seriesInvolved","collectAxesInfo","collectSeriesInfo","linksOption","linkGroups","getCoordinateSystems","axisPointerEnabled","axesInfoInCoordSys","baseTooltipModel","getAxes","saveTooltipAxisInfo","getTooltipAxes","triggerAxis","cross","tooltipAxes","baseAxes","otherAxes","fromTooltip","axisPointerShow","isHandleTrigger","makeAxisPointerModel","groupIndex","getLinkGroupIndex","tooltipAxisPointerModel","volatileOption","field","labelOption","tooltipAxisPointerLabelShow","crossStyle","defaults","textStyle","eachSeries","seriesTooltipTrigger","seriesTooltipShow","getAxis","count","linkOption","checkPropInLink","linkPropValue","axisPropValue","fixValue","extent","reverse","getAxisPointerModel","textContain","axisHelper","styleModel","getLineStyle","fill","getAreaStyle","stroke","text","getValueLabel","labelModel","paddings","normalizeCssArray","font","getFont","textRect","confineInContainer","bgColor","textFont","textFill","getTextColor","textPosition","textPadding","lineWidth","z2","viewWidth","getWidth","viewHeight","getHeight","getLabel","params","getAxisRawValue","axisDimension","seriesData","idxItem","dataParams","getDataParams","isString","replace","isFunction","labelOffset","textLayout","p1","p2","x1","y1","x2","y2","r0","startAngle","endAngle","clockwise","elementList","getAxisLineShape","rExtent","angle","start","end","getRadiusIdx","radiusAxis","inverse","fixAngleOverlap","firstItem","lastItem","pop","axisPointerClass","angleAxisModel","removeAll","angleAxis","ticksAngles","getTicksCoords","minorTickAngles","getMinorTicksCoords","labels","getViewLabels","labelItem","tickValue","_axisLine","lineStyleModel","rId","r0Id","Circle","Ring","_axisTick","tickModel","tickLen","radius","lines","tickAngleItem","Line","mergePath","_minorTick","tickAngles","minorTickModel","k","_axisLabel","rawCategoryData","getCategories","commonLabelModel","triggerEvent","p","labelTextAlign","labelTextVerticalAlign","textEl","Text","isLabelSilent","setTextStyle","formattedLabel","eventData","makeAxisEventDataBase","targetType","rawLabel","_splitLine","splitLineModel","lineColors","lineCount","Array","splitLines","colorIndex","_minorSplitLine","minorSplitLineModel","_splitArea","splitAreaModel","areaStyleModel","areaColors","splitAreas","RADIAN","prevAngle","r1","Sector","_util","retrieve","_number","isRadianAroundZero","remRadian","_symbol","createSymbol","matrixUtil","_vector","v2ApplyTransform","_axisHelper","shouldShowAllLabels","nameDirection","tickDirection","dumbGroup","updateTransform","_transform","_dumbGroup","hasBuilder","builders","call","getGroup","axisLine","pt1","pt2","lineCap","anid","strokeContainThreshold","arrows","arrowSize","arrowOffset","symbolWidth","symbolHeight","offset","sqrt","symbol","pos","cos","sin","axisTickLabel","ticksEls","buildAxisMajorTicks","labelEls","buildAxisLabel","fixMinMaxLabelShow","buildAxisMinorTicks","axisNameAvailableWidth","nameLocation","textStyleModel","gap","gapSignal","isNameLocationCenter","nameRotation","endTextLayout","truncateOpt","ellipsis","maxWidth","nameTruncateMaxWidth","truncatedText","truncateText","minChar","placeholder","tooltipOpt","formatterParams","componentType","$vars","__fullText","__truncatedText","tooltip","content","decomposeTransform","axisRotation","textRotation","direction","rotationDiff","textRotate","onLeft","tickEls","showMinLabel","showMaxLabel","firstLabel","nextLabel","lastLabel","prevLabel","firstTick","nextTick","lastTick","prevTick","ignoreEl","isTwoLabelOverlapped","ignore","current","next","firstRect","nextRect","mRotationBack","identity","mul","getLocalTransform","intersect","createTicks","ticksCoords","tickTransform","tickEndCoord","tickLineStyle","aniid","tickCoord","tickEl","axisBuilder","minorTicksCoords","minorTickLineStyle","minorTicksEls","axisLabelShow","labelRotate","itemLabelModel","textColor","getShallow","_config","__DEV__","_axisPointer","updateAxisPointer","force","disposeAxisPointer","axisView","Clazz","getAxisPointerClass","axisPointerClazz","clazz","_axisSplitHelper","rectCoordAxisBuildSplitArea","rectCoordAxisHandleRemove","axisBuilderAttrs","selfBuilderAttrs","CartesianAxisView","oldAxisGroup","_axisGroup","gridModel","getCoordSysModel","groupTransition","superCall","gridRect","BrushController","brushHelper","init","_brushController","_onBrush","fromAxisAreaSelect","areaSelectStyle","getAreaSelectStyle","areaWidth","axisLayout","getAxisLayout","builderOpt","_refreshBrushController","extentLen","extra","BoundingRect","mount","enableGlobalPan","setPanels","panelId","clipPath","makeRectPanelClipPath","isTargetByCursor","makeRectIsTargetByCursor","getLinearBrushOtherExtent","makeLinearBrushOtherExtent","enableBrush","brushType","brushStyle","removeOnClick","updateCovers","getCoverInfoList","coverInfoList","intervals","coverInfo","coordToData","range","realtime","isEnd","parallelAxisId","findComponents","query","activeIntervals","interval","radiusAxisModel","layoutAxis","prevRadius","SingleAxisView","lineDash","getLineDash","axisGroup","clamp","areaColorsLen","lastSplitAreaColors","__splitAreaColors","newSplitAreaColors","createHashMap","cIndex","prev","areaStyle","set"],"sourceRoot":""}