UNPKG

react-native-ez-theme

Version:
30 lines (22 loc) 755 B
// @flow import * as React from "react"; import getSelectedTheme from "../utils/getSelectedTheme"; function Factory(themeConfig) { const { Provider, Consumer } = React.createContext(themeConfig); const ThemeProvider = ({ name, children }) => { const selectedTheme = getSelectedTheme(name, themeConfig); return <Provider value={selectedTheme}>{children}</Provider>; }; const withTheme = (staticItems = {}) => Component => { const WrappedComponent = props => ( <Consumer>{theme => <Component {...props} theme={theme} />}</Consumer> ); return Object.assign(WrappedComponent, staticItems); }; return { EzThemeProvider: ThemeProvider, EzThemeConsumer: Consumer, withTheme }; } export default Factory;