@acorex/core 6.5.28 → 6.5.30

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 (144) hide show
  1. package/README.md +3 -3
  2. package/acorex-core.d.ts +5 -0
  3. package/esm2020/acorex-core.mjs +5 -0
  4. package/esm2020/lib/classes/base-page.class.mjs +28 -0
  5. package/esm2020/lib/classes/color.class.mjs +49 -0
  6. package/esm2020/lib/classes/datetime.class.mjs +314 -0
  7. package/esm2020/lib/classes/menu.class.mjs +27 -0
  8. package/esm2020/lib/classes/navigator.class.mjs +2 -0
  9. package/esm2020/lib/classes/popup.class.mjs +2 -0
  10. package/esm2020/lib/classes/promise.class.mjs +19 -0
  11. package/esm2020/lib/classes/sectionlist.class.mjs +2 -0
  12. package/esm2020/lib/classes/select.class.mjs +3 -0
  13. package/esm2020/lib/core.module.mjs +27 -0
  14. package/esm2020/lib/error/error.class.mjs +2 -0
  15. package/esm2020/lib/error/error.module.mjs +19 -0
  16. package/esm2020/lib/error/error.service.mjs +21 -0
  17. package/esm2020/lib/events/keyboard.mjs +2 -0
  18. package/esm2020/lib/http/http-error.class.mjs +2 -0
  19. package/esm2020/lib/http/http-events.interceptor.mjs +3 -0
  20. package/esm2020/lib/http/http-request.class.mjs +2 -0
  21. package/esm2020/lib/http/http-result.class.mjs +21 -0
  22. package/esm2020/lib/http/http.module.mjs +37 -0
  23. package/esm2020/lib/http/http.service.mjs +145 -0
  24. package/{src → esm2020}/lib/locale/en.json +255 -255
  25. package/{src → esm2020}/lib/locale/fa.json +245 -245
  26. package/esm2020/lib/pipe/datetime.pipe.mjs +25 -0
  27. package/esm2020/lib/pipe/htmlToText.pipe.mjs +25 -0
  28. package/esm2020/lib/platform/index.mjs +2 -0
  29. package/esm2020/lib/platform/platform.service.mjs +150 -0
  30. package/esm2020/lib/services/config.mjs +29 -0
  31. package/esm2020/lib/services/event.service.mjs +36 -0
  32. package/esm2020/lib/services/navigator.service.mjs +10 -0
  33. package/esm2020/lib/services/storage.service.mjs +16 -0
  34. package/esm2020/lib/translator/translator.mjs +26 -0
  35. package/esm2020/lib/translator/translator.module.mjs +25 -0
  36. package/esm2020/lib/translator/translator.pipe.mjs +24 -0
  37. package/esm2020/lib/translator/translator.service.mjs +21 -0
  38. package/esm2020/lib/utils/array/array-util.mjs +133 -0
  39. package/esm2020/lib/utils/html/html-util.mjs +192 -0
  40. package/esm2020/lib/utils/html/html.module.mjs +19 -0
  41. package/esm2020/lib/utils/math/math-util.mjs +6 -0
  42. package/esm2020/lib/utils/object/object-util.mjs +83 -0
  43. package/esm2020/lib/utils/render/on-demand-preload-strategy.service.mjs +20 -0
  44. package/esm2020/lib/utils/render/render.service.mjs +103 -0
  45. package/esm2020/lib/utils/render/rendering.module.mjs +35 -0
  46. package/esm2020/lib/utils/scroll/scroll.directive.mjs +54 -0
  47. package/esm2020/lib/utils/scroll/scroll.module.mjs +19 -0
  48. package/esm2020/lib/utils/separator/separator.module.mjs +19 -0
  49. package/esm2020/lib/utils/separator/separator.pipe.mjs +33 -0
  50. package/esm2020/public-api.mjs +44 -0
  51. package/fesm2015/acorex-core.mjs +2274 -0
  52. package/fesm2015/acorex-core.mjs.map +1 -0
  53. package/fesm2020/acorex-core.mjs +2270 -0
  54. package/fesm2020/acorex-core.mjs.map +1 -0
  55. package/lib/classes/base-page.class.d.ts +13 -0
  56. package/lib/classes/color.class.d.ts +17 -0
  57. package/lib/classes/datetime.class.d.ts +63 -0
  58. package/lib/classes/menu.class.d.ts +34 -0
  59. package/{src/lib/classes/navigator.class.ts → lib/classes/navigator.class.d.ts} +5 -5
  60. package/{src/lib/classes/popup.class.ts → lib/classes/popup.class.d.ts} +12 -14
  61. package/lib/classes/promise.class.d.ts +7 -0
  62. package/{src/lib/classes/sectionlist.class.ts → lib/classes/sectionlist.class.d.ts} +8 -8
  63. package/lib/classes/select.class.d.ts +7 -0
  64. package/lib/core.module.d.ts +9 -0
  65. package/{src/lib/error/error.class.ts → lib/error/error.class.d.ts} +4 -4
  66. package/lib/error/error.module.d.ts +7 -0
  67. package/lib/error/error.service.d.ts +13 -0
  68. package/{src/lib/events/keyboard.ts → lib/events/keyboard.d.ts} +2 -5
  69. package/{src/lib/http/http-error.class.ts → lib/http/http-error.class.d.ts} +7 -7
  70. package/{src/lib/http/http-events.interceptor.ts → lib/http/http-events.interceptor.d.ts} +10 -14
  71. package/{src/lib/http/http-request.class.ts → lib/http/http-request.class.d.ts} +14 -14
  72. package/lib/http/http-result.class.d.ts +11 -0
  73. package/lib/http/http.module.d.ts +10 -0
  74. package/lib/http/http.service.d.ts +23 -0
  75. package/lib/pipe/datetime.pipe.d.ts +8 -0
  76. package/lib/pipe/htmlToText.pipe.d.ts +7 -0
  77. package/lib/platform/index.d.ts +1 -0
  78. package/lib/platform/platform.service.d.ts +26 -0
  79. package/lib/services/config.d.ts +9 -0
  80. package/lib/services/event.service.d.ts +9 -0
  81. package/lib/services/navigator.service.d.ts +8 -0
  82. package/lib/services/storage.service.d.ts +7 -0
  83. package/lib/translator/translator.d.ts +9 -0
  84. package/lib/translator/translator.module.d.ts +8 -0
  85. package/lib/translator/translator.pipe.d.ts +8 -0
  86. package/lib/translator/translator.service.d.ts +8 -0
  87. package/lib/utils/array/array-util.d.ts +6 -0
  88. package/lib/utils/html/html-util.d.ts +62 -0
  89. package/lib/utils/html/html.module.d.ts +8 -0
  90. package/lib/utils/math/math-util.d.ts +3 -0
  91. package/lib/utils/object/object-util.d.ts +7 -0
  92. package/lib/utils/render/on-demand-preload-strategy.service.d.ts +10 -0
  93. package/lib/utils/render/render.service.d.ts +18 -0
  94. package/lib/utils/render/rendering.module.d.ts +8 -0
  95. package/lib/utils/scroll/scroll.directive.d.ts +18 -0
  96. package/lib/utils/scroll/scroll.module.d.ts +8 -0
  97. package/lib/utils/separator/separator.module.d.ts +8 -0
  98. package/lib/utils/separator/separator.pipe.d.ts +8 -0
  99. package/package.json +33 -13
  100. package/{src/public-api.ts → public-api.d.ts} +43 -53
  101. package/karma.conf.js +0 -32
  102. package/ng-package.json +0 -10
  103. package/src/lib/classes/base-page.class.ts +0 -29
  104. package/src/lib/classes/color.class.ts +0 -61
  105. package/src/lib/classes/datetime.class.ts +0 -373
  106. package/src/lib/classes/menu.class.ts +0 -37
  107. package/src/lib/classes/promise.class.ts +0 -25
  108. package/src/lib/classes/select.class.ts +0 -7
  109. package/src/lib/core.module.ts +0 -21
  110. package/src/lib/error/error.module.ts +0 -13
  111. package/src/lib/error/error.service.ts +0 -23
  112. package/src/lib/error/index.ts +0 -3
  113. package/src/lib/http/http-result.class.ts +0 -34
  114. package/src/lib/http/http.module.ts +0 -25
  115. package/src/lib/http/http.service.ts +0 -159
  116. package/src/lib/pipe/datetime.pipe.ts +0 -20
  117. package/src/lib/pipe/htmlToText.pipe.ts +0 -18
  118. package/src/lib/platform/index.ts +0 -1
  119. package/src/lib/platform/platform.service.ts +0 -223
  120. package/src/lib/services/config.ts +0 -36
  121. package/src/lib/services/event.service.ts +0 -31
  122. package/src/lib/services/navigator.service.ts +0 -8
  123. package/src/lib/services/storage.service.ts +0 -11
  124. package/src/lib/translator/translator.module.ts +0 -19
  125. package/src/lib/translator/translator.pipe.ts +0 -22
  126. package/src/lib/translator/translator.service.ts +0 -19
  127. package/src/lib/translator/translator.ts +0 -31
  128. package/src/lib/utils/array/array-util.ts +0 -140
  129. package/src/lib/utils/html/html-util.ts +0 -264
  130. package/src/lib/utils/html/html.module.ts +0 -11
  131. package/src/lib/utils/math/math-util.ts +0 -5
  132. package/src/lib/utils/object/object-util.ts +0 -87
  133. package/src/lib/utils/render/on-demand-preload-strategy.service.ts +0 -25
  134. package/src/lib/utils/render/render.service.ts +0 -110
  135. package/src/lib/utils/render/rendering.module.ts +0 -25
  136. package/src/lib/utils/scroll/scroll.directive.ts +0 -35
  137. package/src/lib/utils/scroll/scroll.module.ts +0 -11
  138. package/src/lib/utils/separator/separator.module.ts +0 -11
  139. package/src/lib/utils/separator/separator.pipe.ts +0 -27
  140. package/src/test.ts +0 -28
  141. package/tsconfig.lib.json +0 -25
  142. package/tsconfig.lib.prod.json +0 -6
  143. package/tsconfig.spec.json +0 -18
  144. package/tslint.json +0 -17
