@acorex/core 19.14.0-next.0 → 19.14.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/fesm2022/acorex-core-components.mjs +3 -3
  2. package/fesm2022/acorex-core-components.mjs.map +1 -1
  3. package/fesm2022/acorex-core-config.mjs +3 -3
  4. package/fesm2022/acorex-core-config.mjs.map +1 -1
  5. package/fesm2022/acorex-core-date-time.mjs +25 -25
  6. package/fesm2022/acorex-core-date-time.mjs.map +1 -1
  7. package/fesm2022/acorex-core-events.mjs +3 -3
  8. package/fesm2022/acorex-core-events.mjs.map +1 -1
  9. package/fesm2022/acorex-core-file.mjs +10 -10
  10. package/fesm2022/acorex-core-file.mjs.map +1 -1
  11. package/fesm2022/acorex-core-format.mjs +19 -19
  12. package/fesm2022/acorex-core-format.mjs.map +1 -1
  13. package/fesm2022/acorex-core-image.mjs +3 -3
  14. package/fesm2022/acorex-core-image.mjs.map +1 -1
  15. package/fesm2022/acorex-core-locale.mjs +10 -10
  16. package/fesm2022/acorex-core-locale.mjs.map +1 -1
  17. package/fesm2022/acorex-core-network.mjs +3 -3
  18. package/fesm2022/acorex-core-network.mjs.map +1 -1
  19. package/fesm2022/acorex-core-pipes.mjs +3 -3
  20. package/fesm2022/acorex-core-pipes.mjs.map +1 -1
  21. package/fesm2022/acorex-core-platform.mjs +3 -3
  22. package/fesm2022/acorex-core-platform.mjs.map +1 -1
  23. package/fesm2022/acorex-core-storage.mjs +9 -9
  24. package/fesm2022/acorex-core-storage.mjs.map +1 -1
  25. package/fesm2022/acorex-core-translation.mjs +16 -16
  26. package/fesm2022/acorex-core-translation.mjs.map +1 -1
  27. package/fesm2022/acorex-core-utils.mjs +3 -3
  28. package/fesm2022/acorex-core-utils.mjs.map +1 -1
  29. package/fesm2022/acorex-core-validation.mjs +40 -40
  30. package/fesm2022/acorex-core-validation.mjs.map +1 -1
  31. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-translation.mjs","sources":["../../../../libs/core/translation/src/lib/translation.config.ts","../../../../libs/core/translation/src/lib/translation.loader.ts","../../../../libs/core/translation/src/lib/translation-loader.service.ts","../../../../libs/core/translation/src/lib/translation.parser.ts","../../../../libs/core/translation/src/lib/translation.resolver.ts","../../../../libs/core/translation/src/lib/translation.service.ts","../../../../libs/core/translation/src/lib/translation-scope.resolver.ts","../../../../libs/core/translation/src/lib/translator.directive.ts","../../../../libs/core/translation/src/lib/translator.pipe.ts","../../../../libs/core/translation/src/lib/translation.module.ts","../../../../libs/core/translation/src/acorex-core-translation.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AXTranslateLang, AXTranslateScope } from './translation.types';\n\n\nexport interface AXTranslationConfig {\n defaults: {\n lang: AXTranslateLang;\n scope: AXTranslateScope;\n };\n preload?: {\n langs: AXTranslateLang[];\n scopes: AXTranslateScope[];\n };\n fallbacks?: {\n langs?: Record<AXTranslateLang, AXTranslateLang[]>;\n scopes?: Record<AXTranslateScope, AXTranslateScope[]>;\n };\n available?: {\n langs?: AXTranslateLang[];\n scopes?: AXTranslateScope[];\n };\n resolver?: {\n scopeKey: string; // used to extract scope from params, e.g. `scope: 'common'`\n };\n}\n\nexport const AX_TRANSLATION_CONFIG = new InjectionToken<AXTranslationConfig>('AX_TRANSLATION_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXTranslationDefaultConfig;\n },\n});\n\nexport const AXTranslationDefaultConfig: AXTranslationConfig = {\n defaults: {\n lang: 'en-US',\n scope: 'common',\n },\n preload: {\n langs: ['en-US'],\n scopes: ['common'],\n },\n resolver: {\n scopeKey: 'scope',\n },\n};\n\nexport type AXPartialTranslationConfig = Partial<AXTranslationConfig>;\n\nexport function translationConfig(config: AXPartialTranslationConfig = {}): AXTranslationConfig {\n const result = {\n ...AXTranslationDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslateLang, AXTranslateScope, AXTranslation } from './translation.types';\n\nexport interface AXTranslationLoaderOptions {\n lang: AXTranslateLang;\n scope?: AXTranslateScope;\n}\n\nexport interface AXTranslationLoader {\n load(options: AXTranslationLoaderOptions): Observable<AXTranslation>;\n}\n\nexport class AXTranslationLoaderDefault implements AXTranslationLoader {\n load(options: AXTranslationLoaderOptions): Observable<AXTranslation> {\n return of({});\n }\n}\n\nexport const AX_TRANSLATION_LOADER = new InjectionToken<AXTranslationLoader>('AX_TRANSLATION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXTranslationLoaderDefault();\n },\n});\n","import { Injectable, inject } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { Observable, firstValueFrom, of, shareReplay, tap } from 'rxjs';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AX_TRANSLATION_LOADER } from './translation.loader';\nimport { AXTranslateLang, AXTranslateScope, AXTranslation } from './translation.types';\n\n@Injectable({ providedIn: 'root' })\nexport class AXTranslationLoaderService {\n private loader = inject(AX_TRANSLATION_LOADER);\n private config = inject(AX_TRANSLATION_CONFIG);\n\n private cache = new Map<string, AXTranslation>();\n private inflight = new Map<string, Observable<AXTranslation>>();\n\n public load(lang: AXTranslateLang, scope: AXTranslateScope): Observable<AXTranslation> {\n const key = `${lang}:${scope}`;\n console.log('Attempting to load:', key); // More specific log\n\n // 1. Check cache first\n if (this.cache.has(key)) {\n console.log('Cache hit for:', key);\n return of(this.cache.get(key)!);\n }\n\n // 2. Check if it's already in-flight\n if (this.inflight.has(key)) {\n console.log('In-flight hit for:', key);\n return this.inflight.get(key)!;\n }\n\n // 3. Not in cache, not in-flight: Make the request\n console.log('Cache and in-flight miss. Fetching:', key);\n const newObs = this.loader.load({ lang, scope }).pipe(\n tap({\n next: (data) => {\n console.log('Successfully loaded. Caching:', key);\n this.cache.set(key, data);\n // No need to delete from inflight here, finalize will handle it\n // or delete it only after caching. If you delete here, and shareReplay\n // source completes, subsequent subscribers might re-trigger if not careful.\n // It's better to remove from inflight in finalize or after shareReplay has replayed.\n // For simplicity and common patterns, removing after caching within tap (before shareReplay)\n // can work if shareReplay handles the source completion correctly.\n // A safer bet is to remove it in finalize *after* shareReplay.\n },\n error: (err) => {\n console.error(`Error loading ${key}:`, err);\n // Remove from inflight on error so subsequent calls can retry\n this.inflight.delete(key);\n },\n // finalize is tricky with shareReplay if you want to keep the replayed value\n // but still clear inflight. For this pattern, deleting on next/error\n // *before* shareReplay often means that shareReplay will re-trigger the source\n // if the inflight observable is requested again after being deleted.\n // The current structure of deleting in `tap` and then `shareReplay`\n // might need `this.inflight.delete(key)` to be moved after `shareReplay` effect.\n // Let's try a common pattern:\n }),\n shareReplay(1), // Replay the last emitted value for subsequent subscribers\n tap({\n // This tap runs *after* shareReplay has done its work for the first subscriber\n // and for subsequent subscribers that get the replayed value.\n next: () => {\n // Once data is successfully loaded and cached (by the first tap),\n // and shareReplay ensures it's available, we can remove from inflight.\n // This means subsequent calls for the same key during the \"inflight\" period\n // get the shared observable, and after it resolves and is cached,\n // inflight is cleared.\n this.inflight.delete(key);\n },\n // Error is handled by the first tap, or catchError if you want to provide a fallback\n }),\n );\n\n this.inflight.set(key, newObs); // Store the observable that includes caching and cleanup logic\n return newObs;\n }\n\n public peek(lang: AXTranslateLang, scope: AXTranslateScope, key: string): string | null {\n const cacheKey = `${lang}:${scope}`;\n const data = this.cache.get(cacheKey);\n return get(data, key, null);\n }\n\n public async preload(options?: { langs?: AXTranslateLang[]; scopes?: AXTranslateScope[] }): Promise<void> {\n const langsToLoad = [...new Set(options?.langs ?? this.config.preload?.langs ?? [this.config.defaults.lang])];\n const scopesToLoad = [...new Set(options?.scopes ?? this.config.preload?.scopes ?? [this.config.defaults.scope])];\n\n const loadPromises: Promise<\n | { lang: AXTranslateLang; scope: AXTranslateScope; status: 'fulfilled'; value: AXTranslation } // Changed any to AXTranslation\n | { lang: AXTranslateLang; scope: AXTranslateScope; status: 'rejected'; reason: any }\n >[] = [];\n\n langsToLoad.forEach((lang) => {\n scopesToLoad.forEach((scope) => {\n const loadPromise = firstValueFrom(this.load(lang, scope)) // This should now always get a valid Observable\n .then((value) => ({ lang, scope, status: 'fulfilled' as const, value }))\n .catch((reason) => ({ lang, scope, status: 'rejected' as const, reason }));\n loadPromises.push(loadPromise);\n });\n });\n\n const results = await Promise.all(loadPromises);\n\n let allSucceeded = true;\n results.forEach((result) => {\n if (result.status === 'rejected') {\n allSucceeded = false;\n console.error(\n `Failed to preload translations for lang: ${result.lang}, scope: ${result.scope}. Reason:`,\n result.reason,\n );\n } else {\n console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs\n }\n });\n\n if (!allSucceeded) {\n console.error('One or more translation preloads failed. See console for details.');\n // throw new Error(\"One or more translation preloads failed. See console for details.\");\n }\n // The second results.forEach loop in your original code was redundant, I've removed it.\n // If it was for a different purpose, you can add it back.\n }\n\n public clear(): void {\n this.cache.clear();\n this.inflight.clear();\n }\n\n public getFallbackLangs(lang: AXTranslateLang): AXTranslateLang[] {\n return this.config.fallbacks?.langs?.[lang] ?? [];\n }\n\n public getFallbackScopes(scope: AXTranslateScope): AXTranslateScope[] {\n return this.config.fallbacks?.scopes?.[scope] ?? [];\n }\n}\n","import { AXParsedToken } from \"./translation.types\";\n\nexport class TranslationParserService {\n private readonly legacyRegex = /t\\([\"']([^\"']+)[\"']\\s*(?:,\\s*(\\{.*?\\}))?\\)/g;\n private readonly inlineRegex = /@([a-zA-Z\\-]+:)?([a-zA-Z0-9_-]+):([a-zA-Z0-9_.:-]+)(?=[\\\\s.,;!?)]|$)/g;\n\n public isExpression(value: string): boolean {\n return typeof value === 'string' && (value.includes('t(') || value.includes('@'));\n }\n\n public parse(expression: string, currentLang: string, currentScope: string): AXParsedToken[] {\n const tokens: AXParsedToken[] = [];\n\n // Extract inline references like @lang:scope:key or @scope:key\n let inlineMatch;\n while ((inlineMatch = this.inlineRegex.exec(expression)) !== null) {\n const langPart = inlineMatch[1]?.replace(':', '') ?? null;\n const scope = inlineMatch[2] ?? currentScope;\n const key = inlineMatch[3];\n const fullMatch = inlineMatch[0];\n\n tokens.push({ lang: langPart || currentLang, scope, key, fullMatch });\n }\n\n // Extract legacy expressions\n let legacyMatch;\n while ((legacyMatch = this.legacyRegex.exec(expression)) !== null) {\n const key = legacyMatch[1];\n const rawOptions = legacyMatch[2];\n let scope = currentScope;\n let lang = currentLang;\n\n if (rawOptions) {\n try {\n const jsonString = rawOptions\n .replace(/(['\"])?([a-zA-Z0-9_]+)(['\"])?\\s*:/g, '\"$2\":')\n .replace(/'/g, '\"');\n const options = JSON.parse(jsonString);\n scope = options.scope || scope;\n lang = options.lang || lang;\n } catch (err) {\n console.error('Invalid translation expression options:', err);\n }\n }\n\n tokens.push({ key, scope, lang, fullMatch: legacyMatch[0] });\n }\n\n return tokens;\n }\n\n}","import { inject } from '@angular/core';\nimport { AXTranslateLang, AXTranslateScope, AXTranslateParams, AXTranslation } from './translation.types';\nimport { get as lodashGet } from 'lodash-es';\nimport { TranslationParserService } from './translation.parser';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { firstValueFrom } from 'rxjs';\n\nexport class TranslationResolverService {\n private loaderService = inject(AXTranslationLoaderService);\n private cache = new Map<string, AXTranslation>();\n private inflight = new Map<string, Promise<AXTranslation>>();\n private parser = new TranslationParserService();\n\n async resolve(lang: AXTranslateLang, scope: AXTranslateScope, key: string, params?: AXTranslateParams): Promise<string> {\n const cacheKey = `${lang}:${scope}`;\n\n // Load and cache if not present\n if (!this.cache.has(cacheKey)) {\n if (!this.inflight.has(cacheKey)) {\n const fetchPromise = firstValueFrom(this.loaderService.load(lang, scope));\n this.inflight.set(cacheKey, fetchPromise);\n\n const data = await fetchPromise;\n this.cache.set(cacheKey, data);\n this.inflight.delete(cacheKey);\n } else {\n await this.inflight.get(cacheKey); // wait for the inflight fetch\n }\n }\n\n const translations = this.cache.get(cacheKey);\n let result = lodashGet(translations, key, key);\n\n // Recursively resolve references\n if (typeof result === 'string' && this.parser.isExpression(result)) {\n const tokens = this.parser.parse(result, lang, scope);\n if (tokens.length > 0) {\n const first = tokens[0];\n result = await this.resolve(first.lang || lang, first.scope || scope, first.key, params);\n }\n }\n\n return this.format(result, params);\n }\n\n public format(text: string, params?: AXTranslateParams): string {\n if (!params || typeof text !== 'string') return text;\n\n return Object.keys(params).reduce((out, key) => {\n const re = new RegExp(`{{\\s*${key}\\s*}}`, 'g');\n return out.replace(re, params[key] as string);\n }, text);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { TranslationParserService } from './translation.parser';\nimport { TranslationResolverService } from './translation.resolver';\nimport { AXTranslateLang, AXTranslateOptions } from './translation.types';\nimport { BehaviorSubject, from, Observable, of, shareReplay, switchMap } from 'rxjs';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { waitFor } from '@acorex/core/utils';\n\nlet singletonInstance: AXTranslationService;\n\nexport function translateSync(key: string, options?: AXTranslateOptions): string {\n return singletonInstance.translateSync(key, options);\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXTranslationService {\n private localeService = inject(AXLocaleService);\n private config = inject(AX_TRANSLATION_CONFIG);\n private loader = inject(AXTranslationLoaderService);\n private parser = new TranslationParserService();\n private resolver = new TranslationResolverService();\n private activeLang = new BehaviorSubject<AXTranslateLang>(this.config.defaults.lang);\n public readonly langChanges$ = this.activeLang.asObservable();\n\n constructor() {\n singletonInstance = this;\n this.localeService.profileChanged$.subscribe((locale) => {\n if (locale?.localeInfo?.code) {\n this.setActiveLang(locale.localeInfo.code);\n }\n });\n }\n\n public setActiveLang(lang: AXTranslateLang): void {\n if (lang && lang !== this.activeLang.getValue()) {\n this.activeLang.next(lang);\n }\n }\n\n public getActiveLang(): AXTranslateLang {\n return this.activeLang.getValue();\n }\n\n public getDefaultLang(): AXTranslateLang {\n return this.config.defaults.lang;\n }\n\n\n public translate$(text: string, options?: AXTranslateOptions): Observable<string> {\n if (!text) {\n return of('');\n }\n\n const staticOptions = { ...options };\n const staticScope = staticOptions.scope ?? this.config.defaults.scope;\n\n return this.langChanges$.pipe(\n switchMap(lang => {\n return from(\n this.translateAsync(text, {\n ...staticOptions,\n lang: staticOptions.lang ?? lang,\n scope: staticScope\n })\n );\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n\n async translateAsync(text: string, options?: AXTranslateOptions): Promise<string> {\n const lang = options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang;\n const scope = options?.scope ?? this.config.defaults.scope;\n const params = options?.params;\n\n if (!this.parser.isExpression(text)) {\n const resolved = await this.resolver.resolve(lang, scope, text, params);\n return this.resolver.format(resolved, params);\n }\n\n const tokens = this.parser.parse(text, lang, scope);\n\n const results = await Promise.all(\n tokens.map(token =>\n this.resolver.resolve(token.lang ?? lang, token.scope ?? scope, token.key, params)\n .then(translated => [token.fullMatch, this.resolver.format(translated, params)])\n )\n );\n\n return results.reduce((output, [match, translated]) => output.replace(match, translated), text);\n }\n\n public translateSync(\n text: string,\n options?: AXTranslateOptions & { waitForLoad?: boolean; timeoutMs?: number }\n ): string {\n const lang = options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang;\n const scope = options?.scope ?? this.config.defaults.scope;\n const params = options?.params;\n const waitForLoad = options?.waitForLoad ?? false;\n const timeoutMs = options?.timeoutMs ?? 100;\n\n if (!this.parser.isExpression(text)) {\n let translated = this.loader.peek(lang, scope, text);\n\n if (!translated && waitForLoad) {\n translated = waitFor(\n () => this.loader.peek(lang, scope, text),\n () => this.loader.load(lang, scope).subscribe(),\n timeoutMs\n );\n }\n\n return this.resolver.format(translated ?? text, params);\n }\n\n const tokens = this.parser.parse(text, lang, scope);\n let result = text;\n\n for (const token of tokens) {\n const targetLang = token.lang ?? lang;\n const targetScope = token.scope ?? scope;\n const key = token.key;\n\n let translation = this.loader.peek(targetLang, targetScope, key);\n\n if (!translation) {\n translation = waitFor(\n () => this.loader.peek(targetLang, targetScope, key),\n () => this.loader.load(targetLang, targetScope).subscribe(),\n waitForLoad ? timeoutMs : 0\n ) ?? key;\n }\n\n result = result.replace(token.fullMatch, this.resolver.format(translation, params));\n }\n\n return result;\n }\n}\n","import { inject } from '@angular/core';\nimport { ResolveFn } from '@angular/router';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AXTranslationService } from './translation.service';\n\nexport const loadTranslationScope: ResolveFn<unknown> = (route, state) => {\n const translationLoaderService = inject(AXTranslationLoaderService);\n const translationService = inject(AXTranslationService);\n const config = inject(AX_TRANSLATION_CONFIG);\n const scopeValue = route.data[config.resolver?.scopeKey];\n const scopes = Array.isArray(scopeValue) ? scopeValue : [scopeValue];\n return translationLoaderService.preload({ langs: [translationService.getActiveLang()], scopes });\n};\n","import { Directive, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AXTranslationService } from './translation.service';\nimport { AXTranslateOptions } from './translation.types';\nimport { Observable, shareReplay } from 'rxjs';\n@Directive({ selector: '[translate]' })\nexport class AXTranslatorDirective implements OnInit {\n\n\n constructor(\n private templateRef: TemplateRef<any>,\n private vc: ViewContainerRef,\n private translationService: AXTranslationService,\n ) { }\n\n\n\n ngOnInit() {\n const cache = new Map<string, Observable<string>>();\n\n const t = (key: string, opts?: AXTranslateOptions) => {\n const id = `${key}|${opts?.lang ?? this.translationService.getActiveLang()}|${opts?.scope ?? 'common'}`;\n if (!cache.has(id)) {\n cache.set(\n id,\n this.translationService.translate$(key, opts)\n .pipe(shareReplay({ bufferSize: 1, refCount: true }))\n );\n }\n return cache.get(id)!;\n };\n\n\n\n this.vc.clear();\n this.vc.createEmbeddedView(this.templateRef, { $implicit: t });\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslateOptions } from './translation.types';\nimport { AXTranslationService } from './translation.service';\n\n@Pipe({\n name: 'translate',\n pure: true,\n}) // The pipe can now be pure\nexport class AXTranslatorPipe implements PipeTransform {\n private service = inject(AXTranslationService);\n\n transform(key: string, options?: AXTranslateOptions): Observable<string> {\n if (!key) {\n return of(''); // Return an empty observable if the key is not provided\n }\n return this.service.translate$(key, options);\n }\n}\n","import { NgModule, inject, provideAppInitializer } from '@angular/core';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AXTranslatorDirective } from './translator.directive';\nimport { AXTranslatorPipe } from './translator.pipe';\n\nfunction initializeApp(translatorService: AXTranslationLoaderService) {\n return (): Promise<void> => {\n return translatorService.preload();\n };\n}\n\n@NgModule({\n imports: [AXTranslatorPipe, AXTranslatorDirective],\n exports: [AXTranslatorPipe, AXTranslatorDirective],\n providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationLoaderService));\n return initializerFn();\n }),\n ],\n})\nexport class AXTranslationModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["lodashGet","i1.AXTranslationService"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-core-translation.mjs","sources":["../../../../libs/core/translation/src/lib/translation.config.ts","../../../../libs/core/translation/src/lib/translation.loader.ts","../../../../libs/core/translation/src/lib/translation-loader.service.ts","../../../../libs/core/translation/src/lib/translation.parser.ts","../../../../libs/core/translation/src/lib/translation.resolver.ts","../../../../libs/core/translation/src/lib/translation.service.ts","../../../../libs/core/translation/src/lib/translation-scope.resolver.ts","../../../../libs/core/translation/src/lib/translator.directive.ts","../../../../libs/core/translation/src/lib/translator.pipe.ts","../../../../libs/core/translation/src/lib/translation.module.ts","../../../../libs/core/translation/src/acorex-core-translation.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AXTranslateLang, AXTranslateScope } from './translation.types';\n\n\nexport interface AXTranslationConfig {\n defaults: {\n lang: AXTranslateLang;\n scope: AXTranslateScope;\n };\n preload?: {\n langs: AXTranslateLang[];\n scopes: AXTranslateScope[];\n };\n fallbacks?: {\n langs?: Record<AXTranslateLang, AXTranslateLang[]>;\n scopes?: Record<AXTranslateScope, AXTranslateScope[]>;\n };\n available?: {\n langs?: AXTranslateLang[];\n scopes?: AXTranslateScope[];\n };\n resolver?: {\n scopeKey: string; // used to extract scope from params, e.g. `scope: 'common'`\n };\n}\n\nexport const AX_TRANSLATION_CONFIG = new InjectionToken<AXTranslationConfig>('AX_TRANSLATION_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXTranslationDefaultConfig;\n },\n});\n\nexport const AXTranslationDefaultConfig: AXTranslationConfig = {\n defaults: {\n lang: 'en-US',\n scope: 'common',\n },\n preload: {\n langs: ['en-US'],\n scopes: ['common'],\n },\n resolver: {\n scopeKey: 'scope',\n },\n};\n\nexport type AXPartialTranslationConfig = Partial<AXTranslationConfig>;\n\nexport function translationConfig(config: AXPartialTranslationConfig = {}): AXTranslationConfig {\n const result = {\n ...AXTranslationDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslateLang, AXTranslateScope, AXTranslation } from './translation.types';\n\nexport interface AXTranslationLoaderOptions {\n lang: AXTranslateLang;\n scope?: AXTranslateScope;\n}\n\nexport interface AXTranslationLoader {\n load(options: AXTranslationLoaderOptions): Observable<AXTranslation>;\n}\n\nexport class AXTranslationLoaderDefault implements AXTranslationLoader {\n load(options: AXTranslationLoaderOptions): Observable<AXTranslation> {\n return of({});\n }\n}\n\nexport const AX_TRANSLATION_LOADER = new InjectionToken<AXTranslationLoader>('AX_TRANSLATION_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXTranslationLoaderDefault();\n },\n});\n","import { Injectable, inject } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { Observable, firstValueFrom, of, shareReplay, tap } from 'rxjs';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AX_TRANSLATION_LOADER } from './translation.loader';\nimport { AXTranslateLang, AXTranslateScope, AXTranslation } from './translation.types';\n\n@Injectable({ providedIn: 'root' })\nexport class AXTranslationLoaderService {\n private loader = inject(AX_TRANSLATION_LOADER);\n private config = inject(AX_TRANSLATION_CONFIG);\n\n private cache = new Map<string, AXTranslation>();\n private inflight = new Map<string, Observable<AXTranslation>>();\n\n public load(lang: AXTranslateLang, scope: AXTranslateScope): Observable<AXTranslation> {\n const key = `${lang}:${scope}`;\n console.log('Attempting to load:', key); // More specific log\n\n // 1. Check cache first\n if (this.cache.has(key)) {\n console.log('Cache hit for:', key);\n return of(this.cache.get(key)!);\n }\n\n // 2. Check if it's already in-flight\n if (this.inflight.has(key)) {\n console.log('In-flight hit for:', key);\n return this.inflight.get(key)!;\n }\n\n // 3. Not in cache, not in-flight: Make the request\n console.log('Cache and in-flight miss. Fetching:', key);\n const newObs = this.loader.load({ lang, scope }).pipe(\n tap({\n next: (data) => {\n console.log('Successfully loaded. Caching:', key);\n this.cache.set(key, data);\n // No need to delete from inflight here, finalize will handle it\n // or delete it only after caching. If you delete here, and shareReplay\n // source completes, subsequent subscribers might re-trigger if not careful.\n // It's better to remove from inflight in finalize or after shareReplay has replayed.\n // For simplicity and common patterns, removing after caching within tap (before shareReplay)\n // can work if shareReplay handles the source completion correctly.\n // A safer bet is to remove it in finalize *after* shareReplay.\n },\n error: (err) => {\n console.error(`Error loading ${key}:`, err);\n // Remove from inflight on error so subsequent calls can retry\n this.inflight.delete(key);\n },\n // finalize is tricky with shareReplay if you want to keep the replayed value\n // but still clear inflight. For this pattern, deleting on next/error\n // *before* shareReplay often means that shareReplay will re-trigger the source\n // if the inflight observable is requested again after being deleted.\n // The current structure of deleting in `tap` and then `shareReplay`\n // might need `this.inflight.delete(key)` to be moved after `shareReplay` effect.\n // Let's try a common pattern:\n }),\n shareReplay(1), // Replay the last emitted value for subsequent subscribers\n tap({\n // This tap runs *after* shareReplay has done its work for the first subscriber\n // and for subsequent subscribers that get the replayed value.\n next: () => {\n // Once data is successfully loaded and cached (by the first tap),\n // and shareReplay ensures it's available, we can remove from inflight.\n // This means subsequent calls for the same key during the \"inflight\" period\n // get the shared observable, and after it resolves and is cached,\n // inflight is cleared.\n this.inflight.delete(key);\n },\n // Error is handled by the first tap, or catchError if you want to provide a fallback\n }),\n );\n\n this.inflight.set(key, newObs); // Store the observable that includes caching and cleanup logic\n return newObs;\n }\n\n public peek(lang: AXTranslateLang, scope: AXTranslateScope, key: string): string | null {\n const cacheKey = `${lang}:${scope}`;\n const data = this.cache.get(cacheKey);\n return get(data, key, null);\n }\n\n public async preload(options?: { langs?: AXTranslateLang[]; scopes?: AXTranslateScope[] }): Promise<void> {\n const langsToLoad = [...new Set(options?.langs ?? this.config.preload?.langs ?? [this.config.defaults.lang])];\n const scopesToLoad = [...new Set(options?.scopes ?? this.config.preload?.scopes ?? [this.config.defaults.scope])];\n\n const loadPromises: Promise<\n | { lang: AXTranslateLang; scope: AXTranslateScope; status: 'fulfilled'; value: AXTranslation } // Changed any to AXTranslation\n | { lang: AXTranslateLang; scope: AXTranslateScope; status: 'rejected'; reason: any }\n >[] = [];\n\n langsToLoad.forEach((lang) => {\n scopesToLoad.forEach((scope) => {\n const loadPromise = firstValueFrom(this.load(lang, scope)) // This should now always get a valid Observable\n .then((value) => ({ lang, scope, status: 'fulfilled' as const, value }))\n .catch((reason) => ({ lang, scope, status: 'rejected' as const, reason }));\n loadPromises.push(loadPromise);\n });\n });\n\n const results = await Promise.all(loadPromises);\n\n let allSucceeded = true;\n results.forEach((result) => {\n if (result.status === 'rejected') {\n allSucceeded = false;\n console.error(\n `Failed to preload translations for lang: ${result.lang}, scope: ${result.scope}. Reason:`,\n result.reason,\n );\n } else {\n console.log(`Successfully preloaded lang: ${result.lang}, scope: ${result.scope}`); // Optionally uncomment for success logs\n }\n });\n\n if (!allSucceeded) {\n console.error('One or more translation preloads failed. See console for details.');\n // throw new Error(\"One or more translation preloads failed. See console for details.\");\n }\n // The second results.forEach loop in your original code was redundant, I've removed it.\n // If it was for a different purpose, you can add it back.\n }\n\n public clear(): void {\n this.cache.clear();\n this.inflight.clear();\n }\n\n public getFallbackLangs(lang: AXTranslateLang): AXTranslateLang[] {\n return this.config.fallbacks?.langs?.[lang] ?? [];\n }\n\n public getFallbackScopes(scope: AXTranslateScope): AXTranslateScope[] {\n return this.config.fallbacks?.scopes?.[scope] ?? [];\n }\n}\n","import { AXParsedToken } from \"./translation.types\";\n\nexport class TranslationParserService {\n private readonly legacyRegex = /t\\([\"']([^\"']+)[\"']\\s*(?:,\\s*(\\{.*?\\}))?\\)/g;\n private readonly inlineRegex = /@([a-zA-Z\\-]+:)?([a-zA-Z0-9_-]+):([a-zA-Z0-9_.:-]+)(?=[\\\\s.,;!?)]|$)/g;\n\n public isExpression(value: string): boolean {\n return typeof value === 'string' && (value.includes('t(') || value.includes('@'));\n }\n\n public parse(expression: string, currentLang: string, currentScope: string): AXParsedToken[] {\n const tokens: AXParsedToken[] = [];\n\n // Extract inline references like @lang:scope:key or @scope:key\n let inlineMatch;\n while ((inlineMatch = this.inlineRegex.exec(expression)) !== null) {\n const langPart = inlineMatch[1]?.replace(':', '') ?? null;\n const scope = inlineMatch[2] ?? currentScope;\n const key = inlineMatch[3];\n const fullMatch = inlineMatch[0];\n\n tokens.push({ lang: langPart || currentLang, scope, key, fullMatch });\n }\n\n // Extract legacy expressions\n let legacyMatch;\n while ((legacyMatch = this.legacyRegex.exec(expression)) !== null) {\n const key = legacyMatch[1];\n const rawOptions = legacyMatch[2];\n let scope = currentScope;\n let lang = currentLang;\n\n if (rawOptions) {\n try {\n const jsonString = rawOptions\n .replace(/(['\"])?([a-zA-Z0-9_]+)(['\"])?\\s*:/g, '\"$2\":')\n .replace(/'/g, '\"');\n const options = JSON.parse(jsonString);\n scope = options.scope || scope;\n lang = options.lang || lang;\n } catch (err) {\n console.error('Invalid translation expression options:', err);\n }\n }\n\n tokens.push({ key, scope, lang, fullMatch: legacyMatch[0] });\n }\n\n return tokens;\n }\n\n}","import { inject } from '@angular/core';\nimport { AXTranslateLang, AXTranslateScope, AXTranslateParams, AXTranslation } from './translation.types';\nimport { get as lodashGet } from 'lodash-es';\nimport { TranslationParserService } from './translation.parser';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { firstValueFrom } from 'rxjs';\n\nexport class TranslationResolverService {\n private loaderService = inject(AXTranslationLoaderService);\n private cache = new Map<string, AXTranslation>();\n private inflight = new Map<string, Promise<AXTranslation>>();\n private parser = new TranslationParserService();\n\n async resolve(lang: AXTranslateLang, scope: AXTranslateScope, key: string, params?: AXTranslateParams): Promise<string> {\n const cacheKey = `${lang}:${scope}`;\n\n // Load and cache if not present\n if (!this.cache.has(cacheKey)) {\n if (!this.inflight.has(cacheKey)) {\n const fetchPromise = firstValueFrom(this.loaderService.load(lang, scope));\n this.inflight.set(cacheKey, fetchPromise);\n\n const data = await fetchPromise;\n this.cache.set(cacheKey, data);\n this.inflight.delete(cacheKey);\n } else {\n await this.inflight.get(cacheKey); // wait for the inflight fetch\n }\n }\n\n const translations = this.cache.get(cacheKey);\n let result = lodashGet(translations, key, key);\n\n // Recursively resolve references\n if (typeof result === 'string' && this.parser.isExpression(result)) {\n const tokens = this.parser.parse(result, lang, scope);\n if (tokens.length > 0) {\n const first = tokens[0];\n result = await this.resolve(first.lang || lang, first.scope || scope, first.key, params);\n }\n }\n\n return this.format(result, params);\n }\n\n public format(text: string, params?: AXTranslateParams): string {\n if (!params || typeof text !== 'string') return text;\n\n return Object.keys(params).reduce((out, key) => {\n const re = new RegExp(`{{\\s*${key}\\s*}}`, 'g');\n return out.replace(re, params[key] as string);\n }, text);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { TranslationParserService } from './translation.parser';\nimport { TranslationResolverService } from './translation.resolver';\nimport { AXTranslateLang, AXTranslateOptions } from './translation.types';\nimport { BehaviorSubject, from, Observable, of, shareReplay, switchMap } from 'rxjs';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { waitFor } from '@acorex/core/utils';\n\nlet singletonInstance: AXTranslationService;\n\nexport function translateSync(key: string, options?: AXTranslateOptions): string {\n return singletonInstance.translateSync(key, options);\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AXTranslationService {\n private localeService = inject(AXLocaleService);\n private config = inject(AX_TRANSLATION_CONFIG);\n private loader = inject(AXTranslationLoaderService);\n private parser = new TranslationParserService();\n private resolver = new TranslationResolverService();\n private activeLang = new BehaviorSubject<AXTranslateLang>(this.config.defaults.lang);\n public readonly langChanges$ = this.activeLang.asObservable();\n\n constructor() {\n singletonInstance = this;\n this.localeService.profileChanged$.subscribe((locale) => {\n if (locale?.localeInfo?.code) {\n this.setActiveLang(locale.localeInfo.code);\n }\n });\n }\n\n public setActiveLang(lang: AXTranslateLang): void {\n if (lang && lang !== this.activeLang.getValue()) {\n this.activeLang.next(lang);\n }\n }\n\n public getActiveLang(): AXTranslateLang {\n return this.activeLang.getValue();\n }\n\n public getDefaultLang(): AXTranslateLang {\n return this.config.defaults.lang;\n }\n\n\n public translate$(text: string, options?: AXTranslateOptions): Observable<string> {\n if (!text) {\n return of('');\n }\n\n const staticOptions = { ...options };\n const staticScope = staticOptions.scope ?? this.config.defaults.scope;\n\n return this.langChanges$.pipe(\n switchMap(lang => {\n return from(\n this.translateAsync(text, {\n ...staticOptions,\n lang: staticOptions.lang ?? lang,\n scope: staticScope\n })\n );\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n\n async translateAsync(text: string, options?: AXTranslateOptions): Promise<string> {\n const lang = options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang;\n const scope = options?.scope ?? this.config.defaults.scope;\n const params = options?.params;\n\n if (!this.parser.isExpression(text)) {\n const resolved = await this.resolver.resolve(lang, scope, text, params);\n return this.resolver.format(resolved, params);\n }\n\n const tokens = this.parser.parse(text, lang, scope);\n\n const results = await Promise.all(\n tokens.map(token =>\n this.resolver.resolve(token.lang ?? lang, token.scope ?? scope, token.key, params)\n .then(translated => [token.fullMatch, this.resolver.format(translated, params)])\n )\n );\n\n return results.reduce((output, [match, translated]) => output.replace(match, translated), text);\n }\n\n public translateSync(\n text: string,\n options?: AXTranslateOptions & { waitForLoad?: boolean; timeoutMs?: number }\n ): string {\n const lang = options?.lang ?? this.getActiveLang() ?? this.config.defaults.lang;\n const scope = options?.scope ?? this.config.defaults.scope;\n const params = options?.params;\n const waitForLoad = options?.waitForLoad ?? false;\n const timeoutMs = options?.timeoutMs ?? 100;\n\n if (!this.parser.isExpression(text)) {\n let translated = this.loader.peek(lang, scope, text);\n\n if (!translated && waitForLoad) {\n translated = waitFor(\n () => this.loader.peek(lang, scope, text),\n () => this.loader.load(lang, scope).subscribe(),\n timeoutMs\n );\n }\n\n return this.resolver.format(translated ?? text, params);\n }\n\n const tokens = this.parser.parse(text, lang, scope);\n let result = text;\n\n for (const token of tokens) {\n const targetLang = token.lang ?? lang;\n const targetScope = token.scope ?? scope;\n const key = token.key;\n\n let translation = this.loader.peek(targetLang, targetScope, key);\n\n if (!translation) {\n translation = waitFor(\n () => this.loader.peek(targetLang, targetScope, key),\n () => this.loader.load(targetLang, targetScope).subscribe(),\n waitForLoad ? timeoutMs : 0\n ) ?? key;\n }\n\n result = result.replace(token.fullMatch, this.resolver.format(translation, params));\n }\n\n return result;\n }\n}\n","import { inject } from '@angular/core';\nimport { ResolveFn } from '@angular/router';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AXTranslationService } from './translation.service';\n\nexport const loadTranslationScope: ResolveFn<unknown> = (route, state) => {\n const translationLoaderService = inject(AXTranslationLoaderService);\n const translationService = inject(AXTranslationService);\n const config = inject(AX_TRANSLATION_CONFIG);\n const scopeValue = route.data[config.resolver?.scopeKey];\n const scopes = Array.isArray(scopeValue) ? scopeValue : [scopeValue];\n return translationLoaderService.preload({ langs: [translationService.getActiveLang()], scopes });\n};\n","import { Directive, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AXTranslationService } from './translation.service';\nimport { AXTranslateOptions } from './translation.types';\nimport { Observable, shareReplay } from 'rxjs';\n@Directive({ selector: '[translate]' })\nexport class AXTranslatorDirective implements OnInit {\n\n\n constructor(\n private templateRef: TemplateRef<any>,\n private vc: ViewContainerRef,\n private translationService: AXTranslationService,\n ) { }\n\n\n\n ngOnInit() {\n const cache = new Map<string, Observable<string>>();\n\n const t = (key: string, opts?: AXTranslateOptions) => {\n const id = `${key}|${opts?.lang ?? this.translationService.getActiveLang()}|${opts?.scope ?? 'common'}`;\n if (!cache.has(id)) {\n cache.set(\n id,\n this.translationService.translate$(key, opts)\n .pipe(shareReplay({ bufferSize: 1, refCount: true }))\n );\n }\n return cache.get(id)!;\n };\n\n\n\n this.vc.clear();\n this.vc.createEmbeddedView(this.templateRef, { $implicit: t });\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslateOptions } from './translation.types';\nimport { AXTranslationService } from './translation.service';\n\n@Pipe({\n name: 'translate',\n pure: true,\n}) // The pipe can now be pure\nexport class AXTranslatorPipe implements PipeTransform {\n private service = inject(AXTranslationService);\n\n transform(key: string, options?: AXTranslateOptions): Observable<string> {\n if (!key) {\n return of(''); // Return an empty observable if the key is not provided\n }\n return this.service.translate$(key, options);\n }\n}\n","import { NgModule, inject, provideAppInitializer } from '@angular/core';\nimport { AXTranslationLoaderService } from './translation-loader.service';\nimport { AXTranslatorDirective } from './translator.directive';\nimport { AXTranslatorPipe } from './translator.pipe';\n\nfunction initializeApp(translatorService: AXTranslationLoaderService) {\n return (): Promise<void> => {\n return translatorService.preload();\n };\n}\n\n@NgModule({\n imports: [AXTranslatorPipe, AXTranslatorDirective],\n exports: [AXTranslatorPipe, AXTranslatorDirective],\n providers: [\n provideAppInitializer(() => {\n const initializerFn = initializeApp(inject(AXTranslationLoaderService));\n return initializerFn();\n }),\n ],\n})\nexport class AXTranslationModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["lodashGet","i1.AXTranslationService"],"mappings":"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"}
@@ -31,10 +31,10 @@ class AXUnsubscriber {
31
31
  ngOnDestroy() {
32
32
  this.unsubscribe();
33
33
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXUnsubscriber, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXUnsubscriber }); }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXUnsubscriber, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXUnsubscriber }); }
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXUnsubscriber, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXUnsubscriber, decorators: [{
38
38
  type: Injectable
39
39
  }] });
