"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AlertsTreemapPanel = void 0; var _eui = require("@elastic/eui"); var _esQuery = require("@kbn/es-query"); var _react = _interopRequireWildcard(require("react")); var _uuid = require("uuid"); var _use_global_time = require("../../containers/use_global_time"); var _alerts_treemap = require("../alerts_treemap"); var _components = require("../../../detections/components/alerts_kpis/common/components"); var _hooks = require("../../../detections/components/alerts_kpis/common/hooks"); var _use_query = require("../../../detections/containers/detection_engine/alerts/use_query"); var _constants = require("../../../detections/containers/detection_engine/alerts/constants"); var _field_selection = require("../field_selection"); var _header_section = require("../header_section"); var _inspect = require("../inspect"); var _query = require("../alerts_treemap/query"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } /* * 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; you may not use this file except in compliance with the Elastic License * 2.0. */ const DEFAULT_HEIGHT = _alerts_treemap.DEFAULT_MIN_CHART_HEIGHT + 134; // px const COLLAPSED_HEIGHT = 64; // px const ALERTS_TREEMAP_ID = 'alerts-treemap'; const AlertsTreemapPanelComponent = ({ addFilter, alignHeader, chartOptionsContextMenu, inspectTitle, isPanelExpanded, filters, height = DEFAULT_HEIGHT, query, riskSubAggregationField, runtimeMappings, setIsPanelExpanded, setStackByField0, setStackByField0ComboboxInputRef, setStackByField1, setStackByField1ComboboxInputRef, signalIndexName, stackByField0, stackByField0ComboboxRef, stackByField1, stackByField1ComboboxRef, stackByWidth, title }) => { const { to, from, deleteQuery, setQuery } = (0, _use_global_time.useGlobalTime)(); // create a unique, but stable (across re-renders) query id const uniqueQueryId = (0, _react.useMemo)(() => `${ALERTS_TREEMAP_ID}-${(0, _uuid.v4)()}`, []); const additionalFilters = (0, _react.useMemo)(() => { try { var _filters$filter; return [(0, _esQuery.buildEsQuery)(undefined, query != null ? [query] : [], (_filters$filter = filters === null || filters === void 0 ? void 0 : filters.filter(f => f.meta.disabled === false)) !== null && _filters$filter !== void 0 ? _filters$filter : [])]; } catch (e) { return []; } }, [query, filters]); const { data: alertsData, loading: isLoadingAlerts, refetch, request, response, setQuery: setAlertsQuery } = (0, _use_query.useQueryAlerts)({ query: (0, _query.getAlertsRiskQuery)({ additionalFilters, from, riskSubAggregationField, runtimeMappings, stackByField0, stackByField1, to }), skip: !isPanelExpanded, indexName: signalIndexName, queryName: _constants.ALERTS_QUERY_NAMES.TREE_MAP }); (0, _react.useEffect)(() => { setAlertsQuery((0, _query.getAlertsRiskQuery)({ additionalFilters, from, riskSubAggregationField, runtimeMappings, stackByField0, stackByField1, to })); }, [additionalFilters, from, riskSubAggregationField, runtimeMappings, setAlertsQuery, stackByField0, stackByField1, to]); (0, _hooks.useInspectButton)({ deleteQuery, loading: isLoadingAlerts, response, setQuery, refetch, request, uniqueQueryId }); return /*#__PURE__*/_react.default.createElement(_inspect.InspectButtonContainer, null, /*#__PURE__*/_react.default.createElement(_components.KpiPanel, { className: "eui-yScroll", "data-test-subj": "treemapPanel", hasBorder: true, height: isPanelExpanded ? height : COLLAPSED_HEIGHT, $overflowY: isPanelExpanded ? 'auto' : 'hidden', $toggleStatus: true }, /*#__PURE__*/_react.default.createElement(_header_section.HeaderSection, { alignHeader: alignHeader, hideSubtitle: true, id: uniqueQueryId, inspectTitle: inspectTitle, outerDirection: "row", showInspectButton: chartOptionsContextMenu == null, title: title, titleSize: "s", toggleQuery: setIsPanelExpanded, toggleStatus: isPanelExpanded }, isPanelExpanded && /*#__PURE__*/_react.default.createElement(_field_selection.FieldSelection, { chartOptionsContextMenu: chartOptionsContextMenu, setStackByField0: setStackByField0, setStackByField0ComboboxInputRef: setStackByField0ComboboxInputRef, setStackByField1: setStackByField1, setStackByField1ComboboxInputRef: setStackByField1ComboboxInputRef, stackByField0: stackByField0, stackByField0ComboboxRef: stackByField0ComboboxRef, stackByField1: stackByField1, stackByField1ComboboxRef: stackByField1ComboboxRef, stackByWidth: stackByWidth, uniqueQueryId: uniqueQueryId })), isLoadingAlerts && isPanelExpanded ? /*#__PURE__*/_react.default.createElement(_eui.EuiProgress, { color: "accent", "data-test-subj": "progress", position: "absolute", size: "xs" }) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, alertsData != null && isPanelExpanded && /*#__PURE__*/_react.default.createElement(_alerts_treemap.AlertsTreemap, { addFilter: addFilter, data: alertsData, maxBuckets: _query.DEFAULT_STACK_BY_FIELD0_SIZE, stackByField0: stackByField0, stackByField1: stackByField1 })))); }; AlertsTreemapPanelComponent.displayName = 'AlertsTreemapPanelComponent'; const AlertsTreemapPanel = /*#__PURE__*/_react.default.memo(AlertsTreemapPanelComponent); exports.AlertsTreemapPanel = AlertsTreemapPanel;