zek 15.2.1 → 16.0.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 (430) 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 +259 -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/esm2022/lib/models/pager.model.mjs +43 -0
  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 +6431 -6415
  172. package/fesm2022/zek.mjs.map +1 -0
  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 +32 -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/models/pager.model.mjs +0 -32
  349. package/esm2020/lib/modules/age/age.module.mjs +0 -22
  350. package/esm2020/lib/modules/age/age.pipe.mjs +0 -21
  351. package/esm2020/lib/modules/alert/alert/alert.mjs +0 -54
  352. package/esm2020/lib/modules/alert/alert.module.mjs +0 -35
  353. package/esm2020/lib/modules/alert/toast/toast.mjs +0 -109
  354. package/esm2020/lib/modules/alert/validation/validation.mjs +0 -85
  355. package/esm2020/lib/modules/autocomplete/autocomplete.directive.mjs +0 -24
  356. package/esm2020/lib/modules/autocomplete/autocomplete.module.mjs +0 -22
  357. package/esm2020/lib/modules/bb/bb-modal-base.component.mjs +0 -74
  358. package/esm2020/lib/modules/bb/bb-modal-toolbar.mjs +0 -44
  359. package/esm2020/lib/modules/bb/bb.component.mjs +0 -188
  360. package/esm2020/lib/modules/bb/bb.module.mjs +0 -37
  361. package/esm2020/lib/modules/callback/callback.module.mjs +0 -22
  362. package/esm2020/lib/modules/callback/callback.pipe.mjs +0 -22
  363. package/esm2020/lib/modules/card/card/card.component.mjs +0 -47
  364. package/esm2020/lib/modules/card/card.module.mjs +0 -18
  365. package/esm2020/lib/modules/date-ago/date-ago.pipe.mjs +0 -46
  366. package/esm2020/lib/modules/date-ago/date.module.mjs +0 -22
  367. package/esm2020/lib/modules/datepicker/date-value-accessor.mjs +0 -188
  368. package/esm2020/lib/modules/datepicker/datepicker.module.mjs +0 -31
  369. package/esm2020/lib/modules/edit-toolbar/edit-toolbar.component.mjs +0 -74
  370. package/esm2020/lib/modules/edit-toolbar/edit-toolbar.module.mjs +0 -26
  371. package/esm2020/lib/modules/file/file-size.pipe.mjs +0 -47
  372. package/esm2020/lib/modules/file/file.module.mjs +0 -22
  373. package/esm2020/lib/modules/file-viewer/file-viewer.mjs +0 -51
  374. package/esm2020/lib/modules/file-viewer/module.mjs +0 -30
  375. package/esm2020/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.mjs +0 -145
  376. package/esm2020/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.component.mjs +0 -14
  377. package/esm2020/lib/modules/grid-toolbar/grid-toolbar.module.mjs +0 -33
  378. package/esm2020/lib/modules/list-toolbar/list-toolbar.component.mjs +0 -109
  379. package/esm2020/lib/modules/list-toolbar/list-toolbar.module.mjs +0 -24
  380. package/esm2020/lib/modules/loading/loading-interceptor.mjs +0 -79
  381. package/esm2020/lib/modules/loading/loading.component.mjs +0 -35
  382. package/esm2020/lib/modules/loading/loading.module.mjs +0 -32
  383. package/esm2020/lib/modules/modal/filter-modal/filter-modal.component.mjs +0 -26
  384. package/esm2020/lib/modules/modal/modal/modal.component.mjs +0 -307
  385. package/esm2020/lib/modules/modal/modal.module.mjs +0 -62
  386. package/esm2020/lib/modules/modal/sum-modal/sum-modal.component.mjs +0 -27
  387. package/esm2020/lib/modules/page-title/page-title.component.mjs +0 -31
  388. package/esm2020/lib/modules/page-title/page-title.module.mjs +0 -26
  389. package/esm2020/lib/modules/pager/pager/pager.component.mjs +0 -50
  390. package/esm2020/lib/modules/pager/pager.module.mjs +0 -26
  391. package/esm2020/lib/modules/password/password.module.mjs +0 -30
  392. package/esm2020/lib/modules/progress/module.mjs +0 -26
  393. package/esm2020/lib/modules/progress/progress.mjs +0 -97
  394. package/esm2020/lib/modules/radio/radio-button.component.mjs +0 -134
  395. package/esm2020/lib/modules/radio/radio.module.mjs +0 -22
  396. package/esm2020/lib/modules/readonly/readonly.directive.mjs +0 -25
  397. package/esm2020/lib/modules/readonly/readonly.module.mjs +0 -22
  398. package/esm2020/lib/modules/recaptcha/recaptcha.module.mjs +0 -32
  399. package/esm2020/lib/modules/recaptcha/recaptcha.service.mjs +0 -119
  400. package/esm2020/lib/modules/safe/safe.module.mjs +0 -20
  401. package/esm2020/lib/modules/safe/safe.pipe.mjs +0 -37
  402. package/esm2020/lib/modules/select/module.mjs +0 -28
  403. package/esm2020/lib/modules/select/select.mjs +0 -198
  404. package/esm2020/lib/modules/select2/select2.component.mjs +0 -170
  405. package/esm2020/lib/modules/select2/select2.module.mjs +0 -28
  406. package/esm2020/lib/modules/select2-multiple/select2-multiple.component.mjs +0 -132
  407. package/esm2020/lib/modules/select2-multiple/select2-multiple.module.mjs +0 -28
  408. package/esm2020/lib/modules/sort/sort-button-group/sort-button-group.component.mjs +0 -79
  409. package/esm2020/lib/modules/sort/sort.directive.mjs +0 -117
  410. package/esm2020/lib/modules/sort/sort.module.mjs +0 -33
  411. package/esm2020/lib/modules/time/time.module.mjs +0 -27
  412. package/esm2020/lib/modules/time/time.pipe.mjs +0 -40
  413. package/esm2020/lib/modules/time/timer-service.mjs +0 -89
  414. package/esm2020/lib/modules/validator/validator.module.mjs +0 -26
  415. package/esm2020/lib/modules/validators/directive.mjs +0 -75
  416. package/esm2020/lib/modules/validators/module.mjs +0 -22
  417. package/esm2020/lib/modules/wizard/wizard/wizard.component.mjs +0 -65
  418. package/esm2020/lib/modules/wizard/wizard.module.mjs +0 -33
  419. package/esm2020/lib/modules/wizard/wizard2/wizard2.component.mjs +0 -13
  420. package/esm2020/lib/services/alert.service.mjs +0 -76
  421. package/esm2020/lib/services/auth-guard.service.mjs +0 -28
  422. package/esm2020/lib/services/auth.service.mjs +0 -203
  423. package/esm2020/lib/services/http-error-handler.service.mjs +0 -141
  424. package/esm2020/lib/services/web.api.mjs +0 -126
  425. package/esm2020/lib/utils/date-helper.mjs +0 -235
  426. package/esm2020/lib/utils/validation-helper.mjs +0 -10
  427. package/esm2020/lib/zek.module.mjs +0 -33
  428. package/fesm2015/zek.mjs +0 -6693
  429. package/fesm2015/zek.mjs.map +0 -1
  430. package/fesm2020/zek.mjs.map +0 -1