40
40
 
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-utils.mjs","sources":["../../../../libs/core/utils/src/lib/lifecycle-helpers.utils.ts","../../../../libs/core/utils/src/lib/color.utils.ts","../../../../libs/core/utils/src/lib/drawing.utils.ts","../../../../libs/core/utils/src/lib/html-utils.ts","../../../../libs/core/utils/src/lib/string.utils.ts","../../../../libs/core/utils/src/lib/execution.utils.ts","../../../../libs/core/utils/src/acorex-core-utils.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nexport function AXAutoUnsubscriber() {\n return function (constructor) {\n const orig = constructor.prototype.ngOnDestroy;\n constructor.prototype.ngOnDestroy = function () {\n for (const prop in this) {\n const property = this[prop];\n if (typeof property.subscribe === 'function') {\n property.unsubscribe();\n }\n }\n orig.apply();\n };\n };\n}\n\n@Injectable()\nexport class AXUnsubscriber implements OnDestroy {\n private readonly _destroy$ = new Subject<void>();\n\n public readonly takeUntilDestroy = <T>(origin: Observable<T> | Subject<T>): Observable<T> | Subject<T> =>\n origin.pipe(takeUntil(this._destroy$));\n\n public unsubscribe(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public ngOnDestroy(): void {\n this.unsubscribe();\n }\n}\n","export type AXColorMode = 'rgba' | 'hex' | 'hsla' | 'hsva' | null;\n\nimport tinycolor, { ColorInput } from 'tinycolor2';\nimport tinygradient, { Instance } from 'tinygradient-es';\n\nexport type AXColorFormat = ColorInput;\n\nexport class AXColorUtil {\n static to(color: AXColorFormat, mode: AXColorMode): AXColorFormat {\n const _color = tinycolor(color);\n switch (mode) {\n case 'rgba':\n return _color.toRgb();\n case 'hsla':\n return _color.toHsl();\n case 'hsva':\n return _color.toHsv();\n default:\n return _color.toHex();\n }\n }\n\n static toString(color: AXColorFormat, mode: AXColorMode = null): string {\n const _color = tinycolor(color);\n switch (mode) {\n case 'rgba':\n return _color.toRgbString();\n case 'hsla':\n return _color.toHslString();\n case 'hsva':\n return _color.toHsvString();\n\n case 'hex': {\n const rgba = _color.toRgb();\n return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();\n }\n default: {\n if (typeof color == 'string') {\n if (color.toLowerCase().startsWith('#')) return this.toString(color, 'hex');\n else return this.toString(color, 'rgba');\n } else {\n return this.toString(color, 'rgba');\n }\n }\n }\n }\n\n static isValid(color: AXColorFormat): boolean {\n const _color = tinycolor(color);\n return _color.isValid();\n }\n\n static mix(baseColor: AXColorFormat, hex: AXColorFormat, percentage: number): string {\n return tinycolor.mix(baseColor, hex, percentage).toString('rgb');\n }\n\n static multiply(color1: AXColorFormat, color2: AXColorFormat): string {\n const rgb1 = tinycolor(color1).toRgb();\n const rgb2 = tinycolor(color2).toRgb();\n rgb1.b = Math.floor((rgb1.b * rgb2.b) / 255);\n rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);\n rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);\n return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');\n }\n\n static contrastToWhite(color: AXColorFormat): number {\n return tinycolor.readability('#fff', color);\n }\n\n static lighten(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).lighten(percentage);\n }\n\n static darken(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).darken(percentage);\n }\n\n static brighten(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).brighten(percentage);\n }\n\n static saturate(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).saturate(percentage);\n }\n\n static desaturate(hex: AXColorFormat) {\n return tinycolor(hex).getLuminance();\n }\n\n static equal(color1: AXColorFormat, color2: AXColorFormat): boolean {\n return tinycolor.equals(color1, color2);\n }\n\n static gradient(values: unknown[] | { color: unknown; pos: number }[]): Instance {\n return tinygradient([...values]);\n }\n\n static getLuminance(hex: AXColorFormat) {\n return tinycolor(hex).getLuminance();\n }\n\n static xyToRgb(vX, vY): string {\n vY = vY || 0.00000000001;\n const Y = 1;\n const X = (Y / vY) * vX;\n const Z = (Y / vY) * (1 - vX - vY);\n\n // Convert to RGB using Wide RGB D65 conversion.\n let rgb = [X * 1.656492 - Y * 0.354851 - Z * 0.255038, -X * 0.707196 + Y * 1.655397 + Z * 0.036152, X * 0.051713 - Y * 0.121364 + Z * 1.01153];\n\n // Apply reverse gamma correction.\n rgb = rgb.map((x) => (x <= 0.0031308 ? 12.92 * x : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055));\n\n // Bring all negative components to zero.\n rgb = rgb.map((x) => Math.max(0, x));\n\n // If one component is greater than 1, weight components by that value.\n const max = Math.max(...rgb);\n if (max > 1) {\n rgb = rgb.map((x) => x / max);\n }\n\n rgb = rgb.map((x) => Math.round(x * 255));\n\n return 'rgb(' + rgb.join(',') + ')';\n }\n\n static colorStringToHex(color) {\n // Check if the input is an RGBA color string\n const rgbaMatch = color.match(/^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+))?\\s*\\)$/i);\n if (rgbaMatch) {\n let [_, r, g, b, a] = rgbaMatch;\n r = parseInt(r, 10);\n g = parseInt(g, 10);\n b = parseInt(b, 10);\n a = a ? parseFloat(a) : 1;\n\n // Convert RGB to hex\n let hexColor = `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;\n\n // Include alpha if present\n if (a < 1) {\n const alphaHex = Math.round(a * 255)\n .toString(16)\n .padStart(2, '0');\n hexColor += alphaHex;\n }\n\n return hexColor;\n }\n\n // Check if the input is a hex color string\n const hexMatch = color.match(/^#([0-9a-fA-F]{3}){1,2}$/);\n if (hexMatch) {\n return color;\n }\n\n throw new Error('Invalid color format');\n }\n\n static getRandomColor(): string {\n // Generate a random hex color\n return `#${Math.floor(Math.random() * 16777215).toString(16)}`;\n }\n}\n","export interface AXPoint {\n x: number;\n y: number;\n}\n\nexport interface AXBoundingClientRect {\n left?: number;\n top?: number;\n width?: number;\n height?: number;\n bottom?: number;\n right?: number;\n}\n// @dynamic\nexport class AXDrawingUtil {\n static collision(a: HTMLElement, b: HTMLElement): boolean {\n const ac = a.getBoundingClientRect();\n const bc = b.getBoundingClientRect();\n\n if (\n ac.left < bc.left + bc.width &&\n ac.left + ac.width > bc.left &&\n ac.top < bc.top + bc.height &&\n ac.top + ac.height > bc.top\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n static isInElementBound(pos: AXPoint, element: HTMLElement): boolean {\n const elBound = element.getBoundingClientRect();\n return AXDrawingUtil.isInRecPoint(pos, {\n left: elBound.x,\n width: elBound.width,\n top: elBound.y,\n height: elBound.height,\n });\n }\n\n static isInRecPoint(pos: AXPoint, rec: AXBoundingClientRect | any): boolean {\n return (\n pos.x >= rec.left && pos.x <= rec.left + rec.width && pos.y >= rec.top && pos.y <= rec.top + rec.height\n );\n }\n\n static convertRemToPixels(rem: number): number {\n return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);\n }\n}\n","import { isBrowser } from '@acorex/core/platform';\n\n// @dynamic\nexport class AXHtmlUtil {\n static focusElement(element: HTMLElement): HTMLElement {\n const list = ['button', 'input', '[href]', 'select', 'textarea', '[tabindex]'].map((c) => c + ':not([tabindex=\"-1\"])');\n const focusable = element.querySelector<HTMLElement>(list.join(', '));\n if (focusable) {\n focusable.focus();\n return focusable;\n }\n return null;\n }\n\n static blurElement(element: HTMLElement): HTMLElement {\n const list = ['button', 'input', '[href]', 'select', 'textarea', '[tabindex]'].map((c) => c + ':not([tabindex=\"-1\"])');\n const focusable = element.querySelector<HTMLElement>(list.join(', '));\n if (focusable) {\n focusable.blur();\n return focusable;\n }\n return null;\n }\n\n static hasFocus(element: HTMLElement) {\n return element.matches(':focus-within') || element.matches(':focus');\n }\n\n static isRtl(element?: HTMLElement) {\n if (isBrowser() && element) {\n const rtl = element.classList.contains('ax-rtl') || window.getComputedStyle(element, null).getPropertyValue('direction') === 'rtl';\n return rtl;\n }\n\n return document.documentElement.dir === 'rtl';\n }\n\n static hasDark(element: HTMLElement): boolean {\n if (isBrowser()) {\n return element.closest('.ax-dark') ? true : false;\n }\n return false;\n }\n /**\n * Helper function to check if an element is scrollable\n */\n static isScrollable(element: HTMLElement): boolean {\n const overflowY = window.getComputedStyle(element).overflowY;\n return (overflowY === 'auto' || overflowY === 'scroll') && element.scrollHeight > element.clientHeight;\n }\n\n /**\n * Utility function to find scrollable parent elements\n */\n static getScrollableParents(element: HTMLElement): HTMLElement[] {\n const parents: HTMLElement[] = [];\n let currentElement: HTMLElement | null = element;\n\n while (currentElement) {\n if (AXHtmlUtil.isScrollable(currentElement)) {\n parents.push(currentElement);\n }\n currentElement = currentElement.parentElement;\n }\n\n return parents;\n }\n}\n","export function getWordBoundsAtPosition(str: string, position: number): { start: number; end: number } {\n const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);\n let start = position - 1;\n\n while (start >= 0 && !isSpace(str[start])) {\n start -= 1;\n }\n start = Math.max(0, start + 1);\n const leftSideString: any = str.slice(start).match(/[a-zA-Z0-9]+/i);\n start += leftSideString.index;\n let end = start + leftSideString[0].length;\n return {\n start,\n end,\n };\n}","/**\n * Blocks until a condition returns a value or the timeout is reached.\n * Useful for simulating sync behavior with cached async results.\n */\nexport function waitFor<T>(\n peekFn: () => T | null | undefined,\n loadFn: () => void,\n timeoutMs = 100\n): T | null {\n const end = Date.now() + timeoutMs;\n let result = peekFn();\n\n if (!result) {\n loadFn();\n while (!result && Date.now() < end) {\n result = peekFn();\n }\n }\n\n return result ?? null;\n}\n\n/**\n * Delays for a specific amount of time.\n */\nexport function delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n/**\n * Retries an async function until it succeeds or a max attempt count is reached.\n */\nexport async function retryUntil<T>(\n fn: () => Promise<T>,\n attempts = 3,\n delayMs = 100\n): Promise<T> {\n let lastError: any;\n for (let i = 0; i < attempts; i++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error;\n if (i < attempts - 1) await delay(delayMs);\n }\n }\n throw lastError;\n}\n\n/**\n * Continuously polls a condition until it returns true or a timeout is reached.\n */\nexport async function pollUntil(\n condition: () => boolean,\n intervalMs = 100,\n timeoutMs = 2000\n): Promise<boolean> {\n const start = Date.now();\n return new Promise((resolve, reject) => {\n const check = () => {\n if (condition()) {\n resolve(true);\n } else if (Date.now() - start >= timeoutMs) {\n reject(new Error('pollUntil timeout'));\n } else {\n setTimeout(check, intervalMs);\n }\n };\n check();\n });\n}\n\n/**\n * Throttles an async function to ensure only one instance runs at a time.\n */\nexport function throttleAsync<T extends (...args: any[]) => Promise<any>>(fn: T): T {\n let pending: Promise<any> | null = null;\n return ((...args: any[]) => {\n if (!pending) {\n pending = fn(...args).finally(() => {\n pending = null;\n });\n }\n return pending;\n }) as T;\n}\n\n/**\n * Polls a condition with cancel support via AbortSignal.\n */\nexport async function pollUntilAbortable(\n condition: () => boolean,\n intervalMs = 100,\n timeoutMs = 2000,\n signal?: AbortSignal\n): Promise<boolean> {\n const start = Date.now();\n return new Promise((resolve, reject) => {\n const check = () => {\n if (signal?.aborted) {\n return reject(new Error('pollUntil aborted'));\n }\n if (condition()) {\n resolve(true);\n } else if (Date.now() - start >= timeoutMs) {\n reject(new Error('pollUntil timeout'));\n } else {\n setTimeout(check, intervalMs);\n }\n };\n check();\n });\n}\n\n/**\n * Debounces an async function to run only after no calls are made within the wait window.\n */\nexport function debounceAsync<T extends (...args: any[]) => Promise<any>>(fn: T, waitMs: number): T {\n let timeout: ReturnType<typeof setTimeout>;\n let promise: Promise<any> | null = null;\n\n return ((...args: any[]) => {\n if (timeout) clearTimeout(timeout);\n\n promise = new Promise(resolve => {\n timeout = setTimeout(() => {\n resolve(fn(...args));\n }, waitMs);\n });\n\n return promise;\n }) as T;\n}\n\n/**\n * Runs a list of fallback functions until one resolves without throwing.\n */\nexport async function fallbackChain<T>(\n tasks: Array<() => Promise<T>>\n): Promise<T> {\n let lastError;\n for (const task of tasks) {\n try {\n return await task();\n } catch (err) {\n lastError = err;\n }\n }\n throw lastError ?? new Error('All fallback tasks failed');\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-core-utils.mjs","sources":["../../../../libs/core/utils/src/lib/lifecycle-helpers.utils.ts","../../../../libs/core/utils/src/lib/color.utils.ts","../../../../libs/core/utils/src/lib/drawing.utils.ts","../../../../libs/core/utils/src/lib/html-utils.ts","../../../../libs/core/utils/src/lib/string.utils.ts","../../../../libs/core/utils/src/lib/execution.utils.ts","../../../../libs/core/utils/src/acorex-core-utils.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nexport function AXAutoUnsubscriber() {\n return function (constructor) {\n const orig = constructor.prototype.ngOnDestroy;\n constructor.prototype.ngOnDestroy = function () {\n for (const prop in this) {\n const property = this[prop];\n if (typeof property.subscribe === 'function') {\n property.unsubscribe();\n }\n }\n orig.apply();\n };\n };\n}\n\n@Injectable()\nexport class AXUnsubscriber implements OnDestroy {\n private readonly _destroy$ = new Subject<void>();\n\n public readonly takeUntilDestroy = <T>(origin: Observable<T> | Subject<T>): Observable<T> | Subject<T> =>\n origin.pipe(takeUntil(this._destroy$));\n\n public unsubscribe(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public ngOnDestroy(): void {\n this.unsubscribe();\n }\n}\n","export type AXColorMode = 'rgba' | 'hex' | 'hsla' | 'hsva' | null;\n\nimport tinycolor, { ColorInput } from 'tinycolor2';\nimport tinygradient, { Instance } from 'tinygradient-es';\n\nexport type AXColorFormat = ColorInput;\n\nexport class AXColorUtil {\n static to(color: AXColorFormat, mode: AXColorMode): AXColorFormat {\n const _color = tinycolor(color);\n switch (mode) {\n case 'rgba':\n return _color.toRgb();\n case 'hsla':\n return _color.toHsl();\n case 'hsva':\n return _color.toHsv();\n default:\n return _color.toHex();\n }\n }\n\n static toString(color: AXColorFormat, mode: AXColorMode = null): string {\n const _color = tinycolor(color);\n switch (mode) {\n case 'rgba':\n return _color.toRgbString();\n case 'hsla':\n return _color.toHslString();\n case 'hsva':\n return _color.toHsvString();\n\n case 'hex': {\n const rgba = _color.toRgb();\n return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();\n }\n default: {\n if (typeof color == 'string') {\n if (color.toLowerCase().startsWith('#')) return this.toString(color, 'hex');\n else return this.toString(color, 'rgba');\n } else {\n return this.toString(color, 'rgba');\n }\n }\n }\n }\n\n static isValid(color: AXColorFormat): boolean {\n const _color = tinycolor(color);\n return _color.isValid();\n }\n\n static mix(baseColor: AXColorFormat, hex: AXColorFormat, percentage: number): string {\n return tinycolor.mix(baseColor, hex, percentage).toString('rgb');\n }\n\n static multiply(color1: AXColorFormat, color2: AXColorFormat): string {\n const rgb1 = tinycolor(color1).toRgb();\n const rgb2 = tinycolor(color2).toRgb();\n rgb1.b = Math.floor((rgb1.b * rgb2.b) / 255);\n rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);\n rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);\n return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');\n }\n\n static contrastToWhite(color: AXColorFormat): number {\n return tinycolor.readability('#fff', color);\n }\n\n static lighten(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).lighten(percentage);\n }\n\n static darken(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).darken(percentage);\n }\n\n static brighten(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).brighten(percentage);\n }\n\n static saturate(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).saturate(percentage);\n }\n\n static desaturate(hex: AXColorFormat) {\n return tinycolor(hex).getLuminance();\n }\n\n static equal(color1: AXColorFormat, color2: AXColorFormat): boolean {\n return tinycolor.equals(color1, color2);\n }\n\n static gradient(values: unknown[] | { color: unknown; pos: number }[]): Instance {\n return tinygradient([...values]);\n }\n\n static getLuminance(hex: AXColorFormat) {\n return tinycolor(hex).getLuminance();\n }\n\n static xyToRgb(vX, vY): string {\n vY = vY || 0.00000000001;\n const Y = 1;\n const X = (Y / vY) * vX;\n const Z = (Y / vY) * (1 - vX - vY);\n\n // Convert to RGB using Wide RGB D65 conversion.\n let rgb = [X * 1.656492 - Y * 0.354851 - Z * 0.255038, -X * 0.707196 + Y * 1.655397 + Z * 0.036152, X * 0.051713 - Y * 0.121364 + Z * 1.01153];\n\n // Apply reverse gamma correction.\n rgb = rgb.map((x) => (x <= 0.0031308 ? 12.92 * x : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055));\n\n // Bring all negative components to zero.\n rgb = rgb.map((x) => Math.max(0, x));\n\n // If one component is greater than 1, weight components by that value.\n const max = Math.max(...rgb);\n if (max > 1) {\n rgb = rgb.map((x) => x / max);\n }\n\n rgb = rgb.map((x) => Math.round(x * 255));\n\n return 'rgb(' + rgb.join(',') + ')';\n }\n\n static colorStringToHex(color) {\n // Check if the input is an RGBA color string\n const rgbaMatch = color.match(/^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+))?\\s*\\)$/i);\n if (rgbaMatch) {\n let [_, r, g, b, a] = rgbaMatch;\n r = parseInt(r, 10);\n g = parseInt(g, 10);\n b = parseInt(b, 10);\n a = a ? parseFloat(a) : 1;\n\n // Convert RGB to hex\n let hexColor = `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;\n\n // Include alpha if present\n if (a < 1) {\n const alphaHex = Math.round(a * 255)\n .toString(16)\n .padStart(2, '0');\n hexColor += alphaHex;\n }\n\n return hexColor;\n }\n\n // Check if the input is a hex color string\n const hexMatch = color.match(/^#([0-9a-fA-F]{3}){1,2}$/);\n if (hexMatch) {\n return color;\n }\n\n throw new Error('Invalid color format');\n }\n\n static getRandomColor(): string {\n // Generate a random hex color\n return `#${Math.floor(Math.random() * 16777215).toString(16)}`;\n }\n}\n","export interface AXPoint {\n x: number;\n y: number;\n}\n\nexport interface AXBoundingClientRect {\n left?: number;\n top?: number;\n width?: number;\n height?: number;\n bottom?: number;\n right?: number;\n}\n// @dynamic\nexport class AXDrawingUtil {\n static collision(a: HTMLElement, b: HTMLElement): boolean {\n const ac = a.getBoundingClientRect();\n const bc = b.getBoundingClientRect();\n\n if (\n ac.left < bc.left + bc.width &&\n ac.left + ac.width > bc.left &&\n ac.top < bc.top + bc.height &&\n ac.top + ac.height > bc.top\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n static isInElementBound(pos: AXPoint, element: HTMLElement): boolean {\n const elBound = element.getBoundingClientRect();\n return AXDrawingUtil.isInRecPoint(pos, {\n left: elBound.x,\n width: elBound.width,\n top: elBound.y,\n height: elBound.height,\n });\n }\n\n static isInRecPoint(pos: AXPoint, rec: AXBoundingClientRect | any): boolean {\n return (\n pos.x >= rec.left && pos.x <= rec.left + rec.width && pos.y >= rec.top && pos.y <= rec.top + rec.height\n );\n }\n\n static convertRemToPixels(rem: number): number {\n return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);\n }\n}\n","import { isBrowser } from '@acorex/core/platform';\n\n// @dynamic\nexport class AXHtmlUtil {\n static focusElement(element: HTMLElement): HTMLElement {\n const list = ['button', 'input', '[href]', 'select', 'textarea', '[tabindex]'].map((c) => c + ':not([tabindex=\"-1\"])');\n const focusable = element.querySelector<HTMLElement>(list.join(', '));\n if (focusable) {\n focusable.focus();\n return focusable;\n }\n return null;\n }\n\n static blurElement(element: HTMLElement): HTMLElement {\n const list = ['button', 'input', '[href]', 'select', 'textarea', '[tabindex]'].map((c) => c + ':not([tabindex=\"-1\"])');\n const focusable = element.querySelector<HTMLElement>(list.join(', '));\n if (focusable) {\n focusable.blur();\n return focusable;\n }\n return null;\n }\n\n static hasFocus(element: HTMLElement) {\n return element.matches(':focus-within') || element.matches(':focus');\n }\n\n static isRtl(element?: HTMLElement) {\n if (isBrowser() && element) {\n const rtl = element.classList.contains('ax-rtl') || window.getComputedStyle(element, null).getPropertyValue('direction') === 'rtl';\n return rtl;\n }\n\n return document.documentElement.dir === 'rtl';\n }\n\n static hasDark(element: HTMLElement): boolean {\n if (isBrowser()) {\n return element.closest('.ax-dark') ? true : false;\n }\n return false;\n }\n /**\n * Helper function to check if an element is scrollable\n */\n static isScrollable(element: HTMLElement): boolean {\n const overflowY = window.getComputedStyle(element).overflowY;\n return (overflowY === 'auto' || overflowY === 'scroll') && element.scrollHeight > element.clientHeight;\n }\n\n /**\n * Utility function to find scrollable parent elements\n */\n static getScrollableParents(element: HTMLElement): HTMLElement[] {\n const parents: HTMLElement[] = [];\n let currentElement: HTMLElement | null = element;\n\n while (currentElement) {\n if (AXHtmlUtil.isScrollable(currentElement)) {\n parents.push(currentElement);\n }\n currentElement = currentElement.parentElement;\n }\n\n return parents;\n }\n}\n","export function getWordBoundsAtPosition(str: string, position: number): { start: number; end: number } {\n const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);\n let start = position - 1;\n\n while (start >= 0 && !isSpace(str[start])) {\n start -= 1;\n }\n start = Math.max(0, start + 1);\n const leftSideString: any = str.slice(start).match(/[a-zA-Z0-9]+/i);\n start += leftSideString.index;\n let end = start + leftSideString[0].length;\n return {\n start,\n end,\n };\n}","/**\n * Blocks until a condition returns a value or the timeout is reached.\n * Useful for simulating sync behavior with cached async results.\n */\nexport function waitFor<T>(\n peekFn: () => T | null | undefined,\n loadFn: () => void,\n timeoutMs = 100\n): T | null {\n const end = Date.now() + timeoutMs;\n let result = peekFn();\n\n if (!result) {\n loadFn();\n while (!result && Date.now() < end) {\n result = peekFn();\n }\n }\n\n return result ?? null;\n}\n\n/**\n * Delays for a specific amount of time.\n */\nexport function delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n/**\n * Retries an async function until it succeeds or a max attempt count is reached.\n */\nexport async function retryUntil<T>(\n fn: () => Promise<T>,\n attempts = 3,\n delayMs = 100\n): Promise<T> {\n let lastError: any;\n for (let i = 0; i < attempts; i++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error;\n if (i < attempts - 1) await delay(delayMs);\n }\n }\n throw lastError;\n}\n\n/**\n * Continuously polls a condition until it returns true or a timeout is reached.\n */\nexport async function pollUntil(\n condition: () => boolean,\n intervalMs = 100,\n timeoutMs = 2000\n): Promise<boolean> {\n const start = Date.now();\n return new Promise((resolve, reject) => {\n const check = () => {\n if (condition()) {\n resolve(true);\n } else if (Date.now() - start >= timeoutMs) {\n reject(new Error('pollUntil timeout'));\n } else {\n setTimeout(check, intervalMs);\n }\n };\n check();\n });\n}\n\n/**\n * Throttles an async function to ensure only one instance runs at a time.\n */\nexport function throttleAsync<T extends (...args: any[]) => Promise<any>>(fn: T): T {\n let pending: Promise<any> | null = null;\n return ((...args: any[]) => {\n if (!pending) {\n pending = fn(...args).finally(() => {\n pending = null;\n });\n }\n return pending;\n }) as T;\n}\n\n/**\n * Polls a condition with cancel support via AbortSignal.\n */\nexport async function pollUntilAbortable(\n condition: () => boolean,\n intervalMs = 100,\n timeoutMs = 2000,\n signal?: AbortSignal\n): Promise<boolean> {\n const start = Date.now();\n return new Promise((resolve, reject) => {\n const check = () => {\n if (signal?.aborted) {\n return reject(new Error('pollUntil aborted'));\n }\n if (condition()) {\n resolve(true);\n } else if (Date.now() - start >= timeoutMs) {\n reject(new Error('pollUntil timeout'));\n } else {\n setTimeout(check, intervalMs);\n }\n };\n check();\n });\n}\n\n/**\n * Debounces an async function to run only after no calls are made within the wait window.\n */\nexport function debounceAsync<T extends (...args: any[]) => Promise<any>>(fn: T, waitMs: number): T {\n let timeout: ReturnType<typeof setTimeout>;\n let promise: Promise<any> | null = null;\n\n return ((...args: any[]) => {\n if (timeout) clearTimeout(timeout);\n\n promise = new Promise(resolve => {\n timeout = setTimeout(() => {\n resolve(fn(...args));\n }, waitMs);\n });\n\n return promise;\n }) as T;\n}\n\n/**\n * Runs a list of fallback functions until one resolves without throwing.\n */\nexport async function fallbackChain<T>(\n tasks: Array<() => Promise<T>>\n): Promise<T> {\n let lastError;\n for (const task of tasks) {\n try {\n return await task();\n } catch (err) {\n lastError = err;\n }\n }\n throw lastError ?? new Error('All fallback tasks failed');\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -31,10 +31,10 @@ class AXCallbackValidationRule {
31
31
  }
