@acorex/core 19.14.0-next.2 → 19.14.0

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.
Files changed (51) hide show
  1. package/date-time/index.d.ts +2 -1
  2. package/date-time/lib/calendar.service.d.ts +1 -1
  3. package/date-time/lib/formatters/date.formatter.d.ts +3 -3
  4. package/date-time/lib/formatters/time-duration.formatter.d.ts +3 -0
  5. package/fesm2022/acorex-core-components.mjs.map +1 -1
  6. package/fesm2022/acorex-core-config.mjs.map +1 -1
  7. package/fesm2022/acorex-core-constants.mjs +1 -16
  8. package/fesm2022/acorex-core-constants.mjs.map +1 -1
  9. package/fesm2022/acorex-core-date-time.mjs +135 -103
  10. package/fesm2022/acorex-core-date-time.mjs.map +1 -1
  11. package/fesm2022/acorex-core-events.mjs.map +1 -1
  12. package/fesm2022/acorex-core-file.mjs.map +1 -1
  13. package/fesm2022/acorex-core-format.mjs +39 -39
  14. package/fesm2022/acorex-core-format.mjs.map +1 -1
  15. package/fesm2022/acorex-core-image.mjs.map +1 -1
  16. package/fesm2022/acorex-core-locale-en-AU.profile-DNjKIaZS.mjs.map +1 -1
  17. package/fesm2022/acorex-core-locale.mjs +110 -110
  18. package/fesm2022/acorex-core-locale.mjs.map +1 -1
  19. package/fesm2022/acorex-core-memoize.mjs.map +1 -1
  20. package/fesm2022/acorex-core-network.mjs +42 -43
  21. package/fesm2022/acorex-core-network.mjs.map +1 -1
  22. package/fesm2022/acorex-core-pipes.mjs.map +1 -1
  23. package/fesm2022/acorex-core-platform.mjs +4 -7
  24. package/fesm2022/acorex-core-platform.mjs.map +1 -1
  25. package/fesm2022/acorex-core-storage.mjs +14 -16
  26. package/fesm2022/acorex-core-storage.mjs.map +1 -1
  27. package/fesm2022/acorex-core-translation.mjs +59 -25
  28. package/fesm2022/acorex-core-translation.mjs.map +1 -1
  29. package/fesm2022/acorex-core-types.mjs +1 -7
  30. package/fesm2022/acorex-core-types.mjs.map +1 -1
  31. package/fesm2022/acorex-core-utils.mjs +120 -115
  32. package/fesm2022/acorex-core-utils.mjs.map +1 -1
  33. package/fesm2022/acorex-core-validation.mjs +12 -8
  34. package/fesm2022/acorex-core-validation.mjs.map +1 -1
  35. package/fesm2022/acorex-core.mjs.map +1 -1
  36. package/format/index.d.ts +1 -1
  37. package/locale/index.d.ts +4 -4
  38. package/locale/lib/locale-profile-provider.service.d.ts +2 -2
  39. package/locale/lib/locale.config.d.ts +1 -1
  40. package/locale/lib/profiles/en-AU.profile.d.ts +1 -1
  41. package/locale/lib/profiles/en-US.profile.d.ts +1 -1
  42. package/locale/lib/profiles/fa-IR.profile.d.ts +1 -1
  43. package/network/index.d.ts +2 -2
  44. package/network/lib/download-task.d.ts +1 -1
  45. package/package.json +1 -1
  46. package/storage/cookie-storage.service.d.ts +2 -2
  47. package/translation/index.d.ts +1 -1
  48. package/translation/lib/translation.parser.d.ts +1 -1
  49. package/translation/lib/translation.resolver.d.ts +1 -1
  50. package/translation/lib/translation.service.d.ts +1 -1
  51. package/utils/index.d.ts +2 -2
@@ -53,22 +53,22 @@ class AXTranslationLoaderService {
53
53
  }
