@acorex/core 1.3.90

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 (147) hide show
  1. package/README.md +3 -0
  2. package/acorex-core.d.ts +4 -0
  3. package/acorex-core.metadata.json +1 -0
  4. package/bundles/acorex-core.umd.js +2539 -0
  5. package/bundles/acorex-core.umd.js.map +1 -0
  6. package/bundles/acorex-core.umd.min.js +17 -0
  7. package/bundles/acorex-core.umd.min.js.map +1 -0
  8. package/esm2015/acorex-core.js +5 -0
  9. package/esm2015/lib/classes/base-page.class.js +21 -0
  10. package/esm2015/lib/classes/color.class.js +49 -0
  11. package/esm2015/lib/classes/datetime.class.js +314 -0
  12. package/esm2015/lib/classes/menu.class.js +27 -0
  13. package/esm2015/lib/classes/navigator.class.js +1 -0
  14. package/esm2015/lib/classes/popup.class.js +1 -0
  15. package/esm2015/lib/classes/promise.class.js +19 -0
  16. package/esm2015/lib/classes/sectionlist.class.js +1 -0
  17. package/esm2015/lib/classes/select.class.js +3 -0
  18. package/esm2015/lib/core.module.js +24 -0
  19. package/esm2015/lib/error/error.class.js +1 -0
  20. package/esm2015/lib/error/error.module.js +16 -0
  21. package/esm2015/lib/error/error.service.js +25 -0
  22. package/esm2015/lib/events/keyboard.js +1 -0
  23. package/esm2015/lib/http/http-error.class.js +1 -0
  24. package/esm2015/lib/http/http-events.interceptor.js +3 -0
  25. package/esm2015/lib/http/http-request.class.js +1 -0
  26. package/esm2015/lib/http/http-result.class.js +21 -0
  27. package/esm2015/lib/http/http.module.js +29 -0
  28. package/esm2015/lib/http/http.service.js +149 -0
  29. package/esm2015/lib/locale/en.json +249 -0
  30. package/esm2015/lib/locale/fa.json +238 -0
  31. package/esm2015/lib/pipe/datetime.pipe.js +24 -0
  32. package/esm2015/lib/pipe/htmlToText.pipe.js +23 -0
  33. package/esm2015/lib/services/config.js +29 -0
  34. package/esm2015/lib/services/event.service.js +36 -0
  35. package/esm2015/lib/services/navigator.service.js +9 -0
  36. package/esm2015/lib/services/storage.service.js +15 -0
  37. package/esm2015/lib/translator/translator.js +26 -0
  38. package/esm2015/lib/translator/translator.module.js +23 -0
  39. package/esm2015/lib/translator/translator.pipe.js +23 -0
  40. package/esm2015/lib/translator/translator.service.js +21 -0
  41. package/esm2015/lib/utils/array/array-util.js +133 -0
  42. package/esm2015/lib/utils/html/html-util.js +192 -0
  43. package/esm2015/lib/utils/html/html.module.js +16 -0
  44. package/esm2015/lib/utils/math/math-util.js +6 -0
  45. package/esm2015/lib/utils/object/object-util.js +83 -0
  46. package/esm2015/lib/utils/render/on-demand-preload-strategy.service.js +21 -0
  47. package/esm2015/lib/utils/render/render.service.js +112 -0
  48. package/esm2015/lib/utils/render/rendering.module.js +26 -0
  49. package/esm2015/lib/utils/scroll/scroll.directive.js +66 -0
  50. package/esm2015/lib/utils/scroll/scroll.module.js +16 -0
  51. package/esm2015/lib/utils/separator/separator.module.js +16 -0
  52. package/esm2015/lib/utils/separator/separator.pipe.js +22 -0
  53. package/esm2015/public-api.js +36 -0
  54. package/esm5/acorex-core.js +5 -0
  55. package/esm5/lib/classes/base-page.class.js +23 -0
  56. package/esm5/lib/classes/color.class.js +54 -0
  57. package/esm5/lib/classes/datetime.class.js +390 -0
  58. package/esm5/lib/classes/menu.class.js +42 -0
  59. package/esm5/lib/classes/navigator.class.js +1 -0
  60. package/esm5/lib/classes/popup.class.js +1 -0
  61. package/esm5/lib/classes/promise.class.js +22 -0
  62. package/esm5/lib/classes/sectionlist.class.js +1 -0
  63. package/esm5/lib/classes/select.class.js +7 -0
  64. package/esm5/lib/core.module.js +27 -0
  65. package/esm5/lib/error/error.class.js +1 -0
  66. package/esm5/lib/error/error.module.js +19 -0
  67. package/esm5/lib/error/error.service.js +26 -0
  68. package/esm5/lib/events/keyboard.js +1 -0
  69. package/esm5/lib/http/http-error.class.js +1 -0
  70. package/esm5/lib/http/http-events.interceptor.js +3 -0
  71. package/esm5/lib/http/http-request.class.js +1 -0
  72. package/esm5/lib/http/http-result.class.js +24 -0
  73. package/esm5/lib/http/http.module.js +33 -0
  74. package/esm5/lib/http/http.service.js +157 -0
  75. package/esm5/lib/locale/en.json +249 -0
  76. package/esm5/lib/locale/fa.json +238 -0
  77. package/esm5/lib/pipe/datetime.pipe.js +26 -0
  78. package/esm5/lib/pipe/htmlToText.pipe.js +26 -0
  79. package/esm5/lib/services/config.js +37 -0
  80. package/esm5/lib/services/event.service.js +37 -0
  81. package/esm5/lib/services/navigator.service.js +12 -0
  82. package/esm5/lib/services/storage.service.js +18 -0
  83. package/esm5/lib/translator/translator.js +34 -0
  84. package/esm5/lib/translator/translator.module.js +24 -0
  85. package/esm5/lib/translator/translator.pipe.js +25 -0
  86. package/esm5/lib/translator/translator.service.js +24 -0
  87. package/esm5/lib/utils/array/array-util.js +147 -0
  88. package/esm5/lib/utils/html/html-util.js +224 -0
  89. package/esm5/lib/utils/html/html.module.js +19 -0
  90. package/esm5/lib/utils/math/math-util.js +10 -0
  91. package/esm5/lib/utils/object/object-util.js +88 -0
  92. package/esm5/lib/utils/render/on-demand-preload-strategy.service.js +22 -0
  93. package/esm5/lib/utils/render/render.service.js +117 -0
  94. package/esm5/lib/utils/render/rendering.module.js +29 -0
  95. package/esm5/lib/utils/scroll/scroll.directive.js +68 -0
  96. package/esm5/lib/utils/scroll/scroll.module.js +19 -0
  97. package/esm5/lib/utils/separator/separator.module.js +19 -0
  98. package/esm5/lib/utils/separator/separator.pipe.js +25 -0
  99. package/esm5/public-api.js +36 -0
  100. package/fesm2015/acorex-core.js +2057 -0
  101. package/fesm2015/acorex-core.js.map +1 -0
  102. package/fesm5/acorex-core.js +2274 -0
  103. package/fesm5/acorex-core.js.map +1 -0
  104. package/lib/classes/base-page.class.d.ts +10 -0
  105. package/lib/classes/color.class.d.ts +17 -0
  106. package/lib/classes/datetime.class.d.ts +63 -0
  107. package/lib/classes/menu.class.d.ts +33 -0
  108. package/lib/classes/navigator.class.d.ts +5 -0
  109. package/lib/classes/popup.class.d.ts +12 -0
  110. package/lib/classes/promise.class.d.ts +7 -0
  111. package/lib/classes/sectionlist.class.d.ts +8 -0
  112. package/lib/classes/select.class.d.ts +7 -0
  113. package/lib/core.module.d.ts +2 -0
  114. package/lib/error/error.class.d.ts +4 -0
  115. package/lib/error/error.module.d.ts +2 -0
  116. package/lib/error/error.service.d.ts +10 -0
  117. package/lib/events/keyboard.d.ts +2 -0
  118. package/lib/http/http-error.class.d.ts +7 -0
  119. package/lib/http/http-events.interceptor.d.ts +10 -0
  120. package/lib/http/http-request.class.d.ts +14 -0
  121. package/lib/http/http-result.class.d.ts +11 -0
  122. package/lib/http/http.module.d.ts +4 -0
  123. package/lib/http/http.service.d.ts +20 -0
  124. package/lib/pipe/datetime.pipe.d.ts +5 -0
  125. package/lib/pipe/htmlToText.pipe.d.ts +4 -0
  126. package/lib/services/config.d.ts +9 -0
  127. package/lib/services/event.service.d.ts +6 -0
  128. package/lib/services/navigator.service.d.ts +5 -0
  129. package/lib/services/storage.service.d.ts +4 -0
  130. package/lib/translator/translator.d.ts +9 -0
  131. package/lib/translator/translator.module.d.ts +3 -0
  132. package/lib/translator/translator.pipe.d.ts +5 -0
  133. package/lib/translator/translator.service.d.ts +5 -0
  134. package/lib/utils/array/array-util.d.ts +6 -0
  135. package/lib/utils/html/html-util.d.ts +62 -0
  136. package/lib/utils/html/html.module.d.ts +2 -0
  137. package/lib/utils/math/math-util.d.ts +3 -0
  138. package/lib/utils/object/object-util.d.ts +7 -0
  139. package/lib/utils/render/on-demand-preload-strategy.service.d.ts +7 -0
  140. package/lib/utils/render/render.service.d.ts +14 -0
  141. package/lib/utils/render/rendering.module.d.ts +4 -0
  142. package/lib/utils/scroll/scroll.directive.d.ts +13 -0
  143. package/lib/utils/scroll/scroll.module.d.ts +2 -0
  144. package/lib/utils/separator/separator.module.d.ts +2 -0
  145. package/lib/utils/separator/separator.pipe.d.ts +4 -0
  146. package/package.json +23 -0
  147. package/public-api.d.ts +42 -0
