@stemy/ngx-utils 12.1.2 → 12.1.5

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 (121) hide show
  1. package/bundles/stemy-ngx-utils.umd.js +51 -30
  2. package/bundles/stemy-ngx-utils.umd.js.map +1 -1
  3. package/esm2015/ngx-utils/components/unordered-list/unordered-list.component.js +2 -2
  4. package/esm2015/ngx-utils/services/acl.service.js +3 -1
  5. package/esm2015/ngx-utils/services/config.service.js +4 -4
  6. package/esm2015/ngx-utils/services/static-language.service.js +17 -17
  7. package/esm2015/ngx-utils/services/storage.service.js +4 -4
  8. package/esm2015/ngx-utils/utils/file-system.js +20 -0
  9. package/esm2015/public_api.js +2 -1
  10. package/esm2020/ngx-utils/common-types.mjs +117 -0
  11. package/esm2020/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +178 -0
  12. package/esm2020/ngx-utils/components/pagination-menu/pagination-menu.component.mjs +101 -0
  13. package/esm2020/ngx-utils/components/unordered-list/unordered-list.component.mjs +65 -0
  14. package/esm2020/ngx-utils/directives/async-method.base.mjs +78 -0
  15. package/esm2020/ngx-utils/directives/async-method.directive.mjs +21 -0
  16. package/esm2020/ngx-utils/directives/background.directive.mjs +51 -0
  17. package/esm2020/ngx-utils/directives/dynamic-table-template.directive.mjs +20 -0
  18. package/esm2020/ngx-utils/directives/global-template.directive.mjs +30 -0
  19. package/esm2020/ngx-utils/directives/icon.directive.mjs +67 -0
  20. package/esm2020/ngx-utils/directives/ngx-template-outlet.directive.mjs +90 -0
  21. package/esm2020/ngx-utils/directives/pagination-item.directive.mjs +33 -0
  22. package/esm2020/ngx-utils/directives/pagination.directive.mjs +83 -0
  23. package/esm2020/ngx-utils/directives/resource-if.directive.mjs +50 -0
  24. package/esm2020/ngx-utils/directives/sticky-class.directive.mjs +34 -0
  25. package/esm2020/ngx-utils/directives/sticky.directive.mjs +55 -0
  26. package/esm2020/ngx-utils/directives/unordered-list-item.directive.mjs +77 -0
  27. package/esm2020/ngx-utils/directives/unordered-list-template.directive.mjs +26 -0
  28. package/esm2020/ngx-utils/ngx-utils.imports.mjs +165 -0
  29. package/esm2020/ngx-utils/ngx-utils.module.mjs +178 -0
  30. package/esm2020/ngx-utils/pipes/chunk.pipe.mjs +25 -0
  31. package/esm2020/ngx-utils/pipes/entries.pipe.mjs +28 -0
  32. package/esm2020/ngx-utils/pipes/extra-item-properties.pipe.mjs +31 -0
  33. package/esm2020/ngx-utils/pipes/filter.pipe.mjs +42 -0
  34. package/esm2020/ngx-utils/pipes/find.pipe.mjs +29 -0
  35. package/esm2020/ngx-utils/pipes/format-number.pipe.mjs +21 -0
  36. package/esm2020/ngx-utils/pipes/get-offset.pipe.mjs +17 -0
  37. package/esm2020/ngx-utils/pipes/get-type.pipe.mjs +16 -0
  38. package/esm2020/ngx-utils/pipes/global-template.pipe.mjs +41 -0
  39. package/esm2020/ngx-utils/pipes/group-by.pipe.mjs +27 -0
  40. package/esm2020/ngx-utils/pipes/is-type.pipe.mjs +16 -0
  41. package/esm2020/ngx-utils/pipes/join.pipe.mjs +19 -0
  42. package/esm2020/ngx-utils/pipes/keys.pipe.mjs +22 -0
  43. package/esm2020/ngx-utils/pipes/map.pipe.mjs +29 -0
  44. package/esm2020/ngx-utils/pipes/max.pipe.mjs +26 -0
  45. package/esm2020/ngx-utils/pipes/min.pipe.mjs +26 -0
  46. package/esm2020/ngx-utils/pipes/reduce.pipe.mjs +30 -0
  47. package/esm2020/ngx-utils/pipes/remap.pipe.mjs +32 -0
  48. package/esm2020/ngx-utils/pipes/replace.pipe.mjs +16 -0
  49. package/esm2020/ngx-utils/pipes/reverse.pipe.mjs +24 -0
  50. package/esm2020/ngx-utils/pipes/round.pipe.mjs +21 -0
  51. package/esm2020/ngx-utils/pipes/safe-html.pipe.mjs +34 -0
  52. package/esm2020/ngx-utils/pipes/translate.pipe.mjs +86 -0
  53. package/esm2020/ngx-utils/pipes/values.pipe.mjs +22 -0
  54. package/esm2020/ngx-utils/plugins/resize-event.plugin.mjs +59 -0
  55. package/esm2020/ngx-utils/plugins/scroll-event.plugin.mjs +39 -0
  56. package/esm2020/ngx-utils/services/acl.service.mjs +83 -0
  57. package/esm2020/ngx-utils/services/api.service.mjs +38 -0
  58. package/esm2020/ngx-utils/services/auth.service.mjs +14 -0
  59. package/esm2020/ngx-utils/services/base-http.client.mjs +47 -0
  60. package/esm2020/ngx-utils/services/base-http.service.mjs +298 -0
  61. package/esm2020/ngx-utils/services/config.service.mjs +116 -0
  62. package/esm2020/ngx-utils/services/error-handler.service.mjs +49 -0
  63. package/esm2020/ngx-utils/services/events.service.mjs +26 -0
  64. package/esm2020/ngx-utils/services/formatter.service.mjs +47 -0
  65. package/esm2020/ngx-utils/services/global-template.service.mjs +37 -0
  66. package/esm2020/ngx-utils/services/icon.service.mjs +26 -0
  67. package/esm2020/ngx-utils/services/language.service.mjs +113 -0
  68. package/esm2020/ngx-utils/services/open-api.service.mjs +40 -0
  69. package/esm2020/ngx-utils/services/promise.service.mjs +55 -0
  70. package/esm2020/ngx-utils/services/state.service.mjs +173 -0
  71. package/esm2020/ngx-utils/services/static-language.service.mjs +166 -0
  72. package/esm2020/ngx-utils/services/storage.service.mjs +49 -0
  73. package/esm2020/ngx-utils/services/toaster.service.mjs +32 -0
  74. package/esm2020/ngx-utils/services/translated-url.serializer.mjs +73 -0
  75. package/esm2020/ngx-utils/services/universal.service.mjs +78 -0
  76. package/esm2020/ngx-utils/utils/ajax-request-handler.mjs +40 -0
  77. package/esm2020/ngx-utils/utils/array.utils.mjs +100 -0
  78. package/esm2020/ngx-utils/utils/auth.guard.mjs +181 -0
  79. package/esm2020/ngx-utils/utils/canvas.utils.mjs +388 -0
  80. package/esm2020/ngx-utils/utils/date.utils.mjs +28 -0
  81. package/esm2020/ngx-utils/utils/file-system.mjs +20 -0
  82. package/esm2020/ngx-utils/utils/file.utils.mjs +90 -0
  83. package/esm2020/ngx-utils/utils/generic-value.mjs +20 -0
  84. package/esm2020/ngx-utils/utils/geometry.mjs +132 -0
  85. package/esm2020/ngx-utils/utils/initializer.mjs +20 -0
  86. package/esm2020/ngx-utils/utils/loader.utils.mjs +55 -0
  87. package/esm2020/ngx-utils/utils/math.utils.mjs +15 -0
  88. package/esm2020/ngx-utils/utils/object.utils.mjs +261 -0
  89. package/esm2020/ngx-utils/utils/observable.utils.mjs +63 -0
  90. package/esm2020/ngx-utils/utils/reflect.utils.mjs +33 -0
  91. package/esm2020/ngx-utils/utils/set.utils.mjs +20 -0
  92. package/esm2020/ngx-utils/utils/string.utils.mjs +41 -0
  93. package/esm2020/ngx-utils/utils/timer.utils.mjs +52 -0
  94. package/esm2020/ngx-utils/utils/unique.utils.mjs +24 -0
  95. package/esm2020/ngx-utils/utils/vector.mjs +77 -0
  96. package/esm2020/public_api.mjs +86 -0
  97. package/esm2020/stemy-ngx-utils.mjs +5 -0
  98. package/esm2020/tools/config.mjs +71 -0
  99. package/esm2020/tools/public_api.mjs +2 -0
  100. package/esm2020/tools/stemy-ngx-utils-tools.mjs +5 -0
  101. package/fesm2015/stemy-ngx-utils-tools.mjs +77 -0
  102. package/fesm2015/stemy-ngx-utils-tools.mjs.map +1 -0
  103. package/fesm2015/stemy-ngx-utils.js +46 -24
  104. package/fesm2015/stemy-ngx-utils.js.map +1 -1
  105. package/fesm2015/stemy-ngx-utils.mjs +5190 -0
  106. package/fesm2015/stemy-ngx-utils.mjs.map +1 -0
  107. package/fesm2020/stemy-ngx-utils-tools.mjs +77 -0
  108. package/fesm2020/stemy-ngx-utils-tools.mjs.map +1 -0
  109. package/fesm2020/stemy-ngx-utils.mjs +5121 -0
  110. package/fesm2020/stemy-ngx-utils.mjs.map +1 -0
  111. package/ngx-utils/services/static-language.service.d.ts +1 -1
  112. package/ngx-utils/utils/file-system.d.ts +16 -0
  113. package/package.json +1 -1
  114. package/public_api.d.ts +1 -0
  115. package/stemy-ngx-utils.metadata.json +1 -1
  116. package/tools/config.d.ts +7 -0
  117. package/tools/package.json +10 -0
  118. package/tools/public_api.d.ts +1 -0
  119. package/tools/stemy-ngx-utils-tools.d.ts +5 -0
  120. package/bundles/stemy-ngx-utils.umd.min.js +0 -16
  121. package/bundles/stemy-ngx-utils.umd.min.js.map +0 -1
