@acorex/core 21.0.1-next.6 → 21.0.1-next.61

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 (63) hide show
  1. package/fesm2022/acorex-core-components.mjs +5 -5
  2. package/fesm2022/acorex-core-components.mjs.map +1 -1
  3. package/fesm2022/acorex-core-config.mjs +3 -3
  4. package/fesm2022/acorex-core-config.mjs.map +1 -1
  5. package/fesm2022/acorex-core-constants.mjs +214 -3
  6. package/fesm2022/acorex-core-constants.mjs.map +1 -1
  7. package/fesm2022/acorex-core-date-time.mjs +30 -31
  8. package/fesm2022/acorex-core-date-time.mjs.map +1 -1
  9. package/fesm2022/acorex-core-events.mjs +3 -3
  10. package/fesm2022/acorex-core-events.mjs.map +1 -1
  11. package/fesm2022/acorex-core-file.mjs +10 -10
  12. package/fesm2022/acorex-core-file.mjs.map +1 -1
  13. package/fesm2022/acorex-core-format.mjs +19 -19
  14. package/fesm2022/acorex-core-format.mjs.map +1 -1
  15. package/fesm2022/acorex-core-full-screen.mjs +16 -6
  16. package/fesm2022/acorex-core-full-screen.mjs.map +1 -1
  17. package/fesm2022/acorex-core-icon.mjs +3 -3
  18. package/fesm2022/acorex-core-icon.mjs.map +1 -1
  19. package/fesm2022/acorex-core-image.mjs +3 -3
  20. package/fesm2022/acorex-core-image.mjs.map +1 -1
  21. package/fesm2022/acorex-core-locale.mjs +10 -10
  22. package/fesm2022/acorex-core-locale.mjs.map +1 -1
  23. package/fesm2022/acorex-core-memoize.mjs.map +1 -1
  24. package/fesm2022/acorex-core-network.mjs +3 -3
  25. package/fesm2022/acorex-core-network.mjs.map +1 -1
  26. package/fesm2022/acorex-core-pipes.mjs +3 -3
  27. package/fesm2022/acorex-core-pipes.mjs.map +1 -1
  28. package/fesm2022/acorex-core-platform.mjs +10 -10
  29. package/fesm2022/acorex-core-platform.mjs.map +1 -1
  30. package/fesm2022/acorex-core-storage.mjs +9 -9
  31. package/fesm2022/acorex-core-storage.mjs.map +1 -1
  32. package/fesm2022/acorex-core-translation.mjs +145 -63
  33. package/fesm2022/acorex-core-translation.mjs.map +1 -1
  34. package/fesm2022/acorex-core-utils.mjs +4 -5
  35. package/fesm2022/acorex-core-utils.mjs.map +1 -1
  36. package/fesm2022/acorex-core-validation.mjs +40 -40
  37. package/fesm2022/acorex-core-validation.mjs.map +1 -1
  38. package/fesm2022/acorex-core-z-index.mjs +44 -0
  39. package/fesm2022/acorex-core-z-index.mjs.map +1 -0
  40. package/fesm2022/acorex-core.mjs.map +1 -1
  41. package/package.json +30 -28
  42. package/{components/index.d.ts → types/acorex-core-components.d.ts} +2 -2
  43. package/{constants/index.d.ts → types/acorex-core-constants.d.ts} +2 -1
  44. package/{format/index.d.ts → types/acorex-core-format.d.ts} +2 -2
  45. package/{full-screen/index.d.ts → types/acorex-core-full-screen.d.ts} +5 -0
  46. package/{translation/index.d.ts → types/acorex-core-translation.d.ts} +29 -4
  47. package/{validation/index.d.ts → types/acorex-core-validation.d.ts} +10 -10
  48. package/types/acorex-core-z-index.d.ts +20 -0
  49. package/z-index/README.md +3 -0
  50. /package/{config/index.d.ts → types/acorex-core-config.d.ts} +0 -0
  51. /package/{date-time/index.d.ts → types/acorex-core-date-time.d.ts} +0 -0
  52. /package/{events/index.d.ts → types/acorex-core-events.d.ts} +0 -0
  53. /package/{file/index.d.ts → types/acorex-core-file.d.ts} +0 -0
  54. /package/{icon/index.d.ts → types/acorex-core-icon.d.ts} +0 -0
  55. /package/{image/index.d.ts → types/acorex-core-image.d.ts} +0 -0
  56. /package/{locale/index.d.ts → types/acorex-core-locale.d.ts} +0 -0
  57. /package/{memoize/index.d.ts → types/acorex-core-memoize.d.ts} +0 -0
  58. /package/{network/index.d.ts → types/acorex-core-network.d.ts} +0 -0
  59. /package/{pipes/index.d.ts → types/acorex-core-pipes.d.ts} +0 -0
  60. /package/{platform/index.d.ts → types/acorex-core-platform.d.ts} +0 -0
  61. /package/{storage/index.d.ts → types/acorex-core-storage.d.ts} +0 -0
  62. /package/{utils/index.d.ts → types/acorex-core-utils.d.ts} +0 -0
  63. /package/{index.d.ts → types/acorex-core.d.ts} +0 -0
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, Injectable, TemplateRef, ViewContainerRef, Directive, Pipe, provideAppInitializer, NgModule } from '@angular/core';
3
3
  import { get } from 'lodash-es';
