@dialpad/dialtone
Version:
Dialpad's Dialtone design system monorepo
71 lines (70 loc) • 2.2 kB
JavaScript
;
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