{"version":3,"file":"taiga-ui-i18n-utils.mjs","sources":["../../../projects/i18n/utils/extract-i18n.ts","../../../projects/i18n/utils/load-language.ts","../../../projects/i18n/utils/language-switcher.ts","../../../projects/i18n/utils/taiga-ui-i18n-utils.ts"],"sourcesContent":["import {inject} from '@angular/core';\nimport {TUI_LANGUAGE} from '@taiga-ui/i18n/tokens';\nimport type {TuiLanguage} from '@taiga-ui/i18n/types';\nimport type {Observable} from 'rxjs';\nimport {map} from 'rxjs';\n\nexport function tuiExtractI18n<K extends keyof TuiLanguage>(\n    key: K,\n): () => Observable<TuiLanguage[K]> {\n    return () => inject(TUI_LANGUAGE).pipe(map((lang: TuiLanguage) => lang[key]));\n}\n","import type {TuiLanguage, TuiLanguageLoader, TuiLanguageName} from '@taiga-ui/i18n/types';\nimport type {Observable} from 'rxjs';\nimport {from, map, of} from 'rxjs';\n\n// CommonJS `module.exports` is wrapped as `default` in ESModule.\nasync function normalizeCommonJSImport<T>(importPromise: Promise<T>): Promise<T> {\n    return importPromise.then((m: any) => m.default || m);\n}\n\nexport function tuiLoadLanguage(\n    language: TuiLanguageName,\n    loader: TuiLanguageLoader,\n): Observable<TuiLanguage> {\n    return from(normalizeCommonJSImport(loader(language))).pipe(\n        map((module: any) => module?.[`TUI_${language.toUpperCase()}_LANGUAGE`]),\n    );\n}\n\nexport function tuiAsyncLoadLanguage(\n    language: TuiLanguageName | null,\n    loader: TuiLanguageLoader | null,\n    fallback: TuiLanguage,\n): Observable<TuiLanguage> {\n    return language && loader ? tuiLoadLanguage(language, loader) : of(fallback);\n}\n","import type {Provider} from '@angular/core';\nimport {inject, Injectable} from '@angular/core';\nimport {WA_LOCAL_STORAGE} from '@ng-web-apis/common';\nimport {\n    TUI_DEFAULT_LANGUAGE,\n    TUI_LANGUAGE,\n    TUI_LANGUAGE_LOADER,\n    TUI_LANGUAGE_STORAGE_KEY,\n} from '@taiga-ui/i18n/tokens';\nimport type {TuiLanguage, TuiLanguageLoader, TuiLanguageName} from '@taiga-ui/i18n/types';\nimport type {Observable} from 'rxjs';\nimport {BehaviorSubject, of, switchAll} from 'rxjs';\n\nimport {tuiAsyncLoadLanguage} from './load-language';\n\nexport function tuiLanguageSwitcher(loader: TuiLanguageLoader): Provider[] {\n    return [\n        {\n            provide: TUI_LANGUAGE_LOADER,\n            useFactory: () => loader,\n        },\n        {\n            provide: TUI_LANGUAGE,\n            useFactory: () => inject(TuiLanguageSwitcherService).pipe(switchAll()),\n        },\n    ];\n}\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class TuiLanguageSwitcherService extends BehaviorSubject<Observable<TuiLanguage>> {\n    private readonly fallback = inject(TUI_DEFAULT_LANGUAGE);\n    private readonly key = inject(TUI_LANGUAGE_STORAGE_KEY);\n    private readonly storage = inject(WA_LOCAL_STORAGE);\n    private readonly loader = inject(TUI_LANGUAGE_LOADER, {optional: true});\n\n    constructor() {\n        super(\n            tuiAsyncLoadLanguage(\n                inject(WA_LOCAL_STORAGE)?.getItem(inject(TUI_LANGUAGE_STORAGE_KEY)),\n                inject(TUI_LANGUAGE_LOADER, {optional: true}),\n                inject(TUI_DEFAULT_LANGUAGE),\n            ),\n        );\n    }\n\n    public get language(): TuiLanguageName {\n        return this.storage?.getItem(this.key) || this.fallback.name;\n    }\n\n    public setLanguage(language: TuiLanguageName): void {\n        this.storage?.setItem(this.key, language);\n        this.next(tuiAsyncLoadLanguage(language, this.loader, this.fallback));\n    }\n\n    protected clear(): void {\n        this.storage?.removeItem(this.key);\n        this.next(of(this.fallback));\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}