import {type ActionParameters, type AnyActionDefinition, type MaybeAdminAction, type ResolvedAction} from '../../types'; import {type AdminAction} from '../../data'; import {type ActionContext, executeAction} from '../../actions'; import {getActionIdentifier} from './getActionIdentifier'; import {createActionContext} from './createActionContext'; type CreateAction = (action: AnyActionDefinition) => ResolvedAction; export const createAction: CreateAction = (action) => { const context = createActionContext(action as AnyActionDefinition); return { id: getActionIdentifier(action), icon: action.icon, label: action.label, variant: action.variant, disabled: action.disabled, standalone: action.standalone, handler: async (parameters: ActionParameters) => { await executeAction({...context, parameters} as ActionContext); }, }; };