UNPKG

@dialpad/dialtone

Version:

Dialpad's Dialtone design system monorepo

71 lines (70 loc) 2.2 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const dateFns = require("date-fns"); const common_utils = require("./utils.cjs"); let dialtoneLocale; function _baseFormat(date, formatString) { _checkLocaleSet(); return dateFns.format(date, formatString, { locale: dialtoneLocale }); } function _baseFormatDuration(duration, formatString) { _checkLocaleSet(); return dateFns.formatDuration(duration, { locale: dialtoneLocale, format: formatString }); } function _baseFormatDistance(date, baseDate) { _checkLocaleSet(); return dateFns.formatDistance(date, baseDate, { locale: dialtoneLocale }); } function _isLocaleSet() { return dialtoneLocale !== void 0; } function _checkLocaleSet() { if (!_isLocaleSet()) { throw new Error("Locale not set, please call setDateLocale(locale) and pass in a datefns locale object as the locale param before calling this function"); } } function setDateLocale(locale) { dialtoneLocale = locale; } function getDateMedium(date) { return _baseFormat(date, "MMMM d, y"); } function durationInHHMM(durationInSeconds) { if (durationInSeconds < 60) { return _baseFormatDistance(0, 29 * 1e3); } const duration = dateFns.intervalToDuration({ start: 0, end: durationInSeconds * 1e3 }); return _baseFormatDuration(duration, ["hours", "minutes"]); } function _getRelativeDaysText(days) { const rtl = new Intl.RelativeTimeFormat(dialtoneLocale.code, { numeric: "auto" }); return common_utils.capitalizeFirstLetter(rtl.formatToParts(days, "day")[0].value, dialtoneLocale.code); } function relativeDate(date) { if (dateFns.isToday(date)) { return _getRelativeDaysText(0); } else if (dateFns.isYesterday(date)) { return _getRelativeDaysText(-1); } else if (dateFns.isThisWeek(date)) { return _baseFormat(date, "EEEE"); } else if (dateFns.isThisYear(date)) { return _baseFormat(date, "EEEE, MMMM d"); } else { return _baseFormat(date, "MMMM d, y"); } } exports.durationInHHMM = durationInHHMM; exports.getDateMedium = getDateMedium; exports.relativeDate = relativeDate; exports.setDateLocale = setDateLocale; //# sourceMappingURL=dates.cjs.map