UNPKG

vlibras-player-webjs

Version:

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

50 lines 1.97 kB
"use strict"; /** * @file Hook para localStorage compatível com SSR * @description Fornece acesso seguro ao localStorage em ambientes SSR */ Object.defineProperty(exports, "__esModule", { value: true }); exports.useSSRSafeLocalStorage = useSSRSafeLocalStorage; const react_1 = require("react"); const useIsomorphicLayoutEffect_1 = require("./useIsomorphicLayoutEffect"); /** * Hook para gerenciar localStorage de forma segura em SSR * @param key - Chave do localStorage * @param initialValue - Valor inicial * @returns [value, setValue] similar ao useState */ function useSSRSafeLocalStorage(key, initialValue) { // Estado inicial usando o valor padrão const [storedValue, setStoredValue] = (0, react_1.useState)(initialValue); const [isHydrated, setIsHydrated] = (0, react_1.useState)(false); // Carrega o valor do localStorage após hidratação (0, react_1.useEffect)(() => { if (useIsomorphicLayoutEffect_1.isBrowser) { try { const item = window.localStorage.getItem(key); if (item) { setStoredValue(JSON.parse(item)); } } catch (error) { console.warn(`Erro ao ler localStorage para a chave "${key}":`, error); } setIsHydrated(true); } }, [key]); // Função para definir valor const setValue = (value) => { try { const valueToStore = value instanceof Function ? value(storedValue) : value; setStoredValue(valueToStore); if (useIsomorphicLayoutEffect_1.isBrowser) { window.localStorage.setItem(key, JSON.stringify(valueToStore)); } } catch (error) { console.warn(`Erro ao salvar no localStorage para a chave "${key}":`, error); } }; return [isHydrated ? storedValue : initialValue, setValue]; } //# sourceMappingURL=useSSRSafeLocalStorage.js.map