4
- import { of, tap, shareReplay, firstValueFrom, BehaviorSubject, switchMap, from } from 'rxjs';
4
+ import { of, tap, shareReplay, firstValueFrom, BehaviorSubject, distinctUntilChanged, switchMap, from } from 'rxjs';
5
5
  import { AXEventService, AXSystemEvents } from '@acorex/core/events';
6
6
  import { AXLocaleService } from '@acorex/core/locale';
7
7
  import { waitFor } from '@acorex/core/utils';
@@ -157,10 +157,10 @@ class AXTranslationLoaderService {
157
157
  getFallbackScopes(scope) {
158
158
  return this.config.fallbacks?.scopes?.[scope] ?? [];
159
159
  }
160
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslationLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
161
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslationLoaderService, providedIn: 'root' }); }
160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
161
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationLoaderService, providedIn: 'root' }); }
162
162
  }
163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslationLoaderService, decorators: [{
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationLoaderService, decorators: [{
164
164
  type: Injectable,
165
165
  args: [{ providedIn: 'root' }]
166
166
  }] });
@@ -215,36 +215,18 @@ function escapeRegExp(string) {
215
215
  class TranslationResolverService {
216
216
  constructor() {
217
217
  this.loaderService = inject(AXTranslationLoaderService);
218
- this.cache = new Map();
219
- this.inflight = new Map();
220
218
  this.parser = new TranslationParserService();
221
219
  }
222
220
  async resolve(lang, scope, key, params) {
223
- const cacheKey = `${lang}:${scope}`;
224
- // Load and cache if not present
225
- if (!this.cache.has(cacheKey)) {
226
- if (!this.inflight.has(cacheKey)) {
227
- const fetchPromise = firstValueFrom(this.loaderService.load(lang, scope));
228
- this.inflight.set(cacheKey, fetchPromise);
229
- try {
230
- const data = await fetchPromise;
231
- this.cache.set(cacheKey, data);
232
- }
233
- finally {
234
- this.inflight.delete(cacheKey);
235
- }
236
- }
237
- else {
238
- await this.inflight.get(cacheKey);
239
- }
221
+ let result = this.loaderService.peek(lang, scope, key);
222
+ if (result == null) {
223
+ await firstValueFrom(this.loaderService.load(lang, scope));
224
+ result = this.loaderService.peek(lang, scope, key);
240
225
  }
241
- const translations = this.cache.get(cacheKey);
242
- if (!translations) {
243
- console.warn(`Translations not found for ${cacheKey} after attempting to load.`);
226
+ if (result == null) {
244
227
  const unresolvedResult = key;
245
228
  return this.format(unresolvedResult, params);
246
229
  }
247
- let result = get(translations, key, key);
248
230
  // Recursively resolve references
249
231
  if (typeof result === 'string' && this.parser.isExpression(result)) {
250
232
  const tokens = this.parser.parse(result, lang, scope);
@@ -284,6 +266,57 @@ class TranslationResolverService {
284
266
  }
285
267
  }
286
268
 
269
+ const LOCALE_KEY_REGEX = /^(\*-\*|[a-z]{2}-[A-Z]{2})$/;
270
+ function resolveMultiLanguageValue(value, locale) {
271
+ return value[locale] ?? value['en-US'] ?? Object.values(value).find((item) => item != null) ?? '';
272
+ }
273
+ function isValidMultiLanguageObject(value) {
274
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
275
+ return false;
276
+ }
277
+ const entries = Object.entries(value);
278
+ if (!entries.length) {
279
+ return false;
280
+ }
281
+ return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');
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
+ }
319
+
287
320
  let singletonInstance;
288
321
  function translateSync(key, options) {
289
322
  return singletonInstance.translateSync(key, options);
@@ -298,6 +331,7 @@ class AXTranslationService {
298
331
  this.resolver = new TranslationResolverService();
299
332
  this.activeLang = new BehaviorSubject(this.config.defaults.lang);
300
333
  this.langChanges$ = this.activeLang.asObservable();
334
+ this.currentLocale$ = this.langChanges$.pipe(distinctUntilChanged());
301
335
  singletonInstance = this;
302
336
  this.localeService.profileChanged$.subscribe((locale) => {
303
337
  if (locale?.localeInfo?.code) {
@@ -320,37 +354,55 @@ class AXTranslationService {
320
354
  getDefaultLang() {
321
355
  return this.config.defaults.lang;
322
356
  }
323
- translate$(text, options) {
324
- if (!text) {
325
- return of('');
357
+ resolve(value, locale) {
358
+ if (value == null) {
359
+ return '';
326
360
  }
327
- const staticOptions = { ...options };
328
- const staticScope = staticOptions.scope ?? this.config.defaults.scope;
329
- return this.langChanges$.pipe(switchMap((lang) => {
330
- return from(this.translateAsync(text, {
331
- ...staticOptions,
332
- lang: staticOptions.lang ?? lang,
333
- scope: staticScope,
361
+ if (typeof value === 'string') {
362
+ return value;
363
+ }
364
+ if (!isValidMultiLanguageObject(value)) {
365
+ return '';
366
+ }
367
+ return resolveMultiLanguageValue(value, locale ?? this.getActiveLang());
368
+ }
369
+ toLocaleMap(value, activeLocale = this.getActiveLang()) {
370
+ if (isValidMultiLanguageObject(value)) {
371
+ return { ...value };
372
+ }
373
+ return {
374
+ [activeLocale]: typeof value === 'string' ? value : '',
375
+ };
376
+ }
377
+ translate$(value, options) {
378
+ if (isValidMultiLanguageObject(value)) {
379
+ return this.langChanges$.pipe(switchMap((activeLang) => {
380
+ const targetLang = options?.lang ?? activeLang;
381
+ const selectedValue = resolveMultiLanguageValue(value, targetLang);
382
+ const scope = options?.scope ?? this.config.defaults.scope;
383
+ return from(this.translateAsync(selectedValue, {
384
+ ...options,
385
+ lang: targetLang,
386
+ scope,
387
+ }));
334
388
  }));
335
- }), shareReplay({ bufferSize: 1, refCount: true }));
389
+ }
390
+ return this.translateValue$(value, options);
336
391
  }
337
392
  async translateAsync(text, options) {
338
- const lang = options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang;
339
- const scope = options?.scope ?? this.config.defaults.scope;
393
+ const { lang, scope } = this.resolveContext(options);
340
394
  const params = options?.params;
341
395
  if (!this.parser.isExpression(text)) {
342
- const resolved = await this.resolver.resolve(lang, scope, text, params);
343
- return this.resolver.format(resolved, params);
396
+ return this.resolver.resolve(lang, scope, text, params);
344
397
  }
345
398
  const tokens = this.parser.parse(text, lang, scope);
346
399
  const results = await Promise.all(tokens.map((token) => this.resolver
347
400
  .resolve(token.lang ?? lang, token.scope ?? scope, token.key, params)
348
- .then((translated) => [token.fullMatch, this.resolver.format(translated, params)])));
401
+ .then((translated) => [token.fullMatch, translated])));
349
402
  return results.reduce((output, [match, translated]) => output.replace(match, translated), text);
350
403
  }
351
404
  translateSync(text, options) {
352
- const lang = options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang;
353
- const scope = options?.scope ?? this.config.defaults.scope;
405
+ const { lang, scope } = this.resolveContext(options);
354
406
  const params = options?.params;
355
407
  const waitForLoad = options?.waitForLoad ?? false;
356
408
  const timeoutMs = options?.timeoutMs ?? 100;
@@ -376,10 +428,40 @@ class AXTranslationService {
376
428
  }
377
429
  return result;
378
430
  }
379
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
380
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }
431
+ translateValue$(text, options) {
432
+ if (!text) {
433
+ return of('');
434
+ }
435
+ const staticOptions = { ...options };
436
+ const staticScope = staticOptions.scope ?? this.config.defaults.scope;
437
+ return this.langChanges$.pipe(switchMap((lang) => {
438
+ return from(this.translateAsync(text, {
439
+ ...staticOptions,
440
+ lang: staticOptions.lang ?? lang,
441
+ scope: staticScope,
442
+ }));
443
+ }), shareReplay({ bufferSize: 1, refCount: true }));
444
+ }
445
+ resolveContext(options) {
446
+ return {
447
+ lang: options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang,
448
+ scope: options?.scope ?? this.config.defaults.scope,
449
+ };
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
+ }
461
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
462
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }
381
463
  }
382
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslationService, decorators: [{
464
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationService, decorators: [{
383
465
  type: Injectable,
384
466
  args: [{
385
467
  providedIn: 'root',
@@ -413,10 +495,10 @@ class AXTranslatorDirective {
413
495
  this.vc.clear();
414
496
  this.vc.createEmbeddedView(this.templateRef, { $implicit: t });
415
497
  }
416
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
417
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: AXTranslatorDirective, isStandalone: true, selector: "[translate]", ngImport: i0 }); }
498
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
499
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: AXTranslatorDirective, isStandalone: true, selector: "[translate]", ngImport: i0 }); }
418
500
  }
419
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslatorDirective, decorators: [{
501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslatorDirective, decorators: [{
420
502
  type: Directive,
421
503
  args: [{ selector: '[translate]' }]
422
504
  }] });
@@ -425,16 +507,16 @@ class AXTranslatorPipe {
425
507
  constructor() {
426
508
  this.service = inject(AXTranslationService);
427
509
  }
428
- transform(key, options) {
429
- if (!key) {
430
- return of(''); // Return an empty observable if the key is not provided
510
+ transform(value, options) {
511
+ if (!value) {
512
+ return of('');
431
513
  }
432
- return this.service.translate$(key, options);
514
+ return this.service.translate$(value, options);
433
515
  }
434
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
435
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: AXTranslatorPipe, isStandalone: true, name: "translate" }); }
516
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
517
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: AXTranslatorPipe, isStandalone: true, name: "translate" }); }
436
518
  }
437
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslatorPipe, decorators: [{
519
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslatorPipe, decorators: [{
438
520
  type: Pipe,
439
521
  args: [{
440
522
  name: 'translate',
@@ -448,16 +530,16 @@ function initializeApp(translatorService) {
448
530
  };
449
531
  }
450
532
  class AXTranslationModule {
451
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
452
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: AXTranslationModule, imports: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }
453
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslationModule, providers: [
533
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
534
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationModule, imports: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }
535
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationModule, providers: [
454
536
  provideAppInitializer(() => {
455
537
  const initializerFn = initializeApp(inject(AXTranslationLoaderService));
456
538
  return initializerFn();
457
539
  }),
458
540
  ] }); }
459
541
  }
460
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXTranslationModule, decorators: [{
542
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXTranslationModule, decorators: [{
461
543
  type: NgModule,
462
544
  args: [{
463
545
  imports: [AXTranslatorPipe, AXTranslatorDirective],
@@ -475,5 +557,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
475
557
  * Generated bundle index. Do not edit.
476
558
  */
477
559
 
478
- export { AXTranslationDefaultConfig, AXTranslationLoaderDefault, AXTranslationModule, AXTranslationService, AXTranslatorDirective, AXTranslatorPipe, AX_TRANSLATION_CONFIG, AX_TRANSLATION_LOADER, loadTranslationScope, 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 };
479
561
  //# sourceMappingURL=acorex-core-translation.mjs.map