@stemy/ngx-utils 10.2.44 → 10.3.3

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 (182) hide show
  1. package/README.md +27 -27
  2. package/bundles/stemy-ngx-utils.umd.js +5654 -5640
  3. package/bundles/stemy-ngx-utils.umd.js.map +1 -1
  4. package/bundles/stemy-ngx-utils.umd.min.js +1 -1
  5. package/bundles/stemy-ngx-utils.umd.min.js.map +1 -1
  6. package/esm2015/ngx-utils/common-types.js +111 -111
  7. package/esm2015/ngx-utils/components/dynamic-table/dynamic-table.component.js +139 -139
  8. package/esm2015/ngx-utils/components/pagination-menu/pagination-menu.component.js +96 -96
  9. package/esm2015/ngx-utils/components/unordered-list/unordered-list.component.js +51 -51
  10. package/esm2015/ngx-utils/directives/async-method.directive.js +58 -58
  11. package/esm2015/ngx-utils/directives/background.directive.js +51 -51
  12. package/esm2015/ngx-utils/directives/dynamic-table-template.directive.js +19 -19
  13. package/esm2015/ngx-utils/directives/global-template.directive.js +27 -27
  14. package/esm2015/ngx-utils/directives/icon.directive.js +59 -59
  15. package/esm2015/ngx-utils/directives/ngx-template-outlet.directive.js +88 -88
  16. package/esm2015/ngx-utils/directives/pagination-item.directive.js +33 -33
  17. package/esm2015/ngx-utils/directives/pagination.directive.js +76 -71
  18. package/esm2015/ngx-utils/directives/resource-if.directive.js +51 -51
  19. package/esm2015/ngx-utils/directives/sticky-class.directive.js +35 -35
  20. package/esm2015/ngx-utils/directives/sticky.directive.js +48 -48
  21. package/esm2015/ngx-utils/directives/unordered-list-item.directive.js +70 -70
  22. package/esm2015/ngx-utils/directives/unordered-list-template.directive.js +26 -26
  23. package/esm2015/ngx-utils/ngx-utils.module.js +232 -232
  24. package/esm2015/ngx-utils/pipes/chunk.pipe.js +21 -21
  25. package/esm2015/ngx-utils/pipes/entries.pipe.js +24 -24
  26. package/esm2015/ngx-utils/pipes/extra-item-properties.pipe.js +27 -27
  27. package/esm2015/ngx-utils/pipes/filter.pipe.js +38 -38
  28. package/esm2015/ngx-utils/pipes/find.pipe.js +25 -25
  29. package/esm2015/ngx-utils/pipes/format-number.pipe.js +19 -19
  30. package/esm2015/ngx-utils/pipes/get-offset.pipe.js +13 -13
  31. package/esm2015/ngx-utils/pipes/get-type.pipe.js +12 -12
  32. package/esm2015/ngx-utils/pipes/global-template.pipe.js +35 -35
  33. package/esm2015/ngx-utils/pipes/group-by.pipe.js +23 -23
  34. package/esm2015/ngx-utils/pipes/is-type.pipe.js +12 -12
  35. package/esm2015/ngx-utils/pipes/join.pipe.js +15 -15
  36. package/esm2015/ngx-utils/pipes/keys.pipe.js +18 -18
  37. package/esm2015/ngx-utils/pipes/map.pipe.js +25 -25
  38. package/esm2015/ngx-utils/pipes/max.pipe.js +22 -22
  39. package/esm2015/ngx-utils/pipes/min.pipe.js +22 -22
  40. package/esm2015/ngx-utils/pipes/reduce.pipe.js +26 -26
  41. package/esm2015/ngx-utils/pipes/remap.pipe.js +28 -28
  42. package/esm2015/ngx-utils/pipes/replace.pipe.js +12 -12
  43. package/esm2015/ngx-utils/pipes/reverse.pipe.js +20 -20
  44. package/esm2015/ngx-utils/pipes/round.pipe.js +19 -19
  45. package/esm2015/ngx-utils/pipes/safe-html.pipe.js +32 -32
  46. package/esm2015/ngx-utils/pipes/translate.pipe.js +81 -81
  47. package/esm2015/ngx-utils/pipes/values.pipe.js +18 -18
  48. package/esm2015/ngx-utils/plugins/resize-event.plugin.js +59 -59
  49. package/esm2015/ngx-utils/plugins/scroll-event.plugin.js +52 -52
  50. package/esm2015/ngx-utils/services/acl.service.js +78 -78
  51. package/esm2015/ngx-utils/services/api.service.js +35 -35
  52. package/esm2015/ngx-utils/services/auth.service.js +14 -14
  53. package/esm2015/ngx-utils/services/base-http.client.js +46 -46
  54. package/esm2015/ngx-utils/services/base-http.service.js +274 -274
  55. package/esm2015/ngx-utils/services/config.service.js +95 -95
  56. package/esm2015/ngx-utils/services/error-handler.service.js +49 -49
  57. package/esm2015/ngx-utils/services/events.service.js +24 -24
  58. package/esm2015/ngx-utils/services/formatter.service.js +44 -44
  59. package/esm2015/ngx-utils/services/global-template.service.js +35 -35
  60. package/esm2015/ngx-utils/services/icon.service.js +24 -24
  61. package/esm2015/ngx-utils/services/language.service.js +117 -117
  62. package/esm2015/ngx-utils/services/open-api.service.js +41 -41
  63. package/esm2015/ngx-utils/services/promise.service.js +49 -49
  64. package/esm2015/ngx-utils/services/state.service.js +143 -143
  65. package/esm2015/ngx-utils/services/static-language.service.js +144 -144
  66. package/esm2015/ngx-utils/services/storage.service.js +48 -48
  67. package/esm2015/ngx-utils/services/toaster.service.js +29 -29
  68. package/esm2015/ngx-utils/services/translated-url.serializer.js +70 -70
  69. package/esm2015/ngx-utils/services/universal.service.js +73 -73
  70. package/esm2015/ngx-utils/utils/ajax-request-handler.js +40 -40
  71. package/esm2015/ngx-utils/utils/array.utils.js +100 -90
  72. package/esm2015/ngx-utils/utils/auth.guard.js +153 -153
  73. package/esm2015/ngx-utils/utils/canvas.utils.js +388 -388
  74. package/esm2015/ngx-utils/utils/date.utils.js +28 -28
  75. package/esm2015/ngx-utils/utils/file.utils.js +90 -90
  76. package/esm2015/ngx-utils/utils/generic-value.js +20 -20
  77. package/esm2015/ngx-utils/utils/geometry.js +132 -132
  78. package/esm2015/ngx-utils/utils/initializer.js +17 -17
  79. package/esm2015/ngx-utils/utils/loader.utils.js +55 -55
  80. package/esm2015/ngx-utils/utils/math.utils.js +15 -15
  81. package/esm2015/ngx-utils/utils/object.utils.js +248 -248
  82. package/esm2015/ngx-utils/utils/observable.utils.js +63 -63
  83. package/esm2015/ngx-utils/utils/reflect.utils.js +33 -33
  84. package/esm2015/ngx-utils/utils/set.utils.js +20 -20
  85. package/esm2015/ngx-utils/utils/string.utils.js +28 -28
  86. package/esm2015/ngx-utils/utils/timer.utils.js +52 -52
  87. package/esm2015/ngx-utils/utils/unique.utils.js +24 -24
  88. package/esm2015/ngx-utils/utils/vector.js +77 -77
  89. package/esm2015/public_api.js +83 -83
  90. package/esm2015/stemy-ngx-utils.js +7 -7
  91. package/fesm2015/stemy-ngx-utils.js +4552 -4537
  92. package/fesm2015/stemy-ngx-utils.js.map +1 -1
  93. package/ngx-utils/common-types.d.ts +284 -284
  94. package/ngx-utils/components/dynamic-table/dynamic-table.component.d.ts +43 -43
  95. package/ngx-utils/components/pagination-menu/pagination-menu.component.d.ts +28 -28
  96. package/ngx-utils/components/unordered-list/unordered-list.component.d.ts +22 -22
  97. package/ngx-utils/directives/async-method.directive.d.ts +16 -16
  98. package/ngx-utils/directives/background.directive.d.ts +14 -14
  99. package/ngx-utils/directives/dynamic-table-template.directive.d.ts +8 -8
  100. package/ngx-utils/directives/global-template.directive.d.ts +10 -10
  101. package/ngx-utils/directives/icon.directive.d.ts +20 -20
  102. package/ngx-utils/directives/ngx-template-outlet.directive.d.ts +14 -14
  103. package/ngx-utils/directives/pagination-item.directive.d.ts +12 -12
  104. package/ngx-utils/directives/pagination.directive.d.ts +22 -21
  105. package/ngx-utils/directives/resource-if.directive.d.ts +16 -16
  106. package/ngx-utils/directives/sticky-class.directive.d.ts +12 -12
  107. package/ngx-utils/directives/sticky.directive.d.ts +16 -16
  108. package/ngx-utils/directives/unordered-list-item.directive.d.ts +25 -25
  109. package/ngx-utils/directives/unordered-list-template.directive.d.ts +10 -10
  110. package/ngx-utils/ngx-utils.module.d.ts +76 -76
  111. package/ngx-utils/pipes/chunk.pipe.d.ts +4 -4
  112. package/ngx-utils/pipes/entries.pipe.d.ts +9 -9
  113. package/ngx-utils/pipes/extra-item-properties.pipe.d.ts +5 -5
  114. package/ngx-utils/pipes/filter.pipe.d.ts +5 -5
  115. package/ngx-utils/pipes/find.pipe.d.ts +5 -5
  116. package/ngx-utils/pipes/format-number.pipe.d.ts +7 -7
  117. package/ngx-utils/pipes/get-offset.pipe.d.ts +4 -4
  118. package/ngx-utils/pipes/get-type.pipe.d.ts +4 -4
  119. package/ngx-utils/pipes/global-template.pipe.d.ts +13 -13
  120. package/ngx-utils/pipes/group-by.pipe.d.ts +5 -5
  121. package/ngx-utils/pipes/is-type.pipe.d.ts +4 -4
  122. package/ngx-utils/pipes/join.pipe.d.ts +4 -4
  123. package/ngx-utils/pipes/keys.pipe.d.ts +4 -4
  124. package/ngx-utils/pipes/map.pipe.d.ts +5 -5
  125. package/ngx-utils/pipes/max.pipe.d.ts +4 -4
  126. package/ngx-utils/pipes/min.pipe.d.ts +4 -4
  127. package/ngx-utils/pipes/reduce.pipe.d.ts +5 -5
  128. package/ngx-utils/pipes/remap.pipe.d.ts +4 -4
  129. package/ngx-utils/pipes/replace.pipe.d.ts +4 -4
  130. package/ngx-utils/pipes/reverse.pipe.d.ts +4 -4
  131. package/ngx-utils/pipes/round.pipe.d.ts +7 -7
  132. package/ngx-utils/pipes/safe-html.pipe.d.ts +7 -7
  133. package/ngx-utils/pipes/translate.pipe.d.ts +15 -15
  134. package/ngx-utils/pipes/values.pipe.d.ts +4 -4
  135. package/ngx-utils/plugins/resize-event.plugin.d.ts +10 -10
  136. package/ngx-utils/plugins/scroll-event.plugin.d.ts +11 -11
  137. package/ngx-utils/services/acl.service.d.ts +12 -12
  138. package/ngx-utils/services/api.service.d.ts +14 -14
  139. package/ngx-utils/services/auth.service.d.ts +8 -8
  140. package/ngx-utils/services/base-http.client.d.ts +12 -12
  141. package/ngx-utils/services/base-http.service.d.ts +42 -42
  142. package/ngx-utils/services/config.service.d.ts +21 -21
  143. package/ngx-utils/services/error-handler.service.d.ts +10 -10
  144. package/ngx-utils/services/events.service.d.ts +11 -11
  145. package/ngx-utils/services/formatter.service.d.ts +12 -12
  146. package/ngx-utils/services/global-template.service.d.ts +16 -16
  147. package/ngx-utils/services/icon.service.d.ts +10 -10
  148. package/ngx-utils/services/language.service.d.ts +18 -18
  149. package/ngx-utils/services/open-api.service.d.ts +8 -8
  150. package/ngx-utils/services/promise.service.d.ts +15 -15
  151. package/ngx-utils/services/state.service.d.ts +41 -41
  152. package/ngx-utils/services/static-language.service.d.ts +41 -41
  153. package/ngx-utils/services/storage.service.d.ts +12 -12
  154. package/ngx-utils/services/toaster.service.d.ts +10 -10
  155. package/ngx-utils/services/translated-url.serializer.d.ts +16 -16
  156. package/ngx-utils/services/universal.service.d.ts +24 -24
  157. package/ngx-utils/utils/ajax-request-handler.d.ts +11 -11
  158. package/ngx-utils/utils/array.utils.d.ts +10 -9
  159. package/ngx-utils/utils/auth.guard.d.ts +26 -26
  160. package/ngx-utils/utils/canvas.utils.d.ts +13 -13
  161. package/ngx-utils/utils/date.utils.d.ts +8 -8
  162. package/ngx-utils/utils/file.utils.d.ts +14 -14
  163. package/ngx-utils/utils/generic-value.d.ts +8 -8
  164. package/ngx-utils/utils/geometry.d.ts +50 -50
  165. package/ngx-utils/utils/initializer.d.ts +11 -11
  166. package/ngx-utils/utils/loader.utils.d.ts +7 -7
  167. package/ngx-utils/utils/math.utils.d.ts +5 -5
  168. package/ngx-utils/utils/object.utils.d.ts +31 -31
  169. package/ngx-utils/utils/observable.utils.d.ts +12 -12
  170. package/ngx-utils/utils/reflect.utils.d.ts +9 -9
  171. package/ngx-utils/utils/set.utils.d.ts +4 -4
  172. package/ngx-utils/utils/string.utils.d.ts +7 -7
  173. package/ngx-utils/utils/timer.utils.d.ts +6 -6
  174. package/ngx-utils/utils/unique.utils.d.ts +5 -5
  175. package/ngx-utils/utils/vector.d.ts +23 -23
  176. package/package.json +1 -1
  177. package/public_api.d.ts +82 -82
  178. package/stemy-ngx-utils.d.ts +6 -6
  179. package/stemy-ngx-utils.metadata.json +1 -1
  180. package/tools/circular.js +116 -116
  181. package/tools/config.js +78 -78
  182. package/tools/icons.js +13 -13
