@lenne.tech/ng-base 12.1.0 → 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 (203) hide show
  1. package/{esm2015/lenne.tech-ng-base.js → esm2020/lenne.tech-ng-base.mjs} +0 -0
  2. package/{esm2015/src/lib/base/base.module.js → esm2020/lib/base/base.module.mjs} +39 -8
  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} +0 -0
  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} +0 -0
  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} +0 -0
  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} +238 -195
  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} +238 -195
  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 +10 -0
  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/services/auth.service.d.ts +3 -0
  120. package/lib/base/services/fullscreen.service.d.ts +3 -0
  121. package/lib/base/services/graphql-meta.service.d.ts +3 -0
  122. package/lib/base/services/graphql-plus.service.d.ts +3 -0
  123. package/lib/base/services/graphql.service.d.ts +3 -0
  124. package/lib/base/services/image.service.d.ts +3 -0
  125. package/lib/base/services/loader.service.d.ts +3 -0
  126. package/lib/base/services/scroll.service.d.ts +3 -0
  127. package/lib/base/services/seo.service.d.ts +3 -0
  128. package/lib/base/services/storage.service.d.ts +3 -0
  129. package/lib/base/services/ws.service.d.ts +3 -0
  130. package/package.json +34 -14
  131. package/src/lib/base/base.module.d.ts +10 -0
  132. package/src/lib/base/classes/graphql-meta.class.d.ts +2 -4
  133. package/src/lib/base/directives/context-menu.directive.d.ts +3 -0
  134. package/src/lib/base/directives/lazy-load.directive.d.ts +3 -0
  135. package/src/lib/base/directives/match-height.directive.d.ts +3 -0
  136. package/src/lib/base/directives/resizable.directive.d.ts +3 -0
  137. package/src/lib/base/guards/auth.guard.d.ts +3 -0
  138. package/src/lib/base/guards/can-deactivate.guard.d.ts +3 -0
  139. package/src/lib/base/guards/logout.guard.d.ts +3 -0
  140. package/src/lib/base/lenne.tech-ng-base-src-lib-base.d.ts +1 -0
  141. package/src/lib/base/package.json +5 -6
  142. package/src/lib/base/pipes/ellipses.pipe.d.ts +3 -0
  143. package/src/lib/base/pipes/safe-html.pipe.d.ts +3 -0
  144. package/src/lib/base/services/auth.service.d.ts +3 -0
  145. package/src/lib/base/services/fullscreen.service.d.ts +3 -0
  146. package/src/lib/base/services/graphql-meta.service.d.ts +3 -0
  147. package/src/lib/base/services/graphql-plus.service.d.ts +3 -0
  148. package/src/lib/base/services/graphql.service.d.ts +3 -0
  149. package/src/lib/base/services/image.service.d.ts +3 -0
  150. package/src/lib/base/services/loader.service.d.ts +3 -0
  151. package/src/lib/base/services/scroll.service.d.ts +3 -0
  152. package/src/lib/base/services/seo.service.d.ts +3 -0
  153. package/src/lib/base/services/storage.service.d.ts +3 -0
  154. package/src/lib/base/services/ws.service.d.ts +3 -0
  155. package/bundles/lenne.tech-ng-base-src-lib-base.umd.js +0 -3152
  156. package/bundles/lenne.tech-ng-base-src-lib-base.umd.js.map +0 -1
  157. package/bundles/lenne.tech-ng-base.umd.js +0 -3154
  158. package/bundles/lenne.tech-ng-base.umd.js.map +0 -1
  159. package/esm2015/lib/base/base.module.js +0 -66
  160. package/esm2015/lib/base/classes/graphql-meta.class.js +0 -156
  161. package/esm2015/lib/base/classes/helper.class.js +0 -290
  162. package/esm2015/lib/base/directives/context-menu.directive.js +0 -104
  163. package/esm2015/lib/base/directives/lazy-load.directive.js +0 -43
  164. package/esm2015/lib/base/directives/match-height.directive.js +0 -78
  165. package/esm2015/lib/base/directives/resizable.directive.js +0 -89
  166. package/esm2015/lib/base/guards/auth.guard.js +0 -61
  167. package/esm2015/lib/base/guards/can-deactivate.guard.js +0 -13
  168. package/esm2015/lib/base/guards/logout.guard.js +0 -33
  169. package/esm2015/lib/base/pipes/ellipses.pipe.js +0 -18
  170. package/esm2015/lib/base/pipes/safe-html.pipe.js +0 -20
  171. package/esm2015/lib/base/services/graphql-meta.service.js +0 -116
  172. package/esm2015/lib/base/services/graphql-plus.service.js +0 -90
  173. package/esm2015/lib/base/services/graphql.service.js +0 -423
  174. package/esm2015/lib/base/services/image.service.js +0 -99
  175. package/esm2015/lib/base/services/loader.service.js +0 -27
  176. package/esm2015/lib/base/services/scroll.service.js +0 -172
  177. package/esm2015/lib/base/services/seo.service.js +0 -100
  178. package/esm2015/lib/base/services/storage.service.js +0 -131
  179. package/esm2015/lib/base/services/ws.service.js +0 -16
  180. package/esm2015/src/lib/base/classes/graphql-meta.class.js +0 -156
  181. package/esm2015/src/lib/base/classes/helper.class.js +0 -290
  182. package/esm2015/src/lib/base/directives/context-menu.directive.js +0 -104
  183. package/esm2015/src/lib/base/directives/lazy-load.directive.js +0 -43
  184. package/esm2015/src/lib/base/directives/match-height.directive.js +0 -78
  185. package/esm2015/src/lib/base/directives/resizable.directive.js +0 -89
  186. package/esm2015/src/lib/base/guards/auth.guard.js +0 -61
  187. package/esm2015/src/lib/base/guards/can-deactivate.guard.js +0 -13
  188. package/esm2015/src/lib/base/guards/logout.guard.js +0 -33
  189. package/esm2015/src/lib/base/pipes/ellipses.pipe.js +0 -18
  190. package/esm2015/src/lib/base/pipes/safe-html.pipe.js +0 -20
  191. package/esm2015/src/lib/base/services/graphql-meta.service.js +0 -116
  192. package/esm2015/src/lib/base/services/graphql-plus.service.js +0 -90
  193. package/esm2015/src/lib/base/services/graphql.service.js +0 -423
  194. package/esm2015/src/lib/base/services/image.service.js +0 -99
  195. package/esm2015/src/lib/base/services/loader.service.js +0 -27
  196. package/esm2015/src/lib/base/services/scroll.service.js +0 -172
  197. package/esm2015/src/lib/base/services/seo.service.js +0 -100
  198. package/esm2015/src/lib/base/services/storage.service.js +0 -131
  199. package/esm2015/src/lib/base/services/ws.service.js +0 -16
  200. package/fesm2015/lenne.tech-ng-base-src-lib-base.js.map +0 -1
  201. package/fesm2015/lenne.tech-ng-base.js.map +0 -1
  202. package/lenne.tech-ng-base.metadata.json +0 -1
  203. package/src/lib/base/lenne.tech-ng-base-src-lib-base.metadata.json +0 -1
