import type { FormatDistanceFn , FormatDistanceLocale } from '../../../types' ; type Plural = { one : string ; two : string ; few : string ; other : string ; } ; type Tense = { past : Plural ; future : Plural ; present : Plural ; } ; function isPluralType ( val ) { return ( val as Plural ) . one !== undefined ; } type FormatDistanceTokenValue = string | Tense | Plural ; const formatDistanceLocale = { lessThanXSeconds : { present : { one : 'manj kot {{count}} sekunda' , two : 'manj kot {{count}} sekundi' , few : 'manj kot {{count}} sekunde' , other : 'manj kot {{count}} sekund' , } , past : { one : 'manj kot {{count}} sekundo' , two : 'manj kot {{count}} sekundama' , few : 'manj kot {{count}} sekundami' , other : 'manj kot {{count}} sekundami' , } , future : { one : 'manj kot {{count}} sekundo' , two : 'manj kot {{count}} sekundi' , few : 'manj kot {{count}} sekunde' , other : 'manj kot {{count}} sekund' , } , } , xSeconds : { present : { one : '{{count}} sekunda' , two : '{{count}} sekundi' , few : '{{count}} sekunde' , other : '{{count}} sekund' , } , past : { one : '{{count}} sekundo' , two : '{{count}} sekundama' , few : '{{count}} sekundami' , other : '{{count}} sekundami' , } , future : { one : '{{count}} sekundo' , two : '{{count}} sekundi' , few : '{{count}} sekunde' , other : '{{count}} sekund' , } , } , halfAMinute : 'pol minute' , lessThanXMinutes : { present : { one : 'manj kot {{count}} minuta' , two : 'manj kot {{count}} minuti' , few : 'manj kot {{count}} minute' , other : 'manj kot {{count}} minut' , } , past : { one : 'manj kot {{count}} minuto' , two : 'manj kot {{count}} minutama' , few : 'manj kot {{count}} minutami' , other : 'manj kot {{count}} minutami' , } , future : { one : 'manj kot {{count}} minuto' , two : 'manj kot {{count}} minuti' , few : 'manj kot {{count}} minute' , other : 'manj kot {{count}} minut' , } , } , xMinutes : { present : { one : '{{count}} minuta' , two : '{{count}} minuti' , few : '{{count}} minute' , other : '{{count}} minut' , } , past : { one : '{{count}} minuto' , two : '{{count}} minutama' , few : '{{count}} minutami' , other : '{{count}} minutami' , } , future : { one : '{{count}} minuto' , two : '{{count}} minuti' , few : '{{count}} minute' , other : '{{count}} minut' , } , } , aboutXHours : { present : { one : 'približno {{count}} ura' , two : 'približno {{count}} uri' , few : 'približno {{count}} ure' , other : 'približno {{count}} ur' , } , past : { one : 'približno {{count}} uro' , two : 'približno {{count}} urama' , few : 'približno {{count}} urami' , other : 'približno {{count}} urami' , } , future : { one : 'približno {{count}} uro' , two : 'približno {{count}} uri' , few : 'približno {{count}} ure' , other : 'približno {{count}} ur' , } , } , xHours : { present : { one : '{{count}} ura' , two : '{{count}} uri' , few : '{{count}} ure' , other : '{{count}} ur' , } , past : { one : '{{count}} uro' , two : '{{count}} urama' , few : '{{count}} urami' , other : '{{count}} urami' , } , future : { one : '{{count}} uro' , two : '{{count}} uri' , few : '{{count}} ure' , other : '{{count}} ur' , } , } , xDays : { present : { one : '{{count}} dan' , two : '{{count}} dni' , few : '{{count}} dni' , other : '{{count}} dni' , } , past : { one : '{{count}} dnem' , two : '{{count}} dnevoma' , few : '{{count}} dnevi' , other : '{{count}} dnevi' , } , future : { one : '{{count}} dan' , two : '{{count}} dni' , few : '{{count}} dni' , other : '{{count}} dni' , } , } , aboutXWeeks : { one : 'približno {{count}} teden' , two : 'približno {{count}} tedna' , few : 'približno {{count}} tedne' , other : 'približno {{count}} tednov' , } , xWeeks : { one : '{{count}} teden' , two : '{{count}} tedna' , few : '{{count}} tedne' , other : '{{count}} tednov' , } , aboutXMonths : { present : { one : 'približno {{count}} mesec' , two : 'približno {{count}} meseca' , few : 'približno {{count}} mesece' , other : 'približno {{count}} mesecev' , } , past : { one : 'približno {{count}} mesecem' , two : 'približno {{count}} mesecema' , few : 'približno {{count}} meseci' , other : 'približno {{count}} meseci' , } , future : { one : 'približno {{count}} mesec' , two : 'približno {{count}} meseca' , few : 'približno {{count}} mesece' , other : 'približno {{count}} mesecev' , } , } , xMonths : { present : { one : '{{count}} mesec' , two : '{{count}} meseca' , few : '{{count}} meseci' , other : '{{count}} mesecev' , } , past : { one : '{{count}} mesecem' , two : '{{count}} mesecema' , few : '{{count}} meseci' , other : '{{count}} meseci' , } , future : { one : '{{count}} mesec' , two : '{{count}} meseca' , few : '{{count}} mesece' , other : '{{count}} mesecev' , } , } , aboutXYears : { present : { one : 'približno {{count}} leto' , two : 'približno {{count}} leti' , few : 'približno {{count}} leta' , other : 'približno {{count}} let' , } , past : { one : 'približno {{count}} letom' , two : 'približno {{count}} letoma' , few : 'približno {{count}} leti' , other : 'približno {{count}} leti' , } , future : { one : 'približno {{count}} leto' , two : 'približno {{count}} leti' , few : 'približno {{count}} leta' , other : 'približno {{count}} let' , } , } , xYears : { present : { one : '{{count}} leto' , two : '{{count}} leti' , few : '{{count}} leta' , other : '{{count}} let' , } , past : { one : '{{count}} letom' , two : '{{count}} letoma' , few : '{{count}} leti' , other : '{{count}} leti' , } , future : { one : '{{count}} leto' , two : '{{count}} leti' , few : '{{count}} leta' , other : '{{count}} let' , } , } , overXYears : { present : { one : 'več kot {{count}} leto' , two : 'več kot {{count}} leti' , few : 'več kot {{count}} leta' , other : 'več kot {{count}} let' , } , past : { one : 'več kot {{count}} letom' , two : 'več kot {{count}} letoma' , few : 'več kot {{count}} leti' , other : 'več kot {{count}} leti' , } , future : { one : 'več kot {{count}} leto' , two : 'več kot {{count}} leti' , few : 'več kot {{count}} leta' , other : 'več kot {{count}} let' , } , } , almostXYears : { present : { one : 'skoraj {{count}} leto' , two : 'skoraj {{count}} leti' , few : 'skoraj {{count}} leta' , other : 'skoraj {{count}} let' , } , past : { one : 'skoraj {{count}} letom' , two : 'skoraj {{count}} letoma' , few : 'skoraj {{count}} leti' , other : 'skoraj {{count}} leti' , } , future : { one : 'skoraj {{count}} leto' , two : 'skoraj {{count}} leti' , few : 'skoraj {{count}} leta' , other : 'skoraj {{count}} let' , } , } , } ; function getFormFromCount ( count ) { switch ( count % 100 ) { case 1 : return 'one' ; case 2 : return 'two' ; case 3 : case 4 : return 'few' ; default : return 'other' ; } } const formatDistance = ( token , count , options ) => { let result = '' ; let tense = 'present' ; if ( options ?. addSuffix ) { if ( options . comparison && options . comparison > 0 ) { tense = 'future' ; result = 'čez ' ; } else { tense = 'past' ; result = 'pred ' ; } } const tokenValue = formatDistanceLocale [ token ] ; if ( typeof tokenValue === 'string' ) { result += tokenValue ; } else { const form = getFormFromCount ( count ) ; if ( isPluralType ( tokenValue ) ) { result += tokenValue [ form ] . replace ( '{{count}}' , String ( count ) ) ; } else { result += tokenValue [ tense ] [ form ] . replace ( '{{count}}' , String ( count ) ) ; } } return result ; } ; export default formatDistance ;