{"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 {computed, inject, type Signal} from '@angular/core';\nimport {TUI_LANGUAGE} from '@taiga-ui/i18n/tokens';\nimport {type TuiLanguage} from '@taiga-ui/i18n/types';\n\nexport function tuiExtractI18n<K extends keyof TuiLanguage>(\n    key: K,\n): () => Signal<TuiLanguage[K]> {\n    return (language = inject(TUI_LANGUAGE)) => computed(() => language()[key]);\n}\n","import {\n    type TuiLanguage,\n    type TuiLanguageLoader,\n    type TuiLanguageName,\n} from '@taiga-ui/i18n/types';\nimport {from, map, type Observable, 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 {inject, Injectable, type Provider} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\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 {\n    type TuiLanguage,\n    type TuiLanguageLoader,\n    type TuiLanguageName,\n} from '@taiga-ui/i18n/types';\nimport {BehaviorSubject, type Observable, 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: () =>\n                toSignal(inject(TuiLanguageSwitcherService).pipe(switchAll()), {\n                    initialValue: inject(TUI_DEFAULT_LANGUAGE),\n                }),\n        },\n    ];\n}\n\n@Injectable({providedIn: 'root'})\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                    null,\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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"}