import { jsx as _jsx } from "react/jsx-runtime";
import { createElement as _createElement } from "react";
import { Menu } from '../../Menu';
import { MenuItem } from '../../MenuItem';
import { TOOLTIP_PLACEMENT } from '../constants';
import { useBlockingActions } from '../hooks/useBlockingActions';
import { useSecondaryActionsMenu } from '../SecondaryActionsMenuContext';
import { DataGridSecondaryActionsSkeleton } from './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}
 * />
 * ```
 */
export const DataGridSecondaryActions = ({ actions, isLoading, }) => {
    const { onActionClick } = useBlockingActions(actions);
    const { open, anchorEl } = useSecondaryActionsMenu();
    const renderActions = () => {
        return actions?.map((action) => {
            const { onClick, name, loading, isBlockingOperation, loadingNote, ...restProps } = action;
            return (_createElement(MenuItem, { ...restProps, key: name, tooltipPlacement: TOOLTIP_PLACEMENT.secondaryActions, onClick: onActionClick(onClick) }, name));
        });
    };
    return (_jsx(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 ? _jsx(DataGridSecondaryActionsSkeleton, {}) : renderActions() }));
};
