vlibras-player-nextjs
Version:
VLibras Player para Next.js - Biblioteca moderna para tradução de texto em Libras com callbacks de estado
143 lines (142 loc) • 4.33 kB
TypeScript
import type { VLibrasPlayerOptions, VLibrasPlayerCallbacks, TranslationOptions } from '../types';
import { VLibrasPlayer } from '../core/vlibras-player';
interface VLibrasPlayerState {
status: 'idle' | 'initializing' | 'ready' | 'translating' | 'playing' | 'paused' | 'error';
isLoading: boolean;
isReady: boolean;
isTranslating: boolean;
isPlaying: boolean;
isPaused: boolean;
progress: number | null;
region: 'BR' | 'PT';
currentText?: string;
currentGloss?: string;
errors: {
fatal: string | null;
warnings: string[];
};
lastTranslation?: {
text: string;
timestamp: number;
};
}
interface UseVLibrasPlayerOptions extends Omit<VLibrasPlayerOptions, keyof VLibrasPlayerCallbacks> {
containerRef?: {
current: HTMLElement | null;
};
autoInit?: boolean;
onStateChange?: (state: VLibrasPlayerState) => void;
onPlayerReady?: () => void;
onLoad?: () => void;
onPlayerError?: (error: string, isFatal: boolean) => void;
onTranslationStart?: () => void;
onTranslationEnd?: () => void;
onTranslationError?: (error: string) => void;
onPlay?: () => void;
onPlaybackStart?: () => void;
onPlaybackEnd?: () => void;
onPause?: () => void;
onPlaybackPause?: () => void;
onResume?: () => void;
onPlaybackResume?: () => void;
onRestart?: () => void;
onPlaybackRestart?: () => void;
onStop?: () => void;
retryOnError?: boolean;
maxRetries?: number;
debounceMs?: number;
}
/**
* Hook React para VLibras Player com melhores práticas
*
* @example
* ```tsx
* const containerRef = useRef<HTMLDivElement>(null);
* const player = useVLibrasPlayer({
* containerRef,
* autoInit: true,
* onPlayerReady: () => console.log('Player pronto!'),
* onStateChange: (state) => console.log('Estado:', state.status)
* });
*
* // Usar o player
* await player.translate('Olá mundo');
* ```
*/
export declare function useVLibrasPlayer(options?: UseVLibrasPlayerOptions): {
translate: (text: string, translationOptions?: TranslationOptions) => Promise<void>;
initializePlayer: () => Promise<void>;
controls: {
play: (gloss?: string | null, options?: TranslationOptions) => void;
pause: () => void;
resume: () => void;
stop: () => void;
restart: () => void;
repeat: () => void;
};
settings: {
setSpeed: (speed: number) => void;
setRegion: (region: "BR" | "PT") => void;
changeAvatar: (avatarName: string) => void;
toggleSubtitle: () => void;
playWelcome: () => void;
};
utils: {
clearWarnings: () => void;
reset: () => void;
getPlayer: () => VLibrasPlayer | null;
retry: () => Promise<void>;
};
play: (gloss?: string | null, options?: TranslationOptions) => void;
pause: () => void;
resume: () => void;
stop: () => void;
restart: () => void;
repeat: () => void;
setSpeed: (speed: number) => void;
setRegion: (region: "BR" | "PT") => void;
changeAvatar: (avatarName: string) => void;
toggleSubtitle: () => void;
playWelcome: () => void;
player: {
status: "idle" | "playing" | "translating" | "error" | "initializing" | "ready" | "paused";
loaded: boolean;
translated: boolean;
progress: number | null;
region: "BR" | "PT";
isTranslating: boolean;
isPlaying: boolean;
text: string | undefined;
gloss: string | undefined;
};
error: string | null;
isLoading: boolean;
isReady: boolean;
isTranslating: boolean;
isPlaying: boolean;
canTranslate: boolean;
canPause: boolean;
canResume: boolean;
canStop: boolean;
canRestart: boolean | {
text: string;
timestamp: number;
} | undefined;
hasWarnings: boolean;
isBusy: boolean;
status: "idle" | "initializing" | "ready" | "translating" | "playing" | "paused" | "error";
isPaused: boolean;
progress: number | null;
region: "BR" | "PT";
currentText?: string;
currentGloss?: string;
errors: {
fatal: string | null;
warnings: string[];
};
lastTranslation?: {
text: string;
timestamp: number;
};
};
export {};