zek 15.2.1 → 16.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 (428) hide show
  1. package/README.md +1 -1
  2. package/{esm2020 → esm2022}/lib/components/args.mjs +1 -1
  3. package/esm2022/lib/components/base.component.mjs +97 -0
  4. package/esm2022/lib/components/core-ui.component.mjs +195 -0
  5. package/esm2022/lib/components/core.component.mjs +40 -0
  6. package/esm2022/lib/components/edit-base.component.mjs +237 -0
  7. package/{esm2020 → esm2022}/lib/components/index.mjs +7 -7
  8. package/esm2022/lib/components/list-base.component.mjs +254 -0
  9. package/{esm2020 → esm2022}/lib/components/types.mjs +1 -1
  10. package/{esm2020 → esm2022}/lib/models/alert-type.mjs +11 -11
  11. package/{esm2020 → esm2022}/lib/models/captcha.model.mjs +1 -1
  12. package/{esm2020 → esm2022}/lib/models/ctor.mjs +1 -1
  13. package/{esm2020 → esm2022}/lib/models/edit-base.model.mjs +2 -2
  14. package/{esm2020 → esm2022}/lib/models/file.model.mjs +19 -19
  15. package/{esm2020 → esm2022}/lib/models/filter.model.mjs +11 -11
  16. package/{esm2020 → esm2022}/lib/models/gender.model.mjs +5 -5
  17. package/{esm2020 → esm2022}/lib/models/index.mjs +17 -17
  18. package/{esm2020 → esm2022}/lib/models/key-pair.model.mjs +13 -13
  19. package/{esm2020 → esm2022}/lib/models/list-base.model.mjs +2 -2
  20. package/{esm2020 → esm2022}/lib/models/login.model.mjs +1 -1
  21. package/{esm2020 → esm2022}/lib/models/month.model.mjs +15 -15
  22. package/{esm2020 → esm2022}/lib/models/nav.model.mjs +1 -1
  23. package/{esm2020 → esm2022}/lib/models/pager.model.mjs +31 -31
  24. package/{esm2020 → esm2022}/lib/models/print.model.mjs +5 -5
  25. package/{esm2020 → esm2022}/lib/models/tree.model.mjs +3 -3
  26. package/{esm2020 → esm2022}/lib/models/valid-event-args.model.mjs +5 -5
  27. package/esm2022/lib/modules/age/age.module.mjs +23 -0
  28. package/esm2022/lib/modules/age/age.pipe.mjs +22 -0
  29. package/{esm2020 → esm2022}/lib/modules/age/index.mjs +2 -2
  30. package/esm2022/lib/modules/alert/alert/alert.mjs +55 -0
  31. package/esm2022/lib/modules/alert/alert.module.mjs +36 -0
  32. package/{esm2020 → esm2022}/lib/modules/alert/index.mjs +5 -5
  33. package/esm2022/lib/modules/alert/toast/toast.mjs +110 -0
  34. package/esm2022/lib/modules/alert/validation/validation.mjs +86 -0
  35. package/esm2022/lib/modules/autocomplete/autocomplete.directive.mjs +25 -0
  36. package/esm2022/lib/modules/autocomplete/autocomplete.module.mjs +23 -0
  37. package/{esm2020 → esm2022}/lib/modules/autocomplete/index.mjs +2 -2
  38. package/esm2022/lib/modules/bb/bb-modal-base.component.mjs +75 -0
  39. package/esm2022/lib/modules/bb/bb-modal-toolbar.mjs +45 -0
  40. package/esm2022/lib/modules/bb/bb.component.mjs +189 -0
  41. package/esm2022/lib/modules/bb/bb.module.mjs +38 -0
  42. package/{esm2020 → esm2022}/lib/modules/bb/index.mjs +4 -4
  43. package/esm2022/lib/modules/callback/callback.module.mjs +23 -0
  44. package/esm2022/lib/modules/callback/callback.pipe.mjs +23 -0
  45. package/{esm2020 → esm2022}/lib/modules/callback/index.mjs +2 -2
  46. package/esm2022/lib/modules/card/card/card.component.mjs +48 -0
  47. package/esm2022/lib/modules/card/card.module.mjs +19 -0
  48. package/{esm2020 → esm2022}/lib/modules/card/index.mjs +2 -2
  49. package/esm2022/lib/modules/date-ago/date-ago.pipe.mjs +47 -0
  50. package/esm2022/lib/modules/date-ago/date.module.mjs +23 -0
  51. package/{esm2020 → esm2022}/lib/modules/date-ago/index.mjs +2 -2
  52. package/esm2022/lib/modules/datepicker/date-value-accessor.mjs +189 -0
  53. package/esm2022/lib/modules/datepicker/datepicker.module.mjs +32 -0
  54. package/{esm2020 → esm2022}/lib/modules/datepicker/index.mjs +2 -2
  55. package/esm2022/lib/modules/edit-toolbar/edit-toolbar.component.mjs +75 -0
  56. package/esm2022/lib/modules/edit-toolbar/edit-toolbar.module.mjs +27 -0
  57. package/{esm2020 → esm2022}/lib/modules/edit-toolbar/index.mjs +2 -2
  58. package/esm2022/lib/modules/file/file-size.pipe.mjs +48 -0
  59. package/esm2022/lib/modules/file/file.module.mjs +23 -0
  60. package/{esm2020 → esm2022}/lib/modules/file/index.mjs +2 -2
  61. package/esm2022/lib/modules/file-viewer/file-viewer.mjs +52 -0
  62. package/{esm2020 → esm2022}/lib/modules/file-viewer/index.mjs +2 -2
  63. package/esm2022/lib/modules/file-viewer/module.mjs +31 -0
  64. package/esm2022/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.mjs +146 -0
  65. package/esm2022/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.component.mjs +15 -0
  66. package/esm2022/lib/modules/grid-toolbar/grid-toolbar.module.mjs +34 -0
  67. package/{esm2020 → esm2022}/lib/modules/grid-toolbar/index.mjs +3 -3
  68. package/{esm2020 → esm2022}/lib/modules/index.mjs +32 -32
  69. package/{esm2020 → esm2022}/lib/modules/list-toolbar/index.mjs +2 -2
  70. package/esm2022/lib/modules/list-toolbar/list-toolbar.component.mjs +110 -0
  71. package/esm2022/lib/modules/list-toolbar/list-toolbar.module.mjs +25 -0
  72. package/{esm2020 → esm2022}/lib/modules/loading/index.mjs +3 -3
  73. package/esm2022/lib/modules/loading/loading-interceptor.mjs +80 -0
  74. package/esm2022/lib/modules/loading/loading.component.mjs +36 -0
  75. package/esm2022/lib/modules/loading/loading.module.mjs +33 -0
  76. package/esm2022/lib/modules/modal/filter-modal/filter-modal.component.mjs +27 -0
  77. package/{esm2020 → esm2022}/lib/modules/modal/index.mjs +4 -4
  78. package/esm2022/lib/modules/modal/modal/modal.component.mjs +313 -0
  79. package/esm2022/lib/modules/modal/modal.module.mjs +63 -0
  80. package/esm2022/lib/modules/modal/sum-modal/sum-modal.component.mjs +28 -0
  81. package/{esm2020 → esm2022}/lib/modules/page-title/index.mjs +2 -2
  82. package/esm2022/lib/modules/page-title/page-title.component.mjs +32 -0
  83. package/esm2022/lib/modules/page-title/page-title.module.mjs +27 -0
  84. package/{esm2020 → esm2022}/lib/modules/pager/index.mjs +2 -2
  85. package/esm2022/lib/modules/pager/pager/pager.component.mjs +51 -0
  86. package/esm2022/lib/modules/pager/pager.module.mjs +27 -0
  87. package/{esm2020 → esm2022}/lib/modules/password/index.mjs +2 -2
  88. package/{esm2020 → esm2022}/lib/modules/password/password.component.mjs +48 -47
  89. package/esm2022/lib/modules/password/password.module.mjs +31 -0
  90. package/{esm2020 → esm2022}/lib/modules/progress/index.mjs +2 -2
  91. package/esm2022/lib/modules/progress/module.mjs +27 -0
  92. package/esm2022/lib/modules/progress/progress.mjs +98 -0
  93. package/{esm2020 → esm2022}/lib/modules/radio/index.mjs +2 -2
  94. package/esm2022/lib/modules/radio/radio-button.component.mjs +135 -0
  95. package/esm2022/lib/modules/radio/radio.module.mjs +23 -0
  96. package/{esm2020 → esm2022}/lib/modules/readonly/index.mjs +2 -2
  97. package/esm2022/lib/modules/readonly/readonly.directive.mjs +26 -0
  98. package/esm2022/lib/modules/readonly/readonly.module.mjs +23 -0
  99. package/{esm2020 → esm2022}/lib/modules/recaptcha/index.mjs +3 -3
  100. package/{esm2020 → esm2022}/lib/modules/recaptcha/loader.mjs +12 -12
  101. package/{esm2020 → esm2022}/lib/modules/recaptcha/recaptcha.model.mjs +1 -1
  102. package/esm2022/lib/modules/recaptcha/recaptcha.module.mjs +33 -0
  103. package/esm2022/lib/modules/recaptcha/recaptcha.service.mjs +120 -0
  104. package/{esm2020 → esm2022}/lib/modules/safe/index.mjs +2 -2
  105. package/esm2022/lib/modules/safe/safe.module.mjs +21 -0
  106. package/esm2022/lib/modules/safe/safe.pipe.mjs +38 -0
  107. package/{esm2020 → esm2022}/lib/modules/select/index.mjs +2 -2
  108. package/{esm2020 → esm2022}/lib/modules/select/model.mjs +3 -3
  109. package/esm2022/lib/modules/select/module.mjs +29 -0
  110. package/esm2022/lib/modules/select/select.mjs +199 -0
  111. package/{esm2020 → esm2022}/lib/modules/select2/index.mjs +2 -2
  112. package/esm2022/lib/modules/select2/select2.component.mjs +171 -0
  113. package/esm2022/lib/modules/select2/select2.module.mjs +29 -0
  114. package/{esm2020 → esm2022}/lib/modules/select2-multiple/index.mjs +2 -2
  115. package/esm2022/lib/modules/select2-multiple/select2-multiple.component.mjs +133 -0
  116. package/esm2022/lib/modules/select2-multiple/select2-multiple.module.mjs +29 -0
  117. package/{esm2020 → esm2022}/lib/modules/sort/index.mjs +3 -3
  118. package/esm2022/lib/modules/sort/sort-button-group/sort-button-group.component.mjs +80 -0
  119. package/esm2022/lib/modules/sort/sort.directive.mjs +118 -0
  120. package/esm2022/lib/modules/sort/sort.module.mjs +34 -0
  121. package/{esm2020 → esm2022}/lib/modules/time/index.mjs +3 -3
  122. package/esm2022/lib/modules/time/time.module.mjs +28 -0
  123. package/esm2022/lib/modules/time/time.pipe.mjs +41 -0
  124. package/esm2022/lib/modules/time/timer-service.mjs +90 -0
  125. package/{esm2020 → esm2022}/lib/modules/validator/field-validator.mjs +21 -20
  126. package/{esm2020 → esm2022}/lib/modules/validator/index.mjs +2 -2
  127. package/esm2022/lib/modules/validator/validator.module.mjs +27 -0
  128. package/esm2022/lib/modules/validators/directive.mjs +76 -0
  129. package/{esm2020 → esm2022}/lib/modules/validators/index.mjs +3 -3
  130. package/esm2022/lib/modules/validators/module.mjs +23 -0
  131. package/{esm2020 → esm2022}/lib/modules/validators/validator.mjs +71 -71
  132. package/{esm2020 → esm2022}/lib/modules/wizard/index.mjs +3 -3
  133. package/esm2022/lib/modules/wizard/wizard/wizard.component.mjs +66 -0
  134. package/esm2022/lib/modules/wizard/wizard.module.mjs +34 -0
  135. package/esm2022/lib/modules/wizard/wizard2/wizard2.component.mjs +14 -0
  136. package/esm2022/lib/services/alert.service.mjs +77 -0
  137. package/esm2022/lib/services/auth-guard.service.mjs +29 -0
  138. package/esm2022/lib/services/auth.service.mjs +204 -0
  139. package/{esm2020 → esm2022}/lib/services/base.service.mjs +7 -7
  140. package/{esm2020 → esm2022}/lib/services/crud.service.mjs +42 -42
  141. package/esm2022/lib/services/http-error-handler.service.mjs +142 -0
  142. package/{esm2020 → esm2022}/lib/services/index.mjs +6 -6
  143. package/esm2022/lib/services/web.api.mjs +127 -0
  144. package/{esm2020 → esm2022}/lib/tokens.mjs +5 -5
  145. package/{esm2020 → esm2022}/lib/utils/array-helper.mjs +113 -113
  146. package/{esm2020 → esm2022}/lib/utils/base64-helper.mjs +8 -8
  147. package/{esm2020 → esm2022}/lib/utils/bitwise-helper.mjs +13 -13
  148. package/{esm2020 → esm2022}/lib/utils/bootstrap.helper.mjs +126 -126
  149. package/{esm2020 → esm2022}/lib/utils/convert.mjs +34 -34
  150. package/{esm2020 → esm2022}/lib/utils/css-helper.mjs +40 -40
  151. package/esm2022/lib/utils/date-helper.mjs +236 -0
  152. package/{esm2020 → esm2022}/lib/utils/file.helper.mjs +25 -25
  153. package/{esm2020 → esm2022}/lib/utils/filter-helper.mjs +12 -12
  154. package/{esm2020 → esm2022}/lib/utils/handler.mjs +23 -23
  155. package/{esm2020 → esm2022}/lib/utils/html-helper.mjs +65 -65
  156. package/{esm2020 → esm2022}/lib/utils/index.mjs +22 -22
  157. package/{esm2020 → esm2022}/lib/utils/math-helper.mjs +6 -6
  158. package/{esm2020 → esm2022}/lib/utils/object-helper.mjs +63 -63
  159. package/{esm2020 → esm2022}/lib/utils/overlap-helper.mjs +72 -72
  160. package/{esm2020 → esm2022}/lib/utils/pager-helper.mjs +62 -62
  161. package/{esm2020 → esm2022}/lib/utils/random-helper.mjs +10 -10
  162. package/{esm2020 → esm2022}/lib/utils/storage-helper.mjs +27 -27
  163. package/{esm2020 → esm2022}/lib/utils/string-helper.mjs +31 -31
  164. package/{esm2020 → esm2022}/lib/utils/thenBy.mjs +40 -40
  165. package/{esm2020 → esm2022}/lib/utils/time-helper.mjs +46 -46
  166. package/{esm2020 → esm2022}/lib/utils/url-helper.mjs +25 -25
  167. package/esm2022/lib/utils/validation-helper.mjs +11 -0
  168. package/esm2022/lib/zek.module.mjs +34 -0
  169. package/{esm2020 → esm2022}/public-api.mjs +10 -10
  170. package/{esm2020 → esm2022}/zek.mjs +4 -4
  171. package/{fesm2020 → fesm2022}/zek.mjs +6415 -6415
  172. package/{fesm2020 → fesm2022}/zek.mjs.map +1 -1
  173. package/index.d.ts +5 -5
  174. package/lib/components/args.d.ts +5 -5
  175. package/lib/components/base.component.d.ts +24 -24
  176. package/lib/components/core-ui.component.d.ts +86 -86
  177. package/lib/components/core.component.d.ts +15 -15
  178. package/lib/components/edit-base.component.d.ts +59 -59
  179. package/lib/components/index.d.ts +7 -7
  180. package/lib/components/list-base.component.d.ts +61 -61
  181. package/lib/components/types.d.ts +3 -3
  182. package/lib/models/alert-type.d.ts +10 -10
  183. package/lib/models/captcha.model.d.ts +3 -3
  184. package/lib/models/ctor.d.ts +3 -3
  185. package/lib/models/edit-base.model.d.ts +5 -5
  186. package/lib/models/file.model.d.ts +14 -14
  187. package/lib/models/filter.model.d.ts +9 -9
  188. package/lib/models/gender.model.d.ts +4 -4
  189. package/lib/models/index.d.ts +16 -16
  190. package/lib/models/key-pair.model.d.ts +14 -14
  191. package/lib/models/list-base.model.d.ts +4 -4
  192. package/lib/models/login.model.d.ts +28 -28
  193. package/lib/models/month.model.d.ts +14 -14
  194. package/lib/models/nav.model.d.ts +19 -19
  195. package/lib/models/pager.model.d.ts +21 -21
  196. package/lib/models/print.model.d.ts +4 -4
  197. package/lib/models/tree.model.d.ts +8 -8
  198. package/lib/models/valid-event-args.model.d.ts +3 -3
  199. package/lib/modules/age/age.module.d.ts +8 -8
  200. package/lib/modules/age/age.pipe.d.ts +7 -7
  201. package/lib/modules/age/index.d.ts +2 -2
  202. package/lib/modules/alert/alert/alert.d.ts +16 -16
  203. package/lib/modules/alert/alert.module.d.ts +10 -10
  204. package/lib/modules/alert/index.d.ts +5 -5
  205. package/lib/modules/alert/toast/toast.d.ts +20 -20
  206. package/lib/modules/alert/validation/validation.d.ts +17 -17
  207. package/lib/modules/autocomplete/autocomplete.directive.d.ts +11 -11
  208. package/lib/modules/autocomplete/autocomplete.module.d.ts +8 -8
  209. package/lib/modules/autocomplete/index.d.ts +2 -2
  210. package/lib/modules/bb/bb-modal-base.component.d.ts +26 -26
  211. package/lib/modules/bb/bb-modal-toolbar.d.ts +16 -16
  212. package/lib/modules/bb/bb.component.d.ts +52 -52
  213. package/lib/modules/bb/bb.module.d.ts +11 -11
  214. package/lib/modules/bb/index.d.ts +4 -4
  215. package/lib/modules/callback/callback.module.d.ts +8 -8
  216. package/lib/modules/callback/callback.pipe.d.ts +7 -7
  217. package/lib/modules/callback/index.d.ts +2 -2
  218. package/lib/modules/card/card/card.component.d.ts +21 -21
  219. package/lib/modules/card/card.module.d.ts +8 -8
  220. package/lib/modules/card/index.d.ts +2 -2
  221. package/lib/modules/date-ago/date-ago.pipe.d.ts +7 -7
  222. package/lib/modules/date-ago/date.module.d.ts +8 -8
  223. package/lib/modules/date-ago/index.d.ts +2 -2
  224. package/lib/modules/datepicker/date-value-accessor.d.ts +24 -24
  225. package/lib/modules/datepicker/datepicker.module.d.ts +14 -14
  226. package/lib/modules/datepicker/index.d.ts +2 -2
  227. package/lib/modules/edit-toolbar/edit-toolbar.component.d.ts +25 -25
  228. package/lib/modules/edit-toolbar/edit-toolbar.module.d.ts +9 -9
  229. package/lib/modules/edit-toolbar/index.d.ts +2 -2
  230. package/lib/modules/file/file-size.pipe.d.ts +8 -8
  231. package/lib/modules/file/file.module.d.ts +8 -8
  232. package/lib/modules/file/index.d.ts +2 -2
  233. package/lib/modules/file-viewer/file-viewer.d.ts +10 -10
  234. package/lib/modules/file-viewer/index.d.ts +2 -2
  235. package/lib/modules/file-viewer/module.d.ts +10 -10
  236. package/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.d.ts +50 -50
  237. package/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.component.d.ts +6 -6
  238. package/lib/modules/grid-toolbar/grid-toolbar.module.d.ts +10 -10
  239. package/lib/modules/grid-toolbar/index.d.ts +3 -3
  240. package/lib/modules/index.d.ts +31 -31
  241. package/lib/modules/list-toolbar/index.d.ts +2 -2
  242. package/lib/modules/list-toolbar/list-toolbar.component.d.ts +41 -41
  243. package/lib/modules/list-toolbar/list-toolbar.module.d.ts +9 -9
  244. package/lib/modules/loading/index.d.ts +2 -2
  245. package/lib/modules/loading/loading-interceptor.d.ts +21 -21
  246. package/lib/modules/loading/loading.component.d.ts +13 -13
  247. package/lib/modules/loading/loading.module.d.ts +8 -8
  248. package/lib/modules/modal/filter-modal/filter-modal.component.d.ts +10 -10
  249. package/lib/modules/modal/index.d.ts +4 -4
  250. package/lib/modules/modal/modal/modal.component.d.ts +90 -90
  251. package/lib/modules/modal/modal.module.d.ts +12 -12
  252. package/lib/modules/modal/sum-modal/sum-modal.component.d.ts +8 -8
  253. package/lib/modules/page-title/index.d.ts +2 -2
  254. package/lib/modules/page-title/page-title.component.d.ts +12 -12
  255. package/lib/modules/page-title/page-title.module.d.ts +9 -9
  256. package/lib/modules/pager/index.d.ts +2 -2
  257. package/lib/modules/pager/pager/pager.component.d.ts +17 -17
  258. package/lib/modules/pager/pager.module.d.ts +9 -9
  259. package/lib/modules/password/index.d.ts +2 -2
  260. package/lib/modules/password/password.component.d.ts +18 -18
  261. package/lib/modules/password/password.module.d.ts +10 -10
  262. package/lib/modules/progress/index.d.ts +2 -2
  263. package/lib/modules/progress/module.d.ts +9 -9
  264. package/lib/modules/progress/progress.d.ts +33 -33
  265. package/lib/modules/radio/index.d.ts +2 -2
  266. package/lib/modules/radio/radio-button.component.d.ts +44 -44
  267. package/lib/modules/radio/radio.module.d.ts +8 -8
  268. package/lib/modules/readonly/index.d.ts +2 -2
  269. package/lib/modules/readonly/readonly.directive.d.ts +8 -8
  270. package/lib/modules/readonly/readonly.module.d.ts +8 -8
  271. package/lib/modules/recaptcha/index.d.ts +3 -3
  272. package/lib/modules/recaptcha/loader.d.ts +12 -12
  273. package/lib/modules/recaptcha/recaptcha.model.d.ts +109 -109
  274. package/lib/modules/recaptcha/recaptcha.module.d.ts +10 -10
  275. package/lib/modules/recaptcha/recaptcha.service.d.ts +60 -60
  276. package/lib/modules/safe/index.d.ts +2 -2
  277. package/lib/modules/safe/safe.module.d.ts +8 -8
  278. package/lib/modules/safe/safe.pipe.d.ts +16 -16
  279. package/lib/modules/select/index.d.ts +2 -2
  280. package/lib/modules/select/model.d.ts +5 -5
  281. package/lib/modules/select/module.d.ts +9 -9
  282. package/lib/modules/select/select.d.ts +42 -42
  283. package/lib/modules/select2/index.d.ts +2 -2
  284. package/lib/modules/select2/select2.component.d.ts +31 -31
  285. package/lib/modules/select2/select2.module.d.ts +9 -9
  286. package/lib/modules/select2-multiple/index.d.ts +2 -2
  287. package/lib/modules/select2-multiple/select2-multiple.component.d.ts +30 -30
  288. package/lib/modules/select2-multiple/select2-multiple.module.d.ts +9 -9
  289. package/lib/modules/sort/index.d.ts +3 -3
  290. package/lib/modules/sort/sort-button-group/sort-button-group.component.d.ts +34 -34
  291. package/lib/modules/sort/sort.directive.d.ts +34 -34
  292. package/lib/modules/sort/sort.module.d.ts +10 -10
  293. package/lib/modules/time/index.d.ts +3 -3
  294. package/lib/modules/time/time.module.d.ts +8 -8
  295. package/lib/modules/time/time.pipe.d.ts +11 -11
  296. package/lib/modules/time/timer-service.d.ts +21 -21
  297. package/lib/modules/validator/field-validator.d.ts +7 -7
  298. package/lib/modules/validator/index.d.ts +2 -2
  299. package/lib/modules/validator/validator.module.d.ts +9 -9
  300. package/lib/modules/validators/directive.d.ts +67 -67
  301. package/lib/modules/validators/index.d.ts +3 -3
  302. package/lib/modules/validators/module.d.ts +8 -8
  303. package/lib/modules/validators/validator.d.ts +33 -33
  304. package/lib/modules/wizard/index.d.ts +3 -3
  305. package/lib/modules/wizard/wizard/wizard.component.d.ts +19 -19
  306. package/lib/modules/wizard/wizard.module.d.ts +10 -10
  307. package/lib/modules/wizard/wizard2/wizard2.component.d.ts +6 -6
  308. package/lib/services/alert.service.d.ts +33 -33
  309. package/lib/services/auth-guard.service.d.ts +12 -12
  310. package/lib/services/auth.service.d.ts +30 -30
  311. package/lib/services/base.service.d.ts +8 -8
  312. package/lib/services/crud.service.d.ts +32 -32
  313. package/lib/services/http-error-handler.service.d.ts +39 -39
  314. package/lib/services/index.d.ts +6 -6
  315. package/lib/services/web.api.d.ts +31 -31
  316. package/lib/tokens.d.ts +5 -5
  317. package/lib/utils/array-helper.d.ts +14 -14
  318. package/lib/utils/base64-helper.d.ts +4 -4
  319. package/lib/utils/bitwise-helper.d.ts +4 -4
  320. package/lib/utils/bootstrap.helper.d.ts +25 -25
  321. package/lib/utils/convert.d.ts +7 -7
  322. package/lib/utils/css-helper.d.ts +5 -5
  323. package/lib/utils/date-helper.d.ts +43 -43
  324. package/lib/utils/file.helper.d.ts +3 -3
  325. package/lib/utils/filter-helper.d.ts +3 -3
  326. package/lib/utils/handler.d.ts +4 -4
  327. package/lib/utils/html-helper.d.ts +7 -7
  328. package/lib/utils/index.d.ts +22 -22
  329. package/lib/utils/math-helper.d.ts +3 -3
  330. package/lib/utils/object-helper.d.ts +13 -13
  331. package/lib/utils/overlap-helper.d.ts +22 -22
  332. package/lib/utils/pager-helper.d.ts +4 -4
  333. package/lib/utils/random-helper.d.ts +3 -3
  334. package/lib/utils/storage-helper.d.ts +4 -4
  335. package/lib/utils/string-helper.d.ts +8 -8
  336. package/lib/utils/thenBy.d.ts +4 -4
  337. package/lib/utils/time-helper.d.ts +7 -7
  338. package/lib/utils/url-helper.d.ts +5 -5
  339. package/lib/utils/validation-helper.d.ts +4 -4
  340. package/lib/zek.module.d.ts +14 -14
  341. package/package.json +7 -13
  342. package/public-api.d.ts +7 -7
  343. package/esm2020/lib/components/base.component.mjs +0 -96
  344. package/esm2020/lib/components/core-ui.component.mjs +0 -194
  345. package/esm2020/lib/components/core.component.mjs +0 -39
  346. package/esm2020/lib/components/edit-base.component.mjs +0 -234
  347. package/esm2020/lib/components/list-base.component.mjs +0 -253
  348. package/esm2020/lib/modules/age/age.module.mjs +0 -22
  349. package/esm2020/lib/modules/age/age.pipe.mjs +0 -21
  350. package/esm2020/lib/modules/alert/alert/alert.mjs +0 -54
  351. package/esm2020/lib/modules/alert/alert.module.mjs +0 -35
  352. package/esm2020/lib/modules/alert/toast/toast.mjs +0 -109
  353. package/esm2020/lib/modules/alert/validation/validation.mjs +0 -85
  354. package/esm2020/lib/modules/autocomplete/autocomplete.directive.mjs +0 -24
  355. package/esm2020/lib/modules/autocomplete/autocomplete.module.mjs +0 -22
  356. package/esm2020/lib/modules/bb/bb-modal-base.component.mjs +0 -74
  357. package/esm2020/lib/modules/bb/bb-modal-toolbar.mjs +0 -44
  358. package/esm2020/lib/modules/bb/bb.component.mjs +0 -188
  359. package/esm2020/lib/modules/bb/bb.module.mjs +0 -37
  360. package/esm2020/lib/modules/callback/callback.module.mjs +0 -22
  361. package/esm2020/lib/modules/callback/callback.pipe.mjs +0 -22
  362. package/esm2020/lib/modules/card/card/card.component.mjs +0 -47
  363. package/esm2020/lib/modules/card/card.module.mjs +0 -18
  364. package/esm2020/lib/modules/date-ago/date-ago.pipe.mjs +0 -46
  365. package/esm2020/lib/modules/date-ago/date.module.mjs +0 -22
  366. package/esm2020/lib/modules/datepicker/date-value-accessor.mjs +0 -188
  367. package/esm2020/lib/modules/datepicker/datepicker.module.mjs +0 -31
  368. package/esm2020/lib/modules/edit-toolbar/edit-toolbar.component.mjs +0 -74
  369. package/esm2020/lib/modules/edit-toolbar/edit-toolbar.module.mjs +0 -26
  370. package/esm2020/lib/modules/file/file-size.pipe.mjs +0 -47
  371. package/esm2020/lib/modules/file/file.module.mjs +0 -22
  372. package/esm2020/lib/modules/file-viewer/file-viewer.mjs +0 -51
  373. package/esm2020/lib/modules/file-viewer/module.mjs +0 -30
  374. package/esm2020/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.mjs +0 -145
  375. package/esm2020/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.component.mjs +0 -14
  376. package/esm2020/lib/modules/grid-toolbar/grid-toolbar.module.mjs +0 -33
  377. package/esm2020/lib/modules/list-toolbar/list-toolbar.component.mjs +0 -109
  378. package/esm2020/lib/modules/list-toolbar/list-toolbar.module.mjs +0 -24
  379. package/esm2020/lib/modules/loading/loading-interceptor.mjs +0 -79
  380. package/esm2020/lib/modules/loading/loading.component.mjs +0 -35
  381. package/esm2020/lib/modules/loading/loading.module.mjs +0 -32
  382. package/esm2020/lib/modules/modal/filter-modal/filter-modal.component.mjs +0 -26
  383. package/esm2020/lib/modules/modal/modal/modal.component.mjs +0 -307
  384. package/esm2020/lib/modules/modal/modal.module.mjs +0 -62
  385. package/esm2020/lib/modules/modal/sum-modal/sum-modal.component.mjs +0 -27
  386. package/esm2020/lib/modules/page-title/page-title.component.mjs +0 -31
  387. package/esm2020/lib/modules/page-title/page-title.module.mjs +0 -26
  388. package/esm2020/lib/modules/pager/pager/pager.component.mjs +0 -50
  389. package/esm2020/lib/modules/pager/pager.module.mjs +0 -26
  390. package/esm2020/lib/modules/password/password.module.mjs +0 -30
  391. package/esm2020/lib/modules/progress/module.mjs +0 -26
  392. package/esm2020/lib/modules/progress/progress.mjs +0 -97
  393. package/esm2020/lib/modules/radio/radio-button.component.mjs +0 -134
  394. package/esm2020/lib/modules/radio/radio.module.mjs +0 -22
  395. package/esm2020/lib/modules/readonly/readonly.directive.mjs +0 -25
  396. package/esm2020/lib/modules/readonly/readonly.module.mjs +0 -22
  397. package/esm2020/lib/modules/recaptcha/recaptcha.module.mjs +0 -32
  398. package/esm2020/lib/modules/recaptcha/recaptcha.service.mjs +0 -119
  399. package/esm2020/lib/modules/safe/safe.module.mjs +0 -20
  400. package/esm2020/lib/modules/safe/safe.pipe.mjs +0 -37
  401. package/esm2020/lib/modules/select/module.mjs +0 -28
  402. package/esm2020/lib/modules/select/select.mjs +0 -198
  403. package/esm2020/lib/modules/select2/select2.component.mjs +0 -170
  404. package/esm2020/lib/modules/select2/select2.module.mjs +0 -28
  405. package/esm2020/lib/modules/select2-multiple/select2-multiple.component.mjs +0 -132
  406. package/esm2020/lib/modules/select2-multiple/select2-multiple.module.mjs +0 -28
  407. package/esm2020/lib/modules/sort/sort-button-group/sort-button-group.component.mjs +0 -79
  408. package/esm2020/lib/modules/sort/sort.directive.mjs +0 -117
  409. package/esm2020/lib/modules/sort/sort.module.mjs +0 -33
  410. package/esm2020/lib/modules/time/time.module.mjs +0 -27
  411. package/esm2020/lib/modules/time/time.pipe.mjs +0 -40
  412. package/esm2020/lib/modules/time/timer-service.mjs +0 -89
  413. package/esm2020/lib/modules/validator/validator.module.mjs +0 -26
  414. package/esm2020/lib/modules/validators/directive.mjs +0 -75
  415. package/esm2020/lib/modules/validators/module.mjs +0 -22
  416. package/esm2020/lib/modules/wizard/wizard/wizard.component.mjs +0 -65
  417. package/esm2020/lib/modules/wizard/wizard.module.mjs +0 -33
  418. package/esm2020/lib/modules/wizard/wizard2/wizard2.component.mjs +0 -13
  419. package/esm2020/lib/services/alert.service.mjs +0 -76
  420. package/esm2020/lib/services/auth-guard.service.mjs +0 -28
  421. package/esm2020/lib/services/auth.service.mjs +0 -203
  422. package/esm2020/lib/services/http-error-handler.service.mjs +0 -141
  423. package/esm2020/lib/services/web.api.mjs +0 -126
  424. package/esm2020/lib/utils/date-helper.mjs +0 -235
  425. package/esm2020/lib/utils/validation-helper.mjs +0 -10
  426. package/esm2020/lib/zek.module.mjs +0 -33
  427. package/fesm2015/zek.mjs +0 -6693
  428. package/fesm2015/zek.mjs.map +0 -1
