UNPKG

react-native-web-ui-components

Version:

[![Dependencies](https://img.shields.io/badge/dependencies-renovate-brightgreen.svg)](https://github.com/CareLuLu/react-native-web-ui-components/issues/12) [![Codacy Badge](https://img.shields.io/codacy/grade/c0ef990240a84ab7abee7af64602dd6d/master)](http

57 lines (53 loc) 1.82 kB
import React from 'react'; import PropTypes from 'prop-types'; import { Provider as AmpProvider } from '../Amp'; import { Provider as ThemeProvider } from '../Theme'; import { Provider as HistoryProvider } from '../History'; import { ScreenContext, KeyboardContext, calculateScreen, calculateKeyboard } from '../Screen'; import { Helmet, style } from '../Helmet'; import baseCss from './style'; const throwHistoryError = () => { throw new Error(` UIProvider must receive \`history\` (see \`useHistory\` at https://github.com/ReactTraining/react-router). If you're not using \`react-router\` please provide equivalent navigation. For example: \`\`\` const navigation = { location: { pathname: '' }, push: () => {}, replace: () => {}, }; \`\`\` `); }; const UIProvider = ({ amp, theme, children, keyboard, screen, history }) => /*#__PURE__*/React.createElement(HistoryProvider, { value: history || throwHistoryError() }, /*#__PURE__*/React.createElement(AmpProvider, { value: amp }, /*#__PURE__*/React.createElement(ThemeProvider, { value: theme }, /*#__PURE__*/React.createElement(KeyboardContext.Provider, { value: keyboard }, /*#__PURE__*/React.createElement(ScreenContext.Provider, { value: screen }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Helmet, null, /*#__PURE__*/React.createElement("style", null, baseCss)), children)))))); UIProvider.propTypes = { keyboard: PropTypes.number.isRequired, screen: PropTypes.shape().isRequired, amp: PropTypes.bool, theme: PropTypes.shape(), history: PropTypes.shape(), children: PropTypes.node }; UIProvider.defaultProps = { amp: false, theme: {}, history: null, children: null }; export default calculateKeyboard()(calculateScreen()(UIProvider));