@lenne.tech/ng-base 13.0.0 → 13.2.1

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 (296) hide show
  1. package/base-components/base-components.module.d.ts +12 -0
  2. package/base-components/components/checkbox/checkbox.component.d.ts +11 -0
  3. package/base-components/components/input/input.component.d.ts +14 -0
  4. package/base-components/components/select/select.component.d.ts +19 -0
  5. package/base-components/components/textarea/textarea.component.d.ts +13 -0
  6. package/base-components/lenne.tech-ng-base-base-components.d.ts +5 -0
  7. package/base-components/package.json +10 -0
  8. package/base-components/public-api.d.ts +8 -0
  9. package/base-prototype/base-prototype.module.d.ts +12 -0
  10. package/{src/lib/base/lenne.tech-ng-base-src-lib-base.d.ts → base-prototype/lenne.tech-ng-base-base-prototype.d.ts} +1 -1
  11. package/base-prototype/package.json +10 -0
  12. package/base-prototype/pages/login/login.component.d.ts +20 -0
  13. package/base-prototype/pages/register/register.component.d.ts +20 -0
  14. package/base-prototype/public-api.d.ts +6 -0
  15. package/esm2020/base-components/base-components.module.mjs +42 -0
  16. package/esm2020/base-components/components/checkbox/checkbox.component.mjs +28 -0
  17. package/esm2020/base-components/components/input/input.component.mjs +36 -0
  18. package/esm2020/base-components/components/select/select.component.mjs +37 -0
  19. package/esm2020/base-components/components/textarea/textarea.component.mjs +35 -0
  20. package/esm2020/base-components/lenne.tech-ng-base-base-components.mjs +5 -0
  21. package/esm2020/base-components/public-api.mjs +11 -0
  22. package/esm2020/base-prototype/base-prototype.module.mjs +36 -0
  23. package/esm2020/base-prototype/lenne.tech-ng-base-base-prototype.mjs +5 -0
  24. package/esm2020/base-prototype/pages/login/login.component.mjs +39 -0
  25. package/esm2020/base-prototype/pages/register/register.component.mjs +45 -0
  26. package/esm2020/base-prototype/public-api.mjs +9 -0
  27. package/esm2020/lenne.tech-ng-base.mjs +1 -1
  28. package/esm2020/public-api.mjs +68 -3
  29. package/esm2020/src/base.module.mjs +101 -0
  30. package/esm2020/src/classes/basic-user.class.mjs +51 -0
  31. package/esm2020/src/classes/graphql-enum.class.mjs +9 -0
  32. package/esm2020/src/classes/graphql-meta.class.mjs +171 -0
  33. package/esm2020/src/classes/graphql-type.class.mjs +13 -0
  34. package/esm2020/src/classes/helper.class.mjs +304 -0
  35. package/esm2020/src/classes/standard.class.mjs +40 -0
  36. package/esm2020/src/decorators/debounce.decorator.mjs +12 -0
  37. package/esm2020/src/directives/context-menu.directive.mjs +109 -0
  38. package/esm2020/src/directives/lazy-load.directive.mjs +45 -0
  39. package/esm2020/src/directives/match-height.directive.mjs +79 -0
  40. package/esm2020/src/directives/resizable.directive.mjs +90 -0
  41. package/esm2020/src/enums/comparison-operator.enum.mjs +16 -0
  42. package/esm2020/src/enums/graphql-request-type.enum.mjs +10 -0
  43. package/esm2020/src/enums/logical-operator.enum.mjs +10 -0
  44. package/esm2020/src/enums/sort-order.enum.mjs +6 -0
  45. package/esm2020/src/factories/apollo-options.factory.mjs +61 -0
  46. package/esm2020/src/guards/auth.guard.mjs +61 -0
  47. package/esm2020/src/guards/can-deactivate.guard.mjs +16 -0
  48. package/esm2020/src/guards/logout.guard.mjs +32 -0
  49. package/esm2020/src/interfaces/base-module-config.interface.mjs +3 -0
  50. package/esm2020/src/interfaces/can-component-deactivate.interface.mjs +2 -0
  51. package/esm2020/src/interfaces/combined-filter-input.interface.mjs +2 -0
  52. package/esm2020/src/interfaces/field-object.interface.mjs +2 -0
  53. package/esm2020/src/interfaces/field.interface.mjs +2 -0
  54. package/esm2020/src/interfaces/filter-input.interface.mjs +2 -0
  55. package/esm2020/src/interfaces/find-args.interface.mjs +2 -0
  56. package/esm2020/src/interfaces/graphql-fields-object.interface.mjs +2 -0
  57. package/esm2020/src/interfaces/graphql-options.interface.mjs +2 -0
  58. package/esm2020/src/interfaces/graphql-plus-options.interfacen.mjs +2 -0
  59. package/esm2020/src/interfaces/graphql-type-collection.interface.mjs +2 -0
  60. package/esm2020/src/interfaces/single-filter-input.interface.mjs +2 -0
  61. package/esm2020/src/interfaces/sort-input.interface.mjs +2 -0
  62. package/esm2020/src/pipes/date-ago.pipe.mjs +65 -0
  63. package/esm2020/src/pipes/ellipses.pipe.mjs +22 -0
  64. package/esm2020/src/pipes/safe-html.pipe.mjs +21 -0
  65. package/esm2020/src/services/auth.service.mjs +71 -0
  66. package/esm2020/src/services/forms.service.mjs +26 -0
  67. package/esm2020/src/services/fullscreen.service.mjs +51 -0
  68. package/esm2020/src/services/graphql-meta.service.mjs +123 -0
  69. package/esm2020/src/services/graphql-plus.service.mjs +84 -0
  70. package/esm2020/src/services/graphql.service.mjs +441 -0
  71. package/esm2020/src/services/image.service.mjs +102 -0
  72. package/esm2020/src/services/loader.service.mjs +29 -0
  73. package/esm2020/src/services/scroll.service.mjs +179 -0
  74. package/esm2020/src/services/seo.service.mjs +97 -0
  75. package/esm2020/src/services/storage.service.mjs +132 -0
  76. package/esm2020/src/services/theme.service.mjs +43 -0
  77. package/esm2020/src/services/ws.service.mjs +17 -0
  78. package/esm2020/src/types/graphql-fields.type.mjs +2 -0
  79. package/esm2020/src/types/storage.type.mjs +2 -0
  80. package/esm2020/src/validators/must-match.validator.mjs +22 -0
  81. package/fesm2015/lenne.tech-ng-base-base-components.mjs +173 -0
  82. package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +1 -0
  83. package/fesm2015/lenne.tech-ng-base-base-prototype.mjs +122 -0
  84. package/fesm2015/lenne.tech-ng-base-base-prototype.mjs.map +1 -0
  85. package/fesm2015/lenne.tech-ng-base.mjs +225 -77
  86. package/fesm2015/lenne.tech-ng-base.mjs.map +1 -1
  87. package/fesm2020/lenne.tech-ng-base-base-components.mjs +171 -0
  88. package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +1 -0
  89. package/fesm2020/lenne.tech-ng-base-base-prototype.mjs +120 -0
  90. package/fesm2020/lenne.tech-ng-base-base-prototype.mjs.map +1 -0
  91. package/fesm2020/lenne.tech-ng-base.mjs +225 -77
  92. package/fesm2020/lenne.tech-ng-base.mjs.map +1 -1
  93. package/package.json +29 -20
  94. package/public-api.d.ts +55 -1
  95. package/{lib/base → src}/base.module.d.ts +2 -1
  96. package/{lib/base → src}/classes/basic-user.class.d.ts +0 -0
  97. package/{lib/base → src}/classes/graphql-enum.class.d.ts +0 -0
  98. package/{lib/base → src}/classes/graphql-meta.class.d.ts +0 -0
  99. package/{lib/base → src}/classes/graphql-type.class.d.ts +0 -0
  100. package/{lib/base → src}/classes/helper.class.d.ts +1 -0
  101. package/{lib/base → src}/classes/standard.class.d.ts +0 -0
  102. package/src/decorators/debounce.decorator.d.ts +1 -0
  103. package/{lib/base → src}/directives/context-menu.directive.d.ts +0 -0
  104. package/{lib/base → src}/directives/lazy-load.directive.d.ts +0 -0
  105. package/{lib/base → src}/directives/match-height.directive.d.ts +0 -0
  106. package/{lib/base → src}/directives/resizable.directive.d.ts +0 -0
  107. package/{lib/base → src}/enums/comparison-operator.enum.d.ts +0 -0
  108. package/{lib/base → src}/enums/graphql-request-type.enum.d.ts +0 -0
  109. package/{lib/base → src}/enums/logical-operator.enum.d.ts +0 -0
  110. package/{lib/base → src}/enums/sort-order.enum.d.ts +0 -0
  111. package/{lib/base → src}/factories/apollo-options.factory.d.ts +0 -0
  112. package/{lib/base → src}/guards/auth.guard.d.ts +0 -0
  113. package/{lib/base → src}/guards/can-deactivate.guard.d.ts +0 -0
  114. package/{lib/base → src}/guards/logout.guard.d.ts +0 -0
  115. package/{lib/base → src}/interfaces/base-module-config.interface.d.ts +0 -0
  116. package/{lib/base → src}/interfaces/can-component-deactivate.interface.d.ts +0 -0
  117. package/{lib/base → src}/interfaces/combined-filter-input.interface.d.ts +0 -0
  118. package/{lib/base → src}/interfaces/field-object.interface.d.ts +0 -0
  119. package/{lib/base → src}/interfaces/field.interface.d.ts +0 -0
  120. package/{lib/base → src}/interfaces/filter-input.interface.d.ts +0 -0
  121. package/{lib/base → src}/interfaces/find-args.interface.d.ts +0 -0
  122. package/src/interfaces/graphql-fields-object.interface.d.ts +6 -0
  123. package/{lib/base → src}/interfaces/graphql-options.interface.d.ts +0 -0
  124. package/{lib/base → src}/interfaces/graphql-plus-options.interfacen.d.ts +0 -0
  125. package/{lib/base → src}/interfaces/graphql-type-collection.interface.d.ts +0 -0
  126. package/{lib/base → src}/interfaces/single-filter-input.interface.d.ts +0 -0
  127. package/{lib/base → src}/interfaces/sort-input.interface.d.ts +0 -0
  128. package/src/pipes/date-ago.pipe.d.ts +34 -0
  129. package/{lib/base → src}/pipes/ellipses.pipe.d.ts +0 -0
  130. package/{lib/base → src}/pipes/safe-html.pipe.d.ts +0 -0
  131. package/{lib/base → src}/services/auth.service.d.ts +0 -0
  132. package/src/services/forms.service.d.ts +8 -0
  133. package/{lib/base → src}/services/fullscreen.service.d.ts +0 -0
  134. package/{lib/base → src}/services/graphql-meta.service.d.ts +0 -0
  135. package/{lib/base → src}/services/graphql-plus.service.d.ts +0 -0
  136. package/{lib/base → src}/services/graphql.service.d.ts +0 -0
  137. package/{lib/base → src}/services/image.service.d.ts +0 -0
  138. package/{lib/base → src}/services/loader.service.d.ts +0 -0
  139. package/{lib/base → src}/services/scroll.service.d.ts +0 -0
  140. package/{lib/base → src}/services/seo.service.d.ts +0 -0
  141. package/{lib/base → src}/services/storage.service.d.ts +0 -0
  142. package/src/services/theme.service.d.ts +17 -0
  143. package/{lib/base → src}/services/ws.service.d.ts +0 -0
  144. package/src/types/graphql-fields.type.d.ts +5 -0
  145. package/{lib/base → src}/types/storage.type.d.ts +0 -0
  146. package/{lib/base → src}/validators/must-match.validator.d.ts +2 -2
  147. package/esm2020/lib/base/base.module.mjs +0 -97
  148. package/esm2020/lib/base/classes/basic-user.class.mjs +0 -51
  149. package/esm2020/lib/base/classes/graphql-enum.class.mjs +0 -9
  150. package/esm2020/lib/base/classes/graphql-meta.class.mjs +0 -171
  151. package/esm2020/lib/base/classes/graphql-type.class.mjs +0 -13
  152. package/esm2020/lib/base/classes/helper.class.mjs +0 -295
  153. package/esm2020/lib/base/classes/standard.class.mjs +0 -40
  154. package/esm2020/lib/base/directives/context-menu.directive.mjs +0 -109
  155. package/esm2020/lib/base/directives/lazy-load.directive.mjs +0 -45
  156. package/esm2020/lib/base/directives/match-height.directive.mjs +0 -79
  157. package/esm2020/lib/base/directives/resizable.directive.mjs +0 -90
  158. package/esm2020/lib/base/enums/comparison-operator.enum.mjs +0 -16
  159. package/esm2020/lib/base/enums/graphql-request-type.enum.mjs +0 -10
  160. package/esm2020/lib/base/enums/logical-operator.enum.mjs +0 -10
  161. package/esm2020/lib/base/enums/sort-order.enum.mjs +0 -6
  162. package/esm2020/lib/base/factories/apollo-options.factory.mjs +0 -61
  163. package/esm2020/lib/base/guards/auth.guard.mjs +0 -61
  164. package/esm2020/lib/base/guards/can-deactivate.guard.mjs +0 -16
  165. package/esm2020/lib/base/guards/logout.guard.mjs +0 -32
  166. package/esm2020/lib/base/index.mjs +0 -2
  167. package/esm2020/lib/base/interfaces/base-module-config.interface.mjs +0 -3
  168. package/esm2020/lib/base/interfaces/can-component-deactivate.interface.mjs +0 -2
  169. package/esm2020/lib/base/interfaces/combined-filter-input.interface.mjs +0 -2
  170. package/esm2020/lib/base/interfaces/field-object.interface.mjs +0 -2
  171. package/esm2020/lib/base/interfaces/field.interface.mjs +0 -2
  172. package/esm2020/lib/base/interfaces/filter-input.interface.mjs +0 -2
  173. package/esm2020/lib/base/interfaces/find-args.interface.mjs +0 -2
  174. package/esm2020/lib/base/interfaces/graphql-options.interface.mjs +0 -2
  175. package/esm2020/lib/base/interfaces/graphql-plus-options.interfacen.mjs +0 -2
  176. package/esm2020/lib/base/interfaces/graphql-type-collection.interface.mjs +0 -2
  177. package/esm2020/lib/base/interfaces/single-filter-input.interface.mjs +0 -2
  178. package/esm2020/lib/base/interfaces/sort-input.interface.mjs +0 -2
  179. package/esm2020/lib/base/pipes/ellipses.pipe.mjs +0 -22
  180. package/esm2020/lib/base/pipes/safe-html.pipe.mjs +0 -21
  181. package/esm2020/lib/base/public-api.mjs +0 -61
  182. package/esm2020/lib/base/services/auth.service.mjs +0 -71
  183. package/esm2020/lib/base/services/fullscreen.service.mjs +0 -51
  184. package/esm2020/lib/base/services/graphql-meta.service.mjs +0 -123
  185. package/esm2020/lib/base/services/graphql-plus.service.mjs +0 -84
  186. package/esm2020/lib/base/services/graphql.service.mjs +0 -441
  187. package/esm2020/lib/base/services/image.service.mjs +0 -102
  188. package/esm2020/lib/base/services/loader.service.mjs +0 -29
  189. package/esm2020/lib/base/services/scroll.service.mjs +0 -179
  190. package/esm2020/lib/base/services/seo.service.mjs +0 -97
  191. package/esm2020/lib/base/services/storage.service.mjs +0 -132
  192. package/esm2020/lib/base/services/ws.service.mjs +0 -17
  193. package/esm2020/lib/base/types/storage.type.mjs +0 -2
  194. package/esm2020/lib/base/validators/must-match.validator.mjs +0 -22
  195. package/esm2020/src/lib/base/base.module.mjs +0 -97
  196. package/esm2020/src/lib/base/classes/basic-user.class.mjs +0 -51
  197. package/esm2020/src/lib/base/classes/graphql-enum.class.mjs +0 -9
  198. package/esm2020/src/lib/base/classes/graphql-meta.class.mjs +0 -171
  199. package/esm2020/src/lib/base/classes/graphql-type.class.mjs +0 -13
  200. package/esm2020/src/lib/base/classes/helper.class.mjs +0 -295
  201. package/esm2020/src/lib/base/classes/standard.class.mjs +0 -40
  202. package/esm2020/src/lib/base/directives/context-menu.directive.mjs +0 -109
  203. package/esm2020/src/lib/base/directives/lazy-load.directive.mjs +0 -45
  204. package/esm2020/src/lib/base/directives/match-height.directive.mjs +0 -79
  205. package/esm2020/src/lib/base/directives/resizable.directive.mjs +0 -90
  206. package/esm2020/src/lib/base/enums/comparison-operator.enum.mjs +0 -16
  207. package/esm2020/src/lib/base/enums/graphql-request-type.enum.mjs +0 -10
  208. package/esm2020/src/lib/base/enums/logical-operator.enum.mjs +0 -10
  209. package/esm2020/src/lib/base/enums/sort-order.enum.mjs +0 -6
  210. package/esm2020/src/lib/base/factories/apollo-options.factory.mjs +0 -61
  211. package/esm2020/src/lib/base/guards/auth.guard.mjs +0 -61
  212. package/esm2020/src/lib/base/guards/can-deactivate.guard.mjs +0 -16
  213. package/esm2020/src/lib/base/guards/logout.guard.mjs +0 -32
  214. package/esm2020/src/lib/base/interfaces/base-module-config.interface.mjs +0 -3
  215. package/esm2020/src/lib/base/interfaces/can-component-deactivate.interface.mjs +0 -2
  216. package/esm2020/src/lib/base/interfaces/combined-filter-input.interface.mjs +0 -2
  217. package/esm2020/src/lib/base/interfaces/field-object.interface.mjs +0 -2
  218. package/esm2020/src/lib/base/interfaces/field.interface.mjs +0 -2
  219. package/esm2020/src/lib/base/interfaces/filter-input.interface.mjs +0 -2
  220. package/esm2020/src/lib/base/interfaces/find-args.interface.mjs +0 -2
  221. package/esm2020/src/lib/base/interfaces/graphql-options.interface.mjs +0 -2
  222. package/esm2020/src/lib/base/interfaces/graphql-plus-options.interfacen.mjs +0 -2
  223. package/esm2020/src/lib/base/interfaces/graphql-type-collection.interface.mjs +0 -2
  224. package/esm2020/src/lib/base/interfaces/single-filter-input.interface.mjs +0 -2
  225. package/esm2020/src/lib/base/interfaces/sort-input.interface.mjs +0 -2
  226. package/esm2020/src/lib/base/lenne.tech-ng-base-src-lib-base.mjs +0 -5
  227. package/esm2020/src/lib/base/pipes/ellipses.pipe.mjs +0 -22
  228. package/esm2020/src/lib/base/pipes/safe-html.pipe.mjs +0 -21
  229. package/esm2020/src/lib/base/public-api.mjs +0 -61
  230. package/esm2020/src/lib/base/services/auth.service.mjs +0 -71
  231. package/esm2020/src/lib/base/services/fullscreen.service.mjs +0 -51
  232. package/esm2020/src/lib/base/services/graphql-meta.service.mjs +0 -123
  233. package/esm2020/src/lib/base/services/graphql-plus.service.mjs +0 -84
  234. package/esm2020/src/lib/base/services/graphql.service.mjs +0 -441
  235. package/esm2020/src/lib/base/services/image.service.mjs +0 -102
  236. package/esm2020/src/lib/base/services/loader.service.mjs +0 -29
  237. package/esm2020/src/lib/base/services/scroll.service.mjs +0 -179
  238. package/esm2020/src/lib/base/services/seo.service.mjs +0 -97
  239. package/esm2020/src/lib/base/services/storage.service.mjs +0 -132
  240. package/esm2020/src/lib/base/services/ws.service.mjs +0 -17
  241. package/esm2020/src/lib/base/types/storage.type.mjs +0 -2
  242. package/esm2020/src/lib/base/validators/must-match.validator.mjs +0 -22
  243. package/fesm2015/lenne.tech-ng-base-src-lib-base.mjs +0 -2470
  244. package/fesm2015/lenne.tech-ng-base-src-lib-base.mjs.map +0 -1
  245. package/fesm2020/lenne.tech-ng-base-src-lib-base.mjs +0 -2524
  246. package/fesm2020/lenne.tech-ng-base-src-lib-base.mjs.map +0 -1
  247. package/lib/base/index.d.ts +0 -1
  248. package/lib/base/public-api.d.ts +0 -49
  249. package/src/lib/base/base.module.d.ts +0 -21
  250. package/src/lib/base/classes/basic-user.class.d.ts +0 -26
  251. package/src/lib/base/classes/graphql-enum.class.d.ts +0 -7
  252. package/src/lib/base/classes/graphql-meta.class.d.ts +0 -46
  253. package/src/lib/base/classes/graphql-type.class.d.ts +0 -9
  254. package/src/lib/base/classes/helper.class.d.ts +0 -98
  255. package/src/lib/base/classes/standard.class.d.ts +0 -32
  256. package/src/lib/base/directives/context-menu.directive.d.ts +0 -22
  257. package/src/lib/base/directives/lazy-load.directive.d.ts +0 -17
  258. package/src/lib/base/directives/match-height.directive.d.ts +0 -19
  259. package/src/lib/base/directives/resizable.directive.d.ts +0 -26
  260. package/src/lib/base/enums/comparison-operator.enum.d.ts +0 -14
  261. package/src/lib/base/enums/graphql-request-type.enum.d.ts +0 -8
  262. package/src/lib/base/enums/logical-operator.enum.d.ts +0 -8
  263. package/src/lib/base/enums/sort-order.enum.d.ts +0 -4
  264. package/src/lib/base/factories/apollo-options.factory.d.ts +0 -18
  265. package/src/lib/base/guards/auth.guard.d.ts +0 -27
  266. package/src/lib/base/guards/can-deactivate.guard.d.ts +0 -11
  267. package/src/lib/base/guards/logout.guard.d.ts +0 -16
  268. package/src/lib/base/interfaces/base-module-config.interface.d.ts +0 -57
  269. package/src/lib/base/interfaces/can-component-deactivate.interface.d.ts +0 -7
  270. package/src/lib/base/interfaces/combined-filter-input.interface.d.ts +0 -9
  271. package/src/lib/base/interfaces/field-object.interface.d.ts +0 -6
  272. package/src/lib/base/interfaces/field.interface.d.ts +0 -5
  273. package/src/lib/base/interfaces/filter-input.interface.d.ts +0 -9
  274. package/src/lib/base/interfaces/find-args.interface.d.ts +0 -10
  275. package/src/lib/base/interfaces/graphql-options.interface.d.ts +0 -11
  276. package/src/lib/base/interfaces/graphql-plus-options.interfacen.d.ts +0 -9
  277. package/src/lib/base/interfaces/graphql-type-collection.interface.d.ts +0 -7
  278. package/src/lib/base/interfaces/single-filter-input.interface.d.ts +0 -11
  279. package/src/lib/base/interfaces/sort-input.interface.d.ts +0 -5
  280. package/src/lib/base/package.json +0 -10
  281. package/src/lib/base/pipes/ellipses.pipe.d.ts +0 -10
  282. package/src/lib/base/pipes/safe-html.pipe.d.ts +0 -13
  283. package/src/lib/base/public-api.d.ts +0 -49
  284. package/src/lib/base/services/auth.service.d.ts +0 -32
  285. package/src/lib/base/services/fullscreen.service.d.ts +0 -18
  286. package/src/lib/base/services/graphql-meta.service.d.ts +0 -45
  287. package/src/lib/base/services/graphql-plus.service.d.ts +0 -25
  288. package/src/lib/base/services/graphql.service.d.ts +0 -56
  289. package/src/lib/base/services/image.service.d.ts +0 -27
  290. package/src/lib/base/services/loader.service.d.ts +0 -13
  291. package/src/lib/base/services/scroll.service.d.ts +0 -85
  292. package/src/lib/base/services/seo.service.d.ts +0 -49
  293. package/src/lib/base/services/storage.service.d.ts +0 -48
  294. package/src/lib/base/services/ws.service.d.ts +0 -8
  295. package/src/lib/base/types/storage.type.d.ts +0 -4
  296. package/src/lib/base/validators/must-match.validator.d.ts +0 -6
