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
TypeScript
/**
* 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