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

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