UNPKG

vlibras-player-webjs

Version:

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

162 lines 5.73 kB
"use strict"; /** * Unity Bridge - Funções globais automáticas para o Unity WebGL * * Resolve o problema crítico identificado no FUNCOES-UTILITARIAS-VLIBRAS.md * onde cada desenvolvedor precisa implementar manualmente as funções bridge. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.UnityBridge = void 0; exports.setupUnityBridge = setupUnityBridge; exports.isUnityBridgeReady = isUnityBridgeReady; /** * Classe responsável por configurar automaticamente o Unity Bridge */ class UnityBridge { constructor(config = {}) { this.callbacks = {}; this.config = { autoSetup: true, logCalls: false, prefix: 'VLibras', ...config }; } /** * Configura automaticamente as funções globais que o Unity espera */ static setupAutomatically(config) { if (UnityBridge.isSetup) { return UnityBridge.instance; } UnityBridge.instance = new UnityBridge(config); if (typeof window !== 'undefined') { UnityBridge.instance.registerGlobalFunctions(); UnityBridge.isSetup = true; } return UnityBridge.instance; } /** * Registra callbacks para os eventos do Unity */ setCallbacks(callbacks) { this.callbacks = { ...this.callbacks, ...callbacks }; } /** * Registra as funções globais no window */ registerGlobalFunctions() { const globalObj = window; const prefix = this.config.prefix; // Função para log opcional const log = (name, ...args) => { if (this.config.logCalls) { console.log(`[${prefix}Bridge] ${name}:`, ...args); } }; // onPlayingStateChange - Estado de reprodução globalObj[`${prefix}_onPlayingStateChange`] = (isPlaying) => { log('onPlayingStateChange', isPlaying); this.callbacks.onPlayingStateChange?.(isPlaying); }; // GetAvatar - Recebe o avatar do Unity globalObj[`${prefix}_GetAvatar`] = (avatar) => { log('GetAvatar', avatar); this.callbacks.GetAvatar?.(avatar); }; // onLoadPlayer - Player carregado globalObj[`${prefix}_onLoadPlayer`] = () => { log('onLoadPlayer'); this.callbacks.onLoadPlayer?.(); }; // onProgress - Progresso de carregamento globalObj[`${prefix}_onProgress`] = (progress) => { log('onProgress', progress); this.callbacks.onProgress?.(progress); }; // onCounterGloss - Contador de gloss globalObj[`${prefix}_onCounterGloss`] = (counter, glossLength) => { log('onCounterGloss', counter, glossLength); this.callbacks.onCounterGloss?.(counter, glossLength); }; // onFinishWelcome - Fim da animação de boas-vindas globalObj[`${prefix}_onFinishWelcome`] = (finished) => { log('onFinishWelcome', finished); this.callbacks.onFinishWelcome?.(finished); }; // onError - Erros do Unity globalObj[`${prefix}_onError`] = (error) => { log('onError', error); this.callbacks.onError?.(error); }; // Função de compatibilidade com nomes antigos this.setupLegacyCompatibility(globalObj); } /** * Compatibilidade com nomes de função legados */ setupLegacyCompatibility(globalObj) { const prefix = this.config.prefix; // Aliases para compatibilidade globalObj.onPlayingStateChange = globalObj[`${prefix}_onPlayingStateChange`]; globalObj.GetAvatar = globalObj[`${prefix}_GetAvatar`]; globalObj.onLoadPlayer = globalObj[`${prefix}_onLoadPlayer`]; globalObj.onProgress = globalObj[`${prefix}_onProgress`]; globalObj.onCounterGloss = globalObj[`${prefix}_onCounterGloss`]; globalObj.onFinishWelcome = globalObj[`${prefix}_onFinishWelcome`]; globalObj.onError = globalObj[`${prefix}_onError`]; } /** * Remove as funções globais (cleanup) */ cleanup() { if (typeof window === 'undefined') return; const globalObj = window; const prefix = this.config.prefix; // Remove funções prefixadas delete globalObj[`${prefix}_onPlayingStateChange`]; delete globalObj[`${prefix}_GetAvatar`]; delete globalObj[`${prefix}_onLoadPlayer`]; delete globalObj[`${prefix}_onProgress`]; delete globalObj[`${prefix}_onCounterGloss`]; delete globalObj[`${prefix}_onFinishWelcome`]; delete globalObj[`${prefix}_onError`]; // Remove aliases delete globalObj.onPlayingStateChange; delete globalObj.GetAvatar; delete globalObj.onLoadPlayer; delete globalObj.onProgress; delete globalObj.onCounterGloss; delete globalObj.onFinishWelcome; delete globalObj.onError; UnityBridge.isSetup = false; } /** * Verifica se o bridge está configurado */ static isConfigured() { return UnityBridge.isSetup; } /** * Obtém a instância atual do bridge */ static getInstance() { return UnityBridge.instance || null; } } exports.UnityBridge = UnityBridge; UnityBridge.isSetup = false; /** * Função de conveniência para setup automático */ function setupUnityBridge(config) { return UnityBridge.setupAutomatically(config); } /** * Hook para verificar se o Unity Bridge está pronto */ function isUnityBridgeReady() { return UnityBridge.isConfigured(); } //# sourceMappingURL=UnityBridge.js.map