Repository URL to install this package:
|
Version:
5.0.0-rc.13 ▾
|
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactRedux = require("react-redux");
var _reactIntl = require("react-intl");
var _hash = _interopRequireDefault(require("./hash"));
class I18NProvider extends _react.Component {
static generateProviderKey(locale, messages) {
const key = `${locale}${JSON.stringify(messages[locale])}`;
return (0, _hash.default)(key);
} // eslint-disable-next-line class-methods-use-this
shouldComponentUpdate(props) {
const {
locale,
messages
} = props;
return typeof messages[locale] !== 'undefined';
}
render() {
const {
locale,
messages,
children
} = this.props; // Create a hash depending of the current locale and messages object.
// This will enforce the re-render of the provider children when or the locale or only the messages change.
const key = I18NProvider.generateProviderKey(locale, messages);
return /*#__PURE__*/_react.default.createElement(_reactIntl.IntlProvider, {
key: key,
locale: locale,
messages: messages[locale]
}, _react.default.Children.only(children));
}
}
(0, _defineProperty2.default)(I18NProvider, "propTypes", {
locale: _propTypes.default.string.isRequired,
messages: _propTypes.default.object.isRequired,
children: _propTypes.default.element.isRequired
});
const mapStateToProps = state => ({
locale: state.i18n.locale,
messages: state.i18n.messages
});
const mapDispatchToProps = () => ({});
var _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(I18NProvider);
exports.default = _default;
//# sourceMappingURL=I18NProvider.js.map