1 |
- {"version":3,"file":"js/chunk-vendors-bcd1cd2e.ad4b92d1.js","mappings":"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","sources":["webpack://app/./node_modules/echarts/lib/component/angleAxis.js","webpack://app/./node_modules/echarts/lib/component/axisPointer.js","webpack://app/./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js","webpack://app/./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js","webpack://app/./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js","webpack://app/./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js","webpack://app/./node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js","webpack://app/./node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js","webpack://app/./node_modules/echarts/lib/component/axisPointer/axisTrigger.js","webpack://app/./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js","webpack://app/./node_modules/echarts/lib/component/axisPointer/globalListener.js","webpack://app/./node_modules/echarts/lib/component/axisPointer/modelHelper.js","webpack://app/./node_modules/echarts/lib/component/axisPointer/viewHelper.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\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.<number>} 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.<number>} xy\n * @param {Array.<number>} 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.<number>} [payload.x] x and y, which are mandatory, specify a point to\n * trigger axisPointer and tooltip.\n * @param {Array.<number>} [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.<number>|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 defualt 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.<number>} 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.<Object>} 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.<number>} p1\n * @param {Array.<number>} 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.<number>} xy\n * @param {Array.<number>} 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;"],"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"],"sourceRoot":""}
|