{"version":3,"file":"bootkit-angular-localization.mjs","sources":["../../../projects/bootkit/localization/locale.ts","../../../projects/bootkit/localization/localization.service.ts","../../../projects/bootkit/localization/date.pipe.ts","../../../projects/bootkit/localization/locales/en-us.ts","../../../projects/bootkit/localization/translate.pipe.ts","../../../projects/bootkit/localization/translate-enum.pipe.ts","../../../projects/bootkit/localization/translate-boolean.pipe.ts","../../../projects/bootkit/localization/timespan.pipe.ts","../../../projects/bootkit/localization/localization.module.ts","../../../projects/bootkit/localization/bootkit-angular-localization.ts"],"sourcesContent":["import { LocaleData, LocaleDictionary, LocaleEnums, FormErrors } from \"./locale-data\";\r\nimport { LocalizedValidationError } from \"./types\";\r\n\r\n/** Locale */\r\nexport class Locale {\r\n  constructor(public readonly data: LocaleData) {\r\n    data.dictionary = data.dictionary || {};\r\n    data.enums = data.enums || {};\r\n    data.form = data.form || {};\r\n    data.form.errors = data.form.errors || {};\r\n  }\r\n\r\n  get name(): string {\r\n    return this.data.name;\r\n  }\r\n\r\n  /** Extends this object */\r\n  extend(data: {\r\n    dictionary?: LocaleDictionary,\r\n    enums?: LocaleEnums,\r\n    errors?: FormErrors\r\n  }) {\r\n    this.data.dictionary = { ...this.data.dictionary, ...data.dictionary }\r\n    this.data.enums = { ...this.data.enums, ...data.enums }\r\n    this.data.form.errors = { ...this.data.form.errors, ...data.errors }\r\n  }\r\n\r\n  /** Looks up a key in the locale dictionary */\r\n  translate(key: string): string {\r\n    return this.data.dictionary[key] ?? key;\r\n  }\r\n\r\n  /** Translates an enum */\r\n  translateEnum(enumName: string, enumValue: any): string | undefined {\r\n    if (this.data.enums[enumName])\r\n      return this.data.enums[enumName][enumValue];\r\n\r\n    return undefined;\r\n  }\r\n\r\n  /** Translates first validation error */\r\n  translateError(errors: any): string | undefined {\r\n    const e = this.data.form.errors;\r\n    var firstError = Object.keys(errors)[0]\r\n\r\n    const f = e[firstError] || e['*'];\r\n    return typeof f == 'function' ? f(errors) : undefined\r\n  }\r\n\r\n  // /** Translates validation errors */\r\n  // translateErrors(errors: any): { [key: string]: LocalizedValidationError } {\r\n  //   const result: { [key: string]: LocalizedValidationError } = {};\r\n  //   for (const key in errors) {\r\n  //     if (Object.prototype.hasOwnProperty.call(errors, key)) {\r\n  //       result[key] = {\r\n  //         key: key,\r\n  //         value: errors[key],\r\n  //         text: this.translateError(key, errors[key])\r\n  //       };\r\n  //     }\r\n  //   }\r\n\r\n  //   return result;\r\n  // }\r\n\r\n  formatDate(date: string | number, format: string): string {\r\n    return date ? new Date(date).toLocaleDateString(this.name, { hour: '2-digit', minute: '2-digit' }) : '';\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Locale } from './locale';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class LocalizationService {\r\n  private _locales: Locale[] = [];\r\n  private _activeLocale?: Locale;\r\n  private _changeSubject = new BehaviorSubject<Locale | undefined>(undefined);\r\n  readonly change = this._changeSubject.asObservable();\r\n\r\n  constructor() {\r\n  }\r\n\r\n  /** Adds a Locale */\r\n  add(locale: Locale): void;\r\n  /** Adds an array of Locales */\r\n  add(locales: Locale[]): void;\r\n  add(l: any): void {\r\n    if (l instanceof Locale) {\r\n      this._locales.push(l);\r\n    } else if (Array.isArray(l)) {\r\n      l.forEach(x => this.add(x));\r\n    } else {\r\n      throw Error('Invalid locale');\r\n    }\r\n\r\n    if (this._locales.length == 1) {\r\n      this._activeLocale = this._locales[0];\r\n      this._changeSubject.next(this._activeLocale)\r\n    }\r\n  }\r\n\r\n  /** Changes the active locale */\r\n  setActive(localeName: string): Locale {\r\n    const locale = this._locales.find(x => x.name === localeName);\r\n    if (locale) {\r\n      this._changeSubject.next(locale);\r\n      this._activeLocale = locale;\r\n      return locale;\r\n    }\r\n\r\n    throw Error('Locale not found.');\r\n  }\r\n\r\n  /** Gets the active locale */\r\n  getActive(): Locale {\r\n    if (this._activeLocale)\r\n      return this._activeLocale;\r\n\r\n    throw new Error('No Locale found');\r\n  }\r\n\r\n  tryGetActive(): Locale | undefined {\r\n    return this._locales.length == 0 ? undefined : this.getActive();\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Locale } from './locale';\r\nimport { LocalizationService } from './localization.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Pipe({\r\n  name: 'bkDate',\r\n  standalone: true,\r\n  pure: false\r\n})\r\nexport class DatePipe implements PipeTransform {\r\n  private _locale: Locale;\r\n  private _value!: string;\r\n\r\n  constructor(localeProvider: LocalizationService) {\r\n    this._locale = localeProvider.getActive();\r\n\r\n    localeProvider.change.pipe(takeUntilDestroyed()).subscribe(x => this._locale = x)\r\n  }\r\n\r\n  transform(value: number | string): string {\r\n    return this._locale.formatDate(value, '');\r\n  }\r\n}\r\n","import { Locale } from '../locale';\r\n\r\nexport const EN_US_LOCALE = new Locale({\r\n    name: 'en-US',\r\n    rtl: false,\r\n    dictionary: {\r\n        ok: 'Ok',\r\n        cancel: 'Cancel',\r\n        Byte: 'B',\r\n        KiloByte: 'KB',\r\n        MegaByte: 'MB',\r\n        GigaByte: 'GB',\r\n        TeraByte: 'TB',\r\n        noRecords: 'No records.',\r\n        next: 'Next',\r\n        previous: 'Previous',\r\n        dataTablePagination: 'Page {0} of {1}',\r\n        warning: 'Warning',\r\n        areYouSure: 'Are you sure?'\r\n    },\r\n    form: {\r\n        errors: {\r\n            required: (e) => `Required`,\r\n            min: (e) => `Minimum value: ${e.requiredMin}`,\r\n            max: (e) => `Maximum value: ${e.requiredMax}`,\r\n            minlength: (e) => `Minimum length: ${e.minlength}`,\r\n            maxlength: (e) => `Maximum length: ${e.maxlength}`,\r\n            email: (e) => `Invalid email`,\r\n            '*': (e) => 'invalid',\r\n        }\r\n    }\r\n});\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\nimport { Locale } from './locale';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Pipe({\r\n  name: 'bkTranslate',\r\n  standalone: true,\r\n  pure: false\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n  private _locale: Locale;\r\n  private _recompute = true;\r\n  private _value!: string;\r\n\r\n  constructor(ls: LocalizationService) {\r\n    this._locale = ls.getActive();\r\n\r\n    ls.change.pipe(takeUntilDestroyed()).subscribe(x => {\r\n      this._locale = x;\r\n      this._recompute = true;\r\n    });\r\n  }\r\n\r\n  transform(dictionaryKey: string, ...args: unknown[]): string {\r\n    if (this._recompute) {\r\n      this._value = this._locale.translate(dictionaryKey);\r\n      this._recompute = false;\r\n    }\r\n\r\n    return this._value;\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\nimport { Locale } from './locale';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Pipe({\r\n  name: 'bkTranslateEnum',\r\n  standalone: true,\r\n  pure: false\r\n})\r\nexport class TranslateEnumPipe implements PipeTransform {\r\n  private _locale: Locale;\r\n  private _recompute = true;\r\n  private _value!: string;\r\n\r\n  constructor(ls: LocalizationService) {\r\n    this._locale = ls.getActive();\r\n\r\n    ls.change.pipe(takeUntilDestroyed()).subscribe(x => {\r\n      this._locale = x;\r\n      this._recompute = true;\r\n    });\r\n  }\r\n\r\n  transform(enumValue?: string | null, ...args: string[]): string {\r\n    if (this._recompute) {\r\n      var enumName = args[0];\r\n      var nullDictionaryKey = args[1];\r\n      this._value = enumValue ?\r\n        (this._locale.translateEnum(enumName, enumValue) ?? enumValue) :\r\n        (nullDictionaryKey ? this._locale.translate(nullDictionaryKey) : '');\r\n\r\n      this._recompute = false;\r\n    }\r\n\r\n    return this._value;\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\nexport type BooleanTranslateFormat = 'yesNo' | 'enableDisable';\r\n\r\n@Pipe({\r\n  name: 'bkTranslateBool',\r\n  standalone: true,\r\n  pure: false\r\n})\r\nexport class TranslateBooleanPipe implements PipeTransform {\r\n  constructor(private ls: LocalizationService) {\r\n  }\r\n\r\n  transform(value: any, format: BooleanTranslateFormat = 'yesNo') {\r\n    let key: string;\r\n\r\n    switch (format) {\r\n      case 'yesNo':\r\n        key = value ? 'yes' : 'no';\r\n        break;\r\n      case 'enableDisable':\r\n        key = value ? 'enable' : 'disable';\r\n        break;\r\n      default:\r\n        throw Error('Unknown format');\r\n    }\r\n\r\n    return this.ls.getActive().translate(key);\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TimeSpan } from '@bootkit/angular/date';\r\n\r\n@Pipe({\r\n  name: 'bkTimeSpan',\r\n  standalone: true,\r\n  pure: false\r\n})\r\nexport class TimeSpanPipe implements PipeTransform {\r\n  transform(value: number | TimeSpan): string {\r\n    if (value === null || value === undefined) {\r\n      return '';\r\n    }\r\n\r\n    const and = ' و ';\r\n    var ts = typeof value == 'number' ?  TimeSpan.fromMilliseconds(value): value;\r\n    var s = '';\r\n\r\n    if (ts.months > 0) {\r\n      s += `${ts.months} ماه`;\r\n      s += ts.days > 0 || ts.hours > 0 || ts.minutes > 0 ? and : ''\r\n    }\r\n    if (ts.days > 0) {\r\n      s += `${ts.days} روز`;\r\n      s += ts.hours > 0 || ts.minutes > 0 ? and : ''\r\n    }\r\n    if (ts.hours > 0) {\r\n      s += `${ts.hours} ساعت`;\r\n      s += ts.minutes > 0 ? and : ''\r\n    }\r\n    if (ts.minutes > 0) {\r\n      s += `${ts.minutes} دقیقه`;\r\n    }\r\n    if (ts.months == 0 && ts.days == 0 && ts.hours == 0 && ts.minutes == 0) {\r\n      s = `0`;\r\n    }\r\n    return s;\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { TranslatePipe } from './translate.pipe';\r\nimport { TranslateEnumPipe } from './translate-enum.pipe';\r\nimport { TranslateBooleanPipe } from './translate-boolean.pipe';\r\nimport { DatePipe } from './date.pipe';\r\nimport { TimeSpanPipe } from './timespan.pipe';\r\n\r\nconst items = [\r\n  TranslatePipe,\r\n  TranslateEnumPipe,\r\n  TranslateBooleanPipe,\r\n  TimeSpanPipe,\r\n  DatePipe\r\n];\r\n\r\n@NgModule({\r\n  imports: items,\r\n  exports: items\r\n})\r\nexport class LocalizationModule {\r\n}\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocalizationService"],"mappings":"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"}