@lenne.tech/ng-base 0.3.12 → 13.0.0

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 (206) hide show
  1. package/{esm2015/lenne.tech-ng-base.js → esm2020/lenne.tech-ng-base.mjs} +0 -0
  2. package/esm2020/lib/base/base.module.mjs +97 -0
  3. package/{esm2015/lib/base/classes/basic-user.class.js → esm2020/lib/base/classes/basic-user.class.mjs} +0 -0
  4. package/{esm2015/lib/base/classes/graphql-enum.class.js → esm2020/lib/base/classes/graphql-enum.class.mjs} +0 -0
  5. package/esm2020/lib/base/classes/graphql-meta.class.mjs +171 -0
  6. package/{esm2015/lib/base/classes/graphql-type.class.js → esm2020/lib/base/classes/graphql-type.class.mjs} +0 -0
  7. package/esm2020/lib/base/classes/helper.class.mjs +295 -0
  8. package/{esm2015/lib/base/classes/standard.class.js → esm2020/lib/base/classes/standard.class.mjs} +0 -0
  9. package/esm2020/lib/base/directives/context-menu.directive.mjs +109 -0
  10. package/esm2020/lib/base/directives/lazy-load.directive.mjs +45 -0
  11. package/esm2020/lib/base/directives/match-height.directive.mjs +79 -0
  12. package/esm2020/lib/base/directives/resizable.directive.mjs +90 -0
  13. package/{esm2015/lib/base/enums/comparison-operator.enum.js → esm2020/lib/base/enums/comparison-operator.enum.mjs} +0 -0
  14. package/{esm2015/lib/base/enums/graphql-request-type.enum.js → esm2020/lib/base/enums/graphql-request-type.enum.mjs} +0 -0
  15. package/{esm2015/lib/base/enums/logical-operator.enum.js → esm2020/lib/base/enums/logical-operator.enum.mjs} +0 -0
  16. package/{esm2015/lib/base/enums/sort-order.enum.js → esm2020/lib/base/enums/sort-order.enum.mjs} +0 -0
  17. package/{esm2015/lib/base/factories/apollo-options.factory.js → esm2020/lib/base/factories/apollo-options.factory.mjs} +0 -0
  18. package/esm2020/lib/base/guards/auth.guard.mjs +61 -0
  19. package/esm2020/lib/base/guards/can-deactivate.guard.mjs +16 -0
  20. package/esm2020/lib/base/guards/logout.guard.mjs +32 -0
  21. package/{esm2015/lib/base/index.js → esm2020/lib/base/index.mjs} +0 -0
  22. package/{esm2015/lib/base/interfaces/base-module-config.interface.js → esm2020/lib/base/interfaces/base-module-config.interface.mjs} +0 -0
  23. package/{esm2015/lib/base/interfaces/can-component-deactivate.interface.js → esm2020/lib/base/interfaces/can-component-deactivate.interface.mjs} +0 -0
  24. package/{esm2015/lib/base/interfaces/combined-filter-input.interface.js → esm2020/lib/base/interfaces/combined-filter-input.interface.mjs} +0 -0
  25. package/{esm2015/lib/base/interfaces/field-object.interface.js → esm2020/lib/base/interfaces/field-object.interface.mjs} +0 -0
  26. package/{esm2015/lib/base/interfaces/field.interface.js → esm2020/lib/base/interfaces/field.interface.mjs} +0 -0
  27. package/{esm2015/lib/base/interfaces/filter-input.interface.js → esm2020/lib/base/interfaces/filter-input.interface.mjs} +0 -0
  28. package/{esm2015/lib/base/interfaces/find-args.interface.js → esm2020/lib/base/interfaces/find-args.interface.mjs} +0 -0
  29. package/{esm2015/lib/base/interfaces/graphql-options.interface.js → esm2020/lib/base/interfaces/graphql-options.interface.mjs} +0 -0
  30. package/{esm2015/lib/base/interfaces/graphql-plus-options.interfacen.js → esm2020/lib/base/interfaces/graphql-plus-options.interfacen.mjs} +0 -0
  31. package/{esm2015/lib/base/interfaces/graphql-type-collection.interface.js → esm2020/lib/base/interfaces/graphql-type-collection.interface.mjs} +0 -0
  32. package/{esm2015/lib/base/interfaces/single-filter-input.interface.js → esm2020/lib/base/interfaces/single-filter-input.interface.mjs} +0 -0
  33. package/{esm2015/lib/base/interfaces/sort-input.interface.js → esm2020/lib/base/interfaces/sort-input.interface.mjs} +0 -0
  34. package/esm2020/lib/base/pipes/ellipses.pipe.mjs +22 -0
  35. package/esm2020/lib/base/pipes/safe-html.pipe.mjs +21 -0
  36. package/{esm2015/lib/base/public-api.js → esm2020/lib/base/public-api.mjs} +2 -1
  37. package/{esm2015/lib/base/services/auth.service.js → esm2020/lib/base/services/auth.service.mjs} +14 -17
  38. package/{esm2015/lib/base/services/fullscreen.service.js → esm2020/lib/base/services/fullscreen.service.mjs} +9 -8
  39. package/esm2020/lib/base/services/graphql-meta.service.mjs +123 -0
  40. package/esm2020/lib/base/services/graphql-plus.service.mjs +84 -0
  41. package/esm2020/lib/base/services/graphql.service.mjs +441 -0
  42. package/esm2020/lib/base/services/image.service.mjs +102 -0
  43. package/esm2020/lib/base/services/loader.service.mjs +29 -0
  44. package/esm2020/lib/base/services/scroll.service.mjs +179 -0
  45. package/esm2020/lib/base/services/seo.service.mjs +97 -0
  46. package/esm2020/lib/base/services/storage.service.mjs +132 -0
  47. package/esm2020/lib/base/services/ws.service.mjs +17 -0
  48. package/{esm2015/lib/base/types/storage.type.js → esm2020/lib/base/types/storage.type.mjs} +0 -0
  49. package/{esm2015/lib/base/validators/must-match.validator.js → esm2020/lib/base/validators/must-match.validator.mjs} +0 -0
  50. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  51. package/esm2020/src/lib/base/base.module.mjs +97 -0
  52. package/{esm2015/src/lib/base/classes/basic-user.class.js → esm2020/src/lib/base/classes/basic-user.class.mjs} +0 -0
  53. package/{esm2015/src/lib/base/classes/graphql-enum.class.js → esm2020/src/lib/base/classes/graphql-enum.class.mjs} +0 -0
  54. package/esm2020/src/lib/base/classes/graphql-meta.class.mjs +171 -0
  55. package/{esm2015/src/lib/base/classes/graphql-type.class.js → esm2020/src/lib/base/classes/graphql-type.class.mjs} +0 -0
  56. package/esm2020/src/lib/base/classes/helper.class.mjs +295 -0
  57. package/{esm2015/src/lib/base/classes/standard.class.js → esm2020/src/lib/base/classes/standard.class.mjs} +0 -0
  58. package/esm2020/src/lib/base/directives/context-menu.directive.mjs +109 -0
  59. package/esm2020/src/lib/base/directives/lazy-load.directive.mjs +45 -0
  60. package/esm2020/src/lib/base/directives/match-height.directive.mjs +79 -0
  61. package/esm2020/src/lib/base/directives/resizable.directive.mjs +90 -0
  62. package/{esm2015/src/lib/base/enums/comparison-operator.enum.js → esm2020/src/lib/base/enums/comparison-operator.enum.mjs} +0 -0
  63. package/{esm2015/src/lib/base/enums/graphql-request-type.enum.js → esm2020/src/lib/base/enums/graphql-request-type.enum.mjs} +0 -0
  64. package/{esm2015/src/lib/base/enums/logical-operator.enum.js → esm2020/src/lib/base/enums/logical-operator.enum.mjs} +0 -0
  65. package/{esm2015/src/lib/base/enums/sort-order.enum.js → esm2020/src/lib/base/enums/sort-order.enum.mjs} +0 -0
  66. package/{esm2015/src/lib/base/factories/apollo-options.factory.js → esm2020/src/lib/base/factories/apollo-options.factory.mjs} +0 -0
  67. package/esm2020/src/lib/base/guards/auth.guard.mjs +61 -0
  68. package/esm2020/src/lib/base/guards/can-deactivate.guard.mjs +16 -0
  69. package/esm2020/src/lib/base/guards/logout.guard.mjs +32 -0
  70. package/{esm2015/src/lib/base/interfaces/base-module-config.interface.js → esm2020/src/lib/base/interfaces/base-module-config.interface.mjs} +0 -0
  71. package/{esm2015/src/lib/base/interfaces/can-component-deactivate.interface.js → esm2020/src/lib/base/interfaces/can-component-deactivate.interface.mjs} +0 -0
  72. package/{esm2015/src/lib/base/interfaces/combined-filter-input.interface.js → esm2020/src/lib/base/interfaces/combined-filter-input.interface.mjs} +0 -0
  73. package/{esm2015/src/lib/base/interfaces/field-object.interface.js → esm2020/src/lib/base/interfaces/field-object.interface.mjs} +0 -0
  74. package/{esm2015/src/lib/base/interfaces/field.interface.js → esm2020/src/lib/base/interfaces/field.interface.mjs} +0 -0
  75. package/{esm2015/src/lib/base/interfaces/filter-input.interface.js → esm2020/src/lib/base/interfaces/filter-input.interface.mjs} +0 -0
  76. package/{esm2015/src/lib/base/interfaces/find-args.interface.js → esm2020/src/lib/base/interfaces/find-args.interface.mjs} +0 -0
  77. package/{esm2015/src/lib/base/interfaces/graphql-options.interface.js → esm2020/src/lib/base/interfaces/graphql-options.interface.mjs} +0 -0
  78. package/{esm2015/src/lib/base/interfaces/graphql-plus-options.interfacen.js → esm2020/src/lib/base/interfaces/graphql-plus-options.interfacen.mjs} +0 -0
  79. package/{esm2015/src/lib/base/interfaces/graphql-type-collection.interface.js → esm2020/src/lib/base/interfaces/graphql-type-collection.interface.mjs} +0 -0
  80. package/{esm2015/src/lib/base/interfaces/single-filter-input.interface.js → esm2020/src/lib/base/interfaces/single-filter-input.interface.mjs} +0 -0
  81. package/{esm2015/src/lib/base/interfaces/sort-input.interface.js → esm2020/src/lib/base/interfaces/sort-input.interface.mjs} +0 -0
  82. package/{esm2015/src/lib/base/lenne.tech-ng-base-src-lib-base.js → esm2020/src/lib/base/lenne.tech-ng-base-src-lib-base.mjs} +1 -2
  83. package/esm2020/src/lib/base/pipes/ellipses.pipe.mjs +22 -0
  84. package/esm2020/src/lib/base/pipes/safe-html.pipe.mjs +21 -0
  85. package/{esm2015/src/lib/base/public-api.js → esm2020/src/lib/base/public-api.mjs} +2 -1
  86. package/{esm2015/src/lib/base/services/auth.service.js → esm2020/src/lib/base/services/auth.service.mjs} +14 -17
  87. package/{esm2015/src/lib/base/services/fullscreen.service.js → esm2020/src/lib/base/services/fullscreen.service.mjs} +9 -8
  88. package/esm2020/src/lib/base/services/graphql-meta.service.mjs +123 -0
  89. package/esm2020/src/lib/base/services/graphql-plus.service.mjs +84 -0
  90. package/esm2020/src/lib/base/services/graphql.service.mjs +441 -0
  91. package/esm2020/src/lib/base/services/image.service.mjs +102 -0
  92. package/esm2020/src/lib/base/services/loader.service.mjs +29 -0
  93. package/esm2020/src/lib/base/services/scroll.service.mjs +179 -0
  94. package/esm2020/src/lib/base/services/seo.service.mjs +97 -0
  95. package/esm2020/src/lib/base/services/storage.service.mjs +132 -0
  96. package/esm2020/src/lib/base/services/ws.service.mjs +17 -0
  97. package/{esm2015/src/lib/base/types/storage.type.js → esm2020/src/lib/base/types/storage.type.mjs} +0 -0
  98. package/{esm2015/src/lib/base/validators/must-match.validator.js → esm2020/src/lib/base/validators/must-match.validator.mjs} +0 -0
  99. package/fesm2015/{lenne.tech-ng-base-src-lib-base.js → lenne.tech-ng-base-src-lib-base.mjs} +241 -198
  100. package/fesm2015/lenne.tech-ng-base-src-lib-base.mjs.map +1 -0
  101. package/fesm2015/{lenne.tech-ng-base.js → lenne.tech-ng-base.mjs} +241 -198
  102. package/fesm2015/lenne.tech-ng-base.mjs.map +1 -0
  103. package/fesm2020/lenne.tech-ng-base-src-lib-base.mjs +2524 -0
  104. package/fesm2020/lenne.tech-ng-base-src-lib-base.mjs.map +1 -0
  105. package/fesm2020/lenne.tech-ng-base.mjs +2526 -0
  106. package/fesm2020/lenne.tech-ng-base.mjs.map +1 -0
  107. package/lenne.tech-ng-base.d.ts +1 -0
  108. package/lib/base/base.module.d.ts +11 -1
  109. package/lib/base/classes/graphql-meta.class.d.ts +2 -4
  110. package/lib/base/directives/context-menu.directive.d.ts +3 -0
  111. package/lib/base/directives/lazy-load.directive.d.ts +3 -0
  112. package/lib/base/directives/match-height.directive.d.ts +3 -0
  113. package/lib/base/directives/resizable.directive.d.ts +3 -0
  114. package/lib/base/guards/auth.guard.d.ts +3 -0
  115. package/lib/base/guards/can-deactivate.guard.d.ts +3 -0
  116. package/lib/base/guards/logout.guard.d.ts +3 -0
  117. package/lib/base/pipes/ellipses.pipe.d.ts +3 -0
  118. package/lib/base/pipes/safe-html.pipe.d.ts +3 -0
  119. package/lib/base/public-api.d.ts +1 -0
  120. package/lib/base/services/auth.service.d.ts +3 -0
  121. package/lib/base/services/fullscreen.service.d.ts +3 -0
  122. package/lib/base/services/graphql-meta.service.d.ts +3 -0
  123. package/lib/base/services/graphql-plus.service.d.ts +3 -0
  124. package/lib/base/services/graphql.service.d.ts +3 -0
  125. package/lib/base/services/image.service.d.ts +3 -0
  126. package/lib/base/services/loader.service.d.ts +3 -0
  127. package/lib/base/services/scroll.service.d.ts +3 -0
  128. package/lib/base/services/seo.service.d.ts +3 -0
  129. package/lib/base/services/storage.service.d.ts +3 -0
  130. package/lib/base/services/ws.service.d.ts +3 -0
  131. package/package.json +34 -14
  132. package/src/lib/base/base.module.d.ts +11 -1
  133. package/src/lib/base/classes/graphql-meta.class.d.ts +2 -4
  134. package/src/lib/base/directives/context-menu.directive.d.ts +3 -0
  135. package/src/lib/base/directives/lazy-load.directive.d.ts +3 -0
  136. package/src/lib/base/directives/match-height.directive.d.ts +3 -0
  137. package/src/lib/base/directives/resizable.directive.d.ts +3 -0
  138. package/src/lib/base/guards/auth.guard.d.ts +3 -0
  139. package/src/lib/base/guards/can-deactivate.guard.d.ts +3 -0
  140. package/src/lib/base/guards/logout.guard.d.ts +3 -0
  141. package/src/lib/base/lenne.tech-ng-base-src-lib-base.d.ts +1 -1
  142. package/src/lib/base/package.json +5 -6
  143. package/src/lib/base/pipes/ellipses.pipe.d.ts +3 -0
  144. package/src/lib/base/pipes/safe-html.pipe.d.ts +3 -0
  145. package/src/lib/base/public-api.d.ts +1 -0
  146. package/src/lib/base/services/auth.service.d.ts +3 -0
  147. package/src/lib/base/services/fullscreen.service.d.ts +3 -0
  148. package/src/lib/base/services/graphql-meta.service.d.ts +3 -0
  149. package/src/lib/base/services/graphql-plus.service.d.ts +3 -0
  150. package/src/lib/base/services/graphql.service.d.ts +3 -0
  151. package/src/lib/base/services/image.service.d.ts +3 -0
  152. package/src/lib/base/services/loader.service.d.ts +3 -0
  153. package/src/lib/base/services/scroll.service.d.ts +3 -0
  154. package/src/lib/base/services/seo.service.d.ts +3 -0
  155. package/src/lib/base/services/storage.service.d.ts +3 -0
  156. package/src/lib/base/services/ws.service.d.ts +3 -0
  157. package/bundles/lenne.tech-ng-base-src-lib-base.umd.js +0 -3152
  158. package/bundles/lenne.tech-ng-base-src-lib-base.umd.js.map +0 -1
  159. package/bundles/lenne.tech-ng-base.umd.js +0 -3153
  160. package/bundles/lenne.tech-ng-base.umd.js.map +0 -1
  161. package/esm2015/lib/base/base.module.js +0 -66
  162. package/esm2015/lib/base/classes/graphql-meta.class.js +0 -156
  163. package/esm2015/lib/base/classes/helper.class.js +0 -290
  164. package/esm2015/lib/base/directives/context-menu.directive.js +0 -104
  165. package/esm2015/lib/base/directives/lazy-load.directive.js +0 -43
  166. package/esm2015/lib/base/directives/match-height.directive.js +0 -78
  167. package/esm2015/lib/base/directives/resizable.directive.js +0 -89
  168. package/esm2015/lib/base/guards/auth.guard.js +0 -61
  169. package/esm2015/lib/base/guards/can-deactivate.guard.js +0 -13
  170. package/esm2015/lib/base/guards/logout.guard.js +0 -33
  171. package/esm2015/lib/base/pipes/ellipses.pipe.js +0 -18
  172. package/esm2015/lib/base/pipes/safe-html.pipe.js +0 -20
  173. package/esm2015/lib/base/services/graphql-meta.service.js +0 -116
  174. package/esm2015/lib/base/services/graphql-plus.service.js +0 -90
  175. package/esm2015/lib/base/services/graphql.service.js +0 -423
  176. package/esm2015/lib/base/services/image.service.js +0 -99
  177. package/esm2015/lib/base/services/loader.service.js +0 -27
  178. package/esm2015/lib/base/services/scroll.service.js +0 -172
  179. package/esm2015/lib/base/services/seo.service.js +0 -100
  180. package/esm2015/lib/base/services/storage.service.js +0 -131
  181. package/esm2015/lib/base/services/ws.service.js +0 -16
  182. package/esm2015/src/lib/base/base.module.js +0 -66
  183. package/esm2015/src/lib/base/classes/graphql-meta.class.js +0 -156
  184. package/esm2015/src/lib/base/classes/helper.class.js +0 -290
  185. package/esm2015/src/lib/base/directives/context-menu.directive.js +0 -104
  186. package/esm2015/src/lib/base/directives/lazy-load.directive.js +0 -43
  187. package/esm2015/src/lib/base/directives/match-height.directive.js +0 -78
  188. package/esm2015/src/lib/base/directives/resizable.directive.js +0 -89
  189. package/esm2015/src/lib/base/guards/auth.guard.js +0 -61
  190. package/esm2015/src/lib/base/guards/can-deactivate.guard.js +0 -13
  191. package/esm2015/src/lib/base/guards/logout.guard.js +0 -33
  192. package/esm2015/src/lib/base/pipes/ellipses.pipe.js +0 -18
  193. package/esm2015/src/lib/base/pipes/safe-html.pipe.js +0 -20
  194. package/esm2015/src/lib/base/services/graphql-meta.service.js +0 -116
  195. package/esm2015/src/lib/base/services/graphql-plus.service.js +0 -90
  196. package/esm2015/src/lib/base/services/graphql.service.js +0 -423
  197. package/esm2015/src/lib/base/services/image.service.js +0 -99
  198. package/esm2015/src/lib/base/services/loader.service.js +0 -27
  199. package/esm2015/src/lib/base/services/scroll.service.js +0 -172
  200. package/esm2015/src/lib/base/services/seo.service.js +0 -100
  201. package/esm2015/src/lib/base/services/storage.service.js +0 -131
  202. package/esm2015/src/lib/base/services/ws.service.js +0 -16
  203. package/fesm2015/lenne.tech-ng-base-src-lib-base.js.map +0 -1
  204. package/fesm2015/lenne.tech-ng-base.js.map +0 -1
  205. package/lenne.tech-ng-base.metadata.json +0 -1
  206. package/src/lib/base/lenne.tech-ng-base-src-lib-base.metadata.json +0 -1
