@shopify/polaris
Version:
Shopify’s product component library
98 lines (85 loc) • 3.39 kB
JavaScript
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 };