@@ -0,0 +1,150 @@
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) &&
35
+ (largest > 620 && largest < 800);
36
+ };
37
+ const isTablet = (win) => {
38
+ const width = win.innerWidth;
39
+ const height = win.innerHeight;
40
+ const smallest = Math.min(width, height);
41
+ const largest = Math.max(width, height);
42
+ return (isIpad(win) ||
43
+ isAndroidTablet(win) ||
44
+ ((smallest > 460 && smallest < 820) &&
45
+ (largest > 780 && largest < 1400)));
46
+ };
47
+ const isMobile = (win) => matchMedia(win, '(any-pointer:coarse)');
48
+ const isTouch = (win) => matchMedia(win, '(any-pointer:coarse)');
49
+ const isDesktop = (win) => !isMobile(win);
50
+ const isHybrid = (win) => isCordova(win) || isCapacitorNative(win);
51
+ const isCordova = (win) => !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);
52
+ const isCapacitorNative = (win) => {
53
+ const capacitor = win['Capacitor'];
54
+ return !!(capacitor && capacitor.isNative);
55
+ };
56
+ const isElectron = (win) => testUserAgent(win, /electron/i);
57
+ const isPWA = (win) => !!(win.matchMedia('(display-mode: standalone)').matches || win.navigator.standalone);
58
+ export const testUserAgent = (win, expr) => expr.test(win.navigator.userAgent);
59
+ const matchMedia = (win, query) => win.matchMedia(query).matches;
60
+ const isSMScreen = (win) => matchMedia(win, '(max-width: 640px)');
61
+ const isMDScreen = (win) => matchMedia(win, '(max-width: 768px)');
62
+ const isLGScreen = (win) => matchMedia(win, '(max-width: 1024px)');
63
+ const isXLScreen = (win) => matchMedia(win, '(max-width: 1280px)');
64
+ const is2XLScreen = (win) => matchMedia(win, '(max-width: 1536px)');
65
+ const PLATFORMS_MAP = {
66
+ 'Android': isAndroid,
67
+ 'iOS': isIOS,
68
+ 'Desktop': isDesktop,
69
+ 'Mobile': isMobile,
70
+ 'Touch': isTouch,
71
+ 'Chrome': isChrome,
72
+ 'Firefox': isFirefox,
73
+ 'Safari': isSafari,
74
+ 'Edge': isEdge,
75
+ 'Opera': isOpera,
76
+ 'Hybrid': isHybrid,
77
+ 'PWA': isPWA,
78
+ 'Electron': isElectron,
79
+ SM: isSMScreen,
80
+ MD: isMDScreen,
81
+ LG: isLGScreen,
82
+ XL: isXLScreen,
83
+ "2XL": is2XLScreen,
84
+ };
85
+ export class AXPlatformEvent {
86
+ }
87
+ export class AXPlatform {
88
+ constructor() {
89
+ this.resize = new Subject();
90
+ this.click = new Subject();
91
+ this.scroll = new Subject();
92
+ fromEvent(window, 'resize')
93
+ .pipe(debounceTime(100))
94
+ .pipe(distinctUntilChanged())
95
+ .subscribe((e) => {
96
+ this.resize.next({
97
+ nativeEvent: e,
98
+ source: this
99
+ });
100
+ //
101
+ this._setFullHeightRatio();
102
+ });
103
+ document.addEventListener('click', (e) => {
104
+ this.click.next({
105
+ nativeEvent: e,
106
+ source: this
107
+ });
108
+ }, true);
109
+ document.addEventListener('scroll', (e) => {
110
+ this.scroll.next({
111
+ nativeEvent: e,
112
+ source: this
113
+ });
114
+ }, true);
115
+ // init functions
116
+ this._setFullHeightRatio();
117
+ }
118
+ isRtl() {
119
+ return document.dir == 'rtl' || document.body.dir == 'rtl' || document.body.style.direction == 'rtl';
120
+ }
121
+ isLandscape() {
122
+ return window.innerHeight < window.innerWidth;
123
+ }
124
+ isPortrate() {
125
+ return !this.isLandscape();
126
+ }
127
+ is(name) {
128
+ return PLATFORMS_MAP[name](window) || false;
129
+ }
130
+ switchDarkMode() {
131
+ const _html = document.getElementsByTagName("html")[0];
132
+ _html.classList.add('ax-dark');
133
+ }
134
+ switchLightMode() {
135
+ const _html = document.getElementsByTagName("html")[0];
136
+ _html.classList.remove('ax-dark');
137
+ }
138
+ _setFullHeightRatio() {
139
+ document.querySelector(':root').style.setProperty('--ax-vh', window.innerHeight / 100 + 'px');
140
+ }
141
+ }
142
+ AXPlatform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXPlatform, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
143
+ AXPlatform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXPlatform, providedIn: 'root' });
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXPlatform, decorators: [{
145
+ type: Injectable,
146
+ args: [{
147
+ providedIn: 'root',
148
+ }]
149
+ }], ctorParameters: function () { return []; } });
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3NyYy9saWIvcGxhdGZvcm0vcGxhdGZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBUSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFVcEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFXLEVBQVcsRUFBRSxDQUN0QyxhQUFhLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWxDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FDdkMsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUVuQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQ3BDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFaEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFXLEVBQVcsRUFBRSxDQUN0QyxhQUFhLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWxDLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FDckMsYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRS9ELE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FDcEMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBR2xFLE1BQU0sV0FBVyxHQUFH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QyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztJQUN6RyxDQUFDO0lBR0QsV0FBVztRQUNQLE9BQU8sTUFBTSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2xELENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM5QixDQUFDO0lBRUQsRUFBRSxDQUFDLElBQStEO1FBQzlELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBRUQsY0FBYztRQUNWLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUVsQyxDQUFDO0lBRUQsZUFBZTtRQUNYLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLFFBQVEsQ0FBQyxhQUFhLENBQWMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDL0csQ0FBQzs7d0dBbkNRLFVBQVU7NEdBQVYsVUFBVSxjQUZQLE1BQU07NEZBRVQsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGZyb20sIGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cblxuZXhwb3J0IHR5cGUgQVhQbGF0Zm9ybXMgPSAnQW5kcm9pZCcgfCAnRGVza3RvcCcgfCAnaU9TJyB8ICdNb2JpbGUnIHwgJyc7XG5leHBvcnQgdHlwZSBBWEJyb3dzZXJzID0gJ0Nocm9tZScgfCAnU2FmYXJpJyB8ICdFZGdlJyB8ICdGaXJlZm94JyB8ICdPcGVyYScgfCAnTVNJRSc7XG5leHBvcnQgdHlwZSBBWFRlY2hub2xvZ2llcyA9ICdQV0EnIHwgJ0h5YnJpZCcgfCAnRWxlY3Ryb24nO1xuZXhwb3J0IHR5cGUgQVhTY3JlZW5TaXplcyA9ICdTTScgfCAnTUQnIHwgJ0xHJyB8ICdYTCcgfCAnMlhMJztcblxuXG5cbmNvbnN0IGlzQ2hyb21lID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PlxuICAgIHRlc3RVc2VyQWdlbnQod2luLCAvQ2hyb21lL2kpO1xuXG5jb25zdCBpc0ZpcmVmb3ggPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+XG4gICAgdGVzdFVzZXJBZ2VudCh3aW4sIC9GaXJlZm94L2kpO1xuXG5jb25zdCBpc0VkZ2UgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+XG4gICAgdGVzdFVzZXJBZ2VudCh3aW4sIC9FZGdlL2kpO1xuXG5jb25zdCBpc1NhZmFyaSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT5cbiAgICB0ZXN0VXNlckFnZW50KHdpbiwgL1NhZmFyaS9pKTtcblxuY29uc3QgaXNPcGVyYSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT5cbiAgICB0ZXN0VXNlckFnZW50KHdpbiwgL09wZXJhL2kpIHx8IHRlc3RVc2VyQWdlbnQod2luLCAvT1BSL2kpO1xuXG5jb25zdCBpc01TSUUgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+XG4gICAgdGVzdFVzZXJBZ2VudCh3aW4sIC9NU0lFL2kpIHx8IHRlc3RVc2VyQWdlbnQod2luLCAvVHJpZGVudC9pKTtcblxuXG5jb25zdCBpc01vYmlsZVdlYiA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT5cbiAgICBpc01vYmlsZSh3aW4pICYmICFpc0h5YnJpZCh3aW4pO1xuXG5jb25zdCBpc0lwYWQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgICAvLyBpT1MgMTIgYW5kIGJlbG93XG4gICAgaWYgKHRlc3RVc2VyQWdlbnQod2luLCAvaVBhZC9pKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBpT1MgMTMrXG4gICAgaWYgKHRlc3RVc2VyQWdlbnQod2luLCAvTWFjaW50b3NoL2kpICYmIGlzTW9iaWxlKHdpbikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuY29uc3QgaXNJcGhvbmUgPSAod2luOiBXaW5kb3cpID0+XG4gICAgdGVzdFVzZXJBZ2VudCh3aW4sIC9pUGhvbmUvaSk7XG5cbmNvbnN0IGlzSU9TID0gKHdpbjogV2luZG93KSA9PlxuICAgIHRlc3RVc2VyQWdlbnQod2luLCAvaVBob25lfGlQb2QvaSkgfHwgaXNJcGFkKHdpbik7XG5cbmNvbnN0IGlzQW5kcm9pZCA9ICh3aW46IFdpbmRvdykgPT5cbiAgICB0ZXN0VXNlckFnZW50KHdpbiwgL2FuZHJvaWR8c2luay9pKTtcblxuY29uc3QgaXNBbmRyb2lkVGFibGV0ID0gKHdpbjogV2luZG93KSA9PiB7XG4gICAgcmV0dXJuIGlzQW5kcm9pZCh3aW4pICYmICF0ZXN0VXNlckFnZW50KHdpbiwgL21vYmlsZS9pKTtcbn07XG5cbmNvbnN0IGlzUGhhYmxldCA9ICh3aW46IFdpbmRvdykgPT4ge1xuICAgIGNvbnN0IHdpZHRoID0gd2luLmlubmVyV2lkdGg7XG4gICAgY29uc3QgaGVpZ2h0ID0gd2luLmlubmVySGVpZ2h0O1xuICAgIGNvbnN0IHNtYWxsZXN0ID0gTWF0aC5taW4od2lkdGgsIGhlaWdodCk7XG4gICAgY29uc3QgbGFyZ2VzdCA9IE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgcmV0dXJuIChzbWFsbGVzdCA+IDM5MCAmJiBzbWFsbGVzdCA8IDUyMCkgJiZcbiAgICAgICAgKGxhcmdlc3QgPiA2MjAgJiYgbGFyZ2VzdCA8IDgwMCk7XG59O1xuXG5jb25zdCBpc1RhYmxldCA9ICh3aW46IFdpbmRvdykgPT4ge1xuICAgIGNvbnN0IHdpZHRoID0gd2luLmlubmVyV2lkdGg7XG4gICAgY29uc3QgaGVpZ2h0ID0gd2luLmlubmVySGVpZ2h0O1xuICAgIGNvbnN0IHNtYWxsZXN0ID0gTWF0aC5taW4od2lkdGgsIGhlaWdodCk7XG4gICAgY29uc3QgbGFyZ2VzdCA9IE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgaXNJcGFkKHdpbikgfHxcbiAgICAgICAgaXNBbmRyb2lkVGFibGV0KHdpbikgfHxcbiAgICAgICAgKFxuICAgICAgICAgICAgKHNtYWxsZXN0ID4gNDYwICYmIHNtYWxsZXN0IDwgODIwKSAmJlxuICAgICAgICAgICAgKGxhcmdlc3QgPiA3ODAgJiYgbGFyZ2VzdCA8IDE0MDApXG4gICAgICAgIClcbiAgICApO1xufTtcblxuY29uc3QgaXNNb2JpbGUgPSAod2luOiBXaW5kb3cpID0+XG4gICAgbWF0Y2hNZWRpYSh3aW4sICcoYW55LXBvaW50ZXI6Y29hcnNlKScpO1xuXG5jb25zdCBpc1RvdWNoID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhhbnktcG9pbnRlcjpjb2Fyc2UpJyk7XG5cbmNvbnN0IGlzRGVza3RvcCA9ICh3aW46IFdpbmRvdykgPT5cbiAgICAhaXNNb2JpbGUod2luKTtcblxuY29uc3QgaXNIeWJyaWQgPSAod2luOiBXaW5kb3cpID0+XG4gICAgaXNDb3Jkb3ZhKHdpbikgfHwgaXNDYXBhY2l0b3JOYXRpdmUod2luKTtcblxuY29uc3QgaXNDb3Jkb3ZhID0gKHdpbjogYW55KTogYm9vbGVhbiA9PlxuICAgICEhKHdpblsnY29yZG92YSddIHx8IHdpblsncGhvbmVnYXAnXSB8fCB3aW5bJ1Bob25lR2FwJ10pO1xuXG5jb25zdCBpc0NhcGFjaXRvck5hdGl2ZSA9ICh3aW46IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGNhcGFjaXRvciA9IHdpblsnQ2FwYWNpdG9yJ107XG4gICAgcmV0dXJuICEhKGNhcGFjaXRvciAmJiBjYXBhY2l0b3IuaXNOYXRpdmUpO1xufTtcblxuY29uc3QgaXNFbGVjdHJvbiA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT5cbiAgICB0ZXN0VXNlckFnZW50KHdpbiwgL2VsZWN0cm9uL2kpO1xuXG5jb25zdCBpc1BXQSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT5cbiAgICAhISh3aW4ubWF0Y2hNZWRpYSgnKGRpc3BsYXktbW9kZTogc3RhbmRhbG9uZSknKS5tYXRjaGVzIHx8ICh3aW4ubmF2aWdhdG9yIGFzIGFueSkuc3RhbmRhbG9uZSk7XG5cbmV4cG9ydCBjb25zdCB0ZXN0VXNlckFnZW50ID0gKHdpbjogV2luZG93LCBleHByOiBSZWdFeHApID0+XG4gICAgZXhwci50ZXN0KHdpbi5uYXZpZ2F0b3IudXNlckFnZW50KTtcblxuY29uc3QgbWF0Y2hNZWRpYSA9ICh3aW46IFdpbmRvdywgcXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAgICB3aW4ubWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlcztcblxuY29uc3QgaXNTTVNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiA2NDBweCknKTtcbmNvbnN0IGlzTURTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogNzY4cHgpJyk7XG5jb25zdCBpc0xHU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDEwMjRweCknKTtcbmNvbnN0IGlzWExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTI4MHB4KScpO1xuY29uc3QgaXMyWExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTUzNnB4KScpO1xuXG5jb25zdCBQTEFURk9STVNfTUFQID0ge1xuICAgICdBbmRyb2lkJzogaXNBbmRyb2lkLFxuICAgICdpT1MnOiBpc0lPUyxcbiAgICAnRGVza3RvcCc6IGlzRGVza3RvcCxcbiAgICAnTW9iaWxlJzogaXNNb2JpbGUsXG4gICAgJ1RvdWNoJzogaXNUb3VjaCxcbiAgICAnQ2hyb21lJzogaXNDaHJvbWUsXG4gICAgJ0ZpcmVmb3gnOiBpc0ZpcmVmb3gsXG4gICAgJ1NhZmFyaSc6IGlzU2FmYXJpLFxuICAgICdFZGdlJzogaXNFZGdlLFxuICAgICdPcGVyYSc6IGlzT3BlcmEsXG4gICAgJ0h5YnJpZCc6IGlzSHlicmlkLFxuICAgICdQV0EnOiBpc1BXQSxcbiAgICAnRWxlY3Ryb24nOiBpc0VsZWN0cm9uLFxuICAgIFNNOiBpc1NNU2NyZWVuLFxuICAgIE1EOiBpc01EU2NyZWVuLFxuICAgIExHOiBpc0xHU2NyZWVuLFxuICAgIFhMOiBpc1hMU2NyZWVuLFxuICAgIFwiMlhMXCI6IGlzMlhMU2NyZWVuLFxufTtcblxuXG5leHBvcnQgY2xhc3MgQVhQbGF0Zm9ybUV2ZW50IHtcbiAgICBuYXRpdmVFdmVudDogVUlFdmVudCB8IEV2ZW50O1xuICAgIHNvdXJjZTogQVhQbGF0Zm9ybVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBsYXRmb3JtIHtcbiAgICByZXNpemU6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcbiAgICBjbGljazogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpXG4gICAgc2Nyb2xsOiBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4gPSBuZXcgU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+KClcblxuICAgIGlzUnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZGlyID09ICdydGwnIHx8IGRvY3VtZW50LmJvZHkuZGlyID09ICdydGwnIHx8IGRvY3VtZW50LmJvZHkuc3R5bGUuZGlyZWN0aW9uID09ICdydGwnO1xuICAgIH1cblxuXG4gICAgaXNMYW5kc2NhcGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQgPCB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICB9XG5cbiAgICBpc1BvcnRyYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNMYW5kc2NhcGUoKVxuICAgIH1cblxuICAgIGlzKG5hbWU6IEFYUGxhdGZvcm1zIHwgQVhCcm93c2VycyB8IEFYVGVjaG5vbG9naWVzIHwgQVhTY3JlZW5TaXplcyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gUExBVEZPUk1TX01BUFtuYW1lXSh3aW5kb3cpIHx8IGZhbHNlO1xuICAgIH1cblxuICAgIHN3aXRjaERhcmtNb2RlKCkge1xuICAgICAgICBjb25zdCBfaHRtbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaHRtbFwiKVswXTtcbiAgICAgICAgX2h0bWwuY2xhc3NMaXN0LmFkZCgnYXgtZGFyaycpXG5cbiAgICB9XG5cbiAgICBzd2l0Y2hMaWdodE1vZGUoKSB7XG4gICAgICAgIGNvbnN0IF9odG1sID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJodG1sXCIpWzBdO1xuICAgICAgICBfaHRtbC5jbGFzc0xpc3QucmVtb3ZlKCdheC1kYXJrJylcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRGdWxsSGVpZ2h0UmF0aW8oKSB7XG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCc6cm9vdCcpLnN0eWxlLnNldFByb3BlcnR5KCctLWF4LXZoJywgd2luZG93LmlubmVySGVpZ2h0IC8gMTAwICsgJ3B4Jyk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG5cbiAgICAgICAgZnJvbUV2ZW50PFVJRXZlbnQ+KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemUubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldEZ1bGxIZWlnaHRSYXRpbygpO1xuICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsaWNrLm5leHQoe1xuICAgICAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRydWUpXG5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsLm5leHQoe1xuICAgICAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRydWUpO1xuICAgICAgICAvLyBpbml0IGZ1bmN0aW9uc1xuICAgICAgICB0aGlzLl9zZXRGdWxsSGVpZ2h0UmF0aW8oKTtcbiAgICB9XG59Il19
@@ -0,0 +1,29 @@
1
+ import { Subject } from 'rxjs';
2
+ import { getPropByPath, setPropByPath } from '../utils/object/object-util';
3
+ // @dynamic
4
+ export class AXConfig {
5
+ static get onChange() {
6
+ return AXConfig.dataChangeSubject.asObservable();
7
+ }
8
+ static set(arg1, arg2) {
9
+ if (arg1 && typeof arg1 == 'string') {
10
+ setPropByPath(AXConfig.dataModel, arg1, arg2);
11
+ AXConfig.dataChangeSubject.next(AXConfig.dataModel);
12
+ return;
13
+ }
14
+ if (arg1 && typeof arg1 == 'object') {
15
+ Object.assign(AXConfig.dataModel, arg1);
16
+ AXConfig.dataChangeSubject.next(AXConfig.dataModel);
17
+ return;
18
+ }
19
+ if (!arg1 && !arg2) {
20
+ return AXConfig.dataChangeSubject.asObservable();
21
+ }
22
+ }
23
+ static get(path) {
24
+ return getPropByPath(AXConfig.dataModel, path);
25
+ }
26
+ }
27
+ AXConfig.dataModel = {};
28
+ AXConfig.dataChangeSubject = new Subject();
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNFLFdBQVc7QUFDWCxNQUFNLE9BQU8sUUFBUTtJQUtqQixNQUFNLEtBQUssUUFBUTtRQUNmLE9BQU8sUUFBUSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFJRCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVUsRUFBRSxJQUFVO1FBRTdCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLFFBQVEsRUFBRTtZQUNqQyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEQsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4QyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2hCLE9BQU8sUUFBUSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3BEO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBWTtRQUNuQixPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7O0FBN0JjLGtCQUFTLEdBQVEsRUFBRSxDQUFDO0FBQ3BCLDBCQUFpQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRQcm9wQnlQYXRoLCBzZXRQcm9wQnlQYXRoIH0gZnJvbSAnLi4vdXRpbHMvb2JqZWN0L29iamVjdC11dGlsJztcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBBWENvbmZpZyB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgZGF0YU1vZGVsOiBhbnkgPSB7fTtcbiAgICBwcml2YXRlIHN0YXRpYyBkYXRhQ2hhbmdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuXG4gICAgc3RhdGljIGdldCBvbkNoYW5nZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gQVhDb25maWcuZGF0YUNoYW5nZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHNldChjb25maWc6IGFueSk6IGFueTtcbiAgICBzdGF0aWMgc2V0KHBhdGg6IHN0cmluZywgdmFsdWU/OiBhbnkpOiB2b2lkO1xuICAgIHN0YXRpYyBzZXQoYXJnMT86IGFueSwgYXJnMj86IGFueSkge1xuXG4gICAgICAgIGlmIChhcmcxICYmIHR5cGVvZiBhcmcxID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBzZXRQcm9wQnlQYXRoKEFYQ29uZmlnLmRhdGFNb2RlbCwgYXJnMSwgYXJnMik7XG4gICAgICAgICAgICBBWENvbmZpZy5kYXRhQ2hhbmdlU3ViamVjdC5uZXh0KEFYQ29uZmlnLmRhdGFNb2RlbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyZzEgJiYgdHlwZW9mIGFyZzEgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oQVhDb25maWcuZGF0YU1vZGVsLCBhcmcxKTtcbiAgICAgICAgICAgIEFYQ29uZmlnLmRhdGFDaGFuZ2VTdWJqZWN0Lm5leHQoQVhDb25maWcuZGF0YU1vZGVsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFyZzEgJiYgIWFyZzIpIHtcbiAgICAgICAgICAgIHJldHVybiBBWENvbmZpZy5kYXRhQ2hhbmdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBnZXQocGF0aDogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIGdldFByb3BCeVBhdGgoQVhDb25maWcuZGF0YU1vZGVsLCBwYXRoKTtcbiAgICB9XG59Il19
@@ -0,0 +1,36 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AXEventService {
4
+ constructor() {
5
+ this.list = [];
6
+ }
7
+ broadcast(key, options) {
8
+ const d = this.list.find(c => c.key === key);
9
+ if (d) {
10
+ d.events.forEach(c => {
11
+ c(options);
12
+ });
13
+ }
14
+ }
15
+ on(key, callback) {
16
+ let d = this.list.find(c => c.key === key);
17
+ if (!d) {
18
+ d = { key, events: [] };
19
+ this.list.push(d);
20
+ }
21
+ d.events.push(callback);
22
+ }
23
+ destroy(key, callback) {
24
+ const d = this.list.find(c => c.key === key);
25
+ if (d) {
26
+ d.events = [];
27
+ }
28
+ }
29
+ }
30
+ AXEventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
31
+ AXEventService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXEventService, providedIn: 'root' });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXEventService, decorators: [{
33
+ type: Injectable,
34
+ args: [{ providedIn: 'root' }]
35
+ }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3NyYy9saWIvc2VydmljZXMvZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVZLFNBQUksR0FBVSxFQUFFLENBQUM7S0EwQjVCO0lBeEJVLFNBQVMsQ0FBQyxHQUFXLEVBQUUsT0FBYTtRQUN2QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEVBQUU7WUFDSCxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDakIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFTSxFQUFFLENBQUMsR0FBVyxFQUFFLFFBQWlDO1FBQ3BELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQjtRQUNELENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVyxFQUFFLFFBQWlDO1FBQ3pELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsRUFBRTtZQUNILENBQUMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQzs7NEdBMUJRLGNBQWM7Z0hBQWQsY0FBYyxjQURELE1BQU07NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYRXZlbnRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGxpc3Q6IGFueVtdID0gW107XG5cbiAgICBwdWJsaWMgYnJvYWRjYXN0KGtleTogc3RyaW5nLCBvcHRpb25zPzogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmxpc3QuZmluZChjID0+IGMua2V5ID09PSBrZXkpO1xuICAgICAgICBpZiAoZCkge1xuICAgICAgICAgICAgZC5ldmVudHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgICAgICAgICBjKG9wdGlvbnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb24oa2V5OiBzdHJpbmcsIGNhbGxiYWNrOiAob3B0aW9ucz86IGFueSkgPT4gdm9pZCkge1xuICAgICAgICBsZXQgZCA9IHRoaXMubGlzdC5maW5kKGMgPT4gYy5rZXkgPT09IGtleSk7XG4gICAgICAgIGlmICghZCkge1xuICAgICAgICAgICAgZCA9IHsga2V5LCBldmVudHM6IFtdIH07XG4gICAgICAgICAgICB0aGlzLmxpc3QucHVzaChkKTtcbiAgICAgICAgfVxuICAgICAgICBkLmV2ZW50cy5wdXNoKGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzdHJveShrZXk6IHN0cmluZywgY2FsbGJhY2s6IChvcHRpb25zPzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmxpc3QuZmluZChjID0+IGMua2V5ID09PSBrZXkpO1xuICAgICAgICBpZiAoZCkge1xuICAgICAgICAgICAgZC5ldmVudHMgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AXNavigator {
4
+ }
5
+ AXNavigator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXNavigator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6
+ AXNavigator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXNavigator });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXNavigator, decorators: [{
8
+ type: Injectable
9
+ }] });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNDLE1BQU0sT0FBZ0IsV0FBVzs7eUdBQVgsV0FBVzs2R0FBWCxXQUFXOzRGQUFYLFdBQVc7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWE5hdmlnYXRvclBhcmFtIH0gZnJvbSAnLi4vY2xhc3Nlcy9uYXZpZ2F0b3IuY2xhc3MnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhOYXZpZ2F0b3Ige1xuICAgIGFic3RyYWN0IG5hdmlnYXRlKHBhcmFtczogQVhOYXZpZ2F0b3JQYXJhbSk7XG4gICAgYWJzdHJhY3QgcG9wdXAocGFyYW1zOiBBWE5hdmlnYXRvclBhcmFtKTtcbn0iXX0=
@@ -0,0 +1,16 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AXStorageService {
4
+ get(key) {
5
+ return localStorage.getItem(key);
6
+ }
7
+ set(key, value) {
8
+ localStorage.setItem(key, value);
9
+ }
10
+ }
11
+ AXStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
+ AXStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXStorageService });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXStorageService, decorators: [{
14
+ type: Injectable
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUMxQixHQUFHLENBQUMsR0FBVztRQUNaLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQVEsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ3hCLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7OzhHQU5TLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWFN0b3JhZ2VTZXJ2aWNlIHtcbiAgIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSBhcyBhbnk7XG4gICB9XG4gICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUgYXMgc3RyaW5nKTtcbiAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { Subject } from 'rxjs';
2
+ import { getPropByPath } from '../utils/object/object-util';
3
+ import merge from 'lodash-es/merge';
4
+ // @dynamic
5
+ export class AXTranslator {
6
+ static get onChange() {
7
+ return AXTranslator.dataChangeSubject.asObservable();
8
+ }
9
+ static load(lang, value) {
10
+ if (typeof value === 'object') {
11
+ if (!AXTranslator[`__data__${lang}`]) {
12
+ AXTranslator[`__data__${lang}`] = {};
13
+ }
14
+ AXTranslator[`__data__${lang}`] = merge(AXTranslator[`__data__${lang}`], value);
15
+ }
16
+ }
17
+ static use(lang) {
18
+ AXTranslator.lang = lang;
19
+ }
20
+ static get(key, lang) {
21
+ return getPropByPath(AXTranslator[`__data__${lang || AXTranslator.lang}`], key) || key;
22
+ }
23
+ }
24
+ AXTranslator.lang = 'en';
25
+ AXTranslator.dataChangeSubject = new Subject();
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3NyYy9saWIvdHJhbnNsYXRvci90cmFuc2xhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sS0FBSyxNQUFNLGlCQUFpQixDQUFDO0FBRXBDLFdBQVc7QUFDWCxNQUFNLE9BQU8sWUFBWTtJQUtyQixNQUFNLEtBQUssUUFBUTtRQUNmLE9BQU8sWUFBWSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQVksRUFBRSxLQUFVO1FBQ3ZDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUNsQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUN4QztZQUNELFlBQVksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbkY7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQzFCLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFhO1FBQ3hDLE9BQU8sYUFBYSxDQUFDLFlBQVksQ0FBQyxXQUFXLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDM0YsQ0FBQzs7QUF2QmMsaUJBQUksR0FBVyxJQUFJLENBQUM7QUFDcEIsOEJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldFByb3BCeVBhdGh9IGZyb20gJy4uL3V0aWxzL29iamVjdC9vYmplY3QtdXRpbCc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoLWVzL21lcmdlJztcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0b3Ige1xuICAgIHByaXZhdGUgc3RhdGljIGxhbmc6IHN0cmluZyA9ICdlbic7XG4gICAgcHJpdmF0ZSBzdGF0aWMgZGF0YUNoYW5nZVN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cblxuICAgIHN0YXRpYyBnZXQgb25DaGFuZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIEFYVHJhbnNsYXRvci5kYXRhQ2hhbmdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxvYWQobGFuZzogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAoIUFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0pIHtcbiAgICAgICAgICAgICAgICBBWFRyYW5zbGF0b3JbYF9fZGF0YV9fJHtsYW5nfWBdID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBBWFRyYW5zbGF0b3JbYF9fZGF0YV9fJHtsYW5nfWBdID0gbWVyZ2UoQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZ31gXSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB1c2UobGFuZzogc3RyaW5nKSB7XG4gICAgICAgIEFYVHJhbnNsYXRvci5sYW5nID0gbGFuZztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldChrZXk6IHN0cmluZywgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBnZXRQcm9wQnlQYXRoKEFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmcgfHwgQVhUcmFuc2xhdG9yLmxhbmd9YF0sIGtleSkgfHwga2V5O1xuICAgIH1cbn0iXX0=
@@ -0,0 +1,25 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { AXTranslatorPipe } from './translator.pipe';
3
+ import * as en from '../locale/en.json';
4
+ import * as fa from '../locale/fa.json';
5
+ import { AXTranslator } from './translator';
6
+ import * as i0 from "@angular/core";
7
+ export class AXTranslatorModule {
8
+ constructor() {
9
+ AXTranslator.load('en', en);
10
+ AXTranslator.load('fa', fa);
11
+ }
12
+ }
13
+ AXTranslatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ AXTranslatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorModule, declarations: [AXTranslatorPipe], exports: [AXTranslatorPipe] });
15
+ AXTranslatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorModule, providers: [], imports: [[]] });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorModule, decorators: [{
17
+ type: NgModule,
18
+ args: [{
19
+ imports: [],
20
+ exports: [AXTranslatorPipe],
21
+ declarations: [AXTranslatorPipe],
22
+ providers: [],
23
+ }]
24
+ }], ctorParameters: function () { return []; } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL3RyYW5zbGF0b3IvdHJhbnNsYXRvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFTNUMsTUFBTSxPQUFPLGtCQUFrQjtJQUMzQjtRQUNJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O2dIQUpRLGtCQUFrQjtpSEFBbEIsa0JBQWtCLGlCQUhaLGdCQUFnQixhQURyQixnQkFBZ0I7aUhBSWpCLGtCQUFrQixhQUZoQixFQUFFLFlBSEosRUFBRTs0RkFLRixrQkFBa0I7a0JBTjlCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUNoQyxTQUFTLEVBQUUsRUFBRTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yUGlwZSB9IGZyb20gJy4vdHJhbnNsYXRvci5waXBlJztcbmltcG9ydCAqIGFzIGVuIGZyb20gJy4uL2xvY2FsZS9lbi5qc29uJztcbmltcG9ydCAqIGFzIGZhIGZyb20gJy4uL2xvY2FsZS9mYS5qc29uJztcbmltcG9ydCB7IEFYVHJhbnNsYXRvciB9IGZyb20gJy4vdHJhbnNsYXRvcic7XG5cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXSxcbiAgICBleHBvcnRzOiBbQVhUcmFuc2xhdG9yUGlwZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbQVhUcmFuc2xhdG9yUGlwZV0sXG4gICAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdG9yTW9kdWxlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgQVhUcmFuc2xhdG9yLmxvYWQoJ2VuJywgZW4pO1xuICAgICAgICBBWFRyYW5zbGF0b3IubG9hZCgnZmEnLCBmYSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { AXTranslator } from './translator';
3
+ import * as i0 from "@angular/core";
4
+ export class AXTranslatorPipe {
5
+ constructor() { }
6
+ // transform(value: string, lang?: string): Promise<string> {
7
+ // return new Promise<string>((resolve, reject) => {
8
+ // if (!value) {
9
+ // resolve(value);
10
+ // }
11
+ // resolve(this.translate.get(value, lang));
12
+ // });
13
+ // }
14
+ transform(value, lang) {
15
+ return AXTranslator.get(value, lang);
16
+ }
17
+ }
18
+ AXTranslatorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
19
+ AXTranslatorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorPipe, name: "trans" });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorPipe, decorators: [{
21
+ type: Pipe,
22
+ args: [{ name: 'trans', pure: true }]
23
+ }], ctorParameters: function () { return []; } });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi90cmFuc2xhdG9yL3RyYW5zbGF0b3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUc1QyxNQUFNLE9BQU8sZ0JBQWdCO0lBRXpCLGdCQUFnQixDQUFDO0lBRWpCLDZEQUE2RDtJQUM3RCx3REFBd0Q7SUFDeEQsd0JBQXdCO0lBQ3hCLDhCQUE4QjtJQUM5QixZQUFZO0lBQ1osb0RBQW9EO0lBQ3BELFVBQVU7SUFFVixJQUFJO0lBRUosU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFhO1FBQ2xDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQzs7OEdBaEJRLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBRDVCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3IgfSBmcm9tICcuL3RyYW5zbGF0b3InO1xuXG5AUGlwZSh7IG5hbWU6ICd0cmFucycsIHB1cmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0b3JQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gICAgLy8gdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIGxhbmc/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIC8vICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLy8gICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgLy8gICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgICAgICByZXNvbHZlKHRoaXMudHJhbnNsYXRlLmdldCh2YWx1ZSwgbGFuZykpO1xuICAgIC8vICAgICB9KTtcblxuICAgIC8vIH1cblxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBsYW5nPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEFYVHJhbnNsYXRvci5nZXQodmFsdWUsIGxhbmcpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { AXTranslator } from './translator';
3
+ import * as i0 from "@angular/core";
4
+ export class AXTranslatorService {
5
+ load(lang, value) {
6
+ AXTranslator.load(lang, value);
7
+ }
8
+ use(lang) {
9
+ AXTranslator.use(lang);
10
+ }
11
+ get(key, lang) {
12
+ return AXTranslator.get(lang, lang);
13
+ }
14
+ }
15
+ AXTranslatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
16
+ AXTranslatorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorService, providedIn: 'platform' });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorService, decorators: [{
18
+ type: Injectable,
19
+ args: [{ providedIn: 'platform' }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi90cmFuc2xhdG9yL3RyYW5zbGF0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRzVDLE1BQU0sT0FBTyxtQkFBbUI7SUFFckIsSUFBSSxDQUFDLElBQVksRUFBRSxLQUFVO1FBQ2hDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxHQUFHLENBQUMsSUFBWTtRQUNuQixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxHQUFHLENBQUMsR0FBVyxFQUFFLElBQWE7UUFDakMsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDOztpSEFaUSxtQkFBbUI7cUhBQW5CLG1CQUFtQixjQUROLFVBQVU7NEZBQ3ZCLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3IgfSBmcm9tICcuL3RyYW5zbGF0b3InO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdwbGF0Zm9ybScgfSlcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0b3JTZXJ2aWNlIHtcblxuICAgIHB1YmxpYyBsb2FkKGxhbmc6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgICBBWFRyYW5zbGF0b3IubG9hZChsYW5nLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVzZShsYW5nOiBzdHJpbmcpIHtcbiAgICAgICAgQVhUcmFuc2xhdG9yLnVzZShsYW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nLCBsYW5nPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEFYVHJhbnNsYXRvci5nZXQobGFuZywgbGFuZyk7XG4gICAgfVxufVxuXG4iXX0=
@@ -0,0 +1,133 @@
1
+ import { AXFetchProp } from '../object/object-util';
2
+ // @dynamic
3
+ export class AXArrayUtil {
4
+ static pickRandom(array) {
5
+ return array[Math.floor(Math.random() * array.length)];
6
+ }
7
+ static insert(array, index, ...rest) {
8
+ array.splice.apply(array, [index, 0].concat(Array.prototype.slice.call(rest, 1)));
9
+ return array;
10
+ }
11
+ static range(min, max) {
12
+ return new Array(max - min).fill(1).map((d, i) => i);
13
+ }
14
+ static filter(array, filters) {
15
+ if (filters == null || filters.length === 0) {
16
+ return array;
17
+ }
18
+ const lamda = (item) => {
19
+ let result = true;
20
+ for (const key in filters) {
21
+ if (filters.hasOwnProperty(key)) {
22
+ const f = filters[key];
23
+ if (f !== 'AND') {
24
+ const vals = [];
25
+ const mt = f.field.match(/\[\:(.*?)\]/);
26
+ if (mt && mt.length > 1) {
27
+ const p1 = f.field.replace(mt[0], '');
28
+ const p2 = mt[1];
29
+ const prop = AXFetchProp(item, p1);
30
+ if (prop instanceof Array && prop.length) {
31
+ vals.push(...prop.map(m => (AXFetchProp(m, p2))));
32
+ }
33
+ else {
34
+ result = false;
35
+ }
36
+ }
37
+ else {
38
+ vals.push(AXFetchProp(item, f.field));
39
+ }
40
+ for (const j in vals) {
41
+ if (vals.hasOwnProperty(j)) {
42
+ let v1 = vals[j];
43
+ const v2 = f.value;
44
+ if (f.dataType === 'string') {
45
+ v1 = v1.toString();
46
+ switch (f.condition) {
47
+ case 'equal':
48
+ result = (v1 && v2) && v1.toLowerCase() === v2.toLowerCase();
49
+ break;
50
+ case 'not-equal':
51
+ result = !((v1 && v2) && v1.toLowerCase() === v2.toLowerCase());
52
+ break;
53
+ case 'contains':
54
+ result = ((v1 && v2) && (v1.toLowerCase().includes(v2.toLowerCase())));
55
+ break;
56
+ case 'not-contains':
57
+ result = !((v1 && v2) && (v1.toLowerCase().includes(v2.toLowerCase())));
58
+ break;
59
+ case 'start-with':
60
+ result = ((v1 && v2) && (v1.toLowerCase().startsWith(v2.toLowerCase())));
61
+ break;
62
+ case 'end-with':
63
+ result = ((v1 && v2) && (v1.toLowerCase().endsWith(v2.toLowerCase())));
64
+ break;
65
+ case 'is-empty':
66
+ result = v1 == null || v1 === undefined;
67
+ break;
68
+ case 'is-not-empty':
69
+ result = !(v1 == null || v1 === undefined);
70
+ break;
71
+ default:
72
+ console.error('The condition is not defined');
73
+ result = false;
74
+ }
75
+ }
76
+ else if (f.dataType === 'date') {
77
+ }
78
+ else if (f.dataType === 'number') {
79
+ v1 = Number(v1);
80
+ switch (f.condition) {
81
+ case 'equal':
82
+ result = v1 === v2;
83
+ break;
84
+ case 'not-equal':
85
+ result = v1 !== v2;
86
+ break;
87
+ case 'contains':
88
+ result = v2 && v2 instanceof Array && v2.includes(v1);
89
+ break;
90
+ case 'less-than':
91
+ result = v1 < v2;
92
+ break;
93
+ case 'less-than-equal':
94
+ result = v1 <= v2;
95
+ break;
96
+ case 'greater-than':
97
+ result = v1 > v2;
98
+ break;
99
+ case 'greater-than-equal':
100
+ result = v1 >= v2;
101
+ break;
102
+ case 'is-empty':
103
+ result = v1 == null || v1 === undefined;
104
+ break;
105
+ case 'is-not-empty':
106
+ result = !(v1 == null || v1 === undefined);
107
+ break;
108
+ default:
109
+ console.error('The condition is not defined');
110
+ result = false;
111
+ }
112
+ }
113
+ else {
114
+ console.error('The datatype is not supported');
115
+ result = false;
116
+ }
117
+ if (result) {
118
+ break;
119
+ }
120
+ }
121
+ }
122
+ }
123
+ if (!result) {
124
+ return false;
125
+ }
126
+ }
127
+ }
128
+ return true;
129
+ };
130
+ return array.filter(lamda);
131
+ }
132
+ }
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3NyYy9saWIvdXRpbHMvYXJyYXkvYXJyYXktdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsV0FBVztBQUNYLE1BQU0sT0FBTyxXQUFXO0lBR3BCLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBWTtRQUMxQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBR0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSTtRQUN0QyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQ2pDLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZLEVBQUUsT0FBYztRQUN0QyxJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sS0FB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QU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEZldGNoUHJvcCB9IGZyb20gJy4uL29iamVjdC9vYmplY3QtdXRpbCc7XG5cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgQVhBcnJheVV0aWwge1xuXG5cbiAgICBzdGF0aWMgcGlja1JhbmRvbShhcnJheTogYW55W10pOiBhbnkge1xuICAgICAgICByZXR1cm4gYXJyYXlbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYXJyYXkubGVuZ3RoKV07XG4gICAgfVxuXG5cbiAgICBzdGF0aWMgaW5zZXJ0KGFycmF5OiBhbnlbXSwgaW5kZXgsIC4uLnJlc3QpIHtcbiAgICAgICAgYXJyYXkuc3BsaWNlLmFwcGx5KGFycmF5LCBbaW5kZXgsIDBdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyZXN0LCAxKSkpO1xuICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJhbmdlKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShtYXggLSBtaW4pLmZpbGwoMSkubWFwKChkLCBpKSA9PiBpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZmlsdGVyKGFycmF5OiBhbnlbXSwgZmlsdGVyczogYW55W10pOiBhbnlbXSB7XG4gICAgICAgIGlmIChmaWx0ZXJzID09IG51bGwgfHwgZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYW1kYSA9IChpdGVtKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVycy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGYgPSBmaWx0ZXJzW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChmICE9PSAnQU5EJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFscyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXQgPSBmLmZpZWxkLm1hdGNoKC9cXFtcXDooLio/KVxcXS8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG10ICYmIG10Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwMSA9IGYuZmllbGQucmVwbGFjZShtdFswXSwgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAyID0gbXRbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcCA9IEFYRmV0Y2hQcm9wKGl0ZW0sIHAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCBpbnN0YW5jZW9mIEFycmF5ICYmIHByb3AubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHMucHVzaCguLi5wcm9wLm1hcChtID0+IChBWEZldGNoUHJvcChtLCBwMikpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxzLnB1c2goQVhGZXRjaFByb3AoaXRlbSwgZi5maWVsZCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBqIGluIHZhbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFscy5oYXNPd25Qcm9wZXJ0eShqKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdjEgPSB2YWxzW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2MiA9IGYudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmLmRhdGFUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEgPSB2MS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChmLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VxdWFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHYxICYmIHYyKSAmJiB2MS50b0xvd2VyQ2FzZSgpID09PSB2Mi50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdub3QtZXF1YWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAhKCh2MSAmJiB2MikgJiYgdjEudG9Mb3dlckNhc2UoKSA9PT0gdjIudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKCh2MSAmJiB2MikgJiYgKHYxLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModjIudG9Mb3dlckNhc2UoKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbm90LWNvbnRhaW5zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gISgodjEgJiYgdjIpICYmICh2MS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHYyLnRvTG93ZXJDYXNlKCkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0LXdpdGgnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAoKHYxICYmIHYyKSAmJiAodjEudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHYyLnRvTG93ZXJDYXNlKCkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VuZC13aXRoJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKCh2MSAmJiB2MikgJiYgKHYxLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgodjIudG9Mb3dlckNhc2UoKSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaXMtZW1wdHknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MSA9PSBudWxsIHx8IHYxID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lzLW5vdC1lbXB0eSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICEodjEgPT0gbnVsbCB8fCB2MSA9PT0gdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGhlIGNvbmRpdGlvbiBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmLmRhdGFUeXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmLmRhdGFUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEgPSBOdW1iZXIodjEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChmLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VxdWFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjEgPT09IHYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdub3QtZXF1YWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MSAhPT0gdjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjIgJiYgdjIgaW5zdGFuY2VvZiBBcnJheSAmJiB2Mi5pbmNsdWRlcyh2MSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xlc3MtdGhhbic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHYxIDwgdjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xlc3MtdGhhbi1lcXVhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHYxIDw9IHYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmVhdGVyLXRoYW4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MSA+IHYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmVhdGVyLXRoYW4tZXF1YWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MSA+PSB2MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaXMtZW1wdHknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MSA9PSBudWxsIHx8IHYxID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lzLW5vdC1lbXB0eSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICEodjEgPT0gbnVsbCB8fCB2MSA9PT0gdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGhlIGNvbmRpdGlvbiBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBkYXRhdHlwZSBpcyBub3Qgc3VwcG9ydGVkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBhcnJheS5maWx0ZXIobGFtZGEpO1xuICAgIH1cblxufVxuXG5cblxuXG5cbiJdfQ==