UNPKG

react-native-unistyles

Version:
77 lines (76 loc) 2.68 kB
"use strict"; 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