vlibras-player-webjs
Version:
Biblioteca JavaScript moderna para integração do VLibras Player com React, Vue, Angular e vanilla JS
160 lines • 4.17 kB
TypeScript
/**
* Sistema de eventos padronizado e type-safe para VLibras Player
* Fornece eventos detalhados sobre o ciclo de vida do player
*/
export interface PlayerEvents {
'player:ready': {
player: any;
timestamp: number;
};
'player:error': {
error: Error;
player: any;
timestamp: number;
};
'player:destroy': {
player: any;
timestamp: number;
};
'translation:start': {
text: string;
timestamp: number;
};
'translation:progress': {
progress: number;
stage: string;
timestamp: number;
};
'translation:complete': {
gloss: string;
duration: number;
timestamp: number;
};
'translation:error': {
error: string;
text: string;
timestamp: number;
};
'animation:start': {
gloss: string;
timestamp: number;
};
'animation:progress': {
progress: number;
currentFrame: number;
timestamp: number;
};
'animation:pause': {
timestamp: number;
};
'animation:resume': {
timestamp: number;
};
'animation:complete': {
duration: number;
totalFrames: number;
timestamp: number;
};
'animation:error': {
error: string;
timestamp: number;
};
'cache:hit': {
key: string;
size: number;
timestamp: number;
};
'cache:miss': {
key: string;
timestamp: number;
};
'cache:clear': {
timestamp: number;
};
'performance:slow': {
operation: string;
duration: number;
threshold: number;
timestamp: number;
};
'performance:memory': {
usage: number;
limit: number;
timestamp: number;
};
'performance:fps': {
fps: number;
timestamp: number;
};
'diagnostic:webgl': {
supported: boolean;
version: string;
timestamp: number;
};
'diagnostic:assets': {
loaded: boolean;
size: number;
version: string;
timestamp: number;
};
'diagnostic:compatibility': {
browser: string;
version: string;
supported: boolean;
timestamp: number;
};
}
/**
* Event Emitter type-safe para VLibras
*/
export declare class VLibrasEventEmitter {
private listeners;
private onceListeners;
/**
* Adiciona um listener para um evento específico
*/
on<K extends keyof PlayerEvents>(event: K, listener: (data: PlayerEvents[K]) => void): () => void;
/**
* Adiciona um listener que será executado apenas uma vez
*/
once<K extends keyof PlayerEvents>(event: K, listener: (data: PlayerEvents[K]) => void): () => void;
/**
* Remove um listener específico
*/
off<K extends keyof PlayerEvents>(event: K, listener: (data: PlayerEvents[K]) => void): void;
/**
* Emite um evento para todos os listeners
*/
emit<K extends keyof PlayerEvents>(event: K, data: PlayerEvents[K]): void;
/**
* Remove todos os listeners de um evento ou de todos os eventos
*/
removeAllListeners(event?: keyof PlayerEvents): void;
/**
* Retorna o número de listeners para um evento
*/
listenerCount(event: keyof PlayerEvents): number;
/**
* Retorna todos os eventos que têm listeners
*/
eventNames(): Array<keyof PlayerEvents>;
}
/**
* Utilitários para eventos
*/
export declare class VLibrasEventUtils {
/**
* Cria um timestamp padronizado
*/
static createTimestamp(): number;
/**
* Aguarda por um evento específico
*/
static waitForEvent<K extends keyof PlayerEvents>(emitter: VLibrasEventEmitter, event: K, timeout?: number): Promise<PlayerEvents[K]>;
/**
* Debounce para eventos frequentes
*/
static debounceEvent<K extends keyof PlayerEvents>(emitter: VLibrasEventEmitter, event: K, callback: (data: PlayerEvents[K]) => void, delay?: number): () => void;
}
export declare const globalEventEmitter: VLibrasEventEmitter;
//# sourceMappingURL=VLibrasEvents.d.ts.map