"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.EditPackPage = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _eui = require("@elastic/eui"); var _i18nReact = require("@kbn/i18n-react"); var _react = _interopRequireWildcard(require("react")); var _reactRouterDom = require("react-router-dom"); var _layouts = require("../../../components/layouts"); var _kibana = require("../../../common/lib/kibana"); var _form = require("../../../packs/form"); var _use_pack = require("../../../packs/use_pack"); var _use_delete_pack = require("../../../packs/use_delete_pack"); var _use_breadcrumbs = require("../../../common/hooks/use_breadcrumbs"); 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 EditPackPageComponent = () => { var _data$id, _data$name; const { packId } = (0, _reactRouterDom.useParams)(); const queryDetailsLinkProps = (0, _kibana.useRouterNavigate)(`packs/${packId}`); const [isDeleteModalVisible, setIsDeleteModalVisible] = (0, _react.useState)(false); const { isLoading, data } = (0, _use_pack.usePack)({ packId }); const deletePackMutation = (0, _use_delete_pack.useDeletePack)({ packId, withRedirect: true }); const isReadOnly = (0, _react.useMemo)(() => !!(data !== null && data !== void 0 && data.read_only), [data]); (0, _use_breadcrumbs.useBreadcrumbs)('pack_edit', { packId: (_data$id = data === null || data === void 0 ? void 0 : data.id) !== null && _data$id !== void 0 ? _data$id : '', packName: (_data$name = data === null || data === void 0 ? void 0 : data.name) !== null && _data$name !== void 0 ? _data$name : '' }); const handleCloseDeleteConfirmationModal = (0, _react.useCallback)(() => { setIsDeleteModalVisible(false); }, []); const handleDeleteClick = (0, _react.useCallback)(() => { setIsDeleteModalVisible(true); }, []); const handleDeleteConfirmClick = (0, _react.useCallback)(() => { deletePackMutation.mutateAsync().then(() => { handleCloseDeleteConfirmationModal(); }); }, [deletePackMutation, handleCloseDeleteConfirmationModal]); const LeftColumn = (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_eui.EuiFlexGroup, { alignItems: "flexStart", direction: "column", gutterSize: "m" }, /*#__PURE__*/_react.default.createElement(_eui.EuiFlexItem, null, /*#__PURE__*/_react.default.createElement(_eui.EuiButtonEmpty, (0, _extends2.default)({ iconType: "arrowLeft" }, queryDetailsLinkProps, { flush: "left", size: "xs" }), /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, { id: "xpack.osquery.editPack.viewPackListTitle", defaultMessage: "View {queryName} details" // eslint-disable-next-line react-perf/jsx-no-new-object-as-prop , values: { queryName: data === null || data === void 0 ? void 0 : data.name } }))), /*#__PURE__*/_react.default.createElement(_eui.EuiFlexItem, null, /*#__PURE__*/_react.default.createElement(_eui.EuiText, null, /*#__PURE__*/_react.default.createElement("h1", null, /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, { id: "xpack.osquery.editPack.pageTitle", defaultMessage: "Edit {queryName}" // eslint-disable-next-line react-perf/jsx-no-new-object-as-prop , values: { queryName: data === null || data === void 0 ? void 0 : data.name } }))))), [data === null || data === void 0 ? void 0 : data.name, queryDetailsLinkProps]); const RightColumn = (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_eui.EuiButton, { color: "danger", onClick: handleDeleteClick, iconType: "trash" }, /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, { id: "xpack.osquery.editPack.deletePackButtonLabel", defaultMessage: "Delete pack" })), [handleDeleteClick]); const HeaderContent = (0, _react.useMemo)(() => isReadOnly ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_eui.EuiSpacer, null), /*#__PURE__*/_react.default.createElement(_eui.EuiCallOut, null, /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, { id: "xpack.osquery.editPack.prebuiltPackModeDescription", defaultMessage: "This is a prebuilt Elastic pack. You can modify the scheduled agent policies, but you cannot edit queries in the pack." }))) : null, [isReadOnly]); if (isLoading) return null; return /*#__PURE__*/_react.default.createElement(_layouts.WithHeaderLayout, { leftColumn: LeftColumn, rightColumn: RightColumn, rightColumnGrow: false, headerChildren: HeaderContent }, !data ? /*#__PURE__*/_react.default.createElement(_eui.EuiSkeletonText, { lines: 10 }) : /*#__PURE__*/_react.default.createElement(_form.PackForm, { editMode: true, defaultValue: data, isReadOnly: isReadOnly }), isDeleteModalVisible ? /*#__PURE__*/_react.default.createElement(_eui.EuiConfirmModal, { title: /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, { id: "xpack.osquery.deletePack.confirmationModal.title", defaultMessage: "Are you sure you want to delete this pack?" }), onCancel: handleCloseDeleteConfirmationModal, onConfirm: handleDeleteConfirmClick, confirmButtonDisabled: deletePackMutation.isLoading, cancelButtonText: /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, { id: "xpack.osquery.deletePack.confirmationModal.cancelButtonLabel", defaultMessage: "Cancel" }), confirmButtonText: /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, { id: "xpack.osquery.deletePack.confirmationModal.confirmButtonLabel", defaultMessage: "Confirm" }), buttonColor: "danger", defaultFocusedButton: "confirm" }, /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, { id: "xpack.osquery.deletePack.confirmationModal.body", defaultMessage: "You're about to delete this pack. Are you sure you want to do this?" })) : null); }; const EditPackPage = /*#__PURE__*/_react.default.memo(EditPackPageComponent); exports.EditPackPage = EditPackPage;