@acorex/core 16.0.2 → 17.0.1
Sign up to get free protection for your applications and to get access to all the features.
- package/common/README.md +3 -0
- package/common/countries/countries.data.d.ts +2 -0
- package/common/countries/country.d.ts +13 -0
- package/common/index.d.ts +2 -0
- package/config/README.md +3 -0
- package/config/index.d.ts +2 -0
- package/config/lib/configs.d.ts +6 -0
- package/config/lib/configs.service.d.ts +12 -0
- package/date-time/README.md +3 -0
- package/date-time/index.d.ts +10 -0
- package/date-time/lib/calendar.service.d.ts +27 -0
- package/date-time/lib/dateTime.config.d.ts +12 -0
- package/date-time/lib/datetime.class.d.ts +138 -0
- package/date-time/lib/datetime.module.d.ts +8 -0
- package/date-time/lib/datetime.pipe.d.ts +12 -0
- package/date-time/lib/formatters/datetime-formatter.d.ts +19 -0
- package/date-time/lib/formatters/timeleft-formatter.d.ts +16 -0
- package/date-time/lib/georgian.calendar.d.ts +21 -0
- package/date-time/lib/holidays.loader.d.ts +21 -0
- package/date-time/lib/jalali.calendar.d.ts +40 -0
- package/esm2022/common/acorex-core-common.mjs +5 -0
- package/esm2022/common/countries/countries.data.mjs +2625 -0
- package/esm2022/common/countries/country.mjs +2 -0
- package/esm2022/common/index.mjs +3 -0
- package/esm2022/config/acorex-core-config.mjs +5 -0
- package/esm2022/config/index.mjs +3 -0
- package/esm2022/config/lib/configs.mjs +7 -0
- package/esm2022/config/lib/configs.service.mjs +27 -0
- package/esm2022/date-time/acorex-core-date-time.mjs +5 -0
- package/esm2022/date-time/index.mjs +11 -0
- package/esm2022/date-time/lib/calendar.service.mjs +100 -0
- package/esm2022/date-time/lib/dateTime.config.mjs +50 -0
- package/esm2022/date-time/lib/datetime.class.mjs +337 -0
- package/esm2022/date-time/lib/datetime.module.mjs +27 -0
- package/esm2022/date-time/lib/datetime.pipe.mjs +29 -0
- package/esm2022/date-time/lib/formatters/datetime-formatter.mjs +32 -0
- package/esm2022/date-time/lib/formatters/timeleft-formatter.mjs +91 -0
- package/esm2022/date-time/lib/georgian.calendar.mjs +203 -0
- package/esm2022/date-time/lib/holidays.loader.mjs +13 -0
- package/esm2022/date-time/lib/jalali.calendar.mjs +440 -0
- package/esm2022/events/acorex-core-events.mjs +5 -0
- package/esm2022/events/index.mjs +3 -0
- package/esm2022/events/lib/event.service.mjs +43 -0
- package/esm2022/events/lib/event.type.mjs +6 -0
- package/esm2022/file/acorex-core-file.mjs +5 -0
- package/esm2022/file/index.mjs +7 -0
- package/esm2022/file/lib/file-download-ref.class.mjs +12 -0
- package/esm2022/file/lib/file-download-result.class.mjs +45 -0
- package/esm2022/file/lib/file-size-formatter.mjs +24 -0
- package/esm2022/file/lib/file-upload-ref.class.mjs +12 -0
- package/esm2022/file/lib/file.module.mjs +20 -0
- package/esm2022/file/lib/file.service.mjs +103 -0
- package/esm2022/format/acorex-core-format.mjs +5 -0
- package/esm2022/format/index.mjs +8 -0
- package/esm2022/format/lib/format.config.mjs +3 -0
- package/esm2022/format/lib/format.module.mjs +64 -0
- package/esm2022/format/lib/format.pipe.mjs +37 -0
- package/esm2022/format/lib/format.service.mjs +95 -0
- package/esm2022/format/lib/format.types.mjs +2 -0
- package/esm2022/format/lib/formatters/number-formatter.mjs +74 -0
- package/esm2022/format/lib/formatters/string-formatter.mjs +15 -0
- package/esm2022/image/acorex-core-image.mjs +5 -0
- package/esm2022/image/index.mjs +2 -0
- package/esm2022/image/lib/image.service.mjs +43 -0
- package/esm2022/index.mjs +2 -44
- package/esm2022/memorize/acorex-core-memorize.mjs +5 -0
- package/esm2022/memorize/index.mjs +2 -0
- package/esm2022/memorize/lib/memorize.decorator.mjs +19 -0
- package/esm2022/pipes/acorex-core-pipes.mjs +5 -0
- package/esm2022/pipes/index.mjs +2 -0
- package/esm2022/pipes/lib/safe/safe.pipe.mjs +38 -0
- package/esm2022/platform/acorex-core-platform.mjs +5 -0
- package/esm2022/platform/index.mjs +2 -0
- package/esm2022/platform/lib/platform.service.mjs +225 -0
- package/esm2022/storage/acorex-core-storage.mjs +5 -0
- package/esm2022/storage/cookie-storage.service.mjs +202 -0
- package/esm2022/storage/index.mjs +5 -0
- package/esm2022/storage/local-storage.service.mjs +58 -0
- package/esm2022/storage/session-storage.service.mjs +22 -0
- package/esm2022/storage/storage.interface.mjs +2 -0
- package/esm2022/translation/acorex-core-translation.mjs +5 -0
- package/esm2022/translation/index.mjs +9 -0
- package/esm2022/translation/lib/translation-scope.resolver.mjs +11 -0
- package/esm2022/translation/lib/translation.config.mjs +20 -0
- package/esm2022/translation/lib/translation.loader.mjs +14 -0
- package/esm2022/translation/lib/translation.module.mjs +40 -0
- package/esm2022/translation/lib/translation.service.mjs +173 -0
- package/esm2022/translation/lib/translation.types.mjs +2 -0
- package/esm2022/translation/lib/translator.directive.mjs +28 -0
- package/esm2022/translation/lib/translator.pipe.mjs +23 -0
- package/esm2022/types/acorex-core-types.mjs +5 -0
- package/esm2022/types/index.mjs +2 -0
- package/esm2022/utils/acorex-core-utils.mjs +5 -0
- package/esm2022/utils/index.mjs +6 -0
- package/esm2022/utils/lib/auto-unsubscribe.mjs +36 -0
- package/esm2022/utils/lib/color-util.mjs +111 -0
- package/esm2022/utils/lib/drawing-util.mjs +35 -0
- package/esm2022/utils/lib/html-util.mjs +39 -0
- package/esm2022/utils/lib/string-util.mjs +19 -0
- package/esm2022/validation/acorex-core-validation.mjs +5 -0
- package/esm2022/validation/index.mjs +18 -0
- package/esm2022/validation/lib/rules/between-rule.mjs +31 -0
- package/esm2022/validation/lib/rules/callback-rule.mjs +29 -0
- package/esm2022/validation/lib/rules/equal-rule.mjs +26 -0
- package/esm2022/validation/lib/rules/greater-than.mjs +29 -0
- package/esm2022/validation/lib/rules/length-rule.mjs +26 -0
- package/esm2022/validation/lib/rules/less-than-rule.mjs +29 -0
- package/esm2022/validation/lib/rules/maxlength-rule.mjs +27 -0
- package/esm2022/validation/lib/rules/minlength-rule.mjs +26 -0
- package/esm2022/validation/lib/rules/regex-rule.mjs +49 -0
- package/esm2022/validation/lib/rules/required-rule.mjs +36 -0
- package/esm2022/validation/lib/validation.config.mjs +33 -0
- package/esm2022/validation/lib/validation.module.mjs +84 -0
- package/esm2022/validation/lib/validation.service.mjs +98 -0
- package/esm2022/validation/lib/validation.types.mjs +3 -0
- package/events/README.md +3 -0
- package/events/index.d.ts +2 -0
- package/{lib/services → events/lib}/event.service.d.ts +8 -0
- package/events/lib/event.type.d.ts +5 -0
- package/fesm2022/acorex-core-common.mjs +2631 -0
- package/fesm2022/acorex-core-common.mjs.map +1 -0
- package/fesm2022/acorex-core-config.mjs +39 -0
- package/fesm2022/acorex-core-config.mjs.map +1 -0
- package/fesm2022/acorex-core-date-time.mjs +1305 -0
- package/fesm2022/acorex-core-date-time.mjs.map +1 -0
- package/fesm2022/acorex-core-events.mjs +56 -0
- package/fesm2022/acorex-core-events.mjs.map +1 -0
- package/fesm2022/acorex-core-file.mjs +214 -0
- package/fesm2022/acorex-core-file.mjs.map +1 -0
- package/fesm2022/acorex-core-format.mjs +282 -0
- package/fesm2022/acorex-core-format.mjs.map +1 -0
- package/fesm2022/acorex-core-image.mjs +50 -0
- package/fesm2022/acorex-core-image.mjs.map +1 -0
- package/fesm2022/acorex-core-memorize.mjs +26 -0
- package/fesm2022/acorex-core-memorize.mjs.map +1 -0
- package/fesm2022/acorex-core-pipes.mjs +44 -0
- package/fesm2022/acorex-core-pipes.mjs.map +1 -0
- package/fesm2022/acorex-core-platform.mjs +232 -0
- package/fesm2022/acorex-core-platform.mjs.map +1 -0
- package/fesm2022/acorex-core-storage.mjs +285 -0
- package/fesm2022/acorex-core-storage.mjs.map +1 -0
- package/fesm2022/acorex-core-translation.mjs +293 -0
- package/fesm2022/acorex-core-translation.mjs.map +1 -0
- package/fesm2022/acorex-core-types.mjs +6 -0
- package/fesm2022/acorex-core-types.mjs.map +1 -0
- package/fesm2022/acorex-core-utils.mjs +247 -0
- package/fesm2022/acorex-core-utils.mjs.map +1 -0
- package/fesm2022/acorex-core-validation.mjs +488 -0
- package/fesm2022/acorex-core-validation.mjs.map +1 -0
- package/fesm2022/acorex-core.mjs +2 -2309
- package/fesm2022/acorex-core.mjs.map +1 -1
- package/file/README.md +3 -0
- package/file/index.d.ts +6 -0
- package/file/lib/file-download-ref.class.d.ts +6 -0
- package/file/lib/file-download-result.class.d.ts +8 -0
- package/file/lib/file-size-formatter.d.ts +16 -0
- package/file/lib/file-upload-ref.class.d.ts +5 -0
- package/file/lib/file.module.d.ts +7 -0
- package/file/lib/file.service.d.ts +18 -0
- package/format/README.md +3 -0
- package/format/index.d.ts +7 -0
- package/format/lib/format.config.d.ts +5 -0
- package/format/lib/format.module.d.ts +18 -0
- package/format/lib/format.pipe.d.ts +12 -0
- package/format/lib/format.service.d.ts +43 -0
- package/format/lib/format.types.d.ts +4 -0
- package/format/lib/formatters/number-formatter.d.ts +23 -0
- package/format/lib/formatters/string-formatter.d.ts +14 -0
- package/image/README.md +3 -0
- package/image/index.d.ts +1 -0
- package/image/lib/image.service.d.ts +11 -0
- package/index.d.ts +1 -43
- package/memorize/README.md +3 -0
- package/memorize/index.d.ts +1 -0
- package/memorize/lib/memorize.decorator.d.ts +1 -0
- package/package.json +98 -5
- package/pipes/README.md +3 -0
- package/pipes/index.d.ts +1 -0
- package/pipes/lib/safe/safe.pipe.d.ts +10 -0
- package/platform/README.md +3 -0
- package/platform/index.d.ts +1 -0
- package/{lib/platform → platform/lib}/platform.service.d.ts +14 -6
- package/storage/README.md +3 -0
- package/storage/cookie-storage.service.d.ts +104 -0
- package/storage/index.d.ts +4 -0
- package/storage/local-storage.service.d.ts +16 -0
- package/storage/session-storage.service.d.ts +10 -0
- package/storage/storage.interface.d.ts +14 -0
- package/translation/README.md +3 -0
- package/translation/index.d.ts +8 -0
- package/translation/lib/translation-scope.resolver.d.ts +2 -0
- package/translation/lib/translation.config.d.ts +14 -0
- package/translation/lib/translation.loader.d.ts +14 -0
- package/translation/lib/translation.module.d.ts +8 -0
- package/translation/lib/translation.service.d.ts +31 -0
- package/translation/lib/translation.types.d.ts +10 -0
- package/translation/lib/translator.directive.d.ts +12 -0
- package/translation/lib/translator.pipe.d.ts +12 -0
- package/types/README.md +3 -0
- package/types/index.d.ts +2 -0
- package/utils/README.md +3 -0
- package/utils/index.d.ts +5 -0
- package/utils/lib/auto-unsubscribe.d.ts +12 -0
- package/utils/lib/color-util.d.ts +24 -0
- package/utils/lib/drawing-util.d.ts +18 -0
- package/utils/lib/html-util.d.ts +5 -0
- package/utils/lib/string-util.d.ts +6 -0
- package/validation/README.md +3 -0
- package/validation/index.d.ts +14 -0
- package/validation/lib/rules/between-rule.d.ts +18 -0
- package/validation/lib/rules/callback-rule.d.ts +23 -0
- package/validation/lib/rules/equal-rule.d.ts +17 -0
- package/validation/lib/rules/greater-than.d.ts +17 -0
- package/validation/lib/rules/length-rule.d.ts +17 -0
- package/validation/lib/rules/less-than-rule.d.ts +17 -0
- package/validation/lib/rules/maxlength-rule.d.ts +16 -0
- package/validation/lib/rules/minlength-rule.d.ts +16 -0
- package/validation/lib/rules/regex-rule.d.ts +17 -0
- package/validation/lib/rules/required-rule.d.ts +16 -0
- package/validation/lib/validation.config.d.ts +15 -0
- package/validation/lib/validation.module.d.ts +17 -0
- package/validation/lib/validation.service.d.ts +35 -0
- package/validation/lib/validation.types.d.ts +21 -0
- package/esm2022/lib/classes/base-page.class.mjs +0 -26
- package/esm2022/lib/classes/color.class.mjs +0 -49
- package/esm2022/lib/classes/datetime.class.mjs +0 -323
- package/esm2022/lib/classes/menu.class.mjs +0 -35
- package/esm2022/lib/classes/navigator.class.mjs +0 -2
- package/esm2022/lib/classes/popup.class.mjs +0 -2
- package/esm2022/lib/classes/promise.class.mjs +0 -21
- package/esm2022/lib/classes/sectionlist.class.mjs +0 -2
- package/esm2022/lib/classes/select.class.mjs +0 -8
- package/esm2022/lib/core.module.mjs +0 -27
- package/esm2022/lib/error/error.class.mjs +0 -2
- package/esm2022/lib/error/error.module.mjs +0 -19
- package/esm2022/lib/error/error.service.mjs +0 -22
- package/esm2022/lib/events/keyboard.mjs +0 -2
- package/esm2022/lib/http/http-error.class.mjs +0 -2
- package/esm2022/lib/http/http-events.interceptor.mjs +0 -3
- package/esm2022/lib/http/http-request.class.mjs +0 -2
- package/esm2022/lib/http/http-result.class.mjs +0 -25
- package/esm2022/lib/http/http.module.mjs +0 -35
- package/esm2022/lib/http/http.service.mjs +0 -148
- package/esm2022/lib/locale/en.json +0 -255
- package/esm2022/lib/locale/fa.json +0 -245
- package/esm2022/lib/pipe/datetime.pipe.mjs +0 -25
- package/esm2022/lib/pipe/htmlToText.pipe.mjs +0 -25
- package/esm2022/lib/platform/index.mjs +0 -2
- package/esm2022/lib/platform/platform.service.mjs +0 -152
- package/esm2022/lib/services/config.mjs +0 -29
- package/esm2022/lib/services/event.service.mjs +0 -34
- package/esm2022/lib/services/navigator.service.mjs +0 -10
- package/esm2022/lib/services/storage.service.mjs +0 -16
- package/esm2022/lib/translator/translator.mjs +0 -26
- package/esm2022/lib/translator/translator.module.mjs +0 -25
- package/esm2022/lib/translator/translator.pipe.mjs +0 -24
- package/esm2022/lib/translator/translator.service.mjs +0 -21
- package/esm2022/lib/utils/array/array-util.mjs +0 -133
- package/esm2022/lib/utils/html/html-util.mjs +0 -200
- package/esm2022/lib/utils/html/html.module.mjs +0 -19
- package/esm2022/lib/utils/math/math-util.mjs +0 -6
- package/esm2022/lib/utils/object/object-util.mjs +0 -83
- package/esm2022/lib/utils/render/on-demand-preload-strategy.service.mjs +0 -21
- package/esm2022/lib/utils/render/render.service.mjs +0 -109
- package/esm2022/lib/utils/render/rendering.module.mjs +0 -35
- package/esm2022/lib/utils/scroll/scroll.directive.mjs +0 -56
- package/esm2022/lib/utils/scroll/scroll.module.mjs +0 -19
- package/esm2022/lib/utils/separator/separator.module.mjs +0 -19
- package/esm2022/lib/utils/separator/separator.pipe.mjs +0 -33
- package/lib/classes/base-page.class.d.ts +0 -13
- package/lib/classes/color.class.d.ts +0 -17
- package/lib/classes/datetime.class.d.ts +0 -63
- package/lib/classes/menu.class.d.ts +0 -34
- package/lib/classes/navigator.class.d.ts +0 -5
- package/lib/classes/popup.class.d.ts +0 -12
- package/lib/classes/promise.class.d.ts +0 -7
- package/lib/classes/sectionlist.class.d.ts +0 -8
- package/lib/classes/select.class.d.ts +0 -7
- package/lib/core.module.d.ts +0 -9
- package/lib/error/error.class.d.ts +0 -4
- package/lib/error/error.module.d.ts +0 -7
- package/lib/error/error.service.d.ts +0 -13
- package/lib/events/keyboard.d.ts +0 -2
- package/lib/http/http-error.class.d.ts +0 -7
- package/lib/http/http-events.interceptor.d.ts +0 -10
- package/lib/http/http-request.class.d.ts +0 -14
- package/lib/http/http-result.class.d.ts +0 -11
- package/lib/http/http.module.d.ts +0 -10
- package/lib/http/http.service.d.ts +0 -23
- package/lib/pipe/datetime.pipe.d.ts +0 -8
- package/lib/pipe/htmlToText.pipe.d.ts +0 -7
- package/lib/platform/index.d.ts +0 -1
- package/lib/services/config.d.ts +0 -9
- package/lib/services/navigator.service.d.ts +0 -8
- package/lib/services/storage.service.d.ts +0 -7
- package/lib/translator/translator.d.ts +0 -9
- package/lib/translator/translator.module.d.ts +0 -8
- package/lib/translator/translator.pipe.d.ts +0 -8
- package/lib/translator/translator.service.d.ts +0 -8
- package/lib/utils/array/array-util.d.ts +0 -6
- package/lib/utils/html/html-util.d.ts +0 -62
- package/lib/utils/html/html.module.d.ts +0 -8
- package/lib/utils/math/math-util.d.ts +0 -3
- package/lib/utils/object/object-util.d.ts +0 -7
- package/lib/utils/render/on-demand-preload-strategy.service.d.ts +0 -10
- package/lib/utils/render/render.service.d.ts +0 -18
- package/lib/utils/render/rendering.module.d.ts +0 -8
- package/lib/utils/scroll/scroll.directive.d.ts +0 -18
- package/lib/utils/scroll/scroll.module.d.ts +0 -8
- package/lib/utils/separator/separator.module.d.ts +0 -8
- package/lib/utils/separator/separator.pipe.d.ts +0 -8
@@ -0,0 +1,173 @@
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
2
|
+
import { BehaviorSubject, catchError, finalize, firstValueFrom, forkJoin, map, of, shareReplay, startWith, switchMap, take, tap, } from 'rxjs';
|
3
|
+
import { AX_TRANSLATION_LOADER } from './translation.loader';
|
4
|
+
import { set as lodashSet, get as lodashGet } from 'lodash-es';
|
5
|
+
import { AX_TRANSLATION_CONFIG } from './translation.config';
|
6
|
+
import { AXEventService, AXEventTypes } from '@acorex/core/events';
|
7
|
+
import * as i0 from "@angular/core";
|
8
|
+
let service;
|
9
|
+
export function translateSync(key, options) {
|
10
|
+
return service.translateSync(key, options);
|
11
|
+
}
|
12
|
+
export class AXTranslationService {
|
13
|
+
/**
|
14
|
+
* @ignore
|
15
|
+
*/
|
16
|
+
constructor() {
|
17
|
+
this.loader = inject(AX_TRANSLATION_LOADER);
|
18
|
+
this.config = inject(AX_TRANSLATION_CONFIG);
|
19
|
+
this.eventService = inject(AXEventService);
|
20
|
+
this.translationCache = {};
|
21
|
+
this.ongoingRequests = new Map();
|
22
|
+
this.activeLang = new BehaviorSubject(this.getDefaultLang());
|
23
|
+
this.langChanges$ = this.activeLang.asObservable();
|
24
|
+
this.lastActiveLang = null;
|
25
|
+
service = this;
|
26
|
+
}
|
27
|
+
loadLanguagesAndScopes(languages, scopes) {
|
28
|
+
const requests = languages.flatMap((lang) => scopes.map((scope) => {
|
29
|
+
// Check if translations are already cached
|
30
|
+
if (this.translationCache[lang]?.[scope]) {
|
31
|
+
return of(this.translationCache[lang][scope]);
|
32
|
+
}
|
33
|
+
// Use the new method to handle ongoing requests and loading
|
34
|
+
return this.getOrLoadTranslations(lang, scope);
|
35
|
+
}));
|
36
|
+
return forkJoin(requests);
|
37
|
+
}
|
38
|
+
getOrLoadTranslations(lang, scope) {
|
39
|
+
const requestKey = `${lang}_${scope}`;
|
40
|
+
// Return existing observable if the request is already in progress
|
41
|
+
if (this.ongoingRequests.has(requestKey)) {
|
42
|
+
return this.ongoingRequests.get(requestKey);
|
43
|
+
}
|
44
|
+
// Load translations if not in cache or ongoing requests
|
45
|
+
const translationObservable = this.loader
|
46
|
+
.getTranslation({ lang, scope })
|
47
|
+
.pipe(tap((translations) => this.cacheTranslations(lang, scope, translations)), catchError((error) => {
|
48
|
+
console.error(`Error loading translations for lang: ${lang}, scope: ${scope}`, error);
|
49
|
+
return of(null);
|
50
|
+
}), finalize(() => {
|
51
|
+
this.eventService.emitEvent({
|
52
|
+
type: AXEventTypes.AXLanguageLoaded,
|
53
|
+
payload: lang,
|
54
|
+
});
|
55
|
+
this.ongoingRequests.delete(requestKey);
|
56
|
+
}), shareReplay(1));
|
57
|
+
this.ongoingRequests.set(requestKey, translationObservable);
|
58
|
+
return translationObservable;
|
59
|
+
}
|
60
|
+
cacheTranslations(lang, scope, translations) {
|
61
|
+
lodashSet(this.translationCache, `${lang}.${scope}`, translations);
|
62
|
+
}
|
63
|
+
getDefaultLang() {
|
64
|
+
return this.config.defaultLang;
|
65
|
+
}
|
66
|
+
getActiveLang() {
|
67
|
+
return this.activeLang.getValue();
|
68
|
+
}
|
69
|
+
setActiveLang(lang) {
|
70
|
+
if (lang != this.getActiveLang()) {
|
71
|
+
this.lastActiveLang = this.getActiveLang(); // Update last active language
|
72
|
+
this.activeLang.next(lang);
|
73
|
+
this.eventService.emitEvent({
|
74
|
+
type: AXEventTypes.AXLanguageChanged,
|
75
|
+
payload: lang,
|
76
|
+
});
|
77
|
+
}
|
78
|
+
}
|
79
|
+
load(key, options = {}) {
|
80
|
+
const { lang = this.getActiveLang(), scope = this.config.defaultScope } = options;
|
81
|
+
// Function to fetch translation
|
82
|
+
const fetchTranslation = (language) => {
|
83
|
+
// Check if translations are available in the cache
|
84
|
+
if (this.translationCache[language]?.[scope]) {
|
85
|
+
return of(this.getTranslation(key, language, scope, options.params));
|
86
|
+
}
|
87
|
+
// Use the new method to handle ongoing requests and loading
|
88
|
+
return this.getOrLoadTranslations(language, scope).pipe(map(() => {
|
89
|
+
const translation = this.translationCache[language]?.[scope]?.[key] || key;
|
90
|
+
return this.getTranslation(translation, language, scope, options.params);
|
91
|
+
}), switchMap((translatedText) => {
|
92
|
+
if (translatedText === key && language !== this.getDefaultLang()) {
|
93
|
+
// If the translation is not found and the language is not default,
|
94
|
+
// try fetching from the default language
|
95
|
+
return fetchTranslation(this.getDefaultLang());
|
96
|
+
}
|
97
|
+
return of(translatedText);
|
98
|
+
}));
|
99
|
+
};
|
100
|
+
// First, try to fetch the translation for the requested language
|
101
|
+
const translationForRequestedLang = fetchTranslation(lang);
|
102
|
+
// If lastActiveLang is available and different from the requested language, use it as a fallback
|
103
|
+
if (this.lastActiveLang && this.lastActiveLang !== lang) {
|
104
|
+
const translationForLastActiveLang = this.getTranslation(key, this.lastActiveLang, scope, options.params);
|
105
|
+
return translationForRequestedLang.pipe(startWith(translationForLastActiveLang));
|
106
|
+
}
|
107
|
+
return translationForRequestedLang;
|
108
|
+
}
|
109
|
+
getTranslation(key, lang, scope, params) {
|
110
|
+
let translation = (lodashGet(this.translationCache, `${lang}.${scope}.${key}`) || key);
|
111
|
+
// Replace params like {{ name }}
|
112
|
+
if (params) {
|
113
|
+
Object.keys(params).forEach((paramKey) => {
|
114
|
+
const paramValue = params[paramKey];
|
115
|
+
translation = translation.replace(new RegExp(`{{\\s*${paramKey}\\s*}}`, 'g'), paramValue);
|
116
|
+
});
|
117
|
+
}
|
118
|
+
// Replace translations like {{ t('key') }}
|
119
|
+
const translationPattern = /{{\s*t\('([^']+)'\)\s*}}/g;
|
120
|
+
translation = translation.replace(translationPattern, (match, innerKey) => {
|
121
|
+
return this.getTranslation(innerKey, lang, scope, params);
|
122
|
+
});
|
123
|
+
return translation;
|
124
|
+
}
|
125
|
+
translate(key, options) {
|
126
|
+
if (options?.lang) {
|
127
|
+
return this.load(key, options);
|
128
|
+
}
|
129
|
+
return this.langChanges$.pipe(startWith(this.getActiveLang()), switchMap((lang) => {
|
130
|
+
return this.load(key, { ...options, lang: lang });
|
131
|
+
}));
|
132
|
+
}
|
133
|
+
async translateAsync(key, options) {
|
134
|
+
const { lang = this.getActiveLang(), scope = this.config.defaultScope } = options || {};
|
135
|
+
let translation = lodashGet(this.translationCache, `${lang}.${scope}.${key}`);
|
136
|
+
if (!translation) {
|
137
|
+
// If the translation is not in the cache, load it
|
138
|
+
await firstValueFrom(this.load(key, { lang, scope }).pipe(take(1)));
|
139
|
+
translation = lodashGet(this.translationCache, `${lang}.${scope}.${key}`);
|
140
|
+
}
|
141
|
+
// If still not available, try the last active language or default language
|
142
|
+
if (!translation && this.lastActiveLang) {
|
143
|
+
translation = lodashGet(this.translationCache, `${this.lastActiveLang}.${scope}.${key}`);
|
144
|
+
}
|
145
|
+
if (!translation) {
|
146
|
+
translation = lodashGet(this.translationCache, `${this.getDefaultLang()}.${scope}.${key}`);
|
147
|
+
}
|
148
|
+
// Perform parameter replacement
|
149
|
+
return this.getTranslation((translation || key), lang, scope, options?.params);
|
150
|
+
}
|
151
|
+
translateSync(key, options) {
|
152
|
+
const { lang = this.getActiveLang(), scope = this.config.defaultScope } = options || {};
|
153
|
+
// Check if the translation for the active language is available
|
154
|
+
let translation = lodashGet(this.translationCache, `${lang}.${scope}.${key}`);
|
155
|
+
// If not available, check lastActiveLang
|
156
|
+
if (!translation && this.lastActiveLang) {
|
157
|
+
translation = lodashGet(this.translationCache, `${this.lastActiveLang}.${scope}.${key}`);
|
158
|
+
}
|
159
|
+
// If still not available, use the default language
|
160
|
+
if (!translation) {
|
161
|
+
translation = lodashGet(this.translationCache, `${this.getDefaultLang()}.${scope}.${key}`);
|
162
|
+
}
|
163
|
+
// Perform parameter replacement
|
164
|
+
return this.getTranslation((translation || key), lang, scope, options?.params);
|
165
|
+
}
|
166
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
167
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }
|
168
|
+
}
|
169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslationService, decorators: [{
|
170
|
+
type: Injectable,
|
171
|
+
args: [{ providedIn: 'root' }]
|
172
|
+
}], ctorParameters: () => [] });
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNMLGVBQWUsRUFFZixVQUFVLEVBQ1YsUUFBUSxFQUNSLGNBQWMsRUFDZCxRQUFRLEVBQ1IsR0FBRyxFQUNILEVBQUUsRUFDRixXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBTWQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsSUFBSSxTQUFTLEVBQUUsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUVuRSxJQUFJLE9BQTZCLENBQUM7QUFFbEMsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsR0FBVyxFQUNYLE9BQTRCO0lBRTVCLE9BQU8sT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUdELE1BQU0sT0FBTyxvQkFBb0I7SUFnQi9COztPQUVHO0lBQ0g7UUFsQlEsV0FBTSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3ZDLFdBQU0sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUV2QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV0QyxxQkFBZ0IsR0FB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LEVBQzNCLElBQUksRUFDSixLQUFLLEVBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FDaEIsQ0FBQztJQUNKLENBQUM7OEdBMVJVLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRFAsTUFBTTs7MkZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgY2F0Y2hFcnJvcixcbiAgZmluYWxpemUsXG4gIGZpcnN0VmFsdWVGcm9tLFxuICBmb3JrSm9pbixcbiAgbWFwLFxuICBvZixcbiAgc2hhcmVSZXBsYXksXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQVhUcmFuc2xhdGVIYXNoTWFwLFxuICBBWFRyYW5zbGF0ZU9wdGlvbnMsXG4gIEFYVHJhbnNsYXRlUGFyYW1zLFxufSBmcm9tICcuL3RyYW5zbGF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0xPQURFUiB9IGZyb20gJy4vdHJhbnNsYXRpb24ubG9hZGVyJztcbmltcG9ydCB7IHNldCBhcyBsb2Rhc2hTZXQsIGdldCBhcyBsb2Rhc2hHZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhfVFJBTlNMQVRJT05fQ09ORklHIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5jb25maWcnO1xuaW1wb3J0IHsgQVhFdmVudFNlcnZpY2UsIEFYRXZlbnRUeXBlcyB9IGZyb20gJ0BhY29yZXgvY29yZS9ldmVudHMnO1xuXG5sZXQgc2VydmljZTogQVhUcmFuc2xhdGlvblNlcnZpY2U7XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGVTeW5jKFxuICBrZXk6IHN0cmluZyxcbiAgb3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9uc1xuKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNlcnZpY2UudHJhbnNsYXRlU3luYyhrZXksIG9wdGlvbnMpO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBsb2FkZXIgPSBpbmplY3QoQVhfVFJBTlNMQVRJT05fTE9BREVSKTtcbiAgcHJpdmF0ZSBjb25maWcgPSBpbmplY3QoQVhfVFJBTlNMQVRJT05fQ09ORklHKTtcblxuICBwcml2YXRlIGV2ZW50U2VydmljZSA9IGluamVjdChBWEV2ZW50U2VydmljZSk7XG5cbiAgcHJpdmF0ZSB0cmFuc2xhdGlvbkNhY2hlOiBBWFRyYW5zbGF0ZUhhc2hNYXA8QVhUcmFuc2xhdGVIYXNoTWFwPHN0cmluZz4+ID0ge307XG4gIHByaXZhdGUgb25nb2luZ1JlcXVlc3RzOiBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPGFueT4+ID0gbmV3IE1hcCgpO1xuXG4gIHByaXZhdGUgYWN0aXZlTGFuZzogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oXG4gICAgdGhpcy5nZXREZWZhdWx0TGFuZygpXG4gICk7XG4gIGxhbmdDaGFuZ2VzJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5hY3RpdmVMYW5nLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgbGFzdEFjdGl2ZUxhbmc6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzZXJ2aWNlID0gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBsb2FkTGFuZ3VhZ2VzQW5kU2NvcGVzKFxuICAgIGxhbmd1YWdlczogc3RyaW5nW10sXG4gICAgc2NvcGVzOiBzdHJpbmdbXVxuICApOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICBjb25zdCByZXF1ZXN0cyA9IGxhbmd1YWdlcy5mbGF0TWFwKChsYW5nKSA9PlxuICAgICAgc2NvcGVzLm1hcCgoc2NvcGUpID0+IHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdHJhbnNsYXRpb25zIGFyZSBhbHJlYWR5IGNhY2hlZFxuICAgICAgICBpZiAodGhpcy50cmFuc2xhdGlvbkNhY2hlW2xhbmddPy5bc2NvcGVdKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHRoaXMudHJhbnNsYXRpb25DYWNoZVtsYW5nXVtzY29wZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlIHRoZSBuZXcgbWV0aG9kIHRvIGhhbmRsZSBvbmdvaW5nIHJlcXVlc3RzIGFuZCBsb2FkaW5nXG4gICAgICAgIHJldHVybiB0aGlzLmdldE9yTG9hZFRyYW5zbGF0aW9ucyhsYW5nLCBzY29wZSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gZm9ya0pvaW4ocmVxdWVzdHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPckxvYWRUcmFuc2xhdGlvbnMoXG4gICAgbGFuZzogc3RyaW5nLFxuICAgIHNjb3BlOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxBWFRyYW5zbGF0ZUhhc2hNYXA8c3RyaW5nPj4ge1xuICAgIGNvbnN0IHJlcXVlc3RLZXkgPSBgJHtsYW5nfV8ke3Njb3BlfWA7XG5cbiAgICAvLyBSZXR1cm4gZXhpc3Rpbmcgb2JzZXJ2YWJsZSBpZiB0aGUgcmVxdWVzdCBpcyBhbHJlYWR5IGluIHByb2dyZXNzXG4gICAgaWYgKHRoaXMub25nb2luZ1JlcXVlc3RzLmhhcyhyZXF1ZXN0S2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMub25nb2luZ1JlcXVlc3RzLmdldChyZXF1ZXN0S2V5KTtcbiAgICB9XG5cbiAgICAvLyBMb2FkIHRyYW5zbGF0aW9ucyBpZiBub3QgaW4gY2FjaGUgb3Igb25nb2luZyByZXF1ZXN0c1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uT2JzZXJ2YWJsZSA9IHRoaXMubG9hZGVyXG4gICAgICAuZ2V0VHJhbnNsYXRpb24oeyBsYW5nLCBzY29wZSB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgodHJhbnNsYXRpb25zKSA9PlxuICAgICAgICAgIHRoaXMuY2FjaGVUcmFuc2xhdGlvbnMobGFuZywgc2NvcGUsIHRyYW5zbGF0aW9ucylcbiAgICAgICAgKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYEVycm9yIGxvYWRpbmcgdHJhbnNsYXRpb25zIGZvciBsYW5nOiAke2xhbmd9LCBzY29wZTogJHtzY29wZX1gLFxuICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5lbWl0RXZlbnQoe1xuICAgICAgICAgICAgdHlwZTogQVhFdmVudFR5cGVzLkFYTGFuZ3VhZ2VMb2FkZWQsXG4gICAgICAgICAgICBwYXlsb2FkOiBsYW5nLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMub25nb2luZ1JlcXVlc3RzLmRlbGV0ZShyZXF1ZXN0S2V5KTtcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICApO1xuXG4gICAgdGhpcy5vbmdvaW5nUmVxdWVzdHMuc2V0KHJlcXVlc3RLZXksIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZSk7XG4gICAgcmV0dXJuIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZTtcbiAgfVxuXG4gIHByaXZhdGUgY2FjaGVUcmFuc2xhdGlvbnMoXG4gICAgbGFuZzogc3RyaW5nLFxuICAgIHNjb3BlOiBzdHJpbmcsXG4gICAgdHJhbnNsYXRpb25zOiBBWFRyYW5zbGF0ZUhhc2hNYXA8c3RyaW5nPlxuICApOiB2b2lkIHtcbiAgICBsb2Rhc2hTZXQodGhpcy50cmFuc2xhdGlvbkNhY2hlLCBgJHtsYW5nfS4ke3Njb3BlfWAsIHRyYW5zbGF0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGVmYXVsdExhbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGVmYXVsdExhbmc7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWN0aXZlTGFuZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUxhbmcuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVMYW5nKGxhbmc6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChsYW5nICE9IHRoaXMuZ2V0QWN0aXZlTGFuZygpKSB7XG4gICAgICB0aGlzLmxhc3RBY3RpdmVMYW5nID0gdGhpcy5nZXRBY3RpdmVMYW5nKCk7IC8vIFVwZGF0ZSBsYXN0IGFjdGl2ZSBsYW5ndWFnZVxuICAgICAgdGhpcy5hY3RpdmVMYW5nLm5leHQobGFuZyk7XG4gICAgICB0aGlzLmV2ZW50U2VydmljZS5lbWl0RXZlbnQoe1xuICAgICAgICB0eXBlOiBBWEV2ZW50VHlwZXMuQVhMYW5ndWFnZUNoYW5nZWQsXG4gICAgICAgIHBheWxvYWQ6IGxhbmcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWQoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgb3B0aW9uczogQVhUcmFuc2xhdGVPcHRpb25zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCB7IGxhbmcgPSB0aGlzLmdldEFjdGl2ZUxhbmcoKSwgc2NvcGUgPSB0aGlzLmNvbmZpZy5kZWZhdWx0U2NvcGUgfSA9XG4gICAgICBvcHRpb25zO1xuXG4gICAgLy8gRnVuY3Rpb24gdG8gZmV0Y2ggdHJhbnNsYXRpb25cbiAgICBjb25zdCBmZXRjaFRyYW5zbGF0aW9uID0gKGxhbmd1YWdlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4gPT4ge1xuICAgICAgLy8gQ2hlY2sgaWYgdHJhbnNsYXRpb25zIGFyZSBhdmFpbGFibGUgaW4gdGhlIGNhY2hlXG4gICAgICBpZiAodGhpcy50cmFuc2xhdGlvbkNhY2hlW2xhbmd1YWdlXT8uW3Njb3BlXSkge1xuICAgICAgICByZXR1cm4gb2YodGhpcy5nZXRUcmFuc2xhdGlvbihrZXksIGxhbmd1YWdlLCBzY29wZSwgb3B0aW9ucy5wYXJhbXMpKTtcbiAgICAgIH1cblxuICAgICAgLy8gVXNlIHRoZSBuZXcgbWV0aG9kIHRvIGhhbmRsZSBvbmdvaW5nIHJlcXVlc3RzIGFuZCBsb2FkaW5nXG4gICAgICByZXR1cm4gdGhpcy5nZXRPckxvYWRUcmFuc2xhdGlvbnMobGFuZ3VhZ2UsIHNjb3BlKS5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID1cbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25DYWNoZVtsYW5ndWFnZV0/LltzY29wZV0/LltrZXldIHx8IGtleTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGlvbihcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uLFxuICAgICAgICAgICAgbGFuZ3VhZ2UsXG4gICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgIG9wdGlvbnMucGFyYW1zXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgodHJhbnNsYXRlZFRleHQpID0+IHtcbiAgICAgICAgICBpZiAodHJhbnNsYXRlZFRleHQgPT09IGtleSAmJiBsYW5ndWFnZSAhPT0gdGhpcy5nZXREZWZhdWx0TGFuZygpKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgdHJhbnNsYXRpb24gaXMgbm90IGZvdW5kIGFuZCB0aGUgbGFuZ3VhZ2UgaXMgbm90IGRlZmF1bHQsXG4gICAgICAgICAgICAvLyB0cnkgZmV0Y2hpbmcgZnJvbSB0aGUgZGVmYXVsdCBsYW5ndWFnZVxuICAgICAgICAgICAgcmV0dXJuIGZldGNoVHJhbnNsYXRpb24odGhpcy5nZXREZWZhdWx0TGFuZygpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG9mKHRyYW5zbGF0ZWRUZXh0KTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfTtcblxuICAgIC8vIEZpcnN0LCB0cnkgdG8gZmV0Y2ggdGhlIHRyYW5zbGF0aW9uIGZvciB0aGUgcmVxdWVzdGVkIGxhbmd1YWdlXG4gICAgY29uc3QgdHJhbnNsYXRpb25Gb3JSZXF1ZXN0ZWRMYW5nID0gZmV0Y2hUcmFuc2xhdGlvbihsYW5nKTtcblxuICAgIC8vIElmIGxhc3RBY3RpdmVMYW5nIGlzIGF2YWlsYWJsZSBhbmQgZGlmZmVyZW50IGZyb20gdGhlIHJlcXVlc3RlZCBsYW5ndWFnZSwgdXNlIGl0IGFzIGEgZmFsbGJhY2tcbiAgICBpZiAodGhpcy5sYXN0QWN0aXZlTGFuZyAmJiB0aGlzLmxhc3RBY3RpdmVMYW5nICE9PSBsYW5nKSB7XG4gICAgICBjb25zdCB0cmFuc2xhdGlvbkZvckxhc3RBY3RpdmVMYW5nID0gdGhpcy5nZXRUcmFuc2xhdGlvbihcbiAgICAgICAga2V5LFxuICAgICAgICB0aGlzLmxhc3RBY3RpdmVMYW5nLFxuICAgICAgICBzY29wZSxcbiAgICAgICAgb3B0aW9ucy5wYXJhbXNcbiAgICAgICk7XG4gICAgICByZXR1cm4gdHJhbnNsYXRpb25Gb3JSZXF1ZXN0ZWRMYW5nLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0cmFuc2xhdGlvbkZvckxhc3RBY3RpdmVMYW5nKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJhbnNsYXRpb25Gb3JSZXF1ZXN0ZWRMYW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmFuc2xhdGlvbihcbiAgICBrZXk6IHN0cmluZyxcbiAgICBsYW5nOiBzdHJpbmcsXG4gICAgc2NvcGU6IHN0cmluZyxcbiAgICBwYXJhbXM/OiBBWFRyYW5zbGF0ZVBhcmFtc1xuICApOiBzdHJpbmcge1xuICAgIGxldCB0cmFuc2xhdGlvbjogc3RyaW5nID0gKGxvZGFzaEdldChcbiAgICAgIHRoaXMudHJhbnNsYXRpb25DYWNoZSxcbiAgICAgIGAke2xhbmd9LiR7c2NvcGV9LiR7a2V5fWBcbiAgICApIHx8IGtleSkgYXMgc3RyaW5nO1xuXG4gICAgLy8gUmVwbGFjZSBwYXJhbXMgbGlrZSB7eyBuYW1lIH19XG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChwYXJhbUtleSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbVZhbHVlID0gcGFyYW1zW3BhcmFtS2V5XSBhcyBzdHJpbmc7XG4gICAgICAgIHRyYW5zbGF0aW9uID0gdHJhbnNsYXRpb24ucmVwbGFjZShcbiAgICAgICAgICBuZXcgUmVnRXhwKGB7e1xcXFxzKiR7cGFyYW1LZXl9XFxcXHMqfX1gLCAnZycpLFxuICAgICAgICAgIHBhcmFtVmFsdWVcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFJlcGxhY2UgdHJhbnNsYXRpb25zIGxpa2Uge3sgdCgna2V5JykgfX1cbiAgICBjb25zdCB0cmFuc2xhdGlvblBhdHRlcm4gPSAve3tcXHMqdFxcKCcoW14nXSspJ1xcKVxccyp9fS9nO1xuICAgIHRyYW5zbGF0aW9uID0gdHJhbnNsYXRpb24ucmVwbGFjZSh0cmFuc2xhdGlvblBhdHRlcm4sIChtYXRjaCwgaW5uZXJLZXkpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zbGF0aW9uKGlubmVyS2V5LCBsYW5nLCBzY29wZSwgcGFyYW1zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdHJhbnNsYXRpb247XG4gIH1cblxuICBwdWJsaWMgdHJhbnNsYXRlKFxuICAgIGtleTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBpZiAob3B0aW9ucz8ubGFuZykge1xuICAgICAgcmV0dXJuIHRoaXMubG9hZChrZXksIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYW5nQ2hhbmdlcyQucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLmdldEFjdGl2ZUxhbmcoKSksXG4gICAgICBzd2l0Y2hNYXAoKGxhbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZChrZXksIHsgLi4ub3B0aW9ucywgbGFuZzogbGFuZyB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB0cmFuc2xhdGVBc3luYyhcbiAgICBrZXk6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQVhUcmFuc2xhdGVPcHRpb25zXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgeyBsYW5nID0gdGhpcy5nZXRBY3RpdmVMYW5nKCksIHNjb3BlID0gdGhpcy5jb25maWcuZGVmYXVsdFNjb3BlIH0gPVxuICAgICAgb3B0aW9ucyB8fCB7fTtcbiAgICBsZXQgdHJhbnNsYXRpb24gPSBsb2Rhc2hHZXQoXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uQ2FjaGUsXG4gICAgICBgJHtsYW5nfS4ke3Njb3BlfS4ke2tleX1gXG4gICAgKTtcblxuICAgIGlmICghdHJhbnNsYXRpb24pIHtcbiAgICAgIC8vIElmIHRoZSB0cmFuc2xhdGlvbiBpcyBub3QgaW4gdGhlIGNhY2hlLCBsb2FkIGl0XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmxvYWQoa2V5LCB7IGxhbmcsIHNjb3BlIH0pLnBpcGUodGFrZSgxKSkpO1xuICAgICAgdHJhbnNsYXRpb24gPSBsb2Rhc2hHZXQodGhpcy50cmFuc2xhdGlvbkNhY2hlLCBgJHtsYW5nfS4ke3Njb3BlfS4ke2tleX1gKTtcbiAgICB9XG5cbiAgICAvLyBJZiBzdGlsbCBub3QgYXZhaWxhYmxlLCB0cnkgdGhlIGxhc3QgYWN0aXZlIGxhbmd1YWdlIG9yIGRlZmF1bHQgbGFuZ3VhZ2VcbiAgICBpZiAoIXRyYW5zbGF0aW9uICYmIHRoaXMubGFzdEFjdGl2ZUxhbmcpIHtcbiAgICAgIHRyYW5zbGF0aW9uID0gbG9kYXNoR2V0KFxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uQ2FjaGUsXG4gICAgICAgIGAke3RoaXMubGFzdEFjdGl2ZUxhbmd9LiR7c2NvcGV9LiR7a2V5fWBcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghdHJhbnNsYXRpb24pIHtcbiAgICAgIHRyYW5zbGF0aW9uID0gbG9kYXNoR2V0KFxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uQ2FjaGUsXG4gICAgICAgIGAke3RoaXMuZ2V0RGVmYXVsdExhbmcoKX0uJHtzY29wZX0uJHtrZXl9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBQZXJmb3JtIHBhcmFtZXRlciByZXBsYWNlbWVudFxuICAgIHJldHVybiB0aGlzLmdldFRyYW5zbGF0aW9uKFxuICAgICAgKHRyYW5zbGF0aW9uIHx8IGtleSkgYXMgYW55LFxuICAgICAgbGFuZyxcbiAgICAgIHNjb3BlLFxuICAgICAgb3B0aW9ucz8ucGFyYW1zXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2xhdGVTeW5jKGtleTogc3RyaW5nLCBvcHRpb25zPzogQVhUcmFuc2xhdGVPcHRpb25zKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IGxhbmcgPSB0aGlzLmdldEFjdGl2ZUxhbmcoKSwgc2NvcGUgPSB0aGlzLmNvbmZpZy5kZWZhdWx0U2NvcGUgfSA9XG4gICAgICBvcHRpb25zIHx8IHt9O1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIHRyYW5zbGF0aW9uIGZvciB0aGUgYWN0aXZlIGxhbmd1YWdlIGlzIGF2YWlsYWJsZVxuICAgIGxldCB0cmFuc2xhdGlvbiA9IGxvZGFzaEdldChcbiAgICAgIHRoaXMudHJhbnNsYXRpb25DYWNoZSxcbiAgICAgIGAke2xhbmd9LiR7c2NvcGV9LiR7a2V5fWBcbiAgICApO1xuXG4gICAgLy8gSWYgbm90IGF2YWlsYWJsZSwgY2hlY2sgbGFzdEFjdGl2ZUxhbmdcbiAgICBpZiAoIXRyYW5zbGF0aW9uICYmIHRoaXMubGFzdEFjdGl2ZUxhbmcpIHtcbiAgICAgIHRyYW5zbGF0aW9uID0gbG9kYXNoR2V0KFxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uQ2FjaGUsXG4gICAgICAgIGAke3RoaXMubGFzdEFjdGl2ZUxhbmd9LiR7c2NvcGV9LiR7a2V5fWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSWYgc3RpbGwgbm90IGF2YWlsYWJsZSwgdXNlIHRoZSBkZWZhdWx0IGxhbmd1YWdlXG4gICAgaWYgKCF0cmFuc2xhdGlvbikge1xuICAgICAgdHJhbnNsYXRpb24gPSBsb2Rhc2hHZXQoXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25DYWNoZSxcbiAgICAgICAgYCR7dGhpcy5nZXREZWZhdWx0TGFuZygpfS4ke3Njb3BlfS4ke2tleX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gcGFyYW1ldGVyIHJlcGxhY2VtZW50XG4gICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRpb24oXG4gICAgICAodHJhbnNsYXRpb24gfHwga2V5KSBhcyBhbnksXG4gICAgICBsYW5nLFxuICAgICAgc2NvcGUsXG4gICAgICBvcHRpb25zPy5wYXJhbXNcbiAgICApO1xuICB9XG59XG4iXX0=
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export {};
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdHJhbnNsYXRpb24vc3JjL2xpYi90cmFuc2xhdGlvbi50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGVQYXJhbXM8VCA9IHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgVD47XG5leHBvcnQgdHlwZSBBWFRyYW5zbGF0ZUhhc2hNYXA8VCA9IHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgVD47XG5leHBvcnQgdHlwZSBBWFRyYW5zbGF0aW9uID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbmV4cG9ydCB0eXBlIEFYVHJhbnNsYXRlTGFuZyA9IHN0cmluZztcblxuZXhwb3J0IHR5cGUgQVhUcmFuc2xhdGVTY29wZSA9IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBBWFRyYW5zbGF0ZU9wdGlvbnMge1xuICBsYW5nPzogQVhUcmFuc2xhdGVMYW5nO1xuICBzY29wZT86IEFYVHJhbnNsYXRlU2NvcGU7XG4gIHBhcmFtcz86IEFYVHJhbnNsYXRlUGFyYW1zO1xufVxuIl19
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import { Directive, TemplateRef, ViewContainerRef, } from '@angular/core';
|
2
|
+
import { AXTranslationService } from './translation.service';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "./translation.service";
|
5
|
+
export class AXTranslatorDirective {
|
6
|
+
constructor(templateRef, viewContainer, translationService) {
|
7
|
+
this.templateRef = templateRef;
|
8
|
+
this.viewContainer = viewContainer;
|
9
|
+
this.translationService = translationService;
|
10
|
+
}
|
11
|
+
ngOnInit() {
|
12
|
+
this.viewContainer.clear();
|
13
|
+
this.viewContainer.createEmbeddedView(this.templateRef, {
|
14
|
+
$implicit: (key, options) => {
|
15
|
+
return this.translationService.translate(key, options);
|
16
|
+
},
|
17
|
+
});
|
18
|
+
}
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslatorDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.AXTranslationService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
20
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.2", type: AXTranslatorDirective, selector: "[translate]", ngImport: i0 }); }
|
21
|
+
}
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslatorDirective, decorators: [{
|
23
|
+
type: Directive,
|
24
|
+
args: [{
|
25
|
+
selector: '[translate]',
|
26
|
+
}]
|
27
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.AXTranslationService }] });
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdHJhbnNsYXRpb24vc3JjL2xpYi90cmFuc2xhdG9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFdBQVcsRUFDWCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQU03RCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQ1UsV0FBNkIsRUFDN0IsYUFBK0IsRUFDL0Isa0JBQXdDO1FBRnhDLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFzQjtJQUMvQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3RELFNBQVMsRUFBRSxDQUFDLEdBQVcsRUFBRSxPQUE0QixFQUFFLEVBQUU7Z0JBQ3ZELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDekQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBZFUscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRlT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdHJhbnNsYXRlXScsXG59KVxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBBWFRyYW5zbGF0aW9uU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLCB7XG4gICAgICAkaW1wbGljaXQ6IChrZXk6IHN0cmluZywgb3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9ucykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlKGtleSwgb3B0aW9ucyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { Pipe } from '@angular/core';
|
2
|
+
import { AXTranslationService } from './translation.service';
|
3
|
+
import { of } from 'rxjs';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "./translation.service";
|
6
|
+
export class AXTranslatorPipe {
|
7
|
+
constructor(service) {
|
8
|
+
this.service = service;
|
9
|
+
}
|
10
|
+
transform(key, options) {
|
11
|
+
if (!key) {
|
12
|
+
return of(''); // Return an empty observable if the key is not provided
|
13
|
+
}
|
14
|
+
return this.service.translate(key, options);
|
15
|
+
}
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslatorPipe, deps: [{ token: i1.AXTranslationService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
17
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.2", ngImport: i0, type: AXTranslatorPipe, name: "translate" }); }
|
18
|
+
}
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslatorPipe, decorators: [{
|
20
|
+
type: Pipe,
|
21
|
+
args: [{ name: 'translate', pure: true }]
|
22
|
+
}], ctorParameters: () => [{ type: i1.AXTranslationService }] });
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRvci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUl0QyxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQW9CLE9BQTZCO1FBQTdCLFlBQU8sR0FBUCxPQUFPLENBQXNCO0lBQUcsQ0FBQztJQUVyRCxTQUFTLENBQUMsR0FBVyxFQUFFLE9BQTRCO1FBQ2pELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0RBQXdEO1FBQ3pFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDOzhHQVJVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRlT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNsYXRpb24udHlwZXMnO1xuXG5AUGlwZSh7IG5hbWU6ICd0cmFuc2xhdGUnLCBwdXJlOiB0cnVlIH0pIC8vIFRoZSBwaXBlIGNhbiBub3cgYmUgcHVyZVxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBBWFRyYW5zbGF0aW9uU2VydmljZSkge31cblxuICB0cmFuc2Zvcm0oa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiBBWFRyYW5zbGF0ZU9wdGlvbnMpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICgha2V5KSB7XG4gICAgICByZXR1cm4gb2YoJycpOyAvLyBSZXR1cm4gYW4gZW1wdHkgb2JzZXJ2YWJsZSBpZiB0aGUga2V5IGlzIG5vdCBwcm92aWRlZFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLnRyYW5zbGF0ZShrZXksIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
export * from './index';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdHlwZXMvc3JjL2Fjb3JleC1jb3JlLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export default {};
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdHlwZXMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge307XG4iXX0=
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
export * from './index';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdXRpbHMvc3JjL2Fjb3JleC1jb3JlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
@@ -0,0 +1,6 @@
|
|
1
|
+
export * from './lib/auto-unsubscribe';
|
2
|
+
export * from './lib/color-util';
|
3
|
+
export * from './lib/drawing-util';
|
4
|
+
export * from './lib/html-util';
|
5
|
+
export * from './lib/string-util';
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdXRpbHMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2F1dG8tdW5zdWJzY3JpYmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29sb3ItdXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcmF3aW5nLXV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaHRtbC11dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmluZy11dGlsJztcbiJdfQ==
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import { Injectable } from '@angular/core';
|
2
|
+
import { Subject, takeUntil } from 'rxjs';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export function AXAutoUnsubscriber() {
|
5
|
+
return function (constructor) {
|
6
|
+
const orig = constructor.prototype.ngOnDestroy;
|
7
|
+
constructor.prototype.ngOnDestroy = function () {
|
8
|
+
for (const prop in this) {
|
9
|
+
const property = this[prop];
|
10
|
+
if (typeof property.subscribe === 'function') {
|
11
|
+
property.unsubscribe();
|
12
|
+
}
|
13
|
+
}
|
14
|
+
orig.apply();
|
15
|
+
};
|
16
|
+
};
|
17
|
+
}
|
18
|
+
export class AXUnsubscriber {
|
19
|
+
constructor() {
|
20
|
+
this._destroy$ = new Subject();
|
21
|
+
this.takeUntilDestroy = (origin) => origin.pipe(takeUntil(this._destroy$));
|
22
|
+
}
|
23
|
+
unsubscribe() {
|
24
|
+
this._destroy$.next();
|
25
|
+
this._destroy$.complete();
|
26
|
+
}
|
27
|
+
ngOnDestroy() {
|
28
|
+
this.unsubscribe();
|
29
|
+
}
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXUnsubscriber, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
31
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXUnsubscriber }); }
|
32
|
+
}
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXUnsubscriber, decorators: [{
|
34
|
+
type: Injectable
|
35
|
+
}] });
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by11bnN1YnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS91dGlscy9zcmMvbGliL2F1dG8tdW5zdWJzY3JpYmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdEQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLFVBQVUsV0FBVztRQUMxQixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUMvQyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRztZQUNsQyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVCLElBQUksT0FBTyxRQUFRLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUM3QyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUdELE1BQU0sT0FBTyxjQUFjO0lBRDNCO1FBRW1CLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWpDLHFCQUFnQixHQUFHLENBQ2pDLE1BQWtDLEVBQ04sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0tBVXpFO0lBUlEsV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7OEdBZFUsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIEFYQXV0b1Vuc3Vic2NyaWJlcigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChjb25zdHJ1Y3Rvcikge1xuICAgIGNvbnN0IG9yaWcgPSBjb25zdHJ1Y3Rvci5wcm90b3R5cGUubmdPbkRlc3Ryb3k7XG4gICAgY29uc3RydWN0b3IucHJvdG90eXBlLm5nT25EZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yIChjb25zdCBwcm9wIGluIHRoaXMpIHtcbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSB0aGlzW3Byb3BdO1xuICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5LnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHByb3BlcnR5LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9yaWcuYXBwbHkoKTtcbiAgICB9O1xuICB9O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhVbnN1YnNjcmliZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRha2VVbnRpbERlc3Ryb3kgPSA8VD4oXG4gICAgb3JpZ2luOiBPYnNlcnZhYmxlPFQ+IHwgU3ViamVjdDxUPlxuICApOiBPYnNlcnZhYmxlPFQ+IHwgU3ViamVjdDxUPiA9PiBvcmlnaW4ucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKTtcblxuICBwdWJsaWMgdW5zdWJzY3JpYmUoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
|
@@ -0,0 +1,111 @@
|
|
1
|
+
import tinycolor from 'tinycolor2';
|
2
|
+
import tinygradient from 'tinygradient-es';
|
3
|
+
export class AXColorUtil {
|
4
|
+
static to(color, mode) {
|
5
|
+
const _color = tinycolor(color);
|
6
|
+
switch (mode) {
|
7
|
+
case 'rgba':
|
8
|
+
return _color.toRgb();
|
9
|
+
case 'hsla':
|
10
|
+
return _color.toHsl();
|
11
|
+
case 'hsva':
|
12
|
+
return _color.toHsv();
|
13
|
+
default:
|
14
|
+
return _color.toHex();
|
15
|
+
}
|
16
|
+
}
|
17
|
+
static toString(color, mode = null) {
|
18
|
+
const _color = tinycolor(color);
|
19
|
+
switch (mode) {
|
20
|
+
case 'rgba':
|
21
|
+
return _color.toRgbString();
|
22
|
+
case 'hsla':
|
23
|
+
return _color.toHslString();
|
24
|
+
case 'hsva':
|
25
|
+
return _color.toHsvString();
|
26
|
+
case 'hex': {
|
27
|
+
const rgba = _color.toRgb();
|
28
|
+
return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();
|
29
|
+
}
|
30
|
+
default: {
|
31
|
+
if (typeof color == 'string') {
|
32
|
+
if (color.toLowerCase().startsWith('#'))
|
33
|
+
return this.toString(color, 'hex');
|
34
|
+
else
|
35
|
+
return this.toString(color, 'rgba');
|
36
|
+
}
|
37
|
+
else {
|
38
|
+
return this.toString(color, 'rgba');
|
39
|
+
}
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|
43
|
+
static isValid(color) {
|
44
|
+
const _color = tinycolor(color);
|
45
|
+
return _color.isValid();
|
46
|
+
}
|
47
|
+
static mix(baseColor, hex, percentage) {
|
48
|
+
return tinycolor.mix(baseColor, hex, percentage).toString('rgb');
|
49
|
+
}
|
50
|
+
static multiply(color1, color2) {
|
51
|
+
const rgb1 = tinycolor(color1).toRgb();
|
52
|
+
const rgb2 = tinycolor(color2).toRgb();
|
53
|
+
rgb1.b = Math.floor((rgb1.b * rgb2.b) / 255);
|
54
|
+
rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);
|
55
|
+
rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);
|
56
|
+
return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');
|
57
|
+
}
|
58
|
+
static contrastToWhite(color) {
|
59
|
+
return tinycolor.readability('#fff', color);
|
60
|
+
}
|
61
|
+
static lighten(hex, percentage) {
|
62
|
+
return tinycolor(hex).lighten(percentage);
|
63
|
+
}
|
64
|
+
static darken(hex, percentage) {
|
65
|
+
return tinycolor(hex).darken(percentage);
|
66
|
+
}
|
67
|
+
static brighten(hex, percentage) {
|
68
|
+
return tinycolor(hex).brighten(percentage);
|
69
|
+
}
|
70
|
+
static saturate(hex, percentage) {
|
71
|
+
return tinycolor(hex).saturate(percentage);
|
72
|
+
}
|
73
|
+
static desaturate(hex) {
|
74
|
+
return tinycolor(hex).getLuminance();
|
75
|
+
}
|
76
|
+
static equal(color1, color2) {
|
77
|
+
return tinycolor.equals(color1, color2);
|
78
|
+
}
|
79
|
+
static gradient(values) {
|
80
|
+
return tinygradient([...values]);
|
81
|
+
}
|
82
|
+
static getLuminance(hex) {
|
83
|
+
return tinycolor(hex).getLuminance();
|
84
|
+
}
|
85
|
+
static xyToRgb(vX, vY) {
|
86
|
+
vY = vY || 0.00000000001;
|
87
|
+
const Y = 1;
|
88
|
+
const X = (Y / vY) * vX;
|
89
|
+
const Z = (Y / vY) * (1 - vX - vY);
|
90
|
+
// Convert to RGB using Wide RGB D65 conversion.
|
91
|
+
let rgb = [
|
92
|
+
X * 1.656492 - Y * 0.354851 - Z * 0.255038,
|
93
|
+
-X * 0.707196 + Y * 1.655397 + Z * 0.036152,
|
94
|
+
X * 0.051713 - Y * 0.121364 + Z * 1.01153,
|
95
|
+
];
|
96
|
+
// Apply reverse gamma correction.
|
97
|
+
rgb = rgb.map((x) => x <= 0.0031308
|
98
|
+
? 12.92 * x
|
99
|
+
: (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055);
|
100
|
+
// Bring all negative components to zero.
|
101
|
+
rgb = rgb.map((x) => Math.max(0, x));
|
102
|
+
// If one component is greater than 1, weight components by that value.
|
103
|
+
const max = Math.max(...rgb);
|
104
|
+
if (max > 1) {
|
105
|
+
rgb = rgb.map((x) => x / max);
|
106
|
+
}
|
107
|
+
rgb = rgb.map((x) => Math.round(x * 255));
|
108
|
+
return 'rgb(' + rgb.join(',') + ')';
|
109
|
+
}
|
110
|
+
}
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS91dGlscy9zcmMvbGliL2NvbG9yLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxTQUF5QixNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLFlBQTBCLE1BQU0saUJBQWlCLENBQUM7QUFJekQsTUFBTSxPQUFPLFdBQVc7SUFDdEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFvQixFQUFFLElBQWlCO1FBQy9DLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxNQUFNO2dCQUNULE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEI7Z0JBQ0UsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQW9CLEVBQUUsT0FBb0IsSUFBSTtRQUM1RCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUIsS0FBSyxNQUFNO2dCQUNULE9BQU8sTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTlCLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDWCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BFLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNSLElBQUksT0FBTyxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQzdCLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7d0JBQ3JDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7O3dCQUNoQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBb0I7UUFDakMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxDQUNSLFNBQXdCLEVBQ3hCLEdBQWtCLEVBQ2xCLFVBQWtCO1FBRWxCLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFxQixFQUFFLE1BQXFCO1FBQzFELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDN0MsT0FBTyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQ3RFLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBb0I7UUFDekMsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFrQixFQUFFLFVBQW1CO1FBQ3BELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFrQixFQUFFLFVBQW1CO1FBQ25ELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFrQixFQUFFLFVBQW1CO1FBQ3JELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFrQixFQUFFLFVBQW1CO1FBQ3JELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFrQjtRQUNsQyxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFxQixFQUFFLE1BQXFCO1FBQ3ZELE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQ2IsTUFBcUQ7UUFFckQsT0FBTyxZQUFZLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBa0I7UUFDcEMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUU7UUFDbkIsRUFBRSxHQUFHLEVBQUUsSUFBSSxhQUFhLENBQUM7UUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVuQyxnREFBZ0Q7UUFDaEQsSUFBSSxHQUFHLEdBQUc7WUFDUixDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxHQUFHLFFBQVE7WUFDMUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxHQUFHLFFBQVE7WUFDM0MsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsR0FBRyxPQUFPO1NBQzFDLENBQUM7UUFFRixrQ0FBa0M7UUFDbEMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNsQixDQUFDLElBQUksU0FBUztZQUNaLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUNuRCxDQUFDO1FBRUYseUNBQXlDO1FBQ3pDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJDLHVFQUF1RTtRQUN2RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDWixHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUxQyxPQUFPLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUN0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBWENvbG9yTW9kZSA9ICdyZ2JhJyB8ICdoZXgnIHwgJ2hzbGEnIHwgJ2hzdmEnIHwgbnVsbDtcblxuaW1wb3J0IHRpbnljb2xvciwgeyBDb2xvcklucHV0IH0gZnJvbSAndGlueWNvbG9yMic7XG5pbXBvcnQgdGlueWdyYWRpZW50LCB7IEluc3RhbmNlIH0gZnJvbSAndGlueWdyYWRpZW50LWVzJztcblxuZXhwb3J0IHR5cGUgQVhDb2xvckZvcm1hdCA9IENvbG9ySW5wdXQ7XG5cbmV4cG9ydCBjbGFzcyBBWENvbG9yVXRpbCB7XG4gIHN0YXRpYyB0byhjb2xvcjogQVhDb2xvckZvcm1hdCwgbW9kZTogQVhDb2xvck1vZGUpOiBBWENvbG9yRm9ybWF0IHtcbiAgICBjb25zdCBfY29sb3IgPSB0aW55Y29sb3IoY29sb3IpO1xuICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgY2FzZSAncmdiYSc6XG4gICAgICAgIHJldHVybiBfY29sb3IudG9SZ2IoKTtcbiAgICAgIGNhc2UgJ2hzbGEnOlxuICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHNsKCk7XG4gICAgICBjYXNlICdoc3ZhJzpcbiAgICAgICAgcmV0dXJuIF9jb2xvci50b0hzdigpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIF9jb2xvci50b0hleCgpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyB0b1N0cmluZyhjb2xvcjogQVhDb2xvckZvcm1hdCwgbW9kZTogQVhDb2xvck1vZGUgPSBudWxsKTogc3RyaW5nIHtcbiAgICBjb25zdCBfY29sb3IgPSB0aW55Y29sb3IoY29sb3IpO1xuICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgY2FzZSAncmdiYSc6XG4gICAgICAgIHJldHVybiBfY29sb3IudG9SZ2JTdHJpbmcoKTtcbiAgICAgIGNhc2UgJ2hzbGEnOlxuICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHNsU3RyaW5nKCk7XG4gICAgICBjYXNlICdoc3ZhJzpcbiAgICAgICAgcmV0dXJuIF9jb2xvci50b0hzdlN0cmluZygpO1xuXG4gICAgICBjYXNlICdoZXgnOiB7XG4gICAgICAgIGNvbnN0IHJnYmEgPSBfY29sb3IudG9SZ2IoKTtcbiAgICAgICAgcmV0dXJuIHJnYmEuYSAhPSAxID8gX2NvbG9yLnRvSGV4OFN0cmluZygpIDogX2NvbG9yLnRvSGV4U3RyaW5nKCk7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29sb3IgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBpZiAoY29sb3IudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCcjJykpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b1N0cmluZyhjb2xvciwgJ2hleCcpO1xuICAgICAgICAgIGVsc2UgcmV0dXJuIHRoaXMudG9TdHJpbmcoY29sb3IsICdyZ2JhJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoY29sb3IsICdyZ2JhJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaXNWYWxpZChjb2xvcjogQVhDb2xvckZvcm1hdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IF9jb2xvciA9IHRpbnljb2xvcihjb2xvcik7XG4gICAgcmV0dXJuIF9jb2xvci5pc1ZhbGlkKCk7XG4gIH1cblxuICBzdGF0aWMgbWl4KFxuICAgIGJhc2VDb2xvcjogQVhDb2xvckZvcm1hdCxcbiAgICBoZXg6IEFYQ29sb3JGb3JtYXQsXG4gICAgcGVyY2VudGFnZTogbnVtYmVyXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRpbnljb2xvci5taXgoYmFzZUNvbG9yLCBoZXgsIHBlcmNlbnRhZ2UpLnRvU3RyaW5nKCdyZ2InKTtcbiAgfVxuXG4gIHN0YXRpYyBtdWx0aXBseShjb2xvcjE6IEFYQ29sb3JGb3JtYXQsIGNvbG9yMjogQVhDb2xvckZvcm1hdCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmdiMSA9IHRpbnljb2xvcihjb2xvcjEpLnRvUmdiKCk7XG4gICAgY29uc3QgcmdiMiA9IHRpbnljb2xvcihjb2xvcjIpLnRvUmdiKCk7XG4gICAgcmdiMS5iID0gTWF0aC5mbG9vcigocmdiMS5iICogcmdiMi5iKSAvIDI1NSk7XG4gICAgcmdiMS5nID0gTWF0aC5mbG9vcigocmdiMS5nICogcmdiMi5nKSAvIDI1NSk7XG4gICAgcmdiMS5yID0gTWF0aC5mbG9vcigocmdiMS5yICogcmdiMi5yKSAvIDI1NSk7XG4gICAgcmV0dXJuIHRpbnljb2xvcigncmdiICcgKyByZ2IxLnIgKyAnICcgKyByZ2IxLmcgKyAnICcgKyByZ2IxLmIpLnRvU3RyaW5nKFxuICAgICAgJ3JnYidcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGNvbnRyYXN0VG9XaGl0ZShjb2xvcjogQVhDb2xvckZvcm1hdCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRpbnljb2xvci5yZWFkYWJpbGl0eSgnI2ZmZicsIGNvbG9yKTtcbiAgfVxuXG4gIHN0YXRpYyBsaWdodGVuKGhleDogQVhDb2xvckZvcm1hdCwgcGVyY2VudGFnZT86IG51bWJlcikge1xuICAgIHJldHVybiB0aW55Y29sb3IoaGV4KS5saWdodGVuKHBlcmNlbnRhZ2UpO1xuICB9XG5cbiAgc3RhdGljIGRhcmtlbihoZXg6IEFYQ29sb3JGb3JtYXQsIHBlcmNlbnRhZ2U/OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGlueWNvbG9yKGhleCkuZGFya2VuKHBlcmNlbnRhZ2UpO1xuICB9XG5cbiAgc3RhdGljIGJyaWdodGVuKGhleDogQVhDb2xvckZvcm1hdCwgcGVyY2VudGFnZT86IG51bWJlcikge1xuICAgIHJldHVybiB0aW55Y29sb3IoaGV4KS5icmlnaHRlbihwZXJjZW50YWdlKTtcbiAgfVxuXG4gIHN0YXRpYyBzYXR1cmF0ZShoZXg6IEFYQ29sb3JGb3JtYXQsIHBlcmNlbnRhZ2U/OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGlueWNvbG9yKGhleCkuc2F0dXJhdGUocGVyY2VudGFnZSk7XG4gIH1cblxuICBzdGF0aWMgZGVzYXR1cmF0ZShoZXg6IEFYQ29sb3JGb3JtYXQpIHtcbiAgICByZXR1cm4gdGlueWNvbG9yKGhleCkuZ2V0THVtaW5hbmNlKCk7XG4gIH1cblxuICBzdGF0aWMgZXF1YWwoY29sb3IxOiBBWENvbG9yRm9ybWF0LCBjb2xvcjI6IEFYQ29sb3JGb3JtYXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGlueWNvbG9yLmVxdWFscyhjb2xvcjEsIGNvbG9yMik7XG4gIH1cblxuICBzdGF0aWMgZ3JhZGllbnQoXG4gICAgdmFsdWVzOiB1bmtub3duW10gfCB7IGNvbG9yOiB1bmtub3duOyBwb3M6IG51bWJlciB9W11cbiAgKTogSW5zdGFuY2Uge1xuICAgIHJldHVybiB0aW55Z3JhZGllbnQoWy4uLnZhbHVlc10pO1xuICB9XG5cbiAgc3RhdGljIGdldEx1bWluYW5jZShoZXg6IEFYQ29sb3JGb3JtYXQpIHtcbiAgICByZXR1cm4gdGlueWNvbG9yKGhleCkuZ2V0THVtaW5hbmNlKCk7XG4gIH1cblxuICBzdGF0aWMgeHlUb1JnYih2WCwgdlkpOiBzdHJpbmcge1xuICAgIHZZID0gdlkgfHwgMC4wMDAwMDAwMDAwMTtcbiAgICBjb25zdCBZID0gMTtcbiAgICBjb25zdCBYID0gKFkgLyB2WSkgKiB2WDtcbiAgICBjb25zdCBaID0gKFkgLyB2WSkgKiAoMSAtIHZYIC0gdlkpO1xuXG4gICAgLy8gQ29udmVydCB0byBSR0IgdXNpbmcgV2lkZSBSR0IgRDY1IGNvbnZlcnNpb24uXG4gICAgbGV0IHJnYiA9IFtcbiAgICAgIFggKiAxLjY1NjQ5MiAtIFkgKiAwLjM1NDg1MSAtIFogKiAwLjI1NTAzOCxcbiAgICAgIC1YICogMC43MDcxOTYgKyBZICogMS42NTUzOTcgKyBaICogMC4wMzYxNTIsXG4gICAgICBYICogMC4wNTE3MTMgLSBZICogMC4xMjEzNjQgKyBaICogMS4wMTE1MyxcbiAgICBdO1xuXG4gICAgLy8gQXBwbHkgcmV2ZXJzZSBnYW1tYSBjb3JyZWN0aW9uLlxuICAgIHJnYiA9IHJnYi5tYXAoKHgpID0+XG4gICAgICB4IDw9IDAuMDAzMTMwOFxuICAgICAgICA/IDEyLjkyICogeFxuICAgICAgICA6ICgxLjAgKyAwLjA1NSkgKiBNYXRoLnBvdyh4LCAxLjAgLyAyLjQpIC0gMC4wNTVcbiAgICApO1xuXG4gICAgLy8gQnJpbmcgYWxsIG5lZ2F0aXZlIGNvbXBvbmVudHMgdG8gemVyby5cbiAgICByZ2IgPSByZ2IubWFwKCh4KSA9PiBNYXRoLm1heCgwLCB4KSk7XG5cbiAgICAvLyBJZiBvbmUgY29tcG9uZW50IGlzIGdyZWF0ZXIgdGhhbiAxLCB3ZWlnaHQgY29tcG9uZW50cyBieSB0aGF0IHZhbHVlLlxuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnJnYik7XG4gICAgaWYgKG1heCA+IDEpIHtcbiAgICAgIHJnYiA9IHJnYi5tYXAoKHgpID0+IHggLyBtYXgpO1xuICAgIH1cblxuICAgIHJnYiA9IHJnYi5tYXAoKHgpID0+IE1hdGgucm91bmQoeCAqIDI1NSkpO1xuXG4gICAgcmV0dXJuICdyZ2IoJyArIHJnYi5qb2luKCcsJykgKyAnKSc7XG4gIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,35 @@
|
|
1
|
+
// @dynamic
|
2
|
+
export class AXDrawingUtil {
|
3
|
+
static collision(a, b) {
|
4
|
+
const ac = a.getBoundingClientRect();
|
5
|
+
const bc = b.getBoundingClientRect();
|
6
|
+
if (ac.left < bc.left + bc.width &&
|
7
|
+
ac.left + ac.width > bc.left &&
|
8
|
+
ac.top < bc.top + bc.height &&
|
9
|
+
ac.top + ac.height > bc.top) {
|
10
|
+
return true;
|
11
|
+
}
|
12
|
+
else {
|
13
|
+
return false;
|
14
|
+
}
|
15
|
+
}
|
16
|
+
static isInElementBound(pos, element) {
|
17
|
+
const elBound = element.getBoundingClientRect();
|
18
|
+
return AXDrawingUtil.isInRecPoint(pos, {
|
19
|
+
left: elBound.x,
|
20
|
+
width: elBound.width,
|
21
|
+
top: elBound.y,
|
22
|
+
height: elBound.height,
|
23
|
+
});
|
24
|
+
}
|
25
|
+
static isInRecPoint(pos, rec) {
|
26
|
+
return (pos.x >= rec.left &&
|
27
|
+
pos.x <= rec.left + rec.width &&
|
28
|
+
pos.y >= rec.top &&
|
29
|
+
pos.y <= rec.top + rec.height);
|
30
|
+
}
|
31
|
+
static convertRemToPixels(rem) {
|
32
|
+
return (rem * parseFloat(getComputedStyle(document.documentElement).fontSize));
|
33
|
+
}
|
34
|
+
}
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2luZy11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3V0aWxzL3NyYy9saWIvZHJhd2luZy11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLFdBQVc7QUFDWCxNQUFNLE9BQU8sYUFBYTtJQUN4QixNQUFNLENBQUMsU0FBUyxDQUFDLENBQWMsRUFBRSxDQUFjO1FBQzdDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRXJDLElBQ0UsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLO1lBQzVCLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSTtZQUM1QixFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU07WUFDM0IsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQzNCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFZLEVBQUUsT0FBb0I7UUFDeEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDaEQsT0FBTyxhQUFhLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDZixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2QsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQVksRUFBRSxHQUErQjtRQUMvRCxPQUFPLENBQ0wsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSTtZQUNqQixHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUs7WUFDN0IsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRztZQUNoQixHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBVztRQUNuQyxPQUFPLENBQ0wsR0FBRyxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQ3RFLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEFYUG9pbnQge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWEJvdW5kaW5nQ2xpZW50UmVjdCB7XG4gIGxlZnQ/OiBudW1iZXI7XG4gIHRvcD86IG51bWJlcjtcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgYm90dG9tPzogbnVtYmVyO1xuICByaWdodD86IG51bWJlcjtcbn1cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgQVhEcmF3aW5nVXRpbCB7XG4gIHN0YXRpYyBjb2xsaXNpb24oYTogSFRNTEVsZW1lbnQsIGI6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgYWMgPSBhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGJjID0gYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGlmIChcbiAgICAgIGFjLmxlZnQgPCBiYy5sZWZ0ICsgYmMud2lkdGggJiZcbiAgICAgIGFjLmxlZnQgKyBhYy53aWR0aCA+IGJjLmxlZnQgJiZcbiAgICAgIGFjLnRvcCA8IGJjLnRvcCArIGJjLmhlaWdodCAmJlxuICAgICAgYWMudG9wICsgYWMuaGVpZ2h0ID4gYmMudG9wXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpc0luRWxlbWVudEJvdW5kKHBvczogQVhQb2ludCwgZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbEJvdW5kID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gQVhEcmF3aW5nVXRpbC5pc0luUmVjUG9pbnQocG9zLCB7XG4gICAgICBsZWZ0OiBlbEJvdW5kLngsXG4gICAgICB3aWR0aDogZWxCb3VuZC53aWR0aCxcbiAgICAgIHRvcDogZWxCb3VuZC55LFxuICAgICAgaGVpZ2h0OiBlbEJvdW5kLmhlaWdodCxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBpc0luUmVjUG9pbnQocG9zOiBBWFBvaW50LCByZWM6IEFYQm91bmRpbmdDbGllbnRSZWN0IHwgYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHBvcy54ID49IHJlYy5sZWZ0ICYmXG4gICAgICBwb3MueCA8PSByZWMubGVmdCArIHJlYy53aWR0aCAmJlxuICAgICAgcG9zLnkgPj0gcmVjLnRvcCAmJlxuICAgICAgcG9zLnkgPD0gcmVjLnRvcCArIHJlYy5oZWlnaHRcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRSZW1Ub1BpeGVscyhyZW06IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHJlbSAqIHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmZvbnRTaXplKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,39 @@
|
|
1
|
+
// @dynamic
|
2
|
+
export class AXHtmlUtil {
|
3
|
+
static focusElement(element) {
|
4
|
+
const list = [
|
5
|
+
'button',
|
6
|
+
'input',
|
7
|
+
'[href]',
|
8
|
+
'select',
|
9
|
+
'textarea',
|
10
|
+
'[tabindex]',
|
11
|
+
].map((c) => c + ':not([tabindex="-1"])');
|
12
|
+
const focusable = element.querySelector(list.join(', '));
|
13
|
+
if (focusable) {
|
14
|
+
focusable.focus();
|
15
|
+
return focusable;
|
16
|
+
}
|
17
|
+
return null;
|
18
|
+
}
|
19
|
+
static blurElement(element) {
|
20
|
+
const list = [
|
21
|
+
'button',
|
22
|
+
'input',
|
23
|
+
'[href]',
|
24
|
+
'select',
|
25
|
+
'textarea',
|
26
|
+
'[tabindex]',
|
27
|
+
].map((c) => c + ':not([tabindex="-1"])');
|
28
|
+
const focusable = element.querySelector(list.join(', '));
|
29
|
+
if (focusable) {
|
30
|
+
focusable.blur();
|
31
|
+
return focusable;
|
32
|
+
}
|
33
|
+
return null;
|
34
|
+
}
|
35
|
+
static hasFocus(element) {
|
36
|
+
return element.matches(':focus-within') || element.matches(':focus');
|
37
|
+
}
|
38
|
+
}
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3V0aWxzL3NyYy9saWIvaHRtbC11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVc7QUFDWCxNQUFNLE9BQU8sVUFBVTtJQUNyQixNQUFNLENBQUMsWUFBWSxDQUFDLE9BQW9CO1FBQ3RDLE1BQU0sSUFBSSxHQUFHO1lBQ1gsUUFBUTtZQUNSLE9BQU87WUFDUCxRQUFRO1lBQ1IsUUFBUTtZQUNSLFVBQVU7WUFDVixZQUFZO1NBQ2IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBb0I7UUFDckMsTUFBTSxJQUFJLEdBQUc7WUFDWCxRQUFRO1lBQ1IsT0FBTztZQUNQLFFBQVE7WUFDUixRQUFRO1lBQ1IsVUFBVTtZQUNWLFlBQVk7U0FDYixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLENBQUM7UUFDMUMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFvQjtRQUNsQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIEFYSHRtbFV0aWwge1xuICBzdGF0aWMgZm9jdXNFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGxpc3QgPSBbXG4gICAgICAnYnV0dG9uJyxcbiAgICAgICdpbnB1dCcsXG4gICAgICAnW2hyZWZdJyxcbiAgICAgICdzZWxlY3QnLFxuICAgICAgJ3RleHRhcmVhJyxcbiAgICAgICdbdGFiaW5kZXhdJyxcbiAgICBdLm1hcCgoYykgPT4gYyArICc6bm90KFt0YWJpbmRleD1cIi0xXCJdKScpO1xuICAgIGNvbnN0IGZvY3VzYWJsZSA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4obGlzdC5qb2luKCcsICcpKTtcbiAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICBmb2N1c2FibGUuZm9jdXMoKTtcbiAgICAgIHJldHVybiBmb2N1c2FibGU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHN0YXRpYyBibHVyRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBsaXN0ID0gW1xuICAgICAgJ2J1dHRvbicsXG4gICAgICAnaW5wdXQnLFxuICAgICAgJ1tocmVmXScsXG4gICAgICAnc2VsZWN0JyxcbiAgICAgICd0ZXh0YXJlYScsXG4gICAgICAnW3RhYmluZGV4XScsXG4gICAgXS5tYXAoKGMpID0+IGMgKyAnOm5vdChbdGFiaW5kZXg9XCItMVwiXSknKTtcbiAgICBjb25zdCBmb2N1c2FibGUgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KGxpc3Quam9pbignLCAnKSk7XG4gICAgaWYgKGZvY3VzYWJsZSkge1xuICAgICAgZm9jdXNhYmxlLmJsdXIoKTtcbiAgICAgIHJldHVybiBmb2N1c2FibGU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIGhhc0ZvY3VzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlcygnOmZvY3VzLXdpdGhpbicpIHx8IGVsZW1lbnQubWF0Y2hlcygnOmZvY3VzJyk7XG4gIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,19 @@
|
|
1
|
+
// @dynamic
|
2
|
+
export class AXStringUtil {
|
3
|
+
static getWordBoundsAtPosition(str, position) {
|
4
|
+
const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);
|
5
|
+
let start = position - 1;
|
6
|
+
while (start >= 0 && !isSpace(str[start])) {
|
7
|
+
start -= 1;
|
8
|
+
}
|
9
|
+
start = Math.max(0, start + 1);
|
10
|
+
const leftSideString = str.slice(start).match(/[a-zA-Z0-9]+/i);
|
11
|
+
start += leftSideString.index;
|
12
|
+
let end = start + leftSideString[0].length;
|
13
|
+
return {
|
14
|
+
start,
|
15
|
+
end,
|
16
|
+
};
|
17
|
+
}
|
18
|
+
}
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdXRpbHMvc3JjL2xpYi9zdHJpbmctdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxXQUFXO0FBQ1gsTUFBTSxPQUFPLFlBQVk7SUFDdkIsTUFBTSxDQUFDLHVCQUF1QixDQUM1QixHQUFXLEVBQ1gsUUFBZ0I7UUFFaEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxJQUFJLEtBQUssR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRXpCLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFDLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDYixDQUFDO1FBQ0QsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvQixNQUFNLGNBQWMsR0FBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwRSxLQUFLLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQztRQUM5QixJQUFJLEdBQUcsR0FBRyxLQUFLLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMzQyxPQUFPO1lBQ0wsS0FBSztZQUNMLEdBQUc7U0FDSixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBBWFN0cmluZ1V0aWwge1xuICBzdGF0aWMgZ2V0V29yZEJvdW5kc0F0UG9zaXRpb24oXG4gICAgc3RyOiBzdHJpbmcsXG4gICAgcG9zaXRpb246IG51bWJlclxuICApOiB7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0ge1xuICAgIGNvbnN0IGlzU3BhY2UgPSAoYykgPT4gL1teYS16QS1aMC05XSsvaS50ZXN0KGMpO1xuICAgIGxldCBzdGFydCA9IHBvc2l0aW9uIC0gMTtcblxuICAgIHdoaWxlIChzdGFydCA+PSAwICYmICFpc1NwYWNlKHN0cltzdGFydF0pKSB7XG4gICAgICBzdGFydCAtPSAxO1xuICAgIH1cbiAgICBzdGFydCA9IE1hdGgubWF4KDAsIHN0YXJ0ICsgMSk7XG4gICAgY29uc3QgbGVmdFNpZGVTdHJpbmc6IGFueSA9IHN0ci5zbGljZShzdGFydCkubWF0Y2goL1thLXpBLVowLTldKy9pKTtcbiAgICBzdGFydCArPSBsZWZ0U2lkZVN0cmluZy5pbmRleDtcbiAgICBsZXQgZW5kID0gc3RhcnQgKyBsZWZ0U2lkZVN0cmluZ1swXS5sZW5ndGg7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0LFxuICAgICAgZW5kLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
export * from './index';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtdmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9hY29yZXgtY29yZS12YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
@@ -0,0 +1,18 @@
|
|
1
|
+
export * from './lib/rules/callback-rule';
|
2
|
+
export * from './lib/rules/regex-rule';
|
3
|
+
export * from './lib/rules/required-rule';
|
4
|
+
//
|
5
|
+
export * from './lib/rules/length-rule';
|
6
|
+
export * from './lib/rules/maxlength-rule';
|
7
|
+
export * from './lib/rules/minlength-rule';
|
8
|
+
//
|
9
|
+
export * from './lib/rules/between-rule';
|
10
|
+
export * from './lib/rules/equal-rule';
|
11
|
+
export * from './lib/rules/greater-than';
|
12
|
+
export * from './lib/rules/less-than-rule';
|
13
|
+
//
|
14
|
+
export * from './lib/validation.config';
|
15
|
+
export * from './lib/validation.module';
|
16
|
+
export * from './lib/validation.service';
|
17
|
+
export * from './lib/validation.types';
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsRUFBRTtBQUNGLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLEVBQUU7QUFDRixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLEVBQUU7QUFDRixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvcnVsZXMvY2FsbGJhY2stcnVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydWxlcy9yZWdleC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL3JlcXVpcmVkLXJ1bGUnO1xuLy9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL2xlbmd0aC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL21heGxlbmd0aC1ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bGVzL21pbmxlbmd0aC1ydWxlJztcbi8vXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydWxlcy9iZXR3ZWVuLXJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcnVsZXMvZXF1YWwtcnVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydWxlcy9ncmVhdGVyLXRoYW4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcnVsZXMvbGVzcy10aGFuLXJ1bGUnO1xuLy9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRpb24uY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRpb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92YWxpZGF0aW9uLnR5cGVzJztcbiJdfQ==
|