54
54
  load(lang, scope) {
55
55
  const key = `${lang}:${scope}`;
56
- console.log('Attempting to load:', key); // More specific log
56
+ // console.log('Attempting to load:', key); // More specific log
57
57
  // 1. Check cache first
58
58
  if (this.cache.has(key)) {
59
- console.log('Cache hit for:', key);
59
+ // console.log('Cache hit for:', key);
60
60
  return of(this.cache.get(key));
61
61
  }
62
62
  // 2. Check if it's already in-flight
63
63
  if (this.inflight.has(key)) {
64
- console.log('In-flight hit for:', key);
64
+ // console.log('In-flight hit for:', key);
65
65
  return this.inflight.get(key);
66
66
  }
67
67
  // 3. Not in cache, not in-flight: Make the request
68
- console.log('Cache and in-flight miss. Fetching:', key);
68
+ // console.log('Cache and in-flight miss. Fetching:', key);
69
69
  const newObs = this.loader.load({ lang, scope }).pipe(tap({
70
70
  next: (data) => {
71
- console.log('Successfully loaded. Caching:', key);
71
+ // console.log('Successfully loaded. Caching:', key);
72
72
  this.cache.set(key, data);
73
73
  // No need to delete from inflight here, finalize will handle it
74
74
  // or delete it only after caching. If you delete here, and shareReplay
@@ -132,8 +132,11 @@ class AXTranslationLoaderService {
132
132
  console.error(`Failed to preload translations for lang: ${result.lang}, scope: ${result.scope}. Reason:`, result.reason);
133
133
  }
134
134
  else {
135
- console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs
135
+ // console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs
136
136
  }
137
+ // else {
138
+ // console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs
139
+ // }
137
140
  });
138
141
  if (!allSucceeded) {
139
142
  console.error('One or more translation preloads failed. See console for details.');
@@ -188,9 +191,7 @@ class TranslationParserService {
188
191
  let lang = currentLang;
189
192
  if (rawOptions) {
190
193
  try {
191
- const jsonString = rawOptions
192
- .replace(/(['"])?([a-zA-Z0-9_]+)(['"])?\s*:/g, '"$2":')
193
- .replace(/'/g, '"');
194
+ const jsonString = rawOptions.replace(/(['"])?([a-zA-Z0-9_]+)(['"])?\s*:/g, '"$2":').replace(/'/g, '"');
194
195
  const options = JSON.parse(jsonString);
195
196
  scope = options.scope || scope;
196
197
  lang = options.lang || lang;
@@ -205,6 +206,10 @@ class TranslationParserService {
205
206
  }
206
207
  }
207
208
 
209
+ // Helper function to escape special characters for use in a regular expression
210
+ function escapeRegExp(string) {
211
+ return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
212
+ }
208
213
  class TranslationResolverService {
209
214
  constructor() {
210
215
  this.loaderService = inject(AXTranslationLoaderService);
@@ -219,15 +224,24 @@ class TranslationResolverService {
219
224
  if (!this.inflight.has(cacheKey)) {
220
225
  const fetchPromise = firstValueFrom(this.loaderService.load(lang, scope));
221
226
  this.inflight.set(cacheKey, fetchPromise);
222
- const data = await fetchPromise;
223
- this.cache.set(cacheKey, data);
224
- this.inflight.delete(cacheKey);
227
+ try {
228
+ const data = await fetchPromise;
229
+ this.cache.set(cacheKey, data);
230
+ }
231
+ finally {
232
+ this.inflight.delete(cacheKey);
233
+ }
225
234
  }
226
235
  else {
227
- await this.inflight.get(cacheKey); // wait for the inflight fetch
236
+ await this.inflight.get(cacheKey);
228
237
  }
229
238
  }
230
239
  const translations = this.cache.get(cacheKey);
240
+ if (!translations) {
241
+ console.warn(`Translations not found for ${cacheKey} after attempting to load.`);
242
+ const unresolvedResult = key;
243
+ return this.format(unresolvedResult, params);
244
+ }
231
245
  let result = get(translations, key, key);
232
246
  // Recursively resolve references
233
247
  if (typeof result === 'string' && this.parser.isExpression(result)) {
@@ -240,11 +254,30 @@ class TranslationResolverService {
240
254
  return this.format(result, params);
241
255
  }
242
256
  format(text, params) {
243
- if (!params || typeof text !== 'string')
257
+ if (!params || typeof text !== 'string' || Object.keys(params).length === 0) {
244
258
  return text;
245
- return Object.keys(params).reduce((out, key) => {
246
- const re = new RegExp(`{{\s*${key}\s*}}`, 'g');
247
- return out.replace(re, params[key]);
259
+ }
260
+ return Object.keys(params).reduce((currentText, paramKey) => {
261
+ // paramKey is the key from the params object, e.g., "title" or " title "
262
+ const valueToInsert = params[paramKey];
263
+ // 1. Trim the key from the params object to handle potential leading/trailing spaces.
264
+ // e.g., if paramKey is " title ", keyForPattern becomes "title".
265
+ const keyForPattern = paramKey.trim();
266
+ // If trimming results in an empty string, it's not a valid placeholder to replace.
267
+ if (keyForPattern === '') {
268
+ return currentText;
269
+ }
270
+ // 2. Escape the trimmed key to safely use it in a regular expression.
271
+ // This handles cases where the key might contain special regex characters (e.g., "user.name", "item[0]").
272
+ const escapedKey = escapeRegExp(keyForPattern);
273
+ // 3. Construct the RegExp. This will match:
274
+ // - {{KEY}}
275
+ // - {{ KEY }}
276
+ // - {{ KEY }}
277
+ // etc., where KEY is the (trimmed and escaped) paramKey.
278
+ const re = new RegExp(`{{\\s*${escapedKey}\\s*}}`, 'g');
279
+ // 4. Replace occurrences, ensuring the value is a string.
280
+ return currentText.replace(re, String(valueToInsert));
248
281
  }, text);
249
282
  }
250
283
  }
@@ -286,11 +319,11 @@ class AXTranslationService {
286
319
  }
287
320
  const staticOptions = { ...options };
288
321
  const staticScope = staticOptions.scope ?? this.config.defaults.scope;
289
- return this.langChanges$.pipe(switchMap(lang => {
322
+ return this.langChanges$.pipe(switchMap((lang) => {
290
323
  return from(this.translateAsync(text, {
291
324
  ...staticOptions,
292
325
  lang: staticOptions.lang ?? lang,
293
- scope: staticScope
326
+ scope: staticScope,
294
327
  }));
295
328
  }), shareReplay({ bufferSize: 1, refCount: true }));
296
329
  }
@@ -303,8 +336,9 @@ class AXTranslationService {
303
336
  return this.resolver.format(resolved, params);
304
337
  }
305
338
  const tokens = this.parser.parse(text, lang, scope);
306
- const results = await Promise.all(tokens.map(token => this.resolver.resolve(token.lang ?? lang, token.scope ?? scope, token.key, params)
307
- .then(translated => [token.fullMatch, this.resolver.format(translated, params)])));
339
+ const results = await Promise.all(tokens.map((token) => this.resolver
340
+ .resolve(token.lang ?? lang, token.scope ?? scope, token.key, params)
341
+ .then((translated) => [token.fullMatch, this.resolver.format(translated, params)])));
308
342
  return results.reduce((output, [match, translated]) => output.replace(match, translated), text);
309
343
  }
310
344
  translateSync(text, options) {
@@ -328,7 +362,8 @@ class AXTranslationService {
328
362
  const key = token.key;
329
363
  let translation = this.loader.peek(targetLang, targetScope, key);
330
364
  if (!translation) {
331
- translation = waitFor(() => this.loader.peek(targetLang, targetScope, key), () => this.loader.load(targetLang, targetScope).subscribe(), waitForLoad ? timeoutMs : 0) ?? key;
365
+ translation =
366
+ waitFor(() => this.loader.peek(targetLang, targetScope, key), () => this.loader.load(targetLang, targetScope).subscribe(), waitForLoad ? timeoutMs : 0) ?? key;
332
367
  }
333
368
  result = result.replace(token.fullMatch, this.resolver.format(translation, params));
334
369
  }
@@ -340,7 +375,7 @@ class AXTranslationService {
340
375
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXTranslationService, decorators: [{
341
376
  type: Injectable,
342
377
  args: [{
343
- providedIn: 'root'
378
+ providedIn: 'root',
344
379
  }]
345
380
  }], ctorParameters: () => [] });
346
381
 
@@ -364,8 +399,7 @@ class AXTranslatorDirective {
364
399
  const t = (key, opts) => {
365
400
  const id = `${key}|${opts?.lang ?? this.translationService.getActiveLang()}|${opts?.scope ?? 'common'}`;
366
401
  if (!cache.has(id)) {
367
- cache.set(id, this.translationService.translate$(key, opts)
368
- .pipe(shareReplay({ bufferSize: 1, refCount: true })));
402
+ cache.set(id, this.translationService.translate$(key, opts).pipe(shareReplay({ bufferSize: 1, refCount: true })));
369
403
  }
370
404
  return cache.get(id);
371
405
  };
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-translation.mjs","sources":["../../../../libs/core/translation/src/lib/translation.config.ts","../../../../libs/core/translation/src/lib/translation.loader.ts","../../../../libs/core/translation/src/lib/translation-loader.service.ts","../../../../libs/core/translation/src/lib/translation.parser.ts","../../../../libs/core/translation/src/lib/translation.resolver.ts","../../../../libs/core/translation/src/lib/translation.service.ts","../../../../libs/core/translation/src/lib/translation-scope.resolver.ts","../../../../libs/core/translation/src/lib/translator.directive.ts","../../../../libs/core/translation/src/lib/translator.pipe.ts","../../../../libs/core/translation/src/lib/translation.module.ts","../../../../libs/core/translation/src/acorex-core-translation.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AXTranslateLang, AXTranslateScope } from './translation.types';\n\n\nexport interface AXTranslationConfig {\n defaults: {\n lang: AXTranslateLang;\n scope: AXTranslateScope;\n };\n preload?: {\n langs: AXTranslateLang[];\n scopes: AXTranslateScope[];\n };\n fallbacks?: {\n langs?: Record<AXTranslateLang, AXTranslateLang[]>;\n scopes?: Record<AXTranslateScope, AXTranslateScope[]>;\n };\n available?: {\n langs?: AXTranslateLang[];\n scopes?: AXTranslateScope[];\n };\n resolver?: {\n scopeKey: string; // used to extract scope from params, e.g. `scope: 'common'`\n };\n}\n\nexport const AX_TRANSLATION_CONFIG = new InjectionToken<AXTranslationConfig>('AX_TRANSLATION_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXTranslationDefaultConfig;\n },\n});\n\nexport const AXTranslationDefaultConfig: AXTranslationConfig = {\n defaults: {\n lang: 'en-US',\n scope: 'common',\n },\n preload: {\n langs: ['en-US'],\n scopes: ['common'],\n },\n resolver: {\n scopeKey: 'scope',\n },\n};\n\nexport type AXPartialTranslationConfig = Partial<AXTranslationConfig>;\n\nexport function translationConfig(config: AXPartialTranslationConfig = {}): AXTranslationConfig {\n const result = {\n ...AXTranslationDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslateLang, AXTranslateScope, AXTranslation } from './translation.types';\n\nexport interface AXTranslationLoaderOptions {\n lang: AXTranslateLang;\n scope?: AXTranslateScope;\n}\n\nexport interface AXTranslationLoader {\n load(options: AXTranslationLoaderOptions): Observable<AXTranslation>;\n}\n\nexport class AXTranslationLoaderDefault implements AXTranslationLoader {\n load(options: AXTranslationLoaderOptions): Observable<AXTranslation> {\n return of({});\n }\n}\n\nexport const AX_TRANSLATION_LOADER = new InjectionToken<AXTranslationLoader>('AX_TRANSLATION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXTranslationLoaderDefault();\n },\n});\n","import { Injectable, inject } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { Observable, firstValueFrom, of, shareReplay, tap } from 'rxjs';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AX_TRANSLATION_LOADER } from './translation.loader';\nimport { AXTranslateLang, AXTranslateScope, AXTranslation } from './translation.types';\n\n@Injectable({ providedIn: 'root' })\nexport class AXTranslationLoaderService {\n private loader = inject(AX_TRANSLATION_LOADER);\n private config = inject(AX_TRANSLATION_CONFIG);\n\n private cache = new Map<string, AXTranslation>();\n private inflight = new Map<string, Observable<AXTranslation>>();\n\n public load(lang: AXTranslateLang, scope: AXTranslateScope): Observable<AXTranslation> {\n const key = `${lang}:${scope}`;\n console.log('Attempting to load:', key); // More specific log\n\n // 1. Check cache first\n if (this.cache.has(key)) {\n console.log('Cache hit for:', key);\n return of(this.cache.get(key)!);\n }\n\n // 2. Check if it's already in-flight\n if (this.inflight.has(key)) {\n console.log('In-flight hit for:', key);\n return this.inflight.get(key)!;\n }\n\n // 3. Not in cache, not in-flight: Make the request\n console.log('Cache and in-flight miss. Fetching:', key);\n const newObs = this.loader.load({ lang, scope }).pipe(\n tap({\n next: (data) => {\n console.log('Successfully loaded. Caching:', key);\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 },\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 }),\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 );\n\n this.inflight.set(key, newObs); // Store the observable that includes caching and cleanup logic\n return newObs;\n }\n\n public peek(lang: AXTranslateLang, scope: AXTranslateScope, key: string): string | null {\n const cacheKey = `${lang}:${scope}`;\n const data = this.cache.get(cacheKey);\n return get(data, key, null);\n }\n\n public async preload(options?: { langs?: AXTranslateLang[]; scopes?: AXTranslateScope[] }): Promise<void> {\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\n const loadPromises: Promise<\n | { lang: AXTranslateLang; scope: AXTranslateScope; status: 'fulfilled'; value: AXTranslation } // Changed any to AXTranslation\n | { lang: AXTranslateLang; scope: AXTranslateScope; status: 'rejected'; reason: any }\n >[] = [];\n\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' as const, value }))\n .catch((reason) => ({ lang, scope, status: 'rejected' as const, reason }));\n loadPromises.push(loadPromise);\n });\n });\n\n const results = await Promise.all(loadPromises);\n\n let allSucceeded = true;\n results.forEach((result) => {\n if (result.status === 'rejected') {\n allSucceeded = false;\n console.error(\n `Failed to preload translations for lang: ${result.lang}, scope: ${result.scope}. Reason:`,\n result.reason,\n );\n } else {\n console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs\n }\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\n public clear(): void {\n this.cache.clear();\n this.inflight.clear();\n }\n\n public getFallbackLangs(lang: AXTranslateLang): AXTranslateLang[] {\n return this.config.fallbacks?.langs?.[lang] ?? [];\n }\n\n public getFallbackScopes(scope: AXTranslateScope): AXTranslateScope[] {\n return this.config.fallbacks?.scopes?.[scope] ?? [];\n }\n}\n","import { AXParsedToken } from \"./translation.types\";\n\nexport class TranslationParserService {\n private readonly legacyRegex = /t\\([\"']([^\"']+)[\"']\\s*(?:,\\s*(\\{.*?\\}))?\\)/g;\n private readonly inlineRegex = /@([a-zA-Z\\-]+:)?([a-zA-Z0-9_-]+):([a-zA-Z0-9_.:-]+)(?=[\\\\s.,;!?)]|$)/g;\n\n public isExpression(value: string): boolean {\n return typeof value === 'string' && (value.includes('t(') || value.includes('@'));\n }\n\n public parse(expression: string, currentLang: string, currentScope: string): AXParsedToken[] {\n const tokens: AXParsedToken[] = [];\n\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\n tokens.push({ lang: langPart || currentLang, scope, key, fullMatch });\n }\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\n if (rawOptions) {\n try {\n const jsonString = rawOptions\n .replace(/(['\"])?([a-zA-Z0-9_]+)(['\"])?\\s*:/g, '\"$2\":')\n .replace(/'/g, '\"');\n const options = JSON.parse(jsonString);\n scope = options.scope || scope;\n lang = options.lang || lang;\n } catch (err) {\n console.error('Invalid translation expression options:', err);\n }\n }\n\n tokens.push({ key, scope, lang, fullMatch: legacyMatch[0] });\n }\n\n return tokens;\n }\n\n}","import { inject } from '@angular/core';\nimport { AXTranslateLang, AXTranslateScope, AXTranslateParams, AXTranslation } from './translation.types';\nimport { get as lodashGet } from 'lodash-es';\nimport { TranslationParserService } from './translation.parser';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { firstValueFrom } from 'rxjs';\n\nexport class TranslationResolverService {\n private loaderService = inject(AXTranslationLoaderService);\n private cache = new Map<string, AXTranslation>();\n private inflight = new Map<string, Promise<AXTranslation>>();\n private parser = new TranslationParserService();\n\n async resolve(lang: AXTranslateLang, scope: AXTranslateScope, key: string, params?: AXTranslateParams): Promise<string> {\n const cacheKey = `${lang}:${scope}`;\n\n // Load and cache if not present\n if (!this.cache.has(cacheKey)) {\n if (!this.inflight.has(cacheKey)) {\n const fetchPromise = firstValueFrom(this.loaderService.load(lang, scope));\n this.inflight.set(cacheKey, fetchPromise);\n\n const data = await fetchPromise;\n this.cache.set(cacheKey, data);\n this.inflight.delete(cacheKey);\n } else {\n await this.inflight.get(cacheKey); // wait for the inflight fetch\n }\n }\n\n const translations = this.cache.get(cacheKey);\n let result = lodashGet(translations, key, key);\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\n return this.format(result, params);\n }\n\n public format(text: string, params?: AXTranslateParams): string {\n if (!params || typeof text !== 'string') return text;\n\n return Object.keys(params).reduce((out, key) => {\n const re = new RegExp(`{{\\s*${key}\\s*}}`, 'g');\n return out.replace(re, params[key] as string);\n }, text);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { TranslationParserService } from './translation.parser';\nimport { TranslationResolverService } from './translation.resolver';\nimport { AXTranslateLang, AXTranslateOptions } from './translation.types';\nimport { BehaviorSubject, from, Observable, of, shareReplay, switchMap } from 'rxjs';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { waitFor } from '@acorex/core/utils';\n\nlet singletonInstance: AXTranslationService;\n\nexport function translateSync(key: string, options?: AXTranslateOptions): string {\n return singletonInstance.translateSync(key, options);\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXTranslationService {\n private localeService = inject(AXLocaleService);\n private config = inject(AX_TRANSLATION_CONFIG);\n private loader = inject(AXTranslationLoaderService);\n private parser = new TranslationParserService();\n private resolver = new TranslationResolverService();\n private activeLang = new BehaviorSubject<AXTranslateLang>(this.config.defaults.lang);\n public readonly langChanges$ = this.activeLang.asObservable();\n\n constructor() {\n singletonInstance = this;\n this.localeService.profileChanged$.subscribe((locale) => {\n if (locale?.localeInfo?.code) {\n this.setActiveLang(locale.localeInfo.code);\n }\n });\n }\n\n public setActiveLang(lang: AXTranslateLang): void {\n if (lang && lang !== this.activeLang.getValue()) {\n this.activeLang.next(lang);\n }\n }\n\n public getActiveLang(): AXTranslateLang {\n return this.activeLang.getValue();\n }\n\n public getDefaultLang(): AXTranslateLang {\n return this.config.defaults.lang;\n }\n\n\n public translate$(text: string, options?: AXTranslateOptions): Observable<string> {\n if (!text) {\n return of('');\n }\n\n const staticOptions = { ...options };\n const staticScope = staticOptions.scope ?? this.config.defaults.scope;\n\n return this.langChanges$.pipe(\n switchMap(lang => {\n return from(\n this.translateAsync(text, {\n ...staticOptions,\n lang: staticOptions.lang ?? lang,\n scope: staticScope\n })\n );\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n\n async translateAsync(text: string, options?: AXTranslateOptions): Promise<string> {\n const lang = options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang;\n const scope = options?.scope ?? this.config.defaults.scope;\n const params = options?.params;\n\n if (!this.parser.isExpression(text)) {\n const resolved = await this.resolver.resolve(lang, scope, text, params);\n return this.resolver.format(resolved, params);\n }\n\n const tokens = this.parser.parse(text, lang, scope);\n\n const results = await Promise.all(\n tokens.map(token =>\n this.resolver.resolve(token.lang ?? lang, token.scope ?? scope, token.key, params)\n .then(translated => [token.fullMatch, this.resolver.format(translated, params)])\n )\n );\n\n return results.reduce((output, [match, translated]) => output.replace(match, translated), text);\n }\n\n public translateSync(\n text: string,\n options?: AXTranslateOptions & { waitForLoad?: boolean; timeoutMs?: number }\n ): string {\n const lang = options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang;\n const scope = options?.scope ?? this.config.defaults.scope;\n const params = options?.params;\n const waitForLoad = options?.waitForLoad ?? false;\n const timeoutMs = options?.timeoutMs ?? 100;\n\n if (!this.parser.isExpression(text)) {\n let translated = this.loader.peek(lang, scope, text);\n\n if (!translated && waitForLoad) {\n translated = waitFor(\n () => this.loader.peek(lang, scope, text),\n () => this.loader.load(lang, scope).subscribe(),\n timeoutMs\n );\n }\n\n return this.resolver.format(translated ?? text, params);\n }\n\n const tokens = this.parser.parse(text, lang, scope);\n let result = text;\n\n for (const token of tokens) {\n const targetLang = token.lang ?? lang;\n const targetScope = token.scope ?? scope;\n const key = token.key;\n\n let translation = this.loader.peek(targetLang, targetScope, key);\n\n if (!translation) {\n translation = waitFor(\n () => this.loader.peek(targetLang, targetScope, key),\n () => this.loader.load(targetLang, targetScope).subscribe(),\n waitForLoad ? timeoutMs : 0\n ) ?? key;\n }\n\n result = result.replace(token.fullMatch, this.resolver.format(translation, params));\n }\n\n return result;\n }\n}\n","import { inject } from '@angular/core';\nimport { ResolveFn } from '@angular/router';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AXTranslationService } from './translation.service';\n\nexport const loadTranslationScope: ResolveFn<unknown> = (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","import { Directive, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AXTranslationService } from './translation.service';\nimport { AXTranslateOptions } from './translation.types';\nimport { Observable, shareReplay } from 'rxjs';\n@Directive({ selector: '[translate]' })\nexport class AXTranslatorDirective implements OnInit {\n\n\n constructor(\n private templateRef: TemplateRef<any>,\n private vc: ViewContainerRef,\n private translationService: AXTranslationService,\n ) { }\n\n\n\n ngOnInit() {\n const cache = new Map<string, Observable<string>>();\n\n const t = (key: string, opts?: AXTranslateOptions) => {\n const id = `${key}|${opts?.lang ?? this.translationService.getActiveLang()}|${opts?.scope ?? 'common'}`;\n if (!cache.has(id)) {\n cache.set(\n id,\n this.translationService.translate$(key, opts)\n .pipe(shareReplay({ bufferSize: 1, refCount: true }))\n );\n }\n return cache.get(id)!;\n };\n\n\n\n this.vc.clear();\n this.vc.createEmbeddedView(this.templateRef, { $implicit: t });\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslateOptions } from './translation.types';\nimport { AXTranslationService } from './translation.service';\n\n@Pipe({\n name: 'translate',\n pure: true,\n}) // The pipe can now be pure\nexport class AXTranslatorPipe implements PipeTransform {\n private service = inject(AXTranslationService);\n\n transform(key: string, options?: AXTranslateOptions): Observable<string> {\n if (!key) {\n return of(''); // Return an empty observable if the key is not provided\n }\n return this.service.translate$(key, options);\n }\n}\n","import { NgModule, inject, provideAppInitializer } from '@angular/core';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AXTranslatorDirective } from './translator.directive';\nimport { AXTranslatorPipe } from './translator.pipe';\n\nfunction initializeApp(translatorService: AXTranslationLoaderService) {\n return (): Promise<void> => {\n return translatorService.preload();\n };\n}\n\n@NgModule({\n imports: [AXTranslatorPipe, AXTranslatorDirective],\n exports: [AXTranslatorPipe, AXTranslatorDirective],\n providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationLoaderService));\n return initializerFn();\n }),\n ],\n})\nexport class AXTranslationModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["lodashGet","i1.AXTranslationService"],"mappings":";;;;;;;MA0Ba,qBAAqB,GAAG,IAAI,cAAc,CAAsB,uBAAuB,EAAE;AACpG,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAK;AACZ,QAAA,OAAO,0BAA0B;KAClC;AACF,CAAA;AAEY,MAAA,0BAA0B,GAAwB;AAC7D,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,KAAK,EAAE,QAAQ;AAChB,KAAA;AACD,IAAA,OAAO,EAAE;QACP,KAAK,EAAE,CAAC,OAAO,CAAC;QAChB,MAAM,EAAE,CAAC,QAAQ,CAAC;AACnB,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE,OAAO;AAClB,KAAA;;AAKa,SAAA,iBAAiB,CAAC,MAAA,GAAqC,EAAE,EAAA;AACvE,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,GAAG,0BAA0B;AAC7B,QAAA,GAAG,MAAM;KACV;AACD,IAAA,OAAO,MAAM;AACf;;MC1Ca,0BAA0B,CAAA;AACrC,IAAA,IAAI,CAAC,OAAmC,EAAA;AACtC,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC;;AAEhB;MAEY,qBAAqB,GAAG,IAAI,cAAc,CAAsB,uBAAuB,EAAE;AACpG,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAK;QACZ,OAAO,IAAI,0BAA0B,EAAE;KACxC;AACF,CAAA;;MChBY,0BAA0B,CAAA;AADvC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACtC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAEtC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAyB;AACxC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAqC;AA6HhE;IA3HQ,IAAI,CAAC,IAAqB,EAAE,KAAuB,EAAA;AACxD,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAI,CAAA,EAAA,KAAK,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;;QAGxC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACvB,YAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC;YAClC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;;;QAIjC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC1B,YAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC;YACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE;;;AAIhC,QAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,GAAG,CAAC;AACvD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CACnD,GAAG,CAAC;AACF,YAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACb,gBAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,GAAG,CAAC;gBACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;;;;;;;;aAQ1B;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;gBACb,OAAO,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,GAAG,CAAG,CAAA,CAAA,EAAE,GAAG,CAAC;;AAE3C,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;aAC1B;;;;;;;;AAQF,SAAA,CAAC,EACF,WAAW,CAAC,CAAC,CAAC;AACd,QAAA,GAAG,CAAC;;;YAGF,IAAI,EAAE,MAAK;;;;;;AAMT,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;aAC1B;;AAEF,SAAA,CAAC,CACH;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC/B,QAAA,OAAO,MAAM;;AAGR,IAAA,IAAI,CAAC,IAAqB,EAAE,KAAuB,EAAE,GAAW,EAAA;AACrE,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAI,CAAA,EAAA,KAAK,EAAE;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QACrC,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;;IAGtB,MAAM,OAAO,CAAC,OAAoE,EAAA;AACvF,QAAA,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7G,QAAA,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAEjH,MAAM,YAAY,GAGZ,EAAE;AAER,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC3B,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC7B,gBAAA,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,qBAAA,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAoB,EAAE,KAAK,EAAE,CAAC;qBACtE,KAAK,CAAC,CAAC,MAAM,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;AAC5E,gBAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,aAAC,CAAC;AACJ,SAAC,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAE/C,IAAI,YAAY,GAAG,IAAI;AACvB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;gBAChC,YAAY,GAAG,KAAK;AACpB,gBAAA,OAAO,CAAC,KAAK,CACX,CAA4C,yCAAA,EAAA,MAAM,CAAC,IAAI,CAAA,SAAA,EAAY,MAAM,CAAC,KAAK,CAAW,SAAA,CAAA,EAC1F,MAAM,CAAC,MAAM,CACd;;iBACI;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAA,6BAAA,EAAgC,MAAM,CAAC,IAAI,CAAY,SAAA,EAAA,MAAM,CAAC,KAAK,CAAA,CAAE,CAAC,CAAC;;AAEvF,SAAC,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC;;;;;;IAO/E,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;;AAGhB,IAAA,gBAAgB,CAAC,IAAqB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE;;AAG5C,IAAA,iBAAiB,CAAC,KAAuB,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE;;+GAhI1C,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADb,MAAM,EAAA,CAAA,CAAA;;4FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCLrB,wBAAwB,CAAA;AAArC,IAAA,WAAA,GAAA;QACqB,IAAW,CAAA,WAAA,GAAG,6CAA6C;QAC3D,IAAW,CAAA,WAAA,GAAG,uEAAuE;;AAE/F,IAAA,YAAY,CAAC,KAAa,EAAA;QAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;;AAG9E,IAAA,KAAK,CAAC,UAAkB,EAAE,WAAmB,EAAE,YAAoB,EAAA;QACtE,MAAM,MAAM,GAAoB,EAAE;;AAGlC,QAAA,IAAI,WAAW;AACf,QAAA,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE;AAC/D,YAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI;YACzD,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,YAAY;AAC5C,YAAA,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC;AAC1B,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC;AAEhC,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,IAAI,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;;;AAIzE,QAAA,IAAI,WAAW;AACf,QAAA,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE;AAC/D,YAAA,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC;AAC1B,YAAA,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC;YACjC,IAAI,KAAK,GAAG,YAAY;YACxB,IAAI,IAAI,GAAG,WAAW;YAEtB,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI;oBACA,MAAM,UAAU,GAAG;AACd,yBAAA,OAAO,CAAC,oCAAoC,EAAE,OAAO;AACrD,yBAAA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;oBACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACtC,oBAAA,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK;AAC9B,oBAAA,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI;;gBAC7B,OAAO,GAAG,EAAE;AACV,oBAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC;;;AAIrE,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;;AAGhE,QAAA,OAAO,MAAM;;AAGpB;;MC5CY,0BAA0B,CAAA;AAAvC,IAAA,WAAA,GAAA;AACY,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAClD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAyB;AACxC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAkC;AACpD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,wBAAwB,EAAE;;IAE/C,MAAM,OAAO,CAAC,IAAqB,EAAE,KAAuB,EAAE,GAAW,EAAE,MAA0B,EAAA;AACjG,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAI,CAAA,EAAA,KAAK,EAAE;;QAGnC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC9B,gBAAA,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC;AAEzC,gBAAA,MAAM,IAAI,GAAG,MAAM,YAAY;gBAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;;iBAC3B;gBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;;QAI1C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC7C,IAAI,MAAM,GAAGA,GAAS,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;;AAG9C,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAChE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;AACrD,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;gBACvB,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;;;QAIhG,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;IAG/B,MAAM,CAAC,IAAY,EAAE,MAA0B,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,YAAA,OAAO,IAAI;AAEpD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;YAC3C,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAQ,KAAA,EAAA,GAAG,CAAO,KAAA,CAAA,EAAE,GAAG,CAAC;YAC9C,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAW,CAAC;SAChD,EAAE,IAAI,CAAC;;AAEf;;AC3CD,IAAI,iBAAuC;AAE3B,SAAA,aAAa,CAAC,GAAW,EAAE,OAA4B,EAAA;IACnE,OAAO,iBAAiB,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;AACxD;MAKa,oBAAoB,CAAA;AAS7B,IAAA,WAAA,GAAA;AARQ,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACvC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACtC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC3C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,wBAAwB,EAAE;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,0BAA0B,EAAE;AAC3C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAkB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACpE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;QAGzD,iBAAiB,GAAG,IAAI;QACxB,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACpD,YAAA,IAAI,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;;AAElD,SAAC,CAAC;;AAGC,IAAA,aAAa,CAAC,IAAqB,EAAA;QACtC,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE;AAC7C,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;;IAI3B,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;IAG9B,cAAc,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;;IAI7B,UAAU,CAAC,IAAY,EAAE,OAA4B,EAAA;QACxD,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC;;AAGjB,QAAA,MAAM,aAAa,GAAG,EAAE,GAAG,OAAO,EAAE;AACpC,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;QAErE,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CACzB,SAAS,CAAC,IAAI,IAAG;AACb,YAAA,OAAO,IAAI,CACP,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AACtB,gBAAA,GAAG,aAAa;AAChB,gBAAA,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,IAAI;AAChC,gBAAA,KAAK,EAAE;AACV,aAAA,CAAC,CACL;AACL,SAAC,CAAC,EACF,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CACjD;;AAGL,IAAA,MAAM,cAAc,CAAC,IAAY,EAAE,OAA4B,EAAA;AAC3D,QAAA,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;AAC/E,QAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;AAC1D,QAAA,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;QAE9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACjC,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC;YACvE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;;AAGjD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;AAEnD,QAAA,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,MAAM,CAAC,GAAG,CAAC,KAAK,IACZ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM;aAC5E,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CACvF,CACJ;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC;;IAG5F,aAAa,CAChB,IAAY,EACZ,OAA4E,EAAA;AAE5E,QAAA,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;AAC/E,QAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;AAC1D,QAAA,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;AAC9B,QAAA,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,KAAK;AACjD,QAAA,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,GAAG;QAE3C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACjC,YAAA,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AAEpD,YAAA,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE;AAC5B,gBAAA,UAAU,GAAG,OAAO,CAChB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EACzC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,EAC/C,SAAS,CACZ;;AAGL,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,MAAM,CAAC;;AAG3D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;QACnD,IAAI,MAAM,GAAG,IAAI;AAEjB,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxB,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI;AACrC,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK;AACxC,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;AAErB,YAAA,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC;YAEhE,IAAI,CAAC,WAAW,EAAE;gBACd,WAAW,GAAG,OAAO,CACjB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,EACpD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,SAAS,EAAE,EAC3D,WAAW,GAAG,SAAS,GAAG,CAAC,CAC9B,IAAI,GAAG;;YAGZ,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;;AAGvF,QAAA,OAAO,MAAM;;+GA1HR,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFjB,MAAM,EAAA,CAAA,CAAA;;4FAET,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCZY,oBAAoB,GAAuB,CAAC,KAAK,EAAE,KAAK,KAAI;AACvE,IAAA,MAAM,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC;AACnE,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACvD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC5C,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxD,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC;AACpE,IAAA,OAAO,wBAAwB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAClG;;MCRa,qBAAqB,CAAA;AAGhC,IAAA,WAAA,CACU,WAA6B,EAC7B,EAAoB,EACpB,kBAAwC,EAAA;QAFxC,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;;IAK5B,QAAQ,GAAA;AACN,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8B;AAEnD,QAAA,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,IAAyB,KAAI;YACnD,MAAM,EAAE,GAAG,CAAG,EAAA,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAI,CAAA,EAAA,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAA,CAAE;YACvG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAClB,gBAAA,KAAK,CAAC,GAAG,CACP,EAAE,EACF,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI;AACzC,qBAAA,IAAI,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CACxD;;AAEH,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE;AACvB,SAAC;AAID,QAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AACf,QAAA,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;;+GA7BrD,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;mBAAC,EAAE,QAAQ,EAAE,aAAa,EAAE;;;MCKzB,gBAAgB,CAAA;AAJ7B,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAQ/C;IANC,SAAS,CAAC,GAAW,EAAE,OAA4B,EAAA;QACjD,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;;QAEhB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;;+GAPnC,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;;;ACHD,SAAS,aAAa,CAAC,iBAA6C,EAAA;AAClE,IAAA,OAAO,MAAoB;AACzB,QAAA,OAAO,iBAAiB,CAAC,OAAO,EAAE;AACpC,KAAC;AACH;MAYa,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YATpB,gBAAgB,EAAE,qBAAqB,CACvC,EAAA,OAAA,EAAA,CAAA,gBAAgB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAQtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAPnB,SAAA,EAAA;YACT,qBAAqB,CAAC,MAAK;gBACzB,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBACvE,OAAO,aAAa,EAAE;AACxB,aAAC,CAAC;AACH,SAAA,EAAA,CAAA,CAAA;;4FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;AAClD,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;AAClD,oBAAA,SAAS,EAAE;wBACT,qBAAqB,CAAC,MAAK;4BACzB,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;4BACvE,OAAO,aAAa,EAAE;AACxB,yBAAC,CAAC;AACH,qBAAA;AACF,iBAAA;;;ACpBD;;AAEG;;;;"}
1
+ {"version":3,"file":"acorex-core-translation.mjs","sources":["../../../../packages/core/translation/src/lib/translation.config.ts","../../../../packages/core/translation/src/lib/translation.loader.ts","../../../../packages/core/translation/src/lib/translation-loader.service.ts","../../../../packages/core/translation/src/lib/translation.parser.ts","../../../../packages/core/translation/src/lib/translation.resolver.ts","../../../../packages/core/translation/src/lib/translation.service.ts","../../../../packages/core/translation/src/lib/translation-scope.resolver.ts","../../../../packages/core/translation/src/lib/translator.directive.ts","../../../../packages/core/translation/src/lib/translator.pipe.ts","../../../../packages/core/translation/src/lib/translation.module.ts","../../../../packages/core/translation/src/acorex-core-translation.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AXTranslateLang, AXTranslateScope } from './translation.types';\n\nexport interface AXTranslationConfig {\n defaults: {\n lang: AXTranslateLang;\n scope: AXTranslateScope;\n };\n preload?: {\n langs: AXTranslateLang[];\n scopes: AXTranslateScope[];\n };\n fallbacks?: {\n langs?: Record<AXTranslateLang, AXTranslateLang[]>;\n scopes?: Record<AXTranslateScope, AXTranslateScope[]>;\n };\n available?: {\n langs?: AXTranslateLang[];\n scopes?: AXTranslateScope[];\n };\n resolver?: {\n scopeKey: string; // used to extract scope from params, e.g. `scope: 'common'`\n };\n}\n\nexport const AX_TRANSLATION_CONFIG = new InjectionToken<AXTranslationConfig>('AX_TRANSLATION_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXTranslationDefaultConfig;\n },\n});\n\nexport const AXTranslationDefaultConfig: AXTranslationConfig = {\n defaults: {\n lang: 'en-US',\n scope: 'common',\n },\n preload: {\n langs: ['en-US'],\n scopes: ['common'],\n },\n resolver: {\n scopeKey: 'scope',\n },\n};\n\nexport type AXPartialTranslationConfig = Partial<AXTranslationConfig>;\n\nexport function translationConfig(config: AXPartialTranslationConfig = {}): AXTranslationConfig {\n const result = {\n ...AXTranslationDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslateLang, AXTranslateScope, AXTranslation } from './translation.types';\n\nexport interface AXTranslationLoaderOptions {\n lang: AXTranslateLang;\n scope?: AXTranslateScope;\n}\n\nexport interface AXTranslationLoader {\n load(options: AXTranslationLoaderOptions): Observable<AXTranslation>;\n}\n\nexport class AXTranslationLoaderDefault implements AXTranslationLoader {\n load(options: AXTranslationLoaderOptions): Observable<AXTranslation> {\n return of({});\n }\n}\n\nexport const AX_TRANSLATION_LOADER = new InjectionToken<AXTranslationLoader>('AX_TRANSLATION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXTranslationLoaderDefault();\n },\n});\n","import { Injectable, inject } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { Observable, firstValueFrom, of, shareReplay, tap } from 'rxjs';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AX_TRANSLATION_LOADER } from './translation.loader';\nimport { AXTranslateLang, AXTranslateScope, AXTranslation } from './translation.types';\n\n@Injectable({ providedIn: 'root' })\nexport class AXTranslationLoaderService {\n private loader = inject(AX_TRANSLATION_LOADER);\n private config = inject(AX_TRANSLATION_CONFIG);\n\n private cache = new Map<string, AXTranslation>();\n private inflight = new Map<string, Observable<AXTranslation>>();\n\n public load(lang: AXTranslateLang, scope: AXTranslateScope): Observable<AXTranslation> {\n const key = `${lang}:${scope}`;\n // console.log('Attempting to load:', key); // More specific log\n\n // 1. Check cache first\n if (this.cache.has(key)) {\n // console.log('Cache hit for:', key);\n return of(this.cache.get(key)!);\n }\n\n // 2. Check if it's already in-flight\n if (this.inflight.has(key)) {\n // console.log('In-flight hit for:', key);\n return this.inflight.get(key)!;\n }\n\n // 3. Not in cache, not in-flight: Make the request\n // console.log('Cache and in-flight miss. Fetching:', key);\n const newObs = this.loader.load({ lang, scope }).pipe(\n tap({\n next: (data) => {\n // console.log('Successfully loaded. Caching:', key);\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 },\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 }),\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 );\n\n this.inflight.set(key, newObs); // Store the observable that includes caching and cleanup logic\n return newObs;\n }\n\n public peek(lang: AXTranslateLang, scope: AXTranslateScope, key: string): string | null {\n const cacheKey = `${lang}:${scope}`;\n const data = this.cache.get(cacheKey);\n return get(data, key, null);\n }\n\n public async preload(options?: { langs?: AXTranslateLang[]; scopes?: AXTranslateScope[] }): Promise<void> {\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\n const loadPromises: Promise<\n | { lang: AXTranslateLang; scope: AXTranslateScope; status: 'fulfilled'; value: AXTranslation } // Changed any to AXTranslation\n | { lang: AXTranslateLang; scope: AXTranslateScope; status: 'rejected'; reason: any }\n >[] = [];\n\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' as const, value }))\n .catch((reason) => ({ lang, scope, status: 'rejected' as const, reason }));\n loadPromises.push(loadPromise);\n });\n });\n\n const results = await Promise.all(loadPromises);\n\n let allSucceeded = true;\n results.forEach((result) => {\n if (result.status === 'rejected') {\n allSucceeded = false;\n console.error(\n `Failed to preload translations for lang: ${result.lang}, scope: ${result.scope}. Reason:`,\n 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\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\n public clear(): void {\n this.cache.clear();\n this.inflight.clear();\n }\n\n public getFallbackLangs(lang: AXTranslateLang): AXTranslateLang[] {\n return this.config.fallbacks?.langs?.[lang] ?? [];\n }\n\n public getFallbackScopes(scope: AXTranslateScope): AXTranslateScope[] {\n return this.config.fallbacks?.scopes?.[scope] ?? [];\n }\n}\n","import { AXParsedToken } from './translation.types';\n\nexport class TranslationParserService {\n private readonly legacyRegex = /t\\([\"']([^\"']+)[\"']\\s*(?:,\\s*(\\{.*?\\}))?\\)/g;\n private readonly inlineRegex = /@([a-zA-Z\\-]+:)?([a-zA-Z0-9_-]+):([a-zA-Z0-9_.:-]+)(?=[\\\\s.,;!?)]|$)/g;\n\n public isExpression(value: string): boolean {\n return typeof value === 'string' && (value.includes('t(') || value.includes('@'));\n }\n\n public parse(expression: string, currentLang: string, currentScope: string): AXParsedToken[] {\n const tokens: AXParsedToken[] = [];\n\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\n tokens.push({ lang: langPart || currentLang, scope, key, fullMatch });\n }\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\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 } catch (err) {\n console.error('Invalid translation expression options:', err);\n }\n }\n\n tokens.push({ key, scope, lang, fullMatch: legacyMatch[0] });\n }\n\n return tokens;\n }\n}\n","import { inject } from '@angular/core';\nimport { get as lodashGet } from 'lodash-es';\nimport { firstValueFrom } from 'rxjs';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { TranslationParserService } from './translation.parser';\nimport { AXTranslateLang, AXTranslateParams, AXTranslateScope, AXTranslation } from './translation.types';\n\n// Helper function to escape special characters for use in a regular expression\nfunction escapeRegExp(string: string): string {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nexport class TranslationResolverService {\n private loaderService = inject(AXTranslationLoaderService);\n private cache = new Map<string, AXTranslation>();\n private inflight = new Map<string, Promise<AXTranslation>>();\n private parser = new TranslationParserService();\n\n async resolve(\n lang: AXTranslateLang,\n scope: AXTranslateScope,\n key: string,\n params?: AXTranslateParams,\n ): Promise<string> {\n const cacheKey = `${lang}:${scope}`;\n\n // Load and cache if not present\n if (!this.cache.has(cacheKey)) {\n if (!this.inflight.has(cacheKey)) {\n const fetchPromise = firstValueFrom(this.loaderService.load(lang, scope));\n this.inflight.set(cacheKey, fetchPromise);\n try {\n const data = await fetchPromise;\n this.cache.set(cacheKey, data);\n } finally {\n this.inflight.delete(cacheKey);\n }\n } else {\n await this.inflight.get(cacheKey);\n }\n }\n\n const translations = this.cache.get(cacheKey);\n if (!translations) {\n console.warn(`Translations not found for ${cacheKey} after attempting to load.`);\n const unresolvedResult = key;\n return this.format(unresolvedResult, params);\n }\n let result = lodashGet(translations, key, key);\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\n return this.format(result, params);\n }\n\n public format(text: string, params?: AXTranslateParams): string {\n if (!params || typeof text !== 'string' || Object.keys(params).length === 0) {\n return text;\n }\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\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\n // If trimming results in an empty string, it's not a valid placeholder to replace.\n if (keyForPattern === '') {\n return currentText;\n }\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\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\n // 4. Replace occurrences, ensuring the value is a string.\n return currentText.replace(re, String(valueToInsert));\n }, text);\n }\n}\n","import { AXLocaleService } from '@acorex/core/locale';\nimport { waitFor } from '@acorex/core/utils';\nimport { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, from, Observable, 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 { AXTranslateLang, AXTranslateOptions } from './translation.types';\n\nlet singletonInstance: AXTranslationService;\n\nexport function translateSync(key: string, options?: AXTranslateOptions): string {\n return singletonInstance.translateSync(key, options);\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXTranslationService {\n private localeService = inject(AXLocaleService);\n private config = inject(AX_TRANSLATION_CONFIG);\n private loader = inject(AXTranslationLoaderService);\n private parser = new TranslationParserService();\n private resolver = new TranslationResolverService();\n private activeLang = new BehaviorSubject<AXTranslateLang>(this.config.defaults.lang);\n public readonly langChanges$ = this.activeLang.asObservable();\n\n constructor() {\n singletonInstance = this;\n this.localeService.profileChanged$.subscribe((locale) => {\n if (locale?.localeInfo?.code) {\n this.setActiveLang(locale.localeInfo.code);\n }\n });\n }\n\n public setActiveLang(lang: AXTranslateLang): void {\n if (lang && lang !== this.activeLang.getValue()) {\n this.activeLang.next(lang);\n }\n }\n\n public getActiveLang(): AXTranslateLang {\n return this.activeLang.getValue();\n }\n\n public getDefaultLang(): AXTranslateLang {\n return this.config.defaults.lang;\n }\n\n public translate$(text: string, options?: AXTranslateOptions): Observable<string> {\n if (!text) {\n return of('');\n }\n\n const staticOptions = { ...options };\n const staticScope = staticOptions.scope ?? this.config.defaults.scope;\n\n return this.langChanges$.pipe(\n switchMap((lang) => {\n return from(\n this.translateAsync(text, {\n ...staticOptions,\n lang: staticOptions.lang ?? lang,\n scope: staticScope,\n }),\n );\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n async translateAsync(text: string, options?: AXTranslateOptions): Promise<string> {\n const lang = options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang;\n const scope = options?.scope ?? this.config.defaults.scope;\n const params = options?.params;\n\n if (!this.parser.isExpression(text)) {\n const resolved = await this.resolver.resolve(lang, scope, text, params);\n return this.resolver.format(resolved, params);\n }\n\n const tokens = this.parser.parse(text, lang, scope);\n\n const results = await Promise.all(\n tokens.map((token) =>\n this.resolver\n .resolve(token.lang ?? lang, token.scope ?? scope, token.key, params)\n .then((translated) => [token.fullMatch, this.resolver.format(translated, params)]),\n ),\n );\n\n return results.reduce((output, [match, translated]) => output.replace(match, translated), text);\n }\n\n public translateSync(\n text: string,\n options?: AXTranslateOptions & { waitForLoad?: boolean; timeoutMs?: number },\n ): string {\n const lang = options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang;\n const scope = options?.scope ?? this.config.defaults.scope;\n const params = options?.params;\n const waitForLoad = options?.waitForLoad ?? false;\n const timeoutMs = options?.timeoutMs ?? 100;\n\n if (!this.parser.isExpression(text)) {\n let translated = this.loader.peek(lang, scope, text);\n\n if (!translated && waitForLoad) {\n translated = waitFor(\n () => this.loader.peek(lang, scope, text),\n () => this.loader.load(lang, scope).subscribe(),\n timeoutMs,\n );\n }\n\n return this.resolver.format(translated ?? text, params);\n }\n\n const tokens = this.parser.parse(text, lang, scope);\n let result = text;\n\n for (const token of tokens) {\n const targetLang = token.lang ?? lang;\n const targetScope = token.scope ?? scope;\n const key = token.key;\n\n let translation = this.loader.peek(targetLang, targetScope, key);\n\n if (!translation) {\n translation =\n waitFor(\n () => this.loader.peek(targetLang, targetScope, key),\n () => this.loader.load(targetLang, targetScope).subscribe(),\n waitForLoad ? timeoutMs : 0,\n ) ?? key;\n }\n\n result = result.replace(token.fullMatch, this.resolver.format(translation, params));\n }\n\n return result;\n }\n}\n","import { inject } from '@angular/core';\nimport { ResolveFn } from '@angular/router';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationService } from './translation.service';\n\nexport const loadTranslationScope: ResolveFn<unknown> = (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","import { Directive, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Observable, shareReplay } from 'rxjs';\nimport { AXTranslationService } from './translation.service';\nimport { AXTranslateOptions } from './translation.types';\n@Directive({ selector: '[translate]' })\nexport class AXTranslatorDirective implements OnInit {\n constructor(\n private templateRef: TemplateRef<any>,\n private vc: ViewContainerRef,\n private translationService: AXTranslationService,\n ) {}\n\n ngOnInit() {\n const cache = new Map<string, Observable<string>>();\n\n const t = (key: string, opts?: AXTranslateOptions) => {\n const id = `${key}|${opts?.lang ?? this.translationService.getActiveLang()}|${opts?.scope ?? 'common'}`;\n if (!cache.has(id)) {\n cache.set(\n id,\n this.translationService.translate$(key, opts).pipe(shareReplay({ bufferSize: 1, refCount: true })),\n );\n }\n return cache.get(id)!;\n };\n\n this.vc.clear();\n this.vc.createEmbeddedView(this.templateRef, { $implicit: t });\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslationService } from './translation.service';\nimport { AXTranslateOptions } from './translation.types';\n\n@Pipe({\n name: 'translate',\n pure: true,\n}) // The pipe can now be pure\nexport class AXTranslatorPipe implements PipeTransform {\n private service = inject(AXTranslationService);\n\n transform(key: string, options?: AXTranslateOptions): Observable<string> {\n if (!key) {\n return of(''); // Return an empty observable if the key is not provided\n }\n return this.service.translate$(key, options);\n }\n}\n","import { NgModule, inject, provideAppInitializer } from '@angular/core';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AXTranslatorDirective } from './translator.directive';\nimport { AXTranslatorPipe } from './translator.pipe';\n\nfunction initializeApp(translatorService: AXTranslationLoaderService) {\n return (): Promise<void> => {\n return translatorService.preload();\n };\n}\n\n@NgModule({\n imports: [AXTranslatorPipe, AXTranslatorDirective],\n exports: [AXTranslatorPipe, AXTranslatorDirective],\n providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationLoaderService));\n return initializerFn();\n }),\n ],\n})\nexport class AXTranslationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["lodashGet","i1.AXTranslationService"],"mappings":"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"}
@@ -206,13 +206,7 @@ const AX_PLACEMENT_MAP = {
206
206
  },
207
207
  'bottom-start': {
208
208
  origin: AX_PLACEMENT_BOTTOM_START,
209
- alts: [
210
- AX_PLACEMENT_BOTTOM_END,
211
- AX_PLACEMENT_TOP_START,
212
- AX_PLACEMENT_TOP_END,
213
- AX_PLACEMENT_START,
214
- AX_PLACEMENT_END,
215
- ],
209
+ alts: [AX_PLACEMENT_BOTTOM_END, AX_PLACEMENT_TOP_START, AX_PLACEMENT_TOP_END, AX_PLACEMENT_START, AX_PLACEMENT_END],
216
210
  },
217
211
  'bottom-end': {
218
212
  origin: AX_PLACEMENT_BOTTOM_END,
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-types.mjs","sources":["../../../../libs/core/types/src/lib/events.ts","../../../../libs/core/types/src/lib/placement.ts","../../../../libs/core/types/src/acorex-core-types.ts"],"sourcesContent":["/**\n * Contains native event\n * @category Events\n */\nexport class AXEvent {\n /**\n * The sender component\n */\n component: any;\n /**\n * The root native element\n */\n htmlElement?: HTMLElement;\n\n isUserInteraction?: boolean = false;\n}\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXHtmlEvent<E extends Event = Event> extends AXEvent {\n nativeEvent?: E;\n}\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXValueChangedEvent<T = any> extends AXEvent {\n name?: string;\n value?: T;\n oldValue?: T;\n}\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXOptionChangedEvent<T = any> extends AXEvent {\n name?: string;\n newValue?: T;\n oldValue?: T;\n}\n\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class AXClickEvent extends AXHtmlEvent<MouseEvent> {\n /**\n * uses for extra data\n */\n data?: any = null;\n\n override nativeEvent?: any = null;\n}\n\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class AXButtonClickEvent extends AXClickEvent {\n name: string;\n}\n\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class AXItemClickEvent<T = any> extends AXClickEvent {\n name?: string;\n item: T;\n}\n\n/**\n * Fires each time the component gets focused.\n * @category Events\n */\nexport class AXFocusEvent extends AXHtmlEvent<FocusEvent> {}\n\n/**\n * Fires each time an item or multiple items selected by the user or value.\n * @category Events\n */\nexport class AXSelectionValueChangedEvent extends AXValueChangedEvent<any | any[]> {\n override value?: any = null;\n override oldValue?: any = null;\n selectedKeys?: any[] = [];\n selectedItems?: any[] = [];\n}\n\n/**\n * Contains range start & end values\n * @category Events\n */\nexport class AXRangeChangedEvent<T> extends AXEvent {\n /**\n * The range start value\n */\n start?: T;\n /**\n * The range end value\n */\n end?: T;\n}\n","import { clone, flatten } from 'lodash-es';\n\nconst defaultOffset = 3;\n\nexport type AXPlacement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'end'\n | 'end-top'\n | 'end-bottom'\n | 'start'\n | 'start-top'\n | 'start-bottom';\nexport type AXPlacementType = AXConnectedPosition | AXConnectedPosition[] | AXPlacement | AXPlacement[];\n\nexport function convertToPlacement(value: AXPlacementType): AXConnectedPosition[] {\n const result: AXConnectedPosition[] = [];\n if (value == null) return result;\n if (Array.isArray(value)) {\n const list = flatten(value.map((m) => convertToPlacement(m)).filter((m) => m != null)).map((m) =>\n clone(m),\n );\n result.push(...list);\n } else {\n if (typeof value === 'string') {\n const p = AX_PLACEMENT_MAP[value];\n if (p) {\n result.push(...[clone(p.origin), ...clone(p.alts)]);\n }\n } else {\n if ('originX' in value && 'originY' in value) {\n result.push(clone(value));\n }\n }\n }\n return result;\n}\n\nexport interface AXConnectedPosition {\n originX: 'start' | 'center' | 'end';\n originY: 'top' | 'center' | 'bottom';\n overlayX: 'start' | 'center' | 'end';\n overlayY: 'top' | 'center' | 'bottom';\n weight?: number;\n offsetX?: number;\n offsetY?: number;\n}\n\nexport const AX_PLACEMENT_TOP: AXConnectedPosition = {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -defaultOffset,\n};\n\nexport const AX_PLACEMENT_TOP_START: AXConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -defaultOffset,\n};\nexport const AX_PLACEMENT_TOP_END: AXConnectedPosition = {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -defaultOffset,\n};\n\nexport const AX_PLACEMENT_BOTTOM: AXConnectedPosition = {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: defaultOffset,\n};\n\nexport const AX_PLACEMENT_BOTTOM_START: AXConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: defaultOffset,\n};\n\nexport const AX_PLACEMENT_BOTTOM_END: AXConnectedPosition = {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: defaultOffset,\n};\n\nexport const AX_PLACEMENT_START: AXConnectedPosition = {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -defaultOffset,\n};\n\nexport const AX_PLACEMENT_START_TOP: AXConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -defaultOffset,\n};\n\nexport const AX_PLACEMENT_START_BOTTOM: AXConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: -defaultOffset,\n};\n\nexport const AX_PLACEMENT_END: AXConnectedPosition = {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: defaultOffset,\n};\n\nexport const AX_PLACEMENT_END_TOP: AXConnectedPosition = {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: defaultOffset,\n};\n\nexport const AX_PLACEMENT_END_BOTTOM: AXConnectedPosition = {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: defaultOffset,\n};\n\nexport const AX_PLACEMENT_MAP: {\n [key: string]: { origin: AXConnectedPosition; alts?: AXConnectedPosition[] };\n} = {\n top: {\n origin: AX_PLACEMENT_TOP,\n alts: [AX_PLACEMENT_BOTTOM],\n },\n 'top-start': {\n origin: AX_PLACEMENT_TOP_START,\n alts: [AX_PLACEMENT_BOTTOM_START],\n },\n 'top-end': {\n origin: AX_PLACEMENT_TOP_END,\n alts: [AX_PLACEMENT_BOTTOM_END],\n },\n bottom: {\n origin: AX_PLACEMENT_BOTTOM,\n alts: [AX_PLACEMENT_BOTTOM],\n },\n 'bottom-start': {\n origin: AX_PLACEMENT_BOTTOM_START,\n alts: [\n AX_PLACEMENT_BOTTOM_END,\n AX_PLACEMENT_TOP_START,\n AX_PLACEMENT_TOP_END,\n AX_PLACEMENT_START,\n AX_PLACEMENT_END,\n ],\n },\n 'bottom-end': {\n origin: AX_PLACEMENT_BOTTOM_END,\n alts: [AX_PLACEMENT_TOP_END],\n },\n end: {\n origin: AX_PLACEMENT_END,\n alts: [AX_PLACEMENT_START],\n },\n 'end-top': {\n origin: AX_PLACEMENT_END_TOP,\n alts: [AX_PLACEMENT_END_BOTTOM, AX_PLACEMENT_START_TOP, AX_PLACEMENT_START_BOTTOM],\n },\n 'end-bottom': {\n origin: AX_PLACEMENT_END_BOTTOM,\n alts: [AX_PLACEMENT_END_TOP, AX_PLACEMENT_START_BOTTOM, AX_PLACEMENT_START_TOP],\n },\n start: {\n origin: AX_PLACEMENT_START,\n alts: [AX_PLACEMENT_END],\n },\n 'start-top': {\n origin: AX_PLACEMENT_START_TOP,\n alts: [AX_PLACEMENT_START_BOTTOM, AX_PLACEMENT_END_TOP, AX_PLACEMENT_END_BOTTOM],\n },\n 'start-bottom': {\n origin: AX_PLACEMENT_START_BOTTOM,\n alts: [AX_PLACEMENT_START_TOP, AX_PLACEMENT_END_BOTTOM, AX_PLACEMENT_END_TOP],\n },\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-core-types.mjs","sources":["../../../../packages/core/types/src/lib/events.ts","../../../../packages/core/types/src/lib/placement.ts","../../../../packages/core/types/src/acorex-core-types.ts"],"sourcesContent":["/**\n * Contains native event\n * @category Events\n */\nexport class AXEvent {\n /**\n * The sender component\n */\n component: any;\n /**\n * The root native element\n */\n htmlElement?: HTMLElement;\n\n isUserInteraction?: boolean = false;\n}\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXHtmlEvent<E extends Event = Event> extends AXEvent {\n nativeEvent?: E;\n}\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXValueChangedEvent<T = any> extends AXEvent {\n name?: string;\n value?: T;\n oldValue?: T;\n}\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXOptionChangedEvent<T = any> extends AXEvent {\n name?: string;\n newValue?: T;\n oldValue?: T;\n}\n\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class AXClickEvent extends AXHtmlEvent<MouseEvent> {\n /**\n * uses for extra data\n */\n data?: any = null;\n\n override nativeEvent?: any = null;\n}\n\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class AXButtonClickEvent extends AXClickEvent {\n name: string;\n}\n\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class AXItemClickEvent<T = any> extends AXClickEvent {\n name?: string;\n item: T;\n}\n\n/**\n * Fires each time the component gets focused.\n * @category Events\n */\nexport class AXFocusEvent extends AXHtmlEvent<FocusEvent> {}\n\n/**\n * Fires each time an item or multiple items selected by the user or value.\n * @category Events\n */\nexport class AXSelectionValueChangedEvent extends AXValueChangedEvent<any | any[]> {\n override value?: any = null;\n override oldValue?: any = null;\n selectedKeys?: any[] = [];\n selectedItems?: any[] = [];\n}\n\n/**\n * Contains range start & end values\n * @category Events\n */\nexport class AXRangeChangedEvent<T> extends AXEvent {\n /**\n * The range start value\n */\n start?: T;\n /**\n * The range end value\n */\n end?: T;\n}\n","import { clone, flatten } from 'lodash-es';\n\nconst defaultOffset = 3;\n\nexport type AXPlacement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'end'\n | 'end-top'\n | 'end-bottom'\n | 'start'\n | 'start-top'\n | 'start-bottom';\nexport type AXPlacementType = AXConnectedPosition | AXConnectedPosition[] | AXPlacement | AXPlacement[];\n\nexport function convertToPlacement(value: AXPlacementType): AXConnectedPosition[] {\n const result: AXConnectedPosition[] = [];\n if (value == null) return result;\n if (Array.isArray(value)) {\n const list = flatten(value.map((m) => convertToPlacement(m)).filter((m) => m != null)).map((m) => clone(m));\n result.push(...list);\n } else {\n if (typeof value === 'string') {\n const p = AX_PLACEMENT_MAP[value];\n if (p) {\n result.push(...[clone(p.origin), ...clone(p.alts)]);\n }\n } else {\n if ('originX' in value && 'originY' in value) {\n result.push(clone(value));\n }\n }\n }\n return result;\n}\n\nexport interface AXConnectedPosition {\n originX: 'start' | 'center' | 'end';\n originY: 'top' | 'center' | 'bottom';\n overlayX: 'start' | 'center' | 'end';\n overlayY: 'top' | 'center' | 'bottom';\n weight?: number;\n offsetX?: number;\n offsetY?: number;\n}\n\nexport const AX_PLACEMENT_TOP: AXConnectedPosition = {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -defaultOffset,\n};\n\nexport const AX_PLACEMENT_TOP_START: AXConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -defaultOffset,\n};\nexport const AX_PLACEMENT_TOP_END: AXConnectedPosition = {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -defaultOffset,\n};\n\nexport const AX_PLACEMENT_BOTTOM: AXConnectedPosition = {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: defaultOffset,\n};\n\nexport const AX_PLACEMENT_BOTTOM_START: AXConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: defaultOffset,\n};\n\nexport const AX_PLACEMENT_BOTTOM_END: AXConnectedPosition = {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: defaultOffset,\n};\n\nexport const AX_PLACEMENT_START: AXConnectedPosition = {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -defaultOffset,\n};\n\nexport const AX_PLACEMENT_START_TOP: AXConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -defaultOffset,\n};\n\nexport const AX_PLACEMENT_START_BOTTOM: AXConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: -defaultOffset,\n};\n\nexport const AX_PLACEMENT_END: AXConnectedPosition = {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: defaultOffset,\n};\n\nexport const AX_PLACEMENT_END_TOP: AXConnectedPosition = {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: defaultOffset,\n};\n\nexport const AX_PLACEMENT_END_BOTTOM: AXConnectedPosition = {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: defaultOffset,\n};\n\nexport const AX_PLACEMENT_MAP: {\n [key: string]: { origin: AXConnectedPosition; alts?: AXConnectedPosition[] };\n} = {\n top: {\n origin: AX_PLACEMENT_TOP,\n alts: [AX_PLACEMENT_BOTTOM],\n },\n 'top-start': {\n origin: AX_PLACEMENT_TOP_START,\n alts: [AX_PLACEMENT_BOTTOM_START],\n },\n 'top-end': {\n origin: AX_PLACEMENT_TOP_END,\n alts: [AX_PLACEMENT_BOTTOM_END],\n },\n bottom: {\n origin: AX_PLACEMENT_BOTTOM,\n alts: [AX_PLACEMENT_BOTTOM],\n },\n 'bottom-start': {\n origin: AX_PLACEMENT_BOTTOM_START,\n alts: [AX_PLACEMENT_BOTTOM_END, AX_PLACEMENT_TOP_START, AX_PLACEMENT_TOP_END, AX_PLACEMENT_START, AX_PLACEMENT_END],\n },\n 'bottom-end': {\n origin: AX_PLACEMENT_BOTTOM_END,\n alts: [AX_PLACEMENT_TOP_END],\n },\n end: {\n origin: AX_PLACEMENT_END,\n alts: [AX_PLACEMENT_START],\n },\n 'end-top': {\n origin: AX_PLACEMENT_END_TOP,\n alts: [AX_PLACEMENT_END_BOTTOM, AX_PLACEMENT_START_TOP, AX_PLACEMENT_START_BOTTOM],\n },\n 'end-bottom': {\n origin: AX_PLACEMENT_END_BOTTOM,\n alts: [AX_PLACEMENT_END_TOP, AX_PLACEMENT_START_BOTTOM, AX_PLACEMENT_START_TOP],\n },\n start: {\n origin: AX_PLACEMENT_START,\n alts: [AX_PLACEMENT_END],\n },\n 'start-top': {\n origin: AX_PLACEMENT_START_TOP,\n alts: [AX_PLACEMENT_START_BOTTOM, AX_PLACEMENT_END_TOP, AX_PLACEMENT_END_BOTTOM],\n },\n 'start-bottom': {\n origin: AX_PLACEMENT_START_BOTTOM,\n alts: [AX_PLACEMENT_START_TOP, AX_PLACEMENT_END_BOTTOM, AX_PLACEMENT_END_TOP],\n },\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}