@@ -0,0 +1,29 @@
1
+ import { Pipe } from "@angular/core";
2
+ import { ObjectUtils } from "../utils/object.utils";
3
+ import * as i0 from "@angular/core";
4
+ export function defaultMapper(item) {
5
+ return item;
6
+ }
7
+ export class MapPipe {
8
+ transform(values, mapper = defaultMapper, params = {}) {
9
+ if (!ObjectUtils.isArray(values))
10
+ return [];
11
+ const mapperFunc = ObjectUtils.isFunction(mapper) ? mapper : (value, index, params) => {
12
+ return ObjectUtils.evaluate(mapper, {
13
+ value: value,
14
+ index: index,
15
+ params: params
16
+ });
17
+ };
18
+ return values.map((value, index) => mapperFunc(value, index, params));
19
+ }
20
+ }
21
+ MapPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MapPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
22
+ MapPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MapPipe, name: "map" });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MapPipe, decorators: [{
24
+ type: Pipe,
25
+ args: [{
26
+ name: "map"
27
+ }]
28
+ }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3BpcGVzL21hcC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFbEQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFJO0lBQzlCLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFLRCxNQUFNLE9BQU8sT0FBTztJQUNoQixTQUFTLENBQUMsTUFBYSxFQUFFLFNBQWMsYUFBYSxFQUFFLFNBQWMsRUFBRTtRQUNsRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM1QyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNsRixPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNoQyxLQUFLLEVBQUUsS0FBSztnQkFDWixLQUFLLEVBQUUsS0FBSztnQkFDWixNQUFNLEVBQUUsTUFBTTthQUNqQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7O29HQVhRLE9BQU87a0dBQVAsT0FBTzsyRkFBUCxPQUFPO2tCQUhuQixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxLQUFLO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdE1hcHBlcihpdGVtKSB7XHJcbiAgICByZXR1cm4gaXRlbTtcclxufVxyXG5cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogXCJtYXBcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFwUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gICAgdHJhbnNmb3JtKHZhbHVlczogYW55W10sIG1hcHBlcjogYW55ID0gZGVmYXVsdE1hcHBlciwgcGFyYW1zOiBhbnkgPSB7fSk6IGFueVtdIHtcclxuICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmlzQXJyYXkodmFsdWVzKSkgcmV0dXJuIFtdO1xyXG4gICAgICAgIGNvbnN0IG1hcHBlckZ1bmMgPSBPYmplY3RVdGlscy5pc0Z1bmN0aW9uKG1hcHBlcikgPyBtYXBwZXIgOiAodmFsdWUsIGluZGV4LCBwYXJhbXMpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmV2YWx1YXRlKG1hcHBlciwge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gdmFsdWVzLm1hcCgodmFsdWUsIGluZGV4KSA9PiBtYXBwZXJGdW5jKHZhbHVlLCBpbmRleCwgcGFyYW1zKSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,26 @@
1
+ import { Pipe } from "@angular/core";
2
+ import { ObjectUtils } from "../utils/object.utils";
3
+ import { ArrayUtils } from "../utils/array.utils";
4
+ import * as i0 from "@angular/core";
5
+ export class MaxPipe {
6
+ transform(value, selector = null, params = {}) {
7
+ selector = selector || (item => item);
8
+ const maxSelector = ObjectUtils.isFunction(value) ? value : (item, index, params) => {
9
+ return ObjectUtils.evaluate(selector, {
10
+ item: item,
11
+ index: index,
12
+ params: params
13
+ });
14
+ };
15
+ return ArrayUtils.max(value, (item, index) => maxSelector(item, index, params));
16
+ }
17
+ }
18
+ MaxPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MaxPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
19
+ MaxPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MaxPipe, name: "max" });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MaxPipe, decorators: [{
21
+ type: Pipe,
22
+ args: [{
23
+ name: "max"
24
+ }]
25
+ }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3BpcGVzL21heC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7O0FBS2hELE1BQU0sT0FBTyxPQUFPO0lBQ2hCLFNBQVMsQ0FBQyxLQUFZLEVBQUUsV0FBZ0IsSUFBSSxFQUFFLFNBQWMsRUFBRTtRQUMxRCxRQUFRLEdBQUcsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUM5QyxNQUFNLFdBQVcsR0FBYSxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMxRixPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO2dCQUNsQyxJQUFJLEVBQUUsSUFBSTtnQkFDVixLQUFLLEVBQUUsS0FBSztnQkFDWixNQUFNLEVBQUUsTUFBTTthQUNqQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUM7UUFDRixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDOztvR0FYUSxPQUFPO2tHQUFQLE9BQU87MkZBQVAsT0FBTztrQkFIbkIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsS0FBSztpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5pbXBvcnQge0FycmF5VXRpbHN9IGZyb20gXCIuLi91dGlscy9hcnJheS51dGlsc1wiO1xyXG5cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogXCJtYXhcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF4UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnlbXSwgc2VsZWN0b3I6IGFueSA9IG51bGwsIHBhcmFtczogYW55ID0ge30pOiBudW1iZXIge1xyXG4gICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3IgfHwgKGl0ZW0gPT4gPG51bWJlcj5pdGVtKTtcclxuICAgICAgICBjb25zdCBtYXhTZWxlY3RvcjogRnVuY3Rpb24gPSBPYmplY3RVdGlscy5pc0Z1bmN0aW9uKHZhbHVlKSA/IHZhbHVlIDogKGl0ZW0sIGluZGV4LCBwYXJhbXMpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmV2YWx1YXRlKHNlbGVjdG9yLCB7XHJcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtLFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxyXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gQXJyYXlVdGlscy5tYXgodmFsdWUsIChpdGVtLCBpbmRleCkgPT4gbWF4U2VsZWN0b3IoaXRlbSwgaW5kZXgsIHBhcmFtcykpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { Pipe } from "@angular/core";
2
+ import { ObjectUtils } from "../utils/object.utils";
3
+ import { ArrayUtils } from "../utils/array.utils";
4
+ import * as i0 from "@angular/core";
5
+ export class MinPipe {
6
+ transform(value, selector = null, params = {}) {
7
+ selector = selector || (item => item);
8
+ const minSelector = ObjectUtils.isFunction(value) ? value : (item, index, params) => {
9
+ return ObjectUtils.evaluate(selector, {
10
+ item: item,
11
+ index: index,
12
+ params: params
13
+ });
14
+ };
15
+ return ArrayUtils.min(value, (item, index) => minSelector(item, index, params));
16
+ }
17
+ }
18
+ MinPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MinPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
19
+ MinPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MinPipe, name: "min" });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MinPipe, decorators: [{
21
+ type: Pipe,
22
+ args: [{
23
+ name: "min"
24
+ }]
25
+ }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3BpcGVzL21pbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7O0FBS2hELE1BQU0sT0FBTyxPQUFPO0lBQ2hCLFNBQVMsQ0FBQyxLQUFVLEVBQUUsV0FBZ0IsSUFBSSxFQUFFLFNBQWMsRUFBRTtRQUN4RCxRQUFRLEdBQUcsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUM5QyxNQUFNLFdBQVcsR0FBYSxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMxRixPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO2dCQUNsQyxJQUFJLEVBQUUsSUFBSTtnQkFDVixLQUFLLEVBQUUsS0FBSztnQkFDWixNQUFNLEVBQUUsTUFBTTthQUNqQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUM7UUFDRixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDOztvR0FYUSxPQUFPO2tHQUFQLE9BQU87MkZBQVAsT0FBTztrQkFIbkIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsS0FBSztpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5pbXBvcnQge0FycmF5VXRpbHN9IGZyb20gXCIuLi91dGlscy9hcnJheS51dGlsc1wiO1xyXG5cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogXCJtaW5cIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWluUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIHNlbGVjdG9yOiBhbnkgPSBudWxsLCBwYXJhbXM6IGFueSA9IHt9KTogbnVtYmVyIHtcclxuICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yIHx8IChpdGVtID0+IDxudW1iZXI+aXRlbSk7XHJcbiAgICAgICAgY29uc3QgbWluU2VsZWN0b3I6IEZ1bmN0aW9uID0gT2JqZWN0VXRpbHMuaXNGdW5jdGlvbih2YWx1ZSkgPyB2YWx1ZSA6IChpdGVtLCBpbmRleCwgcGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBPYmplY3RVdGlscy5ldmFsdWF0ZShzZWxlY3Rvciwge1xyXG4gICAgICAgICAgICAgICAgaXRlbTogaXRlbSxcclxuICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIEFycmF5VXRpbHMubWluKHZhbHVlLCAoaXRlbSwgaW5kZXgpID0+IG1pblNlbGVjdG9yKGl0ZW0sIGluZGV4LCBwYXJhbXMpKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,30 @@
1
+ import { Pipe } from "@angular/core";
2
+ import { ObjectUtils } from "../utils/object.utils";
3
+ import * as i0 from "@angular/core";
4
+ export function defaultReducer(result) {
5
+ return result;
6
+ }
7
+ export class ReducePipe {
8
+ transform(values, source, reducer = defaultReducer, params = {}) {
9
+ if (!ObjectUtils.isArray(values))
10
+ return [];
11
+ const mapperFunc = ObjectUtils.isFunction(reducer) ? reducer : (result, value, index, params) => {
12
+ return ObjectUtils.evaluate(reducer, {
13
+ result: result,
14
+ value: value,
15
+ index: index,
16
+ params: params
17
+ });
18
+ };
19
+ return values.reduce((result, value, index) => mapperFunc(result, value, index, params), source);
20
+ }
21
+ }
22
+ ReducePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ReducePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
23
+ ReducePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ReducePipe, name: "reduce" });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ReducePipe, decorators: [{
25
+ type: Pipe,
26
+ args: [{
27
+ name: "reduce"
28
+ }]
29
+ }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3BpcGVzL3JlZHVjZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFbEQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFNO0lBQ2pDLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFLRCxNQUFNLE9BQU8sVUFBVTtJQUNuQixTQUFTLENBQUMsTUFBYSxFQUFFLE1BQVcsRUFBRSxVQUFlLGNBQWMsRUFBRSxTQUFjLEVBQUU7UUFDakYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDNUMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzVGLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pDLE1BQU0sRUFBRSxNQUFNO2dCQUNkLEtBQUssRUFBRSxLQUFLO2dCQUNaLEtBQUssRUFBRSxLQUFLO2dCQUNaLE1BQU0sRUFBRSxNQUFNO2FBQ2pCLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckcsQ0FBQzs7dUdBWlEsVUFBVTtxR0FBVixVQUFVOzJGQUFWLFVBQVU7a0JBSHRCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFFBQVE7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFJlZHVjZXIocmVzdWx0KSB7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiBcInJlZHVjZVwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWR1Y2VQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICB0cmFuc2Zvcm0odmFsdWVzOiBhbnlbXSwgc291cmNlOiBhbnksIHJlZHVjZXI6IGFueSA9IGRlZmF1bHRSZWR1Y2VyLCBwYXJhbXM6IGFueSA9IHt9KTogYW55IHtcclxuICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmlzQXJyYXkodmFsdWVzKSkgcmV0dXJuIFtdO1xyXG4gICAgICAgIGNvbnN0IG1hcHBlckZ1bmMgPSBPYmplY3RVdGlscy5pc0Z1bmN0aW9uKHJlZHVjZXIpID8gcmVkdWNlciA6IChyZXN1bHQsIHZhbHVlLCBpbmRleCwgcGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBPYmplY3RVdGlscy5ldmFsdWF0ZShyZWR1Y2VyLCB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQ6IHJlc3VsdCxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5yZWR1Y2UoKHJlc3VsdCwgdmFsdWUsIGluZGV4KSA9PiBtYXBwZXJGdW5jKHJlc3VsdCwgdmFsdWUsIGluZGV4LCBwYXJhbXMpLCBzb3VyY2UpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,32 @@
1
+ import { Pipe } from "@angular/core";
2
+ import { ObjectUtils } from "../utils/object.utils";
3
+ import * as i0 from "@angular/core";
4
+ const empty = {};
5
+ export class RemapPipe {
6
+ transform(map, source, defaultValue = "key") {
7
+ if (!map)
8
+ return empty;
9
+ if (!source)
10
+ return map;
11
+ const remapped = ObjectUtils.filter({ map: ObjectUtils.copy(map) }, (value, key, target) => {
12
+ if (ObjectUtils.isArray(value) && value.every(ObjectUtils.isString)) {
13
+ target[key] = value.reduce((result, k) => {
14
+ result[k] = ObjectUtils.getValue(source, k, ObjectUtils.evaluate(defaultValue, { key: k, map: map, source: source }));
15
+ return result;
16
+ }, {});
17
+ return false;
18
+ }
19
+ return true;
20
+ });
21
+ return remapped.map;
22
+ }
23
+ }
24
+ RemapPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: RemapPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
25
+ RemapPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: RemapPipe, name: "remap" });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: RemapPipe, decorators: [{
27
+ type: Pipe,
28
+ args: [{
29
+ name: "remap"
30
+ }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXAucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvcGlwZXMvcmVtYXAucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBRWxELE1BQU0sS0FBSyxHQUFRLEVBQUUsQ0FBQztBQUt0QixNQUFNLE9BQU8sU0FBUztJQUVsQixTQUFTLENBQUMsR0FBUSxFQUFFLE1BQVcsRUFBRSxlQUF1QixLQUFLO1FBQ3pELElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUN4QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckYsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNqRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDckMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwSCxPQUFPLE1BQU0sQ0FBQztnQkFDbEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNQLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDeEIsQ0FBQzs7c0dBaEJRLFNBQVM7b0dBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQUhyQixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxPQUFPO2lCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5cclxuY29uc3QgZW1wdHk6IGFueSA9IHt9O1xyXG5cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogXCJyZW1hcFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZW1hcFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgICB0cmFuc2Zvcm0obWFwOiBhbnksIHNvdXJjZTogYW55LCBkZWZhdWx0VmFsdWU6IHN0cmluZyA9IFwia2V5XCIpOiBhbnkge1xyXG4gICAgICAgIGlmICghbWFwKSByZXR1cm4gZW1wdHk7XHJcbiAgICAgICAgaWYgKCFzb3VyY2UpIHJldHVybiBtYXA7XHJcbiAgICAgICAgY29uc3QgcmVtYXBwZWQgPSBPYmplY3RVdGlscy5maWx0ZXIoe21hcDogT2JqZWN0VXRpbHMuY29weShtYXApfSwgKHZhbHVlLCBrZXksIHRhcmdldCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUuZXZlcnkoT2JqZWN0VXRpbHMuaXNTdHJpbmcpKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHZhbHVlLnJlZHVjZSgocmVzdWx0LCBrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tdID0gT2JqZWN0VXRpbHMuZ2V0VmFsdWUoc291cmNlLCBrLCBPYmplY3RVdGlscy5ldmFsdWF0ZShkZWZhdWx0VmFsdWUsIHtrZXk6IGssIG1hcDogbWFwLCBzb3VyY2U6IHNvdXJjZX0pKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfSwge30pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZW1hcHBlZC5tYXA7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,16 @@
1
+ import { Pipe } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class ReplacePipe {
4
+ transform(value, from, to) {
5
+ return value ? value.replace(from, to) : value;
6
+ }
7
+ }
8
+ ReplacePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ReplacePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
9
+ ReplacePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ReplacePipe, name: "replace" });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ReplacePipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{
13
+ name: "replace"
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9waXBlcy9yZXBsYWNlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7O0FBS2xELE1BQU0sT0FBTyxXQUFXO0lBRXBCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBcUIsRUFBRSxFQUFVO1FBQ3RELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ25ELENBQUM7O3dHQUpRLFdBQVc7c0dBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUh2QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxTQUFTO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBQaXBlKHtcclxuICAgIG5hbWU6IFwicmVwbGFjZVwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXBsYWNlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBmcm9tOiBzdHJpbmcgfCBSZWdFeHAsIHRvOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLnJlcGxhY2UoZnJvbSwgdG8pIDogdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,24 @@
1
+ import { Pipe } from "@angular/core";
2
+ import { ObjectUtils } from "../utils/object.utils";
3
+ import * as i0 from "@angular/core";
4
+ const emptyArray = [];
5
+ export class ReversePipe {
6
+ transform(value) {
7
+ if (!ObjectUtils.isArray(value))
8
+ return emptyArray;
9
+ const result = [];
10
+ for (let i = value.length - 1; i >= 0; i--) {
11
+ result.push(value[i]);
12
+ }
13
+ return result;
14
+ }
15
+ }
16
+ ReversePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ReversePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
17
+ ReversePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ReversePipe, name: "reverse" });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ReversePipe, decorators: [{
19
+ type: Pipe,
20
+ args: [{
21
+ name: "reverse"
22
+ }]
23
+ }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZXJzZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9waXBlcy9yZXZlcnNlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDOztBQUVsRCxNQUFNLFVBQVUsR0FBVSxFQUFFLENBQUM7QUFLN0IsTUFBTSxPQUFPLFdBQVc7SUFFcEIsU0FBUyxDQUFDLEtBQVk7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxVQUFVLENBQUM7UUFDbkQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQzs7d0dBVFEsV0FBVztzR0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBSHZCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFNBQVM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcblxyXG5jb25zdCBlbXB0eUFycmF5OiBhbnlbXSA9IFtdO1xyXG5cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogXCJyZXZlcnNlXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFJldmVyc2VQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnlbXSk6IGFueVtdIHtcclxuICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmlzQXJyYXkodmFsdWUpKSByZXR1cm4gZW1wdHlBcnJheTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gdmFsdWUubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2godmFsdWVbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { Pipe } from "@angular/core";
2
+ import { FormatterService } from "../services/formatter.service";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../services/formatter.service";
5
+ export class RoundPipe {
6
+ constructor(formatter) {
7
+ this.formatter = formatter;
8
+ }
9
+ transform(value, precision = 2, divider = 1) {
10
+ return this.formatter.roundNumber(value, precision, divider);
11
+ }
12
+ }
13
+ RoundPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: RoundPipe, deps: [{ token: i1.FormatterService }], target: i0.ɵɵFactoryTarget.Pipe });
14
+ RoundPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: RoundPipe, name: "round" });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: RoundPipe, decorators: [{
16
+ type: Pipe,
17
+ args: [{
18
+ name: "round"
19
+ }]
20
+ }], ctorParameters: function () { return [{ type: i1.FormatterService }]; } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvcGlwZXMvcm91bmQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBSy9ELE1BQU0sT0FBTyxTQUFTO0lBRWxCLFlBQW9CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQy9DLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYSxFQUFFLFlBQW9CLENBQUMsRUFBRSxVQUFrQixDQUFDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDOztzR0FQUSxTQUFTO29HQUFULFNBQVM7MkZBQVQsU0FBUztrQkFIckIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsT0FBTztpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Rm9ybWF0dGVyU2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2VzL2Zvcm1hdHRlci5zZXJ2aWNlXCI7XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiBcInJvdW5kXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvdW5kUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybWF0dGVyOiBGb3JtYXR0ZXJTZXJ2aWNlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIsIHByZWNpc2lvbjogbnVtYmVyID0gMiwgZGl2aWRlcjogbnVtYmVyID0gMSk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLnJvdW5kTnVtYmVyKHZhbHVlLCBwcmVjaXNpb24sIGRpdmlkZXIpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { Pipe } from "@angular/core";
2
+ import { DomSanitizer } from "@angular/platform-browser";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/platform-browser";
5
+ export class SafeHtmlPipe {
6
+ constructor(sanitizer) {
7
+ this.sanitizer = sanitizer;
8
+ }
9
+ transform(value, type = "html") {
10
+ switch (type) {
11
+ case "html":
12
+ return this.sanitizer.bypassSecurityTrustHtml(value);
13
+ case "style":
14
+ return this.sanitizer.bypassSecurityTrustStyle(value);
15
+ case "script":
16
+ return this.sanitizer.bypassSecurityTrustScript(value);
17
+ case "url":
18
+ return this.sanitizer.bypassSecurityTrustUrl(value);
19
+ case "resourceUrl":
20
+ return this.sanitizer.bypassSecurityTrustResourceUrl(value);
21
+ default:
22
+ throw new Error(`SafePipe unable to bypass security for invalid type: ${type}`);
23
+ }
24
+ }
25
+ }
26
+ SafeHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
27
+ SafeHtmlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: SafeHtmlPipe, name: "safe" });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: SafeHtmlPipe, decorators: [{
29
+ type: Pipe,
30
+ args: [{
31
+ name: "safe"
32
+ }]
33
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1odG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3BpcGVzL3NhZmUtaHRtbC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxZQUFZLEVBQVcsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBS2pFLE1BQU0sT0FBTyxZQUFZO0lBRXJCLFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFFM0MsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhLEVBQUUsT0FBZSxNQUFNO1FBQzFDLFFBQVEsSUFBSSxFQUFFO1lBQ1YsS0FBSyxNQUFNO2dCQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RCxLQUFLLE9BQU87Z0JBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELEtBQUssUUFBUTtnQkFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0QsS0FBSyxLQUFLO2dCQUNOLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RCxLQUFLLGFBQWE7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hFO2dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELElBQUksRUFBRSxDQUFDLENBQUM7U0FDdkY7SUFDTCxDQUFDOzt5R0FyQlEsWUFBWTt1R0FBWixZQUFZOzJGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLE1BQU07aUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlSHRtbH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuXHJcbkBQaXBlKHtcclxuICAgIG5hbWU6IFwic2FmZVwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTYWZlSHRtbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcgPSBcImh0bWxcIik6IFNhZmVIdG1sIHtcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBcImh0bWxcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJzdHlsZVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJzY3JpcHRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U2NyaXB0KHZhbHVlKTtcclxuICAgICAgICAgICAgY2FzZSBcInVybFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodmFsdWUpO1xyXG4gICAgICAgICAgICBjYXNlIFwicmVzb3VyY2VVcmxcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodmFsdWUpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTYWZlUGlwZSB1bmFibGUgdG8gYnlwYXNzIHNlY3VyaXR5IGZvciBpbnZhbGlkIHR5cGU6ICR7dHlwZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,86 @@
1
+ import { ChangeDetectorRef, Inject, Injectable, Pipe } from "@angular/core";
2
+ import { LANGUAGE_SERVICE } from "../common-types";
3
+ import { ObjectUtils } from "../utils/object.utils";
4
+ import * as i0 from "@angular/core";
5
+ export class TranslatePipe {
6
+ constructor(cdr, language) {
7
+ this.cdr = cdr;
8
+ this.language = language;
9
+ }
10
+ get currentLang() {
11
+ return this.language.currentLanguage;
12
+ }
13
+ transform(query, ...args) {
14
+ if (!query)
15
+ return "";
16
+ let dirty = false;
17
+ const lang = this.currentLang;
18
+ if (this.lang !== lang) {
19
+ this.lang = lang;
20
+ dirty = true;
21
+ }
22
+ const disabled = this.language.disableTranslations;
23
+ if (this.disabled !== disabled) {
24
+ this.disabled = disabled;
25
+ dirty = true;
26
+ }
27
+ if (!ObjectUtils.equals(this.query, query)) {
28
+ this.query = query;
29
+ dirty = true;
30
+ }
31
+ if (!ObjectUtils.equals(this.args, args)) {
32
+ this.args = args;
33
+ this.params = null;
34
+ if (ObjectUtils.isDefined(args[0]) && args.length) {
35
+ if (typeof args[0] === "string" && args[0].length) {
36
+ const validArgs = args[0]
37
+ .replace(/(\')?([a-zA-Z0-9_]+)(\')?(\s)?:/g, `"$2":`)
38
+ .replace(/:(\s)?(\')(.*?)(\')/g, `:"$3"`);
39
+ try {
40
+ this.params = JSON.parse(validArgs);
41
+ }
42
+ catch (e) {
43
+ throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);
44
+ }
45
+ }
46
+ else if (typeof args[0] === "object" && !Array.isArray(args[0])) {
47
+ this.params = args[0];
48
+ }
49
+ }
50
+ dirty = true;
51
+ }
52
+ if (dirty) {
53
+ if (typeof query === "object") {
54
+ this.lastValue = Array.isArray(query) ? this.language.getTranslationFromArray(query, this.params, lang) : this.language.getTranslationFromObject(query, this.params, lang);
55
+ return this.lastValue;
56
+ }
57
+ if (this.disabled) {
58
+ this.lastValue = query;
59
+ return this.lastValue;
60
+ }
61
+ this.language.getTranslation(query, this.params).then(value => {
62
+ this.lastValue = value;
63
+ if (!this.cdr["destroyed"]) {
64
+ this.cdr.detectChanges();
65
+ }
66
+ });
67
+ }
68
+ return this.lastValue;
69
+ }
70
+ }
71
+ TranslatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TranslatePipe, deps: [{ token: i0.ChangeDetectorRef }, { token: LANGUAGE_SERVICE }], target: i0.ɵɵFactoryTarget.Pipe });
72
+ TranslatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TranslatePipe, name: "translate", pure: false });
73
+ TranslatePipe.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TranslatePipe });
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TranslatePipe, decorators: [{
75
+ type: Injectable
76
+ }, {
77
+ type: Pipe,
78
+ args: [{
79
+ name: "translate",
80
+ pure: false
81
+ }]
82
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
83
+ type: Inject,
84
+ args: [LANGUAGE_SERVICE]
85
+ }] }]; } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3BpcGVzL3RyYW5zbGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFtQixnQkFBZ0IsRUFBbUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBT2xELE1BQU0sT0FBTyxhQUFhO0lBYXRCLFlBQXFCLEdBQXNCLEVBQXFDLFFBQTBCO1FBQXJGLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQXFDLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBRTFHLENBQUM7SUFORCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFBO0lBQ3hDLENBQUM7SUFNRCxTQUFTLENBQUMsS0FBdUIsRUFBRSxHQUFHLElBQVc7UUFDN0MsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN0QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDaEI7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDekIsS0FBSyxHQUFHLElBQUksQ0FB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QUUsV0FBVztvQkFDakIsSUFBSSxFQUFFLEtBQUs7aUJBQ2Q7OzBCQWNpRCxNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdCwgSW5qZWN0YWJsZSwgUGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJTGFuZ3VhZ2VTZXJ2aWNlLCBMQU5HVUFHRV9TRVJWSUNFLCBUcmFuc2xhdGlvblF1ZXJ5fSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuQFBpcGUoe1xyXG4gICAgbmFtZTogXCJ0cmFuc2xhdGVcIixcclxuICAgIHB1cmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gICAgcHJpdmF0ZSBsYW5nOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIGRpc2FibGVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBxdWVyeTogVHJhbnNsYXRpb25RdWVyeTtcclxuICAgIHByaXZhdGUgYXJnczogYW55W107XHJcbiAgICBwcml2YXRlIHBhcmFtczogYW55O1xyXG4gICAgcHJpdmF0ZSBsYXN0VmFsdWU6IHN0cmluZztcclxuXHJcbiAgICBnZXQgY3VycmVudExhbmcoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZS5jdXJyZW50TGFuZ3VhZ2VcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBASW5qZWN0KExBTkdVQUdFX1NFUlZJQ0UpIHJlYWRvbmx5IGxhbmd1YWdlOiBJTGFuZ3VhZ2VTZXJ2aWNlKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zZm9ybShxdWVyeTogVHJhbnNsYXRpb25RdWVyeSwgLi4uYXJnczogYW55W10pOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghcXVlcnkpIHJldHVybiBcIlwiO1xyXG4gICAgICAgIGxldCBkaXJ0eSA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLmN1cnJlbnRMYW5nO1xyXG4gICAgICAgIGlmICh0aGlzLmxhbmcgIT09IGxhbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5sYW5nID0gbGFuZztcclxuICAgICAgICAgICAgZGlydHkgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IHRoaXMubGFuZ3VhZ2UuZGlzYWJsZVRyYW5zbGF0aW9ucztcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCAhPT0gZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gICAgICAgICAgICBkaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuZXF1YWxzKHRoaXMucXVlcnksIHF1ZXJ5KSkge1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gcXVlcnk7XHJcbiAgICAgICAgICAgIGRpcnR5ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5lcXVhbHModGhpcy5hcmdzLCBhcmdzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmFyZ3MgPSBhcmdzO1xyXG4gICAgICAgICAgICB0aGlzLnBhcmFtcyA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0RlZmluZWQoYXJnc1swXSkgJiYgYXJncy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gXCJzdHJpbmdcIiAmJiBhcmdzWzBdLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkQXJnczogc3RyaW5nID0gYXJnc1swXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKFxcJyk/KFthLXpBLVowLTlfXSspKFxcJyk/KFxccyk/Oi9nLCBgXCIkMlwiOmApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC86KFxccyk/KFxcJykoLio/KShcXCcpL2csIGA6XCIkM1wiYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMgPSBKU09OLnBhcnNlKHZhbGlkQXJncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYFdyb25nIHBhcmFtZXRlciBpbiBUcmFuc2xhdGVQaXBlLiBFeHBlY3RlZCBhIHZhbGlkIE9iamVjdCwgcmVjZWl2ZWQ6ICR7YXJnc1swXX1gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhcmdzWzBdID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KGFyZ3NbMF0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbXMgPSBhcmdzWzBdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRpcnR5ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpcnR5KSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcXVlcnkgPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFzdFZhbHVlID0gQXJyYXkuaXNBcnJheShxdWVyeSkgPyB0aGlzLmxhbmd1YWdlLmdldFRyYW5zbGF0aW9uRnJvbUFycmF5KHF1ZXJ5LCB0aGlzLnBhcmFtcywgbGFuZykgOiB0aGlzLmxhbmd1YWdlLmdldFRyYW5zbGF0aW9uRnJvbU9iamVjdChxdWVyeSwgdGhpcy5wYXJhbXMsIGxhbmcpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGFzdFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RWYWx1ZSA9IHF1ZXJ5O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGFzdFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2UuZ2V0VHJhbnNsYXRpb24ocXVlcnksIHRoaXMucGFyYW1zKS50aGVuKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFzdFZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2RyW1wiZGVzdHJveWVkXCJdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFZhbHVlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Pipe } from "@angular/core";
2
+ import { ObjectUtils } from "../utils/object.utils";
3
+ import * as i0 from "@angular/core";
4
+ const emptyValues = [];
5
+ export class ValuesPipe {
6
+ transform(value) {
7
+ if (!value)
8
+ return emptyValues;
9
+ return ObjectUtils.isArray(value)
10
+ ? value
11
+ : Object.keys(value).map(key => value[key]);
12
+ }
13
+ }
14
+ ValuesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ValuesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
15
+ ValuesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ValuesPipe, name: "values" });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ValuesPipe, decorators: [{
17
+ type: Pipe,
18
+ args: [{
19
+ name: "values"
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3BpcGVzL3ZhbHVlcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFbEQsTUFBTSxXQUFXLEdBQVUsRUFBRSxDQUFDO0FBSzlCLE1BQU0sT0FBTyxVQUFVO0lBRW5CLFNBQVMsQ0FBQyxLQUFVO1FBQ2hCLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxXQUFXLENBQUM7UUFDL0IsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUM3QixDQUFDLENBQUMsS0FBSztZQUNQLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7O3VHQVBRLFVBQVU7cUdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUh0QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxRQUFRO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5cclxuY29uc3QgZW1wdHlWYWx1ZXM6IGFueVtdID0gW107XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiBcInZhbHVlc1wiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWYWx1ZXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnkpOiBhbnlbXSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIGVtcHR5VmFsdWVzO1xyXG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5pc0FycmF5KHZhbHVlKVxyXG4gICAgICAgICAgICA/IHZhbHVlXHJcbiAgICAgICAgICAgIDogT2JqZWN0LmtleXModmFsdWUpLm1hcChrZXkgPT4gdmFsdWVba2V5XSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,59 @@
1
+ import { ɵDomEventsPlugin as EventManagerPlugin } from "@angular/platform-browser";
2
+ import { Inject, Injectable } from "@angular/core";
3
+ import { DOCUMENT } from "@angular/common";
4
+ import { addListener, removeListener } from "resize-detector";
5
+ import { UniversalService } from "../services/universal.service";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../services/universal.service";
8
+ function emptyRemove() {
9
+ }
10
+ function isWindow(el) {
11
+ return typeof window !== "undefined" && el === window;
12
+ }
13
+ export class ResizeEventPlugin extends EventManagerPlugin {
14
+ constructor(doc, universal) {
15
+ super(doc);
16
+ this.universal = universal;
17
+ }
18
+ supports(eventName) {
19
+ return eventName === ResizeEventPlugin.EVENT_NAME;
20
+ }
21
+ addEventListener(element, eventName, handler) {
22
+ const zone = this.manager.getZone();
23
+ return zone.runOutsideAngular(() => {
24
+ if (this.universal.isServer)
25
+ return emptyRemove;
26
+ const cb = el => {
27
+ zone.run(() => handler(el));
28
+ };
29
+ if (isWindow(element)) {
30
+ element.addEventListener(eventName, cb);
31
+ }
32
+ else {
33
+ addListener(element, cb);
34
+ }
35
+ return () => {
36
+ try {
37
+ if (isWindow(element)) {
38
+ element.removeEventListener(eventName, cb);
39
+ }
40
+ else {
41
+ removeListener(element, cb);
42
+ }
43
+ }
44
+ catch (e) {
45
+ }
46
+ };
47
+ });
48
+ }
49
+ }
50
+ ResizeEventPlugin.EVENT_NAME = "resize";
51
+ ResizeEventPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ResizeEventPlugin, deps: [{ token: DOCUMENT }, { token: i1.UniversalService }], target: i0.ɵɵFactoryTarget.Injectable });
52
+ ResizeEventPlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ResizeEventPlugin });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ResizeEventPlugin, decorators: [{
54
+ type: Injectable
55
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
56
+ type: Inject,
57
+ args: [DOCUMENT]
58
+ }] }, { type: i1.UniversalService }]; } });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWV2ZW50LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvcGx1Z2lucy9yZXNpemUtZXZlbnQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsSUFBSSxrQkFBa0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2pGLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFFLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7QUFFL0QsU0FBUyxXQUFXO0FBRXBCLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxFQUFPO0lBQ3JCLE9BQU8sT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLEVBQUUsS0FBSyxNQUFNLENBQUM7QUFDMUQsQ0FBQztBQUdELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBa0I7SUFJckQsWUFBOEIsR0FBUSxFQUFTLFNBQTJCO1FBQ3RFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURnQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUUxRSxDQUFDO0lBRUQsUUFBUSxDQUFDLFNBQVM7UUFDZCxPQUFPLFNBQVMsS0FBSyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7SUFDdEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQW9CLEVBQUUsU0FBaUIsRUFBRSxPQUFpQjtRQUN2RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTtnQkFBRSxPQUFPLFdBQVcsQ0FBQztZQUNoRCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDWixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUMsQ0FBQztZQUNGLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQixPQUFPLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzNDO2lCQUFNO2dCQUNILFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDNUI7WUFDRCxPQUFPLEdBQUcsRUFBRTtnQkFDUixJQUFJO29CQUNBLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNuQixPQUFPLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3FCQUM5Qzt5QkFBTTt3QkFDSCxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3FCQUMvQjtpQkFDSjtnQkFBQyxPQUFPLENBQUMsRUFBRTtpQkFDWDtZQUNMLENBQUMsQ0FBQTtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7QUFqQ2MsNEJBQVUsR0FBVyxRQUFTLENBQUE7OEdBRnBDLGlCQUFpQixrQkFJTixRQUFRO2tIQUpuQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBS00sTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHvJtURvbUV2ZW50c1BsdWdpbiBhcyBFdmVudE1hbmFnZXJQbHVnaW59IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7YWRkTGlzdGVuZXIsIHJlbW92ZUxpc3RlbmVyfSBmcm9tIFwicmVzaXplLWRldGVjdG9yXCI7XHJcbmltcG9ydCB7VW5pdmVyc2FsU2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2VzL3VuaXZlcnNhbC5zZXJ2aWNlXCI7XHJcblxyXG5mdW5jdGlvbiBlbXB0eVJlbW92ZSgpOiB2b2lkIHtcclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzV2luZG93KGVsOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIGVsID09PSB3aW5kb3c7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFJlc2l6ZUV2ZW50UGx1Z2luIGV4dGVuZHMgRXZlbnRNYW5hZ2VyUGx1Z2luIHtcclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBFVkVOVF9OQU1FOiBzdHJpbmcgPSBcInJlc2l6ZVwiO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIGRvYzogYW55LCBwdWJsaWMgdW5pdmVyc2FsOiBVbml2ZXJzYWxTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoZG9jKTtcclxuICAgIH1cclxuXHJcbiAgICBzdXBwb3J0cyhldmVudE5hbWUpIHtcclxuICAgICAgICByZXR1cm4gZXZlbnROYW1lID09PSBSZXNpemVFdmVudFBsdWdpbi5FVkVOVF9OQU1FO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudDogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcclxuICAgICAgICBjb25zdCB6b25lID0gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKTtcclxuICAgICAgICByZXR1cm4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc1NlcnZlcikgcmV0dXJuIGVtcHR5UmVtb3ZlO1xyXG4gICAgICAgICAgICBjb25zdCBjYiA9IGVsID0+IHtcclxuICAgICAgICAgICAgICAgIHpvbmUucnVuKCgpID0+IGhhbmRsZXIoZWwpKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKGlzV2luZG93KGVsZW1lbnQpKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhZGRMaXN0ZW5lcihlbGVtZW50LCBjYik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzV2luZG93KGVsZW1lbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNiKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMaXN0ZW5lcihlbGVtZW50LCBjYik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,39 @@
1
+ import { ɵDomEventsPlugin as EventManagerPlugin } from "@angular/platform-browser";
2
+ import { Inject, Injectable } from "@angular/core";
3
+ import { DOCUMENT } from "@angular/common";
4
+ import { UniversalService } from "../services/universal.service";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../services/universal.service";
7
+ export function emptyRemove() {
8
+ }
9
+ export class ScrollEventPlugin extends EventManagerPlugin {
10
+ constructor(doc, universal) {
11
+ super(doc);
12
+ this.universal = universal;
13
+ }
14
+ supports(eventName) {
15
+ return eventName === ScrollEventPlugin.EVENT_NAME;
16
+ }
17
+ addEventListener(element, eventName, handler) {
18
+ const zone = this.manager.getZone();
19
+ return zone.runOutsideAngular(() => {
20
+ if (this.universal.isServer)
21
+ return emptyRemove;
22
+ const callback = (e) => {
23
+ zone.run(() => handler(e));
24
+ };
25
+ element.addEventListener(eventName, callback);
26
+ return () => element.removeEventListener(eventName, callback);
27
+ });
28
+ }
29
+ }
30
+ ScrollEventPlugin.EVENT_NAME = "scroll";
31
+ ScrollEventPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ScrollEventPlugin, deps: [{ token: DOCUMENT }, { token: i1.UniversalService }], target: i0.ɵɵFactoryTarget.Injectable });
32
+ ScrollEventPlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ScrollEventPlugin });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ScrollEventPlugin, decorators: [{
34
+ type: Injectable
35
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
36
+ type: Inject,
37
+ args: [DOCUMENT]
38
+ }] }, { type: i1.UniversalService }]; } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWV2ZW50LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvcGx1Z2lucy9zY3JvbGwtZXZlbnQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsSUFBSSxrQkFBa0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2pGLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRS9ELE1BQU0sVUFBVSxXQUFXO0FBRTNCLENBQUM7QUFHRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsa0JBQWtCO0lBSXJELFlBQThCLEdBQVEsRUFBVSxTQUEyQjtRQUN2RSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFEaUMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7SUFFM0UsQ0FBQztJQUVELFFBQVEsQ0FBQyxTQUFTO1FBQ2QsT0FBTyxTQUFTLEtBQUssaUJBQWlCLENBQUMsVUFBVSxDQUFDO0lBQ3RELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFvQixFQUFFLFNBQWlCLEVBQUUsT0FBaUI7UUFDdkUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7Z0JBQUUsT0FBTyxXQUFXLENBQUM7WUFDaEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFRLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUM7WUFDRixPQUFPLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzlDLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O0FBcEJjLDRCQUFVLEdBQVcsUUFBUyxDQUFBOzhHQUZwQyxpQkFBaUIsa0JBSU4sUUFBUTtrSEFKbkIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7OzBCQUtNLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ybVEb21FdmVudHNQbHVnaW4gYXMgRXZlbnRNYW5hZ2VyUGx1Z2lufSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1VuaXZlcnNhbFNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5UmVtb3ZlKCk6IHZvaWQge1xyXG5cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2Nyb2xsRXZlbnRQbHVnaW4gZXh0ZW5kcyBFdmVudE1hbmFnZXJQbHVnaW4ge1xyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIEVWRU5UX05BTUU6IHN0cmluZyA9IFwic2Nyb2xsXCI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgZG9jOiBhbnksIHByaXZhdGUgdW5pdmVyc2FsOiBVbml2ZXJzYWxTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoZG9jKTtcclxuICAgIH1cclxuXHJcbiAgICBzdXBwb3J0cyhldmVudE5hbWUpIHtcclxuICAgICAgICByZXR1cm4gZXZlbnROYW1lID09PSBTY3JvbGxFdmVudFBsdWdpbi5FVkVOVF9OQU1FO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudDogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcclxuICAgICAgICBjb25zdCB6b25lID0gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKTtcclxuICAgICAgICByZXR1cm4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc1NlcnZlcikgcmV0dXJuIGVtcHR5UmVtb3ZlO1xyXG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9IChlOiBFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgem9uZS5ydW4oKCkgPT4gaGFuZGxlcihlKSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,83 @@
1
+ import { Inject, Injectable, Injector } from "@angular/core";
2
+ import { StateService } from "./state.service";
3
+ import { AUTH_SERVICE } from "../common-types";
4
+ import { ObjectUtils } from "../utils/object.utils";
5
+ import { AuthGuard } from "../utils/auth.guard";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./state.service";
8
+ const emptyGuards = [];
9
+ export class AclService {
10
+ constructor(injector, state, auth) {
11
+ this.injector = injector;
12
+ this.state = state;
13
+ this.auth = auth;
14
+ this.components = [];
15
+ this.auth.userChanged.subscribe(() => {
16
+ this.components.forEach(t => t.dirty = true);
17
+ const info = this.getStateInfo();
18
+ const check = info && info.guard instanceof AuthGuard ? info.guard.checkRoute(info.route) : Promise.resolve(true);
19
+ check.then(result => {
20
+ if (result) {
21
+ if (!info || !info.dirty)
22
+ return;
23
+ info.dirty = false;
24
+ const component = info.component;
25
+ if (!info.component)
26
+ return;
27
+ if (info.first) {
28
+ if (ObjectUtils.isFunction(component.onUserInitialized)) {
29
+ component.onUserInitialized();
30
+ }
31
+ info.first = false;
32
+ return;
33
+ }
34
+ if (ObjectUtils.isFunction(component.onUserChanged)) {
35
+ component.onUserChanged();
36
+ }
37
+ return;
38
+ }
39
+ info.guard.getReturnState(info.route).then(returnState => {
40
+ if (!returnState)
41
+ return;
42
+ this.state.navigate(returnState);
43
+ });
44
+ });
45
+ });
46
+ this.state.subscribe(() => {
47
+ const info = this.getStateInfo();
48
+ if (!info?.component)
49
+ return;
50
+ const component = info.component;
51
+ if (ObjectUtils.isFunction(component.onUserInitialized)) {
52
+ component.onUserInitialized();
53
+ }
54
+ });
55
+ }
56
+ getStateInfo() {
57
+ const route = this.state.route;
58
+ if (!route)
59
+ return null;
60
+ let info = this.components.find(t => t.route == this.state.route);
61
+ if (!info) {
62
+ const guardType = (route.canActivate || emptyGuards)[0];
63
+ info = {
64
+ route: this.state.route,
65
+ guard: guardType ? this.injector.get(guardType) : null,
66
+ dirty: true,
67
+ first: true
68
+ };
69
+ this.components.push(info);
70
+ }
71
+ info.component = this.state.component;
72
+ return info;
73
+ }
74
+ }
75
+ AclService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AclService, deps: [{ token: i0.Injector }, { token: i1.StateService }, { token: AUTH_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
76
+ AclService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AclService });
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AclService, decorators: [{
78
+ type: Injectable
79
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.StateService }, { type: undefined, decorators: [{
80
+ type: Inject,
81
+ args: [AUTH_SERVICE]
82
+ }] }]; } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2FjbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBTyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBK0MsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7QUFFOUMsTUFBTSxXQUFXLEdBQVUsRUFBRSxDQUFDO0FBRzlCLE1BQU0sT0FBTyxVQUFVO0lBSW5CLFlBQXFCLFFBQWtCLEVBQVcsS0FBbUIsRUFBaUMsSUFBa0I7UUFBbkcsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFXLFVBQUssR0FBTCxLQUFLLENBQWM7UUFBaUMsU0FBSSxHQUFKLElBQUksQ0FBYztRQUNwSCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDakMsTUFBTSxLQUFLLEdBQXFCLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxZQUFZLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFD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QUM7O3VHQTVEUSxVQUFVLHNFQUk0RCxZQUFZOzJHQUpsRixVQUFVOzJGQUFWLFVBQVU7a0JBRHRCLFVBQVU7OzBCQUtpRSxNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFR5cGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7U3RhdGVTZXJ2aWNlfSBmcm9tIFwiLi9zdGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QVVUSF9TRVJWSUNFLCBJQWNsQ29tcG9uZW50LCBJQXV0aFNlcnZpY2UsIElSb3V0ZVN0YXRlSW5mb30gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcbmltcG9ydCB7QXV0aEd1YXJkfSBmcm9tIFwiLi4vdXRpbHMvYXV0aC5ndWFyZFwiO1xyXG5cclxuY29uc3QgZW1wdHlHdWFyZHM6IGFueVtdID0gW107XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBY2xTZXJ2aWNlIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgY29tcG9uZW50czogSVJvdXRlU3RhdGVJbmZvW107XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLCByZWFkb25seSBzdGF0ZTogU3RhdGVTZXJ2aWNlLCBASW5qZWN0KEFVVEhfU0VSVklDRSkgcmVhZG9ubHkgYXV0aDogSUF1dGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRzID0gW107XHJcbiAgICAgICAgdGhpcy5hdXRoLnVzZXJDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKHQgPT4gdC5kaXJ0eSA9IHRydWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbmZvID0gdGhpcy5nZXRTdGF0ZUluZm8oKTtcclxuICAgICAgICAgICAgY29uc3QgY2hlY2s6IFByb21pc2U8Ym9vbGVhbj4gPSBpbmZvICYmIGluZm8uZ3VhcmQgaW5zdGFuY2VvZiBBdXRoR3VhcmQgPyBpbmZvLmd1YXJkLmNoZWNrUm91dGUoaW5mby5yb3V0ZSkgOiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIGNoZWNrLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWluZm8gfHwgIWluZm8uZGlydHkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICBpbmZvLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50OiBJQWNsQ29tcG9uZW50ID0gaW5mby5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmZvLmNvbXBvbmVudCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0Z1bmN0aW9uKGNvbXBvbmVudC5vblVzZXJJbml0aWFsaXplZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5vblVzZXJJbml0aWFsaXplZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uZmlyc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihjb21wb25lbnQub25Vc2VyQ2hhbmdlZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm9uVXNlckNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKGluZm8uZ3VhcmQgYXMgQXV0aEd1YXJkKS5nZXRSZXR1cm5TdGF0ZShpbmZvLnJvdXRlKS50aGVuKHJldHVyblN0YXRlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJldHVyblN0YXRlKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5uYXZpZ2F0ZShyZXR1cm5TdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmZvID0gdGhpcy5nZXRTdGF0ZUluZm8oKTtcclxuICAgICAgICAgICAgaWYgKCFpbmZvPy5jb21wb25lbnQpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50OiBJQWNsQ29tcG9uZW50ID0gaW5mby5jb21wb25lbnQ7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0Z1bmN0aW9uKGNvbXBvbmVudC5vblVzZXJJbml0aWFsaXplZCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5vblVzZXJJbml0aWFsaXplZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldFN0YXRlSW5mbygpOiBJUm91dGVTdGF0ZUluZm8ge1xyXG4gICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5zdGF0ZS5yb3V0ZTtcclxuICAgICAgICBpZiAoIXJvdXRlKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBsZXQgaW5mbyA9IHRoaXMuY29tcG9uZW50cy5maW5kKHQgPT4gdC5yb3V0ZSA9PSB0aGlzLnN0YXRlLnJvdXRlKTtcclxuICAgICAgICBpZiAoIWluZm8pIHtcclxuICAgICAgICAgICAgY29uc3QgZ3VhcmRUeXBlOiBUeXBlPEF1dGhHdWFyZD4gPSAocm91dGUuY2FuQWN0aXZhdGUgfHwgZW1wdHlHdWFyZHMpWzBdO1xyXG4gICAgICAgICAgICBpbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgcm91dGU6IHRoaXMuc3RhdGUucm91dGUsXHJcbiAgICAgICAgICAgICAgICBndWFyZDogZ3VhcmRUeXBlID8gdGhpcy5pbmplY3Rvci5nZXQoZ3VhcmRUeXBlKSA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBkaXJ0eTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGZpcnN0OiB0cnVlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50cy5wdXNoKGluZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbmZvLmNvbXBvbmVudCA9IHRoaXMuc3RhdGUuY29tcG9uZW50O1xyXG4gICAgICAgIHJldHVybiBpbmZvO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==