UNPKG

@6thquake/react-material

Version:

React components that implement Google's Material Design.

185 lines (136 loc) 5.07 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.getDefaultLocale = exports.getDefaultLocaleResource = exports.getLocaleResource = exports.getLocale = exports.getLanguage = exports.LocaleConsumer = exports.LocaleProvider = exports.LocaleContext = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _languages2 = _interopRequireWildcard(require("./languages")); var _DateTimePickersProvider = _interopRequireDefault(require("../Picker/DateTimePickersProvider")); var _momentUtils = _interopRequireDefault(require("../Picker/utils/moment-utils")); var _moment = _interopRequireDefault(require("moment")); require("moment/locale/en-ca"); require("moment/locale/zh-cn"); var _deepmerge = _interopRequireDefault(require("deepmerge")); /** * @ignore - do not document. */ var languages = { 'zh-tw': _languages2.zh_tw, 'zh-cn': _languages2.zh_cn, zh: _languages2.zh_cn, 'en-ca': _languages2.en_us, 'en-us': _languages2.en_us, en: _languages2.default }; var getLanguage = function getLanguage(lang, value) { var _languages = value || languages; if (lang) { lang = lang.toLowerCase(); if (_languages[lang]) { return lang; } lang = lang.split('-')[0]; if (_languages[lang]) { return lang; } } return 'en'; }; exports.getLocale = exports.getLanguage = getLanguage; var getLocaleResource = function getLocaleResource(lang, value) { var lang1 = getLanguage(lang); if (!value) { return languages[lang1]; } var lang2 = getLanguage(lang, value); return (0, _extends2.default)({}, (0, _deepmerge.default)(languages[lang1], value[lang2])); }; exports.getLocaleResource = getLocaleResource; var getDefaultLocale = function getDefaultLocale() { var wg = global || window; var lang = wg && wg.navigator && wg.navigator.language; return getLanguage(lang); }; exports.getDefaultLocale = getDefaultLocale; var getDefaultLocaleResource = function getDefaultLocaleResource() { var lang = getDefaultLocale(); return getLocaleResource(lang); }; exports.getDefaultLocaleResource = getDefaultLocaleResource; var defaultLocale = getDefaultLocaleResource(); var LocaleContext = _react.default.createContext(defaultLocale); exports.LocaleContext = LocaleContext; var LocaleConsumer = LocaleContext.Consumer; exports.LocaleConsumer = LocaleConsumer; var LocaleProvider = /*#__PURE__*/ function (_React$Component) { (0, _inherits2.default)(LocaleProvider, _React$Component); function LocaleProvider(props) { var _this; (0, _classCallCheck2.default)(this, LocaleProvider); _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(LocaleProvider).call(this, props)); _this.changeLocale = function (locale) { return function () { _this.setState({ locale: locale }); }; }; _this.getLocale = function () { return _this.state.locale; }; _this.state = { locale: props.locale || defaultLocale.locale }; return _this; } (0, _createClass2.default)(LocaleProvider, [{ key: "render", value: function render() { var children = this.props.children; var locale = this.state.locale; if (locale) { _moment.default.locale(locale); LocaleProvider.locale = this.state.locale; } var value = (0, _extends2.default)({}, { changeLocale: this.changeLocale.bind(this) }, getLocaleResource(locale, this.props.value)); return _react.default.createElement(LocaleContext.Provider, { locale: locale, value: value }, _react.default.createElement(_DateTimePickersProvider.default, { utils: _momentUtils.default, locale: locale, moment: _moment.default }, children)); } }]); return LocaleProvider; }(_react.default.Component); exports.LocaleProvider = LocaleProvider; LocaleProvider.locale = 'en'; LocaleProvider.propTypes = { /** * The International resources */ children: _propTypes.default.node, /** * Type of locale, such as en, zh, en_us... */ locale: _propTypes.default.string, /** * You can wrap a node. */ value: _propTypes.default.object };