@acorex/core 6.5.71 → 6.5.73

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 (111) hide show
  1. package/README.md +6 -2
  2. package/esm2022/acorex-core.mjs +5 -0
  3. package/esm2022/index.mjs +44 -0
  4. package/esm2022/lib/classes/base-page.class.mjs +26 -0
  5. package/esm2022/lib/classes/color.class.mjs +49 -0
  6. package/esm2022/lib/classes/datetime.class.mjs +323 -0
  7. package/esm2022/lib/classes/menu.class.mjs +35 -0
  8. package/esm2022/lib/classes/navigator.class.mjs +2 -0
  9. package/esm2022/lib/classes/popup.class.mjs +2 -0
  10. package/esm2022/lib/classes/promise.class.mjs +21 -0
  11. package/esm2022/lib/classes/sectionlist.class.mjs +2 -0
  12. package/esm2022/lib/classes/select.class.mjs +8 -0
  13. package/esm2022/lib/core.module.mjs +27 -0
  14. package/esm2022/lib/error/error.class.mjs +2 -0
  15. package/esm2022/lib/error/error.module.mjs +19 -0
  16. package/esm2022/lib/error/error.service.mjs +22 -0
  17. package/esm2022/lib/events/keyboard.mjs +2 -0
  18. package/esm2022/lib/http/http-error.class.mjs +2 -0
  19. package/esm2022/lib/http/http-events.interceptor.mjs +3 -0
  20. package/esm2022/lib/http/http-request.class.mjs +2 -0
  21. package/esm2022/lib/http/http-result.class.mjs +25 -0
  22. package/esm2022/lib/http/http.module.mjs +35 -0
  23. package/esm2022/lib/http/http.service.mjs +148 -0
  24. package/{esm2020 → esm2022}/lib/locale/en.json +1 -1
  25. package/esm2022/lib/pipe/datetime.pipe.mjs +25 -0
  26. package/esm2022/lib/pipe/htmlToText.pipe.mjs +25 -0
  27. package/esm2022/lib/platform/index.mjs +2 -0
  28. package/esm2022/lib/platform/platform.service.mjs +152 -0
  29. package/esm2022/lib/services/config.mjs +29 -0
  30. package/esm2022/lib/services/event.service.mjs +34 -0
  31. package/esm2022/lib/services/navigator.service.mjs +10 -0
  32. package/esm2022/lib/services/storage.service.mjs +16 -0
  33. package/esm2022/lib/translator/translator.mjs +26 -0
  34. package/esm2022/lib/translator/translator.module.mjs +25 -0
  35. package/esm2022/lib/translator/translator.pipe.mjs +24 -0
  36. package/esm2022/lib/translator/translator.service.mjs +21 -0
  37. package/esm2022/lib/utils/array/array-util.mjs +133 -0
  38. package/esm2022/lib/utils/html/html-util.mjs +200 -0
  39. package/esm2022/lib/utils/html/html.module.mjs +19 -0
  40. package/esm2022/lib/utils/math/math-util.mjs +6 -0
  41. package/esm2022/lib/utils/object/object-util.mjs +83 -0
  42. package/esm2022/lib/utils/render/on-demand-preload-strategy.service.mjs +21 -0
  43. package/esm2022/lib/utils/render/render.service.mjs +109 -0
  44. package/esm2022/lib/utils/render/rendering.module.mjs +35 -0
  45. package/esm2022/lib/utils/scroll/scroll.directive.mjs +56 -0
  46. package/esm2022/lib/utils/scroll/scroll.module.mjs +19 -0
  47. package/esm2022/lib/utils/separator/separator.module.mjs +19 -0
  48. package/esm2022/lib/utils/separator/separator.pipe.mjs +33 -0
  49. package/{fesm2020 → fesm2022}/acorex-core.mjs +241 -196
  50. package/fesm2022/acorex-core.mjs.map +1 -0
  51. package/lib/classes/datetime.class.d.ts +4 -4
  52. package/lib/pipe/datetime.pipe.d.ts +1 -1
  53. package/lib/pipe/htmlToText.pipe.d.ts +1 -1
  54. package/lib/platform/platform.service.d.ts +4 -4
  55. package/lib/translator/translator.pipe.d.ts +1 -1
  56. package/lib/utils/html/html-util.d.ts +1 -1
  57. package/lib/utils/scroll/scroll.directive.d.ts +2 -2
  58. package/lib/utils/separator/separator.pipe.d.ts +1 -1
  59. package/package.json +14 -20
  60. package/acorex-core.d.ts +0 -5
  61. package/esm2020/acorex-core.mjs +0 -5
  62. package/esm2020/lib/classes/base-page.class.mjs +0 -28
  63. package/esm2020/lib/classes/color.class.mjs +0 -49
  64. package/esm2020/lib/classes/datetime.class.mjs +0 -314
  65. package/esm2020/lib/classes/menu.class.mjs +0 -27
  66. package/esm2020/lib/classes/navigator.class.mjs +0 -2
  67. package/esm2020/lib/classes/popup.class.mjs +0 -2
  68. package/esm2020/lib/classes/promise.class.mjs +0 -19
  69. package/esm2020/lib/classes/sectionlist.class.mjs +0 -2
  70. package/esm2020/lib/classes/select.class.mjs +0 -3
  71. package/esm2020/lib/core.module.mjs +0 -27
  72. package/esm2020/lib/error/error.class.mjs +0 -2
  73. package/esm2020/lib/error/error.module.mjs +0 -19
  74. package/esm2020/lib/error/error.service.mjs +0 -21
  75. package/esm2020/lib/events/keyboard.mjs +0 -2
  76. package/esm2020/lib/http/http-error.class.mjs +0 -2
  77. package/esm2020/lib/http/http-events.interceptor.mjs +0 -3
  78. package/esm2020/lib/http/http-request.class.mjs +0 -2
  79. package/esm2020/lib/http/http-result.class.mjs +0 -21
  80. package/esm2020/lib/http/http.module.mjs +0 -37
  81. package/esm2020/lib/http/http.service.mjs +0 -145
  82. package/esm2020/lib/pipe/datetime.pipe.mjs +0 -25
  83. package/esm2020/lib/pipe/htmlToText.pipe.mjs +0 -25
  84. package/esm2020/lib/platform/index.mjs +0 -2
  85. package/esm2020/lib/platform/platform.service.mjs +0 -150
  86. package/esm2020/lib/services/config.mjs +0 -29
  87. package/esm2020/lib/services/event.service.mjs +0 -36
  88. package/esm2020/lib/services/navigator.service.mjs +0 -10
  89. package/esm2020/lib/services/storage.service.mjs +0 -16
  90. package/esm2020/lib/translator/translator.mjs +0 -26
  91. package/esm2020/lib/translator/translator.module.mjs +0 -25
  92. package/esm2020/lib/translator/translator.pipe.mjs +0 -24
  93. package/esm2020/lib/translator/translator.service.mjs +0 -21
  94. package/esm2020/lib/utils/array/array-util.mjs +0 -133
  95. package/esm2020/lib/utils/html/html-util.mjs +0 -192
  96. package/esm2020/lib/utils/html/html.module.mjs +0 -19
  97. package/esm2020/lib/utils/math/math-util.mjs +0 -6
  98. package/esm2020/lib/utils/object/object-util.mjs +0 -83
  99. package/esm2020/lib/utils/render/on-demand-preload-strategy.service.mjs +0 -20
  100. package/esm2020/lib/utils/render/render.service.mjs +0 -103
  101. package/esm2020/lib/utils/render/rendering.module.mjs +0 -35
  102. package/esm2020/lib/utils/scroll/scroll.directive.mjs +0 -54
  103. package/esm2020/lib/utils/scroll/scroll.module.mjs +0 -19
  104. package/esm2020/lib/utils/separator/separator.module.mjs +0 -19
  105. package/esm2020/lib/utils/separator/separator.pipe.mjs +0 -33
  106. package/esm2020/public-api.mjs +0 -44
  107. package/fesm2015/acorex-core.mjs +0 -2274
  108. package/fesm2015/acorex-core.mjs.map +0 -1
  109. package/fesm2020/acorex-core.mjs.map +0 -1
  110. /package/{esm2020 → esm2022}/lib/locale/fa.json +0 -0
  111. /package/{public-api.d.ts → index.d.ts} +0 -0
