{"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 */\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) return true;\n  if (o1 === null || o2 === null) return false;\n  if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n  let t1 = typeof o1,\n    t2 = typeof o2,\n    length: number,\n    key: any,\n    keySet: any;\n  if (t1 == t2 && t1 == 'object') {\n    if (Array.isArray(o1)) {\n      if (!Array.isArray(o2)) return false;\n      if ((length = o1.length) == o2.length) {\n        for (key = 0; key < length; key++) {\n          if (!equals(o1[key], o2[key])) return false;\n        }\n        return true;\n      }\n    } else {\n      if (Array.isArray(o2)) {\n        return false;\n      }\n      keySet = Object.create(null);\n      for (key in 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): boolean {\n  return item && typeof item === 'object' && !Array.isArray(item);\n}\n\nexport function mergeDeep(target: any, source: any): any {\n  let 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","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 {isObservable, Subscription} from 'rxjs';\nimport {TranslateParser, TranslateService, TranslationChangeEvent} from '@ngx-translate/core';\nimport {LangChangeEvent} from '@ngx-translate/core/lib/translate.service';\nimport {equals, exchangeParam, isDefined} from './util';\nimport {TranslatePrefixDirective} from './translate-prefix.directive';\nimport {getTranslateKey} from './translate-key';\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 | Object | null = null;\n  lastParams?: Object | string;\n  lastDefaults?: Object | string;\n  onTranslationChange: Subscription | undefined;\n  onLangChange: Subscription | undefined;\n  onDefaultLangChange: Subscription | undefined;\n  onPrefixChange: Subscription | undefined;\n\n  constructor(\n    private translate: TranslateService,\n    @Optional() private translatePrefixDirective: TranslatePrefixDirective,\n    private parser: TranslateParser,\n    private _ref: ChangeDetectorRef,\n  ) {\n  }\n\n  updateValue(key: string | Object, defaults?: Object | string, interpolateParams?: Object, translations?: any): void {\n    const translateKey = typeof key === 'string'\n      ? getTranslateKey(key, this.translatePrefixDirective?.ngaTranslatePrefix())\n      : '';\n\n    let onTranslation = (res: string) => {\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    if (translations && typeof key === 'string') {\n      let res = this.translate.getParsedResult(translations, translateKey, interpolateParams);\n      if (isObservable(res.subscribe)) {\n        res.subscribe(onTranslation);\n      } else {\n        onTranslation(res);\n      }\n    }\n\n    if (typeof key === 'string') {\n      this.translate.get(translateKey, interpolateParams).subscribe(onTranslation);\n    } else {\n      this.applyDefault(key, interpolateParams, JSON.stringify(key));\n    }\n  }\n\n  private applyDefault(defaults: Object | string | undefined, interpolateParams: Object | undefined, value: string) {\n    if (typeof defaults === 'string' && defaults.length) {\n      const validArgs: string = defaults.replace(/(')?(\\w+)(')?(\\s)?:/g, '\"$2\":').replace(/:(\\s)?(')(.*?)(')/g, ':\"$3\"');\n      try {\n        defaults = JSON.parse(validArgs);\n        const default1 = exchangeParam((defaults as any)[this.translate.currentLang]);\n        this.value = this.parser.interpolate(default1, interpolateParams) ?? '';\n      } catch (e) {\n        const defaults1 = exchangeParam(defaults as string);\n        this.value = this.parser.interpolate(defaults1, interpolateParams) ?? '';\n      }\n    } else if (defaults && this.translate.currentLang in (defaults as Object)) {\n      const default1 = exchangeParam((defaults as any)[this.translate.currentLang]);\n      this.value = this.parser.interpolate(default1, interpolateParams) ?? '';\n    } else {\n      this.value = value;\n    }\n  }\n\n  transform(query: string, defaults?: Object | string, params?: Object | string): any;\n  transform(defaults: Object, params?: Object | string): any;\n\n  transform(query: string | Object, defaults?: Object | string, params?: Object | string): 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: Object | 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        let validArgs: string = params.replace(/(')?(\\w+)(')?(\\s)?:/g, '\"$2\":').replace(/:(\\s)?(')(.*?)(')/g, ':\"$3\"');\n        try {\n          interpolateParams = JSON.parse(validArgs);\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.currentLang) {\n          this.lastKey = null;\n          this.updateValue(query, defaults, interpolateParams, event.translations);\n        }\n      });\n    }\n\n    // subscribe to onLangChange event, in case the language changes\n    if (!this.onLangChange) {\n      this.onLangChange = this.translate.onLangChange.subscribe((event: LangChangeEvent) => {\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, event.translations);\n        }\n      });\n    }\n\n    // subscribe to onDefaultLangChange event, in case the default language changes\n    if (!this.onDefaultLangChange) {\n      this.onDefaultLangChange = this.translate.onDefaultLangChange.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  /**\n   * Clean any existing subscription to change events\n   */\n  private _dispose(): void {\n    if (typeof this.onTranslationChange !== 'undefined') {\n      this.onTranslationChange.unsubscribe();\n      this.onTranslationChange = undefined;\n    }\n    if (typeof this.onLangChange !== 'undefined') {\n      this.onLangChange.unsubscribe();\n      this.onLangChange = undefined;\n    }\n    if (typeof this.onDefaultLangChange !== 'undefined') {\n      this.onDefaultLangChange.unsubscribe();\n      this.onDefaultLangChange = undefined;\n    }\n    if (typeof this.onPrefixChange !== 'undefined') {\n      this.onPrefixChange.unsubscribe();\n      this.onPrefixChange = undefined;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this._dispose();\n  }\n}\n","import { Directive, ElementRef, inject, input, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { TranslateParser, TranslateService } from '@ngx-translate/core';\n\nimport { exchangeParam } from './util';\nimport { Subscription } from 'rxjs';\nimport { TranslatePrefixDirective } from './translate-prefix.directive';\nimport { getTranslateKey } from './translate-key';\n\n/**\n * A wrapper directive on top of the translate pipe as the inbuilt translate 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.required<string>();\n  translateValues = input<{ [key: string]: unknown } | string>();\n  translatePrefix = inject(TranslatePrefixDirective, { optional: true });\n  translateService = inject(TranslateService);\n  translateParser = inject(TranslateParser);\n  el = inject(ElementRef);\n\n  defaults?: string | 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.onDefaultLangChange.subscribe(() => this.getTranslation());\n    this.onPrefixChange = this.translatePrefix?.onPrefixChange.subscribe(() => this.getTranslation());\n  }\n\n  ngOnChanges(): void {\n    this.getTranslation();\n  }\n\n  private getTranslation(): void {\n    if (!this.defaults) {\n      this.defaults = this.el.nativeElement.innerHTML;\n    }\n\n    const translateKey = getTranslateKey(this.ngaTranslate(), this.translatePrefix?.ngaTranslatePrefix());\n    const translateValues = this.translateValues();\n\n    if (!this.ngaTranslate) {\n      this.applyDefault(this.ngaTranslate);\n      return;\n    }\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    if (typeof this.defaults === 'string' && this.defaults.length) {\n      const validArgs: string = this.defaults.replace(/(')?(\\w+)(')?(\\s)?:/g, '\"$2\":').replace(/:(\\s)?(')(.*?)(')/g, ':\"$3\"');\n      try {\n        const objectDefaults = JSON.parse(validArgs);\n        const default1 = exchangeParam(objectDefaults[this.translateService.currentLang]);\n        this.el.nativeElement.innerHTML = this.translateParser.interpolate(default1, this.translateValues) ?? '';\n      } catch (e) {\n        const defaults1 = exchangeParam(this.defaults);\n        this.el.nativeElement.innerHTML = this.translateParser.interpolate(defaults1, this.translateValues);\n      }\n    } else if (this.defaults && this.translateService.currentLang in (this.defaults as Object)) {\n      const default1 = exchangeParam((this.defaults as any)[this.translateService.currentLang]);\n      this.el.nativeElement.innerHTML = this.translateParser.interpolate(default1, this.translateValues) ?? '';\n    } else {\n      this.el.nativeElement.innerHTML = value;\n    }\n  }\n\n  /**\n   * Clean any existing subscription to change events\n   */\n  private _dispose(): void {\n    if (typeof this.onPrefixChange !== 'undefined') {\n      this.onPrefixChange.unsubscribe();\n      this.onPrefixChange = undefined;\n    }\n    if (typeof this.onTranslationChange !== 'undefined') {\n      this.onTranslationChange.unsubscribe();\n      this.onTranslationChange = undefined;\n    }\n    if (typeof this.onLangChange !== 'undefined') {\n      this.onLangChange.unsubscribe();\n      this.onLangChange = undefined;\n    }\n    if (typeof this.onDefaultLangChange !== 'undefined') {\n      this.onDefaultLangChange.unsubscribe();\n      this.onDefaultLangChange = undefined;\n    }\n    for (const onTranslationGet of this.onTranslationGets) {\n      if (typeof onTranslationGet !== 'undefined') {\n        onTranslationGet.unsubscribe();\n      }\n    }\n    this.onTranslationGets = [];\n  }\n\n  ngOnDestroy(): void {\n    this._dispose();\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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"}