{"version":3,"file":"jsverse-transloco.mjs","sources":["../../../../libs/transloco/src/lib/transloco.loader.ts","../../../../libs/transloco/src/lib/transloco.config.ts","../../../../libs/transloco/src/lib/utils/object.utils.ts","../../../../libs/transloco/src/lib/transloco.transpiler.ts","../../../../libs/transloco/src/lib/transloco-missing-handler.ts","../../../../libs/transloco/src/lib/transloco.interceptor.ts","../../../../libs/transloco/src/lib/transloco-fallback-strategy.ts","../../../../libs/transloco/src/lib/resolve-loader.ts","../../../../libs/transloco/src/lib/get-fallbacks-loaders.ts","../../../../libs/transloco/src/lib/utils/flat.utils.ts","../../../../libs/transloco/src/lib/utils/scope.utils.ts","../../../../libs/transloco/src/lib/transloco.service.ts","../../../../libs/transloco/src/lib/loader-component.component.ts","../../../../libs/transloco/src/lib/template-handler.ts","../../../../libs/transloco/src/lib/transloco-lang.ts","../../../../libs/transloco/src/lib/transloco-loading-template.ts","../../../../libs/transloco/src/lib/transloco-scope.ts","../../../../libs/transloco/src/lib/utils/pipe.utils.ts","../../../../libs/transloco/src/lib/utils/lang.utils.ts","../../../../libs/transloco/src/lib/lang-resolver.ts","../../../../libs/transloco/src/lib/scope-resolver.ts","../../../../libs/transloco/src/lib/transloco.directive.ts","../../../../libs/transloco/src/lib/transloco.pipe.ts","../../../../libs/transloco/src/lib/transloco.module.ts","../../../../libs/transloco/src/lib/transloco.providers.ts","../../../../libs/transloco/src/lib/transloco-testing.module.ts","../../../../libs/transloco/src/lib/transloco.signal.ts","../../../../libs/transloco/src/lib/utils/browser.utils.ts","../../../../libs/transloco/src/jsverse-transloco.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nimport { Translation } from './transloco.types';\n\nexport interface TranslocoLoader {\n  getTranslation(\n    lang: string,\n    data?: TranslocoLoaderData,\n  ): Observable<Translation> | Promise<Translation>;\n}\n\nexport type TranslocoLoaderData = {\n  scope: string;\n};\n\nexport class DefaultLoader implements TranslocoLoader {\n  constructor(private translations: Map<string, Translation>) {}\n\n  getTranslation(lang: string): Observable<Translation> {\n    return of(this.translations.get(lang) || {});\n  }\n}\n\nexport const TRANSLOCO_LOADER =\n  /* @__PURE__ */ new InjectionToken<TranslocoLoader>(\n    ngDevMode ? 'TRANSLOCO_LOADER' : '',\n  );\n","import { InjectionToken } from '@angular/core';\n\nimport { AvailableLangs } from './transloco.types';\n\nexport interface TranslocoConfig {\n  defaultLang: string;\n  reRenderOnLangChange: boolean;\n  prodMode: boolean;\n  fallbackLang?: string | string[];\n  failedRetries: number;\n  availableLangs: AvailableLangs;\n  flatten: {\n    aot: boolean;\n  };\n  missingHandler: {\n    logMissingKey: boolean;\n    useFallbackTranslation: boolean;\n    allowEmpty: boolean;\n  };\n  interpolation: [string, string];\n  scopes: {\n    keepCasing?: boolean;\n    autoPrefixKeys?: boolean;\n  };\n}\n\nexport const TRANSLOCO_CONFIG =\n  /* @__PURE__ */ new InjectionToken<TranslocoConfig>(\n    ngDevMode ? 'TRANSLOCO_CONFIG' : '',\n    {\n      providedIn: 'root',\n      factory: () => defaultConfig,\n    },\n  );\n\nexport const defaultConfig: TranslocoConfig = {\n  defaultLang: 'en',\n  reRenderOnLangChange: false,\n  prodMode: false,\n  failedRetries: 2,\n  fallbackLang: [],\n  availableLangs: [],\n  missingHandler: {\n    logMissingKey: true,\n    useFallbackTranslation: false,\n    allowEmpty: false,\n  },\n  flatten: {\n    aot: false,\n  },\n  interpolation: ['{{', '}}'],\n  scopes: {\n    keepCasing: false,\n    autoPrefixKeys: true,\n  },\n};\n\ntype DeepPartial<T> =\n  T extends Array<any>\n    ? T\n    : T extends object\n      ? { [P in keyof T]?: DeepPartial<T[P]> }\n      : T;\n\nexport type PartialTranslocoConfig = DeepPartial<TranslocoConfig>;\n\nexport function translocoConfig(\n  config: PartialTranslocoConfig = {},\n): TranslocoConfig {\n  return {\n    ...defaultConfig,\n    ...config,\n    missingHandler: {\n      ...defaultConfig.missingHandler,\n      ...config.missingHandler,\n    },\n    flatten: {\n      ...defaultConfig.flatten,\n      ...config.flatten,\n    },\n    scopes: {\n      ...defaultConfig.scopes,\n      ...config.scopes,\n    },\n  };\n}\n","export function getValue<T>(obj: T, path: keyof T) {\n  if (!obj) {\n    return obj;\n  }\n\n  /* For cases where the key is like: 'general.something.thing' */\n  if (Object.prototype.hasOwnProperty.call(obj, path)) {\n    return obj[path];\n  }\n\n  return (path as string).split('.').reduce((p, c) => p?.[c], obj as any);\n}\n\nexport function setValue(obj: any, prop: string, val: any) {\n  obj = { ...obj };\n\n  const split = prop.split('.');\n  const lastIndex = split.length - 1;\n\n  split.reduce((acc, part, index) => {\n    if (index === lastIndex) {\n      acc[part] = val;\n    } else {\n      acc[part] = Array.isArray(acc[part])\n        ? acc[part].slice()\n        : { ...acc[part] };\n    }\n\n    return acc && acc[part];\n  }, obj);\n\n  return obj;\n}\n","import { inject, Injectable, InjectionToken, Injector } from '@angular/core';\nimport { isDefined, isObject, isString } from '@jsverse/utils';\n\nimport { Translation } from './transloco.types';\nimport {\n  defaultConfig,\n  TRANSLOCO_CONFIG,\n  TranslocoConfig,\n} from './transloco.config';\nimport { HashMap } from './utils/type.utils';\nimport { getValue, setValue } from './utils/object.utils';\n\nexport const TRANSLOCO_TRANSPILER =\n  /* @__PURE__ */ new InjectionToken<TranslocoTranspiler>(\n    ngDevMode ? 'TRANSLOCO_TRANSPILER' : '',\n  );\n\nexport interface TranslocoTranspiler {\n  transpile(params: TranspileParams): any;\n\n  onLangChanged?(lang: string): void;\n}\n\nexport interface TranspileParams<V = unknown> {\n  value: V;\n  params?: HashMap;\n  translation: Translation;\n  key: string;\n}\n\n@Injectable()\nexport class DefaultTranspiler implements TranslocoTranspiler {\n  protected config =\n    inject(TRANSLOCO_CONFIG, { optional: true }) ?? defaultConfig;\n\n  protected get interpolationMatcher() {\n    return resolveMatcher(this.config);\n  }\n\n  transpile({ value, params = {}, translation, key }: TranspileParams): any {\n    if (isString(value)) {\n      let paramMatch: RegExpExecArray | null;\n      let parsedValue = value;\n\n      while (\n        (paramMatch = this.interpolationMatcher.exec(parsedValue)) !== null\n      ) {\n        const [match, paramValue] = paramMatch;\n        parsedValue = parsedValue.replace(match, () => {\n          const match = paramValue.trim();\n\n          const param = getValue(params, match);\n          if (isDefined(param)) {\n            return param;\n          }\n\n          return isDefined(translation[match])\n            ? this.transpile({\n                params,\n                translation,\n                key,\n                value: translation[match],\n              })\n            : '';\n        });\n      }\n\n      return parsedValue;\n    } else if (params) {\n      if (isObject(value)) {\n        value = this.handleObject({\n          value,\n          params,\n          translation,\n          key,\n        });\n      } else if (Array.isArray(value)) {\n        value = this.handleArray({ value, params, translation, key });\n      }\n    }\n\n    return value;\n  }\n\n  /**\n   *\n   * @example\n   *\n   * const en = {\n   *  a: {\n   *    b: {\n   *      c: \"Hello {{ value }}\"\n   *    }\n   *  }\n   * }\n   *\n   * const params =  {\n   *  \"b.c\": { value: \"Transloco \"}\n   * }\n   *\n   * service.selectTranslate('a', params);\n   *\n   * // the first param will be the result of `en.a`.\n   * // the second param will be `params`.\n   * parser.transpile(value, params, {});\n   *\n   *\n   */\n  protected handleObject({\n    value,\n    params = {},\n    translation,\n    key,\n  }: TranspileParams<Record<any, any>>) {\n    let result = value;\n\n    Object.keys(params).forEach((p) => {\n      // transpile the value => \"Hello Transloco\"\n      const transpiled = this.transpile({\n        // get the value of \"b.c\" inside \"a\" => \"Hello {{ value }}\"\n        value: getValue(result, p),\n        // get the params of \"b.c\" => { value: \"Transloco\" }\n        params: getValue(params, p),\n        translation,\n        key,\n      });\n\n      // set \"b.c\" to `transpiled`\n      result = setValue(result, p, transpiled);\n    });\n\n    return result;\n  }\n\n  protected handleArray({ value, ...rest }: TranspileParams<unknown[]>) {\n    return value.map((v) =>\n      this.transpile({\n        value: v,\n        ...rest,\n      }),\n    );\n  }\n}\n\nfunction resolveMatcher(config: TranslocoConfig): RegExp {\n  const [start, end] = config.interpolation;\n\n  return new RegExp(`${start}([^${start}${end}]*?)${end}`, 'g');\n}\n\nexport interface TranslocoTranspilerFunction {\n  transpile(...args: string[]): any;\n}\n\nexport function getFunctionArgs(argsString: string): string[] {\n  const splitted = argsString ? argsString.split(',') : [];\n  const args = [];\n  for (let i = 0; i < splitted.length; i++) {\n    let value = splitted[i].trim();\n    while (value[value.length - 1] === '\\\\') {\n      i++;\n      value = value.replace('\\\\', ',') + splitted[i];\n    }\n    args.push(value);\n  }\n\n  return args;\n}\n\n@Injectable()\nexport class FunctionalTranspiler\n  extends DefaultTranspiler\n  implements TranslocoTranspiler\n{\n  protected injector = inject(Injector);\n\n  transpile({ value, ...rest }: TranspileParams) {\n    let transpiled = value;\n    if (isString(value)) {\n      transpiled = value.replace(\n        /\\[\\[\\s*(\\w+)\\((.*?)\\)\\s*]]/g,\n        (match: string, functionName: string, args: string) => {\n          try {\n            const func: TranslocoTranspilerFunction =\n              this.injector.get(functionName);\n\n            return func.transpile(...getFunctionArgs(args));\n          } catch (e: unknown) {\n            let message = `There is an error in: '${value}'. \n                          Check that the you used the right syntax in your translation and that the implementation of ${functionName} is correct.`;\n            if ((e as Error).message.includes('NullInjectorError')) {\n              message = `You are using the '${functionName}' function in your translation but no provider was found!`;\n            }\n            throw new Error(message);\n          }\n        },\n      );\n    }\n\n    return super.transpile({ value: transpiled, ...rest });\n  }\n}\n","import { Injectable, InjectionToken } from '@angular/core';\n\nimport { TranslocoConfig } from './transloco.config';\nimport { HashMap } from './utils/type.utils';\n\nexport const TRANSLOCO_MISSING_HANDLER =\n  /* @__PURE__ */ new InjectionToken<TranslocoMissingHandler>(\n    ngDevMode ? 'TRANSLOCO_MISSING_HANDLER' : '',\n  );\n\nexport interface TranslocoMissingHandlerData extends TranslocoConfig {\n  activeLang: string;\n}\n\nexport interface TranslocoMissingHandler {\n  handle(key: string, data: TranslocoMissingHandlerData, params?: HashMap): any;\n}\n\n@Injectable()\nexport class DefaultMissingHandler implements TranslocoMissingHandler {\n  handle(key: string, config: TranslocoConfig) {\n    if (config.missingHandler.logMissingKey && !config.prodMode) {\n      const msg = `Missing translation for '${key}'`;\n      console.warn(`%c ${msg}`, 'font-size: 12px; color: red');\n    }\n\n    return key;\n  }\n}\n","import { Injectable, InjectionToken } from '@angular/core';\n\nimport { Translation } from './transloco.types';\n\nexport const TRANSLOCO_INTERCEPTOR =\n  /* @__PURE__ */ new InjectionToken<TranslocoInterceptor>(\n    ngDevMode ? 'TRANSLOCO_INTERCEPTOR' : '',\n  );\n\nexport interface TranslocoInterceptor {\n  preSaveTranslation(translation: Translation, lang: string): Translation;\n\n  preSaveTranslationKey(key: string, value: string, lang: string): string;\n}\n\n@Injectable()\nexport class DefaultInterceptor implements TranslocoInterceptor {\n  preSaveTranslation(translation: Translation): Translation {\n    return translation;\n  }\n\n  preSaveTranslationKey(_: string, value: string): string {\n    return value;\n  }\n}\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\n\nimport { TRANSLOCO_CONFIG, TranslocoConfig } from './transloco.config';\n\nexport const TRANSLOCO_FALLBACK_STRATEGY =\n  /* @__PURE__ */ new InjectionToken<TranslocoFallbackStrategy>(\n    ngDevMode ? 'TRANSLOCO_FALLBACK_STRATEGY' : '',\n  );\n\nexport interface TranslocoFallbackStrategy {\n  getNextLangs(failedLang: string): string[];\n}\n\n@Injectable()\nexport class DefaultFallbackStrategy implements TranslocoFallbackStrategy {\n  constructor(@Inject(TRANSLOCO_CONFIG) private userConfig: TranslocoConfig) {}\n\n  getNextLangs() {\n    const fallbackLang = this.userConfig.fallbackLang;\n    if (!fallbackLang) {\n      throw new Error(\n        'When using the default fallback, a fallback language must be provided in the config!',\n      );\n    }\n\n    return Array.isArray(fallbackLang) ? fallbackLang : [fallbackLang];\n  }\n}\n","import { isFunction } from '@jsverse/utils';\n\nimport { TranslocoLoader, TranslocoLoaderData } from './transloco.loader';\nimport { InlineLoader } from './transloco.types';\n\ninterface Options {\n  inlineLoader?: InlineLoader;\n  path: string;\n  mainLoader: TranslocoLoader;\n  data?: TranslocoLoaderData;\n}\n\nexport function resolveLoader(options: Options) {\n  const { path, inlineLoader, mainLoader, data } = options;\n\n  if (inlineLoader) {\n    const pathLoader = inlineLoader[path];\n    if (isFunction(pathLoader) === false) {\n      throw `You're using an inline loader but didn't provide a loader for ${path}`;\n    }\n\n    return inlineLoader[path]().then((res) =>\n      res.default ? res.default : res,\n    );\n  }\n\n  return mainLoader.getTranslation(path, data);\n}\n","import { from, map } from 'rxjs';\n\nimport { resolveLoader } from './resolve-loader';\nimport { TranslocoLoader, TranslocoLoaderData } from './transloco.loader';\nimport { InlineLoader } from './transloco.types';\n\ninterface Options {\n  path: string;\n  fallbackPath?: string;\n  inlineLoader?: InlineLoader;\n  mainLoader: TranslocoLoader;\n  data?: TranslocoLoaderData;\n}\n\nexport function getFallbacksLoaders({\n  mainLoader,\n  path,\n  data,\n  fallbackPath,\n  inlineLoader,\n}: Options) {\n  const paths = fallbackPath ? [path, fallbackPath] : [path];\n\n  return paths.map((path) => {\n    const loader = resolveLoader({ path, mainLoader, inlineLoader, data });\n\n    return from(loader).pipe(\n      map((translation) => ({\n        translation,\n        lang: path,\n      })),\n    );\n  });\n}\n","import { isObject } from '@jsverse/utils';\n\nimport { Translation } from '../transloco.types';\n\nexport function flatten(obj: Translation): Translation {\n  const result: Record<string, unknown> = {};\n\n  function recurse(curr: unknown, prop: string) {\n    if (curr === null) {\n      result[prop] = null;\n    } else if (isObject(curr)) {\n      for (const [key, value] of Object.entries(curr)) {\n        recurse(value, prop ? `${prop}.${key}` : key);\n      }\n    } else {\n      result[prop] = curr;\n    }\n  }\n\n  recurse(obj, '');\n  return result;\n}\n\nexport function unflatten(obj: Translation): Translation {\n  const result: Record<string, unknown> = {};\n\n  for (const [key, value] of Object.entries(obj)) {\n    const keys = key.split('.');\n    let current = result;\n\n    keys.forEach((key, i) => {\n      if (i === keys.length - 1) {\n        current[key] = value;\n      } else {\n        current[key] ??= {};\n        current = current[key] as Record<string, unknown>;\n      }\n    });\n  }\n\n  return result;\n}\n","import { isObject } from '@jsverse/utils';\n\nimport {\n  InlineLoader,\n  LoadedEvent,\n  ProviderScope,\n  TranslocoScope,\n} from '../transloco.types';\n\n/*\n * @example\n *\n * given: lazy-page/en => lazy-page\n *\n */\nexport function getScopeFromLang(lang: string): string {\n  if (!lang) {\n    return '';\n  }\n\n  const split = lang.split('/');\n  split.pop();\n\n  return split.join('/');\n}\n\n/*\n * @example\n *\n * given: lazy-page/en => en\n *\n */\nexport function getLangFromScope(lang: string): string {\n  if (!lang) {\n    return '';\n  }\n\n  return lang.split('/').pop()!;\n}\n\nfunction prependScope(inlineLoader: InlineLoader, scope: string) {\n  return Object.keys(inlineLoader).reduce(\n    (acc, lang) => {\n      acc[`${scope}/${lang}`] = inlineLoader[lang];\n\n      return acc;\n    },\n    {} as Record<string, InlineLoader[keyof InlineLoader]>,\n  );\n}\n\nexport function isScopeObject(item: any): item is ProviderScope {\n  return typeof item?.scope === 'string';\n}\n\nexport function hasInlineLoader(item: any): item is ProviderScope {\n  return item?.loader && isObject(item.loader);\n}\n\nexport function resolveInlineLoader(\n  providerScope: TranslocoScope | null,\n  scope?: string,\n): InlineLoader | undefined {\n  return hasInlineLoader(providerScope)\n    ? prependScope(providerScope.loader!, scope!)\n    : undefined;\n}\n\nexport function getEventPayload(lang: string): LoadedEvent['payload'] {\n  return {\n    scope: getScopeFromLang(lang) || null,\n    langName: getLangFromScope(lang),\n  };\n}\n","import {\n  DestroyRef,\n  inject,\n  Inject,\n  Injectable,\n  Optional,\n  type Signal,\n} from '@angular/core';\nimport {\n  BehaviorSubject,\n  catchError,\n  combineLatest,\n  EMPTY,\n  forkJoin,\n  from,\n  map,\n  Observable,\n  of,\n  retry,\n  shareReplay,\n  Subject,\n  switchMap,\n  tap,\n} from 'rxjs';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { isEmpty, isNil, isString, size, toCamelCase } from '@jsverse/utils';\n\nimport {\n  DefaultLoader,\n  TRANSLOCO_LOADER,\n  TranslocoLoader,\n} from './transloco.loader';\nimport {\n  TRANSLOCO_TRANSPILER,\n  TranslocoTranspiler,\n} from './transloco.transpiler';\nimport {\n  AvailableLangs,\n  InlineLoader,\n  LangDefinition,\n  LoadOptions,\n  SetTranslationOptions,\n  TranslateObjectParams,\n  TranslateParams,\n  Translation,\n  TranslocoEvents,\n  TranslocoScope,\n} from './transloco.types';\nimport { TRANSLOCO_CONFIG, TranslocoConfig } from './transloco.config';\nimport {\n  TRANSLOCO_MISSING_HANDLER,\n  TranslocoMissingHandler,\n  TranslocoMissingHandlerData,\n} from './transloco-missing-handler';\nimport {\n  TRANSLOCO_INTERCEPTOR,\n  TranslocoInterceptor,\n} from './transloco.interceptor';\nimport {\n  TRANSLOCO_FALLBACK_STRATEGY,\n  TranslocoFallbackStrategy,\n} from './transloco-fallback-strategy';\nimport { getFallbacksLoaders } from './get-fallbacks-loaders';\nimport { resolveLoader } from './resolve-loader';\nimport { flatten, unflatten } from './utils/flat.utils';\nimport { HashMap } from './utils/type.utils';\nimport {\n  getEventPayload,\n  getLangFromScope,\n  getScopeFromLang,\n  isScopeObject,\n  resolveInlineLoader,\n} from './utils/scope.utils';\n\nlet service: TranslocoService;\n\nexport function translate<T = string>(\n  key: TranslateParams,\n  params: HashMap = {},\n  lang?: string,\n): T {\n  return service.translate<T>(key, params, lang);\n}\n\nexport function translateObject<T>(\n  key: TranslateParams,\n  params: HashMap = {},\n  lang?: string,\n): T | T[] {\n  return service.translateObject<T>(key, params, lang);\n}\n\nexport class TranslationLoadError extends Error {\n  constructor(\n    readonly lang: string,\n    readonly fallbackLangs: string[],\n    readonly isScope: boolean,\n  ) {\n    let msg = `Unable to load translation and all the fallback languages`;\n    if (isScope) {\n      msg += `, did you misspell the scope name?`;\n    }\n    super(msg);\n    this.name = 'TranslationLoadError';\n  }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class TranslocoService {\n  langChanges$: Observable<string>;\n\n  private translations = new Map<string, Translation>();\n  private cache = new Map<string, Observable<Translation>>();\n  private firstFallbackLang: string | undefined;\n  private defaultLang = '';\n  private availableLangs: AvailableLangs = [];\n  private isResolvedMissingOnce = false;\n  private lang: BehaviorSubject<string>;\n  private failedLangs = new Set<string>();\n  private events = new Subject<TranslocoEvents>();\n\n  events$ = this.events.asObservable();\n  readonly config: TranslocoConfig & {\n    scopeMapping?: HashMap<string>;\n  };\n\n  /**\n   * A signal that reflects the currently active language.\n   *\n   * @example\n   *\n   * const upper = computed(() => this.transloco.activeLang().toUpperCase());\n   *\n   * const lang = linkedSignal(() => this.transloco.activeLang());\n   */\n  readonly activeLang: Signal<string>;\n\n  private destroyRef = inject(DestroyRef);\n  private destroyed = false;\n\n  constructor(\n    @Optional() @Inject(TRANSLOCO_LOADER) private loader: TranslocoLoader,\n    @Inject(TRANSLOCO_TRANSPILER) private parser: TranslocoTranspiler,\n    @Inject(TRANSLOCO_MISSING_HANDLER)\n    private missingHandler: TranslocoMissingHandler,\n    @Inject(TRANSLOCO_INTERCEPTOR) private interceptor: TranslocoInterceptor,\n    @Inject(TRANSLOCO_CONFIG) userConfig: TranslocoConfig,\n    @Inject(TRANSLOCO_FALLBACK_STRATEGY)\n    private fallbackStrategy: TranslocoFallbackStrategy,\n  ) {\n    if (!this.loader) {\n      this.loader = new DefaultLoader(this.translations);\n    }\n    service = this;\n    this.config = JSON.parse(JSON.stringify(userConfig));\n\n    this.setAvailableLangs(this.config.availableLangs || []);\n    this.setFallbackLangForMissingTranslation(this.config);\n    this.setDefaultLang(this.config.defaultLang);\n    this.lang = new BehaviorSubject<string>(this.getDefaultLang());\n    // Don't use distinctUntilChanged as we need the ability to update\n    // the value when using setTranslation or setTranslationKeys\n    this.langChanges$ = this.lang.asObservable();\n\n    this.activeLang = toSignal(this.lang, { requireSync: true });\n\n    /**\n     * When we have a failure, we want to define the next language that succeeded as the active\n     */\n    this.events$.subscribe((e) => {\n      if (e.type === 'translationLoadSuccess' && e.wasFailure) {\n        this.setActiveLang(e.payload.langName);\n      }\n    });\n\n    this.destroyRef.onDestroy(() => {\n      this.destroyed = true;\n      // Complete subjects to release observers if users forget to unsubscribe manually.\n      // This is important in server-side rendering.\n      this.lang.complete();\n      this.events.complete();\n      // As a root provider, this service is destroyed with when the application is destroyed.\n      // Cached values retain `this`, causing circular references that block garbage collection,\n      // leading to memory leaks during server-side rendering.\n      this.cache.clear();\n    });\n  }\n\n  getDefaultLang() {\n    return this.defaultLang;\n  }\n\n  setDefaultLang(lang: string) {\n    this.defaultLang = lang;\n  }\n\n  getActiveLang() {\n    return this.lang.getValue();\n  }\n\n  setActiveLang(lang: string) {\n    this.parser.onLangChanged?.(lang);\n    this.lang.next(lang);\n    this.events.next({\n      type: 'langChanged',\n      payload: getEventPayload(lang),\n    });\n    return this;\n  }\n\n  setAvailableLangs(langs: AvailableLangs) {\n    this.availableLangs = langs;\n  }\n\n  /**\n   * Gets the available languages.\n   *\n   * @returns\n   * An array of the available languages. Can be either a `string[]` or a `{ id: string; label: string }[]`\n   * depending on how the available languages are set in your module.\n   */\n  getAvailableLangs() {\n    return this.availableLangs;\n  }\n\n  load(path: string, options: LoadOptions = {}): Observable<Translation> {\n    // If the application has already been destroyed, return an empty observable.\n    // We use EMPTY instead of NEVER to ensure the observable completes.\n    // This is important for operators like switchMap, which rely on the inner observable completing\n    // before they can subscribe to the next one. NEVER would hang the chain indefinitely.\n    if (this.destroyed) {\n      return EMPTY;\n    }\n\n    const cached = this.cache.get(path);\n    if (cached) {\n      return cached;\n    }\n\n    let loadTranslation: Observable<\n      Translation | { translation: Translation; lang: string }[]\n    >;\n    const isScope = this._isLangScoped(path);\n    let scope: string;\n    if (isScope) {\n      scope = getScopeFromLang(path);\n    }\n\n    const loadersOptions = {\n      path,\n      mainLoader: this.loader,\n      inlineLoader: options.inlineLoader,\n      data: isScope ? { scope: scope! } : undefined,\n    };\n\n    if (this.useFallbackTranslation(path)) {\n      // if the path is scope the fallback should be `scope/fallbackLang`;\n      const fallback = isScope\n        ? `${scope!}/${this.firstFallbackLang}`\n        : this.firstFallbackLang;\n\n      const loaders = getFallbacksLoaders({\n        ...loadersOptions,\n        fallbackPath: fallback!,\n      });\n      loadTranslation = forkJoin(loaders);\n    } else {\n      const loader = resolveLoader(loadersOptions);\n      loadTranslation = from(loader);\n    }\n\n    const load$ = loadTranslation.pipe(\n      retry(this.config.failedRetries),\n      tap((translation) => {\n        if (Array.isArray(translation)) {\n          translation.forEach((t) => {\n            this.handleSuccess(t.lang, t.translation);\n            // Save the fallback in cache so we'll not create a redundant request\n            if (t.lang !== path) {\n              this.cache.set(t.lang, of({}));\n            }\n          });\n          return;\n        }\n        this.handleSuccess(path, translation);\n      }),\n      catchError((error) => {\n        if (!this.config.prodMode) {\n          console.error(`Error while trying to load \"${path}\"`, error);\n        }\n\n        return this.handleFailure(path, options);\n      }),\n      shareReplay(1),\n      takeUntilDestroyed(this.destroyRef),\n    );\n\n    this.cache.set(path, load$);\n\n    return load$;\n  }\n\n  /**\n   * Gets the instant translated value of a key\n   *\n   * @example\n   *\n   * translate<string>('hello')\n   * translate('hello', { value: 'value' })\n   * translate<string[]>(['hello', 'key'])\n   * translate('hello', { }, 'en')\n   * translate('scope.someKey', { }, 'en')\n   */\n  translate<T = string>(\n    key: TranslateParams,\n    params: HashMap = {},\n    lang = this.getActiveLang(),\n  ): T {\n    if (!key) return key as any;\n\n    const { scope, resolveLang } = this.resolveLangAndScope(lang);\n\n    if (Array.isArray(key)) {\n      return key.map((k) =>\n        this.translate(\n          this.config.scopes.autoPrefixKeys && scope ? `${scope}.${k}` : k,\n          params,\n          resolveLang,\n        ),\n      ) as any;\n    }\n\n    key = this.config.scopes.autoPrefixKeys && scope ? `${scope}.${key}` : key;\n\n    const translation = this.getTranslation(resolveLang);\n    const value = translation[key];\n\n    if (!value) {\n      return this._handleMissingKey(key, value, params);\n    }\n\n    return this.parser.transpile({\n      value,\n      params,\n      translation,\n      key,\n    });\n  }\n\n  /**\n   * Gets the translated value of a key as observable\n   *\n   * @example\n   *\n   * selectTranslate<string>('hello').subscribe(value => ...)\n   * selectTranslate<string>('hello', {}, 'es').subscribe(value => ...)\n   * selectTranslate<string>('hello', {}, 'todos').subscribe(value => ...)\n   * selectTranslate<string>('hello', {}, { scope: 'todos' }).subscribe(value => ...)\n   *\n   */\n  selectTranslate<T = any>(\n    key: TranslateParams,\n    params?: HashMap,\n    lang?: string | TranslocoScope | TranslocoScope[],\n    _isObject = false,\n  ): Observable<T> {\n    let inlineLoader: InlineLoader | undefined;\n    const load = (lang: string, options?: LoadOptions) =>\n      this.load(lang, options).pipe(\n        map(() =>\n          _isObject\n            ? this.translateObject(key, params, lang)\n            : this.translate(key, params, lang),\n        ),\n      );\n    if (isNil(lang)) {\n      return this.langChanges$.pipe(switchMap((lang) => load(lang)));\n    }\n\n    lang = Array.isArray(lang) ? lang[lang.length - 1] : lang;\n    if (isScopeObject(lang)) {\n      // it's a scope object.\n      const providerScope = lang;\n      lang = providerScope.scope;\n      inlineLoader = resolveInlineLoader(providerScope, providerScope.scope);\n    }\n\n    lang = lang as string;\n    if (this.isLang(lang) || this.isScopeWithLang(lang)) {\n      return load(lang);\n    }\n    // it's a scope\n    const scope = lang;\n    return this.langChanges$.pipe(\n      switchMap((lang) => load(`${scope}/${lang}`, { inlineLoader })),\n    );\n  }\n\n  /**\n   * Whether the scope with lang\n   *\n   * @example\n   *\n   * todos/en => true\n   * todos => false\n   */\n  private isScopeWithLang(lang: string) {\n    return this.isLang(getLangFromScope(lang));\n  }\n\n  /**\n   * Translate the given path that returns an object\n   *\n   * @example\n   *\n   * service.translateObject('path.to.object', {'subpath': { value: 'someValue'}}) => returns translated object\n   *\n   */\n  translateObject<T = any>(key: string, params?: HashMap, lang?: string): T;\n  translateObject<T = any>(key: string[], params?: HashMap, lang?: string): T[];\n  translateObject<T = any>(\n    key: TranslateParams,\n    params?: HashMap,\n    lang?: string,\n  ): T | T[];\n  translateObject<T = any>(\n    key: HashMap | Map<string, HashMap>,\n    params?: null,\n    lang?: string,\n  ): T[];\n  translateObject<T = any>(\n    key: TranslateObjectParams,\n    params: HashMap | null = {},\n    lang = this.getActiveLang(),\n  ): T | T[] {\n    if (isString(key) || Array.isArray(key)) {\n      const { resolveLang, scope } = this.resolveLangAndScope(lang);\n      if (Array.isArray(key)) {\n        return key.map((k) =>\n          this.translateObject(\n            this.config.scopes.autoPrefixKeys && scope ? `${scope}.${k}` : k,\n            params!,\n            resolveLang,\n          ),\n        ) as any;\n      }\n\n      const translation = this.getTranslation(resolveLang);\n      key =\n        this.config.scopes.autoPrefixKeys && scope ? `${scope}.${key}` : key;\n\n      const value = unflatten(this.getObjectByKey(translation, key));\n      /* If an empty object was returned we want to try and translate the key as a string and not an object */\n      return isEmpty(value)\n        ? this.translate(key, params!, lang)\n        : this.parser.transpile({ value, params: params!, translation, key });\n    }\n\n    const translations: T[] = [];\n    for (const [_key, _params] of this.getEntries(key)) {\n      translations.push(this.translateObject(_key, _params, lang));\n    }\n\n    return translations;\n  }\n\n  selectTranslateObject<T = any>(\n    key: string,\n    params?: HashMap,\n    lang?: string,\n  ): Observable<T>;\n  selectTranslateObject<T = any>(\n    key: string[],\n    params?: HashMap,\n    lang?: string,\n  ): Observable<T[]>;\n  selectTranslateObject<T = any>(\n    key: TranslateParams,\n    params?: HashMap,\n    lang?: string,\n  ): Observable<T> | Observable<T[]>;\n  selectTranslateObject<T = any>(\n    key: HashMap | Map<string, HashMap>,\n    params?: null,\n    lang?: string,\n  ): Observable<T[]>;\n  selectTranslateObject<T = any>(\n    key: TranslateObjectParams,\n    params?: HashMap | null,\n    lang?: string,\n  ): Observable<T> | Observable<T[]> {\n    if (isString(key) || Array.isArray(key)) {\n      return this.selectTranslate<T>(key, params!, lang, true);\n    }\n\n    const [[firstKey, firstParams], ...rest] = this.getEntries(key);\n\n    /* In order to avoid subscribing multiple times to the load language event by calling selectTranslateObject for each pair,\n     * we listen to when the first key has been translated (the language is loaded) and translate the rest synchronously */\n    return this.selectTranslateObject<T>(firstKey, firstParams, lang).pipe(\n      map((value) => {\n        const translations = [value];\n        for (const [_key, _params] of rest) {\n          translations.push(this.translateObject<T>(_key, _params, lang));\n        }\n\n        return translations;\n      }),\n    );\n  }\n\n  /**\n   * Gets an object of translations for a given language\n   *\n   * @example\n   *\n   * getTranslation()\n   * getTranslation('en')\n   * getTranslation('admin-page/en')\n   */\n  getTranslation(): Map<string, Translation>;\n  getTranslation(langOrScope: string): Translation;\n  getTranslation(langOrScope?: string): Map<string, Translation> | Translation {\n    if (langOrScope) {\n      if (this.isLang(langOrScope)) {\n        return this.translations.get(langOrScope) || {};\n      } else {\n        // This is a scope, build the scope value from the translation object\n        const { scope, resolveLang } = this.resolveLangAndScope(langOrScope);\n        const translation = this.translations.get(resolveLang) || {};\n\n        return this.getObjectByKey(translation, scope);\n      }\n    }\n\n    return this.translations;\n  }\n\n  /**\n   * Gets an object of translations for a given language\n   *\n   * @example\n   *\n   * selectTranslation().subscribe() - will return the current lang translation\n   * selectTranslation('es').subscribe()\n   * selectTranslation('admin-page').subscribe() - will return the current lang scope translation\n   * selectTranslation('admin-page/es').subscribe()\n   */\n  selectTranslation(lang?: string): Observable<Translation> {\n    let language$ = this.langChanges$;\n    if (lang) {\n      const scopeLangSpecified = getLangFromScope(lang) !== lang;\n      if (this.isLang(lang) || scopeLangSpecified) {\n        language$ = of(lang);\n      } else {\n        language$ = this.langChanges$.pipe(\n          map((currentLang) => `${lang}/${currentLang}`),\n        );\n      }\n    }\n\n    return language$.pipe(\n      switchMap((language) =>\n        this.load(language).pipe(map(() => this.getTranslation(language))),\n      ),\n    );\n  }\n\n  /**\n   * Sets or merge a given translation object to current lang\n   *\n   * @example\n   *\n   * setTranslation({ ... })\n   * setTranslation({ ... }, 'en')\n   * setTranslation({ ... }, 'es', { merge: false } )\n   * setTranslation({ ... }, 'todos/en', { merge: false } )\n   */\n  setTranslation(\n    translation: Translation,\n    lang = this.getActiveLang(),\n    options: SetTranslationOptions = {},\n  ) {\n    const defaults = { merge: true, emitChange: true };\n    const mergedOptions = { ...defaults, ...options };\n    const scope = getScopeFromLang(lang);\n\n    /**\n     * If this isn't a scope we use the whole translation as is\n     * otherwise we need to flat the scope and use it\n     */\n    let flattenScopeOrTranslation = translation;\n\n    // Merged the scoped language into the active language\n    if (scope) {\n      const key = this.getMappedScope(scope);\n      flattenScopeOrTranslation = flatten({ [key]: translation });\n    }\n\n    const currentLang = scope ? getLangFromScope(lang) : lang;\n\n    const mergedTranslation = {\n      ...(mergedOptions.merge && this.getTranslation(currentLang)),\n      ...flattenScopeOrTranslation,\n    };\n\n    const flattenTranslation = this.config.flatten!.aot\n      ? mergedTranslation\n      : flatten(mergedTranslation);\n    const withHook = this.interceptor.preSaveTranslation(\n      flattenTranslation,\n      currentLang,\n    );\n    this.translations.set(currentLang, withHook);\n    mergedOptions.emitChange && this.setActiveLang(this.getActiveLang());\n  }\n\n  /**\n   * Sets translation key with given value\n   *\n   * @example\n   *\n   * setTranslationKey('key', 'value')\n   * setTranslationKey('key.nested', 'value')\n   * setTranslationKey('key.nested', 'value', 'en')\n   * setTranslationKey('key.nested', 'value', 'en', { emitChange: false } )\n   */\n  setTranslationKey(\n    key: string,\n    value: string,\n    options: Omit<SetTranslationOptions, 'merge'> = {},\n  ) {\n    const lang = options.lang || this.getActiveLang();\n    const withHook = this.interceptor.preSaveTranslationKey(key, value, lang);\n    const newValue = {\n      [key]: withHook,\n    };\n\n    this.setTranslation(newValue, lang, { ...options, merge: true });\n  }\n\n  /**\n   * Sets the fallback lang for the currently active language\n   * @param fallbackLang\n   */\n  setFallbackLangForMissingTranslation({\n    fallbackLang,\n  }: Pick<TranslocoConfig, 'fallbackLang'>) {\n    const lang = Array.isArray(fallbackLang) ? fallbackLang[0] : fallbackLang;\n    if (fallbackLang && this.useFallbackTranslation(lang)) {\n      this.firstFallbackLang = lang!;\n    }\n  }\n\n  /**\n   * @internal\n   */\n  _handleMissingKey(key: string, value: any, params?: HashMap) {\n    if (this.config.missingHandler!.allowEmpty && value === '') {\n      return '';\n    }\n\n    if (!this.isResolvedMissingOnce && this.useFallbackTranslation()) {\n      // We need to set it to true to prevent a loop\n      this.isResolvedMissingOnce = true;\n      const fallbackValue = this.translate(\n        key,\n        params,\n        this.firstFallbackLang!,\n      );\n      this.isResolvedMissingOnce = false;\n\n      return fallbackValue;\n    }\n\n    return this.missingHandler.handle(\n      key,\n      this.getMissingHandlerData(),\n      params,\n    );\n  }\n\n  /**\n   * @internal\n   */\n  _isLangScoped(lang: string) {\n    return this.getAvailableLangsIds().indexOf(lang) === -1;\n  }\n\n  /**\n   * Checks if a given string is one of the specified available languages.\n   * @returns\n   * True if the given string is an available language.\n   * False if the given string is not an available language.\n   */\n  isLang(lang: string): boolean {\n    return this.getAvailableLangsIds().indexOf(lang) !== -1;\n  }\n\n  /**\n   * @internal\n   *\n   * We always want to make sure the global lang is loaded\n   * before loading the scope since you can access both via the pipe/directive.\n   */\n  _loadDependencies(\n    path: string,\n    inlineLoader?: InlineLoader,\n  ): Observable<Translation | Translation[]> {\n    const mainLang = getLangFromScope(path);\n\n    if (this._isLangScoped(path) && !this.isLoadedTranslation(mainLang)) {\n      return combineLatest([\n        this.load(mainLang),\n        this.load(path, { inlineLoader }),\n      ]);\n    }\n    return this.load(path, { inlineLoader });\n  }\n\n  /**\n   * @internal\n   */\n  _completeScopeWithLang(langOrScope: string) {\n    if (\n      this._isLangScoped(langOrScope) &&\n      !this.isLang(getLangFromScope(langOrScope))\n    ) {\n      return `${langOrScope}/${this.getActiveLang()}`;\n    }\n    return langOrScope;\n  }\n\n  /**\n   * @internal\n   */\n  _setScopeAlias(scope: string, alias: string) {\n    if (!this.config.scopeMapping) {\n      this.config.scopeMapping = {};\n    }\n    this.config.scopeMapping[scope] = alias;\n  }\n\n  private isLoadedTranslation(lang: string) {\n    return size(this.getTranslation(lang));\n  }\n\n  private getAvailableLangsIds(): string[] {\n    const first = this.getAvailableLangs()[0];\n\n    if (isString(first)) {\n      return this.getAvailableLangs() as string[];\n    }\n\n    return (this.getAvailableLangs() as LangDefinition[]).map((l) => l.id);\n  }\n\n  private getMissingHandlerData(): TranslocoMissingHandlerData {\n    return {\n      ...this.config,\n      activeLang: this.getActiveLang(),\n      availableLangs: this.availableLangs,\n      defaultLang: this.defaultLang,\n    };\n  }\n\n  /**\n   * Use a fallback translation set for missing keys of the primary language\n   * This is unrelated to the fallback language (which changes the active language)\n   */\n  private useFallbackTranslation(lang?: string) {\n    return (\n      this.config.missingHandler!.useFallbackTranslation &&\n      lang !== this.firstFallbackLang\n    );\n  }\n\n  private handleSuccess(lang: string, translation: Translation) {\n    this.setTranslation(translation, lang, { emitChange: false });\n    this.events.next({\n      wasFailure: !!this.failedLangs.size,\n      type: 'translationLoadSuccess',\n      payload: getEventPayload(lang),\n    });\n    this.failedLangs.forEach((l) => this.cache.delete(l));\n    this.failedLangs.clear();\n  }\n\n  private handleFailure(lang: string, loadOptions: LoadOptions) {\n    // When starting to load a first choice language, initialize\n    // the failed counter and resolve the fallback langs.\n    if (isNil(loadOptions.failedCounter)) {\n      loadOptions.failedCounter = 0;\n\n      if (!loadOptions.fallbackLangs) {\n        loadOptions.fallbackLangs = this.fallbackStrategy.getNextLangs(lang);\n      }\n    }\n\n    const splitted = lang.split('/');\n    const fallbacks = loadOptions.fallbackLangs;\n    const nextLang = fallbacks![loadOptions.failedCounter!];\n    this.failedLangs.add(lang);\n\n    // This handles the case where a loaded fallback language is requested again\n    if (this.cache.has(nextLang)) {\n      this.handleSuccess(nextLang, this.getTranslation(nextLang));\n      return EMPTY;\n    }\n\n    const isFallbackLang = nextLang === splitted[splitted.length - 1];\n\n    if (!nextLang || isFallbackLang) {\n      throw new TranslationLoadError(\n        lang,\n        fallbacks ?? [],\n        splitted.length > 1,\n      );\n    }\n\n    let resolveLang = nextLang;\n    // if it's scoped lang\n    if (splitted.length > 1) {\n      // We need to resolve it to:\n      // todos/langNotExists => todos/nextLang\n      splitted[splitted.length - 1] = nextLang;\n      resolveLang = splitted.join('/');\n    }\n\n    loadOptions.failedCounter!++;\n    this.events.next({\n      type: 'translationLoadFailure',\n      payload: getEventPayload(lang),\n    });\n\n    return this.load(resolveLang, loadOptions);\n  }\n\n  private getMappedScope(scope: string): string {\n    const { scopeMapping = {}, scopes = { keepCasing: false } } = this.config;\n    return (\n      scopeMapping[scope] || (scopes.keepCasing ? scope : toCamelCase(scope))\n    );\n  }\n\n  /**\n   * If lang is scope we need to check the following cases:\n   * todos/es => in this case we should take `es` as lang\n   * todos => in this case we should set the active lang as lang\n   */\n  private resolveLangAndScope(lang: string) {\n    let resolveLang = lang;\n    let scope;\n\n    if (this._isLangScoped(lang)) {\n      // en for example\n      const langFromScope = getLangFromScope(lang);\n      // en is lang\n      const hasLang = this.isLang(langFromScope);\n      // take en\n      resolveLang = hasLang ? langFromScope : this.getActiveLang();\n      // find the scope\n      scope = this.getMappedScope(hasLang ? getScopeFromLang(lang) : lang);\n    }\n\n    return { scope, resolveLang };\n  }\n\n  private getObjectByKey(translation: Translation, key?: string) {\n    const result: Translation = {};\n    const prefix = `${key}.`;\n\n    for (const currentKey in translation) {\n      if (currentKey.startsWith(prefix)) {\n        result[currentKey.replace(prefix, '')] = translation[currentKey];\n      }\n    }\n\n    return result;\n  }\n\n  private getEntries(key: HashMap | Map<string, HashMap>) {\n    return key instanceof Map ? key.entries() : Object.entries(key);\n  }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  template: `\n    <div class=\"transloco-loader-template\" [innerHTML]=\"html\"></div>\n  `,\n  standalone: true,\n})\nexport class TranslocoLoaderComponent {\n  @Input() html: string | undefined;\n}\n","import { TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { isString } from '@jsverse/utils';\n\nimport { TranslocoLoaderComponent } from './loader-component.component';\n\nexport type Content = string | TemplateRef<unknown> | Type<unknown>;\n\nexport class TemplateHandler {\n  constructor(\n    private view: Content,\n    private vcr: ViewContainerRef,\n  ) {}\n\n  attachView() {\n    if (this.view instanceof TemplateRef) {\n      this.vcr.createEmbeddedView(this.view);\n    } else if (isString(this.view)) {\n      const componentRef = this.vcr.createComponent(TranslocoLoaderComponent);\n      componentRef.instance.html = this.view;\n      componentRef.hostView.detectChanges();\n    } else {\n      this.vcr.createComponent(this.view);\n    }\n  }\n\n  detachView() {\n    this.vcr.clear();\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const TRANSLOCO_LANG = /* @__PURE__ */ new InjectionToken<string>(\n  ngDevMode ? 'TRANSLOCO_LANG' : '',\n);\n","import { InjectionToken } from '@angular/core';\n\nimport { Content } from './template-handler';\n\nexport const TRANSLOCO_LOADING_TEMPLATE =\n  /* @__PURE__ */ new InjectionToken<Content>(\n    ngDevMode ? 'TRANSLOCO_LOADING_TEMPLATE' : '',\n  );\n","import { InjectionToken } from '@angular/core';\n\nimport { TranslocoScope } from './transloco.types';\n\nexport const TRANSLOCO_SCOPE =\n  /* @__PURE__ */ new InjectionToken<TranslocoScope>(\n    ngDevMode ? 'TRANSLOCO_SCOPE' : '',\n  );\n","import { isString } from '@jsverse/utils';\n\n/**\n * @example\n *\n * getPipeValue('todos|scoped', 'scoped') [true, 'todos']\n * getPipeValue('en|static', 'static') [true, 'en']\n * getPipeValue('en', 'static') [false, 'en']\n */\nexport function getPipeValue(\n  str: string | undefined,\n  value: string,\n  char = '|',\n): [boolean, string] {\n  if (isString(str)) {\n    const splitted = str.split(char);\n    const lastItem = splitted.pop()!;\n\n    return lastItem === value ? [true, splitted.toString()] : [false, lastItem];\n  }\n\n  return [false, ''];\n}\n","import { Observable, OperatorFunction, take } from 'rxjs';\n\nimport { TranslocoService } from '../transloco.service';\n\nimport { getPipeValue } from './pipe.utils';\n\nexport function shouldListenToLangChanges(\n  service: TranslocoService,\n  lang?: string,\n) {\n  const [hasStatic] = getPipeValue(lang, 'static');\n  if (!hasStatic) {\n    // If we didn't get 'lang|static' check if it's set in the global level\n    return !!service.config.reRenderOnLangChange;\n  }\n\n  // We have 'lang|static' so don't listen to lang changes\n  return false;\n}\n\nexport function listenOrNotOperator<T>(\n  listenToLangChange?: boolean,\n): OperatorFunction<T, T> {\n  return listenToLangChange ? (source: Observable<T>) => source : take<T>(1);\n}\n","import { getPipeValue } from './utils/pipe.utils';\nimport { getLangFromScope, getScopeFromLang } from './utils/scope.utils';\n\ninterface LangResolverParams {\n  inline?: string;\n  provider: string | null | undefined;\n  active: string;\n}\n\nexport class LangResolver {\n  initialized = false;\n\n  // inline => provider => active\n  resolve({ inline, provider, active }: LangResolverParams): string {\n    let lang = active;\n    /**\n     * When the user changes the lang we need to update\n     * the view. Otherwise, the lang will remain the inline/provided lang\n     */\n    if (this.initialized) {\n      lang = active;\n\n      return lang;\n    }\n\n    if (provider) {\n      const [, extracted] = getPipeValue(provider, 'static');\n      lang = extracted;\n    }\n\n    if (inline) {\n      const [, extracted] = getPipeValue(inline, 'static');\n      lang = extracted;\n    }\n\n    this.initialized = true;\n\n    return lang;\n  }\n\n  /**\n   *\n   * Resolve the lang\n   *\n   * @example\n   *\n   * resolveLangBasedOnScope('todos/en') => en\n   * resolveLangBasedOnScope('en') => en\n   *\n   */\n  resolveLangBasedOnScope(lang: string) {\n    const scope = getScopeFromLang(lang);\n\n    return scope ? getLangFromScope(lang) : lang;\n  }\n\n  /**\n   *\n   * Resolve the lang path for loading\n   *\n   * @example\n   *\n   * resolveLangPath('todos', 'en') => todos/en\n   * resolveLangPath('en') => en\n   *\n   */\n  resolveLangPath(lang: string, scope?: string) {\n    return scope ? `${scope}/${lang}` : lang;\n  }\n}\n","import { OrArray, toCamelCase } from '@jsverse/utils';\n\nimport { ProviderScope, TranslocoScope } from './transloco.types';\nimport { TranslocoService } from './transloco.service';\nimport { isScopeObject } from './utils/scope.utils';\n\ntype ScopeResolverParams = {\n  inline: string | undefined;\n  provider: OrArray<TranslocoScope> | null;\n};\n\nexport class ScopeResolver {\n  constructor(private service: TranslocoService) {}\n\n  // inline => provider\n  resolve(params: ScopeResolverParams): string | undefined {\n    const { inline, provider } = params;\n    if (inline) {\n      return inline;\n    }\n\n    if (provider) {\n      if (isScopeObject(provider)) {\n        const {\n          scope,\n          alias = this.service.config.scopes.keepCasing\n            ? scope\n            : toCamelCase(scope),\n        } = provider as ProviderScope;\n        this.service._setScopeAlias(scope, alias);\n\n        return scope;\n      }\n\n      return provider as string;\n    }\n\n    return undefined;\n  }\n}\n","import {\n  ChangeDetectorRef,\n  DestroyRef,\n  Directive,\n  ElementRef,\n  EmbeddedViewRef,\n  inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { forkJoin, Observable, switchMap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { OrArray } from '@jsverse/utils';\n\nimport { Content, TemplateHandler } from './template-handler';\nimport { TRANSLOCO_LANG } from './transloco-lang';\nimport { TRANSLOCO_LOADING_TEMPLATE } from './transloco-loading-template';\nimport { TRANSLOCO_SCOPE } from './transloco-scope';\nimport { TranslocoService } from './transloco.service';\nimport { Translation, TranslocoScope } from './transloco.types';\nimport {\n  listenOrNotOperator,\n  shouldListenToLangChanges,\n} from './utils/lang.utils';\nimport { resolveInlineLoader } from './utils/scope.utils';\nimport { LangResolver } from './lang-resolver';\nimport { ScopeResolver } from './scope-resolver';\nimport { HashMap } from './utils/type.utils';\n\ntype TranslateFn = (key: string, params?: HashMap) => any;\ninterface ViewContext {\n  $implicit: TranslateFn;\n  currentLang: string;\n}\n\n@Directive({\n  selector: '[transloco]',\n  standalone: true,\n})\nexport class TranslocoDirective implements OnInit, OnDestroy, OnChanges {\n  private destroyRef = inject(DestroyRef);\n  private service = inject(TranslocoService);\n  private tpl = inject<TemplateRef<ViewContext>>(TemplateRef, {\n    optional: true,\n  });\n  private providerLang = inject(TRANSLOCO_LANG, { optional: true });\n  private providerScope: OrArray<TranslocoScope> | null = inject(\n    TRANSLOCO_SCOPE,\n    { optional: true },\n  );\n  private providedLoadingTpl = inject(TRANSLOCO_LOADING_TEMPLATE, {\n    optional: true,\n  });\n  private cdr = inject(ChangeDetectorRef);\n  private host = inject(ElementRef);\n  private vcr = inject(ViewContainerRef);\n  private renderer = inject(Renderer2);\n\n  view: EmbeddedViewRef<ViewContext> | undefined;\n\n  private memo = new Map<string, any>();\n\n  @Input('transloco') key: string | undefined;\n  @Input('translocoParams') params: HashMap = {};\n  @Input('translocoScope') inlineScope: string | undefined;\n  /** @deprecated use prefix instead, will be removed in Transloco v9 */\n  @Input('translocoRead') inlineRead: string | undefined;\n  @Input('translocoPrefix') prefix: string | undefined;\n  @Input('translocoLang') inlineLang: string | undefined;\n  @Input('translocoLoadingTpl') inlineTpl: Content | undefined;\n\n  private currentLang: string | undefined;\n  private loaderTplHandler: TemplateHandler | undefined;\n  // Whether we already rendered the view once\n  private initialized = false;\n  private path: string | undefined;\n  private langResolver = new LangResolver();\n  private scopeResolver = new ScopeResolver(this.service);\n  private readonly strategy = this.tpl === null ? 'attribute' : 'structural';\n\n  static ngTemplateContextGuard(\n    dir: TranslocoDirective,\n    ctx: unknown,\n  ): ctx is ViewContext {\n    return true;\n  }\n\n  ngOnInit() {\n    const listenToLangChange = shouldListenToLangChanges(\n      this.service,\n      this.providerLang || this.inlineLang,\n    );\n\n    this.service.langChanges$\n      .pipe(\n        switchMap((activeLang) => {\n          const lang = this.langResolver.resolve({\n            inline: this.inlineLang,\n            provider: this.providerLang,\n            active: activeLang,\n          });\n\n          return Array.isArray(this.providerScope)\n            ? forkJoin(\n                this.providerScope.map((providerScope) =>\n                  this.resolveScope(lang, providerScope),\n                ),\n              )\n            : this.resolveScope(lang, this.providerScope);\n        }),\n        listenOrNotOperator(listenToLangChange),\n        takeUntilDestroyed(this.destroyRef),\n      )\n      .subscribe(() => {\n        this.currentLang = this.langResolver.resolveLangBasedOnScope(\n          this.path!,\n        );\n        this.strategy === 'attribute'\n          ? this.attributeStrategy()\n          : this.structuralStrategy(\n              this.currentLang,\n              this.prefix || this.inlineRead,\n            );\n        this.cdr.markForCheck();\n        this.initialized = true;\n      });\n\n    if (!this.initialized) {\n      const loadingContent = this.resolveLoadingContent();\n      if (loadingContent) {\n        this.loaderTplHandler = new TemplateHandler(loadingContent, this.vcr);\n        this.loaderTplHandler.attachView();\n      }\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    // We need to support dynamic keys/params, so if this is not the first change CD cycle\n    // we need to run the function again in order to update the value\n    if (this.strategy === 'attribute') {\n      const notInit = Object.keys(changes).some((v) => !changes[v].firstChange);\n      notInit && this.attributeStrategy();\n    }\n  }\n\n  private attributeStrategy() {\n    this.detachLoader();\n    this.renderer.setProperty(\n      this.host.nativeElement,\n      'innerText',\n      this.service.translate(this.key!, this.params, this.currentLang),\n    );\n  }\n\n  private structuralStrategy(lang: string, prefix?: string) {\n    this.memo.clear();\n    const translateFn = this.getTranslateFn(lang, prefix);\n\n    if (this.view) {\n      // when the lang changes we need to change the reference so Angular will update the view\n      this.view.context['$implicit'] = translateFn;\n      this.view.context['currentLang'] = this.currentLang!;\n    } else {\n      this.detachLoader();\n      this.view = this.vcr.createEmbeddedView(this.tpl!, {\n        $implicit: translateFn,\n        currentLang: this.currentLang!,\n      });\n    }\n  }\n\n  protected getTranslateFn(\n    lang: string,\n    prefix: string | undefined,\n  ): TranslateFn {\n    return (key: string, params?: HashMap) => {\n      const withPrefix = prefix ? `${prefix}.${key}` : key;\n      const memoKey = params\n        ? `${withPrefix}${JSON.stringify(params)}`\n        : withPrefix;\n\n      if (!this.memo.has(memoKey)) {\n        this.memo.set(\n          memoKey,\n          this.service.translate(withPrefix, params, lang),\n        );\n      }\n\n      return this.memo.get(memoKey);\n    };\n  }\n\n  private resolveLoadingContent() {\n    return this.inlineTpl || this.providedLoadingTpl;\n  }\n\n  ngOnDestroy() {\n    this.memo.clear();\n  }\n\n  private detachLoader() {\n    this.loaderTplHandler?.detachView();\n  }\n\n  private resolveScope(\n    lang: string,\n    providerScope: TranslocoScope | null,\n  ): Observable<Translation | Translation[]> {\n    const resolvedScope = this.scopeResolver.resolve({\n      inline: this.inlineScope,\n      provider: providerScope,\n    });\n    this.path = this.langResolver.resolveLangPath(lang, resolvedScope);\n    const inlineLoader = resolveInlineLoader(providerScope, resolvedScope);\n\n    return this.service._loadDependencies(this.path, inlineLoader);\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Inject,\n  OnDestroy,\n  Optional,\n  Pipe,\n  PipeTransform,\n} from '@angular/core';\nimport { forkJoin, Observable, Subscription, switchMap } from 'rxjs';\nimport { OrArray } from '@jsverse/utils';\n\nimport { TranslocoService } from './transloco.service';\nimport { Translation, TranslocoScope } from './transloco.types';\nimport { TRANSLOCO_SCOPE } from './transloco-scope';\nimport { TRANSLOCO_LANG } from './transloco-lang';\nimport {\n  listenOrNotOperator,\n  shouldListenToLangChanges,\n} from './utils/lang.utils';\nimport { LangResolver } from './lang-resolver';\nimport { ScopeResolver } from './scope-resolver';\nimport { HashMap } from './utils/type.utils';\nimport { resolveInlineLoader } from './utils/scope.utils';\n\n@Pipe({\n  name: 'transloco',\n  pure: false,\n  standalone: true,\n})\nexport class TranslocoPipe implements PipeTransform, OnDestroy {\n  private subscription: Subscription | null = null;\n  private lastValue = '';\n  private lastKey: string | undefined;\n  private path: string | undefined;\n  private langResolver = new LangResolver();\n  private scopeResolver!: ScopeResolver;\n\n  constructor(\n    private service: TranslocoService,\n    @Optional()\n    @Inject(TRANSLOCO_SCOPE)\n    private providerScope: OrArray<TranslocoScope> | undefined,\n    @Optional()\n    @Inject(TRANSLOCO_LANG)\n    private providerLang: string | undefined,\n    private cdr: ChangeDetectorRef,\n  ) {\n    this.scopeResolver = new ScopeResolver(this.service);\n  }\n\n  // null is for handling strict mode + async pipe types https://github.com/jsverse/transloco/issues/311\n  // null is for handling strict mode + optional chaining types https://github.com/jsverse/transloco/issues/488\n  transform(\n    key?: string | null,\n    params?: HashMap,\n    inlineLang?: string,\n  ): string {\n    if (!key) {\n      return key as any;\n    }\n\n    const keyName = params ? `${key}${JSON.stringify(params)}` : key;\n\n    if (keyName === this.lastKey) {\n      return this.lastValue;\n    }\n\n    this.lastKey = keyName;\n    this.subscription?.unsubscribe();\n\n    const listenToLangChange = shouldListenToLangChanges(\n      this.service,\n      this.providerLang || inlineLang,\n    );\n\n    this.subscription = this.service.langChanges$\n      .pipe(\n        switchMap((activeLang) => {\n          const lang = this.langResolver.resolve({\n            inline: inlineLang,\n            provider: this.providerLang,\n            active: activeLang,\n          });\n\n          return Array.isArray(this.providerScope)\n            ? forkJoin(\n                this.providerScope.map((providerScope) =>\n                  this.resolveScope(lang, providerScope),\n                ),\n              )\n            : this.resolveScope(lang, this.providerScope);\n        }),\n        listenOrNotOperator(listenToLangChange),\n      )\n      .subscribe(() => this.updateValue(key, params));\n\n    return this.lastValue;\n  }\n\n  ngOnDestroy() {\n    this.subscription?.unsubscribe();\n    // Caretaker note: it's important to clean up references to subscriptions since they save the `next`\n    // callback within its `destination` property, preventing classes from being GC'd.\n    this.subscription = null;\n  }\n\n  private updateValue(key: string, params?: HashMap | undefined) {\n    const lang = this.langResolver.resolveLangBasedOnScope(this.path!);\n    this.lastValue = this.service.translate(key, params, lang);\n    this.cdr.markForCheck();\n  }\n\n  private resolveScope(\n    lang: string,\n    providerScope: TranslocoScope | null,\n  ): Observable<Translation | Translation[]> {\n    const resolvedScope = this.scopeResolver.resolve({\n      inline: undefined,\n      provider: providerScope,\n    });\n    this.path = this.langResolver.resolveLangPath(lang, resolvedScope);\n    const inlineLoader = resolveInlineLoader(providerScope, resolvedScope);\n\n    return this.service._loadDependencies(this.path, inlineLoader);\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { TranslocoDirective } from './transloco.directive';\nimport { TranslocoPipe } from './transloco.pipe';\n\nconst decl = [TranslocoDirective, TranslocoPipe];\n\n@NgModule({\n  imports: decl,\n  exports: decl,\n})\nexport class TranslocoModule {}\n","import {\n  EnvironmentProviders,\n  makeEnvironmentProviders,\n  Provider,\n  Type,\n} from '@angular/core';\n\nimport { TRANSLOCO_LOADER, TranslocoLoader } from './transloco.loader';\nimport {\n  PartialTranslocoConfig,\n  TRANSLOCO_CONFIG,\n  translocoConfig,\n} from './transloco.config';\nimport { TRANSLOCO_SCOPE } from './transloco-scope';\nimport { TranslocoScope } from './transloco.types';\nimport {\n  DefaultTranspiler,\n  TRANSLOCO_TRANSPILER,\n  TranslocoTranspiler,\n} from './transloco.transpiler';\nimport {\n  DefaultMissingHandler,\n  TRANSLOCO_MISSING_HANDLER,\n  TranslocoMissingHandler,\n} from './transloco-missing-handler';\nimport {\n  DefaultInterceptor,\n  TRANSLOCO_INTERCEPTOR,\n  TranslocoInterceptor,\n} from './transloco.interceptor';\nimport {\n  DefaultFallbackStrategy,\n  TRANSLOCO_FALLBACK_STRATEGY,\n  TranslocoFallbackStrategy,\n} from './transloco-fallback-strategy';\nimport { TRANSLOCO_LOADING_TEMPLATE } from './transloco-loading-template';\nimport { Content } from './template-handler';\nimport { TRANSLOCO_LANG } from './transloco-lang';\n\nexport interface TranslocoOptions {\n  config: PartialTranslocoConfig;\n  loader?: Type<TranslocoLoader>;\n}\n\nexport function provideTransloco(options: TranslocoOptions) {\n  const providers: EnvironmentProviders[] = [\n    provideTranslocoTranspiler(DefaultTranspiler),\n    provideTranslocoMissingHandler(DefaultMissingHandler),\n    provideTranslocoInterceptor(DefaultInterceptor),\n    provideTranslocoFallbackStrategy(DefaultFallbackStrategy),\n  ];\n\n  if (options.config) {\n    providers.push(provideTranslocoConfig(options.config));\n  }\n\n  if (options.loader) {\n    providers.push(provideTranslocoLoader(options.loader));\n  }\n\n  return providers;\n}\n\nexport function provideTranslocoConfig(config: PartialTranslocoConfig) {\n  return makeEnvironmentProviders([\n    {\n      provide: TRANSLOCO_CONFIG,\n      useValue: translocoConfig(config),\n    },\n  ]);\n}\n\nexport function provideTranslocoLoader(loader: Type<TranslocoLoader>) {\n  return makeEnvironmentProviders([\n    { provide: TRANSLOCO_LOADER, useClass: loader },\n  ]);\n}\n\n/**\n * See {@link ./SCOPE_MULTI_PROVIDER_INVESTIGATION.md} for the history and\n * planned changes around the `multi: true` behavior on TRANSLOCO_SCOPE.\n */\nexport function provideTranslocoScope(...scopes: TranslocoScope[]) {\n  return scopes.map((scope) => ({\n    provide: TRANSLOCO_SCOPE,\n    useValue: scope,\n    multi: true,\n  }));\n}\n\nexport function provideTranslocoLoadingTpl(content: Content) {\n  return {\n    provide: TRANSLOCO_LOADING_TEMPLATE,\n    useValue: content,\n  };\n}\n\nexport function provideTranslocoTranspiler(\n  transpiler: Type<TranslocoTranspiler>,\n) {\n  return makeEnvironmentProviders([\n    {\n      provide: TRANSLOCO_TRANSPILER,\n      useClass: transpiler,\n      deps: [TRANSLOCO_CONFIG],\n    },\n  ]);\n}\n\nexport function provideTranslocoFallbackStrategy(\n  strategy: Type<TranslocoFallbackStrategy>,\n) {\n  return makeEnvironmentProviders([\n    {\n      provide: TRANSLOCO_FALLBACK_STRATEGY,\n      useClass: strategy,\n      deps: [TRANSLOCO_CONFIG],\n    },\n  ]);\n}\n\nexport function provideTranslocoMissingHandler(\n  handler: Type<TranslocoMissingHandler>,\n) {\n  return makeEnvironmentProviders([\n    {\n      provide: TRANSLOCO_MISSING_HANDLER,\n      useClass: handler,\n    },\n  ]);\n}\n\nexport function provideTranslocoInterceptor(\n  interceptor: Type<TranslocoInterceptor>,\n) {\n  return makeEnvironmentProviders([\n    {\n      provide: TRANSLOCO_INTERCEPTOR,\n      useClass: interceptor,\n    },\n  ]);\n}\n\nexport function provideTranslocoLang(lang: string): Provider {\n  return {\n    provide: TRANSLOCO_LANG,\n    useValue: lang,\n  };\n}\n","import {\n  APP_INITIALIZER,\n  Inject,\n  Injectable,\n  InjectionToken,\n  ModuleWithProviders,\n  NgModule,\n} from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nimport { TranslocoLoader } from './transloco.loader';\nimport { Translation } from './transloco.types';\nimport { TranslocoModule } from './transloco.module';\nimport { provideTransloco } from './transloco.providers';\nimport { PartialTranslocoConfig } from './transloco.config';\nimport { TranslocoService } from './transloco.service';\nimport { HashMap } from './utils/type.utils';\n\nexport interface TranslocoTestingOptions {\n  translocoConfig?: PartialTranslocoConfig;\n  preloadLangs?: boolean;\n  langs?: HashMap<Translation>;\n}\n\nconst TRANSLOCO_TEST_LANGS = /* @__PURE__ */ new InjectionToken<\n  HashMap<Translation>\n>('TRANSLOCO_TEST_LANGS - Available testing languages');\nconst TRANSLOCO_TEST_OPTIONS =\n  /* @__PURE__ */ new InjectionToken<TranslocoTestingOptions>(\n    'TRANSLOCO_TEST_OPTIONS - Testing options',\n  );\n\n@Injectable()\nexport class TestingLoader implements TranslocoLoader {\n  constructor(\n    @Inject(TRANSLOCO_TEST_LANGS) private langs: HashMap<Translation>,\n  ) {}\n\n  getTranslation(lang: string): Observable<Translation> | Promise<Translation> {\n    return of(this.langs[lang]);\n  }\n}\n\nexport function initTranslocoService(\n  service: TranslocoService,\n  langs: HashMap<Translation> = {},\n  options: TranslocoTestingOptions,\n) {\n  const preloadAllLangs = () =>\n    options.preloadLangs\n      ? Promise.all(\n          Object.keys(langs).map((lang) => service.load(lang).toPromise()),\n        )\n      : Promise.resolve();\n\n  return preloadAllLangs;\n}\n\n@NgModule({\n  exports: [TranslocoModule],\n})\nexport class TranslocoTestingModule {\n  static forRoot(\n    options: TranslocoTestingOptions,\n  ): ModuleWithProviders<TranslocoTestingModule> {\n    return {\n      ngModule: TranslocoTestingModule,\n      providers: [\n        provideTransloco({\n          loader: TestingLoader,\n          config: {\n            prodMode: true,\n            ...options.translocoConfig,\n            missingHandler: {\n              logMissingKey: false,\n              ...options.translocoConfig?.missingHandler,\n            },\n          },\n        }),\n        {\n          provide: TRANSLOCO_TEST_LANGS,\n          useValue: options.langs,\n        },\n        {\n          provide: TRANSLOCO_TEST_OPTIONS,\n          useValue: options,\n        },\n        {\n          provide: APP_INITIALIZER,\n          useFactory: initTranslocoService,\n          deps: [\n            TranslocoService,\n            TRANSLOCO_TEST_LANGS,\n            TRANSLOCO_TEST_OPTIONS,\n          ],\n          multi: true,\n        },\n      ],\n    };\n  }\n}\n","import {\n  assertInInjectionContext,\n  computed,\n  inject,\n  Injector,\n  isSignal,\n  runInInjectionContext,\n  Signal,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { Observable, of, switchMap } from 'rxjs';\n\nimport { TRANSLOCO_SCOPE } from './transloco-scope';\nimport { TranslocoService } from './transloco.service';\nimport { Translation, TranslocoScope } from './transloco.types';\nimport { HashMap } from './utils/type.utils';\n\ntype ScopeType = string | TranslocoScope | TranslocoScope[];\ntype SignalKey = Signal<string> | Signal<string[]> | Signal<string>[];\ntype TranslateSignalKey = string | string[] | SignalKey;\ntype TranslateSignalParams =\n  | HashMap\n  | HashMap<Signal<string>>\n  | Signal<HashMap>;\ntype TranslateSignalRef<T> = T extends unknown[] | Signal<string[]>\n  ? Signal<string[]>\n  : Signal<string>;\ntype TranslateObjectSignalRef<T> = T extends unknown[] | Signal<string[]>\n  ? Signal<Translation[]>\n  : Signal<Translation>;\n\n/**\n * Gets the translated value of a key as Signal\n *\n * @example\n * text = translateSignal('hello');\n * textList = translateSignal(['green', 'blue']);\n * textVar = translateSignal('hello', { variable: 'world' });\n * textSpanish = translateSignal('hello', { variable: 'world' }, 'es');\n * textTodosScope = translateSignal('hello', { variable: 'world' }, { scope: 'todos' });\n *\n * @example\n * dynamicKey = signal('hello');\n * dynamicParam = signal({ variable: 'world' });\n * text = translateSignal(this.dynamicKey, this.dynamicParam);\n *\n */\nexport function translateSignal<T extends TranslateSignalKey>(\n  key: T,\n  params?: TranslateSignalParams,\n  lang?: ScopeType,\n  injector?: Injector,\n): TranslateSignalRef<T> {\n  if (!injector) {\n    assertInInjectionContext(translateSignal);\n  }\n  injector ??= inject(Injector);\n  const result = runInInjectionContext(injector, () => {\n    const service = inject(TranslocoService);\n    const scope = resolveScope(lang);\n    return computerKeysAndParams(key, params).pipe(\n      switchMap((dynamic) =>\n        service.selectTranslate(dynamic.key, dynamic.params, scope),\n      ),\n    );\n  });\n  return toSignal(result, { initialValue: Array.isArray(key) ? [''] : '' });\n}\n\n/**\n * Gets the translated object of a key as Signal\n *\n * @example\n * object = translateObjectSignal('nested.object');\n * title = object().title;\n *\n * @example\n * dynamicKey = signal('nested.object');\n * dynamicParam = signal({ variable: 'world' });\n * object = translateObjectSignal(this.dynamicKey, this.dynamicParam);\n */\nexport function translateObjectSignal<T extends TranslateSignalKey>(\n  key: T,\n  params?: TranslateSignalParams,\n  lang?: ScopeType,\n  injector?: Injector,\n): TranslateObjectSignalRef<T> {\n  if (!injector) {\n    assertInInjectionContext(translateObjectSignal);\n  }\n  injector ??= inject(Injector);\n  const result = runInInjectionContext(injector, () => {\n    const service = inject(TranslocoService);\n    const scope = resolveScope(lang);\n    return computerKeysAndParams(key, params).pipe(\n      switchMap((dynamic) =>\n        service.selectTranslateObject(\n          dynamic.key,\n          dynamic.params,\n          scope as string,\n        ),\n      ),\n    );\n  });\n  return toSignal(result, { initialValue: Array.isArray(key) ? [] : {} });\n}\n\nfunction computerParams(params: HashMap<Signal<string>> | Signal<HashMap>) {\n  if (isSignal(params)) {\n    return computed(() => params());\n  }\n  return computed(() => {\n    return Object.entries(params).reduce((acc, [key, value]) => {\n      acc[key] = isSignal(value) ? value() : value;\n      return acc;\n    }, {} as HashMap);\n  });\n}\n\nfunction computerKeys(\n  keys: Signal<string> | Signal<string[]> | Signal<string>[],\n) {\n  if (Array.isArray(keys)) {\n    return computed(() => keys.map((key) => (isSignal(key) ? key() : key)));\n  }\n  return computed(() => keys());\n}\n\nfunction isSignalKey(key: TranslateSignalKey): key is SignalKey {\n  return Array.isArray(key) ? key.some(isSignal) : isSignal(key);\n}\n\nfunction isSignalParams(\n  params?: HashMap,\n): params is HashMap<Signal<string>> | Signal<HashMap> {\n  return params\n    ? isSignal(params) || Object.values(params).some(isSignal)\n    : false;\n}\n\nfunction computerKeysAndParams(\n  key: TranslateSignalKey,\n  params?: TranslateSignalParams,\n): Observable<{\n  key: string | string[];\n  params: HashMap | undefined;\n}> {\n  // Avoid async effect from toObservable for those that do not need it\n  if (!isSignalKey(key) && !isSignalParams(params)) {\n    return of({\n      key,\n      params,\n    });\n  }\n  const computedKeys = isSignalKey(key)\n    ? computerKeys(key)\n    : computed(() => key);\n  const computedParams = isSignalParams(params)\n    ? computerParams(params)\n    : computed(() => params);\n  return toObservable(\n    computed(() => ({ key: computedKeys(), params: computedParams() })),\n  );\n}\n\nfunction resolveScope(scope?: ScopeType) {\n  if (typeof scope === 'undefined' || scope === '') {\n    const translocoScope = inject(TRANSLOCO_SCOPE, { optional: true });\n    return translocoScope ?? undefined;\n  }\n  return scope;\n}\n","export function isBrowser() {\n  return typeof window !== 'undefined';\n}\n\n/**\n * Returns the language code name from the browser, e.g. \"en\"\n */\nexport function getBrowserLang(): string | undefined {\n  let browserLang = getBrowserCultureLang();\n  if (!browserLang || !isBrowser()) {\n    return undefined;\n  }\n\n  if (browserLang.indexOf('-') !== -1) {\n    browserLang = browserLang.split('-')[0];\n  }\n\n  if (browserLang.indexOf('_') !== -1) {\n    browserLang = browserLang.split('_')[0];\n  }\n\n  return browserLang;\n}\n\n/**\n * Returns the culture language code name from the browser, e.g. \"en-US\"\n */\nexport function getBrowserCultureLang(): string {\n  if (!isBrowser()) {\n    return '';\n  }\n\n  const navigator = window.navigator;\n\n  return navigator.languages?.[0] ?? navigator.language;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TranslocoService"],"mappings":"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"}