{"version":3,"file":"nga-translate.mjs","sources":["../../src/translate/util.ts","../../src/translate/translate-key.ts","../../src/translate/translate-prefix.directive.ts","../../src/translate/translate.pipe.ts","../../src/translate/translate.directive.ts","../../src/translate/translate.module.ts","../../src/public-api.ts","../../src/nga-translate.ts"],"sourcesContent":["/* tslint:disable */\nimport { InterpolationParameters, TranslateParser } from '@ngx-translate/core';\nimport { DefaultObject, DefaultValue } from './translate.types';\n\n/**\n * Determines if two objects or two values are equivalent.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n *   comparing them with `equals`.\n *\n * @param o1 Object or value to compare.\n * @param o2 Object or value to compare.\n * @returns true if arguments are equal.\n */\nexport function equals(o1: any, o2: any): boolean {\n  if (o1 === o2) {\n    return true;\n  }\n  if (o1 === null || o2 === null) {\n    return false;\n  }\n  if (o1 !== o1 && o2 !== o2) {\n    return true; // NaN === NaN\n  }\n  const t1 = typeof o1,\n    t2 = typeof o2;\n  let length: number, key: any, keySet: any;\n  if (t1 === t2 && t1 === 'object') {\n    if (Array.isArray(o1)) {\n      if (!Array.isArray(o2)) {\n        return false;\n      }\n      if ((length = o1.length) === o2.length) {\n        for (key = 0; key < length; key++) {\n          if (!equals(o1[key], o2[key])) {\n            return false;\n          }\n        }\n        return true;\n      }\n    } else {\n      if (Array.isArray(o2)) {\n        return false;\n      }\n      keySet = Object.create(null);\n      for (key of Object.keys(o1)) {\n        if (!equals(o1[key], o2[key])) {\n          return false;\n        }\n        keySet[key] = true;\n      }\n      for (key in o2) {\n        if (!(key in keySet) && typeof o2[key] !== 'undefined') {\n          return false;\n        }\n      }\n      return true;\n    }\n  }\n  return false;\n}\n\n/* tslint:enable */\n\nexport function isDefined(value: any): boolean {\n  return typeof value !== 'undefined' && value !== null;\n}\n\nexport function isObject(item: any): item is Record<any, any> {\n  return !!item && typeof item === 'object' && !Array.isArray(item);\n}\n\nexport function mergeDeep(target: any, source: any): any {\n  const output = Object.assign({}, target);\n  if (isObject(target) && isObject(source)) {\n    Object.keys(source).forEach((key: any) => {\n      if (isObject(source[key])) {\n        if (!(key in target)) {\n          Object.assign(output, { [key]: source[key] });\n        } else {\n          output[key] = mergeDeep(target[key], source[key]);\n        }\n      } else {\n        Object.assign(output, { [key]: source[key] });\n      }\n    });\n  }\n  return output;\n}\n\nexport function exchangeParam(value?: string): string {\n  return value?.replace('[{', '{{').replace('}]', '}}') ?? '';\n}\n\nexport function normalizeJson(json: string): string {\n  return json.replace(/(')?(\\w+)(')?(\\s)?:/g, '\"$2\":').replace(/:(\\s)?(')(.*?)(')/g, ':\"$3\"');\n}\n\nexport function getDefault(\n  parser: TranslateParser,\n  lang: string,\n  defaults: DefaultValue | undefined,\n  interpolateParams: InterpolationParameters | undefined,\n  value: string,\n): string {\n  if (typeof defaults === 'string' && defaults.length) {\n    let _default: string;\n    try {\n      defaults = JSON.parse(normalizeJson(defaults));\n      if (isObject(defaults)) {\n        return getDefault(parser, lang, defaults, interpolateParams, value);\n      } else {\n        _default = defaults ?? '';\n      }\n    } catch {\n      _default = defaults as string;\n    }\n    return parser.interpolate(exchangeParam(_default), interpolateParams) ?? '';\n  } else if (defaults) {\n    let _default: string;\n    const _defaults = defaults as DefaultObject;\n    if (lang in _defaults) {\n      _default = _defaults[lang];\n    } else {\n      _default = Object.values(_defaults)[0];\n    }\n    return parser.interpolate(exchangeParam(_default), interpolateParams) ?? '';\n  } else {\n    return value;\n  }\n}\n","export function getTranslateKey(key: string, prefix?: string | null): string {\n  const isRoot = key.startsWith('.');\n  prefix = isRoot ? '' : prefix ?? '';\n  key = isRoot ? key.substring(1) : key;\n  return prefix + key;\n}\n","import { Directive, input } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n  standalone: true,\n  selector: '[ngaTranslatePrefix]',\n})\nexport class TranslatePrefixDirective {\n  ngaTranslatePrefix = input<string | null | undefined>();\n  onPrefixChange = toObservable(this.ngaTranslatePrefix);\n}\n","import { ChangeDetectorRef, Injectable, OnDestroy, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { InterpolationParameters, TranslateParser, TranslateService, TranslationChangeEvent } from '@ngx-translate/core';\nimport { equals, getDefault, isDefined, normalizeJson } from './util';\nimport { TranslatePrefixDirective } from './translate-prefix.directive';\nimport { getTranslateKey } from './translate-key';\nimport { DefaultObject, DefaultValue, Params } from './translate.types';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n  standalone: true,\n  name: 'ngaTranslate',\n  pure: false, // required to update the value when the promise is resolved\n})\nexport class TranslatePipe implements PipeTransform, OnDestroy {\n  value: string = '';\n  lastKey: string | DefaultObject | null = null;\n  lastParams?: InterpolationParameters | string;\n  lastDefaults?: DefaultValue;\n  onTranslation: Subscription | undefined;\n  onTranslationChange: Subscription | undefined;\n  onLangChange: Subscription | undefined;\n  onDefaultLangChange: Subscription | undefined;\n  onPrefixChange: Subscription | undefined;\n\n  constructor(\n    private translate: TranslateService,\n    private parser: TranslateParser,\n    private _ref: ChangeDetectorRef,\n    @Optional() private translatePrefixDirective?: TranslatePrefixDirective,\n  ) {}\n\n  updateValue(key: string | DefaultObject, defaults?: DefaultValue, interpolateParams?: InterpolationParameters): void {\n    const translateKey = typeof key === 'string' ? getTranslateKey(key, this.translatePrefixDirective?.ngaTranslatePrefix()) : '';\n\n    const onTranslation = (res?: string): void => {\n      const value = res ?? translateKey;\n\n      if (value === translateKey) {\n        this.applyDefault(defaults, interpolateParams, value);\n      } else {\n        this.value = value;\n      }\n\n      this.lastKey = key as string;\n      this._ref.markForCheck();\n    };\n\n    if (typeof key === 'string') {\n      this.onTranslation?.unsubscribe();\n      this.onTranslation = this.translate.get(translateKey, interpolateParams).subscribe(onTranslation);\n    } else {\n      this.applyDefault(key, interpolateParams, JSON.stringify(key));\n    }\n  }\n\n  transform(query: string, defaults?: DefaultValue, params?: Params): any;\n  transform(defaults: DefaultObject, params?: Params): any;\n  transform(query: string | DefaultObject, defaults?: DefaultValue, params?: Params): any {\n    if (typeof query === 'string' && !query.length) {\n      return query;\n    }\n\n    // if we ask another time for the same key, return the last value\n    if (equals(query, this.lastKey) && equals(params, this.lastParams) && equals(defaults, this.lastDefaults)) {\n      return this.value;\n    }\n\n    if (typeof query === 'object') {\n      params = defaults;\n    }\n\n    let interpolateParams: InterpolationParameters | undefined = undefined;\n\n    if (isDefined(params)) {\n      if (typeof params === 'string' && params.length) {\n        // we accept objects written in the template such as {n:1}, {'n':1}, {n:'v'}\n        // which is why we might need to change it to real JSON objects such as {\"n\":1} or {\"n\":\"v\"}\n        try {\n          interpolateParams = JSON.parse(normalizeJson(params));\n        } catch (e) {\n          throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid object, received: ${params}`);\n        }\n      } else if (typeof params === 'object' && !Array.isArray(params)) {\n        interpolateParams = params;\n      }\n    }\n\n    // store the query, in case it changes\n    this.lastKey = query;\n\n    // store the params, in case they change\n    this.lastParams = params;\n\n    // store the defaults, in case they change\n    this.lastDefaults = defaults;\n\n    // set the value\n    this.updateValue(query, defaults, interpolateParams);\n\n    // if there is a subscription to onLangChange, clean it\n    this._dispose();\n\n    // subscribe to onTranslationChange event, in case the translations change\n    if (!this.onTranslationChange) {\n      this.onTranslationChange = this.translate.onTranslationChange.subscribe((event: TranslationChangeEvent) => {\n        if (this.lastKey && event.lang === this.translate.getCurrentLang()) {\n          this.lastKey = null;\n          this.updateValue(query, defaults, interpolateParams);\n        }\n      });\n    }\n\n    if (!this.onLangChange) {\n      this.onLangChange = this.translate.onLangChange.subscribe(() => {\n        if (this.lastKey) {\n          this.lastKey = null;\n          this.updateValue(query, defaults, interpolateParams);\n        }\n      });\n    }\n\n    // subscribe to onDefaultLangChange event, in case the default language changes\n    if (!this.onDefaultLangChange) {\n      this.onDefaultLangChange = this.translate.onFallbackLangChange.subscribe(() => {\n        if (this.lastKey) {\n          this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n          this.updateValue(query, defaults, interpolateParams);\n        }\n      });\n    }\n\n    // subscribe to onPrefixChange event, in case the default language changes\n    if (!this.onPrefixChange) {\n      this.onPrefixChange = this.translatePrefixDirective?.onPrefixChange.subscribe(() => {\n        if (this.lastKey) {\n          this.lastKey = null;\n          this.updateValue(query, defaults, interpolateParams);\n        }\n      });\n    }\n\n    return this.value;\n  }\n\n  ngOnDestroy(): void {\n    this._dispose();\n  }\n\n  private applyDefault(defaults: DefaultValue | undefined, interpolateParams: InterpolationParameters | undefined, value: string): void {\n    this.value = getDefault(this.parser, this.translate.getCurrentLang(), defaults, interpolateParams, value);\n  }\n\n  /**\n   * Clean any existing subscription to change events\n   */\n  private _dispose(): void {\n    this.onTranslationChange?.unsubscribe();\n    this.onTranslationChange = undefined;\n    this.onTranslation?.unsubscribe();\n    this.onTranslation = undefined;\n    this.onDefaultLangChange?.unsubscribe();\n    this.onDefaultLangChange = undefined;\n    this.onLangChange?.unsubscribe();\n    this.onLangChange = undefined;\n    this.onPrefixChange?.unsubscribe();\n    this.onPrefixChange = undefined;\n  }\n}\n","import { Directive, ElementRef, inject, input, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { InterpolationParameters, TranslateParser, TranslateService } from '@ngx-translate/core';\n\nimport { getDefault } from './util';\nimport { Subscription } from 'rxjs';\nimport { TranslatePrefixDirective } from './translate-prefix.directive';\nimport { getTranslateKey } from './translate-key';\nimport { DefaultValue } from './translate.types';\n\n/**\n * A wrapper directive on top of the translation pipe as the inbuilt translation directive from ngx-translate is too verbose and buggy\n */\n@Directive({\n  standalone: true,\n  selector: '[ngaTranslate]',\n})\nexport class TranslateDirective implements OnChanges, OnInit, OnDestroy {\n  ngaTranslate = input<string>();\n  translateValues = input<InterpolationParameters>();\n  translatePrefix = inject(TranslatePrefixDirective, { optional: true });\n  translateService = inject(TranslateService);\n  translateParser = inject(TranslateParser);\n  el = inject(ElementRef);\n\n  defaults?: DefaultValue | null;\n\n  onPrefixChange: Subscription | undefined;\n  onTranslationChange: Subscription | undefined;\n  onLangChange: Subscription | undefined;\n  onDefaultLangChange: Subscription | undefined;\n  onTranslationGets: Subscription[] = [];\n\n  translationNotFoundMessage = 'translation-not-found';\n\n  ngOnInit(): void {\n    this.onTranslationChange = this.translateService.onTranslationChange.subscribe(() => this.getTranslation());\n    this.onLangChange = this.translateService.onLangChange.subscribe(() => this.getTranslation());\n    this.onDefaultLangChange = this.translateService.onFallbackLangChange.subscribe(() => this.getTranslation());\n    this.onPrefixChange = this.translatePrefix?.onPrefixChange.subscribe(() => this.getTranslation());\n  }\n\n  ngOnChanges(): void {\n    this.getTranslation();\n  }\n\n  ngOnDestroy(): void {\n    this._dispose();\n  }\n\n  private getTranslation(): void {\n    if (!this.defaults) {\n      this.defaults = this.el.nativeElement.innerHTML;\n    }\n    const key = this.ngaTranslate();\n    if (!key) {\n      this.applyDefault('');\n      return;\n    }\n\n    const translateKey = getTranslateKey(key, this.translatePrefix?.ngaTranslatePrefix());\n    const translateValues = this.translateValues();\n\n    const onGet = this.translateService.get(translateKey, translateValues).subscribe({\n      next: (value: string) => {\n        if (value === translateKey) {\n          this.applyDefault(value);\n        } else {\n          this.el.nativeElement.innerHTML = value;\n        }\n      },\n      error: () => `${this.translationNotFoundMessage}[${translateKey}]`,\n    });\n\n    this.onTranslationGets.push(onGet);\n  }\n\n  private applyDefault(value: string): void {\n    this.el.nativeElement.innerHTML = getDefault(\n      this.translateParser,\n      this.translateService.getCurrentLang(),\n      this.defaults ?? undefined,\n      this.translateValues(),\n      value,\n    );\n  }\n\n  /**\n   * Clean any existing subscription to change events\n   */\n  private _dispose(): void {\n    this.onPrefixChange?.unsubscribe();\n    this.onPrefixChange = undefined;\n    this.onTranslationChange?.unsubscribe();\n    this.onTranslationChange = undefined;\n    this.onLangChange?.unsubscribe();\n    this.onLangChange = undefined;\n    this.onDefaultLangChange?.unsubscribe();\n    this.onDefaultLangChange = undefined;\n    for (const onTranslationGet of this.onTranslationGets) {\n      onTranslationGet.unsubscribe();\n    }\n    this.onTranslationGets = [];\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TranslateDirective } from './translate.directive';\nimport { TranslatePipe } from './translate.pipe';\nimport { TranslatePrefixDirective } from './translate-prefix.directive';\n\n@NgModule({\n  imports: [TranslateModule, TranslatePrefixDirective, TranslateDirective, TranslatePipe],\n  exports: [TranslateDirective, TranslatePipe, TranslatePrefixDirective],\n})\nexport class NgaTranslateModule {}\n","// region translate\nexport * from './translate/translate.pipe';\nexport * from './translate/translate.directive';\nexport * from './translate/translate.module';\nexport * from './translate/translate-prefix.directive';\nexport * from './translate/translate-key';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.TranslatePrefixDirective"],"mappings":"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"}