"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DataGridSecondaryActions = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const Menu_1 = require("../../Menu");
const MenuItem_1 = require("../../MenuItem");
const constants_1 = require("../constants");
const useBlockingActions_1 = require("../hooks/useBlockingActions");
const SecondaryActionsMenuContext_1 = require("../SecondaryActionsMenuContext");
const DataGridSecondaryActionsSkeleton_1 = require("./DataGridSecondaryActionsSkeleton");
/**
 * Компонент для отображения дополнительных действий в выпадающем меню ячейки таблицы DataGrid.
 *
 * Вторичные действия отображаются в выпадающем меню (dropdown) и предназначены для менее
 * используемых операций, которые не требуют постоянного отображения в интерфейсе.
 *
 * @remarks
 * - Компонент поддерживает состояние загрузки (`isLoading`), при котором отображается скелетон вместо действий
 * - Автоматически обрабатывает блокирующие операции, что предотвращает одновременное выполнение нескольких действий
 * - Меню привязывается к кнопке "три точки"
 * - Состояние меню (`open`, `anchorEl`) берется из `SecondaryActionsMenuContext`, не требуется прокидывать пропсы вручную
 *
 * @example
 * Использование с контекстом (рекомендуется):
 * ```tsx
 * <DataGridSecondaryActions
 *   actions={[
 *     { name: 'Дублировать', onClick: handleDuplicate },
 *     { name: 'Архивировать', onClick: handleArchive, disabled: !canArchive },
 *     { name: 'Экспортировать', onClick: handleExport }
 *   ]}
 *   isLoading={isActionsLoading}
 * />
 * ```
 *
 * @example
 * Использование с явными пропсами (для обратной совместимости):
 * ```tsx
 * <DataGridSecondaryActions
 *   actions={actions}
 *   open={isMenuOpen}
 *   anchorEl={buttonRef.current}
 * />
 * ```
 */
const DataGridSecondaryActions = ({ actions, isLoading, }) => {
    const { onActionClick } = (0, useBlockingActions_1.useBlockingActions)(actions);
    const { open, anchorEl } = (0, SecondaryActionsMenuContext_1.useSecondaryActionsMenu)();
    const renderActions = () => {
        return actions?.map((action) => {
            const { onClick, name, loading, isBlockingOperation, loadingNote, ...restProps } = action;
            return ((0, react_1.createElement)(MenuItem_1.MenuItem, { ...restProps, key: name, tooltipPlacement: constants_1.TOOLTIP_PLACEMENT.secondaryActions, onClick: onActionClick(onClick) }, name));
        });
    };
    return ((0, jsx_runtime_1.jsx)(Menu_1.Menu, { open: open, anchorEl: anchorEl, title: "\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F", children: isLoading ? (0, jsx_runtime_1.jsx)(DataGridSecondaryActionsSkeleton_1.DataGridSecondaryActionsSkeleton, {}) : renderActions() }));
};
exports.DataGridSecondaryActions = DataGridSecondaryActions;
