UNPKG

@gamesberry/karmyc-core

Version:

A flexible and powerful layout management system for React applications

94 lines (93 loc) 2.68 kB
import { Action, IActionPlugin, IActionRegistry, IActionRegistryOptions, IActionValidationResult, TActionValidator } from '../types/actions'; /** * Métadonnées d'une action. */ export interface ActionMetadata { menuType?: string; label?: string; icon?: string; isEnabled?: () => boolean; isVisible?: () => boolean; order?: number; actionType?: string; } /** * Handler d'action. */ export interface ActionHandler { (params: any): void; } /** * Action Registry * Gère l'enregistrement et l'exécution des actions et plugins */ declare class ActionRegistry implements IActionRegistry { private plugins; private validators; private actionHandlers; private menuActionsByType; private options; private actionTypes; constructor(options?: IActionRegistryOptions); /** * Enregistre un plugin d'action */ registerPlugin(plugin: IActionPlugin): void; /** * Désenregistre un plugin d'action */ unregisterPlugin(id: string): void; /** * Enregistre un validateur pour un type d'action */ registerValidator(actionType: string, validator: TActionValidator): void; /** * Désenregistre tous les validateurs pour un type d'action */ unregisterValidators(actionType: string): void; /** * Enregistre un gestionnaire d'action avec métadonnées optionnelles */ registerActionHandler(actionId: string, handler: ActionHandler, metadata?: ActionMetadata): void; /** * Désenregistre un gestionnaire d'action */ unregisterActionHandler(actionId: string): void; /** * Valide une action */ validateAction(action: Action): IActionValidationResult; /** * Gère une action en l'envoyant aux plugins pertinents */ handleAction(action: Action): void; /** * Exécute une action spécifique */ executeAction(actionId: string, params: any): boolean; /** * Récupère les actions disponibles pour un type de menu */ getMenuActions(menuType: string): Array<{ id: string; handler: ActionHandler; } & ActionMetadata>; /** * Enregistre un nouveau type d'action */ registerActionType(type: string): void; /** * Récupère tous les types d'actions enregistrés */ getActionTypes(): string[]; /** * Vérifie si un type d'action est enregistré */ hasActionType(type: string): boolean; /** * Génère la clé de traduction de la description d'une action */ getActionDescription(type: string): string; } export declare const actionRegistry: ActionRegistry; export { ActionRegistry };