@acorex/core 7.0.40 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dateTime/src/datetime.class.d.ts +1 -1
  2. package/esm2022/config/src/configs.mjs +24 -0
  3. package/esm2022/dateTime/src/datetime.class.mjs +295 -0
  4. package/{esm2020 → esm2022}/dateTime/src/datetime.module.mjs +5 -5
  5. package/{esm2020 → esm2022}/dateTime/src/datetime.pipe.mjs +4 -4
  6. package/esm2022/dateTime/src/georgian.calendar.mjs +187 -0
  7. package/esm2022/dateTime/src/jalali.calendar.mjs +357 -0
  8. package/esm2022/events/src/event.service.mjs +34 -0
  9. package/esm2022/file/src/file-download-ref.class.mjs +13 -0
  10. package/esm2022/file/src/file-download-result.class.mjs +47 -0
  11. package/esm2022/file/src/file-upload-ref.class.mjs +13 -0
  12. package/esm2022/file/src/file.service.mjs +102 -0
  13. package/esm2022/http/src/http-result.class.mjs +25 -0
  14. package/{esm2020 → esm2022}/http/src/http.module.mjs +9 -9
  15. package/esm2022/http/src/http.service.mjs +151 -0
  16. package/{esm2020 → esm2022}/image/src/image.service.mjs +4 -4
  17. package/{esm2020 → esm2022}/pipes/src/pipes.module.mjs +5 -5
  18. package/esm2022/pipes/src/safe.pipe.mjs +31 -0
  19. package/esm2022/platform/src/platform.service.mjs +159 -0
  20. package/{esm2020 → esm2022}/translation/src/translation.module.mjs +5 -5
  21. package/esm2022/translation/src/translator.mjs +43 -0
  22. package/{esm2020 → esm2022}/translation/src/translator.pipe.mjs +4 -4
  23. package/{fesm2015 → fesm2022}/acorex-core-config.mjs +3 -4
  24. package/{fesm2015 → fesm2022}/acorex-core-config.mjs.map +1 -1
  25. package/{fesm2015 → fesm2022}/acorex-core-dateTime.mjs +88 -86
  26. package/{fesm2015 → fesm2022}/acorex-core-dateTime.mjs.map +1 -1
  27. package/{fesm2020 → fesm2022}/acorex-core-events.mjs +4 -7
  28. package/fesm2022/acorex-core-events.mjs.map +1 -0
  29. package/{fesm2020 → fesm2022}/acorex-core-file.mjs +15 -12
  30. package/{fesm2020 → fesm2022}/acorex-core-file.mjs.map +1 -1
  31. package/{fesm2020 → fesm2022}/acorex-core-http.mjs +18 -12
  32. package/{fesm2015 → fesm2022}/acorex-core-http.mjs.map +1 -1
  33. package/{fesm2020 → fesm2022}/acorex-core-image.mjs +3 -4
  34. package/{fesm2020 → fesm2022}/acorex-core-image.mjs.map +1 -1
  35. package/{fesm2015 → fesm2022}/acorex-core-pipes.mjs +8 -8
  36. package/{fesm2015 → fesm2022}/acorex-core-pipes.mjs.map +1 -1
  37. package/{fesm2020 → fesm2022}/acorex-core-platform.mjs +39 -34
  38. package/fesm2022/acorex-core-platform.mjs.map +1 -0
  39. package/{fesm2020 → fesm2022}/acorex-core-translation.mjs +12 -13
  40. package/{fesm2020 → fesm2022}/acorex-core-translation.mjs.map +1 -1
  41. package/{fesm2020 → fesm2022}/acorex-core-utils.mjs +0 -1
  42. package/{fesm2015 → fesm2022}/acorex-core.mjs +0 -1
  43. package/package.json +42 -68
  44. package/platform/src/platform.service.d.ts +4 -4
  45. package/utils/src/color-util.d.ts +2 -2
  46. package/esm2020/config/src/configs.mjs +0 -24
  47. package/esm2020/dateTime/src/datetime.class.mjs +0 -288
  48. package/esm2020/dateTime/src/georgian.calendar.mjs +0 -189
  49. package/esm2020/dateTime/src/jalali.calendar.mjs +0 -359
  50. package/esm2020/events/src/event.service.mjs +0 -36
  51. package/esm2020/file/src/file-download-ref.class.mjs +0 -12
  52. package/esm2020/file/src/file-download-result.class.mjs +0 -46
  53. package/esm2020/file/src/file-upload-ref.class.mjs +0 -12
  54. package/esm2020/file/src/file.service.mjs +0 -101
  55. package/esm2020/http/src/http-result.class.mjs +0 -21
  56. package/esm2020/http/src/http.service.mjs +0 -148
  57. package/esm2020/pipes/src/safe.pipe.mjs +0 -30
  58. package/esm2020/platform/src/platform.service.mjs +0 -153
  59. package/esm2020/translation/src/translator.mjs +0 -43
  60. package/fesm2015/acorex-core-events.mjs +0 -44
  61. package/fesm2015/acorex-core-events.mjs.map +0 -1
  62. package/fesm2015/acorex-core-file.mjs +0 -176
  63. package/fesm2015/acorex-core-file.mjs.map +0 -1
  64. package/fesm2015/acorex-core-http.mjs +0 -203
  65. package/fesm2015/acorex-core-image.mjs +0 -54
  66. package/fesm2015/acorex-core-image.mjs.map +0 -1
  67. package/fesm2015/acorex-core-platform.mjs +0 -161
  68. package/fesm2015/acorex-core-platform.mjs.map +0 -1
  69. package/fesm2015/acorex-core-translation.mjs +0 -81
  70. package/fesm2015/acorex-core-translation.mjs.map +0 -1
  71. package/fesm2015/acorex-core-utils.mjs +0 -227
  72. package/fesm2020/acorex-core-config.mjs +0 -32
  73. package/fesm2020/acorex-core-config.mjs.map +0 -1
  74. package/fesm2020/acorex-core-dateTime.mjs +0 -899
  75. package/fesm2020/acorex-core-dateTime.mjs.map +0 -1
  76. package/fesm2020/acorex-core-events.mjs.map +0 -1
  77. package/fesm2020/acorex-core-http.mjs.map +0 -1
  78. package/fesm2020/acorex-core-pipes.mjs +0 -54
  79. package/fesm2020/acorex-core-pipes.mjs.map +0 -1
  80. package/fesm2020/acorex-core-platform.mjs.map +0 -1
  81. package/fesm2020/acorex-core-utils.mjs.map +0 -1
  82. package/fesm2020/acorex-core.mjs +0 -12
  83. package/fesm2020/acorex-core.mjs.map +0 -1
  84. /package/{esm2020 → esm2022}/acorex-core.mjs +0 -0
  85. /package/{esm2020 → esm2022}/config/acorex-core-config.mjs +0 -0
  86. /package/{esm2020 → esm2022}/config/public-api.mjs +0 -0
  87. /package/{esm2020 → esm2022}/dateTime/acorex-core-dateTime.mjs +0 -0
  88. /package/{esm2020 → esm2022}/dateTime/public-api.mjs +0 -0
  89. /package/{esm2020 → esm2022}/events/acorex-core-events.mjs +0 -0
  90. /package/{esm2020 → esm2022}/events/public-api.mjs +0 -0
  91. /package/{esm2020 → esm2022}/file/acorex-core-file.mjs +0 -0
  92. /package/{esm2020 → esm2022}/file/public-api.mjs +0 -0
  93. /package/{esm2020 → esm2022}/http/acorex-core-http.mjs +0 -0
  94. /package/{esm2020 → esm2022}/http/public-api.mjs +0 -0
  95. /package/{esm2020 → esm2022}/http/src/http-error.class.mjs +0 -0
  96. /package/{esm2020 → esm2022}/http/src/http-events.interceptor.mjs +0 -0
  97. /package/{esm2020 → esm2022}/http/src/http-request.class.mjs +0 -0
  98. /package/{esm2020 → esm2022}/image/acorex-core-image.mjs +0 -0
  99. /package/{esm2020 → esm2022}/image/public-api.mjs +0 -0
  100. /package/{esm2020 → esm2022}/pipes/acorex-core-pipes.mjs +0 -0
  101. /package/{esm2020 → esm2022}/pipes/public-api.mjs +0 -0
  102. /package/{esm2020 → esm2022}/platform/acorex-core-platform.mjs +0 -0
  103. /package/{esm2020 → esm2022}/platform/public-api.mjs +0 -0
  104. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  105. /package/{esm2020 → esm2022}/translation/acorex-core-translation.mjs +0 -0
  106. /package/{esm2020 → esm2022}/translation/public-api.mjs +0 -0
  107. /package/{esm2020 → esm2022}/utils/acorex-core-utils.mjs +0 -0
  108. /package/{esm2020 → esm2022}/utils/public-api.mjs +0 -0
  109. /package/{esm2020 → esm2022}/utils/src/color-util.mjs +0 -0
  110. /package/{esm2020 → esm2022}/utils/src/drawing-util.mjs +0 -0
  111. /package/{esm2020 → esm2022}/utils/src/html-util.mjs +0 -0
  112. /package/{esm2020 → esm2022}/utils/src/object-util.mjs +0 -0
  113. /package/{esm2020 → esm2022}/utils/src/string-util.mjs +0 -0
  114. /package/{fesm2015 → fesm2022}/acorex-core-utils.mjs.map +0 -0
  115. /package/{fesm2015 → fesm2022}/acorex-core.mjs.map +0 -0
