UNPKG

react-native-unistyles

Version:
28 lines (27 loc) 1.02 kB
"use strict"; import { useEffect, useState } from 'react'; import { useSharedValue } from 'react-native-reanimated'; import { UnistyleDependency, UnistylesRuntime, UnistylesShadowRegistry } from '../specs'; import { services } from '../web/services'; export const useAnimatedTheme = () => { const [scopedTheme, setScopedTheme] = useState(() => UnistylesShadowRegistry.getScopedTheme()); const theme = useSharedValue(UnistylesRuntime.getTheme(scopedTheme)); const maybeNewScopedTheme = UnistylesShadowRegistry.getScopedTheme(); if (scopedTheme !== maybeNewScopedTheme) { setScopedTheme(maybeNewScopedTheme); theme.set(UnistylesRuntime.getTheme(maybeNewScopedTheme)); } useEffect(() => { const dispose = services.listener.addListeners([UnistyleDependency.Theme], () => { if (scopedTheme) { return; } theme.set(UnistylesRuntime.getTheme()); }); return () => { dispose(); }; }, [scopedTheme]); return theme; }; //# sourceMappingURL=useAnimatedTheme.js.map