@@ -0,0 +1,24 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Pipe } from '@angular/core';
3
+ import { AXDateTime } from '../classes/datetime.class';
4
+ let AXDateTimePipe = class AXDateTimePipe {
5
+ constructor() { }
6
+ transform(value, format) {
7
+ const date = AXDateTime.convert(value);
8
+ if (value == null) {
9
+ return '';
10
+ }
11
+ if (!format) {
12
+ return date.toString();
13
+ }
14
+ else {
15
+ return date.format(format);
16
+ }
17
+ }
18
+ };
19
+ AXDateTimePipe = __decorate([
20
+ Pipe({ name: 'dt' }),
21
+ __metadata("design:paramtypes", [])
22
+ ], AXDateTimePipe);
23
+ export { AXDateTimePipe };
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9waXBlL2RhdGV0aW1lLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBaUIsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd2RCxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFjO0lBQ3ZCLGdCQUFnQixDQUFDO0lBRWpCLFNBQVMsQ0FBQyxLQUFVLEVBQUUsTUFBZTtRQUNqQyxNQUFNLElBQUksR0FBZSxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNmLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDMUI7YUFDSTtZQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM5QjtJQUNMLENBQUM7Q0FDSixDQUFBO0FBZlksY0FBYztJQUQxQixJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7O0dBQ1IsY0FBYyxDQWUxQjtTQWZZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlVHJhbnNmb3JtLCBQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYRGF0ZVRpbWUgfSBmcm9tICcuLi9jbGFzc2VzL2RhdGV0aW1lLmNsYXNzJztcclxuXHJcbkBQaXBlKHsgbmFtZTogJ2R0JyB9KVxyXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGZvcm1hdD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgZGF0ZTogQVhEYXRlVGltZSA9IEFYRGF0ZVRpbWUuY29udmVydCh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWZvcm1hdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b1N0cmluZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KGZvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
@@ -0,0 +1,23 @@
1
+ import { __decorate } from "tslib";
2
+ import { Pipe } from '@angular/core';
3
+ let AXHtmlToTextPipe = class AXHtmlToTextPipe {
4
+ transform(value) {
5
+ if (value) {
6
+ const regexHtml = /<\/?[^>]+>/gi;
7
+ const regexNbsp = /&nbsp;/gi;
8
+ const regexAmp = /&amp;/gi;
9
+ return value
10
+ .replace(regexHtml, '')
11
+ .replace(regexNbsp, '')
12
+ .replace(regexAmp, '');
13
+ }
14
+ else {
15
+ return '';
16
+ }
17
+ }
18
+ };
19
+ AXHtmlToTextPipe = __decorate([
20
+ Pipe({ name: 'html2text' })
21
+ ], AXHtmlToTextPipe);
22
+ export { AXHtmlToTextPipe };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbFRvVGV4dC5waXBlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjb3JleC9jb3JlLyIsInNvdXJjZXMiOlsibGliL3BpcGUvaHRtbFRvVGV4dC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUdwRCxJQUFhLGdCQUFnQixHQUE3QixNQUFhLGdCQUFnQjtJQUMzQixTQUFTLENBQUMsS0FBYTtRQUNyQixJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQztZQUNqQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUM7WUFDN0IsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDO1lBQzNCLE9BQU8sS0FBSztpQkFDVCxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztpQkFDdEIsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7aUJBQ3RCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDMUI7YUFBTTtZQUNMLE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQWRZLGdCQUFnQjtJQUQ1QixJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7R0FDZixnQkFBZ0IsQ0FjNUI7U0FkWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICdodG1sMnRleHQnIH0pXHJcbmV4cG9ydCBjbGFzcyBBWEh0bWxUb1RleHRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCByZWdleEh0bWwgPSAvPFxcLz9bXj5dKz4vZ2k7XHJcbiAgICAgIGNvbnN0IHJlZ2V4TmJzcCA9IC8mbmJzcDsvZ2k7XHJcbiAgICAgIGNvbnN0IHJlZ2V4QW1wID0gLyZhbXA7L2dpO1xyXG4gICAgICByZXR1cm4gdmFsdWVcclxuICAgICAgICAucmVwbGFjZShyZWdleEh0bWwsICcnKVxyXG4gICAgICAgIC5yZXBsYWNlKHJlZ2V4TmJzcCwgJycpXHJcbiAgICAgICAgLnJlcGxhY2UocmVnZXhBbXAsICcnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjb3JleC9jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0UsV0FBVztBQUNYLE1BQU0sT0FBTyxRQUFRO0lBS2pCLE1BQU0sS0FBSyxRQUFRO1FBQ2YsT0FBTyxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUlELE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBVSxFQUFFLElBQVU7UUFFN0IsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ2pDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5QyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDakMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BELE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDaEIsT0FBTyxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDcEQ7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQ25CLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7QUE3QmMsa0JBQVMsR0FBUSxFQUFFLENBQUM7QUFDcEIsMEJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZ2V0UHJvcEJ5UGF0aCwgc2V0UHJvcEJ5UGF0aCB9IGZyb20gJy4uL3V0aWxzL29iamVjdC9vYmplY3QtdXRpbCc7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgQVhDb25maWcge1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZGF0YU1vZGVsOiBhbnkgPSB7fTtcclxuICAgIHByaXZhdGUgc3RhdGljIGRhdGFDaGFuZ2VTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuXHJcbiAgICBzdGF0aWMgZ2V0IG9uQ2hhbmdlKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIEFYQ29uZmlnLmRhdGFDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzZXQoY29uZmlnOiBhbnkpOiBhbnk7XHJcbiAgICBzdGF0aWMgc2V0KHBhdGg6IHN0cmluZywgdmFsdWU/OiBhbnkpOiB2b2lkO1xyXG4gICAgc3RhdGljIHNldChhcmcxPzogYW55LCBhcmcyPzogYW55KSB7XHJcblxyXG4gICAgICAgIGlmIChhcmcxICYmIHR5cGVvZiBhcmcxID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHNldFByb3BCeVBhdGgoQVhDb25maWcuZGF0YU1vZGVsLCBhcmcxLCBhcmcyKTtcclxuICAgICAgICAgICAgQVhDb25maWcuZGF0YUNoYW5nZVN1YmplY3QubmV4dChBWENvbmZpZy5kYXRhTW9kZWwpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhcmcxICYmIHR5cGVvZiBhcmcxID09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oQVhDb25maWcuZGF0YU1vZGVsLCBhcmcxKTtcclxuICAgICAgICAgICAgQVhDb25maWcuZGF0YUNoYW5nZVN1YmplY3QubmV4dChBWENvbmZpZy5kYXRhTW9kZWwpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYXJnMSAmJiAhYXJnMikge1xyXG4gICAgICAgICAgICByZXR1cm4gQVhDb25maWcuZGF0YUNoYW5nZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQocGF0aDogc3RyaW5nKTogYW55IHtcclxuICAgICAgICByZXR1cm4gZ2V0UHJvcEJ5UGF0aChBWENvbmZpZy5kYXRhTW9kZWwsIHBhdGgpO1xyXG4gICAgfVxyXG59Il19
@@ -0,0 +1,36 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ let AXEventService = class AXEventService {
5
+ constructor() {
6
+ this.list = [];
7
+ }
8
+ broadcast(key, options) {
9
+ const d = this.list.find(c => c.key === key);
10
+ if (d) {
11
+ d.events.forEach(c => {
12
+ c(options);
13
+ });
14
+ }
15
+ }
16
+ on(key, callback) {
17
+ let d = this.list.find(c => c.key === key);
18
+ if (!d) {
19
+ d = { key, events: [] };
20
+ this.list.push(d);
21
+ }
22
+ d.events.push(callback);
23
+ }
24
+ destroy(key, callback) {
25
+ const d = this.list.find(c => c.key === key);
26
+ if (d) {
27
+ d.events = [];
28
+ }
29
+ }
30
+ };
31
+ AXEventService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AXEventService_Factory() { return new AXEventService(); }, token: AXEventService, providedIn: "root" });
32
+ AXEventService = __decorate([
33
+ Injectable({ providedIn: 'root' })
34
+ ], AXEventService);
35
+ export { AXEventService };
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9ldmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFjO0lBQTNCO1FBQ1ksU0FBSSxHQUFVLEVBQUUsQ0FBQztLQTBCNUI7SUF4QlUsU0FBUyxDQUFDLEdBQVcsRUFBRSxPQUFhO1FBQ3ZDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsRUFBRTtZQUNILENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNqQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVNLEVBQUUsQ0FBQyxHQUFXLEVBQUUsUUFBaUM7UUFDcEQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxHQUFXLEVBQUUsUUFBaUM7UUFDekQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxFQUFFO1lBQ0gsQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDakI7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7QUEzQlksY0FBYztJQUQxQixVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7R0FDdEIsY0FBYyxDQTJCMUI7U0EzQlksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBBWEV2ZW50U2VydmljZSB7XHJcbiAgICBwcml2YXRlIGxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gICAgcHVibGljIGJyb2FkY2FzdChrZXk6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmxpc3QuZmluZChjID0+IGMua2V5ID09PSBrZXkpO1xyXG4gICAgICAgIGlmIChkKSB7XHJcbiAgICAgICAgICAgIGQuZXZlbnRzLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjKG9wdGlvbnMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uKGtleTogc3RyaW5nLCBjYWxsYmFjazogKG9wdGlvbnM/OiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgICBsZXQgZCA9IHRoaXMubGlzdC5maW5kKGMgPT4gYy5rZXkgPT09IGtleSk7XHJcbiAgICAgICAgaWYgKCFkKSB7XHJcbiAgICAgICAgICAgIGQgPSB7IGtleSwgZXZlbnRzOiBbXSB9O1xyXG4gICAgICAgICAgICB0aGlzLmxpc3QucHVzaChkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZC5ldmVudHMucHVzaChjYWxsYmFjayk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlc3Ryb3koa2V5OiBzdHJpbmcsIGNhbGxiYWNrOiAob3B0aW9ucz86IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmxpc3QuZmluZChjID0+IGMua2V5ID09PSBrZXkpO1xyXG4gICAgICAgIGlmIChkKSB7XHJcbiAgICAgICAgICAgIGQuZXZlbnRzID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ let AXNavigator = class AXNavigator {
4
+ };
5
+ AXNavigator = __decorate([
6
+ Injectable()
7
+ ], AXNavigator);
8
+ export { AXNavigator };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWNvcmV4L2NvcmUvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvbmF2aWdhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsSUFBc0IsV0FBVyxHQUFqQyxNQUFzQixXQUFXO0NBR2hDLENBQUE7QUFIcUIsV0FBVztJQURoQyxVQUFVLEVBQUU7R0FDUyxXQUFXLENBR2hDO1NBSHFCLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYTmF2aWdhdG9yUGFyYW0gfSBmcm9tICcuLi9jbGFzc2VzL25hdmlnYXRvci5jbGFzcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWE5hdmlnYXRvciB7XHJcbiAgICBhYnN0cmFjdCBuYXZpZ2F0ZShwYXJhbXM6IEFYTmF2aWdhdG9yUGFyYW0pO1xyXG4gICAgYWJzdHJhY3QgcG9wdXAocGFyYW1zOiBBWE5hdmlnYXRvclBhcmFtKTtcclxufSJdfQ==
@@ -0,0 +1,15 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ let AXStorageService = class AXStorageService {
4
+ get(key) {
5
+ return localStorage.getItem(key);
6
+ }
7
+ set(key, value) {
8
+ localStorage.setItem(key, value);
9
+ }
10
+ };
11
+ AXStorageService = __decorate([
12
+ Injectable()
13
+ ], AXStorageService);
14
+ export { AXStorageService };
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjb3JleC9jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxJQUFhLGdCQUFnQixHQUE3QixNQUFhLGdCQUFnQjtJQUMxQixHQUFHLENBQUMsR0FBVztRQUNaLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQVEsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ3hCLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDSCxDQUFBO0FBUFksZ0JBQWdCO0lBRDVCLFVBQVUsRUFBRTtHQUNBLGdCQUFnQixDQU81QjtTQVBZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFYU3RvcmFnZVNlcnZpY2Uge1xyXG4gICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSBhcyBhbnk7XHJcbiAgIH1cclxuICAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUgYXMgc3RyaW5nKTtcclxuICAgfVxyXG59XHJcbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29yZS8iLCJzb3VyY2VzIjpbImxpYi90cmFuc2xhdG9yL3RyYW5zbGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLE1BQU0saUJBQWlCLENBQUM7QUFFcEMsV0FBVztBQUNYLE1BQU0sT0FBTyxZQUFZO0lBS3JCLE1BQU0sS0FBSyxRQUFRO1FBQ2YsT0FBTyxZQUFZLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBWSxFQUFFLEtBQVU7UUFDdkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ2xDLFlBQVksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO2FBQ3hDO1lBQ0QsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNuRjtJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVk7UUFDMUIsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVyxFQUFFLElBQWE7UUFDeEMsT0FBTyxhQUFhLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztJQUMzRixDQUFDOztBQXZCYyxpQkFBSSxHQUFXLElBQUksQ0FBQztBQUNwQiw4QkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBnZXRQcm9wQnlQYXRofSBmcm9tICcuLi91dGlscy9vYmplY3Qvb2JqZWN0LXV0aWwnO1xyXG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoLWVzL21lcmdlJztcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0b3Ige1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgbGFuZzogc3RyaW5nID0gJ2VuJztcclxuICAgIHByaXZhdGUgc3RhdGljIGRhdGFDaGFuZ2VTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuXHJcbiAgICBzdGF0aWMgZ2V0IG9uQ2hhbmdlKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIEFYVHJhbnNsYXRvci5kYXRhQ2hhbmdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGxvYWQobGFuZzogc3RyaW5nLCB2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgaWYgKCFBWFRyYW5zbGF0b3JbYF9fZGF0YV9fJHtsYW5nfWBdKSB7XHJcbiAgICAgICAgICAgICAgICBBWFRyYW5zbGF0b3JbYF9fZGF0YV9fJHtsYW5nfWBdID0ge307XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZ31gXSA9IG1lcmdlKEFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0sIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyB1c2UobGFuZzogc3RyaW5nKSB7XHJcbiAgICAgICAgQVhUcmFuc2xhdG9yLmxhbmcgPSBsYW5nO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0KGtleTogc3RyaW5nLCBsYW5nPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gZ2V0UHJvcEJ5UGF0aChBWFRyYW5zbGF0b3JbYF9fZGF0YV9fJHtsYW5nIHx8IEFYVHJhbnNsYXRvci5sYW5nfWBdLCBrZXkpIHx8IGtleTtcclxuICAgIH1cclxufSJdfQ==
@@ -0,0 +1,23 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { NgModule } from '@angular/core';
3
+ import { AXTranslatorPipe } from './translator.pipe';
4
+ import * as en from '../locale/en.json';
5
+ import * as fa from '../locale/fa.json';
6
+ import { AXTranslator } from './translator';
7
+ let AXTranslatorModule = class AXTranslatorModule {
8
+ constructor() {
9
+ AXTranslator.load('en', en);
10
+ AXTranslator.load('fa', fa);
11
+ }
12
+ };
13
+ AXTranslatorModule = __decorate([
14
+ NgModule({
15
+ imports: [],
16
+ exports: [AXTranslatorPipe],
17
+ declarations: [AXTranslatorPipe],
18
+ providers: [],
19
+ }),
20
+ __metadata("design:paramtypes", [])
21
+ ], AXTranslatorModule);
22
+ export { AXTranslatorModule };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWNvcmV4L2NvcmUvIiwic291cmNlcyI6WyJsaWIvdHJhbnNsYXRvci90cmFuc2xhdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQVM1QyxJQUFhLGtCQUFrQixHQUEvQixNQUFhLGtCQUFrQjtJQUMzQjtRQUNJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDSixDQUFBO0FBTFksa0JBQWtCO0lBTjlCLFFBQVEsQ0FBQztRQUNOLE9BQU8sRUFBRSxFQUFFO1FBQ1gsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDM0IsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsU0FBUyxFQUFFLEVBQUU7S0FDaEIsQ0FBQzs7R0FDVyxrQkFBa0IsQ0FLOUI7U0FMWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnLi90cmFuc2xhdG9yLnBpcGUnO1xyXG5pbXBvcnQgKiBhcyBlbiBmcm9tICcuLi9sb2NhbGUvZW4uanNvbic7XHJcbmltcG9ydCAqIGFzIGZhIGZyb20gJy4uL2xvY2FsZS9mYS5qc29uJztcclxuaW1wb3J0IHsgQVhUcmFuc2xhdG9yIH0gZnJvbSAnLi90cmFuc2xhdG9yJztcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW10sXHJcbiAgICBleHBvcnRzOiBbQVhUcmFuc2xhdG9yUGlwZV0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtBWFRyYW5zbGF0b3JQaXBlXSxcclxuICAgIHByb3ZpZGVyczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0b3JNb2R1bGUge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgQVhUcmFuc2xhdG9yLmxvYWQoJ2VuJywgZW4pO1xyXG4gICAgICAgIEFYVHJhbnNsYXRvci5sb2FkKCdmYScsIGZhKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Pipe } from '@angular/core';
3
+ import { AXTranslator } from './translator';
4
+ let AXTranslatorPipe = 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 = __decorate([
19
+ Pipe({ name: 'trans', pure: true }),
20
+ __metadata("design:paramtypes", [])
21
+ ], AXTranslatorPipe);
22
+ export { AXTranslatorPipe };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5waXBlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjb3JleC9jb3JlLyIsInNvdXJjZXMiOlsibGliL3RyYW5zbGF0b3IvdHJhbnNsYXRvci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzVDLElBQWEsZ0JBQWdCLEdBQTdCLE1BQWEsZ0JBQWdCO0lBRXpCLGdCQUFnQixDQUFDO0lBRWpCLDZEQUE2RDtJQUM3RCx3REFBd0Q7SUFDeEQsd0JBQXdCO0lBQ3hCLDhCQUE4QjtJQUM5QixZQUFZO0lBQ1osb0RBQW9EO0lBQ3BELFVBQVU7SUFFVixJQUFJO0lBRUosU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFhO1FBQ2xDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNKLENBQUE7QUFqQlksZ0JBQWdCO0lBRDVCLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDOztHQUN2QixnQkFBZ0IsQ0FpQjVCO1NBakJZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhUcmFuc2xhdG9yIH0gZnJvbSAnLi90cmFuc2xhdG9yJztcclxuXHJcbkBQaXBlKHsgbmFtZTogJ3RyYW5zJywgcHVyZTogdHJ1ZSB9KVxyXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdG9yUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgLy8gdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIGxhbmc/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgLy8gICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIC8vICAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgLy8gICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgcmVzb2x2ZSh0aGlzLnRyYW5zbGF0ZS5nZXQodmFsdWUsIGxhbmcpKTtcclxuICAgIC8vICAgICB9KTtcclxuXHJcbiAgICAvLyB9XHJcblxyXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIGxhbmc/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBBWFRyYW5zbGF0b3IuZ2V0KHZhbHVlLCBsYW5nKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { AXTranslator } from './translator';
4
+ import * as i0 from "@angular/core";
5
+ let AXTranslatorService = class AXTranslatorService {
6
+ load(lang, value) {
7
+ AXTranslator.load(lang, value);
8
+ }
9
+ use(lang) {
10
+ AXTranslator.use(lang);
11
+ }
12
+ get(key, lang) {
13
+ return AXTranslator.get(lang, lang);
14
+ }
15
+ };
16
+ AXTranslatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AXTranslatorService_Factory() { return new AXTranslatorService(); }, token: AXTranslatorService, providedIn: "platform" });
17
+ AXTranslatorService = __decorate([
18
+ Injectable({ providedIn: 'platform' })
19
+ ], AXTranslatorService);
20
+ export { AXTranslatorService };
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjb3JleC9jb3JlLyIsInNvdXJjZXMiOlsibGliL3RyYW5zbGF0b3IvdHJhbnNsYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRzVDLElBQWEsbUJBQW1CLEdBQWhDLE1BQWEsbUJBQW1CO0lBRXJCLElBQUksQ0FBQyxJQUFZLEVBQUUsS0FBVTtRQUNoQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sR0FBRyxDQUFDLElBQVk7UUFDbkIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFhO1FBQ2pDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNKLENBQUE7O0FBYlksbUJBQW1CO0lBRC9CLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQztHQUMxQixtQkFBbUIsQ0FhL0I7U0FiWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYVHJhbnNsYXRvciB9IGZyb20gJy4vdHJhbnNsYXRvcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdwbGF0Zm9ybScgfSlcclxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvclNlcnZpY2Uge1xyXG5cclxuICAgIHB1YmxpYyBsb2FkKGxhbmc6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgICAgIEFYVHJhbnNsYXRvci5sb2FkKGxhbmcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXNlKGxhbmc6IHN0cmluZykge1xyXG4gICAgICAgIEFYVHJhbnNsYXRvci51c2UobGFuZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldChrZXk6IHN0cmluZywgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEFYVHJhbnNsYXRvci5nZXQobGFuZywgbGFuZyk7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktdXRpbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29yZS8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9hcnJheS9hcnJheS11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxXQUFXO0FBQ1gsTUFBTSxPQUFPLFdBQVc7SUFHcEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFZO1FBQzFCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFHRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJO1FBQ3RDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEYsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBVyxFQUFFLEdBQVc7UUFDakMsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQVksRUFBRSxPQUFjO1FBQ3RDLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN6QyxPQUFPLEtBQUss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LENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRmV0Y2hQcm9wIH0gZnJvbSAnLi4vb2JqZWN0L29iamVjdC11dGlsJztcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBBWEFycmF5VXRpbCB7XHJcblxyXG5cclxuICAgIHN0YXRpYyBwaWNrUmFuZG9tKGFycmF5OiBhbnlbXSk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIGFycmF5W01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGFycmF5Lmxlbmd0aCldO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzdGF0aWMgaW5zZXJ0KGFycmF5OiBhbnlbXSwgaW5kZXgsIC4uLnJlc3QpIHtcclxuICAgICAgICBhcnJheS5zcGxpY2UuYXBwbHkoYXJyYXksIFtpbmRleCwgMF0uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHJlc3QsIDEpKSk7XHJcbiAgICAgICAgcmV0dXJuIGFycmF5O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByYW5nZShtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXJbXSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShtYXggLSBtaW4pLmZpbGwoMSkubWFwKChkLCBpKSA9PiBpKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZmlsdGVyKGFycmF5OiBhbnlbXSwgZmlsdGVyczogYW55W10pOiBhbnlbXSB7XHJcbiAgICAgICAgaWYgKGZpbHRlcnMgPT0gbnVsbCB8fCBmaWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYXJyYXk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGxhbWRhID0gKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZpbHRlcnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmID0gZmlsdGVyc1trZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmICE9PSAnQU5EJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG10ID0gZi5maWVsZC5tYXRjaCgvXFxbXFw6KC4qPylcXF0vKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG10ICYmIG10Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHAxID0gZi5maWVsZC5yZXBsYWNlKG10WzBdLCAnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwMiA9IG10WzFdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcCA9IEFYRmV0Y2hQcm9wKGl0ZW0sIHAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wIGluc3RhbmNlb2YgQXJyYXkgJiYgcHJvcC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxzLnB1c2goLi4ucHJvcC5tYXAobSA9PiAoQVhGZXRjaFByb3AobSwgcDIpKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHMucHVzaChBWEZldGNoUHJvcChpdGVtLCBmLmZpZWxkKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBqIGluIHZhbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxzLmhhc093blByb3BlcnR5KGopKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHYxID0gdmFsc1tqXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2MiA9IGYudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYuZGF0YVR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxID0gdjEudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChmLmNvbmRpdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZXF1YWwnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICh2MSAmJiB2MikgJiYgdjEudG9Mb3dlckNhc2UoKSA9PT0gdjIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ25vdC1lcXVhbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gISgodjEgJiYgdjIpICYmIHYxLnRvTG93ZXJDYXNlKCkgPT09IHYyLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFpbnMnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICgodjEgJiYgdjIpICYmICh2MS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHYyLnRvTG93ZXJDYXNlKCkpKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdub3QtY29udGFpbnMnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICEoKHYxICYmIHYyKSAmJiAodjEudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2Mi50b0xvd2VyQ2FzZSgpKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhcnQtd2l0aCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKCh2MSAmJiB2MikgJiYgKHYxLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCh2Mi50b0xvd2VyQ2FzZSgpKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kLXdpdGgnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICgodjEgJiYgdjIpICYmICh2MS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKHYyLnRvTG93ZXJDYXNlKCkpKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpcy1lbXB0eSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjEgPT0gbnVsbCB8fCB2MSA9PT0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaXMtbm90LWVtcHR5JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAhKHYxID09IG51bGwgfHwgdjEgPT09IHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBjb25kaXRpb24gaXMgbm90IGRlZmluZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZi5kYXRhVHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmLmRhdGFUeXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MSA9IE51bWJlcih2MSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZi5jb25kaXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VxdWFsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MSA9PT0gdjI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdub3QtZXF1YWwnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHYxICE9PSB2MjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MiAmJiB2MiBpbnN0YW5jZW9mIEFycmF5ICYmIHYyLmluY2x1ZGVzKHYxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xlc3MtdGhhbic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjEgPCB2MjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xlc3MtdGhhbi1lcXVhbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjEgPD0gdjI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmVhdGVyLXRoYW4nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHYxID4gdjI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmVhdGVyLXRoYW4tZXF1YWwnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHYxID49IHYyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaXMtZW1wdHknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHYxID09IG51bGwgfHwgdjEgPT09IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lzLW5vdC1lbXB0eSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gISh2MSA9PSBudWxsIHx8IHYxID09PSB1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdUaGUgY29uZGl0aW9uIGlzIG5vdCBkZWZpbmVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdUaGUgZGF0YXR5cGUgaXMgbm90IHN1cHBvcnRlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBhcnJheS5maWx0ZXIobGFtZGEpO1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiJdfQ==