{"version":3,"file":"hug-ngx-g11n-internal.mjs","sources":["../../../projects/lib/internal/models/g11n-debug.enum.ts","../../../projects/lib/internal/main.ts","../../../projects/lib/internal/index.ts","../../../projects/lib/internal/hug-ngx-g11n-internal.ts"],"sourcesContent":["export enum G11nDebug {\n    SHOW_KEYS,\n    DUMMY_TRANSLATIONS,\n    NO_DEBUG,\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { registerLocaleData } from '@angular/common';\nimport { APP_INITIALIZER, DEFAULT_CURRENCY_CODE, inject, LOCALE_ID, type Provider } from '@angular/core';\nimport { loadTranslations } from '@angular/localize';\n\nimport { G11N_OPTIONS, LOCALES } from '.';\nimport { G11nDebug, type G11nFile, type G11nLocale, type G11nOptions } from './models';\n\nconst STORAGE_KEY = 'hug-ngx-g11n:lang';\nlet QUERY_PARAM_NAME = 'lang';\nlet FORCE_DEBUG = G11nDebug.NO_DEBUG;\n\n/**\n * @internal\n */\nexport const DEFAULT_OPTIONS: G11nOptions = {\n    defaultLanguage: 'fr-CH',\n    defaultCurrency: 'CHF',\n    useNavigatorLanguage: true,\n    loadLocaleExtra: false,\n    useTranslations: true,\n    rootTranslationsPath: 'translations',\n    translationScopes: [],\n    queryParamName: QUERY_PARAM_NAME,\n    storage: localStorage,\n    debug: G11nDebug.NO_DEBUG,\n};\n\n// ---\n\nexport const currentLanguage = (): string => inject(LOCALE_ID);\n\nexport const setLanguage = (value: string): void => {\n    refreshUrl(value);\n    location.reload();\n};\n\n// --- HELPER(s) ---\n\nconst loadTranslationFiles = async (\n    rootTranslationsPath: string,\n    translationScopes: string[],\n    filename: string,\n    debug: G11nDebug = G11nDebug.NO_DEBUG,\n): Promise<void> => {\n    const debugMode = FORCE_DEBUG !== G11nDebug.NO_DEBUG ? FORCE_DEBUG : debug;\n    const translations: Record<string, string> = {};\n\n    // eslint-disable-next-line no-loops/no-loops\n    for (const scope of [...translationScopes, '']) {\n        const filePath = scope ? `${rootTranslationsPath}/${scope}/${filename}` : `${rootTranslationsPath}/${filename}`;\n        try {\n            const response = await fetch(filePath);\n            if (response.status === 200) {\n                const data = (await response.json()) as G11nFile | Record<string, undefined>;\n                if (data.translations) {\n                    Object.assign(translations, data.translations);\n                } else {\n                    console.warn(`[@hug/ngx-g11n] No translations found in file: ${filePath}`);\n                }\n            }\n        } catch (error) {\n            console.error(`[@hug/ngx-g11n] Could not load translation file: ${filePath}`);\n            console.error(error);\n        }\n    }\n\n    if (debugMode === G11nDebug.SHOW_KEYS) {\n        Object.entries(translations).forEach(([key, value]) => {\n            translations[key] = `${value} (@${key})`;\n        });\n    } else if (debugMode === G11nDebug.DUMMY_TRANSLATIONS) {\n        Object.keys(translations).forEach(key => {\n            translations[key] = '-';\n        });\n    }\n\n    loadTranslations(translations);\n};\n\nconst refreshUrl = (localeId: string): void => {\n    const newUrl = new URL(location.href);\n    newUrl.searchParams.set(QUERY_PARAM_NAME, localeId);\n    history.pushState({}, '', newUrl); // update URL without reload\n};\n\nconst loadLanguage = async (\n    localeId: string,\n    locales: Record<string, G11nLocale>,\n    options: G11nOptions,\n): Promise<void> => {\n    // Sync language\n    document.documentElement.lang = localeId;\n    options.storage?.setItem(STORAGE_KEY, localeId);\n    refreshUrl(localeId);\n\n    // Register locale data\n    const locale = locales[localeId];\n    const language = new Intl.Locale(localeId).language;\n    const localeBase = (await locale.base()).default;\n    const localeExtra = options.loadLocaleExtra && locale.extra ? (await locale.extra()).default : undefined;\n    registerLocaleData(localeBase, localeId, localeExtra);\n\n    // Load translations\n    if (options.useTranslations) {\n        const filename = locale.translationFilename ?? `${language}.json`;\n        await loadTranslationFiles(options.rootTranslationsPath!, options.translationScopes ?? [], filename, options.debug);\n    }\n};\n\nconst getLocaleToUse = (locales: Record<string, G11nLocale>, options: G11nOptions): string => {\n    const getSupportedLocaleId = (localeId: string): string | undefined => {\n        // Priority 1: exact match\n        if (localeId in locales) {\n            return localeId;\n        }\n        // Priority 2: match on base language only\n        const locale = new Intl.Locale(localeId);\n        if (locale.language in locales) {\n            console.warn(\n                `[@hug/ngx-g11n] Locale \"${localeId}\" was not found in given locales (will use \"${locale.language}\" instead)`,\n            );\n            return locale.language;\n        }\n        // Priority 3: match on base language with any region\n        const matchedLocale = Object.keys(locales).find(key => new Intl.Locale(key).language === locale.language);\n        if (matchedLocale) {\n            console.warn(\n                `[@hug/ngx-g11n] Locale \"${localeId}\" was not found in given locales (will use \"${matchedLocale}\" instead)`,\n            );\n            return matchedLocale;\n        }\n        return undefined;\n    };\n\n    /**\n     * Initialize query param name\n     * We do it here as getLocaleToUse is called first in the injection tree (cf. provide: LOCALE_ID)\n     */\n    initQueryParamName(options);\n\n    // Priority 1: query param\n    const localeIdFromUrl = new URL(location.href).searchParams.get(QUERY_PARAM_NAME);\n    if (localeIdFromUrl) {\n        if (localeIdFromUrl === 'keys') {\n            FORCE_DEBUG = G11nDebug.SHOW_KEYS;\n        } else if (localeIdFromUrl === 'dummy') {\n            FORCE_DEBUG = G11nDebug.DUMMY_TRANSLATIONS;\n        } else {\n            const supportedLocaleId = getSupportedLocaleId(localeIdFromUrl);\n            if (supportedLocaleId) {\n                return supportedLocaleId;\n            } else {\n                console.warn(\n                    `[@hug/ngx-g11n] Locale \"${localeIdFromUrl}\" from url was not found in given locales (will use storage if found)`,\n                );\n            }\n        }\n    }\n\n    // Priority 2: storage\n    const localeIdFromStorage = options.storage?.getItem(STORAGE_KEY);\n    if (localeIdFromStorage) {\n        const supportedLocaleId = getSupportedLocaleId(localeIdFromStorage);\n        if (supportedLocaleId) {\n            return supportedLocaleId;\n        } else {\n            console.warn(\n                `[@hug/ngx-g11n] Locale \"${localeIdFromStorage}\" from storage was not found in given locales (will use navigator if enabled)`,\n            );\n        }\n    }\n\n    // Priority 3: browser\n    if (options.useNavigatorLanguage) {\n        const supportedLocaleId = getSupportedLocaleId(navigator.language);\n        if (supportedLocaleId) {\n            return supportedLocaleId;\n        } else {\n            console.warn(\n                `[@hug/ngx-g11n] Locale \"${navigator.language}\" from browser was not found in given locales (will use default setting)`,\n            );\n        }\n    }\n\n    // Priority 4: user's setting\n    if (options.defaultLanguage) {\n        const supportedLocaleId = getSupportedLocaleId(options.defaultLanguage);\n        if (supportedLocaleId) {\n            return supportedLocaleId;\n        } else {\n            console.warn(\n                `[@hug/ngx-g11n] Locale \"${options.defaultLanguage}\" from user's setting was not found in given locales`,\n            );\n        }\n    }\n\n    throw new Error('[@hug/ngx-g11n] No provided locale was found');\n};\n\n/**\n * We have to determine the query param name and export it globally as it will be used by the refreshUrl function, which\n * do not have access to the option object. We also have to support case-insensitive cases (ex: lang, Lang, LANG, etc.).\n * @param options The G11N options.\n * @internal\n */\nconst initQueryParamName = (options: G11nOptions): void => {\n    let value = options.queryParamName ?? DEFAULT_OPTIONS.queryParamName!;\n    // eslint-disable-next-line no-loops/no-loops\n    for (const key of new URL(location.href).searchParams.keys()) {\n        if (key.toLowerCase() === value.toLowerCase()) {\n            value = key;\n        }\n    }\n    QUERY_PARAM_NAME = value;\n};\n\n/**\n * Initializes G11N providers.\n * @internal\n * @returns An array of Angular providers for G11N initialization.\n */\nexport const init = (): Provider[] => [\n    {\n        provide: G11N_OPTIONS,\n        useValue: DEFAULT_OPTIONS,\n    },\n    {\n        provide: LOCALE_ID,\n        useFactory: getLocaleToUse,\n        deps: [LOCALES, G11N_OPTIONS],\n    },\n    {\n        provide: DEFAULT_CURRENCY_CODE,\n        useFactory: (options: G11nOptions) => options.defaultCurrency ?? DEFAULT_OPTIONS.defaultCurrency,\n        deps: [G11N_OPTIONS],\n    },\n    {\n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        provide: APP_INITIALIZER,\n        useFactory:\n            (localeId: string, locales: Record<string, G11nLocale>, options: G11nOptions) =>\n                async (): Promise<void> => {\n                    await loadLanguage(localeId, locales, options);\n                },\n        deps: [LOCALE_ID, LOCALES, G11N_OPTIONS],\n        multi: true,\n    },\n];\n","\nimport { InjectionToken } from '@angular/core';\n\nimport type { G11nLocale, G11nOptions } from './models';\n\nexport const LOCALES = new InjectionToken<Record<string, G11nLocale>>('LOCALES');\nexport const G11N_OPTIONS = new InjectionToken<G11nOptions>('G11N_OPTIONS');\n\nexport { currentLanguage, DEFAULT_OPTIONS, init, setLanguage } from './main';\nexport {\n    type DefaultModuleImport,\n    G11nDebug,\n    type G11nFeature,\n    type G11nLocale,\n    type G11nOptions,\n} from './models';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}