@@ -1,172 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Inject, Injectable } from '@angular/core';
3
- import { Router } from '@angular/router';
4
- import { BASE_MODULE_CONFIG } from '../interfaces/base-module-config.interface';
5
- import { ImageService } from './image.service';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/router";
8
- import * as i2 from "../interfaces/base-module-config.interface";
9
- import * as i3 from "./image.service";
10
- /**
11
- * Scroll service for autoscroll to specific fragments
12
- */
13
- export class ScrollService {
14
- /**
15
- * Initializer
16
- */
17
- constructor(router, moduleConfig, imageService) {
18
- this.router = router;
19
- this.moduleConfig = moduleConfig;
20
- this.imageService = imageService;
21
- /**
22
- * Is a scroll listener set
23
- *
24
- * @protected
25
- */
26
- this.scrollListener = false;
27
- /**
28
- * Current scroll timer;
29
- *
30
- * @protected
31
- */
32
- this.scrollTimer = -1;
33
- const config = Object.assign({ scrollDetectionOffset: 200, scrollOffset: 100, scrollSamplingRate: 100 }, moduleConfig);
34
- this.detectionOffset = config.scrollDetectionOffset;
35
- this.scrollOffset = config.scrollOffset;
36
- this.scrollSamplingRate = config.scrollSamplingRate;
37
- }
38
- /**
39
- * Scroll to structureElement with specific ID
40
- */
41
- scrollTo(id, options = {}) {
42
- return __awaiter(this, void 0, void 0, function* () {
43
- // Prepare config
44
- const config = Object.assign({ checkUrl: false, loadImagesBefore: true, resetStyles: false, setOverflow: true, stopPropagation: true }, options);
45
- // Check current URL
46
- if (config.checkUrl && this.router.url !== '/' && !this.router.url.startsWith('/#')) {
47
- yield this.router.navigate(['/'], { fragment: id });
48
- return !config.stopPropagation;
49
- }
50
- // Check if target element exits
51
- const el = document.getElementById(id);
52
- if (!el) {
53
- console.error('Missing scroll element with ID:', id);
54
- return !config.stopPropagation;
55
- }
56
- // Check if body overflow is visible
57
- // This is necessary for scroll handling
58
- const body = document.querySelector('body');
59
- let undoOverflowChanges = false;
60
- const scrollBodyStyles = JSON.parse(JSON.stringify(window.getComputedStyle(body)));
61
- if (config.setOverflow && (scrollBodyStyles.overflowX !== 'visible' || scrollBodyStyles.overflowY !== 'visible')) {
62
- // Set body overflow to visible
63
- console.warn('Style of body element for overflowX and overflowY will be set to "visible" for scrolling!');
64
- body.style.overflowX = 'visible';
65
- body.style.overflowY = 'visible';
66
- undoOverflowChanges = true;
67
- }
68
- // Load images before scrolling (once)
69
- if (config.loadImagesBefore) {
70
- yield this.imageService.preLoadImages();
71
- }
72
- // Get get bounding rect of target element
73
- const cords = el.getBoundingClientRect();
74
- // Scroll to element
75
- window.scrollBy({ top: cords.top - this.scrollOffset, behavior: 'smooth' });
76
- yield this.scrollDone({
77
- doneFunction: () => {
78
- // Undo changes
79
- if (undoOverflowChanges && config.resetStyles) {
80
- body.style.overflowX = scrollBodyStyles.overflowX;
81
- body.style.overflowY = scrollBodyStyles.overflowY;
82
- console.warn('Original style of body element for overflowX and overflowY is set.');
83
- }
84
- },
85
- });
86
- // Return stop propagation configuration
87
- return !config.stopPropagation;
88
- });
89
- }
90
- /**
91
- * Get last active structureElement
92
- */
93
- getLastActiveElement(list) {
94
- const currentScrollPosition = window.scrollY;
95
- const elementsWithId = document.querySelectorAll('[id]');
96
- let lastId = null;
97
- let lastPosition = 0 - this.detectionOffset - 1;
98
- elementsWithId.forEach((element) => {
99
- const cords = element.getBoundingClientRect();
100
- const top = cords.top + window.pageYOffset - this.detectionOffset;
101
- if ((!list || !list.length || list.includes(element.id)) && // In list
102
- top < currentScrollPosition && // In active area
103
- lastPosition < top // Higher than the last one
104
- ) {
105
- lastId = element.id;
106
- lastPosition = top;
107
- }
108
- });
109
- return lastId;
110
- }
111
- /**
112
- * Check if ID is active
113
- */
114
- isActive(id, list, isFirst) {
115
- const lastActiveElement = this.getLastActiveElement(list);
116
- return id === lastActiveElement || (lastActiveElement === null && isFirst);
117
- }
118
- /**
119
- * Scroll done promise
120
- */
121
- scrollDone(options = {}) {
122
- return __awaiter(this, void 0, void 0, function* () {
123
- // Init configuration
124
- const config = Object.assign({ doneFunction: undefined }, options);
125
- // Wait for scroll done
126
- yield this.scrollDoneDetection();
127
- // Get result
128
- if (config.doneFunction) {
129
- return config.doneFunction();
130
- }
131
- });
132
- }
133
- /**
134
- * Scroll done detecton
135
- *
136
- * @protected
137
- */
138
- scrollDoneDetection() {
139
- // Return current scroll promise (Singelton)
140
- if (this.scrollPromise) {
141
- return this.scrollPromise;
142
- }
143
- // Create current scroll promise
144
- this.scrollPromise = new Promise((resolve) => {
145
- this.scrollPromiseResolve = resolve;
146
- if (this.scrollTimer !== -1) {
147
- window.clearTimeout(this.scrollTimer);
148
- }
149
- this.scrollTimer = window.setTimeout(() => {
150
- window.removeEventListener('scroll', this.scrollDoneDetection.bind(this));
151
- this.scrollPromise = undefined;
152
- resolve();
153
- }, this.scrollSamplingRate);
154
- });
155
- // Lisitening to scroll event;
156
- window.addEventListener('scroll', this.scrollDoneDetection.bind(this));
157
- // Return promise
158
- return this.scrollPromise;
159
- }
160
- }
161
- ScrollService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ScrollService_Factory() { return new ScrollService(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.BASE_MODULE_CONFIG), i0.ɵɵinject(i3.ImageService)); }, token: ScrollService, providedIn: "root" });
162
- ScrollService.decorators = [
163
- { type: Injectable, args: [{
164
- providedIn: 'root',
165
- },] }
166
- ];
167
- ScrollService.ctorParameters = () => [
168
- { type: Router },
169
- { type: undefined, decorators: [{ type: Inject, args: [BASE_MODULE_CONFIG,] }] },
170
- { type: ImageService }
171
- ];
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9saWIvYmFzZS9zZXJ2aWNlcy9zY3JvbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBRS9DOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUE2Q3hCOztPQUVHO0lBQ0gsWUFDWSxNQUFjLEVBQ2MsWUFBOEIsRUFDMUQsWUFBMEI7UUFGMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNjLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUMxRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXBDdEM7Ozs7V0FJRztRQUNPLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRWpDOzs7O1dBSUc7UUFDTyxnQkFBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBMEJ6QixNQUFNLE1BQU0sbUJBQ1YscUJBQXFCLEVBQUUsR0FBRyxFQUMxQixZQUFZLEVBQUUsR0FBRyxFQUNqQixrQkFBa0IsRUFBRSxHQUFHLElBQ3BCLFlBQVksQ0FDaEIsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUN4QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRztJQUNHLFFBQVEsQ0FDWixFQUFVLEVBQ1Ys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LFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdkUsaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDOzs7O1lBN05GLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBVFEsTUFBTTs0Q0E0RFYsTUFBTSxTQUFDLGtCQUFrQjtZQTFEckIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJBU0VfTU9EVUxFX0NPTkZJRywgQmFzZU1vZHVsZUNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvYmFzZS1tb2R1bGUtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJbWFnZVNlcnZpY2UgfSBmcm9tICcuL2ltYWdlLnNlcnZpY2UnO1xuXG4vKipcbiAqIFNjcm9sbCBzZXJ2aWNlIGZvciBhdXRvc2Nyb2xsIHRvIHNwZWNpZmljIGZyYWdtZW50c1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsU2VydmljZSB7XG4gIC8qKlxuICAgKiBDdXJyZW50IHNjcm9sbCBwcm9taXNlXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBzY3JvbGxQcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGZ1bmN0aW9uIG9mIGN1cnJlbnQgc2Nyb2xsIHByb21pc2VcbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHNjcm9sbFByb21pc2VSZXNvbHZlOiAodmFsdWU6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPikgPT4gdm9pZDtcblxuICAvKipcbiAgICogSXMgYSBzY3JvbGwgbGlzdGVuZXIgc2V0XG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBzY3JvbGxMaXN0ZW5lciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHNjcm9sbCB0aW1lcjtcbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHNjcm9sbFRpbWVyID0gLTE7XG5cbiAgLyoqXG4gICAqIFNjcm9sbCBvZmZzZXRcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxPZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogRGV0ZWN0aW9uIG9mZnNldFxuICAgKiBTaG91bGQgYmUgPj0gc2Nyb2xsT2Zmc2V0XG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGV0ZWN0aW9uT2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNhbXBsaW5nIHJhdGUgZm9yIHNjcm9sbCBkb25lIGRldGVjdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNjcm9sbFNhbXBsaW5nUmF0ZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplclxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIEBJbmplY3QoQkFTRV9NT0RVTEVfQ09ORklHKSBwcm90ZWN0ZWQgbW9kdWxlQ29uZmlnOiBCYXNlTW9kdWxlQ29uZmlnLFxuICAgIHByb3RlY3RlZCBpbWFnZVNlcnZpY2U6IEltYWdlU2VydmljZVxuICApIHtcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBzY3JvbGxEZXRlY3Rpb25PZmZzZXQ6IDIwMCxcbiAgICAgIHNjcm9sbE9mZnNldDogMTAwLFxuICAgICAgc2Nyb2xsU2FtcGxpbmdSYXRlOiAxMDAsXG4gICAgICAuLi5tb2R1bGVDb25maWcsXG4gICAgfTtcblxuICAgIHRoaXMuZGV0ZWN0aW9uT2Zmc2V0ID0gY29uZmlnLnNjcm9sbERldGVjdGlvbk9mZnNldDtcbiAgICB0aGlzLnNjcm9sbE9mZnNldCA9IGNvbmZpZy5zY3JvbGxPZmZzZXQ7XG4gICAgdGhpcy5zY3JvbGxTYW1wbGluZ1JhdGUgPSBjb25maWcuc2Nyb2xsU2FtcGxpbmdSYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbCB0byBzdHJ1Y3R1cmVFbGVtZW50IHdpdGggc3BlY2lmaWMgSURcbiAgICovXG4gIGFzeW5jIHNjcm9sbFRvKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgY2hlY2tVcmw/OiBib29sZWFuO1xuICAgICAgbG9hZEltYWdlc0JlZm9yZT86IGJvb2xlYW47XG4gICAgICByZXNldFN0eWxlcz86IGJvb2xlYW47XG4gICAgICBzZXRPdmVyZmxvdz86IGJvb2xlYW47XG4gICAgICBzdG9wUHJvcGFnYXRpb24/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApIHtcbiAgICAvLyBQcmVwYXJlIGNvbmZpZ1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIGNoZWNrVXJsOiBmYWxzZSxcbiAgICAgIGxvYWRJbWFnZXNCZWZvcmU6IHRydWUsXG4gICAgICByZXNldFN0eWxlczogZmFsc2UsXG4gICAgICBzZXRPdmVyZmxvdzogdHJ1ZSxcbiAgICAgIHN0b3BQcm9wYWdhdGlvbjogdHJ1ZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8vIENoZWNrIGN1cnJlbnQgVVJMXG4gICAgaWYgKGNvbmZpZy5jaGVja1VybCAmJiB0aGlzLnJvdXRlci51cmwgIT09ICcvJyAmJiAhdGhpcy5yb3V0ZXIudXJsLnN0YXJ0c1dpdGgoJy8jJykpIHtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddLCB7IGZyYWdtZW50OiBpZCB9KTtcbiAgICAgIHJldHVybiAhY29uZmlnLnN0b3BQcm9wYWdhdGlvbjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0YXJnZXQgZWxlbWVudCBleGl0c1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgIGlmICghZWwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01pc3Npbmcgc2Nyb2xsIGVsZW1lbnQgd2l0aCBJRDonLCBpZCk7XG4gICAgICByZXR1cm4gIWNvbmZpZy5zdG9wUHJvcGFnYXRpb247XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgYm9keSBvdmVyZmxvdyBpcyB2aXNpYmxlXG4gICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIHNjcm9sbCBoYW5kbGluZ1xuICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XG4gICAgbGV0IHVuZG9PdmVyZmxvd0NoYW5nZXMgPSBmYWxzZTtcbiAgICBjb25zdCBzY3JvbGxCb2R5U3R5bGVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShib2R5KSkpO1xuICAgIGlmIChjb25maWcuc2V0T3ZlcmZsb3cgJiYgKHNjcm9sbEJvZHlTdHlsZXMub3ZlcmZsb3dYICE9PSAndmlzaWJsZScgfHwgc2Nyb2xsQm9keVN0eWxlcy5vdmVyZmxvd1kgIT09ICd2aXNpYmxlJykpIHtcbiAgICAgIC8vIFNldCBib2R5IG92ZXJmbG93IHRvIHZpc2libGVcbiAgICAgIGNvbnNvbGUud2FybignU3R5bGUgb2YgYm9keSBlbGVtZW50IGZvciBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WSB3aWxsIGJlIHNldCB0byBcInZpc2libGVcIiBmb3Igc2Nyb2xsaW5nIScpO1xuICAgICAgYm9keS5zdHlsZS5vdmVyZmxvd1ggPSAndmlzaWJsZSc7XG4gICAgICBib2R5LnN0eWxlLm92ZXJmbG93WSA9ICd2aXNpYmxlJztcbiAgICAgIHVuZG9PdmVyZmxvd0NoYW5nZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIExvYWQgaW1hZ2VzIGJlZm9yZSBzY3JvbGxpbmcgKG9uY2UpXG4gICAgaWYgKGNvbmZpZy5sb2FkSW1hZ2VzQmVmb3JlKSB7XG4gICAgICBhd2FpdCB0aGlzLmltYWdlU2VydmljZS5wcmVMb2FkSW1hZ2VzKCk7XG4gICAgfVxuXG4gICAgLy8gR2V0IGdldCBib3VuZGluZyByZWN0IG9mIHRhcmdldCBlbGVtZW50XG4gICAgY29uc3QgY29yZHMgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIC8vIFNjcm9sbCB0byBlbGVtZW50XG4gICAgd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBjb3Jkcy50b3AgLSB0aGlzLnNjcm9sbE9mZnNldCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgIGF3YWl0IHRoaXMuc2Nyb2xsRG9uZSh7XG4gICAgICBkb25lRnVuY3Rpb246ICgpID0+IHtcbiAgICAgICAgLy8gVW5kbyBjaGFuZ2VzXG4gICAgICAgIGlmICh1bmRvT3ZlcmZsb3dDaGFuZ2VzICYmIGNvbmZpZy5yZXNldFN0eWxlcykge1xuICAgICAgICAgIGJvZHkuc3R5bGUub3ZlcmZsb3dYID0gc2Nyb2xsQm9keVN0eWxlcy5vdmVyZmxvd1g7XG4gICAgICAgICAgYm9keS5zdHlsZS5vdmVyZmxvd1kgPSBzY3JvbGxCb2R5U3R5bGVzLm92ZXJmbG93WTtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ09yaWdpbmFsIHN0eWxlIG9mIGJvZHkgZWxlbWVudCBmb3Igb3ZlcmZsb3dYIGFuZCBvdmVyZmxvd1kgaXMgc2V0LicpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gUmV0dXJuIHN0b3AgcHJvcGFnYXRpb24gY29uZmlndXJhdGlvblxuICAgIHJldHVybiAhY29uZmlnLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGFzdCBhY3RpdmUgc3RydWN0dXJlRWxlbWVudFxuICAgKi9cbiAgZ2V0TGFzdEFjdGl2ZUVsZW1lbnQobGlzdD8pOiBzdHJpbmcge1xuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5zY3JvbGxZO1xuICAgIGNvbnN0IGVsZW1lbnRzV2l0aElkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2lkXScpO1xuICAgIGxldCBsYXN0SWQgPSBudWxsO1xuICAgIGxldCBsYXN0UG9zaXRpb24gPSAwIC0gdGhpcy5kZXRlY3Rpb25PZmZzZXQgLSAxO1xuICAgIGVsZW1lbnRzV2l0aElkLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGNvcmRzID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHRvcCA9IGNvcmRzLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCAtIHRoaXMuZGV0ZWN0aW9uT2Zmc2V0O1xuICAgICAgaWYgKFxuICAgICAgICAoIWxpc3QgfHwgIWxpc3QubGVuZ3RoIHx8IGxpc3QuaW5jbHVkZXMoZWxlbWVudC5pZCkpICYmIC8vIEluIGxpc3RcbiAgICAgICAgdG9wIDwgY3VycmVudFNjcm9sbFBvc2l0aW9uICYmIC8vIEluIGFjdGl2ZSBhcmVhXG4gICAgICAgIGxhc3RQb3NpdGlvbiA8IHRvcCAvLyBIaWdoZXIgdGhhbiB0aGUgbGFzdCBvbmVcbiAgICAgICkge1xuICAgICAgICBsYXN0SWQgPSBlbGVtZW50LmlkO1xuICAgICAgICBsYXN0UG9zaXRpb24gPSB0b3A7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGxhc3RJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBJRCBpcyBhY3RpdmVcbiAgICovXG4gIGlzQWN0aXZlKGlkLCBsaXN0PywgaXNGaXJzdD8pIHtcbiAgICBjb25zdCBsYXN0QWN0aXZlRWxlbWVudCA9IHRoaXMuZ2V0TGFzdEFjdGl2ZUVsZW1lbnQobGlzdCk7XG4gICAgcmV0dXJuIGlkID09PSBsYXN0QWN0aXZlRWxlbWVudCB8fCAobGFzdEFjdGl2ZUVsZW1lbnQgPT09IG51bGwgJiYgaXNGaXJzdCk7XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xsIGRvbmUgcHJvbWlzZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNjcm9sbERvbmUob3B0aW9uczogeyBkb25lRnVuY3Rpb24/OiAoKSA9PiBhbnkgfCB2b2lkIH0gPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gSW5pdCBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgZG9uZUZ1bmN0aW9uOiB1bmRlZmluZWQsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBXYWl0IGZvciBzY3JvbGwgZG9uZVxuICAgIGF3YWl0IHRoaXMuc2Nyb2xsRG9uZURldGVjdGlvbigpO1xuXG4gICAgLy8gR2V0IHJlc3VsdFxuICAgIGlmIChjb25maWcuZG9uZUZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gY29uZmlnLmRvbmVGdW5jdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JvbGwgZG9uZSBkZXRlY3RvblxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgc2Nyb2xsRG9uZURldGVjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBSZXR1cm4gY3VycmVudCBzY3JvbGwgcHJvbWlzZSAoU2luZ2VsdG9uKVxuICAgIGlmICh0aGlzLnNjcm9sbFByb21pc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLnNjcm9sbFByb21pc2U7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGN1cnJlbnQgc2Nyb2xsIHByb21pc2VcbiAgICB0aGlzLnNjcm9sbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxQcm9taXNlUmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICBpZiAodGhpcy5zY3JvbGxUaW1lciAhPT0gLTEpIHtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnNjcm9sbFRpbWVyKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2Nyb2xsVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbERvbmVEZXRlY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgICAgIHRoaXMuc2Nyb2xsUHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSwgdGhpcy5zY3JvbGxTYW1wbGluZ1JhdGUpO1xuICAgIH0pO1xuXG4gICAgLy8gTGlzaXRlbmluZyB0byBzY3JvbGwgZXZlbnQ7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsRG9uZURldGVjdGlvbi5iaW5kKHRoaXMpKTtcblxuICAgIC8vIFJldHVybiBwcm9taXNlXG4gICAgcmV0dXJuIHRoaXMuc2Nyb2xsUHJvbWlzZTtcbiAgfVxufVxuIl19
@@ -1,100 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Meta, Title } from '@angular/platform-browser';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/platform-browser";
5
- /**
6
- * SEO service for setting HTML meta data
7
- */
8
- export class SEOService {
9
- constructor(titleService, metaTagService) {
10
- this.titleService = titleService;
11
- this.metaTagService = metaTagService;
12
- }
13
- initPageForSEO(input) {
14
- this.setGeneralData(input);
15
- this.setTwitterData(input);
16
- this.setTwitterData(input);
17
- this.setFacebookData(input);
18
- if (input.keywords) {
19
- this.setPageKeywords(input.keywords);
20
- }
21
- }
22
- /**
23
- * Set general metadata
24
- *
25
- * @param data
26
- * @private
27
- */
28
- setGeneralData(data) {
29
- this.titleService.setTitle(data.title);
30
- this.metaTagService.updateTag({ name: 'description', content: data.description });
31
- }
32
- /**
33
- * Set metadata for twitter
34
- *
35
- * @param data
36
- * @private
37
- */
38
- setTwitterData(data) {
39
- this.metaTagService.updateTag({ name: 'twitter:title', content: data.title });
40
- this.metaTagService.updateTag({ name: 'twitter:description', content: data.description });
41
- this.metaTagService.updateTag({
42
- property: 'twitter:url',
43
- content: data.url ? data.url : window.location.href,
44
- });
45
- if (data.image) {
46
- this.metaTagService.updateTag({
47
- property: 'twitter:image',
48
- content: data.image,
49
- });
50
- this.metaTagService.updateTag({
51
- property: 'twitter:card',
52
- content: 'summary_large_image',
53
- });
54
- }
55
- }
56
- /**
57
- * Set metadata for facebook
58
- *
59
- * @param data
60
- * @private
61
- */
62
- setFacebookData(data) {
63
- this.metaTagService.updateTag({ property: 'og:title', content: data.title });
64
- this.metaTagService.updateTag({ property: 'og:description', content: data.description });
65
- this.metaTagService.updateTag({
66
- property: 'og:type',
67
- content: 'website',
68
- });
69
- this.metaTagService.updateTag({
70
- property: 'og:url',
71
- content: data.url ? data.url : window.location.href,
72
- });
73
- if (data.image) {
74
- this.metaTagService.updateTag({
75
- property: 'og:image',
76
- content: data.image,
77
- });
78
- }
79
- }
80
- /**
81
- * Set page keywords
82
- *
83
- * @param keywords
84
- * @private
85
- */
86
- setPageKeywords(keywords) {
87
- this.metaTagService.updateTag({ name: 'keywords', content: keywords });
88
- }
89
- }
90
- SEOService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SEOService_Factory() { return new SEOService(i0.ɵɵinject(i1.Title), i0.ɵɵinject(i1.Meta)); }, token: SEOService, providedIn: "root" });
91
- SEOService.decorators = [
92
- { type: Injectable, args: [{
93
- providedIn: 'root',
94
- },] }
95
- ];
96
- SEOService.ctorParameters = () => [
97
- { type: Title },
98
- { type: Meta }
99
- ];
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9saWIvYmFzZS9zZXJ2aWNlcy9zZW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQVV4RDs7R0FFRztBQUlILE1BQU0sT0FBTyxVQUFVO0lBQ3JCLFlBQW9CLFlBQW1CLEVBQVUsY0FBb0I7UUFBakQsaUJBQVksR0FBWixZQUFZLENBQU87UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBTTtJQUFHLENBQUM7SUFFbEUsY0FBYyxDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU1QixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxjQUFjLENBQUMsSUFBYTtRQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxjQUFjLENBQUMsSUFBYTtRQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztZQUM1QixRQUFRLEVBQUUsYUFBYTtZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1NBQ3BELENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO2dCQUM1QixRQUFRLEVBQUUsZUFBZTtnQkFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQ3BCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO2dCQUM1QixRQUFRLEVBQUUsY0FBYztnQkFDeEIsT0FBTyxFQUFFLHFCQUFxQjthQUMvQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGVBQWUsQ0FBQyxJQUFhO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO1lBQzVCLFFBQVEsRUFBRSxTQUFTO1lBQ25CLE9BQU8sRUFBRSxTQUFTO1NBQ25CLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO1lBQzVCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUk7U0FDcEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7Z0JBQzVCLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDcEIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxlQUFlLENBQUMsUUFBZ0I7UUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Ozs7WUF6RkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFmYyxLQUFLO1lBQVgsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1ldGEsIFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmludGVyZmFjZSBTRU9EYXRhIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaW1hZ2U/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbiAga2V5d29yZHM/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU0VPIHNlcnZpY2UgZm9yIHNldHRpbmcgSFRNTCBtZXRhIGRhdGFcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNFT1NlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRpdGxlU2VydmljZTogVGl0bGUsIHByaXZhdGUgbWV0YVRhZ1NlcnZpY2U6IE1ldGEpIHt9XG5cbiAgcHVibGljIGluaXRQYWdlRm9yU0VPKGlucHV0OiBTRU9EYXRhKSB7XG4gICAgdGhpcy5zZXRHZW5lcmFsRGF0YShpbnB1dCk7XG4gICAgdGhpcy5zZXRUd2l0dGVyRGF0YShpbnB1dCk7XG4gICAgdGhpcy5zZXRUd2l0dGVyRGF0YShpbnB1dCk7XG4gICAgdGhpcy5zZXRGYWNlYm9va0RhdGEoaW5wdXQpO1xuXG4gICAgaWYgKGlucHV0LmtleXdvcmRzKSB7XG4gICAgICB0aGlzLnNldFBhZ2VLZXl3b3JkcyhpbnB1dC5rZXl3b3Jkcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBnZW5lcmFsIG1ldGFkYXRhXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHNldEdlbmVyYWxEYXRhKGRhdGE6IFNFT0RhdGEpIHtcbiAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZShkYXRhLnRpdGxlKTtcbiAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7IG5hbWU6ICdkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IGRhdGEuZGVzY3JpcHRpb24gfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IG1ldGFkYXRhIGZvciB0d2l0dGVyXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHNldFR3aXR0ZXJEYXRhKGRhdGE6IFNFT0RhdGEpIHtcbiAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7IG5hbWU6ICd0d2l0dGVyOnRpdGxlJywgY29udGVudDogZGF0YS50aXRsZSB9KTtcbiAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7IG5hbWU6ICd0d2l0dGVyOmRlc2NyaXB0aW9uJywgY29udGVudDogZGF0YS5kZXNjcmlwdGlvbiB9KTtcbiAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7XG4gICAgICBwcm9wZXJ0eTogJ3R3aXR0ZXI6dXJsJyxcbiAgICAgIGNvbnRlbnQ6IGRhdGEudXJsID8gZGF0YS51cmwgOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICB9KTtcblxuICAgIGlmIChkYXRhLmltYWdlKSB7XG4gICAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7XG4gICAgICAgIHByb3BlcnR5OiAndHdpdHRlcjppbWFnZScsXG4gICAgICAgIGNvbnRlbnQ6IGRhdGEuaW1hZ2UsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5tZXRhVGFnU2VydmljZS51cGRhdGVUYWcoe1xuICAgICAgICBwcm9wZXJ0eTogJ3R3aXR0ZXI6Y2FyZCcsXG4gICAgICAgIGNvbnRlbnQ6ICdzdW1tYXJ5X2xhcmdlX2ltYWdlJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgbWV0YWRhdGEgZm9yIGZhY2Vib29rXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHNldEZhY2Vib29rRGF0YShkYXRhOiBTRU9EYXRhKSB7XG4gICAgdGhpcy5tZXRhVGFnU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOnRpdGxlJywgY29udGVudDogZGF0YS50aXRsZSB9KTtcbiAgICB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6ZGVzY3JpcHRpb24nLCBjb250ZW50OiBkYXRhLmRlc2NyaXB0aW9uIH0pO1xuICAgIHRoaXMubWV0YVRhZ1NlcnZpY2UudXBkYXRlVGFnKHtcbiAgICAgIHByb3BlcnR5OiAnb2c6dHlwZScsXG4gICAgICBjb250ZW50OiAnd2Vic2l0ZScsXG4gICAgfSk7XG4gICAgdGhpcy5tZXRhVGFnU2VydmljZS51cGRhdGVUYWcoe1xuICAgICAgcHJvcGVydHk6ICdvZzp1cmwnLFxuICAgICAgY29udGVudDogZGF0YS51cmwgPyBkYXRhLnVybCA6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgIH0pO1xuXG4gICAgaWYgKGRhdGEuaW1hZ2UpIHtcbiAgICAgIHRoaXMubWV0YVRhZ1NlcnZpY2UudXBkYXRlVGFnKHtcbiAgICAgICAgcHJvcGVydHk6ICdvZzppbWFnZScsXG4gICAgICAgIGNvbnRlbnQ6IGRhdGEuaW1hZ2UsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHBhZ2Uga2V5d29yZHNcbiAgICpcbiAgICogQHBhcmFtIGtleXdvcmRzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHNldFBhZ2VLZXl3b3JkcyhrZXl3b3Jkczogc3RyaW5nKSB7XG4gICAgdGhpcy5tZXRhVGFnU2VydmljZS51cGRhdGVUYWcoeyBuYW1lOiAna2V5d29yZHMnLCBjb250ZW50OiBrZXl3b3JkcyB9KTtcbiAgfVxufVxuIl19
@@ -1,131 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { BASE_MODULE_CONFIG } from '../interfaces/base-module-config.interface';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../interfaces/base-module-config.interface";
5
- /**
6
- * Storage service for local data storage
7
- */
8
- export class StorageService {
9
- /**
10
- * Initializations
11
- */
12
- constructor(moduleConfig) {
13
- this.moduleConfig = moduleConfig;
14
- /**
15
- * Storage
16
- */
17
- this.storage = null;
18
- /**
19
- * Prefix for storage keys
20
- */
21
- this.prefix = '';
22
- // Set storage
23
- const type = moduleConfig.storageType ? moduleConfig.storageType : 'local';
24
- if (window[type + 'Storage']) {
25
- this.storage = window[type + 'Storage'];
26
- }
27
- // Set prefix
28
- this.prefix = '';
29
- if (moduleConfig.prefix) {
30
- this.prefix += moduleConfig.prefix + '_';
31
- }
32
- if (moduleConfig.version) {
33
- this.prefix += moduleConfig.version + '_';
34
- }
35
- }
36
- /**
37
- * Save itemKeys
38
- *
39
- * If you want to save one item, use itemKeys and value parameters like these:
40
- * save('KEY_OF_THE_ITEM', ITEM)
41
- *
42
- * If you want to save multiple items, use itemKeys only (value parameter will be ignored):
43
- * save({'KEY_OF_ITEM_1': ITEM_1, 'KEY_OF_ITEM_2': ITEM_2, ...})
44
- */
45
- save(itemKeys, value) {
46
- // Check local storage
47
- if (!this.storage) {
48
- return false;
49
- }
50
- // Check item keys and value
51
- if (!itemKeys ||
52
- (typeof itemKeys === 'object' && !Object.keys(itemKeys).length) ||
53
- (typeof itemKeys === 'string' && value === undefined)) {
54
- return false;
55
- }
56
- if (typeof itemKeys === 'object') {
57
- for (const [itemKey, itemValue] of Object.entries(itemKeys)) {
58
- this.storage.setItem(this.prefix + itemKey, JSON.stringify(itemValue));
59
- }
60
- return true;
61
- }
62
- this.storage.setItem(this.prefix + itemKeys, JSON.stringify(value));
63
- return true;
64
- }
65
- /**
66
- * Load items via key(s)
67
- */
68
- load(itemKeys) {
69
- // Check local storage
70
- if (!this.storage) {
71
- return;
72
- }
73
- // Check item keys
74
- if (!itemKeys || (Array.isArray(itemKeys) && !itemKeys.length)) {
75
- return null;
76
- }
77
- if (Array.isArray(itemKeys)) {
78
- const back = {};
79
- itemKeys.forEach((itemKey) => {
80
- const loadedItem = this.storage.getItem(this.prefix + itemKey);
81
- if (loadedItem) {
82
- back[itemKey] = JSON.parse(loadedItem);
83
- }
84
- else {
85
- back[itemKey] = null;
86
- }
87
- });
88
- return back;
89
- }
90
- let value = this.storage.getItem(this.prefix + itemKeys);
91
- if (value) {
92
- value = JSON.parse(value);
93
- }
94
- return value;
95
- }
96
- /**
97
- * Remove item from storage
98
- *
99
- * @param itemKeys keys or key to remove
100
- */
101
- remove(itemKeys) {
102
- // Check local storage
103
- if (!this.storage) {
104
- return false;
105
- }
106
- if (Array.isArray(itemKeys)) {
107
- itemKeys.forEach((key) => {
108
- this.storage.removeItem(this.prefix + key);
109
- });
110
- return true;
111
- }
112
- this.storage.removeItem(this.prefix + itemKeys);
113
- return true;
114
- }
115
- /**
116
- * Clear local storage
117
- */
118
- reset() {
119
- this.storage.clear();
120
- }
121
- }
122
- StorageService.ɵprov = i0.ɵɵdefineInjectable({ factory: function StorageService_Factory() { return new StorageService(i0.ɵɵinject(i1.BASE_MODULE_CONFIG)); }, token: StorageService, providedIn: "root" });
123
- StorageService.decorators = [
124
- { type: Injectable, args: [{
125
- providedIn: 'root',
126
- },] }
127
- ];
128
- StorageService.ctorParameters = () => [
129
- { type: undefined, decorators: [{ type: Inject, args: [BASE_MODULE_CONFIG,] }] }
130
- ];
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2Uvc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSw0Q0FBNEMsQ0FBQzs7O0FBRWxHOztHQUVHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFXekI7O09BRUc7SUFDSCxZQUFnRCxZQUE4QjtRQUE5QixpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFiOUU7O1dBRUc7UUFDTyxZQUFPLEdBQVEsSUFBSSxDQUFDO1FBRTlCOztXQUVHO1FBQ08sV0FBTSxHQUFHLEVBQUUsQ0FBQztRQU1wQixjQUFjO1FBQ2QsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzNFLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUM7U0FDekM7UUFFRCxhQUFhO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7U0FDMUM7UUFDRCxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FR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O1lBQzdDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDOzs7O1lBbklGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OzRDQWVjLE1BQU0sU0FBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJBU0VfTU9EVUxFX0NPTkZJRywgQmFzZU1vZHVsZUNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvYmFzZS1tb2R1bGUtY29uZmlnLmludGVyZmFjZSc7XG5cbi8qKlxuICogU3RvcmFnZSBzZXJ2aWNlIGZvciBsb2NhbCBkYXRhIHN0b3JhZ2VcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFN0b3JhZ2VcbiAgICovXG4gIHByb3RlY3RlZCBzdG9yYWdlOiBhbnkgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBQcmVmaXggZm9yIHN0b3JhZ2Uga2V5c1xuICAgKi9cbiAgcHJvdGVjdGVkIHByZWZpeCA9ICcnO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXphdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQkFTRV9NT0RVTEVfQ09ORklHKSBwcml2YXRlIG1vZHVsZUNvbmZpZzogQmFzZU1vZHVsZUNvbmZpZykge1xuICAgIC8vIFNldCBzdG9yYWdlXG4gICAgY29uc3QgdHlwZSA9IG1vZHVsZUNvbmZpZy5zdG9yYWdlVHlwZSA/IG1vZHVsZUNvbmZpZy5zdG9yYWdlVHlwZSA6ICdsb2NhbCc7XG4gICAgaWYgKHdpbmRvd1t0eXBlICsgJ1N0b3JhZ2UnXSkge1xuICAgICAgdGhpcy5zdG9yYWdlID0gd2luZG93W3R5cGUgKyAnU3RvcmFnZSddO1xuICAgIH1cblxuICAgIC8vIFNldCBwcmVmaXhcbiAgICB0aGlzLnByZWZpeCA9ICcnO1xuICAgIGlmIChtb2R1bGVDb25maWcucHJlZml4KSB7XG4gICAgICB0aGlzLnByZWZpeCArPSBtb2R1bGVDb25maWcucHJlZml4ICsgJ18nO1xuICAgIH1cbiAgICBpZiAobW9kdWxlQ29uZmlnLnZlcnNpb24pIHtcbiAgICAgIHRoaXMucHJlZml4ICs9IG1vZHVsZUNvbmZpZy52ZXJzaW9uICsgJ18nO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGl0ZW1LZXlzXG4gICAqXG4gICAqIElmIHlvdSB3YW50IHRvIHNhdmUgb25lIGl0ZW0sIHVzZSBpdGVtS2V5cyBhbmQgdmFsdWUgcGFyYW1ldGVycyBsaWtlIHRoZXNlOlxuICAgKiBzYXZlKCdLRVlfT0ZfVEhFX0lURU0nLCBJVEVNKVxuICAgKlxuICAgKiBJZiB5b3Ugd2FudCB0byBzYXZlIG11bHRpcGxlIGl0ZW1zLCB1c2UgaXRlbUtleXMgb25seSAodmFsdWUgcGFyYW1ldGVyIHdpbGwgYmUgaWdub3JlZCk6XG4gICAqIHNhdmUoeydLRVlfT0ZfSVRFTV8xJzogSVRFTV8xLCAnS0VZX09GX0lURU1fMic6IElURU1fMiwgLi4ufSlcbiAgICovXG4gIHB1YmxpYyBzYXZlKGl0ZW1LZXlzOiBzdHJpbmcgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9LCB2YWx1ZT86IGFueSk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGxvY2FsIHN0b3JhZ2VcbiAgICBpZiAoIXRoaXMuc3RvcmFnZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGl0ZW0ga2V5cyBhbmQgdmFsdWVcbiAgICBpZiAoXG4gICAgICAhaXRlbUtleXMgfHxcbiAgICAgICh0eXBlb2YgaXRlbUtleXMgPT09ICdvYmplY3QnICYmICFPYmplY3Qua2V5cyhpdGVtS2V5cykubGVuZ3RoKSB8fFxuICAgICAgKHR5cGVvZiBpdGVtS2V5cyA9PT0gJ3N0cmluZycgJiYgdmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGl0ZW1LZXlzID09PSAnb2JqZWN0Jykge1xuICAgICAgZm9yIChjb25zdCBbaXRlbUtleSwgaXRlbVZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhpdGVtS2V5cykpIHtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0odGhpcy5wcmVmaXggKyBpdGVtS2V5LCBKU09OLnN0cmluZ2lmeShpdGVtVmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKHRoaXMucHJlZml4ICsgaXRlbUtleXMsIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBpdGVtcyB2aWEga2V5KHMpXG4gICAqL1xuICBwdWJsaWMgbG9hZChpdGVtS2V5czogc3RyaW5nIHwgc3RyaW5nW10pOiBhbnkge1xuICAgIC8vIENoZWNrIGxvY2FsIHN0b3JhZ2VcbiAgICBpZiAoIXRoaXMuc3RvcmFnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGl0ZW0ga2V5c1xuICAgIGlmICghaXRlbUtleXMgfHwgKEFycmF5LmlzQXJyYXkoaXRlbUtleXMpICYmICFpdGVtS2V5cy5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtS2V5cykpIHtcbiAgICAgIGNvbnN0IGJhY2sgPSB7fTtcbiAgICAgIGl0ZW1LZXlzLmZvckVhY2goKGl0ZW1LZXkpID0+IHtcbiAgICAgICAgY29uc3QgbG9hZGVkSXRlbSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKHRoaXMucHJlZml4ICsgaXRlbUtleSk7XG4gICAgICAgIGlmIChsb2FkZWRJdGVtKSB7XG4gICAgICAgICAgYmFja1tpdGVtS2V5XSA9IEpTT04ucGFyc2UobG9hZGVkSXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFja1tpdGVtS2V5XSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJhY2s7XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0odGhpcy5wcmVmaXggKyBpdGVtS2V5cyk7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgaXRlbSBmcm9tIHN0b3JhZ2VcbiAgICpcbiAgICogQHBhcmFtIGl0ZW1LZXlzIGtleXMgb3Iga2V5IHRvIHJlbW92ZVxuICAgKi9cbiAgcHVibGljIHJlbW92ZShpdGVtS2V5czogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICAvLyBDaGVjayBsb2NhbCBzdG9yYWdlXG4gICAgaWYgKCF0aGlzLnN0b3JhZ2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtS2V5cykpIHtcbiAgICAgIGl0ZW1LZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnByZWZpeCArIGtleSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMucHJlZml4ICsgaXRlbUtleXMpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGxvY2FsIHN0b3JhZ2VcbiAgICovXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JhZ2UuY2xlYXIoKTtcbiAgfVxufVxuIl19
@@ -1,16 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class WsService {
4
- reconnect() {
5
- var _a, _b;
6
- (_a = this.client) === null || _a === void 0 ? void 0 : _a.close();
7
- (_b = this.client) === null || _b === void 0 ? void 0 : _b.connect();
8
- }
9
- }
10
- WsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WsService_Factory() { return new WsService(); }, token: WsService, providedIn: "root" });
11
- WsService.decorators = [
12
- { type: Injectable, args: [{
13
- providedIn: 'root',
14
- },] }
15
- ];
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2xpYi9iYXNlL3NlcnZpY2VzL3dzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0MsTUFBTSxPQUFPLFNBQVM7SUFHcEIsU0FBUzs7UUFDUCxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3JCLE1BQUMsSUFBSSxDQUFDLE1BQWMsMENBQUUsT0FBTyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7OztZQVRGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbkNsaWVudCB9IGZyb20gJ3N1YnNjcmlwdGlvbnMtdHJhbnNwb3J0LXdzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdzU2VydmljZSB7XG4gIGNsaWVudDogU3Vic2NyaXB0aW9uQ2xpZW50O1xuXG4gIHJlY29ubmVjdCgpIHtcbiAgICB0aGlzLmNsaWVudD8uY2xvc2UoKTtcbiAgICAodGhpcy5jbGllbnQgYXMgYW55KT8uY29ubmVjdCgpO1xuICB9XG59XG4iXX0=
@@ -1,156 +0,0 @@
1
- import { Helper } from './helper.class';
2
- import { GraphQLType } from './graphql-type.class';
3
- /**
4
- * GraphQL meta
5
- */
6
- export class GraphQLMeta {
7
- /**
8
- * Integrate schema
9
- */
10
- constructor(schema) {
11
- this.schema = schema;
12
- // Frozen caches
13
- this.args = {};
14
- this.fields = {};
15
- if (!schema) {
16
- throw Error('Missing schema');
17
- }
18
- }
19
- /**
20
- * Get arguments of GraphQL function
21
- */
22
- getArgs(functionName, options = {}) {
23
- const { cache, freeze, type } = Object.assign({ cache: true, freeze: true, type: undefined }, options);
24
- // Get cache
25
- if (cache && freeze) {
26
- const args = this.args[functionName + type];
27
- if (args) {
28
- return args;
29
- }
30
- }
31
- const func = this.getFunction(functionName, { type });
32
- const result = {};
33
- if (func === null || func === void 0 ? void 0 : func.args) {
34
- func.args.forEach((item) => {
35
- result[item.name] = this.getDeepType(item.type);
36
- });
37
- }
38
- // Set cache
39
- if (freeze) {
40
- this.args[functionName + type] = Helper.deepFreeze(result);
41
- }
42
- return result;
43
- }
44
- /**
45
- * Get fields of GraphQL function
46
- */
47
- getFields(functionName, options = {}) {
48
- const { cache, freeze, type } = Object.assign({ cache: true, freeze: true, type: undefined }, options);
49
- // Get cache
50
- if (cache && freeze) {
51
- const args = this.fields[functionName + type];
52
- if (args) {
53
- return args;
54
- }
55
- }
56
- const func = this.getFunction(functionName, options);
57
- const result = this.getDeepType(func.type);
58
- // Set cache
59
- if (freeze) {
60
- this.fields[functionName + type] = Helper.deepFreeze(result);
61
- }
62
- return result;
63
- }
64
- /**
65
- * Get GraphQL function
66
- */
67
- getFunction(name, options = {}) {
68
- // Set config
69
- const config = Object.assign({}, options);
70
- // Init possible functions
71
- let functions = {};
72
- // If function type is set
73
- if (config.type) {
74
- const graphQLType = config.type.charAt(0).toUpperCase() + config.type.slice(1);
75
- const type = this.schema.getType(graphQLType);
76
- if (type) {
77
- functions = type.getFields();
78
- }
79
- }
80
- // If function type is not set
81
- else {
82
- ['Subscription', 'Mutation', 'Query'].forEach((item) => {
83
- const type = this.schema.getType(item);
84
- if (type) {
85
- functions = Object.assign(Object.assign({}, functions), (type.getFields() || {}));
86
- }
87
- });
88
- }
89
- // Get function via name
90
- return functions[name];
91
- }
92
- /**
93
- * Get type
94
- */
95
- getType(name) {
96
- return this.schema.getType(name);
97
- }
98
- /**
99
- * Get deep type data
100
- */
101
- getDeepType(type, prepared = new WeakMap()) {
102
- // Check type
103
- if (!type) {
104
- return type;
105
- }
106
- // Infinite regress protection
107
- const preparedObject = {};
108
- // Check prepared
109
- if (typeof type === 'object') {
110
- const preparedType = prepared.get(type);
111
- if (preparedType) {
112
- return preparedType;
113
- }
114
- // Set prepared
115
- prepared.set(type, preparedObject);
116
- }
117
- // Search deeper
118
- if (type.ofType) {
119
- const ofTypeResult = this.getDeepType(type.ofType, prepared);
120
- Object.assign(preparedObject, ofTypeResult);
121
- return ofTypeResult;
122
- }
123
- // Process fields
124
- if (type._fields) {
125
- const result = {};
126
- for (const [key, value] of Object.entries(type._fields)) {
127
- result[key] = this.getDeepType(value, prepared);
128
- }
129
- Object.assign(preparedObject, result);
130
- return result;
131
- }
132
- // Get type name
133
- if (type.type) {
134
- const typeResult = this.getDeepType(type.type, prepared);
135
- Object.assign(preparedObject, typeResult);
136
- return typeResult;
137
- }
138
- // Initialize GraphQLType
139
- const graphqlType = GraphQLType.map({
140
- type: type.name,
141
- });
142
- // Set enum values
143
- if (!!type._values) {
144
- graphqlType.isEnum = true;
145
- for (const [key, value] of Object.entries(type._nameLookup)) {
146
- if (!value.isDeprecated) {
147
- graphqlType.validEnums.push(key);
148
- }
149
- }
150
- }
151
- // Finish
152
- prepared.set(type, graphqlType);
153
- return graphqlType;
154
- }
155
- }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1tZXRhLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2UvY2xhc3Nlcy9ncmFwaHFsLW1ldGEuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUduRDs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBS3RCOztPQUVHO0lBQ0gsWUFBc0IsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVAzQyxnQkFBZ0I7UUFDTixTQUFJLEdBQXdCLEVBQUUsQ0FBQztRQUMvQixXQUFNLEdBQXdCLEVBQUUsQ0FBQztRQU16QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FDTCxZQUFvQixFQUNwQixVQUE0RSxFQUFFO1FBRTlFLE1BQU0sRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxtQkFDekIsS0FBSyxFQUFFLElBQUksRUFDWCxNQUFNLEVBQUUsSUFBSSxFQUNaLElBQUksRUFBRSxTQUFTLElBQ1osT0FBTyxDQUNYLENBQUM7UUFFRixZQUFZO1FBQ1osSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksSUFBSSxFQUFFO2dCQUNSLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUMsSUFBSSxFQUFDLENBQUMs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LENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQzthQUNqRDtZQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFFRCxnQkFBZ0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBRUQseUJBQXlCO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDbEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUVILGtCQUFrQjtRQUNsQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2xCLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQzFCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDM0QsSUFBSSxDQUFFLEtBQWEsQ0FBQyxZQUFZLEVBQUU7b0JBQ2hDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNsQzthQUNGO1NBQ0Y7UUFFRCxTQUFTO1FBQ1QsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDaEMsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTFNjaGVtYSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdncmFwaHFsL2pzdXRpbHMvTWF5YmUnO1xuaW1wb3J0IHsgR3JhcGhRTE5hbWVkVHlwZSB9IGZyb20gJ2dyYXBocWwvdHlwZS9kZWZpbml0aW9uJztcbmltcG9ydCB7IEdyYXBoUUxSZXF1ZXN0VHlwZSB9IGZyb20gJy4uL2VudW1zL2dyYXBocWwtcmVxdWVzdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi9oZWxwZXIuY2xhc3MnO1xuaW1wb3J0IHsgR3JhcGhRTFR5cGUgfSBmcm9tICcuL2dyYXBocWwtdHlwZS5jbGFzcyc7XG5pbXBvcnQgeyBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ncmFwaHFsLXR5cGUtY29sbGVjdGlvbi5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEdyYXBoUUwgbWV0YVxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTE1ldGEge1xuICAvLyBGcm96ZW4gY2FjaGVzXG4gIHByb3RlY3RlZCBhcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIHByb3RlY3RlZCBmaWVsZHM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAvKipcbiAgICogSW50ZWdyYXRlIHNjaGVtYVxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNjaGVtYTogR3JhcGhRTFNjaGVtYSkge1xuICAgIGlmICghc2NoZW1hKSB7XG4gICAgICB0aHJvdyBFcnJvcignTWlzc2luZyBzY2hlbWEnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFyZ3VtZW50cyBvZiBHcmFwaFFMIGZ1bmN0aW9uXG4gICAqL1xuICBnZXRBcmdzKFxuICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgY2FjaGU/OiBib29sZWFuOyBmcmVlemU/OiBib29sZWFuOyB0eXBlPzogR3JhcGhRTFJlcXVlc3RUeXBlIH0gPSB7fVxuICApOiBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB7Y2FjaGUsIGZyZWV6ZSwgdHlwZX0gPSB7XG4gICAgICBjYWNoZTogdHJ1ZSxcbiAgICAgIGZyZWV6ZTogdHJ1ZSxcbiAgICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8vIEdldCBjYWNoZVxuICAgIGlmIChjYWNoZSAmJiBmcmVlemUpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmFyZ3NbZnVuY3Rpb25OYW1lICsgdHlwZV07XG4gICAgICBpZiAoYXJncykge1xuICAgICAgICByZXR1cm4gYXJncztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5nZXRGdW5jdGlvbihmdW5jdGlvbk5hbWUsIHt0eXBlfSk7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgaWYgKGZ1bmM/LmFyZ3MpIHtcbiAgICAgIGZ1bmMuYXJncy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHJlc3VsdFtpdGVtLm5hbWVdID0gdGhpcy5nZXREZWVwVHlwZShpdGVtLnR5cGUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gU2V0IGNhY2hlXG4gICAgaWYgKGZyZWV6ZSkge1xuICAgICAgdGhpcy5hcmdzW2Z1bmN0aW9uTmFtZSArIHR5cGVdID0gSGVscGVyLmRlZXBGcmVlemUocmVzdWx0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBmaWVsZHMgb2YgR3JhcGhRTCBmdW5jdGlvblxuICAgKi9cbiAgZ2V0RmllbGRzKFxuICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgY2FjaGU/OiBib29sZWFuOyBmcmVlemU/OiBib29sZWFuOyB0eXBlPzogR3JhcGhRTFJlcXVlc3RUeXBlIH0gPSB7fVxuICApOiBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB7Y2FjaGUsIGZyZWV6ZSwgdHlwZX0gPSB7XG4gICAgICBjYWNoZTogdHJ1ZSxcbiAgICAgIGZyZWV6ZTogdHJ1ZSxcbiAgICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8vIEdldCBjYWNoZVxuICAgIGlmIChjYWNoZSAmJiBmcmVlemUpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmZpZWxkc1tmdW5jdGlvbk5hbWUgKyB0eXBlXTtcbiAgICAgIGlmIChhcmdzKSB7XG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZ1bmMgPSB0aGlzLmdldEZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgb3B0aW9ucyk7XG4gICAgY29uc3QgcmVzdWx0OiBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uID0gdGhpcy5nZXREZWVwVHlwZShmdW5jLnR5cGUpIGFzIElHcmFwaFFMVHlwZUNvbGxlY3Rpb247XG5cbiAgICAvLyBTZXQgY2FjaGVcbiAgICBpZiAoZnJlZXplKSB7XG4gICAgICB0aGlzLmZpZWxkc1tmdW5jdGlvbk5hbWUgKyB0eXBlXSA9IEhlbHBlci5kZWVwRnJlZXplKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgR3JhcGhRTCBmdW5jdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIGdldEZ1bmN0aW9uKG5hbWU6IHN0cmluZywgb3B0aW9uczogeyB0eXBlPzogR3JhcGhRTFJlcXVlc3RUeXBlIH0gPSB7fSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIC8vIFNldCBjb25maWdcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBJbml0IHBvc3NpYmxlIGZ1bmN0aW9uc1xuICAgIGxldCBmdW5jdGlvbnMgPSB7fTtcblxuICAgIC8vIElmIGZ1bmN0aW9uIHR5cGUgaXMgc2V0XG4gICAgaWYgKGNvbmZpZy50eXBlKSB7XG4gICAgICBjb25zdCBncmFwaFFMVHlwZSA9IGNvbmZpZy50eXBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY29uZmlnLnR5cGUuc2xpY2UoMSk7XG4gICAgICBjb25zdCB0eXBlID0gdGhpcy5zY2hlbWEuZ2V0VHlwZShncmFwaFFMVHlwZSk7XG4gICAgICBpZiAodHlwZSkge1xuICAgICAgICBmdW5jdGlvbnMgPSAodHlwZSBhcyBhbnkpLmdldEZpZWxkcygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGZ1bmN0aW9uIHR5cGUgaXMgbm90IHNldFxuICAgIGVsc2Uge1xuICAgICAgWydTdWJzY3JpcHRpb24nLCAnTXV0YXRpb24nLCAnUXVlcnknXS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGU6IGFueSA9IHRoaXMuc2NoZW1hLmdldFR5cGUoaXRlbSk7XG4gICAgICAgIGlmICh0eXBlKSB7XG4gICAgICAgICAgZnVuY3Rpb25zID0ge1xuICAgICAgICAgICAgLi4uZnVuY3Rpb25zLFxuICAgICAgICAgICAgLi4uKHR5cGUuZ2V0RmllbGRzKCkgfHwge30pLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEdldCBmdW5jdGlvbiB2aWEgbmFtZVxuICAgIHJldHVybiBmdW5jdGlvbnNbbmFtZV07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHR5cGVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRUeXBlKG5hbWU6IHN0cmluZyk6IE1heWJlPEdyYXBoUUxOYW1lZFR5cGU+IHtcbiAgICByZXR1cm4gdGhpcy5zY2hlbWEuZ2V0VHlwZShuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGVlcCB0eXBlIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBnZXREZWVwVHlwZSh0eXBlOiBhbnksIHByZXBhcmVkOiBXZWFrTWFwPGFueSwgYW55PiA9IG5ldyBXZWFrTWFwKCkpOiBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uIHwgR3JhcGhRTFR5cGUge1xuICAgIC8vIENoZWNrIHR5cGVcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cblxuICAgIC8vIEluZmluaXRlIHJlZ3Jlc3MgcHJvdGVjdGlvblxuICAgIGNvbnN0IHByZXBhcmVkT2JqZWN0ID0ge307XG5cbiAgICAvLyBDaGVjayBwcmVwYXJlZFxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IHByZXBhcmVkVHlwZSA9IHByZXBhcmVkLmdldCh0eXBlKTtcbiAgICAgIGlmIChwcmVwYXJlZFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHByZXBhcmVkVHlwZTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHByZXBhcmVkXG4gICAgICBwcmVwYXJlZC5zZXQodHlwZSwgcHJlcGFyZWRPYmplY3QpO1xuICAgIH1cblxuICAgIC8vIFNlYXJjaCBkZWVwZXJcbiAgICBpZiAodHlwZS5vZlR5cGUpIHtcbiAgICAgIGNvbnN0IG9mVHlwZVJlc3VsdCA9IHRoaXMuZ2V0RGVlcFR5cGUodHlwZS5vZlR5cGUsIHByZXBhcmVkKTtcbiAgICAgIE9iamVjdC5hc3NpZ24ocHJlcGFyZWRPYmplY3QsIG9mVHlwZVJlc3VsdCk7XG4gICAgICByZXR1cm4gb2ZUeXBlUmVzdWx0O1xuICAgIH1cblxuICAgIC8vIFByb2Nlc3MgZmllbGRzXG4gICAgaWYgKHR5cGUuX2ZpZWxkcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0eXBlLl9maWVsZHMpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdGhpcy5nZXREZWVwVHlwZSh2YWx1ZSwgcHJlcGFyZWQpO1xuICAgICAgfVxuICAgICAgT2JqZWN0LmFzc2lnbihwcmVwYXJlZE9iamVjdCwgcmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gR2V0IHR5cGUgbmFtZVxuICAgIGlmICh0eXBlLnR5cGUpIHtcbiAgICAgIGNvbnN0IHR5cGVSZXN1bHQgPSB0aGlzLmdldERlZXBUeXBlKHR5cGUudHlwZSwgcHJlcGFyZWQpO1xuICAgICAgT2JqZWN0LmFzc2lnbihwcmVwYXJlZE9iamVjdCwgdHlwZVJlc3VsdCk7XG4gICAgICByZXR1cm4gdHlwZVJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIEdyYXBoUUxUeXBlXG4gICAgY29uc3QgZ3JhcGhxbFR5cGUgPSBHcmFwaFFMVHlwZS5tYXAoe1xuICAgICAgdHlwZTogdHlwZS5uYW1lLFxuICAgIH0pO1xuXG4gICAgLy8gU2V0IGVudW0gdmFsdWVzXG4gICAgaWYgKCEhdHlwZS5fdmFsdWVzKSB7XG4gICAgICBncmFwaHFsVHlwZS5pc0VudW0gPSB0cnVlO1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModHlwZS5fbmFtZUxvb2t1cCkpIHtcbiAgICAgICAgaWYgKCEodmFsdWUgYXMgYW55KS5pc0RlcHJlY2F0ZWQpIHtcbiAgICAgICAgICBncmFwaHFsVHlwZS52YWxpZEVudW1zLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbmlzaFxuICAgIHByZXBhcmVkLnNldCh0eXBlLCBncmFwaHFsVHlwZSk7XG4gICAgcmV0dXJuIGdyYXBocWxUeXBlO1xuICB9XG59XG4iXX0=