@@ -0,0 +1,79 @@
1
+ import { Directive, HostListener, Inject, Input, PLATFORM_ID } from '@angular/core';
2
+ import { isPlatformBrowser } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../services/image.service";
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
+ async matchHeight(parent, target) {
23
+ if (!parent) {
24
+ return;
25
+ }
26
+ let classNames;
27
+ if (!Array.isArray(target)) {
28
+ classNames = [target];
29
+ }
30
+ else {
31
+ classNames = target;
32
+ }
33
+ for (const className of classNames) {
34
+ // find all child structureElements with the selected class name
35
+ const children = parent.getElementsByClassName(className);
36
+ if (!children || children.length < 2) {
37
+ continue;
38
+ }
39
+ // Load images of children
40
+ if (this.loadImages) {
41
+ await this.imageService.preLoadImages({ elements: children });
42
+ }
43
+ // reset all children height
44
+ Array.from(children).forEach((element) => {
45
+ element.style.height = 'initial';
46
+ });
47
+ // get all the child structureElements heights
48
+ const itemHeights = Array.from(children).map((element) => {
49
+ if (element.getBoundingClientRect) {
50
+ return element.getBoundingClientRect().height;
51
+ }
52
+ return 0;
53
+ });
54
+ // find out the tallest one
55
+ const maxHeight = itemHeights.reduce((prev, curr) => (curr > prev ? curr : prev), 0);
56
+ // update the child structureElements height to the tallest one
57
+ Array.from(children).forEach((element) => (element.style.height = `${maxHeight}px`));
58
+ }
59
+ }
60
+ }
61
+ MatchHeightDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MatchHeightDirective, deps: [{ token: i0.ElementRef }, { token: i1.ImageService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive });
62
+ MatchHeightDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.3", type: MatchHeightDirective, selector: "[ltMatchHeight]", inputs: { ltMatchHeight: "ltMatchHeight", loadImages: "loadImages" }, host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0 });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MatchHeightDirective, decorators: [{
64
+ type: Directive,
65
+ args: [{
66
+ selector: '[ltMatchHeight]',
67
+ }]
68
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ImageService }, { type: undefined, decorators: [{
69
+ type: Inject,
70
+ args: [PLATFORM_ID]
71
+ }] }]; }, propDecorators: { ltMatchHeight: [{
72
+ type: Input
73
+ }], loadImages: [{
74
+ type: Input
75
+ }], onResize: [{
76
+ type: HostListener,
77
+ args: ['window:resize']
78
+ }] } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtaGVpZ2h0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2RpcmVjdGl2ZXMvbWF0Y2gtaGVpZ2h0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRXBEOztHQUVHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQVkvQixZQUFzQixFQUFjLEVBQVksWUFBMEIsRUFBdUIsVUFBa0I7UUFBN0YsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFZLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBUDFFLDREQUE0RDtRQUU1RCxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBTWhCLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQW1CLEVBQUUsTUFBeUI7UUFDOUQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU87U0FDUjtRQUVELElBQUksVUFBVSxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNMLFVBQVUsR0FBRyxNQUFNLENBQUM7U0FDckI7UUFFRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUNsQyxnRUFBZ0U7WUFDaEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRTFELElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3BDLFNBQVM7YUFDVjtZQUVELDBCQUEwQjtZQUMxQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ25CLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQzthQUMvRDtZQUVELDRCQUE0QjtZQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQW9CLEVBQUUsRUFBRTtnQkFDcEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1lBRUgsOENBQThDO1lBQzlDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3ZELElBQUksT0FBTyxDQUFDLHFCQUFxQixFQUFFO29CQUNqQyxPQUFPLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztpQkFDL0M7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztZQUVILDJCQUEyQjtZQUMzQixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXJGLCtEQUErRDtZQUMvRCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQW9CLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDbkc7SUFDSCxDQUFDOztpSEFyRVUsb0JBQW9CLHdFQVlxRCxXQUFXO3FHQVpwRixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1Qjs7MEJBYThFLE1BQU07MkJBQUMsV0FBVzs0Q0FUL0YsYUFBYTtzQkFEWixLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFXTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbWFnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBTZXQgc2FtZSBoZWlnaHQgKG1heGltdW0pIHRvIGRpZmZlcmVudCBlbGVtZW50c1xuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbHRNYXRjaEhlaWdodF0nLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRjaEhlaWdodERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIGNsYXNzIG5hbWUgdG8gbWF0Y2ggaGVpZ2h0XG4gIEBJbnB1dCgpXG4gIGx0TWF0Y2hIZWlnaHQ6IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIC8vIFJlcGxhY2UgbGF6eSBsb2FkaW5nIGltYWdlcyB3aXRoIGltbWVkaWF0ZSBsb2FkaW5nIGltYWdlc1xuICBASW5wdXQoKVxuICBsb2FkSW1hZ2VzID0gdHJ1ZTtcblxuICAvLyBXZXRoZXIgY3VycmVudCBwbGF0Zm9ybSBpcyBhIGJyb3dzZXJcbiAgcmVhZG9ubHkgaXNCcm93c2VyOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbDogRWxlbWVudFJlZiwgcHJvdGVjdGVkIGltYWdlU2VydmljZTogSW1hZ2VTZXJ2aWNlLCBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIG9uUmVzaXplKCkge1xuICAgIHRoaXMubWF0Y2hIZWlnaHQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmx0TWF0Y2hIZWlnaHQpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tYXRjaEhlaWdodCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMubHRNYXRjaEhlaWdodCk7XG4gIH1cblxuICBhc3luYyBtYXRjaEhlaWdodChwYXJlbnQ6IEhUTUxFbGVtZW50LCB0YXJnZXQ6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY2xhc3NOYW1lcztcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgY2xhc3NOYW1lcyA9IFt0YXJnZXRdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGFzc05hbWVzID0gdGFyZ2V0O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2xhc3NOYW1lIG9mIGNsYXNzTmFtZXMpIHtcbiAgICAgIC8vIGZpbmQgYWxsIGNoaWxkIHN0cnVjdHVyZUVsZW1lbnRzIHdpdGggdGhlIHNlbGVjdGVkIGNsYXNzIG5hbWVcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gcGFyZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lKTtcblxuICAgICAgaWYgKCFjaGlsZHJlbiB8fCBjaGlsZHJlbi5sZW5ndGggPCAyKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBMb2FkIGltYWdlcyBvZiBjaGlsZHJlblxuICAgICAgaWYgKHRoaXMubG9hZEltYWdlcykge1xuICAgICAgICBhd2FpdCB0aGlzLmltYWdlU2VydmljZS5wcmVMb2FkSW1hZ2VzKHsgZWxlbWVudHM6IGNoaWxkcmVuIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyByZXNldCBhbGwgY2hpbGRyZW4gaGVpZ2h0XG4gICAgICBBcnJheS5mcm9tKGNoaWxkcmVuKS5mb3JFYWNoKChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9ICdpbml0aWFsJztcbiAgICAgIH0pO1xuXG4gICAgICAvLyBnZXQgYWxsIHRoZSBjaGlsZCBzdHJ1Y3R1cmVFbGVtZW50cyBoZWlnaHRzXG4gICAgICBjb25zdCBpdGVtSGVpZ2h0cyA9IEFycmF5LmZyb20oY2hpbGRyZW4pLm1hcCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICAgICAgICByZXR1cm4gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9KTtcblxuICAgICAgLy8gZmluZCBvdXQgdGhlIHRhbGxlc3Qgb25lXG4gICAgICBjb25zdCBtYXhIZWlnaHQgPSBpdGVtSGVpZ2h0cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IChjdXJyID4gcHJldiA/IGN1cnIgOiBwcmV2KSwgMCk7XG5cbiAgICAgIC8vIHVwZGF0ZSB0aGUgY2hpbGQgc3RydWN0dXJlRWxlbWVudHMgaGVpZ2h0IHRvIHRoZSB0YWxsZXN0IG9uZVxuICAgICAgQXJyYXkuZnJvbShjaGlsZHJlbikuZm9yRWFjaCgoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IChlbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGApKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,90 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Reszise detection
5
+ * (inpsired by: https://stackblitz.com/edit/angular-resizable)
6
+ */
7
+ export class ResizableDirective {
8
+ constructor(el) {
9
+ this.el = el;
10
+ this.resizableGrabWidth = 8;
11
+ this.resizableMinWidth = 10;
12
+ this.dragging = false;
13
+ }
14
+ ngOnInit() {
15
+ this.addListenerToDocument();
16
+ this.addListenerToElement();
17
+ }
18
+ mouseMoveG(evt) {
19
+ if (!this.dragging) {
20
+ return;
21
+ }
22
+ this.newWidth(evt.clientX - this.el.nativeElement.offsetLeft);
23
+ evt.stopPropagation();
24
+ }
25
+ newWidth(wid) {
26
+ const result = Math.max(this.resizableMinWidth, wid);
27
+ this.el.nativeElement.style.width = result + 'px';
28
+ }
29
+ mouseDown(evt) {
30
+ if (this.inDragRegion(evt)) {
31
+ this.dragging = true;
32
+ this.preventGlobalMouseEvents();
33
+ evt.stopPropagation();
34
+ }
35
+ }
36
+ restoreGlobalMouseEvents() {
37
+ document.body.style['pointer-events'] = 'auto';
38
+ }
39
+ mouseUpG(evt) {
40
+ if (!this.dragging) {
41
+ return;
42
+ }
43
+ this.restoreGlobalMouseEvents();
44
+ this.dragging = false;
45
+ evt.stopPropagation();
46
+ }
47
+ mouseMove(evt) {
48
+ if (this.inDragRegion(evt) || this.dragging) {
49
+ this.el.nativeElement.style.cursor = 'col-resize';
50
+ }
51
+ else {
52
+ this.el.nativeElement.style.cursor = 'default';
53
+ }
54
+ }
55
+ preventGlobalMouseEvents() {
56
+ document.body.style['pointer-events'] = 'none';
57
+ }
58
+ inDragRegion(evt) {
59
+ return this.el.nativeElement.clientWidth - evt.clientX + this.el.nativeElement.offsetLeft < this.resizableGrabWidth;
60
+ }
61
+ addListenerToDocument() {
62
+ document.addEventListener('mousemove', (e) => {
63
+ this.mouseMoveG(e);
64
+ }, true);
65
+ document.addEventListener('mouseup', (e) => {
66
+ this.mouseUpG(e);
67
+ }, true);
68
+ }
69
+ addListenerToElement() {
70
+ this.el.nativeElement.addEventListener('mousedown', (e) => {
71
+ this.mouseDown(e);
72
+ }, true);
73
+ this.el.nativeElement.addEventListener('mousemove', (e) => {
74
+ this.mouseMove(e);
75
+ }, true);
76
+ }
77
+ }
78
+ ResizableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ResizableDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
79
+ ResizableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.3", type: ResizableDirective, selector: "[ltResizable]", inputs: { resizableGrabWidth: "resizableGrabWidth", resizableMinWidth: "resizableMinWidth" }, ngImport: i0 });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ResizableDirective, decorators: [{
81
+ type: Directive,
82
+ args: [{
83
+ selector: '[ltResizable]',
84
+ }]
85
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { resizableGrabWidth: [{
86
+ type: Input
87
+ }], resizableMinWidth: [{
88
+ type: Input
89
+ }] } });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2RpcmVjdGl2ZXMvcmVzaXphYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFFckU7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUx6Qix1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDdkIsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBRWhDLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFFb0IsQ0FBQztJQUV0QyxRQUFRO1FBQ04sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFHO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlELEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQUc7UUFDVixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDcEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFHO1FBQ1gsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDakQsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFVO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQUc7UUFDWCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMzQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQztTQUNuRDthQUFNO1lBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ2pELENBQUM7SUFFRCxZQUFZLENBQUMsR0FBRztRQUNkLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUN0SCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDdkIsV0FBVyxFQUNYLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsRUFDRCxJQUFJLENBQ0wsQ0FBQztRQUVGLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDdkIsU0FBUyxFQUNULENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUMsRUFDRCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQ3BDLFdBQVcsRUFDWCxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixDQUFDLEVBQ0QsSUFBSSxDQUNMLENBQUM7UUFFRixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FDcEMsV0FBVyxFQUNYLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLENBQUMsRUFDRCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7OytHQWpHVSxrQkFBa0I7bUdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjtpR0FFVSxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogUmVzemlzZSBkZXRlY3Rpb25cbiAqIChpbnBzaXJlZCBieTogaHR0cHM6Ly9zdGFja2JsaXR6LmNvbS9lZGl0L2FuZ3VsYXItcmVzaXphYmxlKVxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbHRSZXNpemFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgUmVzaXphYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcmVzaXphYmxlR3JhYldpZHRoID0gODtcbiAgQElucHV0KCkgcmVzaXphYmxlTWluV2lkdGggPSAxMDtcblxuICBkcmFnZ2luZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRMaXN0ZW5lclRvRG9jdW1lbnQoKTtcbiAgICB0aGlzLmFkZExpc3RlbmVyVG9FbGVtZW50KCk7XG4gIH1cblxuICBtb3VzZU1vdmVHKGV2dCkge1xuICAgIGlmICghdGhpcy5kcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm5ld1dpZHRoKGV2dC5jbGllbnRYIC0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQpO1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG5ld1dpZHRoKHdpZCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IE1hdGgubWF4KHRoaXMucmVzaXphYmxlTWluV2lkdGgsIHdpZCk7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gcmVzdWx0ICsgJ3B4JztcbiAgfVxuXG4gIG1vdXNlRG93bihldnQpIHtcbiAgICBpZiAodGhpcy5pbkRyYWdSZWdpb24oZXZ0KSkge1xuICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICB0aGlzLnByZXZlbnRHbG9iYWxNb3VzZUV2ZW50cygpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHJlc3RvcmVHbG9iYWxNb3VzZUV2ZW50cygpIHtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlWydwb2ludGVyLWV2ZW50cyddID0gJ2F1dG8nO1xuICB9XG5cbiAgbW91c2VVcEcoZXZ0OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5kcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJlc3RvcmVHbG9iYWxNb3VzZUV2ZW50cygpO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBtb3VzZU1vdmUoZXZ0KSB7XG4gICAgaWYgKHRoaXMuaW5EcmFnUmVnaW9uKGV2dCkgfHwgdGhpcy5kcmFnZ2luZykge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdjb2wtcmVzaXplJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JztcbiAgICB9XG4gIH1cblxuICBwcmV2ZW50R2xvYmFsTW91c2VFdmVudHMoKSB7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZVsncG9pbnRlci1ldmVudHMnXSA9ICdub25lJztcbiAgfVxuXG4gIGluRHJhZ1JlZ2lvbihldnQpIHtcbiAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoIC0gZXZ0LmNsaWVudFggKyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCA8IHRoaXMucmVzaXphYmxlR3JhYldpZHRoO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRMaXN0ZW5lclRvRG9jdW1lbnQoKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdtb3VzZW1vdmUnLFxuICAgICAgKGUpID0+IHtcbiAgICAgICAgdGhpcy5tb3VzZU1vdmVHKGUpO1xuICAgICAgfSxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdtb3VzZXVwJyxcbiAgICAgIChlKSA9PiB7XG4gICAgICAgIHRoaXMubW91c2VVcEcoZSk7XG4gICAgICB9LFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZExpc3RlbmVyVG9FbGVtZW50KCkge1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ21vdXNlZG93bicsXG4gICAgICAoZSkgPT4ge1xuICAgICAgICB0aGlzLm1vdXNlRG93bihlKTtcbiAgICAgIH0sXG4gICAgICB0cnVlXG4gICAgKTtcblxuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ21vdXNlbW92ZScsXG4gICAgICAoZSkgPT4ge1xuICAgICAgICB0aGlzLm1vdXNlTW92ZShlKTtcbiAgICAgIH0sXG4gICAgICB0cnVlXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Comparison operator enum
3
+ */
4
+ export var ComparisonOperatorEnum;
5
+ (function (ComparisonOperatorEnum) {
6
+ ComparisonOperatorEnum["EQ"] = "EQ";
7
+ ComparisonOperatorEnum["GT"] = "GT";
8
+ ComparisonOperatorEnum["GTE"] = "GTE";
9
+ ComparisonOperatorEnum["IN"] = "IN";
10
+ ComparisonOperatorEnum["LT"] = "LT";
11
+ ComparisonOperatorEnum["LTE"] = "LTE";
12
+ ComparisonOperatorEnum["NE"] = "NE";
13
+ ComparisonOperatorEnum["NIN"] = "NIN";
14
+ ComparisonOperatorEnum["REGEX"] = "REGEX";
15
+ })(ComparisonOperatorEnum || (ComparisonOperatorEnum = {}));
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyaXNvbi1vcGVyYXRvci5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvZW51bXMvY29tcGFyaXNvbi1vcGVyYXRvci5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksc0JBVVg7QUFWRCxXQUFZLHNCQUFzQjtJQUNoQyxtQ0FBUyxDQUFBO0lBQ1QsbUNBQVMsQ0FBQTtJQUNULHFDQUFXLENBQUE7SUFDWCxtQ0FBUyxDQUFBO0lBQ1QsbUNBQVMsQ0FBQTtJQUNULHFDQUFXLENBQUE7SUFDWCxtQ0FBUyxDQUFBO0lBQ1QscUNBQVcsQ0FBQTtJQUNYLHlDQUFlLENBQUE7QUFDakIsQ0FBQyxFQVZXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFVakMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXBhcmlzb24gb3BlcmF0b3IgZW51bVxuICovXG5leHBvcnQgZW51bSBDb21wYXJpc29uT3BlcmF0b3JFbnVtIHtcbiAgRVEgPSAnRVEnLFxuICBHVCA9ICdHVCcsXG4gIEdURSA9ICdHVEUnLFxuICBJTiA9ICdJTicsXG4gIExUID0gJ0xUJyxcbiAgTFRFID0gJ0xURScsXG4gIE5FID0gJ05FJyxcbiAgTklOID0gJ05JTicsXG4gIFJFR0VYID0gJ1JFR0VYJyxcbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ /**
2
+ * GraphQL request type enum
3
+ */
4
+ export var GraphQLRequestType;
5
+ (function (GraphQLRequestType) {
6
+ GraphQLRequestType["QUERY"] = "query";
7
+ GraphQLRequestType["MUTATION"] = "mutation";
8
+ GraphQLRequestType["SUBSCRIPTION"] = "subscription";
9
+ })(GraphQLRequestType || (GraphQLRequestType = {}));
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1yZXF1ZXN0LXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2VudW1zL2dyYXBocWwtcmVxdWVzdC10eXBlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzVCLHFDQUFlLENBQUE7SUFDZiwyQ0FBcUIsQ0FBQTtJQUNyQixtREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBSlcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUk3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR3JhcGhRTCByZXF1ZXN0IHR5cGUgZW51bVxuICovXG5leHBvcnQgZW51bSBHcmFwaFFMUmVxdWVzdFR5cGUge1xuICBRVUVSWSA9ICdxdWVyeScsXG4gIE1VVEFUSU9OID0gJ211dGF0aW9uJyxcbiAgU1VCU0NSSVBUSU9OID0gJ3N1YnNjcmlwdGlvbicsXG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Logical operator enum
3
+ */
4
+ export var LogicalOperatorEnum;
5
+ (function (LogicalOperatorEnum) {
6
+ LogicalOperatorEnum["AND"] = "AND";
7
+ LogicalOperatorEnum["NOR"] = "NOR";
8
+ LogicalOperatorEnum["OR"] = "OR";
9
+ })(LogicalOperatorEnum || (LogicalOperatorEnum = {}));
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naWNhbC1vcGVyYXRvci5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvZW51bXMvbG9naWNhbC1vcGVyYXRvci5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksbUJBSVg7QUFKRCxXQUFZLG1CQUFtQjtJQUM3QixrQ0FBVyxDQUFBO0lBQ1gsa0NBQVcsQ0FBQTtJQUNYLGdDQUFTLENBQUE7QUFDWCxDQUFDLEVBSlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUk5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTG9naWNhbCBvcGVyYXRvciBlbnVtXG4gKi9cbmV4cG9ydCBlbnVtIExvZ2ljYWxPcGVyYXRvckVudW0ge1xuICBBTkQgPSAnQU5EJyxcbiAgTk9SID0gJ05PUicsXG4gIE9SID0gJ09SJyxcbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export var SortOrderEnum;
2
+ (function (SortOrderEnum) {
3
+ SortOrderEnum["ASC"] = "ASC";
4
+ SortOrderEnum["DESC"] = "DESC";
5
+ })(SortOrderEnum || (SortOrderEnum = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1vcmRlci5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvZW51bXMvc29ydC1vcmRlci5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDdkIsNEJBQVcsQ0FBQTtJQUNYLDhCQUFhLENBQUE7QUFDZixDQUFDLEVBSFcsYUFBYSxLQUFiLGFBQWEsUUFHeEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTb3J0T3JkZXJFbnVtIHtcbiAgQVNDID0gJ0FTQycsXG4gIERFU0MgPSAnREVTQycsXG59XG4iXX0=
@@ -0,0 +1,61 @@
1
+ import { ApolloLink, concat, split } from '@apollo/client/core';
2
+ import { InMemoryCache } from '@apollo/client/cache';
3
+ import { WebSocketLink } from '@apollo/client/link/ws';
4
+ import { getMainDefinition } from '@apollo/client/utilities';
5
+ /**
6
+ * Factory for apollo-angular options
7
+ */
8
+ export function apolloOptionsFactory(baseModuleConfig, httpLink, authService, wsService) {
9
+ const links = [];
10
+ const defaultUrl = 'api.' + window.location.href + '/graphql';
11
+ const http = httpLink.create({
12
+ uri: baseModuleConfig.apiUrl ? baseModuleConfig.apiUrl : 'https://' + defaultUrl,
13
+ });
14
+ const authMiddleware = new ApolloLink((operation, forward) => {
15
+ const headers = {};
16
+ if (localStorage) {
17
+ const token = authService.token || null;
18
+ if (token) {
19
+ headers.Authorization = 'Bearer ' + token;
20
+ }
21
+ operation.setContext(() => ({ headers }));
22
+ }
23
+ return forward(operation);
24
+ });
25
+ if (baseModuleConfig.wsUrl) {
26
+ const wsLink = new WebSocketLink({
27
+ uri: baseModuleConfig.wsUrl,
28
+ options: {
29
+ reconnect: true,
30
+ connectionParams: () => ({
31
+ Authorization: authService.token ? 'Bearer ' + authService.token : undefined,
32
+ }),
33
+ },
34
+ });
35
+ // Set client for reconnection on logout/login
36
+ wsService.client = wsLink.subscriptionClient;
37
+ // using the ability to split links, you can send data to each link
38
+ // depending on what kind of operation is being sent
39
+ links.push(split(
40
+ // split based on operation type
41
+ ({ query }) => {
42
+ // @ts-ignore
43
+ const { kind, operation } = getMainDefinition(query);
44
+ return kind === 'OperationDefinition' && operation === 'subscription';
45
+ }, wsLink, concat(authMiddleware, http)));
46
+ }
47
+ else {
48
+ links.push(http);
49
+ links.push(authMiddleware);
50
+ }
51
+ return {
52
+ link: ApolloLink.from(links),
53
+ cache: new InMemoryCache(),
54
+ defaultOptions: {
55
+ query: {
56
+ fetchPolicy: 'network-only',
57
+ },
58
+ },
59
+ };
60
+ }
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBvbGxvLW9wdGlvbnMuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2ZhY3Rvcmllcy9hcG9sbG8tb3B0aW9ucy5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHN0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLGdCQUFrQyxFQUNsQyxRQUFrQixFQUNsQixXQUF3QixFQUN4QixTQUFvQjtJQUVwQixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDakIsTUFBTSxVQUFVLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztJQUU5RCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzNCLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLFVBQVU7S0FDakYsQ0FBQyxDQUFDO0lBRUgsTUFBTSxjQUFjLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDM0QsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO1lBQ3hDLElBQUksS0FBSyxFQUFFO2dCQUNULE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxHQUFHLEtBQUssQ0FBQzthQUMzQztZQUNELFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzQztRQUNELE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7UUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDL0IsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEtBQUs7WUFDM0IsT0FBTyxFQUFFO2dCQUNQLFNBQVMsRUFBRSxJQUFJO2dCQUNmLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBQ3ZCLGFBQWEsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUztpQkFDN0UsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsOENBQThDO1FBQzlDLFNBQVMsQ0FBQyxNQUFNLEdBQUksTUFBYyxDQUFDLGtCQUFrQixDQUFDO1FBRXRELG1FQUFtRTtRQUNuRSxvREFBb0Q7UUFDcEQsS0FBSyxDQUFDLElBQUksQ0FDUixLQUFLO1FBQ0gsZ0NBQWdDO1FBQ2hDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ1osYUFBYTtZQUNiLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsT0FBTyxJQUFJLEtBQUsscUJBQXFCLElBQUksU0FBUyxLQUFLLGNBQWMsQ0FBQztRQUN4RSxDQUFDLEVBQ0QsTUFBTSxFQUNOLE1BQU0sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQzdCLENBQ0YsQ0FBQztLQUNIO1NBQU07UUFDTCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDNUI7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVCLEtBQUssRUFBRSxJQUFJLGFBQWEsRUFBRTtRQUMxQixjQUFjLEVBQUU7WUFDZCxLQUFLLEVBQUU7Z0JBQ0wsV0FBVyxFQUFFLGNBQWM7YUFDNUI7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cExpbmsgfSBmcm9tICdhcG9sbG8tYW5ndWxhci9odHRwJztcbmltcG9ydCB7IEJhc2VNb2R1bGVDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Jhc2UtbW9kdWxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBvbGxvTGluaywgY29uY2F0LCBzcGxpdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgSW5NZW1vcnlDYWNoZSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NhY2hlJztcbmltcG9ydCB7IFdlYlNvY2tldExpbmsgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9saW5rL3dzJztcbmltcG9ydCB7IGdldE1haW5EZWZpbml0aW9uIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzJztcbmltcG9ydCB7IFdzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dzLnNlcnZpY2UnO1xuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGFwb2xsby1hbmd1bGFyIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwb2xsb09wdGlvbnNGYWN0b3J5KFxuICBiYXNlTW9kdWxlQ29uZmlnOiBCYXNlTW9kdWxlQ29uZmlnLFxuICBodHRwTGluazogSHR0cExpbmssXG4gIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgd3NTZXJ2aWNlOiBXc1NlcnZpY2Vcbikge1xuICBjb25zdCBsaW5rcyA9IFtdO1xuICBjb25zdCBkZWZhdWx0VXJsID0gJ2FwaS4nICsgd2luZG93LmxvY2F0aW9uLmhyZWYgKyAnL2dyYXBocWwnO1xuXG4gIGNvbnN0IGh0dHAgPSBodHRwTGluay5jcmVhdGUoe1xuICAgIHVyaTogYmFzZU1vZHVsZUNvbmZpZy5hcGlVcmwgPyBiYXNlTW9kdWxlQ29uZmlnLmFwaVVybCA6ICdodHRwczovLycgKyBkZWZhdWx0VXJsLFxuICB9KTtcblxuICBjb25zdCBhdXRoTWlkZGxld2FyZSA9IG5ldyBBcG9sbG9MaW5rKChvcGVyYXRpb24sIGZvcndhcmQpID0+IHtcbiAgICBjb25zdCBoZWFkZXJzOiBhbnkgPSB7fTtcbiAgICBpZiAobG9jYWxTdG9yYWdlKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGF1dGhTZXJ2aWNlLnRva2VuIHx8IG51bGw7XG4gICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgaGVhZGVycy5BdXRob3JpemF0aW9uID0gJ0JlYXJlciAnICsgdG9rZW47XG4gICAgICB9XG4gICAgICBvcGVyYXRpb24uc2V0Q29udGV4dCgoKSA9PiAoeyBoZWFkZXJzIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcndhcmQob3BlcmF0aW9uKTtcbiAgfSk7XG5cbiAgaWYgKGJhc2VNb2R1bGVDb25maWcud3NVcmwpIHtcbiAgICBjb25zdCB3c0xpbmsgPSBuZXcgV2ViU29ja2V0TGluayh7XG4gICAgICB1cmk6IGJhc2VNb2R1bGVDb25maWcud3NVcmwsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHJlY29ubmVjdDogdHJ1ZSxcbiAgICAgICAgY29ubmVjdGlvblBhcmFtczogKCkgPT4gKHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBhdXRoU2VydmljZS50b2tlbiA/ICdCZWFyZXIgJyArIGF1dGhTZXJ2aWNlLnRva2VuIDogdW5kZWZpbmVkLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBTZXQgY2xpZW50IGZvciByZWNvbm5lY3Rpb24gb24gbG9nb3V0L2xvZ2luXG4gICAgd3NTZXJ2aWNlLmNsaWVudCA9ICh3c0xpbmsgYXMgYW55KS5zdWJzY3JpcHRpb25DbGllbnQ7XG5cbiAgICAvLyB1c2luZyB0aGUgYWJpbGl0eSB0byBzcGxpdCBsaW5rcywgeW91IGNhbiBzZW5kIGRhdGEgdG8gZWFjaCBsaW5rXG4gICAgLy8gZGVwZW5kaW5nIG9uIHdoYXQga2luZCBvZiBvcGVyYXRpb24gaXMgYmVpbmcgc2VudFxuICAgIGxpbmtzLnB1c2goXG4gICAgICBzcGxpdChcbiAgICAgICAgLy8gc3BsaXQgYmFzZWQgb24gb3BlcmF0aW9uIHR5cGVcbiAgICAgICAgKHsgcXVlcnkgfSkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBjb25zdCB7IGtpbmQsIG9wZXJhdGlvbiB9ID0gZ2V0TWFpbkRlZmluaXRpb24ocXVlcnkpO1xuICAgICAgICAgIHJldHVybiBraW5kID09PSAnT3BlcmF0aW9uRGVmaW5pdGlvbicgJiYgb3BlcmF0aW9uID09PSAnc3Vic2NyaXB0aW9uJztcbiAgICAgICAgfSxcbiAgICAgICAgd3NMaW5rLFxuICAgICAgICBjb25jYXQoYXV0aE1pZGRsZXdhcmUsIGh0dHApXG4gICAgICApXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBsaW5rcy5wdXNoKGh0dHApO1xuICAgIGxpbmtzLnB1c2goYXV0aE1pZGRsZXdhcmUpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsaW5rOiBBcG9sbG9MaW5rLmZyb20obGlua3MpLFxuICAgIGNhY2hlOiBuZXcgSW5NZW1vcnlDYWNoZSgpLFxuICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICBxdWVyeToge1xuICAgICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,61 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { BASE_MODULE_CONFIG } from '../interfaces/base-module-config.interface';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/router";
6
+ import * as i2 from "../services/auth.service";
7
+ /**
8
+ * Authentication guard
9
+ */
10
+ export class AuthGuard {
11
+ /**
12
+ * Imports
13
+ */
14
+ constructor(router, authService, moduleConfig) {
15
+ this.router = router;
16
+ this.authService = authService;
17
+ this.moduleConfig = moduleConfig;
18
+ }
19
+ /**
20
+ * Can activate main route
21
+ */
22
+ canActivate(route, state) {
23
+ return new Observable((subscriber) => {
24
+ let allowed = false;
25
+ const opposite = route?.data?.opposite ? route?.data?.opposite : false;
26
+ const redirectUrl = route?.data?.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 = user?.roles?.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.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: AuthGuard, deps: [{ token: i1.Router }, { token: i2.AuthService }, { token: BASE_MODULE_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
54
+ AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: AuthGuard });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: AuthGuard, decorators: [{
56
+ type: Injectable
57
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.AuthService }, { type: undefined, decorators: [{
58
+ type: Inject,
59
+ args: [BASE_MODULE_CONFIG]
60
+ }] }]; } });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2d1YXJkcy9hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFvQixNQUFNLDRDQUE0QyxDQUFDOzs7O0FBRWxHOztHQUVHO0FBRUgsTUFBTSxPQUFPLFNBQVM7SUFDcEI7O09BRUc7SUFDSCxZQUNVLE1BQWMsRUFDZCxXQUF3QixFQUNJLFlBQThCO1FBRjFELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNJLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtJQUNqRSxDQUFDO0lBRUo7O09BRUc7SUFDSCxXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNuRSxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3ZFLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztZQUUvRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN2QyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUMxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztvQkFDMUMsT0FBTyxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ3pEO3FCQUFNO29CQUNMLE9BQU8sR0FBRyxJQUFJLENBQUM7aUJBQ2hCO2FBQ0Y7aUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRTtnQkFDOUMsT0FBTyxHQUFHLElBQUksQ0FBQzthQUNoQjtZQUVELElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2FBQ3JDO1lBRUQsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7c0dBNUNVLFNBQVMsbUVBT1Ysa0JBQWtCOzBHQVBqQixTQUFTOzJGQUFULFNBQVM7a0JBRHJCLFVBQVU7OzBCQVFOLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEJBU0VfTU9EVUxFX0NPTkZJRywgQmFzZU1vZHVsZUNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvYmFzZS1tb2R1bGUtY29uZmlnLmludGVyZmFjZSc7XG5cbi8qKlxuICogQXV0aGVudGljYXRpb24gZ3VhcmRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkIHtcbiAgLyoqXG4gICAqIEltcG9ydHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChCQVNFX01PRFVMRV9DT05GSUcpIHByaXZhdGUgbW9kdWxlQ29uZmlnOiBCYXNlTW9kdWxlQ29uZmlnXG4gICkge31cblxuICAvKipcbiAgICogQ2FuIGFjdGl2YXRlIG1haW4gcm91dGVcbiAgICovXG4gIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgbGV0IGFsbG93ZWQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IG9wcG9zaXRlID0gcm91dGU/LmRhdGE/Lm9wcG9zaXRlID8gcm91dGU/LmRhdGE/Lm9wcG9zaXRlIDogZmFsc2U7XG4gICAgICBjb25zdCByZWRpcmVjdFVybCA9IHJvdXRlPy5kYXRhPy5yZWRpcmVjdFVybCA/IHJvdXRlLmRhdGEucmVkaXJlY3RVcmwgOiB0aGlzLm1vZHVsZUNvbmZpZy5hdXRoR3VhcmRSZWRpcmVjdFVybDtcblxuICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UudG9rZW4gJiYgIW9wcG9zaXRlKSB7XG4gICAgICAgIGlmIChyb3V0ZS5kYXRhLmFsbG93ZWRSb2xlKSB7XG4gICAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuYXV0aFNlcnZpY2UuY3VycmVudFVzZXI7XG4gICAgICAgICAgYWxsb3dlZCA9IHVzZXI/LnJvbGVzPy5pbmNsdWRlcyhyb3V0ZS5kYXRhLmFsbG93ZWRSb2xlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhbGxvd2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdGhpcy5hdXRoU2VydmljZS50b2tlbiAmJiBvcHBvc2l0ZSkge1xuICAgICAgICBhbGxvd2VkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFhbGxvd2VkKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyZWRpcmVjdFVybF0pO1xuICAgICAgfVxuXG4gICAgICBzdWJzY3JpYmVyLm5leHQoYWxsb3dlZCk7XG4gICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuIGFjdGl2YXRlIGNoaWxkIHJvdXRlXG4gICAqL1xuICBjYW5BY3RpdmF0ZUNoaWxkKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Guard to check if a component can be deactivated
5
+ */
6
+ export class CanDeactivateGuard {
7
+ canDeactivate(component) {
8
+ return component.canDeactivate ? component.canDeactivate() : true;
9
+ }
10
+ }
11
+ CanDeactivateGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: CanDeactivateGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
+ CanDeactivateGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: CanDeactivateGuard });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: CanDeactivateGuard, decorators: [{
14
+ type: Injectable
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWRlYWN0aXZhdGUuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9ndWFyZHMvY2FuLWRlYWN0aXZhdGUuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLGFBQWEsQ0FBQyxTQUFrQztRQUM5QyxPQUFPLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BFLENBQUM7OytHQUhVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5EZWFjdGl2YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElDYW5Db21wb25lbnREZWFjdGl2YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jYW4tY29tcG9uZW50LWRlYWN0aXZhdGUuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBHdWFyZCB0byBjaGVjayBpZiBhIGNvbXBvbmVudCBjYW4gYmUgZGVhY3RpdmF0ZWRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhbkRlYWN0aXZhdGVHdWFyZCBpbXBsZW1lbnRzIENhbkRlYWN0aXZhdGU8SUNhbkNvbXBvbmVudERlYWN0aXZhdGU+IHtcbiAgY2FuRGVhY3RpdmF0ZShjb21wb25lbnQ6IElDYW5Db21wb25lbnREZWFjdGl2YXRlKSB7XG4gICAgcmV0dXJuIGNvbXBvbmVudC5jYW5EZWFjdGl2YXRlID8gY29tcG9uZW50LmNhbkRlYWN0aXZhdGUoKSA6IHRydWU7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ import * as i2 from "../services/auth.service";
6
+ /**
7
+ * Logout guard
8
+ */
9
+ export class LogoutGuard {
10
+ constructor(router, authService) {
11
+ this.router = router;
12
+ this.authService = authService;
13
+ }
14
+ canActivate(route, state) {
15
+ return new Observable((subscriber) => {
16
+ if (this.authService.token) {
17
+ this.authService.logout();
18
+ }
19
+ subscriber.next(true);
20
+ subscriber.complete();
21
+ });
22
+ }
23
+ canActivateChild(route, state) {
24
+ return this.canActivate(route, state);
25
+ }
26
+ }
27
+ LogoutGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: LogoutGuard, deps: [{ token: i1.Router }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
28
+ LogoutGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: LogoutGuard });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: LogoutGuard, decorators: [{
30
+ type: Injectable
31
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.AuthService }]; } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb3V0Lmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvZ3VhcmRzL2xvZ291dC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFHbEM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUFvQixNQUFjLEVBQVUsV0FBd0I7UUFBaEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztJQUV4RSxXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNuRSxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUMzQjtZQUVELFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDeEUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzt3R0FoQlUsV0FBVzs0R0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcblxuLyoqXG4gKiBMb2dvdXQgZ3VhcmRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ291dEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkge31cblxuICBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLnRva2VuKSB7XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UubG9nb3V0KCk7XG4gICAgICB9XG5cbiAgICAgIHN1YnNjcmliZXIubmV4dCh0cnVlKTtcbiAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbkFjdGl2YXRlQ2hpbGQocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUocm91dGUsIHN0YXRlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const BASE_MODULE_CONFIG = new InjectionToken('BASE_MODULE_CONFIG');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tb2R1bGUtY29uZmlnLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2ludGVyZmFjZXMvYmFzZS1tb2R1bGUtY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBbUUvQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JhZ2VUeXBlIH0gZnJvbSAnLi4vdHlwZXMvc3RvcmFnZS50eXBlJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBiYXNlIG1vZHVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VNb2R1bGVDb25maWcge1xuICAvKipcbiAgICogVVJMIHRvIHNlcnZlciBBUElcbiAgICogRGVmYXVsdDogJ2xvY2FsaG9zdDozMDAwJ1xuICAgKi9cbiAgYXBpVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXZWJzb2NrZXQgVVJMIHRvIHNlcnZlciBBUElcbiAgICovXG4gIHdzVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHJlZGlyZWN0IFVSTCBmb3IgQXV0aEd1YXJkXG4gICAqIERlZmF1bHQ6ICcvYXV0aCdcbiAgICovXG4gIGF1dGhHdWFyZFJlZGlyZWN0VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGxvZ2dpbmcgaXMgZW5hYmxlZCBvciBub3RcbiAgICovXG4gIGxvZ2dpbmc/OiBmYWxzZTtcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUgQXBwIChmb3Igc3RvcmFnZSBoYW5kbGluZylcbiAgICogRGVmYXVsdDogbnVsbFxuICAgKi9cbiAgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUHJlZml4IG9mIHRoZSBBcHAgKGZvciBzdG9yYWdlIGhhbmRsaW5nKVxuICAgKiBEZWZhdWx0OiBudWxsXG4gICAqL1xuICBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNjcm9sbCBkZXRlY3Rpb24gb2Zmc2V0IGZvciBTY3JvbGxTZXJ2aWNlXG4gICAqIFNob3VsZCBiZSA+PSBzY3JvbGxPZmZzZXRcbiAgICogRGVmYXVsdDogMjAwXG4gICAqL1xuICBzY3JvbGxEZXRlY3Rpb25PZmZzZXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNjcm9sbCBvZmZzZXQgZm9yIFNjcm9sbFNlcnZpY2VcbiAgICogRGVmYXVsdDogMTAwXG4gICAqL1xuICBzY3JvbGxPZmZzZXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNhbXBsaW5nIHJhdGUgZm9yIHNjcm9sbCBkb25lIGRldGVjdGlvblxuICAgKiBEZWZhdWx0OiAxMDBcbiAgICovXG4gIHNjcm9sbFNhbXBsaW5nUmF0ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVHlwZSBvZiBzdG9yYWdlOiAnc2Vzc2lvbicgb3IgJ2xvY2FsJ1xuICAgKiBEZWZhdWx0OiAnbG9jYWwnXG4gICAqL1xuICBzdG9yYWdlVHlwZT86IFN0b3JhZ2VUeXBlO1xufVxuXG5leHBvcnQgY29uc3QgQkFTRV9NT0RVTEVfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuKCdCQVNFX01PRFVMRV9DT05GSUcnKTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWNvbXBvbmVudC1kZWFjdGl2YXRlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2ludGVyZmFjZXMvY2FuLWNvbXBvbmVudC1kZWFjdGl2YXRlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgXCJjYW4gZGVhY3RpdmF0ZVwiIGhhbmRsaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIGd1YXJkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNhbkNvbXBvbmVudERlYWN0aXZhdGUge1xuICBjYW5EZWFjdGl2YXRlOiAoKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW47XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZWQtZmlsdGVyLWlucHV0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2ludGVyZmFjZXMvY29tYmluZWQtZmlsdGVyLWlucHV0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9naWNhbE9wZXJhdG9yRW51bSB9IGZyb20gJy4uL2VudW1zL2xvZ2ljYWwtb3BlcmF0b3IuZW51bSc7XG5pbXBvcnQgeyBGaWx0ZXJJbnB1dCB9IGZyb20gJy4vZmlsdGVyLWlucHV0LmludGVyZmFjZSc7XG5cbi8qKlxuICogQ29tYmluZWQgZmlsdGVyIGlucHV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tYmluZWRGaWx0ZXJJbnB1dCB7XG4gIGxvZ2ljYWxPcGVyYXRvcj86IExvZ2ljYWxPcGVyYXRvckVudW07XG4gIGZpbHRlcnM/OiBGaWx0ZXJJbnB1dFtdO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtb2JqZWN0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2ludGVyZmFjZXMvZmllbGQtb2JqZWN0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHcmFwaFFMIGZpZWxkIG9iamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaWVsZE9iamVjdCB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgSUZpZWxkT2JqZWN0O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvaW50ZXJmYWNlcy9maWVsZC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElGaWVsZE9iamVjdCB9IGZyb20gJy4vZmllbGQtb2JqZWN0LmludGVyZmFjZSc7XG5cbi8qKlxuICogR3JhcGhRTCBmaWVsZHNcbiAqL1xuZXhwb3J0IHR5cGUgSUZpZWxkcyA9IHN0cmluZyB8IHN0cmluZ1tdIHwgSUZpZWxkT2JqZWN0O1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWlucHV0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2ludGVyZmFjZXMvZmlsdGVyLWlucHV0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2luZ2xlRmlsdGVySW5wdXQgfSBmcm9tICcuL3NpbmdsZS1maWx0ZXItaW5wdXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbWJpbmVkRmlsdGVySW5wdXQgfSBmcm9tICcuL2NvbWJpbmVkLWZpbHRlci1pbnB1dC5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEZpbHRlciBpbnB1dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlcklucHV0IHtcbiAgY29tYmluZWRGaWx0ZXI/OiBDb21iaW5lZEZpbHRlcklucHV0O1xuICBzaW5nbGVGaWx0ZXI/OiBTaW5nbGVGaWx0ZXJJbnB1dDtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1hcmdzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2ludGVyZmFjZXMvZmluZC1hcmdzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsdGVySW5wdXQgfSBmcm9tICcuL2ZpbHRlci1pbnB1dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU29ydElucHV0IH0gZnJvbSAnLi9zb3J0LWlucHV0LmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmluZEFyZ3Mge1xuICBsaW1pdDogbnVtYmVyO1xuICBvZmZzZXQ6IG51bWJlcjtcbiAgc2tpcDogbnVtYmVyO1xuICBzb3J0OiBTb3J0SW5wdXRbXTtcbiAgdGFrZTogbnVtYmVyO1xuICBmaWx0ZXI6IEZpbHRlcklucHV0O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1maWVsZHMtb2JqZWN0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2ludGVyZmFjZXMvZ3JhcGhxbC1maWVsZHMtb2JqZWN0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHcmFwaFFMIGZpZWxkcyBvYmplY3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaFFMRmllbGRzT2JqZWN0IHtcbiAgW2tleTogc3RyaW5nXTogYm9vbGVhbiB8IChzdHJpbmcgfCBHcmFwaFFMRmllbGRzT2JqZWN0KVtdIHwgR3JhcGhRTEZpZWxkc09iamVjdDtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1vcHRpb25zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2ludGVyZmFjZXMvZ3JhcGhxbC1vcHRpb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTFJlcXVlc3RUeXBlIH0gZnJvbSAnLi4vZW51bXMvZ3JhcGhxbC1yZXF1ZXN0LXR5cGUuZW51bSc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZ3JhcGhxbCByZXF1ZXN0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElHcmFwaFFMT3B0aW9ucyB7XG4gIGFyZ3VtZW50cz86IGFueTtcbiAgZmllbGRzPzogYW55O1xuICBsb2c/OiBib29sZWFuO1xuICBtb2RlbD86IGFueTtcbiAgdHlwZT86IEdyYXBoUUxSZXF1ZXN0VHlwZTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1wbHVzLW9wdGlvbnMuaW50ZXJmYWNlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL2ludGVyZmFjZXMvZ3JhcGhxbC1wbHVzLW9wdGlvbnMuaW50ZXJmYWNlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUdyYXBoUUxPcHRpb25zIH0gZnJvbSAnLi9ncmFwaHFsLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBHcmFwaFFMIGV4dHJhIG9wdGlvbnMgZm9yIGVycm9ycyBhbmQgbG9hZGluZyBpbmRpY2F0b3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JhcGhRTFBsdXNPcHRpb25zIGV4dGVuZHMgSUdyYXBoUUxPcHRpb25zIHtcbiAgaWdub3JlRXJyb3JzPzogYm9vbGVhbjtcbiAgZXhjbHVkZWRFcnJvcnM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgbG9hZGluZz86IGJvb2xlYW47XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC10eXBlLWNvbGxlY3Rpb24uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvaW50ZXJmYWNlcy9ncmFwaHFsLXR5cGUtY29sbGVjdGlvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxUeXBlIH0gZnJvbSAnLi4vY2xhc3Nlcy9ncmFwaHFsLXR5cGUuY2xhc3MnO1xuXG4vKipcbiAqIEludGVyZmFjZSBvZiBHcmFwaFFMIHR5cGUgY29sbGVjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElHcmFwaFFMVHlwZUNvbGxlY3Rpb24ge1xuICBba2V5OiBzdHJpbmddOiBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uIHwgR3JhcGhRTFR5cGU7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLWZpbHRlci1pbnB1dC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9pbnRlcmZhY2VzL3NpbmdsZS1maWx0ZXItaW5wdXQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wYXJpc29uT3BlcmF0b3JFbnVtIH0gZnJvbSAnLi4vZW51bXMvY29tcGFyaXNvbi1vcGVyYXRvci5lbnVtJztcblxuLyoqXG4gKiBTaW5nbGUgZmlsdGVyIGlucHV0IGtqaGdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaW5nbGVGaWx0ZXJJbnB1dCB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIG5vdD86IGJvb2xlYW47XG4gIG9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3JFbnVtO1xuICBvcHRpb25zPzogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1pbnB1dC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9pbnRlcmZhY2VzL3NvcnQtaW5wdXQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb3J0T3JkZXJFbnVtIH0gZnJvbSAnLi4vZW51bXMvc29ydC1vcmRlci5lbnVtJztcblxuZXhwb3J0IGludGVyZmFjZSBTb3J0SW5wdXQge1xuICBmaWVsZDogc3RyaW5nO1xuICBvcmRlcjogU29ydE9yZGVyRW51bTtcbn1cbiJdfQ==
@@ -0,0 +1,65 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DateAgoPipe {
4
+ constructor() {
5
+ this.intervals = {
6
+ year: 31536000,
7
+ month: 2592000,
8
+ week: 604800,
9
+ day: 86400,
10
+ hour: 3600,
11
+ minute: 60,
12
+ second: 1,
13
+ };
14
+ this.singular = {
15
+ year: 'Jahr',
16
+ month: 'Monat',
17
+ week: 'Woche',
18
+ day: 'Tag',
19
+ hour: 'Stunde',
20
+ minute: 'Minute',
21
+ second: 'Sekunde',
22
+ };
23
+ this.plural = {
24
+ year: 'Jahren',
25
+ month: 'Monaten',
26
+ week: 'Wochen',
27
+ day: 'Tagen',
28
+ hour: 'Stunden',
29
+ minute: 'Minuten',
30
+ second: 'Sekunden',
31
+ };
32
+ }
33
+ transform(value, currentDate) {
34
+ const now = currentDate ?? new Date();
35
+ if (value) {
36
+ const seconds = Math.floor((+now - +new Date(value)) / 1000);
37
+ if (seconds < 29) {
38
+ return 'gerade eben'; // less than 30 seconds ago will show as 'Just now'
39
+ }
40
+ let counter;
41
+ for (const i of Object.keys(this.intervals)) {
42
+ counter = Math.floor(seconds / this.intervals[i]);
43
+ if (counter > 0) {
44
+ if (counter === 1) {
45
+ return 'vor ' + counter + ' ' + this.singular[i]; // singular (1 day ago)
46
+ }
47
+ else {
48
+ return 'vor ' + counter + ' ' + this.plural[i]; // plural (2 days ago)
49
+ }
50
+ }
51
+ }
52
+ }
53
+ return value;
54
+ }
55
+ }
56
+ DateAgoPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: DateAgoPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
57
+ DateAgoPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: DateAgoPipe, name: "dateAgo" });
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: DateAgoPipe, decorators: [{
59
+ type: Pipe,
60
+ args: [{
61
+ name: 'dateAgo',
62
+ pure: true,
63
+ }]
64
+ }] });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1hZ28ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL3BpcGVzL2RhdGUtYWdvLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxXQUFXO0lBSnhCO1FBS0UsY0FBUyxHQUFHO1lBQ1YsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxNQUFNO1lBQ1osR0FBRyxFQUFFLEtBQUs7WUFDVixJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRSxFQUFFO1lBQ1YsTUFBTSxFQUFFLENBQUM7U0FDVixDQUFDO1FBRUYsYUFBUSxHQUFHO1lBQ1QsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsR0FBRyxFQUFFLEtBQUs7WUFDVixJQUFJLEVBQUUsUUFBUTtZQUNkLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxTQUFTO1NBQ2xCLENBQUM7UUFFRixXQUFNLEdBQUc7WUFDUCxJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxRQUFRO1lBQ2QsR0FBRyxFQUFFLE9BQU87WUFDWixJQUFJLEVBQUUsU0FBUztZQUNmLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLE1BQU0sRUFBRSxVQUFVO1NBQ25CLENBQUM7S0F3Qkg7SUF0QkMsU0FBUyxDQUFDLEtBQVUsRUFBRSxXQUFrQjtRQUN0QyxNQUFNLEdBQUcsR0FBRyxXQUFXLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN0QyxJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDN0QsSUFBSSxPQUFPLEdBQUcsRUFBRSxFQUFFO2dCQUNoQixPQUFPLGFBQWEsQ0FBQyxDQUFDLG1EQUFtRDthQUMxRTtZQUVELElBQUksT0FBTyxDQUFDO1lBQ1osS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDM0MsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFO29CQUNmLElBQUksT0FBTyxLQUFLLENBQUMsRUFBRTt3QkFDakIsT0FBTyxNQUFNLEdBQUcsT0FBTyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCO3FCQUMxRTt5QkFBTTt3QkFDTCxPQUFPLE1BQU0sR0FBRyxPQUFPLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7cUJBQ3ZFO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7d0dBcERVLFdBQVc7c0dBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUp2QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxTQUFTO29CQUNmLElBQUksRUFBRSxJQUFJO2lCQUNYIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdkYXRlQWdvJyxcbiAgcHVyZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUFnb1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgaW50ZXJ2YWxzID0ge1xuICAgIHllYXI6IDMxNTM2MDAwLFxuICAgIG1vbnRoOiAyNTkyMDAwLFxuICAgIHdlZWs6IDYwNDgwMCxcbiAgICBkYXk6IDg2NDAwLFxuICAgIGhvdXI6IDM2MDAsXG4gICAgbWludXRlOiA2MCxcbiAgICBzZWNvbmQ6IDEsXG4gIH07XG5cbiAgc2luZ3VsYXIgPSB7XG4gICAgeWVhcjogJ0phaHInLFxuICAgIG1vbnRoOiAnTW9uYXQnLFxuICAgIHdlZWs6ICdXb2NoZScsXG4gICAgZGF5OiAnVGFnJyxcbiAgICBob3VyOiAnU3R1bmRlJyxcbiAgICBtaW51dGU6ICdNaW51dGUnLFxuICAgIHNlY29uZDogJ1Nla3VuZGUnLFxuICB9O1xuXG4gIHBsdXJhbCA9IHtcbiAgICB5ZWFyOiAnSmFocmVuJyxcbiAgICBtb250aDogJ01vbmF0ZW4nLFxuICAgIHdlZWs6ICdXb2NoZW4nLFxuICAgIGRheTogJ1RhZ2VuJyxcbiAgICBob3VyOiAnU3R1bmRlbicsXG4gICAgbWludXRlOiAnTWludXRlbicsXG4gICAgc2Vjb25kOiAnU2VrdW5kZW4nLFxuICB9O1xuXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBjdXJyZW50RGF0ZT86IERhdGUpOiBhbnkge1xuICAgIGNvbnN0IG5vdyA9IGN1cnJlbnREYXRlID8/IG5ldyBEYXRlKCk7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5mbG9vcigoK25vdyAtICtuZXcgRGF0ZSh2YWx1ZSkpIC8gMTAwMCk7XG4gICAgICBpZiAoc2Vjb25kcyA8IDI5KSB7XG4gICAgICAgIHJldHVybiAnZ2VyYWRlIGViZW4nOyAvLyBsZXNzIHRoYW4gMzAgc2Vjb25kcyBhZ28gd2lsbCBzaG93IGFzICdKdXN0IG5vdydcbiAgICAgIH1cblxuICAgICAgbGV0IGNvdW50ZXI7XG4gICAgICBmb3IgKGNvbnN0IGkgb2YgT2JqZWN0LmtleXModGhpcy5pbnRlcnZhbHMpKSB7XG4gICAgICAgIGNvdW50ZXIgPSBNYXRoLmZsb29yKHNlY29uZHMgLyB0aGlzLmludGVydmFsc1tpXSk7XG4gICAgICAgIGlmIChjb3VudGVyID4gMCkge1xuICAgICAgICAgIGlmIChjb3VudGVyID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3ZvciAnICsgY291bnRlciArICcgJyArIHRoaXMuc2luZ3VsYXJbaV07IC8vIHNpbmd1bGFyICgxIGRheSBhZ28pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAndm9yICcgKyBjb3VudGVyICsgJyAnICsgdGhpcy5wbHVyYWxbaV07IC8vIHBsdXJhbCAoMiBkYXlzIGFnbylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Truncate string with ellipses
5
+ */
6
+ export class EllipsesPipe {
7
+ transform(value, limit) {
8
+ if (!value) {
9
+ return null;
10
+ }
11
+ return value.length > limit ? value.substring(0, limit) + '...' : value;
12
+ }
13
+ }
14
+ EllipsesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: EllipsesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
15
+ EllipsesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: EllipsesPipe, name: "ltEllipses" });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: EllipsesPipe, decorators: [{
17
+ type: Pipe,
18
+ args: [{
19
+ name: 'ltEllipses',
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2Uvc3JjL3BpcGVzL2VsbGlwc2VzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBRXBEOztHQUVHO0FBSUgsTUFBTSxPQUFPLFlBQVk7SUFDdkIsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDMUUsQ0FBQzs7eUdBUFUsWUFBWTt1R0FBWixZQUFZOzJGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFlBQVk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFRydW5jYXRlIHN0cmluZyB3aXRoIGVsbGlwc2VzXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ2x0RWxsaXBzZXMnLFxufSlcbmV4cG9ydCBjbGFzcyBFbGxpcHNlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIGxpbWl0OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiBsaW1pdCA/IHZhbHVlLnN1YnN0cmluZygwLCBsaW1pdCkgKyAnLi4uJyA6IHZhbHVlO1xuICB9XG59XG4iXX0=