32
32
  return createResult(validationResult);
33
33
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXCallbackValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXCallbackValidationRule }); }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXCallbackValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXCallbackValidationRule }); }
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXCallbackValidationRule, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXCallbackValidationRule, decorators: [{
38
38
  type: Injectable
39
39
  }] });
40
40
 
@@ -73,10 +73,10 @@ class AXRegexValidationRule {
73
73
  value: value,
74
74
  };
75
75
  }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXRegexValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
77
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXRegexValidationRule }); }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXRegexValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
77
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXRegexValidationRule }); }
78
78
  }
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXRegexValidationRule, decorators: [{
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXRegexValidationRule, decorators: [{
80
80
  type: Injectable
81
81
  }] });
82
82
 
@@ -108,10 +108,10 @@ class AXRequiredValidationRule {
108
108
  value,
109
109
  };
110
110
  }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXRequiredValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
112
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXRequiredValidationRule }); }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXRequiredValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
112
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXRequiredValidationRule }); }
113
113
  }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXRequiredValidationRule, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXRequiredValidationRule, decorators: [{
115
115
  type: Injectable
116
116
  }] });
117
117
 
@@ -129,10 +129,10 @@ class AXLengthValidationRule {
129
129
  value: value,
130
130
  };
131
131
  }
