@acorex/core 6.5.29 → 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 (100) hide show
  1. package/README.md +3 -3
  2. package/acorex-core.d.ts +5 -5
  3. package/esm2020/acorex-core.mjs +4 -4
  4. package/esm2020/lib/classes/base-page.class.mjs +28 -28
  5. package/esm2020/lib/classes/color.class.mjs +49 -49
  6. package/esm2020/lib/classes/datetime.class.mjs +314 -314
  7. package/esm2020/lib/classes/menu.class.mjs +27 -27
  8. package/esm2020/lib/classes/navigator.class.mjs +2 -2
  9. package/esm2020/lib/classes/popup.class.mjs +2 -2
  10. package/esm2020/lib/classes/promise.class.mjs +19 -19
  11. package/esm2020/lib/classes/sectionlist.class.mjs +2 -2
  12. package/esm2020/lib/classes/select.class.mjs +3 -3
  13. package/esm2020/lib/core.module.mjs +27 -27
  14. package/esm2020/lib/error/error.class.mjs +2 -2
  15. package/esm2020/lib/error/error.module.mjs +19 -19
  16. package/esm2020/lib/error/error.service.mjs +21 -21
  17. package/esm2020/lib/events/keyboard.mjs +2 -2
  18. package/esm2020/lib/http/http-error.class.mjs +2 -2
  19. package/esm2020/lib/http/http-events.interceptor.mjs +3 -3
  20. package/esm2020/lib/http/http-request.class.mjs +2 -2
  21. package/esm2020/lib/http/http-result.class.mjs +21 -21
  22. package/esm2020/lib/http/http.module.mjs +37 -37
  23. package/esm2020/lib/http/http.service.mjs +145 -145
  24. package/esm2020/lib/locale/en.json +255 -255
  25. package/esm2020/lib/locale/fa.json +245 -245
  26. package/esm2020/lib/pipe/datetime.pipe.mjs +25 -25
  27. package/esm2020/lib/pipe/htmlToText.pipe.mjs +25 -25
  28. package/esm2020/lib/platform/index.mjs +1 -1
  29. package/esm2020/lib/platform/platform.service.mjs +150 -150
  30. package/esm2020/lib/services/config.mjs +29 -29
  31. package/esm2020/lib/services/event.service.mjs +36 -36
  32. package/esm2020/lib/services/navigator.service.mjs +10 -10
  33. package/esm2020/lib/services/storage.service.mjs +16 -16
  34. package/esm2020/lib/translator/translator.mjs +26 -26
  35. package/esm2020/lib/translator/translator.module.mjs +25 -25
  36. package/esm2020/lib/translator/translator.pipe.mjs +24 -24
  37. package/esm2020/lib/translator/translator.service.mjs +21 -21
  38. package/esm2020/lib/utils/array/array-util.mjs +133 -133
  39. package/esm2020/lib/utils/html/html-util.mjs +192 -192
  40. package/esm2020/lib/utils/html/html.module.mjs +19 -19
  41. package/esm2020/lib/utils/math/math-util.mjs +6 -6
  42. package/esm2020/lib/utils/object/object-util.mjs +83 -83
  43. package/esm2020/lib/utils/render/on-demand-preload-strategy.service.mjs +20 -20
  44. package/esm2020/lib/utils/render/render.service.mjs +103 -103
  45. package/esm2020/lib/utils/render/rendering.module.mjs +35 -35
  46. package/esm2020/lib/utils/scroll/scroll.directive.mjs +54 -54
  47. package/esm2020/lib/utils/scroll/scroll.module.mjs +19 -19
  48. package/esm2020/lib/utils/separator/separator.module.mjs +19 -19
  49. package/esm2020/lib/utils/separator/separator.pipe.mjs +33 -33
  50. package/esm2020/public-api.mjs +44 -44
  51. package/fesm2015/acorex-core.mjs +2162 -2162
  52. package/fesm2015/acorex-core.mjs.map +1 -1
  53. package/fesm2020/acorex-core.mjs +1651 -1651
  54. package/fesm2020/acorex-core.mjs.map +1 -1
  55. package/lib/classes/base-page.class.d.ts +13 -13
  56. package/lib/classes/color.class.d.ts +17 -17
  57. package/lib/classes/datetime.class.d.ts +63 -63
  58. package/lib/classes/menu.class.d.ts +34 -34
  59. package/lib/classes/navigator.class.d.ts +5 -5
  60. package/lib/classes/popup.class.d.ts +12 -12
  61. package/lib/classes/promise.class.d.ts +7 -7
  62. package/lib/classes/sectionlist.class.d.ts +8 -8
  63. package/lib/classes/select.class.d.ts +7 -7
  64. package/lib/core.module.d.ts +9 -9
  65. package/lib/error/error.class.d.ts +4 -4
  66. package/lib/error/error.module.d.ts +7 -7
  67. package/lib/error/error.service.d.ts +13 -13
  68. package/lib/events/keyboard.d.ts +2 -2
  69. package/lib/http/http-error.class.d.ts +7 -7
  70. package/lib/http/http-events.interceptor.d.ts +10 -10
  71. package/lib/http/http-request.class.d.ts +14 -14
  72. package/lib/http/http-result.class.d.ts +11 -11
  73. package/lib/http/http.module.d.ts +10 -10
  74. package/lib/http/http.service.d.ts +23 -23
  75. package/lib/pipe/datetime.pipe.d.ts +8 -8
  76. package/lib/pipe/htmlToText.pipe.d.ts +7 -7
  77. package/lib/platform/index.d.ts +1 -1
  78. package/lib/platform/platform.service.d.ts +26 -26
  79. package/lib/services/config.d.ts +9 -9
  80. package/lib/services/event.service.d.ts +9 -9
  81. package/lib/services/navigator.service.d.ts +8 -8
  82. package/lib/services/storage.service.d.ts +7 -7
  83. package/lib/translator/translator.d.ts +9 -9
  84. package/lib/translator/translator.module.d.ts +8 -8
  85. package/lib/translator/translator.pipe.d.ts +8 -8
  86. package/lib/translator/translator.service.d.ts +8 -8
  87. package/lib/utils/array/array-util.d.ts +6 -6
  88. package/lib/utils/html/html-util.d.ts +62 -62
  89. package/lib/utils/html/html.module.d.ts +8 -8
  90. package/lib/utils/math/math-util.d.ts +3 -3
  91. package/lib/utils/object/object-util.d.ts +7 -7
  92. package/lib/utils/render/on-demand-preload-strategy.service.d.ts +10 -10
  93. package/lib/utils/render/render.service.d.ts +18 -18
  94. package/lib/utils/render/rendering.module.d.ts +8 -8
  95. package/lib/utils/scroll/scroll.directive.d.ts +18 -18
  96. package/lib/utils/scroll/scroll.module.d.ts +8 -8
  97. package/lib/utils/separator/separator.module.d.ts +8 -8
  98. package/lib/utils/separator/separator.pipe.d.ts +8 -8
  99. package/package.json +2 -2
  100. package/public-api.d.ts +43 -43