@@ -1,59 +1,59 @@
1
- import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Inject, Input, Output, Renderer2 } from "@angular/core";
2
- import { ICON_SERVICE } from "../common-types";
3
- export class IconDirective {
4
- constructor(element, renderer, icons) {
5
- this.element = element;
6
- this.renderer = renderer;
7
- this.icons = icons;
8
- this.renderer.addClass(this.element.nativeElement, "svg-icon");
9
- this.activeChange = new EventEmitter();
10
- }
11
- get isActive() {
12
- return this.active;
13
- }
14
- ngOnInit() {
15
- this.iconsLoaded = this.icons.iconsLoaded.subscribe(() => this.changeIcon());
16
- }
17
- ngOnDestroy() {
18
- if (this.iconsLoaded)
19
- this.iconsLoaded.unsubscribe();
20
- }
21
- ngOnChanges(changes) {
22
- if (changes.icon) {
23
- this.renderer.removeClass(this.element.nativeElement, `svg-icon-${changes.icon.previousValue}`);
24
- this.renderer.addClass(this.element.nativeElement, `svg-icon-${changes.icon.currentValue}`);
25
- }
26
- this.changeIcon();
27
- }
28
- click() {
29
- this.active = !this.active;
30
- this.activeChange.emit(this.active);
31
- this.changeIcon();
32
- }
33
- changeIcon() {
34
- this.icons.getIcon(this.icon, this.activeIcon || `${this.icon}-active`, this.active).then(icon => {
35
- if (this.icons.isDisabled)
36
- return;
37
- this.element.nativeElement.innerHTML = icon;
38
- });
39
- }
40
- }
41
- IconDirective.decorators = [
42
- { type: Directive, args: [{
43
- selector: "[icon]"
44
- },] }
45
- ];
46
- IconDirective.ctorParameters = () => [
47
- { type: ElementRef },
48
- { type: Renderer2 },
49
- { type: undefined, decorators: [{ type: Inject, args: [ICON_SERVICE,] }] }
50
- ];
51
- IconDirective.propDecorators = {
52
- icon: [{ type: Input }],
53
- activeIcon: [{ type: Input }],
54
- active: [{ type: Input }],
55
- activeChange: [{ type: Output }],
56
- isActive: [{ type: HostBinding, args: ["class.active",] }],
57
- click: [{ type: HostListener, args: ["click",] }]
58
- };
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvc3RlbXkvV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL2RpcmVjdGl2ZXMvaWNvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxZQUFZLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUszRCxNQUFNLE9BQU8sYUFBYTtJQWN0QixZQUFvQixPQUFtQixFQUFVLFFBQW1CLEVBQWdDLEtBQW1CO1FBQW5HLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQWdDLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQ3BELENBQUM7SUFWRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQVNELFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1NBQy9GO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFHRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sVUFBVTtRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzdGLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO2dCQUFFLE9BQU87WUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OztZQW5ESixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFFBQVE7YUFDckI7OztZQWxCRyxVQUFVO1lBVVYsU0FBUzs0Q0F1QjhELE1BQU0sU0FBQyxZQUFZOzs7bUJBWnpGLEtBQUs7eUJBQ0wsS0FBSztxQkFDTCxLQUFLOzJCQUNMLE1BQU07dUJBRU4sV0FBVyxTQUFDLGNBQWM7b0JBNkIxQixZQUFZLFNBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7SUNPTl9TRVJWSUNFLCBJSWNvblNlcnZpY2V9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IFwiW2ljb25dXCJcbn0pXG5leHBvcnQgY2xhc3MgSWNvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGFjdGl2ZUljb246IHN0cmluZztcbiAgICBASW5wdXQoKSBhY3RpdmU6IGJvb2xlYW47XG4gICAgQE91dHB1dCgpIGFjdGl2ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuYWN0aXZlXCIpXG4gICAgZ2V0IGlzQWN0aXZlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGljb25zTG9hZGVkOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgQEluamVjdChJQ09OX1NFUlZJQ0UpIHByaXZhdGUgaWNvbnM6IElJY29uU2VydmljZSkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBcInN2Zy1pY29uXCIpO1xuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pY29uc0xvYWRlZCA9IHRoaXMuaWNvbnMuaWNvbnNMb2FkZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hhbmdlSWNvbigpKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaWNvbnNMb2FkZWQpXG4gICAgICAgICAgICB0aGlzLmljb25zTG9hZGVkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5pY29uKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBgc3ZnLWljb24tJHtjaGFuZ2VzLmljb24ucHJldmlvdXNWYWx1ZX1gKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGBzdmctaWNvbi0ke2NoYW5nZXMuaWNvbi5jdXJyZW50VmFsdWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VJY29uKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcImNsaWNrXCIpXG4gICAgY2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gIXRoaXMuYWN0aXZlO1xuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KHRoaXMuYWN0aXZlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VJY29uKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGFuZ2VJY29uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmljb25zLmdldEljb24odGhpcy5pY29uLCB0aGlzLmFjdGl2ZUljb24gfHwgYCR7dGhpcy5pY29ufS1hY3RpdmVgLCB0aGlzLmFjdGl2ZSkudGhlbihpY29uID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmljb25zLmlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGljb247XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
1
+ import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Inject, Input, Output, Renderer2 } from "@angular/core";
2
+ import { ICON_SERVICE } from "../common-types";
3
+ export class IconDirective {
4
+ constructor(element, renderer, icons) {
5
+ this.element = element;
6
+ this.renderer = renderer;
7
+ this.icons = icons;
8
+ this.renderer.addClass(this.element.nativeElement, "svg-icon");
9
+ this.activeChange = new EventEmitter();
10
+ }
11
+ get isActive() {
12
+ return this.active;
13
+ }
14
+ ngOnInit() {
15
+ this.iconsLoaded = this.icons.iconsLoaded.subscribe(() => this.changeIcon());
16
+ }
17
+ ngOnDestroy() {
18
+ if (this.iconsLoaded)
19
+ this.iconsLoaded.unsubscribe();
20
+ }
21
+ ngOnChanges(changes) {
22
+ if (changes.icon) {
23
+ this.renderer.removeClass(this.element.nativeElement, `svg-icon-${changes.icon.previousValue}`);
24
+ this.renderer.addClass(this.element.nativeElement, `svg-icon-${changes.icon.currentValue}`);
25
+ }
26
+ this.changeIcon();
27
+ }
28
+ click() {
29
+ this.active = !this.active;
30
+ this.activeChange.emit(this.active);
31
+ this.changeIcon();
32
+ }
33
+ changeIcon() {
34
+ this.icons.getIcon(this.icon, this.activeIcon || `${this.icon}-active`, this.active).then(icon => {
35
+ if (this.icons.isDisabled)
36
+ return;
37
+ this.element.nativeElement.innerHTML = icon;
38
+ });
39
+ }
40
+ }
41
+ IconDirective.decorators = [
42
+ { type: Directive, args: [{
43
+ selector: "[icon]"
44
+ },] }
45
+ ];
46
+ IconDirective.ctorParameters = () => [
47
+ { type: ElementRef },
48
+ { type: Renderer2 },
49
+ { type: undefined, decorators: [{ type: Inject, args: [ICON_SERVICE,] }] }
50
+ ];
51
+ IconDirective.propDecorators = {
52
+ icon: [{ type: Input }],
53
+ activeIcon: [{ type: Input }],
54
+ active: [{ type: Input }],
55
+ activeChange: [{ type: Output }],
56
+ isActive: [{ type: HostBinding, args: ["class.active",] }],
57
+ click: [{ type: HostListener, args: ["click",] }]
58
+ };
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiRDovV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL2RpcmVjdGl2ZXMvaWNvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxZQUFZLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUszRCxNQUFNLE9BQU8sYUFBYTtJQWN0QixZQUFvQixPQUFtQixFQUFVLFFBQW1CLEVBQWdDLEtBQW1CO1FBQW5HLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQWdDLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQ3BELENBQUM7SUFWRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQVNELFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1NBQy9GO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFHRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sVUFBVTtRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzdGLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO2dCQUFFLE9BQU87WUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OztZQW5ESixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFFBQVE7YUFDckI7OztZQWxCRyxVQUFVO1lBVVYsU0FBUzs0Q0F1QjhELE1BQU0sU0FBQyxZQUFZOzs7bUJBWnpGLEtBQUs7eUJBQ0wsS0FBSztxQkFDTCxLQUFLOzJCQUNMLE1BQU07dUJBRU4sV0FBVyxTQUFDLGNBQWM7b0JBNkIxQixZQUFZLFNBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBIb3N0TGlzdGVuZXIsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFJlbmRlcmVyMixcclxuICAgIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtJQ09OX1NFUlZJQ0UsIElJY29uU2VydmljZX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogXCJbaWNvbl1cIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgSWNvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIEBJbnB1dCgpIGljb246IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGFjdGl2ZUljb246IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGFjdGl2ZTogYm9vbGVhbjtcclxuICAgIEBPdXRwdXQoKSBhY3RpdmVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5hY3RpdmVcIilcclxuICAgIGdldCBpc0FjdGl2ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGljb25zTG9hZGVkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIEBJbmplY3QoSUNPTl9TRVJWSUNFKSBwcml2YXRlIGljb25zOiBJSWNvblNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBcInN2Zy1pY29uXCIpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaWNvbnNMb2FkZWQgPSB0aGlzLmljb25zLmljb25zTG9hZGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoYW5nZUljb24oKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWNvbnNMb2FkZWQpXHJcbiAgICAgICAgICAgIHRoaXMuaWNvbnNMb2FkZWQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMuaWNvbikge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCBgc3ZnLWljb24tJHtjaGFuZ2VzLmljb24ucHJldmlvdXNWYWx1ZX1gKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgYHN2Zy1pY29uLSR7Y2hhbmdlcy5pY29uLmN1cnJlbnRWYWx1ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VJY29uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImNsaWNrXCIpXHJcbiAgICBjbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZSA9ICF0aGlzLmFjdGl2ZTtcclxuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KHRoaXMuYWN0aXZlKTtcclxuICAgICAgICB0aGlzLmNoYW5nZUljb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoYW5nZUljb24oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pY29ucy5nZXRJY29uKHRoaXMuaWNvbiwgdGhpcy5hY3RpdmVJY29uIHx8IGAke3RoaXMuaWNvbn0tYWN0aXZlYCwgdGhpcy5hY3RpdmUpLnRoZW4oaWNvbiA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmljb25zLmlzRGlzYWJsZWQpIHJldHVybjtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gaWNvbjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,88 +1,88 @@
1
- import { Directive, Input, ViewContainerRef } from "@angular/core";
2
- import { ObjectUtils } from "../utils/object.utils";
3
- export class NgxTemplateOutletDirective {
4
- constructor(_viewContainerRef) {
5
- this._viewContainerRef = _viewContainerRef;
6
- }
7
- static hasContextShapeChanged(ctxChange) {
8
- const prevCtxKeys = Object.keys(ctxChange.previousValue || {});
9
- const currCtxKeys = Object.keys(ctxChange.currentValue || {});
10
- if (prevCtxKeys.length === currCtxKeys.length) {
11
- for (const propName of currCtxKeys) {
12
- if (prevCtxKeys.indexOf(propName) === -1) {
13
- return true;
14
- }
15
- }
16
- return false;
17
- }
18
- else {
19
- return true;
20
- }
21
- }
22
- ngOnChanges(changes) {
23
- const recreateView = this.shouldRecreateView(changes);
24
- if (recreateView) {
25
- if (this.viewRef)
26
- this._viewContainerRef.remove(this._viewContainerRef.indexOf(this.viewRef));
27
- if (this.ngxTemplateOutlet)
28
- this.viewRef = this._viewContainerRef.createEmbeddedView(this.ngxTemplateOutlet, {});
29
- }
30
- this.ngDoCheck();
31
- }
32
- ngDoCheck() {
33
- if (!this.viewRef)
34
- return;
35
- const context = this.viewRef.context;
36
- this.updateExistingContext(this.context, context);
37
- this.updateExistingContext(this.additionalContext, context);
38
- context.$implicit = context;
39
- }
40
- shouldRecreateView(changes) {
41
- const ctxChange = changes["context"];
42
- const aCtxChange = changes["additionalContext"];
43
- return !!changes["ngxTemplateOutlet"]
44
- || (ctxChange && NgxTemplateOutletDirective.hasContextShapeChanged(ctxChange))
45
- || (aCtxChange && NgxTemplateOutletDirective.hasContextShapeChanged(aCtxChange));
46
- }
47
- updateExistingContext(ctx, context) {
48
- if (!ctx)
49
- return;
50
- let ctxProto = Object.getPrototypeOf(ctx);
51
- if (ctxProto == Object.prototype) {
52
- ctxProto = ctx;
53
- }
54
- const props = Object.getOwnPropertyNames(ctxProto);
55
- for (const propName of props) {
56
- const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);
57
- // Copy if its a getter and it is not $implicit
58
- if (desc.get && propName !== "$implicit") {
59
- Object.defineProperty(context, propName, desc);
60
- continue;
61
- }
62
- const func = ObjectUtils.isFunction(desc.value) ? desc.value.bind(ctx) : null;
63
- if (func && func !== ctxProto.constructor) {
64
- context[propName] = func;
65
- }
66
- }
67
- for (const propName of Object.keys(ctx)) {
68
- const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);
69
- if (desc && desc.get && !desc.set)
70
- continue;
71
- context[propName] = ctx[propName];
72
- }
73
- }
74
- }
75
- NgxTemplateOutletDirective.decorators = [
76
- { type: Directive, args: [{
77
- selector: "[ngxTemplateOutlet]"
78
- },] }
79
- ];
80
- NgxTemplateOutletDirective.ctorParameters = () => [
81
- { type: ViewContainerRef }
82
- ];
83
- NgxTemplateOutletDirective.propDecorators = {
84
- context: [{ type: Input }],
85
- additionalContext: [{ type: Input }],
86
- ngxTemplateOutlet: [{ type: Input }]
87
- };
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlbXBsYXRlLW91dGxldC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvc3RlbXkvV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL2RpcmVjdGl2ZXMvbmd4LXRlbXBsYXRlLW91dGxldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBS0wsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUtsRCxNQUFNLE9BQU8sMEJBQTBCO0lBd0JuQyxZQUFvQixpQkFBbUM7UUFBbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtJQUFHLENBQUM7SUFoQm5ELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxTQUF1QjtRQUN6RCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTlELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQzNDLEtBQUssTUFBTSxRQUFRLElBQUksV0FBVyxFQUFFO2dCQUNoQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ3RDLE9BQU8sSUFBSSxDQUFDO2lCQUNmO2FBQ0o7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNoQjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7SUFJRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FB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QUMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsU0FBUztZQUM1QyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQzs7O1lBakZKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2FBQ2xDOzs7WUFORyxnQkFBZ0I7OztzQkFXZixLQUFLO2dDQUNMLEtBQUs7Z0NBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGlyZWN0aXZlLCBEb0NoZWNrLFxuICAgIEVtYmVkZGVkVmlld1JlZixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogXCJbbmd4VGVtcGxhdGVPdXRsZXRdXCJcbn0pXG5leHBvcnQgY2xhc3MgTmd4VGVtcGxhdGVPdXRsZXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIERvQ2hlY2sge1xuXG4gICAgcHJpdmF0ZSB2aWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBjb250ZXh0OiBPYmplY3Q7XG4gICAgQElucHV0KCkgcHVibGljIGFkZGl0aW9uYWxDb250ZXh0OiBPYmplY3Q7XG4gICAgQElucHV0KCkgcHVibGljIG5neFRlbXBsYXRlT3V0bGV0OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaGFzQ29udGV4dFNoYXBlQ2hhbmdlZChjdHhDaGFuZ2U6IFNpbXBsZUNoYW5nZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBwcmV2Q3R4S2V5cyA9IE9iamVjdC5rZXlzKGN0eENoYW5nZS5wcmV2aW91c1ZhbHVlIHx8IHt9KTtcbiAgICAgICAgY29uc3QgY3VyckN0eEtleXMgPSBPYmplY3Qua2V5cyhjdHhDaGFuZ2UuY3VycmVudFZhbHVlIHx8IHt9KTtcblxuICAgICAgICBpZiAocHJldkN0eEtleXMubGVuZ3RoID09PSBjdXJyQ3R4S2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcE5hbWUgb2YgY3VyckN0eEtleXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJldkN0eEtleXMuaW5kZXhPZihwcm9wTmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgcmVjcmVhdGVWaWV3ID0gdGhpcy5zaG91bGRSZWNyZWF0ZVZpZXcoY2hhbmdlcyk7XG4gICAgICAgIGlmIChyZWNyZWF0ZVZpZXcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXdSZWYpXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5yZW1vdmUodGhpcy5fdmlld0NvbnRhaW5lclJlZi5pbmRleE9mKHRoaXMudmlld1JlZikpO1xuICAgICAgICAgICAgaWYgKHRoaXMubmd4VGVtcGxhdGVPdXRsZXQpXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5uZ3hUZW1wbGF0ZU91dGxldCwge30pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubmdEb0NoZWNrKCk7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudmlld1JlZikgcmV0dXJuO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy52aWV3UmVmLmNvbnRleHQ7XG4gICAgICAgIHRoaXMudXBkYXRlRXhpc3RpbmdDb250ZXh0KHRoaXMuY29udGV4dCwgY29udGV4dCk7XG4gICAgICAgIHRoaXMudXBkYXRlRXhpc3RpbmdDb250ZXh0KHRoaXMuYWRkaXRpb25hbENvbnRleHQsIGNvbnRleHQpO1xuICAgICAgICBjb250ZXh0LiRpbXBsaWNpdCA9IGNvbnRleHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG91bGRSZWNyZWF0ZVZpZXcoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjdHhDaGFuZ2UgPSBjaGFuZ2VzW1wiY29udGV4dFwiXTtcbiAgICAgICAgY29uc3QgYUN0eENoYW5nZSA9IGNoYW5nZXNbXCJhZGRpdGlvbmFsQ29udGV4dFwiXTtcbiAgICAgICAgcmV0dXJuICEhY2hhbmdlc1tcIm5neFRlbXBsYXRlT3V0bGV0XCJdXG4gICAgICAgICAgICB8fCAoY3R4Q2hhbmdlICYmIE5neFRlbXBsYXRlT3V0bGV0RGlyZWN0aXZlLmhhc0NvbnRleHRTaGFwZUNoYW5nZWQoY3R4Q2hhbmdlKSlcbiAgICAgICAgICAgIHx8IChhQ3R4Q2hhbmdlICYmIE5neFRlbXBsYXRlT3V0bGV0RGlyZWN0aXZlLmhhc0NvbnRleHRTaGFwZUNoYW5nZWQoYUN0eENoYW5nZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlRXhpc3RpbmdDb250ZXh0KGN0eDogYW55LCBjb250ZXh0OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjdHgpIHJldHVybjtcbiAgICAgICAgbGV0IGN0eFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGN0eCk7XG4gICAgICAgIGlmIChjdHhQcm90byA9PSBPYmplY3QucHJvdG90eXBlKSB7XG4gICAgICAgICAgICBjdHhQcm90byA9IGN0eDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGN0eFByb3RvKTtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY3R4UHJvdG8sIHByb3BOYW1lKTtcbiAgICAgICAgICAgIC8vIENvcHkgaWYgaXRzIGEgZ2V0dGVyIGFuZCBpdCBpcyBub3QgJGltcGxpY2l0XG4gICAgICAgICAgICBpZiAoZGVzYy5nZXQgJiYgcHJvcE5hbWUgIT09IFwiJGltcGxpY2l0XCIpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udGV4dCwgcHJvcE5hbWUsIGRlc2MpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZnVuYzogRnVuY3Rpb24gPSBPYmplY3RVdGlscy5pc0Z1bmN0aW9uKGRlc2MudmFsdWUpID8gZGVzYy52YWx1ZS5iaW5kKGN0eCkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGZ1bmMgJiYgZnVuYyAhPT0gY3R4UHJvdG8uY29uc3RydWN0b3IpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0W3Byb3BOYW1lXSA9IGZ1bmM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBPYmplY3Qua2V5cyhjdHgpKSB7XG5cbiAgICAgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGN0eFByb3RvLCBwcm9wTmFtZSk7XG4gICAgICAgICAgICBpZiAoZGVzYyAmJiBkZXNjLmdldCAmJiAhZGVzYy5zZXQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29udGV4dFtwcm9wTmFtZV0gPSBjdHhbcHJvcE5hbWVdO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
1
+ import { Directive, Input, ViewContainerRef } from "@angular/core";
2
+ import { ObjectUtils } from "../utils/object.utils";
3
+ export class NgxTemplateOutletDirective {
4
+ constructor(_viewContainerRef) {
5
+ this._viewContainerRef = _viewContainerRef;
6
+ }
7
+ static hasContextShapeChanged(ctxChange) {
8
+ const prevCtxKeys = Object.keys(ctxChange.previousValue || {});
9
+ const currCtxKeys = Object.keys(ctxChange.currentValue || {});
10
+ if (prevCtxKeys.length === currCtxKeys.length) {
11
+ for (const propName of currCtxKeys) {
12
+ if (prevCtxKeys.indexOf(propName) === -1) {
13
+ return true;
14
+ }
15
+ }
16
+ return false;
17
+ }
18
+ else {
19
+ return true;
20
+ }
21
+ }
22
+ ngOnChanges(changes) {
23
+ const recreateView = this.shouldRecreateView(changes);
24
+ if (recreateView) {
25
+ if (this.viewRef)
26
+ this._viewContainerRef.remove(this._viewContainerRef.indexOf(this.viewRef));
27
+ if (this.ngxTemplateOutlet)
28
+ this.viewRef = this._viewContainerRef.createEmbeddedView(this.ngxTemplateOutlet, {});
29
+ }
30
+ this.ngDoCheck();
31
+ }
32
+ ngDoCheck() {
33
+ if (!this.viewRef)
34
+ return;
35
+ const context = this.viewRef.context;
36
+ this.updateExistingContext(this.context, context);
37
+ this.updateExistingContext(this.additionalContext, context);
38
+ context.$implicit = context;
39
+ }
40
+ shouldRecreateView(changes) {
41
+ const ctxChange = changes["context"];
42
+ const aCtxChange = changes["additionalContext"];
43
+ return !!changes["ngxTemplateOutlet"]
44
+ || (ctxChange && NgxTemplateOutletDirective.hasContextShapeChanged(ctxChange))
45
+ || (aCtxChange && NgxTemplateOutletDirective.hasContextShapeChanged(aCtxChange));
46
+ }
47
+ updateExistingContext(ctx, context) {
48
+ if (!ctx)
49
+ return;
50
+ let ctxProto = Object.getPrototypeOf(ctx);
51
+ if (ctxProto == Object.prototype) {
52
+ ctxProto = ctx;
53
+ }
54
+ const props = Object.getOwnPropertyNames(ctxProto);
55
+ for (const propName of props) {
56
+ const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);
57
+ // Copy if its a getter and it is not $implicit
58
+ if (desc.get && propName !== "$implicit") {
59
+ Object.defineProperty(context, propName, desc);
60
+ continue;
61
+ }
62
+ const func = ObjectUtils.isFunction(desc.value) ? desc.value.bind(ctx) : null;
63
+ if (func && func !== ctxProto.constructor) {
64
+ context[propName] = func;
65
+ }
66
+ }
67
+ for (const propName of Object.keys(ctx)) {
68
+ const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);
69
+ if (desc && desc.get && !desc.set)
70
+ continue;
71
+ context[propName] = ctx[propName];
72
+ }
73
+ }
74
+ }
75
+ NgxTemplateOutletDirective.decorators = [
76
+ { type: Directive, args: [{
77
+ selector: "[ngxTemplateOutlet]"
78
+ },] }
79
+ ];
80
+ NgxTemplateOutletDirective.ctorParameters = () => [
81
+ { type: ViewContainerRef }
82
+ ];
83
+ NgxTemplateOutletDirective.propDecorators = {
84
+ context: [{ type: Input }],
85
+ additionalContext: [{ type: Input }],
86
+ ngxTemplateOutlet: [{ type: Input }]
87
+ };
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlbXBsYXRlLW91dGxldC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiRDovV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL2RpcmVjdGl2ZXMvbmd4LXRlbXBsYXRlLW91dGxldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBS0wsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUtsRCxNQUFNLE9BQU8sMEJBQTBCO0lBd0JuQyxZQUFvQixpQkFBbUM7UUFBbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtJQUFHLENBQUM7SUFoQm5ELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxTQUF1QjtRQUN6RCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTlELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQzNDLEtBQUssTUFBTSxRQUFRLElBQUksV0FBVyxFQUFFO2dCQUNoQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ3RDLE9BQU8sSUFBSSxDQUFDO2lCQUNmO2FBQ0o7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNoQjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7SUFJRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELElBQUks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QUFDLEdBQUc7Z0JBQUUsU0FBUztZQUM1QyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQzs7O1lBakZKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2FBQ2xDOzs7WUFORyxnQkFBZ0I7OztzQkFXZixLQUFLO2dDQUNMLEtBQUs7Z0NBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBEaXJlY3RpdmUsIERvQ2hlY2ssXHJcbiAgICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIFNpbXBsZUNoYW5nZSxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDb250YWluZXJSZWZcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiBcIltuZ3hUZW1wbGF0ZU91dGxldF1cIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGVtcGxhdGVPdXRsZXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIERvQ2hlY2sge1xyXG5cclxuICAgIHByaXZhdGUgdmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPGFueT47XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGNvbnRleHQ6IE9iamVjdDtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhZGRpdGlvbmFsQ29udGV4dDogT2JqZWN0O1xyXG4gICAgQElucHV0KCkgcHVibGljIG5neFRlbXBsYXRlT3V0bGV0OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGhhc0NvbnRleHRTaGFwZUNoYW5nZWQoY3R4Q2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBwcmV2Q3R4S2V5cyA9IE9iamVjdC5rZXlzKGN0eENoYW5nZS5wcmV2aW91c1ZhbHVlIHx8IHt9KTtcclxuICAgICAgICBjb25zdCBjdXJyQ3R4S2V5cyA9IE9iamVjdC5rZXlzKGN0eENoYW5nZS5jdXJyZW50VmFsdWUgfHwge30pO1xyXG5cclxuICAgICAgICBpZiAocHJldkN0eEtleXMubGVuZ3RoID09PSBjdXJyQ3R4S2V5cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBjdXJyQ3R4S2V5cykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZDdHhLZXlzLmluZGV4T2YocHJvcE5hbWUpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgY29uc3QgcmVjcmVhdGVWaWV3ID0gdGhpcy5zaG91bGRSZWNyZWF0ZVZpZXcoY2hhbmdlcyk7XHJcbiAgICAgICAgaWYgKHJlY3JlYXRlVmlldykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52aWV3UmVmKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5yZW1vdmUodGhpcy5fdmlld0NvbnRhaW5lclJlZi5pbmRleE9mKHRoaXMudmlld1JlZikpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5uZ3hUZW1wbGF0ZU91dGxldClcclxuICAgICAgICAgICAgICAgIHRoaXMudmlld1JlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMubmd4VGVtcGxhdGVPdXRsZXQsIHt9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5uZ0RvQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0RvQ2hlY2soKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnZpZXdSZWYpIHJldHVybjtcclxuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy52aWV3UmVmLmNvbnRleHQ7XHJcbiAgICAgICAgdGhpcy51cGRhdGVFeGlzdGluZ0NvbnRleHQodGhpcy5jb250ZXh0LCBjb250ZXh0KTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUV4aXN0aW5nQ29udGV4dCh0aGlzLmFkZGl0aW9uYWxDb250ZXh0LCBjb250ZXh0KTtcclxuICAgICAgICBjb250ZXh0LiRpbXBsaWNpdCA9IGNvbnRleHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzaG91bGRSZWNyZWF0ZVZpZXcoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGN0eENoYW5nZSA9IGNoYW5nZXNbXCJjb250ZXh0XCJdO1xyXG4gICAgICAgIGNvbnN0IGFDdHhDaGFuZ2UgPSBjaGFuZ2VzW1wiYWRkaXRpb25hbENvbnRleHRcIl07XHJcbiAgICAgICAgcmV0dXJuICEhY2hhbmdlc1tcIm5neFRlbXBsYXRlT3V0bGV0XCJdXHJcbiAgICAgICAgICAgIHx8IChjdHhDaGFuZ2UgJiYgTmd4VGVtcGxhdGVPdXRsZXREaXJlY3RpdmUuaGFzQ29udGV4dFNoYXBlQ2hhbmdlZChjdHhDaGFuZ2UpKVxyXG4gICAgICAgICAgICB8fCAoYUN0eENoYW5nZSAmJiBOZ3hUZW1wbGF0ZU91dGxldERpcmVjdGl2ZS5oYXNDb250ZXh0U2hhcGVDaGFuZ2VkKGFDdHhDaGFuZ2UpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZUV4aXN0aW5nQ29udGV4dChjdHg6IGFueSwgY29udGV4dDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFjdHgpIHJldHVybjtcclxuICAgICAgICBsZXQgY3R4UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3R4KTtcclxuICAgICAgICBpZiAoY3R4UHJvdG8gPT0gT2JqZWN0LnByb3RvdHlwZSkge1xyXG4gICAgICAgICAgICBjdHhQcm90byA9IGN0eDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjdHhQcm90byk7XHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBwcm9wcykge1xyXG4gICAgICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjdHhQcm90bywgcHJvcE5hbWUpO1xyXG4gICAgICAgICAgICAvLyBDb3B5IGlmIGl0cyBhIGdldHRlciBhbmQgaXQgaXMgbm90ICRpbXBsaWNpdFxyXG4gICAgICAgICAgICBpZiAoZGVzYy5nZXQgJiYgcHJvcE5hbWUgIT09IFwiJGltcGxpY2l0XCIpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb250ZXh0LCBwcm9wTmFtZSwgZGVzYyk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBmdW5jOiBGdW5jdGlvbiA9IE9iamVjdFV0aWxzLmlzRnVuY3Rpb24oZGVzYy52YWx1ZSkgPyBkZXNjLnZhbHVlLmJpbmQoY3R4KSA6IG51bGw7XHJcbiAgICAgICAgICAgIGlmIChmdW5jICYmIGZ1bmMgIT09IGN0eFByb3RvLmNvbnN0cnVjdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0W3Byb3BOYW1lXSA9IGZ1bmM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBPYmplY3Qua2V5cyhjdHgpKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjdHhQcm90bywgcHJvcE5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoZGVzYyAmJiBkZXNjLmdldCAmJiAhZGVzYy5zZXQpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjb250ZXh0W3Byb3BOYW1lXSA9IGN0eFtwcm9wTmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,33 +1,33 @@
1
- import { Directive, TemplateRef, ViewContainerRef } from "@angular/core";
2
- import { PaginationDirective } from "./pagination.directive";
3
- export class PaginationItemDirective {
4
- constructor(pagination, viewContainer, templateRef) {
5
- this.pagination = pagination;
6
- this.viewContainer = viewContainer;
7
- this.templateRef = templateRef;
8
- }
9
- ngOnInit() {
10
- this.onRefresh = this.pagination.onRefresh.subscribe(() => this.renderView());
11
- }
12
- ngOnDestroy() {
13
- this.onRefresh.unsubscribe();
14
- }
15
- renderView() {
16
- this.viewContainer.clear();
17
- this.pagination.items.forEach((item) => {
18
- item.$implicit = item;
19
- this.viewContainer.createEmbeddedView(this.templateRef, item);
20
- });
21
- }
22
- }
23
- PaginationItemDirective.decorators = [
24
- { type: Directive, args: [{
25
- selector: "[paginationItem]"
26
- },] }
27
- ];
28
- PaginationItemDirective.ctorParameters = () => [
29
- { type: PaginationDirective },
30
- { type: ViewContainerRef },
31
- { type: TemplateRef }
32
- ];
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9zdGVteS9Xb3JrL25neC11dGlscy9zcmMvIiwic291cmNlcyI6WyJuZ3gtdXRpbHMvZGlyZWN0aXZlcy9wYWdpbmF0aW9uLWl0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQXFCLFdBQVcsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUszRCxNQUFNLE9BQU8sdUJBQXVCO0lBSWhDLFlBQW9CLFVBQStCLEVBQVUsYUFBK0IsRUFBVSxXQUE2QjtRQUEvRyxlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtJQUVuSSxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sVUFBVTtRQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBekJKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsa0JBQWtCO2FBQy9COzs7WUFKTyxtQkFBbUI7WUFGd0IsZ0JBQWdCO1lBQTdCLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1BhZ2luYXRpb25EaXJlY3RpdmV9IGZyb20gXCIuL3BhZ2luYXRpb24uZGlyZWN0aXZlXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBcIltwYWdpbmF0aW9uSXRlbV1cIlxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIHByaXZhdGUgb25SZWZyZXNoOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhZ2luYXRpb246IFBhZ2luYXRpb25EaXJlY3RpdmUsIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge1xuXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25SZWZyZXNoID0gdGhpcy5wYWdpbmF0aW9uLm9uUmVmcmVzaC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZW5kZXJWaWV3KCkpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uUmVmcmVzaC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVuZGVyVmlldygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5pdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGl0ZW0uJGltcGxpY2l0ID0gaXRlbTtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwgaXRlbSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
1
+ import { Directive, TemplateRef, ViewContainerRef } from "@angular/core";
2
+ import { PaginationDirective } from "./pagination.directive";
3
+ export class PaginationItemDirective {
4
+ constructor(pagination, viewContainer, templateRef) {
5
+ this.pagination = pagination;
6
+ this.viewContainer = viewContainer;
7
+ this.templateRef = templateRef;
8
+ }
9
+ ngOnInit() {
10
+ this.onRefresh = this.pagination.onRefresh.subscribe(() => this.renderView());
11
+ }
12
+ ngOnDestroy() {
13
+ this.onRefresh.unsubscribe();
14
+ }
15
+ renderView() {
16
+ this.viewContainer.clear();
17
+ this.pagination.items.forEach((item) => {
18
+ item.$implicit = item;
19
+ this.viewContainer.createEmbeddedView(this.templateRef, item);
20
+ });
21
+ }
22
+ }
23
+ PaginationItemDirective.decorators = [
24
+ { type: Directive, args: [{
25
+ selector: "[paginationItem]"
26
+ },] }
27
+ ];
28
+ PaginationItemDirective.ctorParameters = () => [
29
+ { type: PaginationDirective },
30
+ { type: ViewContainerRef },
31
+ { type: TemplateRef }
32
+ ];
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJEOi9Xb3JrL25neC11dGlscy9zcmMvIiwic291cmNlcyI6WyJuZ3gtdXRpbHMvZGlyZWN0aXZlcy9wYWdpbmF0aW9uLWl0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQXFCLFdBQVcsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUszRCxNQUFNLE9BQU8sdUJBQXVCO0lBSWhDLFlBQW9CLFVBQStCLEVBQVUsYUFBK0IsRUFBVSxXQUE2QjtRQUEvRyxlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtJQUVuSSxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sVUFBVTtRQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBekJKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsa0JBQWtCO2FBQy9COzs7WUFKTyxtQkFBbUI7WUFGd0IsZ0JBQWdCO1lBQTdCLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtQYWdpbmF0aW9uRGlyZWN0aXZlfSBmcm9tIFwiLi9wYWdpbmF0aW9uLmRpcmVjdGl2ZVwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogXCJbcGFnaW5hdGlvbkl0ZW1dXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25JdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIHByaXZhdGUgb25SZWZyZXNoOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uRGlyZWN0aXZlLCBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblJlZnJlc2ggPSB0aGlzLnBhZ2luYXRpb24ub25SZWZyZXNoLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlbmRlclZpZXcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblJlZnJlc2gudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlbmRlclZpZXcoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLml0ZW1zLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLiRpbXBsaWNpdCA9IGl0ZW07XHJcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwgaXRlbSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,71 +1,76 @@
1
- import { Directive, EventEmitter, Input, NgZone, Output } from "@angular/core";
2
- import { PaginationItemContext } from "../common-types";
3
- import { TimerUtils } from "../utils/timer.utils";
4
- export class PaginationDirective {
5
- constructor(zone) {
6
- this.zone = zone;
7
- this.onRefresh = new EventEmitter();
8
- this.updateTimer = TimerUtils.createTimeout(() => this.loadData(), this.updateTime);
9
- }
10
- get total() {
11
- return this.data ? this.data.total : 0;
12
- }
13
- get items() {
14
- return this.data ? this.data.items : [];
15
- }
16
- ngOnChanges(changes) {
17
- if (!changes.loader && !changes.itemsPerPage)
18
- return;
19
- this.page = isNaN(this.page) || this.page < 1 ? 1 : this.page;
20
- this.itemsPerPage = isNaN(this.itemsPerPage) || this.itemsPerPage < 1 ? 20 : this.itemsPerPage;
21
- this.updateTimer.time = isNaN(this.updateTime) || this.updateTime < 0 ? 100 : this.updateTime;
22
- this.waitFor = this.waitFor || Promise.resolve(true);
23
- this.waitFor.then(() => this.refresh());
24
- }
25
- refresh() {
26
- this.updateTimer.run();
27
- }
28
- paginate(page) {
29
- this.page = page;
30
- this.refresh();
31
- }
32
- loadData() {
33
- if (!this.loader)
34
- return;
35
- this.loader(this.page, this.itemsPerPage).then(data => {
36
- this.maxPage = !data || data.total <= 0 ? 1 : Math.floor((data.total - 1) / this.itemsPerPage) + 1;
37
- this.data = data;
38
- const baseIndex = (this.page - 1) * this.itemsPerPage;
39
- const items = (data.items || []);
40
- data.items = items.map((item, index) => {
41
- const ix = baseIndex + index;
42
- return item instanceof PaginationItemContext
43
- ? item
44
- : new PaginationItemContext(item, items, items.length, index, ix);
45
- });
46
- if (this.page > this.maxPage) {
47
- this.paginate(this.maxPage);
48
- return;
49
- }
50
- this.zone.run(() => this.onRefresh.emit(this));
51
- });
52
- }
53
- }
54
- PaginationDirective.decorators = [
55
- { type: Directive, args: [{
56
- selector: "[pagination]",
57
- exportAs: "pagination"
58
- },] }
59
- ];
60
- PaginationDirective.ctorParameters = () => [
61
- { type: NgZone }
62
- ];
63
- PaginationDirective.propDecorators = {
64
- loader: [{ type: Input, args: ["pagination",] }],
65
- page: [{ type: Input }],
66
- itemsPerPage: [{ type: Input }],
67
- updateTime: [{ type: Input }],
68
- waitFor: [{ type: Input }],
69
- onRefresh: [{ type: Output }]
70
- };
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvc3RlbXkvV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL2RpcmVjdGl2ZXMvcGFnaW5hdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBZ0QscUJBQXFCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFNaEQsTUFBTSxPQUFPLG1CQUFtQjtJQXNCNUIsWUFBb0IsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBdkJELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFtQkQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7WUFBRSxPQUFP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QUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OztZQXBFSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLFFBQVEsRUFBRSxZQUFZO2FBQ3pCOzs7WUFQdUMsTUFBTTs7O3FCQWtCekMsS0FBSyxTQUFDLFlBQVk7bUJBQ2xCLEtBQUs7MkJBQ0wsS0FBSzt5QkFDTCxLQUFLO3NCQUNMLEtBQUs7d0JBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtJUGFnaW5hdGlvbkRhdGEsIElUaW1lciwgUGFnaW5hdGlvbkRhdGFMb2FkZXIsIFBhZ2luYXRpb25JdGVtQ29udGV4dH0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xuaW1wb3J0IHtUaW1lclV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvdGltZXIudXRpbHNcIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IFwiW3BhZ2luYXRpb25dXCIsXG4gICAgZXhwb3J0QXM6IFwicGFnaW5hdGlvblwiXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gICAgZ2V0IHRvdGFsKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEgPyB0aGlzLmRhdGEudG90YWwgOiAwO1xuICAgIH1cblxuICAgIGdldCBpdGVtcygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEgPyB0aGlzLmRhdGEuaXRlbXMgOiBbXTtcbiAgICB9XG5cbiAgICBASW5wdXQoXCJwYWdpbmF0aW9uXCIpIGxvYWRlcjogUGFnaW5hdGlvbkRhdGFMb2FkZXI7XG4gICAgQElucHV0KCkgcGFnZTogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHVwZGF0ZVRpbWU6IG51bWJlcjtcbiAgICBASW5wdXQoKSB3YWl0Rm9yOiBQcm9taXNlPGFueT47XG4gICAgQE91dHB1dCgpIG9uUmVmcmVzaDogRXZlbnRFbWl0dGVyPFBhZ2luYXRpb25EaXJlY3RpdmU+O1xuXG4gICAgbWF4UGFnZTogbnVtYmVyO1xuXG4gICAgcHJpdmF0ZSBkYXRhOiBJUGFnaW5hdGlvbkRhdGE7XG4gICAgcHJpdmF0ZSB1cGRhdGVUaW1lcjogSVRpbWVyO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHtcbiAgICAgICAgdGhpcy5vblJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2luYXRpb25EaXJlY3RpdmU+KCk7XG4gICAgICAgIHRoaXMudXBkYXRlVGltZXIgPSBUaW1lclV0aWxzLmNyZWF0ZVRpbWVvdXQoKCkgPT4gdGhpcy5sb2FkRGF0YSgpLCB0aGlzLnVwZGF0ZVRpbWUpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjaGFuZ2VzLmxvYWRlciAmJiAhY2hhbmdlcy5pdGVtc1BlclBhZ2UpIHJldHVybjtcbiAgICAgICAgdGhpcy5wYWdlID0gaXNOYU4odGhpcy5wYWdlKSB8fCB0aGlzLnBhZ2UgPCAxID8gMSA6IHRoaXMucGFnZTtcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBpc05hTih0aGlzLml0ZW1zUGVyUGFnZSkgfHwgdGhpcy5pdGVtc1BlclBhZ2UgPCAxID8gMjAgOiB0aGlzLml0ZW1zUGVyUGFnZTtcbiAgICAgICAgdGhpcy51cGRhdGVUaW1lci50aW1lID0gaXNOYU4odGhpcy51cGRhdGVUaW1lKSB8fCB0aGlzLnVwZGF0ZVRpbWUgPCAwID8gMTAwIDogdGhpcy51cGRhdGVUaW1lO1xuICAgICAgICB0aGlzLndhaXRGb3IgPSB0aGlzLndhaXRGb3IgfHwgUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgICAgICB0aGlzLndhaXRGb3IudGhlbigoKSA9PiB0aGlzLnJlZnJlc2goKSk7XG4gICAgfVxuXG4gICAgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVUaW1lci5ydW4oKTtcbiAgICB9XG5cbiAgICBwYWdpbmF0ZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdlID0gcGFnZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRlcikgcmV0dXJuO1xuICAgICAgICB0aGlzLmxvYWRlcih0aGlzLnBhZ2UsIHRoaXMuaXRlbXNQZXJQYWdlKS50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5tYXhQYWdlID0gIWRhdGEgfHwgZGF0YS50b3RhbCA8PSAwID8gMSA6IE1hdGguZmxvb3IoKGRhdGEudG90YWwgLSAxKSAvIHRoaXMuaXRlbXNQZXJQYWdlKSArIDE7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgICAgICAgY29uc3QgYmFzZUluZGV4ID0gKHRoaXMucGFnZSAtIDEpICogdGhpcy5pdGVtc1BlclBhZ2U7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IChkYXRhLml0ZW1zIHx8IFtdKTtcbiAgICAgICAgICAgIGRhdGEuaXRlbXMgPSBpdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXggPSBiYXNlSW5kZXggKyBpbmRleDtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbSBpbnN0YW5jZW9mIFBhZ2luYXRpb25JdGVtQ29udGV4dFxuICAgICAgICAgICAgICAgICAgICA/IGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgOiBuZXcgUGFnaW5hdGlvbkl0ZW1Db250ZXh0KGl0ZW0sIGl0ZW1zLCBpdGVtcy5sZW5ndGgsIGluZGV4LCBpeCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2UgPiB0aGlzLm1heFBhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRlKHRoaXMubWF4UGFnZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLm9uUmVmcmVzaC5lbWl0KHRoaXMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
1
+ import { Directive, EventEmitter, Input, NgZone, Output } from "@angular/core";
2
+ import { PaginationItemContext } from "../common-types";
3
+ import { TimerUtils } from "../utils/timer.utils";
4
+ export class PaginationDirective {
5
+ constructor(zone) {
6
+ this.zone = zone;
7
+ this.pageChange = new EventEmitter();
8
+ this.onRefresh = new EventEmitter();
9
+ this.updateTimer = TimerUtils.createTimeout(() => this.loadData(), this.updateTime);
10
+ }
11
+ get total() {
12
+ return this.data ? this.data.total : 0;
13
+ }
14
+ get items() {
15
+ return this.data ? this.data.items : [];
16
+ }
17
+ ngOnChanges(changes) {
18
+ if (!changes.loader && !changes.itemsPerPage && !changes.page)
19
+ return;
20
+ this.page = isNaN(this.page) || this.page < 1 ? 1 : this.page;
21
+ this.itemsPerPage = isNaN(this.itemsPerPage) || this.itemsPerPage < 1 ? 20 : this.itemsPerPage;
22
+ this.updateTimer.time = isNaN(this.updateTime) || this.updateTime < 0 ? 100 : this.updateTime;
23
+ this.waitFor = this.waitFor || Promise.resolve(true);
24
+ this.refresh();
25
+ }
26
+ refresh() {
27
+ this.waitFor.then(() => {
28
+ this.updateTimer.run();
29
+ });
30
+ }
31
+ paginate(page) {
32
+ this.page = page;
33
+ this.pageChange.emit(page);
34
+ this.refresh();
35
+ }
36
+ loadData() {
37
+ if (!this.loader)
38
+ return;
39
+ this.loader(this.page, this.itemsPerPage).then(data => {
40
+ this.maxPage = !data || data.total <= 0 ? 1 : Math.floor((data.total - 1) / this.itemsPerPage) + 1;
41
+ this.data = data;
42
+ const baseIndex = (this.page - 1) * this.itemsPerPage;
43
+ const items = (data.items || []);
44
+ data.items = items.map((item, index) => {
45
+ const ix = baseIndex + index;
46
+ return item instanceof PaginationItemContext
47
+ ? item
48
+ : new PaginationItemContext(item, items, items.length, index, ix);
49
+ });
50
+ if (this.page > this.maxPage) {
51
+ this.paginate(this.maxPage);
52
+ return;
53
+ }
54
+ this.zone.run(() => this.onRefresh.emit(this));
55
+ });
56
+ }
57
+ }
58
+ PaginationDirective.decorators = [
59
+ { type: Directive, args: [{
60
+ selector: "[pagination]",
61
+ exportAs: "pagination"
62
+ },] }
63
+ ];
64
+ PaginationDirective.ctorParameters = () => [
65
+ { type: NgZone }
66
+ ];
67
+ PaginationDirective.propDecorators = {
68
+ loader: [{ type: Input, args: ["pagination",] }],
69
+ page: [{ type: Input }],
70
+ itemsPerPage: [{ type: Input }],
71
+ updateTime: [{ type: Input }],
72
+ waitFor: [{ type: Input }],
73
+ pageChange: [{ type: Output }],
74
+ onRefresh: [{ type: Output }]
75
+ };
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiRDovV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL2RpcmVjdGl2ZXMvcGFnaW5hdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBZ0QscUJBQXFCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFNaEQsTUFBTSxPQUFPLG1CQUFtQjtJQXdCNUIsWUFBb0IsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQTFCRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBc0JELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLE1B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Q0FBQztnQkFDNUIsT0FBTzthQUNWO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OztZQTFFSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLFFBQVEsRUFBRSxZQUFZO2FBQ3pCOzs7WUFQdUMsTUFBTTs7O3FCQWtCekMsS0FBSyxTQUFDLFlBQVk7bUJBQ2xCLEtBQUs7MkJBQ0wsS0FBSzt5QkFDTCxLQUFLO3NCQUNMLEtBQUs7eUJBRUwsTUFBTTt3QkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SVBhZ2luYXRpb25EYXRhLCBJVGltZXIsIFBhZ2luYXRpb25EYXRhTG9hZGVyLCBQYWdpbmF0aW9uSXRlbUNvbnRleHR9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtUaW1lclV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvdGltZXIudXRpbHNcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6IFwiW3BhZ2luYXRpb25dXCIsXHJcbiAgICBleHBvcnRBczogXCJwYWdpbmF0aW9uXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICAgIGdldCB0b3RhbCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEgPyB0aGlzLmRhdGEudG90YWwgOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpdGVtcygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSA/IHRoaXMuZGF0YS5pdGVtcyA6IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dChcInBhZ2luYXRpb25cIikgbG9hZGVyOiBQYWdpbmF0aW9uRGF0YUxvYWRlcjtcclxuICAgIEBJbnB1dCgpIHBhZ2U6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgdXBkYXRlVGltZTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgd2FpdEZvcjogUHJvbWlzZTxhbnk+O1xyXG5cclxuICAgIEBPdXRwdXQoKSBwYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPjtcclxuICAgIEBPdXRwdXQoKSBvblJlZnJlc2g6IEV2ZW50RW1pdHRlcjxQYWdpbmF0aW9uRGlyZWN0aXZlPjtcclxuXHJcbiAgICBtYXhQYWdlOiBudW1iZXI7XHJcblxyXG4gICAgcHJpdmF0ZSBkYXRhOiBJUGFnaW5hdGlvbkRhdGE7XHJcbiAgICBwcml2YXRlIHVwZGF0ZVRpbWVyOiBJVGltZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHtcclxuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICAgICAgICB0aGlzLm9uUmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnaW5hdGlvbkRpcmVjdGl2ZT4oKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVyID0gVGltZXJVdGlscy5jcmVhdGVUaW1lb3V0KCgpID0+IHRoaXMubG9hZERhdGEoKSwgdGhpcy51cGRhdGVUaW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFjaGFuZ2VzLmxvYWRlciAmJiAhY2hhbmdlcy5pdGVtc1BlclBhZ2UgJiYgIWNoYW5nZXMucGFnZSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucGFnZSA9IGlzTmFOKHRoaXMucGFnZSkgfHwgdGhpcy5wYWdlIDwgMSA/IDEgOiB0aGlzLnBhZ2U7XHJcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBpc05hTih0aGlzLml0ZW1zUGVyUGFnZSkgfHwgdGhpcy5pdGVtc1BlclBhZ2UgPCAxID8gMjAgOiB0aGlzLml0ZW1zUGVyUGFnZTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVyLnRpbWUgPSBpc05hTih0aGlzLnVwZGF0ZVRpbWUpIHx8IHRoaXMudXBkYXRlVGltZSA8IDAgPyAxMDAgOiB0aGlzLnVwZGF0ZVRpbWU7XHJcbiAgICAgICAgdGhpcy53YWl0Rm9yID0gdGhpcy53YWl0Rm9yIHx8IFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuXHJcbiAgICByZWZyZXNoKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMud2FpdEZvci50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVUaW1lci5ydW4oKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwYWdpbmF0ZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlO1xyXG4gICAgICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHBhZ2UpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9hZERhdGEoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRlcikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMubG9hZGVyKHRoaXMucGFnZSwgdGhpcy5pdGVtc1BlclBhZ2UpLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubWF4UGFnZSA9ICFkYXRhIHx8IGRhdGEudG90YWwgPD0gMCA/IDEgOiBNYXRoLmZsb29yKChkYXRhLnRvdGFsIC0gMSkgLyB0aGlzLml0ZW1zUGVyUGFnZSkgKyAxO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgICBjb25zdCBiYXNlSW5kZXggPSAodGhpcy5wYWdlIC0gMSkgKiB0aGlzLml0ZW1zUGVyUGFnZTtcclxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSAoZGF0YS5pdGVtcyB8fCBbXSk7XHJcbiAgICAgICAgICAgIGRhdGEuaXRlbXMgPSBpdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpeCA9IGJhc2VJbmRleCArIGluZGV4O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBQYWdpbmF0aW9uSXRlbUNvbnRleHRcclxuICAgICAgICAgICAgICAgICAgICA/IGl0ZW1cclxuICAgICAgICAgICAgICAgICAgICA6IG5ldyBQYWdpbmF0aW9uSXRlbUNvbnRleHQoaXRlbSwgaXRlbXMsIGl0ZW1zLmxlbmd0aCwgaW5kZXgsIGl4KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2UgPiB0aGlzLm1heFBhZ2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGUodGhpcy5tYXhQYWdlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMub25SZWZyZXNoLmVtaXQodGhpcykpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==