"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.UserActions = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _eui = require("@elastic/eui"); var _react = _interopRequireWildcard(require("react")); var _react2 = require("@emotion/react"); var _add_comment = require("../add_comment"); var _navigation = require("../../common/navigation"); var _helpers = require("./helpers"); var _use_user_actions_handler = require("./use_user_actions_handler"); var _constants = require("./constants"); var _use_cases_context = require("../cases_context/use_cases_context"); var _user_tooltip = require("../user_profiles/user_tooltip"); var _username = require("../user_profiles/username"); var _hoverable_avatar = require("../user_profiles/hoverable_avatar"); var _user_actions_list = require("./user_actions_list"); var _use_user_actions_pagination = require("./use_user_actions_pagination"); var _use_user_actions_last_page = require("./use_user_actions_last_page"); var _show_more_button = require("./show_more_button"); var _use_last_page = require("./use_last_page"); 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 getIconsCss = (hasNextPage, euiTheme) => { const customSize = hasNextPage ? { showMoreSectionSize: euiTheme.size.xxxl, marginTopShowMoreSectionSize: euiTheme.size.xxxl, marginBottomShowMoreSectionSize: euiTheme.size.xxxl } : { showMoreSectionSize: euiTheme.size.m, marginTopShowMoreSectionSize: euiTheme.size.m, marginBottomShowMoreSectionSize: euiTheme.size.m }; const blockSize = `${customSize.showMoreSectionSize} + ${customSize.marginTopShowMoreSectionSize} + ${customSize.marginBottomShowMoreSectionSize}`; return ` .commentList--hasShowMore [class*='euiTimelineItem-center']:last-child:not(:only-child) > [class*='euiTimelineItemIcon-']::before { block-size: calc( 100% + ${blockSize} ); } .commentList--hasShowMore [class*='euiTimelineItem-center']:first-child > [class*='euiTimelineItemIcon-']::before { inset-block-start: 0%; block-size: calc( 100% + ${blockSize} ); } .commentList--hasShowMore [class*='euiTimelineItem-'] > [class*='euiTimelineItemIcon-']::before { block-size: calc( 100% + ${blockSize} ); } `; }; const UserActions = /*#__PURE__*/_react.default.memo(props => { const { currentUserProfile, data: caseData, statusActionButton, useFetchAlertData, userActivityQueryParams, userActionsStats } = props; const { detailName: caseId } = (0, _navigation.useCaseViewParams)(); const { lastPage } = (0, _use_last_page.useLastPage)({ userActivityQueryParams, userActionsStats }); const { infiniteCaseUserActions, isLoadingInfiniteUserActions, hasNextPage, fetchNextPage, showBottomList, isFetchingNextPage } = (0, _use_user_actions_pagination.useUserActionsPagination)({ userActivityQueryParams, caseId: caseData.id, lastPage }); const { euiTheme } = (0, _eui.useEuiTheme)(); const { isLoadingLastPageUserActions, lastPageUserActions } = (0, _use_user_actions_last_page.useLastPageUserActions)({ userActivityQueryParams, caseId: caseData.id, lastPage }); const alertIdsWithoutRuleInfo = (0, _react.useMemo)(() => (0, _helpers.getManualAlertIdsWithNoRuleId)(caseData.comments), [caseData.comments]); const [loadingAlertData, manualAlertsData] = useFetchAlertData(alertIdsWithoutRuleInfo); const { permissions } = (0, _use_cases_context.useCasesContext)(); // add-comment markdown is not visible in History filter const showCommentEditor = permissions.create && userActivityQueryParams.type !== 'action'; const { commentRefs, handleManageMarkdownEditId, handleManageQuote, handleUpdate, loadingCommentIds } = (0, _use_user_actions_handler.useUserActionsHandler)(); const MarkdownNewComment = (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_add_comment.AddComment, { id: _constants.NEW_COMMENT_ID, caseId: caseId, ref: element => commentRefs.current[_constants.NEW_COMMENT_ID] = element, onCommentPosted: handleUpdate, onCommentSaving: handleManageMarkdownEditId.bind(null, _constants.NEW_COMMENT_ID), showLoading: false, statusActionButton: statusActionButton }), [caseId, handleUpdate, handleManageMarkdownEditId, statusActionButton, commentRefs]); const bottomActions = showCommentEditor ? [{ username: /*#__PURE__*/_react.default.createElement(_user_tooltip.UserToolTip, { userInfo: currentUserProfile }, /*#__PURE__*/_react.default.createElement(_username.Username, { userInfo: currentUserProfile })), 'data-test-subj': 'add-comment', timelineAvatar: /*#__PURE__*/_react.default.createElement(_hoverable_avatar.HoverableAvatar, { userInfo: currentUserProfile }), className: 'isEdit', children: MarkdownNewComment }] : []; const handleShowMore = (0, _react.useCallback)(() => { if (fetchNextPage) { fetchNextPage(); } }, [fetchNextPage]); return /*#__PURE__*/_react.default.createElement(_eui.EuiSkeletonText, { lines: 8, "data-test-subj": "user-actions-loading", isLoading: isLoadingLastPageUserActions || loadingCommentIds.includes(_constants.NEW_COMMENT_ID) || isLoadingInfiniteUserActions }, /*#__PURE__*/_react.default.createElement(_eui.EuiFlexItem, showBottomList ? { css: (0, _react2.css)` ${getIconsCss(hasNextPage, euiTheme)} ` } : {}, /*#__PURE__*/_react.default.createElement(_user_actions_list.UserActionsList, (0, _extends2.default)({}, props, { caseUserActions: infiniteCaseUserActions, loadingAlertData: loadingAlertData, manualAlertsData: manualAlertsData, commentRefs: commentRefs, handleManageQuote: handleManageQuote, bottomActions: lastPage <= 1 ? bottomActions : [], isExpandable: true })), hasNextPage && /*#__PURE__*/_react.default.createElement(_show_more_button.ShowMoreButton, { onShowMoreClick: handleShowMore, isLoading: isFetchingNextPage }), lastPageUserActions !== null && lastPageUserActions !== void 0 && lastPageUserActions.length ? /*#__PURE__*/_react.default.createElement(_eui.EuiFlexItem, !hasNextPage ? { css: (0, _react2.css)` margin-top: 24px; ` } : {}, /*#__PURE__*/_react.default.createElement(_user_actions_list.UserActionsList, (0, _extends2.default)({}, props, { caseUserActions: lastPageUserActions, loadingAlertData: loadingAlertData, manualAlertsData: manualAlertsData, bottomActions: bottomActions, commentRefs: commentRefs, handleManageQuote: handleManageQuote }))) : null)); }); exports.UserActions = UserActions; UserActions.displayName = 'UserActions';