@@ -0,0 +1,236 @@
1
+ import { TimeHelper } from "./time-helper";
2
+ class DateHelper {
3
+ static minDate() {
4
+ return new Date(0);
5
+ }
6
+ ;
7
+ static equals(value1, value2) {
8
+ let val1 = (value1 === undefined || value1 === null) ? null : value1;
9
+ let val2 = (value2 === undefined || value2 === null) ? null : value2;
10
+ if (val1 === val2) {
11
+ return true;
12
+ }
13
+ if (!val1 || !val2) {
14
+ return false;
15
+ }
16
+ return val1.getTime() === val2.getTime();
17
+ }
18
+ static getDates(start, end) {
19
+ var dates = new Array();
20
+ var date = new Date(start.valueOf());
21
+ while (date <= end) {
22
+ dates.push(new Date(date));
23
+ date = this.addDays(date, 1);
24
+ }
25
+ return dates;
26
+ }
27
+ static dateOnly(value) {
28
+ let year = value.getFullYear();
29
+ let month = value.getMonth();
30
+ let day = value.getDate();
31
+ let date = new Date(Date.UTC(year, month, day));
32
+ return date;
33
+ }
34
+ static toISODateString(value) {
35
+ let date = this.parseDate(value);
36
+ if (!date)
37
+ return null;
38
+ let year = date.getFullYear();
39
+ // Add +1 to month since 0 is January
40
+ let month = date.getMonth() + 1;
41
+ let day = date.getDate();
42
+ let str = `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;
43
+ //str = year.toString() + "-" + (month + 1).toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
44
+ return str;
45
+ }
46
+ static addTime(value, time) {
47
+ let tmp = TimeHelper.parseTime(time);
48
+ if (!tmp)
49
+ return value;
50
+ let timeDate = new Date('1970-01-01T' + time + 'Z');
51
+ let date = value;
52
+ date.setTime(date.getTime() + timeDate.getTime());
53
+ return date;
54
+ }
55
+ ;
56
+ static addYears(v, years) {
57
+ if (!years)
58
+ return v;
59
+ let date = v;
60
+ date.setFullYear(v.getFullYear() + years);
61
+ return date;
62
+ }
63
+ static addDays(v, days) {
64
+ if (!days)
65
+ return v;
66
+ let date = v;
67
+ date.setDate(date.getDate() + days);
68
+ return date;
69
+ }
70
+ ;
71
+ static addHours(v, hours) {
72
+ if (!hours)
73
+ return v;
74
+ let date = new Date(v);
75
+ //todo need to check if this line needs --> date = new Date(date.getTime());
76
+ date.setHours(date.getHours() + hours);
77
+ return date;
78
+ }
79
+ static addMinutes(v, minutes) {
80
+ if (!minutes)
81
+ return v;
82
+ let date = new Date(v);
83
+ //todo need to check if this line needs --> date = new Date(date.getTime());
84
+ date.setMinutes(date.getMinutes() + minutes);
85
+ return date;
86
+ }
87
+ static addSeconds(v, seconds) {
88
+ if (!seconds)
89
+ return v;
90
+ let date = v;
91
+ date.setSeconds(date.getSeconds() + seconds);
92
+ return date;
93
+ }
94
+ ;
95
+ static isToday(date) {
96
+ let today = new Date();
97
+ return this.isSameDate(date, today);
98
+ }
99
+ ;
100
+ static clone(date) {
101
+ return new Date(+date);
102
+ }
103
+ ;
104
+ static isAnotherMonth(a, b) {
105
+ return b && a.getMonth() !== b.getMonth();
106
+ }
107
+ ;
108
+ static isWeekend(v) {
109
+ return v.getDay() === 0 || v.getDay() === 6;
110
+ }
111
+ ;
112
+ static isSameDate(a, b) {
113
+ return b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
114
+ }
115
+ ;
116
+ static getAge(value, now) {
117
+ if (value === undefined || value === null || value === '' || value !== value)
118
+ return null;
119
+ const date = this.toDate(value);
120
+ let nowTime = now ? now.getTime() : Date.now();
121
+ let timeDiff = nowTime - date.getTime();
122
+ return Math.floor((timeDiff / 86400000) / 365.25); //86400000 = (1000 * 60 * 60 * 24) = 1000 millisecond * 60second * 60minute * 24hour
123
+ }
124
+ ;
125
+ static subtractDays(value, date) {
126
+ if (!date)
127
+ return null;
128
+ date = this.toDate(date);
129
+ let timeDiff = date.getTime() - value.getTime();
130
+ return Math.floor(timeDiff / 86400000); //86400000 = (1000 * 60 * 60 * 24) = 1000 millisecond * 60second * 60minute * 24hour
131
+ }
132
+ ;
133
+ static subtractHours(value, date) {
134
+ if (!date)
135
+ return null;
136
+ date = this.toDate(date);
137
+ let timeDiff = date.getTime() - value.getTime();
138
+ return Math.floor((timeDiff % 86400000) / 3600000);
139
+ }
140
+ ;
141
+ static subtractMinutes(value, date) {
142
+ if (!date)
143
+ return null;
144
+ date = this.toDate(date);
145
+ let timeDiff = date.getTime() - value.getTime();
146
+ //
147
+ return Math.floor(((timeDiff % 86400000) % 3600000) / 60000);
148
+ }
149
+ ;
150
+ static { this.ISO8601_DATE_REGEX = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/; }
151
+ // 1 2 3 4 5 6 7 8 9 10 11
152
+ static parseDate(value) {
153
+ if (typeof value === 'undefined' || value == null || value === '')
154
+ return null;
155
+ return this.toDate(value);
156
+ }
157
+ // export function toDate(value: string|number|Date): Date this function is imported from date pipe
158
+ // packages/common/src/i18n/format_date.ts
159
+ /***
160
+ * Converts a value to date.
161
+ *
162
+ * Supported input formats:
163
+ * - `Date`
164
+ * - number: timestamp
165
+ * - string: numeric (e.g. "1234"), ISO and date strings in a format supported by
166
+ * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).
167
+ * Note: ISO strings without time return a date without timeoffset.
168
+ *
169
+ * Throws if unable to convert to a date.
170
+ */
171
+ static toDate(value) {
172
+ if (this.isDate(value)) {
173
+ return value;
174
+ }
175
+ if (typeof value === 'number' && !isNaN(value)) {
176
+ return new Date(value);
177
+ }
178
+ if (typeof value === 'string') {
179
+ value = value.trim();
180
+ const parsedNb = parseFloat(value);
181
+ // any string that only contains numbers, like "1234" but not like "1234hello"
182
+ if (!isNaN(value - parsedNb)) {
183
+ return new Date(parsedNb);
184
+ }
185
+ if (/^(\d{4}-\d{1,2}-\d{1,2})$/.test(value)) {
186
+ /* For ISO Strings without time the day, month and year must be extracted from the ISO String
187
+ before Date creation to avoid time offset and errors in the new Date.
188
+ If we only replace '-' with ',' in the ISO String ("2015,01,01"), and try to create a new
189
+ date, some browsers (e.g. IE 9) will throw an invalid Date error.
190
+ If we leave the '-' ("2015-01-01") and try to create a new Date("2015-01-01") the timeoffset
191
+ is applied.
192
+ Note: ISO months are 0 for January, 1 for February, ... */
193
+ const [y, m, d] = value.split('-').map((val) => +val);
194
+ return new Date(y, m - 1, d);
195
+ }
196
+ let match;
197
+ if (match = value.match(this.ISO8601_DATE_REGEX)) {
198
+ return this.isoStringToDate(match);
199
+ }
200
+ }
201
+ const date = new Date(value);
202
+ if (!this.isDate(date)) {
203
+ throw new Error(`Unable to convert "${value}" into a date`);
204
+ }
205
+ return date;
206
+ }
207
+ /**
208
+ * Converts a date in ISO8601 to a Date.
209
+ * Used instead of `Date.parse` because of browser discrepancies.
210
+ */
211
+ static isoStringToDate(match) {
212
+ const date = new Date(0);
213
+ let tzHour = 0;
214
+ let tzMin = 0;
215
+ // match[8] means that the string contains "Z" (UTC) or a timezone like "+01:00" or "+0100"
216
+ const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;
217
+ const timeSetter = match[8] ? date.setUTCHours : date.setHours;
218
+ // if there is a timezone defined like "+01:00" or "+0100"
219
+ if (match[9]) {
220
+ tzHour = Number(match[9] + match[10]);
221
+ tzMin = Number(match[9] + match[11]);
222
+ }
223
+ dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));
224
+ const h = Number(match[4] || 0) - tzHour;
225
+ const m = Number(match[5] || 0) - tzMin;
226
+ const s = Number(match[6] || 0);
227
+ const ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);
228
+ timeSetter.call(date, h, m, s, ms);
229
+ return date;
230
+ }
231
+ static isDate(value) {
232
+ return value instanceof Date && !isNaN(value.valueOf());
233
+ }
234
+ }
235
+ export { DateHelper };
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi91dGlscy9kYXRlLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE1BQWEsVUFBVTtJQUVuQixNQUFNLENBQUMsT0FBTztRQUNWLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUFBLENBQUM7SUFFRixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQW9CLEVBQUUsTUFBb0I7UUFDcEQsSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDckUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFHckUsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDaEIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBVyxFQUFFLEdBQVM7UUFDbEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVEsQ0FBQztRQUM5QixJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyQyxPQUFP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O0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFVO1FBQ3BCLE9BQU8sS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDOztTQXJRUSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGltZUhlbHBlciB9IGZyb20gXCIuL3RpbWUtaGVscGVyXCI7XHJcblxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRlSGVscGVyIHtcclxuXHJcbiAgICBzdGF0aWMgbWluRGF0ZSgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUoMCk7XHJcbiAgICB9O1xyXG5cclxuICAgIHN0YXRpYyBlcXVhbHModmFsdWUxPzogRGF0ZSB8IG51bGwsIHZhbHVlMj86IERhdGUgfCBudWxsKSB7XHJcbiAgICAgICAgbGV0IHZhbDEgPSAodmFsdWUxID09PSB1bmRlZmluZWQgfHwgdmFsdWUxID09PSBudWxsKSA/IG51bGwgOiB2YWx1ZTE7XHJcbiAgICAgICAgbGV0IHZhbDIgPSAodmFsdWUyID09PSB1bmRlZmluZWQgfHwgdmFsdWUyID09PSBudWxsKSA/IG51bGwgOiB2YWx1ZTI7XHJcblxyXG5cclxuICAgICAgICBpZiAodmFsMSA9PT0gdmFsMikge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdmFsMSB8fCAhdmFsMikge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdmFsMS5nZXRUaW1lKCkgPT09IHZhbDIuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXREYXRlcyhzdGFydDogRGF0ZSwgZW5kOiBEYXRlKSB7XHJcbiAgICAgICAgdmFyIGRhdGVzID0gbmV3IEFycmF5PERhdGU+KCk7XHJcbiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShzdGFydC52YWx1ZU9mKCkpO1xyXG4gICAgICAgIHdoaWxlIChkYXRlIDw9IGVuZCkge1xyXG4gICAgICAgICAgICBkYXRlcy5wdXNoKG5ldyBEYXRlKGRhdGUpKTtcclxuICAgICAgICAgICAgZGF0ZSA9IHRoaXMuYWRkRGF5cyhkYXRlLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRhdGVzO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBkYXRlT25seSh2YWx1ZTogRGF0ZSkge1xyXG4gICAgICAgIGxldCB5ZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICBsZXQgbW9udGggPSB2YWx1ZS5nZXRNb250aCgpO1xyXG4gICAgICAgIGxldCBkYXkgPSB2YWx1ZS5nZXREYXRlKCk7XHJcbiAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCBtb250aCwgZGF5KSk7XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB0b0lTT0RhdGVTdHJpbmcodmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgZGF0ZSA9IHRoaXMucGFyc2VEYXRlKHZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKCFkYXRlKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgbGV0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgLy8gQWRkICsxIHRvIG1vbnRoIHNpbmNlIDAgaXMgSmFudWFyeVxyXG4gICAgICAgIGxldCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICAgICAgbGV0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG5cclxuICAgICAgICBsZXQgc3RyID0gYCR7eWVhcn0tJHttb250aCA8IDEwID8gJzAnIDogJyd9JHttb250aH0tJHtkYXkgPCAxMCA/ICcwJyA6ICcnfSR7ZGF5fWA7XHJcbiAgICAgICAgLy9zdHIgPSB5ZWFyLnRvU3RyaW5nKCkgKyBcIi1cIiArIChtb250aCArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgXCIwXCIpICsgXCItXCIgKyBkYXkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7XHJcbiAgICAgICAgcmV0dXJuIHN0cjtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHN0YXRpYyBhZGRUaW1lKHZhbHVlOiBEYXRlLCB0aW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICAgICAgbGV0IHRtcCA9IFRpbWVIZWxwZXIucGFyc2VUaW1lKHRpbWUpO1xyXG4gICAgICAgIGlmICghdG1wKSByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgICAgIGxldCB0aW1lRGF0ZSA9IG5ldyBEYXRlKCcxOTcwLTAxLTAxVCcgKyB0aW1lICsgJ1onKTtcclxuICAgICAgICBsZXQgZGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIHRpbWVEYXRlLmdldFRpbWUoKSk7XHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9O1xyXG4gICAgc3RhdGljIGFkZFllYXJzKHY6IERhdGUsIHllYXJzOiBudW1iZXIpOiBEYXRlIHtcclxuICAgICAgICBpZiAoIXllYXJzKSByZXR1cm4gdjtcclxuXHJcbiAgICAgICAgbGV0IGRhdGUgPSB2O1xyXG4gICAgICAgIGRhdGUuc2V0RnVsbFllYXIodi5nZXRGdWxsWWVhcigpICsgeWVhcnMpO1xyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfVxyXG4gICAgc3RhdGljIGFkZERheXModjogRGF0ZSwgZGF5czogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKCFkYXlzKSByZXR1cm4gdjtcclxuXHJcbiAgICAgICAgbGV0IGRhdGUgPSB2O1xyXG4gICAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGRheXMpO1xyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBhZGRIb3Vycyh2OiBEYXRlLCBob3VyczogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKCFob3VycykgcmV0dXJuIHY7XHJcblxyXG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUodik7XHJcbiAgICAgICAgLy90b2RvIG5lZWQgdG8gY2hlY2sgaWYgdGhpcyBsaW5lIG5lZWRzIC0tPiBkYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xyXG4gICAgICAgIGRhdGUuc2V0SG91cnMoZGF0ZS5nZXRIb3VycygpICsgaG91cnMpO1xyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfVxyXG4gICAgc3RhdGljIGFkZE1pbnV0ZXModjogRGF0ZSwgbWludXRlczogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKCFtaW51dGVzKSByZXR1cm4gdjtcclxuXHJcbiAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh2KTtcclxuICAgICAgICAvL3RvZG8gbmVlZCB0byBjaGVjayBpZiB0aGlzIGxpbmUgbmVlZHMgLS0+IGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7XHJcbiAgICAgICAgZGF0ZS5zZXRNaW51dGVzKGRhdGUuZ2V0TWludXRlcygpICsgbWludXRlcyk7XHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgYWRkU2Vjb25kcyh2OiBEYXRlLCBzZWNvbmRzOiBudW1iZXIpIHtcclxuICAgICAgICBpZiAoIXNlY29uZHMpIHJldHVybiB2O1xyXG5cclxuICAgICAgICBsZXQgZGF0ZSA9IHY7XHJcbiAgICAgICAgZGF0ZS5zZXRTZWNvbmRzKGRhdGUuZ2V0U2Vjb25kcygpICsgc2Vjb25kcyk7XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBpc1RvZGF5KGRhdGU6IERhdGUpIHtcclxuICAgICAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZURhdGUoZGF0ZSwgdG9kYXkpO1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBjbG9uZShkYXRlOiBEYXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCtkYXRlKTtcclxuICAgIH07XHJcbiAgICBzdGF0aWMgaXNBbm90aGVyTW9udGgoYTogRGF0ZSwgYjogRGF0ZSkge1xyXG4gICAgICAgIHJldHVybiBiICYmIGEuZ2V0TW9udGgoKSAhPT0gYi5nZXRNb250aCgpO1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBpc1dlZWtlbmQodjogRGF0ZSwpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdi5nZXREYXkoKSA9PT0gMCB8fCB2LmdldERheSgpID09PSA2O1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBpc1NhbWVEYXRlKGE6IERhdGUsIGI6IERhdGUpIHtcclxuICAgICAgICByZXR1cm4gYiAmJiBhLmdldEZ1bGxZZWFyKCkgPT09IGIuZ2V0RnVsbFllYXIoKSAmJiBhLmdldE1vbnRoKCkgPT09IGIuZ2V0TW9udGgoKSAmJiBhLmdldERhdGUoKSA9PT0gYi5nZXREYXRlKCk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICBzdGF0aWMgZ2V0QWdlKHZhbHVlPzogRGF0ZSB8IHN0cmluZyB8IG51bGwsIG5vdz86IERhdGUgfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnIHx8IHZhbHVlICE9PSB2YWx1ZSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLnRvRGF0ZSh2YWx1ZSk7XHJcblxyXG4gICAgICAgIGxldCBub3dUaW1lID0gbm93ID8gbm93LmdldFRpbWUoKSA6IERhdGUubm93KCk7XHJcbiAgICAgICAgbGV0IHRpbWVEaWZmID0gbm93VGltZSAtIGRhdGUuZ2V0VGltZSgpO1xyXG5cclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigodGltZURpZmYgLyA4NjQwMDAwMCkgLyAzNjUuMjUpOy8vODY0MDAwMDAgPSAoMTAwMCAqIDYwICogNjAgKiAyNCkgPSAxMDAwIG1pbGxpc2Vjb25kICogNjBzZWNvbmQgICogNjBtaW51dGUgKiAyNGhvdXJcclxuICAgIH07XHJcbiAgICBzdGF0aWMgc3VidHJhY3REYXlzKHZhbHVlOiBEYXRlLCBkYXRlPzogRGF0ZSB8IG51bGwpIHtcclxuICAgICAgICBpZiAoIWRhdGUpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBkYXRlID0gdGhpcy50b0RhdGUoZGF0ZSk7XHJcbiAgICAgICAgbGV0IHRpbWVEaWZmID0gZGF0ZS5nZXRUaW1lKCkgLSB2YWx1ZS5nZXRUaW1lKCk7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGltZURpZmYgLyA4NjQwMDAwMCk7Ly84NjQwMDAwMCA9ICgxMDAwICogNjAgKiA2MCAqIDI0KSA9IDEwMDAgbWlsbGlzZWNvbmQgKiA2MHNlY29uZCAgKiA2MG1pbnV0ZSAqIDI0aG91clxyXG4gICAgfTtcclxuICAgIHN0YXRpYyBzdWJ0cmFjdEhvdXJzKHZhbHVlOiBEYXRlLCBkYXRlPzogRGF0ZSB8IG51bGwpIHtcclxuICAgICAgICBpZiAoIWRhdGUpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBkYXRlID0gdGhpcy50b0RhdGUoZGF0ZSk7XHJcbiAgICAgICAgbGV0IHRpbWVEaWZmID0gZGF0ZS5nZXRUaW1lKCkgLSB2YWx1ZS5nZXRUaW1lKCk7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoKHRpbWVEaWZmICUgODY0MDAwMDApIC8gMzYwMDAwMCk7XHJcbiAgICB9O1xyXG4gICAgc3RhdGljIHN1YnRyYWN0TWludXRlcyh2YWx1ZTogRGF0ZSwgZGF0ZT86IERhdGUgfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFkYXRlKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgZGF0ZSA9IHRoaXMudG9EYXRlKGRhdGUpO1xyXG4gICAgICAgIGxldCB0aW1lRGlmZiA9IGRhdGUuZ2V0VGltZSgpIC0gdmFsdWUuZ2V0VGltZSgpO1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoKCh0aW1lRGlmZiAlIDg2NDAwMDAwKSAlIDM2MDAwMDApIC8gNjAwMDApO1xyXG4gICAgfTtcclxuXHJcblxyXG5cclxuXHJcbiAgICBzdGF0aWMgSVNPODYwMV9EQVRFX1JFR0VYID1cclxuICAgICAgICAvXihcXGR7NH0pLT8oXFxkXFxkKS0/KFxcZFxcZCkoPzpUKFxcZFxcZCkoPzo6PyhcXGRcXGQpKD86Oj8oXFxkXFxkKSg/OlxcLihcXGQrKSk/KT8pPyhafChbKy1dKShcXGRcXGQpOj8oXFxkXFxkKSk/KT8kLztcclxuICAgIC8vICAgICAgICAxICAgICAgICAyICAgICAgIDMgICAgICAgICA0ICAgICAgICAgIDUgICAgICAgICAgNiAgICAgICAgICA3ICAgICAgICAgIDggIDkgICAgIDEwICAgICAgMTFcclxuXHJcblxyXG4gICAgc3RhdGljIHBhcnNlRGF0ZSh2YWx1ZTogYW55KTogRGF0ZSB8IG51bGwge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09ICcnKSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gdGhpcy50b0RhdGUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICBleHBvcnQgZnVuY3Rpb24gdG9EYXRlKHZhbHVlOiBzdHJpbmd8bnVtYmVyfERhdGUpOiBEYXRlIHRoaXMgZnVuY3Rpb24gaXMgaW1wb3J0ZWQgZnJvbSBkYXRlIHBpcGUgXHJcbiAgICAvLyBwYWNrYWdlcy9jb21tb24vc3JjL2kxOG4vZm9ybWF0X2RhdGUudHNcclxuXHJcbiAgICAvKioqXHJcbiAgICAgKiBDb252ZXJ0cyBhIHZhbHVlIHRvIGRhdGUuXHJcbiAgICAgKlxyXG4gICAgICogU3VwcG9ydGVkIGlucHV0IGZvcm1hdHM6XHJcbiAgICAgKiAtIGBEYXRlYFxyXG4gICAgICogLSBudW1iZXI6IHRpbWVzdGFtcFxyXG4gICAgICogLSBzdHJpbmc6IG51bWVyaWMgKGUuZy4gXCIxMjM0XCIpLCBJU08gYW5kIGRhdGUgc3RyaW5ncyBpbiBhIGZvcm1hdCBzdXBwb3J0ZWQgYnlcclxuICAgICAqICAgW0RhdGUucGFyc2UoKV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZS9wYXJzZSkuXHJcbiAgICAgKiAgIE5vdGU6IElTTyBzdHJpbmdzIHdpdGhvdXQgdGltZSByZXR1cm4gYSBkYXRlIHdpdGhvdXQgdGltZW9mZnNldC5cclxuICAgICAqXHJcbiAgICAgKiBUaHJvd3MgaWYgdW5hYmxlIHRvIGNvbnZlcnQgdG8gYSBkYXRlLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgdG9EYXRlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlKTogRGF0ZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRlKHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiAhaXNOYU4odmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZE5iID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAvLyBhbnkgc3RyaW5nIHRoYXQgb25seSBjb250YWlucyBudW1iZXJzLCBsaWtlIFwiMTIzNFwiIGJ1dCBub3QgbGlrZSBcIjEyMzRoZWxsb1wiXHJcbiAgICAgICAgICAgIGlmICghaXNOYU4odmFsdWUgYXMgYW55IC0gcGFyc2VkTmIpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUocGFyc2VkTmIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoL14oXFxkezR9LVxcZHsxLDJ9LVxcZHsxLDJ9KSQvLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBGb3IgSVNPIFN0cmluZ3Mgd2l0aG91dCB0aW1lIHRoZSBkYXksIG1vbnRoIGFuZCB5ZWFyIG11c3QgYmUgZXh0cmFjdGVkIGZyb20gdGhlIElTTyBTdHJpbmdcclxuICAgICAgICAgICAgICAgIGJlZm9yZSBEYXRlIGNyZWF0aW9uIHRvIGF2b2lkIHRpbWUgb2Zmc2V0IGFuZCBlcnJvcnMgaW4gdGhlIG5ldyBEYXRlLlxyXG4gICAgICAgICAgICAgICAgSWYgd2Ugb25seSByZXBsYWNlICctJyB3aXRoICcsJyBpbiB0aGUgSVNPIFN0cmluZyAoXCIyMDE1LDAxLDAxXCIpLCBhbmQgdHJ5IHRvIGNyZWF0ZSBhIG5ld1xyXG4gICAgICAgICAgICAgICAgZGF0ZSwgc29tZSBicm93c2VycyAoZS5nLiBJRSA5KSB3aWxsIHRocm93IGFuIGludmFsaWQgRGF0ZSBlcnJvci5cclxuICAgICAgICAgICAgICAgIElmIHdlIGxlYXZlIHRoZSAnLScgKFwiMjAxNS0wMS0wMVwiKSBhbmQgdHJ5IHRvIGNyZWF0ZSBhIG5ldyBEYXRlKFwiMjAxNS0wMS0wMVwiKSB0aGUgdGltZW9mZnNldFxyXG4gICAgICAgICAgICAgICAgaXMgYXBwbGllZC5cclxuICAgICAgICAgICAgICAgIE5vdGU6IElTTyBtb250aHMgYXJlIDAgZm9yIEphbnVhcnksIDEgZm9yIEZlYnJ1YXJ5LCAuLi4gKi9cclxuICAgICAgICAgICAgICAgIGNvbnN0IFt5LCBtLCBkXSA9IHZhbHVlLnNwbGl0KCctJykubWFwKCh2YWw6IHN0cmluZykgPT4gK3ZhbCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoeSwgbSAtIDEsIGQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsO1xyXG4gICAgICAgICAgICBpZiAobWF0Y2ggPSB2YWx1ZS5tYXRjaCh0aGlzLklTTzg2MDFfREFURV9SRUdFWCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzb1N0cmluZ1RvRGF0ZShtYXRjaCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSBhcyBhbnkpO1xyXG4gICAgICAgIGlmICghdGhpcy5pc0RhdGUoZGF0ZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gY29udmVydCBcIiR7dmFsdWV9XCIgaW50byBhIGRhdGVgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0cyBhIGRhdGUgaW4gSVNPODYwMSB0byBhIERhdGUuXHJcbiAgICAgKiBVc2VkIGluc3RlYWQgb2YgYERhdGUucGFyc2VgIGJlY2F1c2Ugb2YgYnJvd3NlciBkaXNjcmVwYW5jaWVzLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNvU3RyaW5nVG9EYXRlKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5KTogRGF0ZSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKDApO1xyXG4gICAgICAgIGxldCB0ekhvdXIgPSAwO1xyXG4gICAgICAgIGxldCB0ek1pbiA9IDA7XHJcblxyXG4gICAgICAgIC8vIG1hdGNoWzhdIG1lYW5zIHRoYXQgdGhlIHN0cmluZyBjb250YWlucyBcIlpcIiAoVVRDKSBvciBhIHRpbWV6b25lIGxpa2UgXCIrMDE6MDBcIiBvciBcIiswMTAwXCJcclxuICAgICAgICBjb25zdCBkYXRlU2V0dGVyID0gbWF0Y2hbOF0gPyBkYXRlLnNldFVUQ0Z1bGxZZWFyIDogZGF0ZS5zZXRGdWxsWWVhcjtcclxuICAgICAgICBjb25zdCB0aW1lU2V0dGVyID0gbWF0Y2hbOF0gPyBkYXRlLnNldFVUQ0hvdXJzIDogZGF0ZS5zZXRIb3VycztcclxuXHJcbiAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSB0aW1lem9uZSBkZWZpbmVkIGxpa2UgXCIrMDE6MDBcIiBvciBcIiswMTAwXCJcclxuICAgICAgICBpZiAobWF0Y2hbOV0pIHtcclxuICAgICAgICAgICAgdHpIb3VyID0gTnVtYmVyKG1hdGNoWzldICsgbWF0Y2hbMTBdKTtcclxuICAgICAgICAgICAgdHpNaW4gPSBOdW1iZXIobWF0Y2hbOV0gKyBtYXRjaFsxMV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRlU2V0dGVyLmNhbGwoZGF0ZSwgTnVtYmVyKG1hdGNoWzFdKSwgTnVtYmVyKG1hdGNoWzJdKSAtIDEsIE51bWJlcihtYXRjaFszXSkpO1xyXG4gICAgICAgIGNvbnN0IGggPSBOdW1iZXIobWF0Y2hbNF0gfHwgMCkgLSB0ekhvdXI7XHJcbiAgICAgICAgY29uc3QgbSA9IE51bWJlcihtYXRjaFs1XSB8fCAwKSAtIHR6TWluO1xyXG4gICAgICAgIGNvbnN0IHMgPSBOdW1iZXIobWF0Y2hbNl0gfHwgMCk7XHJcbiAgICAgICAgY29uc3QgbXMgPSBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoJzAuJyArIChtYXRjaFs3XSB8fCAwKSkgKiAxMDAwKTtcclxuICAgICAgICB0aW1lU2V0dGVyLmNhbGwoZGF0ZSwgaCwgbSwgcywgbXMpO1xyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0RhdGUodmFsdWU6IGFueSk6IHZhbHVlIGlzIERhdGUge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKHZhbHVlLnZhbHVlT2YoKSk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,26 +1,26 @@
1
- export class FileHelper {
2
- static getExtension(path) {
3
- if (path === undefined || path == null)
4
- return path;
5
- if (typeof path !== 'string') {
6
- throw new Error("path parameter is not string");
7
- }
8
- const directorySeparatorChar = '\\';
9
- const altDirectorySeparatorChar = '/';
10
- const volumeSeparatorChar = ':';
11
- let length = path.length;
12
- for (let i = length; --i >= 0;) {
13
- let ch = path[i];
14
- if (ch === '.') {
15
- if (i !== length - 1)
16
- return path.substring(i, length);
17
- else
18
- return '';
19
- }
20
- if (ch == directorySeparatorChar || ch == altDirectorySeparatorChar || ch == volumeSeparatorChar)
21
- break;
22
- }
23
- return '';
24
- }
25
- }
1
+ export class FileHelper {
2
+ static getExtension(path) {
3
+ if (path === undefined || path == null)
4
+ return path;
5
+ if (typeof path !== 'string') {
6
+ throw new Error("path parameter is not string");
7
+ }
8
+ const directorySeparatorChar = '\\';
9
+ const altDirectorySeparatorChar = '/';
10
+ const volumeSeparatorChar = ':';
11
+ let length = path.length;
12
+ for (let i = length; --i >= 0;) {
13
+ let ch = path[i];
14
+ if (ch === '.') {
15
+ if (i !== length - 1)
16
+ return path.substring(i, length);
17
+ else
18
+ return '';
19
+ }
20
+ if (ch == directorySeparatorChar || ch == altDirectorySeparatorChar || ch == volumeSeparatorChar)
21
+ break;
22
+ }
23
+ return '';
24
+ }
25
+ }
26
26
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi91dGlscy9maWxlLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUNuQixNQUFNLENBQUMsWUFBWSxDQUFDLElBQW9CO1FBQ3BDLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSTtZQUNsQyxPQUFPLElBQUksQ0FBQztRQUVoQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDbkQ7UUFFRCxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQztRQUNwQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQztRQUN0QyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztRQUVoQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRztZQUM1QixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxLQUFLLE1BQU0sR0FBRyxDQUFDO29CQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDOztvQkFFakMsT0FBTyxFQUFFLENBQUM7YUFDakI7WUFDRCxJQUFJLEVBQUUsSUFBSSxzQkFBc0IsSUFBSSxFQUFFLElBQUkseUJBQXlCLElBQUksRUFBRSxJQUFJLG1CQUFtQjtnQkFDNUYsTUFBTTtTQUNiO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRmlsZUhlbHBlciB7XHJcbiAgICBzdGF0aWMgZ2V0RXh0ZW5zaW9uKHBhdGg/OiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKHBhdGggPT09IHVuZGVmaW5lZCB8fCBwYXRoID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBwYXRoO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInBhdGggcGFyYW1ldGVyIGlzIG5vdCBzdHJpbmdcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkaXJlY3RvcnlTZXBhcmF0b3JDaGFyID0gJ1xcXFwnO1xyXG4gICAgICAgIGNvbnN0IGFsdERpcmVjdG9yeVNlcGFyYXRvckNoYXIgPSAnLyc7XHJcbiAgICAgICAgY29uc3Qgdm9sdW1lU2VwYXJhdG9yQ2hhciA9ICc6JztcclxuXHJcbiAgICAgICAgbGV0IGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBsZW5ndGg7IC0taSA+PSAwOykge1xyXG4gICAgICAgICAgICBsZXQgY2ggPSBwYXRoW2ldO1xyXG4gICAgICAgICAgICBpZiAoY2ggPT09ICcuJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGkgIT09IGxlbmd0aCAtIDEpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKGksIGxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjaCA9PSBkaXJlY3RvcnlTZXBhcmF0b3JDaGFyIHx8IGNoID09IGFsdERpcmVjdG9yeVNlcGFyYXRvckNoYXIgfHwgY2ggPT0gdm9sdW1lU2VwYXJhdG9yQ2hhcilcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG59Il19
@@ -1,13 +1,13 @@
1
- import { ObjectHelper } from "./object-helper";
2
- export class FilterHelper {
3
- static isEmpty(obj) {
4
- if (typeof obj === 'undefined' || obj === null)
5
- return true;
6
- let tmp = Object.assign({}, obj);
7
- delete tmp.page;
8
- delete tmp.pageSize;
9
- delete tmp.sort;
10
- return ObjectHelper.isEmpty(tmp);
11
- }
12
- }
1
+ import { ObjectHelper } from "./object-helper";
2
+ export class FilterHelper {
3
+ static isEmpty(obj) {
4
+ if (typeof obj === 'undefined' || obj === null)
5
+ return true;
6
+ let tmp = Object.assign({}, obj);
7
+ delete tmp.page;
8
+ delete tmp.pageSize;
9
+ delete tmp.sort;
10
+ return ObjectHelper.isEmpty(tmp);
11
+ }
12
+ }
13
13
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL3V0aWxzL2ZpbHRlci1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE1BQU0sT0FBTyxZQUFZO0lBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBUTtRQUNuQixJQUFJLE9BQU8sR0FBRyxLQUFLLFdBQVcsSUFBSSxHQUFHLEtBQUssSUFBSTtZQUMxQyxPQUFPLElBQUksQ0FBQztRQUVoQixJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDaEIsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztRQUVoQixPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JqZWN0SGVscGVyIH0gZnJvbSBcIi4vb2JqZWN0LWhlbHBlclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpbHRlckhlbHBlciB7XHJcbiAgICBzdGF0aWMgaXNFbXB0eShvYmo6IGFueSkge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJyB8fCBvYmogPT09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICBsZXQgdG1wID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTtcclxuICAgICAgICBkZWxldGUgdG1wLnBhZ2U7XHJcbiAgICAgICAgZGVsZXRlIHRtcC5wYWdlU2l6ZTtcclxuICAgICAgICBkZWxldGUgdG1wLnNvcnQ7XHJcblxyXG4gICAgICAgIHJldHVybiBPYmplY3RIZWxwZXIuaXNFbXB0eSh0bXApO1xyXG4gICAgfVxyXG59Il19
@@ -1,24 +1,24 @@
1
- export var handler = (function () {
2
- var i = 1;
3
- var listeners = {};
4
- return {
5
- addListener: function (element, event, handler, options) {
6
- element.addEventListener(event, handler, options);
7
- listeners[i] = {
8
- element: element,
9
- event: event,
10
- handler: handler,
11
- options: options,
12
- };
13
- return i++;
14
- },
15
- removeListener: function (id) {
16
- if (id in listeners) {
17
- var h = listeners[id];
18
- h.element.removeEventListener(h.event, h.handler, h.options);
19
- delete listeners[id];
20
- }
21
- }
22
- };
23
- }());
1
+ export var handler = (function () {
2
+ var i = 1;
3
+ var listeners = {};
4
+ return {
5
+ addListener: function (element, event, handler, options) {
6
+ element.addEventListener(event, handler, options);
7
+ listeners[i] = {
8
+ element: element,
9
+ event: event,
10
+ handler: handler,
11
+ options: options,
12
+ };
13
+ return i++;
14
+ },
15
+ removeListener: function (id) {
16
+ if (id in listeners) {
17
+ var h = listeners[id];
18
+ h.element.removeEventListener(h.event, h.handler, h.options);
19
+ delete listeners[id];
20
+ }
21
+ }
22
+ };
23
+ }());
24
24
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL3V0aWxzL2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQUksT0FBTyxHQUFHLENBQUM7SUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxTQUFTLEdBQVEsRUFBRSxDQUFDO0lBRXhCLE9BQU87UUFDSCxXQUFXLEVBQUUsVUFBVSxPQUFvQixFQUFFLEtBQWEsRUFBRSxPQUEyQyxFQUFFLE9BQTJDO1lBQ2hKLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xELFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRztnQkFDWCxPQUFPLEVBQUUsT0FBTztnQkFDaEIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxPQUFPO2FBQ25CLENBQUM7WUFDRixPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2YsQ0FBQztRQUNELGNBQWMsRUFBRSxVQUFVLEVBQVU7WUFDaEMsSUFBSSxFQUFFLElBQUksU0FBUyxFQUFFO2dCQUNqQixJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDN0QsT0FBTyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDeEI7UUFDTCxDQUFDO0tBQ0osQ0FBQztBQUNOLENBQUMsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGhhbmRsZXIgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGkgPSAxO1xyXG4gICAgdmFyIGxpc3RlbmVyczogYW55ID0ge307XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBhZGRMaXN0ZW5lcjogZnVuY3Rpb24gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBldmVudDogc3RyaW5nLCBoYW5kbGVyOiBFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0LCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxpc3RlbmVyc1tpXSA9IHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBldmVudDogZXZlbnQsXHJcbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBoYW5kbGVyLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgcmV0dXJuIGkrKztcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaWQ6IG51bWJlcikge1xyXG4gICAgICAgICAgICBpZiAoaWQgaW4gbGlzdGVuZXJzKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaCA9IGxpc3RlbmVyc1tpZF07XHJcbiAgICAgICAgICAgICAgICBoLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihoLmV2ZW50LCBoLmhhbmRsZXIsIGgub3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgbGlzdGVuZXJzW2lkXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn0oKSk7Il19
@@ -1,66 +1,66 @@
1
- export class HtmlHelper {
2
- static escapeHtml(source) {
3
- if (source == null) {
4
- source = '';
5
- }
6
- return source
7
- .replace(/&/g, '&amp;')
8
- .replace(/"/g, '&quot;')
9
- .replace(/'/g, '&#39;')
10
- .replace(/</g, '&lt;')
11
- .replace(/>/g, '&gt;');
12
- }
13
- static addInput(type, name, id = name, force = false) {
14
- let node = document.createElement('input');
15
- node.type = type;
16
- node.name = name;
17
- node.id = id;
18
- document.getElementsByTagName('body')[0].appendChild(node);
19
- return node;
20
- }
21
- static loadScript(url, nonce, async = true, defer = true) {
22
- const script = document.createElement('script');
23
- script.innerHTML = '';
24
- script.src = url;
25
- script.type = 'text/javascript';
26
- if (nonce) {
27
- script.nonce = nonce;
28
- }
29
- if (async) {
30
- script.async = true;
31
- }
32
- if (defer) {
33
- script.defer = true;
34
- }
35
- document.head.appendChild(script);
36
- //2022-02-24 document.getElementsByTagName('head')[0].appendChild(script);
37
- }
38
- static loadScripts(...scripts) {
39
- var promises = [];
40
- scripts.forEach((script) => promises.push(this.internalLoadScript(script)));
41
- return Promise.all(promises);
42
- }
43
- static internalLoadScript(src) {
44
- return new Promise((resolve, reject) => {
45
- let script = document.createElement('script');
46
- script.src = src;
47
- script.type = 'text/javascript';
48
- if (script.readyState) { //IE
49
- script.onreadystatechange = () => {
50
- if (script.readyState === "loaded" || script.readyState === "complete") {
51
- script.onreadystatechange = null;
52
- resolve({ script: src, loaded: true });
53
- }
54
- };
55
- }
56
- else { //Others
57
- script.onload = () => {
58
- resolve({ script: src, loaded: true });
59
- };
60
- }
61
- script.onerror = (error) => resolve({ script: src, loaded: false });
62
- document.getElementsByTagName('head')[0].appendChild(script);
63
- });
64
- }
65
- }
1
+ export class HtmlHelper {
2
+ static escapeHtml(source) {
3
+ if (source == null) {
4
+ source = '';
5
+ }
6
+ return source
7
+ .replace(/&/g, '&amp;')
8
+ .replace(/"/g, '&quot;')
9
+ .replace(/'/g, '&#39;')
10
+ .replace(/</g, '&lt;')
11
+ .replace(/>/g, '&gt;');
12
+ }
13
+ static addInput(type, name, id = name, force = false) {
14
+ let node = document.createElement('input');
15
+ node.type = type;
16
+ node.name = name;
17
+ node.id = id;
18
+ document.getElementsByTagName('body')[0].appendChild(node);
19
+ return node;
20
+ }
21
+ static loadScript(url, nonce, async = true, defer = true) {
22
+ const script = document.createElement('script');
23
+ script.innerHTML = '';
24
+ script.src = url;
25
+ script.type = 'text/javascript';
26
+ if (nonce) {
27
+ script.nonce = nonce;
28
+ }
29
+ if (async) {
30
+ script.async = true;
31
+ }
32
+ if (defer) {
33
+ script.defer = true;
34
+ }
35
+ document.head.appendChild(script);
36
+ //2022-02-24 document.getElementsByTagName('head')[0].appendChild(script);
37
+ }
38
+ static loadScripts(...scripts) {
39
+ var promises = [];
40
+ scripts.forEach((script) => promises.push(this.internalLoadScript(script)));
41
+ return Promise.all(promises);
42
+ }
43
+ static internalLoadScript(src) {
44
+ return new Promise((resolve, reject) => {
45
+ let script = document.createElement('script');
46
+ script.src = src;
47
+ script.type = 'text/javascript';
48
+ if (script.readyState) { //IE
49
+ script.onreadystatechange = () => {
50
+ if (script.readyState === "loaded" || script.readyState === "complete") {
51
+ script.onreadystatechange = null;
52
+ resolve({ script: src, loaded: true });
53
+ }
54
+ };
55
+ }
56
+ else { //Others
57
+ script.onload = () => {
58
+ resolve({ script: src, loaded: true });
59
+ };
60
+ }
61
+ script.onerror = (error) => resolve({ script: src, loaded: false });
62
+ document.getElementsByTagName('head')[0].appendChild(script);
63
+ });
64
+ }
65
+ }
66
66
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi91dGlscy9odG1sLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUNuQixNQUFNLENBQUMsVUFBVSxDQUFDLE1BQWM7UUFDNUIsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO1lBQ2hCLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDZjtRQUVELE9BQU8sTUFBTTthQUNSLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO2FBQ3ZCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUdELE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWSxFQUFFLElBQVksRUFBRSxLQUFhLElBQUksRUFBRSxLQUFLLEdBQUcsS0FBSztRQUN4RSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRWIsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBR0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFXLEVBQUUsS0FBYyxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsS0FBSyxHQUFHLElBQUk7UUFDckUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUN0QixNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNqQixNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1FBRWhDLElBQUksS0FBSyxFQUFFO1lBQ1AsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDeEI7UUFFRCxJQUFJLEtBQUssRUFBRTtZQUNQLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxLQUFLLEVBQUU7WUFDUCxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUN2QjtRQUVELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLDBFQUEwRTtJQUM5RSxDQUFDO0lBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLE9BQWlCO1FBQ25DLElBQUksUUFBUSxHQUFVLEVBQUUsQ0FBQztRQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBVztRQUN6QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25DLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFRLENBQUM7WUFDckQsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDakIsTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztZQUNoQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRyxJQUFJO2dCQUMxQixNQUFNLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO29CQUM3QixJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO3dCQUNwRSxNQUFNLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO3dCQUNqQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO3FCQUMxQztnQkFDTCxDQUFDLENBQUM7YUFDTDtpQkFBTSxFQUFHLFFBQVE7Z0JBQ2QsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7b0JBQ2pCLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzNDLENBQUMsQ0FBQzthQUNMO1lBQ0QsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN6RSxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEh0bWxIZWxwZXIge1xyXG4gICAgc3RhdGljIGVzY2FwZUh0bWwoc291cmNlOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoc291cmNlID09IG51bGwpIHtcclxuICAgICAgICAgICAgc291cmNlID0gJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gc291cmNlXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JylcclxuICAgICAgICAgICAgLnJlcGxhY2UoLycvZywgJyYjMzk7JylcclxuICAgICAgICAgICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxyXG4gICAgICAgICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzdGF0aWMgYWRkSW5wdXQodHlwZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGlkOiBzdHJpbmcgPSBuYW1lLCBmb3JjZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgbGV0IG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgICAgIG5vZGUudHlwZSA9IHR5cGU7XHJcbiAgICAgICAgbm9kZS5uYW1lID0gbmFtZTtcclxuICAgICAgICBub2RlLmlkID0gaWQ7XHJcblxyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0uYXBwZW5kQ2hpbGQobm9kZSk7XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHN0YXRpYyBsb2FkU2NyaXB0KHVybDogc3RyaW5nLCBub25jZT86IHN0cmluZywgYXN5bmMgPSB0cnVlLCBkZWZlciA9IHRydWUpIHtcclxuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICBzY3JpcHQuaW5uZXJIVE1MID0gJyc7XHJcbiAgICAgICAgc2NyaXB0LnNyYyA9IHVybDtcclxuICAgICAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xyXG5cclxuICAgICAgICBpZiAobm9uY2UpIHtcclxuICAgICAgICAgICAgc2NyaXB0Lm5vbmNlID0gbm9uY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYXN5bmMpIHtcclxuICAgICAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRlZmVyKSB7XHJcbiAgICAgICAgICAgIHNjcmlwdC5kZWZlciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XHJcbiAgICAgICAgLy8yMDIyLTAyLTI0IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0KTtcclxuICAgIH1cclxuICAgIHN0YXRpYyBsb2FkU2NyaXB0cyguLi5zY3JpcHRzOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHZhciBwcm9taXNlczogYW55W10gPSBbXTtcclxuICAgICAgICBzY3JpcHRzLmZvckVhY2goKHNjcmlwdCkgPT4gcHJvbWlzZXMucHVzaCh0aGlzLmludGVybmFsTG9hZFNjcmlwdChzY3JpcHQpKSk7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgc3RhdGljIGludGVybmFsTG9hZFNjcmlwdChzcmM6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSBhcyBhbnk7XHJcbiAgICAgICAgICAgIHNjcmlwdC5zcmMgPSBzcmM7XHJcbiAgICAgICAgICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XHJcbiAgICAgICAgICAgIGlmIChzY3JpcHQucmVhZHlTdGF0ZSkgeyAgLy9JRVxyXG4gICAgICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwibG9hZGVkXCIgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHNjcmlwdDogc3JjLCBsb2FkZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSBlbHNlIHsgIC8vT3RoZXJzXHJcbiAgICAgICAgICAgICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoeyBzY3JpcHQ6IHNyYywgbG9hZGVkOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzY3JpcHQub25lcnJvciA9IChlcnJvcjogYW55KSA9PiByZXNvbHZlKHsgc2NyaXB0OiBzcmMsIGxvYWRlZDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbn0iXX0=
@@ -1,23 +1,23 @@
1
- export * from './array-helper';
2
- export * from './base64-helper';
3
- export * from './bitwise-helper';
4
- export * from './bootstrap.helper';
5
- export * from './convert';
6
- export * from './css-helper';
7
- export * from './date-helper';
8
- export * from './file.helper';
9
- export * from './filter-helper';
10
- export * from './handler';
11
- export * from './html-helper';
12
- export * from './math-helper';
13
- export * from './object-helper';
14
- export * from './overlap-helper';
15
- export * from './pager-helper';
16
- export * from './random-helper';
17
- export * from './storage-helper';
18
- export * from './string-helper';
19
- export * from './thenBy';
20
- export * from './time-helper';
21
- export * from './url-helper';
22
- export * from './validation-helper';
1
+ export * from './array-helper';
2
+ export * from './base64-helper';
3
+ export * from './bitwise-helper';
4
+ export * from './bootstrap.helper';
5
+ export * from './convert';
6
+ export * from './css-helper';
7
+ export * from './date-helper';
8
+ export * from './file.helper';
9
+ export * from './filter-helper';
10
+ export * from './handler';
11
+ export * from './html-helper';
12
+ export * from './math-helper';
13
+ export * from './object-helper';
14
+ export * from './overlap-helper';
15
+ export * from './pager-helper';
16
+ export * from './random-helper';
17
+ export * from './storage-helper';
18
+ export * from './string-helper';
19
+ export * from './thenBy';
20
+ export * from './time-helper';
21
+ export * from './url-helper';
22
+ export * from './validation-helper';
23
23
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXJyYXktaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9iYXNlNjQtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9iaXR3aXNlLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vYm9vdHN0cmFwLmhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29udmVydCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY3NzLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbGUuaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXItaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9oYW5kbGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9odG1sLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWF0aC1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL29iamVjdC1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL292ZXJsYXAtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9wYWdlci1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3JhbmRvbS1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3N0b3JhZ2UtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9zdHJpbmctaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi90aGVuQnknO1xyXG5leHBvcnQgKiBmcm9tICcuL3RpbWUtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi91cmwtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0aW9uLWhlbHBlcic7Il19
@@ -1,7 +1,7 @@
1
- export class MathHelper {
2
- static round(value, decimals = 0) {
3
- return Math.round(Number(value) * Math.pow(10, decimals)) / (Math.pow(10, decimals));
4
- }
5
- ;
6
- }
1
+ export class MathHelper {
2
+ static round(value, decimals = 0) {
3
+ return Math.round(Number(value) * Math.pow(10, decimals)) / (Math.pow(10, decimals));
4
+ }
5
+ ;
6
+ }
7
7
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi91dGlscy9tYXRoLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLEtBQWEsRUFBRSxXQUFtQixDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUFBLENBQUM7Q0FDTCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBNYXRoSGVscGVyIHtcclxuICAgIHN0YXRpYyByb3VuZCh2YWx1ZTogbnVtYmVyLCBkZWNpbWFsczogbnVtYmVyID0gMCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoTnVtYmVyKHZhbHVlKSAqIE1hdGgucG93KDEwLCBkZWNpbWFscykpIC8gKE1hdGgucG93KDEwLCBkZWNpbWFscykpO1xyXG4gICAgfTtcclxufSJdfQ==