react-native-unistyles
Version:
Level up your React Native StyleSheet
33 lines (32 loc) • 1.2 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");
var _services = require("../web/services");
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 = _services.services.listener.addListeners([_specs.UnistyleDependency.Theme], () => {
if (scopedTheme) {
return;
}
theme.set(_specs.UnistylesRuntime.getTheme());
});
return () => {
dispose();
};
}, [scopedTheme]);
return theme;
};
exports.useAnimatedTheme = useAnimatedTheme;
//# sourceMappingURL=useAnimatedTheme.js.map