UNPKG

rsuite

Version:

A suite of react components

78 lines (60 loc) 3.09 kB
"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;