"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Tooltip = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _utils = require("@kbn/visualizations-plugin/common/utils"); var _react = _interopRequireDefault(require("react")); var _helpers = require("../../helpers"); var _endzone_tooltip_header = require("./endzone_tooltip_header"); var _tooltip_row = require("./tooltip_row"); var _utils2 = require("./utils"); require("./tooltip.scss"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License * 2.0 and the Server Side Public License, v 1; you may not use this file except * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ const Tooltip = ({ header, values, fieldFormats, titles = {}, formatFactory, formattedDatatables, splitAccessors, xDomain, layers }) => { var _layers$find; const pickedValue = values.find(({ isHighlighted }) => isHighlighted); if (!pickedValue) { return null; } const data = []; const seriesIdentifier = pickedValue.seriesIdentifier; const { layerId, xAccessor, yAccessors } = (0, _helpers.getMetaFromSeriesId)(seriesIdentifier.specId); const { formattedColumns, table } = formattedDatatables[layerId]; const layerTitles = titles[layerId]; const layerFormats = fieldFormats[layerId]; const markSizeAccessor = (_layers$find = layers.find(layer => layer.layerId === layerId)) === null || _layers$find === void 0 ? void 0 : _layers$find.markSizeAccessor; const markSizeColumnId = markSizeAccessor ? (0, _utils.getAccessorByDimension)(markSizeAccessor, table.columns) : undefined; let headerFormatter; if (header && xAccessor) { var _layerTitles$xTitles; headerFormatter = formattedColumns[xAccessor] ? null : formatFactory(layerFormats.xAccessors[xAccessor]); data.push({ label: layerTitles === null || layerTitles === void 0 ? void 0 : (_layerTitles$xTitles = layerTitles.xTitles) === null || _layerTitles$xTitles === void 0 ? void 0 : _layerTitles$xTitles[xAccessor], value: headerFormatter ? headerFormatter.convert(header.value) : `${header.value}` }); } const tooltipYAccessor = yAccessors.includes(seriesIdentifier.yAccessor) ? seriesIdentifier.yAccessor : null; if (tooltipYAccessor) { var _layerTitles$yTitles; const yFormatter = formatFactory(layerFormats.yAccessors[tooltipYAccessor]); data.push({ label: layerTitles === null || layerTitles === void 0 ? void 0 : (_layerTitles$yTitles = layerTitles.yTitles) === null || _layerTitles$yTitles === void 0 ? void 0 : _layerTitles$yTitles[tooltipYAccessor], value: yFormatter ? yFormatter.convert(pickedValue.value) : `${pickedValue.value}` }); } if (markSizeColumnId && pickedValue.formattedMarkValue) { var _layerTitles$markSize; data.push({ label: layerTitles === null || layerTitles === void 0 ? void 0 : (_layerTitles$markSize = layerTitles.markSizeTitles) === null || _layerTitles$markSize === void 0 ? void 0 : _layerTitles$markSize[markSizeColumnId], value: pickedValue.formattedMarkValue }); } seriesIdentifier.splitAccessors.forEach((splitValue, key) => { var _layerTitles$splitSer; const splitSeriesFormatter = formattedColumns[key] ? null : layerFormats.splitSeriesAccessors[key].formatter; const label = layerTitles === null || layerTitles === void 0 ? void 0 : (_layerTitles$splitSer = layerTitles.splitSeriesTitles) === null || _layerTitles$splitSer === void 0 ? void 0 : _layerTitles$splitSer[key]; const value = splitSeriesFormatter ? splitSeriesFormatter.convert(splitValue) : `${splitValue}`; data.push({ label, value }); }); if (splitAccessors !== null && splitAccessors !== void 0 && splitAccessors.splitColumnAccessor && seriesIdentifier.smHorizontalAccessorValue !== undefined) { var _layerTitles$splitCol; data.push({ label: layerTitles === null || layerTitles === void 0 ? void 0 : (_layerTitles$splitCol = layerTitles.splitColumnTitles) === null || _layerTitles$splitCol === void 0 ? void 0 : _layerTitles$splitCol[splitAccessors === null || splitAccessors === void 0 ? void 0 : splitAccessors.splitColumnAccessor], value: `${seriesIdentifier.smHorizontalAccessorValue}` }); } if (splitAccessors !== null && splitAccessors !== void 0 && splitAccessors.splitRowAccessor && seriesIdentifier.smVerticalAccessorValue !== undefined) { var _layerTitles$splitRow; data.push({ label: layerTitles === null || layerTitles === void 0 ? void 0 : (_layerTitles$splitRow = layerTitles.splitRowTitles) === null || _layerTitles$splitRow === void 0 ? void 0 : _layerTitles$splitRow[splitAccessors === null || splitAccessors === void 0 ? void 0 : splitAccessors.splitRowAccessor], value: `${seriesIdentifier.smVerticalAccessorValue}` }); } const tooltipRows = data.map((tooltipRow, index) => /*#__PURE__*/_react.default.createElement(_tooltip_row.TooltipRow, (0, _extends2.default)({}, tooltipRow, { key: `${tooltipRow.label}-${tooltipRow.value}-${index}` }))); const renderEndzoneTooltip = header ? (0, _utils2.isEndzoneBucket)(header === null || header === void 0 ? void 0 : header.value, xDomain) : false; return /*#__PURE__*/_react.default.createElement("div", { className: "detailedTooltip" }, renderEndzoneTooltip && /*#__PURE__*/_react.default.createElement("div", { className: "detailedTooltip__header" }, /*#__PURE__*/_react.default.createElement(_endzone_tooltip_header.EndzoneTooltipHeader, null)), /*#__PURE__*/_react.default.createElement("table", null, /*#__PURE__*/_react.default.createElement("tbody", null, tooltipRows))); }; exports.Tooltip = Tooltip;