UNPKG

react-native-unistyles

Version:
28 lines (27 loc) 1.06 kB
"use strict"; import { useEffect, useState } from 'react'; import { useSharedValue } from 'react-native-reanimated'; import { StyleSheet, UnistyleDependency, UnistylesRuntime, UnistylesShadowRegistry } from '../specs'; 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 = StyleSheet.addChangeListener(changedDependencies => { if (!changedDependencies.includes(UnistyleDependency.Theme)) { return; } if (scopedTheme) { return; } theme.set(UnistylesRuntime.getTheme()); }); return () => dispose(); }, [scopedTheme]); return theme; }; //# sourceMappingURL=useAnimatedTheme.native.js.map