{"version":3,"file":"ng-devui-relative-time.mjs","sources":["../../devui/relative-time/relative-time.pipe.ts","../../devui/relative-time/relative-time.module.ts","../../devui/relative-time/ng-devui-relative-time.ts"],"sourcesContent":["import { OnDestroy, Pipe, PipeTransform } from '@angular/core';\r\nimport { I18nService } from 'ng-devui/i18n';\r\nimport * as datefns from 'date-fns';\r\nimport { Observable, Subject, of } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\n\r\n@Pipe({\r\n  name: 'dRelativeTime',\r\n})\r\nexport class RelativeTimePipe implements PipeTransform, OnDestroy {\r\n  private _destroyed$ = new Subject<void>();\r\n  constructor(private i18n: I18nService) {}\r\n\r\n  transform(\r\n    value: string | number | Date,\r\n    limit: number,\r\n    compareDate?: string | number | Date,\r\n    weekStartsOn: 0 | 1 | 2 | 3 | 4 | 6 | 5 = 1\r\n  ): Observable<string | number | Date> {\r\n    if (!value) {\r\n      return of('');\r\n    }\r\n    const threshold = {\r\n      month: 3, // at least 3 months using year.\r\n      week: 4, // at least 4 weeks using month.\r\n      day: 6, // at least 6 days using weeks.\r\n      hour: 6, // at least 6 hours using day.\r\n      minute: 59, // at least 59 minutes using hour.\r\n      second: 59, // at least 59 seconds using minute.\r\n    };\r\n\r\n    if (!datefns.isDate(value)) {\r\n      value = new Date(value);\r\n    }\r\n\r\n    const now = compareDate ? new Date(compareDate) : Date.now();\r\n\r\n    const startOfYearForTarget = datefns.startOfYear(<Date>value);\r\n    const startOfYearForToday = datefns.startOfYear(now);\r\n    const diffYears = datefns.differenceInYears(startOfYearForToday, startOfYearForTarget);\r\n    const absDiffYears = Math.abs(diffYears);\r\n\r\n    const startOfMonthForTarget = datefns.startOfMonth(<Date>value);\r\n    const startOfMonthForToday = datefns.startOfMonth(now);\r\n    const diffMonths = datefns.differenceInMonths(startOfMonthForToday, startOfMonthForTarget);\r\n    const absDiffMonths = Math.abs(diffMonths);\r\n\r\n    const startOfWeekForTarget = datefns.startOfWeek(<Date>value, { weekStartsOn });\r\n    const startOfWeekForToday = datefns.startOfWeek(now, { weekStartsOn });\r\n    const diffWeeks = datefns.differenceInWeeks(startOfWeekForToday, startOfWeekForTarget);\r\n    const absDiffWeeks = Math.abs(diffWeeks);\r\n\r\n    const startOfDayForTarget = datefns.startOfDay(<Date>value);\r\n    const startOfDayForToday = datefns.startOfDay(now);\r\n    const diffDays = datefns.differenceInDays(startOfDayForToday, startOfDayForTarget);\r\n    const absDiffDays = Math.abs(diffDays);\r\n\r\n    const diffHours = datefns.differenceInHours(now, <Date>value);\r\n    const absDiffHours = Math.abs(diffHours);\r\n\r\n    const diffMinutes = datefns.differenceInMinutes(now, <Date>value);\r\n    const absDiffMinutes = Math.abs(diffMinutes);\r\n\r\n    const diffSeconds = datefns.differenceInSeconds(now, <Date>value);\r\n    const absDiffSeconds = Math.abs(diffSeconds);\r\n\r\n    return this.i18n.langChange().pipe(\r\n      map((data) => {\r\n        if (absDiffSeconds > limit) {\r\n          return new Date(value);\r\n        }\r\n        const i18nCommonText = data.relativeTime;\r\n        if (absDiffYears > 0 && absDiffMonths > threshold.month) {\r\n          return diffYears > 0 ? i18nCommonText.yearsAgo(absDiffYears) : i18nCommonText.yearsLater(absDiffYears);\r\n        } else if (absDiffMonths > 0 && absDiffWeeks >= threshold.week) {\r\n          return diffMonths > 0 ? i18nCommonText.monthsAgo(absDiffMonths) : i18nCommonText.monthsLater(absDiffMonths);\r\n        } else if (absDiffWeeks > 0 && absDiffDays > threshold.day) {\r\n          return diffWeeks > 0 ? i18nCommonText.weeksAgo(absDiffWeeks) : i18nCommonText.weeksLater(absDiffWeeks);\r\n        } else if (absDiffDays > 0 && absDiffHours > threshold.hour) {\r\n          return diffDays > 0 ? i18nCommonText.daysAgo(absDiffDays) : i18nCommonText.daysLater(absDiffDays);\r\n        } else if (absDiffHours > 0 && absDiffMinutes > threshold.minute) {\r\n          return diffHours > 0 ? i18nCommonText.hoursAgo(absDiffHours) : i18nCommonText.hoursLater(absDiffHours);\r\n        } else if (absDiffMinutes > 0 && absDiffSeconds > threshold.second) {\r\n          return diffMinutes > 0 ? i18nCommonText.minutesAgo(absDiffMinutes) : i18nCommonText.minutesLater(absDiffMinutes);\r\n        } else if (diffSeconds || diffSeconds === 0) {\r\n          return diffSeconds >= 0 ? i18nCommonText.justnow : i18nCommonText.later;\r\n        } else {\r\n          return '';\r\n        }\r\n      }),\r\n      takeUntil(this._destroyed$)\r\n    );\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._destroyed$.next();\r\n    this._destroyed$.complete();\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { RelativeTimePipe } from './relative-time.pipe';\n\n@NgModule({\n  declarations: [\n    RelativeTimePipe\n  ],\n  exports: [\n    RelativeTimePipe\n  ]\n})\nexport class RelativeTimeModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MASa,gBAAgB,CAAA;AAE3B,IAAA,WAAA,CAAoB,IAAiB,EAAA;QAAjB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;AAD7B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAQ,CAAC;KACD;IAEzC,SAAS,CACP,KAA6B,EAC7B,KAAa,EACb,WAAoC,EACpC,eAA0C,CAAC,EAAA;QAE3C,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SACf;AACD,QAAA,MAAM,SAAS,GAAG;YAChB,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;SACzB;AAED,QAAA,MAAM,GAAG,GAAG,WAAW,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7D,MAAM,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAO,KAAK,CAAC,CAAC;QAC9D,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;QACvF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEzC,MAAM,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAO,KAAK,CAAC,CAAC;QAChE,MAAM,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;QAC3F,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAE3C,QAAA,MAAM,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAO,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;AAChF,QAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;QACvF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEzC,MAAM,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAO,KAAK,CAAC,CAAC;QAC5D,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAQ,KAAK,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEzC,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAQ,KAAK,CAAC,CAAC;QAClE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE7C,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAQ,KAAK,CAAC,CAAC;QAClE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAE7C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAChC,GAAG,CAAC,CAAC,IAAI,KAAI;AACX,YAAA,IAAI,cAAc,GAAG,KAAK,EAAE;AAC1B,gBAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;aACxB;AACD,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC;YACzC,IAAI,YAAY,GAAG,CAAC,IAAI,aAAa,GAAG,SAAS,CAAC,KAAK,EAAE;gBACvD,OAAO,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACxG;iBAAM,IAAI,aAAa,GAAG,CAAC,IAAI,YAAY,IAAI,SAAS,CAAC,IAAI,EAAE;gBAC9D,OAAO,UAAU,GAAG,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;aAC7G;iBAAM,IAAI,YAAY,GAAG,CAAC,IAAI,WAAW,GAAG,SAAS,CAAC,GAAG,EAAE;gBAC1D,OAAO,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACxG;iBAAM,IAAI,WAAW,GAAG,CAAC,IAAI,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE;gBAC3D,OAAO,QAAQ,GAAG,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;aACnG;iBAAM,IAAI,YAAY,GAAG,CAAC,IAAI,cAAc,GAAG,SAAS,CAAC,MAAM,EAAE;gBAChE,OAAO,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACxG;iBAAM,IAAI,cAAc,GAAG,CAAC,IAAI,cAAc,GAAG,SAAS,CAAC,MAAM,EAAE;gBAClE,OAAO,WAAW,GAAG,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;aAClH;AAAM,iBAAA,IAAI,WAAW,IAAI,WAAW,KAAK,CAAC,EAAE;AAC3C,gBAAA,OAAO,WAAW,IAAI,CAAC,GAAG,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC;aACzE;iBAAM;AACL,gBAAA,OAAO,EAAE,CAAC;aACX;SACF,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAC5B,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC7B;+GAxFU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA,EAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;AACtB,iBAAA,CAAA;;;MCGY,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAlB,kBAAkB,EAAA,YAAA,EAAA,CAN3B,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAGhB,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAGP,kBAAkB,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,gBAAgB;AACjB,qBAAA;AACF,iBAAA,CAAA;;;ACVD;;AAEG;;;;"}