132
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXLengthValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
133
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXLengthValidationRule }); }
132
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXLengthValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
133
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXLengthValidationRule }); }
134
134
  }
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXLengthValidationRule, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXLengthValidationRule, decorators: [{
136
136
  type: Injectable
137
137
  }] });
138
138
 
@@ -150,10 +150,10 @@ class AXMaxLengthValidationRule {
150
150
  value: value,
151
151
  };
152
152
  }
153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXMaxLengthValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
154
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXMaxLengthValidationRule }); }
153
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMaxLengthValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
154
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMaxLengthValidationRule }); }
155
155
  }
156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXMaxLengthValidationRule, decorators: [{
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMaxLengthValidationRule, decorators: [{
157
157
  type: Injectable
158
158
  }] });
159
159
 
@@ -170,10 +170,10 @@ class AXMinLengthValidationRule {
170
170
  value: value,
171
171
  };
172
172
  }
173
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXMinLengthValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
174
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXMinLengthValidationRule }); }
173
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMinLengthValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
174
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMinLengthValidationRule }); }
175
175
  }
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXMinLengthValidationRule, decorators: [{
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMinLengthValidationRule, decorators: [{
177
177
  type: Injectable
178
178
  }] });
179
179
 
@@ -198,10 +198,10 @@ class AXBetweenValidationRule {
198
198
  value: value,
199
199
  };