@@ -1,150 +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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QyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztJQUN6RyxDQUFDO0lBR0QsV0FBVztRQUNQLE9BQU8sTUFBTSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2xELENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM5QixDQUFDO0lBRUQsRUFBRSxDQUFDLElBQStEO1FBQzlELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBRUQsY0FBYztRQUNWLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUVsQyxDQUFDO0lBRUQsZUFBZTtRQUNYLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLFFBQVEsQ0FBQyxhQUFhLENBQWMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDL0csQ0FBQzs7d0dBbkNRLFVBQVU7NEdBQVYsVUFBVSxjQUZQLE1BQU07NEZBRVQsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgZnJvbSwgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuXHJcbmV4cG9ydCB0eXBlIEFYUGxhdGZvcm1zID0gJ0FuZHJvaWQnIHwgJ0Rlc2t0b3AnIHwgJ2lPUycgfCAnTW9iaWxlJyB8ICcnO1xyXG5leHBvcnQgdHlwZSBBWEJyb3dzZXJzID0gJ0Nocm9tZScgfCAnU2FmYXJpJyB8ICdFZGdlJyB8ICdGaXJlZm94JyB8ICdPcGVyYScgfCAnTVNJRSc7XHJcbmV4cG9ydCB0eXBlIEFYVGVjaG5vbG9naWVzID0gJ1BXQScgfCAnSHlicmlkJyB8ICdFbGVjdHJvbic7XHJcbmV4cG9ydCB0eXBlIEFYU2NyZWVuU2l6ZXMgPSAnU00nIHwgJ01EJyB8ICdMRycgfCAnWEwnIHwgJzJYTCc7XHJcblxyXG5cclxuXHJcbmNvbnN0IGlzQ2hyb21lID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PlxyXG4gICAgdGVzdFVzZXJBZ2VudCh3aW4sIC9DaHJvbWUvaSk7XHJcblxyXG5jb25zdCBpc0ZpcmVmb3ggPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+XHJcbiAgICB0ZXN0VXNlckFnZW50KHdpbiwgL0ZpcmVmb3gvaSk7XHJcblxyXG5jb25zdCBpc0VkZ2UgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+XHJcbiAgICB0ZXN0VXNlckFnZW50KHdpbiwgL0VkZ2UvaSk7XHJcblxyXG5jb25zdCBpc1NhZmFyaSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT5cclxuICAgIHRlc3RVc2VyQWdlbnQod2luLCAvU2FmYXJpL2kpO1xyXG5cclxuY29uc3QgaXNPcGVyYSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT5cclxuICAgIHRlc3RVc2VyQWdlbnQod2luLCAvT3BlcmEvaSkgfHwgdGVzdFVzZXJBZ2VudCh3aW4sIC9PUFIvaSk7XHJcblxyXG5jb25zdCBpc01TSUUgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+XHJcbiAgICB0ZXN0VXNlckFnZW50KHdpbiwgL01TSUUvaSkgfHwgdGVzdFVzZXJBZ2VudCh3aW4sIC9UcmlkZW50L2kpO1xyXG5cclxuXHJcbmNvbnN0IGlzTW9iaWxlV2ViID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PlxyXG4gICAgaXNNb2JpbGUod2luKSAmJiAhaXNIeWJyaWQod2luKTtcclxuXHJcbmNvbnN0IGlzSXBhZCA9ICh3aW46IFdpbmRvdykgPT4ge1xyXG4gICAgLy8gaU9TIDEyIGFuZCBiZWxvd1xyXG4gICAgaWYgKHRlc3RVc2VyQWdlbnQod2luLCAvaVBhZC9pKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlPUyAxMytcclxuICAgIGlmICh0ZXN0VXNlckFnZW50KHdpbiwgL01hY2ludG9zaC9pKSAmJiBpc01vYmlsZSh3aW4pKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59O1xyXG5cclxuY29uc3QgaXNJcGhvbmUgPSAod2luOiBXaW5kb3cpID0+XHJcbiAgICB0ZXN0VXNlckFnZW50KHdpbiwgL2lQaG9uZS9pKTtcclxuXHJcbmNvbnN0IGlzSU9TID0gKHdpbjogV2luZG93KSA9PlxyXG4gICAgdGVzdFVzZXJBZ2VudCh3aW4sIC9pUGhvbmV8aVBvZC9pKSB8fCBpc0lwYWQod2luKTtcclxuXHJcbmNvbnN0IGlzQW5kcm9pZCA9ICh3aW46IFdpbmRvdykgPT5cclxuICAgIHRlc3RVc2VyQWdlbnQod2luLCAvYW5kcm9pZHxzaW5rL2kpO1xyXG5cclxuY29uc3QgaXNBbmRyb2lkVGFibGV0ID0gKHdpbjogV2luZG93KSA9PiB7XHJcbiAgICByZXR1cm4gaXNBbmRyb2lkKHdpbikgJiYgIXRlc3RVc2VyQWdlbnQod2luLCAvbW9iaWxlL2kpO1xyXG59O1xyXG5cclxuY29uc3QgaXNQaGFibGV0ID0gKHdpbjogV2luZG93KSA9PiB7XHJcbiAgICBjb25zdCB3aWR0aCA9IHdpbi5pbm5lcldpZHRoO1xyXG4gICAgY29uc3QgaGVpZ2h0ID0gd2luLmlubmVySGVpZ2h0O1xyXG4gICAgY29uc3Qgc21hbGxlc3QgPSBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KTtcclxuICAgIGNvbnN0IGxhcmdlc3QgPSBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KTtcclxuXHJcbiAgICByZXR1cm4gKHNtYWxsZXN0ID4gMzkwICYmIHNtYWxsZXN0IDwgNTIwKSAmJlxyXG4gICAgICAgIChsYXJnZXN0ID4gNjIwICYmIGxhcmdlc3QgPCA4MDApO1xyXG59O1xyXG5cclxuY29uc3QgaXNUYWJsZXQgPSAod2luOiBXaW5kb3cpID0+IHtcclxuICAgIGNvbnN0IHdpZHRoID0gd2luLmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCBoZWlnaHQgPSB3aW4uaW5uZXJIZWlnaHQ7XHJcbiAgICBjb25zdCBzbWFsbGVzdCA9IE1hdGgubWluKHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgY29uc3QgbGFyZ2VzdCA9IE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgaXNJcGFkKHdpbikgfHxcclxuICAgICAgICBpc0FuZHJvaWRUYWJsZXQod2luKSB8fFxyXG4gICAgICAgIChcclxuICAgICAgICAgICAgKHNtYWxsZXN0ID4gNDYwICYmIHNtYWxsZXN0IDwgODIwKSAmJlxyXG4gICAgICAgICAgICAobGFyZ2VzdCA+IDc4MCAmJiBsYXJnZXN0IDwgMTQwMClcclxuICAgICAgICApXHJcbiAgICApO1xyXG59O1xyXG5cclxuY29uc3QgaXNNb2JpbGUgPSAod2luOiBXaW5kb3cpID0+XHJcbiAgICBtYXRjaE1lZGlhKHdpbiwgJyhhbnktcG9pbnRlcjpjb2Fyc2UpJyk7XHJcblxyXG5jb25zdCBpc1RvdWNoID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhhbnktcG9pbnRlcjpjb2Fyc2UpJyk7XHJcblxyXG5jb25zdCBpc0Rlc2t0b3AgPSAod2luOiBXaW5kb3cpID0+XHJcbiAgICAhaXNNb2JpbGUod2luKTtcclxuXHJcbmNvbnN0IGlzSHlicmlkID0gKHdpbjogV2luZG93KSA9PlxyXG4gICAgaXNDb3Jkb3ZhKHdpbikgfHwgaXNDYXBhY2l0b3JOYXRpdmUod2luKTtcclxuXHJcbmNvbnN0IGlzQ29yZG92YSA9ICh3aW46IGFueSk6IGJvb2xlYW4gPT5cclxuICAgICEhKHdpblsnY29yZG92YSddIHx8IHdpblsncGhvbmVnYXAnXSB8fCB3aW5bJ1Bob25lR2FwJ10pO1xyXG5cclxuY29uc3QgaXNDYXBhY2l0b3JOYXRpdmUgPSAod2luOiBhbnkpOiBib29sZWFuID0+IHtcclxuICAgIGNvbnN0IGNhcGFjaXRvciA9IHdpblsnQ2FwYWNpdG9yJ107XHJcbiAgICByZXR1cm4gISEoY2FwYWNpdG9yICYmIGNhcGFjaXRvci5pc05hdGl2ZSk7XHJcbn07XHJcblxyXG5jb25zdCBpc0VsZWN0cm9uID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PlxyXG4gICAgdGVzdFVzZXJBZ2VudCh3aW4sIC9lbGVjdHJvbi9pKTtcclxuXHJcbmNvbnN0IGlzUFdBID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PlxyXG4gICAgISEod2luLm1hdGNoTWVkaWEoJyhkaXNwbGF5LW1vZGU6IHN0YW5kYWxvbmUpJykubWF0Y2hlcyB8fCAod2luLm5hdmlnYXRvciBhcyBhbnkpLnN0YW5kYWxvbmUpO1xyXG5cclxuZXhwb3J0IGNvbnN0IHRlc3RVc2VyQWdlbnQgPSAod2luOiBXaW5kb3csIGV4cHI6IFJlZ0V4cCkgPT5cclxuICAgIGV4cHIudGVzdCh3aW4ubmF2aWdhdG9yLnVzZXJBZ2VudCk7XHJcblxyXG5jb25zdCBtYXRjaE1lZGlhID0gKHdpbjogV2luZG93LCBxdWVyeTogc3RyaW5nKTogYm9vbGVhbiA9PlxyXG4gICAgd2luLm1hdGNoTWVkaWEocXVlcnkpLm1hdGNoZXM7XHJcblxyXG5jb25zdCBpc1NNU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDY0MHB4KScpO1xyXG5jb25zdCBpc01EU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDc2OHB4KScpO1xyXG5jb25zdCBpc0xHU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDEwMjRweCknKTtcclxuY29uc3QgaXNYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAxMjgwcHgpJyk7XHJcbmNvbnN0IGlzMlhMU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDE1MzZweCknKTtcclxuXHJcbmNvbnN0IFBMQVRGT1JNU19NQVAgPSB7XHJcbiAgICAnQW5kcm9pZCc6IGlzQW5kcm9pZCxcclxuICAgICdpT1MnOiBpc0lPUyxcclxuICAgICdEZXNrdG9wJzogaXNEZXNrdG9wLFxyXG4gICAgJ01vYmlsZSc6IGlzTW9iaWxlLFxyXG4gICAgJ1RvdWNoJzogaXNUb3VjaCxcclxuICAgICdDaHJvbWUnOiBpc0Nocm9tZSxcclxuICAgICdGaXJlZm94JzogaXNGaXJlZm94LFxyXG4gICAgJ1NhZmFyaSc6IGlzU2FmYXJpLFxyXG4gICAgJ0VkZ2UnOiBpc0VkZ2UsXHJcbiAgICAnT3BlcmEnOiBpc09wZXJhLFxyXG4gICAgJ0h5YnJpZCc6IGlzSHlicmlkLFxyXG4gICAgJ1BXQSc6IGlzUFdBLFxyXG4gICAgJ0VsZWN0cm9uJzogaXNFbGVjdHJvbixcclxuICAgIFNNOiBpc1NNU2NyZWVuLFxyXG4gICAgTUQ6IGlzTURTY3JlZW4sXHJcbiAgICBMRzogaXNMR1NjcmVlbixcclxuICAgIFhMOiBpc1hMU2NyZWVuLFxyXG4gICAgXCIyWExcIjogaXMyWExTY3JlZW4sXHJcbn07XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEFYUGxhdGZvcm1FdmVudCB7XHJcbiAgICBuYXRpdmVFdmVudDogVUlFdmVudCB8IEV2ZW50O1xyXG4gICAgc291cmNlOiBBWFBsYXRmb3JtXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYUGxhdGZvcm0ge1xyXG4gICAgcmVzaXplOiBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4gPSBuZXcgU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+KCk7XHJcbiAgICBjbGljazogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpXHJcbiAgICBzY3JvbGw6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKVxyXG5cclxuICAgIGlzUnRsKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBkb2N1bWVudC5kaXIgPT0gJ3J0bCcgfHwgZG9jdW1lbnQuYm9keS5kaXIgPT0gJ3J0bCcgfHwgZG9jdW1lbnQuYm9keS5zdHlsZS5kaXJlY3Rpb24gPT0gJ3J0bCc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlzTGFuZHNjYXBlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQgPCB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgIH1cclxuXHJcbiAgICBpc1BvcnRyYXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5pc0xhbmRzY2FwZSgpXHJcbiAgICB9XHJcblxyXG4gICAgaXMobmFtZTogQVhQbGF0Zm9ybXMgfCBBWEJyb3dzZXJzIHwgQVhUZWNobm9sb2dpZXMgfCBBWFNjcmVlblNpemVzKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIFBMQVRGT1JNU19NQVBbbmFtZV0od2luZG93KSB8fCBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2hEYXJrTW9kZSgpIHtcclxuICAgICAgICBjb25zdCBfaHRtbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaHRtbFwiKVswXTtcclxuICAgICAgICBfaHRtbC5jbGFzc0xpc3QuYWRkKCdheC1kYXJrJylcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoTGlnaHRNb2RlKCkge1xyXG4gICAgICAgIGNvbnN0IF9odG1sID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJodG1sXCIpWzBdO1xyXG4gICAgICAgIF9odG1sLmNsYXNzTGlzdC5yZW1vdmUoJ2F4LWRhcmsnKVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NldEZ1bGxIZWlnaHRSYXRpbygpIHtcclxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignOnJvb3QnKS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1heC12aCcsIHdpbmRvdy5pbm5lckhlaWdodCAvIDEwMCArICdweCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG5cclxuICAgICAgICBmcm9tRXZlbnQ8VUlFdmVudD4od2luZG93LCAncmVzaXplJylcclxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXHJcbiAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBlLFxyXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpc1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0RnVsbEhlaWdodFJhdGlvKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsaWNrLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXHJcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgdHJ1ZSlcclxuXHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKGUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGwubmV4dCh7XHJcbiAgICAgICAgICAgICAgICBuYXRpdmVFdmVudDogZSxcclxuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LCB0cnVlKTtcclxuICAgICAgICAvLyBpbml0IGZ1bmN0aW9uc1xyXG4gICAgICAgIHRoaXMuX3NldEZ1bGxIZWlnaHRSYXRpbygpO1xyXG4gICAgfVxyXG59Il19
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
@@ -1,29 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNFLFdBQVc7QUFDWCxNQUFNLE9BQU8sUUFBUTtJQUtqQixNQUFNLEtBQUssUUFBUTtRQUNmLE9BQU8sUUFBUSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFJRCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVUsRUFBRSxJQUFVO1FBRTdCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLFFBQVEsRUFBRTtZQUNqQyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEQsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4QyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2hCLE9BQU8sUUFBUSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3BEO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBWTtRQUNuQixPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7O0FBN0JjLGtCQUFTLEdBQVEsRUFBRSxDQUFDO0FBQ3BCLDBCQUFpQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGdldFByb3BCeVBhdGgsIHNldFByb3BCeVBhdGggfSBmcm9tICcuLi91dGlscy9vYmplY3Qvb2JqZWN0LXV0aWwnO1xyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEFYQ29uZmlnIHtcclxuICAgIHByaXZhdGUgc3RhdGljIGRhdGFNb2RlbDogYW55ID0ge307XHJcbiAgICBwcml2YXRlIHN0YXRpYyBkYXRhQ2hhbmdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHJcblxyXG4gICAgc3RhdGljIGdldCBvbkNoYW5nZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBBWENvbmZpZy5kYXRhQ2hhbmdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2V0KGNvbmZpZzogYW55KTogYW55O1xyXG4gICAgc3RhdGljIHNldChwYXRoOiBzdHJpbmcsIHZhbHVlPzogYW55KTogdm9pZDtcclxuICAgIHN0YXRpYyBzZXQoYXJnMT86IGFueSwgYXJnMj86IGFueSkge1xyXG5cclxuICAgICAgICBpZiAoYXJnMSAmJiB0eXBlb2YgYXJnMSA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBzZXRQcm9wQnlQYXRoKEFYQ29uZmlnLmRhdGFNb2RlbCwgYXJnMSwgYXJnMik7XHJcbiAgICAgICAgICAgIEFYQ29uZmlnLmRhdGFDaGFuZ2VTdWJqZWN0Lm5leHQoQVhDb25maWcuZGF0YU1vZGVsKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYXJnMSAmJiB0eXBlb2YgYXJnMSA9PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKEFYQ29uZmlnLmRhdGFNb2RlbCwgYXJnMSk7XHJcbiAgICAgICAgICAgIEFYQ29uZmlnLmRhdGFDaGFuZ2VTdWJqZWN0Lm5leHQoQVhDb25maWcuZGF0YU1vZGVsKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWFyZzEgJiYgIWFyZzIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIEFYQ29uZmlnLmRhdGFDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0KHBhdGg6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIGdldFByb3BCeVBhdGgoQVhDb25maWcuZGF0YU1vZGVsLCBwYXRoKTtcclxuICAgIH1cclxufSJdfQ==
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
@@ -1,36 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3NyYy9saWIvc2VydmljZXMvZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVZLFNBQUksR0FBVSxFQUFFLENBQUM7S0EwQjVCO0lBeEJVLFNBQVMsQ0FBQyxHQUFXLEVBQUUsT0FBYTtRQUN2QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEVBQUU7WUFDSCxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDakIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFTSxFQUFFLENBQUMsR0FBVyxFQUFFLFFBQWlDO1FBQ3BELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQjtRQUNELENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVyxFQUFFLFFBQWlDO1FBQ3pELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsRUFBRTtZQUNILENBQUMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQzs7NEdBMUJRLGNBQWM7Z0hBQWQsY0FBYyxjQURELE1BQU07NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEFYRXZlbnRTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgbGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgICBwdWJsaWMgYnJvYWRjYXN0KGtleTogc3RyaW5nLCBvcHRpb25zPzogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZCA9IHRoaXMubGlzdC5maW5kKGMgPT4gYy5rZXkgPT09IGtleSk7XHJcbiAgICAgICAgaWYgKGQpIHtcclxuICAgICAgICAgICAgZC5ldmVudHMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICAgICAgICAgIGMob3B0aW9ucyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb24oa2V5OiBzdHJpbmcsIGNhbGxiYWNrOiAob3B0aW9ucz86IGFueSkgPT4gdm9pZCkge1xyXG4gICAgICAgIGxldCBkID0gdGhpcy5saXN0LmZpbmQoYyA9PiBjLmtleSA9PT0ga2V5KTtcclxuICAgICAgICBpZiAoIWQpIHtcclxuICAgICAgICAgICAgZCA9IHsga2V5LCBldmVudHM6IFtdIH07XHJcbiAgICAgICAgICAgIHRoaXMubGlzdC5wdXNoKGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkLmV2ZW50cy5wdXNoKGNhbGxiYWNrKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGVzdHJveShrZXk6IHN0cmluZywgY2FsbGJhY2s6IChvcHRpb25zPzogYW55KSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZCA9IHRoaXMubGlzdC5maW5kKGMgPT4gYy5rZXkgPT09IGtleSk7XHJcbiAgICAgICAgaWYgKGQpIHtcclxuICAgICAgICAgICAgZC5ldmVudHMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
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==
@@ -1,10 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNDLE1BQU0sT0FBZ0IsV0FBVzs7eUdBQVgsV0FBVzs2R0FBWCxXQUFXOzRGQUFYLFdBQVc7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYTmF2aWdhdG9yUGFyYW0gfSBmcm9tICcuLi9jbGFzc2VzL25hdmlnYXRvci5jbGFzcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWE5hdmlnYXRvciB7XHJcbiAgICBhYnN0cmFjdCBuYXZpZ2F0ZShwYXJhbXM6IEFYTmF2aWdhdG9yUGFyYW0pO1xyXG4gICAgYWJzdHJhY3QgcG9wdXAocGFyYW1zOiBBWE5hdmlnYXRvclBhcmFtKTtcclxufSJdfQ==
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=
@@ -1,16 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUMxQixHQUFHLENBQUMsR0FBVztRQUNaLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQVEsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ3hCLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7OzhHQU5TLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBWFN0b3JhZ2VTZXJ2aWNlIHtcclxuICAgZ2V0KGtleTogc3RyaW5nKTogYW55IHtcclxuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkgYXMgYW55O1xyXG4gICB9XHJcbiAgIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlIGFzIHN0cmluZyk7XHJcbiAgIH1cclxufVxyXG4iXX0=
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==