@acorex/core 20.6.21 → 20.6.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -280,6 +280,42 @@ function isValidMultiLanguageObject(value) {
|
|
|
280
280
|
}
|
|
281
281
|
return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');
|
|
282
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Resolves {@link AXMultiLanguageString} to a single string for the given locale.
|
|
285
|
+
* Fallback order: `currentLocale` → `en-US` → first map value.
|
|
286
|
+
*/
|
|
287
|
+
function resolveMultiLanguageString(content, currentLocale) {
|
|
288
|
+
if (content == null || content === '') {
|
|
289
|
+
return '';
|
|
290
|
+
}
|
|
291
|
+
if (typeof content === 'string') {
|
|
292
|
+
return content;
|
|
293
|
+
}
|
|
294
|
+
if (!isValidMultiLanguageObject(content)) {
|
|
295
|
+
return String(content);
|
|
296
|
+
}
|
|
297
|
+
return resolveMultiLanguageValue(content, currentLocale);
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Creates an {@link AXMultiLanguageMap} with `en-US` and `fa-IR` entries.
|
|
301
|
+
* Use for seed data, tests, and demos that supply English and Persian copy explicitly.
|
|
302
|
+
*/
|
|
303
|
+
function createMultiLanguageString(enUs, faIr) {
|
|
304
|
+
return { 'en-US': enUs, 'fa-IR': faIr };
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* True when there is no displayable text in any locale (plain string or ML map).
|
|
308
|
+
*/
|
|
309
|
+
function isEffectivelyEmptyLocalizedValue(value) {
|
|
310
|
+
if (value == null)
|
|
311
|
+
return true;
|
|
312
|
+
if (typeof value === 'string')
|
|
313
|
+
return value.trim() === '';
|
|
314
|
+
if (typeof value !== 'object' || Array.isArray(value))
|
|
315
|
+
return false;
|
|
316
|
+
const record = value;
|
|
317
|
+
return Object.values(record).every((v) => v == null || String(v).trim() === '');
|
|
318
|
+
}
|
|
283
319
|
|
|
284
320
|
let singletonInstance;
|
|
285
321
|
function translateSync(key, options) {
|
|
@@ -412,6 +448,16 @@ class AXTranslationService {
|
|
|
412
448
|
scope: options?.scope ?? this.config.defaults.scope,
|
|
413
449
|
};
|
|
414
450
|
}
|
|
451
|
+
isValidMultiLanguageObject(value) {
|
|
452
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
453
|
+
return false;
|
|
454
|
+
}
|
|
455
|
+
const entries = Object.entries(value);
|
|
456
|
+
if (!entries.length) {
|
|
457
|
+
return false;
|
|
458
|
+
}
|
|
459
|
+
return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');
|
|
460
|
+
}
|
|
415
461
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
416
462
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }
|
|
417
463
|
}
|
|
@@ -511,5 +557,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
511
557
|
* Generated bundle index. Do not edit.
|
|
512
558
|
*/
|
|
513
559
|
|
|
514
|
-
export { AXTranslationDefaultConfig, AXTranslationLoaderDefault, AXTranslationModule, AXTranslationService, AXTranslatorDirective, AXTranslatorPipe, AX_TRANSLATION_CONFIG, AX_TRANSLATION_LOADER, LOCALE_KEY_REGEX, isValidMultiLanguageObject, loadTranslationScope, resolveMultiLanguageValue, translateSync, translationConfig };
|
|
560
|
+
export { AXTranslationDefaultConfig, AXTranslationLoaderDefault, AXTranslationModule, AXTranslationService, AXTranslatorDirective, AXTranslatorPipe, AX_TRANSLATION_CONFIG, AX_TRANSLATION_LOADER, LOCALE_KEY_REGEX, createMultiLanguageString, isEffectivelyEmptyLocalizedValue, isValidMultiLanguageObject, loadTranslationScope, resolveMultiLanguageString, resolveMultiLanguageValue, translateSync, translationConfig };
|
|
515
561
|
//# sourceMappingURL=acorex-core-translation.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-core-translation.mjs","sources":["../tmp-esm2022/translation/lib/translation.config.js","../tmp-esm2022/translation/lib/translation.loader.js","../tmp-esm2022/translation/lib/translation-loader.service.js","../tmp-esm2022/translation/lib/translation.parser.js","../tmp-esm2022/translation/lib/translation.resolver.js","../tmp-esm2022/translation/lib/translation.types.js","../tmp-esm2022/translation/lib/translation.service.js","../tmp-esm2022/translation/lib/translation-scope.resolver.js","../tmp-esm2022/translation/lib/translator.directive.js","../tmp-esm2022/translation/lib/translator.pipe.js","../tmp-esm2022/translation/lib/translation.module.js","../tmp-esm2022/translation/acorex-core-translation.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const AX_TRANSLATION_CONFIG = new InjectionToken('AX_TRANSLATION_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXTranslationDefaultConfig;\n },\n});\nexport const AXTranslationDefaultConfig = {\n defaults: {\n lang: 'en-US',\n scope: 'acorex',\n },\n preload: {\n langs: ['en-US'],\n scopes: ['acorex'],\n },\n resolver: {\n scopeKey: 'scope',\n },\n};\nexport function translationConfig(config = {}) {\n const result = {\n ...AXTranslationDefaultConfig,\n ...config,\n };\n return result;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBeUIvQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLEVBQUU7SUFDcEcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE9BQU8sMEJBQTBCLENBQUM7SUFDcEMsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUF3QjtJQUM3RCxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsT0FBTztRQUNiLEtBQUssRUFBRSxRQUFRO0tBQ2hCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQ2hCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNuQjtJQUNELFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFBRSxPQUFPO0tBQ2xCO0NBQ0YsQ0FBQztBQUlGLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxTQUFxQyxFQUFFO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHO1FBQ2IsR0FBRywwQkFBMEI7UUFDN0IsR0FBRyxNQUFNO0tBQ1YsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGVMYW5nLCBBWFRyYW5zbGF0ZVNjb3BlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUcmFuc2xhdGlvbkNvbmZpZyB7XG4gIGRlZmF1bHRzOiB7XG4gICAgbGFuZzogQVhUcmFuc2xhdGVMYW5nO1xuICAgIHNjb3BlOiBBWFRyYW5zbGF0ZVNjb3BlO1xuICB9O1xuICBwcmVsb2FkPzoge1xuICAgIGxhbmdzOiBBWFRyYW5zbGF0ZUxhbmdbXTtcbiAgICBzY29wZXM6IEFYVHJhbnNsYXRlU2NvcGVbXTtcbiAgfTtcbiAgZmFsbGJhY2tzPzoge1xuICAgIGxhbmdzPzogUmVjb3JkPEFYVHJhbnNsYXRlTGFuZywgQVhUcmFuc2xhdGVMYW5nW10+O1xuICAgIHNjb3Blcz86IFJlY29yZDxBWFRyYW5zbGF0ZVNjb3BlLCBBWFRyYW5zbGF0ZVNjb3BlW10+O1xuICB9O1xuICBhdmFpbGFibGU/OiB7XG4gICAgbGFuZ3M/OiBBWFRyYW5zbGF0ZUxhbmdbXTtcbiAgICBzY29wZXM/OiBBWFRyYW5zbGF0ZVNjb3BlW107XG4gIH07XG4gIHJlc29sdmVyPzoge1xuICAgIHNjb3BlS2V5OiBzdHJpbmc7IC8vIHVzZWQgdG8gZXh0cmFjdCBzY29wZSBmcm9tIHBhcmFtcywgZS5nLiBgc2NvcGU6ICdjb21tb24nYFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgQVhfVFJBTlNMQVRJT05fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEFYVHJhbnNsYXRpb25Db25maWc+KCdBWF9UUkFOU0xBVElPTl9DT05GSUcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4ge1xuICAgIHJldHVybiBBWFRyYW5zbGF0aW9uRGVmYXVsdENvbmZpZztcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQVhUcmFuc2xhdGlvbkRlZmF1bHRDb25maWc6IEFYVHJhbnNsYXRpb25Db25maWcgPSB7XG4gIGRlZmF1bHRzOiB7XG4gICAgbGFuZzogJ2VuLVVTJyxcbiAgICBzY29wZTogJ2Fjb3JleCcsXG4gIH0sXG4gIHByZWxvYWQ6IHtcbiAgICBsYW5nczogWydlbi1VUyddLFxuICAgIHNjb3BlczogWydhY29yZXgnXSxcbiAgfSxcbiAgcmVzb2x2ZXI6IHtcbiAgICBzY29wZUtleTogJ3Njb3BlJyxcbiAgfSxcbn07XG5cbmV4cG9ydCB0eXBlIEFYUGFydGlhbFRyYW5zbGF0aW9uQ29uZmlnID0gUGFydGlhbDxBWFRyYW5zbGF0aW9uQ29uZmlnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0aW9uQ29uZmlnKGNvbmZpZzogQVhQYXJ0aWFsVHJhbnNsYXRpb25Db25maWcgPSB7fSk6IEFYVHJhbnNsYXRpb25Db25maWcge1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgLi4uQVhUcmFuc2xhdGlvbkRlZmF1bHRDb25maWcsXG4gICAgLi4uY29uZmlnLFxuICB9O1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl19","import { InjectionToken } from '@angular/core';\nimport { of } from 'rxjs';\nexport class AXTranslationLoaderDefault {\n load(options) {\n return of({});\n }\n}\nexport const AX_TRANSLATION_LOADER = new InjectionToken('AX_TRANSLATION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXTranslationLoaderDefault();\n },\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFZdEMsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxJQUFJLENBQUMsT0FBbUM7UUFDdEMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHVCQUF1QixFQUFFO0lBQ3BHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixPQUFPLElBQUksMEJBQTBCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0ZUxhbmcsIEFYVHJhbnNsYXRlU2NvcGUsIEFYVHJhbnNsYXRpb24gfSBmcm9tICcuL3RyYW5zbGF0aW9uLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFRyYW5zbGF0aW9uTG9hZGVyT3B0aW9ucyB7XG4gIGxhbmc6IEFYVHJhbnNsYXRlTGFuZztcbiAgc2NvcGU/OiBBWFRyYW5zbGF0ZVNjb3BlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVHJhbnNsYXRpb25Mb2FkZXIge1xuICBsb2FkKG9wdGlvbnM6IEFYVHJhbnNsYXRpb25Mb2FkZXJPcHRpb25zKTogT2JzZXJ2YWJsZTxBWFRyYW5zbGF0aW9uPjtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRpb25Mb2FkZXJEZWZhdWx0IGltcGxlbWVudHMgQVhUcmFuc2xhdGlvbkxvYWRlciB7XG4gIGxvYWQob3B0aW9uczogQVhUcmFuc2xhdGlvbkxvYWRlck9wdGlvbnMpOiBPYnNlcnZhYmxlPEFYVHJhbnNsYXRpb24+IHtcbiAgICByZXR1cm4gb2Yoe30pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBWF9UUkFOU0xBVElPTl9MT0FERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhUcmFuc2xhdGlvbkxvYWRlcj4oJ0FYX1RSQU5TTEFUSU9OX0xPQURFUicsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBBWFRyYW5zbGF0aW9uTG9hZGVyRGVmYXVsdCgpO1xuICB9LFxufSk7XG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { firstValueFrom, of, shareReplay, tap } from 'rxjs';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AX_TRANSLATION_LOADER } from './translation.loader';\nimport { AXEventService, AXSystemEvents } from '@acorex/core/events';\nimport * as i0 from \"@angular/core\";\nexport class AXTranslationLoaderService {\n constructor() {\n this.loader = inject(AX_TRANSLATION_LOADER);\n this.config = inject(AX_TRANSLATION_CONFIG);\n this.eventService = inject(AXEventService);\n this.cache = new Map();\n this.inflight = new Map();\n }\n load(lang, scope) {\n const key = `${lang}:${scope}`;\n // 1. Check cache first\n if (this.cache.has(key)) {\n return of(this.cache.get(key));\n }\n // 2. Check if it's already in-flight\n if (this.inflight.has(key)) {\n return this.inflight.get(key);\n }\n // 3. Not in cache, not in-flight: Make the request\n const newObs = this.loader.load({ lang, scope }).pipe(tap({\n next: (data) => {\n this.cache.set(key, data);\n // No need to delete from inflight here, finalize will handle it\n // or delete it only after caching. If you delete here, and shareReplay\n // source completes, subsequent subscribers might re-trigger if not careful.\n // It's better to remove from inflight in finalize or after shareReplay has replayed.\n // For simplicity and common patterns, removing after caching within tap (before shareReplay)\n // can work if shareReplay handles the source completion correctly.\n // A safer bet is to remove it in finalize *after* shareReplay.\n // Emit event to notify other components that the language has been loaded\n this.eventService.emitEvent({\n type: AXSystemEvents.AXLanguageLoaded,\n payload: data,\n });\n },\n error: (err) => {\n console.error(`Error loading ${key}:`, err);\n // Remove from inflight on error so subsequent calls can retry\n this.inflight.delete(key);\n },\n // finalize is tricky with shareReplay if you want to keep the replayed value\n // but still clear inflight. For this pattern, deleting on next/error\n // *before* shareReplay often means that shareReplay will re-trigger the source\n // if the inflight observable is requested again after being deleted.\n // The current structure of deleting in `tap` and then `shareReplay`\n // might need `this.inflight.delete(key)` to be moved after `shareReplay` effect.\n // Let's try a common pattern:\n }), shareReplay(1), // Replay the last emitted value for subsequent subscribers\n tap({\n // This tap runs *after* shareReplay has done its work for the first subscriber\n // and for subsequent subscribers that get the replayed value.\n next: () => {\n // Once data is successfully loaded and cached (by the first tap),\n // and shareReplay ensures it's available, we can remove from inflight.\n // This means subsequent calls for the same key during the \"inflight\" period\n // get the shared observable, and after it resolves and is cached,\n // inflight is cleared.\n this.inflight.delete(key);\n },\n // Error is handled by the first tap, or catchError if you want to provide a fallback\n }));\n this.inflight.set(key, newObs); // Store the observable that includes caching and cleanup logic\n return newObs;\n }\n peek(lang, scope, key) {\n const cacheKey = `${lang}:${scope}`;\n const data = this.cache.get(cacheKey);\n return get(data, key, null);\n }\n async preload(options) {\n const langsToLoad = [...new Set(options?.langs ?? this.config.preload?.langs ?? [this.config.defaults.lang])];\n const scopesToLoad = [...new Set(options?.scopes ?? this.config.preload?.scopes ?? [this.config.defaults.scope])];\n const loadPromises = [];\n langsToLoad.forEach((lang) => {\n scopesToLoad.forEach((scope) => {\n const loadPromise = firstValueFrom(this.load(lang, scope)) // This should now always get a valid Observable\n .then((value) => ({ lang, scope, status: 'fulfilled', value }))\n .catch((reason) => ({ lang, scope, status: 'rejected', reason }));\n loadPromises.push(loadPromise);\n });\n });\n const results = await Promise.all(loadPromises);\n let allSucceeded = true;\n results.forEach((result) => {\n if (result.status === 'rejected') {\n allSucceeded = false;\n console.error(`Failed to preload translations for lang: ${result.lang}, scope: ${result.scope}. Reason:`, result.reason);\n }\n else {\n // console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs\n }\n // else {\n // console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs\n // }\n });\n if (!allSucceeded) {\n console.error('One or more translation preloads failed. See console for details.');\n // throw new Error(\"One or more translation preloads failed. See console for details.\");\n }\n // The second results.forEach loop in your original code was redundant, I've removed it.\n // If it was for a different purpose, you can add it back.\n }\n clear() {\n this.cache.clear();\n this.inflight.clear();\n }\n getFallbackLangs(lang) {\n return this.config.fallbacks?.langs?.[lang] ?? [];\n }\n getFallbackScopes(scope) {\n return this.config.fallbacks?.scopes?.[scope] ?? [];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationLoaderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationLoaderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQWMsY0FBYyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3JFLE1BQU0sT0FBTywwQkFBMEI7SUFEdkM7UUFFVSxXQUFNLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdkMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXRDLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUN6QyxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXFDLENBQUM7S0FpSWpFO0lBL0hRLElBQUksQ0FBQyxJQUFxQixFQUFFLEtBQXVCO1FBQ3hELE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBRS9CLHVCQUF1QjtRQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxF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QVcsRUFDMUYsTUFBTSxDQUFDLE1BQU0sQ0FDZCxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLCtIQUErSDtZQUNqSSxDQUFDO1lBQ0QsU0FBUztZQUNULCtIQUErSDtZQUMvSCxJQUFJO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1lBQ25GLHdGQUF3RjtRQUMxRixDQUFDO1FBQ0Qsd0ZBQXdGO1FBQ3hGLDBEQUEwRDtJQUM1RCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsSUFBcUI7UUFDM0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQXVCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RELENBQUM7OEdBdElVLDBCQUEwQjtrSEFBMUIsMEJBQTBCLGNBRGIsTUFBTTs7MkZBQ25CLDBCQUEwQjtrQkFEdEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSwgb2YsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0NPTkZJRyB9IGZyb20gJy4vdHJhbnNsYXRpb24uY29uZmlnJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0xPQURFUiB9IGZyb20gJy4vdHJhbnNsYXRpb24ubG9hZGVyJztcbmltcG9ydCB7IEFYVHJhbnNsYXRlTGFuZywgQVhUcmFuc2xhdGVTY29wZSwgQVhUcmFuc2xhdGlvbiB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhFdmVudFNlcnZpY2UsIEFYU3lzdGVtRXZlbnRzIH0gZnJvbSAnQGFjb3JleC9jb3JlL2V2ZW50cyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdGlvbkxvYWRlclNlcnZpY2Uge1xuICBwcml2YXRlIGxvYWRlciA9IGluamVjdChBWF9UUkFOU0xBVElPTl9MT0FERVIpO1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChBWF9UUkFOU0xBVElPTl9DT05GSUcpO1xuICBwcml2YXRlIGV2ZW50U2VydmljZSA9IGluamVjdChBWEV2ZW50U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBBWFRyYW5zbGF0aW9uPigpO1xuICBwcml2YXRlIGluZmxpZ2h0ID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8QVhUcmFuc2xhdGlvbj4+KCk7XG5cbiAgcHVibGljIGxvYWQobGFuZzogQVhUcmFuc2xhdGVMYW5nLCBzY29wZTogQVhUcmFuc2xhdGVTY29wZSk6IE9ic2VydmFibGU8QVhUcmFuc2xhdGlvbj4ge1xuICAgIGNvbnN0IGtleSA9IGAke2xhbmd9OiR7c2NvcGV9YDtcblxuICAgIC8vIDEuIENoZWNrIGNhY2hlIGZpcnN0XG4gICAgaWYgKHRoaXMuY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmNhY2hlLmdldChrZXkpISk7XG4gICAgfVxuXG4gICAgLy8gMi4gQ2hlY2sgaWYgaXQncyBhbHJlYWR5IGluLWZsaWdodFxuICAgIGlmICh0aGlzLmluZmxpZ2h0LmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbmZsaWdodC5nZXQoa2V5KSE7XG4gICAgfVxuXG4gICAgLy8gMy4gTm90IGluIGNhY2hlLCBub3QgaW4tZmxpZ2h0OiBNYWtlIHRoZSByZXF1ZXN0XG4gICAgY29uc3QgbmV3T2JzID0gdGhpcy5sb2FkZXIubG9hZCh7IGxhbmcsIHNjb3BlIH0pLnBpcGUoXG4gICAgICB0YXAoe1xuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KGtleSwgZGF0YSk7XG4gICAgICAgICAgLy8gTm8gbmVlZCB0byBkZWxldGUgZnJvbSBpbmZsaWdodCBoZXJlLCBmaW5hbGl6ZSB3aWxsIGhhbmRsZSBpdFxuICAgICAgICAgIC8vIG9yIGRlbGV0ZSBpdCBvbmx5IGFmdGVyIGNhY2hpbmcuIElmIHlvdSBkZWxldGUgaGVyZSwgYW5kIHNoYXJlUmVwbGF5XG4gICAgICAgICAgLy8gc291cmNlIGNvbXBsZXRlcywgc3Vic2VxdWVudCBzdWJzY3JpYmVycyBtaWdodCByZS10cmlnZ2VyIGlmIG5vdCBjYXJlZnVsLlxuICAgICAgICAgIC8vIEl0J3MgYmV0dGVyIHRvIHJlbW92ZSBmcm9tIGluZmxpZ2h0IGluIGZpbmFsaXplIG9yIGFmdGVyIHNoYXJlUmVwbGF5IGhhcyByZXBsYXllZC5cbiAgICAgICAgICAvLyBGb3Igc2ltcGxpY2l0eSBhbmQgY29tbW9uIHBhdHRlcm5zLCByZW1vdmluZyBhZnRlciBjYWNoaW5nIHdpdGhpbiB0YXAgKGJlZm9yZSBzaGFyZVJlcGxheSlcbiAgICAgICAgICAvLyBjYW4gd29yayBpZiBzaGFyZVJlcGxheSBoYW5kbGVzIHRoZSBzb3VyY2UgY29tcGxldGlvbiBjb3JyZWN0bHkuXG4gICAgICAgICAgLy8gQSBzYWZlciBiZXQgaXMgdG8gcmVtb3ZlIGl0IGluIGZpbmFsaXplICphZnRlciogc2hhcmVSZXBsYXkuXG5cbiAgICAgICAgICAvLyBFbWl0IGV2ZW50IHRvIG5vdGlmeSBvdGhlciBjb21wb25lbnRzIHRoYXQgdGhlIGxhbmd1YWdlIGhhcyBiZWVuIGxvYWRlZFxuICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmVtaXRFdmVudCh7XG4gICAgICAgICAgICB0eXBlOiBBWFN5c3RlbUV2ZW50cy5BWExhbmd1YWdlTG9hZGVkLFxuICAgICAgICAgICAgcGF5bG9hZDogZGF0YSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nICR7a2V5fTpgLCBlcnIpO1xuICAgICAgICAgIC8vIFJlbW92ZSBmcm9tIGluZmxpZ2h0IG9uIGVycm9yIHNvIHN1YnNlcXVlbnQgY2FsbHMgY2FuIHJldHJ5XG4gICAgICAgICAgdGhpcy5pbmZsaWdodC5kZWxldGUoa2V5KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZmluYWxpemUgaXMgdHJpY2t5IHdpdGggc2hhcmVSZXBsYXkgaWYgeW91IHdhbnQgdG8ga2VlcCB0aGUgcmVwbGF5ZWQgdmFsdWVcbiAgICAgICAgLy8gYnV0IHN0aWxsIGNsZWFyIGluZmxpZ2h0LiBGb3IgdGhpcyBwYXR0ZXJuLCBkZWxldGluZyBvbiBuZXh0L2Vycm9yXG4gICAgICAgIC8vICpiZWZvcmUqIHNoYXJlUmVwbGF5IG9mdGVuIG1lYW5zIHRoYXQgc2hhcmVSZXBsYXkgd2lsbCByZS10cmlnZ2VyIHRoZSBzb3VyY2VcbiAgICAgICAgLy8gaWYgdGhlIGluZmxpZ2h0IG9ic2VydmFibGUgaXMgcmVxdWVzdGVkIGFnYWluIGFmdGVyIGJlaW5nIGRlbGV0ZWQuXG4gICAgICAgIC8vIFRoZSBjdXJyZW50IHN0cnVjdHVyZSBvZiBkZWxldGluZyBpbiBgdGFwYCBhbmQgdGhlbiBgc2hhcmVSZXBsYXlgXG4gICAgICAgIC8vIG1pZ2h0IG5lZWQgYHRoaXMuaW5mbGlnaHQuZGVsZXRlKGtleSlgIHRvIGJlIG1vdmVkIGFmdGVyIGBzaGFyZVJlcGxheWAgZWZmZWN0LlxuICAgICAgICAvLyBMZXQncyB0cnkgYSBjb21tb24gcGF0dGVybjpcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSksIC8vIFJlcGxheSB0aGUgbGFzdCBlbWl0dGVkIHZhbHVlIGZvciBzdWJzZXF1ZW50IHN1YnNjcmliZXJzXG4gICAgICB0YXAoe1xuICAgICAgICAvLyBUaGlzIHRhcCBydW5zICphZnRlciogc2hhcmVSZXBsYXkgaGFzIGRvbmUgaXRzIHdvcmsgZm9yIHRoZSBmaXJzdCBzdWJzY3JpYmVyXG4gICAgICAgIC8vIGFuZCBmb3Igc3Vic2VxdWVudCBzdWJzY3JpYmVycyB0aGF0IGdldCB0aGUgcmVwbGF5ZWQgdmFsdWUuXG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBPbmNlIGRhdGEgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgY2FjaGVkIChieSB0aGUgZmlyc3QgdGFwKSxcbiAgICAgICAgICAvLyBhbmQgc2hhcmVSZXBsYXkgZW5zdXJlcyBpdCdzIGF2YWlsYWJsZSwgd2UgY2FuIHJlbW92ZSBmcm9tIGluZmxpZ2h0LlxuICAgICAgICAgIC8vIFRoaXMgbWVhbnMgc3Vic2VxdWVudCBjYWxscyBmb3IgdGhlIHNhbWUga2V5IGR1cmluZyB0aGUgXCJpbmZsaWdodFwiIHBlcmlvZFxuICAgICAgICAgIC8vIGdldCB0aGUgc2hhcmVkIG9ic2VydmFibGUsIGFuZCBhZnRlciBpdCByZXNvbHZlcyBhbmQgaXMgY2FjaGVkLFxuICAgICAgICAgIC8vIGluZmxpZ2h0IGlzIGNsZWFyZWQuXG4gICAgICAgICAgdGhpcy5pbmZsaWdodC5kZWxldGUoa2V5KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gRXJyb3IgaXMgaGFuZGxlZCBieSB0aGUgZmlyc3QgdGFwLCBvciBjYXRjaEVycm9yIGlmIHlvdSB3YW50IHRvIHByb3ZpZGUgYSBmYWxsYmFja1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuaW5mbGlnaHQuc2V0KGtleSwgbmV3T2JzKTsgLy8gU3RvcmUgdGhlIG9ic2VydmFibGUgdGhhdCBpbmNsdWRlcyBjYWNoaW5nIGFuZCBjbGVhbnVwIGxvZ2ljXG4gICAgcmV0dXJuIG5ld09icztcbiAgfVxuXG4gIHB1YmxpYyBwZWVrKGxhbmc6IEFYVHJhbnNsYXRlTGFuZywgc2NvcGU6IEFYVHJhbnNsYXRlU2NvcGUsIGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBgJHtsYW5nfToke3Njb3BlfWA7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuY2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICByZXR1cm4gZ2V0KGRhdGEsIGtleSwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJlbG9hZChvcHRpb25zPzogeyBsYW5ncz86IEFYVHJhbnNsYXRlTGFuZ1tdOyBzY29wZXM/OiBBWFRyYW5zbGF0ZVNjb3BlW10gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxhbmdzVG9Mb2FkID0gWy4uLm5ldyBTZXQob3B0aW9ucz8ubGFuZ3MgPz8gdGhpcy5jb25maWcucHJlbG9hZD8ubGFuZ3MgPz8gW3RoaXMuY29uZmlnLmRlZmF1bHRzLmxhbmddKV07XG4gICAgY29uc3Qgc2NvcGVzVG9Mb2FkID0gWy4uLm5ldyBTZXQob3B0aW9ucz8uc2NvcGVzID8/IHRoaXMuY29uZmlnLnByZWxvYWQ/LnNjb3BlcyA/PyBbdGhpcy5jb25maWcuZGVmYXVsdHMuc2NvcGVdKV07XG5cbiAgICBjb25zdCBsb2FkUHJvbWlzZXM6IFByb21pc2U8XG4gICAgICB8IHsgbGFuZzogQVhUcmFuc2xhdGVMYW5nOyBzY29wZTogQVhUcmFuc2xhdGVTY29wZTsgc3RhdHVzOiAnZnVsZmlsbGVkJzsgdmFsdWU6IEFYVHJhbnNsYXRpb24gfSAvLyBDaGFuZ2VkIGFueSB0byBBWFRyYW5zbGF0aW9uXG4gICAgICB8IHsgbGFuZzogQVhUcmFuc2xhdGVMYW5nOyBzY29wZTogQVhUcmFuc2xhdGVTY29wZTsgc3RhdHVzOiAncmVqZWN0ZWQnOyByZWFzb246IGFueSB9XG4gICAgPltdID0gW107XG5cbiAgICBsYW5nc1RvTG9hZC5mb3JFYWNoKChsYW5nKSA9PiB7XG4gICAgICBzY29wZXNUb0xvYWQuZm9yRWFjaCgoc2NvcGUpID0+IHtcbiAgICAgICAgY29uc3QgbG9hZFByb21pc2UgPSBmaXJzdFZhbHVlRnJvbSh0aGlzLmxvYWQobGFuZywgc2NvcGUpKSAvLyBUaGlzIHNob3VsZCBub3cgYWx3YXlzIGdldCBhIHZhbGlkIE9ic2VydmFibGVcbiAgICAgICAgICAudGhlbigodmFsdWUpID0+ICh7IGxhbmcsIHNjb3BlLCBzdGF0dXM6ICdmdWxmaWxsZWQnIGFzIGNvbnN0LCB2YWx1ZSB9KSlcbiAgICAgICAgICAuY2F0Y2goKHJlYXNvbikgPT4gKHsgbGFuZywgc2NvcGUsIHN0YXR1czogJ3JlamVjdGVkJyBhcyBjb25zdCwgcmVhc29uIH0pKTtcbiAgICAgICAgbG9hZFByb21pc2VzLnB1c2gobG9hZFByb21pc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwobG9hZFByb21pc2VzKTtcblxuICAgIGxldCBhbGxTdWNjZWVkZWQgPSB0cnVlO1xuICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3JlamVjdGVkJykge1xuICAgICAgICBhbGxTdWNjZWVkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgRmFpbGVkIHRvIHByZWxvYWQgdHJhbnNsYXRpb25zIGZvciBsYW5nOiAke3Jlc3VsdC5sYW5nfSwgc2NvcGU6ICR7cmVzdWx0LnNjb3BlfS4gUmVhc29uOmAsXG4gICAgICAgICAgcmVzdWx0LnJlYXNvbixcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgcHJlbG9hZGVkIGxhbmc6ICR7cmVzdWx0Lmxhbmd9LCBzY29wZTogJHtyZXN1bHQuc2NvcGV9YCk7IC8vIE9wdGlvbmFsbHkgdW5jb21tZW50IGZvciBzdWNjZXNzIGxvZ3NcbiAgICAgIH1cbiAgICAgIC8vIGVsc2Uge1xuICAgICAgLy8gY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSBwcmVsb2FkZWQgbGFuZzogJHtyZXN1bHQubGFuZ30sIHNjb3BlOiAke3Jlc3VsdC5zY29wZX1gKTsgLy8gT3B0aW9uYWxseSB1bmNvbW1lbnQgZm9yIHN1Y2Nlc3MgbG9nc1xuICAgICAgLy8gfVxuICAgIH0pO1xuXG4gICAgaWYgKCFhbGxTdWNjZWVkZWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ09uZSBvciBtb3JlIHRyYW5zbGF0aW9uIHByZWxvYWRzIGZhaWxlZC4gU2VlIGNvbnNvbGUgZm9yIGRldGFpbHMuJyk7XG4gICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoXCJPbmUgb3IgbW9yZSB0cmFuc2xhdGlvbiBwcmVsb2FkcyBmYWlsZWQuIFNlZSBjb25zb2xlIGZvciBkZXRhaWxzLlwiKTtcbiAgICB9XG4gICAgLy8gVGhlIHNlY29uZCByZXN1bHRzLmZvckVhY2ggbG9vcCBpbiB5b3VyIG9yaWdpbmFsIGNvZGUgd2FzIHJlZHVuZGFudCwgSSd2ZSByZW1vdmVkIGl0LlxuICAgIC8vIElmIGl0IHdhcyBmb3IgYSBkaWZmZXJlbnQgcHVycG9zZSwgeW91IGNhbiBhZGQgaXQgYmFjay5cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgdGhpcy5pbmZsaWdodC5jbGVhcigpO1xuICB9XG5cbiAgcHVibGljIGdldEZhbGxiYWNrTGFuZ3MobGFuZzogQVhUcmFuc2xhdGVMYW5nKTogQVhUcmFuc2xhdGVMYW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mYWxsYmFja3M/LmxhbmdzPy5bbGFuZ10gPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0RmFsbGJhY2tTY29wZXMoc2NvcGU6IEFYVHJhbnNsYXRlU2NvcGUpOiBBWFRyYW5zbGF0ZVNjb3BlW10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mYWxsYmFja3M/LnNjb3Blcz8uW3Njb3BlXSA/PyBbXTtcbiAgfVxufVxuIl19","export class TranslationParserService {\n constructor() {\n this.legacyRegex = /t\\([\"']([^\"']+)[\"']\\s*(?:,\\s*(\\{.*?\\}))?\\)/g;\n this.inlineRegex = /@([a-zA-Z\\-]+:)?([a-zA-Z0-9_-]+):([a-zA-Z0-9_.:-]+)(?=[\\\\s.,;!?)]|$)/g;\n }\n isExpression(value) {\n return typeof value === 'string' && (value.includes('t(') || value.includes('@'));\n }\n parse(expression, currentLang, currentScope) {\n const tokens = [];\n // Extract inline references like @lang:scope:key or @scope:key\n let inlineMatch;\n while ((inlineMatch = this.inlineRegex.exec(expression)) !== null) {\n const langPart = inlineMatch[1]?.replace(':', '') ?? null;\n const scope = inlineMatch[2] ?? currentScope;\n const key = inlineMatch[3];\n const fullMatch = inlineMatch[0];\n tokens.push({ lang: langPart || currentLang, scope, key, fullMatch });\n }\n // Extract legacy expressions\n let legacyMatch;\n while ((legacyMatch = this.legacyRegex.exec(expression)) !== null) {\n const key = legacyMatch[1];\n const rawOptions = legacyMatch[2];\n let scope = currentScope;\n let lang = currentLang;\n if (rawOptions) {\n try {\n const jsonString = rawOptions.replace(/(['\"])?([a-zA-Z0-9_]+)(['\"])?\\s*:/g, '\"$2\":').replace(/'/g, '\"');\n const options = JSON.parse(jsonString);\n scope = options.scope || scope;\n lang = options.lang || lang;\n }\n catch (err) {\n console.error('Invalid translation expression options:', err);\n }\n }\n tokens.push({ key, scope, lang, fullMatch: legacyMatch[0] });\n }\n return tokens;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ucGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLnBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sd0JBQXdCO0lBQXJDO1FBQ21CLGdCQUFXLEdBQUcsNkNBQTZDLENBQUM7UUFDNUQsZ0JBQVcsR0FBRyx1RUFBdUUsQ0FBQztJQTRDekcsQ0FBQztJQTFDUSxZQUFZLENBQUMsS0FBYTtRQUMvQixPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBa0IsRUFBRSxXQUFtQixFQUFFLFlBQW9CO1FBQ3hFLE1BQU0sTUFBTSxHQUFvQixFQUFFLENBQUM7UUFFbkMsK0RBQStEO1FBQy9ELElBQUksV0FBVyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNsRSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDMUQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQztZQUM3QyxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWpDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxJQUFJLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixJQUFJLFdBQVcsQ0FBQztRQUNoQixPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEUsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUM7WUFDekIsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDO1lBRXZCLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDO29CQUNILE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsb0NBQW9DLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDeEcsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDdkMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO29CQUMvQixJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7Z0JBQzlCLENBQUM7Z0JBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztvQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRSxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQYXJzZWRUb2tlbiB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25QYXJzZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsZWdhY3lSZWdleCA9IC90XFwoW1wiJ10oW15cIiddKylbXCInXVxccyooPzosXFxzKihcXHsuKj9cXH0pKT9cXCkvZztcbiAgcHJpdmF0ZSByZWFkb25seSBpbmxpbmVSZWdleCA9IC9AKFthLXpBLVpcXC1dKzopPyhbYS16QS1aMC05Xy1dKyk6KFthLXpBLVowLTlfLjotXSspKD89W1xcXFxzLiw7IT8pXXwkKS9nO1xuXG4gIHB1YmxpYyBpc0V4cHJlc3Npb24odmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICh2YWx1ZS5pbmNsdWRlcygndCgnKSB8fCB2YWx1ZS5pbmNsdWRlcygnQCcpKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZShleHByZXNzaW9uOiBzdHJpbmcsIGN1cnJlbnRMYW5nOiBzdHJpbmcsIGN1cnJlbnRTY29wZTogc3RyaW5nKTogQVhQYXJzZWRUb2tlbltdIHtcbiAgICBjb25zdCB0b2tlbnM6IEFYUGFyc2VkVG9rZW5bXSA9IFtdO1xuXG4gICAgLy8gRXh0cmFjdCBpbmxpbmUgcmVmZXJlbmNlcyBsaWtlIEBsYW5nOnNjb3BlOmtleSBvciBAc2NvcGU6a2V5XG4gICAgbGV0IGlubGluZU1hdGNoO1xuICAgIHdoaWxlICgoaW5saW5lTWF0Y2ggPSB0aGlzLmlubGluZVJlZ2V4LmV4ZWMoZXhwcmVzc2lvbikpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBsYW5nUGFydCA9IGlubGluZU1hdGNoWzFdPy5yZXBsYWNlKCc6JywgJycpID8/IG51bGw7XG4gICAgICBjb25zdCBzY29wZSA9IGlubGluZU1hdGNoWzJdID8/IGN1cnJlbnRTY29wZTtcbiAgICAgIGNvbnN0IGtleSA9IGlubGluZU1hdGNoWzNdO1xuICAgICAgY29uc3QgZnVsbE1hdGNoID0gaW5saW5lTWF0Y2hbMF07XG5cbiAgICAgIHRva2Vucy5wdXNoKHsgbGFuZzogbGFuZ1BhcnQgfHwgY3VycmVudExhbmcsIHNjb3BlLCBrZXksIGZ1bGxNYXRjaCB9KTtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IGxlZ2FjeSBleHByZXNzaW9uc1xuICAgIGxldCBsZWdhY3lNYXRjaDtcbiAgICB3aGlsZSAoKGxlZ2FjeU1hdGNoID0gdGhpcy5sZWdhY3lSZWdleC5leGVjKGV4cHJlc3Npb24pKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qga2V5ID0gbGVnYWN5TWF0Y2hbMV07XG4gICAgICBjb25zdCByYXdPcHRpb25zID0gbGVnYWN5TWF0Y2hbMl07XG4gICAgICBsZXQgc2NvcGUgPSBjdXJyZW50U2NvcGU7XG4gICAgICBsZXQgbGFuZyA9IGN1cnJlbnRMYW5nO1xuXG4gICAgICBpZiAocmF3T3B0aW9ucykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSByYXdPcHRpb25zLnJlcGxhY2UoLyhbJ1wiXSk/KFthLXpBLVowLTlfXSspKFsnXCJdKT9cXHMqOi9nLCAnXCIkMlwiOicpLnJlcGxhY2UoLycvZywgJ1wiJyk7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XG4gICAgICAgICAgc2NvcGUgPSBvcHRpb25zLnNjb3BlIHx8IHNjb3BlO1xuICAgICAgICAgIGxhbmcgPSBvcHRpb25zLmxhbmcgfHwgbGFuZztcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCB0cmFuc2xhdGlvbiBleHByZXNzaW9uIG9wdGlvbnM6JywgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0b2tlbnMucHVzaCh7IGtleSwgc2NvcGUsIGxhbmcsIGZ1bGxNYXRjaDogbGVnYWN5TWF0Y2hbMF0gfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { TranslationParserService } from './translation.parser';\n// Helper function to escape special characters for use in a regular expression\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport class TranslationResolverService {\n constructor() {\n this.loaderService = inject(AXTranslationLoaderService);\n this.parser = new TranslationParserService();\n }\n async resolve(lang, scope, key, params) {\n let result = this.loaderService.peek(lang, scope, key);\n if (result == null) {\n await firstValueFrom(this.loaderService.load(lang, scope));\n result = this.loaderService.peek(lang, scope, key);\n }\n if (result == null) {\n const unresolvedResult = key;\n return this.format(unresolvedResult, params);\n }\n // Recursively resolve references\n if (typeof result === 'string' && this.parser.isExpression(result)) {\n const tokens = this.parser.parse(result, lang, scope);\n if (tokens.length > 0) {\n const first = tokens[0];\n result = await this.resolve(first.lang || lang, first.scope || scope, first.key, params);\n }\n }\n return this.format(result, params);\n }\n format(text, params) {\n if (!params || typeof text !== 'string' || Object.keys(params).length === 0) {\n return text;\n }\n return Object.keys(params).reduce((currentText, paramKey) => {\n // paramKey is the key from the params object, e.g., \"title\" or \" title \"\n const valueToInsert = params[paramKey];\n // 1. Trim the key from the params object to handle potential leading/trailing spaces.\n // e.g., if paramKey is \" title \", keyForPattern becomes \"title\".\n const keyForPattern = paramKey.trim();\n // If trimming results in an empty string, it's not a valid placeholder to replace.\n if (keyForPattern === '') {\n return currentText;\n }\n // 2. Escape the trimmed key to safely use it in a regular expression.\n // This handles cases where the key might contain special regex characters (e.g., \"user.name\", \"item[0]\").\n const escapedKey = escapeRegExp(keyForPattern);\n // 3. Construct the RegExp. This will match:\n // - {{KEY}}\n // - {{ KEY }}\n // - {{ KEY }}\n // etc., where KEY is the (trimmed and escaped) paramKey.\n const re = new RegExp(`{{\\\\s*${escapedKey}\\\\s*}}`, 'g');\n // 4. Replace occurrences, ensuring the value is a string.\n return currentText.replace(re, String(valueToInsert));\n }, text);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24ucmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2hFLCtFQUErRTtBQUMvRSxTQUFTLFlBQVksQ0FBQyxNQUFjO0lBQ2xDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsTUFBTSxPQUFPLDBCQUEwQjtJQUF2QztRQUNVLGtCQUFhLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDbkQsV0FBTSxHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztJQWlFbEQsQ0FBQztJQS9EQyxLQUFLLENBQUMsT0FBTyxDQUNYLElBQXFCLEVBQ3JCLEtBQXVCLEVBQ3ZCLEdBQVcsRUFDWCxNQUEwQjtRQUUxQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXZELElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25CLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNELE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuQixNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELGlDQUFpQztRQUNqQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzRixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFZLEVBQUUsTUFBMEI7UUFDcEQsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUMxRCx5RUFBeUU7WUFDekUsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZDLHNGQUFzRjtZQUN0RixvRUFBb0U7WUFDcEUsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXRDLG1GQUFtRjtZQUNuRixJQUFJLGFBQWEsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxXQUFXLENBQUM7WUFDckIsQ0FBQztZQUVELHNFQUFzRTtZQUN0RSw2R0FBNkc7WUFDN0csTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRS9DLDRDQUE0QztZQUM1QyxlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQiw0REFBNEQ7WUFDNUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsU0FBUyxVQUFVLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUV4RCwwREFBMEQ7WUFDMUQsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25QYXJzZXJTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5wYXJzZXInO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGVMYW5nLCBBWFRyYW5zbGF0ZVBhcmFtcywgQVhUcmFuc2xhdGVTY29wZSB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBmb3IgdXNlIGluIGEgcmVndWxhciBleHByZXNzaW9uXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJyk7XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvblJlc29sdmVyU2VydmljZSB7XG4gIHByaXZhdGUgbG9hZGVyU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSk7XG4gIHByaXZhdGUgcGFyc2VyID0gbmV3IFRyYW5zbGF0aW9uUGFyc2VyU2VydmljZSgpO1xuXG4gIGFzeW5jIHJlc29sdmUoXG4gICAgbGFuZzogQVhUcmFuc2xhdGVMYW5nLFxuICAgIHNjb3BlOiBBWFRyYW5zbGF0ZVNjb3BlLFxuICAgIGtleTogc3RyaW5nLFxuICAgIHBhcmFtcz86IEFYVHJhbnNsYXRlUGFyYW1zLFxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmxvYWRlclNlcnZpY2UucGVlayhsYW5nLCBzY29wZSwga2V5KTtcblxuICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5sb2FkZXJTZXJ2aWNlLmxvYWQobGFuZywgc2NvcGUpKTtcbiAgICAgIHJlc3VsdCA9IHRoaXMubG9hZGVyU2VydmljZS5wZWVrKGxhbmcsIHNjb3BlLCBrZXkpO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgY29uc3QgdW5yZXNvbHZlZFJlc3VsdCA9IGtleTtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdCh1bnJlc29sdmVkUmVzdWx0LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIC8vIFJlY3Vyc2l2ZWx5IHJlc29sdmUgcmVmZXJlbmNlc1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyAmJiB0aGlzLnBhcnNlci5pc0V4cHJlc3Npb24ocmVzdWx0KSkge1xuICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy5wYXJzZXIucGFyc2UocmVzdWx0LCBsYW5nLCBzY29wZSk7XG4gICAgICBpZiAodG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgZmlyc3QgPSB0b2tlbnNbMF07XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMucmVzb2x2ZShmaXJzdC5sYW5nIHx8IGxhbmcsIGZpcnN0LnNjb3BlIHx8IHNjb3BlLCBmaXJzdC5rZXksIHBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0KHJlc3VsdCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXQodGV4dDogc3RyaW5nLCBwYXJhbXM/OiBBWFRyYW5zbGF0ZVBhcmFtcyk6IHN0cmluZyB7XG4gICAgaWYgKCFwYXJhbXMgfHwgdHlwZW9mIHRleHQgIT09ICdzdHJpbmcnIHx8IE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMocGFyYW1zKS5yZWR1Y2UoKGN1cnJlbnRUZXh0LCBwYXJhbUtleSkgPT4ge1xuICAgICAgLy8gcGFyYW1LZXkgaXMgdGhlIGtleSBmcm9tIHRoZSBwYXJhbXMgb2JqZWN0LCBlLmcuLCBcInRpdGxlXCIgb3IgXCIgdGl0bGUgXCJcbiAgICAgIGNvbnN0IHZhbHVlVG9JbnNlcnQgPSBwYXJhbXNbcGFyYW1LZXldO1xuXG4gICAgICAvLyAxLiBUcmltIHRoZSBrZXkgZnJvbSB0aGUgcGFyYW1zIG9iamVjdCB0byBoYW5kbGUgcG90ZW50aWFsIGxlYWRpbmcvdHJhaWxpbmcgc3BhY2VzLlxuICAgICAgLy8gICAgZS5nLiwgaWYgcGFyYW1LZXkgaXMgXCIgdGl0bGUgXCIsIGtleUZvclBhdHRlcm4gYmVjb21lcyBcInRpdGxlXCIuXG4gICAgICBjb25zdCBrZXlGb3JQYXR0ZXJuID0gcGFyYW1LZXkudHJpbSgpO1xuXG4gICAgICAvLyBJZiB0cmltbWluZyByZXN1bHRzIGluIGFuIGVtcHR5IHN0cmluZywgaXQncyBub3QgYSB2YWxpZCBwbGFjZWhvbGRlciB0byByZXBsYWNlLlxuICAgICAgaWYgKGtleUZvclBhdHRlcm4gPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50VGV4dDtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gRXNjYXBlIHRoZSB0cmltbWVkIGtleSB0byBzYWZlbHkgdXNlIGl0IGluIGEgcmVndWxhciBleHByZXNzaW9uLlxuICAgICAgLy8gICAgVGhpcyBoYW5kbGVzIGNhc2VzIHdoZXJlIHRoZSBrZXkgbWlnaHQgY29udGFpbiBzcGVjaWFsIHJlZ2V4IGNoYXJhY3RlcnMgKGUuZy4sIFwidXNlci5uYW1lXCIsIFwiaXRlbVswXVwiKS5cbiAgICAgIGNvbnN0IGVzY2FwZWRLZXkgPSBlc2NhcGVSZWdFeHAoa2V5Rm9yUGF0dGVybik7XG5cbiAgICAgIC8vIDMuIENvbnN0cnVjdCB0aGUgUmVnRXhwLiBUaGlzIHdpbGwgbWF0Y2g6XG4gICAgICAvLyAgICAtIHt7S0VZfX1cbiAgICAgIC8vICAgIC0ge3sgS0VZIH19XG4gICAgICAvLyAgICAtIHt7ICBLRVkgIH19XG4gICAgICAvLyAgICBldGMuLCB3aGVyZSBLRVkgaXMgdGhlICh0cmltbWVkIGFuZCBlc2NhcGVkKSBwYXJhbUtleS5cbiAgICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChge3tcXFxccyoke2VzY2FwZWRLZXl9XFxcXHMqfX1gLCAnZycpO1xuXG4gICAgICAvLyA0LiBSZXBsYWNlIG9jY3VycmVuY2VzLCBlbnN1cmluZyB0aGUgdmFsdWUgaXMgYSBzdHJpbmcuXG4gICAgICByZXR1cm4gY3VycmVudFRleHQucmVwbGFjZShyZSwgU3RyaW5nKHZhbHVlVG9JbnNlcnQpKTtcbiAgICB9LCB0ZXh0KTtcbiAgfVxufVxuIl19","export const LOCALE_KEY_REGEX = /^(\\*-\\*|[a-z]{2}-[A-Z]{2})$/;\nexport function resolveMultiLanguageValue(value, locale) {\n return value[locale] ?? value['en-US'] ?? Object.values(value).find((item) => item != null) ?? '';\n}\nexport function isValidMultiLanguageObject(value) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const entries = Object.entries(value);\n if (!entries.length) {\n return false;\n }\n return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0JBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUFDO0FBSTlELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxLQUF5QixFQUFFLE1BQWM7SUFDakYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3BHLENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsS0FBYztJQUN2RCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUM7QUFDNUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYVHJhbnNsYXRlSGFzaE1hcDxUID0gdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCBUPjtcblxuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGVMYW5nID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGVTY29wZSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIEFYVHJhbnNsYXRlUGFyYW1zPFQgPSB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIFQ+O1xuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGlvbiA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUcmFuc2xhdGVPcHRpb25zIHtcbiAgbGFuZz86IEFYVHJhbnNsYXRlTGFuZztcbiAgc2NvcGU/OiBBWFRyYW5zbGF0ZVNjb3BlO1xuICBwYXJhbXM/OiBBWFRyYW5zbGF0ZVBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBhcnNlZFRva2VuIHtcbiAga2V5OiBzdHJpbmc7XG4gIHNjb3BlPzogQVhUcmFuc2xhdGVTY29wZTtcbiAgbGFuZz86IEFYVHJhbnNsYXRlTGFuZztcbiAgZnVsbE1hdGNoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBMT0NBTEVfS0VZX1JFR0VYID0gL14oXFwqLVxcKnxbYS16XXsyfS1bQS1aXXsyfSkkLztcblxuZXhwb3J0IHR5cGUgQVhNdWx0aUxhbmd1YWdlTWFwID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVNdWx0aUxhbmd1YWdlVmFsdWUodmFsdWU6IEFYTXVsdGlMYW5ndWFnZU1hcCwgbG9jYWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdmFsdWVbbG9jYWxlXSA/PyB2YWx1ZVsnZW4tVVMnXSA/PyBPYmplY3QudmFsdWVzKHZhbHVlKS5maW5kKChpdGVtKSA9PiBpdGVtICE9IG51bGwpID8/ICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE11bHRpTGFuZ3VhZ2VPYmplY3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBBWE11bHRpTGFuZ3VhZ2VNYXAge1xuICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpO1xuICBpZiAoIWVudHJpZXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGVudHJpZXMuZXZlcnkoKFtrZXksIGVudHJ5VmFsdWVdKSA9PiBMT0NBTEVfS0VZX1JFR0VYLnRlc3Qoa2V5KSAmJiB0eXBlb2YgZW50cnlWYWx1ZSA9PT0gJ3N0cmluZycpO1xufVxuIl19","import { AXEventService, AXSystemEvents } from '@acorex/core/events';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { waitFor } from '@acorex/core/utils';\nimport { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, from, of, shareReplay, switchMap } from 'rxjs';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { TranslationParserService } from './translation.parser';\nimport { TranslationResolverService } from './translation.resolver';\nimport { isValidMultiLanguageObject, resolveMultiLanguageValue, } from './translation.types';\nimport * as i0 from \"@angular/core\";\nlet singletonInstance;\nexport function translateSync(key, options) {\n return singletonInstance.translateSync(key, options);\n}\nexport class AXTranslationService {\n constructor() {\n this.localeService = inject(AXLocaleService);\n this.config = inject(AX_TRANSLATION_CONFIG);\n this.loader = inject(AXTranslationLoaderService);\n this.parser = new TranslationParserService();\n this.eventService = inject(AXEventService);\n this.resolver = new TranslationResolverService();\n this.activeLang = new BehaviorSubject(this.config.defaults.lang);\n this.langChanges$ = this.activeLang.asObservable();\n this.currentLocale$ = this.langChanges$.pipe(distinctUntilChanged());\n singletonInstance = this;\n this.localeService.profileChanged$.subscribe((locale) => {\n if (locale?.localeInfo?.code) {\n this.setActiveLang(locale.localeInfo.code);\n }\n });\n }\n setActiveLang(lang) {\n if (lang && lang !== this.activeLang.getValue()) {\n this.activeLang.next(lang);\n this.eventService.emitEvent({\n type: AXSystemEvents.AXLanguageChanged,\n payload: lang,\n });\n }\n }\n getActiveLang() {\n return this.activeLang.getValue();\n }\n getDefaultLang() {\n return this.config.defaults.lang;\n }\n resolve(value, locale) {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n if (!isValidMultiLanguageObject(value)) {\n return '';\n }\n return resolveMultiLanguageValue(value, locale ?? this.getActiveLang());\n }\n toLocaleMap(value, activeLocale = this.getActiveLang()) {\n if (isValidMultiLanguageObject(value)) {\n return { ...value };\n }\n return {\n [activeLocale]: typeof value === 'string' ? value : '',\n };\n }\n translate$(value, options) {\n if (isValidMultiLanguageObject(value)) {\n return this.langChanges$.pipe(switchMap((activeLang) => {\n const targetLang = options?.lang ?? activeLang;\n const selectedValue = resolveMultiLanguageValue(value, targetLang);\n const scope = options?.scope ?? this.config.defaults.scope;\n return from(this.translateAsync(selectedValue, {\n ...options,\n lang: targetLang,\n scope,\n }));\n }));\n }\n return this.translateValue$(value, options);\n }\n async translateAsync(text, options) {\n const { lang, scope } = this.resolveContext(options);\n const params = options?.params;\n if (!this.parser.isExpression(text)) {\n return this.resolver.resolve(lang, scope, text, params);\n }\n const tokens = this.parser.parse(text, lang, scope);\n const results = await Promise.all(tokens.map((token) => this.resolver\n .resolve(token.lang ?? lang, token.scope ?? scope, token.key, params)\n .then((translated) => [token.fullMatch, translated])));\n return results.reduce((output, [match, translated]) => output.replace(match, translated), text);\n }\n translateSync(text, options) {\n const { lang, scope } = this.resolveContext(options);\n const params = options?.params;\n const waitForLoad = options?.waitForLoad ?? false;\n const timeoutMs = options?.timeoutMs ?? 100;\n if (!this.parser.isExpression(text)) {\n let translated = this.loader.peek(lang, scope, text);\n if (!translated && waitForLoad) {\n translated = waitFor(() => this.loader.peek(lang, scope, text), () => this.loader.load(lang, scope).subscribe(), timeoutMs);\n }\n return this.resolver.format(translated ?? text, params);\n }\n const tokens = this.parser.parse(text, lang, scope);\n let result = text;\n for (const token of tokens) {\n const targetLang = token.lang ?? lang;\n const targetScope = token.scope ?? scope;\n const key = token.key;\n let translation = this.loader.peek(targetLang, targetScope, key);\n if (!translation) {\n translation =\n waitFor(() => this.loader.peek(targetLang, targetScope, key), () => this.loader.load(targetLang, targetScope).subscribe(), waitForLoad ? timeoutMs : 0) ?? key;\n }\n result = result.replace(token.fullMatch, this.resolver.format(translation, params));\n }\n return result;\n }\n translateValue$(text, options) {\n if (!text) {\n return of('');\n }\n const staticOptions = { ...options };\n const staticScope = staticOptions.scope ?? this.config.defaults.scope;\n return this.langChanges$.pipe(switchMap((lang) => {\n return from(this.translateAsync(text, {\n ...staticOptions,\n lang: staticOptions.lang ?? lang,\n scope: staticScope,\n }));\n }), shareReplay({ bufferSize: 1, refCount: true }));\n }\n resolveContext(options) {\n return {\n lang: options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang,\n scope: options?.scope ?? this.config.defaults.scope,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvdHJhbnNsYXRpb24vc3JjL2xpYi90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBSUwsMEJBQTBCLEVBQzFCLHlCQUF5QixHQUMxQixNQUFNLHFCQUFxQixDQUFDOztBQUU3QixJQUFJLGlCQUF1QyxDQUFDO0FBRTVDLE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBVyxFQUFFLE9BQTRCO0lBQ3JFLE9BQU8saUJBQWlCLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBS0QsTUFBTSxPQUFPLG9CQUFvQjtJQVcvQjtRQVZRLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FB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SSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSztTQUNwRCxDQUFDO0lBQ0osQ0FBQzs4R0EzTFUsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRXZlbnRTZXJ2aWNlLCBBWFN5c3RlbUV2ZW50cyB9IGZyb20gJ0BhY29yZXgvY29yZS9ldmVudHMnO1xuaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2xvY2FsZSc7XG5pbXBvcnQgeyB3YWl0Rm9yIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Mb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWF9UUkFOU0xBVElPTl9DT05GSUcgfSBmcm9tICcuL3RyYW5zbGF0aW9uLmNvbmZpZyc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblBhcnNlclNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uLnBhcnNlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblJlc29sdmVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24ucmVzb2x2ZXInO1xuaW1wb3J0IHtcbiAgQVhNdWx0aUxhbmd1YWdlTWFwLFxuICBBWFRyYW5zbGF0ZUxhbmcsXG4gIEFYVHJhbnNsYXRlT3B0aW9ucyxcbiAgaXNWYWxpZE11bHRpTGFuZ3VhZ2VPYmplY3QsXG4gIHJlc29sdmVNdWx0aUxhbmd1YWdlVmFsdWUsXG59IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuXG5sZXQgc2luZ2xldG9uSW5zdGFuY2U6IEFYVHJhbnNsYXRpb25TZXJ2aWNlO1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlU3luYyhrZXk6IHN0cmluZywgb3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9ucyk6IHN0cmluZyB7XG4gIHJldHVybiBzaW5nbGV0b25JbnN0YW5jZS50cmFuc2xhdGVTeW5jKGtleSwgb3B0aW9ucyk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgbG9jYWxlU2VydmljZSA9IGluamVjdChBWExvY2FsZVNlcnZpY2UpO1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChBWF9UUkFOU0xBVElPTl9DT05GSUcpO1xuICBwcml2YXRlIGxvYWRlciA9IGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSk7XG4gIHByaXZhdGUgcGFyc2VyID0gbmV3IFRyYW5zbGF0aW9uUGFyc2VyU2VydmljZSgpO1xuICBwcml2YXRlIGV2ZW50U2VydmljZSA9IGluamVjdChBWEV2ZW50U2VydmljZSk7XG4gIHByaXZhdGUgcmVzb2x2ZXIgPSBuZXcgVHJhbnNsYXRpb25SZXNvbHZlclNlcnZpY2UoKTtcbiAgcHJpdmF0ZSBhY3RpdmVMYW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBWFRyYW5zbGF0ZUxhbmc+KHRoaXMuY29uZmlnLmRlZmF1bHRzLmxhbmcpO1xuICBwdWJsaWMgcmVhZG9ubHkgbGFuZ0NoYW5nZXMkID0gdGhpcy5hY3RpdmVMYW5nLmFzT2JzZXJ2YWJsZSgpO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudExvY2FsZSQgPSB0aGlzLmxhbmdDaGFuZ2VzJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHNpbmdsZXRvbkluc3RhbmNlID0gdGhpcztcbiAgICB0aGlzLmxvY2FsZVNlcnZpY2UucHJvZmlsZUNoYW5nZWQkLnN1YnNjcmliZSgobG9jYWxlKSA9PiB7XG4gICAgICBpZiAobG9jYWxlPy5sb2NhbGVJbmZvPy5jb2RlKSB7XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlTGFuZyhsb2NhbGUubG9jYWxlSW5mby5jb2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVMYW5nKGxhbmc6IEFYVHJhbnNsYXRlTGFuZyk6IHZvaWQge1xuICAgIGlmIChsYW5nICYmIGxhbmcgIT09IHRoaXMuYWN0aXZlTGFuZy5nZXRWYWx1ZSgpKSB7XG4gICAgICB0aGlzLmFjdGl2ZUxhbmcubmV4dChsYW5nKTtcbiAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmVtaXRFdmVudCh7XG4gICAgICAgIHR5cGU6IEFYU3lzdGVtRXZlbnRzLkFYTGFuZ3VhZ2VDaGFuZ2VkLFxuICAgICAgICBwYXlsb2FkOiBsYW5nLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEFjdGl2ZUxhbmcoKTogQVhUcmFuc2xhdGVMYW5nIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVMYW5nLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGVmYXVsdExhbmcoKTogQVhUcmFuc2xhdGVMYW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGVmYXVsdHMubGFuZztcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKHZhbHVlOiBzdHJpbmcgfCBBWE11bHRpTGFuZ3VhZ2VNYXAgfCBudWxsIHwgdW5kZWZpbmVkLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzVmFsaWRNdWx0aUxhbmd1YWdlT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlTXVsdGlMYW5ndWFnZVZhbHVlKHZhbHVlLCBsb2NhbGUgPz8gdGhpcy5nZXRBY3RpdmVMYW5nKCkpO1xuICB9XG5cbiAgcHVibGljIHRvTG9jYWxlTWFwKFxuICAgIHZhbHVlOiBzdHJpbmcgfCBBWE11bHRpTGFuZ3VhZ2VNYXAgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIGFjdGl2ZUxvY2FsZTogc3RyaW5nID0gdGhpcy5nZXRBY3RpdmVMYW5nKCksXG4gICk6IEFYTXVsdGlMYW5ndWFnZU1hcCB7XG4gICAgaWYgKGlzVmFsaWRNdWx0aUxhbmd1YWdlT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgLi4udmFsdWUgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgW2FjdGl2ZUxvY2FsZV06IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6ICcnLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdHJhbnNsYXRlJChcbiAgICB2YWx1ZTogc3RyaW5nIHwgQVhNdWx0aUxhbmd1YWdlTWFwIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBvcHRpb25zPzogQVhUcmFuc2xhdGVPcHRpb25zLFxuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmIChpc1ZhbGlkTXVsdGlMYW5ndWFnZU9iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmdDaGFuZ2VzJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGFjdGl2ZUxhbmcpID0+IHtcbiAgICAgICAgICBjb25zdCB0YXJnZXRMYW5nID0gb3B0aW9ucz8ubGFuZyA/PyBhY3RpdmVMYW5nO1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSByZXNvbHZlTXVsdGlMYW5ndWFnZVZhbHVlKHZhbHVlLCB0YXJnZXRMYW5nKTtcbiAgICAgICAgICBjb25zdCBzY29wZSA9IG9wdGlvbnM/LnNjb3BlID8/IHRoaXMuY29uZmlnLmRlZmF1bHRzLnNjb3BlO1xuXG4gICAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZUFzeW5jKHNlbGVjdGVkVmFsdWUsIHtcbiAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgbGFuZzogdGFyZ2V0TGFuZyxcbiAgICAgICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVZhbHVlJCh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyB0cmFuc2xhdGVBc3luYyh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHsgbGFuZywgc2NvcGUgfSA9IHRoaXMucmVzb2x2ZUNvbnRleHQob3B0aW9ucyk7XG4gICAgY29uc3QgcGFyYW1zID0gb3B0aW9ucz8ucGFyYW1zO1xuXG4gICAgaWYgKCF0aGlzLnBhcnNlci5pc0V4cHJlc3Npb24odGV4dCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc29sdmVyLnJlc29sdmUobGFuZywgc2NvcGUsIHRleHQsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW5zID0gdGhpcy5wYXJzZXIucGFyc2UodGV4dCwgbGFuZywgc2NvcGUpO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdG9rZW5zLm1hcCgodG9rZW4pID0+XG4gICAgICAgIHRoaXMucmVzb2x2ZXJcbiAgICAgICAgICAucmVzb2x2ZSh0b2tlbi5sYW5nID8/IGxhbmcsIHRva2VuLnNjb3BlID8/IHNjb3BlLCB0b2tlbi5rZXksIHBhcmFtcylcbiAgICAgICAgICAudGhlbigodHJhbnNsYXRlZCkgPT4gW3Rva2VuLmZ1bGxNYXRjaCwgdHJhbnNsYXRlZF0pLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdHMucmVkdWNlKChvdXRwdXQsIFttYXRjaCwgdHJhbnNsYXRlZF0pID0+IG91dHB1dC5yZXBsYWNlKG1hdGNoLCB0cmFuc2xhdGVkKSwgdGV4dCk7XG4gIH1cblxuICBwdWJsaWMgdHJhbnNsYXRlU3luYyhcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9ucyAmIHsgd2FpdEZvckxvYWQ/OiBib29sZWFuOyB0aW1lb3V0TXM/OiBudW1iZXIgfSxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IGxhbmcsIHNjb3BlIH0gPSB0aGlzLnJlc29sdmVDb250ZXh0KG9wdGlvbnMpO1xuICAgIGNvbnN0IHBhcmFtcyA9IG9wdGlvbnM/LnBhcmFtcztcbiAgICBjb25zdCB3YWl0Rm9yTG9hZCA9IG9wdGlvbnM/LndhaXRGb3JMb2FkID8/IGZhbHNlO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IG9wdGlvbnM/LnRpbWVvdXRNcyA/PyAxMDA7XG5cbiAgICBpZiAoIXRoaXMucGFyc2VyLmlzRXhwcmVzc2lvbih0ZXh0KSkge1xuICAgICAgbGV0IHRyYW5zbGF0ZWQgPSB0aGlzLmxvYWRlci5wZWVrKGxhbmcsIHNjb3BlLCB0ZXh0KTtcblxuICAgICAgaWYgKCF0cmFuc2xhdGVkICYmIHdhaXRGb3JMb2FkKSB7XG4gICAgICAgIHRyYW5zbGF0ZWQgPSB3YWl0Rm9yKFxuICAgICAgICAgICgpID0+IHRoaXMubG9hZGVyLnBlZWsobGFuZywgc2NvcGUsIHRleHQpLFxuICAgICAgICAgICgpID0+IHRoaXMubG9hZGVyLmxvYWQobGFuZywgc2NvcGUpLnN1YnNjcmliZSgpLFxuICAgICAgICAgIHRpbWVvdXRNcyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZXIuZm9ybWF0KHRyYW5zbGF0ZWQgPz8gdGV4dCwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbnMgPSB0aGlzLnBhcnNlci5wYXJzZSh0ZXh0LCBsYW5nLCBzY29wZSk7XG4gICAgbGV0IHJlc3VsdCA9IHRleHQ7XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgICAgY29uc3QgdGFyZ2V0TGFuZyA9IHRva2VuLmxhbmcgPz8gbGFuZztcbiAgICAgIGNvbnN0IHRhcmdldFNjb3BlID0gdG9rZW4uc2NvcGUgPz8gc2NvcGU7XG4gICAgICBjb25zdCBrZXkgPSB0b2tlbi5rZXk7XG5cbiAgICAgIGxldCB0cmFuc2xhdGlvbiA9IHRoaXMubG9hZGVyLnBlZWsodGFyZ2V0TGFuZywgdGFyZ2V0U2NvcGUsIGtleSk7XG5cbiAgICAgIGlmICghdHJhbnNsYXRpb24pIHtcbiAgICAgICAgdHJhbnNsYXRpb24gPVxuICAgICAgICAgIHdhaXRGb3IoXG4gICAgICAgICAgICAoKSA9PiB0aGlzLmxvYWRlci5wZWVrKHRhcmdldExhbmcsIHRhcmdldFNjb3BlLCBrZXkpLFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5sb2FkZXIubG9hZCh0YXJnZXRMYW5nLCB0YXJnZXRTY29wZSkuc3Vic2NyaWJlKCksXG4gICAgICAgICAgICB3YWl0Rm9yTG9hZCA/IHRpbWVvdXRNcyA6IDAsXG4gICAgICAgICAgKSA/PyBrZXk7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKHRva2VuLmZ1bGxNYXRjaCwgdGhpcy5yZXNvbHZlci5mb3JtYXQodHJhbnNsYXRpb24sIHBhcmFtcykpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zbGF0ZVZhbHVlJCh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnMpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICghdGV4dCkge1xuICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0aWNPcHRpb25zID0geyAuLi5vcHRpb25zIH07XG4gICAgY29uc3Qgc3RhdGljU2NvcGUgPSBzdGF0aWNPcHRpb25zLnNjb3BlID8/IHRoaXMuY29uZmlnLmRlZmF1bHRzLnNjb3BlO1xuXG4gICAgcmV0dXJuIHRoaXMubGFuZ0NoYW5nZXMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGxhbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVBc3luYyh0ZXh0LCB7XG4gICAgICAgICAgICAuLi5zdGF0aWNPcHRpb25zLFxuICAgICAgICAgICAgbGFuZzogc3RhdGljT3B0aW9ucy5sYW5nID8/IGxhbmcsXG4gICAgICAgICAgICBzY29wZTogc3RhdGljU2NvcGUsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUNvbnRleHQob3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9ucyk6IHsgbGFuZzogQVhUcmFuc2xhdGVMYW5nOyBzY29wZTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBsYW5nOiBvcHRpb25zPy5sYW5nID8/IHRoaXMuZ2V0QWN0aXZlTGFuZygpID8/IHRoaXMuY29uZmlnLmRlZmF1bHRzLmxhbmcsXG4gICAgICBzY29wZTogb3B0aW9ucz8uc2NvcGUgPz8gdGhpcy5jb25maWcuZGVmYXVsdHMuc2NvcGUsXG4gICAgfTtcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationService } from './translation.service';\nexport const loadTranslationScope = (route, state) => {\n const translationLoaderService = inject(AXTranslationLoaderService);\n const translationService = inject(AXTranslationService);\n const config = inject(AX_TRANSLATION_CONFIG);\n const scopeValue = route.data[config.resolver?.scopeKey];\n const scopes = Array.isArray(scopeValue) ? scopeValue : [scopeValue];\n return translationLoaderService.preload({ langs: [translationService.getActiveLang()], scopes });\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tc2NvcGUucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24tc2NvcGUucmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBdUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDdkUsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNwRSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckUsT0FBTyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDbkcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXNvbHZlRm4gfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbkxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uLWxvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0NPTkZJRyB9IGZyb20gJy4vdHJhbnNsYXRpb24uY29uZmlnJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IGxvYWRUcmFuc2xhdGlvblNjb3BlOiBSZXNvbHZlRm48dW5rbm93bj4gPSAocm91dGUsIHN0YXRlKSA9PiB7XG4gIGNvbnN0IHRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSk7XG4gIGNvbnN0IHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChBWF9UUkFOU0xBVElPTl9DT05GSUcpO1xuICBjb25zdCBzY29wZVZhbHVlID0gcm91dGUuZGF0YVtjb25maWcucmVzb2x2ZXI/LnNjb3BlS2V5XTtcbiAgY29uc3Qgc2NvcGVzID0gQXJyYXkuaXNBcnJheShzY29wZVZhbHVlKSA/IHNjb3BlVmFsdWUgOiBbc2NvcGVWYWx1ZV07XG4gIHJldHVybiB0cmFuc2xhdGlvbkxvYWRlclNlcnZpY2UucHJlbG9hZCh7IGxhbmdzOiBbdHJhbnNsYXRpb25TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKV0sIHNjb3BlcyB9KTtcbn07XG4iXX0=","import { Directive, TemplateRef, ViewContainerRef, inject } from '@angular/core';\nimport { shareReplay } from 'rxjs';\nimport { AXTranslationService } from './translation.service';\nimport * as i0 from \"@angular/core\";\nexport class AXTranslatorDirective {\n constructor() {\n this.templateRef = inject(TemplateRef);\n this.vc = inject(ViewContainerRef);\n this.translationService = inject(AXTranslationService);\n }\n ngOnInit() {\n const cache = new Map();\n const t = (key, opts) => {\n const id = `${key}|${opts?.lang ?? this.translationService.getActiveLang()}|${opts?.scope ?? 'common'}`;\n if (!cache.has(id)) {\n cache.set(id, this.translationService.translate$(key, opts).pipe(shareReplay({ bufferSize: 1, refCount: true })));\n }\n return cache.get(id);\n };\n this.vc.clear();\n this.vc.createEmbeddedView(this.templateRef, { $implicit: t });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXTranslatorDirective, isStandalone: true, selector: \"[translate]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[translate]' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRzdELE1BQU0sT0FBTyxxQkFBcUI7SUFEbEM7UUFFVSxnQkFBVyxHQUFHLE1BQU0sQ0FBbUIsV0FBVyxDQUFDLENBQUM7UUFDcEQsT0FBRSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBbUIzRDtJQWpCQyxRQUFRO1FBQ04sTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFFcEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBeUIsRUFBRSxFQUFFO1lBQ25ELE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7WUFDeEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsS0FBSyxDQUFDLEdBQUcsQ0FDUCxFQUFFLEVBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDbkcsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDOzhHQXJCVSxxQkFBcUI7a0dBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRlT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3RyYW5zbGF0ZV0nIH0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZiA9IGluamVjdDxUZW1wbGF0ZVJlZjxhbnk+PihUZW1wbGF0ZVJlZik7XG4gIHByaXZhdGUgdmMgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPHN0cmluZz4+KCk7XG5cbiAgICBjb25zdCB0ID0gKGtleTogc3RyaW5nLCBvcHRzPzogQVhUcmFuc2xhdGVPcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IGAke2tleX18JHtvcHRzPy5sYW5nID8/IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKX18JHtvcHRzPy5zY29wZSA/PyAnY29tbW9uJ31gO1xuICAgICAgaWYgKCFjYWNoZS5oYXMoaWQpKSB7XG4gICAgICAgIGNhY2hlLnNldChcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUkKGtleSwgb3B0cykucGlwZShzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYWNoZS5nZXQoaWQpITtcbiAgICB9O1xuXG4gICAgdGhpcy52Yy5jbGVhcigpO1xuICAgIHRoaXMudmMuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsIHsgJGltcGxpY2l0OiB0IH0pO1xuICB9XG59XG4iXX0=","import { inject, Pipe } from '@angular/core';\nimport { of } from 'rxjs';\nimport { AXTranslationService } from './translation.service';\nimport * as i0 from \"@angular/core\";\nexport class AXTranslatorPipe {\n constructor() {\n this.service = inject(AXTranslationService);\n }\n transform(value, options) {\n if (!value) {\n return of('');\n }\n return this.service.translate$(value, options);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorPipe, isStandalone: true, name: \"translate\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'translate',\n pure: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0b3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPN0QsTUFBTSxPQUFPLGdCQUFnQjtJQUo3QjtRQUtVLFlBQU8sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQVdoRDtJQVRDLFNBQVMsQ0FDUCxLQUF5RCxFQUN6RCxPQUE0QjtRQUU1QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQzs4R0FYVSxnQkFBZ0I7NEdBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsSUFBSSxFQUFFLElBQUk7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0ZU9wdGlvbnMgfSBmcm9tICcuL3RyYW5zbGF0aW9uLnR5cGVzJztcblxuQFBpcGUoe1xuICBuYW1lOiAndHJhbnNsYXRlJyxcbiAgcHVyZTogdHJ1ZSxcbn0pIC8vIFRoZSBwaXBlIGNhbiBub3cgYmUgcHVyZVxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSBzZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS50cmFuc2xhdGUkKHZhbHVlLCBvcHRpb25zKTtcbiAgfVxufVxuIl19","import { NgModule, inject, provideAppInitializer } from '@angular/core';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AXTranslatorDirective } from './translator.directive';\nimport { AXTranslatorPipe } from './translator.pipe';\nimport * as i0 from \"@angular/core\";\nfunction initializeApp(translatorService) {\n return () => {\n return translatorService.preload();\n };\n}\nexport class AXTranslationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, imports: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationLoaderService));\n return initializerFn();\n }),\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AXTranslatorPipe, AXTranslatorDirective],\n exports: [AXTranslatorPipe, AXTranslatorDirective],\n providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationLoaderService));\n return initializerFn();\n }),\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFckQsU0FBUyxhQUFhLENBQUMsaUJBQTZDO0lBQ2xFLE9BQU8sR0FBa0IsRUFBRTtRQUN6QixPQUFPLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFZRCxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixZQVRwQixnQkFBZ0IsRUFBRSxxQkFBcUIsYUFDdkMsZ0JBQWdCLEVBQUUscUJBQXFCOytHQVF0QyxtQkFBbUIsYUFQbkI7WUFDVCxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pCLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO2dCQUN4RSxPQUFPLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQztTQUNIOzsyRkFFVSxtQkFBbUI7a0JBVi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUM7b0JBQ2xELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixDQUFDO29CQUNsRCxTQUFTLEVBQUU7d0JBQ1QscUJBQXFCLENBQUMsR0FBRyxFQUFFOzRCQUN6QixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQzs0QkFDeEUsT0FBTyxhQUFhLEVBQUUsQ0FBQzt3QkFDekIsQ0FBQyxDQUFDO3FCQUNIO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIGluamVjdCwgcHJvdmlkZUFwcEluaXRpYWxpemVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi90cmFuc2xhdG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnLi90cmFuc2xhdG9yLnBpcGUnO1xuXG5mdW5jdGlvbiBpbml0aWFsaXplQXBwKHRyYW5zbGF0b3JTZXJ2aWNlOiBBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSkge1xuICByZXR1cm4gKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0cmFuc2xhdG9yU2VydmljZS5wcmVsb2FkKCk7XG4gIH07XG59XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtBWFRyYW5zbGF0b3JQaXBlLCBBWFRyYW5zbGF0b3JEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbQVhUcmFuc2xhdG9yUGlwZSwgQVhUcmFuc2xhdG9yRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUFwcEluaXRpYWxpemVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxpemVyRm4gPSBpbml0aWFsaXplQXBwKGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSkpO1xuICAgICAgcmV0dXJuIGluaXRpYWxpemVyRm4oKTtcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdGlvbk1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtdHJhbnNsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9hY29yZXgtY29yZS10cmFuc2xhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-core-translation.mjs","sources":["../tmp-esm2022/translation/lib/translation.config.js","../tmp-esm2022/translation/lib/translation.loader.js","../tmp-esm2022/translation/lib/translation-loader.service.js","../tmp-esm2022/translation/lib/translation.parser.js","../tmp-esm2022/translation/lib/translation.resolver.js","../tmp-esm2022/translation/lib/translation.types.js","../tmp-esm2022/translation/lib/translation.service.js","../tmp-esm2022/translation/lib/translation-scope.resolver.js","../tmp-esm2022/translation/lib/translator.directive.js","../tmp-esm2022/translation/lib/translator.pipe.js","../tmp-esm2022/translation/lib/translation.module.js","../tmp-esm2022/translation/acorex-core-translation.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const AX_TRANSLATION_CONFIG = new InjectionToken('AX_TRANSLATION_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXTranslationDefaultConfig;\n },\n});\nexport const AXTranslationDefaultConfig = {\n defaults: {\n lang: 'en-US',\n scope: 'acorex',\n },\n preload: {\n langs: ['en-US'],\n scopes: ['acorex'],\n },\n resolver: {\n scopeKey: 'scope',\n },\n};\nexport function translationConfig(config = {}) {\n const result = {\n ...AXTranslationDefaultConfig,\n ...config,\n };\n return result;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBeUIvQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLEVBQUU7SUFDcEcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE9BQU8sMEJBQTBCLENBQUM7SUFDcEMsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUF3QjtJQUM3RCxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsT0FBTztRQUNiLEtBQUssRUFBRSxRQUFRO0tBQ2hCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQ2hCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNuQjtJQUNELFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFBRSxPQUFPO0tBQ2xCO0NBQ0YsQ0FBQztBQUlGLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxTQUFxQyxFQUFFO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHO1FBQ2IsR0FBRywwQkFBMEI7UUFDN0IsR0FBRyxNQUFNO0tBQ1YsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGVMYW5nLCBBWFRyYW5zbGF0ZVNjb3BlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUcmFuc2xhdGlvbkNvbmZpZyB7XG4gIGRlZmF1bHRzOiB7XG4gICAgbGFuZzogQVhUcmFuc2xhdGVMYW5nO1xuICAgIHNjb3BlOiBBWFRyYW5zbGF0ZVNjb3BlO1xuICB9O1xuICBwcmVsb2FkPzoge1xuICAgIGxhbmdzOiBBWFRyYW5zbGF0ZUxhbmdbXTtcbiAgICBzY29wZXM6IEFYVHJhbnNsYXRlU2NvcGVbXTtcbiAgfTtcbiAgZmFsbGJhY2tzPzoge1xuICAgIGxhbmdzPzogUmVjb3JkPEFYVHJhbnNsYXRlTGFuZywgQVhUcmFuc2xhdGVMYW5nW10+O1xuICAgIHNjb3Blcz86IFJlY29yZDxBWFRyYW5zbGF0ZVNjb3BlLCBBWFRyYW5zbGF0ZVNjb3BlW10+O1xuICB9O1xuICBhdmFpbGFibGU/OiB7XG4gICAgbGFuZ3M/OiBBWFRyYW5zbGF0ZUxhbmdbXTtcbiAgICBzY29wZXM/OiBBWFRyYW5zbGF0ZVNjb3BlW107XG4gIH07XG4gIHJlc29sdmVyPzoge1xuICAgIHNjb3BlS2V5OiBzdHJpbmc7IC8vIHVzZWQgdG8gZXh0cmFjdCBzY29wZSBmcm9tIHBhcmFtcywgZS5nLiBgc2NvcGU6ICdjb21tb24nYFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgQVhfVFJBTlNMQVRJT05fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEFYVHJhbnNsYXRpb25Db25maWc+KCdBWF9UUkFOU0xBVElPTl9DT05GSUcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4ge1xuICAgIHJldHVybiBBWFRyYW5zbGF0aW9uRGVmYXVsdENvbmZpZztcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQVhUcmFuc2xhdGlvbkRlZmF1bHRDb25maWc6IEFYVHJhbnNsYXRpb25Db25maWcgPSB7XG4gIGRlZmF1bHRzOiB7XG4gICAgbGFuZzogJ2VuLVVTJyxcbiAgICBzY29wZTogJ2Fjb3JleCcsXG4gIH0sXG4gIHByZWxvYWQ6IHtcbiAgICBsYW5nczogWydlbi1VUyddLFxuICAgIHNjb3BlczogWydhY29yZXgnXSxcbiAgfSxcbiAgcmVzb2x2ZXI6IHtcbiAgICBzY29wZUtleTogJ3Njb3BlJyxcbiAgfSxcbn07XG5cbmV4cG9ydCB0eXBlIEFYUGFydGlhbFRyYW5zbGF0aW9uQ29uZmlnID0gUGFydGlhbDxBWFRyYW5zbGF0aW9uQ29uZmlnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0aW9uQ29uZmlnKGNvbmZpZzogQVhQYXJ0aWFsVHJhbnNsYXRpb25Db25maWcgPSB7fSk6IEFYVHJhbnNsYXRpb25Db25maWcge1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgLi4uQVhUcmFuc2xhdGlvbkRlZmF1bHRDb25maWcsXG4gICAgLi4uY29uZmlnLFxuICB9O1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl19","import { InjectionToken } from '@angular/core';\nimport { of } from 'rxjs';\nexport class AXTranslationLoaderDefault {\n load(options) {\n return of({});\n }\n}\nexport const AX_TRANSLATION_LOADER = new InjectionToken('AX_TRANSLATION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXTranslationLoaderDefault();\n },\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFZdEMsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxJQUFJLENBQUMsT0FBbUM7UUFDdEMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHVCQUF1QixFQUFFO0lBQ3BHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixPQUFPLElBQUksMEJBQTBCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0ZUxhbmcsIEFYVHJhbnNsYXRlU2NvcGUsIEFYVHJhbnNsYXRpb24gfSBmcm9tICcuL3RyYW5zbGF0aW9uLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFRyYW5zbGF0aW9uTG9hZGVyT3B0aW9ucyB7XG4gIGxhbmc6IEFYVHJhbnNsYXRlTGFuZztcbiAgc2NvcGU/OiBBWFRyYW5zbGF0ZVNjb3BlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVHJhbnNsYXRpb25Mb2FkZXIge1xuICBsb2FkKG9wdGlvbnM6IEFYVHJhbnNsYXRpb25Mb2FkZXJPcHRpb25zKTogT2JzZXJ2YWJsZTxBWFRyYW5zbGF0aW9uPjtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRpb25Mb2FkZXJEZWZhdWx0IGltcGxlbWVudHMgQVhUcmFuc2xhdGlvbkxvYWRlciB7XG4gIGxvYWQob3B0aW9uczogQVhUcmFuc2xhdGlvbkxvYWRlck9wdGlvbnMpOiBPYnNlcnZhYmxlPEFYVHJhbnNsYXRpb24+IHtcbiAgICByZXR1cm4gb2Yoe30pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBWF9UUkFOU0xBVElPTl9MT0FERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhUcmFuc2xhdGlvbkxvYWRlcj4oJ0FYX1RSQU5TTEFUSU9OX0xPQURFUicsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBBWFRyYW5zbGF0aW9uTG9hZGVyRGVmYXVsdCgpO1xuICB9LFxufSk7XG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { firstValueFrom, of, shareReplay, tap } from 'rxjs';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AX_TRANSLATION_LOADER } from './translation.loader';\nimport { AXEventService, AXSystemEvents } from '@acorex/core/events';\nimport * as i0 from \"@angular/core\";\nexport class AXTranslationLoaderService {\n constructor() {\n this.loader = inject(AX_TRANSLATION_LOADER);\n this.config = inject(AX_TRANSLATION_CONFIG);\n this.eventService = inject(AXEventService);\n this.cache = new Map();\n this.inflight = new Map();\n }\n load(lang, scope) {\n const key = `${lang}:${scope}`;\n // 1. Check cache first\n if (this.cache.has(key)) {\n return of(this.cache.get(key));\n }\n // 2. Check if it's already in-flight\n if (this.inflight.has(key)) {\n return this.inflight.get(key);\n }\n // 3. Not in cache, not in-flight: Make the request\n const newObs = this.loader.load({ lang, scope }).pipe(tap({\n next: (data) => {\n this.cache.set(key, data);\n // No need to delete from inflight here, finalize will handle it\n // or delete it only after caching. If you delete here, and shareReplay\n // source completes, subsequent subscribers might re-trigger if not careful.\n // It's better to remove from inflight in finalize or after shareReplay has replayed.\n // For simplicity and common patterns, removing after caching within tap (before shareReplay)\n // can work if shareReplay handles the source completion correctly.\n // A safer bet is to remove it in finalize *after* shareReplay.\n // Emit event to notify other components that the language has been loaded\n this.eventService.emitEvent({\n type: AXSystemEvents.AXLanguageLoaded,\n payload: data,\n });\n },\n error: (err) => {\n console.error(`Error loading ${key}:`, err);\n // Remove from inflight on error so subsequent calls can retry\n this.inflight.delete(key);\n },\n // finalize is tricky with shareReplay if you want to keep the replayed value\n // but still clear inflight. For this pattern, deleting on next/error\n // *before* shareReplay often means that shareReplay will re-trigger the source\n // if the inflight observable is requested again after being deleted.\n // The current structure of deleting in `tap` and then `shareReplay`\n // might need `this.inflight.delete(key)` to be moved after `shareReplay` effect.\n // Let's try a common pattern:\n }), shareReplay(1), // Replay the last emitted value for subsequent subscribers\n tap({\n // This tap runs *after* shareReplay has done its work for the first subscriber\n // and for subsequent subscribers that get the replayed value.\n next: () => {\n // Once data is successfully loaded and cached (by the first tap),\n // and shareReplay ensures it's available, we can remove from inflight.\n // This means subsequent calls for the same key during the \"inflight\" period\n // get the shared observable, and after it resolves and is cached,\n // inflight is cleared.\n this.inflight.delete(key);\n },\n // Error is handled by the first tap, or catchError if you want to provide a fallback\n }));\n this.inflight.set(key, newObs); // Store the observable that includes caching and cleanup logic\n return newObs;\n }\n peek(lang, scope, key) {\n const cacheKey = `${lang}:${scope}`;\n const data = this.cache.get(cacheKey);\n return get(data, key, null);\n }\n async preload(options) {\n const langsToLoad = [...new Set(options?.langs ?? this.config.preload?.langs ?? [this.config.defaults.lang])];\n const scopesToLoad = [...new Set(options?.scopes ?? this.config.preload?.scopes ?? [this.config.defaults.scope])];\n const loadPromises = [];\n langsToLoad.forEach((lang) => {\n scopesToLoad.forEach((scope) => {\n const loadPromise = firstValueFrom(this.load(lang, scope)) // This should now always get a valid Observable\n .then((value) => ({ lang, scope, status: 'fulfilled', value }))\n .catch((reason) => ({ lang, scope, status: 'rejected', reason }));\n loadPromises.push(loadPromise);\n });\n });\n const results = await Promise.all(loadPromises);\n let allSucceeded = true;\n results.forEach((result) => {\n if (result.status === 'rejected') {\n allSucceeded = false;\n console.error(`Failed to preload translations for lang: ${result.lang}, scope: ${result.scope}. Reason:`, result.reason);\n }\n else {\n // console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs\n }\n // else {\n // console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs\n // }\n });\n if (!allSucceeded) {\n console.error('One or more translation preloads failed. See console for details.');\n // throw new Error(\"One or more translation preloads failed. See console for details.\");\n }\n // The second results.forEach loop in your original code was redundant, I've removed it.\n // If it was for a different purpose, you can add it back.\n }\n clear() {\n this.cache.clear();\n this.inflight.clear();\n }\n getFallbackLangs(lang) {\n return this.config.fallbacks?.langs?.[lang] ?? [];\n }\n getFallbackScopes(scope) {\n return this.config.fallbacks?.scopes?.[scope] ?? [];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationLoaderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationLoaderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQWMsY0FBYyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3JFLE1BQU0sT0FBTywwQkFBMEI7SUFEdkM7UUFFVSxXQUFNLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdkMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXRDLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUN6QyxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXFDLENBQUM7S0FpSWpFO0lBL0hRLElBQUksQ0FBQyxJQUFxQixFQUFFLEtBQXVCO1FBQ3hELE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBRS9CLHVCQUF1QjtRQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxF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QVcsRUFDMUYsTUFBTSxDQUFDLE1BQU0sQ0FDZCxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLCtIQUErSDtZQUNqSSxDQUFDO1lBQ0QsU0FBUztZQUNULCtIQUErSDtZQUMvSCxJQUFJO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1lBQ25GLHdGQUF3RjtRQUMxRixDQUFDO1FBQ0Qsd0ZBQXdGO1FBQ3hGLDBEQUEwRDtJQUM1RCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsSUFBcUI7UUFDM0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQXVCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RELENBQUM7OEdBdElVLDBCQUEwQjtrSEFBMUIsMEJBQTBCLGNBRGIsTUFBTTs7MkZBQ25CLDBCQUEwQjtrQkFEdEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSwgb2YsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0NPTkZJRyB9IGZyb20gJy4vdHJhbnNsYXRpb24uY29uZmlnJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0xPQURFUiB9IGZyb20gJy4vdHJhbnNsYXRpb24ubG9hZGVyJztcbmltcG9ydCB7IEFYVHJhbnNsYXRlTGFuZywgQVhUcmFuc2xhdGVTY29wZSwgQVhUcmFuc2xhdGlvbiB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhFdmVudFNlcnZpY2UsIEFYU3lzdGVtRXZlbnRzIH0gZnJvbSAnQGFjb3JleC9jb3JlL2V2ZW50cyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdGlvbkxvYWRlclNlcnZpY2Uge1xuICBwcml2YXRlIGxvYWRlciA9IGluamVjdChBWF9UUkFOU0xBVElPTl9MT0FERVIpO1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChBWF9UUkFOU0xBVElPTl9DT05GSUcpO1xuICBwcml2YXRlIGV2ZW50U2VydmljZSA9IGluamVjdChBWEV2ZW50U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBBWFRyYW5zbGF0aW9uPigpO1xuICBwcml2YXRlIGluZmxpZ2h0ID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8QVhUcmFuc2xhdGlvbj4+KCk7XG5cbiAgcHVibGljIGxvYWQobGFuZzogQVhUcmFuc2xhdGVMYW5nLCBzY29wZTogQVhUcmFuc2xhdGVTY29wZSk6IE9ic2VydmFibGU8QVhUcmFuc2xhdGlvbj4ge1xuICAgIGNvbnN0IGtleSA9IGAke2xhbmd9OiR7c2NvcGV9YDtcblxuICAgIC8vIDEuIENoZWNrIGNhY2hlIGZpcnN0XG4gICAgaWYgKHRoaXMuY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmNhY2hlLmdldChrZXkpISk7XG4gICAgfVxuXG4gICAgLy8gMi4gQ2hlY2sgaWYgaXQncyBhbHJlYWR5IGluLWZsaWdodFxuICAgIGlmICh0aGlzLmluZmxpZ2h0LmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbmZsaWdodC5nZXQoa2V5KSE7XG4gICAgfVxuXG4gICAgLy8gMy4gTm90IGluIGNhY2hlLCBub3QgaW4tZmxpZ2h0OiBNYWtlIHRoZSByZXF1ZXN0XG4gICAgY29uc3QgbmV3T2JzID0gdGhpcy5sb2FkZXIubG9hZCh7IGxhbmcsIHNjb3BlIH0pLnBpcGUoXG4gICAgICB0YXAoe1xuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KGtleSwgZGF0YSk7XG4gICAgICAgICAgLy8gTm8gbmVlZCB0byBkZWxldGUgZnJvbSBpbmZsaWdodCBoZXJlLCBmaW5hbGl6ZSB3aWxsIGhhbmRsZSBpdFxuICAgICAgICAgIC8vIG9yIGRlbGV0ZSBpdCBvbmx5IGFmdGVyIGNhY2hpbmcuIElmIHlvdSBkZWxldGUgaGVyZSwgYW5kIHNoYXJlUmVwbGF5XG4gICAgICAgICAgLy8gc291cmNlIGNvbXBsZXRlcywgc3Vic2VxdWVudCBzdWJzY3JpYmVycyBtaWdodCByZS10cmlnZ2VyIGlmIG5vdCBjYXJlZnVsLlxuICAgICAgICAgIC8vIEl0J3MgYmV0dGVyIHRvIHJlbW92ZSBmcm9tIGluZmxpZ2h0IGluIGZpbmFsaXplIG9yIGFmdGVyIHNoYXJlUmVwbGF5IGhhcyByZXBsYXllZC5cbiAgICAgICAgICAvLyBGb3Igc2ltcGxpY2l0eSBhbmQgY29tbW9uIHBhdHRlcm5zLCByZW1vdmluZyBhZnRlciBjYWNoaW5nIHdpdGhpbiB0YXAgKGJlZm9yZSBzaGFyZVJlcGxheSlcbiAgICAgICAgICAvLyBjYW4gd29yayBpZiBzaGFyZVJlcGxheSBoYW5kbGVzIHRoZSBzb3VyY2UgY29tcGxldGlvbiBjb3JyZWN0bHkuXG4gICAgICAgICAgLy8gQSBzYWZlciBiZXQgaXMgdG8gcmVtb3ZlIGl0IGluIGZpbmFsaXplICphZnRlciogc2hhcmVSZXBsYXkuXG5cbiAgICAgICAgICAvLyBFbWl0IGV2ZW50IHRvIG5vdGlmeSBvdGhlciBjb21wb25lbnRzIHRoYXQgdGhlIGxhbmd1YWdlIGhhcyBiZWVuIGxvYWRlZFxuICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmVtaXRFdmVudCh7XG4gICAgICAgICAgICB0eXBlOiBBWFN5c3RlbUV2ZW50cy5BWExhbmd1YWdlTG9hZGVkLFxuICAgICAgICAgICAgcGF5bG9hZDogZGF0YSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nICR7a2V5fTpgLCBlcnIpO1xuICAgICAgICAgIC8vIFJlbW92ZSBmcm9tIGluZmxpZ2h0IG9uIGVycm9yIHNvIHN1YnNlcXVlbnQgY2FsbHMgY2FuIHJldHJ5XG4gICAgICAgICAgdGhpcy5pbmZsaWdodC5kZWxldGUoa2V5KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZmluYWxpemUgaXMgdHJpY2t5IHdpdGggc2hhcmVSZXBsYXkgaWYgeW91IHdhbnQgdG8ga2VlcCB0aGUgcmVwbGF5ZWQgdmFsdWVcbiAgICAgICAgLy8gYnV0IHN0aWxsIGNsZWFyIGluZmxpZ2h0LiBGb3IgdGhpcyBwYXR0ZXJuLCBkZWxldGluZyBvbiBuZXh0L2Vycm9yXG4gICAgICAgIC8vICpiZWZvcmUqIHNoYXJlUmVwbGF5IG9mdGVuIG1lYW5zIHRoYXQgc2hhcmVSZXBsYXkgd2lsbCByZS10cmlnZ2VyIHRoZSBzb3VyY2VcbiAgICAgICAgLy8gaWYgdGhlIGluZmxpZ2h0IG9ic2VydmFibGUgaXMgcmVxdWVzdGVkIGFnYWluIGFmdGVyIGJlaW5nIGRlbGV0ZWQuXG4gICAgICAgIC8vIFRoZSBjdXJyZW50IHN0cnVjdHVyZSBvZiBkZWxldGluZyBpbiBgdGFwYCBhbmQgdGhlbiBgc2hhcmVSZXBsYXlgXG4gICAgICAgIC8vIG1pZ2h0IG5lZWQgYHRoaXMuaW5mbGlnaHQuZGVsZXRlKGtleSlgIHRvIGJlIG1vdmVkIGFmdGVyIGBzaGFyZVJlcGxheWAgZWZmZWN0LlxuICAgICAgICAvLyBMZXQncyB0cnkgYSBjb21tb24gcGF0dGVybjpcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSksIC8vIFJlcGxheSB0aGUgbGFzdCBlbWl0dGVkIHZhbHVlIGZvciBzdWJzZXF1ZW50IHN1YnNjcmliZXJzXG4gICAgICB0YXAoe1xuICAgICAgICAvLyBUaGlzIHRhcCBydW5zICphZnRlciogc2hhcmVSZXBsYXkgaGFzIGRvbmUgaXRzIHdvcmsgZm9yIHRoZSBmaXJzdCBzdWJzY3JpYmVyXG4gICAgICAgIC8vIGFuZCBmb3Igc3Vic2VxdWVudCBzdWJzY3JpYmVycyB0aGF0IGdldCB0aGUgcmVwbGF5ZWQgdmFsdWUuXG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBPbmNlIGRhdGEgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgY2FjaGVkIChieSB0aGUgZmlyc3QgdGFwKSxcbiAgICAgICAgICAvLyBhbmQgc2hhcmVSZXBsYXkgZW5zdXJlcyBpdCdzIGF2YWlsYWJsZSwgd2UgY2FuIHJlbW92ZSBmcm9tIGluZmxpZ2h0LlxuICAgICAgICAgIC8vIFRoaXMgbWVhbnMgc3Vic2VxdWVudCBjYWxscyBmb3IgdGhlIHNhbWUga2V5IGR1cmluZyB0aGUgXCJpbmZsaWdodFwiIHBlcmlvZFxuICAgICAgICAgIC8vIGdldCB0aGUgc2hhcmVkIG9ic2VydmFibGUsIGFuZCBhZnRlciBpdCByZXNvbHZlcyBhbmQgaXMgY2FjaGVkLFxuICAgICAgICAgIC8vIGluZmxpZ2h0IGlzIGNsZWFyZWQuXG4gICAgICAgICAgdGhpcy5pbmZsaWdodC5kZWxldGUoa2V5KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gRXJyb3IgaXMgaGFuZGxlZCBieSB0aGUgZmlyc3QgdGFwLCBvciBjYXRjaEVycm9yIGlmIHlvdSB3YW50IHRvIHByb3ZpZGUgYSBmYWxsYmFja1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuaW5mbGlnaHQuc2V0KGtleSwgbmV3T2JzKTsgLy8gU3RvcmUgdGhlIG9ic2VydmFibGUgdGhhdCBpbmNsdWRlcyBjYWNoaW5nIGFuZCBjbGVhbnVwIGxvZ2ljXG4gICAgcmV0dXJuIG5ld09icztcbiAgfVxuXG4gIHB1YmxpYyBwZWVrKGxhbmc6IEFYVHJhbnNsYXRlTGFuZywgc2NvcGU6IEFYVHJhbnNsYXRlU2NvcGUsIGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBgJHtsYW5nfToke3Njb3BlfWA7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuY2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICByZXR1cm4gZ2V0KGRhdGEsIGtleSwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJlbG9hZChvcHRpb25zPzogeyBsYW5ncz86IEFYVHJhbnNsYXRlTGFuZ1tdOyBzY29wZXM/OiBBWFRyYW5zbGF0ZVNjb3BlW10gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxhbmdzVG9Mb2FkID0gWy4uLm5ldyBTZXQob3B0aW9ucz8ubGFuZ3MgPz8gdGhpcy5jb25maWcucHJlbG9hZD8ubGFuZ3MgPz8gW3RoaXMuY29uZmlnLmRlZmF1bHRzLmxhbmddKV07XG4gICAgY29uc3Qgc2NvcGVzVG9Mb2FkID0gWy4uLm5ldyBTZXQob3B0aW9ucz8uc2NvcGVzID8/IHRoaXMuY29uZmlnLnByZWxvYWQ/LnNjb3BlcyA/PyBbdGhpcy5jb25maWcuZGVmYXVsdHMuc2NvcGVdKV07XG5cbiAgICBjb25zdCBsb2FkUHJvbWlzZXM6IFByb21pc2U8XG4gICAgICB8IHsgbGFuZzogQVhUcmFuc2xhdGVMYW5nOyBzY29wZTogQVhUcmFuc2xhdGVTY29wZTsgc3RhdHVzOiAnZnVsZmlsbGVkJzsgdmFsdWU6IEFYVHJhbnNsYXRpb24gfSAvLyBDaGFuZ2VkIGFueSB0byBBWFRyYW5zbGF0aW9uXG4gICAgICB8IHsgbGFuZzogQVhUcmFuc2xhdGVMYW5nOyBzY29wZTogQVhUcmFuc2xhdGVTY29wZTsgc3RhdHVzOiAncmVqZWN0ZWQnOyByZWFzb246IGFueSB9XG4gICAgPltdID0gW107XG5cbiAgICBsYW5nc1RvTG9hZC5mb3JFYWNoKChsYW5nKSA9PiB7XG4gICAgICBzY29wZXNUb0xvYWQuZm9yRWFjaCgoc2NvcGUpID0+IHtcbiAgICAgICAgY29uc3QgbG9hZFByb21pc2UgPSBmaXJzdFZhbHVlRnJvbSh0aGlzLmxvYWQobGFuZywgc2NvcGUpKSAvLyBUaGlzIHNob3VsZCBub3cgYWx3YXlzIGdldCBhIHZhbGlkIE9ic2VydmFibGVcbiAgICAgICAgICAudGhlbigodmFsdWUpID0+ICh7IGxhbmcsIHNjb3BlLCBzdGF0dXM6ICdmdWxmaWxsZWQnIGFzIGNvbnN0LCB2YWx1ZSB9KSlcbiAgICAgICAgICAuY2F0Y2goKHJlYXNvbikgPT4gKHsgbGFuZywgc2NvcGUsIHN0YXR1czogJ3JlamVjdGVkJyBhcyBjb25zdCwgcmVhc29uIH0pKTtcbiAgICAgICAgbG9hZFByb21pc2VzLnB1c2gobG9hZFByb21pc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwobG9hZFByb21pc2VzKTtcblxuICAgIGxldCBhbGxTdWNjZWVkZWQgPSB0cnVlO1xuICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3JlamVjdGVkJykge1xuICAgICAgICBhbGxTdWNjZWVkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgRmFpbGVkIHRvIHByZWxvYWQgdHJhbnNsYXRpb25zIGZvciBsYW5nOiAke3Jlc3VsdC5sYW5nfSwgc2NvcGU6ICR7cmVzdWx0LnNjb3BlfS4gUmVhc29uOmAsXG4gICAgICAgICAgcmVzdWx0LnJlYXNvbixcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgcHJlbG9hZGVkIGxhbmc6ICR7cmVzdWx0Lmxhbmd9LCBzY29wZTogJHtyZXN1bHQuc2NvcGV9YCk7IC8vIE9wdGlvbmFsbHkgdW5jb21tZW50IGZvciBzdWNjZXNzIGxvZ3NcbiAgICAgIH1cbiAgICAgIC8vIGVsc2Uge1xuICAgICAgLy8gY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSBwcmVsb2FkZWQgbGFuZzogJHtyZXN1bHQubGFuZ30sIHNjb3BlOiAke3Jlc3VsdC5zY29wZX1gKTsgLy8gT3B0aW9uYWxseSB1bmNvbW1lbnQgZm9yIHN1Y2Nlc3MgbG9nc1xuICAgICAgLy8gfVxuICAgIH0pO1xuXG4gICAgaWYgKCFhbGxTdWNjZWVkZWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ09uZSBvciBtb3JlIHRyYW5zbGF0aW9uIHByZWxvYWRzIGZhaWxlZC4gU2VlIGNvbnNvbGUgZm9yIGRldGFpbHMuJyk7XG4gICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoXCJPbmUgb3IgbW9yZSB0cmFuc2xhdGlvbiBwcmVsb2FkcyBmYWlsZWQuIFNlZSBjb25zb2xlIGZvciBkZXRhaWxzLlwiKTtcbiAgICB9XG4gICAgLy8gVGhlIHNlY29uZCByZXN1bHRzLmZvckVhY2ggbG9vcCBpbiB5b3VyIG9yaWdpbmFsIGNvZGUgd2FzIHJlZHVuZGFudCwgSSd2ZSByZW1vdmVkIGl0LlxuICAgIC8vIElmIGl0IHdhcyBmb3IgYSBkaWZmZXJlbnQgcHVycG9zZSwgeW91IGNhbiBhZGQgaXQgYmFjay5cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgdGhpcy5pbmZsaWdodC5jbGVhcigpO1xuICB9XG5cbiAgcHVibGljIGdldEZhbGxiYWNrTGFuZ3MobGFuZzogQVhUcmFuc2xhdGVMYW5nKTogQVhUcmFuc2xhdGVMYW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mYWxsYmFja3M/LmxhbmdzPy5bbGFuZ10gPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0RmFsbGJhY2tTY29wZXMoc2NvcGU6IEFYVHJhbnNsYXRlU2NvcGUpOiBBWFRyYW5zbGF0ZVNjb3BlW10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mYWxsYmFja3M/LnNjb3Blcz8uW3Njb3BlXSA/PyBbXTtcbiAgfVxufVxuIl19","export class TranslationParserService {\n constructor() {\n this.legacyRegex = /t\\([\"']([^\"']+)[\"']\\s*(?:,\\s*(\\{.*?\\}))?\\)/g;\n this.inlineRegex = /@([a-zA-Z\\-]+:)?([a-zA-Z0-9_-]+):([a-zA-Z0-9_.:-]+)(?=[\\\\s.,;!?)]|$)/g;\n }\n isExpression(value) {\n return typeof value === 'string' && (value.includes('t(') || value.includes('@'));\n }\n parse(expression, currentLang, currentScope) {\n const tokens = [];\n // Extract inline references like @lang:scope:key or @scope:key\n let inlineMatch;\n while ((inlineMatch = this.inlineRegex.exec(expression)) !== null) {\n const langPart = inlineMatch[1]?.replace(':', '') ?? null;\n const scope = inlineMatch[2] ?? currentScope;\n const key = inlineMatch[3];\n const fullMatch = inlineMatch[0];\n tokens.push({ lang: langPart || currentLang, scope, key, fullMatch });\n }\n // Extract legacy expressions\n let legacyMatch;\n while ((legacyMatch = this.legacyRegex.exec(expression)) !== null) {\n const key = legacyMatch[1];\n const rawOptions = legacyMatch[2];\n let scope = currentScope;\n let lang = currentLang;\n if (rawOptions) {\n try {\n const jsonString = rawOptions.replace(/(['\"])?([a-zA-Z0-9_]+)(['\"])?\\s*:/g, '\"$2\":').replace(/'/g, '\"');\n const options = JSON.parse(jsonString);\n scope = options.scope || scope;\n lang = options.lang || lang;\n }\n catch (err) {\n console.error('Invalid translation expression options:', err);\n }\n }\n tokens.push({ key, scope, lang, fullMatch: legacyMatch[0] });\n }\n return tokens;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ucGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLnBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sd0JBQXdCO0lBQXJDO1FBQ21CLGdCQUFXLEdBQUcsNkNBQTZDLENBQUM7UUFDNUQsZ0JBQVcsR0FBRyx1RUFBdUUsQ0FBQztJQTRDekcsQ0FBQztJQTFDUSxZQUFZLENBQUMsS0FBYTtRQUMvQixPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBa0IsRUFBRSxXQUFtQixFQUFFLFlBQW9CO1FBQ3hFLE1BQU0sTUFBTSxHQUFvQixFQUFFLENBQUM7UUFFbkMsK0RBQStEO1FBQy9ELElBQUksV0FBVyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNsRSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDMUQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQztZQUM3QyxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWpDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxJQUFJLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixJQUFJLFdBQVcsQ0FBQztRQUNoQixPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEUsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUM7WUFDekIsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDO1lBRXZCLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDO29CQUNILE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsb0NBQW9DLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDeEcsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDdkMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO29CQUMvQixJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7Z0JBQzlCLENBQUM7Z0JBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztvQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRSxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQYXJzZWRUb2tlbiB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25QYXJzZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsZWdhY3lSZWdleCA9IC90XFwoW1wiJ10oW15cIiddKylbXCInXVxccyooPzosXFxzKihcXHsuKj9cXH0pKT9cXCkvZztcbiAgcHJpdmF0ZSByZWFkb25seSBpbmxpbmVSZWdleCA9IC9AKFthLXpBLVpcXC1dKzopPyhbYS16QS1aMC05Xy1dKyk6KFthLXpBLVowLTlfLjotXSspKD89W1xcXFxzLiw7IT8pXXwkKS9nO1xuXG4gIHB1YmxpYyBpc0V4cHJlc3Npb24odmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICh2YWx1ZS5pbmNsdWRlcygndCgnKSB8fCB2YWx1ZS5pbmNsdWRlcygnQCcpKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZShleHByZXNzaW9uOiBzdHJpbmcsIGN1cnJlbnRMYW5nOiBzdHJpbmcsIGN1cnJlbnRTY29wZTogc3RyaW5nKTogQVhQYXJzZWRUb2tlbltdIHtcbiAgICBjb25zdCB0b2tlbnM6IEFYUGFyc2VkVG9rZW5bXSA9IFtdO1xuXG4gICAgLy8gRXh0cmFjdCBpbmxpbmUgcmVmZXJlbmNlcyBsaWtlIEBsYW5nOnNjb3BlOmtleSBvciBAc2NvcGU6a2V5XG4gICAgbGV0IGlubGluZU1hdGNoO1xuICAgIHdoaWxlICgoaW5saW5lTWF0Y2ggPSB0aGlzLmlubGluZVJlZ2V4LmV4ZWMoZXhwcmVzc2lvbikpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBsYW5nUGFydCA9IGlubGluZU1hdGNoWzFdPy5yZXBsYWNlKCc6JywgJycpID8/IG51bGw7XG4gICAgICBjb25zdCBzY29wZSA9IGlubGluZU1hdGNoWzJdID8/IGN1cnJlbnRTY29wZTtcbiAgICAgIGNvbnN0IGtleSA9IGlubGluZU1hdGNoWzNdO1xuICAgICAgY29uc3QgZnVsbE1hdGNoID0gaW5saW5lTWF0Y2hbMF07XG5cbiAgICAgIHRva2Vucy5wdXNoKHsgbGFuZzogbGFuZ1BhcnQgfHwgY3VycmVudExhbmcsIHNjb3BlLCBrZXksIGZ1bGxNYXRjaCB9KTtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IGxlZ2FjeSBleHByZXNzaW9uc1xuICAgIGxldCBsZWdhY3lNYXRjaDtcbiAgICB3aGlsZSAoKGxlZ2FjeU1hdGNoID0gdGhpcy5sZWdhY3lSZWdleC5leGVjKGV4cHJlc3Npb24pKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qga2V5ID0gbGVnYWN5TWF0Y2hbMV07XG4gICAgICBjb25zdCByYXdPcHRpb25zID0gbGVnYWN5TWF0Y2hbMl07XG4gICAgICBsZXQgc2NvcGUgPSBjdXJyZW50U2NvcGU7XG4gICAgICBsZXQgbGFuZyA9IGN1cnJlbnRMYW5nO1xuXG4gICAgICBpZiAocmF3T3B0aW9ucykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSByYXdPcHRpb25zLnJlcGxhY2UoLyhbJ1wiXSk/KFthLXpBLVowLTlfXSspKFsnXCJdKT9cXHMqOi9nLCAnXCIkMlwiOicpLnJlcGxhY2UoLycvZywgJ1wiJyk7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XG4gICAgICAgICAgc2NvcGUgPSBvcHRpb25zLnNjb3BlIHx8IHNjb3BlO1xuICAgICAgICAgIGxhbmcgPSBvcHRpb25zLmxhbmcgfHwgbGFuZztcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCB0cmFuc2xhdGlvbiBleHByZXNzaW9uIG9wdGlvbnM6JywgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0b2tlbnMucHVzaCh7IGtleSwgc2NvcGUsIGxhbmcsIGZ1bGxNYXRjaDogbGVnYWN5TWF0Y2hbMF0gfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { TranslationParserService } from './translation.parser';\n// Helper function to escape special characters for use in a regular expression\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport class TranslationResolverService {\n constructor() {\n this.loaderService = inject(AXTranslationLoaderService);\n this.parser = new TranslationParserService();\n }\n async resolve(lang, scope, key, params) {\n let result = this.loaderService.peek(lang, scope, key);\n if (result == null) {\n await firstValueFrom(this.loaderService.load(lang, scope));\n result = this.loaderService.peek(lang, scope, key);\n }\n if (result == null) {\n const unresolvedResult = key;\n return this.format(unresolvedResult, params);\n }\n // Recursively resolve references\n if (typeof result === 'string' && this.parser.isExpression(result)) {\n const tokens = this.parser.parse(result, lang, scope);\n if (tokens.length > 0) {\n const first = tokens[0];\n result = await this.resolve(first.lang || lang, first.scope || scope, first.key, params);\n }\n }\n return this.format(result, params);\n }\n format(text, params) {\n if (!params || typeof text !== 'string' || Object.keys(params).length === 0) {\n return text;\n }\n return Object.keys(params).reduce((currentText, paramKey) => {\n // paramKey is the key from the params object, e.g., \"title\" or \" title \"\n const valueToInsert = params[paramKey];\n // 1. Trim the key from the params object to handle potential leading/trailing spaces.\n // e.g., if paramKey is \" title \", keyForPattern becomes \"title\".\n const keyForPattern = paramKey.trim();\n // If trimming results in an empty string, it's not a valid placeholder to replace.\n if (keyForPattern === '') {\n return currentText;\n }\n // 2. Escape the trimmed key to safely use it in a regular expression.\n // This handles cases where the key might contain special regex characters (e.g., \"user.name\", \"item[0]\").\n const escapedKey = escapeRegExp(keyForPattern);\n // 3. Construct the RegExp. This will match:\n // - {{KEY}}\n // - {{ KEY }}\n // - {{ KEY }}\n // etc., where KEY is the (trimmed and escaped) paramKey.\n const re = new RegExp(`{{\\\\s*${escapedKey}\\\\s*}}`, 'g');\n // 4. Replace occurrences, ensuring the value is a string.\n return currentText.replace(re, String(valueToInsert));\n }, text);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24ucmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2hFLCtFQUErRTtBQUMvRSxTQUFTLFlBQVksQ0FBQyxNQUFjO0lBQ2xDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsTUFBTSxPQUFPLDBCQUEwQjtJQUF2QztRQUNVLGtCQUFhLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDbkQsV0FBTSxHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztJQWlFbEQsQ0FBQztJQS9EQyxLQUFLLENBQUMsT0FBTyxDQUNYLElBQXFCLEVBQ3JCLEtBQXVCLEVBQ3ZCLEdBQVcsRUFDWCxNQUEwQjtRQUUxQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXZELElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25CLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNELE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuQixNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELGlDQUFpQztRQUNqQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzRixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFZLEVBQUUsTUFBMEI7UUFDcEQsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUMxRCx5RUFBeUU7WUFDekUsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZDLHNGQUFzRjtZQUN0RixvRUFBb0U7WUFDcEUsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXRDLG1GQUFtRjtZQUNuRixJQUFJLGFBQWEsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxXQUFXLENBQUM7WUFDckIsQ0FBQztZQUVELHNFQUFzRTtZQUN0RSw2R0FBNkc7WUFDN0csTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRS9DLDRDQUE0QztZQUM1QyxlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQiw0REFBNEQ7WUFDNUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsU0FBUyxVQUFVLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUV4RCwwREFBMEQ7WUFDMUQsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25QYXJzZXJTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5wYXJzZXInO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGVMYW5nLCBBWFRyYW5zbGF0ZVBhcmFtcywgQVhUcmFuc2xhdGVTY29wZSB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBmb3IgdXNlIGluIGEgcmVndWxhciBleHByZXNzaW9uXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJyk7XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvblJlc29sdmVyU2VydmljZSB7XG4gIHByaXZhdGUgbG9hZGVyU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSk7XG4gIHByaXZhdGUgcGFyc2VyID0gbmV3IFRyYW5zbGF0aW9uUGFyc2VyU2VydmljZSgpO1xuXG4gIGFzeW5jIHJlc29sdmUoXG4gICAgbGFuZzogQVhUcmFuc2xhdGVMYW5nLFxuICAgIHNjb3BlOiBBWFRyYW5zbGF0ZVNjb3BlLFxuICAgIGtleTogc3RyaW5nLFxuICAgIHBhcmFtcz86IEFYVHJhbnNsYXRlUGFyYW1zLFxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmxvYWRlclNlcnZpY2UucGVlayhsYW5nLCBzY29wZSwga2V5KTtcblxuICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5sb2FkZXJTZXJ2aWNlLmxvYWQobGFuZywgc2NvcGUpKTtcbiAgICAgIHJlc3VsdCA9IHRoaXMubG9hZGVyU2VydmljZS5wZWVrKGxhbmcsIHNjb3BlLCBrZXkpO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgY29uc3QgdW5yZXNvbHZlZFJlc3VsdCA9IGtleTtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdCh1bnJlc29sdmVkUmVzdWx0LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIC8vIFJlY3Vyc2l2ZWx5IHJlc29sdmUgcmVmZXJlbmNlc1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyAmJiB0aGlzLnBhcnNlci5pc0V4cHJlc3Npb24ocmVzdWx0KSkge1xuICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy5wYXJzZXIucGFyc2UocmVzdWx0LCBsYW5nLCBzY29wZSk7XG4gICAgICBpZiAodG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgZmlyc3QgPSB0b2tlbnNbMF07XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMucmVzb2x2ZShmaXJzdC5sYW5nIHx8IGxhbmcsIGZpcnN0LnNjb3BlIHx8IHNjb3BlLCBmaXJzdC5rZXksIHBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0KHJlc3VsdCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXQodGV4dDogc3RyaW5nLCBwYXJhbXM/OiBBWFRyYW5zbGF0ZVBhcmFtcyk6IHN0cmluZyB7XG4gICAgaWYgKCFwYXJhbXMgfHwgdHlwZW9mIHRleHQgIT09ICdzdHJpbmcnIHx8IE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMocGFyYW1zKS5yZWR1Y2UoKGN1cnJlbnRUZXh0LCBwYXJhbUtleSkgPT4ge1xuICAgICAgLy8gcGFyYW1LZXkgaXMgdGhlIGtleSBmcm9tIHRoZSBwYXJhbXMgb2JqZWN0LCBlLmcuLCBcInRpdGxlXCIgb3IgXCIgdGl0bGUgXCJcbiAgICAgIGNvbnN0IHZhbHVlVG9JbnNlcnQgPSBwYXJhbXNbcGFyYW1LZXldO1xuXG4gICAgICAvLyAxLiBUcmltIHRoZSBrZXkgZnJvbSB0aGUgcGFyYW1zIG9iamVjdCB0byBoYW5kbGUgcG90ZW50aWFsIGxlYWRpbmcvdHJhaWxpbmcgc3BhY2VzLlxuICAgICAgLy8gICAgZS5nLiwgaWYgcGFyYW1LZXkgaXMgXCIgdGl0bGUgXCIsIGtleUZvclBhdHRlcm4gYmVjb21lcyBcInRpdGxlXCIuXG4gICAgICBjb25zdCBrZXlGb3JQYXR0ZXJuID0gcGFyYW1LZXkudHJpbSgpO1xuXG4gICAgICAvLyBJZiB0cmltbWluZyByZXN1bHRzIGluIGFuIGVtcHR5IHN0cmluZywgaXQncyBub3QgYSB2YWxpZCBwbGFjZWhvbGRlciB0byByZXBsYWNlLlxuICAgICAgaWYgKGtleUZvclBhdHRlcm4gPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50VGV4dDtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gRXNjYXBlIHRoZSB0cmltbWVkIGtleSB0byBzYWZlbHkgdXNlIGl0IGluIGEgcmVndWxhciBleHByZXNzaW9uLlxuICAgICAgLy8gICAgVGhpcyBoYW5kbGVzIGNhc2VzIHdoZXJlIHRoZSBrZXkgbWlnaHQgY29udGFpbiBzcGVjaWFsIHJlZ2V4IGNoYXJhY3RlcnMgKGUuZy4sIFwidXNlci5uYW1lXCIsIFwiaXRlbVswXVwiKS5cbiAgICAgIGNvbnN0IGVzY2FwZWRLZXkgPSBlc2NhcGVSZWdFeHAoa2V5Rm9yUGF0dGVybik7XG5cbiAgICAgIC8vIDMuIENvbnN0cnVjdCB0aGUgUmVnRXhwLiBUaGlzIHdpbGwgbWF0Y2g6XG4gICAgICAvLyAgICAtIHt7S0VZfX1cbiAgICAgIC8vICAgIC0ge3sgS0VZIH19XG4gICAgICAvLyAgICAtIHt7ICBLRVkgIH19XG4gICAgICAvLyAgICBldGMuLCB3aGVyZSBLRVkgaXMgdGhlICh0cmltbWVkIGFuZCBlc2NhcGVkKSBwYXJhbUtleS5cbiAgICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChge3tcXFxccyoke2VzY2FwZWRLZXl9XFxcXHMqfX1gLCAnZycpO1xuXG4gICAgICAvLyA0LiBSZXBsYWNlIG9jY3VycmVuY2VzLCBlbnN1cmluZyB0aGUgdmFsdWUgaXMgYSBzdHJpbmcuXG4gICAgICByZXR1cm4gY3VycmVudFRleHQucmVwbGFjZShyZSwgU3RyaW5nKHZhbHVlVG9JbnNlcnQpKTtcbiAgICB9LCB0ZXh0KTtcbiAgfVxufVxuIl19","export const LOCALE_KEY_REGEX = /^(\\*-\\*|[a-z]{2}-[A-Z]{2})$/;\nexport function resolveMultiLanguageValue(value, locale) {\n return value[locale] ?? value['en-US'] ?? Object.values(value).find((item) => item != null) ?? '';\n}\nexport function isValidMultiLanguageObject(value) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const entries = Object.entries(value);\n if (!entries.length) {\n return false;\n }\n return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');\n}\n/**\n * Resolves {@link AXMultiLanguageString} to a single string for the given locale.\n * Fallback order: `currentLocale` → `en-US` → first map value.\n */\nexport function resolveMultiLanguageString(content, currentLocale) {\n if (content == null || content === '') {\n return '';\n }\n if (typeof content === 'string') {\n return content;\n }\n if (!isValidMultiLanguageObject(content)) {\n return String(content);\n }\n return resolveMultiLanguageValue(content, currentLocale);\n}\n/**\n * Creates an {@link AXMultiLanguageMap} with `en-US` and `fa-IR` entries.\n * Use for seed data, tests, and demos that supply English and Persian copy explicitly.\n */\nexport function createMultiLanguageString(enUs, faIr) {\n return { 'en-US': enUs, 'fa-IR': faIr };\n}\n/**\n * True when there is no displayable text in any locale (plain string or ML map).\n */\nexport function isEffectivelyEmptyLocalizedValue(value) {\n if (value == null)\n return true;\n if (typeof value === 'string')\n return value.trim() === '';\n if (typeof value !== 'object' || Array.isArray(value))\n return false;\n const record = value;\n return Object.values(record).every((v) => v == null || String(v).trim() === '');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0JBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUFDO0FBTTlELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxLQUF5QixFQUFFLE1BQWM7SUFDakYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3BHLENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsS0FBYztJQUN2RCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUM7QUFDNUcsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FDeEMsT0FBaUQsRUFDakQsYUFBcUI7SUFFckIsSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxJQUFZLEVBQUUsSUFBWTtJQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDMUMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdDQUFnQyxDQUFDLEtBQWM7SUFDN0QsSUFBSSxLQUFLLElBQUksSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQy9CLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMxRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLEtBQWdDLENBQUM7SUFDaEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDbEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYVHJhbnNsYXRlSGFzaE1hcDxUID0gdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCBUPjtcblxuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGVMYW5nID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGVTY29wZSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIEFYVHJhbnNsYXRlUGFyYW1zPFQgPSB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIFQ+O1xuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGlvbiA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUcmFuc2xhdGVPcHRpb25zIHtcbiAgbGFuZz86IEFYVHJhbnNsYXRlTGFuZztcbiAgc2NvcGU/OiBBWFRyYW5zbGF0ZVNjb3BlO1xuICBwYXJhbXM/OiBBWFRyYW5zbGF0ZVBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBhcnNlZFRva2VuIHtcbiAga2V5OiBzdHJpbmc7XG4gIHNjb3BlPzogQVhUcmFuc2xhdGVTY29wZTtcbiAgbGFuZz86IEFYVHJhbnNsYXRlTGFuZztcbiAgZnVsbE1hdGNoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBMT0NBTEVfS0VZX1JFR0VYID0gL14oXFwqLVxcKnxbYS16XXsyfS1bQS1aXXsyfSkkLztcblxuZXhwb3J0IHR5cGUgQVhNdWx0aUxhbmd1YWdlTWFwID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IHR5cGUgQVhNdWx0aUxhbmd1YWdlU3RyaW5nID0gc3RyaW5nIHwgQVhNdWx0aUxhbmd1YWdlTWFwO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU11bHRpTGFuZ3VhZ2VWYWx1ZSh2YWx1ZTogQVhNdWx0aUxhbmd1YWdlTWFwLCBsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZVtsb2NhbGVdID8/IHZhbHVlWydlbi1VUyddID8/IE9iamVjdC52YWx1ZXModmFsdWUpLmZpbmQoKGl0ZW0pID0+IGl0ZW0gIT0gbnVsbCkgPz8gJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTXVsdGlMYW5ndWFnZU9iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEFYTXVsdGlMYW5ndWFnZU1hcCB7XG4gIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh2YWx1ZSk7XG4gIGlmICghZW50cmllcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZW50cmllcy5ldmVyeSgoW2tleSwgZW50cnlWYWx1ZV0pID0+IExPQ0FMRV9LRVlfUkVHRVgudGVzdChrZXkpICYmIHR5cGVvZiBlbnRyeVZhbHVlID09PSAnc3RyaW5nJyk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMge0BsaW5rIEFYTXVsdGlMYW5ndWFnZVN0cmluZ30gdG8gYSBzaW5nbGUgc3RyaW5nIGZvciB0aGUgZ2l2ZW4gbG9jYWxlLlxuICogRmFsbGJhY2sgb3JkZXI6IGBjdXJyZW50TG9jYWxlYCDihpIgYGVuLVVTYCDihpIgZmlyc3QgbWFwIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU11bHRpTGFuZ3VhZ2VTdHJpbmcoXG4gIGNvbnRlbnQ6IEFYTXVsdGlMYW5ndWFnZVN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGN1cnJlbnRMb2NhbGU6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGlmIChjb250ZW50ID09IG51bGwgfHwgY29udGVudCA9PT0gJycpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG4gIGlmICghaXNWYWxpZE11bHRpTGFuZ3VhZ2VPYmplY3QoY29udGVudCkpIHtcbiAgICByZXR1cm4gU3RyaW5nKGNvbnRlbnQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc29sdmVNdWx0aUxhbmd1YWdlVmFsdWUoY29udGVudCwgY3VycmVudExvY2FsZSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiB7QGxpbmsgQVhNdWx0aUxhbmd1YWdlTWFwfSB3aXRoIGBlbi1VU2AgYW5kIGBmYS1JUmAgZW50cmllcy5cbiAqIFVzZSBmb3Igc2VlZCBkYXRhLCB0ZXN0cywgYW5kIGRlbW9zIHRoYXQgc3VwcGx5IEVuZ2xpc2ggYW5kIFBlcnNpYW4gY29weSBleHBsaWNpdGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTXVsdGlMYW5ndWFnZVN0cmluZyhlblVzOiBzdHJpbmcsIGZhSXI6IHN0cmluZyk6IEFYTXVsdGlMYW5ndWFnZU1hcCB7XG4gIHJldHVybiB7ICdlbi1VUyc6IGVuVXMsICdmYS1JUic6IGZhSXIgfTtcbn1cblxuLyoqXG4gKiBUcnVlIHdoZW4gdGhlcmUgaXMgbm8gZGlzcGxheWFibGUgdGV4dCBpbiBhbnkgbG9jYWxlIChwbGFpbiBzdHJpbmcgb3IgTUwgbWFwKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWZmZWN0aXZlbHlFbXB0eUxvY2FsaXplZFZhbHVlKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50cmltKCkgPT09ICcnO1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCByZWNvcmQgPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVjb3JkKS5ldmVyeSgodikgPT4gdiA9PSBudWxsIHx8IFN0cmluZyh2KS50cmltKCkgPT09ICcnKTtcbn1cbiJdfQ==","import { AXEventService, AXSystemEvents } from '@acorex/core/events';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { waitFor } from '@acorex/core/utils';\nimport { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, from, of, shareReplay, switchMap } from 'rxjs';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { TranslationParserService } from './translation.parser';\nimport { TranslationResolverService } from './translation.resolver';\nimport { isValidMultiLanguageObject, LOCALE_KEY_REGEX, resolveMultiLanguageValue, } from './translation.types';\nimport * as i0 from \"@angular/core\";\nlet singletonInstance;\nexport function translateSync(key, options) {\n return singletonInstance.translateSync(key, options);\n}\nexport class AXTranslationService {\n constructor() {\n this.localeService = inject(AXLocaleService);\n this.config = inject(AX_TRANSLATION_CONFIG);\n this.loader = inject(AXTranslationLoaderService);\n this.parser = new TranslationParserService();\n this.eventService = inject(AXEventService);\n this.resolver = new TranslationResolverService();\n this.activeLang = new BehaviorSubject(this.config.defaults.lang);\n this.langChanges$ = this.activeLang.asObservable();\n this.currentLocale$ = this.langChanges$.pipe(distinctUntilChanged());\n singletonInstance = this;\n this.localeService.profileChanged$.subscribe((locale) => {\n if (locale?.localeInfo?.code) {\n this.setActiveLang(locale.localeInfo.code);\n }\n });\n }\n setActiveLang(lang) {\n if (lang && lang !== this.activeLang.getValue()) {\n this.activeLang.next(lang);\n this.eventService.emitEvent({\n type: AXSystemEvents.AXLanguageChanged,\n payload: lang,\n });\n }\n }\n getActiveLang() {\n return this.activeLang.getValue();\n }\n getDefaultLang() {\n return this.config.defaults.lang;\n }\n resolve(value, locale) {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n if (!isValidMultiLanguageObject(value)) {\n return '';\n }\n return resolveMultiLanguageValue(value, locale ?? this.getActiveLang());\n }\n toLocaleMap(value, activeLocale = this.getActiveLang()) {\n if (isValidMultiLanguageObject(value)) {\n return { ...value };\n }\n return {\n [activeLocale]: typeof value === 'string' ? value : '',\n };\n }\n translate$(value, options) {\n if (isValidMultiLanguageObject(value)) {\n return this.langChanges$.pipe(switchMap((activeLang) => {\n const targetLang = options?.lang ?? activeLang;\n const selectedValue = resolveMultiLanguageValue(value, targetLang);\n const scope = options?.scope ?? this.config.defaults.scope;\n return from(this.translateAsync(selectedValue, {\n ...options,\n lang: targetLang,\n scope,\n }));\n }));\n }\n return this.translateValue$(value, options);\n }\n async translateAsync(text, options) {\n const { lang, scope } = this.resolveContext(options);\n const params = options?.params;\n if (!this.parser.isExpression(text)) {\n return this.resolver.resolve(lang, scope, text, params);\n }\n const tokens = this.parser.parse(text, lang, scope);\n const results = await Promise.all(tokens.map((token) => this.resolver\n .resolve(token.lang ?? lang, token.scope ?? scope, token.key, params)\n .then((translated) => [token.fullMatch, translated])));\n return results.reduce((output, [match, translated]) => output.replace(match, translated), text);\n }\n translateSync(text, options) {\n const { lang, scope } = this.resolveContext(options);\n const params = options?.params;\n const waitForLoad = options?.waitForLoad ?? false;\n const timeoutMs = options?.timeoutMs ?? 100;\n if (!this.parser.isExpression(text)) {\n let translated = this.loader.peek(lang, scope, text);\n if (!translated && waitForLoad) {\n translated = waitFor(() => this.loader.peek(lang, scope, text), () => this.loader.load(lang, scope).subscribe(), timeoutMs);\n }\n return this.resolver.format(translated ?? text, params);\n }\n const tokens = this.parser.parse(text, lang, scope);\n let result = text;\n for (const token of tokens) {\n const targetLang = token.lang ?? lang;\n const targetScope = token.scope ?? scope;\n const key = token.key;\n let translation = this.loader.peek(targetLang, targetScope, key);\n if (!translation) {\n translation =\n waitFor(() => this.loader.peek(targetLang, targetScope, key), () => this.loader.load(targetLang, targetScope).subscribe(), waitForLoad ? timeoutMs : 0) ?? key;\n }\n result = result.replace(token.fullMatch, this.resolver.format(translation, params));\n }\n return result;\n }\n translateValue$(text, options) {\n if (!text) {\n return of('');\n }\n const staticOptions = { ...options };\n const staticScope = staticOptions.scope ?? this.config.defaults.scope;\n return this.langChanges$.pipe(switchMap((lang) => {\n return from(this.translateAsync(text, {\n ...staticOptions,\n lang: staticOptions.lang ?? lang,\n scope: staticScope,\n }));\n }), shareReplay({ bufferSize: 1, refCount: true }));\n }\n resolveContext(options) {\n return {\n lang: options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang,\n scope: options?.scope ?? this.config.defaults.scope,\n };\n }\n isValidMultiLanguageObject(value) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const entries = Object.entries(value);\n if (!entries.length) {\n return false;\n }\n return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvdHJhbnNsYXRpb24vc3JjL2xpYi90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBSUwsMEJBQTBCLEVBQzFCLGdCQUFnQixFQUNoQix5QkFBeUIsR0FDMUIsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFN0IsSUFBSSxpQkFBdUMsQ0FBQztBQUU1QyxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVcsRUFBRSxPQUE0QjtJQUNyRSxPQUFPLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUtELE1BQU0sT0FBTyxvQkFBb0I7SUFXL0I7UUFWUSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxXQUFNLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdkMsV0FBTSxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzVDLFdBQU0sR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFDeEMsaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsYUFBUSxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUM1QyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQWtCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JFLGlCQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5QyxtQkFBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUc5RSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdEQsSUFBSSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUFxQjtRQUN4QyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO2dCQUMxQixJQUFJLEVBQUUsY0FBYyxDQUFDLGlCQUFpQjtnQkFDdEMsT0FBTyxFQUFFLElBQUk7YUFDZCxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBcUQsRUFBRSxNQUFlO1FBQ25GLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsT0FBTyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSxXQUFXLENBQ2hCLEtBQXFELEVBQ3JELGVBQXVCLElBQUksQ0FBQyxhQUFhLEVBQUU7UUFFM0MsSUFBSSwwQkFBMEIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxPQUFPO1lBQ0wsQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUN2RCxDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVUsQ0FDZixLQUFxRCxFQUNyRCxPQUE0QjtRQUU1QixJQUFJLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDM0IsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ3ZCLE1BQU0sVUFBVSxHQUFHLE9BQU8sRUFBRSxJQUFJLElBQUksVUFBVSxDQUFDO2dCQUMvQyxNQUFNLGFBQWEsR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ25FLE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUUzRCxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRTtvQkFDakMsR0FBRyxPQUFPO29CQUNWLElBQUksRUFBRSxVQUFVO29CQUNoQixLQUFLO2lCQUNOLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLElBQVksRUFBRSxPQUE0QjtRQUM3RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLE1BQU0sQ0FBQztRQUUvQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBELE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ25CLElBQUksQ0FBQyxRQUFRO2FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDO2FBQ3BFLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQ3ZELENBQ0YsQ0FBQztRQUVGLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVNLGFBQWEsQ0FDbEIsSUFBWSxFQUNaLE9BQTRFO1FBRTVFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQy9CLE1BQU0sV0FBVyxHQUFHLE9BQU8sRUFBRSxXQUFXLElBQUksS0FBSyxDQUFDO1FBQ2xELE1BQU0sU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLElBQUksR0FBRyxDQUFDO1FBRTVDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFckQsSUFBSSxDQUFDLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDL0IsVUFBVSxHQUFHLE9BQU8sQ0FDbEIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFDekMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUMvQyxTQUFTLENBQ1YsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBRWxCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7WUFDM0IsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7WUFDdEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7WUFDekMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUV0QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRWpFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsV0FBVztvQkFDVCxPQUFPLENBQ0wsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsRUFDcEQsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUMzRCxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM1QixJQUFJLEdBQUcsQ0FBQztZQUNiLENBQUM7WUFFRCxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVksRUFBRSxPQUE0QjtRQUNoRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBRXRFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQzNCLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUNULElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFO2dCQUN4QixHQUFHLGFBQWE7Z0JBQ2hCLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxJQUFJLElBQUk7Z0JBQ2hDLEtBQUssRUFBRSxXQUFXO2FBQ25CLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFTyxjQUFjLENBQUMsT0FBNEI7UUFDakQsT0FBTztZQUNMLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQ3hFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUs7U0FDcEQsQ0FBQztJQUNKLENBQUM7SUFFTSwwQkFBMEIsQ0FBQyxLQUFjO1FBQzlDLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQztJQUM1RyxDQUFDOzhHQXhNVSxvQkFBb0I7a0hBQXBCLG9CQUFvQixjQUZuQixNQUFNOzsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhFdmVudFNlcnZpY2UsIEFYU3lzdGVtRXZlbnRzIH0gZnJvbSAnQGFjb3JleC9jb3JlL2V2ZW50cyc7XG5pbXBvcnQgeyBBWExvY2FsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvbG9jYWxlJztcbmltcG9ydCB7IHdhaXRGb3IgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbkxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uLWxvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0NPTkZJRyB9IGZyb20gJy4vdHJhbnNsYXRpb24uY29uZmlnJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uUGFyc2VyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24ucGFyc2VyJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uUmVzb2x2ZXJTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5yZXNvbHZlcic7XG5pbXBvcnQge1xuICBBWE11bHRpTGFuZ3VhZ2VNYXAsXG4gIEFYVHJhbnNsYXRlTGFuZyxcbiAgQVhUcmFuc2xhdGVPcHRpb25zLFxuICBpc1ZhbGlkTXVsdGlMYW5ndWFnZU9iamVjdCxcbiAgTE9DQUxFX0tFWV9SRUdFWCxcbiAgcmVzb2x2ZU11bHRpTGFuZ3VhZ2VWYWx1ZSxcbn0gZnJvbSAnLi90cmFuc2xhdGlvbi50eXBlcyc7XG5cbmxldCBzaW5nbGV0b25JbnN0YW5jZTogQVhUcmFuc2xhdGlvblNlcnZpY2U7XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGVTeW5jKGtleTogc3RyaW5nLCBvcHRpb25zPzogQVhUcmFuc2xhdGVPcHRpb25zKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNpbmdsZXRvbkluc3RhbmNlLnRyYW5zbGF0ZVN5bmMoa2V5LCBvcHRpb25zKTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByaXZhdGUgY29uZmlnID0gaW5qZWN0KEFYX1RSQU5TTEFUSU9OX0NPTkZJRyk7XG4gIHByaXZhdGUgbG9hZGVyID0gaW5qZWN0KEFYVHJhbnNsYXRpb25Mb2FkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwYXJzZXIgPSBuZXcgVHJhbnNsYXRpb25QYXJzZXJTZXJ2aWNlKCk7XG4gIHByaXZhdGUgZXZlbnRTZXJ2aWNlID0gaW5qZWN0KEFYRXZlbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZXNvbHZlciA9IG5ldyBUcmFuc2xhdGlvblJlc29sdmVyU2VydmljZSgpO1xuICBwcml2YXRlIGFjdGl2ZUxhbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYVHJhbnNsYXRlTGFuZz4odGhpcy5jb25maWcuZGVmYXVsdHMubGFuZyk7XG4gIHB1YmxpYyByZWFkb25seSBsYW5nQ2hhbmdlcyQgPSB0aGlzLmFjdGl2ZUxhbmcuYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TG9jYWxlJCA9IHRoaXMubGFuZ0NoYW5nZXMkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc2luZ2xldG9uSW5zdGFuY2UgPSB0aGlzO1xuICAgIHRoaXMubG9jYWxlU2VydmljZS5wcm9maWxlQ2hhbmdlZCQuc3Vic2NyaWJlKChsb2NhbGUpID0+IHtcbiAgICAgIGlmIChsb2NhbGU/LmxvY2FsZUluZm8/LmNvZGUpIHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVMYW5nKGxvY2FsZS5sb2NhbGVJbmZvLmNvZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGl2ZUxhbmcobGFuZzogQVhUcmFuc2xhdGVMYW5nKTogdm9pZCB7XG4gICAgaWYgKGxhbmcgJiYgbGFuZyAhPT0gdGhpcy5hY3RpdmVMYW5nLmdldFZhbHVlKCkpIHtcbiAgICAgIHRoaXMuYWN0aXZlTGFuZy5uZXh0KGxhbmcpO1xuICAgICAgdGhpcy5ldmVudFNlcnZpY2UuZW1pdEV2ZW50KHtcbiAgICAgICAgdHlwZTogQVhTeXN0ZW1FdmVudHMuQVhMYW5ndWFnZUNoYW5nZWQsXG4gICAgICAgIHBheWxvYWQ6IGxhbmcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0QWN0aXZlTGFuZygpOiBBWFRyYW5zbGF0ZUxhbmcge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUxhbmcuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZWZhdWx0TGFuZygpOiBBWFRyYW5zbGF0ZUxhbmcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5kZWZhdWx0cy5sYW5nO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUodmFsdWU6IHN0cmluZyB8IEFYTXVsdGlMYW5ndWFnZU1hcCB8IG51bGwgfCB1bmRlZmluZWQsIGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmICghaXNWYWxpZE11bHRpTGFuZ3VhZ2VPYmplY3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVNdWx0aUxhbmd1YWdlVmFsdWUodmFsdWUsIGxvY2FsZSA/PyB0aGlzLmdldEFjdGl2ZUxhbmcoKSk7XG4gIH1cblxuICBwdWJsaWMgdG9Mb2NhbGVNYXAoXG4gICAgdmFsdWU6IHN0cmluZyB8IEFYTXVsdGlMYW5ndWFnZU1hcCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgYWN0aXZlTG9jYWxlOiBzdHJpbmcgPSB0aGlzLmdldEFjdGl2ZUxhbmcoKSxcbiAgKTogQVhNdWx0aUxhbmd1YWdlTWFwIHtcbiAgICBpZiAoaXNWYWxpZE11bHRpTGFuZ3VhZ2VPYmplY3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4geyAuLi52YWx1ZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBbYWN0aXZlTG9jYWxlXTogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogJycsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2xhdGUkKFxuICAgIHZhbHVlOiBzdHJpbmcgfCBBWE11bHRpTGFuZ3VhZ2VNYXAgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKGlzVmFsaWRNdWx0aUxhbmd1YWdlT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ0NoYW5nZXMkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoYWN0aXZlTGFuZykgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhcmdldExhbmcgPSBvcHRpb25zPy5sYW5nID8/IGFjdGl2ZUxhbmc7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IHJlc29sdmVNdWx0aUxhbmd1YWdlVmFsdWUodmFsdWUsIHRhcmdldExhbmcpO1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0gb3B0aW9ucz8uc2NvcGUgPz8gdGhpcy5jb25maWcuZGVmYXVsdHMuc2NvcGU7XG5cbiAgICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlQXN5bmMoc2VsZWN0ZWRWYWx1ZSwge1xuICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICBsYW5nOiB0YXJnZXRMYW5nLFxuICAgICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlVmFsdWUkKHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHRyYW5zbGF0ZUFzeW5jKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgeyBsYW5nLCBzY29wZSB9ID0gdGhpcy5yZXNvbHZlQ29udGV4dChvcHRpb25zKTtcbiAgICBjb25zdCBwYXJhbXMgPSBvcHRpb25zPy5wYXJhbXM7XG5cbiAgICBpZiAoIXRoaXMucGFyc2VyLmlzRXhwcmVzc2lvbih0ZXh0KSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZXIucmVzb2x2ZShsYW5nLCBzY29wZSwgdGV4dCwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbnMgPSB0aGlzLnBhcnNlci5wYXJzZSh0ZXh0LCBsYW5nLCBzY29wZSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0b2tlbnMubWFwKCh0b2tlbikgPT5cbiAgICAgICAgdGhpcy5yZXNvbHZlclxuICAgICAgICAgIC5yZXNvbHZlKHRva2VuLmxhbmcgPz8gbGFuZywgdG9rZW4uc2NvcGUgPz8gc2NvcGUsIHRva2VuLmtleSwgcGFyYW1zKVxuICAgICAgICAgIC50aGVuKCh0cmFuc2xhdGVkKSA9PiBbdG9rZW4uZnVsbE1hdGNoLCB0cmFuc2xhdGVkXSksXG4gICAgICApLFxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzdWx0cy5yZWR1Y2UoKG91dHB1dCwgW21hdGNoLCB0cmFuc2xhdGVkXSkgPT4gb3V0cHV0LnJlcGxhY2UobWF0Y2gsIHRyYW5zbGF0ZWQpLCB0ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2xhdGVTeW5jKFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQVhUcmFuc2xhdGVPcHRpb25zICYgeyB3YWl0Rm9yTG9hZD86IGJvb2xlYW47IHRpbWVvdXRNcz86IG51bWJlciB9LFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgbGFuZywgc2NvcGUgfSA9IHRoaXMucmVzb2x2ZUNvbnRleHQob3B0aW9ucyk7XG4gICAgY29uc3QgcGFyYW1zID0gb3B0aW9ucz8ucGFyYW1zO1xuICAgIGNvbnN0IHdhaXRGb3JMb2FkID0gb3B0aW9ucz8ud2FpdEZvckxvYWQgPz8gZmFsc2U7XG4gICAgY29uc3QgdGltZW91dE1zID0gb3B0aW9ucz8udGltZW91dE1zID8/IDEwMDtcblxuICAgIGlmICghdGhpcy5wYXJzZXIuaXNFeHByZXNzaW9uKHRleHQpKSB7XG4gICAgICBsZXQgdHJhbnNsYXRlZCA9IHRoaXMubG9hZGVyLnBlZWsobGFuZywgc2NvcGUsIHRleHQpO1xuXG4gICAgICBpZiAoIXRyYW5zbGF0ZWQgJiYgd2FpdEZvckxvYWQpIHtcbiAgICAgICAgdHJhbnNsYXRlZCA9IHdhaXRGb3IoXG4gICAgICAgICAgKCkgPT4gdGhpcy5sb2FkZXIucGVlayhsYW5nLCBzY29wZSwgdGV4dCksXG4gICAgICAgICAgKCkgPT4gdGhpcy5sb2FkZXIubG9hZChsYW5nLCBzY29wZSkuc3Vic2NyaWJlKCksXG4gICAgICAgICAgdGltZW91dE1zLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZlci5mb3JtYXQodHJhbnNsYXRlZCA/PyB0ZXh0LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VucyA9IHRoaXMucGFyc2VyLnBhcnNlKHRleHQsIGxhbmcsIHNjb3BlKTtcbiAgICBsZXQgcmVzdWx0ID0gdGV4dDtcblxuICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKSB7XG4gICAgICBjb25zdCB0YXJnZXRMYW5nID0gdG9rZW4ubGFuZyA/PyBsYW5nO1xuICAgICAgY29uc3QgdGFyZ2V0U2NvcGUgPSB0b2tlbi5zY29wZSA/PyBzY29wZTtcbiAgICAgIGNvbnN0IGtleSA9IHRva2VuLmtleTtcblxuICAgICAgbGV0IHRyYW5zbGF0aW9uID0gdGhpcy5sb2FkZXIucGVlayh0YXJnZXRMYW5nLCB0YXJnZXRTY29wZSwga2V5KTtcblxuICAgICAgaWYgKCF0cmFuc2xhdGlvbikge1xuICAgICAgICB0cmFuc2xhdGlvbiA9XG4gICAgICAgICAgd2FpdEZvcihcbiAgICAgICAgICAgICgpID0+IHRoaXMubG9hZGVyLnBlZWsodGFyZ2V0TGFuZywgdGFyZ2V0U2NvcGUsIGtleSksXG4gICAgICAgICAgICAoKSA9PiB0aGlzLmxvYWRlci5sb2FkKHRhcmdldExhbmcsIHRhcmdldFNjb3BlKS5zdWJzY3JpYmUoKSxcbiAgICAgICAgICAgIHdhaXRGb3JMb2FkID8gdGltZW91dE1zIDogMCxcbiAgICAgICAgICApID8/IGtleTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UodG9rZW4uZnVsbE1hdGNoLCB0aGlzLnJlc29sdmVyLmZvcm1hdCh0cmFuc2xhdGlvbiwgcGFyYW1zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNsYXRlVmFsdWUkKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9ucyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCF0ZXh0KSB7XG4gICAgICByZXR1cm4gb2YoJycpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXRpY09wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfTtcbiAgICBjb25zdCBzdGF0aWNTY29wZSA9IHN0YXRpY09wdGlvbnMuc2NvcGUgPz8gdGhpcy5jb25maWcuZGVmYXVsdHMuc2NvcGU7XG5cbiAgICByZXR1cm4gdGhpcy5sYW5nQ2hhbmdlcyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobGFuZykgPT4ge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZUFzeW5jKHRleHQsIHtcbiAgICAgICAgICAgIC4uLnN0YXRpY09wdGlvbnMsXG4gICAgICAgICAgICBsYW5nOiBzdGF0aWNPcHRpb25zLmxhbmcgPz8gbGFuZyxcbiAgICAgICAgICAgIHNjb3BlOiBzdGF0aWNTY29wZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQ29udGV4dChvcHRpb25zPzogQVhUcmFuc2xhdGVPcHRpb25zKTogeyBsYW5nOiBBWFRyYW5zbGF0ZUxhbmc7IHNjb3BlOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhbmc6IG9wdGlvbnM/LmxhbmcgPz8gdGhpcy5nZXRBY3RpdmVMYW5nKCkgPz8gdGhpcy5jb25maWcuZGVmYXVsdHMubGFuZyxcbiAgICAgIHNjb3BlOiBvcHRpb25zPy5zY29wZSA/PyB0aGlzLmNvbmZpZy5kZWZhdWx0cy5zY29wZSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGlzVmFsaWRNdWx0aUxhbmd1YWdlT2JqZWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQVhNdWx0aUxhbmd1YWdlTWFwIHtcbiAgICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpO1xuICAgIGlmICghZW50cmllcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50cmllcy5ldmVyeSgoW2tleSwgZW50cnlWYWx1ZV0pID0+IExPQ0FMRV9LRVlfUkVHRVgudGVzdChrZXkpICYmIHR5cGVvZiBlbnRyeVZhbHVlID09PSAnc3RyaW5nJyk7XG4gIH1cbn1cbiJdfQ==","import { inject } from '@angular/core';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationService } from './translation.service';\nexport const loadTranslationScope = (route, state) => {\n const translationLoaderService = inject(AXTranslationLoaderService);\n const translationService = inject(AXTranslationService);\n const config = inject(AX_TRANSLATION_CONFIG);\n const scopeValue = route.data[config.resolver?.scopeKey];\n const scopes = Array.isArray(scopeValue) ? scopeValue : [scopeValue];\n return translationLoaderService.preload({ langs: [translationService.getActiveLang()], scopes });\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tc2NvcGUucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24tc2NvcGUucmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBdUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDdkUsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNwRSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckUsT0FBTyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDbkcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXNvbHZlRm4gfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbkxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uLWxvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0NPTkZJRyB9IGZyb20gJy4vdHJhbnNsYXRpb24uY29uZmlnJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IGxvYWRUcmFuc2xhdGlvblNjb3BlOiBSZXNvbHZlRm48dW5rbm93bj4gPSAocm91dGUsIHN0YXRlKSA9PiB7XG4gIGNvbnN0IHRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSk7XG4gIGNvbnN0IHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChBWF9UUkFOU0xBVElPTl9DT05GSUcpO1xuICBjb25zdCBzY29wZVZhbHVlID0gcm91dGUuZGF0YVtjb25maWcucmVzb2x2ZXI/LnNjb3BlS2V5XTtcbiAgY29uc3Qgc2NvcGVzID0gQXJyYXkuaXNBcnJheShzY29wZVZhbHVlKSA/IHNjb3BlVmFsdWUgOiBbc2NvcGVWYWx1ZV07XG4gIHJldHVybiB0cmFuc2xhdGlvbkxvYWRlclNlcnZpY2UucHJlbG9hZCh7IGxhbmdzOiBbdHJhbnNsYXRpb25TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKV0sIHNjb3BlcyB9KTtcbn07XG4iXX0=","import { Directive, TemplateRef, ViewContainerRef, inject } from '@angular/core';\nimport { shareReplay } from 'rxjs';\nimport { AXTranslationService } from './translation.service';\nimport * as i0 from \"@angular/core\";\nexport class AXTranslatorDirective {\n constructor() {\n this.templateRef = inject(TemplateRef);\n this.vc = inject(ViewContainerRef);\n this.translationService = inject(AXTranslationService);\n }\n ngOnInit() {\n const cache = new Map();\n const t = (key, opts) => {\n const id = `${key}|${opts?.lang ?? this.translationService.getActiveLang()}|${opts?.scope ?? 'common'}`;\n if (!cache.has(id)) {\n cache.set(id, this.translationService.translate$(key, opts).pipe(shareReplay({ bufferSize: 1, refCount: true })));\n }\n return cache.get(id);\n };\n this.vc.clear();\n this.vc.createEmbeddedView(this.templateRef, { $implicit: t });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXTranslatorDirective, isStandalone: true, selector: \"[translate]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[translate]' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRzdELE1BQU0sT0FBTyxxQkFBcUI7SUFEbEM7UUFFVSxnQkFBVyxHQUFHLE1BQU0sQ0FBbUIsV0FBVyxDQUFDLENBQUM7UUFDcEQsT0FBRSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBbUIzRDtJQWpCQyxRQUFRO1FBQ04sTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFFcEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBeUIsRUFBRSxFQUFFO1lBQ25ELE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7WUFDeEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsS0FBSyxDQUFDLEdBQUcsQ0FDUCxFQUFFLEVBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDbkcsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDOzhHQXJCVSxxQkFBcUI7a0dBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRlT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3RyYW5zbGF0ZV0nIH0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZiA9IGluamVjdDxUZW1wbGF0ZVJlZjxhbnk+PihUZW1wbGF0ZVJlZik7XG4gIHByaXZhdGUgdmMgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPHN0cmluZz4+KCk7XG5cbiAgICBjb25zdCB0ID0gKGtleTogc3RyaW5nLCBvcHRzPzogQVhUcmFuc2xhdGVPcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IGAke2tleX18JHtvcHRzPy5sYW5nID8/IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKX18JHtvcHRzPy5zY29wZSA/PyAnY29tbW9uJ31gO1xuICAgICAgaWYgKCFjYWNoZS5oYXMoaWQpKSB7XG4gICAgICAgIGNhY2hlLnNldChcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUkKGtleSwgb3B0cykucGlwZShzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYWNoZS5nZXQoaWQpITtcbiAgICB9O1xuXG4gICAgdGhpcy52Yy5jbGVhcigpO1xuICAgIHRoaXMudmMuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsIHsgJGltcGxpY2l0OiB0IH0pO1xuICB9XG59XG4iXX0=","import { inject, Pipe } from '@angular/core';\nimport { of } from 'rxjs';\nimport { AXTranslationService } from './translation.service';\nimport * as i0 from \"@angular/core\";\nexport class AXTranslatorPipe {\n constructor() {\n this.service = inject(AXTranslationService);\n }\n transform(value, options) {\n if (!value) {\n return of('');\n }\n return this.service.translate$(value, options);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorPipe, isStandalone: true, name: \"translate\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'translate',\n pure: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0b3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPN0QsTUFBTSxPQUFPLGdCQUFnQjtJQUo3QjtRQUtVLFlBQU8sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQVdoRDtJQVRDLFNBQVMsQ0FDUCxLQUF5RCxFQUN6RCxPQUE0QjtRQUU1QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQzs4R0FYVSxnQkFBZ0I7NEdBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsSUFBSSxFQUFFLElBQUk7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0ZU9wdGlvbnMgfSBmcm9tICcuL3RyYW5zbGF0aW9uLnR5cGVzJztcblxuQFBpcGUoe1xuICBuYW1lOiAndHJhbnNsYXRlJyxcbiAgcHVyZTogdHJ1ZSxcbn0pIC8vIFRoZSBwaXBlIGNhbiBub3cgYmUgcHVyZVxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSBzZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS50cmFuc2xhdGUkKHZhbHVlLCBvcHRpb25zKTtcbiAgfVxufVxuIl19","import { NgModule, inject, provideAppInitializer } from '@angular/core';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AXTranslatorDirective } from './translator.directive';\nimport { AXTranslatorPipe } from './translator.pipe';\nimport * as i0 from \"@angular/core\";\nfunction initializeApp(translatorService) {\n return () => {\n return translatorService.preload();\n };\n}\nexport class AXTranslationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, imports: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationLoaderService));\n return initializerFn();\n }),\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AXTranslatorPipe, AXTranslatorDirective],\n exports: [AXTranslatorPipe, AXTranslatorDirective],\n providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationLoaderService));\n return initializerFn();\n }),\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFckQsU0FBUyxhQUFhLENBQUMsaUJBQTZDO0lBQ2xFLE9BQU8sR0FBa0IsRUFBRTtRQUN6QixPQUFPLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFZRCxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixZQVRwQixnQkFBZ0IsRUFBRSxxQkFBcUIsYUFDdkMsZ0JBQWdCLEVBQUUscUJBQXFCOytHQVF0QyxtQkFBbUIsYUFQbkI7WUFDVCxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pCLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO2dCQUN4RSxPQUFPLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQztTQUNIOzsyRkFFVSxtQkFBbUI7a0JBVi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUM7b0JBQ2xELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixDQUFDO29CQUNsRCxTQUFTLEVBQUU7d0JBQ1QscUJBQXFCLENBQUMsR0FBRyxFQUFFOzRCQUN6QixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQzs0QkFDeEUsT0FBTyxhQUFhLEVBQUUsQ0FBQzt3QkFDekIsQ0FBQyxDQUFDO3FCQUNIO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIGluamVjdCwgcHJvdmlkZUFwcEluaXRpYWxpemVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi90cmFuc2xhdG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnLi90cmFuc2xhdG9yLnBpcGUnO1xuXG5mdW5jdGlvbiBpbml0aWFsaXplQXBwKHRyYW5zbGF0b3JTZXJ2aWNlOiBBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSkge1xuICByZXR1cm4gKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0cmFuc2xhdG9yU2VydmljZS5wcmVsb2FkKCk7XG4gIH07XG59XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtBWFRyYW5zbGF0b3JQaXBlLCBBWFRyYW5zbGF0b3JEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbQVhUcmFuc2xhdG9yUGlwZSwgQVhUcmFuc2xhdG9yRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUFwcEluaXRpYWxpemVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxpemVyRm4gPSBpbml0aWFsaXplQXBwKGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSkpO1xuICAgICAgcmV0dXJuIGluaXRpYWxpemVyRm4oKTtcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdGlvbk1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtdHJhbnNsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9hY29yZXgtY29yZS10cmFuc2xhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/core",
|
|
3
|
-
"version": "20.6.
|
|
3
|
+
"version": "20.6.23",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"lodash-es": ">=4.17.21",
|
|
6
6
|
"memoizee": ">=0.4.15",
|
|
@@ -74,14 +74,14 @@
|
|
|
74
74
|
"types": "./network/index.d.ts",
|
|
75
75
|
"default": "./fesm2022/acorex-core-network.mjs"
|
|
76
76
|
},
|
|
77
|
-
"./platform": {
|
|
78
|
-
"types": "./platform/index.d.ts",
|
|
79
|
-
"default": "./fesm2022/acorex-core-platform.mjs"
|
|
80
|
-
},
|
|
81
77
|
"./pipes": {
|
|
82
78
|
"types": "./pipes/index.d.ts",
|
|
83
79
|
"default": "./fesm2022/acorex-core-pipes.mjs"
|
|
84
80
|
},
|
|
81
|
+
"./platform": {
|
|
82
|
+
"types": "./platform/index.d.ts",
|
|
83
|
+
"default": "./fesm2022/acorex-core-platform.mjs"
|
|
84
|
+
},
|
|
85
85
|
"./storage": {
|
|
86
86
|
"types": "./storage/index.d.ts",
|
|
87
87
|
"default": "./fesm2022/acorex-core-storage.mjs"
|
package/translation/index.d.ts
CHANGED
|
@@ -23,8 +23,23 @@ interface AXParsedToken {
|
|
|
23
23
|
}
|
|
24
24
|
declare const LOCALE_KEY_REGEX: RegExp;
|
|
25
25
|
type AXMultiLanguageMap = Record<string, string>;
|
|
26
|
+
type AXMultiLanguageString = string | AXMultiLanguageMap;
|
|
26
27
|
declare function resolveMultiLanguageValue(value: AXMultiLanguageMap, locale: string): string;
|
|
27
28
|
declare function isValidMultiLanguageObject(value: unknown): value is AXMultiLanguageMap;
|
|
29
|
+
/**
|
|
30
|
+
* Resolves {@link AXMultiLanguageString} to a single string for the given locale.
|
|
31
|
+
* Fallback order: `currentLocale` → `en-US` → first map value.
|
|
32
|
+
*/
|
|
33
|
+
declare function resolveMultiLanguageString(content: AXMultiLanguageString | null | undefined, currentLocale: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* Creates an {@link AXMultiLanguageMap} with `en-US` and `fa-IR` entries.
|
|
36
|
+
* Use for seed data, tests, and demos that supply English and Persian copy explicitly.
|
|
37
|
+
*/
|
|
38
|
+
declare function createMultiLanguageString(enUs: string, faIr: string): AXMultiLanguageMap;
|
|
39
|
+
/**
|
|
40
|
+
* True when there is no displayable text in any locale (plain string or ML map).
|
|
41
|
+
*/
|
|
42
|
+
declare function isEffectivelyEmptyLocalizedValue(value: unknown): boolean;
|
|
28
43
|
|
|
29
44
|
interface AXTranslationConfig {
|
|
30
45
|
defaults: {
|
|
@@ -111,9 +126,10 @@ declare class AXTranslationService {
|
|
|
111
126
|
}): string;
|
|
112
127
|
private translateValue$;
|
|
113
128
|
private resolveContext;
|
|
129
|
+
isValidMultiLanguageObject(value: unknown): value is AXMultiLanguageMap;
|
|
114
130
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXTranslationService, never>;
|
|
115
131
|
static ɵprov: i0.ɵɵInjectableDeclaration<AXTranslationService>;
|
|
116
132
|
}
|
|
117
133
|
|
|
118
|
-
export { AXTranslationDefaultConfig, AXTranslationLoaderDefault, AXTranslationModule, AXTranslationService, AXTranslatorDirective, AXTranslatorPipe, AX_TRANSLATION_CONFIG, AX_TRANSLATION_LOADER, LOCALE_KEY_REGEX, isValidMultiLanguageObject, loadTranslationScope, resolveMultiLanguageValue, translateSync, translationConfig };
|
|
119
|
-
export type { AXMultiLanguageMap, AXParsedToken, AXPartialTranslationConfig, AXTranslateHashMap, AXTranslateLang, AXTranslateOptions, AXTranslateParams, AXTranslateScope, AXTranslation, AXTranslationConfig, AXTranslationLoader, AXTranslationLoaderOptions };
|
|
134
|
+
export { AXTranslationDefaultConfig, AXTranslationLoaderDefault, AXTranslationModule, AXTranslationService, AXTranslatorDirective, AXTranslatorPipe, AX_TRANSLATION_CONFIG, AX_TRANSLATION_LOADER, LOCALE_KEY_REGEX, createMultiLanguageString, isEffectivelyEmptyLocalizedValue, isValidMultiLanguageObject, loadTranslationScope, resolveMultiLanguageString, resolveMultiLanguageValue, translateSync, translationConfig };
|
|
135
|
+
export type { AXMultiLanguageMap, AXMultiLanguageString, AXParsedToken, AXPartialTranslationConfig, AXTranslateHashMap, AXTranslateLang, AXTranslateOptions, AXTranslateParams, AXTranslateScope, AXTranslation, AXTranslationConfig, AXTranslationLoader, AXTranslationLoaderOptions };
|