@@ -0,0 +1,159 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { fromEvent, Subject } from 'rxjs';
3
+ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ const isChrome = (win) => testUserAgent(win, /Chrome/i);
6
+ const isFirefox = (win) => testUserAgent(win, /Firefox/i);
7
+ const isEdge = (win) => testUserAgent(win, /Edge/i);
8
+ const isSafari = (win) => testUserAgent(win, /Safari/i);
9
+ const isOpera = (win) => testUserAgent(win, /Opera/i) || testUserAgent(win, /OPR/i);
10
+ const isMSIE = (win) => testUserAgent(win, /MSIE/i) || testUserAgent(win, /Trident/i);
11
+ const isMobileWeb = (win) => isMobile(win) && !isHybrid(win);
12
+ const isIpad = (win) => {
13
+ // iOS 12 and below
14
+ if (testUserAgent(win, /iPad/i)) {
15
+ return true;
16
+ }
17
+ // iOS 13+
18
+ if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {
19
+ return true;
20
+ }
21
+ return false;
22
+ };
23
+ const isIphone = (win) => testUserAgent(win, /iPhone/i);
24
+ const isIOS = (win) => testUserAgent(win, /iPhone|iPod/i) || isIpad(win);
25
+ const isAndroid = (win) => testUserAgent(win, /android|sink/i);
26
+ const isAndroidTablet = (win) => {
27
+ return isAndroid(win) && !testUserAgent(win, /mobile/i);
28
+ };
29
+ const isPhablet = (win) => {
30
+ const width = win.innerWidth;
31
+ const height = win.innerHeight;
32
+ const smallest = Math.min(width, height);
33
+ const largest = Math.max(width, height);
34
+ return smallest > 390 && smallest < 520 && largest > 620 && largest < 800;
35
+ };
36
+ const isTablet = (win) => {
37
+ const width = win.innerWidth;
38
+ const height = win.innerHeight;
39
+ const smallest = Math.min(width, height);
40
+ const largest = Math.max(width, height);
41
+ return (isIpad(win) ||
42
+ isAndroidTablet(win) ||
43
+ (smallest > 460 && smallest < 820 && largest > 780 && largest < 1400));
44
+ };
45
+ const isMobile = (win) => matchMedia(win, '(any-pointer:coarse)');
46
+ const isTouch = (win) => matchMedia(win, '(any-pointer:coarse)');
47
+ const isDesktop = (win) => !isMobile(win);
48
+ const isHybrid = (win) => isCordova(win) || isCapacitorNative(win);
49
+ const isCordova = (win) => !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);
50
+ const isCapacitorNative = (win) => {
51
+ const capacitor = win['Capacitor'];
52
+ return !!(capacitor && capacitor.isNative);
53
+ };
54
+ const isElectron = (win) => testUserAgent(win, /electron/i);
55
+ const isPWA = (win) => !!(win.matchMedia('(display-mode: standalone)').matches ||
56
+ win.navigator.standalone);
57
+ export const testUserAgent = (win, expr) => expr.test(win.navigator.userAgent);
58
+ const matchMedia = (win, query) => win.matchMedia(query).matches;
59
+ const isSMScreen = (win) => matchMedia(win, '(max-width: 640px)');
60
+ const isMDScreen = (win) => matchMedia(win, '(max-width: 768px)');
61
+ const isLGScreen = (win) => matchMedia(win, '(max-width: 1024px)');
62
+ const isXLScreen = (win) => matchMedia(win, '(max-width: 1280px)');
63
+ const is2XLScreen = (win) => matchMedia(win, '(max-width: 1536px)');
64
+ const PLATFORMS_MAP = {
65
+ Android: isAndroid,
66
+ iOS: isIOS,
67
+ Desktop: isDesktop,
68
+ Mobile: isMobile,
69
+ Touch: isTouch,
70
+ Chrome: isChrome,
71
+ Firefox: isFirefox,
72
+ Safari: isSafari,
73
+ Edge: isEdge,
74
+ Opera: isOpera,
75
+ Hybrid: isHybrid,
76
+ PWA: isPWA,
77
+ Electron: isElectron,
78
+ SM: isSMScreen,
79
+ MD: isMDScreen,
80
+ LG: isLGScreen,
81
+ XL: isXLScreen,
82
+ "2XL": is2XLScreen,
83
+ };
84
+ export class AXPlatformEvent {
85
+ nativeEvent;
86
+ source;
87
+ }
88
+ export class AXPlatform {
89
+ resize = new Subject();
90
+ click = new Subject();
91
+ scroll = new Subject();
92
+ isRtl() {
93
+ return (document.dir == 'rtl' ||
94
+ document.body.dir == 'rtl' ||
95
+ document.body.style.direction == 'rtl');
96
+ }
97
+ isLandscape() {
98
+ return window.innerHeight < window.innerWidth;
99
+ }
100
+ isPortrate() {
101
+ return !this.isLandscape();
102
+ }
103
+ is(name) {
104
+ return PLATFORMS_MAP[name](window) || false;
105
+ }
106
+ switchDarkMode() {
107
+ const _html = document.getElementsByTagName('html')[0];
108
+ _html.classList.add('ax-dark');
109
+ }
110
+ switchLightMode() {
111
+ const _html = document.getElementsByTagName('html')[0];
112
+ _html.classList.remove('ax-dark');
113
+ }
114
+ _setFullHeightRatio() {
115
+ try {
116
+ document
117
+ .querySelector(':root')
118
+ ?.style.setProperty('--ax-vh', window.innerHeight / 100 + 'px');
119
+ }
120
+ catch (error) {
121
+ }
122
+ }
123
+ constructor() {
124
+ fromEvent(window, 'resize')
125
+ .pipe(debounceTime(100))
126
+ .pipe(distinctUntilChanged())
127
+ .subscribe((e) => {
128
+ this.resize.next({
129
+ nativeEvent: e,
130
+ source: this,
131
+ });
132
+ //
133
+ this._setFullHeightRatio();
134
+ });
135
+ document.addEventListener('click', (e) => {
136
+ this.click.next({
137
+ nativeEvent: e,
138
+ source: this,
139
+ });
140
+ }, true);
141
+ document.addEventListener('scroll', (e) => {
142
+ this.scroll.next({
143
+ nativeEvent: e,
144
+ source: this,
145
+ });
146
+ }, true);
147
+ // init functions
148
+ this._setFullHeightRatio();
149
+ }
150
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXPlatform, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
151
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXPlatform, providedIn: 'root' });
152
+ }
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXPlatform, decorators: [{
154
+ type: Injectable,
155
+ args: [{
156
+ providedIn: 'root',
157
+ }]
158
+ }], ctorParameters: function () { return []; } });
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3BsYXRmb3JtL3NyYy9wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWNwRSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUV6RSxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUUzRSxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUVyRSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUV6RSxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQ3ZDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQUksYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUU3RCxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQ3RDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLElBQUksYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUVoRSxNQUFNLFdBQVcsR0FBRyxDQUFDLEdB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QUM7SUFFRDtRQUNFLFNBQVMsQ0FBVSxNQUFNLEVBQUUsUUFBUSxDQUFDO2FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDdkIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDNUIsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDZixXQUFXLEVBQUUsQ0FBQztnQkFDZCxNQUFNLEVBQUUsSUFBSTthQUNiLENBQUMsQ0FBQztZQUNILEVBQUU7WUFDRixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVMLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDdkIsT0FBTyxFQUNQLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDZCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxNQUFNLEVBQUUsSUFBSTthQUNiLENBQUMsQ0FBQztRQUNMLENBQUMsRUFDRCxJQUFJLENBQ0wsQ0FBQztRQUVGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDdkIsUUFBUSxFQUNSLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDZixXQUFXLEVBQUUsQ0FBQztnQkFDZCxNQUFNLEVBQUUsSUFBSTthQUNiLENBQUMsQ0FBQztRQUNMLENBQUMsRUFDRCxJQUFJLENBQ0wsQ0FBQztRQUNGLGlCQUFpQjtRQUNqQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO3VHQWhGVSxVQUFVOzJHQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgdHlwZSBBWFBsYXRmb3JtcyA9ICdBbmRyb2lkJyB8ICdEZXNrdG9wJyB8ICdpT1MnIHwgJ01vYmlsZSc7XHJcbmV4cG9ydCB0eXBlIEFYQnJvd3NlcnMgPVxyXG4gIHwgJ0Nocm9tZSdcclxuICB8ICdTYWZhcmknXHJcbiAgfCAnRWRnZSdcclxuICB8ICdGaXJlZm94J1xyXG4gIHwgJ09wZXJhJ1xyXG4gIHwgJ01TSUUnO1xyXG5leHBvcnQgdHlwZSBBWFRlY2hub2xvZ2llcyA9ICdQV0EnIHwgJ0h5YnJpZCcgfCAnRWxlY3Ryb24nO1xyXG5cclxuZXhwb3J0IHR5cGUgQVhTY3JlZW5TaXplcyA9ICdTTScgfCAnTUQnIHwgJ0xHJyB8ICdYTCcgfCAnMlhMJztcclxuXHJcbmNvbnN0IGlzQ2hyb21lID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL0Nocm9tZS9pKTtcclxuXHJcbmNvbnN0IGlzRmlyZWZveCA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9GaXJlZm94L2kpO1xyXG5cclxuY29uc3QgaXNFZGdlID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL0VkZ2UvaSk7XHJcblxyXG5jb25zdCBpc1NhZmFyaSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9TYWZhcmkvaSk7XHJcblxyXG5jb25zdCBpc09wZXJhID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PlxyXG4gIHRlc3RVc2VyQWdlbnQod2luLCAvT3BlcmEvaSkgfHwgdGVzdFVzZXJBZ2VudCh3aW4sIC9PUFIvaSk7XHJcblxyXG5jb25zdCBpc01TSUUgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+XHJcbiAgdGVzdFVzZXJBZ2VudCh3aW4sIC9NU0lFL2kpIHx8IHRlc3RVc2VyQWdlbnQod2luLCAvVHJpZGVudC9pKTtcclxuXHJcbmNvbnN0IGlzTW9iaWxlV2ViID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiBpc01vYmlsZSh3aW4pICYmICFpc0h5YnJpZCh3aW4pO1xyXG5cclxuY29uc3QgaXNJcGFkID0gKHdpbjogV2luZG93KSA9PiB7XHJcbiAgLy8gaU9TIDEyIGFuZCBiZWxvd1xyXG4gIGlmICh0ZXN0VXNlckFnZW50KHdpbiwgL2lQYWQvaSkpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gaU9TIDEzK1xyXG4gIGlmICh0ZXN0VXNlckFnZW50KHdpbiwgL01hY2ludG9zaC9pKSAmJiBpc01vYmlsZSh3aW4pKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHJldHVybiBmYWxzZTtcclxufTtcclxuXHJcbmNvbnN0IGlzSXBob25lID0gKHdpbjogV2luZG93KSA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL2lQaG9uZS9pKTtcclxuXHJcbmNvbnN0IGlzSU9TID0gKHdpbjogV2luZG93KSA9PlxyXG4gIHRlc3RVc2VyQWdlbnQod2luLCAvaVBob25lfGlQb2QvaSkgfHwgaXNJcGFkKHdpbik7XHJcblxyXG5jb25zdCBpc0FuZHJvaWQgPSAod2luOiBXaW5kb3cpID0+IHRlc3RVc2VyQWdlbnQod2luLCAvYW5kcm9pZHxzaW5rL2kpO1xyXG5cclxuY29uc3QgaXNBbmRyb2lkVGFibGV0ID0gKHdpbjogV2luZG93KSA9PiB7XHJcbiAgcmV0dXJuIGlzQW5kcm9pZCh3aW4pICYmICF0ZXN0VXNlckFnZW50KHdpbiwgL21vYmlsZS9pKTtcclxufTtcclxuXHJcbmNvbnN0IGlzUGhhYmxldCA9ICh3aW46IFdpbmRvdykgPT4ge1xyXG4gIGNvbnN0IHdpZHRoID0gd2luLmlubmVyV2lkdGg7XHJcbiAgY29uc3QgaGVpZ2h0ID0gd2luLmlubmVySGVpZ2h0O1xyXG4gIGNvbnN0IHNtYWxsZXN0ID0gTWF0aC5taW4od2lkdGgsIGhlaWdodCk7XHJcbiAgY29uc3QgbGFyZ2VzdCA9IE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpO1xyXG5cclxuICByZXR1cm4gc21hbGxlc3QgPiAzOTAgJiYgc21hbGxlc3QgPCA1MjAgJiYgbGFyZ2VzdCA+IDYyMCAmJiBsYXJnZXN0IDwgODAwO1xyXG59O1xyXG5cclxuY29uc3QgaXNUYWJsZXQgPSAod2luOiBXaW5kb3cpID0+IHtcclxuICBjb25zdCB3aWR0aCA9IHdpbi5pbm5lcldpZHRoO1xyXG4gIGNvbnN0IGhlaWdodCA9IHdpbi5pbm5lckhlaWdodDtcclxuICBjb25zdCBzbWFsbGVzdCA9IE1hdGgubWluKHdpZHRoLCBoZWlnaHQpO1xyXG4gIGNvbnN0IGxhcmdlc3QgPSBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIGlzSXBhZCh3aW4pIHx8XHJcbiAgICBpc0FuZHJvaWRUYWJsZXQod2luKSB8fFxyXG4gICAgKHNtYWxsZXN0ID4gNDYwICYmIHNtYWxsZXN0IDwgODIwICYmIGxhcmdlc3QgPiA3ODAgJiYgbGFyZ2VzdCA8IDE0MDApXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGlzTW9iaWxlID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhhbnktcG9pbnRlcjpjb2Fyc2UpJyk7XHJcbmNvbnN0IGlzVG91Y2ggPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKGFueS1wb2ludGVyOmNvYXJzZSknKTtcclxuXHJcbmNvbnN0IGlzRGVza3RvcCA9ICh3aW46IFdpbmRvdykgPT4gIWlzTW9iaWxlKHdpbik7XHJcblxyXG5jb25zdCBpc0h5YnJpZCA9ICh3aW46IFdpbmRvdykgPT4gaXNDb3Jkb3ZhKHdpbikgfHwgaXNDYXBhY2l0b3JOYXRpdmUod2luKTtcclxuXHJcbmNvbnN0IGlzQ29yZG92YSA9ICh3aW46IGFueSk6IGJvb2xlYW4gPT5cclxuICAhISh3aW5bJ2NvcmRvdmEnXSB8fCB3aW5bJ3Bob25lZ2FwJ10gfHwgd2luWydQaG9uZUdhcCddKTtcclxuXHJcbmNvbnN0IGlzQ2FwYWNpdG9yTmF0aXZlID0gKHdpbjogYW55KTogYm9vbGVhbiA9PiB7XHJcbiAgY29uc3QgY2FwYWNpdG9yID0gd2luWydDYXBhY2l0b3InXTtcclxuICByZXR1cm4gISEoY2FwYWNpdG9yICYmIGNhcGFjaXRvci5pc05hdGl2ZSk7XHJcbn07XHJcblxyXG5jb25zdCBpc0VsZWN0cm9uID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL2VsZWN0cm9uL2kpO1xyXG5cclxuY29uc3QgaXNQV0EgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+XHJcbiAgISEoXHJcbiAgICB3aW4ubWF0Y2hNZWRpYSgnKGRpc3BsYXktbW9kZTogc3RhbmRhbG9uZSknKS5tYXRjaGVzIHx8XHJcbiAgICAod2luLm5hdmlnYXRvciBhcyBhbnkpLnN0YW5kYWxvbmVcclxuICApO1xyXG5cclxuZXhwb3J0IGNvbnN0IHRlc3RVc2VyQWdlbnQgPSAod2luOiBXaW5kb3csIGV4cHI6IFJlZ0V4cCkgPT5cclxuICBleHByLnRlc3Qod2luLm5hdmlnYXRvci51c2VyQWdlbnQpO1xyXG5cclxuY29uc3QgbWF0Y2hNZWRpYSA9ICh3aW46IFdpbmRvdywgcXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gPT5cclxuICB3aW4ubWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlcztcclxuXHJcblxyXG5jb25zdCBpc1NNU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDY0MHB4KScpO1xyXG5jb25zdCBpc01EU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDc2OHB4KScpO1xyXG5jb25zdCBpc0xHU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDEwMjRweCknKTtcclxuY29uc3QgaXNYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAxMjgwcHgpJyk7XHJcbmNvbnN0IGlzMlhMU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDE1MzZweCknKTtcclxuXHJcbmNvbnN0IFBMQVRGT1JNU19NQVA6IGFueSA9IHtcclxuICBBbmRyb2lkOiBpc0FuZHJvaWQsXHJcbiAgaU9TOiBpc0lPUyxcclxuICBEZXNrdG9wOiBpc0Rlc2t0b3AsXHJcbiAgTW9iaWxlOiBpc01vYmlsZSxcclxuICBUb3VjaDogaXNUb3VjaCxcclxuICBDaHJvbWU6IGlzQ2hyb21lLFxyXG4gIEZpcmVmb3g6IGlzRmlyZWZveCxcclxuICBTYWZhcmk6IGlzU2FmYXJpLFxyXG4gIEVkZ2U6IGlzRWRnZSxcclxuICBPcGVyYTogaXNPcGVyYSxcclxuICBIeWJyaWQ6IGlzSHlicmlkLFxyXG4gIFBXQTogaXNQV0EsXHJcbiAgRWxlY3Ryb246IGlzRWxlY3Ryb24sXHJcbiAgU006IGlzU01TY3JlZW4sXHJcbiAgTUQ6IGlzTURTY3JlZW4sXHJcbiAgTEc6IGlzTEdTY3JlZW4sXHJcbiAgWEw6IGlzWExTY3JlZW4sXHJcbiAgXCIyWExcIjogaXMyWExTY3JlZW4sXHJcbn07XHJcblxyXG5leHBvcnQgY2xhc3MgQVhQbGF0Zm9ybUV2ZW50PFQgZXh0ZW5kcyBFdmVudCA9IEV2ZW50PiB7XHJcbiAgbmF0aXZlRXZlbnQhOiBUO1xyXG4gIHNvdXJjZSE6IEFYUGxhdGZvcm07XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWFBsYXRmb3JtIHtcclxuICByZXNpemU6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcclxuICBjbGljazogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpO1xyXG4gIHNjcm9sbDogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpO1xyXG5cclxuICBpc1J0bCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGRvY3VtZW50LmRpciA9PSAncnRsJyB8fFxyXG4gICAgICBkb2N1bWVudC5ib2R5LmRpciA9PSAncnRsJyB8fFxyXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmRpcmVjdGlvbiA9PSAncnRsJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzTGFuZHNjYXBlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCA8IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgaXNQb3J0cmF0ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5pc0xhbmRzY2FwZSgpO1xyXG4gIH1cclxuXHJcbiAgaXMobmFtZTogQVhQbGF0Zm9ybXMgfCBBWEJyb3dzZXJzIHwgQVhUZWNobm9sb2dpZXMgfCBBWFNjcmVlblNpemVzKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gUExBVEZPUk1TX01BUFtuYW1lXSh3aW5kb3cpIHx8IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoRGFya01vZGUoKSB7XHJcbiAgICBjb25zdCBfaHRtbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XHJcbiAgICBfaHRtbC5jbGFzc0xpc3QuYWRkKCdheC1kYXJrJyk7XHJcbiAgfVxyXG5cclxuICBzd2l0Y2hMaWdodE1vZGUoKSB7XHJcbiAgICBjb25zdCBfaHRtbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XHJcbiAgICBfaHRtbC5jbGFzc0xpc3QucmVtb3ZlKCdheC1kYXJrJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRGdWxsSGVpZ2h0UmF0aW8oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBkb2N1bWVudFxyXG4gICAgICAgIC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignOnJvb3QnKVxyXG4gICAgICAgID8uc3R5bGUuc2V0UHJvcGVydHkoJy0tYXgtdmgnLCB3aW5kb3cuaW5uZXJIZWlnaHQgLyAxMDAgKyAncHgnKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGZyb21FdmVudDxVSUV2ZW50Pih3aW5kb3csICdyZXNpemUnKVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSlcclxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzaXplLm5leHQoe1xyXG4gICAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXHJcbiAgICAgICAgICBzb3VyY2U6IHRoaXMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy9cclxuICAgICAgICB0aGlzLl9zZXRGdWxsSGVpZ2h0UmF0aW8oKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgJ2NsaWNrJyxcclxuICAgICAgKGUpID0+IHtcclxuICAgICAgICB0aGlzLmNsaWNrLm5leHQoe1xyXG4gICAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXHJcbiAgICAgICAgICBzb3VyY2U6IHRoaXMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHRydWVcclxuICAgICk7XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgJ3Njcm9sbCcsXHJcbiAgICAgIChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGwubmV4dCh7XHJcbiAgICAgICAgICBuYXRpdmVFdmVudDogZSxcclxuICAgICAgICAgIHNvdXJjZTogdGhpcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgdHJ1ZVxyXG4gICAgKTtcclxuICAgIC8vIGluaXQgZnVuY3Rpb25zXHJcbiAgICB0aGlzLl9zZXRGdWxsSGVpZ2h0UmF0aW8oKTtcclxuICB9XHJcbn1cclxuIl19
@@ -2,11 +2,11 @@ import { NgModule } from '@angular/core';
2
2
  import { AXTranslatorPipe } from './translator.pipe';
