@acorex/core 20.6.22 → 20.6.24

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.
@@ -1,6 +1,7 @@
1
1
  import { isPlatformBrowser } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { signal, inject, DOCUMENT, PLATFORM_ID, Injectable } from '@angular/core';
4
+ import { AXEventService, AXSystemEvents } from '@acorex/core/events';
4
5
  import { Subject, BehaviorSubject, fromEvent } from 'rxjs';
5
6
  import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
6
7
 
@@ -103,6 +104,23 @@ class AXPlatform {
103
104
  }
104
105
  return false;
105
106
  }
107
+ get documentDirection() {
108
+ if (!isPlatformBrowser(this.platformID)) {
109
+ return 'ltr';
110
+ }
111
+ const dir = (this.document.documentElement.getAttribute('dir') ||
112
+ this.document.body.getAttribute('dir') ||
113
+ this.document.dir ||
114
+ this.document.body.style.direction ||
115
+ 'ltr');
116
+ return dir.toLowerCase() === 'rtl' ? 'rtl' : 'ltr';
117
+ }
118
+ get documentLanguage() {
119
+ if (!isPlatformBrowser(this.platformID)) {
120
+ return 'en-US';
121
+ }
122
+ return this.document.documentElement.getAttribute('lang') || this.document.body.getAttribute('lang') || 'en-US';
123
+ }
106
124
  isLandscape() {
107
125
  if (isPlatformBrowser(this.platformID)) {
108
126
  return window.innerHeight < window.innerWidth;
@@ -207,6 +225,68 @@ class AXPlatform {
207
225
  break;
208
226
  }
209
227
  }
228
+ /**
229
+ * Sets document direction (dir="ltr|rtl") and persists it.
230
+ */
231
+ setDirection(dir) {
232
+ if (!isPlatformBrowser(this.platformID)) {
233
+ return;
234
+ }
235
+ const normalized = dir === 'rtl' ? 'rtl' : 'ltr';
236
+ this.document.documentElement.setAttribute('dir', normalized);
237
+ this.document.body.setAttribute('dir', normalized);
238
+ this.document.body.style.direction = normalized;
239
+ localStorage.setItem('AX_DIRECTION', normalized);
240
+ this.direction$.next(normalized);
241
+ this.direction.set(normalized);
242
+ }
243
+ toggleDirection() {
244
+ const next = this.documentDirection === 'rtl' ? 'ltr' : 'rtl';
245
+ this.setDirection(next);
246
+ return next;
247
+ }
248
+ /**
249
+ * Sets document language (lang="<bcp47>") and optionally direction, then persists it.
250
+ */
251
+ setLanguage(lang, options) {
252
+ if (!isPlatformBrowser(this.platformID)) {
253
+ return;
254
+ }
255
+ const normalizedLang = (lang || 'en-US').trim();
256
+ this.document.documentElement.setAttribute('lang', normalizedLang);
257
+ this.document.body.setAttribute('lang', normalizedLang);
258
+ localStorage.setItem('AX_LANGUAGE', normalizedLang);
259
+ this.language$.next(normalizedLang);
260
+ this.language.set(normalizedLang);
261
+ const dir = options?.dir ?? this.#inferDirectionFromLanguage(normalizedLang);
262
+ this.setDirection(dir);
263
+ }
264
+ autoDetectLanguage() {
265
+ if (!isPlatformBrowser(this.platformID)) {
266
+ return this.documentLanguage;
267
+ }
268
+ const lang = localStorage.getItem('AX_LANGUAGE') || this.documentLanguage || 'en-US';
269
+ this.setLanguage(lang, { dir: this.#inferDirectionFromLanguage(lang) });
270
+ return lang;
271
+ }
272
+ autoDetectDirection() {
273
+ if (!isPlatformBrowser(this.platformID)) {
274
+ return this.documentDirection;
275
+ }
276
+ const dir = localStorage.getItem('AX_DIRECTION') || this.documentDirection || 'ltr';
277
+ this.setDirection(dir);
278
+ return dir;
279
+ }
280
+ #inferDirectionFromLanguage(lang) {
281
+ const normalized = lang.toLowerCase();
282
+ if (normalized.startsWith('fa') ||
283
+ normalized.startsWith('ar') ||
284
+ normalized.startsWith('he') ||
285
+ normalized.startsWith('ur')) {
286
+ return 'rtl';
287
+ }
288
+ return 'ltr';
289
+ }
210
290
  setFullHeightRatio() {
211
291
  if (isPlatformBrowser(this.platformID)) {
212
292
  try {
@@ -237,12 +317,18 @@ class AXPlatform {
237
317
  constructor() {
238
318
  this.resize = new Subject();
239
319
  this.directionChange = new Subject();
320
+ this.languageChange = new Subject();
240
321
  this.click = new Subject();
241
322
  this.scroll = new Subject();
242
323
  this.themeMode$ = new BehaviorSubject('system');
243
324
  this.themeMode = signal('system', ...(ngDevMode ? [{ debugName: "themeMode" }] : []));
325
+ this.direction$ = new BehaviorSubject('ltr');
326
+ this.direction = signal('ltr', ...(ngDevMode ? [{ debugName: "direction" }] : []));
327
+ this.language$ = new BehaviorSubject('en-US');
328
+ this.language = signal('en-US', ...(ngDevMode ? [{ debugName: "language" }] : []));
244
329
  this.document = inject(DOCUMENT);
245
330
  this.platformID = inject(PLATFORM_ID);
331
+ this.eventService = inject(AXEventService);
246
332
  if (isPlatformBrowser(this.platformID)) {
247
333
  this.detectDarkMode();
248
334
  this.detectOnResize();
@@ -250,8 +336,19 @@ class AXPlatform {
250
336
  this.detectScrollEvent();
251
337
  this.setFullHeightRatio();
252
338
  this.detectDocumentDirectionChange();
339
+ this.autoDetectLanguage();
340
+ this.autoDetectDirection();
341
+ this.detectLanguageChangeFromSystemEvents();
253
342
  }
254
343
  }
344
+ detectLanguageChangeFromSystemEvents() {
345
+ this.eventService.onEvent.subscribe((e) => {
346
+ if (e.type === AXSystemEvents.AXLanguageChanged && typeof e.payload === 'string') {
347
+ // Keep platform/document state in sync with translation module language changes
348
+ this.setLanguage(e.payload);
349
+ }
350
+ });
351
+ }
255
352
  detectDarkMode() {
256
353
  if (isPlatformBrowser(this.platformID)) {
257
354
  // fromEvent(UIEvent)(window,'')
@@ -304,8 +401,17 @@ class AXPlatform {
304
401
  mutations.forEach((mutation) => {
305
402
  // Detect Direction Change
306
403
  if (mutation.attributeName === 'dir') {
307
- const dir = this.document.documentElement.getAttribute('dir');
308
- this.directionChange.next({ source: this, nativeEvent: null, data: dir });
404
+ const dir = (this.document.documentElement.getAttribute('dir') || 'ltr');
405
+ const normalized = dir.toLowerCase() === 'rtl' ? 'rtl' : 'ltr';
406
+ this.direction$.next(normalized);
407
+ this.direction.set(normalized);
408
+ this.directionChange.next({ source: this, nativeEvent: null, data: normalized });
409
+ }
410
+ if (mutation.attributeName === 'lang') {
411
+ const lang = this.document.documentElement.getAttribute('lang') || 'en-US';
412
+ this.language$.next(lang);
413
+ this.language.set(lang);
414
+ this.languageChange.next({ source: this, nativeEvent: null, data: lang });
309
415
  }
310
416
  });
311
417
  });
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-platform.mjs","sources":["../tmp-esm2022/platform/lib/platform.service.js","../tmp-esm2022/platform/acorex-core-platform.js"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport { BehaviorSubject, fromEvent, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nexport const isChrome = (win) => testUserAgent(win, /Chrome/i);\nexport const isFirefox = (win) => testUserAgent(win, /Firefox/i);\nexport const isEdge = (win) => testUserAgent(win, /Edge/i);\nexport const isSafari = (win) => testUserAgent(win, /Safari/i);\nexport const isOpera = (win) => testUserAgent(win, /Opera/i) || testUserAgent(win, /OPR/i);\nexport const isMSIE = (win) => testUserAgent(win, /MSIE/i) || testUserAgent(win, /Trident/i);\nexport const isMobileWeb = (win) => isMobile(win) && !isHybrid(win);\nexport const isIpad = (win) => {\n // iOS 12 and below\n if (testUserAgent(win, /iPad/i)) {\n return true;\n }\n // iOS 13+\n if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {\n return true;\n }\n return false;\n};\nexport const isIphone = (win) => testUserAgent(win, /iPhone/i);\nexport const isIOS = (win) => testUserAgent(win, /iPhone|iPod/i) || isIpad(win);\nexport const isAndroid = (win) => testUserAgent(win, /android|sink/i);\nexport const isAndroidTablet = (win) => {\n return isAndroid(win) && !testUserAgent(win, /mobile/i);\n};\nexport const isPhablet = (win) => {\n const width = win.innerWidth;\n const height = win.innerHeight;\n const smallest = Math.min(width, height);\n const largest = Math.max(width, height);\n return smallest > 390 && smallest < 520 && largest > 620 && largest < 800;\n};\nexport const isTablet = (win) => {\n const width = win.innerWidth;\n const height = win.innerHeight;\n const smallest = Math.min(width, height);\n const largest = Math.max(width, height);\n return isIpad(win) || isAndroidTablet(win) || (smallest > 460 && smallest < 820 && largest > 780 && largest < 1400);\n};\nexport const isMobile = (win) => matchMedia(win, '(any-pointer:coarse)');\nexport const isTouch = (win) => matchMedia(win, '(any-pointer:coarse)');\nexport const isDesktop = (win) => !isMobile(win);\nexport const isHybrid = (win) => isCordova(win) || isCapacitorNative(win);\nexport const isCordova = (win) => !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);\nexport const isCapacitorNative = (win) => {\n const capacitor = win['Capacitor'];\n return !!(capacitor && capacitor.isNative);\n};\nexport const isElectron = (win) => testUserAgent(win, /electron/i);\nexport const isPWA = (win) => !!(win.matchMedia('(display-mode: standalone)').matches || win.navigator.standalone);\nexport const testUserAgent = (win, expr) => expr.test(win.navigator.userAgent);\nexport const isBrowser = new Function('try {return this===window;}catch(e){ return false;}');\nexport const isServer = new Function('try {return this===global;}catch(e){return false;}');\nexport const matchMedia = (win, query) => {\n return win.matchMedia(query).matches;\n};\nexport const isSMScreen = (win) => matchMedia(win, '(max-width: 640px)');\nexport const isMDScreen = (win) => matchMedia(win, '(max-width: 768px)');\nexport const isLGScreen = (win) => matchMedia(win, '(max-width: 1024px)');\nexport const isXLScreen = (win) => matchMedia(win, '(max-width: 1280px)');\nexport const is2XLScreen = (win) => matchMedia(win, '(max-width: 1536px)');\nexport const is3XLScreen = (win) => matchMedia(win, '(max-width: 1920px)');\nexport const is4XLScreen = (win) => matchMedia(win, '(max-width: 2560px)');\nexport const PLATFORMS_MAP = {\n Android: isAndroid,\n iOS: isIOS,\n Desktop: isDesktop,\n Mobile: isMobile,\n Touch: isTouch,\n Chrome: isChrome,\n Firefox: isFirefox,\n Safari: isSafari,\n Edge: isEdge,\n Opera: isOpera,\n Hybrid: isHybrid,\n PWA: isPWA,\n Electron: isElectron,\n SM: isSMScreen,\n MD: isMDScreen,\n LG: isLGScreen,\n XL: isXLScreen,\n '2XL': is2XLScreen,\n '3XL': is3XLScreen,\n '4XL': is4XLScreen,\n};\nexport class AXPlatformEvent {\n}\nexport class AXPlatform {\n isDark() {\n if (isPlatformBrowser(this.platformID)) {\n return this.document.documentElement.classList.contains('ax-dark');\n }\n return false;\n }\n isRtl() {\n if (isPlatformBrowser(this.platformID)) {\n return (this.document.dir == 'rtl' || this.document.body.dir == 'rtl' || this.document.body.style.direction == 'rtl');\n }\n return false;\n }\n isLandscape() {\n if (isPlatformBrowser(this.platformID)) {\n return window.innerHeight < window.innerWidth;\n }\n return true;\n }\n isPortrate() {\n return !this.isLandscape();\n }\n /**\n * Checks whether the current environment matches the given platform/browser/technology/screen size keyword.\n *\n * @param name - One of AXPlatforms | AXBrowsers | AXTechnologies | AXScreenSizes.\n */\n is(name) {\n if (isPlatformBrowser(this.platformID)) {\n return PLATFORMS_MAP[name](window) || false;\n }\n else {\n return false;\n }\n }\n get screenSize() {\n return (['SM', 'MD', 'LG', 'XL', '2XL', '3XL', '4XL'].find((name) => PLATFORMS_MAP[name](window) == true) ||\n '5XL');\n }\n /**\n * Switches to light mode and persists it.\n * @returns 'light'\n */\n switchLightMode() {\n if (isPlatformBrowser(this.platformID)) {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.remove('ax-dark');\n }\n this.#setSystemTheme('light');\n return 'light';\n }\n /**\n * Switches to dark mode and persists it.\n * @returns 'dark'\n */\n switchDarkMode() {\n if (isPlatformBrowser(this.platformID)) {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.add('ax-dark');\n }\n this.#setSystemTheme('dark');\n return 'dark';\n }\n switchSystemMode() {\n if (isPlatformBrowser(this.platformID)) {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.add('ax-dark');\n this.#setSystemTheme('system-dark');\n }\n else {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.remove('ax-dark');\n this.#setSystemTheme('system-light');\n }\n }\n }\n #setSystemTheme(themeMode) {\n this.themeMode$.next(themeMode);\n localStorage.setItem('AX_THEME_MODE', themeMode);\n this.themeMode.set(themeMode);\n }\n /**\n * Reads persisted theme preference and applies it (returns the effective mode).\n * @returns AXThemeMode\n */\n autoDetectThemeMode() {\n const mode = localStorage.getItem('AX_THEME_MODE') || 'system';\n switch (mode) {\n case 'light':\n this.switchLightMode();\n return 'light';\n case 'dark':\n this.switchDarkMode();\n return 'dark';\n default:\n this.switchSystemMode();\n return 'system';\n }\n }\n /**\n * Sets theme mode explicitly and persists it.\n * @param mode - Desired theme mode.\n */\n setThemeMode(mode) {\n switch (mode) {\n case 'light':\n this.switchLightMode();\n break;\n case 'dark':\n this.switchDarkMode();\n break;\n default:\n this.switchSystemMode();\n break;\n }\n }\n setFullHeightRatio() {\n if (isPlatformBrowser(this.platformID)) {\n try {\n this.document\n .querySelector(':root')\n ?.style.setProperty('--ax-vh', window.innerHeight / 100 + 'px');\n }\n catch (error) {\n console.error(error);\n }\n }\n }\n autoSystemModeDetection(event) {\n if (this.themeMode() === 'system') {\n const themeMode = event.matches ? 'dark' : 'light';\n if (isPlatformBrowser(this.platformID)) {\n if (themeMode === 'dark') {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.add('ax-dark');\n }\n else {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.remove('ax-dark');\n }\n }\n }\n }\n constructor() {\n this.resize = new Subject();\n this.directionChange = new Subject();\n this.click = new Subject();\n this.scroll = new Subject();\n this.themeMode$ = new BehaviorSubject('system');\n this.themeMode = signal('system', ...(ngDevMode ? [{ debugName: \"themeMode\" }] : []));\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n if (isPlatformBrowser(this.platformID)) {\n this.detectDarkMode();\n this.detectOnResize();\n this.detectClickEvent();\n this.detectScrollEvent();\n this.setFullHeightRatio();\n this.detectDocumentDirectionChange();\n }\n }\n detectDarkMode() {\n if (isPlatformBrowser(this.platformID)) {\n // fromEvent(UIEvent)(window,'')\n if (window?.matchMedia('(prefers-color-scheme: dark)').matches) {\n window?.matchMedia('(prefers-color-scheme: dark)')?.addEventListener('change', (event) => {\n // Detect System color mode\n this.autoSystemModeDetection(event);\n });\n }\n }\n }\n detectOnResize() {\n if (isPlatformBrowser(this.platformID)) {\n fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .pipe(distinctUntilChanged())\n .subscribe((e) => {\n this.resize.next({\n nativeEvent: e,\n source: this,\n });\n //\n this.setFullHeightRatio();\n });\n }\n }\n detectClickEvent() {\n if (isPlatformBrowser(this.platformID)) {\n this.document.addEventListener('click', (e) => {\n this.click.next({\n nativeEvent: e,\n source: this,\n });\n }, true);\n }\n }\n detectScrollEvent() {\n if (isPlatformBrowser(this.platformID)) {\n this.document.addEventListener('scroll', (e) => {\n this.scroll.next({\n nativeEvent: e,\n source: this,\n });\n }, true);\n }\n }\n detectDocumentDirectionChange() {\n if (isPlatformBrowser(this.platformID)) {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n // Detect Direction Change\n if (mutation.attributeName === 'dir') {\n const dir = this.document.documentElement.getAttribute('dir');\n this.directionChange.next({ source: this, nativeEvent: null, data: dir });\n }\n });\n });\n observer.observe(document.documentElement, {\n attributes: true,\n childList: false,\n characterData: false,\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXPlatform, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXPlatform, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXPlatform, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcGxhdGZvcm0vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBU3BFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUVoRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFXLEVBQVcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFFbEYsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRTVFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUVoRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFXLEVBQVcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQUksYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUU1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IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERPQ1VNRU5ULCBpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBBWFRoZW1lTW9kZSA9ICdsaWdodCcgfCAnZGFyaycgfCAnc3lzdGVtJyB8ICdzeXN0ZW0tZGFyaycgfCAnc3lzdGVtLWxpZ2h0JztcbmV4cG9ydCB0eXBlIEFYUGxhdGZvcm1zID0gJ0FuZHJvaWQnIHwgJ0Rlc2t0b3AnIHwgJ2lPUycgfCAnTW9iaWxlJztcbmV4cG9ydCB0eXBlIEFYQnJvd3NlcnMgPSAnQ2hyb21lJyB8ICdTYWZhcmknIHwgJ0VkZ2UnIHwgJ0ZpcmVmb3gnIHwgJ09wZXJhJyB8ICdNU0lFJztcbmV4cG9ydCB0eXBlIEFYVGVjaG5vbG9naWVzID0gJ1BXQScgfCAnSHlicmlkJyB8ICdFbGVjdHJvbic7XG5cbmV4cG9ydCB0eXBlIEFYU2NyZWVuU2l6ZXMgPSAnU00nIHwgJ01EJyB8ICdMRycgfCAnWEwnIHwgJzJYTCcgfCAnM1hMJyB8ICc0WEwnIHwgJzVYTCc7XG5cbmV4cG9ydCBjb25zdCBpc0Nocm9tZSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9DaHJvbWUvaSk7XG5cbmV4cG9ydCBjb25zdCBpc0ZpcmVmb3ggPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvRmlyZWZveC9pKTtcblxuZXhwb3J0IGNvbnN0IGlzRWRnZSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9FZGdlL2kpO1xuXG5leHBvcnQgY29uc3QgaXNTYWZhcmkgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvU2FmYXJpL2kpO1xuXG5leHBvcnQgY29uc3QgaXNPcGVyYSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9PcGVyYS9pKSB8fCB0ZXN0VXNlckFnZW50KHdpbiwgL09QUi9pKTtcblxuZXhwb3J0IGNvbnN0IGlzTVNJRSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9NU0lFL2kpIHx8IHRlc3RVc2VyQWdlbnQod2luLCAvVHJpZGVudC9pKTtcblxuZXhwb3J0IGNvbnN0IGlzTW9iaWxlV2ViID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiBpc01vYmlsZSh3aW4pICYmICFpc0h5YnJpZCh3aW4pO1xuXG5leHBvcnQgY29uc3QgaXNJcGFkID0gKHdpbjogV2luZG93KSA9PiB7XG4gIC8vIGlPUyAxMiBhbmQgYmVsb3dcbiAgaWYgKHRlc3RVc2VyQWdlbnQod2luLCAvaVBhZC9pKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gaU9TIDEzK1xuICBpZiAodGVzdFVzZXJBZ2VudCh3aW4sIC9NYWNpbnRvc2gvaSkgJiYgaXNNb2JpbGUod2luKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzSXBob25lID0gKHdpbjogV2luZG93KSA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL2lQaG9uZS9pKTtcblxuZXhwb3J0IGNvbnN0IGlzSU9TID0gKHdpbjogV2luZG93KSA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL2lQaG9uZXxpUG9kL2kpIHx8IGlzSXBhZCh3aW4pO1xuXG5leHBvcnQgY29uc3QgaXNBbmRyb2lkID0gKHdpbjogV2luZG93KSA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL2FuZHJvaWR8c2luay9pKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5kcm9pZFRhYmxldCA9ICh3aW46IFdpbmRvdykgPT4ge1xuICByZXR1cm4gaXNBbmRyb2lkKHdpbikgJiYgIXRlc3RVc2VyQWdlbnQod2luLCAvbW9iaWxlL2kpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGhhYmxldCA9ICh3aW46IFdpbmRvdykgPT4ge1xuICBjb25zdCB3aWR0aCA9IHdpbi5pbm5lcldpZHRoO1xuICBjb25zdCBoZWlnaHQgPSB3aW4uaW5uZXJIZWlnaHQ7XG4gIGNvbnN0IHNtYWxsZXN0ID0gTWF0aC5taW4od2lkdGgsIGhlaWdodCk7XG4gIGNvbnN0IGxhcmdlc3QgPSBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KTtcblxuICByZXR1cm4gc21hbGxlc3QgPiAzOTAgJiYgc21hbGxlc3QgPCA1MjAgJiYgbGFyZ2VzdCA+IDYyMCAmJiBsYXJnZXN0IDwgODAwO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGFibGV0ID0gKHdpbjogV2luZG93KSA9PiB7XG4gIGNvbnN0IHdpZHRoID0gd2luLmlubmVyV2lkdGg7XG4gIGNvbnN0IGhlaWdodCA9IHdpbi5pbm5lckhlaWdodDtcbiAgY29uc3Qgc21hbGxlc3QgPSBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KTtcbiAgY29uc3QgbGFyZ2VzdCA9IE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpO1xuXG4gIHJldHVybiBpc0lwYWQod2luKSB8fCBpc0FuZHJvaWRUYWJsZXQod2luKSB8fCAoc21hbGxlc3QgPiA0NjAgJiYgc21hbGxlc3QgPCA4MjAgJiYgbGFyZ2VzdCA+IDc4MCAmJiBsYXJnZXN0IDwgMTQwMCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNNb2JpbGUgPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKGFueS1wb2ludGVyOmNvYXJzZSknKTtcbmV4cG9ydCBjb25zdCBpc1RvdWNoID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhhbnktcG9pbnRlcjpjb2Fyc2UpJyk7XG5cbmV4cG9ydCBjb25zdCBpc0Rlc2t0b3AgPSAod2luOiBXaW5kb3cpID0+ICFpc01vYmlsZSh3aW4pO1xuXG5leHBvcnQgY29uc3QgaXNIeWJyaWQgPSAod2luOiBXaW5kb3cpID0+IGlzQ29yZG92YSh3aW4pIHx8IGlzQ2FwYWNpdG9yTmF0aXZlKHdpbik7XG5cbmV4cG9ydCBjb25zdCBpc0NvcmRvdmEgPSAod2luOiBhbnkpOiBib29sZWFuID0+ICEhKHdpblsnY29yZG92YSddIHx8IHdpblsncGhvbmVnYXAnXSB8fCB3aW5bJ1Bob25lR2FwJ10pO1xuXG5leHBvcnQgY29uc3QgaXNDYXBhY2l0b3JOYXRpdmUgPSAod2luOiBhbnkpOiBib29sZWFuID0+IHtcbiAgY29uc3QgY2FwYWNpdG9yID0gd2luWydDYXBhY2l0b3InXTtcbiAgcmV0dXJuICEhKGNhcGFjaXRvciAmJiBjYXBhY2l0b3IuaXNOYXRpdmUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRWxlY3Ryb24gPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvZWxlY3Ryb24vaSk7XG5cbmV4cG9ydCBjb25zdCBpc1BXQSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT5cbiAgISEod2luLm1hdGNoTWVkaWEoJyhkaXNwbGF5LW1vZGU6IHN0YW5kYWxvbmUpJykubWF0Y2hlcyB8fCAod2luLm5hdmlnYXRvciBhcyBhbnkpLnN0YW5kYWxvbmUpO1xuXG5leHBvcnQgY29uc3QgdGVzdFVzZXJBZ2VudCA9ICh3aW46IFdpbmRvdywgZXhwcjogUmVnRXhwKSA9PiBleHByLnRlc3Qod2luLm5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5leHBvcnQgY29uc3QgaXNCcm93c2VyID0gbmV3IEZ1bmN0aW9uKCd0cnkge3JldHVybiB0aGlzPT09d2luZG93O31jYXRjaChlKXsgcmV0dXJuIGZhbHNlO30nKTtcbmV4cG9ydCBjb25zdCBpc1NlcnZlciA9IG5ldyBGdW5jdGlvbigndHJ5IHtyZXR1cm4gdGhpcz09PWdsb2JhbDt9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlO30nKTtcblxuZXhwb3J0IGNvbnN0IG1hdGNoTWVkaWEgPSAod2luOiBXaW5kb3csIHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIHdpbi5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU01TY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogNjQwcHgpJyk7XG5leHBvcnQgY29uc3QgaXNNRFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiA3NjhweCknKTtcbmV4cG9ydCBjb25zdCBpc0xHU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDEwMjRweCknKTtcbmV4cG9ydCBjb25zdCBpc1hMU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDEyODBweCknKTtcbmV4cG9ydCBjb25zdCBpczJYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAxNTM2cHgpJyk7XG5leHBvcnQgY29uc3QgaXMzWExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTkyMHB4KScpO1xuZXhwb3J0IGNvbnN0IGlzNFhMU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDI1NjBweCknKTtcblxuZXhwb3J0IGNvbnN0IFBMQVRGT1JNU19NQVA6IGFueSA9IHtcbiAgQW5kcm9pZDogaXNBbmRyb2lkLFxuICBpT1M6IGlzSU9TLFxuICBEZXNrdG9wOiBpc0Rlc2t0b3AsXG4gIE1vYmlsZTogaXNNb2JpbGUsXG4gIFRvdWNoOiBpc1RvdWNoLFxuICBDaHJvbWU6IGlzQ2hyb21lLFxuICBGaXJlZm94OiBpc0ZpcmVmb3gsXG4gIFNhZmFyaTogaXNTYWZhcmksXG4gIEVkZ2U6IGlzRWRnZSxcbiAgT3BlcmE6IGlzT3BlcmEsXG4gIEh5YnJpZDogaXNIeWJyaWQsXG4gIFBXQTogaXNQV0EsXG4gIEVsZWN0cm9uOiBpc0VsZWN0cm9uLFxuICBTTTogaXNTTVNjcmVlbixcbiAgTUQ6IGlzTURTY3JlZW4sXG4gIExHOiBpc0xHU2NyZWVuLFxuICBYTDogaXNYTFNjcmVlbixcbiAgJzJYTCc6IGlzMlhMU2NyZWVuLFxuICAnM1hMJzogaXMzWExTY3JlZW4sXG4gICc0WEwnOiBpczRYTFNjcmVlbixcbn07XG5cbmV4cG9ydCBjbGFzcyBBWFBsYXRmb3JtRXZlbnQ8VCBleHRlbmRzIEV2ZW50ID0gRXZlbnQ+IHtcbiAgbmF0aXZlRXZlbnQhOiBUO1xuICBzb3VyY2UhOiBBWFBsYXRmb3JtO1xuICBkYXRhPzogYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQbGF0Zm9ybSB7XG4gIHJlc2l6ZTogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpO1xuICBkaXJlY3Rpb25DaGFuZ2U6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcbiAgY2xpY2s6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcbiAgc2Nyb2xsOiBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4gPSBuZXcgU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+KCk7XG4gIHRoZW1lTW9kZSQ6IEJlaGF2aW9yU3ViamVjdDxBWFRoZW1lTW9kZT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYVGhlbWVNb2RlPignc3lzdGVtJyk7XG4gIHRoZW1lTW9kZSA9IHNpZ25hbDxBWFRoZW1lTW9kZT4oJ3N5c3RlbScpO1xuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSBwbGF0Zm9ybUlEID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblxuICBpc0RhcmsoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2F4LWRhcmsnKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNSdGwoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuZGlyID09ICdydGwnIHx8IHRoaXMuZG9jdW1lbnQuYm9keS5kaXIgPT0gJ3J0bCcgfHwgdGhpcy5kb2N1bWVudC5ib2R5LnN0eWxlLmRpcmVjdGlvbiA9PSAncnRsJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNMYW5kc2NhcGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQgPCB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpc1BvcnRyYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc0xhbmRzY2FwZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IGVudmlyb25tZW50IG1hdGNoZXMgdGhlIGdpdmVuIHBsYXRmb3JtL2Jyb3dzZXIvdGVjaG5vbG9neS9zY3JlZW4gc2l6ZSBrZXl3b3JkLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIE9uZSBvZiBBWFBsYXRmb3JtcyB8IEFYQnJvd3NlcnMgfCBBWFRlY2hub2xvZ2llcyB8IEFYU2NyZWVuU2l6ZXMuXG4gICAqL1xuXG4gIGlzKG5hbWU6IEFYUGxhdGZvcm1zIHwgQVhCcm93c2VycyB8IEFYVGVjaG5vbG9naWVzIHwgQVhTY3JlZW5TaXplcyk6IGJvb2xlYW4ge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICByZXR1cm4gUExBVEZPUk1TX01BUFtuYW1lXSh3aW5kb3cpIHx8IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNjcmVlblNpemUoKTogQVhTY3JlZW5TaXplcyB7XG4gICAgcmV0dXJuIChbJ1NNJywgJ01EJywgJ0xHJywgJ1hMJywgJzJYTCcsICczWEwnLCAnNFhMJ10uZmluZCgobmFtZSkgPT4gUExBVEZPUk1TX01BUFtuYW1lXSh3aW5kb3cpID09IHRydWUpIHx8XG4gICAgICAnNVhMJykgYXMgQVhTY3JlZW5TaXplcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTd2l0Y2hlcyB0byBsaWdodCBtb2RlIGFuZCBwZXJzaXN0cyBpdC5cbiAgICogQHJldHVybnMgJ2xpZ2h0J1xuICAgKi9cblxuICBzd2l0Y2hMaWdodE1vZGUoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgX2h0bWwuY2xhc3NMaXN0LnJlbW92ZSgnYXgtZGFyaycpO1xuICAgIH1cbiAgICB0aGlzLiNzZXRTeXN0ZW1UaGVtZSgnbGlnaHQnKTtcbiAgICByZXR1cm4gJ2xpZ2h0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBTd2l0Y2hlcyB0byBkYXJrIG1vZGUgYW5kIHBlcnNpc3RzIGl0LlxuICAgKiBAcmV0dXJucyAnZGFyaydcbiAgICovXG5cbiAgc3dpdGNoRGFya01vZGUoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgX2h0bWwuY2xhc3NMaXN0LmFkZCgnYXgtZGFyaycpO1xuICAgIH1cbiAgICB0aGlzLiNzZXRTeXN0ZW1UaGVtZSgnZGFyaycpO1xuICAgIHJldHVybiAnZGFyayc7XG4gIH1cblxuICBzd2l0Y2hTeXN0ZW1Nb2RlKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICBpZiAod2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgICBfaHRtbC5jbGFzc0xpc3QuYWRkKCdheC1kYXJrJyk7XG4gICAgICAgIHRoaXMuI3NldFN5c3RlbVRoZW1lKCdzeXN0ZW0tZGFyaycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgX2h0bWwgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgICAgIF9odG1sLmNsYXNzTGlzdC5yZW1vdmUoJ2F4LWRhcmsnKTtcbiAgICAgICAgdGhpcy4jc2V0U3lzdGVtVGhlbWUoJ3N5c3RlbS1saWdodCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNzZXRTeXN0ZW1UaGVtZSh0aGVtZU1vZGU6IEFYVGhlbWVNb2RlKSB7XG4gICAgdGhpcy50aGVtZU1vZGUkLm5leHQodGhlbWVNb2RlKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQVhfVEhFTUVfTU9ERScsIHRoZW1lTW9kZSk7XG4gICAgdGhpcy50aGVtZU1vZGUuc2V0KHRoZW1lTW9kZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgcGVyc2lzdGVkIHRoZW1lIHByZWZlcmVuY2UgYW5kIGFwcGxpZXMgaXQgKHJldHVybnMgdGhlIGVmZmVjdGl2ZSBtb2RlKS5cbiAgICogQHJldHVybnMgQVhUaGVtZU1vZGVcbiAgICovXG5cbiAgYXV0b0RldGVjdFRoZW1lTW9kZSgpIHtcbiAgICBjb25zdCBtb2RlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0FYX1RIRU1FX01PREUnKSB8fCAnc3lzdGVtJztcbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgIGNhc2UgJ2xpZ2h0JzpcbiAgICAgICAgdGhpcy5zd2l0Y2hMaWdodE1vZGUoKTtcbiAgICAgICAgcmV0dXJuICdsaWdodCc7XG5cbiAgICAgIGNhc2UgJ2RhcmsnOlxuICAgICAgICB0aGlzLnN3aXRjaERhcmtNb2RlKCk7XG4gICAgICAgIHJldHVybiAnZGFyayc7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuc3dpdGNoU3lzdGVtTW9kZSgpO1xuICAgICAgICByZXR1cm4gJ3N5c3RlbSc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlbWUgbW9kZSBleHBsaWNpdGx5IGFuZCBwZXJzaXN0cyBpdC5cbiAgICogQHBhcmFtIG1vZGUgLSBEZXNpcmVkIHRoZW1lIG1vZGUuXG4gICAqL1xuXG4gIHNldFRoZW1lTW9kZShtb2RlOiBBWFRoZW1lTW9kZSkge1xuICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgY2FzZSAnbGlnaHQnOlxuICAgICAgICB0aGlzLnN3aXRjaExpZ2h0TW9kZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RhcmsnOlxuICAgICAgICB0aGlzLnN3aXRjaERhcmtNb2RlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5zd2l0Y2hTeXN0ZW1Nb2RlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RnVsbEhlaWdodFJhdGlvKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCc6cm9vdCcpXG4gICAgICAgICAgPy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1heC12aCcsIHdpbmRvdy5pbm5lckhlaWdodCAvIDEwMCArICdweCcpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhdXRvU3lzdGVtTW9kZURldGVjdGlvbihldmVudCkge1xuICAgIGlmICh0aGlzLnRoZW1lTW9kZSgpID09PSAnc3lzdGVtJykge1xuICAgICAgY29uc3QgdGhlbWVNb2RlID0gZXZlbnQubWF0Y2hlcyA/ICdkYXJrJyA6ICdsaWdodCc7XG5cbiAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICAgIGlmICh0aGVtZU1vZGUgPT09ICdkYXJrJykge1xuICAgICAgICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgICAgIF9odG1sLmNsYXNzTGlzdC5hZGQoJ2F4LWRhcmsnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBfaHRtbCA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXTtcbiAgICAgICAgICBfaHRtbC5jbGFzc0xpc3QucmVtb3ZlKCdheC1kYXJrJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgdGhpcy5kZXRlY3REYXJrTW9kZSgpO1xuICAgICAgdGhpcy5kZXRlY3RPblJlc2l6ZSgpO1xuICAgICAgdGhpcy5kZXRlY3RDbGlja0V2ZW50KCk7XG4gICAgICB0aGlzLmRldGVjdFNjcm9sbEV2ZW50KCk7XG4gICAgICB0aGlzLnNldEZ1bGxIZWlnaHRSYXRpbygpO1xuICAgICAgdGhpcy5kZXRlY3REb2N1bWVudERpcmVjdGlvbkNoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0RGFya01vZGUoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIC8vIGZyb21FdmVudChVSUV2ZW50KSh3aW5kb3csJycpXG4gICAgICBpZiAod2luZG93Py5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcykge1xuICAgICAgICB3aW5kb3c/Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKT8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgLy8gRGV0ZWN0IFN5c3RlbSBjb2xvciBtb2RlXG4gICAgICAgICAgdGhpcy5hdXRvU3lzdGVtTW9kZURldGVjdGlvbihldmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0T25SZXNpemUoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGZyb21FdmVudDxVSUV2ZW50Pih3aW5kb3csICdyZXNpemUnKVxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzaXplLm5leHQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy9cbiAgICAgICAgICB0aGlzLnNldEZ1bGxIZWlnaHRSYXRpbygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGVjdENsaWNrRXZlbnQoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgKGUpID0+IHtcbiAgICAgICAgICB0aGlzLmNsaWNrLm5leHQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHRydWUsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0U2Nyb2xsRXZlbnQoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ3Njcm9sbCcsXG4gICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zY3JvbGwubmV4dCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZSxcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3REb2N1bWVudERpcmVjdGlvbkNoYW5nZSgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgIC8vIERldGVjdCBEaXJlY3Rpb24gQ2hhbmdlXG4gICAgICAgICAgaWYgKG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdkaXInKSB7XG4gICAgICAgICAgICBjb25zdCBkaXIgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RpcicpO1xuICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb25DaGFuZ2UubmV4dCh7IHNvdXJjZTogdGhpcywgbmF0aXZlRXZlbnQ6IG51bGwsIGRhdGE6IGRpciB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwge1xuICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICBjaGlsZExpc3Q6IGZhbHNlLFxuICAgICAgICBjaGFyYWN0ZXJEYXRhOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtcGxhdGZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3BsYXRmb3JtL3NyYy9hY29yZXgtY29yZS1wbGF0Zm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-core-platform.mjs","sources":["../tmp-esm2022/platform/lib/platform.service.js","../tmp-esm2022/platform/acorex-core-platform.js"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport { AXEventService, AXSystemEvents } from '@acorex/core/events';\nimport { BehaviorSubject, fromEvent, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nexport const isChrome = (win) => testUserAgent(win, /Chrome/i);\nexport const isFirefox = (win) => testUserAgent(win, /Firefox/i);\nexport const isEdge = (win) => testUserAgent(win, /Edge/i);\nexport const isSafari = (win) => testUserAgent(win, /Safari/i);\nexport const isOpera = (win) => testUserAgent(win, /Opera/i) || testUserAgent(win, /OPR/i);\nexport const isMSIE = (win) => testUserAgent(win, /MSIE/i) || testUserAgent(win, /Trident/i);\nexport const isMobileWeb = (win) => isMobile(win) && !isHybrid(win);\nexport const isIpad = (win) => {\n // iOS 12 and below\n if (testUserAgent(win, /iPad/i)) {\n return true;\n }\n // iOS 13+\n if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {\n return true;\n }\n return false;\n};\nexport const isIphone = (win) => testUserAgent(win, /iPhone/i);\nexport const isIOS = (win) => testUserAgent(win, /iPhone|iPod/i) || isIpad(win);\nexport const isAndroid = (win) => testUserAgent(win, /android|sink/i);\nexport const isAndroidTablet = (win) => {\n return isAndroid(win) && !testUserAgent(win, /mobile/i);\n};\nexport const isPhablet = (win) => {\n const width = win.innerWidth;\n const height = win.innerHeight;\n const smallest = Math.min(width, height);\n const largest = Math.max(width, height);\n return smallest > 390 && smallest < 520 && largest > 620 && largest < 800;\n};\nexport const isTablet = (win) => {\n const width = win.innerWidth;\n const height = win.innerHeight;\n const smallest = Math.min(width, height);\n const largest = Math.max(width, height);\n return isIpad(win) || isAndroidTablet(win) || (smallest > 460 && smallest < 820 && largest > 780 && largest < 1400);\n};\nexport const isMobile = (win) => matchMedia(win, '(any-pointer:coarse)');\nexport const isTouch = (win) => matchMedia(win, '(any-pointer:coarse)');\nexport const isDesktop = (win) => !isMobile(win);\nexport const isHybrid = (win) => isCordova(win) || isCapacitorNative(win);\nexport const isCordova = (win) => !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);\nexport const isCapacitorNative = (win) => {\n const capacitor = win['Capacitor'];\n return !!(capacitor && capacitor.isNative);\n};\nexport const isElectron = (win) => testUserAgent(win, /electron/i);\nexport const isPWA = (win) => !!(win.matchMedia('(display-mode: standalone)').matches || win.navigator.standalone);\nexport const testUserAgent = (win, expr) => expr.test(win.navigator.userAgent);\nexport const isBrowser = new Function('try {return this===window;}catch(e){ return false;}');\nexport const isServer = new Function('try {return this===global;}catch(e){return false;}');\nexport const matchMedia = (win, query) => {\n return win.matchMedia(query).matches;\n};\nexport const isSMScreen = (win) => matchMedia(win, '(max-width: 640px)');\nexport const isMDScreen = (win) => matchMedia(win, '(max-width: 768px)');\nexport const isLGScreen = (win) => matchMedia(win, '(max-width: 1024px)');\nexport const isXLScreen = (win) => matchMedia(win, '(max-width: 1280px)');\nexport const is2XLScreen = (win) => matchMedia(win, '(max-width: 1536px)');\nexport const is3XLScreen = (win) => matchMedia(win, '(max-width: 1920px)');\nexport const is4XLScreen = (win) => matchMedia(win, '(max-width: 2560px)');\nexport const PLATFORMS_MAP = {\n Android: isAndroid,\n iOS: isIOS,\n Desktop: isDesktop,\n Mobile: isMobile,\n Touch: isTouch,\n Chrome: isChrome,\n Firefox: isFirefox,\n Safari: isSafari,\n Edge: isEdge,\n Opera: isOpera,\n Hybrid: isHybrid,\n PWA: isPWA,\n Electron: isElectron,\n SM: isSMScreen,\n MD: isMDScreen,\n LG: isLGScreen,\n XL: isXLScreen,\n '2XL': is2XLScreen,\n '3XL': is3XLScreen,\n '4XL': is4XLScreen,\n};\nexport class AXPlatformEvent {\n}\nexport class AXPlatform {\n isDark() {\n if (isPlatformBrowser(this.platformID)) {\n return this.document.documentElement.classList.contains('ax-dark');\n }\n return false;\n }\n isRtl() {\n if (isPlatformBrowser(this.platformID)) {\n return (this.document.dir == 'rtl' || this.document.body.dir == 'rtl' || this.document.body.style.direction == 'rtl');\n }\n return false;\n }\n get documentDirection() {\n if (!isPlatformBrowser(this.platformID)) {\n return 'ltr';\n }\n const dir = (this.document.documentElement.getAttribute('dir') ||\n this.document.body.getAttribute('dir') ||\n this.document.dir ||\n this.document.body.style.direction ||\n 'ltr');\n return dir.toLowerCase() === 'rtl' ? 'rtl' : 'ltr';\n }\n get documentLanguage() {\n if (!isPlatformBrowser(this.platformID)) {\n return 'en-US';\n }\n return this.document.documentElement.getAttribute('lang') || this.document.body.getAttribute('lang') || 'en-US';\n }\n isLandscape() {\n if (isPlatformBrowser(this.platformID)) {\n return window.innerHeight < window.innerWidth;\n }\n return true;\n }\n isPortrate() {\n return !this.isLandscape();\n }\n /**\n * Checks whether the current environment matches the given platform/browser/technology/screen size keyword.\n *\n * @param name - One of AXPlatforms | AXBrowsers | AXTechnologies | AXScreenSizes.\n */\n is(name) {\n if (isPlatformBrowser(this.platformID)) {\n return PLATFORMS_MAP[name](window) || false;\n }\n else {\n return false;\n }\n }\n get screenSize() {\n return (['SM', 'MD', 'LG', 'XL', '2XL', '3XL', '4XL'].find((name) => PLATFORMS_MAP[name](window) == true) ||\n '5XL');\n }\n /**\n * Switches to light mode and persists it.\n * @returns 'light'\n */\n switchLightMode() {\n if (isPlatformBrowser(this.platformID)) {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.remove('ax-dark');\n }\n this.#setSystemTheme('light');\n return 'light';\n }\n /**\n * Switches to dark mode and persists it.\n * @returns 'dark'\n */\n switchDarkMode() {\n if (isPlatformBrowser(this.platformID)) {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.add('ax-dark');\n }\n this.#setSystemTheme('dark');\n return 'dark';\n }\n switchSystemMode() {\n if (isPlatformBrowser(this.platformID)) {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.add('ax-dark');\n this.#setSystemTheme('system-dark');\n }\n else {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.remove('ax-dark');\n this.#setSystemTheme('system-light');\n }\n }\n }\n #setSystemTheme(themeMode) {\n this.themeMode$.next(themeMode);\n localStorage.setItem('AX_THEME_MODE', themeMode);\n this.themeMode.set(themeMode);\n }\n /**\n * Reads persisted theme preference and applies it (returns the effective mode).\n * @returns AXThemeMode\n */\n autoDetectThemeMode() {\n const mode = localStorage.getItem('AX_THEME_MODE') || 'system';\n switch (mode) {\n case 'light':\n this.switchLightMode();\n return 'light';\n case 'dark':\n this.switchDarkMode();\n return 'dark';\n default:\n this.switchSystemMode();\n return 'system';\n }\n }\n /**\n * Sets theme mode explicitly and persists it.\n * @param mode - Desired theme mode.\n */\n setThemeMode(mode) {\n switch (mode) {\n case 'light':\n this.switchLightMode();\n break;\n case 'dark':\n this.switchDarkMode();\n break;\n default:\n this.switchSystemMode();\n break;\n }\n }\n /**\n * Sets document direction (dir=\"ltr|rtl\") and persists it.\n */\n setDirection(dir) {\n if (!isPlatformBrowser(this.platformID)) {\n return;\n }\n const normalized = dir === 'rtl' ? 'rtl' : 'ltr';\n this.document.documentElement.setAttribute('dir', normalized);\n this.document.body.setAttribute('dir', normalized);\n this.document.body.style.direction = normalized;\n localStorage.setItem('AX_DIRECTION', normalized);\n this.direction$.next(normalized);\n this.direction.set(normalized);\n }\n toggleDirection() {\n const next = this.documentDirection === 'rtl' ? 'ltr' : 'rtl';\n this.setDirection(next);\n return next;\n }\n /**\n * Sets document language (lang=\"<bcp47>\") and optionally direction, then persists it.\n */\n setLanguage(lang, options) {\n if (!isPlatformBrowser(this.platformID)) {\n return;\n }\n const normalizedLang = (lang || 'en-US').trim();\n this.document.documentElement.setAttribute('lang', normalizedLang);\n this.document.body.setAttribute('lang', normalizedLang);\n localStorage.setItem('AX_LANGUAGE', normalizedLang);\n this.language$.next(normalizedLang);\n this.language.set(normalizedLang);\n const dir = options?.dir ?? this.#inferDirectionFromLanguage(normalizedLang);\n this.setDirection(dir);\n }\n autoDetectLanguage() {\n if (!isPlatformBrowser(this.platformID)) {\n return this.documentLanguage;\n }\n const lang = localStorage.getItem('AX_LANGUAGE') || this.documentLanguage || 'en-US';\n this.setLanguage(lang, { dir: this.#inferDirectionFromLanguage(lang) });\n return lang;\n }\n autoDetectDirection() {\n if (!isPlatformBrowser(this.platformID)) {\n return this.documentDirection;\n }\n const dir = localStorage.getItem('AX_DIRECTION') || this.documentDirection || 'ltr';\n this.setDirection(dir);\n return dir;\n }\n #inferDirectionFromLanguage(lang) {\n const normalized = lang.toLowerCase();\n if (normalized.startsWith('fa') ||\n normalized.startsWith('ar') ||\n normalized.startsWith('he') ||\n normalized.startsWith('ur')) {\n return 'rtl';\n }\n return 'ltr';\n }\n setFullHeightRatio() {\n if (isPlatformBrowser(this.platformID)) {\n try {\n this.document\n .querySelector(':root')\n ?.style.setProperty('--ax-vh', window.innerHeight / 100 + 'px');\n }\n catch (error) {\n console.error(error);\n }\n }\n }\n autoSystemModeDetection(event) {\n if (this.themeMode() === 'system') {\n const themeMode = event.matches ? 'dark' : 'light';\n if (isPlatformBrowser(this.platformID)) {\n if (themeMode === 'dark') {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.add('ax-dark');\n }\n else {\n const _html = this.document.getElementsByTagName('html')[0];\n _html.classList.remove('ax-dark');\n }\n }\n }\n }\n constructor() {\n this.resize = new Subject();\n this.directionChange = new Subject();\n this.languageChange = new Subject();\n this.click = new Subject();\n this.scroll = new Subject();\n this.themeMode$ = new BehaviorSubject('system');\n this.themeMode = signal('system', ...(ngDevMode ? [{ debugName: \"themeMode\" }] : []));\n this.direction$ = new BehaviorSubject('ltr');\n this.direction = signal('ltr', ...(ngDevMode ? [{ debugName: \"direction\" }] : []));\n this.language$ = new BehaviorSubject('en-US');\n this.language = signal('en-US', ...(ngDevMode ? [{ debugName: \"language\" }] : []));\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.eventService = inject(AXEventService);\n if (isPlatformBrowser(this.platformID)) {\n this.detectDarkMode();\n this.detectOnResize();\n this.detectClickEvent();\n this.detectScrollEvent();\n this.setFullHeightRatio();\n this.detectDocumentDirectionChange();\n this.autoDetectLanguage();\n this.autoDetectDirection();\n this.detectLanguageChangeFromSystemEvents();\n }\n }\n detectLanguageChangeFromSystemEvents() {\n this.eventService.onEvent.subscribe((e) => {\n if (e.type === AXSystemEvents.AXLanguageChanged && typeof e.payload === 'string') {\n // Keep platform/document state in sync with translation module language changes\n this.setLanguage(e.payload);\n }\n });\n }\n detectDarkMode() {\n if (isPlatformBrowser(this.platformID)) {\n // fromEvent(UIEvent)(window,'')\n if (window?.matchMedia('(prefers-color-scheme: dark)').matches) {\n window?.matchMedia('(prefers-color-scheme: dark)')?.addEventListener('change', (event) => {\n // Detect System color mode\n this.autoSystemModeDetection(event);\n });\n }\n }\n }\n detectOnResize() {\n if (isPlatformBrowser(this.platformID)) {\n fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .pipe(distinctUntilChanged())\n .subscribe((e) => {\n this.resize.next({\n nativeEvent: e,\n source: this,\n });\n //\n this.setFullHeightRatio();\n });\n }\n }\n detectClickEvent() {\n if (isPlatformBrowser(this.platformID)) {\n this.document.addEventListener('click', (e) => {\n this.click.next({\n nativeEvent: e,\n source: this,\n });\n }, true);\n }\n }\n detectScrollEvent() {\n if (isPlatformBrowser(this.platformID)) {\n this.document.addEventListener('scroll', (e) => {\n this.scroll.next({\n nativeEvent: e,\n source: this,\n });\n }, true);\n }\n }\n detectDocumentDirectionChange() {\n if (isPlatformBrowser(this.platformID)) {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n // Detect Direction Change\n if (mutation.attributeName === 'dir') {\n const dir = (this.document.documentElement.getAttribute('dir') || 'ltr');\n const normalized = dir.toLowerCase() === 'rtl' ? 'rtl' : 'ltr';\n this.direction$.next(normalized);\n this.direction.set(normalized);\n this.directionChange.next({ source: this, nativeEvent: null, data: normalized });\n }\n if (mutation.attributeName === 'lang') {\n const lang = this.document.documentElement.getAttribute('lang') || 'en-US';\n this.language$.next(lang);\n this.language.set(lang);\n this.languageChange.next({ source: this, nativeEvent: null, data: lang });\n }\n });\n });\n observer.observe(document.documentElement, {\n attributes: true,\n childList: false,\n characterData: false,\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXPlatform, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXPlatform, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXPlatform, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcGxhdGZvcm0vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFVcEUsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUVsRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQVcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxR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QyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQzt3QkFDM0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDNUUsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFO2dCQUN6QyxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLGFBQWEsRUFBRSxLQUFLO2FBQ3JCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOzhHQWxZVSxVQUFVO2tIQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERPQ1VNRU5ULCBpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRXZlbnRTZXJ2aWNlLCBBWFN5c3RlbUV2ZW50cyB9IGZyb20gJ0BhY29yZXgvY29yZS9ldmVudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCB0eXBlIEFYVGhlbWVNb2RlID0gJ2xpZ2h0JyB8ICdkYXJrJyB8ICdzeXN0ZW0nIHwgJ3N5c3RlbS1kYXJrJyB8ICdzeXN0ZW0tbGlnaHQnO1xuZXhwb3J0IHR5cGUgQVhEaXJlY3Rpb24gPSAnbHRyJyB8ICdydGwnO1xuZXhwb3J0IHR5cGUgQVhQbGF0Zm9ybXMgPSAnQW5kcm9pZCcgfCAnRGVza3RvcCcgfCAnaU9TJyB8ICdNb2JpbGUnO1xuZXhwb3J0IHR5cGUgQVhCcm93c2VycyA9ICdDaHJvbWUnIHwgJ1NhZmFyaScgfCAnRWRnZScgfCAnRmlyZWZveCcgfCAnT3BlcmEnIHwgJ01TSUUnO1xuZXhwb3J0IHR5cGUgQVhUZWNobm9sb2dpZXMgPSAnUFdBJyB8ICdIeWJyaWQnIHwgJ0VsZWN0cm9uJztcblxuZXhwb3J0IHR5cGUgQVhTY3JlZW5TaXplcyA9ICdTTScgfCAnTUQnIHwgJ0xHJyB8ICdYTCcgfCAnMlhMJyB8ICczWEwnIHwgJzRYTCcgfCAnNVhMJztcblxuZXhwb3J0IGNvbnN0IGlzQ2hyb21lID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL0Nocm9tZS9pKTtcblxuZXhwb3J0IGNvbnN0IGlzRmlyZWZveCA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9GaXJlZm94L2kpO1xuXG5leHBvcnQgY29uc3QgaXNFZGdlID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL0VkZ2UvaSk7XG5cbmV4cG9ydCBjb25zdCBpc1NhZmFyaSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9TYWZhcmkvaSk7XG5cbmV4cG9ydCBjb25zdCBpc09wZXJhID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL09wZXJhL2kpIHx8IHRlc3RVc2VyQWdlbnQod2luLCAvT1BSL2kpO1xuXG5leHBvcnQgY29uc3QgaXNNU0lFID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL01TSUUvaSkgfHwgdGVzdFVzZXJBZ2VudCh3aW4sIC9UcmlkZW50L2kpO1xuXG5leHBvcnQgY29uc3QgaXNNb2JpbGVXZWIgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IGlzTW9iaWxlKHdpbikgJiYgIWlzSHlicmlkKHdpbik7XG5cbmV4cG9ydCBjb25zdCBpc0lwYWQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgLy8gaU9TIDEyIGFuZCBiZWxvd1xuICBpZiAodGVzdFVzZXJBZ2VudCh3aW4sIC9pUGFkL2kpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBpT1MgMTMrXG4gIGlmICh0ZXN0VXNlckFnZW50KHdpbiwgL01hY2ludG9zaC9pKSAmJiBpc01vYmlsZSh3aW4pKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgaXNJcGhvbmUgPSAod2luOiBXaW5kb3cpID0+IHRlc3RVc2VyQWdlbnQod2luLCAvaVBob25lL2kpO1xuXG5leHBvcnQgY29uc3QgaXNJT1MgPSAod2luOiBXaW5kb3cpID0+IHRlc3RVc2VyQWdlbnQod2luLCAvaVBob25lfGlQb2QvaSkgfHwgaXNJcGFkKHdpbik7XG5cbmV4cG9ydCBjb25zdCBpc0FuZHJvaWQgPSAod2luOiBXaW5kb3cpID0+IHRlc3RVc2VyQWdlbnQod2luLCAvYW5kcm9pZHxzaW5rL2kpO1xuXG5leHBvcnQgY29uc3QgaXNBbmRyb2lkVGFibGV0ID0gKHdpbjogV2luZG93KSA9PiB7XG4gIHJldHVybiBpc0FuZHJvaWQod2luKSAmJiAhdGVzdFVzZXJBZ2VudCh3aW4sIC9tb2JpbGUvaSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQaGFibGV0ID0gKHdpbjogV2luZG93KSA9PiB7XG4gIGNvbnN0IHdpZHRoID0gd2luLmlubmVyV2lkdGg7XG4gIGNvbnN0IGhlaWdodCA9IHdpbi5pbm5lckhlaWdodDtcbiAgY29uc3Qgc21hbGxlc3QgPSBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KTtcbiAgY29uc3QgbGFyZ2VzdCA9IE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpO1xuXG4gIHJldHVybiBzbWFsbGVzdCA+IDM5MCAmJiBzbWFsbGVzdCA8IDUyMCAmJiBsYXJnZXN0ID4gNjIwICYmIGxhcmdlc3QgPCA4MDA7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUYWJsZXQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgY29uc3Qgd2lkdGggPSB3aW4uaW5uZXJXaWR0aDtcbiAgY29uc3QgaGVpZ2h0ID0gd2luLmlubmVySGVpZ2h0O1xuICBjb25zdCBzbWFsbGVzdCA9IE1hdGgubWluKHdpZHRoLCBoZWlnaHQpO1xuICBjb25zdCBsYXJnZXN0ID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7XG5cbiAgcmV0dXJuIGlzSXBhZCh3aW4pIHx8IGlzQW5kcm9pZFRhYmxldCh3aW4pIHx8IChzbWFsbGVzdCA+IDQ2MCAmJiBzbWFsbGVzdCA8IDgyMCAmJiBsYXJnZXN0ID4gNzgwICYmIGxhcmdlc3QgPCAxNDAwKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc01vYmlsZSA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcoYW55LXBvaW50ZXI6Y29hcnNlKScpO1xuZXhwb3J0IGNvbnN0IGlzVG91Y2ggPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKGFueS1wb2ludGVyOmNvYXJzZSknKTtcblxuZXhwb3J0IGNvbnN0IGlzRGVza3RvcCA9ICh3aW46IFdpbmRvdykgPT4gIWlzTW9iaWxlKHdpbik7XG5cbmV4cG9ydCBjb25zdCBpc0h5YnJpZCA9ICh3aW46IFdpbmRvdykgPT4gaXNDb3Jkb3ZhKHdpbikgfHwgaXNDYXBhY2l0b3JOYXRpdmUod2luKTtcblxuZXhwb3J0IGNvbnN0IGlzQ29yZG92YSA9ICh3aW46IGFueSk6IGJvb2xlYW4gPT4gISEod2luWydjb3Jkb3ZhJ10gfHwgd2luWydwaG9uZWdhcCddIHx8IHdpblsnUGhvbmVHYXAnXSk7XG5cbmV4cG9ydCBjb25zdCBpc0NhcGFjaXRvck5hdGl2ZSA9ICh3aW46IGFueSk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBjYXBhY2l0b3IgPSB3aW5bJ0NhcGFjaXRvciddO1xuICByZXR1cm4gISEoY2FwYWNpdG9yICYmIGNhcGFjaXRvci5pc05hdGl2ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNFbGVjdHJvbiA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9lbGVjdHJvbi9pKTtcblxuZXhwb3J0IGNvbnN0IGlzUFdBID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PlxuICAhISh3aW4ubWF0Y2hNZWRpYSgnKGRpc3BsYXktbW9kZTogc3RhbmRhbG9uZSknKS5tYXRjaGVzIHx8ICh3aW4ubmF2aWdhdG9yIGFzIGFueSkuc3RhbmRhbG9uZSk7XG5cbmV4cG9ydCBjb25zdCB0ZXN0VXNlckFnZW50ID0gKHdpbjogV2luZG93LCBleHByOiBSZWdFeHApID0+IGV4cHIudGVzdCh3aW4ubmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbmV4cG9ydCBjb25zdCBpc0Jyb3dzZXIgPSBuZXcgRnVuY3Rpb24oJ3RyeSB7cmV0dXJuIHRoaXM9PT13aW5kb3c7fWNhdGNoKGUpeyByZXR1cm4gZmFsc2U7fScpO1xuZXhwb3J0IGNvbnN0IGlzU2VydmVyID0gbmV3IEZ1bmN0aW9uKCd0cnkge3JldHVybiB0aGlzPT09Z2xvYmFsO31jYXRjaChlKXtyZXR1cm4gZmFsc2U7fScpO1xuXG5leHBvcnQgY29uc3QgbWF0Y2hNZWRpYSA9ICh3aW46IFdpbmRvdywgcXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gd2luLm1hdGNoTWVkaWEocXVlcnkpLm1hdGNoZXM7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTTVNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiA2NDBweCknKTtcbmV4cG9ydCBjb25zdCBpc01EU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDc2OHB4KScpO1xuZXhwb3J0IGNvbnN0IGlzTEdTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTAyNHB4KScpO1xuZXhwb3J0IGNvbnN0IGlzWExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTI4MHB4KScpO1xuZXhwb3J0IGNvbnN0IGlzMlhMU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDE1MzZweCknKTtcbmV4cG9ydCBjb25zdCBpczNYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAxOTIwcHgpJyk7XG5leHBvcnQgY29uc3QgaXM0WExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMjU2MHB4KScpO1xuXG5leHBvcnQgY29uc3QgUExBVEZPUk1TX01BUDogYW55ID0ge1xuICBBbmRyb2lkOiBpc0FuZHJvaWQsXG4gIGlPUzogaXNJT1MsXG4gIERlc2t0b3A6IGlzRGVza3RvcCxcbiAgTW9iaWxlOiBpc01vYmlsZSxcbiAgVG91Y2g6IGlzVG91Y2gsXG4gIENocm9tZTogaXNDaHJvbWUsXG4gIEZpcmVmb3g6IGlzRmlyZWZveCxcbiAgU2FmYXJpOiBpc1NhZmFyaSxcbiAgRWRnZTogaXNFZGdlLFxuICBPcGVyYTogaXNPcGVyYSxcbiAgSHlicmlkOiBpc0h5YnJpZCxcbiAgUFdBOiBpc1BXQSxcbiAgRWxlY3Ryb246IGlzRWxlY3Ryb24sXG4gIFNNOiBpc1NNU2NyZWVuLFxuICBNRDogaXNNRFNjcmVlbixcbiAgTEc6IGlzTEdTY3JlZW4sXG4gIFhMOiBpc1hMU2NyZWVuLFxuICAnMlhMJzogaXMyWExTY3JlZW4sXG4gICczWEwnOiBpczNYTFNjcmVlbixcbiAgJzRYTCc6IGlzNFhMU2NyZWVuLFxufTtcblxuZXhwb3J0IGNsYXNzIEFYUGxhdGZvcm1FdmVudDxUIGV4dGVuZHMgRXZlbnQgPSBFdmVudD4ge1xuICBuYXRpdmVFdmVudCE6IFQ7XG4gIHNvdXJjZSE6IEFYUGxhdGZvcm07XG4gIGRhdGE/OiBhbnk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBsYXRmb3JtIHtcbiAgcmVzaXplOiBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4gPSBuZXcgU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+KCk7XG4gIGRpcmVjdGlvbkNoYW5nZTogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpO1xuICBsYW5ndWFnZUNoYW5nZTogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpO1xuICBjbGljazogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpO1xuICBzY3JvbGw6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcbiAgdGhlbWVNb2RlJDogQmVoYXZpb3JTdWJqZWN0PEFYVGhlbWVNb2RlPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QVhUaGVtZU1vZGU+KCdzeXN0ZW0nKTtcbiAgdGhlbWVNb2RlID0gc2lnbmFsPEFYVGhlbWVNb2RlPignc3lzdGVtJyk7XG4gIGRpcmVjdGlvbiQ6IEJlaGF2aW9yU3ViamVjdDxBWERpcmVjdGlvbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYRGlyZWN0aW9uPignbHRyJyk7XG4gIGRpcmVjdGlvbiA9IHNpZ25hbDxBWERpcmVjdGlvbj4oJ2x0cicpO1xuICBsYW5ndWFnZSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdlbi1VUycpO1xuICBsYW5ndWFnZSA9IHNpZ25hbDxzdHJpbmc+KCdlbi1VUycpO1xuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSBwbGF0Zm9ybUlEID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgcHJpdmF0ZSBldmVudFNlcnZpY2UgPSBpbmplY3QoQVhFdmVudFNlcnZpY2UpO1xuXG4gIGlzRGFyaygpOiBib29sZWFuIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnYXgtZGFyaycpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc1J0bCgpOiBib29sZWFuIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5kb2N1bWVudC5kaXIgPT0gJ3J0bCcgfHwgdGhpcy5kb2N1bWVudC5ib2R5LmRpciA9PSAncnRsJyB8fCB0aGlzLmRvY3VtZW50LmJvZHkuc3R5bGUuZGlyZWN0aW9uID09ICdydGwnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgZG9jdW1lbnREaXJlY3Rpb24oKTogQVhEaXJlY3Rpb24ge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgcmV0dXJuICdsdHInO1xuICAgIH1cblxuICAgIGNvbnN0IGRpciA9ICh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RpcicpIHx8XG4gICAgICB0aGlzLmRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCdkaXInKSB8fFxuICAgICAgdGhpcy5kb2N1bWVudC5kaXIgfHxcbiAgICAgICh0aGlzLmRvY3VtZW50LmJvZHkuc3R5bGUuZGlyZWN0aW9uIGFzIHN0cmluZykgfHxcbiAgICAgICdsdHInKSBhcyBzdHJpbmc7XG5cbiAgICByZXR1cm4gZGlyLnRvTG93ZXJDYXNlKCkgPT09ICdydGwnID8gJ3J0bCcgOiAnbHRyJztcbiAgfVxuXG4gIGdldCBkb2N1bWVudExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICByZXR1cm4gJ2VuLVVTJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykgfHwgdGhpcy5kb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgnbGFuZycpIHx8ICdlbi1VUyc7XG4gIH1cblxuICBpc0xhbmRzY2FwZSgpOiBib29sZWFuIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCA8IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlzUG9ydHJhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzTGFuZHNjYXBlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgbWF0Y2hlcyB0aGUgZ2l2ZW4gcGxhdGZvcm0vYnJvd3Nlci90ZWNobm9sb2d5L3NjcmVlbiBzaXplIGtleXdvcmQuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gT25lIG9mIEFYUGxhdGZvcm1zIHwgQVhCcm93c2VycyB8IEFYVGVjaG5vbG9naWVzIHwgQVhTY3JlZW5TaXplcy5cbiAgICovXG5cbiAgaXMobmFtZTogQVhQbGF0Zm9ybXMgfCBBWEJyb3dzZXJzIHwgQVhUZWNobm9sb2dpZXMgfCBBWFNjcmVlblNpemVzKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHJldHVybiBQTEFURk9STVNfTUFQW25hbWVdKHdpbmRvdykgfHwgZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2NyZWVuU2l6ZSgpOiBBWFNjcmVlblNpemVzIHtcbiAgICByZXR1cm4gKFsnU00nLCAnTUQnLCAnTEcnLCAnWEwnLCAnMlhMJywgJzNYTCcsICc0WEwnXS5maW5kKChuYW1lKSA9PiBQTEFURk9STVNfTUFQW25hbWVdKHdpbmRvdykgPT0gdHJ1ZSkgfHxcbiAgICAgICc1WEwnKSBhcyBBWFNjcmVlblNpemVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFN3aXRjaGVzIHRvIGxpZ2h0IG1vZGUgYW5kIHBlcnNpc3RzIGl0LlxuICAgKiBAcmV0dXJucyAnbGlnaHQnXG4gICAqL1xuXG4gIHN3aXRjaExpZ2h0TW9kZSgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgY29uc3QgX2h0bWwgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgICBfaHRtbC5jbGFzc0xpc3QucmVtb3ZlKCdheC1kYXJrJyk7XG4gICAgfVxuICAgIHRoaXMuI3NldFN5c3RlbVRoZW1lKCdsaWdodCcpO1xuICAgIHJldHVybiAnbGlnaHQnO1xuICB9XG5cbiAgLyoqXG4gICAqIFN3aXRjaGVzIHRvIGRhcmsgbW9kZSBhbmQgcGVyc2lzdHMgaXQuXG4gICAqIEByZXR1cm5zICdkYXJrJ1xuICAgKi9cblxuICBzd2l0Y2hEYXJrTW9kZSgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgY29uc3QgX2h0bWwgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgICBfaHRtbC5jbGFzc0xpc3QuYWRkKCdheC1kYXJrJyk7XG4gICAgfVxuICAgIHRoaXMuI3NldFN5c3RlbVRoZW1lKCdkYXJrJyk7XG4gICAgcmV0dXJuICdkYXJrJztcbiAgfVxuXG4gIHN3aXRjaFN5c3RlbU1vZGUoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGlmICh3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXMpIHtcbiAgICAgICAgY29uc3QgX2h0bWwgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgICAgIF9odG1sLmNsYXNzTGlzdC5hZGQoJ2F4LWRhcmsnKTtcbiAgICAgICAgdGhpcy4jc2V0U3lzdGVtVGhlbWUoJ3N5c3RlbS1kYXJrJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBfaHRtbCA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXTtcbiAgICAgICAgX2h0bWwuY2xhc3NMaXN0LnJlbW92ZSgnYXgtZGFyaycpO1xuICAgICAgICB0aGlzLiNzZXRTeXN0ZW1UaGVtZSgnc3lzdGVtLWxpZ2h0Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3NldFN5c3RlbVRoZW1lKHRoZW1lTW9kZTogQVhUaGVtZU1vZGUpIHtcbiAgICB0aGlzLnRoZW1lTW9kZSQubmV4dCh0aGVtZU1vZGUpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdBWF9USEVNRV9NT0RFJywgdGhlbWVNb2RlKTtcbiAgICB0aGlzLnRoZW1lTW9kZS5zZXQodGhlbWVNb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBwZXJzaXN0ZWQgdGhlbWUgcHJlZmVyZW5jZSBhbmQgYXBwbGllcyBpdCAocmV0dXJucyB0aGUgZWZmZWN0aXZlIG1vZGUpLlxuICAgKiBAcmV0dXJucyBBWFRoZW1lTW9kZVxuICAgKi9cblxuICBhdXRvRGV0ZWN0VGhlbWVNb2RlKCkge1xuICAgIGNvbnN0IG1vZGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQVhfVEhFTUVfTU9ERScpIHx8ICdzeXN0ZW0nO1xuICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgY2FzZSAnbGlnaHQnOlxuICAgICAgICB0aGlzLnN3aXRjaExpZ2h0TW9kZSgpO1xuICAgICAgICByZXR1cm4gJ2xpZ2h0JztcblxuICAgICAgY2FzZSAnZGFyayc6XG4gICAgICAgIHRoaXMuc3dpdGNoRGFya01vZGUoKTtcbiAgICAgICAgcmV0dXJuICdkYXJrJztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5zd2l0Y2hTeXN0ZW1Nb2RlKCk7XG4gICAgICAgIHJldHVybiAnc3lzdGVtJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGVtZSBtb2RlIGV4cGxpY2l0bHkgYW5kIHBlcnNpc3RzIGl0LlxuICAgKiBAcGFyYW0gbW9kZSAtIERlc2lyZWQgdGhlbWUgbW9kZS5cbiAgICovXG5cbiAgc2V0VGhlbWVNb2RlKG1vZGU6IEFYVGhlbWVNb2RlKSB7XG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICBjYXNlICdsaWdodCc6XG4gICAgICAgIHRoaXMuc3dpdGNoTGlnaHRNb2RlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGFyayc6XG4gICAgICAgIHRoaXMuc3dpdGNoRGFya01vZGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLnN3aXRjaFN5c3RlbU1vZGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZG9jdW1lbnQgZGlyZWN0aW9uIChkaXI9XCJsdHJ8cnRsXCIpIGFuZCBwZXJzaXN0cyBpdC5cbiAgICovXG4gIHNldERpcmVjdGlvbihkaXI6IEFYRGlyZWN0aW9uKSB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZDogQVhEaXJlY3Rpb24gPSBkaXIgPT09ICdydGwnID8gJ3J0bCcgOiAnbHRyJztcbiAgICB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RpcicsIG5vcm1hbGl6ZWQpO1xuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoJ2RpcicsIG5vcm1hbGl6ZWQpO1xuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5kaXJlY3Rpb24gPSBub3JtYWxpemVkO1xuXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0FYX0RJUkVDVElPTicsIG5vcm1hbGl6ZWQpO1xuICAgIHRoaXMuZGlyZWN0aW9uJC5uZXh0KG5vcm1hbGl6ZWQpO1xuICAgIHRoaXMuZGlyZWN0aW9uLnNldChub3JtYWxpemVkKTtcbiAgfVxuXG4gIHRvZ2dsZURpcmVjdGlvbigpIHtcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5kb2N1bWVudERpcmVjdGlvbiA9PT0gJ3J0bCcgPyAnbHRyJyA6ICdydGwnO1xuICAgIHRoaXMuc2V0RGlyZWN0aW9uKG5leHQpO1xuICAgIHJldHVybiBuZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZG9jdW1lbnQgbGFuZ3VhZ2UgKGxhbmc9XCI8YmNwNDc+XCIpIGFuZCBvcHRpb25hbGx5IGRpcmVjdGlvbiwgdGhlbiBwZXJzaXN0cyBpdC5cbiAgICovXG4gIHNldExhbmd1YWdlKGxhbmc6IHN0cmluZywgb3B0aW9ucz86IHsgZGlyPzogQVhEaXJlY3Rpb24gfSkge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRMYW5nID0gKGxhbmcgfHwgJ2VuLVVTJykudHJpbSgpO1xuICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnbGFuZycsIG5vcm1hbGl6ZWRMYW5nKTtcbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKCdsYW5nJywgbm9ybWFsaXplZExhbmcpO1xuXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0FYX0xBTkdVQUdFJywgbm9ybWFsaXplZExhbmcpO1xuICAgIHRoaXMubGFuZ3VhZ2UkLm5leHQobm9ybWFsaXplZExhbmcpO1xuICAgIHRoaXMubGFuZ3VhZ2Uuc2V0KG5vcm1hbGl6ZWRMYW5nKTtcblxuICAgIGNvbnN0IGRpciA9IG9wdGlvbnM/LmRpciA/PyB0aGlzLiNpbmZlckRpcmVjdGlvbkZyb21MYW5ndWFnZShub3JtYWxpemVkTGFuZyk7XG4gICAgdGhpcy5zZXREaXJlY3Rpb24oZGlyKTtcbiAgfVxuXG4gIGF1dG9EZXRlY3RMYW5ndWFnZSgpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50TGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgY29uc3QgbGFuZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdBWF9MQU5HVUFHRScpIHx8IHRoaXMuZG9jdW1lbnRMYW5ndWFnZSB8fCAnZW4tVVMnO1xuICAgIHRoaXMuc2V0TGFuZ3VhZ2UobGFuZywgeyBkaXI6IHRoaXMuI2luZmVyRGlyZWN0aW9uRnJvbUxhbmd1YWdlKGxhbmcpIH0pO1xuICAgIHJldHVybiBsYW5nO1xuICB9XG5cbiAgYXV0b0RldGVjdERpcmVjdGlvbigpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50RGlyZWN0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IGRpciA9IChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQVhfRElSRUNUSU9OJykgYXMgQVhEaXJlY3Rpb24gfCBudWxsKSB8fCB0aGlzLmRvY3VtZW50RGlyZWN0aW9uIHx8ICdsdHInO1xuICAgIHRoaXMuc2V0RGlyZWN0aW9uKGRpcik7XG4gICAgcmV0dXJuIGRpcjtcbiAgfVxuXG4gICNpbmZlckRpcmVjdGlvbkZyb21MYW5ndWFnZShsYW5nOiBzdHJpbmcpOiBBWERpcmVjdGlvbiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IGxhbmcudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoXG4gICAgICBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJ2ZhJykgfHxcbiAgICAgIG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnYXInKSB8fFxuICAgICAgbm9ybWFsaXplZC5zdGFydHNXaXRoKCdoZScpIHx8XG4gICAgICBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJ3VyJylcbiAgICApIHtcbiAgICAgIHJldHVybiAncnRsJztcbiAgICB9XG4gICAgcmV0dXJuICdsdHInO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGdWxsSGVpZ2h0UmF0aW8oKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJzpyb290JylcbiAgICAgICAgICA/LnN0eWxlLnNldFByb3BlcnR5KCctLWF4LXZoJywgd2luZG93LmlubmVySGVpZ2h0IC8gMTAwICsgJ3B4Jyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGF1dG9TeXN0ZW1Nb2RlRGV0ZWN0aW9uKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMudGhlbWVNb2RlKCkgPT09ICdzeXN0ZW0nKSB7XG4gICAgICBjb25zdCB0aGVtZU1vZGUgPSBldmVudC5tYXRjaGVzID8gJ2RhcmsnIDogJ2xpZ2h0JztcblxuICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgICAgaWYgKHRoZW1lTW9kZSA9PT0gJ2RhcmsnKSB7XG4gICAgICAgICAgY29uc3QgX2h0bWwgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgICAgICAgX2h0bWwuY2xhc3NMaXN0LmFkZCgnYXgtZGFyaycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IF9odG1sID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgICAgIF9odG1sLmNsYXNzTGlzdC5yZW1vdmUoJ2F4LWRhcmsnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICB0aGlzLmRldGVjdERhcmtNb2RlKCk7XG4gICAgICB0aGlzLmRldGVjdE9uUmVzaXplKCk7XG4gICAgICB0aGlzLmRldGVjdENsaWNrRXZlbnQoKTtcbiAgICAgIHRoaXMuZGV0ZWN0U2Nyb2xsRXZlbnQoKTtcbiAgICAgIHRoaXMuc2V0RnVsbEhlaWdodFJhdGlvKCk7XG4gICAgICB0aGlzLmRldGVjdERvY3VtZW50RGlyZWN0aW9uQ2hhbmdlKCk7XG4gICAgICB0aGlzLmF1dG9EZXRlY3RMYW5ndWFnZSgpO1xuICAgICAgdGhpcy5hdXRvRGV0ZWN0RGlyZWN0aW9uKCk7XG4gICAgICB0aGlzLmRldGVjdExhbmd1YWdlQ2hhbmdlRnJvbVN5c3RlbUV2ZW50cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0TGFuZ3VhZ2VDaGFuZ2VGcm9tU3lzdGVtRXZlbnRzKCkge1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLm9uRXZlbnQuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICBpZiAoZS50eXBlID09PSBBWFN5c3RlbUV2ZW50cy5BWExhbmd1YWdlQ2hhbmdlZCAmJiB0eXBlb2YgZS5wYXlsb2FkID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBLZWVwIHBsYXRmb3JtL2RvY3VtZW50IHN0YXRlIGluIHN5bmMgd2l0aCB0cmFuc2xhdGlvbiBtb2R1bGUgbGFuZ3VhZ2UgY2hhbmdlc1xuICAgICAgICB0aGlzLnNldExhbmd1YWdlKGUucGF5bG9hZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRldGVjdERhcmtNb2RlKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICAvLyBmcm9tRXZlbnQoVUlFdmVudCkod2luZG93LCcnKVxuICAgICAgaWYgKHdpbmRvdz8ubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXMpIHtcbiAgICAgICAgd2luZG93Py5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk/LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChldmVudCkgPT4ge1xuICAgICAgICAgIC8vIERldGVjdCBTeXN0ZW0gY29sb3IgbW9kZVxuICAgICAgICAgIHRoaXMuYXV0b1N5c3RlbU1vZGVEZXRlY3Rpb24oZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGVjdE9uUmVzaXplKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICBmcm9tRXZlbnQ8VUlFdmVudD4od2luZG93LCAncmVzaXplJylcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICB0aGlzLnJlc2l6ZS5uZXh0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgdGhpcy5zZXRGdWxsSGVpZ2h0UmF0aW8oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RDbGlja0V2ZW50KCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdjbGljaycsXG4gICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgdGhpcy5jbGljay5uZXh0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB0cnVlLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGVjdFNjcm9sbEV2ZW50KCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdzY3JvbGwnLFxuICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsLm5leHQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHRydWUsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0RG9jdW1lbnREaXJlY3Rpb25DaGFuZ2UoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgICBtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcbiAgICAgICAgICAvLyBEZXRlY3QgRGlyZWN0aW9uIENoYW5nZVxuICAgICAgICAgIGlmIChtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAnZGlyJykge1xuICAgICAgICAgICAgY29uc3QgZGlyID0gKHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlyJykgfHwgJ2x0cicpIGFzIHN0cmluZztcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQ6IEFYRGlyZWN0aW9uID0gZGlyLnRvTG93ZXJDYXNlKCkgPT09ICdydGwnID8gJ3J0bCcgOiAnbHRyJztcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aW9uJC5uZXh0KG5vcm1hbGl6ZWQpO1xuICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb24uc2V0KG5vcm1hbGl6ZWQpO1xuICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb25DaGFuZ2UubmV4dCh7IHNvdXJjZTogdGhpcywgbmF0aXZlRXZlbnQ6IG51bGwsIGRhdGE6IG5vcm1hbGl6ZWQgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdsYW5nJykge1xuICAgICAgICAgICAgY29uc3QgbGFuZyA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnbGFuZycpIHx8ICdlbi1VUyc7XG4gICAgICAgICAgICB0aGlzLmxhbmd1YWdlJC5uZXh0KGxhbmcpO1xuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZS5zZXQobGFuZyk7XG4gICAgICAgICAgICB0aGlzLmxhbmd1YWdlQ2hhbmdlLm5leHQoeyBzb3VyY2U6IHRoaXMsIG5hdGl2ZUV2ZW50OiBudWxsLCBkYXRhOiBsYW5nIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgIGNoaWxkTGlzdDogZmFsc2UsXG4gICAgICAgIGNoYXJhY3RlckRhdGE6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtcGxhdGZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3BsYXRmb3JtL3NyYy9hY29yZXgtY29yZS1wbGF0Zm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
@@ -448,6 +448,16 @@ class AXTranslationService {
448
448
  scope: options?.scope ?? this.config.defaults.scope,
449
449
  };
450
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
+ }
451
461
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
452
462
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }
453
463
  }
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-translation.mjs","sources":["../tmp-esm2022/translation/lib/translation.config.js","../tmp-esm2022/translation/lib/translation.loader.js","../tmp-esm2022/translation/lib/translation-loader.service.js","../tmp-esm2022/translation/lib/translation.parser.js","../tmp-esm2022/translation/lib/translation.resolver.js","../tmp-esm2022/translation/lib/translation.types.js","../tmp-esm2022/translation/lib/translation.service.js","../tmp-esm2022/translation/lib/translation-scope.resolver.js","../tmp-esm2022/translation/lib/translator.directive.js","../tmp-esm2022/translation/lib/translator.pipe.js","../tmp-esm2022/translation/lib/translation.module.js","../tmp-esm2022/translation/acorex-core-translation.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const AX_TRANSLATION_CONFIG = new InjectionToken('AX_TRANSLATION_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXTranslationDefaultConfig;\n },\n});\nexport const AXTranslationDefaultConfig = {\n defaults: {\n lang: 'en-US',\n scope: 'acorex',\n },\n preload: {\n langs: ['en-US'],\n scopes: ['acorex'],\n },\n resolver: {\n scopeKey: 'scope',\n },\n};\nexport function translationConfig(config = {}) {\n const result = {\n ...AXTranslationDefaultConfig,\n ...config,\n };\n return result;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBeUIvQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLEVBQUU7SUFDcEcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE9BQU8sMEJBQTBCLENBQUM7SUFDcEMsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUF3QjtJQUM3RCxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsT0FBTztRQUNiLEtBQUssRUFBRSxRQUFRO0tBQ2hCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQ2hCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNuQjtJQUNELFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFBRSxPQUFPO0tBQ2xCO0NBQ0YsQ0FBQztBQUlGLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxTQUFxQyxFQUFFO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHO1FBQ2IsR0FBRywwQkFBMEI7UUFDN0IsR0FBRyxNQUFNO0tBQ1YsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGVMYW5nLCBBWFRyYW5zbGF0ZVNjb3BlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUcmFuc2xhdGlvbkNvbmZpZyB7XG4gIGRlZmF1bHRzOiB7XG4gICAgbGFuZzogQVhUcmFuc2xhdGVMYW5nO1xuICAgIHNjb3BlOiBBWFRyYW5zbGF0ZVNjb3BlO1xuICB9O1xuICBwcmVsb2FkPzoge1xuICAgIGxhbmdzOiBBWFRyYW5zbGF0ZUxhbmdbXTtcbiAgICBzY29wZXM6IEFYVHJhbnNsYXRlU2NvcGVbXTtcbiAgfTtcbiAgZmFsbGJhY2tzPzoge1xuICAgIGxhbmdzPzogUmVjb3JkPEFYVHJhbnNsYXRlTGFuZywgQVhUcmFuc2xhdGVMYW5nW10+O1xuICAgIHNjb3Blcz86IFJlY29yZDxBWFRyYW5zbGF0ZVNjb3BlLCBBWFRyYW5zbGF0ZVNjb3BlW10+O1xuICB9O1xuICBhdmFpbGFibGU/OiB7XG4gICAgbGFuZ3M/OiBBWFRyYW5zbGF0ZUxhbmdbXTtcbiAgICBzY29wZXM/OiBBWFRyYW5zbGF0ZVNjb3BlW107XG4gIH07XG4gIHJlc29sdmVyPzoge1xuICAgIHNjb3BlS2V5OiBzdHJpbmc7IC8vIHVzZWQgdG8gZXh0cmFjdCBzY29wZSBmcm9tIHBhcmFtcywgZS5nLiBgc2NvcGU6ICdjb21tb24nYFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgQVhfVFJBTlNMQVRJT05fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEFYVHJhbnNsYXRpb25Db25maWc+KCdBWF9UUkFOU0xBVElPTl9DT05GSUcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4ge1xuICAgIHJldHVybiBBWFRyYW5zbGF0aW9uRGVmYXVsdENvbmZpZztcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQVhUcmFuc2xhdGlvbkRlZmF1bHRDb25maWc6IEFYVHJhbnNsYXRpb25Db25maWcgPSB7XG4gIGRlZmF1bHRzOiB7XG4gICAgbGFuZzogJ2VuLVVTJyxcbiAgICBzY29wZTogJ2Fjb3JleCcsXG4gIH0sXG4gIHByZWxvYWQ6IHtcbiAgICBsYW5nczogWydlbi1VUyddLFxuICAgIHNjb3BlczogWydhY29yZXgnXSxcbiAgfSxcbiAgcmVzb2x2ZXI6IHtcbiAgICBzY29wZUtleTogJ3Njb3BlJyxcbiAgfSxcbn07XG5cbmV4cG9ydCB0eXBlIEFYUGFydGlhbFRyYW5zbGF0aW9uQ29uZmlnID0gUGFydGlhbDxBWFRyYW5zbGF0aW9uQ29uZmlnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0aW9uQ29uZmlnKGNvbmZpZzogQVhQYXJ0aWFsVHJhbnNsYXRpb25Db25maWcgPSB7fSk6IEFYVHJhbnNsYXRpb25Db25maWcge1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgLi4uQVhUcmFuc2xhdGlvbkRlZmF1bHRDb25maWcsXG4gICAgLi4uY29uZmlnLFxuICB9O1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl19","import { InjectionToken } from '@angular/core';\nimport { of } from 'rxjs';\nexport class AXTranslationLoaderDefault {\n load(options) {\n return of({});\n }\n}\nexport const AX_TRANSLATION_LOADER = new InjectionToken('AX_TRANSLATION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXTranslationLoaderDefault();\n },\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFZdEMsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxJQUFJLENBQUMsT0FBbUM7UUFDdEMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHVCQUF1QixFQUFFO0lBQ3BHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixPQUFPLElBQUksMEJBQTBCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0ZUxhbmcsIEFYVHJhbnNsYXRlU2NvcGUsIEFYVHJhbnNsYXRpb24gfSBmcm9tICcuL3RyYW5zbGF0aW9uLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFRyYW5zbGF0aW9uTG9hZGVyT3B0aW9ucyB7XG4gIGxhbmc6IEFYVHJhbnNsYXRlTGFuZztcbiAgc2NvcGU/OiBBWFRyYW5zbGF0ZVNjb3BlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVHJhbnNsYXRpb25Mb2FkZXIge1xuICBsb2FkKG9wdGlvbnM6IEFYVHJhbnNsYXRpb25Mb2FkZXJPcHRpb25zKTogT2JzZXJ2YWJsZTxBWFRyYW5zbGF0aW9uPjtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRpb25Mb2FkZXJEZWZhdWx0IGltcGxlbWVudHMgQVhUcmFuc2xhdGlvbkxvYWRlciB7XG4gIGxvYWQob3B0aW9uczogQVhUcmFuc2xhdGlvbkxvYWRlck9wdGlvbnMpOiBPYnNlcnZhYmxlPEFYVHJhbnNsYXRpb24+IHtcbiAgICByZXR1cm4gb2Yoe30pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBWF9UUkFOU0xBVElPTl9MT0FERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhUcmFuc2xhdGlvbkxvYWRlcj4oJ0FYX1RSQU5TTEFUSU9OX0xPQURFUicsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBBWFRyYW5zbGF0aW9uTG9hZGVyRGVmYXVsdCgpO1xuICB9LFxufSk7XG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { firstValueFrom, of, shareReplay, tap } from 'rxjs';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AX_TRANSLATION_LOADER } from './translation.loader';\nimport { AXEventService, AXSystemEvents } from '@acorex/core/events';\nimport * as i0 from \"@angular/core\";\nexport class AXTranslationLoaderService {\n constructor() {\n this.loader = inject(AX_TRANSLATION_LOADER);\n this.config = inject(AX_TRANSLATION_CONFIG);\n this.eventService = inject(AXEventService);\n this.cache = new Map();\n this.inflight = new Map();\n }\n load(lang, scope) {\n const key = `${lang}:${scope}`;\n // 1. Check cache first\n if (this.cache.has(key)) {\n return of(this.cache.get(key));\n }\n // 2. Check if it's already in-flight\n if (this.inflight.has(key)) {\n return this.inflight.get(key);\n }\n // 3. Not in cache, not in-flight: Make the request\n const newObs = this.loader.load({ lang, scope }).pipe(tap({\n next: (data) => {\n this.cache.set(key, data);\n // No need to delete from inflight here, finalize will handle it\n // or delete it only after caching. If you delete here, and shareReplay\n // source completes, subsequent subscribers might re-trigger if not careful.\n // It's better to remove from inflight in finalize or after shareReplay has replayed.\n // For simplicity and common patterns, removing after caching within tap (before shareReplay)\n // can work if shareReplay handles the source completion correctly.\n // A safer bet is to remove it in finalize *after* shareReplay.\n // Emit event to notify other components that the language has been loaded\n this.eventService.emitEvent({\n type: AXSystemEvents.AXLanguageLoaded,\n payload: data,\n });\n },\n error: (err) => {\n console.error(`Error loading ${key}:`, err);\n // Remove from inflight on error so subsequent calls can retry\n this.inflight.delete(key);\n },\n // finalize is tricky with shareReplay if you want to keep the replayed value\n // but still clear inflight. For this pattern, deleting on next/error\n // *before* shareReplay often means that shareReplay will re-trigger the source\n // if the inflight observable is requested again after being deleted.\n // The current structure of deleting in `tap` and then `shareReplay`\n // might need `this.inflight.delete(key)` to be moved after `shareReplay` effect.\n // Let's try a common pattern:\n }), shareReplay(1), // Replay the last emitted value for subsequent subscribers\n tap({\n // This tap runs *after* shareReplay has done its work for the first subscriber\n // and for subsequent subscribers that get the replayed value.\n next: () => {\n // Once data is successfully loaded and cached (by the first tap),\n // and shareReplay ensures it's available, we can remove from inflight.\n // This means subsequent calls for the same key during the \"inflight\" period\n // get the shared observable, and after it resolves and is cached,\n // inflight is cleared.\n this.inflight.delete(key);\n },\n // Error is handled by the first tap, or catchError if you want to provide a fallback\n }));\n this.inflight.set(key, newObs); // Store the observable that includes caching and cleanup logic\n return newObs;\n }\n peek(lang, scope, key) {\n const cacheKey = `${lang}:${scope}`;\n const data = this.cache.get(cacheKey);\n return get(data, key, null);\n }\n async preload(options) {\n const langsToLoad = [...new Set(options?.langs ?? this.config.preload?.langs ?? [this.config.defaults.lang])];\n const scopesToLoad = [...new Set(options?.scopes ?? this.config.preload?.scopes ?? [this.config.defaults.scope])];\n const loadPromises = [];\n langsToLoad.forEach((lang) => {\n scopesToLoad.forEach((scope) => {\n const loadPromise = firstValueFrom(this.load(lang, scope)) // This should now always get a valid Observable\n .then((value) => ({ lang, scope, status: 'fulfilled', value }))\n .catch((reason) => ({ lang, scope, status: 'rejected', reason }));\n loadPromises.push(loadPromise);\n });\n });\n const results = await Promise.all(loadPromises);\n let allSucceeded = true;\n results.forEach((result) => {\n if (result.status === 'rejected') {\n allSucceeded = false;\n console.error(`Failed to preload translations for lang: ${result.lang}, scope: ${result.scope}. Reason:`, result.reason);\n }\n else {\n // console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs\n }\n // else {\n // console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs\n // }\n });\n if (!allSucceeded) {\n console.error('One or more translation preloads failed. See console for details.');\n // throw new Error(\"One or more translation preloads failed. See console for details.\");\n }\n // The second results.forEach loop in your original code was redundant, I've removed it.\n // If it was for a different purpose, you can add it back.\n }\n clear() {\n this.cache.clear();\n this.inflight.clear();\n }\n getFallbackLangs(lang) {\n return this.config.fallbacks?.langs?.[lang] ?? [];\n }\n getFallbackScopes(scope) {\n return this.config.fallbacks?.scopes?.[scope] ?? [];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationLoaderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationLoaderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQWMsY0FBYyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3JFLE1BQU0sT0FBTywwQkFBMEI7SUFEdkM7UUFFVSxXQUFNLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdkMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXRDLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUN6QyxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXFDLENBQUM7S0FpSWpFO0lBL0hRLElBQUksQ0FBQyxJQUFxQixFQUFFLEtBQXVCO1FBQ3hELE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBRS9CLHVCQUF1QjtRQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxF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QVcsRUFDMUYsTUFBTSxDQUFDLE1BQU0sQ0FDZCxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLCtIQUErSDtZQUNqSSxDQUFDO1lBQ0QsU0FBUztZQUNULCtIQUErSDtZQUMvSCxJQUFJO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1lBQ25GLHdGQUF3RjtRQUMxRixDQUFDO1FBQ0Qsd0ZBQXdGO1FBQ3hGLDBEQUEwRDtJQUM1RCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsSUFBcUI7UUFDM0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQXVCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RELENBQUM7OEdBdElVLDBCQUEwQjtrSEFBMUIsMEJBQTBCLGNBRGIsTUFBTTs7MkZBQ25CLDBCQUEwQjtrQkFEdEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSwgb2YsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0NPTkZJRyB9IGZyb20gJy4vdHJhbnNsYXRpb24uY29uZmlnJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0xPQURFUiB9IGZyb20gJy4vdHJhbnNsYXRpb24ubG9hZGVyJztcbmltcG9ydCB7IEFYVHJhbnNsYXRlTGFuZywgQVhUcmFuc2xhdGVTY29wZSwgQVhUcmFuc2xhdGlvbiB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhFdmVudFNlcnZpY2UsIEFYU3lzdGVtRXZlbnRzIH0gZnJvbSAnQGFjb3JleC9jb3JlL2V2ZW50cyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdGlvbkxvYWRlclNlcnZpY2Uge1xuICBwcml2YXRlIGxvYWRlciA9IGluamVjdChBWF9UUkFOU0xBVElPTl9MT0FERVIpO1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChBWF9UUkFOU0xBVElPTl9DT05GSUcpO1xuICBwcml2YXRlIGV2ZW50U2VydmljZSA9IGluamVjdChBWEV2ZW50U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBBWFRyYW5zbGF0aW9uPigpO1xuICBwcml2YXRlIGluZmxpZ2h0ID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8QVhUcmFuc2xhdGlvbj4+KCk7XG5cbiAgcHVibGljIGxvYWQobGFuZzogQVhUcmFuc2xhdGVMYW5nLCBzY29wZTogQVhUcmFuc2xhdGVTY29wZSk6IE9ic2VydmFibGU8QVhUcmFuc2xhdGlvbj4ge1xuICAgIGNvbnN0IGtleSA9IGAke2xhbmd9OiR7c2NvcGV9YDtcblxuICAgIC8vIDEuIENoZWNrIGNhY2hlIGZpcnN0XG4gICAgaWYgKHRoaXMuY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmNhY2hlLmdldChrZXkpISk7XG4gICAgfVxuXG4gICAgLy8gMi4gQ2hlY2sgaWYgaXQncyBhbHJlYWR5IGluLWZsaWdodFxuICAgIGlmICh0aGlzLmluZmxpZ2h0LmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbmZsaWdodC5nZXQoa2V5KSE7XG4gICAgfVxuXG4gICAgLy8gMy4gTm90IGluIGNhY2hlLCBub3QgaW4tZmxpZ2h0OiBNYWtlIHRoZSByZXF1ZXN0XG4gICAgY29uc3QgbmV3T2JzID0gdGhpcy5sb2FkZXIubG9hZCh7IGxhbmcsIHNjb3BlIH0pLnBpcGUoXG4gICAgICB0YXAoe1xuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KGtleSwgZGF0YSk7XG4gICAgICAgICAgLy8gTm8gbmVlZCB0byBkZWxldGUgZnJvbSBpbmZsaWdodCBoZXJlLCBmaW5hbGl6ZSB3aWxsIGhhbmRsZSBpdFxuICAgICAgICAgIC8vIG9yIGRlbGV0ZSBpdCBvbmx5IGFmdGVyIGNhY2hpbmcuIElmIHlvdSBkZWxldGUgaGVyZSwgYW5kIHNoYXJlUmVwbGF5XG4gICAgICAgICAgLy8gc291cmNlIGNvbXBsZXRlcywgc3Vic2VxdWVudCBzdWJzY3JpYmVycyBtaWdodCByZS10cmlnZ2VyIGlmIG5vdCBjYXJlZnVsLlxuICAgICAgICAgIC8vIEl0J3MgYmV0dGVyIHRvIHJlbW92ZSBmcm9tIGluZmxpZ2h0IGluIGZpbmFsaXplIG9yIGFmdGVyIHNoYXJlUmVwbGF5IGhhcyByZXBsYXllZC5cbiAgICAgICAgICAvLyBGb3Igc2ltcGxpY2l0eSBhbmQgY29tbW9uIHBhdHRlcm5zLCByZW1vdmluZyBhZnRlciBjYWNoaW5nIHdpdGhpbiB0YXAgKGJlZm9yZSBzaGFyZVJlcGxheSlcbiAgICAgICAgICAvLyBjYW4gd29yayBpZiBzaGFyZVJlcGxheSBoYW5kbGVzIHRoZSBzb3VyY2UgY29tcGxldGlvbiBjb3JyZWN0bHkuXG4gICAgICAgICAgLy8gQSBzYWZlciBiZXQgaXMgdG8gcmVtb3ZlIGl0IGluIGZpbmFsaXplICphZnRlciogc2hhcmVSZXBsYXkuXG5cbiAgICAgICAgICAvLyBFbWl0IGV2ZW50IHRvIG5vdGlmeSBvdGhlciBjb21wb25lbnRzIHRoYXQgdGhlIGxhbmd1YWdlIGhhcyBiZWVuIGxvYWRlZFxuICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmVtaXRFdmVudCh7XG4gICAgICAgICAgICB0eXBlOiBBWFN5c3RlbUV2ZW50cy5BWExhbmd1YWdlTG9hZGVkLFxuICAgICAgICAgICAgcGF5bG9hZDogZGF0YSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nICR7a2V5fTpgLCBlcnIpO1xuICAgICAgICAgIC8vIFJlbW92ZSBmcm9tIGluZmxpZ2h0IG9uIGVycm9yIHNvIHN1YnNlcXVlbnQgY2FsbHMgY2FuIHJldHJ5XG4gICAgICAgICAgdGhpcy5pbmZsaWdodC5kZWxldGUoa2V5KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZmluYWxpemUgaXMgdHJpY2t5IHdpdGggc2hhcmVSZXBsYXkgaWYgeW91IHdhbnQgdG8ga2VlcCB0aGUgcmVwbGF5ZWQgdmFsdWVcbiAgICAgICAgLy8gYnV0IHN0aWxsIGNsZWFyIGluZmxpZ2h0LiBGb3IgdGhpcyBwYXR0ZXJuLCBkZWxldGluZyBvbiBuZXh0L2Vycm9yXG4gICAgICAgIC8vICpiZWZvcmUqIHNoYXJlUmVwbGF5IG9mdGVuIG1lYW5zIHRoYXQgc2hhcmVSZXBsYXkgd2lsbCByZS10cmlnZ2VyIHRoZSBzb3VyY2VcbiAgICAgICAgLy8gaWYgdGhlIGluZmxpZ2h0IG9ic2VydmFibGUgaXMgcmVxdWVzdGVkIGFnYWluIGFmdGVyIGJlaW5nIGRlbGV0ZWQuXG4gICAgICAgIC8vIFRoZSBjdXJyZW50IHN0cnVjdHVyZSBvZiBkZWxldGluZyBpbiBgdGFwYCBhbmQgdGhlbiBgc2hhcmVSZXBsYXlgXG4gICAgICAgIC8vIG1pZ2h0IG5lZWQgYHRoaXMuaW5mbGlnaHQuZGVsZXRlKGtleSlgIHRvIGJlIG1vdmVkIGFmdGVyIGBzaGFyZVJlcGxheWAgZWZmZWN0LlxuICAgICAgICAvLyBMZXQncyB0cnkgYSBjb21tb24gcGF0dGVybjpcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSksIC8vIFJlcGxheSB0aGUgbGFzdCBlbWl0dGVkIHZhbHVlIGZvciBzdWJzZXF1ZW50IHN1YnNjcmliZXJzXG4gICAgICB0YXAoe1xuICAgICAgICAvLyBUaGlzIHRhcCBydW5zICphZnRlciogc2hhcmVSZXBsYXkgaGFzIGRvbmUgaXRzIHdvcmsgZm9yIHRoZSBmaXJzdCBzdWJzY3JpYmVyXG4gICAgICAgIC8vIGFuZCBmb3Igc3Vic2VxdWVudCBzdWJzY3JpYmVycyB0aGF0IGdldCB0aGUgcmVwbGF5ZWQgdmFsdWUuXG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBPbmNlIGRhdGEgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgY2FjaGVkIChieSB0aGUgZmlyc3QgdGFwKSxcbiAgICAgICAgICAvLyBhbmQgc2hhcmVSZXBsYXkgZW5zdXJlcyBpdCdzIGF2YWlsYWJsZSwgd2UgY2FuIHJlbW92ZSBmcm9tIGluZmxpZ2h0LlxuICAgICAgICAgIC8vIFRoaXMgbWVhbnMgc3Vic2VxdWVudCBjYWxscyBmb3IgdGhlIHNhbWUga2V5IGR1cmluZyB0aGUgXCJpbmZsaWdodFwiIHBlcmlvZFxuICAgICAgICAgIC8vIGdldCB0aGUgc2hhcmVkIG9ic2VydmFibGUsIGFuZCBhZnRlciBpdCByZXNvbHZlcyBhbmQgaXMgY2FjaGVkLFxuICAgICAgICAgIC8vIGluZmxpZ2h0IGlzIGNsZWFyZWQuXG4gICAgICAgICAgdGhpcy5pbmZsaWdodC5kZWxldGUoa2V5KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gRXJyb3IgaXMgaGFuZGxlZCBieSB0aGUgZmlyc3QgdGFwLCBvciBjYXRjaEVycm9yIGlmIHlvdSB3YW50IHRvIHByb3ZpZGUgYSBmYWxsYmFja1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuaW5mbGlnaHQuc2V0KGtleSwgbmV3T2JzKTsgLy8gU3RvcmUgdGhlIG9ic2VydmFibGUgdGhhdCBpbmNsdWRlcyBjYWNoaW5nIGFuZCBjbGVhbnVwIGxvZ2ljXG4gICAgcmV0dXJuIG5ld09icztcbiAgfVxuXG4gIHB1YmxpYyBwZWVrKGxhbmc6IEFYVHJhbnNsYXRlTGFuZywgc2NvcGU6IEFYVHJhbnNsYXRlU2NvcGUsIGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBgJHtsYW5nfToke3Njb3BlfWA7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuY2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICByZXR1cm4gZ2V0KGRhdGEsIGtleSwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJlbG9hZChvcHRpb25zPzogeyBsYW5ncz86IEFYVHJhbnNsYXRlTGFuZ1tdOyBzY29wZXM/OiBBWFRyYW5zbGF0ZVNjb3BlW10gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxhbmdzVG9Mb2FkID0gWy4uLm5ldyBTZXQob3B0aW9ucz8ubGFuZ3MgPz8gdGhpcy5jb25maWcucHJlbG9hZD8ubGFuZ3MgPz8gW3RoaXMuY29uZmlnLmRlZmF1bHRzLmxhbmddKV07XG4gICAgY29uc3Qgc2NvcGVzVG9Mb2FkID0gWy4uLm5ldyBTZXQob3B0aW9ucz8uc2NvcGVzID8/IHRoaXMuY29uZmlnLnByZWxvYWQ/LnNjb3BlcyA/PyBbdGhpcy5jb25maWcuZGVmYXVsdHMuc2NvcGVdKV07XG5cbiAgICBjb25zdCBsb2FkUHJvbWlzZXM6IFByb21pc2U8XG4gICAgICB8IHsgbGFuZzogQVhUcmFuc2xhdGVMYW5nOyBzY29wZTogQVhUcmFuc2xhdGVTY29wZTsgc3RhdHVzOiAnZnVsZmlsbGVkJzsgdmFsdWU6IEFYVHJhbnNsYXRpb24gfSAvLyBDaGFuZ2VkIGFueSB0byBBWFRyYW5zbGF0aW9uXG4gICAgICB8IHsgbGFuZzogQVhUcmFuc2xhdGVMYW5nOyBzY29wZTogQVhUcmFuc2xhdGVTY29wZTsgc3RhdHVzOiAncmVqZWN0ZWQnOyByZWFzb246IGFueSB9XG4gICAgPltdID0gW107XG5cbiAgICBsYW5nc1RvTG9hZC5mb3JFYWNoKChsYW5nKSA9PiB7XG4gICAgICBzY29wZXNUb0xvYWQuZm9yRWFjaCgoc2NvcGUpID0+IHtcbiAgICAgICAgY29uc3QgbG9hZFByb21pc2UgPSBmaXJzdFZhbHVlRnJvbSh0aGlzLmxvYWQobGFuZywgc2NvcGUpKSAvLyBUaGlzIHNob3VsZCBub3cgYWx3YXlzIGdldCBhIHZhbGlkIE9ic2VydmFibGVcbiAgICAgICAgICAudGhlbigodmFsdWUpID0+ICh7IGxhbmcsIHNjb3BlLCBzdGF0dXM6ICdmdWxmaWxsZWQnIGFzIGNvbnN0LCB2YWx1ZSB9KSlcbiAgICAgICAgICAuY2F0Y2goKHJlYXNvbikgPT4gKHsgbGFuZywgc2NvcGUsIHN0YXR1czogJ3JlamVjdGVkJyBhcyBjb25zdCwgcmVhc29uIH0pKTtcbiAgICAgICAgbG9hZFByb21pc2VzLnB1c2gobG9hZFByb21pc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwobG9hZFByb21pc2VzKTtcblxuICAgIGxldCBhbGxTdWNjZWVkZWQgPSB0cnVlO1xuICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3JlamVjdGVkJykge1xuICAgICAgICBhbGxTdWNjZWVkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgRmFpbGVkIHRvIHByZWxvYWQgdHJhbnNsYXRpb25zIGZvciBsYW5nOiAke3Jlc3VsdC5sYW5nfSwgc2NvcGU6ICR7cmVzdWx0LnNjb3BlfS4gUmVhc29uOmAsXG4gICAgICAgICAgcmVzdWx0LnJlYXNvbixcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgcHJlbG9hZGVkIGxhbmc6ICR7cmVzdWx0Lmxhbmd9LCBzY29wZTogJHtyZXN1bHQuc2NvcGV9YCk7IC8vIE9wdGlvbmFsbHkgdW5jb21tZW50IGZvciBzdWNjZXNzIGxvZ3NcbiAgICAgIH1cbiAgICAgIC8vIGVsc2Uge1xuICAgICAgLy8gY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSBwcmVsb2FkZWQgbGFuZzogJHtyZXN1bHQubGFuZ30sIHNjb3BlOiAke3Jlc3VsdC5zY29wZX1gKTsgLy8gT3B0aW9uYWxseSB1bmNvbW1lbnQgZm9yIHN1Y2Nlc3MgbG9nc1xuICAgICAgLy8gfVxuICAgIH0pO1xuXG4gICAgaWYgKCFhbGxTdWNjZWVkZWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ09uZSBvciBtb3JlIHRyYW5zbGF0aW9uIHByZWxvYWRzIGZhaWxlZC4gU2VlIGNvbnNvbGUgZm9yIGRldGFpbHMuJyk7XG4gICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoXCJPbmUgb3IgbW9yZSB0cmFuc2xhdGlvbiBwcmVsb2FkcyBmYWlsZWQuIFNlZSBjb25zb2xlIGZvciBkZXRhaWxzLlwiKTtcbiAgICB9XG4gICAgLy8gVGhlIHNlY29uZCByZXN1bHRzLmZvckVhY2ggbG9vcCBpbiB5b3VyIG9yaWdpbmFsIGNvZGUgd2FzIHJlZHVuZGFudCwgSSd2ZSByZW1vdmVkIGl0LlxuICAgIC8vIElmIGl0IHdhcyBmb3IgYSBkaWZmZXJlbnQgcHVycG9zZSwgeW91IGNhbiBhZGQgaXQgYmFjay5cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgdGhpcy5pbmZsaWdodC5jbGVhcigpO1xuICB9XG5cbiAgcHVibGljIGdldEZhbGxiYWNrTGFuZ3MobGFuZzogQVhUcmFuc2xhdGVMYW5nKTogQVhUcmFuc2xhdGVMYW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mYWxsYmFja3M/LmxhbmdzPy5bbGFuZ10gPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0RmFsbGJhY2tTY29wZXMoc2NvcGU6IEFYVHJhbnNsYXRlU2NvcGUpOiBBWFRyYW5zbGF0ZVNjb3BlW10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mYWxsYmFja3M/LnNjb3Blcz8uW3Njb3BlXSA/PyBbXTtcbiAgfVxufVxuIl19","export class TranslationParserService {\n constructor() {\n this.legacyRegex = /t\\([\"']([^\"']+)[\"']\\s*(?:,\\s*(\\{.*?\\}))?\\)/g;\n this.inlineRegex = /@([a-zA-Z\\-]+:)?([a-zA-Z0-9_-]+):([a-zA-Z0-9_.:-]+)(?=[\\\\s.,;!?)]|$)/g;\n }\n isExpression(value) {\n return typeof value === 'string' && (value.includes('t(') || value.includes('@'));\n }\n parse(expression, currentLang, currentScope) {\n const tokens = [];\n // Extract inline references like @lang:scope:key or @scope:key\n let inlineMatch;\n while ((inlineMatch = this.inlineRegex.exec(expression)) !== null) {\n const langPart = inlineMatch[1]?.replace(':', '') ?? null;\n const scope = inlineMatch[2] ?? currentScope;\n const key = inlineMatch[3];\n const fullMatch = inlineMatch[0];\n tokens.push({ lang: langPart || currentLang, scope, key, fullMatch });\n }\n // Extract legacy expressions\n let legacyMatch;\n while ((legacyMatch = this.legacyRegex.exec(expression)) !== null) {\n const key = legacyMatch[1];\n const rawOptions = legacyMatch[2];\n let scope = currentScope;\n let lang = currentLang;\n if (rawOptions) {\n try {\n const jsonString = rawOptions.replace(/(['\"])?([a-zA-Z0-9_]+)(['\"])?\\s*:/g, '\"$2\":').replace(/'/g, '\"');\n const options = JSON.parse(jsonString);\n scope = options.scope || scope;\n lang = options.lang || lang;\n }\n catch (err) {\n console.error('Invalid translation expression options:', err);\n }\n }\n tokens.push({ key, scope, lang, fullMatch: legacyMatch[0] });\n }\n return tokens;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ucGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLnBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sd0JBQXdCO0lBQXJDO1FBQ21CLGdCQUFXLEdBQUcsNkNBQTZDLENBQUM7UUFDNUQsZ0JBQVcsR0FBRyx1RUFBdUUsQ0FBQztJQTRDekcsQ0FBQztJQTFDUSxZQUFZLENBQUMsS0FBYTtRQUMvQixPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBa0IsRUFBRSxXQUFtQixFQUFFLFlBQW9CO1FBQ3hFLE1BQU0sTUFBTSxHQUFvQixFQUFFLENBQUM7UUFFbkMsK0RBQStEO1FBQy9ELElBQUksV0FBVyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNsRSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDMUQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQztZQUM3QyxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWpDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxJQUFJLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixJQUFJLFdBQVcsQ0FBQztRQUNoQixPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEUsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUM7WUFDekIsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDO1lBRXZCLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDO29CQUNILE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsb0NBQW9DLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDeEcsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDdkMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO29CQUMvQixJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7Z0JBQzlCLENBQUM7Z0JBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztvQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRSxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQYXJzZWRUb2tlbiB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25QYXJzZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsZWdhY3lSZWdleCA9IC90XFwoW1wiJ10oW15cIiddKylbXCInXVxccyooPzosXFxzKihcXHsuKj9cXH0pKT9cXCkvZztcbiAgcHJpdmF0ZSByZWFkb25seSBpbmxpbmVSZWdleCA9IC9AKFthLXpBLVpcXC1dKzopPyhbYS16QS1aMC05Xy1dKyk6KFthLXpBLVowLTlfLjotXSspKD89W1xcXFxzLiw7IT8pXXwkKS9nO1xuXG4gIHB1YmxpYyBpc0V4cHJlc3Npb24odmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICh2YWx1ZS5pbmNsdWRlcygndCgnKSB8fCB2YWx1ZS5pbmNsdWRlcygnQCcpKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZShleHByZXNzaW9uOiBzdHJpbmcsIGN1cnJlbnRMYW5nOiBzdHJpbmcsIGN1cnJlbnRTY29wZTogc3RyaW5nKTogQVhQYXJzZWRUb2tlbltdIHtcbiAgICBjb25zdCB0b2tlbnM6IEFYUGFyc2VkVG9rZW5bXSA9IFtdO1xuXG4gICAgLy8gRXh0cmFjdCBpbmxpbmUgcmVmZXJlbmNlcyBsaWtlIEBsYW5nOnNjb3BlOmtleSBvciBAc2NvcGU6a2V5XG4gICAgbGV0IGlubGluZU1hdGNoO1xuICAgIHdoaWxlICgoaW5saW5lTWF0Y2ggPSB0aGlzLmlubGluZVJlZ2V4LmV4ZWMoZXhwcmVzc2lvbikpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBsYW5nUGFydCA9IGlubGluZU1hdGNoWzFdPy5yZXBsYWNlKCc6JywgJycpID8/IG51bGw7XG4gICAgICBjb25zdCBzY29wZSA9IGlubGluZU1hdGNoWzJdID8/IGN1cnJlbnRTY29wZTtcbiAgICAgIGNvbnN0IGtleSA9IGlubGluZU1hdGNoWzNdO1xuICAgICAgY29uc3QgZnVsbE1hdGNoID0gaW5saW5lTWF0Y2hbMF07XG5cbiAgICAgIHRva2Vucy5wdXNoKHsgbGFuZzogbGFuZ1BhcnQgfHwgY3VycmVudExhbmcsIHNjb3BlLCBrZXksIGZ1bGxNYXRjaCB9KTtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IGxlZ2FjeSBleHByZXNzaW9uc1xuICAgIGxldCBsZWdhY3lNYXRjaDtcbiAgICB3aGlsZSAoKGxlZ2FjeU1hdGNoID0gdGhpcy5sZWdhY3lSZWdleC5leGVjKGV4cHJlc3Npb24pKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qga2V5ID0gbGVnYWN5TWF0Y2hbMV07XG4gICAgICBjb25zdCByYXdPcHRpb25zID0gbGVnYWN5TWF0Y2hbMl07XG4gICAgICBsZXQgc2NvcGUgPSBjdXJyZW50U2NvcGU7XG4gICAgICBsZXQgbGFuZyA9IGN1cnJlbnRMYW5nO1xuXG4gICAgICBpZiAocmF3T3B0aW9ucykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSByYXdPcHRpb25zLnJlcGxhY2UoLyhbJ1wiXSk/KFthLXpBLVowLTlfXSspKFsnXCJdKT9cXHMqOi9nLCAnXCIkMlwiOicpLnJlcGxhY2UoLycvZywgJ1wiJyk7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XG4gICAgICAgICAgc2NvcGUgPSBvcHRpb25zLnNjb3BlIHx8IHNjb3BlO1xuICAgICAgICAgIGxhbmcgPSBvcHRpb25zLmxhbmcgfHwgbGFuZztcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCB0cmFuc2xhdGlvbiBleHByZXNzaW9uIG9wdGlvbnM6JywgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0b2tlbnMucHVzaCh7IGtleSwgc2NvcGUsIGxhbmcsIGZ1bGxNYXRjaDogbGVnYWN5TWF0Y2hbMF0gfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { TranslationParserService } from './translation.parser';\n// Helper function to escape special characters for use in a regular expression\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport class TranslationResolverService {\n constructor() {\n this.loaderService = inject(AXTranslationLoaderService);\n this.parser = new TranslationParserService();\n }\n async resolve(lang, scope, key, params) {\n let result = this.loaderService.peek(lang, scope, key);\n if (result == null) {\n await firstValueFrom(this.loaderService.load(lang, scope));\n result = this.loaderService.peek(lang, scope, key);\n }\n if (result == null) {\n const unresolvedResult = key;\n return this.format(unresolvedResult, params);\n }\n // Recursively resolve references\n if (typeof result === 'string' && this.parser.isExpression(result)) {\n const tokens = this.parser.parse(result, lang, scope);\n if (tokens.length > 0) {\n const first = tokens[0];\n result = await this.resolve(first.lang || lang, first.scope || scope, first.key, params);\n }\n }\n return this.format(result, params);\n }\n format(text, params) {\n if (!params || typeof text !== 'string' || Object.keys(params).length === 0) {\n return text;\n }\n return Object.keys(params).reduce((currentText, paramKey) => {\n // paramKey is the key from the params object, e.g., \"title\" or \" title \"\n const valueToInsert = params[paramKey];\n // 1. Trim the key from the params object to handle potential leading/trailing spaces.\n // e.g., if paramKey is \" title \", keyForPattern becomes \"title\".\n const keyForPattern = paramKey.trim();\n // If trimming results in an empty string, it's not a valid placeholder to replace.\n if (keyForPattern === '') {\n return currentText;\n }\n // 2. Escape the trimmed key to safely use it in a regular expression.\n // This handles cases where the key might contain special regex characters (e.g., \"user.name\", \"item[0]\").\n const escapedKey = escapeRegExp(keyForPattern);\n // 3. Construct the RegExp. This will match:\n // - {{KEY}}\n // - {{ KEY }}\n // - {{ KEY }}\n // etc., where KEY is the (trimmed and escaped) paramKey.\n const re = new RegExp(`{{\\\\s*${escapedKey}\\\\s*}}`, 'g');\n // 4. Replace occurrences, ensuring the value is a string.\n return currentText.replace(re, String(valueToInsert));\n }, text);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24ucmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2hFLCtFQUErRTtBQUMvRSxTQUFTLFlBQVksQ0FBQyxNQUFjO0lBQ2xDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsTUFBTSxPQUFPLDBCQUEwQjtJQUF2QztRQUNVLGtCQUFhLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDbkQsV0FBTSxHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztJQWlFbEQsQ0FBQztJQS9EQyxLQUFLLENBQUMsT0FBTyxDQUNYLElBQXFCLEVBQ3JCLEtBQXVCLEVBQ3ZCLEdBQVcsRUFDWCxNQUEwQjtRQUUxQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXZELElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25CLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNELE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuQixNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELGlDQUFpQztRQUNqQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzRixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFZLEVBQUUsTUFBMEI7UUFDcEQsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUMxRCx5RUFBeUU7WUFDekUsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZDLHNGQUFzRjtZQUN0RixvRUFBb0U7WUFDcEUsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXRDLG1GQUFtRjtZQUNuRixJQUFJLGFBQWEsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxXQUFXLENBQUM7WUFDckIsQ0FBQztZQUVELHNFQUFzRTtZQUN0RSw2R0FBNkc7WUFDN0csTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRS9DLDRDQUE0QztZQUM1QyxlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQiw0REFBNEQ7WUFDNUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsU0FBUyxVQUFVLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUV4RCwwREFBMEQ7WUFDMUQsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25QYXJzZXJTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5wYXJzZXInO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGVMYW5nLCBBWFRyYW5zbGF0ZVBhcmFtcywgQVhUcmFuc2xhdGVTY29wZSB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBmb3IgdXNlIGluIGEgcmVndWxhciBleHByZXNzaW9uXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJyk7XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvblJlc29sdmVyU2VydmljZSB7XG4gIHByaXZhdGUgbG9hZGVyU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSk7XG4gIHByaXZhdGUgcGFyc2VyID0gbmV3IFRyYW5zbGF0aW9uUGFyc2VyU2VydmljZSgpO1xuXG4gIGFzeW5jIHJlc29sdmUoXG4gICAgbGFuZzogQVhUcmFuc2xhdGVMYW5nLFxuICAgIHNjb3BlOiBBWFRyYW5zbGF0ZVNjb3BlLFxuICAgIGtleTogc3RyaW5nLFxuICAgIHBhcmFtcz86IEFYVHJhbnNsYXRlUGFyYW1zLFxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmxvYWRlclNlcnZpY2UucGVlayhsYW5nLCBzY29wZSwga2V5KTtcblxuICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5sb2FkZXJTZXJ2aWNlLmxvYWQobGFuZywgc2NvcGUpKTtcbiAgICAgIHJlc3VsdCA9IHRoaXMubG9hZGVyU2VydmljZS5wZWVrKGxhbmcsIHNjb3BlLCBrZXkpO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgY29uc3QgdW5yZXNvbHZlZFJlc3VsdCA9IGtleTtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdCh1bnJlc29sdmVkUmVzdWx0LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIC8vIFJlY3Vyc2l2ZWx5IHJlc29sdmUgcmVmZXJlbmNlc1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyAmJiB0aGlzLnBhcnNlci5pc0V4cHJlc3Npb24ocmVzdWx0KSkge1xuICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy5wYXJzZXIucGFyc2UocmVzdWx0LCBsYW5nLCBzY29wZSk7XG4gICAgICBpZiAodG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgZmlyc3QgPSB0b2tlbnNbMF07XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMucmVzb2x2ZShmaXJzdC5sYW5nIHx8IGxhbmcsIGZpcnN0LnNjb3BlIHx8IHNjb3BlLCBmaXJzdC5rZXksIHBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0KHJlc3VsdCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXQodGV4dDogc3RyaW5nLCBwYXJhbXM/OiBBWFRyYW5zbGF0ZVBhcmFtcyk6IHN0cmluZyB7XG4gICAgaWYgKCFwYXJhbXMgfHwgdHlwZW9mIHRleHQgIT09ICdzdHJpbmcnIHx8IE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMocGFyYW1zKS5yZWR1Y2UoKGN1cnJlbnRUZXh0LCBwYXJhbUtleSkgPT4ge1xuICAgICAgLy8gcGFyYW1LZXkgaXMgdGhlIGtleSBmcm9tIHRoZSBwYXJhbXMgb2JqZWN0LCBlLmcuLCBcInRpdGxlXCIgb3IgXCIgdGl0bGUgXCJcbiAgICAgIGNvbnN0IHZhbHVlVG9JbnNlcnQgPSBwYXJhbXNbcGFyYW1LZXldO1xuXG4gICAgICAvLyAxLiBUcmltIHRoZSBrZXkgZnJvbSB0aGUgcGFyYW1zIG9iamVjdCB0byBoYW5kbGUgcG90ZW50aWFsIGxlYWRpbmcvdHJhaWxpbmcgc3BhY2VzLlxuICAgICAgLy8gICAgZS5nLiwgaWYgcGFyYW1LZXkgaXMgXCIgdGl0bGUgXCIsIGtleUZvclBhdHRlcm4gYmVjb21lcyBcInRpdGxlXCIuXG4gICAgICBjb25zdCBrZXlGb3JQYXR0ZXJuID0gcGFyYW1LZXkudHJpbSgpO1xuXG4gICAgICAvLyBJZiB0cmltbWluZyByZXN1bHRzIGluIGFuIGVtcHR5IHN0cmluZywgaXQncyBub3QgYSB2YWxpZCBwbGFjZWhvbGRlciB0byByZXBsYWNlLlxuICAgICAgaWYgKGtleUZvclBhdHRlcm4gPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50VGV4dDtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gRXNjYXBlIHRoZSB0cmltbWVkIGtleSB0byBzYWZlbHkgdXNlIGl0IGluIGEgcmVndWxhciBleHByZXNzaW9uLlxuICAgICAgLy8gICAgVGhpcyBoYW5kbGVzIGNhc2VzIHdoZXJlIHRoZSBrZXkgbWlnaHQgY29udGFpbiBzcGVjaWFsIHJlZ2V4IGNoYXJhY3RlcnMgKGUuZy4sIFwidXNlci5uYW1lXCIsIFwiaXRlbVswXVwiKS5cbiAgICAgIGNvbnN0IGVzY2FwZWRLZXkgPSBlc2NhcGVSZWdFeHAoa2V5Rm9yUGF0dGVybik7XG5cbiAgICAgIC8vIDMuIENvbnN0cnVjdCB0aGUgUmVnRXhwLiBUaGlzIHdpbGwgbWF0Y2g6XG4gICAgICAvLyAgICAtIHt7S0VZfX1cbiAgICAgIC8vICAgIC0ge3sgS0VZIH19XG4gICAgICAvLyAgICAtIHt7ICBLRVkgIH19XG4gICAgICAvLyAgICBldGMuLCB3aGVyZSBLRVkgaXMgdGhlICh0cmltbWVkIGFuZCBlc2NhcGVkKSBwYXJhbUtleS5cbiAgICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChge3tcXFxccyoke2VzY2FwZWRLZXl9XFxcXHMqfX1gLCAnZycpO1xuXG4gICAgICAvLyA0LiBSZXBsYWNlIG9jY3VycmVuY2VzLCBlbnN1cmluZyB0aGUgdmFsdWUgaXMgYSBzdHJpbmcuXG4gICAgICByZXR1cm4gY3VycmVudFRleHQucmVwbGFjZShyZSwgU3RyaW5nKHZhbHVlVG9JbnNlcnQpKTtcbiAgICB9LCB0ZXh0KTtcbiAgfVxufVxuIl19","export const LOCALE_KEY_REGEX = /^(\\*-\\*|[a-z]{2}-[A-Z]{2})$/;\nexport function resolveMultiLanguageValue(value, locale) {\n return value[locale] ?? value['en-US'] ?? Object.values(value).find((item) => item != null) ?? '';\n}\nexport function isValidMultiLanguageObject(value) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const entries = Object.entries(value);\n if (!entries.length) {\n return false;\n }\n return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');\n}\n/**\n * Resolves {@link AXMultiLanguageString} to a single string for the given locale.\n * Fallback order: `currentLocale` → `en-US` → first map value.\n */\nexport function resolveMultiLanguageString(content, currentLocale) {\n if (content == null || content === '') {\n return '';\n }\n if (typeof content === 'string') {\n return content;\n }\n if (!isValidMultiLanguageObject(content)) {\n return String(content);\n }\n return resolveMultiLanguageValue(content, currentLocale);\n}\n/**\n * Creates an {@link AXMultiLanguageMap} with `en-US` and `fa-IR` entries.\n * Use for seed data, tests, and demos that supply English and Persian copy explicitly.\n */\nexport function createMultiLanguageString(enUs, faIr) {\n return { 'en-US': enUs, 'fa-IR': faIr };\n}\n/**\n * True when there is no displayable text in any locale (plain string or ML map).\n */\nexport function isEffectivelyEmptyLocalizedValue(value) {\n if (value == null)\n return true;\n if (typeof value === 'string')\n return value.trim() === '';\n if (typeof value !== 'object' || Array.isArray(value))\n return false;\n const record = value;\n return Object.values(record).every((v) => v == null || String(v).trim() === '');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0JBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUFDO0FBTTlELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxLQUF5QixFQUFFLE1BQWM7SUFDakYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3BHLENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsS0FBYztJQUN2RCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUM7QUFDNUcsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FDeEMsT0FBaUQsRUFDakQsYUFBcUI7SUFFckIsSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxJQUFZLEVBQUUsSUFBWTtJQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDMUMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdDQUFnQyxDQUFDLEtBQWM7SUFDN0QsSUFBSSxLQUFLLElBQUksSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQy9CLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMxRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLEtBQWdDLENBQUM7SUFDaEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDbEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYVHJhbnNsYXRlSGFzaE1hcDxUID0gdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCBUPjtcblxuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGVMYW5nID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGVTY29wZSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIEFYVHJhbnNsYXRlUGFyYW1zPFQgPSB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIFQ+O1xuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGlvbiA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUcmFuc2xhdGVPcHRpb25zIHtcbiAgbGFuZz86IEFYVHJhbnNsYXRlTGFuZztcbiAgc2NvcGU/OiBBWFRyYW5zbGF0ZVNjb3BlO1xuICBwYXJhbXM/OiBBWFRyYW5zbGF0ZVBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBhcnNlZFRva2VuIHtcbiAga2V5OiBzdHJpbmc7XG4gIHNjb3BlPzogQVhUcmFuc2xhdGVTY29wZTtcbiAgbGFuZz86IEFYVHJhbnNsYXRlTGFuZztcbiAgZnVsbE1hdGNoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBMT0NBTEVfS0VZX1JFR0VYID0gL14oXFwqLVxcKnxbYS16XXsyfS1bQS1aXXsyfSkkLztcblxuZXhwb3J0IHR5cGUgQVhNdWx0aUxhbmd1YWdlTWFwID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IHR5cGUgQVhNdWx0aUxhbmd1YWdlU3RyaW5nID0gc3RyaW5nIHwgQVhNdWx0aUxhbmd1YWdlTWFwO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU11bHRpTGFuZ3VhZ2VWYWx1ZSh2YWx1ZTogQVhNdWx0aUxhbmd1YWdlTWFwLCBsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZVtsb2NhbGVdID8/IHZhbHVlWydlbi1VUyddID8/IE9iamVjdC52YWx1ZXModmFsdWUpLmZpbmQoKGl0ZW0pID0+IGl0ZW0gIT0gbnVsbCkgPz8gJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTXVsdGlMYW5ndWFnZU9iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEFYTXVsdGlMYW5ndWFnZU1hcCB7XG4gIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh2YWx1ZSk7XG4gIGlmICghZW50cmllcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZW50cmllcy5ldmVyeSgoW2tleSwgZW50cnlWYWx1ZV0pID0+IExPQ0FMRV9LRVlfUkVHRVgudGVzdChrZXkpICYmIHR5cGVvZiBlbnRyeVZhbHVlID09PSAnc3RyaW5nJyk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMge0BsaW5rIEFYTXVsdGlMYW5ndWFnZVN0cmluZ30gdG8gYSBzaW5nbGUgc3RyaW5nIGZvciB0aGUgZ2l2ZW4gbG9jYWxlLlxuICogRmFsbGJhY2sgb3JkZXI6IGBjdXJyZW50TG9jYWxlYCDihpIgYGVuLVVTYCDihpIgZmlyc3QgbWFwIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU11bHRpTGFuZ3VhZ2VTdHJpbmcoXG4gIGNvbnRlbnQ6IEFYTXVsdGlMYW5ndWFnZVN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGN1cnJlbnRMb2NhbGU6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGlmIChjb250ZW50ID09IG51bGwgfHwgY29udGVudCA9PT0gJycpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG4gIGlmICghaXNWYWxpZE11bHRpTGFuZ3VhZ2VPYmplY3QoY29udGVudCkpIHtcbiAgICByZXR1cm4gU3RyaW5nKGNvbnRlbnQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc29sdmVNdWx0aUxhbmd1YWdlVmFsdWUoY29udGVudCwgY3VycmVudExvY2FsZSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiB7QGxpbmsgQVhNdWx0aUxhbmd1YWdlTWFwfSB3aXRoIGBlbi1VU2AgYW5kIGBmYS1JUmAgZW50cmllcy5cbiAqIFVzZSBmb3Igc2VlZCBkYXRhLCB0ZXN0cywgYW5kIGRlbW9zIHRoYXQgc3VwcGx5IEVuZ2xpc2ggYW5kIFBlcnNpYW4gY29weSBleHBsaWNpdGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTXVsdGlMYW5ndWFnZVN0cmluZyhlblVzOiBzdHJpbmcsIGZhSXI6IHN0cmluZyk6IEFYTXVsdGlMYW5ndWFnZU1hcCB7XG4gIHJldHVybiB7ICdlbi1VUyc6IGVuVXMsICdmYS1JUic6IGZhSXIgfTtcbn1cblxuLyoqXG4gKiBUcnVlIHdoZW4gdGhlcmUgaXMgbm8gZGlzcGxheWFibGUgdGV4dCBpbiBhbnkgbG9jYWxlIChwbGFpbiBzdHJpbmcgb3IgTUwgbWFwKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWZmZWN0aXZlbHlFbXB0eUxvY2FsaXplZFZhbHVlKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50cmltKCkgPT09ICcnO1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCByZWNvcmQgPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVjb3JkKS5ldmVyeSgodikgPT4gdiA9PSBudWxsIHx8IFN0cmluZyh2KS50cmltKCkgPT09ICcnKTtcbn1cbiJdfQ==","import { AXEventService, AXSystemEvents } from '@acorex/core/events';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { waitFor } from '@acorex/core/utils';\nimport { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, from, of, shareReplay, switchMap } from 'rxjs';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { TranslationParserService } from './translation.parser';\nimport { TranslationResolverService } from './translation.resolver';\nimport { isValidMultiLanguageObject, resolveMultiLanguageValue, } from './translation.types';\nimport * as i0 from \"@angular/core\";\nlet singletonInstance;\nexport function translateSync(key, options) {\n return singletonInstance.translateSync(key, options);\n}\nexport class AXTranslationService {\n constructor() {\n this.localeService = inject(AXLocaleService);\n this.config = inject(AX_TRANSLATION_CONFIG);\n this.loader = inject(AXTranslationLoaderService);\n this.parser = new TranslationParserService();\n this.eventService = inject(AXEventService);\n this.resolver = new TranslationResolverService();\n this.activeLang = new BehaviorSubject(this.config.defaults.lang);\n this.langChanges$ = this.activeLang.asObservable();\n this.currentLocale$ = this.langChanges$.pipe(distinctUntilChanged());\n singletonInstance = this;\n this.localeService.profileChanged$.subscribe((locale) => {\n if (locale?.localeInfo?.code) {\n this.setActiveLang(locale.localeInfo.code);\n }\n });\n }\n setActiveLang(lang) {\n if (lang && lang !== this.activeLang.getValue()) {\n this.activeLang.next(lang);\n this.eventService.emitEvent({\n type: AXSystemEvents.AXLanguageChanged,\n payload: lang,\n });\n }\n }\n getActiveLang() {\n return this.activeLang.getValue();\n }\n getDefaultLang() {\n return this.config.defaults.lang;\n }\n resolve(value, locale) {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n if (!isValidMultiLanguageObject(value)) {\n return '';\n }\n return resolveMultiLanguageValue(value, locale ?? this.getActiveLang());\n }\n toLocaleMap(value, activeLocale = this.getActiveLang()) {\n if (isValidMultiLanguageObject(value)) {\n return { ...value };\n }\n return {\n [activeLocale]: typeof value === 'string' ? value : '',\n };\n }\n translate$(value, options) {\n if (isValidMultiLanguageObject(value)) {\n return this.langChanges$.pipe(switchMap((activeLang) => {\n const targetLang = options?.lang ?? activeLang;\n const selectedValue = resolveMultiLanguageValue(value, targetLang);\n const scope = options?.scope ?? this.config.defaults.scope;\n return from(this.translateAsync(selectedValue, {\n ...options,\n lang: targetLang,\n scope,\n }));\n }));\n }\n return this.translateValue$(value, options);\n }\n async translateAsync(text, options) {\n const { lang, scope } = this.resolveContext(options);\n const params = options?.params;\n if (!this.parser.isExpression(text)) {\n return this.resolver.resolve(lang, scope, text, params);\n }\n const tokens = this.parser.parse(text, lang, scope);\n const results = await Promise.all(tokens.map((token) => this.resolver\n .resolve(token.lang ?? lang, token.scope ?? scope, token.key, params)\n .then((translated) => [token.fullMatch, translated])));\n return results.reduce((output, [match, translated]) => output.replace(match, translated), text);\n }\n translateSync(text, options) {\n const { lang, scope } = this.resolveContext(options);\n const params = options?.params;\n const waitForLoad = options?.waitForLoad ?? false;\n const timeoutMs = options?.timeoutMs ?? 100;\n if (!this.parser.isExpression(text)) {\n let translated = this.loader.peek(lang, scope, text);\n if (!translated && waitForLoad) {\n translated = waitFor(() => this.loader.peek(lang, scope, text), () => this.loader.load(lang, scope).subscribe(), timeoutMs);\n }\n return this.resolver.format(translated ?? text, params);\n }\n const tokens = this.parser.parse(text, lang, scope);\n let result = text;\n for (const token of tokens) {\n const targetLang = token.lang ?? lang;\n const targetScope = token.scope ?? scope;\n const key = token.key;\n let translation = this.loader.peek(targetLang, targetScope, key);\n if (!translation) {\n translation =\n waitFor(() => this.loader.peek(targetLang, targetScope, key), () => this.loader.load(targetLang, targetScope).subscribe(), waitForLoad ? timeoutMs : 0) ?? key;\n }\n result = result.replace(token.fullMatch, this.resolver.format(translation, params));\n }\n return result;\n }\n translateValue$(text, options) {\n if (!text) {\n return of('');\n }\n const staticOptions = { ...options };\n const staticScope = staticOptions.scope ?? this.config.defaults.scope;\n return this.langChanges$.pipe(switchMap((lang) => {\n return from(this.translateAsync(text, {\n ...staticOptions,\n lang: staticOptions.lang ?? lang,\n scope: staticScope,\n }));\n }), shareReplay({ bufferSize: 1, refCount: true }));\n }\n resolveContext(options) {\n return {\n lang: options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang,\n scope: options?.scope ?? this.config.defaults.scope,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvdHJhbnNsYXRpb24vc3JjL2xpYi90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBSUwsMEJBQTBCLEVBQzFCLHlCQUF5QixHQUMxQixNQUFNLHFCQUFxQixDQUFDOztBQUU3QixJQUFJLGlCQUF1QyxDQUFDO0FBRTVDLE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBVyxFQUFFLE9BQTRCO0lBQ3JFLE9BQU8saUJBQWlCLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBS0QsTUFBTSxPQUFPLG9CQUFvQjtJQVcvQjtRQVZRLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FB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SSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSztTQUNwRCxDQUFDO0lBQ0osQ0FBQzs4R0EzTFUsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRXZlbnRTZXJ2aWNlLCBBWFN5c3RlbUV2ZW50cyB9IGZyb20gJ0BhY29yZXgvY29yZS9ldmVudHMnO1xuaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2xvY2FsZSc7XG5pbXBvcnQgeyB3YWl0Rm9yIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Mb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWF9UUkFOU0xBVElPTl9DT05GSUcgfSBmcm9tICcuL3RyYW5zbGF0aW9uLmNvbmZpZyc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblBhcnNlclNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uLnBhcnNlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblJlc29sdmVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24ucmVzb2x2ZXInO1xuaW1wb3J0IHtcbiAgQVhNdWx0aUxhbmd1YWdlTWFwLFxuICBBWFRyYW5zbGF0ZUxhbmcsXG4gIEFYVHJhbnNsYXRlT3B0aW9ucyxcbiAgaXNWYWxpZE11bHRpTGFuZ3VhZ2VPYmplY3QsXG4gIHJlc29sdmVNdWx0aUxhbmd1YWdlVmFsdWUsXG59IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuXG5sZXQgc2luZ2xldG9uSW5zdGFuY2U6IEFYVHJhbnNsYXRpb25TZXJ2aWNlO1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlU3luYyhrZXk6IHN0cmluZywgb3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9ucyk6IHN0cmluZyB7XG4gIHJldHVybiBzaW5nbGV0b25JbnN0YW5jZS50cmFuc2xhdGVTeW5jKGtleSwgb3B0aW9ucyk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgbG9jYWxlU2VydmljZSA9IGluamVjdChBWExvY2FsZVNlcnZpY2UpO1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChBWF9UUkFOU0xBVElPTl9DT05GSUcpO1xuICBwcml2YXRlIGxvYWRlciA9IGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSk7XG4gIHByaXZhdGUgcGFyc2VyID0gbmV3IFRyYW5zbGF0aW9uUGFyc2VyU2VydmljZSgpO1xuICBwcml2YXRlIGV2ZW50U2VydmljZSA9IGluamVjdChBWEV2ZW50U2VydmljZSk7XG4gIHByaXZhdGUgcmVzb2x2ZXIgPSBuZXcgVHJhbnNsYXRpb25SZXNvbHZlclNlcnZpY2UoKTtcbiAgcHJpdmF0ZSBhY3RpdmVMYW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBWFRyYW5zbGF0ZUxhbmc+KHRoaXMuY29uZmlnLmRlZmF1bHRzLmxhbmcpO1xuICBwdWJsaWMgcmVhZG9ubHkgbGFuZ0NoYW5nZXMkID0gdGhpcy5hY3RpdmVMYW5nLmFzT2JzZXJ2YWJsZSgpO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudExvY2FsZSQgPSB0aGlzLmxhbmdDaGFuZ2VzJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHNpbmdsZXRvbkluc3RhbmNlID0gdGhpcztcbiAgICB0aGlzLmxvY2FsZVNlcnZpY2UucHJvZmlsZUNoYW5nZWQkLnN1YnNjcmliZSgobG9jYWxlKSA9PiB7XG4gICAgICBpZiAobG9jYWxlPy5sb2NhbGVJbmZvPy5jb2RlKSB7XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlTGFuZyhsb2NhbGUubG9jYWxlSW5mby5jb2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVMYW5nKGxhbmc6IEFYVHJhbnNsYXRlTGFuZyk6IHZvaWQge1xuICAgIGlmIChsYW5nICYmIGxhbmcgIT09IHRoaXMuYWN0aXZlTGFuZy5nZXRWYWx1ZSgpKSB7XG4gICAgICB0aGlzLmFjdGl2ZUxhbmcubmV4dChsYW5nKTtcbiAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmVtaXRFdmVudCh7XG4gICAgICAgIHR5cGU6IEFYU3lzdGVtRXZlbnRzLkFYTGFuZ3VhZ2VDaGFuZ2VkLFxuICAgICAgICBwYXlsb2FkOiBsYW5nLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEFjdGl2ZUxhbmcoKTogQVhUcmFuc2xhdGVMYW5nIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVMYW5nLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGVmYXVsdExhbmcoKTogQVhUcmFuc2xhdGVMYW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGVmYXVsdHMubGFuZztcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKHZhbHVlOiBzdHJpbmcgfCBBWE11bHRpTGFuZ3VhZ2VNYXAgfCBudWxsIHwgdW5kZWZpbmVkLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzVmFsaWRNdWx0aUxhbmd1YWdlT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlTXVsdGlMYW5ndWFnZVZhbHVlKHZhbHVlLCBsb2NhbGUgPz8gdGhpcy5nZXRBY3RpdmVMYW5nKCkpO1xuICB9XG5cbiAgcHVibGljIHRvTG9jYWxlTWFwKFxuICAgIHZhbHVlOiBzdHJpbmcgfCBBWE11bHRpTGFuZ3VhZ2VNYXAgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIGFjdGl2ZUxvY2FsZTogc3RyaW5nID0gdGhpcy5nZXRBY3RpdmVMYW5nKCksXG4gICk6IEFYTXVsdGlMYW5ndWFnZU1hcCB7XG4gICAgaWYgKGlzVmFsaWRNdWx0aUxhbmd1YWdlT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgLi4udmFsdWUgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgW2FjdGl2ZUxvY2FsZV06IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6ICcnLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdHJhbnNsYXRlJChcbiAgICB2YWx1ZTogc3RyaW5nIHwgQVhNdWx0aUxhbmd1YWdlTWFwIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBvcHRpb25zPzogQVhUcmFuc2xhdGVPcHRpb25zLFxuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmIChpc1ZhbGlkTXVsdGlMYW5ndWFnZU9iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmdDaGFuZ2VzJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGFjdGl2ZUxhbmcpID0+IHtcbiAgICAgICAgICBjb25zdCB0YXJnZXRMYW5nID0gb3B0aW9ucz8ubGFuZyA/PyBhY3RpdmVMYW5nO1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSByZXNvbHZlTXVsdGlMYW5ndWFnZVZhbHVlKHZhbHVlLCB0YXJnZXRMYW5nKTtcbiAgICAgICAgICBjb25zdCBzY29wZSA9IG9wdGlvbnM/LnNjb3BlID8/IHRoaXMuY29uZmlnLmRlZmF1bHRzLnNjb3BlO1xuXG4gICAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZUFzeW5jKHNlbGVjdGVkVmFsdWUsIHtcbiAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgbGFuZzogdGFyZ2V0TGFuZyxcbiAgICAgICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVZhbHVlJCh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyB0cmFuc2xhdGVBc3luYyh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHsgbGFuZywgc2NvcGUgfSA9IHRoaXMucmVzb2x2ZUNvbnRleHQob3B0aW9ucyk7XG4gICAgY29uc3QgcGFyYW1zID0gb3B0aW9ucz8ucGFyYW1zO1xuXG4gICAgaWYgKCF0aGlzLnBhcnNlci5pc0V4cHJlc3Npb24odGV4dCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc29sdmVyLnJlc29sdmUobGFuZywgc2NvcGUsIHRleHQsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW5zID0gdGhpcy5wYXJzZXIucGFyc2UodGV4dCwgbGFuZywgc2NvcGUpO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdG9rZW5zLm1hcCgodG9rZW4pID0+XG4gICAgICAgIHRoaXMucmVzb2x2ZXJcbiAgICAgICAgICAucmVzb2x2ZSh0b2tlbi5sYW5nID8/IGxhbmcsIHRva2VuLnNjb3BlID8/IHNjb3BlLCB0b2tlbi5rZXksIHBhcmFtcylcbiAgICAgICAgICAudGhlbigodHJhbnNsYXRlZCkgPT4gW3Rva2VuLmZ1bGxNYXRjaCwgdHJhbnNsYXRlZF0pLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdHMucmVkdWNlKChvdXRwdXQsIFttYXRjaCwgdHJhbnNsYXRlZF0pID0+IG91dHB1dC5yZXBsYWNlKG1hdGNoLCB0cmFuc2xhdGVkKSwgdGV4dCk7XG4gIH1cblxuICBwdWJsaWMgdHJhbnNsYXRlU3luYyhcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9ucyAmIHsgd2FpdEZvckxvYWQ/OiBib29sZWFuOyB0aW1lb3V0TXM/OiBudW1iZXIgfSxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IGxhbmcsIHNjb3BlIH0gPSB0aGlzLnJlc29sdmVDb250ZXh0KG9wdGlvbnMpO1xuICAgIGNvbnN0IHBhcmFtcyA9IG9wdGlvbnM/LnBhcmFtcztcbiAgICBjb25zdCB3YWl0Rm9yTG9hZCA9IG9wdGlvbnM/LndhaXRGb3JMb2FkID8/IGZhbHNlO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IG9wdGlvbnM/LnRpbWVvdXRNcyA/PyAxMDA7XG5cbiAgICBpZiAoIXRoaXMucGFyc2VyLmlzRXhwcmVzc2lvbih0ZXh0KSkge1xuICAgICAgbGV0IHRyYW5zbGF0ZWQgPSB0aGlzLmxvYWRlci5wZWVrKGxhbmcsIHNjb3BlLCB0ZXh0KTtcblxuICAgICAgaWYgKCF0cmFuc2xhdGVkICYmIHdhaXRGb3JMb2FkKSB7XG4gICAgICAgIHRyYW5zbGF0ZWQgPSB3YWl0Rm9yKFxuICAgICAgICAgICgpID0+IHRoaXMubG9hZGVyLnBlZWsobGFuZywgc2NvcGUsIHRleHQpLFxuICAgICAgICAgICgpID0+IHRoaXMubG9hZGVyLmxvYWQobGFuZywgc2NvcGUpLnN1YnNjcmliZSgpLFxuICAgICAgICAgIHRpbWVvdXRNcyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZXIuZm9ybWF0KHRyYW5zbGF0ZWQgPz8gdGV4dCwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbnMgPSB0aGlzLnBhcnNlci5wYXJzZSh0ZXh0LCBsYW5nLCBzY29wZSk7XG4gICAgbGV0IHJlc3VsdCA9IHRleHQ7XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgICAgY29uc3QgdGFyZ2V0TGFuZyA9IHRva2VuLmxhbmcgPz8gbGFuZztcbiAgICAgIGNvbnN0IHRhcmdldFNjb3BlID0gdG9rZW4uc2NvcGUgPz8gc2NvcGU7XG4gICAgICBjb25zdCBrZXkgPSB0b2tlbi5rZXk7XG5cbiAgICAgIGxldCB0cmFuc2xhdGlvbiA9IHRoaXMubG9hZGVyLnBlZWsodGFyZ2V0TGFuZywgdGFyZ2V0U2NvcGUsIGtleSk7XG5cbiAgICAgIGlmICghdHJhbnNsYXRpb24pIHtcbiAgICAgICAgdHJhbnNsYXRpb24gPVxuICAgICAgICAgIHdhaXRGb3IoXG4gICAgICAgICAgICAoKSA9PiB0aGlzLmxvYWRlci5wZWVrKHRhcmdldExhbmcsIHRhcmdldFNjb3BlLCBrZXkpLFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5sb2FkZXIubG9hZCh0YXJnZXRMYW5nLCB0YXJnZXRTY29wZSkuc3Vic2NyaWJlKCksXG4gICAgICAgICAgICB3YWl0Rm9yTG9hZCA/IHRpbWVvdXRNcyA6IDAsXG4gICAgICAgICAgKSA/PyBrZXk7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKHRva2VuLmZ1bGxNYXRjaCwgdGhpcy5yZXNvbHZlci5mb3JtYXQodHJhbnNsYXRpb24sIHBhcmFtcykpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zbGF0ZVZhbHVlJCh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnMpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICghdGV4dCkge1xuICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0aWNPcHRpb25zID0geyAuLi5vcHRpb25zIH07XG4gICAgY29uc3Qgc3RhdGljU2NvcGUgPSBzdGF0aWNPcHRpb25zLnNjb3BlID8/IHRoaXMuY29uZmlnLmRlZmF1bHRzLnNjb3BlO1xuXG4gICAgcmV0dXJuIHRoaXMubGFuZ0NoYW5nZXMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGxhbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVBc3luYyh0ZXh0LCB7XG4gICAgICAgICAgICAuLi5zdGF0aWNPcHRpb25zLFxuICAgICAgICAgICAgbGFuZzogc3RhdGljT3B0aW9ucy5sYW5nID8/IGxhbmcsXG4gICAgICAgICAgICBzY29wZTogc3RhdGljU2NvcGUsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUNvbnRleHQob3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9ucyk6IHsgbGFuZzogQVhUcmFuc2xhdGVMYW5nOyBzY29wZTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBsYW5nOiBvcHRpb25zPy5sYW5nID8/IHRoaXMuZ2V0QWN0aXZlTGFuZygpID8/IHRoaXMuY29uZmlnLmRlZmF1bHRzLmxhbmcsXG4gICAgICBzY29wZTogb3B0aW9ucz8uc2NvcGUgPz8gdGhpcy5jb25maWcuZGVmYXVsdHMuc2NvcGUsXG4gICAgfTtcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationService } from './translation.service';\nexport const loadTranslationScope = (route, state) => {\n const translationLoaderService = inject(AXTranslationLoaderService);\n const translationService = inject(AXTranslationService);\n const config = inject(AX_TRANSLATION_CONFIG);\n const scopeValue = route.data[config.resolver?.scopeKey];\n const scopes = Array.isArray(scopeValue) ? scopeValue : [scopeValue];\n return translationLoaderService.preload({ langs: [translationService.getActiveLang()], scopes });\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tc2NvcGUucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24tc2NvcGUucmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBdUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDdkUsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNwRSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckUsT0FBTyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDbkcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXNvbHZlRm4gfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbkxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uLWxvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0NPTkZJRyB9IGZyb20gJy4vdHJhbnNsYXRpb24uY29uZmlnJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IGxvYWRUcmFuc2xhdGlvblNjb3BlOiBSZXNvbHZlRm48dW5rbm93bj4gPSAocm91dGUsIHN0YXRlKSA9PiB7XG4gIGNvbnN0IHRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSk7XG4gIGNvbnN0IHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChBWF9UUkFOU0xBVElPTl9DT05GSUcpO1xuICBjb25zdCBzY29wZVZhbHVlID0gcm91dGUuZGF0YVtjb25maWcucmVzb2x2ZXI/LnNjb3BlS2V5XTtcbiAgY29uc3Qgc2NvcGVzID0gQXJyYXkuaXNBcnJheShzY29wZVZhbHVlKSA/IHNjb3BlVmFsdWUgOiBbc2NvcGVWYWx1ZV07XG4gIHJldHVybiB0cmFuc2xhdGlvbkxvYWRlclNlcnZpY2UucHJlbG9hZCh7IGxhbmdzOiBbdHJhbnNsYXRpb25TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKV0sIHNjb3BlcyB9KTtcbn07XG4iXX0=","import { Directive, TemplateRef, ViewContainerRef, inject } from '@angular/core';\nimport { shareReplay } from 'rxjs';\nimport { AXTranslationService } from './translation.service';\nimport * as i0 from \"@angular/core\";\nexport class AXTranslatorDirective {\n constructor() {\n this.templateRef = inject(TemplateRef);\n this.vc = inject(ViewContainerRef);\n this.translationService = inject(AXTranslationService);\n }\n ngOnInit() {\n const cache = new Map();\n const t = (key, opts) => {\n const id = `${key}|${opts?.lang ?? this.translationService.getActiveLang()}|${opts?.scope ?? 'common'}`;\n if (!cache.has(id)) {\n cache.set(id, this.translationService.translate$(key, opts).pipe(shareReplay({ bufferSize: 1, refCount: true })));\n }\n return cache.get(id);\n };\n this.vc.clear();\n this.vc.createEmbeddedView(this.templateRef, { $implicit: t });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXTranslatorDirective, isStandalone: true, selector: \"[translate]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[translate]' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRzdELE1BQU0sT0FBTyxxQkFBcUI7SUFEbEM7UUFFVSxnQkFBVyxHQUFHLE1BQU0sQ0FBbUIsV0FBVyxDQUFDLENBQUM7UUFDcEQsT0FBRSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBbUIzRDtJQWpCQyxRQUFRO1FBQ04sTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFFcEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBeUIsRUFBRSxFQUFFO1lBQ25ELE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7WUFDeEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsS0FBSyxDQUFDLEdBQUcsQ0FDUCxFQUFFLEVBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDbkcsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDOzhHQXJCVSxxQkFBcUI7a0dBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRlT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3RyYW5zbGF0ZV0nIH0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZiA9IGluamVjdDxUZW1wbGF0ZVJlZjxhbnk+PihUZW1wbGF0ZVJlZik7XG4gIHByaXZhdGUgdmMgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPHN0cmluZz4+KCk7XG5cbiAgICBjb25zdCB0ID0gKGtleTogc3RyaW5nLCBvcHRzPzogQVhUcmFuc2xhdGVPcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IGAke2tleX18JHtvcHRzPy5sYW5nID8/IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKX18JHtvcHRzPy5zY29wZSA/PyAnY29tbW9uJ31gO1xuICAgICAgaWYgKCFjYWNoZS5oYXMoaWQpKSB7XG4gICAgICAgIGNhY2hlLnNldChcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUkKGtleSwgb3B0cykucGlwZShzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYWNoZS5nZXQoaWQpITtcbiAgICB9O1xuXG4gICAgdGhpcy52Yy5jbGVhcigpO1xuICAgIHRoaXMudmMuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsIHsgJGltcGxpY2l0OiB0IH0pO1xuICB9XG59XG4iXX0=","import { inject, Pipe } from '@angular/core';\nimport { of } from 'rxjs';\nimport { AXTranslationService } from './translation.service';\nimport * as i0 from \"@angular/core\";\nexport class AXTranslatorPipe {\n constructor() {\n this.service = inject(AXTranslationService);\n }\n transform(value, options) {\n if (!value) {\n return of('');\n }\n return this.service.translate$(value, options);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorPipe, isStandalone: true, name: \"translate\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'translate',\n pure: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0b3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPN0QsTUFBTSxPQUFPLGdCQUFnQjtJQUo3QjtRQUtVLFlBQU8sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQVdoRDtJQVRDLFNBQVMsQ0FDUCxLQUF5RCxFQUN6RCxPQUE0QjtRQUU1QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQzs4R0FYVSxnQkFBZ0I7NEdBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsSUFBSSxFQUFFLElBQUk7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0ZU9wdGlvbnMgfSBmcm9tICcuL3RyYW5zbGF0aW9uLnR5cGVzJztcblxuQFBpcGUoe1xuICBuYW1lOiAndHJhbnNsYXRlJyxcbiAgcHVyZTogdHJ1ZSxcbn0pIC8vIFRoZSBwaXBlIGNhbiBub3cgYmUgcHVyZVxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSBzZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS50cmFuc2xhdGUkKHZhbHVlLCBvcHRpb25zKTtcbiAgfVxufVxuIl19","import { NgModule, inject, provideAppInitializer } from '@angular/core';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AXTranslatorDirective } from './translator.directive';\nimport { AXTranslatorPipe } from './translator.pipe';\nimport * as i0 from \"@angular/core\";\nfunction initializeApp(translatorService) {\n return () => {\n return translatorService.preload();\n };\n}\nexport class AXTranslationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, imports: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationLoaderService));\n return initializerFn();\n }),\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AXTranslatorPipe, AXTranslatorDirective],\n exports: [AXTranslatorPipe, AXTranslatorDirective],\n providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationLoaderService));\n return initializerFn();\n }),\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFckQsU0FBUyxhQUFhLENBQUMsaUJBQTZDO0lBQ2xFLE9BQU8sR0FBa0IsRUFBRTtRQUN6QixPQUFPLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFZRCxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixZQVRwQixnQkFBZ0IsRUFBRSxxQkFBcUIsYUFDdkMsZ0JBQWdCLEVBQUUscUJBQXFCOytHQVF0QyxtQkFBbUIsYUFQbkI7WUFDVCxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pCLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO2dCQUN4RSxPQUFPLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQztTQUNIOzsyRkFFVSxtQkFBbUI7a0JBVi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUM7b0JBQ2xELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixDQUFDO29CQUNsRCxTQUFTLEVBQUU7d0JBQ1QscUJBQXFCLENBQUMsR0FBRyxFQUFFOzRCQUN6QixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQzs0QkFDeEUsT0FBTyxhQUFhLEVBQUUsQ0FBQzt3QkFDekIsQ0FBQyxDQUFDO3FCQUNIO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIGluamVjdCwgcHJvdmlkZUFwcEluaXRpYWxpemVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi90cmFuc2xhdG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnLi90cmFuc2xhdG9yLnBpcGUnO1xuXG5mdW5jdGlvbiBpbml0aWFsaXplQXBwKHRyYW5zbGF0b3JTZXJ2aWNlOiBBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSkge1xuICByZXR1cm4gKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0cmFuc2xhdG9yU2VydmljZS5wcmVsb2FkKCk7XG4gIH07XG59XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtBWFRyYW5zbGF0b3JQaXBlLCBBWFRyYW5zbGF0b3JEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbQVhUcmFuc2xhdG9yUGlwZSwgQVhUcmFuc2xhdG9yRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUFwcEluaXRpYWxpemVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxpemVyRm4gPSBpbml0aWFsaXplQXBwKGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSkpO1xuICAgICAgcmV0dXJuIGluaXRpYWxpemVyRm4oKTtcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdGlvbk1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtdHJhbnNsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9hY29yZXgtY29yZS10cmFuc2xhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-core-translation.mjs","sources":["../tmp-esm2022/translation/lib/translation.config.js","../tmp-esm2022/translation/lib/translation.loader.js","../tmp-esm2022/translation/lib/translation-loader.service.js","../tmp-esm2022/translation/lib/translation.parser.js","../tmp-esm2022/translation/lib/translation.resolver.js","../tmp-esm2022/translation/lib/translation.types.js","../tmp-esm2022/translation/lib/translation.service.js","../tmp-esm2022/translation/lib/translation-scope.resolver.js","../tmp-esm2022/translation/lib/translator.directive.js","../tmp-esm2022/translation/lib/translator.pipe.js","../tmp-esm2022/translation/lib/translation.module.js","../tmp-esm2022/translation/acorex-core-translation.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const AX_TRANSLATION_CONFIG = new InjectionToken('AX_TRANSLATION_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXTranslationDefaultConfig;\n },\n});\nexport const AXTranslationDefaultConfig = {\n defaults: {\n lang: 'en-US',\n scope: 'acorex',\n },\n preload: {\n langs: ['en-US'],\n scopes: ['acorex'],\n },\n resolver: {\n scopeKey: 'scope',\n },\n};\nexport function translationConfig(config = {}) {\n const result = {\n ...AXTranslationDefaultConfig,\n ...config,\n };\n return result;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBeUIvQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLEVBQUU7SUFDcEcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE9BQU8sMEJBQTBCLENBQUM7SUFDcEMsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUF3QjtJQUM3RCxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsT0FBTztRQUNiLEtBQUssRUFBRSxRQUFRO0tBQ2hCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQ2hCLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNuQjtJQUNELFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFBRSxPQUFPO0tBQ2xCO0NBQ0YsQ0FBQztBQUlGLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxTQUFxQyxFQUFFO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHO1FBQ2IsR0FBRywwQkFBMEI7UUFDN0IsR0FBRyxNQUFNO0tBQ1YsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGVMYW5nLCBBWFRyYW5zbGF0ZVNjb3BlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUcmFuc2xhdGlvbkNvbmZpZyB7XG4gIGRlZmF1bHRzOiB7XG4gICAgbGFuZzogQVhUcmFuc2xhdGVMYW5nO1xuICAgIHNjb3BlOiBBWFRyYW5zbGF0ZVNjb3BlO1xuICB9O1xuICBwcmVsb2FkPzoge1xuICAgIGxhbmdzOiBBWFRyYW5zbGF0ZUxhbmdbXTtcbiAgICBzY29wZXM6IEFYVHJhbnNsYXRlU2NvcGVbXTtcbiAgfTtcbiAgZmFsbGJhY2tzPzoge1xuICAgIGxhbmdzPzogUmVjb3JkPEFYVHJhbnNsYXRlTGFuZywgQVhUcmFuc2xhdGVMYW5nW10+O1xuICAgIHNjb3Blcz86IFJlY29yZDxBWFRyYW5zbGF0ZVNjb3BlLCBBWFRyYW5zbGF0ZVNjb3BlW10+O1xuICB9O1xuICBhdmFpbGFibGU/OiB7XG4gICAgbGFuZ3M/OiBBWFRyYW5zbGF0ZUxhbmdbXTtcbiAgICBzY29wZXM/OiBBWFRyYW5zbGF0ZVNjb3BlW107XG4gIH07XG4gIHJlc29sdmVyPzoge1xuICAgIHNjb3BlS2V5OiBzdHJpbmc7IC8vIHVzZWQgdG8gZXh0cmFjdCBzY29wZSBmcm9tIHBhcmFtcywgZS5nLiBgc2NvcGU6ICdjb21tb24nYFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgQVhfVFJBTlNMQVRJT05fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEFYVHJhbnNsYXRpb25Db25maWc+KCdBWF9UUkFOU0xBVElPTl9DT05GSUcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4ge1xuICAgIHJldHVybiBBWFRyYW5zbGF0aW9uRGVmYXVsdENvbmZpZztcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQVhUcmFuc2xhdGlvbkRlZmF1bHRDb25maWc6IEFYVHJhbnNsYXRpb25Db25maWcgPSB7XG4gIGRlZmF1bHRzOiB7XG4gICAgbGFuZzogJ2VuLVVTJyxcbiAgICBzY29wZTogJ2Fjb3JleCcsXG4gIH0sXG4gIHByZWxvYWQ6IHtcbiAgICBsYW5nczogWydlbi1VUyddLFxuICAgIHNjb3BlczogWydhY29yZXgnXSxcbiAgfSxcbiAgcmVzb2x2ZXI6IHtcbiAgICBzY29wZUtleTogJ3Njb3BlJyxcbiAgfSxcbn07XG5cbmV4cG9ydCB0eXBlIEFYUGFydGlhbFRyYW5zbGF0aW9uQ29uZmlnID0gUGFydGlhbDxBWFRyYW5zbGF0aW9uQ29uZmlnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0aW9uQ29uZmlnKGNvbmZpZzogQVhQYXJ0aWFsVHJhbnNsYXRpb25Db25maWcgPSB7fSk6IEFYVHJhbnNsYXRpb25Db25maWcge1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgLi4uQVhUcmFuc2xhdGlvbkRlZmF1bHRDb25maWcsXG4gICAgLi4uY29uZmlnLFxuICB9O1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl19","import { InjectionToken } from '@angular/core';\nimport { of } from 'rxjs';\nexport class AXTranslationLoaderDefault {\n load(options) {\n return of({});\n }\n}\nexport const AX_TRANSLATION_LOADER = new InjectionToken('AX_TRANSLATION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXTranslationLoaderDefault();\n },\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFZdEMsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxJQUFJLENBQUMsT0FBbUM7UUFDdEMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHVCQUF1QixFQUFFO0lBQ3BHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixPQUFPLElBQUksMEJBQTBCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0ZUxhbmcsIEFYVHJhbnNsYXRlU2NvcGUsIEFYVHJhbnNsYXRpb24gfSBmcm9tICcuL3RyYW5zbGF0aW9uLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFRyYW5zbGF0aW9uTG9hZGVyT3B0aW9ucyB7XG4gIGxhbmc6IEFYVHJhbnNsYXRlTGFuZztcbiAgc2NvcGU/OiBBWFRyYW5zbGF0ZVNjb3BlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVHJhbnNsYXRpb25Mb2FkZXIge1xuICBsb2FkKG9wdGlvbnM6IEFYVHJhbnNsYXRpb25Mb2FkZXJPcHRpb25zKTogT2JzZXJ2YWJsZTxBWFRyYW5zbGF0aW9uPjtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRpb25Mb2FkZXJEZWZhdWx0IGltcGxlbWVudHMgQVhUcmFuc2xhdGlvbkxvYWRlciB7XG4gIGxvYWQob3B0aW9uczogQVhUcmFuc2xhdGlvbkxvYWRlck9wdGlvbnMpOiBPYnNlcnZhYmxlPEFYVHJhbnNsYXRpb24+IHtcbiAgICByZXR1cm4gb2Yoe30pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBWF9UUkFOU0xBVElPTl9MT0FERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhUcmFuc2xhdGlvbkxvYWRlcj4oJ0FYX1RSQU5TTEFUSU9OX0xPQURFUicsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBBWFRyYW5zbGF0aW9uTG9hZGVyRGVmYXVsdCgpO1xuICB9LFxufSk7XG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { firstValueFrom, of, shareReplay, tap } from 'rxjs';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AX_TRANSLATION_LOADER } from './translation.loader';\nimport { AXEventService, AXSystemEvents } from '@acorex/core/events';\nimport * as i0 from \"@angular/core\";\nexport class AXTranslationLoaderService {\n constructor() {\n this.loader = inject(AX_TRANSLATION_LOADER);\n this.config = inject(AX_TRANSLATION_CONFIG);\n this.eventService = inject(AXEventService);\n this.cache = new Map();\n this.inflight = new Map();\n }\n load(lang, scope) {\n const key = `${lang}:${scope}`;\n // 1. Check cache first\n if (this.cache.has(key)) {\n return of(this.cache.get(key));\n }\n // 2. Check if it's already in-flight\n if (this.inflight.has(key)) {\n return this.inflight.get(key);\n }\n // 3. Not in cache, not in-flight: Make the request\n const newObs = this.loader.load({ lang, scope }).pipe(tap({\n next: (data) => {\n this.cache.set(key, data);\n // No need to delete from inflight here, finalize will handle it\n // or delete it only after caching. If you delete here, and shareReplay\n // source completes, subsequent subscribers might re-trigger if not careful.\n // It's better to remove from inflight in finalize or after shareReplay has replayed.\n // For simplicity and common patterns, removing after caching within tap (before shareReplay)\n // can work if shareReplay handles the source completion correctly.\n // A safer bet is to remove it in finalize *after* shareReplay.\n // Emit event to notify other components that the language has been loaded\n this.eventService.emitEvent({\n type: AXSystemEvents.AXLanguageLoaded,\n payload: data,\n });\n },\n error: (err) => {\n console.error(`Error loading ${key}:`, err);\n // Remove from inflight on error so subsequent calls can retry\n this.inflight.delete(key);\n },\n // finalize is tricky with shareReplay if you want to keep the replayed value\n // but still clear inflight. For this pattern, deleting on next/error\n // *before* shareReplay often means that shareReplay will re-trigger the source\n // if the inflight observable is requested again after being deleted.\n // The current structure of deleting in `tap` and then `shareReplay`\n // might need `this.inflight.delete(key)` to be moved after `shareReplay` effect.\n // Let's try a common pattern:\n }), shareReplay(1), // Replay the last emitted value for subsequent subscribers\n tap({\n // This tap runs *after* shareReplay has done its work for the first subscriber\n // and for subsequent subscribers that get the replayed value.\n next: () => {\n // Once data is successfully loaded and cached (by the first tap),\n // and shareReplay ensures it's available, we can remove from inflight.\n // This means subsequent calls for the same key during the \"inflight\" period\n // get the shared observable, and after it resolves and is cached,\n // inflight is cleared.\n this.inflight.delete(key);\n },\n // Error is handled by the first tap, or catchError if you want to provide a fallback\n }));\n this.inflight.set(key, newObs); // Store the observable that includes caching and cleanup logic\n return newObs;\n }\n peek(lang, scope, key) {\n const cacheKey = `${lang}:${scope}`;\n const data = this.cache.get(cacheKey);\n return get(data, key, null);\n }\n async preload(options) {\n const langsToLoad = [...new Set(options?.langs ?? this.config.preload?.langs ?? [this.config.defaults.lang])];\n const scopesToLoad = [...new Set(options?.scopes ?? this.config.preload?.scopes ?? [this.config.defaults.scope])];\n const loadPromises = [];\n langsToLoad.forEach((lang) => {\n scopesToLoad.forEach((scope) => {\n const loadPromise = firstValueFrom(this.load(lang, scope)) // This should now always get a valid Observable\n .then((value) => ({ lang, scope, status: 'fulfilled', value }))\n .catch((reason) => ({ lang, scope, status: 'rejected', reason }));\n loadPromises.push(loadPromise);\n });\n });\n const results = await Promise.all(loadPromises);\n let allSucceeded = true;\n results.forEach((result) => {\n if (result.status === 'rejected') {\n allSucceeded = false;\n console.error(`Failed to preload translations for lang: ${result.lang}, scope: ${result.scope}. Reason:`, result.reason);\n }\n else {\n // console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs\n }\n // else {\n // console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs\n // }\n });\n if (!allSucceeded) {\n console.error('One or more translation preloads failed. See console for details.');\n // throw new Error(\"One or more translation preloads failed. See console for details.\");\n }\n // The second results.forEach loop in your original code was redundant, I've removed it.\n // If it was for a different purpose, you can add it back.\n }\n clear() {\n this.cache.clear();\n this.inflight.clear();\n }\n getFallbackLangs(lang) {\n return this.config.fallbacks?.langs?.[lang] ?? [];\n }\n getFallbackScopes(scope) {\n return this.config.fallbacks?.scopes?.[scope] ?? [];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationLoaderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationLoaderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQWMsY0FBYyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3JFLE1BQU0sT0FBTywwQkFBMEI7SUFEdkM7UUFFVSxXQUFNLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdkMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXRDLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUN6QyxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXFDLENBQUM7S0FpSWpFO0lBL0hRLElBQUksQ0FBQyxJQUFxQixFQUFFLEtBQXVCO1FBQ3hELE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBRS9CLHVCQUF1QjtRQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxF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QVcsRUFDMUYsTUFBTSxDQUFDLE1BQU0sQ0FDZCxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLCtIQUErSDtZQUNqSSxDQUFDO1lBQ0QsU0FBUztZQUNULCtIQUErSDtZQUMvSCxJQUFJO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1lBQ25GLHdGQUF3RjtRQUMxRixDQUFDO1FBQ0Qsd0ZBQXdGO1FBQ3hGLDBEQUEwRDtJQUM1RCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsSUFBcUI7UUFDM0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQXVCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RELENBQUM7OEdBdElVLDBCQUEwQjtrSEFBMUIsMEJBQTBCLGNBRGIsTUFBTTs7MkZBQ25CLDBCQUEwQjtrQkFEdEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSwgb2YsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0NPTkZJRyB9IGZyb20gJy4vdHJhbnNsYXRpb24uY29uZmlnJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0xPQURFUiB9IGZyb20gJy4vdHJhbnNsYXRpb24ubG9hZGVyJztcbmltcG9ydCB7IEFYVHJhbnNsYXRlTGFuZywgQVhUcmFuc2xhdGVTY29wZSwgQVhUcmFuc2xhdGlvbiB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQVhFdmVudFNlcnZpY2UsIEFYU3lzdGVtRXZlbnRzIH0gZnJvbSAnQGFjb3JleC9jb3JlL2V2ZW50cyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdGlvbkxvYWRlclNlcnZpY2Uge1xuICBwcml2YXRlIGxvYWRlciA9IGluamVjdChBWF9UUkFOU0xBVElPTl9MT0FERVIpO1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChBWF9UUkFOU0xBVElPTl9DT05GSUcpO1xuICBwcml2YXRlIGV2ZW50U2VydmljZSA9IGluamVjdChBWEV2ZW50U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBBWFRyYW5zbGF0aW9uPigpO1xuICBwcml2YXRlIGluZmxpZ2h0ID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8QVhUcmFuc2xhdGlvbj4+KCk7XG5cbiAgcHVibGljIGxvYWQobGFuZzogQVhUcmFuc2xhdGVMYW5nLCBzY29wZTogQVhUcmFuc2xhdGVTY29wZSk6IE9ic2VydmFibGU8QVhUcmFuc2xhdGlvbj4ge1xuICAgIGNvbnN0IGtleSA9IGAke2xhbmd9OiR7c2NvcGV9YDtcblxuICAgIC8vIDEuIENoZWNrIGNhY2hlIGZpcnN0XG4gICAgaWYgKHRoaXMuY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmNhY2hlLmdldChrZXkpISk7XG4gICAgfVxuXG4gICAgLy8gMi4gQ2hlY2sgaWYgaXQncyBhbHJlYWR5IGluLWZsaWdodFxuICAgIGlmICh0aGlzLmluZmxpZ2h0LmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbmZsaWdodC5nZXQoa2V5KSE7XG4gICAgfVxuXG4gICAgLy8gMy4gTm90IGluIGNhY2hlLCBub3QgaW4tZmxpZ2h0OiBNYWtlIHRoZSByZXF1ZXN0XG4gICAgY29uc3QgbmV3T2JzID0gdGhpcy5sb2FkZXIubG9hZCh7IGxhbmcsIHNjb3BlIH0pLnBpcGUoXG4gICAgICB0YXAoe1xuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KGtleSwgZGF0YSk7XG4gICAgICAgICAgLy8gTm8gbmVlZCB0byBkZWxldGUgZnJvbSBpbmZsaWdodCBoZXJlLCBmaW5hbGl6ZSB3aWxsIGhhbmRsZSBpdFxuICAgICAgICAgIC8vIG9yIGRlbGV0ZSBpdCBvbmx5IGFmdGVyIGNhY2hpbmcuIElmIHlvdSBkZWxldGUgaGVyZSwgYW5kIHNoYXJlUmVwbGF5XG4gICAgICAgICAgLy8gc291cmNlIGNvbXBsZXRlcywgc3Vic2VxdWVudCBzdWJzY3JpYmVycyBtaWdodCByZS10cmlnZ2VyIGlmIG5vdCBjYXJlZnVsLlxuICAgICAgICAgIC8vIEl0J3MgYmV0dGVyIHRvIHJlbW92ZSBmcm9tIGluZmxpZ2h0IGluIGZpbmFsaXplIG9yIGFmdGVyIHNoYXJlUmVwbGF5IGhhcyByZXBsYXllZC5cbiAgICAgICAgICAvLyBGb3Igc2ltcGxpY2l0eSBhbmQgY29tbW9uIHBhdHRlcm5zLCByZW1vdmluZyBhZnRlciBjYWNoaW5nIHdpdGhpbiB0YXAgKGJlZm9yZSBzaGFyZVJlcGxheSlcbiAgICAgICAgICAvLyBjYW4gd29yayBpZiBzaGFyZVJlcGxheSBoYW5kbGVzIHRoZSBzb3VyY2UgY29tcGxldGlvbiBjb3JyZWN0bHkuXG4gICAgICAgICAgLy8gQSBzYWZlciBiZXQgaXMgdG8gcmVtb3ZlIGl0IGluIGZpbmFsaXplICphZnRlciogc2hhcmVSZXBsYXkuXG5cbiAgICAgICAgICAvLyBFbWl0IGV2ZW50IHRvIG5vdGlmeSBvdGhlciBjb21wb25lbnRzIHRoYXQgdGhlIGxhbmd1YWdlIGhhcyBiZWVuIGxvYWRlZFxuICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmVtaXRFdmVudCh7XG4gICAgICAgICAgICB0eXBlOiBBWFN5c3RlbUV2ZW50cy5BWExhbmd1YWdlTG9hZGVkLFxuICAgICAgICAgICAgcGF5bG9hZDogZGF0YSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nICR7a2V5fTpgLCBlcnIpO1xuICAgICAgICAgIC8vIFJlbW92ZSBmcm9tIGluZmxpZ2h0IG9uIGVycm9yIHNvIHN1YnNlcXVlbnQgY2FsbHMgY2FuIHJldHJ5XG4gICAgICAgICAgdGhpcy5pbmZsaWdodC5kZWxldGUoa2V5KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZmluYWxpemUgaXMgdHJpY2t5IHdpdGggc2hhcmVSZXBsYXkgaWYgeW91IHdhbnQgdG8ga2VlcCB0aGUgcmVwbGF5ZWQgdmFsdWVcbiAgICAgICAgLy8gYnV0IHN0aWxsIGNsZWFyIGluZmxpZ2h0LiBGb3IgdGhpcyBwYXR0ZXJuLCBkZWxldGluZyBvbiBuZXh0L2Vycm9yXG4gICAgICAgIC8vICpiZWZvcmUqIHNoYXJlUmVwbGF5IG9mdGVuIG1lYW5zIHRoYXQgc2hhcmVSZXBsYXkgd2lsbCByZS10cmlnZ2VyIHRoZSBzb3VyY2VcbiAgICAgICAgLy8gaWYgdGhlIGluZmxpZ2h0IG9ic2VydmFibGUgaXMgcmVxdWVzdGVkIGFnYWluIGFmdGVyIGJlaW5nIGRlbGV0ZWQuXG4gICAgICAgIC8vIFRoZSBjdXJyZW50IHN0cnVjdHVyZSBvZiBkZWxldGluZyBpbiBgdGFwYCBhbmQgdGhlbiBgc2hhcmVSZXBsYXlgXG4gICAgICAgIC8vIG1pZ2h0IG5lZWQgYHRoaXMuaW5mbGlnaHQuZGVsZXRlKGtleSlgIHRvIGJlIG1vdmVkIGFmdGVyIGBzaGFyZVJlcGxheWAgZWZmZWN0LlxuICAgICAgICAvLyBMZXQncyB0cnkgYSBjb21tb24gcGF0dGVybjpcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSksIC8vIFJlcGxheSB0aGUgbGFzdCBlbWl0dGVkIHZhbHVlIGZvciBzdWJzZXF1ZW50IHN1YnNjcmliZXJzXG4gICAgICB0YXAoe1xuICAgICAgICAvLyBUaGlzIHRhcCBydW5zICphZnRlciogc2hhcmVSZXBsYXkgaGFzIGRvbmUgaXRzIHdvcmsgZm9yIHRoZSBmaXJzdCBzdWJzY3JpYmVyXG4gICAgICAgIC8vIGFuZCBmb3Igc3Vic2VxdWVudCBzdWJzY3JpYmVycyB0aGF0IGdldCB0aGUgcmVwbGF5ZWQgdmFsdWUuXG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBPbmNlIGRhdGEgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgY2FjaGVkIChieSB0aGUgZmlyc3QgdGFwKSxcbiAgICAgICAgICAvLyBhbmQgc2hhcmVSZXBsYXkgZW5zdXJlcyBpdCdzIGF2YWlsYWJsZSwgd2UgY2FuIHJlbW92ZSBmcm9tIGluZmxpZ2h0LlxuICAgICAgICAgIC8vIFRoaXMgbWVhbnMgc3Vic2VxdWVudCBjYWxscyBmb3IgdGhlIHNhbWUga2V5IGR1cmluZyB0aGUgXCJpbmZsaWdodFwiIHBlcmlvZFxuICAgICAgICAgIC8vIGdldCB0aGUgc2hhcmVkIG9ic2VydmFibGUsIGFuZCBhZnRlciBpdCByZXNvbHZlcyBhbmQgaXMgY2FjaGVkLFxuICAgICAgICAgIC8vIGluZmxpZ2h0IGlzIGNsZWFyZWQuXG4gICAgICAgICAgdGhpcy5pbmZsaWdodC5kZWxldGUoa2V5KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gRXJyb3IgaXMgaGFuZGxlZCBieSB0aGUgZmlyc3QgdGFwLCBvciBjYXRjaEVycm9yIGlmIHlvdSB3YW50IHRvIHByb3ZpZGUgYSBmYWxsYmFja1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuaW5mbGlnaHQuc2V0KGtleSwgbmV3T2JzKTsgLy8gU3RvcmUgdGhlIG9ic2VydmFibGUgdGhhdCBpbmNsdWRlcyBjYWNoaW5nIGFuZCBjbGVhbnVwIGxvZ2ljXG4gICAgcmV0dXJuIG5ld09icztcbiAgfVxuXG4gIHB1YmxpYyBwZWVrKGxhbmc6IEFYVHJhbnNsYXRlTGFuZywgc2NvcGU6IEFYVHJhbnNsYXRlU2NvcGUsIGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBgJHtsYW5nfToke3Njb3BlfWA7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuY2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICByZXR1cm4gZ2V0KGRhdGEsIGtleSwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHJlbG9hZChvcHRpb25zPzogeyBsYW5ncz86IEFYVHJhbnNsYXRlTGFuZ1tdOyBzY29wZXM/OiBBWFRyYW5zbGF0ZVNjb3BlW10gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxhbmdzVG9Mb2FkID0gWy4uLm5ldyBTZXQob3B0aW9ucz8ubGFuZ3MgPz8gdGhpcy5jb25maWcucHJlbG9hZD8ubGFuZ3MgPz8gW3RoaXMuY29uZmlnLmRlZmF1bHRzLmxhbmddKV07XG4gICAgY29uc3Qgc2NvcGVzVG9Mb2FkID0gWy4uLm5ldyBTZXQob3B0aW9ucz8uc2NvcGVzID8/IHRoaXMuY29uZmlnLnByZWxvYWQ/LnNjb3BlcyA/PyBbdGhpcy5jb25maWcuZGVmYXVsdHMuc2NvcGVdKV07XG5cbiAgICBjb25zdCBsb2FkUHJvbWlzZXM6IFByb21pc2U8XG4gICAgICB8IHsgbGFuZzogQVhUcmFuc2xhdGVMYW5nOyBzY29wZTogQVhUcmFuc2xhdGVTY29wZTsgc3RhdHVzOiAnZnVsZmlsbGVkJzsgdmFsdWU6IEFYVHJhbnNsYXRpb24gfSAvLyBDaGFuZ2VkIGFueSB0byBBWFRyYW5zbGF0aW9uXG4gICAgICB8IHsgbGFuZzogQVhUcmFuc2xhdGVMYW5nOyBzY29wZTogQVhUcmFuc2xhdGVTY29wZTsgc3RhdHVzOiAncmVqZWN0ZWQnOyByZWFzb246IGFueSB9XG4gICAgPltdID0gW107XG5cbiAgICBsYW5nc1RvTG9hZC5mb3JFYWNoKChsYW5nKSA9PiB7XG4gICAgICBzY29wZXNUb0xvYWQuZm9yRWFjaCgoc2NvcGUpID0+IHtcbiAgICAgICAgY29uc3QgbG9hZFByb21pc2UgPSBmaXJzdFZhbHVlRnJvbSh0aGlzLmxvYWQobGFuZywgc2NvcGUpKSAvLyBUaGlzIHNob3VsZCBub3cgYWx3YXlzIGdldCBhIHZhbGlkIE9ic2VydmFibGVcbiAgICAgICAgICAudGhlbigodmFsdWUpID0+ICh7IGxhbmcsIHNjb3BlLCBzdGF0dXM6ICdmdWxmaWxsZWQnIGFzIGNvbnN0LCB2YWx1ZSB9KSlcbiAgICAgICAgICAuY2F0Y2goKHJlYXNvbikgPT4gKHsgbGFuZywgc2NvcGUsIHN0YXR1czogJ3JlamVjdGVkJyBhcyBjb25zdCwgcmVhc29uIH0pKTtcbiAgICAgICAgbG9hZFByb21pc2VzLnB1c2gobG9hZFByb21pc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwobG9hZFByb21pc2VzKTtcblxuICAgIGxldCBhbGxTdWNjZWVkZWQgPSB0cnVlO1xuICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3JlamVjdGVkJykge1xuICAgICAgICBhbGxTdWNjZWVkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgRmFpbGVkIHRvIHByZWxvYWQgdHJhbnNsYXRpb25zIGZvciBsYW5nOiAke3Jlc3VsdC5sYW5nfSwgc2NvcGU6ICR7cmVzdWx0LnNjb3BlfS4gUmVhc29uOmAsXG4gICAgICAgICAgcmVzdWx0LnJlYXNvbixcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgcHJlbG9hZGVkIGxhbmc6ICR7cmVzdWx0Lmxhbmd9LCBzY29wZTogJHtyZXN1bHQuc2NvcGV9YCk7IC8vIE9wdGlvbmFsbHkgdW5jb21tZW50IGZvciBzdWNjZXNzIGxvZ3NcbiAgICAgIH1cbiAgICAgIC8vIGVsc2Uge1xuICAgICAgLy8gY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSBwcmVsb2FkZWQgbGFuZzogJHtyZXN1bHQubGFuZ30sIHNjb3BlOiAke3Jlc3VsdC5zY29wZX1gKTsgLy8gT3B0aW9uYWxseSB1bmNvbW1lbnQgZm9yIHN1Y2Nlc3MgbG9nc1xuICAgICAgLy8gfVxuICAgIH0pO1xuXG4gICAgaWYgKCFhbGxTdWNjZWVkZWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ09uZSBvciBtb3JlIHRyYW5zbGF0aW9uIHByZWxvYWRzIGZhaWxlZC4gU2VlIGNvbnNvbGUgZm9yIGRldGFpbHMuJyk7XG4gICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoXCJPbmUgb3IgbW9yZSB0cmFuc2xhdGlvbiBwcmVsb2FkcyBmYWlsZWQuIFNlZSBjb25zb2xlIGZvciBkZXRhaWxzLlwiKTtcbiAgICB9XG4gICAgLy8gVGhlIHNlY29uZCByZXN1bHRzLmZvckVhY2ggbG9vcCBpbiB5b3VyIG9yaWdpbmFsIGNvZGUgd2FzIHJlZHVuZGFudCwgSSd2ZSByZW1vdmVkIGl0LlxuICAgIC8vIElmIGl0IHdhcyBmb3IgYSBkaWZmZXJlbnQgcHVycG9zZSwgeW91IGNhbiBhZGQgaXQgYmFjay5cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgdGhpcy5pbmZsaWdodC5jbGVhcigpO1xuICB9XG5cbiAgcHVibGljIGdldEZhbGxiYWNrTGFuZ3MobGFuZzogQVhUcmFuc2xhdGVMYW5nKTogQVhUcmFuc2xhdGVMYW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mYWxsYmFja3M/LmxhbmdzPy5bbGFuZ10gPz8gW107XG4gIH1cblxuICBwdWJsaWMgZ2V0RmFsbGJhY2tTY29wZXMoc2NvcGU6IEFYVHJhbnNsYXRlU2NvcGUpOiBBWFRyYW5zbGF0ZVNjb3BlW10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mYWxsYmFja3M/LnNjb3Blcz8uW3Njb3BlXSA/PyBbXTtcbiAgfVxufVxuIl19","export class TranslationParserService {\n constructor() {\n this.legacyRegex = /t\\([\"']([^\"']+)[\"']\\s*(?:,\\s*(\\{.*?\\}))?\\)/g;\n this.inlineRegex = /@([a-zA-Z\\-]+:)?([a-zA-Z0-9_-]+):([a-zA-Z0-9_.:-]+)(?=[\\\\s.,;!?)]|$)/g;\n }\n isExpression(value) {\n return typeof value === 'string' && (value.includes('t(') || value.includes('@'));\n }\n parse(expression, currentLang, currentScope) {\n const tokens = [];\n // Extract inline references like @lang:scope:key or @scope:key\n let inlineMatch;\n while ((inlineMatch = this.inlineRegex.exec(expression)) !== null) {\n const langPart = inlineMatch[1]?.replace(':', '') ?? null;\n const scope = inlineMatch[2] ?? currentScope;\n const key = inlineMatch[3];\n const fullMatch = inlineMatch[0];\n tokens.push({ lang: langPart || currentLang, scope, key, fullMatch });\n }\n // Extract legacy expressions\n let legacyMatch;\n while ((legacyMatch = this.legacyRegex.exec(expression)) !== null) {\n const key = legacyMatch[1];\n const rawOptions = legacyMatch[2];\n let scope = currentScope;\n let lang = currentLang;\n if (rawOptions) {\n try {\n const jsonString = rawOptions.replace(/(['\"])?([a-zA-Z0-9_]+)(['\"])?\\s*:/g, '\"$2\":').replace(/'/g, '\"');\n const options = JSON.parse(jsonString);\n scope = options.scope || scope;\n lang = options.lang || lang;\n }\n catch (err) {\n console.error('Invalid translation expression options:', err);\n }\n }\n tokens.push({ key, scope, lang, fullMatch: legacyMatch[0] });\n }\n return tokens;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ucGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLnBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sd0JBQXdCO0lBQXJDO1FBQ21CLGdCQUFXLEdBQUcsNkNBQTZDLENBQUM7UUFDNUQsZ0JBQVcsR0FBRyx1RUFBdUUsQ0FBQztJQTRDekcsQ0FBQztJQTFDUSxZQUFZLENBQUMsS0FBYTtRQUMvQixPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBa0IsRUFBRSxXQUFtQixFQUFFLFlBQW9CO1FBQ3hFLE1BQU0sTUFBTSxHQUFvQixFQUFFLENBQUM7UUFFbkMsK0RBQStEO1FBQy9ELElBQUksV0FBVyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNsRSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDMUQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQztZQUM3QyxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWpDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxJQUFJLFdBQVcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixJQUFJLFdBQVcsQ0FBQztRQUNoQixPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEUsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUM7WUFDekIsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDO1lBRXZCLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDO29CQUNILE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsb0NBQW9DLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDeEcsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDdkMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO29CQUMvQixJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7Z0JBQzlCLENBQUM7Z0JBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztvQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRSxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQYXJzZWRUb2tlbiB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25QYXJzZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsZWdhY3lSZWdleCA9IC90XFwoW1wiJ10oW15cIiddKylbXCInXVxccyooPzosXFxzKihcXHsuKj9cXH0pKT9cXCkvZztcbiAgcHJpdmF0ZSByZWFkb25seSBpbmxpbmVSZWdleCA9IC9AKFthLXpBLVpcXC1dKzopPyhbYS16QS1aMC05Xy1dKyk6KFthLXpBLVowLTlfLjotXSspKD89W1xcXFxzLiw7IT8pXXwkKS9nO1xuXG4gIHB1YmxpYyBpc0V4cHJlc3Npb24odmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICh2YWx1ZS5pbmNsdWRlcygndCgnKSB8fCB2YWx1ZS5pbmNsdWRlcygnQCcpKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZShleHByZXNzaW9uOiBzdHJpbmcsIGN1cnJlbnRMYW5nOiBzdHJpbmcsIGN1cnJlbnRTY29wZTogc3RyaW5nKTogQVhQYXJzZWRUb2tlbltdIHtcbiAgICBjb25zdCB0b2tlbnM6IEFYUGFyc2VkVG9rZW5bXSA9IFtdO1xuXG4gICAgLy8gRXh0cmFjdCBpbmxpbmUgcmVmZXJlbmNlcyBsaWtlIEBsYW5nOnNjb3BlOmtleSBvciBAc2NvcGU6a2V5XG4gICAgbGV0IGlubGluZU1hdGNoO1xuICAgIHdoaWxlICgoaW5saW5lTWF0Y2ggPSB0aGlzLmlubGluZVJlZ2V4LmV4ZWMoZXhwcmVzc2lvbikpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBsYW5nUGFydCA9IGlubGluZU1hdGNoWzFdPy5yZXBsYWNlKCc6JywgJycpID8/IG51bGw7XG4gICAgICBjb25zdCBzY29wZSA9IGlubGluZU1hdGNoWzJdID8/IGN1cnJlbnRTY29wZTtcbiAgICAgIGNvbnN0IGtleSA9IGlubGluZU1hdGNoWzNdO1xuICAgICAgY29uc3QgZnVsbE1hdGNoID0gaW5saW5lTWF0Y2hbMF07XG5cbiAgICAgIHRva2Vucy5wdXNoKHsgbGFuZzogbGFuZ1BhcnQgfHwgY3VycmVudExhbmcsIHNjb3BlLCBrZXksIGZ1bGxNYXRjaCB9KTtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IGxlZ2FjeSBleHByZXNzaW9uc1xuICAgIGxldCBsZWdhY3lNYXRjaDtcbiAgICB3aGlsZSAoKGxlZ2FjeU1hdGNoID0gdGhpcy5sZWdhY3lSZWdleC5leGVjKGV4cHJlc3Npb24pKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qga2V5ID0gbGVnYWN5TWF0Y2hbMV07XG4gICAgICBjb25zdCByYXdPcHRpb25zID0gbGVnYWN5TWF0Y2hbMl07XG4gICAgICBsZXQgc2NvcGUgPSBjdXJyZW50U2NvcGU7XG4gICAgICBsZXQgbGFuZyA9IGN1cnJlbnRMYW5nO1xuXG4gICAgICBpZiAocmF3T3B0aW9ucykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSByYXdPcHRpb25zLnJlcGxhY2UoLyhbJ1wiXSk/KFthLXpBLVowLTlfXSspKFsnXCJdKT9cXHMqOi9nLCAnXCIkMlwiOicpLnJlcGxhY2UoLycvZywgJ1wiJyk7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XG4gICAgICAgICAgc2NvcGUgPSBvcHRpb25zLnNjb3BlIHx8IHNjb3BlO1xuICAgICAgICAgIGxhbmcgPSBvcHRpb25zLmxhbmcgfHwgbGFuZztcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCB0cmFuc2xhdGlvbiBleHByZXNzaW9uIG9wdGlvbnM6JywgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0b2tlbnMucHVzaCh7IGtleSwgc2NvcGUsIGxhbmcsIGZ1bGxNYXRjaDogbGVnYWN5TWF0Y2hbMF0gfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { TranslationParserService } from './translation.parser';\n// Helper function to escape special characters for use in a regular expression\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport class TranslationResolverService {\n constructor() {\n this.loaderService = inject(AXTranslationLoaderService);\n this.parser = new TranslationParserService();\n }\n async resolve(lang, scope, key, params) {\n let result = this.loaderService.peek(lang, scope, key);\n if (result == null) {\n await firstValueFrom(this.loaderService.load(lang, scope));\n result = this.loaderService.peek(lang, scope, key);\n }\n if (result == null) {\n const unresolvedResult = key;\n return this.format(unresolvedResult, params);\n }\n // Recursively resolve references\n if (typeof result === 'string' && this.parser.isExpression(result)) {\n const tokens = this.parser.parse(result, lang, scope);\n if (tokens.length > 0) {\n const first = tokens[0];\n result = await this.resolve(first.lang || lang, first.scope || scope, first.key, params);\n }\n }\n return this.format(result, params);\n }\n format(text, params) {\n if (!params || typeof text !== 'string' || Object.keys(params).length === 0) {\n return text;\n }\n return Object.keys(params).reduce((currentText, paramKey) => {\n // paramKey is the key from the params object, e.g., \"title\" or \" title \"\n const valueToInsert = params[paramKey];\n // 1. Trim the key from the params object to handle potential leading/trailing spaces.\n // e.g., if paramKey is \" title \", keyForPattern becomes \"title\".\n const keyForPattern = paramKey.trim();\n // If trimming results in an empty string, it's not a valid placeholder to replace.\n if (keyForPattern === '') {\n return currentText;\n }\n // 2. Escape the trimmed key to safely use it in a regular expression.\n // This handles cases where the key might contain special regex characters (e.g., \"user.name\", \"item[0]\").\n const escapedKey = escapeRegExp(keyForPattern);\n // 3. Construct the RegExp. This will match:\n // - {{KEY}}\n // - {{ KEY }}\n // - {{ KEY }}\n // etc., where KEY is the (trimmed and escaped) paramKey.\n const re = new RegExp(`{{\\\\s*${escapedKey}\\\\s*}}`, 'g');\n // 4. Replace occurrences, ensuring the value is a string.\n return currentText.replace(re, String(valueToInsert));\n }, text);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24ucmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2hFLCtFQUErRTtBQUMvRSxTQUFTLFlBQVksQ0FBQyxNQUFjO0lBQ2xDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsTUFBTSxPQUFPLDBCQUEwQjtJQUF2QztRQUNVLGtCQUFhLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDbkQsV0FBTSxHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztJQWlFbEQsQ0FBQztJQS9EQyxLQUFLLENBQUMsT0FBTyxDQUNYLElBQXFCLEVBQ3JCLEtBQXVCLEVBQ3ZCLEdBQVcsRUFDWCxNQUEwQjtRQUUxQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXZELElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25CLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNELE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuQixNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELGlDQUFpQztRQUNqQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzRixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFZLEVBQUUsTUFBMEI7UUFDcEQsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUMxRCx5RUFBeUU7WUFDekUsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZDLHNGQUFzRjtZQUN0RixvRUFBb0U7WUFDcEUsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXRDLG1GQUFtRjtZQUNuRixJQUFJLGFBQWEsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxXQUFXLENBQUM7WUFDckIsQ0FBQztZQUVELHNFQUFzRTtZQUN0RSw2R0FBNkc7WUFDN0csTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRS9DLDRDQUE0QztZQUM1QyxlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQiw0REFBNEQ7WUFDNUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsU0FBUyxVQUFVLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUV4RCwwREFBMEQ7WUFDMUQsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25QYXJzZXJTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5wYXJzZXInO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGVMYW5nLCBBWFRyYW5zbGF0ZVBhcmFtcywgQVhUcmFuc2xhdGVTY29wZSB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBmb3IgdXNlIGluIGEgcmVndWxhciBleHByZXNzaW9uXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJyk7XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvblJlc29sdmVyU2VydmljZSB7XG4gIHByaXZhdGUgbG9hZGVyU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSk7XG4gIHByaXZhdGUgcGFyc2VyID0gbmV3IFRyYW5zbGF0aW9uUGFyc2VyU2VydmljZSgpO1xuXG4gIGFzeW5jIHJlc29sdmUoXG4gICAgbGFuZzogQVhUcmFuc2xhdGVMYW5nLFxuICAgIHNjb3BlOiBBWFRyYW5zbGF0ZVNjb3BlLFxuICAgIGtleTogc3RyaW5nLFxuICAgIHBhcmFtcz86IEFYVHJhbnNsYXRlUGFyYW1zLFxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmxvYWRlclNlcnZpY2UucGVlayhsYW5nLCBzY29wZSwga2V5KTtcblxuICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5sb2FkZXJTZXJ2aWNlLmxvYWQobGFuZywgc2NvcGUpKTtcbiAgICAgIHJlc3VsdCA9IHRoaXMubG9hZGVyU2VydmljZS5wZWVrKGxhbmcsIHNjb3BlLCBrZXkpO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgY29uc3QgdW5yZXNvbHZlZFJlc3VsdCA9IGtleTtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdCh1bnJlc29sdmVkUmVzdWx0LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIC8vIFJlY3Vyc2l2ZWx5IHJlc29sdmUgcmVmZXJlbmNlc1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyAmJiB0aGlzLnBhcnNlci5pc0V4cHJlc3Npb24ocmVzdWx0KSkge1xuICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy5wYXJzZXIucGFyc2UocmVzdWx0LCBsYW5nLCBzY29wZSk7XG4gICAgICBpZiAodG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgZmlyc3QgPSB0b2tlbnNbMF07XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMucmVzb2x2ZShmaXJzdC5sYW5nIHx8IGxhbmcsIGZpcnN0LnNjb3BlIHx8IHNjb3BlLCBmaXJzdC5rZXksIHBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0KHJlc3VsdCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXQodGV4dDogc3RyaW5nLCBwYXJhbXM/OiBBWFRyYW5zbGF0ZVBhcmFtcyk6IHN0cmluZyB7XG4gICAgaWYgKCFwYXJhbXMgfHwgdHlwZW9mIHRleHQgIT09ICdzdHJpbmcnIHx8IE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMocGFyYW1zKS5yZWR1Y2UoKGN1cnJlbnRUZXh0LCBwYXJhbUtleSkgPT4ge1xuICAgICAgLy8gcGFyYW1LZXkgaXMgdGhlIGtleSBmcm9tIHRoZSBwYXJhbXMgb2JqZWN0LCBlLmcuLCBcInRpdGxlXCIgb3IgXCIgdGl0bGUgXCJcbiAgICAgIGNvbnN0IHZhbHVlVG9JbnNlcnQgPSBwYXJhbXNbcGFyYW1LZXldO1xuXG4gICAgICAvLyAxLiBUcmltIHRoZSBrZXkgZnJvbSB0aGUgcGFyYW1zIG9iamVjdCB0byBoYW5kbGUgcG90ZW50aWFsIGxlYWRpbmcvdHJhaWxpbmcgc3BhY2VzLlxuICAgICAgLy8gICAgZS5nLiwgaWYgcGFyYW1LZXkgaXMgXCIgdGl0bGUgXCIsIGtleUZvclBhdHRlcm4gYmVjb21lcyBcInRpdGxlXCIuXG4gICAgICBjb25zdCBrZXlGb3JQYXR0ZXJuID0gcGFyYW1LZXkudHJpbSgpO1xuXG4gICAgICAvLyBJZiB0cmltbWluZyByZXN1bHRzIGluIGFuIGVtcHR5IHN0cmluZywgaXQncyBub3QgYSB2YWxpZCBwbGFjZWhvbGRlciB0byByZXBsYWNlLlxuICAgICAgaWYgKGtleUZvclBhdHRlcm4gPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50VGV4dDtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gRXNjYXBlIHRoZSB0cmltbWVkIGtleSB0byBzYWZlbHkgdXNlIGl0IGluIGEgcmVndWxhciBleHByZXNzaW9uLlxuICAgICAgLy8gICAgVGhpcyBoYW5kbGVzIGNhc2VzIHdoZXJlIHRoZSBrZXkgbWlnaHQgY29udGFpbiBzcGVjaWFsIHJlZ2V4IGNoYXJhY3RlcnMgKGUuZy4sIFwidXNlci5uYW1lXCIsIFwiaXRlbVswXVwiKS5cbiAgICAgIGNvbnN0IGVzY2FwZWRLZXkgPSBlc2NhcGVSZWdFeHAoa2V5Rm9yUGF0dGVybik7XG5cbiAgICAgIC8vIDMuIENvbnN0cnVjdCB0aGUgUmVnRXhwLiBUaGlzIHdpbGwgbWF0Y2g6XG4gICAgICAvLyAgICAtIHt7S0VZfX1cbiAgICAgIC8vICAgIC0ge3sgS0VZIH19XG4gICAgICAvLyAgICAtIHt7ICBLRVkgIH19XG4gICAgICAvLyAgICBldGMuLCB3aGVyZSBLRVkgaXMgdGhlICh0cmltbWVkIGFuZCBlc2NhcGVkKSBwYXJhbUtleS5cbiAgICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChge3tcXFxccyoke2VzY2FwZWRLZXl9XFxcXHMqfX1gLCAnZycpO1xuXG4gICAgICAvLyA0LiBSZXBsYWNlIG9jY3VycmVuY2VzLCBlbnN1cmluZyB0aGUgdmFsdWUgaXMgYSBzdHJpbmcuXG4gICAgICByZXR1cm4gY3VycmVudFRleHQucmVwbGFjZShyZSwgU3RyaW5nKHZhbHVlVG9JbnNlcnQpKTtcbiAgICB9LCB0ZXh0KTtcbiAgfVxufVxuIl19","export const LOCALE_KEY_REGEX = /^(\\*-\\*|[a-z]{2}-[A-Z]{2})$/;\nexport function resolveMultiLanguageValue(value, locale) {\n return value[locale] ?? value['en-US'] ?? Object.values(value).find((item) => item != null) ?? '';\n}\nexport function isValidMultiLanguageObject(value) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const entries = Object.entries(value);\n if (!entries.length) {\n return false;\n }\n return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');\n}\n/**\n * Resolves {@link AXMultiLanguageString} to a single string for the given locale.\n * Fallback order: `currentLocale` → `en-US` → first map value.\n */\nexport function resolveMultiLanguageString(content, currentLocale) {\n if (content == null || content === '') {\n return '';\n }\n if (typeof content === 'string') {\n return content;\n }\n if (!isValidMultiLanguageObject(content)) {\n return String(content);\n }\n return resolveMultiLanguageValue(content, currentLocale);\n}\n/**\n * Creates an {@link AXMultiLanguageMap} with `en-US` and `fa-IR` entries.\n * Use for seed data, tests, and demos that supply English and Persian copy explicitly.\n */\nexport function createMultiLanguageString(enUs, faIr) {\n return { 'en-US': enUs, 'fa-IR': faIr };\n}\n/**\n * True when there is no displayable text in any locale (plain string or ML map).\n */\nexport function isEffectivelyEmptyLocalizedValue(value) {\n if (value == null)\n return true;\n if (typeof value === 'string')\n return value.trim() === '';\n if (typeof value !== 'object' || Array.isArray(value))\n return false;\n const record = value;\n return Object.values(record).every((v) => v == null || String(v).trim() === '');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0JBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUFDO0FBTTlELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxLQUF5QixFQUFFLE1BQWM7SUFDakYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3BHLENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsS0FBYztJQUN2RCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUM7QUFDNUcsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FDeEMsT0FBaUQsRUFDakQsYUFBcUI7SUFFckIsSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxJQUFZLEVBQUUsSUFBWTtJQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDMUMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdDQUFnQyxDQUFDLEtBQWM7SUFDN0QsSUFBSSxLQUFLLElBQUksSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQy9CLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMxRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLEtBQWdDLENBQUM7SUFDaEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDbEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYVHJhbnNsYXRlSGFzaE1hcDxUID0gdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCBUPjtcblxuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGVMYW5nID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGVTY29wZSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIEFYVHJhbnNsYXRlUGFyYW1zPFQgPSB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIFQ+O1xuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGlvbiA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUcmFuc2xhdGVPcHRpb25zIHtcbiAgbGFuZz86IEFYVHJhbnNsYXRlTGFuZztcbiAgc2NvcGU/OiBBWFRyYW5zbGF0ZVNjb3BlO1xuICBwYXJhbXM/OiBBWFRyYW5zbGF0ZVBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBhcnNlZFRva2VuIHtcbiAga2V5OiBzdHJpbmc7XG4gIHNjb3BlPzogQVhUcmFuc2xhdGVTY29wZTtcbiAgbGFuZz86IEFYVHJhbnNsYXRlTGFuZztcbiAgZnVsbE1hdGNoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBMT0NBTEVfS0VZX1JFR0VYID0gL14oXFwqLVxcKnxbYS16XXsyfS1bQS1aXXsyfSkkLztcblxuZXhwb3J0IHR5cGUgQVhNdWx0aUxhbmd1YWdlTWFwID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IHR5cGUgQVhNdWx0aUxhbmd1YWdlU3RyaW5nID0gc3RyaW5nIHwgQVhNdWx0aUxhbmd1YWdlTWFwO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU11bHRpTGFuZ3VhZ2VWYWx1ZSh2YWx1ZTogQVhNdWx0aUxhbmd1YWdlTWFwLCBsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZVtsb2NhbGVdID8/IHZhbHVlWydlbi1VUyddID8/IE9iamVjdC52YWx1ZXModmFsdWUpLmZpbmQoKGl0ZW0pID0+IGl0ZW0gIT0gbnVsbCkgPz8gJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTXVsdGlMYW5ndWFnZU9iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEFYTXVsdGlMYW5ndWFnZU1hcCB7XG4gIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh2YWx1ZSk7XG4gIGlmICghZW50cmllcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZW50cmllcy5ldmVyeSgoW2tleSwgZW50cnlWYWx1ZV0pID0+IExPQ0FMRV9LRVlfUkVHRVgudGVzdChrZXkpICYmIHR5cGVvZiBlbnRyeVZhbHVlID09PSAnc3RyaW5nJyk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMge0BsaW5rIEFYTXVsdGlMYW5ndWFnZVN0cmluZ30gdG8gYSBzaW5nbGUgc3RyaW5nIGZvciB0aGUgZ2l2ZW4gbG9jYWxlLlxuICogRmFsbGJhY2sgb3JkZXI6IGBjdXJyZW50TG9jYWxlYCDihpIgYGVuLVVTYCDihpIgZmlyc3QgbWFwIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU11bHRpTGFuZ3VhZ2VTdHJpbmcoXG4gIGNvbnRlbnQ6IEFYTXVsdGlMYW5ndWFnZVN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGN1cnJlbnRMb2NhbGU6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGlmIChjb250ZW50ID09IG51bGwgfHwgY29udGVudCA9PT0gJycpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG4gIGlmICghaXNWYWxpZE11bHRpTGFuZ3VhZ2VPYmplY3QoY29udGVudCkpIHtcbiAgICByZXR1cm4gU3RyaW5nKGNvbnRlbnQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc29sdmVNdWx0aUxhbmd1YWdlVmFsdWUoY29udGVudCwgY3VycmVudExvY2FsZSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiB7QGxpbmsgQVhNdWx0aUxhbmd1YWdlTWFwfSB3aXRoIGBlbi1VU2AgYW5kIGBmYS1JUmAgZW50cmllcy5cbiAqIFVzZSBmb3Igc2VlZCBkYXRhLCB0ZXN0cywgYW5kIGRlbW9zIHRoYXQgc3VwcGx5IEVuZ2xpc2ggYW5kIFBlcnNpYW4gY29weSBleHBsaWNpdGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTXVsdGlMYW5ndWFnZVN0cmluZyhlblVzOiBzdHJpbmcsIGZhSXI6IHN0cmluZyk6IEFYTXVsdGlMYW5ndWFnZU1hcCB7XG4gIHJldHVybiB7ICdlbi1VUyc6IGVuVXMsICdmYS1JUic6IGZhSXIgfTtcbn1cblxuLyoqXG4gKiBUcnVlIHdoZW4gdGhlcmUgaXMgbm8gZGlzcGxheWFibGUgdGV4dCBpbiBhbnkgbG9jYWxlIChwbGFpbiBzdHJpbmcgb3IgTUwgbWFwKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWZmZWN0aXZlbHlFbXB0eUxvY2FsaXplZFZhbHVlKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50cmltKCkgPT09ICcnO1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCByZWNvcmQgPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVjb3JkKS5ldmVyeSgodikgPT4gdiA9PSBudWxsIHx8IFN0cmluZyh2KS50cmltKCkgPT09ICcnKTtcbn1cbiJdfQ==","import { AXEventService, AXSystemEvents } from '@acorex/core/events';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { waitFor } from '@acorex/core/utils';\nimport { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, from, of, shareReplay, switchMap } from 'rxjs';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { TranslationParserService } from './translation.parser';\nimport { TranslationResolverService } from './translation.resolver';\nimport { isValidMultiLanguageObject, LOCALE_KEY_REGEX, resolveMultiLanguageValue, } from './translation.types';\nimport * as i0 from \"@angular/core\";\nlet singletonInstance;\nexport function translateSync(key, options) {\n return singletonInstance.translateSync(key, options);\n}\nexport class AXTranslationService {\n constructor() {\n this.localeService = inject(AXLocaleService);\n this.config = inject(AX_TRANSLATION_CONFIG);\n this.loader = inject(AXTranslationLoaderService);\n this.parser = new TranslationParserService();\n this.eventService = inject(AXEventService);\n this.resolver = new TranslationResolverService();\n this.activeLang = new BehaviorSubject(this.config.defaults.lang);\n this.langChanges$ = this.activeLang.asObservable();\n this.currentLocale$ = this.langChanges$.pipe(distinctUntilChanged());\n singletonInstance = this;\n this.localeService.profileChanged$.subscribe((locale) => {\n if (locale?.localeInfo?.code) {\n this.setActiveLang(locale.localeInfo.code);\n }\n });\n }\n setActiveLang(lang) {\n if (lang && lang !== this.activeLang.getValue()) {\n this.activeLang.next(lang);\n this.eventService.emitEvent({\n type: AXSystemEvents.AXLanguageChanged,\n payload: lang,\n });\n }\n }\n getActiveLang() {\n return this.activeLang.getValue();\n }\n getDefaultLang() {\n return this.config.defaults.lang;\n }\n resolve(value, locale) {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n if (!isValidMultiLanguageObject(value)) {\n return '';\n }\n return resolveMultiLanguageValue(value, locale ?? this.getActiveLang());\n }\n toLocaleMap(value, activeLocale = this.getActiveLang()) {\n if (isValidMultiLanguageObject(value)) {\n return { ...value };\n }\n return {\n [activeLocale]: typeof value === 'string' ? value : '',\n };\n }\n translate$(value, options) {\n if (isValidMultiLanguageObject(value)) {\n return this.langChanges$.pipe(switchMap((activeLang) => {\n const targetLang = options?.lang ?? activeLang;\n const selectedValue = resolveMultiLanguageValue(value, targetLang);\n const scope = options?.scope ?? this.config.defaults.scope;\n return from(this.translateAsync(selectedValue, {\n ...options,\n lang: targetLang,\n scope,\n }));\n }));\n }\n return this.translateValue$(value, options);\n }\n async translateAsync(text, options) {\n const { lang, scope } = this.resolveContext(options);\n const params = options?.params;\n if (!this.parser.isExpression(text)) {\n return this.resolver.resolve(lang, scope, text, params);\n }\n const tokens = this.parser.parse(text, lang, scope);\n const results = await Promise.all(tokens.map((token) => this.resolver\n .resolve(token.lang ?? lang, token.scope ?? scope, token.key, params)\n .then((translated) => [token.fullMatch, translated])));\n return results.reduce((output, [match, translated]) => output.replace(match, translated), text);\n }\n translateSync(text, options) {\n const { lang, scope } = this.resolveContext(options);\n const params = options?.params;\n const waitForLoad = options?.waitForLoad ?? false;\n const timeoutMs = options?.timeoutMs ?? 100;\n if (!this.parser.isExpression(text)) {\n let translated = this.loader.peek(lang, scope, text);\n if (!translated && waitForLoad) {\n translated = waitFor(() => this.loader.peek(lang, scope, text), () => this.loader.load(lang, scope).subscribe(), timeoutMs);\n }\n return this.resolver.format(translated ?? text, params);\n }\n const tokens = this.parser.parse(text, lang, scope);\n let result = text;\n for (const token of tokens) {\n const targetLang = token.lang ?? lang;\n const targetScope = token.scope ?? scope;\n const key = token.key;\n let translation = this.loader.peek(targetLang, targetScope, key);\n if (!translation) {\n translation =\n waitFor(() => this.loader.peek(targetLang, targetScope, key), () => this.loader.load(targetLang, targetScope).subscribe(), waitForLoad ? timeoutMs : 0) ?? key;\n }\n result = result.replace(token.fullMatch, this.resolver.format(translation, params));\n }\n return result;\n }\n translateValue$(text, options) {\n if (!text) {\n return of('');\n }\n const staticOptions = { ...options };\n const staticScope = staticOptions.scope ?? this.config.defaults.scope;\n return this.langChanges$.pipe(switchMap((lang) => {\n return from(this.translateAsync(text, {\n ...staticOptions,\n lang: staticOptions.lang ?? lang,\n scope: staticScope,\n }));\n }), shareReplay({ bufferSize: 1, refCount: true }));\n }\n resolveContext(options) {\n return {\n lang: options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang,\n scope: options?.scope ?? this.config.defaults.scope,\n };\n }\n isValidMultiLanguageObject(value) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const entries = Object.entries(value);\n if (!entries.length) {\n return false;\n }\n return entries.every(([key, entryValue]) => LOCALE_KEY_REGEX.test(key) && typeof entryValue === 'string');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvdHJhbnNsYXRpb24vc3JjL2xpYi90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBSUwsMEJBQTBCLEVBQzFCLGdCQUFnQixFQUNoQix5QkFBeUIsR0FDMUIsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFN0IsSUFBSSxpQkFBdUMsQ0FBQztBQUU1QyxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVcsRUFBRSxPQUE0QjtJQUNyRSxPQUFPLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUtELE1BQU0sT0FBTyxvQkFBb0I7SUFXL0I7UUFWUSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFl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S0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUs7U0FDcEQsQ0FBQztJQUNKLENBQUM7SUFFTSwwQkFBMEIsQ0FBQyxLQUFjO1FBQzlDLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQztJQUM1RyxDQUFDOzhHQXhNVSxvQkFBb0I7a0hBQXBCLG9CQUFvQixjQUZuQixNQUFNOzsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhFdmVudFNlcnZpY2UsIEFYU3lzdGVtRXZlbnRzIH0gZnJvbSAnQGFjb3JleC9jb3JlL2V2ZW50cyc7XG5pbXBvcnQgeyBBWExvY2FsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvbG9jYWxlJztcbmltcG9ydCB7IHdhaXRGb3IgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbkxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uLWxvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0NPTkZJRyB9IGZyb20gJy4vdHJhbnNsYXRpb24uY29uZmlnJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uUGFyc2VyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24ucGFyc2VyJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uUmVzb2x2ZXJTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5yZXNvbHZlcic7XG5pbXBvcnQge1xuICBBWE11bHRpTGFuZ3VhZ2VNYXAsXG4gIEFYVHJhbnNsYXRlTGFuZyxcbiAgQVhUcmFuc2xhdGVPcHRpb25zLFxuICBpc1ZhbGlkTXVsdGlMYW5ndWFnZU9iamVjdCxcbiAgTE9DQUxFX0tFWV9SRUdFWCxcbiAgcmVzb2x2ZU11bHRpTGFuZ3VhZ2VWYWx1ZSxcbn0gZnJvbSAnLi90cmFuc2xhdGlvbi50eXBlcyc7XG5cbmxldCBzaW5nbGV0b25JbnN0YW5jZTogQVhUcmFuc2xhdGlvblNlcnZpY2U7XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGVTeW5jKGtleTogc3RyaW5nLCBvcHRpb25zPzogQVhUcmFuc2xhdGVPcHRpb25zKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNpbmdsZXRvbkluc3RhbmNlLnRyYW5zbGF0ZVN5bmMoa2V5LCBvcHRpb25zKTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByaXZhdGUgY29uZmlnID0gaW5qZWN0KEFYX1RSQU5TTEFUSU9OX0NPTkZJRyk7XG4gIHByaXZhdGUgbG9hZGVyID0gaW5qZWN0KEFYVHJhbnNsYXRpb25Mb2FkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwYXJzZXIgPSBuZXcgVHJhbnNsYXRpb25QYXJzZXJTZXJ2aWNlKCk7XG4gIHByaXZhdGUgZXZlbnRTZXJ2aWNlID0gaW5qZWN0KEFYRXZlbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZXNvbHZlciA9IG5ldyBUcmFuc2xhdGlvblJlc29sdmVyU2VydmljZSgpO1xuICBwcml2YXRlIGFjdGl2ZUxhbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYVHJhbnNsYXRlTGFuZz4odGhpcy5jb25maWcuZGVmYXVsdHMubGFuZyk7XG4gIHB1YmxpYyByZWFkb25seSBsYW5nQ2hhbmdlcyQgPSB0aGlzLmFjdGl2ZUxhbmcuYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TG9jYWxlJCA9IHRoaXMubGFuZ0NoYW5nZXMkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc2luZ2xldG9uSW5zdGFuY2UgPSB0aGlzO1xuICAgIHRoaXMubG9jYWxlU2VydmljZS5wcm9maWxlQ2hhbmdlZCQuc3Vic2NyaWJlKChsb2NhbGUpID0+IHtcbiAgICAgIGlmIChsb2NhbGU/LmxvY2FsZUluZm8/LmNvZGUpIHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVMYW5nKGxvY2FsZS5sb2NhbGVJbmZvLmNvZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGl2ZUxhbmcobGFuZzogQVhUcmFuc2xhdGVMYW5nKTogdm9pZCB7XG4gICAgaWYgKGxhbmcgJiYgbGFuZyAhPT0gdGhpcy5hY3RpdmVMYW5nLmdldFZhbHVlKCkpIHtcbiAgICAgIHRoaXMuYWN0aXZlTGFuZy5uZXh0KGxhbmcpO1xuICAgICAgdGhpcy5ldmVudFNlcnZpY2UuZW1pdEV2ZW50KHtcbiAgICAgICAgdHlwZTogQVhTeXN0ZW1FdmVudHMuQVhMYW5ndWFnZUNoYW5nZWQsXG4gICAgICAgIHBheWxvYWQ6IGxhbmcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0QWN0aXZlTGFuZygpOiBBWFRyYW5zbGF0ZUxhbmcge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUxhbmcuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZWZhdWx0TGFuZygpOiBBWFRyYW5zbGF0ZUxhbmcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5kZWZhdWx0cy5sYW5nO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUodmFsdWU6IHN0cmluZyB8IEFYTXVsdGlMYW5ndWFnZU1hcCB8IG51bGwgfCB1bmRlZmluZWQsIGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmICghaXNWYWxpZE11bHRpTGFuZ3VhZ2VPYmplY3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVNdWx0aUxhbmd1YWdlVmFsdWUodmFsdWUsIGxvY2FsZSA/PyB0aGlzLmdldEFjdGl2ZUxhbmcoKSk7XG4gIH1cblxuICBwdWJsaWMgdG9Mb2NhbGVNYXAoXG4gICAgdmFsdWU6IHN0cmluZyB8IEFYTXVsdGlMYW5ndWFnZU1hcCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgYWN0aXZlTG9jYWxlOiBzdHJpbmcgPSB0aGlzLmdldEFjdGl2ZUxhbmcoKSxcbiAgKTogQVhNdWx0aUxhbmd1YWdlTWFwIHtcbiAgICBpZiAoaXNWYWxpZE11bHRpTGFuZ3VhZ2VPYmplY3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4geyAuLi52YWx1ZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBbYWN0aXZlTG9jYWxlXTogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogJycsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2xhdGUkKFxuICAgIHZhbHVlOiBzdHJpbmcgfCBBWE11bHRpTGFuZ3VhZ2VNYXAgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKGlzVmFsaWRNdWx0aUxhbmd1YWdlT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ0NoYW5nZXMkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoYWN0aXZlTGFuZykgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhcmdldExhbmcgPSBvcHRpb25zPy5sYW5nID8/IGFjdGl2ZUxhbmc7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IHJlc29sdmVNdWx0aUxhbmd1YWdlVmFsdWUodmFsdWUsIHRhcmdldExhbmcpO1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0gb3B0aW9ucz8uc2NvcGUgPz8gdGhpcy5jb25maWcuZGVmYXVsdHMuc2NvcGU7XG5cbiAgICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlQXN5bmMoc2VsZWN0ZWRWYWx1ZSwge1xuICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICBsYW5nOiB0YXJnZXRMYW5nLFxuICAgICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlVmFsdWUkKHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHRyYW5zbGF0ZUFzeW5jKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgeyBsYW5nLCBzY29wZSB9ID0gdGhpcy5yZXNvbHZlQ29udGV4dChvcHRpb25zKTtcbiAgICBjb25zdCBwYXJhbXMgPSBvcHRpb25zPy5wYXJhbXM7XG5cbiAgICBpZiAoIXRoaXMucGFyc2VyLmlzRXhwcmVzc2lvbih0ZXh0KSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZXIucmVzb2x2ZShsYW5nLCBzY29wZSwgdGV4dCwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbnMgPSB0aGlzLnBhcnNlci5wYXJzZSh0ZXh0LCBsYW5nLCBzY29wZSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0b2tlbnMubWFwKCh0b2tlbikgPT5cbiAgICAgICAgdGhpcy5yZXNvbHZlclxuICAgICAgICAgIC5yZXNvbHZlKHRva2VuLmxhbmcgPz8gbGFuZywgdG9rZW4uc2NvcGUgPz8gc2NvcGUsIHRva2VuLmtleSwgcGFyYW1zKVxuICAgICAgICAgIC50aGVuKCh0cmFuc2xhdGVkKSA9PiBbdG9rZW4uZnVsbE1hdGNoLCB0cmFuc2xhdGVkXSksXG4gICAgICApLFxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzdWx0cy5yZWR1Y2UoKG91dHB1dCwgW21hdGNoLCB0cmFuc2xhdGVkXSkgPT4gb3V0cHV0LnJlcGxhY2UobWF0Y2gsIHRyYW5zbGF0ZWQpLCB0ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2xhdGVTeW5jKFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQVhUcmFuc2xhdGVPcHRpb25zICYgeyB3YWl0Rm9yTG9hZD86IGJvb2xlYW47IHRpbWVvdXRNcz86IG51bWJlciB9LFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgbGFuZywgc2NvcGUgfSA9IHRoaXMucmVzb2x2ZUNvbnRleHQob3B0aW9ucyk7XG4gICAgY29uc3QgcGFyYW1zID0gb3B0aW9ucz8ucGFyYW1zO1xuICAgIGNvbnN0IHdhaXRGb3JMb2FkID0gb3B0aW9ucz8ud2FpdEZvckxvYWQgPz8gZmFsc2U7XG4gICAgY29uc3QgdGltZW91dE1zID0gb3B0aW9ucz8udGltZW91dE1zID8/IDEwMDtcblxuICAgIGlmICghdGhpcy5wYXJzZXIuaXNFeHByZXNzaW9uKHRleHQpKSB7XG4gICAgICBsZXQgdHJhbnNsYXRlZCA9IHRoaXMubG9hZGVyLnBlZWsobGFuZywgc2NvcGUsIHRleHQpO1xuXG4gICAgICBpZiAoIXRyYW5zbGF0ZWQgJiYgd2FpdEZvckxvYWQpIHtcbiAgICAgICAgdHJhbnNsYXRlZCA9IHdhaXRGb3IoXG4gICAgICAgICAgKCkgPT4gdGhpcy5sb2FkZXIucGVlayhsYW5nLCBzY29wZSwgdGV4dCksXG4gICAgICAgICAgKCkgPT4gdGhpcy5sb2FkZXIubG9hZChsYW5nLCBzY29wZSkuc3Vic2NyaWJlKCksXG4gICAgICAgICAgdGltZW91dE1zLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZlci5mb3JtYXQodHJhbnNsYXRlZCA/PyB0ZXh0LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VucyA9IHRoaXMucGFyc2VyLnBhcnNlKHRleHQsIGxhbmcsIHNjb3BlKTtcbiAgICBsZXQgcmVzdWx0ID0gdGV4dDtcblxuICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKSB7XG4gICAgICBjb25zdCB0YXJnZXRMYW5nID0gdG9rZW4ubGFuZyA/PyBsYW5nO1xuICAgICAgY29uc3QgdGFyZ2V0U2NvcGUgPSB0b2tlbi5zY29wZSA/PyBzY29wZTtcbiAgICAgIGNvbnN0IGtleSA9IHRva2VuLmtleTtcblxuICAgICAgbGV0IHRyYW5zbGF0aW9uID0gdGhpcy5sb2FkZXIucGVlayh0YXJnZXRMYW5nLCB0YXJnZXRTY29wZSwga2V5KTtcblxuICAgICAgaWYgKCF0cmFuc2xhdGlvbikge1xuICAgICAgICB0cmFuc2xhdGlvbiA9XG4gICAgICAgICAgd2FpdEZvcihcbiAgICAgICAgICAgICgpID0+IHRoaXMubG9hZGVyLnBlZWsodGFyZ2V0TGFuZywgdGFyZ2V0U2NvcGUsIGtleSksXG4gICAgICAgICAgICAoKSA9PiB0aGlzLmxvYWRlci5sb2FkKHRhcmdldExhbmcsIHRhcmdldFNjb3BlKS5zdWJzY3JpYmUoKSxcbiAgICAgICAgICAgIHdhaXRGb3JMb2FkID8gdGltZW91dE1zIDogMCxcbiAgICAgICAgICApID8/IGtleTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UodG9rZW4uZnVsbE1hdGNoLCB0aGlzLnJlc29sdmVyLmZvcm1hdCh0cmFuc2xhdGlvbiwgcGFyYW1zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNsYXRlVmFsdWUkKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9ucyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCF0ZXh0KSB7XG4gICAgICByZXR1cm4gb2YoJycpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXRpY09wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfTtcbiAgICBjb25zdCBzdGF0aWNTY29wZSA9IHN0YXRpY09wdGlvbnMuc2NvcGUgPz8gdGhpcy5jb25maWcuZGVmYXVsdHMuc2NvcGU7XG5cbiAgICByZXR1cm4gdGhpcy5sYW5nQ2hhbmdlcyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobGFuZykgPT4ge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZUFzeW5jKHRleHQsIHtcbiAgICAgICAgICAgIC4uLnN0YXRpY09wdGlvbnMsXG4gICAgICAgICAgICBsYW5nOiBzdGF0aWNPcHRpb25zLmxhbmcgPz8gbGFuZyxcbiAgICAgICAgICAgIHNjb3BlOiBzdGF0aWNTY29wZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQ29udGV4dChvcHRpb25zPzogQVhUcmFuc2xhdGVPcHRpb25zKTogeyBsYW5nOiBBWFRyYW5zbGF0ZUxhbmc7IHNjb3BlOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhbmc6IG9wdGlvbnM/LmxhbmcgPz8gdGhpcy5nZXRBY3RpdmVMYW5nKCkgPz8gdGhpcy5jb25maWcuZGVmYXVsdHMubGFuZyxcbiAgICAgIHNjb3BlOiBvcHRpb25zPy5zY29wZSA/PyB0aGlzLmNvbmZpZy5kZWZhdWx0cy5zY29wZSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGlzVmFsaWRNdWx0aUxhbmd1YWdlT2JqZWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQVhNdWx0aUxhbmd1YWdlTWFwIHtcbiAgICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpO1xuICAgIGlmICghZW50cmllcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50cmllcy5ldmVyeSgoW2tleSwgZW50cnlWYWx1ZV0pID0+IExPQ0FMRV9LRVlfUkVHRVgudGVzdChrZXkpICYmIHR5cGVvZiBlbnRyeVZhbHVlID09PSAnc3RyaW5nJyk7XG4gIH1cbn1cbiJdfQ==","import { inject } from '@angular/core';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationService } from './translation.service';\nexport const loadTranslationScope = (route, state) => {\n const translationLoaderService = inject(AXTranslationLoaderService);\n const translationService = inject(AXTranslationService);\n const config = inject(AX_TRANSLATION_CONFIG);\n const scopeValue = route.data[config.resolver?.scopeKey];\n const scopes = Array.isArray(scopeValue) ? scopeValue : [scopeValue];\n return translationLoaderService.preload({ langs: [translationService.getActiveLang()], scopes });\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tc2NvcGUucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24tc2NvcGUucmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBdUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDdkUsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNwRSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckUsT0FBTyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDbkcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXNvbHZlRm4gfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbkxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uLWxvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0NPTkZJRyB9IGZyb20gJy4vdHJhbnNsYXRpb24uY29uZmlnJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IGxvYWRUcmFuc2xhdGlvblNjb3BlOiBSZXNvbHZlRm48dW5rbm93bj4gPSAocm91dGUsIHN0YXRlKSA9PiB7XG4gIGNvbnN0IHRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSk7XG4gIGNvbnN0IHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChBWF9UUkFOU0xBVElPTl9DT05GSUcpO1xuICBjb25zdCBzY29wZVZhbHVlID0gcm91dGUuZGF0YVtjb25maWcucmVzb2x2ZXI/LnNjb3BlS2V5XTtcbiAgY29uc3Qgc2NvcGVzID0gQXJyYXkuaXNBcnJheShzY29wZVZhbHVlKSA/IHNjb3BlVmFsdWUgOiBbc2NvcGVWYWx1ZV07XG4gIHJldHVybiB0cmFuc2xhdGlvbkxvYWRlclNlcnZpY2UucHJlbG9hZCh7IGxhbmdzOiBbdHJhbnNsYXRpb25TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKV0sIHNjb3BlcyB9KTtcbn07XG4iXX0=","import { Directive, TemplateRef, ViewContainerRef, inject } from '@angular/core';\nimport { shareReplay } from 'rxjs';\nimport { AXTranslationService } from './translation.service';\nimport * as i0 from \"@angular/core\";\nexport class AXTranslatorDirective {\n constructor() {\n this.templateRef = inject(TemplateRef);\n this.vc = inject(ViewContainerRef);\n this.translationService = inject(AXTranslationService);\n }\n ngOnInit() {\n const cache = new Map();\n const t = (key, opts) => {\n const id = `${key}|${opts?.lang ?? this.translationService.getActiveLang()}|${opts?.scope ?? 'common'}`;\n if (!cache.has(id)) {\n cache.set(id, this.translationService.translate$(key, opts).pipe(shareReplay({ bufferSize: 1, refCount: true })));\n }\n return cache.get(id);\n };\n this.vc.clear();\n this.vc.createEmbeddedView(this.templateRef, { $implicit: t });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXTranslatorDirective, isStandalone: true, selector: \"[translate]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[translate]' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRzdELE1BQU0sT0FBTyxxQkFBcUI7SUFEbEM7UUFFVSxnQkFBVyxHQUFHLE1BQU0sQ0FBbUIsV0FBVyxDQUFDLENBQUM7UUFDcEQsT0FBRSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBbUIzRDtJQWpCQyxRQUFRO1FBQ04sTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFFcEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBeUIsRUFBRSxFQUFFO1lBQ25ELE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7WUFDeEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsS0FBSyxDQUFDLEdBQUcsQ0FDUCxFQUFFLEVBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDbkcsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDOzhHQXJCVSxxQkFBcUI7a0dBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRlT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3RyYW5zbGF0ZV0nIH0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZiA9IGluamVjdDxUZW1wbGF0ZVJlZjxhbnk+PihUZW1wbGF0ZVJlZik7XG4gIHByaXZhdGUgdmMgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPHN0cmluZz4+KCk7XG5cbiAgICBjb25zdCB0ID0gKGtleTogc3RyaW5nLCBvcHRzPzogQVhUcmFuc2xhdGVPcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IGAke2tleX18JHtvcHRzPy5sYW5nID8/IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKX18JHtvcHRzPy5zY29wZSA/PyAnY29tbW9uJ31gO1xuICAgICAgaWYgKCFjYWNoZS5oYXMoaWQpKSB7XG4gICAgICAgIGNhY2hlLnNldChcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUkKGtleSwgb3B0cykucGlwZShzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYWNoZS5nZXQoaWQpITtcbiAgICB9O1xuXG4gICAgdGhpcy52Yy5jbGVhcigpO1xuICAgIHRoaXMudmMuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsIHsgJGltcGxpY2l0OiB0IH0pO1xuICB9XG59XG4iXX0=","import { inject, Pipe } from '@angular/core';\nimport { of } from 'rxjs';\nimport { AXTranslationService } from './translation.service';\nimport * as i0 from \"@angular/core\";\nexport class AXTranslatorPipe {\n constructor() {\n this.service = inject(AXTranslationService);\n }\n transform(value, options) {\n if (!value) {\n return of('');\n }\n return this.service.translate$(value, options);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorPipe, isStandalone: true, name: \"translate\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslatorPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'translate',\n pure: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0b3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPN0QsTUFBTSxPQUFPLGdCQUFnQjtJQUo3QjtRQUtVLFlBQU8sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQVdoRDtJQVRDLFNBQVMsQ0FDUCxLQUF5RCxFQUN6RCxPQUE0QjtRQUU1QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQzs4R0FYVSxnQkFBZ0I7NEdBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsSUFBSSxFQUFFLElBQUk7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0ZU9wdGlvbnMgfSBmcm9tICcuL3RyYW5zbGF0aW9uLnR5cGVzJztcblxuQFBpcGUoe1xuICBuYW1lOiAndHJhbnNsYXRlJyxcbiAgcHVyZTogdHJ1ZSxcbn0pIC8vIFRoZSBwaXBlIGNhbiBub3cgYmUgcHVyZVxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSBzZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS50cmFuc2xhdGUkKHZhbHVlLCBvcHRpb25zKTtcbiAgfVxufVxuIl19","import { NgModule, inject, provideAppInitializer } from '@angular/core';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AXTranslatorDirective } from './translator.directive';\nimport { AXTranslatorPipe } from './translator.pipe';\nimport * as i0 from \"@angular/core\";\nfunction initializeApp(translatorService) {\n return () => {\n return translatorService.preload();\n };\n}\nexport class AXTranslationModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, imports: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationLoaderService));\n return initializerFn();\n }),\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXTranslationModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AXTranslatorPipe, AXTranslatorDirective],\n exports: [AXTranslatorPipe, AXTranslatorDirective],\n providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationLoaderService));\n return initializerFn();\n }),\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFckQsU0FBUyxhQUFhLENBQUMsaUJBQTZDO0lBQ2xFLE9BQU8sR0FBa0IsRUFBRTtRQUN6QixPQUFPLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFZRCxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixZQVRwQixnQkFBZ0IsRUFBRSxxQkFBcUIsYUFDdkMsZ0JBQWdCLEVBQUUscUJBQXFCOytHQVF0QyxtQkFBbUIsYUFQbkI7WUFDVCxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pCLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO2dCQUN4RSxPQUFPLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQztTQUNIOzsyRkFFVSxtQkFBbUI7a0JBVi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUM7b0JBQ2xELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixDQUFDO29CQUNsRCxTQUFTLEVBQUU7d0JBQ1QscUJBQXFCLENBQUMsR0FBRyxFQUFFOzRCQUN6QixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQzs0QkFDeEUsT0FBTyxhQUFhLEVBQUUsQ0FBQzt3QkFDekIsQ0FBQyxDQUFDO3FCQUNIO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIGluamVjdCwgcHJvdmlkZUFwcEluaXRpYWxpemVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi90cmFuc2xhdG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnLi90cmFuc2xhdG9yLnBpcGUnO1xuXG5mdW5jdGlvbiBpbml0aWFsaXplQXBwKHRyYW5zbGF0b3JTZXJ2aWNlOiBBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSkge1xuICByZXR1cm4gKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0cmFuc2xhdG9yU2VydmljZS5wcmVsb2FkKCk7XG4gIH07XG59XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtBWFRyYW5zbGF0b3JQaXBlLCBBWFRyYW5zbGF0b3JEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbQVhUcmFuc2xhdG9yUGlwZSwgQVhUcmFuc2xhdG9yRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUFwcEluaXRpYWxpemVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxpemVyRm4gPSBpbml0aWFsaXplQXBwKGluamVjdChBWFRyYW5zbGF0aW9uTG9hZGVyU2VydmljZSkpO1xuICAgICAgcmV0dXJuIGluaXRpYWxpemVyRm4oKTtcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdGlvbk1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtdHJhbnNsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9hY29yZXgtY29yZS10cmFuc2xhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/core",
3
- "version": "20.6.22",
3
+ "version": "20.6.24",
4
4
  "peerDependencies": {
5
5
  "lodash-es": ">=4.17.21",
6
6
  "memoizee": ">=0.4.15",
@@ -54,10 +54,6 @@
54
54
  "types": "./full-screen/index.d.ts",
55
55
  "default": "./fesm2022/acorex-core-full-screen.mjs"
56
56
  },
57
- "./icon": {
58
- "types": "./icon/index.d.ts",
59
- "default": "./fesm2022/acorex-core-icon.mjs"
60
- },
61
57
  "./image": {
62
58
  "types": "./image/index.d.ts",
63
59
  "default": "./fesm2022/acorex-core-image.mjs"
@@ -74,6 +70,10 @@
74
70
  "types": "./network/index.d.ts",
75
71
  "default": "./fesm2022/acorex-core-network.mjs"
76
72
  },
73
+ "./icon": {
74
+ "types": "./icon/index.d.ts",
75
+ "default": "./fesm2022/acorex-core-icon.mjs"
76
+ },
77
77
  "./pipes": {
78
78
  "types": "./pipes/index.d.ts",
79
79
  "default": "./fesm2022/acorex-core-pipes.mjs"
@@ -1,7 +1,8 @@
1
- import * as i0 from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
2
2
  import { Subject, BehaviorSubject } from 'rxjs';
3
3
 
4
4
  type AXThemeMode = 'light' | 'dark' | 'system' | 'system-dark' | 'system-light';
5
+ type AXDirection = 'ltr' | 'rtl';
5
6
  type AXPlatforms = 'Android' | 'Desktop' | 'iOS' | 'Mobile';
6
7
  type AXBrowsers = 'Chrome' | 'Safari' | 'Edge' | 'Firefox' | 'Opera' | 'MSIE';
7
8
  type AXTechnologies = 'PWA' | 'Hybrid' | 'Electron';
@@ -49,14 +50,22 @@ declare class AXPlatform {
49
50
  #private;
50
51
  resize: Subject<AXPlatformEvent>;
51
52
  directionChange: Subject<AXPlatformEvent>;
53
+ languageChange: Subject<AXPlatformEvent>;
52
54
  click: Subject<AXPlatformEvent>;
53
55
  scroll: Subject<AXPlatformEvent>;
54
56
  themeMode$: BehaviorSubject<AXThemeMode>;
55
- themeMode: i0.WritableSignal<AXThemeMode>;
57
+ themeMode: _angular_core.WritableSignal<AXThemeMode>;
58
+ direction$: BehaviorSubject<AXDirection>;
59
+ direction: _angular_core.WritableSignal<AXDirection>;
60
+ language$: BehaviorSubject<string>;
61
+ language: _angular_core.WritableSignal<string>;
56
62
  private document;
57
63
  private platformID;
64
+ private eventService;
58
65
  isDark(): boolean;
59
66
  isRtl(): boolean;
67
+ get documentDirection(): AXDirection;
68
+ get documentLanguage(): string;
60
69
  isLandscape(): boolean;
61
70
  isPortrate(): boolean;
62
71
  /**
@@ -87,17 +96,31 @@ declare class AXPlatform {
87
96
  * @param mode - Desired theme mode.
88
97
  */
89
98
  setThemeMode(mode: AXThemeMode): void;
99
+ /**
100
+ * Sets document direction (dir="ltr|rtl") and persists it.
101
+ */
102
+ setDirection(dir: AXDirection): void;
103
+ toggleDirection(): "ltr" | "rtl";
104
+ /**
105
+ * Sets document language (lang="<bcp47>") and optionally direction, then persists it.
106
+ */
107
+ setLanguage(lang: string, options?: {
108
+ dir?: AXDirection;
109
+ }): void;
110
+ autoDetectLanguage(): string;
111
+ autoDetectDirection(): AXDirection;
90
112
  private setFullHeightRatio;
91
113
  private autoSystemModeDetection;
92
114
  constructor();
115
+ private detectLanguageChangeFromSystemEvents;
93
116
  private detectDarkMode;
94
117
  private detectOnResize;
95
118
  private detectClickEvent;
96
119
  private detectScrollEvent;
97
120
  private detectDocumentDirectionChange;
98
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatform, never>;
99
- static ɵprov: i0.ɵɵInjectableDeclaration<AXPlatform>;
121
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPlatform, never>;
122
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPlatform>;
100
123
  }
101
124
 
102
125
  export { AXPlatform, AXPlatformEvent, PLATFORMS_MAP, is2XLScreen, is3XLScreen, is4XLScreen, isAndroid, isAndroidTablet, isBrowser, isCapacitorNative, isChrome, isCordova, isDesktop, isEdge, isElectron, isFirefox, isHybrid, isIOS, isIpad, isIphone, isLGScreen, isMDScreen, isMSIE, isMobile, isMobileWeb, isOpera, isPWA, isPhablet, isSMScreen, isSafari, isServer, isTablet, isTouch, isXLScreen, matchMedia, testUserAgent };
103
- export type { AXBrowsers, AXPlatforms, AXScreenSizes, AXTechnologies, AXThemeMode };
126
+ export type { AXBrowsers, AXDirection, AXPlatforms, AXScreenSizes, AXTechnologies, AXThemeMode };
@@ -126,6 +126,7 @@ declare class AXTranslationService {
126
126
  }): string;
127
127
  private translateValue$;
128
128
  private resolveContext;
129
+ isValidMultiLanguageObject(value: unknown): value is AXMultiLanguageMap;
129
130
  static ɵfac: i0.ɵɵFactoryDeclaration<AXTranslationService, never>;
130
131
  static ɵprov: i0.ɵɵInjectableDeclaration<AXTranslationService>;
131
132
  }