react-native-unistyles
Version:
Level up your React Native StyleSheet
77 lines (76 loc) • 2.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useSharedContext = void 0;
var _react = require("react");
var _reactNative = require("react-native");
var _core = require("../core");
var _common = require("../common");
const unistylesEvents = new _reactNative.NativeEventEmitter(_reactNative.NativeModules.Unistyles);
const useSharedContext = config => {
const [plugins, setPlugins] = (0, _react.useState)(_core.unistyles.runtime.enabledPlugins);
const [theme, setTheme] = (0, _react.useState)(_core.unistyles.registry.getTheme(_core.unistyles.runtime.themeName));
const [layout, setLayout] = (0, _react.useState)({
breakpoint: _core.unistyles.runtime.breakpoint,
orientation: _core.unistyles.runtime.orientation,
screen: {
width: _core.unistyles.runtime.screen.width,
height: _core.unistyles.runtime.screen.height
},
statusBar: {
width: _core.unistyles.runtime.statusBar.width,
height: _core.unistyles.runtime.statusBar.height
},
navigationBar: {
width: _core.unistyles.runtime.navigationBar.width,
height: _core.unistyles.runtime.navigationBar.height
},
insets: {
top: _core.unistyles.runtime.insets.top,
bottom: _core.unistyles.runtime.insets.bottom,
left: _core.unistyles.runtime.insets.left,
right: _core.unistyles.runtime.insets.right
}
});
(0, _react.useEffect)(() => {
if (config.useContext) {
return;
}
const subscription = unistylesEvents.addListener('__unistylesOnChange', event => {
switch (event.type) {
case _common.UnistylesEventType.Theme:
{
const themeEvent = event;
return setTheme(_core.unistyles.registry.getTheme(themeEvent.payload.themeName));
}
case _common.UnistylesEventType.Layout:
{
const layoutEvent = event;
return setLayout({
breakpoint: layoutEvent.payload.breakpoint,
orientation: layoutEvent.payload.orientation,
screen: layoutEvent.payload.screen,
statusBar: layoutEvent.payload.statusBar,
insets: layoutEvent.payload.insets,
navigationBar: layoutEvent.payload.navigationBar
});
}
case _common.UnistylesEventType.Plugin:
{
return setPlugins(_core.unistyles.runtime.enabledPlugins);
}
default:
return;
}
});
return subscription.remove;
}, config.deps);
return {
plugins,
theme,
layout
};
};
exports.useSharedContext = useSharedContext;
//# sourceMappingURL=useSharedContext.js.map