@@ -1,43 +0,0 @@
1
- import { Directive, ElementRef, HostBinding, Input } from '@angular/core';
2
- /**
3
- * Directive for lazy loading images
4
- */
5
- export class LazyLoadDirective {
6
- constructor(el) {
7
- this.el = el;
8
- this.srcAttr = null;
9
- }
10
- ngAfterViewInit() {
11
- this.canLazyLoad() ? this.lazyLoadImage() : this.loadImage();
12
- }
13
- canLazyLoad() {
14
- return window && 'IntersectionObserver' in window;
15
- }
16
- lazyLoadImage() {
17
- const obs = new IntersectionObserver((entries) => {
18
- entries.forEach(({ isIntersecting }) => {
19
- if (isIntersecting) {
20
- this.loadImage();
21
- obs.unobserve(this.el.nativeElement);
22
- }
23
- });
24
- });
25
- obs.observe(this.el.nativeElement);
26
- }
27
- loadImage() {
28
- this.srcAttr = this.src;
29
- }
30
- }
31
- LazyLoadDirective.decorators = [
32
- { type: Directive, args: [{
33
- selector: 'img[ltLazyLoad]',
34
- },] }
35
- ];
36
- LazyLoadDirective.ctorParameters = () => [
37
- { type: ElementRef }
38
- ];
39
- LazyLoadDirective.propDecorators = {
40
- srcAttr: [{ type: HostBinding, args: ['attr.src',] }],
41
- src: [{ type: Input }]
42
- };
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2RpcmVjdGl2ZXMvbGF6eS1sb2FkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6Rjs7R0FFRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFJNUIsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFIVCxZQUFPLEdBQUcsSUFBSSxDQUFDO0lBR0gsQ0FBQztJQUV0QyxlQUFlO1FBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0lBRU8sV0FBVztRQUNqQixPQUFPLE1BQU0sSUFBSSxzQkFBc0IsSUFBSSxNQUFNLENBQUM7SUFDcEQsQ0FBQztJQUVPLGFBQWE7UUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQy9DLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLGNBQWMsRUFBQyxFQUFFLEVBQUU7Z0JBQ25DLElBQUksY0FBYyxFQUFFO29CQUNsQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2pCLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDdEM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzFCLENBQUM7OztZQS9CRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjthQUM1Qjs7O1lBUGtDLFVBQVU7OztzQkFTMUMsV0FBVyxTQUFDLFVBQVU7a0JBQ3RCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSBmb3IgbGF6eSBsb2FkaW5nIGltYWdlc1xuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpbWdbbHRMYXp5TG9hZF0nLFxufSlcbmV4cG9ydCBjbGFzcyBMYXp5TG9hZERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuc3JjJykgc3JjQXR0ciA9IG51bGw7XG4gIEBJbnB1dCgpIHNyYzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2FuTGF6eUxvYWQoKSA/IHRoaXMubGF6eUxvYWRJbWFnZSgpIDogdGhpcy5sb2FkSW1hZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuTGF6eUxvYWQoKSB7XG4gICAgcmV0dXJuIHdpbmRvdyAmJiAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdztcbiAgfVxuXG4gIHByaXZhdGUgbGF6eUxvYWRJbWFnZSgpIHtcbiAgICBjb25zdCBvYnMgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoe2lzSW50ZXJzZWN0aW5nfSkgPT4ge1xuICAgICAgICBpZiAoaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLmxvYWRJbWFnZSgpO1xuICAgICAgICAgIG9icy51bm9ic2VydmUodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgb2JzLm9ic2VydmUodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEltYWdlKCkge1xuICAgIHRoaXMuc3JjQXR0ciA9IHRoaXMuc3JjO1xuICB9XG59XG4iXX0=
@@ -1,78 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Directive, ElementRef, HostListener, Inject, Input, PLATFORM_ID } from '@angular/core';
3
- import { ImageService } from '../services/image.service';
4
- import { isPlatformBrowser } from '@angular/common';
5
- /**
6
- * Set same height (maximum) to different elements
7
- */
8
- export class MatchHeightDirective {
9
- constructor(el, imageService, platformId) {
10
- this.el = el;
11
- this.imageService = imageService;
12
- // Replace lazy loading images with immediate loading images
13
- this.loadImages = true;
14
- this.isBrowser = isPlatformBrowser(platformId);
15
- }
16
- onResize() {
17
- this.matchHeight(this.el.nativeElement, this.ltMatchHeight);
18
- }
19
- ngOnInit() {
20
- this.matchHeight(this.el.nativeElement, this.ltMatchHeight);
21
- }
22
- matchHeight(parent, target) {
23
- return __awaiter(this, void 0, void 0, function* () {
24
- if (!parent) {
25
- return;
26
- }
27
- let classNames;
28
- if (!Array.isArray(target)) {
29
- classNames = [target];
30
- }
31
- else {
32
- classNames = target;
33
- }
34
- for (const className of classNames) {
35
- // find all child structureElements with the selected class name
36
- const children = parent.getElementsByClassName(className);
37
- if (!children || children.length < 2) {
38
- continue;
39
- }
40
- // Load images of children
41
- if (this.loadImages) {
42
- yield this.imageService.preLoadImages({ elements: children });
43
- }
44
- // reset all children height
45
- Array.from(children).forEach((element) => {
46
- element.style.height = 'initial';
47
- });
48
- // get all the child structureElements heights
49
- const itemHeights = Array.from(children).map((element) => {
50
- if (element.getBoundingClientRect) {
51
- return element.getBoundingClientRect().height;
52
- }
53
- return 0;
54
- });
55
- // find out the tallest one
56
- const maxHeight = itemHeights.reduce((prev, curr) => (curr > prev ? curr : prev), 0);
57
- // update the child structureElements height to the tallest one
58
- Array.from(children).forEach((element) => (element.style.height = `${maxHeight}px`));
59
- }
60
- });
61
- }
62
- }
63
- MatchHeightDirective.decorators = [
64
- { type: Directive, args: [{
65
- selector: '[ltMatchHeight]',
66
- },] }
67
- ];
68
- MatchHeightDirective.ctorParameters = () => [
69
- { type: ElementRef },
70
- { type: ImageService },
71
- { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
72
- ];
73
- MatchHeightDirective.propDecorators = {
74
- ltMatchHeight: [{ type: Input }],
75
- loadImages: [{ type: Input }],
76
- onResize: [{ type: HostListener, args: ['window:resize',] }]
77
- };
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtaGVpZ2h0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2RpcmVjdGl2ZXMvbWF0Y2gtaGVpZ2h0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRDs7R0FFRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFZL0IsWUFBc0IsRUFBYyxFQUFZLFlBQTBCLEVBQXVCLFVBQWtCO1FBQTdGLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBWSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVAxRSw0REFBNEQ7UUFFNUQsZUFBVSxHQUFHLElBQUksQ0FBQztRQU1oQixJQUFJLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFHRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUssV0FBVyxDQUFDLE1BQW1CLEVBQUUsTUFBeUI7O1lBQzlELElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsT0FBTzthQUNSO1lBRUQsSUFBSSxVQUFVLENBQUM7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDMUIsVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0wsVUFBVSxHQUFHLE1BQU0sQ0FBQzthQUNyQjtZQUVELEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO2dCQUNsQyxnRUFBZ0U7Z0JBQ2hFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFMUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDcEMsU0FBUztpQkFDVjtnQkFFRCwwQkFBMEI7Z0JBQzFCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDbkIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2lCQUMvRDtnQkFFRCw0QkFBNEI7Z0JBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBb0IsRUFBRSxFQUFFO29CQUNwRCxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7Z0JBQ25DLENBQUMsQ0FBQyxDQUFDO2dCQUVILDhDQUE4QztnQkFDOUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDdkQsSUFBSSxPQUFPLENBQUMscUJBQXFCLEVBQUU7d0JBQ2pDLE9BQU8sT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDO3FCQUMvQztvQkFDRCxPQUFPLENBQUMsQ0FBQztnQkFDWCxDQUFDLENBQUMsQ0FBQztnQkFFSCwyQkFBMkI7Z0JBQzNCLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXJGLCtEQUErRDtnQkFDL0QsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ25HO1FBQ0gsQ0FBQztLQUFBOzs7WUF4RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7YUFDNUI7OztZQVRtQixVQUFVO1lBQ3JCLFlBQVk7eUNBcUIwRCxNQUFNLFNBQUMsV0FBVzs7OzRCQVY5RixLQUFLO3lCQUlMLEtBQUs7dUJBVUwsWUFBWSxTQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaW1hZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogU2V0IHNhbWUgaGVpZ2h0IChtYXhpbXVtKSB0byBkaWZmZXJlbnQgZWxlbWVudHNcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2x0TWF0Y2hIZWlnaHRdJyxcbn0pXG5leHBvcnQgY2xhc3MgTWF0Y2hIZWlnaHREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyBjbGFzcyBuYW1lIHRvIG1hdGNoIGhlaWdodFxuICBASW5wdXQoKVxuICBsdE1hdGNoSGVpZ2h0OiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAvLyBSZXBsYWNlIGxhenkgbG9hZGluZyBpbWFnZXMgd2l0aCBpbW1lZGlhdGUgbG9hZGluZyBpbWFnZXNcbiAgQElucHV0KClcbiAgbG9hZEltYWdlcyA9IHRydWU7XG5cbiAgLy8gV2V0aGVyIGN1cnJlbnQgcGxhdGZvcm0gaXMgYSBicm93c2VyXG4gIHJlYWRvbmx5IGlzQnJvd3NlcjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWw6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCBpbWFnZVNlcnZpY2U6IEltYWdlU2VydmljZSwgQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5pc0Jyb3dzZXIgPSBpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBvblJlc2l6ZSgpIHtcbiAgICB0aGlzLm1hdGNoSGVpZ2h0KHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5sdE1hdGNoSGVpZ2h0KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubWF0Y2hIZWlnaHQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmx0TWF0Y2hIZWlnaHQpO1xuICB9XG5cbiAgYXN5bmMgbWF0Y2hIZWlnaHQocGFyZW50OiBIVE1MRWxlbWVudCwgdGFyZ2V0OiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGlmICghcGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNsYXNzTmFtZXM7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRhcmdldCkpIHtcbiAgICAgIGNsYXNzTmFtZXMgPSBbdGFyZ2V0XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3NOYW1lcyA9IHRhcmdldDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNsYXNzTmFtZSBvZiBjbGFzc05hbWVzKSB7XG4gICAgICAvLyBmaW5kIGFsbCBjaGlsZCBzdHJ1Y3R1cmVFbGVtZW50cyB3aXRoIHRoZSBzZWxlY3RlZCBjbGFzcyBuYW1lXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNsYXNzTmFtZSk7XG5cbiAgICAgIGlmICghY2hpbGRyZW4gfHwgY2hpbGRyZW4ubGVuZ3RoIDwgMikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gTG9hZCBpbWFnZXMgb2YgY2hpbGRyZW5cbiAgICAgIGlmICh0aGlzLmxvYWRJbWFnZXMpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbWFnZVNlcnZpY2UucHJlTG9hZEltYWdlcyh7IGVsZW1lbnRzOiBjaGlsZHJlbiB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVzZXQgYWxsIGNoaWxkcmVuIGhlaWdodFxuICAgICAgQXJyYXkuZnJvbShjaGlsZHJlbikuZm9yRWFjaCgoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnaW5pdGlhbCc7XG4gICAgICB9KTtcblxuICAgICAgLy8gZ2V0IGFsbCB0aGUgY2hpbGQgc3RydWN0dXJlRWxlbWVudHMgaGVpZ2h0c1xuICAgICAgY29uc3QgaXRlbUhlaWdodHMgPSBBcnJheS5mcm9tKGNoaWxkcmVuKS5tYXAoKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSB7XG4gICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIGZpbmQgb3V0IHRoZSB0YWxsZXN0IG9uZVxuICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gaXRlbUhlaWdodHMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoY3VyciA+IHByZXYgPyBjdXJyIDogcHJldiksIDApO1xuXG4gICAgICAvLyB1cGRhdGUgdGhlIGNoaWxkIHN0cnVjdHVyZUVsZW1lbnRzIGhlaWdodCB0byB0aGUgdGFsbGVzdCBvbmVcbiAgICAgIEFycmF5LmZyb20oY2hpbGRyZW4pLmZvckVhY2goKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiAoZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHttYXhIZWlnaHR9cHhgKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,89 +0,0 @@
1
- import { Directive, ElementRef, Input } from '@angular/core';
2
- /**
3
- * Reszise detection
4
- * (inpsired by: https://stackblitz.com/edit/angular-resizable)
5
- */
6
- export class ResizableDirective {
7
- constructor(el) {
8
- this.el = el;
9
- this.resizableGrabWidth = 8;
10
- this.resizableMinWidth = 10;
11
- this.dragging = false;
12
- }
13
- ngOnInit() {
14
- this.addListenerToDocument();
15
- this.addListenerToElement();
16
- }
17
- mouseMoveG(evt) {
18
- if (!this.dragging) {
19
- return;
20
- }
21
- this.newWidth(evt.clientX - this.el.nativeElement.offsetLeft);
22
- evt.stopPropagation();
23
- }
24
- newWidth(wid) {
25
- const result = Math.max(this.resizableMinWidth, wid);
26
- this.el.nativeElement.style.width = result + 'px';
27
- }
28
- mouseDown(evt) {
29
- if (this.inDragRegion(evt)) {
30
- this.dragging = true;
31
- this.preventGlobalMouseEvents();
32
- evt.stopPropagation();
33
- }
34
- }
35
- restoreGlobalMouseEvents() {
36
- document.body.style['pointer-events'] = 'auto';
37
- }
38
- mouseUpG(evt) {
39
- if (!this.dragging) {
40
- return;
41
- }
42
- this.restoreGlobalMouseEvents();
43
- this.dragging = false;
44
- evt.stopPropagation();
45
- }
46
- mouseMove(evt) {
47
- if (this.inDragRegion(evt) || this.dragging) {
48
- this.el.nativeElement.style.cursor = 'col-resize';
49
- }
50
- else {
51
- this.el.nativeElement.style.cursor = 'default';
52
- }
53
- }
54
- preventGlobalMouseEvents() {
55
- document.body.style['pointer-events'] = 'none';
56
- }
57
- inDragRegion(evt) {
58
- return this.el.nativeElement.clientWidth - evt.clientX + this.el.nativeElement.offsetLeft < this.resizableGrabWidth;
59
- }
60
- addListenerToDocument() {
61
- document.addEventListener('mousemove', (e) => {
62
- this.mouseMoveG(e);
63
- }, true);
64
- document.addEventListener('mouseup', (e) => {
65
- this.mouseUpG(e);
66
- }, true);
67
- }
68
- addListenerToElement() {
69
- this.el.nativeElement.addEventListener('mousedown', (e) => {
70
- this.mouseDown(e);
71
- }, true);
72
- this.el.nativeElement.addEventListener('mousemove', (e) => {
73
- this.mouseMove(e);
74
- }, true);
75
- }
76
- }
77
- ResizableDirective.decorators = [
78
- { type: Directive, args: [{
79
- selector: '[ltResizable]',
80
- },] }
81
- ];
82
- ResizableDirective.ctorParameters = () => [
83
- { type: ElementRef }
84
- ];
85
- ResizableDirective.propDecorators = {
86
- resizableGrabWidth: [{ type: Input }],
87
- resizableMinWidth: [{ type: Input }]
88
- };
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2RpcmVjdGl2ZXMvcmVzaXphYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFckU7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUx6Qix1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDdkIsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBRWhDLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFFb0IsQ0FBQztJQUV0QyxRQUFRO1FBQ04sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFHO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlELEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQUc7UUFDVixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDcEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFHO1FBQ1gsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDakQsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFVO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQUc7UUFDWCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMzQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQztTQUNuRDthQUFNO1lBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ2pELENBQUM7SUFFRCxZQUFZLENBQUMsR0FBRztRQUNkLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUN0SCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDdkIsV0FBVyxFQUNYLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsRUFDRCxJQUFJLENBQ0wsQ0FBQztRQUVGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDdkIsU0FBUyxFQUNULENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUMsRUFDRCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQ3BDLFdBQVcsRUFDWCxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixDQUFDLEVBQ0QsSUFBSSxDQUNMLENBQUM7UUFFRixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FDcEMsV0FBVyxFQUNYLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLENBQUMsRUFDRCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7OztZQXBHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7YUFDMUI7OztZQVJtQixVQUFVOzs7aUNBVTNCLEtBQUs7Z0NBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFJlc3ppc2UgZGV0ZWN0aW9uXG4gKiAoaW5wc2lyZWQgYnk6IGh0dHBzOi8vc3RhY2tibGl0ei5jb20vZWRpdC9hbmd1bGFyLXJlc2l6YWJsZSlcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2x0UmVzaXphYmxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6YWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHJlc2l6YWJsZUdyYWJXaWR0aCA9IDg7XG4gIEBJbnB1dCgpIHJlc2l6YWJsZU1pbldpZHRoID0gMTA7XG5cbiAgZHJhZ2dpbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkTGlzdGVuZXJUb0RvY3VtZW50KCk7XG4gICAgdGhpcy5hZGRMaXN0ZW5lclRvRWxlbWVudCgpO1xuICB9XG5cbiAgbW91c2VNb3ZlRyhldnQpIHtcbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5uZXdXaWR0aChldnQuY2xpZW50WCAtIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0KTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBuZXdXaWR0aCh3aWQpIHtcbiAgICBjb25zdCByZXN1bHQgPSBNYXRoLm1heCh0aGlzLnJlc2l6YWJsZU1pbldpZHRoLCB3aWQpO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHJlc3VsdCArICdweCc7XG4gIH1cblxuICBtb3VzZURvd24oZXZ0KSB7XG4gICAgaWYgKHRoaXMuaW5EcmFnUmVnaW9uKGV2dCkpIHtcbiAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5wcmV2ZW50R2xvYmFsTW91c2VFdmVudHMoKTtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICByZXN0b3JlR2xvYmFsTW91c2VFdmVudHMoKSB7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZVsncG9pbnRlci1ldmVudHMnXSA9ICdhdXRvJztcbiAgfVxuXG4gIG1vdXNlVXBHKGV2dDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yZXN0b3JlR2xvYmFsTW91c2VFdmVudHMoKTtcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgbW91c2VNb3ZlKGV2dCkge1xuICAgIGlmICh0aGlzLmluRHJhZ1JlZ2lvbihldnQpIHx8IHRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnY29sLXJlc2l6ZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnZGVmYXVsdCc7XG4gICAgfVxuICB9XG5cbiAgcHJldmVudEdsb2JhbE1vdXNlRXZlbnRzKCkge1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGVbJ3BvaW50ZXItZXZlbnRzJ10gPSAnbm9uZSc7XG4gIH1cblxuICBpbkRyYWdSZWdpb24oZXZ0KSB7XG4gICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCAtIGV2dC5jbGllbnRYICsgdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgPCB0aGlzLnJlc2l6YWJsZUdyYWJXaWR0aDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTGlzdGVuZXJUb0RvY3VtZW50KCkge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnbW91c2Vtb3ZlJyxcbiAgICAgIChlKSA9PiB7XG4gICAgICAgIHRoaXMubW91c2VNb3ZlRyhlKTtcbiAgICAgIH0sXG4gICAgICB0cnVlXG4gICAgKTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnbW91c2V1cCcsXG4gICAgICAoZSkgPT4ge1xuICAgICAgICB0aGlzLm1vdXNlVXBHKGUpO1xuICAgICAgfSxcbiAgICAgIHRydWVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRMaXN0ZW5lclRvRWxlbWVudCgpIHtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdtb3VzZWRvd24nLFxuICAgICAgKGUpID0+IHtcbiAgICAgICAgdGhpcy5tb3VzZURvd24oZSk7XG4gICAgICB9LFxuICAgICAgdHJ1ZVxuICAgICk7XG5cbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdtb3VzZW1vdmUnLFxuICAgICAgKGUpID0+IHtcbiAgICAgICAgdGhpcy5tb3VzZU1vdmUoZSk7XG4gICAgICB9LFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,61 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { Observable } from 'rxjs';
4
- import { AuthService } from '../services/auth.service';
5
- import { BASE_MODULE_CONFIG } from '../interfaces/base-module-config.interface';
6
- /**
7
- * Authentication guard
8
- */
9
- export class AuthGuard {
10
- /**
11
- * Imports
12
- */
13
- constructor(router, authService, moduleConfig) {
14
- this.router = router;
15
- this.authService = authService;
16
- this.moduleConfig = moduleConfig;
17
- }
18
- /**
19
- * Can activate main route
20
- */
21
- canActivate(route, state) {
22
- return new Observable((subscriber) => {
23
- var _a, _b, _c, _d;
24
- let allowed = false;
25
- const opposite = ((_a = route === null || route === void 0 ? void 0 : route.data) === null || _a === void 0 ? void 0 : _a.opposite) ? (_b = route === null || route === void 0 ? void 0 : route.data) === null || _b === void 0 ? void 0 : _b.opposite : false;
26
- const redirectUrl = ((_c = route === null || route === void 0 ? void 0 : route.data) === null || _c === void 0 ? void 0 : _c.redirectUrl) ? route.data.redirectUrl : this.moduleConfig.authGuardRedirectUrl;
27
- if (this.authService.token && !opposite) {
28
- if (route.data.allowedRole) {
29
- const user = this.authService.currentUser;
30
- allowed = (_d = user === null || user === void 0 ? void 0 : user.roles) === null || _d === void 0 ? void 0 : _d.includes(route.data.allowedRole);
31
- }
32
- else {
33
- allowed = true;
34
- }
35
- }
36
- else if (!this.authService.token && opposite) {
37
- allowed = true;
38
- }
39
- if (!allowed) {
40
- this.router.navigate([redirectUrl]);
41
- }
42
- subscriber.next(allowed);
43
- subscriber.complete();
44
- });
45
- }
46
- /**
47
- * Can activate child route
48
- */
49
- canActivateChild(route, state) {
50
- return this.canActivate(route, state);
51
- }
52
- }
53
- AuthGuard.decorators = [
54
- { type: Injectable }
55
- ];
56
- AuthGuard.ctorParameters = () => [
57
- { type: Router },
58
- { type: AuthService },
59
- { type: undefined, decorators: [{ type: Inject, args: [BASE_MODULE_CONFIG,] }] }
60
- ];
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL2d1YXJkcy9hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBeUQsTUFBTSxFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSw0Q0FBNEMsQ0FBQztBQUVsRzs7R0FFRztBQUVILE1BQU0sT0FBTyxTQUFTO0lBRXBCOztPQUVHO0lBQ0gsWUFDVSxNQUFjLEVBQ2QsV0FBd0IsRUFDSSxZQUE4QjtRQUYxRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDSSxpQkFBWSxHQUFaLFlBQVksQ0FBa0I7SUFDakUsQ0FBQztJQUVKOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDbkUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFOztZQUNuQyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDcEIsTUFBTSxRQUFRLEdBQUcsQ0FBQSxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxJQUFJLDBDQUFFLFFBQVEsRUFBQyxDQUFDLENBQUMsTUFBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsSUFBSSwwQ0FBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUN2RSxNQUFNLFdBQVcsR0FBRyxDQUFBLE1BQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLElBQUksMENBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztZQUUvRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN2QyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUMxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztvQkFDMUMsT0FBTyxHQUFHLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLEtBQUssMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ3pEO3FCQUFNO29CQUNMLE9BQU8sR0FBRyxJQUFJLENBQUM7aUJBQ2hCO2FBQ0Y7aUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRTtnQkFDOUMsT0FBTyxHQUFHLElBQUksQ0FBQzthQUNoQjtZQUVELElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2FBQ3JDO1lBRUQsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7O1lBOUNGLFVBQVU7OztZQVJxRCxNQUFNO1lBRTdELFdBQVc7NENBZWYsTUFBTSxTQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBCQVNFX01PRFVMRV9DT05GSUcsIEJhc2VNb2R1bGVDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Jhc2UtbW9kdWxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEF1dGhlbnRpY2F0aW9uIGd1YXJkXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCB7XG5cbiAgLyoqXG4gICAqIEltcG9ydHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChCQVNFX01PRFVMRV9DT05GSUcpIHByaXZhdGUgbW9kdWxlQ29uZmlnOiBCYXNlTW9kdWxlQ29uZmlnXG4gICkge31cblxuICAvKipcbiAgICogQ2FuIGFjdGl2YXRlIG1haW4gcm91dGVcbiAgICovXG4gIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgbGV0IGFsbG93ZWQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IG9wcG9zaXRlID0gcm91dGU/LmRhdGE/Lm9wcG9zaXRlID8gcm91dGU/LmRhdGE/Lm9wcG9zaXRlIDogZmFsc2U7XG4gICAgICBjb25zdCByZWRpcmVjdFVybCA9IHJvdXRlPy5kYXRhPy5yZWRpcmVjdFVybCA/IHJvdXRlLmRhdGEucmVkaXJlY3RVcmwgOiB0aGlzLm1vZHVsZUNvbmZpZy5hdXRoR3VhcmRSZWRpcmVjdFVybDtcblxuICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UudG9rZW4gJiYgIW9wcG9zaXRlKSB7XG4gICAgICAgIGlmIChyb3V0ZS5kYXRhLmFsbG93ZWRSb2xlKSB7XG4gICAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuYXV0aFNlcnZpY2UuY3VycmVudFVzZXI7XG4gICAgICAgICAgYWxsb3dlZCA9IHVzZXI/LnJvbGVzPy5pbmNsdWRlcyhyb3V0ZS5kYXRhLmFsbG93ZWRSb2xlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhbGxvd2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdGhpcy5hdXRoU2VydmljZS50b2tlbiAmJiBvcHBvc2l0ZSkge1xuICAgICAgICBhbGxvd2VkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFhbGxvd2VkKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyZWRpcmVjdFVybF0pO1xuICAgICAgfVxuXG4gICAgICBzdWJzY3JpYmVyLm5leHQoYWxsb3dlZCk7XG4gICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuIGFjdGl2YXRlIGNoaWxkIHJvdXRlXG4gICAqL1xuICBjYW5BY3RpdmF0ZUNoaWxkKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,13 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- /**
3
- * Guard to check if a component can be deactivated
4
- */
5
- export class CanDeactivateGuard {
6
- canDeactivate(component) {
7
- return component.canDeactivate ? component.canDeactivate() : true;
8
- }
9
- }
10
- CanDeactivateGuard.decorators = [
11
- { type: Injectable }
12
- ];
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWRlYWN0aXZhdGUuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9saWIvYmFzZS9ndWFyZHMvY2FuLWRlYWN0aXZhdGUuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQzs7R0FFRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsYUFBYSxDQUFDLFNBQWtDO1FBQzlDLE9BQU8sU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEUsQ0FBQzs7O1lBSkYsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkRlYWN0aXZhdGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUNhbkNvbXBvbmVudERlYWN0aXZhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Nhbi1jb21wb25lbnQtZGVhY3RpdmF0ZS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEd1YXJkIHRvIGNoZWNrIGlmIGEgY29tcG9uZW50IGNhbiBiZSBkZWFjdGl2YXRlZFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2FuRGVhY3RpdmF0ZUd1YXJkIGltcGxlbWVudHMgQ2FuRGVhY3RpdmF0ZTxJQ2FuQ29tcG9uZW50RGVhY3RpdmF0ZT4ge1xuICBjYW5EZWFjdGl2YXRlKGNvbXBvbmVudDogSUNhbkNvbXBvbmVudERlYWN0aXZhdGUpIHtcbiAgICByZXR1cm4gY29tcG9uZW50LmNhbkRlYWN0aXZhdGUgPyBjb21wb25lbnQuY2FuRGVhY3RpdmF0ZSgpIDogdHJ1ZTtcbiAgfVxufVxuIl19
@@ -1,33 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { Observable } from 'rxjs';
4
- import { AuthService } from '../services/auth.service';
5
- /**
6
- * Logout guard
7
- */
8
- export class LogoutGuard {
9
- constructor(router, authService) {
10
- this.router = router;
11
- this.authService = authService;
12
- }
13
- canActivate(route, state) {
14
- return new Observable((subscriber) => {
15
- if (this.authService.token) {
16
- this.authService.logout();
17
- }
18
- subscriber.next(true);
19
- subscriber.complete();
20
- });
21
- }
22
- canActivateChild(route, state) {
23
- return this.canActivate(route, state);
24
- }
25
- }
26
- LogoutGuard.decorators = [
27
- { type: Injectable }
28
- ];
29
- LogoutGuard.ctorParameters = () => [
30
- { type: Router },
31
- { type: AuthService }
32
- ];
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb3V0Lmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2UvZ3VhcmRzL2xvZ291dC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBeUQsTUFBTSxFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZEOztHQUVHO0FBRUgsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBb0IsTUFBYyxFQUFVLFdBQXdCO1FBQWhELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFFeEUsV0FBVyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDbkUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ25DLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDM0I7WUFFRCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RCLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7O1lBakJGLFVBQVU7OztZQVBxRCxNQUFNO1lBRTdELFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcblxuLyoqXG4gKiBMb2dvdXQgZ3VhcmRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ291dEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkge31cblxuICBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLnRva2VuKSB7XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UubG9nb3V0KCk7XG4gICAgICB9XG5cbiAgICAgIHN1YnNjcmliZXIubmV4dCh0cnVlKTtcbiAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbkFjdGl2YXRlQ2hpbGQocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUocm91dGUsIHN0YXRlKTtcbiAgfVxufVxuIl19
@@ -1,18 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- /**
3
- * Truncate string with ellipses
4
- */
5
- export class EllipsesPipe {
6
- transform(value, limit) {
7
- if (!value) {
8
- return null;
9
- }
10
- return value.length > limit ? value.substring(0, limit) + '...' : value;
11
- }
12
- }
13
- EllipsesPipe.decorators = [
14
- { type: Pipe, args: [{
15
- name: 'ltEllipses',
16
- },] }
17
- ];
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL3BpcGVzL2VsbGlwc2VzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sWUFBWTtJQUN2QixTQUFTLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDcEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMxRSxDQUFDOzs7WUFWRixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFlBQVk7YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogVHJ1bmNhdGUgc3RyaW5nIHdpdGggZWxsaXBzZXNcbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnbHRFbGxpcHNlcycsXG59KVxuZXhwb3J0IGNsYXNzIEVsbGlwc2VzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgbGltaXQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IGxpbWl0ID8gdmFsdWUuc3Vic3RyaW5nKDAsIGxpbWl0KSArICcuLi4nIDogdmFsdWU7XG4gIH1cbn1cbiJdfQ==
@@ -1,20 +0,0 @@
1
- import { DomSanitizer } from '@angular/platform-browser';
2
- import { Pipe } from '@angular/core';
3
- /**
4
- * Declarate html as safe
5
- */
6
- export class SafeHtmlPipe {
7
- constructor(sanitized) {
8
- this.sanitized = sanitized;
9
- }
10
- transform(value) {
11
- return this.sanitized.bypassSecurityTrustHtml(value);
12
- }
13
- }
14
- SafeHtmlPipe.decorators = [
15
- { type: Pipe, args: [{ name: 'ltSafeHtml' },] }
16
- ];
17
- SafeHtmlPipe.ctorParameters = () => [
18
- { type: DomSanitizer }
19
- ];
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1odG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9saWIvYmFzZS9waXBlcy9zYWZlLWh0bWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUcsQ0FBQztJQUUvQyxTQUFTLENBQUMsS0FBSztRQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDOzs7WUFORixJQUFJLFNBQUMsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFDOzs7WUFOakIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIERlY2xhcmF0ZSBodG1sIGFzIHNhZmVcbiAqL1xuQFBpcGUoe25hbWU6ICdsdFNhZmVIdG1sJ30pXG5leHBvcnQgY2xhc3MgU2FmZUh0bWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVkOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgdHJhbnNmb3JtKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVkLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHZhbHVlKTtcbiAgfVxufVxuIl19
@@ -1,116 +0,0 @@
1
- import { Apollo, gql } from 'apollo-angular';
2
- import { Injectable } from '@angular/core';
3
- import { of } from 'rxjs';
4
- import { buildClientSchema, getIntrospectionQuery } from 'graphql';
5
- import { map } from 'rxjs/operators';
6
- import { GraphQLMeta } from '../classes/graphql-meta.class';
7
- import { Helper } from '../classes/helper.class';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "apollo-angular";
10
- /**
11
- * GraphQL meta service
12
- *
13
- * For collecting meta information of the GraphQL API
14
- */
15
- export class GraphQLMetaService {
16
- /**
17
- * Include services
18
- */
19
- constructor(apollo) {
20
- this.apollo = apollo;
21
- }
22
- /**
23
- * Getter of introspectionQuery
24
- */
25
- get introspectionQuery() {
26
- return JSON.parse(JSON.stringify(this._introspectionQuery));
27
- }
28
- /**
29
- * Get schema for API
30
- * See https://www.apollographql.com/blog/three-ways-to-represent-your-graphql-schema-a41f4175100d
31
- */
32
- getSchema(options = {}) {
33
- // Get configurations
34
- const config = Object.assign({ cache: true, freeze: true }, options);
35
- // Use caching
36
- if (config.cache) {
37
- if (config.freeze && this._frozenSchema) {
38
- return of(this._frozenSchema);
39
- }
40
- if (this._introspectionQuery) {
41
- return of(buildClientSchema(this.introspectionQuery));
42
- }
43
- if (config.freeze && this._frozenSchemaObservable) {
44
- return this._frozenSchemaObservable;
45
- }
46
- else if (!config.freeze && this._schemaObservable) {
47
- return this._schemaObservable;
48
- }
49
- }
50
- // Request schema from server
51
- const observable = this.apollo
52
- .query({
53
- query: gql(getIntrospectionQuery({ descriptions: false })),
54
- })
55
- .pipe(map((schema) => {
56
- // Cache introspectionQuery
57
- this._introspectionQuery = schema.data;
58
- // Convert schema to GraphQLSchema
59
- this._frozenSchema = Helper.deepFreeze(buildClientSchema(this.introspectionQuery));
60
- // Return GraphQLSchema
61
- if (config.freeze) {
62
- return this._frozenSchema;
63
- }
64
- return buildClientSchema(schema.data);
65
- }));
66
- // Set observables
67
- if (config.freeze) {
68
- this._frozenSchemaObservable = observable;
69
- }
70
- else {
71
- this._schemaObservable = observable;
72
- }
73
- // Return result
74
- return observable;
75
- }
76
- /**
77
- * Get meta for API
78
- * See https://www.apollographql.com/blog/three-ways-to-represent-your-graphql-schema-a41f4175100d
79
- */
80
- getMeta(options = {}) {
81
- // Get configurations
82
- const config = Object.assign({ cache: true, log: false }, options);
83
- // Use caching
84
- if (config.cache) {
85
- if (this._meta) {
86
- return of(this._meta);
87
- }
88
- else if (this._metaObservable) {
89
- return this._metaObservable;
90
- }
91
- }
92
- // Request schema from server
93
- const observable = this.getSchema(options).pipe(map((schema) => {
94
- // Log
95
- if (config.log) {
96
- console.log({ schema });
97
- }
98
- this._meta = new GraphQLMeta(schema);
99
- return this._meta;
100
- }));
101
- // Set observables
102
- this._metaObservable = observable;
103
- // Return result
104
- return observable;
105
- }
106
- }
107
- GraphQLMetaService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GraphQLMetaService_Factory() { return new GraphQLMetaService(i0.ɵɵinject(i1.Apollo)); }, token: GraphQLMetaService, providedIn: "root" });
108
- GraphQLMetaService.decorators = [
109
- { type: Injectable, args: [{
110
- providedIn: 'root',
111
- },] }
112
- ];
113
- GraphQLMetaService.ctorParameters = () => [
114
- { type: Apollo }
115
- ];
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1tZXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9saWIvYmFzZS9zZXJ2aWNlcy9ncmFwaHFsLW1ldGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQXFDLE1BQU0sU0FBUyxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFFakQ7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxrQkFBa0I7SUFZN0I7O09BRUc7SUFDSCxZQUFzQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFFeEM7O09BRUc7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsVUFBaUQsRUFBRTtRQUNsRSxxQkFBcUI7UUFDckIsTUFBTSxNQUFNLG1CQUNWLEtBQUssRUFBRSxJQUFJLEVBQ1gsTUFBTSxFQUFFLElBQUksSUFDVCxPQUFPLENBQ1gsQ0FBQztRQUVGLGNBQWM7UUFDZCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDaEIsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUMvQjtZQUNELElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUM1QixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2FBQ3ZEO1lBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtnQkFDakQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7YUFDckM7aUJBQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUNuRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQzthQUMvQjtTQUNGO1FBRUQsNkJBQTZCO1FBQzdCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNO2FBQzNCLEtBQUssQ0FBQztZQUNMLEtBQUssRUFBRSxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztTQUN6RCxDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ2xCLDJCQUEyQjtZQUMzQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUV2QyxrQ0FBa0M7WUFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7WUFFbkYsdUJBQXVCO1lBQ3ZCLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtnQkFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQzNCO1lBQ0QsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVKLGtCQUFrQjtRQUNsQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFVBQVUsQ0FBQztTQUMzQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztTQUNyQztRQUVELGdCQUFnQjtRQUNoQixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTyxDQUFDLFVBQThDLEVBQUU7UUFDN0QscUJBQXFCO1FBQ3JCLE1BQU0sTUFBTSxtQkFDVixLQUFLLEVBQUUsSUFBSSxFQUNYLEdBQUcsRUFBRSxLQUFLLElBQ1AsT0FBTyxDQUNYLENBQUM7UUFFRixjQUFjO1FBQ2QsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdkI7aUJBQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUMvQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7YUFDN0I7U0FDRjtRQUVELDZCQUE2QjtRQUM3QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDN0MsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDbEIsTUFBTTtZQUNOLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQzthQUN2QjtZQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUM7UUFFbEMsZ0JBQWdCO1FBQ2hCLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Ozs7WUE3SEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFmUSxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBvbGxvLCBncWwgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYnVpbGRDbGllbnRTY2hlbWEsIGdldEludHJvc3BlY3Rpb25RdWVyeSwgR3JhcGhRTFNjaGVtYSwgSW50cm9zcGVjdGlvblF1ZXJ5IH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHcmFwaFFMTWV0YSB9IGZyb20gJy4uL2NsYXNzZXMvZ3JhcGhxbC1tZXRhLmNsYXNzJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4uL2NsYXNzZXMvaGVscGVyLmNsYXNzJztcblxuLyoqXG4gKiBHcmFwaFFMIG1ldGEgc2VydmljZVxuICpcbiAqIEZvciBjb2xsZWN0aW5nIG1ldGEgaW5mb3JtYXRpb24gb2YgdGhlIEdyYXBoUUwgQVBJXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHcmFwaFFMTWV0YVNlcnZpY2Uge1xuXG4gIC8vIENhY2hlc1xuICBwcm90ZWN0ZWQgX2Zyb3plblNjaGVtYTogR3JhcGhRTFNjaGVtYTtcbiAgcHJvdGVjdGVkIF9mcm96ZW5TY2hlbWFPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEdyYXBoUUxTY2hlbWE+O1xuICBwcm90ZWN0ZWQgX21ldGE6IEdyYXBoUUxNZXRhO1xuICBwcm90ZWN0ZWQgX21ldGFPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEdyYXBoUUxNZXRhPjtcbiAgcHJvdGVjdGVkIF9zY2hlbWFPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEdyYXBoUUxTY2hlbWE+O1xuXG4gIC8vIFByaXZhdGUgY2FjaGVzXG4gIHByaXZhdGUgX2ludHJvc3BlY3Rpb25RdWVyeTogSW50cm9zcGVjdGlvblF1ZXJ5O1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIHNlcnZpY2VzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYXBvbGxvOiBBcG9sbG8pIHt9XG5cbiAgLyoqXG4gICAqIEdldHRlciBvZiBpbnRyb3NwZWN0aW9uUXVlcnlcbiAgICovXG4gIGdldCBpbnRyb3NwZWN0aW9uUXVlcnkoKTogSW50cm9zcGVjdGlvblF1ZXJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9pbnRyb3NwZWN0aW9uUXVlcnkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc2NoZW1hIGZvciBBUElcbiAgICogU2VlIGh0dHBzOi8vd3d3LmFwb2xsb2dyYXBocWwuY29tL2Jsb2cvdGhyZWUtd2F5cy10by1yZXByZXNlbnQteW91ci1ncmFwaHFsLXNjaGVtYS1hNDFmNDE3NTEwMGRcbiAgICovXG4gIHB1YmxpYyBnZXRTY2hlbWEob3B0aW9uczogeyBjYWNoZT86IGJvb2xlYW47IGZyZWV6ZT86IGJvb2xlYW4gfSA9IHt9KTogT2JzZXJ2YWJsZTxHcmFwaFFMU2NoZW1hPiB7XG4gICAgLy8gR2V0IGNvbmZpZ3VyYXRpb25zXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgY2FjaGU6IHRydWUsXG4gICAgICBmcmVlemU6IHRydWUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBVc2UgY2FjaGluZ1xuICAgIGlmIChjb25maWcuY2FjaGUpIHtcbiAgICAgIGlmIChjb25maWcuZnJlZXplICYmIHRoaXMuX2Zyb3plblNjaGVtYSkge1xuICAgICAgICByZXR1cm4gb2YodGhpcy5fZnJvemVuU2NoZW1hKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9pbnRyb3NwZWN0aW9uUXVlcnkpIHtcbiAgICAgICAgcmV0dXJuIG9mKGJ1aWxkQ2xpZW50U2NoZW1hKHRoaXMuaW50cm9zcGVjdGlvblF1ZXJ5KSk7XG4gICAgICB9XG4gICAgICBpZiAoY29uZmlnLmZyZWV6ZSAmJiB0aGlzLl9mcm96ZW5TY2hlbWFPYnNlcnZhYmxlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mcm96ZW5TY2hlbWFPYnNlcnZhYmxlO1xuICAgICAgfSBlbHNlIGlmICghY29uZmlnLmZyZWV6ZSAmJiB0aGlzLl9zY2hlbWFPYnNlcnZhYmxlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY2hlbWFPYnNlcnZhYmxlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlcXVlc3Qgc2NoZW1hIGZyb20gc2VydmVyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZSA9IHRoaXMuYXBvbGxvXG4gICAgICAucXVlcnkoe1xuICAgICAgICBxdWVyeTogZ3FsKGdldEludHJvc3BlY3Rpb25RdWVyeSh7ZGVzY3JpcHRpb25zOiBmYWxzZX0pKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChzY2hlbWE6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIENhY2hlIGludHJvc3BlY3Rpb25RdWVyeVxuICAgICAgICAgIHRoaXMuX2ludHJvc3BlY3Rpb25RdWVyeSA9IHNjaGVtYS5kYXRhO1xuXG4gICAgICAgICAgLy8gQ29udmVydCBzY2hlbWEgdG8gR3JhcGhRTFNjaGVtYVxuICAgICAgICAgIHRoaXMuX2Zyb3plblNjaGVtYSA9IEhlbHBlci5kZWVwRnJlZXplKGJ1aWxkQ2xpZW50U2NoZW1hKHRoaXMuaW50cm9zcGVjdGlvblF1ZXJ5KSk7XG5cbiAgICAgICAgICAvLyBSZXR1cm4gR3JhcGhRTFNjaGVtYVxuICAgICAgICAgIGlmIChjb25maWcuZnJlZXplKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZnJvemVuU2NoZW1hO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYnVpbGRDbGllbnRTY2hlbWEoc2NoZW1hLmRhdGEpO1xuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgIC8vIFNldCBvYnNlcnZhYmxlc1xuICAgIGlmIChjb25maWcuZnJlZXplKSB7XG4gICAgICB0aGlzLl9mcm96ZW5TY2hlbWFPYnNlcnZhYmxlID0gb2JzZXJ2YWJsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2NoZW1hT2JzZXJ2YWJsZSA9IG9ic2VydmFibGU7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHJlc3VsdFxuICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBtZXRhIGZvciBBUElcbiAgICogU2VlIGh0dHBzOi8vd3d3LmFwb2xsb2dyYXBocWwuY29tL2Jsb2cvdGhyZWUtd2F5cy10by1yZXByZXNlbnQteW91ci1ncmFwaHFsLXNjaGVtYS1hNDFmNDE3NTEwMGRcbiAgICovXG4gIHB1YmxpYyBnZXRNZXRhKG9wdGlvbnM6IHsgY2FjaGU/OiBib29sZWFuOyBsb2c/OiBib29sZWFuIH0gPSB7fSk6IE9ic2VydmFibGU8R3JhcGhRTE1ldGE+IHtcbiAgICAvLyBHZXQgY29uZmlndXJhdGlvbnNcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBjYWNoZTogdHJ1ZSxcbiAgICAgIGxvZzogZmFsc2UsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBVc2UgY2FjaGluZ1xuICAgIGlmIChjb25maWcuY2FjaGUpIHtcbiAgICAgIGlmICh0aGlzLl9tZXRhKSB7XG4gICAgICAgIHJldHVybiBvZih0aGlzLl9tZXRhKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fbWV0YU9ic2VydmFibGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGFPYnNlcnZhYmxlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlcXVlc3Qgc2NoZW1hIGZyb20gc2VydmVyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZSA9IHRoaXMuZ2V0U2NoZW1hKG9wdGlvbnMpLnBpcGUoXG4gICAgICBtYXAoKHNjaGVtYTogYW55KSA9PiB7XG4gICAgICAgIC8vIExvZ1xuICAgICAgICBpZiAoY29uZmlnLmxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHtzY2hlbWF9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21ldGEgPSBuZXcgR3JhcGhRTE1ldGEoc2NoZW1hKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21ldGE7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBTZXQgb2JzZXJ2YWJsZXNcbiAgICB0aGlzLl9tZXRhT2JzZXJ2YWJsZSA9IG9ic2VydmFibGU7XG5cbiAgICAvLyBSZXR1cm4gcmVzdWx0XG4gICAgcmV0dXJuIG9ic2VydmFibGU7XG4gIH1cbn1cbiJdfQ==
@@ -1,90 +0,0 @@
1
- import { Apollo } from 'apollo-angular';
2
- import { Injectable } from '@angular/core';
3
- import { Observable } from 'rxjs';
4
- import { GraphQLService } from './graphql.service';
5
- import { GraphQLMetaService } from './graphql-meta.service';
6
- import { LoaderService } from './loader.service';
7
- import { GraphQLRequestType } from '../enums/graphql-request-type.enum';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "apollo-angular";
10
- import * as i2 from "./graphql-meta.service";
11
- import * as i3 from "./loader.service";
12
- /**
13
- * GraphQL plus service, for extra error handling and loading indication
14
- */
15
- export class GraphQLPlusService extends GraphQLService {
16
- /**
17
- * Include services
18
- */
19
- constructor(apollo, graphqlMetaService, loaderService) {
20
- super(apollo, graphqlMetaService);
21
- this.apollo = apollo;
22
- this.graphqlMetaService = graphqlMetaService;
23
- this.loaderService = loaderService;
24
- }
25
- graphQl(graphql, options = {}) {
26
- this.handleLoader('start', options);
27
- return new Observable((subscriber) => {
28
- super.graphQl(graphql, options).subscribe((response) => {
29
- if (response && response.errors) {
30
- this.handleError(response.errors, options.excludedErrors);
31
- subscriber.error(response);
32
- this.handleLoader('stop', options);
33
- subscriber.complete();
34
- }
35
- subscriber.next(response);
36
- this.handleLoader('stop', options);
37
- if (options.type !== GraphQLRequestType.SUBSCRIPTION) {
38
- subscriber.complete();
39
- }
40
- }, (error) => {
41
- if (!options.ignoreErrors) {
42
- this.handleError(error, options.excludedErrors);
43
- }
44
- subscriber.error(error);
45
- this.handleLoader('stop', options);
46
- subscriber.complete();
47
- });
48
- });
49
- }
50
- handleLoader(state, options) {
51
- if (options.loading) {
52
- if (state === 'start') {
53
- this.loaderService.start();
54
- }
55
- else if (state === 'stop') {
56
- this.loaderService.stop();
57
- }
58
- }
59
- }
60
- handleError(error, excludedErrors = null) {
61
- if (excludedErrors) {
62
- if (Array.isArray(excludedErrors)) {
63
- excludedErrors.forEach((excludedError) => {
64
- if (error.message.includes(excludedError.toLowerCase())) {
65
- return;
66
- }
67
- });
68
- }
69
- else if (error.message.toLowerCase().includes(excludedErrors === null || excludedErrors === void 0 ? void 0 : excludedErrors.toLowerCase())) {
70
- return;
71
- }
72
- }
73
- this.displayError(error);
74
- }
75
- displayError(error) {
76
- console.error(error);
77
- }
78
- }
79
- GraphQLPlusService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GraphQLPlusService_Factory() { return new GraphQLPlusService(i0.ɵɵinject(i1.Apollo), i0.ɵɵinject(i2.GraphQLMetaService), i0.ɵɵinject(i3.LoaderService)); }, token: GraphQLPlusService, providedIn: "root" });
80
- GraphQLPlusService.decorators = [
81
- { type: Injectable, args: [{
82
- providedIn: 'root',
83
- },] }
84
- ];
85
- GraphQLPlusService.ctorParameters = () => [
86
- { type: Apollo },
87
- { type: GraphQLMetaService },
88
- { type: LoaderService }
89
- ];
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1wbHVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9saWIvYmFzZS9zZXJ2aWNlcy9ncmFwaHFsLXBsdXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7O0FBRXhFOztHQUVHO0FBSUgsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGNBQWM7SUFDcEQ7O09BRUc7SUFDSCxZQUNZLE1BQWMsRUFDZCxrQkFBc0MsRUFDdEMsYUFBNEI7UUFFdEMsS0FBSyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBSnhCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBR3hDLENBQUM7SUFFTSxPQUFPLENBQUMsT0FBZSxFQUFFLFVBQStCLEVBQUU7UUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFcEMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ25DLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FDdkMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDWCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO29CQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUMxRCxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDbkMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUN2QjtnQkFFRCxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLFlBQVksRUFBRTtvQkFDcEQsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUN2QjtZQUNILENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO29CQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ2pEO2dCQUNELFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBdUIsRUFBRSxPQUE0QjtRQUNoRSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDbkIsSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFO2dCQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQzVCO2lCQUFNLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRTtnQkFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUMzQjtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFZLEVBQUUsaUJBQXNCLElBQUk7UUFDbEQsSUFBSSxjQUFjLEVBQUU7WUFDbEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUNqQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7b0JBQ3ZDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUU7d0JBQ3ZELE9BQU87cUJBQ1I7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsYUFBZCxjQUFjLHVCQUFkLGNBQWMsQ0FBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFO2dCQUM5RSxPQUFPO2FBQ1I7U0FDRjtRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQzs7OztZQTFFRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQWRRLE1BQU07WUFJTixrQkFBa0I7WUFFbEIsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwb2xsbyB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdyYXBoUUxTZXJ2aWNlIH0gZnJvbSAnLi9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JhcGhRTE1ldGFTZXJ2aWNlIH0gZnJvbSAnLi9ncmFwaHFsLW1ldGEuc2VydmljZSc7XG5pbXBvcnQgeyBJR3JhcGhRTFBsdXNPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ncmFwaHFsLXBsdXMtb3B0aW9ucy5pbnRlcmZhY2VuJztcbmltcG9ydCB7IExvYWRlclNlcnZpY2UgfSBmcm9tICcuL2xvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEdyYXBoUUxSZXF1ZXN0VHlwZSB9IGZyb20gJy4uL2VudW1zL2dyYXBocWwtcmVxdWVzdC10eXBlLmVudW0nO1xuXG4vKipcbiAqIEdyYXBoUUwgcGx1cyBzZXJ2aWNlLCBmb3IgZXh0cmEgZXJyb3IgaGFuZGxpbmcgYW5kIGxvYWRpbmcgaW5kaWNhdGlvblxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR3JhcGhRTFBsdXNTZXJ2aWNlIGV4dGVuZHMgR3JhcGhRTFNlcnZpY2Uge1xuICAvKipcbiAgICogSW5jbHVkZSBzZXJ2aWNlc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGFwb2xsbzogQXBvbGxvLFxuICAgIHByb3RlY3RlZCBncmFwaHFsTWV0YVNlcnZpY2U6IEdyYXBoUUxNZXRhU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbG9hZGVyU2VydmljZTogTG9hZGVyU2VydmljZVxuICApIHtcbiAgICBzdXBlcihhcG9sbG8sIGdyYXBocWxNZXRhU2VydmljZSk7XG4gIH1cblxuICBwdWJsaWMgZ3JhcGhRbChncmFwaHFsOiBzdHJpbmcsIG9wdGlvbnM6IElHcmFwaFFMUGx1c09wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5oYW5kbGVMb2FkZXIoJ3N0YXJ0Jywgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIHN1cGVyLmdyYXBoUWwoZ3JhcGhxbCwgb3B0aW9ucykuc3Vic2NyaWJlKFxuICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuZXJyb3JzKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKHJlc3BvbnNlLmVycm9ycywgb3B0aW9ucy5leGNsdWRlZEVycm9ycyk7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTG9hZGVyKCdzdG9wJywgb3B0aW9ucyk7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHJlc3BvbnNlKTtcbiAgICAgICAgICB0aGlzLmhhbmRsZUxvYWRlcignc3RvcCcsIG9wdGlvbnMpO1xuICAgICAgICAgIGlmIChvcHRpb25zLnR5cGUgIT09IEdyYXBoUUxSZXF1ZXN0VHlwZS5TVUJTQ1JJUFRJT04pIHtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIGlmICghb3B0aW9ucy5pZ25vcmVFcnJvcnMpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsIG9wdGlvbnMuZXhjbHVkZWRFcnJvcnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB0aGlzLmhhbmRsZUxvYWRlcignc3RvcCcsIG9wdGlvbnMpO1xuICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUxvYWRlcihzdGF0ZTogJ3N0YXJ0JyB8ICdzdG9wJywgb3B0aW9uczogSUdyYXBoUUxQbHVzT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmIChvcHRpb25zLmxvYWRpbmcpIHtcbiAgICAgIGlmIChzdGF0ZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICB0aGlzLmxvYWRlclNlcnZpY2Uuc3RhcnQoKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09ICdzdG9wJykge1xuICAgICAgICB0aGlzLmxvYWRlclNlcnZpY2Uuc3RvcCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUVycm9yKGVycm9yOiBFcnJvciwgZXhjbHVkZWRFcnJvcnM6IGFueSA9IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoZXhjbHVkZWRFcnJvcnMpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGV4Y2x1ZGVkRXJyb3JzKSkge1xuICAgICAgICBleGNsdWRlZEVycm9ycy5mb3JFYWNoKChleGNsdWRlZEVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoZXhjbHVkZWRFcnJvci50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGVycm9yLm1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhleGNsdWRlZEVycm9ycz8udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZGlzcGxheUVycm9yKGVycm9yKTtcbiAgfVxuXG4gIGRpc3BsYXlFcnJvcihlcnJvcjogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gIH1cbn1cbiJdfQ==