UNPKG

vlibras-player-webjs

Version:

Biblioteca JavaScript moderna para integração do VLibras Player com React, Vue, Angular e vanilla JS

142 lines 3.99 kB
/** * Sistema de Plugins Extensível para VLibras * Permite extensão da funcionalidade base através de plugins */ import { VLibrasPlayer } from '../../core/player/VLibrasPlayer'; /** * Interface base para plugins VLibras */ export interface VLibrasPlugin { readonly name: string; readonly version: string; readonly description?: string; readonly dependencies?: string[]; readonly category?: 'analytics' | 'accessibility' | 'ui' | 'performance' | 'integration' | 'utility'; setup(player: VLibrasPlayer, config?: any): void | Promise<void>; teardown?(player: VLibrasPlayer): void | Promise<void>; onPlayerReady?(player: VLibrasPlayer): void; onTranslation?(text: string, player: VLibrasPlayer): void; onError?(error: Error, player: VLibrasPlayer): void; } /** * Resultado da validação de plugin */ export interface PluginValidationResult { valid: boolean; errors: string[]; warnings: string[]; } /** * Informações de plugin registrado */ export interface RegisteredPluginInfo { plugin: VLibrasPlugin; config?: any; active: boolean; setupTime?: number; errorCount: number; lastError?: Error; } /** * Gerenciador de plugins do VLibras */ export declare class VLibrasPluginManager { private static instance; private plugins; private eventEmitter; private constructor(); static getInstance(): VLibrasPluginManager; /** * Registra um plugin */ register(plugin: VLibrasPlugin, config?: any): Promise<void>; /** * Ativa um plugin para um player específico */ activate(pluginName: string, player: VLibrasPlayer): Promise<void>; /** * Desativa um plugin */ deactivate(pluginName: string, player: VLibrasPlayer): Promise<void>; /** * Lista plugins registrados */ list(): RegisteredPluginInfo[]; /** * Lista plugins por categoria */ listByCategory(category: VLibrasPlugin['category']): RegisteredPluginInfo[]; /** * Obtém informações de um plugin específico */ getPluginInfo(name: string): RegisteredPluginInfo | undefined; /** * Valida um plugin */ private validatePlugin; /** * Verifica dependências do plugin */ private checkDependencies; /** * Ativa plugins automaticamente baseado em configuração */ autoActivate(player: VLibrasPlayer, config?: { enabledPlugins?: string[]; }): Promise<void>; /** * Obtém estatísticas dos plugins */ getStats(): { total: number; active: number; inactive: number; withErrors: number; byCategory: Record<string, number>; avgSetupTime: number; }; /** * Adiciona listener para eventos de plugins */ on(event: string, callback: Function): void; /** * Remove todos os plugins */ clear(): void; } /** * Plugin de Analytics simples */ export declare const AnalyticsPlugin: VLibrasPlugin; export declare const AccessibilityPlugin: VLibrasPlugin; /** * Plugin de Performance Monitor */ export declare const PerformancePlugin: VLibrasPlugin; /** * Instância singleton do gerenciador */ export declare const vlibrasPluginManager: VLibrasPluginManager; /** * API simplificada para uso direto */ export declare const VLibrasPlugins: { register: (plugin: VLibrasPlugin, config?: any) => Promise<void>; activate: (name: string, player: VLibrasPlayer) => Promise<void>; deactivate: (name: string, player: VLibrasPlayer) => Promise<void>; list: () => RegisteredPluginInfo[]; stats: () => { total: number; active: number; inactive: number; withErrors: number; byCategory: Record<string, number>; avgSetupTime: number; }; builtIn: { analytics: VLibrasPlugin; accessibility: VLibrasPlugin; performance: VLibrasPlugin; }; }; //# sourceMappingURL=VLibrasPlugins.d.ts.map