UNPKG

@e-group/utils

Version:

eGroup team utils that share across projects.

113 lines (90 loc) 3.93 kB
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } import { format as dFormat, formatDistance as dFormatDistance, isValid as dIsValid, isBefore as dIsBefore, isAfter as dIsAfter, toDate as dToDate, parseISO, differenceInHours as dDifferenceInHours, differenceInDays as dDifferenceInDays, differenceInWeeks as dDifferenceInWeeks, differenceInYears as dDifferenceInYears } from 'date-fns'; import getDateFnsLocale from './getDateFnsLocale'; import getNavigatorLanguage from '../getNavigatorLanguage'; const locale = getDateFnsLocale(getNavigatorLanguage()); export function isValid(date) { let validDate = date; if (typeof validDate === 'string') { validDate = parseISO(validDate); } return dIsValid(validDate); } export function toDate(date) { if (!date || !isValid(date)) { return undefined; } if (typeof date === 'string') { return parseISO(date); } return dToDate(date); } export function format(date, format = 'PP', options) { const validDate = toDate(date); if (!validDate) { return undefined; } return dFormat(validDate, format, _objectSpread({ locale }, options)); } export function formatDistance(date, baseDate, options) { const validDate = toDate(date); const validBaseDate = toDate(baseDate); if (!validDate || !validBaseDate) { return undefined; } return dFormatDistance(validDate, validBaseDate, _objectSpread({ locale }, options)); } export function isAfter(date, dateToCompare) { const validDate = toDate(date); const validCompareDate = toDate(dateToCompare); if (!validDate || !validCompareDate) { return undefined; } return dIsAfter(validDate, validCompareDate); } export function isBefore(date, dateToCompare) { const validDate = toDate(date); const validCompareDate = toDate(dateToCompare); if (!validDate || !validCompareDate) { return undefined; } return dIsBefore(validDate, validCompareDate); } export function differenceInHours(dateLeft, dateRight) { const validDateLeft = toDate(dateLeft); const validDateRight = toDate(dateRight); if (!validDateLeft || !validDateRight) { return undefined; } return dDifferenceInHours(validDateLeft, validDateRight); } export function differenceInDays(dateLeft, dateRight) { const validDateLeft = toDate(dateLeft); const validDateRight = toDate(dateRight); if (!validDateLeft || !validDateRight) { return undefined; } return dDifferenceInDays(validDateLeft, validDateRight); } export function differenceInWeeks(dateLeft, dateRight) { const validDateLeft = toDate(dateLeft); const validDateRight = toDate(dateRight); if (!validDateLeft || !validDateRight) { return undefined; } return dDifferenceInWeeks(validDateLeft, validDateRight); } export function differenceInYears(dateLeft, dateRight) { const validDateLeft = toDate(dateLeft); const validDateRight = toDate(dateRight); if (!validDateLeft || !validDateRight) { return undefined; } return dDifferenceInYears(validDateLeft, validDateRight); }