UNPKG

@shopify/polaris

Version:

Shopify’s product component library

98 lines (85 loc) 3.39 kB
import { objectSpread2 as _objectSpread2 } from '../../_virtual/_rollupPluginBabelHelpers.js'; import React$1, { Component } from 'react'; import { FeaturesContext } from '../../utilities/features/context.js'; import { ThemeProvider as ThemeProvider$1 } from '../ThemeProvider/ThemeProvider.js'; import { MediaQueryProvider as MediaQueryProvider$1 } from '../MediaQueryProvider/MediaQueryProvider.js'; import { UniqueIdFactoryContext } from '../../utilities/unique-id/context.js'; import { UniqueIdFactory, globalIdGeneratorFactory } from '../../utilities/unique-id/unique-id-factory.js'; import { FocusManager as FocusManager$1 } from '../FocusManager/FocusManager.js'; import { I18nContext } from '../../utilities/i18n/context.js'; import { I18n as I18n$1 } from '../../utilities/i18n/I18n.js'; import { ScrollLockManagerContext } from '../../utilities/scroll-lock-manager/context.js'; import { ScrollLockManager } from '../../utilities/scroll-lock-manager/scroll-lock-manager.js'; import { StickyManagerContext } from '../../utilities/sticky-manager/context.js'; import { StickyManager } from '../../utilities/sticky-manager/sticky-manager.js'; import { LinkContext } from '../../utilities/link/context.js'; import './AppProvider.scss.js'; class AppProvider extends Component { constructor(props) { super(props); this.stickyManager = void 0; this.scrollLockManager = void 0; this.uniqueIdFactory = void 0; this.stickyManager = new StickyManager(); this.scrollLockManager = new ScrollLockManager(); this.uniqueIdFactory = new UniqueIdFactory(globalIdGeneratorFactory); var { i18n, linkComponent } = this.props; // eslint-disable-next-line react/state-in-constructor this.state = { link: linkComponent, intl: new I18n$1(i18n) }; } componentDidMount() { if (document != null) { this.stickyManager.setContainer(document); } } componentDidUpdate({ i18n: prevI18n, linkComponent: prevLinkComponent }) { var { i18n, linkComponent } = this.props; if (i18n === prevI18n && linkComponent === prevLinkComponent) { return; } // eslint-disable-next-line react/no-did-update-set-state this.setState({ link: linkComponent, intl: new I18n$1(i18n) }); } render() { var { theme = {}, children } = this.props; var { intl, link } = this.state; var features = _objectSpread2({ newDesignLanguage: false }, this.props.features); return /*#__PURE__*/React$1.createElement(FeaturesContext.Provider, { value: features }, /*#__PURE__*/React$1.createElement(I18nContext.Provider, { value: intl }, /*#__PURE__*/React$1.createElement(ScrollLockManagerContext.Provider, { value: this.scrollLockManager }, /*#__PURE__*/React$1.createElement(StickyManagerContext.Provider, { value: this.stickyManager }, /*#__PURE__*/React$1.createElement(UniqueIdFactoryContext.Provider, { value: this.uniqueIdFactory }, /*#__PURE__*/React$1.createElement(LinkContext.Provider, { value: link }, /*#__PURE__*/React$1.createElement(ThemeProvider$1, { theme: theme }, /*#__PURE__*/React$1.createElement(MediaQueryProvider$1, null, /*#__PURE__*/React$1.createElement(FocusManager$1, null, children))))))))); } } export { AppProvider };