react-native-unistyles
Version:
Level up your React Native StyleSheet
33 lines (32 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useAnimatedTheme = void 0;
var _react = require("react");
var _reactNativeReanimated = require("react-native-reanimated");
var _specs = require("../specs");
const useAnimatedTheme = () => {
const [scopedTheme, setScopedTheme] = (0, _react.useState)(() => _specs.UnistylesShadowRegistry.getScopedTheme());
const theme = (0, _reactNativeReanimated.useSharedValue)(_specs.UnistylesRuntime.getTheme(scopedTheme));
const maybeNewScopedTheme = _specs.UnistylesShadowRegistry.getScopedTheme();
if (scopedTheme !== maybeNewScopedTheme) {
setScopedTheme(maybeNewScopedTheme);
theme.set(_specs.UnistylesRuntime.getTheme(maybeNewScopedTheme));
}
(0, _react.useEffect)(() => {
const dispose = _specs.StyleSheet.addChangeListener(changedDependencies => {
if (!changedDependencies.includes(_specs.UnistyleDependency.Theme)) {
return;
}
if (scopedTheme) {
return;
}
theme.set(_specs.UnistylesRuntime.getTheme());
});
return () => dispose();
}, [scopedTheme]);
return theme;
};
exports.useAnimatedTheme = useAnimatedTheme;
//# sourceMappingURL=useAnimatedTheme.native.js.map