import type { FormatDistanceFn , FormatDistanceLocale } from '../../../types' ; type FormatDistanceTokenForm = { one : string ; other : string ; } ; type FormatDistanceTokenValue = { standalone : string | FormatDistanceTokenForm ; withPreposition : string | FormatDistanceTokenForm ; } ; const formatDistanceLocale = { lessThanXSeconds : { standalone : { one : 'weniger als 1 Sekunde' , other : 'weniger als {{count}} Sekunden' , } , withPreposition : { one : 'weniger als 1 Sekunde' , other : 'weniger als {{count}} Sekunden' , } , } , xSeconds : { standalone : { one : '1 Sekunde' , other : '{{count}} Sekunden' , } , withPreposition : { one : '1 Sekunde' , other : '{{count}} Sekunden' , } , } , halfAMinute : { standalone : 'halbe Minute' , withPreposition : 'halben Minute' , } , lessThanXMinutes : { standalone : { one : 'weniger als 1 Minute' , other : 'weniger als {{count}} Minuten' , } , withPreposition : { one : 'weniger als 1 Minute' , other : 'weniger als {{count}} Minuten' , } , } , xMinutes : { standalone : { one : '1 Minute' , other : '{{count}} Minuten' , } , withPreposition : { one : '1 Minute' , other : '{{count}} Minuten' , } , } , aboutXHours : { standalone : { one : 'etwa 1 Stunde' , other : 'etwa {{count}} Stunden' , } , withPreposition : { one : 'etwa 1 Stunde' , other : 'etwa {{count}} Stunden' , } , } , xHours : { standalone : { one : '1 Stunde' , other : '{{count}} Stunden' , } , withPreposition : { one : '1 Stunde' , other : '{{count}} Stunden' , } , } , xDays : { standalone : { one : '1 Tag' , other : '{{count}} Tage' , } , withPreposition : { one : '1 Tag' , other : '{{count}} Tagen' , } , } , aboutXWeeks : { standalone : { one : 'etwa 1 Woche' , other : 'etwa {{count}} Wochen' , } , withPreposition : { one : 'etwa 1 Woche' , other : 'etwa {{count}} Wochen' , } , } , xWeeks : { standalone : { one : '1 Woche' , other : '{{count}} Wochen' , } , withPreposition : { one : '1 Woche' , other : '{{count}} Wochen' , } , } , aboutXMonths : { standalone : { one : 'etwa 1 Monat' , other : 'etwa {{count}} Monate' , } , withPreposition : { one : 'etwa 1 Monat' , other : 'etwa {{count}} Monaten' , } , } , xMonths : { standalone : { one : '1 Monat' , other : '{{count}} Monate' , } , withPreposition : { one : '1 Monat' , other : '{{count}} Monaten' , } , } , aboutXYears : { standalone : { one : 'etwa 1 Jahr' , other : 'etwa {{count}} Jahre' , } , withPreposition : { one : 'etwa 1 Jahr' , other : 'etwa {{count}} Jahren' , } , } , xYears : { standalone : { one : '1 Jahr' , other : '{{count}} Jahre' , } , withPreposition : { one : '1 Jahr' , other : '{{count}} Jahren' , } , } , overXYears : { standalone : { one : 'mehr als 1 Jahr' , other : 'mehr als {{count}} Jahre' , } , withPreposition : { one : 'mehr als 1 Jahr' , other : 'mehr als {{count}} Jahren' , } , } , almostXYears : { standalone : { one : 'fast 1 Jahr' , other : 'fast {{count}} Jahre' , } , withPreposition : { one : 'fast 1 Jahr' , other : 'fast {{count}} Jahren' , } , } , } ; const formatDistance = ( token , count , options ) => { let result ; const tokenValue = options ?. addSuffix ? formatDistanceLocale [ token ] . withPreposition : formatDistanceLocale [ token ] . standalone ; if ( typeof tokenValue === 'string' ) { result = tokenValue ; } else if ( count === 1 ) { result = tokenValue . one ; } else { result = tokenValue . other . replace ( '{{count}}' , String ( count ) ) ; } if ( options ?. addSuffix ) { if ( options . comparison && options . comparison > 0 ) { return 'in ' + result ; } else { return 'vor ' + result ; } } return result ; } ; export default formatDistance ;