{"version":3,"file":"ngx-timeago.mjs","sources":["../../../lib/src/util.ts","../../../lib/src/timeago.intl.ts","../../../lib/src/timeago.formatter.ts","../../../lib/src/timeago.clock.ts","../../../lib/src/timeago.directive.ts","../../../lib/src/timeago.pipe.ts","../../../lib/src/timeago.module.ts","../../../lib/src/timeago.providers.ts","../../../lib/src/ngx-timeago.ts"],"sourcesContent":["export function isDefined(value: any): boolean {\n  return typeof value !== 'undefined' && value !== null;\n}\n\nexport function coerceBooleanProperty(value: any): boolean {\n  return value != null && `${value}` !== 'false';\n}\n\nexport function dateParser(date: any): Date {\n  const parsed = new Date(date);\n  if (!Number.isNaN(parsed.valueOf())) {\n    return parsed;\n  }\n\n  const parts: string[] = String(date).match(/\\d+/g);\n  if (parts === null || parts.length <= 2) {\n    return parsed;\n  } else {\n    const [firstP, secondP, ...restPs] = parts.map(x => parseInt(x, 10));\n    return new Date(Date.UTC(firstP, secondP - 1, ...restPs));\n  }\n}\n\nexport const MINUTE = 60;\nexport const HOUR = MINUTE * 60;\nexport const DAY = HOUR * 24;\nexport const WEEK = DAY * 7;\nexport const MONTH = DAY * 30;\nexport const YEAR = DAY * 365;\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { StringOrFn, NumberArray } from './timeago.formatter';\n\nexport interface IL10nsStrings {\n  prefixAgo?: StringOrFn;\n  prefixFromNow?: StringOrFn;\n  suffixAgo?: StringOrFn;\n  suffixFromNow?: StringOrFn;\n  second?: StringOrFn;\n  seconds?: StringOrFn;\n  minute?: StringOrFn;\n  minutes?: StringOrFn;\n  hour?: StringOrFn;\n  hours?: StringOrFn;\n  day?: StringOrFn;\n  days?: StringOrFn;\n  week?: StringOrFn;\n  weeks?: StringOrFn;\n  month?: StringOrFn;\n  months?: StringOrFn;\n  year?: StringOrFn;\n  years?: StringOrFn;\n  wordSeparator?: string;\n  numbers?: NumberArray;\n}\n\n/**\n * To modify the text displayed, create a new instance of TimeagoIntl and\n * include it in a custom provider\n */\n@Injectable()\nexport class TimeagoIntl {\n  strings: IL10nsStrings;\n\n  /**\n   * Stream that emits whenever the l10n strings are changed\n   * Use this to notify directives if the l10n strings have changed after initialization.\n   */\n  readonly changes: Subject<void> = new Subject<void>();\n}\n","import { Injectable } from '@angular/core';\nimport { TimeagoIntl } from './timeago.intl';\nimport { MINUTE, HOUR, DAY, WEEK, MONTH, YEAR } from './util';\n\nexport type Unit = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';\n\nexport type Suffix = 'ago' | 'from now';\n\nexport type StringOrFn = ((value: number, millisDelta: number) => string) | string;\n\nexport type NumberArray = [\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n];\n\nconst defaultFormattter = function (then: number): { value: number; unit: Unit; suffix: Suffix } {\n  const now = Date.now();\n  const seconds = Math.round(Math.abs(now - then) / 1000);\n  const suffix: Suffix = then < now ? 'ago' : 'from now';\n\n  const [value, unit]: [number, Unit] =\n    seconds < MINUTE\n      ? [Math.round(seconds), 'second']\n      : seconds < HOUR\n        ? [Math.round(seconds / MINUTE), 'minute']\n        : seconds < DAY\n          ? [Math.round(seconds / HOUR), 'hour']\n          : seconds < WEEK\n            ? [Math.round(seconds / DAY), 'day']\n            : seconds < MONTH\n              ? [Math.round(seconds / WEEK), 'week']\n              : seconds < YEAR\n                ? [Math.round(seconds / MONTH), 'month']\n                : [Math.round(seconds / YEAR), 'year'];\n\n  return { value, unit, suffix };\n};\n\nexport abstract class TimeagoFormatter {\n  abstract format(then: number): string;\n}\n\n@Injectable()\nexport class TimeagoDefaultFormatter extends TimeagoFormatter {\n  format(then: number): string {\n    const { suffix, value, unit } = defaultFormattter(then);\n    return this.parse(value, unit, suffix);\n  }\n\n  private parse(value: number, unit: Unit, suffix: Suffix): string {\n    if (value !== 1) {\n      unit += 's';\n    }\n    return value + ' ' + unit + ' ' + suffix;\n  }\n}\n\n@Injectable()\nexport class TimeagoCustomFormatter extends TimeagoFormatter {\n  constructor(private intl: TimeagoIntl) {\n    super();\n  }\n\n  format(then: number): string {\n    const { suffix, value, unit } = defaultFormattter(then);\n    return this.parse(value, unit, suffix, Date.now(), then);\n  }\n\n  private parse(value: number, unit: Unit, suffix: Suffix, now: number, then: number) {\n    /** convert weeks to days if strings don't handle weeks */\n    if (unit === 'week' && !this.intl.strings.week && !this.intl.strings.weeks) {\n      const days = Math.round(Math.abs(now - then) / (1000 * 60 * 60 * 24));\n      value = days;\n      unit = 'day';\n    }\n\n    /** create a normalize function for given value */\n    const normalize = this.normalizeFn(value, now - then, this.intl.strings.numbers);\n\n    /** The eventual return value stored in an array so that the wordSeparator can be used */\n    const dateString: string[] = [];\n\n    /** handle prefixes */\n    if (suffix === 'ago' && this.intl.strings.prefixAgo) {\n      dateString.push(normalize(this.intl.strings.prefixAgo));\n    }\n    if (suffix === 'from now' && this.intl.strings.prefixFromNow) {\n      dateString.push(normalize(this.intl.strings.prefixFromNow));\n    }\n\n    /** Handle Main number and unit */\n    const isPlural = value > 1;\n    if (isPlural) {\n      const stringFn: StringOrFn =\n        this.intl.strings[unit + 's'] || this.intl.strings[unit] || '%d ' + unit;\n      dateString.push(normalize(stringFn));\n    } else {\n      const stringFn: StringOrFn =\n        this.intl.strings[unit] || this.intl.strings[unit + 's'] || '%d ' + unit;\n      dateString.push(normalize(stringFn));\n    }\n\n    /** Handle Suffixes */\n    if (suffix === 'ago' && this.intl.strings.suffixAgo) {\n      dateString.push(normalize(this.intl.strings.suffixAgo));\n    }\n    if (suffix === 'from now' && this.intl.strings.suffixFromNow) {\n      dateString.push(normalize(this.intl.strings.suffixFromNow));\n    }\n\n    /** join the array into a string and return it */\n    const wordSeparator =\n      typeof this.intl.strings.wordSeparator === 'string' ? this.intl.strings.wordSeparator : ' ';\n    return dateString.join(wordSeparator);\n  }\n\n  /**\n   * If the numbers array is present, format numbers with it,\n   * otherwise just cast the number to a string and return it\n   */\n  private normalizeNumber(numbers: NumberArray, value: number) {\n    return numbers && numbers.length === 10\n      ? String(value)\n          .split('')\n          .map((digit: string) => (digit.match(/^[0-9]$/) ? numbers[parseInt(digit, 10)] : digit))\n          .join('')\n      : String(value);\n  }\n\n  /**\n   * Take a string or a function that takes number of days and returns a string\n   * and provide a uniform API to create string parts\n   */\n  private normalizeFn(value: number, millisDelta: number, numbers?: NumberArray) {\n    return (stringOrFn: StringOrFn) =>\n      typeof stringOrFn === 'function'\n        ? stringOrFn(value, millisDelta).replace(/%d/g, this.normalizeNumber(numbers, value))\n        : stringOrFn.replace(/%d/g, this.normalizeNumber(numbers, value));\n  }\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { Observable, of, empty, timer, EMPTY } from 'rxjs';\nimport { expand, skip } from 'rxjs/operators';\nimport { MINUTE, HOUR, DAY } from './util';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport abstract class TimeagoClock {\n  abstract tick(then: number): Observable<any>;\n}\n\n@Injectable()\nexport class TimeagoDefaultClock extends TimeagoClock {\n  constructor(@Inject(PLATFORM_ID) private platformId: Object) {\n    super();\n  }\n\n  tick(then: number): Observable<any> {\n    return isPlatformBrowser(this.platformId) ? this.browserTick(then) : EMPTY;\n  }\n\n  private browserTick(then: number): Observable<any> {\n    return of(0).pipe(\n      expand(() => {\n        const now = Date.now();\n        const seconds = Math.round(Math.abs(now - then) / 1000);\n\n        const period =\n          seconds < MINUTE\n            ? 1000\n            : seconds < HOUR\n              ? 1000 * MINUTE\n              : seconds < DAY\n                ? 1000 * HOUR\n                : 0;\n\n        return period ? timer(period) : EMPTY;\n      }),\n      skip(1)\n    );\n  }\n}\n","import {\n  Directive,\n  Input,\n  ElementRef,\n  Optional,\n  OnChanges,\n  OnDestroy,\n  ChangeDetectorRef,\n  NgZone,\n} from '@angular/core';\nimport { Subscription, Subject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { TimeagoClock } from './timeago.clock';\nimport { TimeagoFormatter } from './timeago.formatter';\nimport { TimeagoIntl } from './timeago.intl';\nimport { isDefined, coerceBooleanProperty, dateParser } from './util';\n\n@Directive({\n  selector: '[timeago]',\n  exportAs: 'timeago',\n  standalone: true,\n})\nexport class TimeagoDirective implements OnChanges, OnDestroy {\n  private intlSubscription: Subscription;\n  private clockSubscription: Subscription;\n\n  /**\n   * Emits on:\n   * - Input change\n   * - Intl change\n   * - Clock tick\n   */\n  stateChanges = new Subject<void>();\n\n  /** The Date to display. An actual Date object or something that can be fed to new Date. */\n  @Input()\n  get date(): any {\n    return this._date;\n  }\n  set date(date: any) {\n    this._date = dateParser(date).valueOf();\n    if (this._date) {\n      if (this.clockSubscription) {\n        this.clockSubscription.unsubscribe();\n        this.clockSubscription = undefined;\n      }\n      this.clockSubscription = this.clock\n        .tick(this.date)\n        .pipe(filter(() => this.live, this))\n        .subscribe(() => this.stateChanges.next());\n    } else {\n      throw new SyntaxError(\n        `Wrong parameter in TimeagoDirective. Expected a valid date, received: ${date}`\n      );\n    }\n  }\n  private _date: number;\n\n  /** If the directive should update itself over time */\n  @Input()\n  get live(): boolean {\n    return this._live;\n  }\n  set live(live: boolean) {\n    this._live = coerceBooleanProperty(live);\n  }\n  private _live = true;\n\n  constructor(\n    @Optional() intl: TimeagoIntl,\n    formatter: TimeagoFormatter,\n    element: ElementRef,\n    private cd: ChangeDetectorRef,\n    private clock: TimeagoClock,\n    private ngZone: NgZone\n  ) {\n    if (intl) {\n      this.intlSubscription = intl.changes.subscribe(() => this.stateChanges.next());\n    }\n    this.ngZone.runOutsideAngular(() => {\n      this.stateChanges.subscribe(() => {\n        this.setContent(element.nativeElement, formatter.format(this.date));\n        this.ngZone.run(() => this.cd.markForCheck());\n      });\n    });\n  }\n\n  ngOnChanges() {\n    this.stateChanges.next();\n  }\n\n  setContent(node: any, content: string) {\n    if (isDefined(node.textContent)) {\n      node.textContent = content;\n    } else {\n      node.data = content;\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.intlSubscription) {\n      this.intlSubscription.unsubscribe();\n      this.intlSubscription = undefined;\n    }\n    if (this.clockSubscription) {\n      this.clockSubscription.unsubscribe();\n      this.clockSubscription = undefined;\n    }\n    this.stateChanges.complete();\n  }\n}\n","import {\n  Injectable,\n  OnDestroy,\n  Pipe,\n  PipeTransform,\n  Optional,\n  ChangeDetectorRef,\n  NgZone,\n} from '@angular/core';\nimport { Subscription, Subject } from 'rxjs';\nimport { TimeagoClock } from './timeago.clock';\nimport { TimeagoFormatter } from './timeago.formatter';\nimport { TimeagoIntl } from './timeago.intl';\nimport { isDefined, coerceBooleanProperty, dateParser } from './util';\nimport { filter } from 'rxjs/operators';\n\n@Injectable()\n@Pipe({\n  name: 'timeago',\n  pure: false,\n  standalone: true,\n})\nexport class TimeagoPipe implements PipeTransform, OnDestroy {\n  private intlSubscription: Subscription;\n  private clockSubscription: Subscription;\n\n  private date: number;\n  private value: string;\n  private live = true;\n\n  /**\n   * Emits on:\n   * - Input change\n   * - Intl change\n   * - Clock tick\n   */\n  stateChanges = new Subject<void>();\n\n  constructor(\n    @Optional() intl: TimeagoIntl,\n    cd: ChangeDetectorRef,\n    formatter: TimeagoFormatter,\n    private clock: TimeagoClock,\n    private ngZone: NgZone\n  ) {\n    if (intl) {\n      this.intlSubscription = intl.changes.subscribe(() => this.stateChanges.next());\n    }\n    this.ngZone.runOutsideAngular(() => {\n      this.stateChanges.subscribe(() => {\n        this.value = formatter.format(this.date);\n        this.ngZone.run(() => cd.markForCheck());\n      });\n    });\n  }\n\n  transform(date: any, ...args: any[]) {\n    const _date = dateParser(date).valueOf();\n    let _live: boolean;\n\n    _live = isDefined(args[0]) ? coerceBooleanProperty(args[0]) : this.live;\n\n    if (this.date === _date && this.live === _live) {\n      return this.value;\n    }\n\n    this.date = _date;\n    this.live = _live;\n\n    if (this.date) {\n      if (this.clockSubscription) {\n        this.clockSubscription.unsubscribe();\n        this.clockSubscription = undefined;\n      }\n      this.clockSubscription = this.clock\n        .tick(this.date)\n        .pipe(filter(() => this.live, this))\n        .subscribe(() => this.stateChanges.next());\n      this.stateChanges.next();\n    } else {\n      throw new SyntaxError(\n        `Wrong parameter in TimeagoPipe. Expected a valid date, received: ${date}`\n      );\n    }\n\n    return this.value;\n  }\n\n  ngOnDestroy() {\n    if (this.intlSubscription) {\n      this.intlSubscription.unsubscribe();\n      this.intlSubscription = undefined;\n    }\n    if (this.clockSubscription) {\n      this.clockSubscription.unsubscribe();\n      this.clockSubscription = undefined;\n    }\n    this.stateChanges.complete();\n  }\n}\n","import { NgModule, ModuleWithProviders, Provider } from '@angular/core';\nimport { TimeagoDirective } from './timeago.directive';\nimport { TimeagoPipe } from './timeago.pipe';\nimport { TimeagoClock, TimeagoDefaultClock } from './timeago.clock';\nimport { TimeagoFormatter, TimeagoDefaultFormatter } from './timeago.formatter';\n\nexport interface TimeagoModuleConfig {\n  clock?: Provider;\n  intl?: Provider;\n  formatter?: Provider;\n}\n\n@NgModule({\n  imports: [TimeagoDirective, TimeagoPipe],\n  exports: [TimeagoDirective, TimeagoPipe],\n})\nexport class TimeagoModule {\n  /**\n   * Use this method in your root module to provide the TimeagoModule\n   */\n  static forRoot(config: TimeagoModuleConfig = {}): ModuleWithProviders<TimeagoModule> {\n    return {\n      ngModule: TimeagoModule,\n      providers: [\n        config.clock || { provide: TimeagoClock, useClass: TimeagoDefaultClock },\n        config.intl || [],\n        config.formatter || { provide: TimeagoFormatter, useClass: TimeagoDefaultFormatter },\n      ],\n    };\n  }\n\n  /**\n   * Use this method in your other (non root) modules to import the directive/pipe\n   */\n  static forChild(config: TimeagoModuleConfig = {}): ModuleWithProviders<TimeagoModule> {\n    return {\n      ngModule: TimeagoModule,\n      providers: [\n        config.clock || { provide: TimeagoClock, useClass: TimeagoDefaultClock },\n        config.intl || [],\n        config.formatter || { provide: TimeagoFormatter, useClass: TimeagoDefaultFormatter },\n      ],\n    };\n  }\n}\n","import { Provider, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { TimeagoClock, TimeagoDefaultClock } from './timeago.clock';\nimport { TimeagoFormatter, TimeagoDefaultFormatter } from './timeago.formatter';\n\nexport interface TimeagoConfig {\n  clock?: Provider;\n  intl?: Provider;\n  formatter?: Provider;\n}\n\n/**\n * Provides the TimeagoModule services for standalone components.\n * Use this function in your application config when using standalone components.\n *\n * @example\n * ```ts\n * import { provideTimeago } from 'ngx-timeago';\n *\n * export const appConfig: ApplicationConfig = {\n *   providers: [\n *     provideTimeago({ clock: { provide: TimeagoClock, useClass: MyClock } })\n *   ]\n * };\n * ```\n */\nexport function provideTimeago(config: TimeagoConfig = {}): EnvironmentProviders {\n  const providers: Provider[] = [\n    config.clock || { provide: TimeagoClock, useClass: TimeagoDefaultClock },\n    config.formatter || { provide: TimeagoFormatter, useClass: TimeagoDefaultFormatter },\n  ];\n\n  if (config.intl) {\n    providers.push(config.intl);\n  }\n\n  return makeEnvironmentProviders(providers);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.TimeagoIntl","i2.TimeagoFormatter","i3.TimeagoClock"],"mappings":"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"}