@acorex/core 6.5.16 → 6.5.17

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 (143) hide show
  1. package/acorex-core.d.ts +5 -0
  2. package/esm2020/acorex-core.mjs +5 -0
  3. package/esm2020/lib/classes/base-page.class.mjs +28 -0
  4. package/esm2020/lib/classes/color.class.mjs +49 -0
  5. package/esm2020/lib/classes/datetime.class.mjs +314 -0
  6. package/esm2020/lib/classes/menu.class.mjs +27 -0
  7. package/esm2020/lib/classes/navigator.class.mjs +2 -0
  8. package/esm2020/lib/classes/popup.class.mjs +2 -0
  9. package/esm2020/lib/classes/promise.class.mjs +19 -0
  10. package/esm2020/lib/classes/sectionlist.class.mjs +2 -0
  11. package/esm2020/lib/classes/select.class.mjs +3 -0
  12. package/esm2020/lib/core.module.mjs +27 -0
  13. package/esm2020/lib/error/error.class.mjs +2 -0
  14. package/esm2020/lib/error/error.module.mjs +19 -0
  15. package/esm2020/lib/error/error.service.mjs +21 -0
  16. package/esm2020/lib/events/keyboard.mjs +2 -0
  17. package/esm2020/lib/http/http-error.class.mjs +2 -0
  18. package/esm2020/lib/http/http-events.interceptor.mjs +3 -0
  19. package/esm2020/lib/http/http-request.class.mjs +2 -0
  20. package/esm2020/lib/http/http-result.class.mjs +21 -0
  21. package/esm2020/lib/http/http.module.mjs +37 -0
  22. package/esm2020/lib/http/http.service.mjs +145 -0
  23. package/{src → esm2020}/lib/locale/en.json +6 -6
  24. package/{src → esm2020}/lib/locale/fa.json +7 -7
  25. package/esm2020/lib/pipe/datetime.pipe.mjs +25 -0
  26. package/esm2020/lib/pipe/htmlToText.pipe.mjs +25 -0
  27. package/esm2020/lib/platform/index.mjs +2 -0
  28. package/esm2020/lib/platform/platform.service.mjs +138 -0
  29. package/esm2020/lib/services/config.mjs +29 -0
  30. package/esm2020/lib/services/event.service.mjs +36 -0
  31. package/esm2020/lib/services/navigator.service.mjs +10 -0
  32. package/esm2020/lib/services/storage.service.mjs +16 -0
  33. package/esm2020/lib/translator/translator.mjs +26 -0
  34. package/esm2020/lib/translator/translator.module.mjs +25 -0
  35. package/esm2020/lib/translator/translator.pipe.mjs +24 -0
  36. package/esm2020/lib/translator/translator.service.mjs +21 -0
  37. package/esm2020/lib/utils/array/array-util.mjs +133 -0
  38. package/esm2020/lib/utils/html/html-util.mjs +192 -0
  39. package/esm2020/lib/utils/html/html.module.mjs +19 -0
  40. package/esm2020/lib/utils/math/math-util.mjs +6 -0
  41. package/esm2020/lib/utils/object/object-util.mjs +83 -0
  42. package/esm2020/lib/utils/render/on-demand-preload-strategy.service.mjs +20 -0
  43. package/esm2020/lib/utils/render/render.service.mjs +103 -0
  44. package/esm2020/lib/utils/render/rendering.module.mjs +35 -0
  45. package/esm2020/lib/utils/scroll/scroll.directive.mjs +54 -0
  46. package/esm2020/lib/utils/scroll/scroll.module.mjs +19 -0
  47. package/esm2020/lib/utils/separator/separator.module.mjs +19 -0
  48. package/esm2020/lib/utils/separator/separator.pipe.mjs +33 -0
  49. package/esm2020/public-api.mjs +44 -0
  50. package/fesm2015/acorex-core.mjs +2262 -0
  51. package/fesm2015/acorex-core.mjs.map +1 -0
  52. package/fesm2020/acorex-core.mjs +2258 -0
  53. package/fesm2020/acorex-core.mjs.map +1 -0
  54. package/lib/classes/base-page.class.d.ts +13 -0
  55. package/lib/classes/color.class.d.ts +17 -0
  56. package/lib/classes/datetime.class.d.ts +63 -0
  57. package/lib/classes/menu.class.d.ts +34 -0
  58. package/{src/lib/classes/navigator.class.ts → lib/classes/navigator.class.d.ts} +1 -1
  59. package/{src/lib/classes/popup.class.ts → lib/classes/popup.class.d.ts} +0 -2
  60. package/lib/classes/promise.class.d.ts +7 -0
  61. package/lib/classes/select.class.d.ts +7 -0
  62. package/lib/core.module.d.ts +9 -0
  63. package/lib/error/error.module.d.ts +7 -0
  64. package/lib/error/error.service.d.ts +13 -0
  65. package/{src/lib/events/keyboard.ts → lib/events/keyboard.d.ts} +0 -3
  66. package/{src/lib/http/http-error.class.ts → lib/http/http-error.class.d.ts} +2 -2
  67. package/{src/lib/http/http-events.interceptor.ts → lib/http/http-events.interceptor.d.ts} +3 -7
  68. package/{src/lib/http/http-request.class.ts → lib/http/http-request.class.d.ts} +5 -5
  69. package/lib/http/http-result.class.d.ts +11 -0
  70. package/lib/http/http.module.d.ts +10 -0
  71. package/lib/http/http.service.d.ts +23 -0
  72. package/lib/pipe/datetime.pipe.d.ts +8 -0
  73. package/lib/pipe/htmlToText.pipe.d.ts +7 -0
  74. package/lib/platform/index.d.ts +1 -0
  75. package/lib/platform/platform.service.d.ts +25 -0
  76. package/lib/services/config.d.ts +9 -0
  77. package/lib/services/event.service.d.ts +9 -0
  78. package/lib/services/navigator.service.d.ts +8 -0
  79. package/lib/services/storage.service.d.ts +7 -0
  80. package/lib/translator/translator.d.ts +9 -0
  81. package/lib/translator/translator.module.d.ts +8 -0
  82. package/lib/translator/translator.pipe.d.ts +8 -0
  83. package/lib/translator/translator.service.d.ts +8 -0
  84. package/lib/utils/array/array-util.d.ts +6 -0
  85. package/lib/utils/html/html-util.d.ts +62 -0
  86. package/lib/utils/html/html.module.d.ts +8 -0
  87. package/lib/utils/math/math-util.d.ts +3 -0
  88. package/lib/utils/object/object-util.d.ts +7 -0
  89. package/lib/utils/render/on-demand-preload-strategy.service.d.ts +10 -0
  90. package/lib/utils/render/render.service.d.ts +18 -0
  91. package/lib/utils/render/rendering.module.d.ts +8 -0
  92. package/lib/utils/scroll/scroll.directive.d.ts +18 -0
  93. package/lib/utils/scroll/scroll.module.d.ts +8 -0
  94. package/lib/utils/separator/separator.module.d.ts +8 -0
  95. package/lib/utils/separator/separator.pipe.d.ts +8 -0
  96. package/package.json +33 -13
  97. package/{src/public-api.ts → public-api.d.ts} +0 -10
  98. package/karma.conf.js +0 -32
  99. package/ng-package.json +0 -10
  100. package/src/lib/classes/base-page.class.ts +0 -29
  101. package/src/lib/classes/color.class.ts +0 -61
  102. package/src/lib/classes/datetime.class.ts +0 -373
  103. package/src/lib/classes/menu.class.ts +0 -37
  104. package/src/lib/classes/promise.class.ts +0 -25
  105. package/src/lib/classes/select.class.ts +0 -7
  106. package/src/lib/core.module.ts +0 -21
  107. package/src/lib/error/error.module.ts +0 -13
  108. package/src/lib/error/error.service.ts +0 -23
  109. package/src/lib/error/index.ts +0 -3
  110. package/src/lib/http/http-result.class.ts +0 -34
  111. package/src/lib/http/http.module.ts +0 -25
  112. package/src/lib/http/http.service.ts +0 -159
  113. package/src/lib/pipe/datetime.pipe.ts +0 -20
  114. package/src/lib/pipe/htmlToText.pipe.ts +0 -18
  115. package/src/lib/platform/index.ts +0 -1
  116. package/src/lib/platform/platform.service.ts +0 -211
  117. package/src/lib/services/config.ts +0 -36
  118. package/src/lib/services/event.service.ts +0 -31
  119. package/src/lib/services/navigator.service.ts +0 -8
  120. package/src/lib/services/storage.service.ts +0 -11
  121. package/src/lib/translator/translator.module.ts +0 -19
  122. package/src/lib/translator/translator.pipe.ts +0 -22
  123. package/src/lib/translator/translator.service.ts +0 -19
  124. package/src/lib/translator/translator.ts +0 -31
  125. package/src/lib/utils/array/array-util.ts +0 -140
  126. package/src/lib/utils/html/html-util.ts +0 -264
  127. package/src/lib/utils/html/html.module.ts +0 -11
  128. package/src/lib/utils/math/math-util.ts +0 -5
  129. package/src/lib/utils/object/object-util.ts +0 -87
  130. package/src/lib/utils/render/on-demand-preload-strategy.service.ts +0 -25
  131. package/src/lib/utils/render/render.service.ts +0 -110
  132. package/src/lib/utils/render/rendering.module.ts +0 -25
  133. package/src/lib/utils/scroll/scroll.directive.ts +0 -35
  134. package/src/lib/utils/scroll/scroll.module.ts +0 -11
  135. package/src/lib/utils/separator/separator.module.ts +0 -11
  136. package/src/lib/utils/separator/separator.pipe.ts +0 -27
  137. package/src/test.ts +0 -28
  138. package/tsconfig.lib.json +0 -25
  139. package/tsconfig.lib.prod.json +0 -6
  140. package/tsconfig.spec.json +0 -18
  141. package/tslint.json +0 -17
  142. /package/{src/lib/classes/sectionlist.class.ts → lib/classes/sectionlist.class.d.ts} +0 -0
  143. /package/{src/lib/error/error.class.ts → lib/error/error.class.d.ts} +0 -0