200
200
  }
201
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXBetweenValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
202
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXBetweenValidationRule }); }
201
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXBetweenValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
202
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXBetweenValidationRule }); }
203
203
  }
204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXBetweenValidationRule, decorators: [{
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXBetweenValidationRule, decorators: [{
205
205
  type: Injectable
206
206
  }] });
207
207
 
@@ -221,10 +221,10 @@ class AXEqualValidationRule {
221
221
  value: value,
222
222
  };
223
223
  }
224
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXEqualValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
225
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXEqualValidationRule }); }
224
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXEqualValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
225
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXEqualValidationRule }); }
226
226
  }
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXEqualValidationRule, decorators: [{
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXEqualValidationRule, decorators: [{
228
228
  type: Injectable
229
229
  }] });
230
230
 
@@ -243,10 +243,10 @@ class AXGreaterThanValidationRule {
243
243
  value: value,
244
244
  };
245
245
  }
246
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXGreaterThanValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
247
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXGreaterThanValidationRule }); }
246
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXGreaterThanValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
247
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXGreaterThanValidationRule }); }
248
248
  }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXGreaterThanValidationRule, decorators: [{
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXGreaterThanValidationRule, decorators: [{
250
250
  type: Injectable
251
251
  }] });
252
252
 
