qauMaWeb/node_modules/.cache/babel-loader/d22e1c6753235142bf8b9dbfbc9...

1 line
102 KiB
JSON

{"ast":null,"code":"import \"core-js/modules/es.array.join.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.array.slice.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\nimport { __extends } from \"tslib\";\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nimport { bind, each, clone, trim, isString, isFunction, isArray, isObject, extend } from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport TooltipHTMLContent from './TooltipHTMLContent.js';\nimport TooltipRichContent from './TooltipRichContent.js';\nimport { convertToColorString, formatTpl } from '../../util/format.js';\nimport { parsePercent } from '../../util/number.js';\nimport { Rect } from '../../util/graphic.js';\nimport findPointFromSeries from '../axisPointer/findPointFromSeries.js';\nimport { getLayoutRect } from '../../util/layout.js';\nimport Model from '../../model/Model.js';\nimport * as globalListener from '../axisPointer/globalListener.js';\nimport * as axisHelper from '../../coord/axisHelper.js';\nimport * as axisPointerViewHelper from '../axisPointer/viewHelper.js';\nimport { getTooltipRenderMode, preParseFinder, queryReferringComponents } from '../../util/model.js';\nimport ComponentView from '../../view/Component.js';\nimport { format as timeFormat } from '../../util/time.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { shouldTooltipConfine } from './helper.js';\nimport { normalizeTooltipFormatResult } from '../../model/mixin/dataFormat.js';\nimport { createTooltipMarkup, buildTooltipMarkup, TooltipMarkupStyleCreator } from './tooltipMarkup.js';\nimport { findEventDispatcher } from '../../util/event.js';\nimport { clear, createOrUpdate } from '../../util/throttle.js';\nvar proxyRect = new Rect({\n shape: {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n }\n});\n\nvar TooltipView =\n/** @class */\nfunction (_super) {\n __extends(TooltipView, _super);\n\n function TooltipView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = TooltipView.type;\n return _this;\n }\n\n TooltipView.prototype.init = function (ecModel, api) {\n if (env.node || !api.getDom()) {\n return;\n }\n\n var tooltipModel = ecModel.getComponent('tooltip');\n var renderMode = this._renderMode = getTooltipRenderMode(tooltipModel.get('renderMode'));\n this._tooltipContent = renderMode === 'richText' ? new TooltipRichContent(api) : new TooltipHTMLContent(api.getDom(), api, {\n appendToBody: tooltipModel.get('appendToBody', true)\n });\n };\n\n TooltipView.prototype.render = function (tooltipModel, ecModel, api) {\n if (env.node || !api.getDom()) {\n return;\n } // Reset\n\n\n this.group.removeAll();\n this._tooltipModel = tooltipModel;\n this._ecModel = ecModel;\n this._api = api;\n var tooltipContent = this._tooltipContent;\n tooltipContent.update(tooltipModel);\n tooltipContent.setEnterable(tooltipModel.get('enterable'));\n\n this._initGlobalListener();\n\n this._keepShow(); // PENDING\n // `mousemove` event will be triggered very frequently when the mouse moves fast,\n // which causes that the `updatePosition` function was also called frequently.\n // In Chrome with devtools open and Firefox, tooltip looks laggy and shakes. See #14695 #16101\n // To avoid frequent triggering,\n // consider throttling it in 50ms when transition is enabled\n\n\n if (this._renderMode !== 'richText' && tooltipModel.get('transitionDuration')) {\n createOrUpdate(this, '_updatePosition', 50, 'fixRate');\n } else {\n clear(this, '_updatePosition');\n }\n };\n\n TooltipView.prototype._initGlobalListener = function () {\n var tooltipModel = this._tooltipModel;\n var triggerOn = tooltipModel.get('triggerOn');\n globalListener.register('itemTooltip', this._api, bind(function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none') {\n if (triggerOn.indexOf(currTrigger) >= 0) {\n this._tryShow(e, dispatchAction);\n } else if (currTrigger === 'leave') {\n this._hide(dispatchAction);\n }\n }\n }, this));\n };\n\n TooltipView.prototype._keepShow = function () {\n var tooltipModel = this._tooltipModel;\n var ecModel = this._ecModel;\n var api = this._api;\n var triggerOn = tooltipModel.get('triggerOn'); // Try to keep the tooltip show when refreshing\n\n if (this._lastX != null && this._lastY != null // When user is willing to control tooltip totally using API,\n // self.manuallyShowTip({x, y}) might cause tooltip hide,\n // which is not expected.\n && triggerOn !== 'none' && triggerOn !== 'click') {\n var self_1 = this;\n clearTimeout(this._refreshUpdateTimeout);\n this._refreshUpdateTimeout = setTimeout(function () {\n // Show tip next tick after other charts are rendered\n // In case highlight action has wrong result\n // FIXME\n !api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, {\n x: self_1._lastX,\n y: self_1._lastY,\n dataByCoordSys: self_1._lastDataByCoordSys\n });\n });\n }\n };\n /**\n * Show tip manually by\n * dispatchAction({\n * type: 'showTip',\n * x: 10,\n * y: 10\n * });\n * Or\n * dispatchAction({\n * type: 'showTip',\n * seriesIndex: 0,\n * dataIndex or dataIndexInside or name\n * });\n *\n * TODO Batch\n */\n\n\n TooltipView.prototype.manuallyShowTip = function (tooltipModel, ecModel, api, payload) {\n if (payload.from === this.uid || env.node || !api.getDom()) {\n return;\n }\n\n var dispatchAction = makeDispatchAction(payload, api); // Reset ticket\n\n this._ticket = ''; // When triggered from axisPointer.\n\n var dataByCoordSys = payload.dataByCoordSys;\n var cmptRef = findComponentReference(payload, ecModel, api);\n\n if (cmptRef) {\n var rect = cmptRef.el.getBoundingRect().clone();\n rect.applyTransform(cmptRef.el.transform);\n\n this._tryShow({\n offsetX: rect.x + rect.width / 2,\n offsetY: rect.y + rect.height / 2,\n target: cmptRef.el,\n position: payload.position,\n // When manully trigger, the mouse is not on the el, so we'd better to\n // position tooltip on the bottom of the el and display arrow is possible.\n positionDefault: 'bottom'\n }, dispatchAction);\n } else if (payload.tooltip && payload.x != null && payload.y != null) {\n var el = proxyRect;\n el.x = payload.x;\n el.y = payload.y;\n el.update();\n getECData(el).tooltipConfig = {\n name: null,\n option: payload.tooltip\n }; // Manually show tooltip while view is not using zrender elements.\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n target: el\n }, dispatchAction);\n } else if (dataByCoordSys) {\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n dataByCoordSys: dataByCoordSys,\n tooltipOption: payload.tooltipOption\n }, dispatchAction);\n } else if (payload.seriesIndex != null) {\n if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\n return;\n }\n\n var pointInfo = findPointFromSeries(payload, ecModel);\n var cx = pointInfo.point[0];\n var cy = pointInfo.point[1];\n\n if (cx != null && cy != null) {\n this._tryShow({\n offsetX: cx,\n offsetY: cy,\n target: pointInfo.el,\n position: payload.position,\n // When manully trigger, the mouse is not on the el, so we'd better to\n // position tooltip on the bottom of the el and display arrow is possible.\n positionDefault: 'bottom'\n }, dispatchAction);\n }\n } else if (payload.x != null && payload.y != null) {\n // FIXME\n // should wrap dispatchAction like `axisPointer/globalListener` ?\n api.dispatchAction({\n type: 'updateAxisPointer',\n x: payload.x,\n y: payload.y\n });\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n target: api.getZr().findHover(payload.x, payload.y).target\n }, dispatchAction);\n }\n };\n\n TooltipView.prototype.manuallyHideTip = function (tooltipModel, ecModel, api, payload) {\n var tooltipContent = this._tooltipContent;\n\n if (this._tooltipModel) {\n tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\n }\n\n this._lastX = this._lastY = this._lastDataByCoordSys = null;\n\n if (payload.from !== this.uid) {\n this._hide(makeDispatchAction(payload, api));\n }\n }; // Be compatible with previous design, that is, when tooltip.type is 'axis' and\n // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer\n // and tooltip.\n\n\n TooltipView.prototype._manuallyAxisShowTip = function (tooltipModel, ecModel, api, payload) {\n var seriesIndex = payload.seriesIndex;\n var dataIndex = payload.dataIndex; // @ts-ignore\n\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\n\n if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\n return;\n }\n\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n\n if (!seriesModel) {\n return;\n }\n\n var data = seriesModel.getData();\n var tooltipCascadedModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model], this._tooltipModel);\n\n if (tooltipCascadedModel.get('trigger') !== 'axis') {\n return;\n }\n\n api.dispatchAction({\n type: 'updateAxisPointer',\n seriesIndex: seriesIndex,\n dataIndex: dataIndex,\n position: payload.position\n });\n return true;\n };\n\n TooltipView.prototype._tryShow = function (e, dispatchAction) {\n var el = e.target;\n var tooltipModel = this._tooltipModel;\n\n if (!tooltipModel) {\n return;\n } // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed\n\n\n this._lastX = e.offsetX;\n this._lastY = e.offsetY;\n var dataByCoordSys = e.dataByCoordSys;\n\n if (dataByCoordSys && dataByCoordSys.length) {\n this._showAxisTooltip(dataByCoordSys, e);\n } else if (el) {\n this._lastDataByCoordSys = null;\n var seriesDispatcher_1;\n var cmptDispatcher_1;\n findEventDispatcher(el, function (target) {\n // Always show item tooltip if mouse is on the element with dataIndex\n if (getECData(target).dataIndex != null) {\n seriesDispatcher_1 = target;\n return true;\n } // Tooltip provided directly. Like legend.\n\n\n if (getECData(target).tooltipConfig != null) {\n cmptDispatcher_1 = target;\n return true;\n }\n }, true);\n\n if (seriesDispatcher_1) {\n this._showSeriesItemTooltip(e, seriesDispatcher_1, dispatchAction);\n } else if (cmptDispatcher_1) {\n this._showComponentItemTooltip(e, cmptDispatcher_1, dispatchAction);\n } else {\n this._hide(dispatchAction);\n }\n } else {\n this._lastDataByCoordSys = null;\n\n this._hide(dispatchAction);\n }\n };\n\n TooltipView.prototype._showOrMove = function (tooltipModel, cb) {\n // showDelay is used in this case: tooltip.enterable is set\n // as true. User intent to move mouse into tooltip and click\n // something. `showDelay` makes it easier to enter the content\n // but tooltip do not move immediately.\n var delay = tooltipModel.get('showDelay');\n cb = bind(cb, this);\n clearTimeout(this._showTimout);\n delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb();\n };\n\n TooltipView.prototype._showAxisTooltip = function (dataByCoordSys, e) {\n var ecModel = this._ecModel;\n var globalTooltipModel = this._tooltipModel;\n var point = [e.offsetX, e.offsetY];\n var singleTooltipModel = buildTooltipModel([e.tooltipOption], globalTooltipModel);\n var renderMode = this._renderMode;\n var cbParamsList = [];\n var articleMarkup = createTooltipMarkup('section', {\n blocks: [],\n noHeader: true\n }); // Only for legacy: `Serise['formatTooltip']` returns a string.\n\n var markupTextArrLegacy = [];\n var markupStyleCreator = new TooltipMarkupStyleCreator();\n each(dataByCoordSys, function (itemCoordSys) {\n each(itemCoordSys.dataByAxis, function (axisItem) {\n var axisModel = ecModel.getComponent(axisItem.axisDim + 'Axis', axisItem.axisIndex);\n var axisValue = axisItem.value;\n\n if (!axisModel || axisValue == null) {\n return;\n }\n\n var axisValueLabel = axisPointerViewHelper.getValueLabel(axisValue, axisModel.axis, ecModel, axisItem.seriesDataIndices, axisItem.valueLabelOpt);\n var axisSectionMarkup = createTooltipMarkup('section', {\n header: axisValueLabel,\n noHeader: !trim(axisValueLabel),\n sortBlocks: true,\n blocks: []\n });\n articleMarkup.blocks.push(axisSectionMarkup);\n each(axisItem.seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var cbParams = series.getDataParams(dataIndex); // Can't find data.\n\n if (cbParams.dataIndex < 0) {\n return;\n }\n\n cbParams.axisDim = axisItem.axisDim;\n cbParams.axisIndex = axisItem.axisIndex;\n cbParams.axisType = axisItem.axisType;\n cbParams.axisId = axisItem.axisId;\n cbParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, {\n value: axisValue\n });\n cbParams.axisValueLabel = axisValueLabel; // Pre-create marker style for makers. Users can assemble richText\n // text in `formatter` callback and use those markers style.\n\n cbParams.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(cbParams.color), renderMode);\n var seriesTooltipResult = normalizeTooltipFormatResult(series.formatTooltip(dataIndex, true, null));\n var frag = seriesTooltipResult.frag;\n\n if (frag) {\n var valueFormatter = buildTooltipModel([series], globalTooltipModel).get('valueFormatter');\n axisSectionMarkup.blocks.push(valueFormatter ? extend({\n valueFormatter: valueFormatter\n }, frag) : frag);\n }\n\n if (seriesTooltipResult.text) {\n markupTextArrLegacy.push(seriesTooltipResult.text);\n }\n\n cbParamsList.push(cbParams);\n });\n });\n }); // In most cases, the second axis is displays upper on the first one.\n // So we reverse it to look better.\n\n articleMarkup.blocks.reverse();\n markupTextArrLegacy.reverse();\n var positionExpr = e.position;\n var orderMode = singleTooltipModel.get('order');\n var builtMarkupText = buildTooltipMarkup(articleMarkup, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'), singleTooltipModel.get('textStyle'));\n builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText);\n var blockBreak = renderMode === 'richText' ? '\\n\\n' : '<br/>';\n var allMarkupText = markupTextArrLegacy.join(blockBreak);\n\n this._showOrMove(singleTooltipModel, function () {\n if (this._updateContentNotChangedOnAxis(dataByCoordSys, cbParamsList)) {\n this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, cbParamsList);\n } else {\n this._showTooltipContent(singleTooltipModel, allMarkupText, cbParamsList, Math.random() + '', point[0], point[1], positionExpr, null, markupStyleCreator);\n }\n }); // Do not trigger events here, because this branch only be entered\n // from dispatchAction.\n\n };\n\n TooltipView.prototype._showSeriesItemTooltip = function (e, dispatcher, dispatchAction) {\n var ecModel = this._ecModel;\n var ecData = getECData(dispatcher); // Use dataModel in element if possible\n // Used when mouseover on a element like markPoint or edge\n // In which case, the data is not main data in series.\n\n var seriesIndex = ecData.seriesIndex;\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex); // For example, graph link.\n\n var dataModel = ecData.dataModel || seriesModel;\n var dataIndex = ecData.dataIndex;\n var dataType = ecData.dataType;\n var data = dataModel.getData(dataType);\n var renderMode = this._renderMode;\n var positionDefault = e.positionDefault;\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model], this._tooltipModel, positionDefault ? {\n position: positionDefault\n } : null);\n var tooltipTrigger = tooltipModel.get('trigger');\n\n if (tooltipTrigger != null && tooltipTrigger !== 'item') {\n return;\n }\n\n var params = dataModel.getDataParams(dataIndex, dataType);\n var markupStyleCreator = new TooltipMarkupStyleCreator(); // Pre-create marker style for makers. Users can assemble richText\n // text in `formatter` callback and use those markers style.\n\n params.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(params.color), renderMode);\n var seriesTooltipResult = normalizeTooltipFormatResult(dataModel.formatTooltip(dataIndex, false, dataType));\n var orderMode = tooltipModel.get('order');\n var valueFormatter = tooltipModel.get('valueFormatter');\n var frag = seriesTooltipResult.frag;\n var markupText = frag ? buildTooltipMarkup(valueFormatter ? extend({\n valueFormatter: valueFormatter\n }, frag) : frag, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'), tooltipModel.get('textStyle')) : seriesTooltipResult.text;\n var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\n\n this._showOrMove(tooltipModel, function () {\n this._showTooltipContent(tooltipModel, markupText, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markupStyleCreator);\n }); // FIXME\n // duplicated showtip if manuallyShowTip is called from dispatchAction.\n\n\n dispatchAction({\n type: 'showTip',\n dataIndexInside: dataIndex,\n dataIndex: data.getRawIndex(dataIndex),\n seriesIndex: seriesIndex,\n from: this.uid\n });\n };\n\n TooltipView.prototype._showComponentItemTooltip = function (e, el, dispatchAction) {\n var ecData = getECData(el);\n var tooltipConfig = ecData.tooltipConfig;\n var tooltipOpt = tooltipConfig.option || {};\n\n if (isString(tooltipOpt)) {\n var content = tooltipOpt;\n tooltipOpt = {\n content: content,\n // Fixed formatter\n formatter: content\n };\n }\n\n var tooltipModelCascade = [tooltipOpt];\n\n var cmpt = this._ecModel.getComponent(ecData.componentMainType, ecData.componentIndex);\n\n if (cmpt) {\n tooltipModelCascade.push(cmpt);\n } // In most cases, component tooltip formatter has different params with series tooltip formatter,\n // so that they cannot share the same formatter. Since the global tooltip formatter is used for series\n // by convention, we do not use it as the default formatter for component.\n\n\n tooltipModelCascade.push({\n formatter: tooltipOpt.content\n });\n var positionDefault = e.positionDefault;\n var subTooltipModel = buildTooltipModel(tooltipModelCascade, this._tooltipModel, positionDefault ? {\n position: positionDefault\n } : null);\n var defaultHtml = subTooltipModel.get('content');\n var asyncTicket = Math.random() + ''; // PENDING: this case do not support richText style yet.\n\n var markupStyleCreator = new TooltipMarkupStyleCreator(); // Do not check whether `trigger` is 'none' here, because `trigger`\n // only works on coordinate system. In fact, we have not found case\n // that requires setting `trigger` nothing on component yet.\n\n this._showOrMove(subTooltipModel, function () {\n // Use formatterParams from element defined in component\n // Avoid users modify it.\n var formatterParams = clone(subTooltipModel.get('formatterParams') || {});\n\n this._showTooltipContent(subTooltipModel, defaultHtml, formatterParams, asyncTicket, e.offsetX, e.offsetY, e.position, el, markupStyleCreator);\n }); // If not dispatch showTip, tip may be hide triggered by axis.\n\n\n dispatchAction({\n type: 'showTip',\n from: this.uid\n });\n };\n\n TooltipView.prototype._showTooltipContent = function ( // Use Model<TooltipOption> insteadof TooltipModel because this model may be from series or other options.\n // Instead of top level tooltip.\n tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markupStyleCreator) {\n // Reset ticket\n this._ticket = '';\n\n if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\n return;\n }\n\n var tooltipContent = this._tooltipContent;\n tooltipContent.setEnterable(tooltipModel.get('enterable'));\n var formatter = tooltipModel.get('formatter');\n positionExpr = positionExpr || tooltipModel.get('position');\n var html = defaultHtml;\n\n var nearPoint = this._getNearestPoint([x, y], params, tooltipModel.get('trigger'), tooltipModel.get('borderColor'));\n\n var nearPointColor = nearPoint.color;\n\n if (formatter) {\n if (isString(formatter)) {\n var useUTC = tooltipModel.ecModel.get('useUTC');\n var params0 = isArray(params) ? params[0] : params;\n var isTimeAxis = params0 && params0.axisType && params0.axisType.indexOf('time') >= 0;\n html = formatter;\n\n if (isTimeAxis) {\n html = timeFormat(params0.axisValue, html, useUTC);\n }\n\n html = formatTpl(html, params, true);\n } else if (isFunction(formatter)) {\n var callback = bind(function (cbTicket, html) {\n if (cbTicket === this._ticket) {\n tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n }\n }, this);\n this._ticket = asyncTicket;\n html = formatter(params, asyncTicket, callback);\n } else {\n html = formatter;\n }\n }\n\n tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr);\n tooltipContent.show(tooltipModel, nearPointColor);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n };\n\n TooltipView.prototype._getNearestPoint = function (point, tooltipDataParams, trigger, borderColor) {\n if (trigger === 'axis' || isArray(tooltipDataParams)) {\n return {\n color: borderColor || (this._renderMode === 'html' ? '#fff' : 'none')\n };\n }\n\n if (!isArray(tooltipDataParams)) {\n return {\n color: borderColor || tooltipDataParams.color || tooltipDataParams.borderColor\n };\n }\n };\n\n TooltipView.prototype._updatePosition = function (tooltipModel, positionExpr, x, // Mouse x\n y, // Mouse y\n content, params, el) {\n var viewWidth = this._api.getWidth();\n\n var viewHeight = this._api.getHeight();\n\n positionExpr = positionExpr || tooltipModel.get('position');\n var contentSize = content.getSize();\n var align = tooltipModel.get('align');\n var vAlign = tooltipModel.get('verticalAlign');\n var rect = el && el.getBoundingRect().clone();\n el && rect.applyTransform(el.transform);\n\n if (isFunction(positionExpr)) {\n // Callback of position can be an array or a string specify the position\n positionExpr = positionExpr([x, y], params, content.el, rect, {\n viewSize: [viewWidth, viewHeight],\n contentSize: contentSize.slice()\n });\n }\n\n if (isArray(positionExpr)) {\n x = parsePercent(positionExpr[0], viewWidth);\n y = parsePercent(positionExpr[1], viewHeight);\n } else if (isObject(positionExpr)) {\n var boxLayoutPosition = positionExpr;\n boxLayoutPosition.width = contentSize[0];\n boxLayoutPosition.height = contentSize[1];\n var layoutRect = getLayoutRect(boxLayoutPosition, {\n width: viewWidth,\n height: viewHeight\n });\n x = layoutRect.x;\n y = layoutRect.y;\n align = null; // When positionExpr is left/top/right/bottom,\n // align and verticalAlign will not work.\n\n vAlign = null;\n } // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element\n else if (isString(positionExpr) && el) {\n var pos = calcTooltipPosition(positionExpr, rect, contentSize, tooltipModel.get('borderWidth'));\n x = pos[0];\n y = pos[1];\n } else {\n var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\n x = pos[0];\n y = pos[1];\n }\n\n align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\n vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\n\n if (shouldTooltipConfine(tooltipModel)) {\n var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);\n x = pos[0];\n y = pos[1];\n }\n\n content.moveTo(x, y);\n }; // FIXME\n // Should we remove this but leave this to user?\n\n\n TooltipView.prototype._updateContentNotChangedOnAxis = function (dataByCoordSys, cbParamsList) {\n var lastCoordSys = this._lastDataByCoordSys;\n var lastCbParamsList = this._cbParamsList;\n var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;\n contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\n var lastDataByAxis = lastItemCoordSys.dataByAxis || [];\n var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\n var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\n contentNotChanged = contentNotChanged && lastDataByAxis.length === thisDataByAxis.length;\n contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) {\n var thisItem = thisDataByAxis[indexAxis] || {};\n var lastIndices = lastItem.seriesDataIndices || [];\n var newIndices = thisItem.seriesDataIndices || [];\n contentNotChanged = contentNotChanged && lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;\n contentNotChanged && each(lastIndices, function (lastIdxItem, j) {\n var newIdxItem = newIndices[j];\n contentNotChanged = contentNotChanged && lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;\n }); // check is cbParams data value changed\n\n lastCbParamsList && each(lastItem.seriesDataIndices, function (idxItem) {\n var seriesIdx = idxItem.seriesIndex;\n var cbParams = cbParamsList[seriesIdx];\n var lastCbParams = lastCbParamsList[seriesIdx];\n\n if (cbParams && lastCbParams && lastCbParams.data !== cbParams.data) {\n contentNotChanged = false;\n }\n });\n });\n });\n this._lastDataByCoordSys = dataByCoordSys;\n this._cbParamsList = cbParamsList;\n return !!contentNotChanged;\n };\n\n TooltipView.prototype._hide = function (dispatchAction) {\n // Do not directly hideLater here, because this behavior may be prevented\n // in dispatchAction when showTip is dispatched.\n // FIXME\n // duplicated hideTip if manuallyHideTip is called from dispatchAction.\n this._lastDataByCoordSys = null;\n dispatchAction({\n type: 'hideTip',\n from: this.uid\n });\n };\n\n TooltipView.prototype.dispose = function (ecModel, api) {\n if (env.node || !api.getDom()) {\n return;\n }\n\n clear(this, '_updatePosition');\n\n this._tooltipContent.dispose();\n\n globalListener.unregister('itemTooltip', api);\n };\n\n TooltipView.type = 'tooltip';\n return TooltipView;\n}(ComponentView);\n/**\n * From top to bottom. (the last one should be globalTooltipModel);\n */\n\n\nfunction buildTooltipModel(modelCascade, globalTooltipModel, defaultTooltipOption) {\n // Last is always tooltip model.\n var ecModel = globalTooltipModel.ecModel;\n var resultModel;\n\n if (defaultTooltipOption) {\n resultModel = new Model(defaultTooltipOption, ecModel, ecModel);\n resultModel = new Model(globalTooltipModel.option, resultModel, ecModel);\n } else {\n resultModel = globalTooltipModel;\n }\n\n for (var i = modelCascade.length - 1; i >= 0; i--) {\n var tooltipOpt = modelCascade[i];\n\n if (tooltipOpt) {\n if (tooltipOpt instanceof Model) {\n tooltipOpt = tooltipOpt.get('tooltip', true);\n } // In each data item tooltip can be simply write:\n // {\n // value: 10,\n // tooltip: 'Something you need to know'\n // }\n\n\n if (isString(tooltipOpt)) {\n tooltipOpt = {\n formatter: tooltipOpt\n };\n }\n\n if (tooltipOpt) {\n resultModel = new Model(tooltipOpt, resultModel, ecModel);\n }\n }\n }\n\n return resultModel;\n}\n\nfunction makeDispatchAction(payload, api) {\n return payload.dispatchAction || bind(api.dispatchAction, api);\n}\n\nfunction refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\n var size = content.getSize();\n var width = size[0];\n var height = size[1];\n\n if (gapH != null) {\n // Add extra 2 pixels for this case:\n // At present the \"values\" in default tooltip are using CSS `float: right`.\n // When the right edge of the tooltip box is on the right side of the\n // viewport, the `float` layout might push the \"values\" to the second line.\n if (x + width + gapH + 2 > viewWidth) {\n x -= width + gapH;\n } else {\n x += gapH;\n }\n }\n\n if (gapV != null) {\n if (y + height + gapV > viewHeight) {\n y -= height + gapV;\n } else {\n y += gapV;\n }\n }\n\n return [x, y];\n}\n\nfunction confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\n var size = content.getSize();\n var width = size[0];\n var height = size[1];\n x = Math.min(x + width, viewWidth) - width;\n y = Math.min(y + height, viewHeight) - height;\n x = Math.max(x, 0);\n y = Math.max(y, 0);\n return [x, y];\n}\n\nfunction calcTooltipPosition(position, rect, contentSize, borderWidth) {\n var domWidth = contentSize[0];\n var domHeight = contentSize[1];\n var offset = Math.ceil(Math.SQRT2 * borderWidth) + 8;\n var x = 0;\n var y = 0;\n var rectWidth = rect.width;\n var rectHeight = rect.height;\n\n switch (position) {\n case 'inside':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'top':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y - domHeight - offset;\n break;\n\n case 'bottom':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight + offset;\n break;\n\n case 'left':\n x = rect.x - domWidth - offset;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'right':\n x = rect.x + rectWidth + offset;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n }\n\n return [x, y];\n}\n\nfunction isCenterAlign(align) {\n return align === 'center' || align === 'middle';\n}\n/**\n * Find target component by payload like:\n * ```js\n * { legendId: 'some_id', name: 'xxx' }\n * { toolboxIndex: 1, name: 'xxx' }\n * { geoName: 'some_name', name: 'xxx' }\n * ```\n * PENDING: at present only\n *\n * If not found, return null/undefined.\n */\n\n\nfunction findComponentReference(payload, ecModel, api) {\n var queryOptionMap = preParseFinder(payload).queryOptionMap;\n var componentMainType = queryOptionMap.keys()[0];\n\n if (!componentMainType || componentMainType === 'series') {\n return;\n }\n\n var queryResult = queryReferringComponents(ecModel, componentMainType, queryOptionMap.get(componentMainType), {\n useDefault: false,\n enableAll: false,\n enableNone: false\n });\n var model = queryResult.models[0];\n\n if (!model) {\n return;\n }\n\n var view = api.getViewOfComponentModel(model);\n var el;\n view.group.traverse(function (subEl) {\n var tooltipConfig = getECData(subEl).tooltipConfig;\n\n if (tooltipConfig && tooltipConfig.name === payload.name) {\n el = subEl;\n return true; // stop\n }\n });\n\n if (el) {\n return {\n componentMainType: componentMainType,\n componentIndex: model.componentIndex,\n el: el\n };\n }\n}\n\nexport default TooltipView;","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/ElectronicMallVue/node_modules/echarts/lib/component/tooltip/TooltipView.js"],"names":["__extends","bind","each","clone","trim","isString","isFunction","isArray","isObject","extend","env","TooltipHTMLContent","TooltipRichContent","convertToColorString","formatTpl","parsePercent","Rect","findPointFromSeries","getLayoutRect","Model","globalListener","axisHelper","axisPointerViewHelper","getTooltipRenderMode","preParseFinder","queryReferringComponents","ComponentView","format","timeFormat","getECData","shouldTooltipConfine","normalizeTooltipFormatResult","createTooltipMarkup","buildTooltipMarkup","TooltipMarkupStyleCreator","findEventDispatcher","clear","createOrUpdate","proxyRect","shape","x","y","width","height","TooltipView","_super","_this","apply","arguments","type","prototype","init","ecModel","api","node","getDom","tooltipModel","getComponent","renderMode","_renderMode","get","_tooltipContent","appendToBody","render","group","removeAll","_tooltipModel","_ecModel","_api","tooltipContent","update","setEnterable","_initGlobalListener","_keepShow","triggerOn","register","currTrigger","e","dispatchAction","indexOf","_tryShow","_hide","_lastX","_lastY","self_1","clearTimeout","_refreshUpdateTimeout","setTimeout","isDisposed","manuallyShowTip","dataByCoordSys","_lastDataByCoordSys","payload","from","uid","makeDispatchAction","_ticket","cmptRef","findComponentReference","rect","el","getBoundingRect","applyTransform","transform","offsetX","offsetY","target","position","positionDefault","tooltip","tooltipConfig","name","option","tooltipOption","seriesIndex","_manuallyAxisShowTip","pointInfo","cx","point","cy","getZr","findHover","manuallyHideTip","hideLater","dataIndex","coordSysAxesInfo","seriesModel","getSeriesByIndex","data","getData","tooltipCascadedModel","buildTooltipModel","getItemModel","coordinateSystem","model","length","_showAxisTooltip","seriesDispatcher_1","cmptDispatcher_1","_showSeriesItemTooltip","_showComponentItemTooltip","_showOrMove","cb","delay","_showTimout","globalTooltipModel","singleTooltipModel","cbParamsList","articleMarkup","blocks","noHeader","markupTextArrLegacy","markupStyleCreator","itemCoordSys","dataByAxis","axisItem","axisModel","axisDim","axisIndex","axisValue","value","axisValueLabel","getValueLabel","axis","seriesDataIndices","valueLabelOpt","axisSectionMarkup","header","sortBlocks","push","idxItem","series","dataIndexInside","cbParams","getDataParams","axisType","axisId","getAxisRawValue","marker","makeTooltipMarker","color","seriesTooltipResult","formatTooltip","frag","valueFormatter","text","reverse","positionExpr","orderMode","builtMarkupText","unshift","blockBreak","allMarkupText","join","_updateContentNotChangedOnAxis","_updatePosition","_showTooltipContent","Math","random","dispatcher","ecData","dataModel","dataType","tooltipTrigger","params","markupText","asyncTicket","getRawIndex","tooltipOpt","content","formatter","tooltipModelCascade","cmpt","componentMainType","componentIndex","subTooltipModel","defaultHtml","formatterParams","html","nearPoint","_getNearestPoint","nearPointColor","useUTC","params0","isTimeAxis","callback","cbTicket","setContent","show","tooltipDataParams","trigger","borderColor","viewWidth","getWidth","viewHeight","getHeight","contentSize","getSize","align","vAlign","viewSize","slice","boxLayoutPosition","layoutRect","pos","calcTooltipPosition","refixTooltipPosition","isCenterAlign","confineTooltipPosition","moveTo","lastCoordSys","lastCbParamsList","_cbParamsList","contentNotChanged","lastItemCoordSys","indexCoordSys","lastDataByAxis","thisItemCoordSys","thisDataByAxis","lastItem","indexAxis","thisItem","lastIndices","newIndices","lastIdxItem","j","newIdxItem","seriesIdx","lastCbParams","dispose","unregister","modelCascade","defaultTooltipOption","resultModel","i","gapH","gapV","size","min","max","borderWidth","domWidth","domHeight","offset","ceil","SQRT2","rectWidth","rectHeight","queryOptionMap","keys","queryResult","useDefault","enableAll","enableNone","models","view","getViewOfComponentModel","traverse","subEl"],"mappings":"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","sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\nimport { __extends } from \"tslib\";\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nimport { bind, each, clone, trim, isString, isFunction, isArray, isObject, extend } from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport TooltipHTMLContent from './TooltipHTMLContent.js';\nimport TooltipRichContent from './TooltipRichContent.js';\nimport { convertToColorString, formatTpl } from '../../util/format.js';\nimport { parsePercent } from '../../util/number.js';\nimport { Rect } from '../../util/graphic.js';\nimport findPointFromSeries from '../axisPointer/findPointFromSeries.js';\nimport { getLayoutRect } from '../../util/layout.js';\nimport Model from '../../model/Model.js';\nimport * as globalListener from '../axisPointer/globalListener.js';\nimport * as axisHelper from '../../coord/axisHelper.js';\nimport * as axisPointerViewHelper from '../axisPointer/viewHelper.js';\nimport { getTooltipRenderMode, preParseFinder, queryReferringComponents } from '../../util/model.js';\nimport ComponentView from '../../view/Component.js';\nimport { format as timeFormat } from '../../util/time.js';\nimport { getECData } from '../../util/innerStore.js';\nimport { shouldTooltipConfine } from './helper.js';\nimport { normalizeTooltipFormatResult } from '../../model/mixin/dataFormat.js';\nimport { createTooltipMarkup, buildTooltipMarkup, TooltipMarkupStyleCreator } from './tooltipMarkup.js';\nimport { findEventDispatcher } from '../../util/event.js';\nimport { clear, createOrUpdate } from '../../util/throttle.js';\nvar proxyRect = new Rect({\n shape: {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n }\n});\n\nvar TooltipView =\n/** @class */\nfunction (_super) {\n __extends(TooltipView, _super);\n\n function TooltipView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = TooltipView.type;\n return _this;\n }\n\n TooltipView.prototype.init = function (ecModel, api) {\n if (env.node || !api.getDom()) {\n return;\n }\n\n var tooltipModel = ecModel.getComponent('tooltip');\n var renderMode = this._renderMode = getTooltipRenderMode(tooltipModel.get('renderMode'));\n this._tooltipContent = renderMode === 'richText' ? new TooltipRichContent(api) : new TooltipHTMLContent(api.getDom(), api, {\n appendToBody: tooltipModel.get('appendToBody', true)\n });\n };\n\n TooltipView.prototype.render = function (tooltipModel, ecModel, api) {\n if (env.node || !api.getDom()) {\n return;\n } // Reset\n\n\n this.group.removeAll();\n this._tooltipModel = tooltipModel;\n this._ecModel = ecModel;\n this._api = api;\n var tooltipContent = this._tooltipContent;\n tooltipContent.update(tooltipModel);\n tooltipContent.setEnterable(tooltipModel.get('enterable'));\n\n this._initGlobalListener();\n\n this._keepShow(); // PENDING\n // `mousemove` event will be triggered very frequently when the mouse moves fast,\n // which causes that the `updatePosition` function was also called frequently.\n // In Chrome with devtools open and Firefox, tooltip looks laggy and shakes. See #14695 #16101\n // To avoid frequent triggering,\n // consider throttling it in 50ms when transition is enabled\n\n\n if (this._renderMode !== 'richText' && tooltipModel.get('transitionDuration')) {\n createOrUpdate(this, '_updatePosition', 50, 'fixRate');\n } else {\n clear(this, '_updatePosition');\n }\n };\n\n TooltipView.prototype._initGlobalListener = function () {\n var tooltipModel = this._tooltipModel;\n var triggerOn = tooltipModel.get('triggerOn');\n globalListener.register('itemTooltip', this._api, bind(function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none') {\n if (triggerOn.indexOf(currTrigger) >= 0) {\n this._tryShow(e, dispatchAction);\n } else if (currTrigger === 'leave') {\n this._hide(dispatchAction);\n }\n }\n }, this));\n };\n\n TooltipView.prototype._keepShow = function () {\n var tooltipModel = this._tooltipModel;\n var ecModel = this._ecModel;\n var api = this._api;\n var triggerOn = tooltipModel.get('triggerOn'); // Try to keep the tooltip show when refreshing\n\n if (this._lastX != null && this._lastY != null // When user is willing to control tooltip totally using API,\n // self.manuallyShowTip({x, y}) might cause tooltip hide,\n // which is not expected.\n && triggerOn !== 'none' && triggerOn !== 'click') {\n var self_1 = this;\n clearTimeout(this._refreshUpdateTimeout);\n this._refreshUpdateTimeout = setTimeout(function () {\n // Show tip next tick after other charts are rendered\n // In case highlight action has wrong result\n // FIXME\n !api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, {\n x: self_1._lastX,\n y: self_1._lastY,\n dataByCoordSys: self_1._lastDataByCoordSys\n });\n });\n }\n };\n /**\n * Show tip manually by\n * dispatchAction({\n * type: 'showTip',\n * x: 10,\n * y: 10\n * });\n * Or\n * dispatchAction({\n * type: 'showTip',\n * seriesIndex: 0,\n * dataIndex or dataIndexInside or name\n * });\n *\n * TODO Batch\n */\n\n\n TooltipView.prototype.manuallyShowTip = function (tooltipModel, ecModel, api, payload) {\n if (payload.from === this.uid || env.node || !api.getDom()) {\n return;\n }\n\n var dispatchAction = makeDispatchAction(payload, api); // Reset ticket\n\n this._ticket = ''; // When triggered from axisPointer.\n\n var dataByCoordSys = payload.dataByCoordSys;\n var cmptRef = findComponentReference(payload, ecModel, api);\n\n if (cmptRef) {\n var rect = cmptRef.el.getBoundingRect().clone();\n rect.applyTransform(cmptRef.el.transform);\n\n this._tryShow({\n offsetX: rect.x + rect.width / 2,\n offsetY: rect.y + rect.height / 2,\n target: cmptRef.el,\n position: payload.position,\n // When manully trigger, the mouse is not on the el, so we'd better to\n // position tooltip on the bottom of the el and display arrow is possible.\n positionDefault: 'bottom'\n }, dispatchAction);\n } else if (payload.tooltip && payload.x != null && payload.y != null) {\n var el = proxyRect;\n el.x = payload.x;\n el.y = payload.y;\n el.update();\n getECData(el).tooltipConfig = {\n name: null,\n option: payload.tooltip\n }; // Manually show tooltip while view is not using zrender elements.\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n target: el\n }, dispatchAction);\n } else if (dataByCoordSys) {\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n dataByCoordSys: dataByCoordSys,\n tooltipOption: payload.tooltipOption\n }, dispatchAction);\n } else if (payload.seriesIndex != null) {\n if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\n return;\n }\n\n var pointInfo = findPointFromSeries(payload, ecModel);\n var cx = pointInfo.point[0];\n var cy = pointInfo.point[1];\n\n if (cx != null && cy != null) {\n this._tryShow({\n offsetX: cx,\n offsetY: cy,\n target: pointInfo.el,\n position: payload.position,\n // When manully trigger, the mouse is not on the el, so we'd better to\n // position tooltip on the bottom of the el and display arrow is possible.\n positionDefault: 'bottom'\n }, dispatchAction);\n }\n } else if (payload.x != null && payload.y != null) {\n // FIXME\n // should wrap dispatchAction like `axisPointer/globalListener` ?\n api.dispatchAction({\n type: 'updateAxisPointer',\n x: payload.x,\n y: payload.y\n });\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n target: api.getZr().findHover(payload.x, payload.y).target\n }, dispatchAction);\n }\n };\n\n TooltipView.prototype.manuallyHideTip = function (tooltipModel, ecModel, api, payload) {\n var tooltipContent = this._tooltipContent;\n\n if (this._tooltipModel) {\n tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\n }\n\n this._lastX = this._lastY = this._lastDataByCoordSys = null;\n\n if (payload.from !== this.uid) {\n this._hide(makeDispatchAction(payload, api));\n }\n }; // Be compatible with previous design, that is, when tooltip.type is 'axis' and\n // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer\n // and tooltip.\n\n\n TooltipView.prototype._manuallyAxisShowTip = function (tooltipModel, ecModel, api, payload) {\n var seriesIndex = payload.seriesIndex;\n var dataIndex = payload.dataIndex; // @ts-ignore\n\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\n\n if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\n return;\n }\n\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n\n if (!seriesModel) {\n return;\n }\n\n var data = seriesModel.getData();\n var tooltipCascadedModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model], this._tooltipModel);\n\n if (tooltipCascadedModel.get('trigger') !== 'axis') {\n return;\n }\n\n api.dispatchAction({\n type: 'updateAxisPointer',\n seriesIndex: seriesIndex,\n dataIndex: dataIndex,\n position: payload.position\n });\n return true;\n };\n\n TooltipView.prototype._tryShow = function (e, dispatchAction) {\n var el = e.target;\n var tooltipModel = this._tooltipModel;\n\n if (!tooltipModel) {\n return;\n } // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed\n\n\n this._lastX = e.offsetX;\n this._lastY = e.offsetY;\n var dataByCoordSys = e.dataByCoordSys;\n\n if (dataByCoordSys && dataByCoordSys.length) {\n this._showAxisTooltip(dataByCoordSys, e);\n } else if (el) {\n this._lastDataByCoordSys = null;\n var seriesDispatcher_1;\n var cmptDispatcher_1;\n findEventDispatcher(el, function (target) {\n // Always show item tooltip if mouse is on the element with dataIndex\n if (getECData(target).dataIndex != null) {\n seriesDispatcher_1 = target;\n return true;\n } // Tooltip provided directly. Like legend.\n\n\n if (getECData(target).tooltipConfig != null) {\n cmptDispatcher_1 = target;\n return true;\n }\n }, true);\n\n if (seriesDispatcher_1) {\n this._showSeriesItemTooltip(e, seriesDispatcher_1, dispatchAction);\n } else if (cmptDispatcher_1) {\n this._showComponentItemTooltip(e, cmptDispatcher_1, dispatchAction);\n } else {\n this._hide(dispatchAction);\n }\n } else {\n this._lastDataByCoordSys = null;\n\n this._hide(dispatchAction);\n }\n };\n\n TooltipView.prototype._showOrMove = function (tooltipModel, cb) {\n // showDelay is used in this case: tooltip.enterable is set\n // as true. User intent to move mouse into tooltip and click\n // something. `showDelay` makes it easier to enter the content\n // but tooltip do not move immediately.\n var delay = tooltipModel.get('showDelay');\n cb = bind(cb, this);\n clearTimeout(this._showTimout);\n delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb();\n };\n\n TooltipView.prototype._showAxisTooltip = function (dataByCoordSys, e) {\n var ecModel = this._ecModel;\n var globalTooltipModel = this._tooltipModel;\n var point = [e.offsetX, e.offsetY];\n var singleTooltipModel = buildTooltipModel([e.tooltipOption], globalTooltipModel);\n var renderMode = this._renderMode;\n var cbParamsList = [];\n var articleMarkup = createTooltipMarkup('section', {\n blocks: [],\n noHeader: true\n }); // Only for legacy: `Serise['formatTooltip']` returns a string.\n\n var markupTextArrLegacy = [];\n var markupStyleCreator = new TooltipMarkupStyleCreator();\n each(dataByCoordSys, function (itemCoordSys) {\n each(itemCoordSys.dataByAxis, function (axisItem) {\n var axisModel = ecModel.getComponent(axisItem.axisDim + 'Axis', axisItem.axisIndex);\n var axisValue = axisItem.value;\n\n if (!axisModel || axisValue == null) {\n return;\n }\n\n var axisValueLabel = axisPointerViewHelper.getValueLabel(axisValue, axisModel.axis, ecModel, axisItem.seriesDataIndices, axisItem.valueLabelOpt);\n var axisSectionMarkup = createTooltipMarkup('section', {\n header: axisValueLabel,\n noHeader: !trim(axisValueLabel),\n sortBlocks: true,\n blocks: []\n });\n articleMarkup.blocks.push(axisSectionMarkup);\n each(axisItem.seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var cbParams = series.getDataParams(dataIndex); // Can't find data.\n\n if (cbParams.dataIndex < 0) {\n return;\n }\n\n cbParams.axisDim = axisItem.axisDim;\n cbParams.axisIndex = axisItem.axisIndex;\n cbParams.axisType = axisItem.axisType;\n cbParams.axisId = axisItem.axisId;\n cbParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, {\n value: axisValue\n });\n cbParams.axisValueLabel = axisValueLabel; // Pre-create marker style for makers. Users can assemble richText\n // text in `formatter` callback and use those markers style.\n\n cbParams.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(cbParams.color), renderMode);\n var seriesTooltipResult = normalizeTooltipFormatResult(series.formatTooltip(dataIndex, true, null));\n var frag = seriesTooltipResult.frag;\n\n if (frag) {\n var valueFormatter = buildTooltipModel([series], globalTooltipModel).get('valueFormatter');\n axisSectionMarkup.blocks.push(valueFormatter ? extend({\n valueFormatter: valueFormatter\n }, frag) : frag);\n }\n\n if (seriesTooltipResult.text) {\n markupTextArrLegacy.push(seriesTooltipResult.text);\n }\n\n cbParamsList.push(cbParams);\n });\n });\n }); // In most cases, the second axis is displays upper on the first one.\n // So we reverse it to look better.\n\n articleMarkup.blocks.reverse();\n markupTextArrLegacy.reverse();\n var positionExpr = e.position;\n var orderMode = singleTooltipModel.get('order');\n var builtMarkupText = buildTooltipMarkup(articleMarkup, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'), singleTooltipModel.get('textStyle'));\n builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText);\n var blockBreak = renderMode === 'richText' ? '\\n\\n' : '<br/>';\n var allMarkupText = markupTextArrLegacy.join(blockBreak);\n\n this._showOrMove(singleTooltipModel, function () {\n if (this._updateContentNotChangedOnAxis(dataByCoordSys, cbParamsList)) {\n this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, cbParamsList);\n } else {\n this._showTooltipContent(singleTooltipModel, allMarkupText, cbParamsList, Math.random() + '', point[0], point[1], positionExpr, null, markupStyleCreator);\n }\n }); // Do not trigger events here, because this branch only be entered\n // from dispatchAction.\n\n };\n\n TooltipView.prototype._showSeriesItemTooltip = function (e, dispatcher, dispatchAction) {\n var ecModel = this._ecModel;\n var ecData = getECData(dispatcher); // Use dataModel in element if possible\n // Used when mouseover on a element like markPoint or edge\n // In which case, the data is not main data in series.\n\n var seriesIndex = ecData.seriesIndex;\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex); // For example, graph link.\n\n var dataModel = ecData.dataModel || seriesModel;\n var dataIndex = ecData.dataIndex;\n var dataType = ecData.dataType;\n var data = dataModel.getData(dataType);\n var renderMode = this._renderMode;\n var positionDefault = e.positionDefault;\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model], this._tooltipModel, positionDefault ? {\n position: positionDefault\n } : null);\n var tooltipTrigger = tooltipModel.get('trigger');\n\n if (tooltipTrigger != null && tooltipTrigger !== 'item') {\n return;\n }\n\n var params = dataModel.getDataParams(dataIndex, dataType);\n var markupStyleCreator = new TooltipMarkupStyleCreator(); // Pre-create marker style for makers. Users can assemble richText\n // text in `formatter` callback and use those markers style.\n\n params.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(params.color), renderMode);\n var seriesTooltipResult = normalizeTooltipFormatResult(dataModel.formatTooltip(dataIndex, false, dataType));\n var orderMode = tooltipModel.get('order');\n var valueFormatter = tooltipModel.get('valueFormatter');\n var frag = seriesTooltipResult.frag;\n var markupText = frag ? buildTooltipMarkup(valueFormatter ? extend({\n valueFormatter: valueFormatter\n }, frag) : frag, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'), tooltipModel.get('textStyle')) : seriesTooltipResult.text;\n var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\n\n this._showOrMove(tooltipModel, function () {\n this._showTooltipContent(tooltipModel, markupText, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markupStyleCreator);\n }); // FIXME\n // duplicated showtip if manuallyShowTip is called from dispatchAction.\n\n\n dispatchAction({\n type: 'showTip',\n dataIndexInside: dataIndex,\n dataIndex: data.getRawIndex(dataIndex),\n seriesIndex: seriesIndex,\n from: this.uid\n });\n };\n\n TooltipView.prototype._showComponentItemTooltip = function (e, el, dispatchAction) {\n var ecData = getECData(el);\n var tooltipConfig = ecData.tooltipConfig;\n var tooltipOpt = tooltipConfig.option || {};\n\n if (isString(tooltipOpt)) {\n var content = tooltipOpt;\n tooltipOpt = {\n content: content,\n // Fixed formatter\n formatter: content\n };\n }\n\n var tooltipModelCascade = [tooltipOpt];\n\n var cmpt = this._ecModel.getComponent(ecData.componentMainType, ecData.componentIndex);\n\n if (cmpt) {\n tooltipModelCascade.push(cmpt);\n } // In most cases, component tooltip formatter has different params with series tooltip formatter,\n // so that they cannot share the same formatter. Since the global tooltip formatter is used for series\n // by convention, we do not use it as the default formatter for component.\n\n\n tooltipModelCascade.push({\n formatter: tooltipOpt.content\n });\n var positionDefault = e.positionDefault;\n var subTooltipModel = buildTooltipModel(tooltipModelCascade, this._tooltipModel, positionDefault ? {\n position: positionDefault\n } : null);\n var defaultHtml = subTooltipModel.get('content');\n var asyncTicket = Math.random() + ''; // PENDING: this case do not support richText style yet.\n\n var markupStyleCreator = new TooltipMarkupStyleCreator(); // Do not check whether `trigger` is 'none' here, because `trigger`\n // only works on coordinate system. In fact, we have not found case\n // that requires setting `trigger` nothing on component yet.\n\n this._showOrMove(subTooltipModel, function () {\n // Use formatterParams from element defined in component\n // Avoid users modify it.\n var formatterParams = clone(subTooltipModel.get('formatterParams') || {});\n\n this._showTooltipContent(subTooltipModel, defaultHtml, formatterParams, asyncTicket, e.offsetX, e.offsetY, e.position, el, markupStyleCreator);\n }); // If not dispatch showTip, tip may be hide triggered by axis.\n\n\n dispatchAction({\n type: 'showTip',\n from: this.uid\n });\n };\n\n TooltipView.prototype._showTooltipContent = function ( // Use Model<TooltipOption> insteadof TooltipModel because this model may be from series or other options.\n // Instead of top level tooltip.\n tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markupStyleCreator) {\n // Reset ticket\n this._ticket = '';\n\n if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\n return;\n }\n\n var tooltipContent = this._tooltipContent;\n tooltipContent.setEnterable(tooltipModel.get('enterable'));\n var formatter = tooltipModel.get('formatter');\n positionExpr = positionExpr || tooltipModel.get('position');\n var html = defaultHtml;\n\n var nearPoint = this._getNearestPoint([x, y], params, tooltipModel.get('trigger'), tooltipModel.get('borderColor'));\n\n var nearPointColor = nearPoint.color;\n\n if (formatter) {\n if (isString(formatter)) {\n var useUTC = tooltipModel.ecModel.get('useUTC');\n var params0 = isArray(params) ? params[0] : params;\n var isTimeAxis = params0 && params0.axisType && params0.axisType.indexOf('time') >= 0;\n html = formatter;\n\n if (isTimeAxis) {\n html = timeFormat(params0.axisValue, html, useUTC);\n }\n\n html = formatTpl(html, params, true);\n } else if (isFunction(formatter)) {\n var callback = bind(function (cbTicket, html) {\n if (cbTicket === this._ticket) {\n tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n }\n }, this);\n this._ticket = asyncTicket;\n html = formatter(params, asyncTicket, callback);\n } else {\n html = formatter;\n }\n }\n\n tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr);\n tooltipContent.show(tooltipModel, nearPointColor);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n };\n\n TooltipView.prototype._getNearestPoint = function (point, tooltipDataParams, trigger, borderColor) {\n if (trigger === 'axis' || isArray(tooltipDataParams)) {\n return {\n color: borderColor || (this._renderMode === 'html' ? '#fff' : 'none')\n };\n }\n\n if (!isArray(tooltipDataParams)) {\n return {\n color: borderColor || tooltipDataParams.color || tooltipDataParams.borderColor\n };\n }\n };\n\n TooltipView.prototype._updatePosition = function (tooltipModel, positionExpr, x, // Mouse x\n y, // Mouse y\n content, params, el) {\n var viewWidth = this._api.getWidth();\n\n var viewHeight = this._api.getHeight();\n\n positionExpr = positionExpr || tooltipModel.get('position');\n var contentSize = content.getSize();\n var align = tooltipModel.get('align');\n var vAlign = tooltipModel.get('verticalAlign');\n var rect = el && el.getBoundingRect().clone();\n el && rect.applyTransform(el.transform);\n\n if (isFunction(positionExpr)) {\n // Callback of position can be an array or a string specify the position\n positionExpr = positionExpr([x, y], params, content.el, rect, {\n viewSize: [viewWidth, viewHeight],\n contentSize: contentSize.slice()\n });\n }\n\n if (isArray(positionExpr)) {\n x = parsePercent(positionExpr[0], viewWidth);\n y = parsePercent(positionExpr[1], viewHeight);\n } else if (isObject(positionExpr)) {\n var boxLayoutPosition = positionExpr;\n boxLayoutPosition.width = contentSize[0];\n boxLayoutPosition.height = contentSize[1];\n var layoutRect = getLayoutRect(boxLayoutPosition, {\n width: viewWidth,\n height: viewHeight\n });\n x = layoutRect.x;\n y = layoutRect.y;\n align = null; // When positionExpr is left/top/right/bottom,\n // align and verticalAlign will not work.\n\n vAlign = null;\n } // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element\n else if (isString(positionExpr) && el) {\n var pos = calcTooltipPosition(positionExpr, rect, contentSize, tooltipModel.get('borderWidth'));\n x = pos[0];\n y = pos[1];\n } else {\n var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\n x = pos[0];\n y = pos[1];\n }\n\n align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\n vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\n\n if (shouldTooltipConfine(tooltipModel)) {\n var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);\n x = pos[0];\n y = pos[1];\n }\n\n content.moveTo(x, y);\n }; // FIXME\n // Should we remove this but leave this to user?\n\n\n TooltipView.prototype._updateContentNotChangedOnAxis = function (dataByCoordSys, cbParamsList) {\n var lastCoordSys = this._lastDataByCoordSys;\n var lastCbParamsList = this._cbParamsList;\n var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;\n contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\n var lastDataByAxis = lastItemCoordSys.dataByAxis || [];\n var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\n var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\n contentNotChanged = contentNotChanged && lastDataByAxis.length === thisDataByAxis.length;\n contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) {\n var thisItem = thisDataByAxis[indexAxis] || {};\n var lastIndices = lastItem.seriesDataIndices || [];\n var newIndices = thisItem.seriesDataIndices || [];\n contentNotChanged = contentNotChanged && lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;\n contentNotChanged && each(lastIndices, function (lastIdxItem, j) {\n var newIdxItem = newIndices[j];\n contentNotChanged = contentNotChanged && lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;\n }); // check is cbParams data value changed\n\n lastCbParamsList && each(lastItem.seriesDataIndices, function (idxItem) {\n var seriesIdx = idxItem.seriesIndex;\n var cbParams = cbParamsList[seriesIdx];\n var lastCbParams = lastCbParamsList[seriesIdx];\n\n if (cbParams && lastCbParams && lastCbParams.data !== cbParams.data) {\n contentNotChanged = false;\n }\n });\n });\n });\n this._lastDataByCoordSys = dataByCoordSys;\n this._cbParamsList = cbParamsList;\n return !!contentNotChanged;\n };\n\n TooltipView.prototype._hide = function (dispatchAction) {\n // Do not directly hideLater here, because this behavior may be prevented\n // in dispatchAction when showTip is dispatched.\n // FIXME\n // duplicated hideTip if manuallyHideTip is called from dispatchAction.\n this._lastDataByCoordSys = null;\n dispatchAction({\n type: 'hideTip',\n from: this.uid\n });\n };\n\n TooltipView.prototype.dispose = function (ecModel, api) {\n if (env.node || !api.getDom()) {\n return;\n }\n\n clear(this, '_updatePosition');\n\n this._tooltipContent.dispose();\n\n globalListener.unregister('itemTooltip', api);\n };\n\n TooltipView.type = 'tooltip';\n return TooltipView;\n}(ComponentView);\n/**\n * From top to bottom. (the last one should be globalTooltipModel);\n */\n\n\nfunction buildTooltipModel(modelCascade, globalTooltipModel, defaultTooltipOption) {\n // Last is always tooltip model.\n var ecModel = globalTooltipModel.ecModel;\n var resultModel;\n\n if (defaultTooltipOption) {\n resultModel = new Model(defaultTooltipOption, ecModel, ecModel);\n resultModel = new Model(globalTooltipModel.option, resultModel, ecModel);\n } else {\n resultModel = globalTooltipModel;\n }\n\n for (var i = modelCascade.length - 1; i >= 0; i--) {\n var tooltipOpt = modelCascade[i];\n\n if (tooltipOpt) {\n if (tooltipOpt instanceof Model) {\n tooltipOpt = tooltipOpt.get('tooltip', true);\n } // In each data item tooltip can be simply write:\n // {\n // value: 10,\n // tooltip: 'Something you need to know'\n // }\n\n\n if (isString(tooltipOpt)) {\n tooltipOpt = {\n formatter: tooltipOpt\n };\n }\n\n if (tooltipOpt) {\n resultModel = new Model(tooltipOpt, resultModel, ecModel);\n }\n }\n }\n\n return resultModel;\n}\n\nfunction makeDispatchAction(payload, api) {\n return payload.dispatchAction || bind(api.dispatchAction, api);\n}\n\nfunction refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\n var size = content.getSize();\n var width = size[0];\n var height = size[1];\n\n if (gapH != null) {\n // Add extra 2 pixels for this case:\n // At present the \"values\" in default tooltip are using CSS `float: right`.\n // When the right edge of the tooltip box is on the right side of the\n // viewport, the `float` layout might push the \"values\" to the second line.\n if (x + width + gapH + 2 > viewWidth) {\n x -= width + gapH;\n } else {\n x += gapH;\n }\n }\n\n if (gapV != null) {\n if (y + height + gapV > viewHeight) {\n y -= height + gapV;\n } else {\n y += gapV;\n }\n }\n\n return [x, y];\n}\n\nfunction confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\n var size = content.getSize();\n var width = size[0];\n var height = size[1];\n x = Math.min(x + width, viewWidth) - width;\n y = Math.min(y + height, viewHeight) - height;\n x = Math.max(x, 0);\n y = Math.max(y, 0);\n return [x, y];\n}\n\nfunction calcTooltipPosition(position, rect, contentSize, borderWidth) {\n var domWidth = contentSize[0];\n var domHeight = contentSize[1];\n var offset = Math.ceil(Math.SQRT2 * borderWidth) + 8;\n var x = 0;\n var y = 0;\n var rectWidth = rect.width;\n var rectHeight = rect.height;\n\n switch (position) {\n case 'inside':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'top':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y - domHeight - offset;\n break;\n\n case 'bottom':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight + offset;\n break;\n\n case 'left':\n x = rect.x - domWidth - offset;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'right':\n x = rect.x + rectWidth + offset;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n }\n\n return [x, y];\n}\n\nfunction isCenterAlign(align) {\n return align === 'center' || align === 'middle';\n}\n/**\n * Find target component by payload like:\n * ```js\n * { legendId: 'some_id', name: 'xxx' }\n * { toolboxIndex: 1, name: 'xxx' }\n * { geoName: 'some_name', name: 'xxx' }\n * ```\n * PENDING: at present only\n *\n * If not found, return null/undefined.\n */\n\n\nfunction findComponentReference(payload, ecModel, api) {\n var queryOptionMap = preParseFinder(payload).queryOptionMap;\n var componentMainType = queryOptionMap.keys()[0];\n\n if (!componentMainType || componentMainType === 'series') {\n return;\n }\n\n var queryResult = queryReferringComponents(ecModel, componentMainType, queryOptionMap.get(componentMainType), {\n useDefault: false,\n enableAll: false,\n enableNone: false\n });\n var model = queryResult.models[0];\n\n if (!model) {\n return;\n }\n\n var view = api.getViewOfComponentModel(model);\n var el;\n view.group.traverse(function (subEl) {\n var tooltipConfig = getECData(subEl).tooltipConfig;\n\n if (tooltipConfig && tooltipConfig.name === payload.name) {\n el = subEl;\n return true; // stop\n }\n });\n\n if (el) {\n return {\n componentMainType: componentMainType,\n componentIndex: model.componentIndex,\n el: el\n };\n }\n}\n\nexport default TooltipView;"]},"metadata":{},"sourceType":"module"}