rsuite
Version:
A suite of react components
78 lines (60 loc) • 3.09 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = require("react");
var _default2 = _interopRequireDefault(require("../locales/default"));
var _CustomProvider = require("../CustomProvider/CustomProvider");
var _dateUtils = require("../utils/dateUtils");
var mergeObject = function mergeObject(list) {
return list.reduce(function (a, b) {
a = (0, _extends2.default)({}, a, b);
return a;
}, {});
};
var getDefaultRTL = function getDefaultRTL() {
return typeof window !== 'undefined' && (document.body.getAttribute('dir') || document.dir) === 'rtl';
};
/**
* A hook to get custom configuration of `<CustomProvider>`
* @param keys
*/
function useCustom(keys, overrideLocale) {
var _locale$Calendar2, _locale$Calendar4;
var _useContext = (0, _react.useContext)(_CustomProvider.CustomContext),
_useContext$locale = _useContext.locale,
locale = _useContext$locale === void 0 ? _default2.default : _useContext$locale,
_useContext$rtl = _useContext.rtl,
rtl = _useContext$rtl === void 0 ? getDefaultRTL() : _useContext$rtl,
formatDate = _useContext.formatDate,
parseDate = _useContext.parseDate,
toasters = _useContext.toasters;
var componentLocale = (0, _extends2.default)({}, locale === null || locale === void 0 ? void 0 : locale.common, typeof keys === 'string' ? locale === null || locale === void 0 ? void 0 : locale[keys] : typeof keys === 'object' ? mergeObject(keys.map(function (key) {
return locale === null || locale === void 0 ? void 0 : locale[key];
})) : {}); // Component custom locale
if (overrideLocale) {
componentLocale = mergeObject([componentLocale, overrideLocale]);
}
var defaultFormatDate = (0, _react.useCallback)(function (date, formatStr) {
var _locale$Calendar;
return (0, _dateUtils.format)(date, formatStr, {
locale: locale === null || locale === void 0 ? void 0 : (_locale$Calendar = locale.Calendar) === null || _locale$Calendar === void 0 ? void 0 : _locale$Calendar.dateLocale
});
}, [(_locale$Calendar2 = locale.Calendar) === null || _locale$Calendar2 === void 0 ? void 0 : _locale$Calendar2.dateLocale]);
var defaultParseDate = (0, _react.useCallback)(function (dateString, formatString) {
var _locale$Calendar3;
return (0, _dateUtils.parse)(dateString, formatString, new Date(), {
locale: locale === null || locale === void 0 ? void 0 : (_locale$Calendar3 = locale.Calendar) === null || _locale$Calendar3 === void 0 ? void 0 : _locale$Calendar3.dateLocale
});
}, [(_locale$Calendar4 = locale.Calendar) === null || _locale$Calendar4 === void 0 ? void 0 : _locale$Calendar4.dateLocale]);
return {
locale: componentLocale,
rtl: rtl,
toasters: toasters,
formatDate: formatDate || defaultFormatDate,
parseDate: parseDate || defaultParseDate
};
}
var _default = useCustom;
exports.default = _default;