@@ -1,253 +0,0 @@
1
- import { ViewChild, Directive } from '@angular/core';
2
- import { BaseComponent } from './base.component';
3
- import { FilterBase, Pager } from '../models';
4
- import { FilterHelper, PagerHelper, StorageHelper, StringHelper, UrlHelper } from '../utils';
5
- import { firstValueFrom } from 'rxjs';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@ngx-translate/core";
8
- import * as i2 from "../services/alert.service";
9
- import * as i3 from "@angular/router";
10
- // declare let bootstrap: any;
11
- export class ListBaseComponent extends BaseComponent {
12
- constructor(service, translate, alert, route, router) {
13
- super(route, router);
14
- this.service = service;
15
- this.translate = translate;
16
- this.alert = alert;
17
- this.filter = new FilterBase();
18
- this.saveFilter = true;
19
- this.internalFilter = new FilterBase();
20
- this.isFiltered = false;
21
- this.selectedIds = [];
22
- this.pager = new Pager();
23
- this.approveModel = {};
24
- }
25
- init() {
26
- super.init();
27
- this.reset();
28
- this.initDefaultFilter();
29
- this.initStoredFilter();
30
- this.assignFilter();
31
- //this.selectedIds = [];
32
- //this.pagedList = new PagedList();
33
- }
34
- async bindModel() {
35
- this.selectedIds = [];
36
- this.model = await firstValueFrom(this.service.getAll(this.internalFilter));
37
- if (this.model)
38
- this.pager = PagerHelper.get(this.model.pager ? this.model.pager.totalItemCount : 0, this.internalFilter.page, this.internalFilter.pageSize);
39
- else
40
- this.pager = new Pager();
41
- //this.pagedList.pager = this.pager;
42
- }
43
- initDefaultFilter() {
44
- }
45
- initStoredFilter() {
46
- let filterParam = this.getQueryParam('filter') || this.getParam('filter');
47
- if (filterParam) {
48
- const tmp = StorageHelper.get('filter');
49
- if (tmp && tmp.url && tmp.url === this.url && tmp.filter) {
50
- this.filter = Object.assign({}, tmp.filter);
51
- //we dont need this.assignFilter(); because after initStoredFilter(); will be assigned.
52
- }
53
- else {
54
- localStorage.removeItem('filter');
55
- }
56
- }
57
- else {
58
- localStorage.removeItem('filter');
59
- }
60
- }
61
- changePage(page) {
62
- this.internalFilter.page = page;
63
- this.filter.page = page;
64
- this.refresh();
65
- this.autoSaveFilter();
66
- }
67
- changePageSize(pageSize) {
68
- this.internalFilter.pageSize = pageSize;
69
- this.filter.pageSize = pageSize;
70
- this.changePage(1);
71
- }
72
- showFilter() {
73
- this.filterModal?.show();
74
- }
75
- search() {
76
- //this.filterModal?.hide();
77
- this.assignFilter();
78
- this.changePage(1);
79
- //this.internalAutoSaveFilter();
80
- }
81
- assignFilter() {
82
- this.internalFilter = Object.assign({}, this.filter);
83
- this.isFiltered = !FilterHelper.isEmpty(this.internalFilter);
84
- }
85
- autoSaveFilter() {
86
- if (this.saveFilter)
87
- this.internalSaveFilter();
88
- }
89
- internalSaveFilter() {
90
- StorageHelper.set('filter', {
91
- url: this.url,
92
- filter: this.internalFilter
93
- });
94
- }
95
- reset() {
96
- this.filter = { page: 1, pageSize: 25 };
97
- this.assignFilter();
98
- }
99
- refresh() {
100
- this.bindModel();
101
- }
102
- create() {
103
- const url = UrlHelper.getNoParam(this.router.url);
104
- // this.router.navigate([url, 'create', { returnUrl: url + ';filter=1' }]);
105
- this.router.navigate([url, 'create'], { queryParams: { returnUrl: url + '?filter=1' } });
106
- }
107
- async delete(id) {
108
- this.alert.clear();
109
- let data = await firstValueFrom(this.service.delete(id));
110
- if (data?.success) {
111
- let message = await firstValueFrom(this.translate.get('Alert.Deleted'));
112
- this.alert.error(message, null, 'fas fa-trash');
113
- this.refresh();
114
- }
115
- }
116
- async delete2(id, id2) {
117
- this.alert.clear();
118
- let data = await firstValueFrom(this.service.delete2(id, id2));
119
- if (data?.success) {
120
- let message = await firstValueFrom(this.translate.get('Alert.Deleted'));
121
- this.alert.error(message, null, 'fas fa-trash');
122
- this.refresh();
123
- }
124
- }
125
- edit(id) {
126
- // this.router.navigate([this.url, id],
127
- // { queryParams: { returnUrl: this.url + ';filter=1' } }
128
- // );
129
- this.router.navigate([this.url, id], { queryParams: { returnUrl: this.url + '?filter=1' } });
130
- }
131
- edit2(id, id2) {
132
- // this.router.navigate([this.url, id, id2, { returnUrl: this.url + ';filter=1' }]);
133
- this.router.navigate([this.url, id, id2], { queryParams: { returnUrl: this.url + '?filter=1' } });
134
- }
135
- select(item) {
136
- item.selected = !item.selected;
137
- let id = item.id;
138
- if (id) {
139
- if (item.selected) {
140
- this.selectedIds.push(id);
141
- }
142
- else {
143
- this.selectedIds = this.selectedIds.filter(item => item !== id);
144
- }
145
- }
146
- }
147
- showApproveModal(id) {
148
- if (!id || !this.approveModal)
149
- return;
150
- let tmp = { ids: [id] };
151
- this.approveModel = {};
152
- this.approveModal.show(tmp);
153
- }
154
- showApproveSelectedModal() {
155
- let tmp = { ids: this.getSelectedIds() };
156
- if (!tmp.ids || tmp.ids.length === 0 || !this.approveModal)
157
- return;
158
- this.approveModel = {};
159
- this.approveModal.show(tmp);
160
- }
161
- async approve(m) {
162
- if (!m)
163
- return;
164
- this.alert.clear();
165
- let data = await firstValueFrom(this.service.approve(m));
166
- if (!data || data.length === 0)
167
- return;
168
- let message = await firstValueFrom(this.translate.get('Alert.Approved'));
169
- this.alert.success(message, undefined, 'fas fa-thumbs-up');
170
- this.refresh();
171
- }
172
- showDisapproveModal(id) {
173
- if (!id || !this.disapproveModal)
174
- return;
175
- let tmp = { ids: [id] };
176
- this.approveModel = {};
177
- this.disapproveModal.show(tmp);
178
- }
179
- showDisapproveSelectedModal() {
180
- let tmp = { ids: this.getSelectedIds() };
181
- if (!tmp.ids || tmp.ids.length === 0 || !this.disapproveModal)
182
- return;
183
- this.approveModel = {};
184
- this.disapproveModal.show(tmp);
185
- }
186
- async disapprove(m) {
187
- if (!m || !this.approveModel)
188
- return;
189
- if (typeof m === 'object') {
190
- m.comment = StringHelper.tryTrim(this.approveModel.comment);
191
- if (!m.comment)
192
- delete m.comment;
193
- }
194
- this.alert.clear();
195
- let data = await firstValueFrom(this.service.disapprove(m));
196
- if (!data || data.length === 0)
197
- return;
198
- let message = await firstValueFrom(this.translate.get('Alert.Disapproved'));
199
- this.alert.success(message, undefined, 'fas fa-thumbs-down');
200
- this.refresh();
201
- }
202
- getSelectedIds() {
203
- return this.selectedIds;
204
- // if (!this.pagedList || !this.pagedList.data) return [];
205
- // let ids = [];
206
- // for (const item of this.pagedList.data) {
207
- // if (!item.selected || !item.id) continue;
208
- // ids.push(item.id);
209
- // }
210
- // return ids;
211
- }
212
- showSum() { }
213
- async sum() {
214
- this.sumModel = null;
215
- let data = await firstValueFrom(this.service.sum(this.internalFilter));
216
- if (data) {
217
- this.sumModel = data;
218
- this.showSum();
219
- }
220
- else {
221
- let message = await firstValueFrom(this.translate.get('Alert.SumError'));
222
- this.alert.error(message);
223
- }
224
- }
225
- export(fileTypeId) {
226
- this.service.export(this.internalFilter, fileTypeId).subscribe(data => {
227
- this.downloadFile(data, 'export.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
228
- });
229
- }
230
- print(printType) {
231
- if (!this.model || !this.model.data)
232
- return;
233
- let ids = this.getSelectedIds();
234
- for (const id of ids) {
235
- super.print(id, printType);
236
- }
237
- }
238
- }
239
- ListBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ListBaseComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
240
- ListBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ListBaseComponent, viewQueries: [{ propertyName: "filterModal", first: true, predicate: ["filterModal"], descendants: true }, { propertyName: "approveModal", first: true, predicate: ["approveModal"], descendants: true }, { propertyName: "disapproveModal", first: true, predicate: ["disapproveModal"], descendants: true }], usesInheritance: true, ngImport: i0 });
241
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ListBaseComponent, decorators: [{
242
- type: Directive
243
- }], ctorParameters: function () { return [{ type: undefined }, { type: i1.TranslateService }, { type: i2.AlertService }, { type: i3.ActivatedRoute }, { type: i3.Router }]; }, propDecorators: { filterModal: [{
244
- type: ViewChild,
245
- args: ['filterModal', { static: false }]
246
- }], approveModal: [{
247
- type: ViewChild,
248
- args: ['approveModal', { static: false }]
249
- }], disapproveModal: [{
250
- type: ViewChild,
251
- args: ['disapproveModal', { static: false }]
252
- }] } });
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBYSxLQUFLLEVBQWEsTUFBTSxXQUFXLENBQUM7QUFHcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFDdEMsOEJBQThCO0FBSTlCLE1BQU0sT0FBTyxpQkFBd0QsU0FBUSxhQUF3QjtJQWdCakcsWUFDdUIsT0FBaUIsRUFDM0IsU0FBMkIsRUFDM0IsS0FBbUIsRUFDNUIsS0FBcUIsRUFDckIsTUFBYztRQUNkLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFMRixZQUFPLEdBQVAsT0FBTyxDQUFVO1FBQzNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFsQmhDLFdBQU0sR0FBUSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQy9CLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFUixtQkFBYyxHQUFRLElBQUksVUFBVSxFQUFFLENBQUM7UUFDakQsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQUN4QixVQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUtwQixpQkFBWSxHQUF5QyxFQUFFLENBQUM7SUFXeEQsQ0FBQztJQUVR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QUFHLEVBQUU7WUFDbEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDOUI7SUFDTCxDQUFDOzs4R0F0UVEsaUJBQWlCO2tHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsU0FBUzt5TUFZMEQsV0FBVztzQkFBMUUsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVzQixZQUFZO3NCQUE1RSxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3dCLGVBQWU7c0JBQWxGLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFZpZXdDaGlsZCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmltcG9ydCB7IElTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbHRlckJhc2UsIFBhZ2VkTGlzdCwgUGFnZXIsIFByaW50VHlwZSB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFpla01vZGFsIH0gZnJvbSAnLi4vbW9kdWxlcy9tb2RhbC9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVySGVscGVyLCBQYWdlckhlbHBlciwgU3RvcmFnZUhlbHBlciwgU3RyaW5nSGVscGVyLCBVcmxIZWxwZXIgfSBmcm9tICcuLi91dGlscyc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbi8vIGRlY2xhcmUgbGV0IGJvb3RzdHJhcDogYW55O1xyXG5cclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgTGlzdEJhc2VDb21wb25lbnQ8VFNlcnZpY2UgZXh0ZW5kcyBJU2VydmljZSA9IElTZXJ2aWNlPiBleHRlbmRzIEJhc2VDb21wb25lbnQ8UGFnZWRMaXN0PiB7XHJcbiAgICBmaWx0ZXI6IGFueSA9IG5ldyBGaWx0ZXJCYXNlKCk7XHJcbiAgICBzYXZlRmlsdGVyID0gdHJ1ZTtcclxuICAgIHNvcnRGaWVsZHM6IGFueTtcclxuICAgIHByb3RlY3RlZCBpbnRlcm5hbEZpbHRlcjogYW55ID0gbmV3IEZpbHRlckJhc2UoKTtcclxuICAgIGlzRmlsdGVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkSWRzOiBhbnlbXSA9IFtdO1xyXG4gICAgcGFnZXIgPSBuZXcgUGFnZXIoKTtcclxuICAgIHN1bU1vZGVsOiBhbnk7XHJcblxyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ZpbHRlck1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJNb2RhbD86IFpla01vZGFsIHwgbnVsbDtcclxuICAgIGFwcHJvdmVNb2RlbDogeyBpZHM/OiBudW1iZXJbXSwgY29tbWVudD86IHN0cmluZyB9ID0ge307XHJcbiAgICBAVmlld0NoaWxkKCdhcHByb3ZlTW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJvdGVjdGVkIHJlYWRvbmx5IGFwcHJvdmVNb2RhbD86IFpla01vZGFsIHwgbnVsbDtcclxuICAgIEBWaWV3Q2hpbGQoJ2Rpc2FwcHJvdmVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYXBwcm92ZU1vZGFsPzogWmVrTW9kYWwgfCBudWxsO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBzZXJ2aWNlOiBUU2VydmljZSxcclxuICAgICAgICByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgcmVhZG9ubHkgYWxlcnQ6IEFsZXJ0U2VydmljZSxcclxuICAgICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgICAgICBzdXBlcihyb3V0ZSwgcm91dGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBpbml0KCkge1xyXG4gICAgICAgIHN1cGVyLmluaXQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuaW5pdERlZmF1bHRGaWx0ZXIoKTtcclxuICAgICAgICB0aGlzLmluaXRTdG9yZWRGaWx0ZXIoKTtcclxuICAgICAgICB0aGlzLmFzc2lnbkZpbHRlcigpO1xyXG5cclxuICAgICAgICAvL3RoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcclxuICAgICAgICAvL3RoaXMucGFnZWRMaXN0ID0gbmV3IFBhZ2VkTGlzdCgpO1xyXG4gICAgfVxyXG4gICAgb3ZlcnJpZGUgYXN5bmMgYmluZE1vZGVsKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcclxuICAgICAgICB0aGlzLm1vZGVsID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldEFsbCh0aGlzLmludGVybmFsRmlsdGVyKSk7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwpXHJcbiAgICAgICAgICAgIHRoaXMucGFnZXIgPSBQYWdlckhlbHBlci5nZXQodGhpcy5tb2RlbC5wYWdlciA/IHRoaXMubW9kZWwucGFnZXIudG90YWxJdGVtQ291bnQgOiAwLCB0aGlzLmludGVybmFsRmlsdGVyLnBhZ2UsIHRoaXMuaW50ZXJuYWxGaWx0ZXIucGFnZVNpemUpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5wYWdlciA9IG5ldyBQYWdlcigpO1xyXG4gICAgICAgIC8vdGhpcy5wYWdlZExpc3QucGFnZXIgPSB0aGlzLnBhZ2VyO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcm90ZWN0ZWQgaW5pdERlZmF1bHRGaWx0ZXIoKSB7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGluaXRTdG9yZWRGaWx0ZXIoKSB7XHJcbiAgICAgICAgbGV0IGZpbHRlclBhcmFtID0gdGhpcy5nZXRRdWVyeVBhcmFtKCdmaWx0ZXInKSB8fCB0aGlzLmdldFBhcmFtKCdmaWx0ZXInKTtcclxuXHJcbiAgICAgICAgaWYgKGZpbHRlclBhcmFtKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRtcCA9IFN0b3JhZ2VIZWxwZXIuZ2V0KCdmaWx0ZXInKTtcclxuICAgICAgICAgICAgaWYgKHRtcCAmJiB0bXAudXJsICYmIHRtcC51cmwgPT09IHRoaXMudXJsICYmIHRtcC5maWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyID0gT2JqZWN0LmFzc2lnbih7fSwgdG1wLmZpbHRlcik7XHJcbiAgICAgICAgICAgICAgICAvL3dlIGRvbnQgbmVlZCB0aGlzLmFzc2lnbkZpbHRlcigpOyBiZWNhdXNlIGFmdGVyIGluaXRTdG9yZWRGaWx0ZXIoKTsgd2lsbCBiZSBhc3NpZ25lZC5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmaWx0ZXInKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmaWx0ZXInKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjaGFuZ2VQYWdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxGaWx0ZXIucGFnZSA9IHBhZ2U7XHJcbiAgICAgICAgdGhpcy5maWx0ZXIucGFnZSA9IHBhZ2U7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgdGhpcy5hdXRvU2F2ZUZpbHRlcigpO1xyXG4gICAgfVxyXG4gICAgY2hhbmdlUGFnZVNpemUocGFnZVNpemU6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxGaWx0ZXIucGFnZVNpemUgPSBwYWdlU2l6ZTtcclxuICAgICAgICB0aGlzLmZpbHRlci5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlUGFnZSgxKTtcclxuICAgIH1cclxuICAgIHNob3dGaWx0ZXIoKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJNb2RhbD8uc2hvdygpO1xyXG4gICAgfVxyXG4gICAgc2VhcmNoKCkge1xyXG4gICAgICAgIC8vdGhpcy5maWx0ZXJNb2RhbD8uaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuYXNzaWduRmlsdGVyKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQYWdlKDEpO1xyXG4gICAgICAgIC8vdGhpcy5pbnRlcm5hbEF1dG9TYXZlRmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgYXNzaWduRmlsdGVyKCkge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxGaWx0ZXIgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmZpbHRlcik7XHJcbiAgICAgICAgdGhpcy5pc0ZpbHRlcmVkID0gIUZpbHRlckhlbHBlci5pc0VtcHR5KHRoaXMuaW50ZXJuYWxGaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBhdXRvU2F2ZUZpbHRlcigpIHtcclxuICAgICAgICBpZiAodGhpcy5zYXZlRmlsdGVyKVxyXG4gICAgICAgICAgICB0aGlzLmludGVybmFsU2F2ZUZpbHRlcigpXHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGludGVybmFsU2F2ZUZpbHRlcigpIHtcclxuICAgICAgICBTdG9yYWdlSGVscGVyLnNldCgnZmlsdGVyJywge1xyXG4gICAgICAgICAgICB1cmw6IHRoaXMudXJsLFxyXG4gICAgICAgICAgICBmaWx0ZXI6IHRoaXMuaW50ZXJuYWxGaWx0ZXJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJlc2V0KCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyID0geyBwYWdlOiAxLCBwYWdlU2l6ZTogMjUgfTtcclxuICAgICAgICB0aGlzLmFzc2lnbkZpbHRlcigpO1xyXG4gICAgfVxyXG4gICAgcmVmcmVzaCgpIHtcclxuICAgICAgICB0aGlzLmJpbmRNb2RlbCgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBjcmVhdGUoKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gVXJsSGVscGVyLmdldE5vUGFyYW0odGhpcy5yb3V0ZXIudXJsKTtcclxuICAgICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsLCAnY3JlYXRlJywgeyByZXR1cm5Vcmw6IHVybCArICc7ZmlsdGVyPTEnIH1dKTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsLCAnY3JlYXRlJ10sXHJcbiAgICAgICAgICAgIHsgcXVlcnlQYXJhbXM6IHsgcmV0dXJuVXJsOiB1cmwgKyAnP2ZpbHRlcj0xJyB9IH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgZGVsZXRlKGlkOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0LmNsZWFyKCk7XHJcbiAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZGVsZXRlKGlkKSk7XHJcbiAgICAgICAgaWYgKGRhdGE/LnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0FsZXJ0LkRlbGV0ZWQnKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnQuZXJyb3IobWVzc2FnZSwgbnVsbCwgJ2ZhcyBmYS10cmFzaCcpXHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIGRlbGV0ZTIoaWQ6IG51bWJlciwgaWQyOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0LmNsZWFyKCk7XHJcbiAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZGVsZXRlMihpZCwgaWQyKSlcclxuICAgICAgICBpZiAoZGF0YT8uc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMudHJhbnNsYXRlLmdldCgnQWxlcnQuRGVsZXRlZCcpKTtcclxuICAgICAgICAgICAgdGhpcy5hbGVydC5lcnJvcihtZXNzYWdlLCBudWxsLCAnZmFzIGZhLXRyYXNoJylcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGVkaXQoaWQ6IG51bWJlcikge1xyXG4gICAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnVybCwgaWRdLFxyXG4gICAgICAgIC8vICAgICB7IHF1ZXJ5UGFyYW1zOiB7IHJldHVyblVybDogdGhpcy51cmwgKyAnO2ZpbHRlcj0xJyB9IH1cclxuICAgICAgICAvLyApO1xyXG5cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy51cmwsIGlkXSxcclxuICAgICAgICAgICAgeyBxdWVyeVBhcmFtczogeyByZXR1cm5Vcmw6IHRoaXMudXJsICsgJz9maWx0ZXI9MScgfSB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIGVkaXQyKGlkOiBudW1iZXIsIGlkMjogbnVtYmVyKSB7XHJcbiAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMudXJsLCBpZCwgaWQyLCB7IHJldHVyblVybDogdGhpcy51cmwgKyAnO2ZpbHRlcj0xJyB9XSk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMudXJsLCBpZCwgaWQyXSxcclxuICAgICAgICAgICAgeyBxdWVyeVBhcmFtczogeyByZXR1cm5Vcmw6IHRoaXMudXJsICsgJz9maWx0ZXI9MScgfSB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHNlbGVjdChpdGVtOiBhbnkpIHtcclxuICAgICAgICBpdGVtLnNlbGVjdGVkID0gIWl0ZW0uc2VsZWN0ZWQ7XHJcbiAgICAgICAgbGV0IGlkID0gaXRlbS5pZDtcclxuICAgICAgICBpZiAoaWQpIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMucHVzaChpZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSWRzID0gdGhpcy5zZWxlY3RlZElkcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBpZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBzaG93QXBwcm92ZU1vZGFsKGlkOiBudW1iZXIpIHtcclxuICAgICAgICBpZiAoIWlkIHx8ICF0aGlzLmFwcHJvdmVNb2RhbCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBsZXQgdG1wID0geyBpZHM6IFtpZF0gfTtcclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbCA9IHt9O1xyXG4gICAgICAgIHRoaXMuYXBwcm92ZU1vZGFsLnNob3codG1wKTtcclxuICAgIH1cclxuICAgIHNob3dBcHByb3ZlU2VsZWN0ZWRNb2RhbCgpIHtcclxuICAgICAgICBsZXQgdG1wID0geyBpZHM6IHRoaXMuZ2V0U2VsZWN0ZWRJZHMoKSB9O1xyXG4gICAgICAgIGlmICghdG1wLmlkcyB8fCB0bXAuaWRzLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5hcHByb3ZlTW9kYWwpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5hcHByb3ZlTW9kZWwgPSB7fTtcclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RhbC5zaG93KHRtcCk7XHJcbiAgICB9XHJcbiAgICBhc3luYyBhcHByb3ZlKG06IGFueSkge1xyXG4gICAgICAgIGlmICghbSkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmFsZXJ0LmNsZWFyKCk7XHJcbiAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuYXBwcm92ZShtKSk7XHJcbiAgICAgICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGxldCBtZXNzYWdlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy50cmFuc2xhdGUuZ2V0KCdBbGVydC5BcHByb3ZlZCcpKTtcclxuICAgICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MobWVzc2FnZSwgdW5kZWZpbmVkLCAnZmFzIGZhLXRodW1icy11cCcpXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHNob3dEaXNhcHByb3ZlTW9kYWwoaWQ6IG51bWJlcikge1xyXG4gICAgICAgIGlmICghaWQgfHwgIXRoaXMuZGlzYXBwcm92ZU1vZGFsKSByZXR1cm47XHJcblxyXG4gICAgICAgIGxldCB0bXAgPSB7IGlkczogW2lkXSB9O1xyXG4gICAgICAgIHRoaXMuYXBwcm92ZU1vZGVsID0ge307XHJcbiAgICAgICAgdGhpcy5kaXNhcHByb3ZlTW9kYWwuc2hvdyh0bXApO1xyXG4gICAgfVxyXG4gICAgc2hvd0Rpc2FwcHJvdmVTZWxlY3RlZE1vZGFsKCkge1xyXG4gICAgICAgIGxldCB0bXAgPSB7IGlkczogdGhpcy5nZXRTZWxlY3RlZElkcygpIH07XHJcbiAgICAgICAgaWYgKCF0bXAuaWRzIHx8IHRtcC5pZHMubGVuZ3RoID09PSAwIHx8ICF0aGlzLmRpc2FwcHJvdmVNb2RhbCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmFwcHJvdmVNb2RlbCA9IHt9O1xyXG4gICAgICAgIHRoaXMuZGlzYXBwcm92ZU1vZGFsLnNob3codG1wKTtcclxuICAgIH1cclxuICAgIGFzeW5jIGRpc2FwcHJvdmUobTogYW55KSB7XHJcbiAgICAgICAgaWYgKCFtIHx8ICF0aGlzLmFwcHJvdmVNb2RlbCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIG0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIG0uY29tbWVudCA9IFN0cmluZ0hlbHBlci50cnlUcmltKHRoaXMuYXBwcm92ZU1vZGVsLmNvbW1lbnQpO1xyXG4gICAgICAgICAgICBpZiAoIW0uY29tbWVudCkgZGVsZXRlIG0uY29tbWVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYWxlcnQuY2xlYXIoKTtcclxuICAgICAgICBsZXQgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5kaXNhcHByb3ZlKG0pKTtcclxuICAgICAgICBpZiAoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0FsZXJ0LkRpc2FwcHJvdmVkJykpO1xyXG4gICAgICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhtZXNzYWdlLCB1bmRlZmluZWQsICdmYXMgZmEtdGh1bWJzLWRvd24nKVxyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNlbGVjdGVkSWRzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSWRzO1xyXG4gICAgICAgIC8vIGlmICghdGhpcy5wYWdlZExpc3QgfHwgIXRoaXMucGFnZWRMaXN0LmRhdGEpIHJldHVybiBbXTtcclxuXHJcbiAgICAgICAgLy8gbGV0IGlkcyA9IFtdO1xyXG4gICAgICAgIC8vIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnBhZ2VkTGlzdC5kYXRhKSB7XHJcbiAgICAgICAgLy8gICAgIGlmICghaXRlbS5zZWxlY3RlZCB8fCAhaXRlbS5pZCkgY29udGludWU7XHJcblxyXG4gICAgICAgIC8vICAgICBpZHMucHVzaChpdGVtLmlkKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gcmV0dXJuIGlkcztcclxuICAgIH1cclxuXHJcbiAgICBzaG93U3VtKCkgeyB9XHJcbiAgICBhc3luYyBzdW0oKSB7XHJcbiAgICAgICAgdGhpcy5zdW1Nb2RlbCA9IG51bGw7XHJcbiAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2Uuc3VtKHRoaXMuaW50ZXJuYWxGaWx0ZXIpKTtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLnN1bU1vZGVsID0gZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5zaG93U3VtKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0FsZXJ0LlN1bUVycm9yJykpO1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0LmVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQoZmlsZVR5cGVJZDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmV4cG9ydCh0aGlzLmludGVybmFsRmlsdGVyLCBmaWxlVHlwZUlkKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZG93bmxvYWRGaWxlKGRhdGEsICdleHBvcnQueGxzeCcsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBvdmVycmlkZSBwcmludChwcmludFR5cGU/OiBQcmludFR5cGUpIHtcclxuICAgICAgICBpZiAoIXRoaXMubW9kZWwgfHwgIXRoaXMubW9kZWwuZGF0YSkgcmV0dXJuO1xyXG5cclxuICAgICAgICBsZXQgaWRzID0gdGhpcy5nZXRTZWxlY3RlZElkcygpO1xyXG4gICAgICAgIGZvciAoY29uc3QgaWQgb2YgaWRzKSB7XHJcbiAgICAgICAgICAgIHN1cGVyLnByaW50KGlkLCBwcmludFR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
@@ -1,22 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { AgePipe } from './age.pipe';
4
- import * as i0 from "@angular/core";
5
- export class AgeModule {
6
- }
7
- AgeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- AgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: AgeModule, declarations: [AgePipe], imports: [CommonModule], exports: [AgePipe] });
9
- AgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AgeModule, imports: [CommonModule] });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AgeModule, decorators: [{
11
- type: NgModule,
12
- args: [{
13
- imports: [
14
- CommonModule
15
- ],
16
- declarations: [
17
- AgePipe,
18
- ],
19
- exports: [AgePipe]
20
- }]
21
- }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL21vZHVsZXMvYWdlL2FnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFXckMsTUFBTSxPQUFPLFNBQVM7O3NHQUFULFNBQVM7dUdBQVQsU0FBUyxpQkFKZCxPQUFPLGFBSFAsWUFBWSxhQUtOLE9BQU87dUdBRVIsU0FBUyxZQVBkLFlBQVk7MkZBT1AsU0FBUztrQkFUckIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTtxQkFDZjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1YsT0FBTztxQkFDVjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IEFnZVBpcGUgfSBmcm9tICcuL2FnZS5waXBlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgICAgQWdlUGlwZSxcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbQWdlUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFnZU1vZHVsZSB7IH0iXX0=
@@ -1,21 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import { DateHelper } from '../../utils';
3
- import * as i0 from "@angular/core";
4
- export class AgePipe {
5
- transform(value, now) {
6
- if (typeof value === 'undefined' || value === null || value === '' || value !== value)
7
- return null;
8
- const date = DateHelper.toDate(value);
9
- let timeDiff = (now ? DateHelper.toDate(now).getTime() : Date.now()) - date.getTime();
10
- return Math.floor((timeDiff / (1000 * 3600 * 24)) / 365.25);
11
- }
12
- }
13
- AgePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AgePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
14
- AgePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: AgePipe, name: "age" });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AgePipe, decorators: [{
16
- type: Pipe,
17
- args: [{
18
- name: 'age'
19
- }]
20
- }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL2FnZS9hZ2UucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUt6QyxNQUFNLE9BQU8sT0FBTztJQUNoQixTQUFTLENBQUMsS0FBVSxFQUFFLEdBQVM7UUFDM0IsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUssS0FBSyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFbkcsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0QyxJQUFJLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUNoRSxDQUFDOztvR0FSUSxPQUFPO2tHQUFQLE9BQU87MkZBQVAsT0FBTztrQkFIbkIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsS0FBSztpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZUhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuXHJcbkBQaXBlKHtcclxuICAgIG5hbWU6ICdhZ2UnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZ2VQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgbm93PzogYW55KTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnIHx8IHZhbHVlICE9PSB2YWx1ZSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IERhdGVIZWxwZXIudG9EYXRlKHZhbHVlKTtcclxuXHJcbiAgICAgICAgbGV0IHRpbWVEaWZmID0gKG5vdyA/IERhdGVIZWxwZXIudG9EYXRlKG5vdykuZ2V0VGltZSgpIDogRGF0ZS5ub3coKSkgLSBkYXRlLmdldFRpbWUoKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigodGltZURpZmYgLyAoMTAwMCAqIDM2MDAgKiAyNCkpIC8gMzY1LjI1KTtcclxuICAgIH1cclxufSJdfQ==
@@ -1,54 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { AlertType } from '../../../models';
3
- import { Convert } from '../../../utils';
4
- import { BootstrapHelper } from '../../../utils/bootstrap.helper';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- export class ZekAlert {
8
- constructor() {
9
- this._type = AlertType.Info;
10
- this._showClose = true;
11
- this.cssAlert = '';
12
- this.cssIcon = '';
13
- }
14
- get type() {
15
- return this._type;
16
- }
17
- set type(v) {
18
- if (v !== this._type) {
19
- this._type = v;
20
- this.cssAlert = '';
21
- this.cssIcon = '';
22
- if (typeof v === 'string') {
23
- let enumValue = BootstrapHelper.getAlertType(v);
24
- if (enumValue) {
25
- this.cssAlert = BootstrapHelper.cssAlert(enumValue);
26
- this.cssIcon = BootstrapHelper.cssAlertIcon(enumValue);
27
- }
28
- }
29
- else {
30
- this.cssAlert = BootstrapHelper.cssAlert(v);
31
- this.cssIcon = BootstrapHelper.cssAlertIcon(v);
32
- }
33
- }
34
- }
35
- get showClose() {
36
- return this._showClose;
37
- }
38
- set showClose(v) {
39
- this._showClose = Convert.toBooleanProperty(v);
40
- }
41
- }
42
- ZekAlert.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ZekAlert, deps: [], target: i0.ɵɵFactoryTarget.Component });
43
- ZekAlert.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ZekAlert, selector: "zek-alert", inputs: { type: "type", showClose: "showClose", title: "title" }, ngImport: i0, template: "<div class=\"alert {{cssAlert}} alert-dismissible fade show\" role=\"alert\">\r\n <button *ngIf=\"_showClose\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n <div class=\"row\">\r\n <div class=\"col-auto pe-1\" *ngIf=\"cssIcon\">\r\n <span class=\"flex-shrink-0\"><i class=\"{{cssIcon}}\"></i></span>\r\n </div>\r\n <div class=\"col-auto\">\r\n <div *ngIf=\"title\">\r\n <h5 class=\"alert-heading\">{{title}}</h5>\r\n </div>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ZekAlert, decorators: [{
45
- type: Component,
46
- args: [{ selector: 'zek-alert', template: "<div class=\"alert {{cssAlert}} alert-dismissible fade show\" role=\"alert\">\r\n <button *ngIf=\"_showClose\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n <div class=\"row\">\r\n <div class=\"col-auto pe-1\" *ngIf=\"cssIcon\">\r\n <span class=\"flex-shrink-0\"><i class=\"{{cssIcon}}\"></i></span>\r\n </div>\r\n <div class=\"col-auto\">\r\n <div *ngIf=\"title\">\r\n <h5 class=\"alert-heading\">{{title}}</h5>\r\n </div>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{display:block}\n"] }]
47
- }], propDecorators: { type: [{
48
- type: Input
49
- }], showClose: [{
50
- type: Input
51
- }], title: [{
52
- type: Input
53
- }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL2FsZXJ0L2FsZXJ0L2FsZXJ0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvbW9kdWxlcy9hbGVydC9hbGVydC9hbGVydC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFPbEUsTUFBTSxPQUFPLFFBQVE7SUFMckI7UUFNWSxVQUFLLEdBQTBDLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUF3QnRFLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFZM0IsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFlBQU8sR0FBRyxFQUFFLENBQUM7S0FVaEI7SUE5Q0csSUFDSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxDQUF3QztRQUM3QyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFBO1lBRWQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7Z0JBQ3ZCLElBQUksU0FBUyxHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hELElBQUksU0FBUyxFQUFFO29CQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUMxRDthQUNKO2lCQUFNO2dCQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xEO1NBQ0o7SUFDTCxDQUFDO0lBR0QsSUFDSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxDQUFlO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7O3FHQWhDUSxRQUFRO3lGQUFSLFFBQVEsbUhDWHJCLDBuQkFhTTsyRkRGTyxRQUFRO2tCQUxwQixTQUFTOytCQUNJLFdBQVc7OEJBT2pCLElBQUk7c0JBRFAsS0FBSztnQkF5QkYsU0FBUztzQkFEWixLQUFLO2dCQVFHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IEFsZXJ0VHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IENvbnZlcnQgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XHJcbmltcG9ydCB7IEJvb3RzdHJhcEhlbHBlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2Jvb3RzdHJhcC5oZWxwZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3play1hbGVydCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQuaHRtbCcsXHJcbiAgICBzdHlsZXM6IFsnOmhvc3QgeyBkaXNwbGF5OiBibG9jazsgfSddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaZWtBbGVydCB7XHJcbiAgICBwcml2YXRlIF90eXBlOiBBbGVydFR5cGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gQWxlcnRUeXBlLkluZm87XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHR5cGUoKTogQWxlcnRUeXBlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgICB9XHJcbiAgICBzZXQgdHlwZSh2OiBBbGVydFR5cGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgaWYgKHYgIT09IHRoaXMuX3R5cGUpIHtcclxuICAgICAgICAgICAgdGhpcy5fdHlwZSA9IHZcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY3NzQWxlcnQgPSAnJztcclxuICAgICAgICAgICAgdGhpcy5jc3NJY29uID0gJyc7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIGxldCBlbnVtVmFsdWUgPSBCb290c3RyYXBIZWxwZXIuZ2V0QWxlcnRUeXBlKHYpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVudW1WYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3NzQWxlcnQgPSBCb290c3RyYXBIZWxwZXIuY3NzQWxlcnQoZW51bVZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNzc0ljb24gPSBCb290c3RyYXBIZWxwZXIuY3NzQWxlcnRJY29uKGVudW1WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNzc0FsZXJ0ID0gQm9vdHN0cmFwSGVscGVyLmNzc0FsZXJ0KHYpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jc3NJY29uID0gQm9vdHN0cmFwSGVscGVyLmNzc0FsZXJ0SWNvbih2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfc2hvd0Nsb3NlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgc2hvd0Nsb3NlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93Q2xvc2U7XHJcbiAgICB9XHJcbiAgICBzZXQgc2hvd0Nsb3NlKHY6IEJvb2xlYW5JbnB1dCkge1xyXG4gICAgICAgIHRoaXMuX3Nob3dDbG9zZSA9IENvbnZlcnQudG9Cb29sZWFuUHJvcGVydHkodik7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xyXG5cclxuXHJcbiAgICBjc3NBbGVydCA9ICcnO1xyXG4gICAgY3NzSWNvbiA9ICcnO1xyXG5cclxuXHJcbiAgICAvLyBjc3NJY29uKCkge1xyXG4gICAgLy8gICAgIHJldHVybiBCb290c3RyYXBIZWxwZXIuY3NzQWxlcnRJY29uKHRoaXMuX3R5cGUpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIGNzc0FsZXJ0KCkge1xyXG4gICAgLy8gICAgIHJldHVybiBCb290c3RyYXBIZWxwZXIuY3NzQWxlcnQodGhpcy5fdHlwZSk7XHJcbiAgICAvLyB9XHJcbn1cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJhbGVydCB7e2Nzc0FsZXJ0fX0gYWxlcnQtZGlzbWlzc2libGUgZmFkZSBzaG93XCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICA8YnV0dG9uICpuZ0lmPVwiX3Nob3dDbG9zZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGRhdGEtYnMtZGlzbWlzcz1cImFsZXJ0XCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+PC9idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIHBlLTFcIiAqbmdJZj1cImNzc0ljb25cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4LXNocmluay0wXCI+PGkgY2xhc3M9XCJ7e2Nzc0ljb259fVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiYWxlcnQtaGVhZGluZ1wiPnt7dGl0bGV9fTwvaDU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -1,35 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { ZekAlert } from './alert/alert';
4
- import { ZekToast } from './toast/toast';
5
- import { ZekValidation } from './validation/validation';
6
- import * as i0 from "@angular/core";
7
- export class AlertModule {
8
- }
9
- AlertModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- AlertModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: AlertModule, declarations: [ZekAlert,
11
- ZekValidation,
12
- ZekToast], imports: [CommonModule], exports: [ZekAlert,
13
- ZekValidation,
14
- ZekToast] });
15
- AlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AlertModule, imports: [CommonModule] });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AlertModule, decorators: [{
17
- type: NgModule,
18
- args: [{
19
- imports: [
20
- CommonModule
21
- ],
22
- declarations: [
23
- ZekAlert,
24
- ZekValidation,
25
- ZekToast,
26
- ],
27
- providers: [],
28
- exports: [
29
- ZekAlert,
30
- ZekValidation,
31
- ZekToast,
32
- ]
33
- }]
34
- }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvbW9kdWxlcy9hbGVydC9hbGVydC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFtQnhELE1BQU0sT0FBTyxXQUFXOzt3R0FBWCxXQUFXO3lHQUFYLFdBQVcsaUJBWmhCLFFBQVE7UUFDUixhQUFhO1FBQ2IsUUFBUSxhQUxSLFlBQVksYUFVWixRQUFRO1FBQ1IsYUFBYTtRQUNiLFFBQVE7eUdBR0gsV0FBVyxZQWZoQixZQUFZOzJGQWVQLFdBQVc7a0JBakJ2QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3FCQUNmO29CQUNELFlBQVksRUFBRTt3QkFDVixRQUFRO3dCQUNSLGFBQWE7d0JBQ2IsUUFBUTtxQkFDWDtvQkFDRCxTQUFTLEVBQUUsRUFDVjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsUUFBUTt3QkFDUixhQUFhO3dCQUNiLFFBQVE7cUJBQ1g7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgWmVrQWxlcnQgfSBmcm9tICcuL2FsZXJ0L2FsZXJ0JztcclxuaW1wb3J0IHsgWmVrVG9hc3QgfSBmcm9tICcuL3RvYXN0L3RvYXN0JztcclxuaW1wb3J0IHsgWmVrVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbi92YWxpZGF0aW9uJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgICAgWmVrQWxlcnQsXHJcbiAgICAgICAgWmVrVmFsaWRhdGlvbixcclxuICAgICAgICBaZWtUb2FzdCxcclxuICAgIF0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbXHJcbiAgICAgICAgWmVrQWxlcnQsXHJcbiAgICAgICAgWmVrVmFsaWRhdGlvbixcclxuICAgICAgICBaZWtUb2FzdCxcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFsZXJ0TW9kdWxlIHsgfSJdfQ==
@@ -1,109 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { BootstrapHelper } from '../../../utils';
3
- import { AlertType } from '../../../models';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../../services/alert.service";
6
- import * as i2 from "@angular/common";
7
- export class ZekToast {
8
- constructor(alertService) {
9
- this.alertService = alertService;
10
- this.icon = true;
11
- this.toasts = [];
12
- }
13
- ngOnInit() {
14
- this.subscription = this.alertService.getToast().subscribe((toast) => {
15
- if (!toast) {
16
- // clear alerts when an empty alert is received
17
- this.toasts = [];
18
- return;
19
- }
20
- // add toast to array
21
- this.cssInit(toast);
22
- this.toasts.unshift(toast);
23
- this.timeout = setTimeout(() => {
24
- this.remove(toast);
25
- // let toastEl = document.getElementById(`toast-${toast.id}`);
26
- // let t = new bootstrap.Toast(toastEl);
27
- // t.show();
28
- }, 3000);
29
- // let toastElList = [].slice.call(document.querySelectorAll('.toast'))
30
- // let toastList = toastElList.map(function (toastEl) {
31
- // return new bootstrap.Toast(toastEl)
32
- // })
33
- // toastList.forEach(t => {
34
- // t.show();
35
- // });
36
- });
37
- }
38
- ngOnDestroy() {
39
- if (this.subscription) {
40
- this.subscription.unsubscribe();
41
- }
42
- this.clearTimeout();
43
- }
44
- clear() {
45
- this.alertService.clear();
46
- }
47
- remove(toast) {
48
- this.toasts = this.toasts.filter(x => x !== toast);
49
- }
50
- clearTimeout() {
51
- if (this.timeout) {
52
- clearTimeout(this.timeout);
53
- this.timeout = null;
54
- }
55
- }
56
- cssInit(toast) {
57
- if (!toast || !toast.type)
58
- return;
59
- if (this.icon) {
60
- toast.icon = BootstrapHelper.cssAlertIcon(toast.type);
61
- }
62
- var v = toast;
63
- switch (toast.type) {
64
- case AlertType.Primary:
65
- v.css = 'bg-primary text-white';
66
- break;
67
- case AlertType.Success:
68
- v.css = 'bg-success text-white';
69
- // v.iconColor = 'text--accent-green';
70
- // v.borderColor = 'border--accent-green';
71
- break;
72
- case AlertType.Danger:
73
- v.css = 'bg-danger text-white';
74
- // v.iconColor = 'text--accent-red';
75
- // v.borderColor = 'border--accent-red';
76
- break;
77
- case AlertType.Warning:
78
- v.css = 'bg-warning text-dark';
79
- // v.iconColor = 'text--accent-yellow';
80
- // v.borderColor = 'border--accent-yellow';
81
- break;
82
- case AlertType.Info:
83
- v.css = 'bg-info text-white';
84
- // v.iconColor = 'text--accent-blue';
85
- // v.borderColor = 'border--accent-blue';
86
- break;
87
- case AlertType.Light:
88
- v.css = 'bg-light text-dark';
89
- break;
90
- case AlertType.Dark:
91
- v.css = 'bg-dark text-white';
92
- break;
93
- default:
94
- v.css = 'bg-secondary text-white';
95
- break;
96
- }
97
- }
98
- }
99
- ZekToast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ZekToast, deps: [{ token: i1.AlertService }], target: i0.ɵɵFactoryTarget.Component });
100
- ZekToast.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ZekToast, selector: "zek-toast", inputs: { timeOut: "timeOut", icon: "icon" }, ngImport: i0, template: "<div class=\"toast-container position-fixed top-0 end-0 p-3\">\r\n <div *ngFor=\"let toast of toasts\" class=\"toast fade show border-0 {{ toast.css }}\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" data-bs-delay=\"3000\">\r\n <div class=\"toast-header\">\r\n <span class=\"me-1\" *ngIf=\"icon && toast.icon\"><i class=\"{{ toast.icon }}\"></i></span>\r\n <strong class=\"me-auto\" *ngIf=\"toast.title\">{{ toast.title }}</strong>\r\n <button type=\"button\" class=\"btn-close ms-auto me-2\" data-bs-dismiss=\"toast\" aria-label=\"Close\" (click)=\"remove(toast)\"></button>\r\n </div>\r\n <div class=\"toast-body\">\r\n {{ toast.message }}\r\n </div>\r\n </div>\r\n <!-- <div *ngFor=\"let toast of toasts\" class=\"toast fade show\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" data-bs-delay=\"3000\">\r\n <div class=\"toast-body\">\r\n <div class=\"row\">\r\n <div class=\"col-auto pe-1 border-start border-8 {{toast.borderColor}}\">\r\n <span *ngIf=\"toast.icon\" class=\"icon flex-shrink-0 {{toast.iconColor}}\"><i class=\"{{toast.icon}}\"></i></span>\r\n </div>\r\n <div class=\"col\">\r\n <div *ngIf=\"toast.title\"><h5>{{toast.title}}</h5></div>\r\n {{ toast.message }}\r\n </div>\r\n <div class=\"col-auto p-0\">\r\n <button type=\"button\" class=\"btn-close ms-auto me-2\" data-bs-dismiss=\"toast\" aria-label=\"Close\" (click)=\"remove(toast)\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n</div>", styles: [":host>.toast-container{z-index:999999;opacity:.9}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ZekToast, decorators: [{
102
- type: Component,
103
- args: [{ selector: 'zek-toast', template: "<div class=\"toast-container position-fixed top-0 end-0 p-3\">\r\n <div *ngFor=\"let toast of toasts\" class=\"toast fade show border-0 {{ toast.css }}\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" data-bs-delay=\"3000\">\r\n <div class=\"toast-header\">\r\n <span class=\"me-1\" *ngIf=\"icon && toast.icon\"><i class=\"{{ toast.icon }}\"></i></span>\r\n <strong class=\"me-auto\" *ngIf=\"toast.title\">{{ toast.title }}</strong>\r\n <button type=\"button\" class=\"btn-close ms-auto me-2\" data-bs-dismiss=\"toast\" aria-label=\"Close\" (click)=\"remove(toast)\"></button>\r\n </div>\r\n <div class=\"toast-body\">\r\n {{ toast.message }}\r\n </div>\r\n </div>\r\n <!-- <div *ngFor=\"let toast of toasts\" class=\"toast fade show\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" data-bs-delay=\"3000\">\r\n <div class=\"toast-body\">\r\n <div class=\"row\">\r\n <div class=\"col-auto pe-1 border-start border-8 {{toast.borderColor}}\">\r\n <span *ngIf=\"toast.icon\" class=\"icon flex-shrink-0 {{toast.iconColor}}\"><i class=\"{{toast.icon}}\"></i></span>\r\n </div>\r\n <div class=\"col\">\r\n <div *ngIf=\"toast.title\"><h5>{{toast.title}}</h5></div>\r\n {{ toast.message }}\r\n </div>\r\n <div class=\"col-auto p-0\">\r\n <button type=\"button\" class=\"btn-close ms-auto me-2\" data-bs-dismiss=\"toast\" aria-label=\"Close\" (click)=\"remove(toast)\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n</div>", styles: [":host>.toast-container{z-index:999999;opacity:.9}\n"] }]
104
- }], ctorParameters: function () { return [{ type: i1.AlertService }]; }, propDecorators: { timeOut: [{
105
- type: Input
106
- }], icon: [{
107
- type: Input
108
- }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi9tb2R1bGVzL2FsZXJ0L3RvYXN0L3RvYXN0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvbW9kdWxlcy9hbGVydC90b2FzdC90b2FzdC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBTzVDLE1BQU0sT0FBTyxRQUFRO0lBUWpCLFlBQTZCLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBTjlDLFNBQUksR0FBRyxJQUFJLENBQUM7UUFFckIsV0FBTSxHQUFVLEVBQUUsQ0FBQztJQUl3QyxDQUFDO0lBRTVELFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDeEUsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDUiwrQ0FBK0M7Z0JBQy9DLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNqQixPQUFPO2FBQ1Y7WUFFRCxxQkFBcUI7WUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUzQixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25CLDhEQUE4RDtnQkFDOUQsd0NBQXdDO2dCQUN4QyxZQUFZO1lBQ2hCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUdULHVFQUF1RTtZQUN2RSx1REFBdUQ7WUFDdkQsMENBQTBDO1lBQzFDLEtBQUs7WUFDTCwyQkFBMkI7WUFDM0IsZ0JBQWdCO1lBQ2hCLE1BQU07UUFDVixDQUFDLENBQUMsQ0FBQztJQUlQLENBQUM7SUFHRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUdELEtBQUs7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBWTtRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFlBQVk7UUFDUixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUdELE9BQU8sQ0FBQyxLQUFZO1FBQ2hCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUNyQixPQUFPO1FBR1gsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1gsS0FBSyxDQUFDLElBQUksR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6RDtRQUVELElBQUksQ0FBQyxHQUFHLEtBQVksQ0FBQztRQUNyQixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDaEIsS0FBSyxTQUFTLENBQUMsT0FBTztnQkFDbEIsQ0FBQyxDQUFDLEdBQUcsR0FBRyx1QkFBdUIsQ0FBQztnQkFDaEMsTUFBTTtZQUNWLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ2xCLENBQUMsQ0FBQyxHQUFHLEdBQUcsdUJBQXVCLENBQUM7Z0JBQ2hDLHNDQUFzQztnQkFDdEMsMENBQTBDO2dCQUMxQyxNQUFNO1lBQ1YsS0FBSyxTQUFTLENBQUMsTUFBTTtnQkFDakIsQ0FBQyxDQUFDLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQztnQkFDL0Isb0NBQW9DO2dCQUNwQyx3Q0FBd0M7Z0JBQ3hDLE1BQU07WUFDVixLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNsQixDQUFDLENBQUMsR0FBRyxHQUFHLHNCQUFzQixDQUFDO2dCQUMvQix1Q0FBdUM7Z0JBQ3ZDLDJDQUEyQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssU0FBUyxDQUFDLElBQUk7Z0JBQ2YsQ0FBQyxDQUFDLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQztnQkFDN0IscUNBQXFDO2dCQUNyQyx5Q0FBeUM7Z0JBQ3pDLE1BQU07WUFDVixLQUFLLFNBQVMsQ0FBQyxLQUFLO2dCQUNoQixDQUFDLENBQUMsR0FBRyxHQUFHLG9CQUFvQixDQUFDO2dCQUM3QixNQUFNO1lBQ1YsS0FBSyxTQUFTLENBQUMsSUFBSTtnQkFDZixDQUFDLENBQUMsR0FBRyxHQUFHLG9CQUFvQixDQUFDO2dCQUM3QixNQUFNO1lBR1Y7Z0JBQ0ksQ0FBQyxDQUFDLEdBQUcsR0FBRyx5QkFBeUIsQ0FBQztnQkFDbEMsTUFBTTtTQUNiO0lBQ0wsQ0FBQzs7cUdBakhRLFFBQVE7eUZBQVIsUUFBUSwrRkNickIsNHNEQTJCTTsyRkRkTyxRQUFRO2tCQUxwQixTQUFTOytCQUNJLFdBQVc7bUdBS1osT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCb290c3RyYXBIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XHJcbi8vZGVjbGFyZSBsZXQgYm9vdHN0cmFwOiBhbnk7XHJcblxyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIFRvYXN0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0VHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnemVrLXRvYXN0JyxcclxuICAgIHN0eWxlVXJsczogWycuL3RvYXN0LmNzcyddLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvYXN0Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaZWtUb2FzdCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBJbnB1dCgpIHRpbWVPdXQ/OiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBpY29uID0gdHJ1ZTtcclxuXHJcbiAgICB0b2FzdHM6IGFueVtdID0gW107XHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgdGltZW91dDogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5hbGVydFNlcnZpY2UuZ2V0VG9hc3QoKS5zdWJzY3JpYmUoKHRvYXN0OiBUb2FzdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRvYXN0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjbGVhciBhbGVydHMgd2hlbiBhbiBlbXB0eSBhbGVydCBpcyByZWNlaXZlZFxyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gYWRkIHRvYXN0IHRvIGFycmF5XHJcbiAgICAgICAgICAgIHRoaXMuY3NzSW5pdCh0b2FzdCk7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RzLnVuc2hpZnQodG9hc3QpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZSh0b2FzdCk7XHJcbiAgICAgICAgICAgICAgICAvLyBsZXQgdG9hc3RFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGB0b2FzdC0ke3RvYXN0LmlkfWApO1xyXG4gICAgICAgICAgICAgICAgLy8gbGV0IHQgPSBuZXcgYm9vdHN0cmFwLlRvYXN0KHRvYXN0RWwpO1xyXG4gICAgICAgICAgICAgICAgLy8gdC5zaG93KCk7XHJcbiAgICAgICAgICAgIH0sIDMwMDApO1xyXG5cclxuXHJcbiAgICAgICAgICAgIC8vIGxldCB0b2FzdEVsTGlzdCA9IFtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvYXN0JykpXHJcbiAgICAgICAgICAgIC8vIGxldCB0b2FzdExpc3QgPSB0b2FzdEVsTGlzdC5tYXAoZnVuY3Rpb24gKHRvYXN0RWwpIHtcclxuICAgICAgICAgICAgLy8gICAgIHJldHVybiBuZXcgYm9vdHN0cmFwLlRvYXN0KHRvYXN0RWwpXHJcbiAgICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgICAgIC8vIHRvYXN0TGlzdC5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgdC5zaG93KCk7XHJcbiAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuXHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXQoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgY2xlYXIoKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuY2xlYXIoKTtcclxuICAgIH1cclxuICAgIHJlbW92ZSh0b2FzdDogVG9hc3QpIHtcclxuICAgICAgICB0aGlzLnRvYXN0cyA9IHRoaXMudG9hc3RzLmZpbHRlcih4ID0+IHggIT09IHRvYXN0KTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhclRpbWVvdXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudGltZW91dCkge1xyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcclxuICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNzc0luaXQodG9hc3Q6IFRvYXN0KSB7XHJcbiAgICAgICAgaWYgKCF0b2FzdCB8fCAhdG9hc3QudHlwZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaWNvbikge1xyXG4gICAgICAgICAgICB0b2FzdC5pY29uID0gQm9vdHN0cmFwSGVscGVyLmNzc0FsZXJ0SWNvbih0b2FzdC50eXBlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciB2ID0gdG9hc3QgYXMgYW55O1xyXG4gICAgICAgIHN3aXRjaCAodG9hc3QudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0VHlwZS5QcmltYXJ5OlxyXG4gICAgICAgICAgICAgICAgdi5jc3MgPSAnYmctcHJpbWFyeSB0ZXh0LXdoaXRlJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0VHlwZS5TdWNjZXNzOlxyXG4gICAgICAgICAgICAgICAgdi5jc3MgPSAnYmctc3VjY2VzcyB0ZXh0LXdoaXRlJztcclxuICAgICAgICAgICAgICAgIC8vIHYuaWNvbkNvbG9yID0gJ3RleHQtLWFjY2VudC1ncmVlbic7XHJcbiAgICAgICAgICAgICAgICAvLyB2LmJvcmRlckNvbG9yID0gJ2JvcmRlci0tYWNjZW50LWdyZWVuJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0VHlwZS5EYW5nZXI6XHJcbiAgICAgICAgICAgICAgICB2LmNzcyA9ICdiZy1kYW5nZXIgdGV4dC13aGl0ZSc7XHJcbiAgICAgICAgICAgICAgICAvLyB2Lmljb25Db2xvciA9ICd0ZXh0LS1hY2NlbnQtcmVkJztcclxuICAgICAgICAgICAgICAgIC8vIHYuYm9yZGVyQ29sb3IgPSAnYm9yZGVyLS1hY2NlbnQtcmVkJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0VHlwZS5XYXJuaW5nOlxyXG4gICAgICAgICAgICAgICAgdi5jc3MgPSAnYmctd2FybmluZyB0ZXh0LWRhcmsnO1xyXG4gICAgICAgICAgICAgICAgLy8gdi5pY29uQ29sb3IgPSAndGV4dC0tYWNjZW50LXllbGxvdyc7XHJcbiAgICAgICAgICAgICAgICAvLyB2LmJvcmRlckNvbG9yID0gJ2JvcmRlci0tYWNjZW50LXllbGxvdyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuSW5mbzpcclxuICAgICAgICAgICAgICAgIHYuY3NzID0gJ2JnLWluZm8gdGV4dC13aGl0ZSc7XHJcbiAgICAgICAgICAgICAgICAvLyB2Lmljb25Db2xvciA9ICd0ZXh0LS1hY2NlbnQtYmx1ZSc7XHJcbiAgICAgICAgICAgICAgICAvLyB2LmJvcmRlckNvbG9yID0gJ2JvcmRlci0tYWNjZW50LWJsdWUnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQWxlcnRUeXBlLkxpZ2h0OlxyXG4gICAgICAgICAgICAgICAgdi5jc3MgPSAnYmctbGlnaHQgdGV4dC1kYXJrJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEFsZXJ0VHlwZS5EYXJrOlxyXG4gICAgICAgICAgICAgICAgdi5jc3MgPSAnYmctZGFyayB0ZXh0LXdoaXRlJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICB2LmNzcyA9ICdiZy1zZWNvbmRhcnkgdGV4dC13aGl0ZSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJ0b2FzdC1jb250YWluZXIgcG9zaXRpb24tZml4ZWQgdG9wLTAgZW5kLTAgcC0zXCI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0b2FzdCBvZiB0b2FzdHNcIiBjbGFzcz1cInRvYXN0IGZhZGUgc2hvdyBib3JkZXItMCB7eyB0b2FzdC5jc3MgfX1cIiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBhcmlhLWF0b21pYz1cInRydWVcIiBkYXRhLWJzLWRlbGF5PVwiMzAwMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0xXCIgKm5nSWY9XCJpY29uICYmIHRvYXN0Lmljb25cIj48aSBjbGFzcz1cInt7IHRvYXN0Lmljb24gfX1cIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwibWUtYXV0b1wiICpuZ0lmPVwidG9hc3QudGl0bGVcIj57eyB0b2FzdC50aXRsZSB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZSBtcy1hdXRvIG1lLTJcIiBkYXRhLWJzLWRpc21pc3M9XCJ0b2FzdFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJyZW1vdmUodG9hc3QpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWJvZHlcIj5cclxuICAgICAgICAgICAge3sgdG9hc3QubWVzc2FnZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIDxkaXYgKm5nRm9yPVwibGV0IHRvYXN0IG9mIHRvYXN0c1wiIGNsYXNzPVwidG9hc3QgZmFkZSBzaG93XCIgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgZGF0YS1icy1kZWxheT1cIjMwMDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtYm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gcGUtMSBib3JkZXItc3RhcnQgYm9yZGVyLTgge3t0b2FzdC5ib3JkZXJDb2xvcn19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0b2FzdC5pY29uXCIgY2xhc3M9XCJpY29uIGZsZXgtc2hyaW5rLTAge3t0b2FzdC5pY29uQ29sb3J9fVwiPjxpIGNsYXNzPVwie3t0b2FzdC5pY29ufX1cIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRvYXN0LnRpdGxlXCI+PGg1Pnt7dG9hc3QudGl0bGV9fTwvaDU+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgdG9hc3QubWVzc2FnZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2UgbXMtYXV0byBtZS0yXCIgZGF0YS1icy1kaXNtaXNzPVwidG9hc3RcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwicmVtb3ZlKHRvYXN0KVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IC0tPlxyXG48L2Rpdj4iXX0=