3
3
  import * as i0 from "@angular/core";
4
4
  export class AXTranslationModule {
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: AXTranslationModule, declarations: [AXTranslatorPipe], exports: [AXTranslatorPipe] });
7
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXTranslationModule });
5
8
  }
6
- AXTranslationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
- AXTranslationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: AXTranslationModule, declarations: [AXTranslatorPipe], exports: [AXTranslatorPipe] });
8
- AXTranslationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXTranslationModule });
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXTranslationModule, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXTranslationModule, decorators: [{
10
10
  type: NgModule,
11
11
  args: [{
12
12
  imports: [],
@@ -15,4 +15,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
15
15
  providers: [],
16
16
  }]
17
17
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24vc3JjL3RyYW5zbGF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQVFyRCxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsaUJBSGIsZ0JBQWdCLGFBRHJCLGdCQUFnQjtpSEFJakIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBTi9CLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUNoQyxTQUFTLEVBQUUsRUFBRTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnLi90cmFuc2xhdG9yLnBpcGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtdLFxyXG4gICAgZXhwb3J0czogW0FYVHJhbnNsYXRvclBpcGVdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbQVhUcmFuc2xhdG9yUGlwZV0sXHJcbiAgICBwcm92aWRlcnM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdGlvbk1vZHVsZSB7XHJcbiAgXHJcbn1cclxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24vc3JjL3RyYW5zbGF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQVFyRCxNQUFNLE9BQU8sbUJBQW1CO3VHQUFuQixtQkFBbUI7d0dBQW5CLG1CQUFtQixpQkFIYixnQkFBZ0IsYUFEckIsZ0JBQWdCO3dHQUlqQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBTi9CLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUNoQyxTQUFTLEVBQUUsRUFBRTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnLi90cmFuc2xhdG9yLnBpcGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtdLFxyXG4gICAgZXhwb3J0czogW0FYVHJhbnNsYXRvclBpcGVdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbQVhUcmFuc2xhdG9yUGlwZV0sXHJcbiAgICBwcm92aWRlcnM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdGlvbk1vZHVsZSB7XHJcbiAgXHJcbn1cclxuIl19
@@ -0,0 +1,43 @@
1
+ import { Subject } from 'rxjs';
2
+ import merge from 'lodash-es/merge';
3
+ import * as _ from 'lodash';
4
+ // @dynamic
5
+ export class AXTranslator {
6
+ static lang = 'en';
7
+ static dataChangeSubject = new Subject();
8
+ static _varsRegx = /((\$\{[a-zA-Z_0-9\.]+\})+)/gm;
9
+ static _varNameRegx = /[a-zA-Z_0-9\.]+/gm;
10
+ static get onChange() {
11
+ return AXTranslator.dataChangeSubject.asObservable();
12
+ }
13
+ static load(lang, value) {
14
+ if (typeof value === 'object') {
15
+ if (!AXTranslator[`__data__${lang}`]) {
16
+ AXTranslator[`__data__${lang}`] = {};
17
+ }
18
+ AXTranslator[`__data__${lang}`] = merge(AXTranslator[`__data__${lang}`], value);
19
+ }
20
+ }
21
+ static use(lang) {
22
+ AXTranslator.lang = lang;
23
+ }
24
+ static get(key, arg1, arg2) {
25
+ const lang = arg1 && typeof arg1 == 'string' ? arg1 : AXTranslator.lang;
26
+ const params = arg1 && typeof arg1 == 'object' ? arg1 : arg2;
27
+ let result = _.get(AXTranslator[`__data__${lang}`], key, key);
28
+ const vars = typeof (result) == 'string' ? result?.match(this._varsRegx) : [];
29
+ if (vars?.length) {
30
+ vars.forEach((v) => {
31
+ const varKey = v.match(this._varNameRegx)?.length ? v.match(this._varNameRegx)[0] : null;
32
+ if (varKey) {
33
+ const p = _.get(params, varKey) || this.get(varKey, lang);
34
+ if (p) {
35
+ result = result.replace(v, p);
36
+ }
37
+ }
38
+ });
39
+ }
40
+ return typeof (result) == 'string' ? result : JSON.stringify(result);
41
+ }
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3RyYW5zbGF0aW9uL3NyYy90cmFuc2xhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxLQUFLLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsV0FBVztBQUNYLE1BQU0sT0FBTyxZQUFZO0lBQ2IsTUFBTSxDQUFDLElBQUksR0FBVyxJQUFJLENBQUM7SUFDM0IsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7SUFDOUMsTUFBTSxDQUFDLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQztJQUNsRCxNQUFNLENBQUMsWUFBWSxHQUFHLG1CQUFtQixDQUFDO0lBR2xELE1BQU0sS0FBSyxRQUFRO1FBQ2YsT0FBTyxZQUFZLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBWSxFQUFFLEtBQVU7UUFDdkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ2xDLFlBQVksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO2FBQ3hDO1lBQ0QsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNuRjtJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVk7UUFDMUIsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVyxFQUFFLElBQXNCLEVBQUUsSUFBYTtRQUVoRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDN0QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlFLElBQUksSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFLLEVBQUUsRUFBRTtnQkFDbkIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUN6RixJQUFJLE1BQU0sRUFBRTtvQkFDUixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDMUQsSUFBSSxDQUFDLEVBQUU7d0JBQ0gsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUNqQztpQkFDSjtZQUNMLENBQUMsQ0FBQyxDQUFBO1NBQ0w7UUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoLWVzL21lcmdlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvciB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBsYW5nOiBzdHJpbmcgPSAnZW4nO1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZGF0YUNoYW5nZVN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBfdmFyc1JlZ3ggPSAvKChcXCRcXHtbYS16QS1aXzAtOVxcLl0rXFx9KSspL2dtO1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3Zhck5hbWVSZWd4ID0gL1thLXpBLVpfMC05XFwuXSsvZ207XHJcblxyXG5cclxuICAgIHN0YXRpYyBnZXQgb25DaGFuZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gQVhUcmFuc2xhdG9yLmRhdGFDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgbG9hZChsYW5nOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAoIUFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0pIHtcclxuICAgICAgICAgICAgICAgIEFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0gPSB7fTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBBWFRyYW5zbGF0b3JbYF9fZGF0YV9fJHtsYW5nfWBdID0gbWVyZ2UoQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZ31gXSwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHVzZShsYW5nOiBzdHJpbmcpIHtcclxuICAgICAgICBBWFRyYW5zbGF0b3IubGFuZyA9IGxhbmc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXQoa2V5OiBzdHJpbmcsIGFyZzE/OiBvYmplY3QgfCBzdHJpbmcsIGFyZzI/OiBvYmplY3QpOiBzdHJpbmcge1xyXG5cclxuICAgICAgICBjb25zdCBsYW5nID0gYXJnMSAmJiB0eXBlb2YgYXJnMSA9PSAnc3RyaW5nJyA/IGFyZzEgOiBBWFRyYW5zbGF0b3IubGFuZztcclxuICAgICAgICBjb25zdCBwYXJhbXMgPSBhcmcxICYmIHR5cGVvZiBhcmcxID09ICdvYmplY3QnID8gYXJnMSA6IGFyZzI7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IF8uZ2V0KEFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0sIGtleSwga2V5KTtcclxuICAgICAgICBjb25zdCB2YXJzID0gdHlwZW9mIChyZXN1bHQpID09ICdzdHJpbmcnID8gcmVzdWx0Py5tYXRjaCh0aGlzLl92YXJzUmVneCkgOiBbXTtcclxuICAgICAgICBpZiAodmFycz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhcnMuZm9yRWFjaCgodjphbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhcktleSA9IHYubWF0Y2godGhpcy5fdmFyTmFtZVJlZ3gpPy5sZW5ndGggPyB2Lm1hdGNoKHRoaXMuX3Zhck5hbWVSZWd4KVswXSA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFyS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcCA9IF8uZ2V0KHBhcmFtcywgdmFyS2V5KSB8fCB0aGlzLmdldCh2YXJLZXksIGxhbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKHYsIHApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiAocmVzdWx0KSA9PSAnc3RyaW5nJyA/IHJlc3VsdCA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -5,11 +5,11 @@ export class AXTranslatorPipe {
5
5
  transform(value, arg1, arg2) {
6
6
  return AXTranslator.get(value, arg1, arg2);
7
7
  }
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
9
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: AXTranslatorPipe, name: "trans" });
8
10
  }
9
- AXTranslatorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
- AXTranslatorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: AXTranslatorPipe, name: "trans" });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXTranslatorPipe, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXTranslatorPipe, decorators: [{
12
12
  type: Pipe,
13
13
  args: [{ name: 'trans', pure: true }]
14
14
  }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24vc3JjL3RyYW5zbGF0b3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUc1QyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBc0IsRUFBRSxJQUFhO1FBQzFELE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7OzZHQUhRLGdCQUFnQjsyR0FBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBRDVCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYVHJhbnNsYXRvciB9IGZyb20gJy4vdHJhbnNsYXRvcic7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICd0cmFucycsIHB1cmU6IHRydWUgfSlcclxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBhcmcxPzogb2JqZWN0IHwgc3RyaW5nLCBhcmcyPzogb2JqZWN0KTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gQVhUcmFuc2xhdG9yLmdldCh2YWx1ZSwgYXJnMSwgYXJnMik7XHJcbiAgICB9XHJcbn1cclxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24vc3JjL3RyYW5zbGF0b3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUc1QyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBc0IsRUFBRSxJQUFhO1FBQzFELE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7dUdBSFEsZ0JBQWdCO3FHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYVHJhbnNsYXRvciB9IGZyb20gJy4vdHJhbnNsYXRvcic7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICd0cmFucycsIHB1cmU6IHRydWUgfSlcclxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBhcmcxPzogb2JqZWN0IHwgc3RyaW5nLCBhcmcyPzogb2JqZWN0KTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gQVhUcmFuc2xhdG9yLmdldCh2YWx1ZSwgYXJnMSwgYXJnMik7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -3,6 +3,8 @@ import { Subject } from 'rxjs';
3
3
 
4
4
  // @dynamic
5
5
  class AXConfig {
6
+ static dataModel = {};
7
+ static dataChangeSubject = new Subject();
6
8
  static get onChange() {
7
9
  return AXConfig.dataChangeSubject.asObservable();
8
10
  }
@@ -19,9 +21,7 @@ class AXConfig {
19
21
  static get(path, defaultValue) {
20
22
  return get(AXConfig.dataModel, path, defaultValue);
21
23
  }
22
- }
23
- AXConfig.dataModel = {};
24
- AXConfig.dataChangeSubject = new Subject();
24
+ }
25
25
 
26
26
  /**
27
27
  * Generated bundle index. Do not edit.
@@ -29,4 +29,3 @@ AXConfig.dataChangeSubject = new Subject();
29
29
 
30
30
  export { AXConfig };
31
31
  //# sourceMappingURL=acorex-core-config.mjs.map
32
- //# sourceMappingURL=acorex-core-config.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-config.mjs","sources":["../../../../projects/acorex/core/config/src/configs.ts","../../../../projects/acorex/core/config/acorex-core-config.ts"],"sourcesContent":["import { get, set, merge } from 'lodash-es';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n// @dynamic\r\nexport class AXConfig {\r\n private static dataModel: any = {};\r\n private static dataChangeSubject = new Subject<any>();\r\n\r\n static get onChange(): Observable<any> {\r\n return AXConfig.dataChangeSubject.asObservable();\r\n }\r\n\r\n static set(config: any): void;\r\n static set(path: string, value?: any): void;\r\n static set(arg1?: any, arg2?: any): void {\r\n if (arg1 && typeof arg1 == 'string') {\r\n set(AXConfig.dataModel, arg1, arg2);\r\n AXConfig.dataChangeSubject.next(AXConfig.dataModel);\r\n }\r\n if (arg1 && typeof arg1 == 'object') {\r\n merge(AXConfig.dataModel, arg1);\r\n AXConfig.dataChangeSubject.next(AXConfig.dataModel);\r\n }\r\n }\r\n\r\n static get(path: string, defaultValue?: any): any {\r\n return get(AXConfig.dataModel, path, defaultValue);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAGA;MACa,QAAQ,CAAA;AAInB,IAAA,WAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,QAAQ,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAClD;AAID,IAAA,OAAO,GAAG,CAAC,IAAU,EAAE,IAAU,EAAA;AAC/B,QAAA,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE;YACnC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrD,SAAA;AACD,QAAA,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE;AACnC,YAAA,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAChC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrD,SAAA;KACF;AAED,IAAA,OAAO,GAAG,CAAC,IAAY,EAAE,YAAkB,EAAA;QACzC,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACpD;;AAtBc,QAAS,CAAA,SAAA,GAAQ,EAAE,CAAC;AACpB,QAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAO;;ACNvD;;AAEG;;;;"}
1
+ {"version":3,"file":"acorex-core-config.mjs","sources":["../../../../projects/acorex/core/config/src/configs.ts","../../../../projects/acorex/core/config/acorex-core-config.ts"],"sourcesContent":["import { get, set, merge } from 'lodash-es';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n// @dynamic\r\nexport class AXConfig {\r\n private static dataModel: any = {};\r\n private static dataChangeSubject = new Subject<any>();\r\n\r\n static get onChange(): Observable<any> {\r\n return AXConfig.dataChangeSubject.asObservable();\r\n }\r\n\r\n static set(config: any): void;\r\n static set(path: string, value?: any): void;\r\n static set(arg1?: any, arg2?: any): void {\r\n if (arg1 && typeof arg1 == 'string') {\r\n set(AXConfig.dataModel, arg1, arg2);\r\n AXConfig.dataChangeSubject.next(AXConfig.dataModel);\r\n }\r\n if (arg1 && typeof arg1 == 'object') {\r\n merge(AXConfig.dataModel, arg1);\r\n AXConfig.dataChangeSubject.next(AXConfig.dataModel);\r\n }\r\n }\r\n\r\n static get(path: string, defaultValue?: any): any {\r\n return get(AXConfig.dataModel, path, defaultValue);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAGA;MACa,QAAQ,CAAA;AACX,IAAA,OAAO,SAAS,GAAQ,EAAE,CAAC;AAC3B,IAAA,OAAO,iBAAiB,GAAG,IAAI,OAAO,EAAO,CAAC;AAEtD,IAAA,WAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,QAAQ,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAClD;AAID,IAAA,OAAO,GAAG,CAAC,IAAU,EAAE,IAAU,EAAA;AAC/B,QAAA,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE;YACnC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrD,SAAA;AACD,QAAA,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE;AACnC,YAAA,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAChC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrD,SAAA;KACF;AAED,IAAA,OAAO,GAAG,CAAC,IAAY,EAAE,YAAkB,EAAA;QACzC,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;KACpD;;;AC3BH;;AAEG;;;;"}
@@ -5,47 +5,6 @@ import { Pipe, NgModule } from '@angular/core';
5
5
 
6
6
  // @dynamic
7
7
  class AXDateTime {
8
- constructor(value = new Date(), calendar = AXConfig.get(`dateTime.calendar`)) {
9
- this._formatKeys = {
10
- ss: () => this.pad(this.date.getSeconds(), 2),
11
- s: () => this.date.getSeconds().toString(),
12
- //
13
- dd: () => this.pad(this.calendar.dayOfMonth(this.date), 2),
14
- d: () => this.calendar.dayOfMonth(this.date).toString(),
15
- //
16
- mm: () => this.pad(this.date.getMinutes(), 2),
17
- m: () => this.date.getMinutes().toString(),
18
- //
19
- MMMM: () => this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1],
20
- MMM: () => this.calendar.monthShortNames[this.calendar.monthOfYear(this.date) - 1],
21
- MM: () => this.pad(this.calendar.monthOfYear(this.date), 2),
22
- //
23
- DDDD: () => this.calendar.dayNames[this.calendar.dayOfWeek(this.date) - 1],
24
- DDD: () => this.calendar.dayShortNames[this.calendar.dayOfWeek(this.date) - 1],
25
- //
26
- yyyy: () => this.calendar.year(this.date).toString(),
27
- YYYY: () => this.calendar.year(this.date).toString(),
28
- yy: () => this.calendar.year(this.date).toString().substring(2),
29
- YY: () => this.calendar.year(this.date).toString().substring(2),
30
- //
31
- HH: () => this.pad(this.date.getHours(), 2),
32
- H: () => this.date.getHours().toString(),
33
- //
34
- hh: () => this.pad((this.date.getHours() % 12 || 12), 2),
35
- h: () => (this.date.getHours() % 12 || 12).toString(),
36
- //
37
- A: () => (this.date.getHours() < 12) ? 'am' : 'pm',
38
- a: () => (this.date.getHours() < 12) ? 'am' : 'pm',
39
- };
40
- this._calendar = AXDateTime.resolveCalendar(calendar);
41
- if (value instanceof Date) {
42
- this._date = value;
43
- }
44
- else {
45
- //TODO: parse jalali
46
- this._date = new Date(value);
47
- }
48
- }
49
8
  static convert(value, calendar = AXConfig.get('dateTime.calendar')) {
50
9
  let date;
51
10
  if (typeof value === 'string' || value instanceof String) {
@@ -76,12 +35,24 @@ class AXDateTime {
76
35
  ? AXConfig.get(`dateTime.calendars.${calendar}.class`)
77
36
  : calendar;
78
37
  }
38
+ _date;
79
39
  get date() {
80
40
  return this._date;
81
41
  }
42
+ _calendar;
82
43
  get calendar() {
83
44
  return this._calendar;
84
45
  }
46
+ constructor(value = new Date(), calendar = AXConfig.get(`dateTime.calendar`)) {
47
+ this._calendar = AXDateTime.resolveCalendar(calendar);
48
+ if (value instanceof Date) {
49
+ this._date = value;
50
+ }
51
+ else {
52
+ //TODO: parse jalali
53
+ this._date = new Date(value);
54
+ }
55
+ }
85
56
  clone() {
86
57
  return new AXDateTime(this.date, this.calendar);
87
58
  }
@@ -131,6 +102,37 @@ class AXDateTime {
131
102
  endOf(unit = 'day') {
132
103
  return this._calendar.endOf(this.date, unit);
133
104
  }
105
+ _formatKeys = {
106
+ ss: () => this.pad(this.date.getSeconds(), 2),
107
+ s: () => this.date.getSeconds().toString(),
108
+ //
109
+ dd: () => this.pad(this.calendar.dayOfMonth(this.date), 2),
110
+ d: () => this.calendar.dayOfMonth(this.date).toString(),
111
+ //
112
+ mm: () => this.pad(this.date.getMinutes(), 2),
113
+ m: () => this.date.getMinutes().toString(),
114
+ //
115
+ MMMM: () => this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1],
116
+ MMM: () => this.calendar.monthShortNames[this.calendar.monthOfYear(this.date) - 1],
117
+ MM: () => this.pad(this.calendar.monthOfYear(this.date), 2),
118
+ //
119
+ DDDD: () => this.calendar.dayNames[this.calendar.dayOfWeek(this.date) - 1],
120
+ DDD: () => this.calendar.dayShortNames[this.calendar.dayOfWeek(this.date) - 1],
121
+ //
122
+ yyyy: () => this.calendar.year(this.date).toString(),
123
+ YYYY: () => this.calendar.year(this.date).toString(),
124
+ yy: () => this.calendar.year(this.date).toString().substring(2),
125
+ YY: () => this.calendar.year(this.date).toString().substring(2),
126
+ //
127
+ HH: () => this.pad(this.date.getHours(), 2),
128
+ H: () => this.date.getHours().toString(),
129
+ //
130
+ hh: () => this.pad((this.date.getHours() % 12 || 12), 2),
131
+ h: () => (this.date.getHours() % 12 || 12).toString(),
132
+ //
133
+ A: () => (this.date.getHours() < 12) ? 'am' : 'pm',
134
+ a: () => (this.date.getHours() < 12) ? 'am' : 'pm',
135
+ };
134
136
  format(format = AXConfig.get('dateTime.shortDateFormat')) {
135
137
  const re = new RegExp(_.orderBy(Object.keys(this._formatKeys), c => c.length, ['desc']).join("|"), "gi");
136
138
  return format.replace(re, (matched) => {
@@ -191,29 +193,34 @@ class AXDateTime {
191
193
  }
192
194
  }
193
195
  class AXCalendarMonth {
194
- constructor(date) {
195
- this.index = date.date.getMonth();
196
- this.name = date.format('MMMM');
197
- this.range = new AXDateTimeRange(new AXDateTime(date.startOf('month').date, date.calendar), new AXDateTime(date.endOf('month').date, date.calendar));
198
- }
196
+ _range;
199
197
  get range() {
200
198
  return this._range;
201
199
  }
202
200
  set range(v) {
203
201
  this._range = v;
204
202
  }
203
+ constructor(date) {
204
+ this.index = date.date.getMonth();
205
+ this.name = date.format('MMMM');
206
+ this.range = new AXDateTimeRange(new AXDateTime(date.startOf('month').date, date.calendar), new AXDateTime(date.endOf('month').date, date.calendar));
207
+ }
208
+ index;
209
+ name;
205
210
  }
206
211
  class AXDateTimeRange {
207
- constructor(startTime, endTime) {
208
- this._startTime = startTime;
209
- this._endTime = endTime;
210
- }
212
+ _startTime;
213
+ _endTime;
211
214
  get startTime() {
212
215
  return this._startTime;
213
216
  }
214
217
  get endTime() {
215
218
  return this._endTime;
216
219
  }
220
+ constructor(startTime, endTime) {
221
+ this._startTime = startTime;
222
+ this._endTime = endTime;
223
+ }
217
224
  duration() {
218
225
  const result = {
219
226
  miliseconds: 0,
@@ -303,37 +310,35 @@ class AXDateTimePipe {
303
310
  return date.format(format);
304
311
  }
305
312
  }
313
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
314
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: AXDateTimePipe, name: "axDate" });
306
315
  }
307
- AXDateTimePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
308
- AXDateTimePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: AXDateTimePipe, name: "axDate" });
309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXDateTimePipe, decorators: [{
316
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXDateTimePipe, decorators: [{
310
317
  type: Pipe,
311
318
  args: [{ name: 'axDate' }]
312
319
  }], ctorParameters: function () { return []; } });
313
320
 
314
321
  class GeorgianCalendar {
315
- constructor() {
316
- this.monthNames = [
317
- "January", "February", "March",
318
- "April", "May", "June", "July",
319
- "August", "September", "October",
320
- "November", "December"
321
- ];
322
- this.monthShortNames = [
323
- "Jan", "Feb", "Mar",
324
- "Apr", "May", "Jun", "Jul",
325
- "Aug", "Sep", "Oct",
326
- "Nov", "Dec"
327
- ];
328
- this.dayNames = [
329
- "Sunday", "Monday", "Tuesday", "Wednesday",
330
- "Thursday", "Friday", "Saturday"
331
- ];
332
- this.dayShortNames = [
333
- "Sun", "Mon", "Tue", "Wed",
334
- "Thu", "Fri", "Sat"
335
- ];
336
- }
322
+ monthNames = [
323
+ "January", "February", "March",
324
+ "April", "May", "June", "July",
325
+ "August", "September", "October",
326
+ "November", "December"
327
+ ];
328
+ monthShortNames = [
329
+ "Jan", "Feb", "Mar",
330
+ "Apr", "May", "Jun", "Jul",
331
+ "Aug", "Sep", "Oct",
332
+ "Nov", "Dec"
333
+ ];
334
+ dayNames = [
335
+ "Sunday", "Monday", "Tuesday", "Wednesday",
336
+ "Thursday", "Friday", "Saturday"
337
+ ];
338
+ dayShortNames = [
339
+ "Sun", "Mon", "Tue", "Wed",
340
+ "Thu", "Fri", "Sat"
341
+ ];
337
342
  create(value) {
338
343
  return new AXDateTime(new Date(value.year, value.month - 1, value.date, value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this.name());
339
344
  }
@@ -500,12 +505,10 @@ class GeorgianCalendar {
500
505
  }
501
506
 
502
507
  class JalaliCalendar {
503
- constructor() {
504
- this.monthNames = ("فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند").split("_");
505
- this.monthShortNames = ("فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند").split("_");
506
- this.dayNames = ("شنبه_یکشنبه_دوشنبه_سه شنبه_چهارشنبه_پنج شنبه_جمعه").split("_");
507
- this.dayShortNames = "ش_ی_د_س_چ_پ_ج".split("_");
508
- }
508
+ monthNames = ("فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند").split("_");
509
+ monthShortNames = ("فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند").split("_");
510
+ dayNames = ("شنبه_یکشنبه_دوشنبه_سه شنبه_چهارشنبه_پنج شنبه_جمعه").split("_");
511
+ dayShortNames = "ش_ی_د_س_چ_پ_ج".split("_");
509
512
  create(value) {
510
513
  const a = this.toGregorian(value.year, value.month, value.date);
511
514
  return new AXDateTime(new Date(a.getFullYear(), a.getMonth(), a.getDate(), value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this.name());
@@ -876,11 +879,11 @@ class AXDateTimeModule {
876
879
  }
877
880
  });
878
881
  }
882
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
883
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: AXDateTimeModule, declarations: [AXDateTimePipe], exports: [AXDateTimePipe] });
884
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXDateTimeModule });
879
885
  }
880
- AXDateTimeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
881
- AXDateTimeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: AXDateTimeModule, declarations: [AXDateTimePipe], exports: [AXDateTimePipe] });
882
- AXDateTimeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXDateTimeModule });
883
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXDateTimeModule, decorators: [{
886
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXDateTimeModule, decorators: [{
884
887
  type: NgModule,
885
888
  args: [{
886
889
  imports: [],
@@ -896,4 +899,3 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
896
899
 
897
900
  export { AXCalendarMonth, AXDateTime, AXDateTimeModule, AXDateTimePipe, AXDateTimeRange, GeorgianCalendar, JalaliCalendar };
898
901
  //# sourceMappingURL=acorex-core-dateTime.mjs.map
899
- //# sourceMappingURL=acorex-core-dateTime.mjs.map