@@ -0,0 +1,16 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AXStorageService {
4
+ get(key) {
5
+ return localStorage.getItem(key);
6
+ }
7
+ set(key, value) {
8
+ localStorage.setItem(key, value);
9
+ }
10
+ }
11
+ AXStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
+ AXStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXStorageService });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXStorageService, decorators: [{
14
+ type: Injectable
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUMxQixHQUFHLENBQUMsR0FBVztRQUNaLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQVEsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ3hCLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7OzhHQU5TLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBWFN0b3JhZ2VTZXJ2aWNlIHtcclxuICAgZ2V0KGtleTogc3RyaW5nKTogYW55IHtcclxuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkgYXMgYW55O1xyXG4gICB9XHJcbiAgIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlIGFzIHN0cmluZyk7XHJcbiAgIH1cclxufVxyXG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3NyYy9saWIvdHJhbnNsYXRvci90cmFuc2xhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sS0FBSyxNQUFNLGlCQUFpQixDQUFDO0FBRXBDLFdBQVc7QUFDWCxNQUFNLE9BQU8sWUFBWTtJQUtyQixNQUFNLEtBQUssUUFBUTtRQUNmLE9BQU8sWUFBWSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQVksRUFBRSxLQUFVO1FBQ3ZDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUNsQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUN4QztZQUNELFlBQVksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbkY7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQzFCLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFhO1FBQ3hDLE9BQU8sYUFBYSxDQUFDLFlBQVksQ0FBQyxXQUFXLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDM0YsQ0FBQzs7QUF2QmMsaUJBQUksR0FBVyxJQUFJLENBQUM7QUFDcEIsOEJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZ2V0UHJvcEJ5UGF0aH0gZnJvbSAnLi4vdXRpbHMvb2JqZWN0L29iamVjdC11dGlsJztcclxuaW1wb3J0IG1lcmdlIGZyb20gJ2xvZGFzaC1lcy9tZXJnZSc7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdG9yIHtcclxuICAgIHByaXZhdGUgc3RhdGljIGxhbmc6IHN0cmluZyA9ICdlbic7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBkYXRhQ2hhbmdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHJcblxyXG4gICAgc3RhdGljIGdldCBvbkNoYW5nZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBBWFRyYW5zbGF0b3IuZGF0YUNoYW5nZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBsb2FkKGxhbmc6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIGlmICghQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZ31gXSkge1xyXG4gICAgICAgICAgICAgICAgQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZ31gXSA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0gPSBtZXJnZShBWFRyYW5zbGF0b3JbYF9fZGF0YV9fJHtsYW5nfWBdLCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgdXNlKGxhbmc6IHN0cmluZykge1xyXG4gICAgICAgIEFYVHJhbnNsYXRvci5sYW5nID0gbGFuZztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldChrZXk6IHN0cmluZywgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGdldFByb3BCeVBhdGgoQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZyB8fCBBWFRyYW5zbGF0b3IubGFuZ31gXSwga2V5KSB8fCBrZXk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -0,0 +1,25 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { AXTranslatorPipe } from './translator.pipe';
3
+ import * as en from '../locale/en.json';
4
+ import * as fa from '../locale/fa.json';
5
+ import { AXTranslator } from './translator';
6
+ import * as i0 from "@angular/core";
7
+ export class AXTranslatorModule {
8
+ constructor() {
9
+ AXTranslator.load('en', en);
10
+ AXTranslator.load('fa', fa);
11
+ }
12
+ }
13
+ AXTranslatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ AXTranslatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorModule, declarations: [AXTranslatorPipe], exports: [AXTranslatorPipe] });
15
+ AXTranslatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorModule, providers: [], imports: [[]] });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorModule, decorators: [{
17
+ type: NgModule,
18
+ args: [{
19
+ imports: [],
20
+ exports: [AXTranslatorPipe],
21
+ declarations: [AXTranslatorPipe],
22
+ providers: [],
23
+ }]
24
+ }], ctorParameters: function () { return []; } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL3RyYW5zbGF0b3IvdHJhbnNsYXRvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFTNUMsTUFBTSxPQUFPLGtCQUFrQjtJQUMzQjtRQUNJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O2dIQUpRLGtCQUFrQjtpSEFBbEIsa0JBQWtCLGlCQUhaLGdCQUFnQixhQURyQixnQkFBZ0I7aUhBSWpCLGtCQUFrQixhQUZoQixFQUFFLFlBSEosRUFBRTs0RkFLRixrQkFBa0I7a0JBTjlCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUNoQyxTQUFTLEVBQUUsRUFBRTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnLi90cmFuc2xhdG9yLnBpcGUnO1xyXG5pbXBvcnQgKiBhcyBlbiBmcm9tICcuLi9sb2NhbGUvZW4uanNvbic7XHJcbmltcG9ydCAqIGFzIGZhIGZyb20gJy4uL2xvY2FsZS9mYS5qc29uJztcclxuaW1wb3J0IHsgQVhUcmFuc2xhdG9yIH0gZnJvbSAnLi90cmFuc2xhdG9yJztcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW10sXHJcbiAgICBleHBvcnRzOiBbQVhUcmFuc2xhdG9yUGlwZV0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtBWFRyYW5zbGF0b3JQaXBlXSxcclxuICAgIHByb3ZpZGVyczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0b3JNb2R1bGUge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgQVhUcmFuc2xhdG9yLmxvYWQoJ2VuJywgZW4pO1xyXG4gICAgICAgIEFYVHJhbnNsYXRvci5sb2FkKCdmYScsIGZhKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { AXTranslator } from './translator';
3
+ import * as i0 from "@angular/core";
4
+ export class AXTranslatorPipe {
5
+ constructor() { }
6
+ // transform(value: string, lang?: string): Promise<string> {
7
+ // return new Promise<string>((resolve, reject) => {
8
+ // if (!value) {
9
+ // resolve(value);
10
+ // }
11
+ // resolve(this.translate.get(value, lang));
12
+ // });
13
+ // }
14
+ transform(value, lang) {
15
+ return AXTranslator.get(value, lang);
16
+ }
17
+ }
18
+ AXTranslatorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
19
+ AXTranslatorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorPipe, name: "trans" });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorPipe, decorators: [{
21
+ type: Pipe,
22
+ args: [{ name: 'trans', pure: true }]
23
+ }], ctorParameters: function () { return []; } });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi90cmFuc2xhdG9yL3RyYW5zbGF0b3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUc1QyxNQUFNLE9BQU8sZ0JBQWdCO0lBRXpCLGdCQUFnQixDQUFDO0lBRWpCLDZEQUE2RDtJQUM3RCx3REFBd0Q7SUFDeEQsd0JBQXdCO0lBQ3hCLDhCQUE4QjtJQUM5QixZQUFZO0lBQ1osb0RBQW9EO0lBQ3BELFVBQVU7SUFFVixJQUFJO0lBRUosU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFhO1FBQ2xDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQzs7OEdBaEJRLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBRDVCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYVHJhbnNsYXRvciB9IGZyb20gJy4vdHJhbnNsYXRvcic7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICd0cmFucycsIHB1cmU6IHRydWUgfSlcclxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIC8vIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBsYW5nPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIC8vICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAvLyAgICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgIC8vICAgICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgIHJlc29sdmUodGhpcy50cmFuc2xhdGUuZ2V0KHZhbHVlLCBsYW5nKSk7XHJcbiAgICAvLyAgICAgfSk7XHJcblxyXG4gICAgLy8gfVxyXG5cclxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBsYW5nPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gQVhUcmFuc2xhdG9yLmdldCh2YWx1ZSwgbGFuZyk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,21 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { AXTranslator } from './translator';
3
+ import * as i0 from "@angular/core";
4
+ export class AXTranslatorService {
5
+ load(lang, value) {
6
+ AXTranslator.load(lang, value);
7
+ }
8
+ use(lang) {
9
+ AXTranslator.use(lang);
10
+ }
11
+ get(key, lang) {
12
+ return AXTranslator.get(lang, lang);
13
+ }
14
+ }
15
+ AXTranslatorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
16
+ AXTranslatorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorService, providedIn: 'platform' });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXTranslatorService, decorators: [{
18
+ type: Injectable,
19
+ args: [{ providedIn: 'platform' }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi90cmFuc2xhdG9yL3RyYW5zbGF0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRzVDLE1BQU0sT0FBTyxtQkFBbUI7SUFFckIsSUFBSSxDQUFDLElBQVksRUFBRSxLQUFVO1FBQ2hDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxHQUFHLENBQUMsSUFBWTtRQUNuQixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxHQUFHLENBQUMsR0FBVyxFQUFFLElBQWE7UUFDakMsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDOztpSEFaUSxtQkFBbUI7cUhBQW5CLG1CQUFtQixjQUROLFVBQVU7NEZBQ3ZCLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYVHJhbnNsYXRvciB9IGZyb20gJy4vdHJhbnNsYXRvcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdwbGF0Zm9ybScgfSlcclxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvclNlcnZpY2Uge1xyXG5cclxuICAgIHB1YmxpYyBsb2FkKGxhbmc6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgICAgIEFYVHJhbnNsYXRvci5sb2FkKGxhbmcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXNlKGxhbmc6IHN0cmluZykge1xyXG4gICAgICAgIEFYVHJhbnNsYXRvci51c2UobGFuZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldChrZXk6IHN0cmluZywgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEFYVHJhbnNsYXRvci5nZXQobGFuZywgbGFuZyk7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
@@ -0,0 +1,133 @@
1
+ import { AXFetchProp } from '../object/object-util';
2
+ // @dynamic
3
+ export class AXArrayUtil {
4
+ static pickRandom(array) {
5
+ return array[Math.floor(Math.random() * array.length)];
6
+ }
7
+ static insert(array, index, ...rest) {
8
+ array.splice.apply(array, [index, 0].concat(Array.prototype.slice.call(rest, 1)));
9
+ return array;
10
+ }
11
+ static range(min, max) {
12
+ return new Array(max - min).fill(1).map((d, i) => i);
13
+ }
14
+ static filter(array, filters) {
15
+ if (filters == null || filters.length === 0) {
16
+ return array;
17
+ }
18
+ const lamda = (item) => {
19
+ let result = true;
20
+ for (const key in filters) {
21
+ if (filters.hasOwnProperty(key)) {
22
+ const f = filters[key];
23
+ if (f !== 'AND') {
24
+ const vals = [];
25
+ const mt = f.field.match(/\[\:(.*?)\]/);
26
+ if (mt && mt.length > 1) {
27
+ const p1 = f.field.replace(mt[0], '');
28
+ const p2 = mt[1];
29
+ const prop = AXFetchProp(item, p1);
30
+ if (prop instanceof Array && prop.length) {
31
+ vals.push(...prop.map(m => (AXFetchProp(m, p2))));
32
+ }
33
+ else {
34
+ result = false;
35
+ }
36
+ }
37
+ else {
38
+ vals.push(AXFetchProp(item, f.field));
39
+ }
40
+ for (const j in vals) {
41
+ if (vals.hasOwnProperty(j)) {
42
+ let v1 = vals[j];
43
+ const v2 = f.value;
44
+ if (f.dataType === 'string') {
45
+ v1 = v1.toString();
46
+ switch (f.condition) {
47
+ case 'equal':
48
+ result = (v1 && v2) && v1.toLowerCase() === v2.toLowerCase();
49
+ break;
50
+ case 'not-equal':
51
+ result = !((v1 && v2) && v1.toLowerCase() === v2.toLowerCase());
52
+ break;
53
+ case 'contains':
54
+ result = ((v1 && v2) && (v1.toLowerCase().includes(v2.toLowerCase())));
55
+ break;
56
+ case 'not-contains':
57
+ result = !((v1 && v2) && (v1.toLowerCase().includes(v2.toLowerCase())));
58
+ break;
59
+ case 'start-with':
60
+ result = ((v1 && v2) && (v1.toLowerCase().startsWith(v2.toLowerCase())));
61
+ break;
62
+ case 'end-with':
63
+ result = ((v1 && v2) && (v1.toLowerCase().endsWith(v2.toLowerCase())));
64
+ break;
65
+ case 'is-empty':
66
+ result = v1 == null || v1 === undefined;
67
+ break;
68
+ case 'is-not-empty':
69
+ result = !(v1 == null || v1 === undefined);
70
+ break;
71
+ default:
72
+ console.error('The condition is not defined');
73
+ result = false;
74
+ }
75
+ }
76
+ else if (f.dataType === 'date') {
77
+ }
78
+ else if (f.dataType === 'number') {
79
+ v1 = Number(v1);
80
+ switch (f.condition) {
81
+ case 'equal':
82
+ result = v1 === v2;
83
+ break;
84
+ case 'not-equal':
85
+ result = v1 !== v2;
86
+ break;
87
+ case 'contains':
88
+ result = v2 && v2 instanceof Array && v2.includes(v1);
89
+ break;
90
+ case 'less-than':
91
+ result = v1 < v2;
92
+ break;
93
+ case 'less-than-equal':
94
+ result = v1 <= v2;
95
+ break;
96
+ case 'greater-than':
97
+ result = v1 > v2;
98
+ break;
99
+ case 'greater-than-equal':
100
+ result = v1 >= v2;
101
+ break;
102
+ case 'is-empty':
103
+ result = v1 == null || v1 === undefined;
104
+ break;
105
+ case 'is-not-empty':
106
+ result = !(v1 == null || v1 === undefined);
107
+ break;
108
+ default:
109
+ console.error('The condition is not defined');
110
+ result = false;
111
+ }
112
+ }
113
+ else {
114
+ console.error('The datatype is not supported');
115
+ result = false;
116
+ }
117
+ if (result) {
118
+ break;
119
+ }
120
+ }
121
+ }
122
+ }
123
+ if (!result) {
124
+ return false;
125
+ }
126
+ }
127
+ }
128
+ return true;
129
+ };
130
+ return array.filter(lamda);
131
+ }
132
+ }
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3NyYy9saWIvdXRpbHMvYXJyYXkvYXJyYXktdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsV0FBVztBQUNYLE1BQU0sT0FBTyxXQUFXO0lBR3BCLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBWTtRQUMxQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBR0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSTtRQUN0QyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQ2pDLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZLEVBQUUsT0FBYztRQUN0QyxJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sS0FB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QU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEZldGNoUHJvcCB9IGZyb20gJy4uL29iamVjdC9vYmplY3QtdXRpbCc7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgQVhBcnJheVV0aWwge1xyXG5cclxuXHJcbiAgICBzdGF0aWMgcGlja1JhbmRvbShhcnJheTogYW55W10pOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBhcnJheVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhcnJheS5sZW5ndGgpXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhdGljIGluc2VydChhcnJheTogYW55W10sIGluZGV4LCAuLi5yZXN0KSB7XHJcbiAgICAgICAgYXJyYXkuc3BsaWNlLmFwcGx5KGFycmF5LCBbaW5kZXgsIDBdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyZXN0LCAxKSkpO1xyXG4gICAgICAgIHJldHVybiBhcnJheTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcmFuZ2UobWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyW10ge1xyXG4gICAgICAgIHJldHVybiBuZXcgQXJyYXkobWF4IC0gbWluKS5maWxsKDEpLm1hcCgoZCwgaSkgPT4gaSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGZpbHRlcihhcnJheTogYW55W10sIGZpbHRlcnM6IGFueVtdKTogYW55W10ge1xyXG4gICAgICAgIGlmIChmaWx0ZXJzID09IG51bGwgfHwgZmlsdGVycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGFycmF5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsYW1kYSA9IChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSB0cnVlO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVycy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZiA9IGZpbHRlcnNba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZiAhPT0gJ0FORCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFscyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtdCA9IGYuZmllbGQubWF0Y2goL1xcW1xcOiguKj8pXFxdLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtdCAmJiBtdC5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwMSA9IGYuZmllbGQucmVwbGFjZShtdFswXSwgJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcDIgPSBtdFsxXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3AgPSBBWEZldGNoUHJvcChpdGVtLCBwMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCBpbnN0YW5jZW9mIEFycmF5ICYmIHByb3AubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFscy5wdXNoKC4uLnByb3AubWFwKG0gPT4gKEFYRmV0Y2hQcm9wKG0sIHAyKSkpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxzLnB1c2goQVhGZXRjaFByb3AoaXRlbSwgZi5maWVsZCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaiBpbiB2YWxzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFscy5oYXNPd25Qcm9wZXJ0eShqKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2MSA9IHZhbHNbal07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjIgPSBmLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmLmRhdGFUeXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MSA9IHYxLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZi5jb25kaXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VxdWFsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAodjEgJiYgdjIpICYmIHYxLnRvTG93ZXJDYXNlKCkgPT09IHYyLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdub3QtZXF1YWwnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICEoKHYxICYmIHYyKSAmJiB2MS50b0xvd2VyQ2FzZSgpID09PSB2Mi50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAoKHYxICYmIHYyKSAmJiAodjEudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2Mi50b0xvd2VyQ2FzZSgpKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbm90LWNvbnRhaW5zJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAhKCh2MSAmJiB2MikgJiYgKHYxLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModjIudG9Mb3dlckNhc2UoKSkpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0LXdpdGgnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICgodjEgJiYgdjIpICYmICh2MS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodjIudG9Mb3dlckNhc2UoKSkpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VuZC13aXRoJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAoKHYxICYmIHYyKSAmJiAodjEudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCh2Mi50b0xvd2VyQ2FzZSgpKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaXMtZW1wdHknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHYxID09IG51bGwgfHwgdjEgPT09IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lzLW5vdC1lbXB0eSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gISh2MSA9PSBudWxsIHx8IHYxID09PSB1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdUaGUgY29uZGl0aW9uIGlzIG5vdCBkZWZpbmVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGYuZGF0YVR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZi5kYXRhVHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEgPSBOdW1iZXIodjEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGYuY29uZGl0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlcXVhbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjEgPT09IHYyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbm90LWVxdWFsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MSAhPT0gdjI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWlucyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjIgJiYgdjIgaW5zdGFuY2VvZiBBcnJheSAmJiB2Mi5pbmNsdWRlcyh2MSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsZXNzLXRoYW4nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHYxIDwgdjI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsZXNzLXRoYW4tZXF1YWwnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHYxIDw9IHYyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JlYXRlci10aGFuJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MSA+IHYyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JlYXRlci10aGFuLWVxdWFsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MSA+PSB2MjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lzLWVtcHR5JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MSA9PSBudWxsIHx8IHYxID09PSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpcy1ub3QtZW1wdHknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICEodjEgPT0gbnVsbCB8fCB2MSA9PT0gdW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGhlIGNvbmRpdGlvbiBpcyBub3QgZGVmaW5lZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGhlIGRhdGF0eXBlIGlzIG5vdCBzdXBwb3J0ZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gYXJyYXkuZmlsdGVyKGxhbWRhKTtcclxuICAgIH1cclxuXHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG4iXX0=
@@ -0,0 +1,192 @@
1
+ import { AXMathUtil } from '../math/math-util';
2
+ export class AXPoint {
3
+ constructor(x, y) {
4
+ this.x = x;
5
+ this.y = y;
6
+ }
7
+ }
8
+ export class AXClientRec {
9
+ constructor(rec) {
10
+ this._left = rec.left;
11
+ this._top = rec.top;
12
+ this._width = rec.width;
13
+ this._height = rec.height;
14
+ this._right = this._left + this._width;
15
+ this._bottom = this._top + this._height;
16
+ }
17
+ get left() {
18
+ return this._left;
19
+ }
20
+ set left(v) {
21
+ this._left = v;
22
+ }
23
+ get top() {
24
+ return this._top;
25
+ }
26
+ set top(v) {
27
+ this._top = v;
28
+ }
29
+ get right() {
30
+ return this._right;
31
+ }
32
+ set right(v) {
33
+ this._right = v;
34
+ }
35
+ get bottom() {
36
+ return this._bottom;
37
+ }
38
+ set bottom(v) {
39
+ this._bottom = v;
40
+ }
41
+ get width() {
42
+ return this._width;
43
+ }
44
+ set width(v) {
45
+ this._width = v;
46
+ }
47
+ get height() {
48
+ return this._height;
49
+ }
50
+ set height(v) {
51
+ this._height = v;
52
+ }
53
+ intersect(rec) {
54
+ return (this.left < rec.left + rec.width &&
55
+ this.left + this.width > rec.left &&
56
+ this.top < rec.top + rec.height &&
57
+ this.top + this.height > rec.top);
58
+ }
59
+ }
60
+ // @dynamic
61
+ export class AXHtmlUtil {
62
+ static getBoundingRectPoint(el, placement) {
63
+ const rec = el.getBoundingClientRect();
64
+ const width = el.offsetWidth;
65
+ const height = el.offsetHeight;
66
+ switch (placement) {
67
+ case 'top-start':
68
+ return new AXPoint(rec.left, rec.top);
69
+ case 'top-middle':
70
+ return new AXPoint(rec.left + (width / 2), rec.top);
71
+ case 'top-end':
72
+ return new AXPoint(rec.left + (width), rec.top);
73
+ case 'center-end':
74
+ return new AXPoint(rec.left + (width), rec.top + (height / 2));
75
+ case 'bottom-end':
76
+ return new AXPoint(rec.left + (width), rec.top + (height));
77
+ case 'bottom-middle':
78
+ return new AXPoint(rec.left + (width / 2), rec.top + (height));
79
+ case 'bottom-start':
80
+ return new AXPoint(rec.left, rec.top + (height));
81
+ case 'center-start':
82
+ return new AXPoint(rec.left, rec.top + (height / 2));
83
+ default:
84
+ return new AXPoint(rec.left + (width / 2), rec.top + (height));
85
+ }
86
+ }
87
+ static isInRecPoint(pos, rec) {
88
+ return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));
89
+ }
90
+ // static isOverLap(rec1: AXClientRecCtor, rec2: AXClientRecCtor): boolean {
91
+ // const r1: AXClientRec = new AXClientRec(rec1);
92
+ // const r2: AXClientRec = new AXClientRec(rec2);
93
+ // return ;
94
+ // }
95
+ static isInElementBound(pos, element) {
96
+ const elBound = element.getBoundingClientRect();
97
+ return AXHtmlUtil.isInRecPoint(pos, {
98
+ left: elBound.left,
99
+ width: elBound.width,
100
+ top: elBound.top,
101
+ height: elBound.height
102
+ });
103
+ }
104
+ static getDimensions() {
105
+ let winW = 630;
106
+ let winH = 460;
107
+ if (document.body && document.body.offsetWidth) {
108
+ winW = document.body.offsetWidth;
109
+ winH = document.body.offsetHeight;
110
+ }
111
+ if (document.compatMode === 'CSS1Compat' && document.documentElement && document.documentElement.offsetWidth) {
112
+ winW = document.documentElement.offsetWidth;
113
+ winH = document.documentElement.offsetHeight;
114
+ }
115
+ if (window.innerWidth && window.innerHeight) {
116
+ winW = window.innerWidth;
117
+ winH = window.innerHeight;
118
+ }
119
+ return { width: winW, height: winH };
120
+ }
121
+ static getOffsetRight(elem) {
122
+ let element = elem;
123
+ const width = element.offsetWidth;
124
+ let right = 0;
125
+ while (element.offsetParent) {
126
+ right += element.offsetLeft;
127
+ element = element.offsetParent;
128
+ }
129
+ right += element.offsetLeft;
130
+ right = AXHtmlUtil.getDimensions().width - right;
131
+ right -= width;
132
+ return right;
133
+ }
134
+ static getUID() {
135
+ return 'el-' + AXMathUtil.randomRange(1000000000, 9999999999).toString();
136
+ }
137
+ static getRelatedPosition(source, placement, target, alignment) {
138
+ const result = { x: 0, y: 0 };
139
+ const sourcePos = AXHtmlUtil.getBoundingRectPoint(source, placement);
140
+ let top = 0;
141
+ let left = 0;
142
+ switch (alignment) {
143
+ case 'top-start':
144
+ top = sourcePos.y;
145
+ left = sourcePos.x;
146
+ break;
147
+ case 'top-middle':
148
+ top = sourcePos.y;
149
+ left = sourcePos.x - target.offsetWidth / 2;
150
+ break;
151
+ case 'top-end':
152
+ top = sourcePos.y;
153
+ left = sourcePos.x - target.offsetWidth;
154
+ break;
155
+ case 'center-end':
156
+ top = sourcePos.y - target.offsetHeight / 2;
157
+ left = sourcePos.x - target.offsetWidth;
158
+ break;
159
+ case 'bottom-end':
160
+ top = sourcePos.y - target.offsetHeight;
161
+ left = sourcePos.x - target.offsetWidth;
162
+ break;
163
+ case 'bottom-middle':
164
+ top = sourcePos.y - target.offsetHeight;
165
+ left = sourcePos.x - target.offsetWidth / 2;
166
+ break;
167
+ case 'bottom-start':
168
+ top = sourcePos.y - target.offsetHeight;
169
+ left = sourcePos.x;
170
+ break;
171
+ case 'center-start':
172
+ top = sourcePos.y - target.offsetHeight / 2;
173
+ left = sourcePos.x;
174
+ break;
175
+ }
176
+ result.y = top;
177
+ result.x = left;
178
+ return result;
179
+ }
180
+ static collision(a, b) {
181
+ const ac = a.getBoundingClientRect();
182
+ const bc = b.getBoundingClientRect();
183
+ if (ac.left < bc.left + bc.width && ac.left + ac.width > bc.left &&
184
+ ac.top < bc.top + bc.height && ac.top + ac.height > bc.top) {
185
+ return true;
186
+ }
187
+ else {
188
+ return false;
189
+ }
190
+ }
191
+ }
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi91dGlscy9odG1sL2h0bWwtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUEyQi9DLE1BQU0sT0FBTyxPQUFPO0lBQ2xCLFlBQW1CLENBQVMsRUFBUyxDQUFTO1FBQTNCLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO0lBQzlDLENBQUM7Q0FDRjtBQVVELE1BQU0sT0FBTyxXQUFXO0lBMER0QixZQUFZLEdBQW9CO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUMxQyxDQUFDO0lBN0RELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBVyxJQUFJLENBQUMsQ0FBUztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBSUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFXLEdBQUcsQ0FBQyxDQUFTO1FBQ3RC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RSxDQUFjO1FBQzdDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRXJDLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQzlELEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQzVELE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFDSTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1hdGhVdGlsIH0gZnJvbSAnLi4vbWF0aC9tYXRoLXV0aWwnO1xyXG5cclxuZXhwb3J0IHR5cGUgQVhQbGFjZW1lbnQgPVxyXG4gIHwgJ3RvcC1zdGFydCdcclxuICB8ICd0b3AtbWlkZGxlJ1xyXG4gIHwgJ3RvcC1lbmQnXHJcbiAgfCAnY2VudGVyLXN0YXJ0J1xyXG4gIHwgJ2NlbnRlci1lbmQnXHJcbiAgfCAnYm90dG9tLXN0YXJ0J1xyXG4gIHwgJ2JvdHRvbS1taWRkbGUnXHJcbiAgfCAnYm90dG9tLWVuZCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYSVBvaW50IHtcclxuICB4OiBudW1iZXI7XHJcbiAgeTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYQ29ubmVjdGVkUG9zaXRpb24ge1xyXG4gIG9yaWdpblg6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xyXG4gIG9yaWdpblk6ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJztcclxuICBvdmVybGF5WDogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XHJcbiAgb3ZlcmxheVk6ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJztcclxuICB3ZWlnaHQ/OiBudW1iZXI7XHJcbiAgb2Zmc2V0WD86IG51bWJlcjtcclxuICBvZmZzZXRZPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhQb2ludCBpbXBsZW1lbnRzIEFYSVBvaW50IHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgeDogbnVtYmVyLCBwdWJsaWMgeTogbnVtYmVyKSB7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYQ2xpZW50UmVjQ3RvciB7XHJcbiAgbGVmdD86IG51bWJlcjtcclxuICB0b3A/OiBudW1iZXI7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgaGVpZ2h0PzogbnVtYmVyO1xyXG4gIGJvdHRvbT86IG51bWJlcjtcclxuICByaWdodD86IG51bWJlcjtcclxufVxyXG5leHBvcnQgY2xhc3MgQVhDbGllbnRSZWMgaW1wbGVtZW50cyBBWENsaWVudFJlY0N0b3Ige1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBfbGVmdDogbnVtYmVyO1xyXG4gIHB1YmxpYyBnZXQgbGVmdCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xlZnQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgbGVmdCh2OiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2xlZnQgPSB2O1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX3RvcDogbnVtYmVyO1xyXG4gIHB1YmxpYyBnZXQgdG9wKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdG9wO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHRvcCh2OiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3RvcCA9IHY7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfcmlnaHQ6IG51bWJlcjtcclxuICBwdWJsaWMgZ2V0IHJpZ2h0KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmlnaHQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgcmlnaHQodjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9yaWdodCA9IHY7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfYm90dG9tOiBudW1iZXI7XHJcbiAgcHVibGljIGdldCBib3R0b20oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9ib3R0b207XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgYm90dG9tKHY6IG51bWJlcikge1xyXG4gICAgdGhpcy5fYm90dG9tID0gdjtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfd2lkdGg6IG51bWJlcjtcclxuICBwdWJsaWMgZ2V0IHdpZHRoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2lkdGg7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgd2lkdGgodjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl93aWR0aCA9IHY7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfaGVpZ2h0OiBudW1iZXI7XHJcbiAgcHVibGljIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9oZWlnaHQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgaGVpZ2h0KHY6IG51bWJlcikge1xyXG4gICAgdGhpcy5faGVpZ2h0ID0gdjtcclxuICB9XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihyZWM6IEFYQ2xpZW50UmVjQ3Rvcikge1xyXG4gICAgdGhpcy5fbGVmdCA9IHJlYy5sZWZ0O1xyXG4gICAgdGhpcy5fdG9wID0gcmVjLnRvcDtcclxuICAgIHRoaXMuX3dpZHRoID0gcmVjLndpZHRoO1xyXG4gICAgdGhpcy5faGVpZ2h0ID0gcmVjLmhlaWdodDtcclxuICAgIHRoaXMuX3JpZ2h0ID0gdGhpcy5fbGVmdCArIHRoaXMuX3dpZHRoO1xyXG4gICAgdGhpcy5fYm90dG9tID0gdGhpcy5fdG9wICsgdGhpcy5faGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGludGVyc2VjdChyZWM6IEFYQ2xpZW50UmVjQ3Rvcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICh0aGlzLmxlZnQgPCByZWMubGVmdCArIHJlYy53aWR0aCAmJlxyXG4gICAgICB0aGlzLmxlZnQgKyB0aGlzLndpZHRoID4gcmVjLmxlZnQgJiZcclxuICAgICAgdGhpcy50b3AgPCByZWMudG9wICsgcmVjLmhlaWdodCAmJlxyXG4gICAgICB0aGlzLnRvcCArIHRoaXMuaGVpZ2h0ID4gcmVjLnRvcCk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEFYSHRtbFV0aWwge1xyXG4gIHN0YXRpYyBnZXRCb3VuZGluZ1JlY3RQb2ludChlbDogSFRNTEVsZW1lbnQsIHBsYWNlbWVudDogQVhQbGFjZW1lbnQpOiBBWFBvaW50IHtcclxuICAgIGNvbnN0IHJlYyA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3Qgd2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcclxuICAgIGNvbnN0IGhlaWdodCA9IGVsLm9mZnNldEhlaWdodDtcclxuICAgIHN3aXRjaCAocGxhY2VtZW50KSB7XHJcbiAgICAgIGNhc2UgJ3RvcC1zdGFydCc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBvaW50KHJlYy5sZWZ0LCByZWMudG9wKTtcclxuICAgICAgY2FzZSAndG9wLW1pZGRsZSc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBvaW50KHJlYy5sZWZ0ICsgKHdpZHRoIC8gMiksIHJlYy50b3ApO1xyXG4gICAgICBjYXNlICd0b3AtZW5kJzpcclxuICAgICAgICByZXR1cm4gbmV3IEFYUG9pbnQocmVjLmxlZnQgKyAod2lkdGgpLCByZWMudG9wKTtcclxuICAgICAgY2FzZSAnY2VudGVyLWVuZCc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBvaW50KHJlYy5sZWZ0ICsgKHdpZHRoKSwgcmVjLnRvcCArIChoZWlnaHQgLyAyKSk7XHJcbiAgICAgIGNhc2UgJ2JvdHRvbS1lbmQnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCArICh3aWR0aCksIHJlYy50b3AgKyAoaGVpZ2h0KSk7XHJcbiAgICAgIGNhc2UgJ2JvdHRvbS1taWRkbGUnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCArICh3aWR0aCAvIDIpLCByZWMudG9wICsgKGhlaWdodCkpO1xyXG4gICAgICBjYXNlICdib3R0b20tc3RhcnQnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCwgcmVjLnRvcCArIChoZWlnaHQpKTtcclxuICAgICAgY2FzZSAnY2VudGVyLXN0YXJ0JzpcclxuICAgICAgICByZXR1cm4gbmV3IEFYUG9pbnQocmVjLmxlZnQsIHJlYy50b3AgKyAoaGVpZ2h0IC8gMikpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCArICh3aWR0aCAvIDIpLCByZWMudG9wICsgKGhlaWdodCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzSW5SZWNQb2ludChwb3M6IEFYSVBvaW50LCByZWM6IEFYQ2xpZW50UmVjQ3Rvcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHBvcy54ID49IHJlYy5sZWZ0ICYmIHBvcy54IDw9IChyZWMubGVmdCArIHJlYy53aWR0aCkgJiYgcG9zLnkgPj0gcmVjLnRvcCAmJiAocG9zLnkgPD0gKHJlYy50b3AgKyByZWMuaGVpZ2h0KSk7XHJcbiAgfVxyXG5cclxuICAvLyBzdGF0aWMgaXNPdmVyTGFwKHJlYzE6IEFYQ2xpZW50UmVjQ3RvciwgcmVjMjogQVhDbGllbnRSZWNDdG9yKTogYm9vbGVhbiB7XHJcbiAgLy8gICBjb25zdCByMTogQVhDbGllbnRSZWMgPSBuZXcgQVhDbGllbnRSZWMocmVjMSk7XHJcbiAgLy8gICBjb25zdCByMjogQVhDbGllbnRSZWMgPSBuZXcgQVhDbGllbnRSZWMocmVjMik7XHJcblxyXG4gIC8vICAgcmV0dXJuIDtcclxuICAvLyB9XHJcblxyXG4gIHN0YXRpYyBpc0luRWxlbWVudEJvdW5kKHBvczogQVhJUG9pbnQsIGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBlbEJvdW5kID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIHJldHVybiBBWEh0bWxVdGlsLmlzSW5SZWNQb2ludChwb3MsIHtcclxuICAgICAgbGVmdDogZWxCb3VuZC5sZWZ0LFxyXG4gICAgICB3aWR0aDogZWxCb3VuZC53aWR0aCxcclxuICAgICAgdG9wOiBlbEJvdW5kLnRvcCxcclxuICAgICAgaGVpZ2h0OiBlbEJvdW5kLmhlaWdodFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RGltZW5zaW9ucygpOiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0ge1xyXG4gICAgbGV0IHdpblcgPSA2MzA7XHJcbiAgICBsZXQgd2luSCA9IDQ2MDtcclxuICAgIGlmIChkb2N1bWVudC5ib2R5ICYmIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpIHtcclxuICAgICAgd2luVyA9IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHdpbkggPSBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDtcclxuICAgIH1cclxuICAgIGlmIChkb2N1bWVudC5jb21wYXRNb2RlID09PSAnQ1NTMUNvbXBhdCcgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aCkge1xyXG4gICAgICB3aW5XID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB3aW5IID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuICAgIH1cclxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCAmJiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcclxuICAgICAgd2luVyA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgICB3aW5IID0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgd2lkdGg6IHdpblcsIGhlaWdodDogd2luSCB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldE9mZnNldFJpZ2h0KGVsZW06IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcclxuICAgIGxldCBlbGVtZW50ID0gZWxlbTtcclxuICAgIGNvbnN0IHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgIGxldCByaWdodCA9IDA7XHJcbiAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcclxuICAgICAgcmlnaHQgKz0gZWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgICByaWdodCArPSBlbGVtZW50Lm9mZnNldExlZnQ7XHJcbiAgICByaWdodCA9IEFYSHRtbFV0aWwuZ2V0RGltZW5zaW9ucygpLndpZHRoIC0gcmlnaHQ7XHJcbiAgICByaWdodCAtPSB3aWR0aDtcclxuICAgIHJldHVybiByaWdodDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRVSUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAnZWwtJyArIEFYTWF0aFV0aWwucmFuZG9tUmFuZ2UoMTAwMDAwMDAwMCwgOTk5OTk5OTk5OSkudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgZ2V0UmVsYXRlZFBvc2l0aW9uKHNvdXJjZTogSFRNTEVsZW1lbnQsIHBsYWNlbWVudDogQVhQbGFjZW1lbnQsIHRhcmdldDogSFRNTEVsZW1lbnQsIGFsaWdubWVudDogQVhQbGFjZW1lbnQpOiBBWElQb2ludCB7XHJcbiAgICBjb25zdCByZXN1bHQ6IEFYSVBvaW50ID0geyB4OiAwLCB5OiAwIH07XHJcblxyXG4gICAgY29uc3Qgc291cmNlUG9zOiBBWFBvaW50ID0gQVhIdG1sVXRpbC5nZXRCb3VuZGluZ1JlY3RQb2ludChzb3VyY2UsIHBsYWNlbWVudCk7XHJcblxyXG5cclxuICAgIGxldCB0b3A6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgbGVmdDogbnVtYmVyID0gMDtcclxuICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7XHJcbiAgICAgIGNhc2UgJ3RvcC1zdGFydCc6XHJcbiAgICAgICAgdG9wID0gc291cmNlUG9zLnk7XHJcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd0b3AtbWlkZGxlJzpcclxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueTtcclxuICAgICAgICBsZWZ0ID0gc291cmNlUG9zLnggLSB0YXJnZXQub2Zmc2V0V2lkdGggLyAyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd0b3AtZW5kJzpcclxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueTtcclxuICAgICAgICBsZWZ0ID0gc291cmNlUG9zLnggLSB0YXJnZXQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NlbnRlci1lbmQnOlxyXG4gICAgICAgIHRvcCA9IHNvdXJjZVBvcy55IC0gdGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7XHJcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54IC0gdGFyZ2V0Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdib3R0b20tZW5kJzpcclxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueSAtIHRhcmdldC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54IC0gdGFyZ2V0Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdib3R0b20tbWlkZGxlJzpcclxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueSAtIHRhcmdldC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54IC0gdGFyZ2V0Lm9mZnNldFdpZHRoIC8gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYm90dG9tLXN0YXJ0JzpcclxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueSAtIHRhcmdldC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjZW50ZXItc3RhcnQnOlxyXG4gICAgICAgIHRvcCA9IHNvdXJjZVBvcy55IC0gdGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7XHJcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmVzdWx0LnkgPSB0b3A7XHJcbiAgICByZXN1bHQueCA9IGxlZnQ7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBjb2xsaXNpb24oYTogSFRNTEVsZW1lbnQsIGI6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBhYyA9IGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBiYyA9IGIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgaWYgKGFjLmxlZnQgPCBiYy5sZWZ0ICsgYmMud2lkdGggJiYgYWMubGVmdCArIGFjLndpZHRoID4gYmMubGVmdCAmJlxyXG4gICAgICBhYy50b3AgPCBiYy50b3AgKyBiYy5oZWlnaHQgJiYgYWMudG9wICsgYWMuaGVpZ2h0ID4gYmMudG9wKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { AXHtmlToTextPipe } from '../../pipe/htmlToText.pipe';
4
+ import * as i0 from "@angular/core";
5
+ export class AXHtmlModule {
6
+ }
7
+ AXHtmlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHtmlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ AXHtmlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHtmlModule, declarations: [AXHtmlToTextPipe], imports: [CommonModule], exports: [AXHtmlToTextPipe] });
9
+ AXHtmlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHtmlModule, providers: [], imports: [[CommonModule]] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHtmlModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ declarations: [AXHtmlToTextPipe],
14
+ imports: [CommonModule],
15
+ exports: [AXHtmlToTextPipe],
16
+ providers: []
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL3V0aWxzL2h0bWwvaHRtbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBUTlELE1BQU0sT0FBTyxZQUFZOzswR0FBWixZQUFZOzJHQUFaLFlBQVksaUJBTFIsZ0JBQWdCLGFBQ3JCLFlBQVksYUFDWixnQkFBZ0I7MkdBR2YsWUFBWSxhQUZaLEVBQUUsWUFGSixDQUFDLFlBQVksQ0FBQzs0RkFJWixZQUFZO2tCQU54QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFYSHRtbFRvVGV4dFBpcGUgfSBmcm9tICcuLi8uLi9waXBlL2h0bWxUb1RleHQucGlwZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0FYSHRtbFRvVGV4dFBpcGVdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gIGV4cG9ydHM6IFtBWEh0bWxUb1RleHRQaXBlXSxcclxuICBwcm92aWRlcnM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWEh0bWxNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export class AXMathUtil {
2
+ static randomRange(min, max) {
3
+ return Math.floor(Math.random() * (max - min + 1) + min);
4
+ }
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi91dGlscy9tYXRoL21hdGgtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUNuQixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzdELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBBWE1hdGhVdGlsIHtcclxuICAgIHN0YXRpYyByYW5kb21SYW5nZShtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkgKyBtaW4pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==