@6thquake/react-material
Version:
React components that implement Google's Material Design.
46 lines (38 loc) • 1.43 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireDefault(require("react"));
var _LocaleProvider = require("./LocaleProvider");
// 当 存在于 y 中的key,在x 中值为 undefined 时,则取 y[key]
var merge = function merge(x, y) {
var result = (0, _extends2.default)({}, x);
Object.keys(y).map(function (key) {
if (result[key] === undefined) {
result[key] = y[key];
}
});
return result;
};
var withLocale = function withLocale() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return function (Component) {
var name = options.name || Component.name;
return function LocaleComponent(props) {
return _react.default.createElement(_LocaleProvider.LocaleContext.Consumer, null, function (value) {
var locale = value.locale,
changeLocale = value.changeLocale;
var mergeProps = merge(props, value[name] || {});
return _react.default.createElement(Component, (0, _extends2.default)({}, mergeProps, {
locale: locale,
changeLocale: changeLocale
}));
});
};
};
};
var _default = withLocale;
exports.default = _default;
;