UNPKG

@redocly/theme

Version:

Shared UI components lib

39 lines 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useTimeAgo = useTimeAgo; const react_1 = require("react"); const hooks_1 = require("../../core/hooks"); const timeUnits = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year']; const timeUnitConversions = [ 60, // 60 seconds in 1 min 60, // 60 mins in 1 hour 24, // 24 hours in 1 day 7, // 7 days in 1 week 365 / 7 / 12, // 4.345238095238096 weeks in 1 month 12, // 12 months in 1 year ]; function useTimeAgo() { const { useTranslate } = (0, hooks_1.useThemeHooks)(); const { translate } = useTranslate(); const format = (0, react_1.useCallback)((date) => { let timeUnitIndex = 0; let elapsedTime = (Date.now() - date.getTime()) / 1000; for (; elapsedTime >= timeUnitConversions[timeUnitIndex] && timeUnitIndex < timeUnitConversions.length; timeUnitIndex++) { elapsedTime /= timeUnitConversions[timeUnitIndex]; } elapsedTime = Math.floor(elapsedTime); if (timeUnitIndex === 0) return translate('time.justNow', 'just now'); const timeUnit = timeUnits[timeUnitIndex]; const suffix = elapsedTime > 1 ? 's' : ''; const translationKey = `time.past.${timeUnit}${suffix}`; return translate(translationKey, { defaultValue: `${elapsedTime} ${timeUnit}${suffix} ago`, count: elapsedTime, replace: { value: elapsedTime }, }); }, [translate]); return { format }; } //# sourceMappingURL=use-time-ago.js.map