@@ -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 dataModel = {};
6
+ static dataChangeSubject = new Subject();
7
+ static get onChange() {
8
+ return AXConfig.dataChangeSubject.asObservable();
9
+ }
10
+ static set(arg1, arg2) {
11
+ if (arg1 && typeof arg1 == 'string') {
12
+ setPropByPath(AXConfig.dataModel, arg1, arg2);
13
+ AXConfig.dataChangeSubject.next(AXConfig.dataModel);
14
+ return;
15
+ }
16
+ if (arg1 && typeof arg1 == 'object') {
17
+ Object.assign(AXConfig.dataModel, arg1);
18
+ AXConfig.dataChangeSubject.next(AXConfig.dataModel);
19
+ return;
20
+ }
21
+ if (!arg1 && !arg2) {
22
+ return AXConfig.dataChangeSubject.asObservable();
23
+ }
24
+ }
25
+ static get(path) {
26
+ return getPropByPath(AXConfig.dataModel, path);
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VydmljZXMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRSxXQUFXO0FBQ1gsTUFBTSxPQUFPLFFBQVE7SUFDVCxNQUFNLENBQUMsU0FBUyxHQUFRLEVBQUUsQ0FBQztJQUMzQixNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUd0RCxNQUFNLEtBQUssUUFBUTtRQUNmLE9BQU8sUUFBUSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFJRCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVUsRUFBRSxJQUFVO1FBRTdCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLFFBQVEsRUFBRTtZQUNqQyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEQsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4QyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2hCLE9BQU8sUUFBUSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3BEO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBWTtRQUNuQixPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRQcm9wQnlQYXRoLCBzZXRQcm9wQnlQYXRoIH0gZnJvbSAnLi4vdXRpbHMvb2JqZWN0L29iamVjdC11dGlsJztcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBBWENvbmZpZyB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgZGF0YU1vZGVsOiBhbnkgPSB7fTtcbiAgICBwcml2YXRlIHN0YXRpYyBkYXRhQ2hhbmdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuXG4gICAgc3RhdGljIGdldCBvbkNoYW5nZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gQVhDb25maWcuZGF0YUNoYW5nZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHNldChjb25maWc6IGFueSk6IGFueTtcbiAgICBzdGF0aWMgc2V0KHBhdGg6IHN0cmluZywgdmFsdWU/OiBhbnkpOiB2b2lkO1xuICAgIHN0YXRpYyBzZXQoYXJnMT86IGFueSwgYXJnMj86IGFueSkge1xuXG4gICAgICAgIGlmIChhcmcxICYmIHR5cGVvZiBhcmcxID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBzZXRQcm9wQnlQYXRoKEFYQ29uZmlnLmRhdGFNb2RlbCwgYXJnMSwgYXJnMik7XG4gICAgICAgICAgICBBWENvbmZpZy5kYXRhQ2hhbmdlU3ViamVjdC5uZXh0KEFYQ29uZmlnLmRhdGFNb2RlbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyZzEgJiYgdHlwZW9mIGFyZzEgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oQVhDb25maWcuZGF0YU1vZGVsLCBhcmcxKTtcbiAgICAgICAgICAgIEFYQ29uZmlnLmRhdGFDaGFuZ2VTdWJqZWN0Lm5leHQoQVhDb25maWcuZGF0YU1vZGVsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFyZzEgJiYgIWFyZzIpIHtcbiAgICAgICAgICAgIHJldHVybiBBWENvbmZpZy5kYXRhQ2hhbmdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBnZXQocGF0aDogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIGdldFByb3BCeVBhdGgoQVhDb25maWcuZGF0YU1vZGVsLCBwYXRoKTtcbiAgICB9XG59Il19
@@ -0,0 +1,34 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AXEventService {
4
+ list = [];
5
+ broadcast(key, options) {
6
+ const d = this.list.find(c => c.key === key);
7
+ if (d) {
8
+ d.events.forEach(c => {
9
+ c(options);
10
+ });
11
+ }
12
+ }
13
+ on(key, callback) {
14
+ let d = this.list.find(c => c.key === key);
15
+ if (!d) {
16
+ d = { key, events: [] };
17
+ this.list.push(d);
18
+ }
19
+ d.events.push(callback);
20
+ }
21
+ destroy(key, callback) {
22
+ const d = this.list.find(c => c.key === key);
23
+ if (d) {
24
+ d.events = [];
25
+ }
26
+ }
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
28
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXEventService, providedIn: 'root' });
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXEventService, decorators: [{
31
+ type: Injectable,
32
+ args: [{ providedIn: 'root' }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGNBQWM7SUFDZixJQUFJLEdBQVUsRUFBRSxDQUFDO0lBRWxCLFNBQVMsQ0FBQyxHQUFXLEVBQUUsT0FBYTtRQUN2QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEVBQUU7WUFDSCxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDakIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFTSxFQUFFLENBQUMsR0FBVyxFQUFFLFFBQWlDO1FBQ3BELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQjtRQUNELENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVyxFQUFFLFFBQWlDO1FBQ3pELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsRUFBRTtZQUNILENBQUMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQzt3R0ExQlEsY0FBYzs0R0FBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYRXZlbnRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGxpc3Q6IGFueVtdID0gW107XG5cbiAgICBwdWJsaWMgYnJvYWRjYXN0KGtleTogc3RyaW5nLCBvcHRpb25zPzogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmxpc3QuZmluZChjID0+IGMua2V5ID09PSBrZXkpO1xuICAgICAgICBpZiAoZCkge1xuICAgICAgICAgICAgZC5ldmVudHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgICAgICAgICBjKG9wdGlvbnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb24oa2V5OiBzdHJpbmcsIGNhbGxiYWNrOiAob3B0aW9ucz86IGFueSkgPT4gdm9pZCkge1xuICAgICAgICBsZXQgZCA9IHRoaXMubGlzdC5maW5kKGMgPT4gYy5rZXkgPT09IGtleSk7XG4gICAgICAgIGlmICghZCkge1xuICAgICAgICAgICAgZCA9IHsga2V5LCBldmVudHM6IFtdIH07XG4gICAgICAgICAgICB0aGlzLmxpc3QucHVzaChkKTtcbiAgICAgICAgfVxuICAgICAgICBkLmV2ZW50cy5wdXNoKGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzdHJveShrZXk6IHN0cmluZywgY2FsbGJhY2s6IChvcHRpb25zPzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmxpc3QuZmluZChjID0+IGMua2V5ID09PSBrZXkpO1xuICAgICAgICBpZiAoZCkge1xuICAgICAgICAgICAgZC5ldmVudHMgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AXNavigator {
4
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXNavigator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXNavigator });
6
+ }
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXNavigator, decorators: [{
8
+ type: Injectable
9
+ }] });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9uYXZpZ2F0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQWdCLFdBQVc7d0dBQVgsV0FBVzs0R0FBWCxXQUFXOzs0RkFBWCxXQUFXO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhOYXZpZ2F0b3JQYXJhbSB9IGZyb20gJy4uL2NsYXNzZXMvbmF2aWdhdG9yLmNsYXNzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYTmF2aWdhdG9yIHtcbiAgICBhYnN0cmFjdCBuYXZpZ2F0ZShwYXJhbXM6IEFYTmF2aWdhdG9yUGFyYW0pO1xuICAgIGFic3RyYWN0IHBvcHVwKHBhcmFtczogQVhOYXZpZ2F0b3JQYXJhbSk7XG59Il19
@@ -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
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXStorageService });
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXStorageService, decorators: [{
14
+ type: Injectable
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDMUIsR0FBRyxDQUFDLEdBQVc7UUFDWixPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFRLENBQUM7SUFDM0MsQ0FBQztJQUNELEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUN4QixZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFlLENBQUMsQ0FBQztJQUM5QyxDQUFDO3dHQU5TLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhTdG9yYWdlU2VydmljZSB7XG4gICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkgYXMgYW55O1xuICAgfVxuICAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlIGFzIHN0cmluZyk7XG4gICB9XG59XG4iXX0=
@@ -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 lang = 'en';
7
+ static dataChangeSubject = new Subject();
8
+ static get onChange() {
9
+ return AXTranslator.dataChangeSubject.asObservable();
10
+ }
11
+ static load(lang, value) {
12
+ if (typeof value === 'object') {
13
+ if (!AXTranslator[`__data__${lang}`]) {
14
+ AXTranslator[`__data__${lang}`] = {};
15
+ }
16
+ AXTranslator[`__data__${lang}`] = merge(AXTranslator[`__data__${lang}`], value);
17
+ }
18
+ }
19
+ static use(lang) {
20
+ AXTranslator.lang = lang;
21
+ }
22
+ static get(key, lang) {
23
+ return getPropByPath(AXTranslator[`__data__${lang || AXTranslator.lang}`], key) || key;
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3RyYW5zbGF0b3IvdHJhbnNsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUVwQyxXQUFXO0FBQ1gsTUFBTSxPQUFPLFlBQVk7SUFDYixNQUFNLENBQUMsSUFBSSxHQUFXLElBQUksQ0FBQztJQUMzQixNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUd0RCxNQUFNLEtBQUssUUFBUTtRQUNmLE9BQU8sWUFBWSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQVksRUFBRSxLQUFVO1FBQ3ZDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUNsQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUN4QztZQUNELFlBQVksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbkY7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQzFCLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFhO1FBQ3hDLE9BQU8sYUFBYSxDQUFDLFlBQVksQ0FBQyxXQUFXLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDM0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldFByb3BCeVBhdGh9IGZyb20gJy4uL3V0aWxzL29iamVjdC9vYmplY3QtdXRpbCc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoLWVzL21lcmdlJztcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0b3Ige1xuICAgIHByaXZhdGUgc3RhdGljIGxhbmc6IHN0cmluZyA9ICdlbic7XG4gICAgcHJpdmF0ZSBzdGF0aWMgZGF0YUNoYW5nZVN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cblxuICAgIHN0YXRpYyBnZXQgb25DaGFuZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIEFYVHJhbnNsYXRvci5kYXRhQ2hhbmdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxvYWQobGFuZzogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAoIUFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0pIHtcbiAgICAgICAgICAgICAgICBBWFRyYW5zbGF0b3JbYF9fZGF0YV9fJHtsYW5nfWBdID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBBWFRyYW5zbGF0b3JbYF9fZGF0YV9fJHtsYW5nfWBdID0gbWVyZ2UoQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZ31gXSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB1c2UobGFuZzogc3RyaW5nKSB7XG4gICAgICAgIEFYVHJhbnNsYXRvci5sYW5nID0gbGFuZztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldChrZXk6IHN0cmluZywgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBnZXRQcm9wQnlQYXRoKEFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmcgfHwgQVhUcmFuc2xhdG9yLmxhbmd9YF0sIGtleSkgfHwga2V5O1xuICAgIH1cbn0iXX0=
@@ -0,0 +1,25 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { AXTranslatorPipe } from './translator.pipe';
3
+ import * as en from '../locale/en.json';
4
+ import * as fa from '../locale/fa.json';
5
+ import { AXTranslator } from './translator';
6
+ import * as i0 from "@angular/core";
7
+ export class AXTranslatorModule {
8
+ constructor() {
9
+ AXTranslator.load('en', en);
10
+ AXTranslator.load('fa', fa);
11
+ }
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTranslatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: AXTranslatorModule, declarations: [AXTranslatorPipe], exports: [AXTranslatorPipe] });
14
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTranslatorModule });
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90cmFuc2xhdG9yL3RyYW5zbGF0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4QyxPQUFPLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBUzVDLE1BQU0sT0FBTyxrQkFBa0I7SUFDM0I7UUFDSSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO3dHQUpRLGtCQUFrQjt5R0FBbEIsa0JBQWtCLGlCQUhaLGdCQUFnQixhQURyQixnQkFBZ0I7eUdBSWpCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFOOUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDM0IsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQ2hDLFNBQVMsRUFBRSxFQUFFO2lCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnLi90cmFuc2xhdG9yLnBpcGUnO1xuaW1wb3J0ICogYXMgZW4gZnJvbSAnLi4vbG9jYWxlL2VuLmpzb24nO1xuaW1wb3J0ICogYXMgZmEgZnJvbSAnLi4vbG9jYWxlL2ZhLmpzb24nO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yIH0gZnJvbSAnLi90cmFuc2xhdG9yJztcblxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtdLFxuICAgIGV4cG9ydHM6IFtBWFRyYW5zbGF0b3JQaXBlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtBWFRyYW5zbGF0b3JQaXBlXSxcbiAgICBwcm92aWRlcnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0b3JNb2R1bGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBBWFRyYW5zbGF0b3IubG9hZCgnZW4nLCBlbik7XG4gICAgICAgIEFYVHJhbnNsYXRvci5sb2FkKCdmYScsIGZhKTtcbiAgICB9XG59XG4iXX0=
@@ -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
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
18
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: AXTranslatorPipe, name: "trans" });
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTranslatorPipe, decorators: [{
21
+ type: Pipe,
22
+ args: [{ name: 'trans', pure: true }]
23
+ }], ctorParameters: function () { return []; } });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdHJhbnNsYXRvci90cmFuc2xhdG9yLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFHNUMsTUFBTSxPQUFPLGdCQUFnQjtJQUV6QixnQkFBZ0IsQ0FBQztJQUVqQiw2REFBNkQ7SUFDN0Qsd0RBQXdEO0lBQ3hELHdCQUF3QjtJQUN4Qiw4QkFBOEI7SUFDOUIsWUFBWTtJQUNaLG9EQUFvRDtJQUNwRCxVQUFVO0lBRVYsSUFBSTtJQUVKLFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBYTtRQUNsQyxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7d0dBaEJRLGdCQUFnQjtzR0FBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yIH0gZnJvbSAnLi90cmFuc2xhdG9yJztcblxuQFBpcGUoeyBuYW1lOiAndHJhbnMnLCBwdXJlOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdG9yUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIC8vIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBsYW5nPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgIC8vICAgICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgICAgcmVzb2x2ZSh0aGlzLnRyYW5zbGF0ZS5nZXQodmFsdWUsIGxhbmcpKTtcbiAgICAvLyAgICAgfSk7XG5cbiAgICAvLyB9XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBBWFRyYW5zbGF0b3IuZ2V0KHZhbHVlLCBsYW5nKTtcbiAgICB9XG59XG4iXX0=
@@ -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
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTranslatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
15
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTranslatorService, providedIn: 'platform' });
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTranslatorService, decorators: [{
18
+ type: Injectable,
19
+ args: [{ providedIn: 'platform' }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdHJhbnNsYXRvci90cmFuc2xhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUc1QyxNQUFNLE9BQU8sbUJBQW1CO0lBRXJCLElBQUksQ0FBQyxJQUFZLEVBQUUsS0FBVTtRQUNoQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sR0FBRyxDQUFDLElBQVk7UUFDbkIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFhO1FBQ2pDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQzt3R0FaUSxtQkFBbUI7NEdBQW5CLG1CQUFtQixjQUROLFVBQVU7OzRGQUN2QixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yIH0gZnJvbSAnLi90cmFuc2xhdG9yJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncGxhdGZvcm0nIH0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdG9yU2VydmljZSB7XG5cbiAgICBwdWJsaWMgbG9hZChsYW5nOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgQVhUcmFuc2xhdG9yLmxvYWQobGFuZywgdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1c2UobGFuZzogc3RyaW5nKSB7XG4gICAgICAgIEFYVHJhbnNsYXRvci51c2UobGFuZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChrZXk6IHN0cmluZywgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBBWFRyYW5zbGF0b3IuZ2V0KGxhbmcsIGxhbmcpO1xuICAgIH1cbn1cblxuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL2FycmF5L2FycmF5LXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELFdBQVc7QUFDWCxNQUFNLE9BQU8sV0FBVztJQUdwQixNQUFNLENBQUMsVUFBVSxDQUFDLEtBQVk7UUFDMUIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUdELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBWSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUk7UUFDdEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUNqQyxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBWSxFQUFFLE9BQWM7UUFDdEMsSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3pDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUU7Z0JBQ3ZCLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDN0IsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN2QixJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUU7d0JBQ2IsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDeEMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7NEJBQ3JCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDdEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNqQixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDOzRCQUNuQyxJQUFJLElBQUksWUFBWSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQ0FDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQ3JEO2lDQUFNO2dDQUNILE1BQU0sR0FBRyxLQUFLLENBQUM7NkJBQ2xCO3lCQUNKOzZCQUFNOzRCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzt5QkFDekM7d0JBQ0QsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUU7NEJBQ2xCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQ0FDeEIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUNqQixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO2dDQUNuQixJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO29DQUN6QixFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO29DQUNuQixRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUU7d0NBQ2pCLEtBQUssT0FBTzs0Q0FDUixNQUFNLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQzs0Q0FDN0QsTUFBTTt3Q0FDVixLQUFLLFdBQVc7NENBQ1osTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7NENBQ2hFLE1BQU07d0NBQ1YsS0FBSyxVQUFVOzRDQUNYLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7NENBQ3ZFLE1BQU07d0NBQ1YsS0FBSyxjQUFjOzRDQUNmLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0Q0FDeEUsTUFBTTt3Q0FDVixLQUFLLFlBQVk7NENBQ2IsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0Q0FDekUsTUFBTTt3Q0FDVixLQUFLLFVBQVU7NENBQ1gsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0Q0FDdkUsTUFBTTt3Q0FDVixLQUFLLFVBQVU7NENBQ1gsTUFBTSxHQUFHLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLFNBQVMsQ0FBQzs0Q0FDeEMsTUFBTTt3Q0FDVixLQUFLLGNBQWM7NENBQ2YsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQzs0Q0FDM0MsTUFBTTt3Q0FDVjs0Q0FDSSxPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7NENBQzlDLE1BQU0sR0FBRyxLQUFLLENBQUM7cUNBQ3RCO2lDQUNKO3FDQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxNQUFNLEVBQUU7aUNBQ2pDO3FDQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7b0NBQ2hDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7b0NBQ2hCLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRTt3Q0FDakIsS0FBSyxPQUFPOzRDQUNSLE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDOzRDQUNuQixNQUFNO3dDQUNWLEtBQUssV0FBVzs0Q0FDWixNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQzs0Q0FDbkIsTUFBTTt3Q0FDVixLQUFLLFVBQVU7NENBQ1gsTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7NENBQ3RELE1BQU07d0NBQ1YsS0FBSyxXQUFXOzRDQUNaLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDOzRDQUNqQixNQUFNO3dDQUNWLEtBQUssaUJBQWlCOzRDQUNsQixNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQzs0Q0FDbEIsTUFBTTt3Q0FDVixLQUFLLGNBQWM7NENBQ2YsTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7NENBQ2pCLE1BQU07d0NBQ1YsS0FBSyxvQkFBb0I7NENBQ3JCLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDOzRDQUNsQixNQUFNO3dDQUNWLEtBQUssVUFBVTs0Q0FDWCxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEtBQUssU0FBUyxDQUFDOzRDQUN4QyxNQUFNO3dDQUNWLEtBQUssY0FBYzs0Q0FDZixNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLFNBQVMsQ0FBQyxDQUFDOzRDQUMzQyxNQUFNO3dDQUNWOzRDQUNJLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQzs0Q0FDOUMsTUFBTSxHQUFHLEtBQUssQ0FBQztxQ0FDdEI7aUNBQ0o7cUNBQU07b0NBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO29DQUMvQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2lDQUNsQjtnQ0FDRCxJQUFJLE1BQU0sRUFBRTtvQ0FDUixNQUFNO2lDQUNUOzZCQUNKO3lCQUNKO3FCQUNKO29CQUNELElBQUksQ0FBQyxNQUFNLEVBQUU7d0JBQ1QsT0FBTyxLQUFLLENBQUM7cUJBQ2hCO2lCQUNKO2FBQ0o7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUM7UUFDRixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGZXRjaFByb3AgfSBmcm9tICcuLi9vYmplY3Qvb2JqZWN0LXV0aWwnO1xuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIEFYQXJyYXlVdGlsIHtcblxuXG4gICAgc3RhdGljIHBpY2tSYW5kb20oYXJyYXk6IGFueVtdKTogYW55IHtcbiAgICAgICAgcmV0dXJuIGFycmF5W01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGFycmF5Lmxlbmd0aCldO1xuICAgIH1cblxuXG4gICAgc3RhdGljIGluc2VydChhcnJheTogYW55W10sIGluZGV4LCAuLi5yZXN0KSB7XG4gICAgICAgIGFycmF5LnNwbGljZS5hcHBseShhcnJheSwgW2luZGV4LCAwXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocmVzdCwgMSkpKTtcbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIHN0YXRpYyByYW5nZShtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXkobWF4IC0gbWluKS5maWxsKDEpLm1hcCgoZCwgaSkgPT4gaSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGZpbHRlcihhcnJheTogYW55W10sIGZpbHRlcnM6IGFueVtdKTogYW55W10ge1xuICAgICAgICBpZiAoZmlsdGVycyA9PSBudWxsIHx8IGZpbHRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGFtZGEgPSAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWx0ZXJzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmID0gZmlsdGVyc1trZXldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZiAhPT0gJ0FORCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG10ID0gZi5maWVsZC5tYXRjaCgvXFxbXFw6KC4qPylcXF0vKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtdCAmJiBtdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcDEgPSBmLmZpZWxkLnJlcGxhY2UobXRbMF0sICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwMiA9IG10WzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3AgPSBBWEZldGNoUHJvcChpdGVtLCBwMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgaW5zdGFuY2VvZiBBcnJheSAmJiBwcm9wLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxzLnB1c2goLi4ucHJvcC5tYXAobSA9PiAoQVhGZXRjaFByb3AobSwgcDIpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFscy5wdXNoKEFYRmV0Y2hQcm9wKGl0ZW0sIGYuZmllbGQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaiBpbiB2YWxzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHMuaGFzT3duUHJvcGVydHkoaikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHYxID0gdmFsc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdjIgPSBmLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZi5kYXRhVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxID0gdjEudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZi5jb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlcXVhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICh2MSAmJiB2MikgJiYgdjEudG9Mb3dlckNhc2UoKSA9PT0gdjIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbm90LWVxdWFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gISgodjEgJiYgdjIpICYmIHYxLnRvTG93ZXJDYXNlKCkgPT09IHYyLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWlucyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICgodjEgJiYgdjIpICYmICh2MS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHYyLnRvTG93ZXJDYXNlKCkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ25vdC1jb250YWlucyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICEoKHYxICYmIHYyKSAmJiAodjEudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2Mi50b0xvd2VyQ2FzZSgpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGFydC13aXRoJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKCh2MSAmJiB2MikgJiYgKHYxLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCh2Mi50b0xvd2VyQ2FzZSgpKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbmQtd2l0aCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICgodjEgJiYgdjIpICYmICh2MS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKHYyLnRvTG93ZXJDYXNlKCkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lzLWVtcHR5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjEgPT0gbnVsbCB8fCB2MSA9PT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpcy1ub3QtZW1wdHknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAhKHYxID09IG51bGwgfHwgdjEgPT09IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBjb25kaXRpb24gaXMgbm90IGRlZmluZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZi5kYXRhVHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZi5kYXRhVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxID0gTnVtYmVyKHYxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZi5jb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlcXVhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHYxID09PSB2MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbm90LWVxdWFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjEgIT09IHYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWlucyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHYyICYmIHYyIGluc3RhbmNlb2YgQXJyYXkgJiYgdjIuaW5jbHVkZXModjEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsZXNzLXRoYW4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MSA8IHYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsZXNzLXRoYW4tZXF1YWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2MSA8PSB2MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JlYXRlci10aGFuJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjEgPiB2MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JlYXRlci10aGFuLWVxdWFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjEgPj0gdjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lzLWVtcHR5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdjEgPT0gbnVsbCB8fCB2MSA9PT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpcy1ub3QtZW1wdHknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAhKHYxID09IG51bGwgfHwgdjEgPT09IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBjb25kaXRpb24gaXMgbm90IGRlZmluZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdUaGUgZGF0YXR5cGUgaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gYXJyYXkuZmlsdGVyKGxhbWRhKTtcbiAgICB9XG5cbn1cblxuXG5cblxuXG4iXX0=
@@ -0,0 +1,200 @@
1
+ import { AXMathUtil } from '../math/math-util';
2
+ export class AXPoint {
3
+ x;
4
+ y;
5
+ constructor(x, y) {
6
+ this.x = x;
7
+ this.y = y;
8
+ }
9
+ }
10
+ export class AXClientRec {
11
+ _left;
12
+ get left() {
13
+ return this._left;
14
+ }
15
+ set left(v) {
16
+ this._left = v;
17
+ }
18
+ _top;
19
+ get top() {
20
+ return this._top;
21
+ }
22
+ set top(v) {
23
+ this._top = v;
24
+ }
25
+ _right;
26
+ get right() {
27
+ return this._right;
28
+ }
29
+ set right(v) {
30
+ this._right = v;
31
+ }
32
+ _bottom;
33
+ get bottom() {
34
+ return this._bottom;
35
+ }
36
+ set bottom(v) {
37
+ this._bottom = v;
38
+ }
39
+ _width;
40
+ get width() {
41
+ return this._width;
42
+ }
43
+ set width(v) {
44
+ this._width = v;
45
+ }
46
+ _height;
47
+ get height() {
48
+ return this._height;
49
+ }
50
+ set height(v) {
51
+ this._height = v;
52
+ }
53
+ constructor(rec) {
54
+ this._left = rec.left;
55
+ this._top = rec.top;
56
+ this._width = rec.width;
57
+ this._height = rec.height;
58
+ this._right = this._left + this._width;
59
+ this._bottom = this._top + this._height;
60
+ }
61
+ intersect(rec) {
62
+ return (this.left < rec.left + rec.width &&
63
+ this.left + this.width > rec.left &&
64
+ this.top < rec.top + rec.height &&
65
+ this.top + this.height > rec.top);
66
+ }
67
+ }
68
+ // @dynamic
69
+ export class AXHtmlUtil {
70
+ static getBoundingRectPoint(el, placement) {
71
+ const rec = el.getBoundingClientRect();
72
+ const width = el.offsetWidth;
73
+ const height = el.offsetHeight;
74
+ switch (placement) {
75
+ case 'top-start':
76
+ return new AXPoint(rec.left, rec.top);
77
+ case 'top-middle':
78
+ return new AXPoint(rec.left + (width / 2), rec.top);
79
+ case 'top-end':
80
+ return new AXPoint(rec.left + (width), rec.top);
81
+ case 'center-end':
82
+ return new AXPoint(rec.left + (width), rec.top + (height / 2));
83
+ case 'bottom-end':
84
+ return new AXPoint(rec.left + (width), rec.top + (height));
85
+ case 'bottom-middle':
86
+ return new AXPoint(rec.left + (width / 2), rec.top + (height));
87
+ case 'bottom-start':
88
+ return new AXPoint(rec.left, rec.top + (height));
89
+ case 'center-start':
90
+ return new AXPoint(rec.left, rec.top + (height / 2));
91
+ default:
92
+ return new AXPoint(rec.left + (width / 2), rec.top + (height));
93
+ }
94
+ }
95
+ static isInRecPoint(pos, rec) {
96
+ return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));
97
+ }
98
+ // static isOverLap(rec1: AXClientRecCtor, rec2: AXClientRecCtor): boolean {
99
+ // const r1: AXClientRec = new AXClientRec(rec1);
100
+ // const r2: AXClientRec = new AXClientRec(rec2);
101
+ // return ;
102
+ // }
103
+ static isInElementBound(pos, element) {
104
+ const elBound = element.getBoundingClientRect();
105
+ return AXHtmlUtil.isInRecPoint(pos, {
106
+ left: elBound.left,
107
+ width: elBound.width,
108
+ top: elBound.top,
109
+ height: elBound.height
110
+ });
111
+ }
112
+ static getDimensions() {
113
+ let winW = 630;
114
+ let winH = 460;
115
+ if (document.body && document.body.offsetWidth) {
116
+ winW = document.body.offsetWidth;
117
+ winH = document.body.offsetHeight;
118
+ }
119
+ if (document.compatMode === 'CSS1Compat' && document.documentElement && document.documentElement.offsetWidth) {
120
+ winW = document.documentElement.offsetWidth;
121
+ winH = document.documentElement.offsetHeight;
122
+ }
123
+ if (window.innerWidth && window.innerHeight) {
124
+ winW = window.innerWidth;
125
+ winH = window.innerHeight;
126
+ }
127
+ return { width: winW, height: winH };
128
+ }
129
+ static getOffsetRight(elem) {
130
+ let element = elem;
131
+ const width = element.offsetWidth;
132
+ let right = 0;
133
+ while (element.offsetParent) {
134
+ right += element.offsetLeft;
135
+ element = element.offsetParent;
136
+ }
137
+ right += element.offsetLeft;
138
+ right = AXHtmlUtil.getDimensions().width - right;
139
+ right -= width;
140
+ return right;
141
+ }
142
+ static getUID() {
143
+ return 'el-' + AXMathUtil.randomRange(1000000000, 9999999999).toString();
144
+ }
145
+ static getRelatedPosition(source, placement, target, alignment) {
146
+ const result = { x: 0, y: 0 };
147
+ const sourcePos = AXHtmlUtil.getBoundingRectPoint(source, placement);
148
+ let top = 0;
149
+ let left = 0;
150
+ switch (alignment) {
151
+ case 'top-start':
152
+ top = sourcePos.y;
153
+ left = sourcePos.x;
154
+ break;
155
+ case 'top-middle':
156
+ top = sourcePos.y;
157
+ left = sourcePos.x - target.offsetWidth / 2;
158
+ break;
159
+ case 'top-end':
160
+ top = sourcePos.y;
161
+ left = sourcePos.x - target.offsetWidth;
162
+ break;
163
+ case 'center-end':
164
+ top = sourcePos.y - target.offsetHeight / 2;
165
+ left = sourcePos.x - target.offsetWidth;
166
+ break;
167
+ case 'bottom-end':
168
+ top = sourcePos.y - target.offsetHeight;
169
+ left = sourcePos.x - target.offsetWidth;
170
+ break;
171
+ case 'bottom-middle':
172
+ top = sourcePos.y - target.offsetHeight;
173
+ left = sourcePos.x - target.offsetWidth / 2;
174
+ break;
175
+ case 'bottom-start':
176
+ top = sourcePos.y - target.offsetHeight;
177
+ left = sourcePos.x;
178
+ break;
179
+ case 'center-start':
180
+ top = sourcePos.y - target.offsetHeight / 2;
181
+ left = sourcePos.x;
182
+ break;
183
+ }
184
+ result.y = top;
185
+ result.x = left;
186
+ return result;
187
+ }
188
+ static collision(a, b) {
189
+ const ac = a.getBoundingClientRect();
190
+ const bc = b.getBoundingClientRect();
191
+ if (ac.left < bc.left + bc.width && ac.left + ac.width > bc.left &&
192
+ ac.top < bc.top + bc.height && ac.top + ac.height > bc.top) {
193
+ return true;
194
+ }
195
+ else {
196
+ return false;
197
+ }
198
+ }
199
+ }
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvaHRtbC9odG1sLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBMkIvQyxNQUFNLE9BQU8sT0FBTztJQUNDO0lBQWtCO0lBQXJDLFlBQW1CLENBQVMsRUFBUyxDQUFTO1FBQTNCLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO0lBQzlDLENBQUM7Q0FDRjtBQVVELE1BQU0sT0FBTyxXQUFXO0lBR2QsS0FBSyxDQUFTO0lBQ3RCLElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBVyxJQUFJLENBQUMsQ0FBUztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBR08sSUFBSSxDQUFTO0lBQ3JCLElBQVcsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBVyxHQUFHLENBQUMsQ0FBUztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBR08sTUFBTSxDQUFTO0lBQ3ZCLElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBVyxLQUFLLENBQUMsQ0FBUztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBR08sT0FBTyxDQUFTO0lBQ3hCLElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBVyxNQUFNLENBQUMsQ0FBUztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMs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QU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFHRCxNQUFNLENBQUMsU0FBUyxDQUFDLENBQWMsRUFBRSxDQUFjO1FBQzdDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRXJDLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQzlELEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQzVELE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFDSTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1hdGhVdGlsIH0gZnJvbSAnLi4vbWF0aC9tYXRoLXV0aWwnO1xuXG5leHBvcnQgdHlwZSBBWFBsYWNlbWVudCA9XG4gIHwgJ3RvcC1zdGFydCdcbiAgfCAndG9wLW1pZGRsZSdcbiAgfCAndG9wLWVuZCdcbiAgfCAnY2VudGVyLXN0YXJ0J1xuICB8ICdjZW50ZXItZW5kJ1xuICB8ICdib3R0b20tc3RhcnQnXG4gIHwgJ2JvdHRvbS1taWRkbGUnXG4gIHwgJ2JvdHRvbS1lbmQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYSVBvaW50IHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhDb25uZWN0ZWRQb3NpdGlvbiB7XG4gIG9yaWdpblg6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBvcmlnaW5ZOiAndG9wJyB8ICdjZW50ZXInIHwgJ2JvdHRvbSc7XG4gIG92ZXJsYXlYOiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJztcbiAgb3ZlcmxheVk6ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJztcbiAgd2VpZ2h0PzogbnVtYmVyO1xuICBvZmZzZXRYPzogbnVtYmVyO1xuICBvZmZzZXRZPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgQVhQb2ludCBpbXBsZW1lbnRzIEFYSVBvaW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIHg6IG51bWJlciwgcHVibGljIHk6IG51bWJlcikge1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhDbGllbnRSZWNDdG9yIHtcbiAgbGVmdD86IG51bWJlcjtcbiAgdG9wPzogbnVtYmVyO1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBib3R0b20/OiBudW1iZXI7XG4gIHJpZ2h0PzogbnVtYmVyO1xufVxuZXhwb3J0IGNsYXNzIEFYQ2xpZW50UmVjIGltcGxlbWVudHMgQVhDbGllbnRSZWNDdG9yIHtcblxuXG4gIHByaXZhdGUgX2xlZnQ6IG51bWJlcjtcbiAgcHVibGljIGdldCBsZWZ0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2xlZnQ7XG4gIH1cbiAgcHVibGljIHNldCBsZWZ0KHY6IG51bWJlcikge1xuICAgIHRoaXMuX2xlZnQgPSB2O1xuICB9XG5cblxuICBwcml2YXRlIF90b3A6IG51bWJlcjtcbiAgcHVibGljIGdldCB0b3AoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG9wO1xuICB9XG4gIHB1YmxpYyBzZXQgdG9wKHY6IG51bWJlcikge1xuICAgIHRoaXMuX3RvcCA9IHY7XG4gIH1cblxuXG4gIHByaXZhdGUgX3JpZ2h0OiBudW1iZXI7XG4gIHB1YmxpYyBnZXQgcmlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcmlnaHQ7XG4gIH1cbiAgcHVibGljIHNldCByaWdodCh2OiBudW1iZXIpIHtcbiAgICB0aGlzLl9yaWdodCA9IHY7XG4gIH1cblxuXG4gIHByaXZhdGUgX2JvdHRvbTogbnVtYmVyO1xuICBwdWJsaWMgZ2V0IGJvdHRvbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9ib3R0b207XG4gIH1cbiAgcHVibGljIHNldCBib3R0b20odjogbnVtYmVyKSB7XG4gICAgdGhpcy5fYm90dG9tID0gdjtcbiAgfVxuXG5cblxuICBwcml2YXRlIF93aWR0aDogbnVtYmVyO1xuICBwdWJsaWMgZ2V0IHdpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpZHRoO1xuICB9XG4gIHB1YmxpYyBzZXQgd2lkdGgodjogbnVtYmVyKSB7XG4gICAgdGhpcy5fd2lkdGggPSB2O1xuICB9XG5cblxuICBwcml2YXRlIF9oZWlnaHQ6IG51bWJlcjtcbiAgcHVibGljIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICB9XG4gIHB1YmxpYyBzZXQgaGVpZ2h0KHY6IG51bWJlcikge1xuICAgIHRoaXMuX2hlaWdodCA9IHY7XG4gIH1cblxuXG4gIGNvbnN0cnVjdG9yKHJlYzogQVhDbGllbnRSZWNDdG9yKSB7XG4gICAgdGhpcy5fbGVmdCA9IHJlYy5sZWZ0O1xuICAgIHRoaXMuX3RvcCA9IHJlYy50b3A7XG4gICAgdGhpcy5fd2lkdGggPSByZWMud2lkdGg7XG4gICAgdGhpcy5faGVpZ2h0ID0gcmVjLmhlaWdodDtcbiAgICB0aGlzLl9yaWdodCA9IHRoaXMuX2xlZnQgKyB0aGlzLl93aWR0aDtcbiAgICB0aGlzLl9ib3R0b20gPSB0aGlzLl90b3AgKyB0aGlzLl9oZWlnaHQ7XG4gIH1cblxuICBwdWJsaWMgaW50ZXJzZWN0KHJlYzogQVhDbGllbnRSZWNDdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmxlZnQgPCByZWMubGVmdCArIHJlYy53aWR0aCAmJlxuICAgICAgdGhpcy5sZWZ0ICsgdGhpcy53aWR0aCA+IHJlYy5sZWZ0ICYmXG4gICAgICB0aGlzLnRvcCA8IHJlYy50b3AgKyByZWMuaGVpZ2h0ICYmXG4gICAgICB0aGlzLnRvcCArIHRoaXMuaGVpZ2h0ID4gcmVjLnRvcCk7XG4gIH1cblxuXG59XG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIEFYSHRtbFV0aWwge1xuICBzdGF0aWMgZ2V0Qm91bmRpbmdSZWN0UG9pbnQoZWw6IEhUTUxFbGVtZW50LCBwbGFjZW1lbnQ6IEFYUGxhY2VtZW50KTogQVhQb2ludCB7XG4gICAgY29uc3QgcmVjID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qgd2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBoZWlnaHQgPSBlbC5vZmZzZXRIZWlnaHQ7XG4gICAgc3dpdGNoIChwbGFjZW1lbnQpIHtcbiAgICAgIGNhc2UgJ3RvcC1zdGFydCc6XG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCwgcmVjLnRvcCk7XG4gICAgICBjYXNlICd0b3AtbWlkZGxlJzpcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBvaW50KHJlYy5sZWZ0ICsgKHdpZHRoIC8gMiksIHJlYy50b3ApO1xuICAgICAgY2FzZSAndG9wLWVuZCc6XG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCArICh3aWR0aCksIHJlYy50b3ApO1xuICAgICAgY2FzZSAnY2VudGVyLWVuZCc6XG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCArICh3aWR0aCksIHJlYy50b3AgKyAoaGVpZ2h0IC8gMikpO1xuICAgICAgY2FzZSAnYm90dG9tLWVuZCc6XG4gICAgICAgIHJldHVybiBuZXcgQVhQb2ludChyZWMubGVmdCArICh3aWR0aCksIHJlYy50b3AgKyAoaGVpZ2h0KSk7XG4gICAgICBjYXNlICdib3R0b20tbWlkZGxlJzpcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBvaW50KHJlYy5sZWZ0ICsgKHdpZHRoIC8gMiksIHJlYy50b3AgKyAoaGVpZ2h0KSk7XG4gICAgICBjYXNlICdib3R0b20tc3RhcnQnOlxuICAgICAgICByZXR1cm4gbmV3IEFYUG9pbnQocmVjLmxlZnQsIHJlYy50b3AgKyAoaGVpZ2h0KSk7XG4gICAgICBjYXNlICdjZW50ZXItc3RhcnQnOlxuICAgICAgICByZXR1cm4gbmV3IEFYUG9pbnQocmVjLmxlZnQsIHJlYy50b3AgKyAoaGVpZ2h0IC8gMikpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBvaW50KHJlYy5sZWZ0ICsgKHdpZHRoIC8gMiksIHJlYy50b3AgKyAoaGVpZ2h0KSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGlzSW5SZWNQb2ludChwb3M6IEFYSVBvaW50LCByZWM6IEFYQ2xpZW50UmVjQ3Rvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwb3MueCA+PSByZWMubGVmdCAmJiBwb3MueCA8PSAocmVjLmxlZnQgKyByZWMud2lkdGgpICYmIHBvcy55ID49IHJlYy50b3AgJiYgKHBvcy55IDw9IChyZWMudG9wICsgcmVjLmhlaWdodCkpO1xuICB9XG5cbiAgLy8gc3RhdGljIGlzT3ZlckxhcChyZWMxOiBBWENsaWVudFJlY0N0b3IsIHJlYzI6IEFYQ2xpZW50UmVjQ3Rvcik6IGJvb2xlYW4ge1xuICAvLyAgIGNvbnN0IHIxOiBBWENsaWVudFJlYyA9IG5ldyBBWENsaWVudFJlYyhyZWMxKTtcbiAgLy8gICBjb25zdCByMjogQVhDbGllbnRSZWMgPSBuZXcgQVhDbGllbnRSZWMocmVjMik7XG5cbiAgLy8gICByZXR1cm4gO1xuICAvLyB9XG5cbiAgc3RhdGljIGlzSW5FbGVtZW50Qm91bmQocG9zOiBBWElQb2ludCwgZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbEJvdW5kID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gQVhIdG1sVXRpbC5pc0luUmVjUG9pbnQocG9zLCB7XG4gICAgICBsZWZ0OiBlbEJvdW5kLmxlZnQsXG4gICAgICB3aWR0aDogZWxCb3VuZC53aWR0aCxcbiAgICAgIHRvcDogZWxCb3VuZC50b3AsXG4gICAgICBoZWlnaHQ6IGVsQm91bmQuaGVpZ2h0XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RGltZW5zaW9ucygpOiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0ge1xuICAgIGxldCB3aW5XID0gNjMwO1xuICAgIGxldCB3aW5IID0gNDYwO1xuICAgIGlmIChkb2N1bWVudC5ib2R5ICYmIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpIHtcbiAgICAgIHdpblcgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoO1xuICAgICAgd2luSCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0O1xuICAgIH1cbiAgICBpZiAoZG9jdW1lbnQuY29tcGF0TW9kZSA9PT0gJ0NTUzFDb21wYXQnICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcbiAgICAgIHdpblcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICB3aW5IID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICB9XG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoICYmIHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgICAgd2luVyA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgd2luSCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICB9XG4gICAgcmV0dXJuIHsgd2lkdGg6IHdpblcsIGhlaWdodDogd2luSCB9O1xuICB9XG5cbiAgc3RhdGljIGdldE9mZnNldFJpZ2h0KGVsZW06IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICBsZXQgZWxlbWVudCA9IGVsZW07XG4gICAgY29uc3Qgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIGxldCByaWdodCA9IDA7XG4gICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7XG4gICAgICByaWdodCArPSBlbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuICAgIHJpZ2h0ICs9IGVsZW1lbnQub2Zmc2V0TGVmdDtcbiAgICByaWdodCA9IEFYSHRtbFV0aWwuZ2V0RGltZW5zaW9ucygpLndpZHRoIC0gcmlnaHQ7XG4gICAgcmlnaHQgLT0gd2lkdGg7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9XG5cbiAgc3RhdGljIGdldFVJRCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZWwtJyArIEFYTWF0aFV0aWwucmFuZG9tUmFuZ2UoMTAwMDAwMDAwMCwgOTk5OTk5OTk5OSkudG9TdHJpbmcoKTtcbiAgfVxuXG5cbiAgc3RhdGljIGdldFJlbGF0ZWRQb3NpdGlvbihzb3VyY2U6IEhUTUxFbGVtZW50LCBwbGFjZW1lbnQ6IEFYUGxhY2VtZW50LCB0YXJnZXQ6IEhUTUxFbGVtZW50LCBhbGlnbm1lbnQ6IEFYUGxhY2VtZW50KTogQVhJUG9pbnQge1xuICAgIGNvbnN0IHJlc3VsdDogQVhJUG9pbnQgPSB7IHg6IDAsIHk6IDAgfTtcblxuICAgIGNvbnN0IHNvdXJjZVBvczogQVhQb2ludCA9IEFYSHRtbFV0aWwuZ2V0Qm91bmRpbmdSZWN0UG9pbnQoc291cmNlLCBwbGFjZW1lbnQpO1xuXG5cbiAgICBsZXQgdG9wOiBudW1iZXIgPSAwO1xuICAgIGxldCBsZWZ0OiBudW1iZXIgPSAwO1xuICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7XG4gICAgICBjYXNlICd0b3Atc3RhcnQnOlxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueTtcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcC1taWRkbGUnOlxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueTtcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54IC0gdGFyZ2V0Lm9mZnNldFdpZHRoIC8gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3AtZW5kJzpcbiAgICAgICAgdG9wID0gc291cmNlUG9zLnk7XG4gICAgICAgIGxlZnQgPSBzb3VyY2VQb3MueCAtIHRhcmdldC5vZmZzZXRXaWR0aDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjZW50ZXItZW5kJzpcbiAgICAgICAgdG9wID0gc291cmNlUG9zLnkgLSB0YXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjtcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54IC0gdGFyZ2V0Lm9mZnNldFdpZHRoO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbS1lbmQnOlxuICAgICAgICB0b3AgPSBzb3VyY2VQb3MueSAtIHRhcmdldC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGxlZnQgPSBzb3VyY2VQb3MueCAtIHRhcmdldC5vZmZzZXRXaWR0aDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20tbWlkZGxlJzpcbiAgICAgICAgdG9wID0gc291cmNlUG9zLnkgLSB0YXJnZXQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBsZWZ0ID0gc291cmNlUG9zLnggLSB0YXJnZXQub2Zmc2V0V2lkdGggLyAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbS1zdGFydCc6XG4gICAgICAgIHRvcCA9IHNvdXJjZVBvcy55IC0gdGFyZ2V0Lm9mZnNldEhlaWdodDtcbiAgICAgICAgbGVmdCA9IHNvdXJjZVBvcy54O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlci1zdGFydCc6XG4gICAgICAgIHRvcCA9IHNvdXJjZVBvcy55IC0gdGFyZ2V0Lm9mZnNldEhlaWdodCAvIDI7XG4gICAgICAgIGxlZnQgPSBzb3VyY2VQb3MueDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJlc3VsdC55ID0gdG9wO1xuICAgIHJlc3VsdC54ID0gbGVmdDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cblxuICBzdGF0aWMgY29sbGlzaW9uKGE6IEhUTUxFbGVtZW50LCBiOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjID0gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBiYyA9IGIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBpZiAoYWMubGVmdCA8IGJjLmxlZnQgKyBiYy53aWR0aCAmJiBhYy5sZWZ0ICsgYWMud2lkdGggPiBiYy5sZWZ0ICYmXG4gICAgICBhYy50b3AgPCBiYy50b3AgKyBiYy5oZWlnaHQgJiYgYWMudG9wICsgYWMuaGVpZ2h0ID4gYmMudG9wKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==