@@ -265,10 +265,10 @@ class AXLessThanValidationRule {
265
265
  value: value,
266
266
  };
267
267
  }
268
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXLessThanValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
269
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXLessThanValidationRule }); }
268
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXLessThanValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
269
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXLessThanValidationRule }); }
270
270
  }
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXLessThanValidationRule, decorators: [{
271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXLessThanValidationRule, decorators: [{
272
272
  type: Injectable
273
273
  }] });
274
274
 
@@ -328,10 +328,10 @@ class AXValidationRegistryService {
328
328
  get(ruleName) {
329
329
  return this.plugins.find((c) => c.name == ruleName);
330
330
  }
331
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXValidationRegistryService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
332
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXValidationRegistryService, providedIn: 'root' }); }
331
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXValidationRegistryService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
332
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXValidationRegistryService, providedIn: 'root' }); }
333
333
  }
334
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXValidationRegistryService, decorators: [{
334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXValidationRegistryService, decorators: [{
335
335
  type: Injectable,
336
336
  args: [{
337
337
  providedIn: 'root',
@@ -366,10 +366,10 @@ class AXValidationService {
366
366
  ruleFor(value) {
367
367
  return new AXValidationRuleChain(this, value);
368
368
  }
369
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXValidationService, deps: [{ token: AXValidationRegistryService }, { token: i1.AXTranslationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
370
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXValidationService, providedIn: 'root' }); }
369
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXValidationService, deps: [{ token: AXValidationRegistryService }, { token: i1.AXTranslationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
370
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXValidationService, providedIn: 'root' }); }
371
371
  }
372
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXValidationService, decorators: [{
372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXValidationService, decorators: [{
373
373
  type: Injectable,
374
374
  args: [{ providedIn: 'root' }]
375
375
  }], ctorParameters: () => [{ type: AXValidationRegistryService }, { type: i1.AXTranslationService }] });
@@ -452,11 +452,11 @@ class AXValidationModule {
452
452
  f();
453
453
  });
454
454
  }
455
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXValidationModule, deps: [{ token: 'AXValidationModuleFactory' }], target: i0.ɵɵFactoryTarget.NgModule }); }
456
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.9", ngImport: i0, type: AXValidationModule }); }
457
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXValidationModule, providers: [...BUILT_IN_RULES] }); }
455
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXValidationModule, deps: [{ token: 'AXValidationModuleFactory' }], target: i0.ɵɵFactoryTarget.NgModule }); }
456
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.10", ngImport: i0, type: AXValidationModule }); }
457
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXValidationModule, providers: [...BUILT_IN_RULES] }); }
458
458
  }
459
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: AXValidationModule, decorators: [{
459
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXValidationModule, decorators: [{
460
460
  type: NgModule,
461
461
  args: [{
462
462
  imports: [],