@coreui/angular-pro 4.2.25 → 4.2.26

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 (711) hide show
  1. package/LICENSE +4 -4
  2. package/README.md +175 -175
  3. package/esm2020/coreui-angular-pro.mjs +4 -4
  4. package/esm2020/lib/accordion/accordion/accordion.component.mjs +40 -40
  5. package/esm2020/lib/accordion/accordion-button/accordion-button.directive.mjs +43 -43
  6. package/esm2020/lib/accordion/accordion-item/accordion-item.component.mjs +72 -72
  7. package/esm2020/lib/accordion/accordion.module.mjs +48 -48
  8. package/esm2020/lib/accordion/accordion.service.mjs +36 -36
  9. package/esm2020/lib/accordion/index.mjs +2 -2
  10. package/esm2020/lib/accordion/public_api.mjs +5 -5
  11. package/esm2020/lib/alert/alert-heading.directive.mjs +22 -22
  12. package/esm2020/lib/alert/alert-link.directive.mjs +22 -22
  13. package/esm2020/lib/alert/alert.component.mjs +181 -181
  14. package/esm2020/lib/alert/alert.module.mjs +38 -38
  15. package/esm2020/lib/alert/index.mjs +2 -2
  16. package/esm2020/lib/alert/public_api.mjs +5 -5
  17. package/esm2020/lib/avatar/avatar.component.mjs +49 -49
  18. package/esm2020/lib/avatar/avatar.module.mjs +24 -24
  19. package/esm2020/lib/avatar/index.mjs +2 -2
  20. package/esm2020/lib/avatar/public_api.mjs +3 -3
  21. package/esm2020/lib/backdrop/backdrop.service.mjs +52 -52
  22. package/esm2020/lib/badge/badge.component.mjs +42 -42
  23. package/esm2020/lib/badge/badge.module.mjs +24 -24
  24. package/esm2020/lib/badge/index.mjs +2 -2
  25. package/esm2020/lib/badge/public_api.mjs +3 -3
  26. package/esm2020/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +43 -43
  27. package/esm2020/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +37 -37
  28. package/esm2020/lib/breadcrumb/breadcrumb-item/breadcrumb-item.mjs +2 -2
  29. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +41 -41
  30. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +52 -52
  31. package/esm2020/lib/breadcrumb/breadcrumb.module.mjs +37 -37
  32. package/esm2020/lib/breadcrumb/index.mjs +2 -2
  33. package/esm2020/lib/breadcrumb/public_api.mjs +6 -6
  34. package/esm2020/lib/button/button-close.directive.mjs +44 -44
  35. package/esm2020/lib/button/button.directive.mjs +112 -112
  36. package/esm2020/lib/button/button.module.mjs +29 -29
  37. package/esm2020/lib/button/index.mjs +2 -2
  38. package/esm2020/lib/button/public_api.mjs +4 -4
  39. package/esm2020/lib/button-group/button-group/button-group.component.mjs +41 -41
  40. package/esm2020/lib/button-group/button-group.module.mjs +29 -29
  41. package/esm2020/lib/button-group/button-toolbar/button-toolbar.component.mjs +35 -35
  42. package/esm2020/lib/button-group/index.mjs +2 -2
  43. package/esm2020/lib/button-group/public_api.mjs +4 -4
  44. package/esm2020/lib/calendar/calendar/calendar-class-view.pipe.mjs +19 -19
  45. package/esm2020/lib/calendar/calendar/calendar.component.mjs +376 -376
  46. package/esm2020/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +28 -28
  47. package/esm2020/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +21 -21
  48. package/esm2020/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +21 -21
  49. package/esm2020/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +16 -16
  50. package/esm2020/lib/calendar/calendar-month/calendar-day.directive.mjs +81 -81
  51. package/esm2020/lib/calendar/calendar-month/calendar-day.pipe.mjs +18 -18
  52. package/esm2020/lib/calendar/calendar-month/calendar-month.component.mjs +324 -324
  53. package/esm2020/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +20 -20
  54. package/esm2020/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +79 -79
  55. package/esm2020/lib/calendar/calendar.module.mjs +62 -62
  56. package/esm2020/lib/calendar/calendar.service.mjs +60 -60
  57. package/esm2020/lib/calendar/calendar.utils.mjs +275 -275
  58. package/esm2020/lib/calendar/index.mjs +2 -2
  59. package/esm2020/lib/calendar/public_api.mjs +5 -5
  60. package/esm2020/lib/callout/callout.component.mjs +23 -23
  61. package/esm2020/lib/callout/callout.module.mjs +20 -20
  62. package/esm2020/lib/callout/index.mjs +2 -2
  63. package/esm2020/lib/callout/public_api.mjs +3 -3
  64. package/esm2020/lib/card/card-body.component.mjs +22 -22
  65. package/esm2020/lib/card/card-footer.component.mjs +22 -22
  66. package/esm2020/lib/card/card-group.component.mjs +22 -22
  67. package/esm2020/lib/card/card-header-actions.component.mjs +20 -20
  68. package/esm2020/lib/card/card-header.component.mjs +22 -22
  69. package/esm2020/lib/card/card-img-overlay/card-img-overlay.component.mjs +19 -19
  70. package/esm2020/lib/card/card-img.directive.mjs +25 -25
  71. package/esm2020/lib/card/card-link.directive.mjs +21 -21
  72. package/esm2020/lib/card/card-subtitle.directive.mjs +21 -21
  73. package/esm2020/lib/card/card-text.directive.mjs +21 -21
  74. package/esm2020/lib/card/card-title.directive.mjs +21 -21
  75. package/esm2020/lib/card/card.component.mjs +29 -29
  76. package/esm2020/lib/card/card.module.mjs +79 -79
  77. package/esm2020/lib/card/index.mjs +2 -2
  78. package/esm2020/lib/card/public_api.mjs +14 -14
  79. package/esm2020/lib/carousel/carousel/carousel.component.mjs +214 -214
  80. package/esm2020/lib/carousel/carousel-caption/carousel-caption.component.mjs +17 -17
  81. package/esm2020/lib/carousel/carousel-control/carousel-control.component.mjs +83 -83
  82. package/esm2020/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +45 -45
  83. package/esm2020/lib/carousel/carousel-inner/carousel-inner.component.mjs +47 -47
  84. package/esm2020/lib/carousel/carousel-item/carousel-item.component.mjs +68 -68
  85. package/esm2020/lib/carousel/carousel-state.mjs +77 -77
  86. package/esm2020/lib/carousel/carousel-state.type.mjs +2 -2
  87. package/esm2020/lib/carousel/carousel.animation.mjs +70 -70
  88. package/esm2020/lib/carousel/carousel.config.mjs +22 -22
  89. package/esm2020/lib/carousel/carousel.module.mjs +54 -54
  90. package/esm2020/lib/carousel/carousel.service.mjs +18 -18
  91. package/esm2020/lib/carousel/index.mjs +2 -2
  92. package/esm2020/lib/carousel/public_api.mjs +9 -9
  93. package/esm2020/lib/collapse/collapse.animations.mjs +18 -18
  94. package/esm2020/lib/collapse/collapse.directive.mjs +190 -190
  95. package/esm2020/lib/collapse/collapse.module.mjs +23 -23
  96. package/esm2020/lib/collapse/index.mjs +2 -2
  97. package/esm2020/lib/collapse/public_api.mjs +3 -3
  98. package/esm2020/lib/coreui.types.mjs +10 -10
  99. package/esm2020/lib/date-picker/date-picker.component.mjs +81 -81
  100. package/esm2020/lib/date-picker/date-picker.module.mjs +59 -59
  101. package/esm2020/lib/date-picker/index.mjs +2 -2
  102. package/esm2020/lib/date-picker/public_api.mjs +3 -3
  103. package/esm2020/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +607 -607
  104. package/esm2020/lib/date-range-picker/date-range-picker.module.mjs +55 -55
  105. package/esm2020/lib/date-range-picker/index.mjs +2 -2
  106. package/esm2020/lib/date-range-picker/public_api.mjs +3 -3
  107. package/esm2020/lib/dropdown/dropdown/dropdown.component.mjs +366 -366
  108. package/esm2020/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +72 -72
  109. package/esm2020/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +23 -23
  110. package/esm2020/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +23 -23
  111. package/esm2020/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +23 -23
  112. package/esm2020/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +86 -86
  113. package/esm2020/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +81 -81
  114. package/esm2020/lib/dropdown/dropdown.module.mjs +64 -64
  115. package/esm2020/lib/dropdown/dropdown.service.mjs +18 -18
  116. package/esm2020/lib/dropdown/index.mjs +2 -2
  117. package/esm2020/lib/dropdown/public_api.mjs +10 -10
  118. package/esm2020/lib/element-cover/element-cover.component.mjs +71 -71
  119. package/esm2020/lib/element-cover/element-cover.module.mjs +28 -28
  120. package/esm2020/lib/element-cover/index.mjs +2 -2
  121. package/esm2020/lib/element-cover/public_api.mjs +3 -3
  122. package/esm2020/lib/footer/footer.component.mjs +38 -38
  123. package/esm2020/lib/footer/footer.module.mjs +24 -24
  124. package/esm2020/lib/footer/index.mjs +2 -2
  125. package/esm2020/lib/footer/public_api.mjs +3 -3
  126. package/esm2020/lib/form/form/form.directive.mjs +38 -38
  127. package/esm2020/lib/form/form-check/form-check-input.directive.mjs +62 -62
  128. package/esm2020/lib/form/form-check/form-check-label.directive.mjs +21 -21
  129. package/esm2020/lib/form/form-check/form-check.component.mjs +75 -75
  130. package/esm2020/lib/form/form-control/form-control.directive.mjs +71 -71
  131. package/esm2020/lib/form/form-feedback/form-feedback.component.mjs +42 -42
  132. package/esm2020/lib/form/form-floating/form-floating.directive.mjs +38 -38
  133. package/esm2020/lib/form/form-label/form-label.directive.mjs +39 -39
  134. package/esm2020/lib/form/form-select/form-select.directive.mjs +34 -34
  135. package/esm2020/lib/form/form-text/form-text.directive.mjs +22 -22
  136. package/esm2020/lib/form/form.module.mjs +77 -77
  137. package/esm2020/lib/form/index.mjs +2 -2
  138. package/esm2020/lib/form/input-group/input-group.component.mjs +31 -31
  139. package/esm2020/lib/form/input-group-text/input-group-text.directive.mjs +22 -22
  140. package/esm2020/lib/form/public_api.mjs +14 -14
  141. package/esm2020/lib/grid/col.component.mjs +12 -12
  142. package/esm2020/lib/grid/col.directive.mjs +156 -156
  143. package/esm2020/lib/grid/col.type.mjs +2 -2
  144. package/esm2020/lib/grid/container.component.mjs +43 -43
  145. package/esm2020/lib/grid/container.type.mjs +2 -2
  146. package/esm2020/lib/grid/grid.module.mjs +48 -48
  147. package/esm2020/lib/grid/gutter.directive.mjs +56 -56
  148. package/esm2020/lib/grid/gutter.type.mjs +2 -2
  149. package/esm2020/lib/grid/index.mjs +2 -2
  150. package/esm2020/lib/grid/public_api.mjs +8 -8
  151. package/esm2020/lib/grid/row.component.mjs +12 -12
  152. package/esm2020/lib/grid/row.directive.mjs +45 -45
  153. package/esm2020/lib/grid/row.type.mjs +2 -2
  154. package/esm2020/lib/header/header/header.component.mjs +47 -47
  155. package/esm2020/lib/header/header-brand/header-brand.component.mjs +31 -31
  156. package/esm2020/lib/header/header-divider/header-divider.component.mjs +20 -20
  157. package/esm2020/lib/header/header-nav/header-nav.component.mjs +28 -28
  158. package/esm2020/lib/header/header-text/header-text.component.mjs +20 -20
  159. package/esm2020/lib/header/header-toggler/header-toggler.directive.mjs +54 -54
  160. package/esm2020/lib/header/header.module.mjs +49 -49
  161. package/esm2020/lib/header/index.mjs +2 -2
  162. package/esm2020/lib/header/public_api.mjs +8 -8
  163. package/esm2020/lib/image/img.directive.mjs +91 -91
  164. package/esm2020/lib/image/img.module.mjs +24 -24
  165. package/esm2020/lib/image/index.mjs +2 -2
  166. package/esm2020/lib/image/public_api.mjs +3 -3
  167. package/esm2020/lib/list-group/index.mjs +2 -2
  168. package/esm2020/lib/list-group/list-group-item.directive.mjs +73 -73
  169. package/esm2020/lib/list-group/list-group.directive.mjs +44 -44
  170. package/esm2020/lib/list-group/list-group.module.mjs +25 -25
  171. package/esm2020/lib/list-group/public_api.mjs +4 -4
  172. package/esm2020/lib/loading-button/index.mjs +2 -2
  173. package/esm2020/lib/loading-button/loading-button.component.mjs +84 -84
  174. package/esm2020/lib/loading-button/loading-button.module.mjs +28 -28
  175. package/esm2020/lib/loading-button/public_api.mjs +3 -3
  176. package/esm2020/lib/modal/index.mjs +2 -2
  177. package/esm2020/lib/modal/modal/modal.component.mjs +311 -311
  178. package/esm2020/lib/modal/modal-body/modal-body.component.mjs +19 -19
  179. package/esm2020/lib/modal/modal-content/modal-content.component.mjs +23 -23
  180. package/esm2020/lib/modal/modal-dialog/modal-dialog.component.mjs +32 -32
  181. package/esm2020/lib/modal/modal-dismiss/modal-toggle.directive.mjs +27 -27
  182. package/esm2020/lib/modal/modal-footer/modal-footer.component.mjs +22 -22
  183. package/esm2020/lib/modal/modal-header/modal-header.component.mjs +24 -24
  184. package/esm2020/lib/modal/modal-title/modal-title.directive.mjs +21 -21
  185. package/esm2020/lib/modal/modal.module.mjs +69 -69
  186. package/esm2020/lib/modal/modal.service.mjs +21 -21
  187. package/esm2020/lib/modal/public_api.mjs +11 -11
  188. package/esm2020/lib/multi-select/index.mjs +2 -2
  189. package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +536 -536
  190. package/esm2020/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +30 -30
  191. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +20 -20
  192. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +52 -52
  193. package/esm2020/lib/multi-select/multi-select-option/multi-select-option.component.mjs +144 -144
  194. package/esm2020/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +55 -55
  195. package/esm2020/lib/multi-select/multi-select.module.mjs +51 -51
  196. package/esm2020/lib/multi-select/multi-select.service.mjs +23 -23
  197. package/esm2020/lib/multi-select/multi-select.type.mjs +2 -2
  198. package/esm2020/lib/multi-select/public_api.mjs +7 -7
  199. package/esm2020/lib/nav/index.mjs +2 -2
  200. package/esm2020/lib/nav/nav-item.component.mjs +19 -19
  201. package/esm2020/lib/nav/nav-link.directive.mjs +86 -86
  202. package/esm2020/lib/nav/nav.component.mjs +24 -24
  203. package/esm2020/lib/nav/nav.module.mjs +22 -22
  204. package/esm2020/lib/nav/public_api.mjs +5 -5
  205. package/esm2020/lib/navbar/index.mjs +2 -2
  206. package/esm2020/lib/navbar/navbar-brand/navbar-brand.directive.mjs +23 -23
  207. package/esm2020/lib/navbar/navbar-nav/navbar-nav.component.mjs +40 -40
  208. package/esm2020/lib/navbar/navbar-text/navbar-text.component.mjs +20 -20
  209. package/esm2020/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +63 -63
  210. package/esm2020/lib/navbar/navbar.component.mjs +84 -84
  211. package/esm2020/lib/navbar/navbar.module.mjs +48 -48
  212. package/esm2020/lib/navbar/public_api.mjs +7 -7
  213. package/esm2020/lib/offcanvas/index.mjs +2 -2
  214. package/esm2020/lib/offcanvas/offcanvas/offcanvas.component.mjs +244 -244
  215. package/esm2020/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +19 -19
  216. package/esm2020/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +19 -19
  217. package/esm2020/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +21 -21
  218. package/esm2020/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +27 -27
  219. package/esm2020/lib/offcanvas/offcanvas.module.mjs +57 -57
  220. package/esm2020/lib/offcanvas/offcanvas.service.mjs +21 -21
  221. package/esm2020/lib/offcanvas/public_api.mjs +8 -8
  222. package/esm2020/lib/pagination/index.mjs +2 -2
  223. package/esm2020/lib/pagination/page-item/page-item.component.mjs +12 -12
  224. package/esm2020/lib/pagination/page-item/page-item.directive.mjs +62 -62
  225. package/esm2020/lib/pagination/page-link/page-link.directive.mjs +21 -21
  226. package/esm2020/lib/pagination/pagination/pagination.component.mjs +41 -41
  227. package/esm2020/lib/pagination/pagination.module.mjs +38 -38
  228. package/esm2020/lib/pagination/public_api.mjs +5 -5
  229. package/esm2020/lib/placeholder/index.mjs +2 -2
  230. package/esm2020/lib/placeholder/placeholder-animation.directive.mjs +34 -34
  231. package/esm2020/lib/placeholder/placeholder.directive.mjs +51 -51
  232. package/esm2020/lib/placeholder/placeholder.module.mjs +29 -29
  233. package/esm2020/lib/placeholder/public_api.mjs +4 -4
  234. package/esm2020/lib/popover/index.mjs +2 -2
  235. package/esm2020/lib/popover/popover/popover.component.mjs +92 -92
  236. package/esm2020/lib/popover/popover.directive.mjs +196 -196
  237. package/esm2020/lib/popover/popover.module.mjs +29 -29
  238. package/esm2020/lib/popover/public_api.mjs +4 -4
  239. package/esm2020/lib/progress/index.mjs +2 -2
  240. package/esm2020/lib/progress/progress-bar.component.mjs +112 -112
  241. package/esm2020/lib/progress/progress-bar.mjs +2 -2
  242. package/esm2020/lib/progress/progress.component.mjs +72 -72
  243. package/esm2020/lib/progress/progress.module.mjs +25 -25
  244. package/esm2020/lib/progress/public_api.mjs +4 -4
  245. package/esm2020/lib/services/class-toggle.service.mjs +30 -30
  246. package/esm2020/lib/services/index.mjs +2 -2
  247. package/esm2020/lib/services/intersection.service.mjs +34 -34
  248. package/esm2020/lib/services/listeners.service.mjs +43 -43
  249. package/esm2020/lib/services/public_api.mjs +3 -3
  250. package/esm2020/lib/shared/html-attr.directive.mjs +52 -52
  251. package/esm2020/lib/shared/index.mjs +2 -2
  252. package/esm2020/lib/shared/public_api.mjs +4 -4
  253. package/esm2020/lib/shared/shared.module.mjs +46 -46
  254. package/esm2020/lib/shared/template-id.directive.mjs +19 -19
  255. package/esm2020/lib/sidebar/index.mjs +2 -2
  256. package/esm2020/lib/sidebar/public_api.mjs +10 -10
  257. package/esm2020/lib/sidebar/sidebar/sidebar.component.mjs +246 -246
  258. package/esm2020/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +60 -60
  259. package/esm2020/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +30 -30
  260. package/esm2020/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +20 -20
  261. package/esm2020/lib/sidebar/sidebar-header/sidebar-header.component.mjs +20 -20
  262. package/esm2020/lib/sidebar/sidebar-nav/index.mjs +2 -2
  263. package/esm2020/lib/sidebar/sidebar-nav/public_api.mjs +14 -14
  264. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +24 -24
  265. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +18 -18
  266. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +18 -18
  267. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +21 -21
  268. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +33 -33
  269. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +43 -43
  270. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +94 -94
  271. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +23 -23
  272. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +68 -68
  273. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +204 -204
  274. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.mjs +2 -2
  275. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +54 -54
  276. package/esm2020/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +40 -40
  277. package/esm2020/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +26 -26
  278. package/esm2020/lib/sidebar/sidebar.module.mjs +99 -99
  279. package/esm2020/lib/sidebar/sidebar.service.mjs +21 -21
  280. package/esm2020/lib/smart-pagination/index.mjs +2 -2
  281. package/esm2020/lib/smart-pagination/public_api.mjs +3 -3
  282. package/esm2020/lib/smart-pagination/smart-pagination.component.mjs +196 -196
  283. package/esm2020/lib/smart-pagination/smart-pagination.module.mjs +28 -28
  284. package/esm2020/lib/smart-pagination/smart-pagination.type.mjs +2 -2
  285. package/esm2020/lib/smart-table/index.mjs +2 -2
  286. package/esm2020/lib/smart-table/public_api.mjs +5 -4
  287. package/esm2020/lib/smart-table/smart-table/smart-table.component.mjs +515 -517
  288. package/esm2020/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +30 -30
  289. package/esm2020/lib/smart-table/smart-table-filter/filter-input.directive.mjs +78 -78
  290. package/esm2020/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +46 -46
  291. package/esm2020/lib/smart-table/smart-table-head/smart-table-head.component.mjs +165 -165
  292. package/esm2020/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +49 -49
  293. package/esm2020/lib/smart-table/smart-table.module.mjs +76 -76
  294. package/esm2020/lib/smart-table/smart-table.type.mjs +1 -1
  295. package/esm2020/lib/spinner/index.mjs +2 -2
  296. package/esm2020/lib/spinner/public_api.mjs +3 -3
  297. package/esm2020/lib/spinner/spinner.component.mjs +49 -49
  298. package/esm2020/lib/spinner/spinner.module.mjs +28 -28
  299. package/esm2020/lib/table/index.mjs +2 -2
  300. package/esm2020/lib/table/public_api.mjs +5 -5
  301. package/esm2020/lib/table/table-active.directive.mjs +40 -40
  302. package/esm2020/lib/table/table-color.directive.mjs +24 -24
  303. package/esm2020/lib/table/table.directive.mjs +147 -147
  304. package/esm2020/lib/table/table.module.mjs +34 -34
  305. package/esm2020/lib/table/table.type.mjs +2 -2
  306. package/esm2020/lib/tabs/index.mjs +2 -2
  307. package/esm2020/lib/tabs/public_api.mjs +6 -6
  308. package/esm2020/lib/tabs/tab-content/tab-content.component.mjs +92 -92
  309. package/esm2020/lib/tabs/tab-content-ref.directive.mjs +128 -128
  310. package/esm2020/lib/tabs/tab-pane/tab-pane.component.mjs +57 -57
  311. package/esm2020/lib/tabs/tab.service.mjs +21 -21
  312. package/esm2020/lib/tabs/tabs.module.mjs +40 -40
  313. package/esm2020/lib/time-picker/index.mjs +2 -2
  314. package/esm2020/lib/time-picker/public_api.mjs +3 -3
  315. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +103 -103
  316. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +104 -104
  317. package/esm2020/lib/time-picker/time-picker.component.mjs +489 -489
  318. package/esm2020/lib/time-picker/time-picker.module.mjs +50 -50
  319. package/esm2020/lib/time-picker/time.utils.mjs +645 -645
  320. package/esm2020/lib/toast/index.mjs +2 -2
  321. package/esm2020/lib/toast/public_api.mjs +9 -9
  322. package/esm2020/lib/toast/toast/toast.component.mjs +238 -238
  323. package/esm2020/lib/toast/toast-body/toast-body.component.mjs +21 -21
  324. package/esm2020/lib/toast/toast-close.directive.mjs +28 -28
  325. package/esm2020/lib/toast/toast-header/toast-header.component.mjs +31 -31
  326. package/esm2020/lib/toast/toast.module.mjs +50 -50
  327. package/esm2020/lib/toast/toaster/toaster-host.directive.mjs +17 -17
  328. package/esm2020/lib/toast/toaster/toaster.component.mjs +140 -140
  329. package/esm2020/lib/toast/toaster/toaster.service.mjs +21 -21
  330. package/esm2020/lib/tooltip/index.mjs +2 -2
  331. package/esm2020/lib/tooltip/public_api.mjs +4 -4
  332. package/esm2020/lib/tooltip/tooltip/tooltip.component.mjs +88 -88
  333. package/esm2020/lib/tooltip/tooltip.directive.mjs +191 -191
  334. package/esm2020/lib/tooltip/tooltip.module.mjs +29 -29
  335. package/esm2020/lib/utilities/align.directive.mjs +24 -24
  336. package/esm2020/lib/utilities/bg-color.directive.mjs +33 -33
  337. package/esm2020/lib/utilities/border.directive.mjs +66 -66
  338. package/esm2020/lib/utilities/border.type.mjs +2 -2
  339. package/esm2020/lib/utilities/index.mjs +2 -2
  340. package/esm2020/lib/utilities/public_api.mjs +7 -7
  341. package/esm2020/lib/utilities/rounded.directive.mjs +65 -65
  342. package/esm2020/lib/utilities/rounded.type.mjs +2 -2
  343. package/esm2020/lib/utilities/text-color.directive.mjs +32 -32
  344. package/esm2020/lib/utilities/utilities.module.mjs +44 -44
  345. package/esm2020/lib/widget/index.mjs +2 -2
  346. package/esm2020/lib/widget/public_api.mjs +8 -8
  347. package/esm2020/lib/widget/widget-stat-a/widget-stat-a.component.mjs +49 -49
  348. package/esm2020/lib/widget/widget-stat-b/widget-stat-b.component.mjs +52 -52
  349. package/esm2020/lib/widget/widget-stat-c/widget-stat-c.component.mjs +80 -80
  350. package/esm2020/lib/widget/widget-stat-d/widget-stat-d.component.mjs +39 -39
  351. package/esm2020/lib/widget/widget-stat-e/widget-stat-e.component.mjs +30 -30
  352. package/esm2020/lib/widget/widget-stat-f/widget-stat-f.component.mjs +92 -92
  353. package/esm2020/lib/widget/widget.module.mjs +57 -57
  354. package/esm2020/public-api.mjs +50 -50
  355. package/fesm2015/coreui-angular-pro.mjs +15301 -15303
  356. package/fesm2015/coreui-angular-pro.mjs.map +1 -1
  357. package/fesm2020/coreui-angular-pro.mjs +15178 -15180
  358. package/fesm2020/coreui-angular-pro.mjs.map +1 -1
  359. package/index.d.ts +5 -5
  360. package/lib/accordion/accordion/accordion.component.d.ts +22 -22
  361. package/lib/accordion/accordion-button/accordion-button.directive.d.ts +18 -18
  362. package/lib/accordion/accordion-item/accordion-item.component.d.ts +33 -33
  363. package/lib/accordion/accordion.module.d.ts +12 -12
  364. package/lib/accordion/accordion.service.d.ts +13 -13
  365. package/lib/accordion/index.d.ts +1 -1
  366. package/lib/accordion/public_api.d.ts +4 -4
  367. package/lib/alert/alert-heading.directive.d.ts +7 -7
  368. package/lib/alert/alert-link.directive.d.ts +7 -7
  369. package/lib/alert/alert.component.d.ts +68 -68
  370. package/lib/alert/alert.module.d.ts +11 -11
  371. package/lib/alert/index.d.ts +1 -1
  372. package/lib/alert/public_api.d.ts +4 -4
  373. package/lib/avatar/avatar.component.d.ts +40 -40
  374. package/lib/avatar/avatar.module.d.ts +8 -8
  375. package/lib/avatar/index.d.ts +1 -1
  376. package/lib/avatar/public_api.d.ts +2 -2
  377. package/lib/backdrop/backdrop.service.d.ts +16 -16
  378. package/lib/badge/badge.component.d.ts +32 -32
  379. package/lib/badge/badge.module.d.ts +8 -8
  380. package/lib/badge/index.d.ts +1 -1
  381. package/lib/badge/public_api.d.ts +2 -2
  382. package/lib/breadcrumb/breadcrumb/breadcrumb.component.d.ts +21 -21
  383. package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.d.ts +28 -28
  384. package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +9 -9
  385. package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.d.ts +21 -21
  386. package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.d.ts +14 -14
  387. package/lib/breadcrumb/breadcrumb.module.d.ts +12 -12
  388. package/lib/breadcrumb/index.d.ts +1 -1
  389. package/lib/breadcrumb/public_api.d.ts +6 -6
  390. package/lib/button/button-close.directive.d.ts +16 -16
  391. package/lib/button/button.directive.d.ts +54 -54
  392. package/lib/button/button.module.d.ts +9 -9
  393. package/lib/button/index.d.ts +1 -1
  394. package/lib/button/public_api.d.ts +3 -3
  395. package/lib/button-group/button-group/button-group.component.d.ts +23 -23
  396. package/lib/button-group/button-group.module.d.ts +9 -9
  397. package/lib/button-group/button-toolbar/button-toolbar.component.d.ts +13 -13
  398. package/lib/button-group/index.d.ts +1 -1
  399. package/lib/button-group/public_api.d.ts +3 -3
  400. package/lib/calendar/calendar/calendar-class-view.pipe.d.ts +7 -7
  401. package/lib/calendar/calendar/calendar.component.d.ts +155 -155
  402. package/lib/calendar/calendar-month/calendar-class-day.pipe.d.ts +15 -15
  403. package/lib/calendar/calendar-month/calendar-class-month.pipe.d.ts +7 -7
  404. package/lib/calendar/calendar-month/calendar-class-year.pipe.d.ts +7 -7
  405. package/lib/calendar/calendar-month/calendar-day-title.pipe.d.ts +7 -7
  406. package/lib/calendar/calendar-month/calendar-day.directive.d.ts +29 -29
  407. package/lib/calendar/calendar-month/calendar-day.pipe.d.ts +8 -8
  408. package/lib/calendar/calendar-month/calendar-month.component.d.ts +121 -121
  409. package/lib/calendar/calendar-month/calendar-weekday.pipe.d.ts +8 -8
  410. package/lib/calendar/calendar-navigation/calendar-navigation.component.d.ts +30 -30
  411. package/lib/calendar/calendar.module.d.ts +19 -19
  412. package/lib/calendar/calendar.service.d.ts +33 -33
  413. package/lib/calendar/calendar.utils.d.ts +26 -26
  414. package/lib/calendar/index.d.ts +1 -1
  415. package/lib/calendar/public_api.d.ts +4 -4
  416. package/lib/callout/callout.component.d.ts +13 -13
  417. package/lib/callout/callout.module.d.ts +8 -8
  418. package/lib/callout/index.d.ts +1 -1
  419. package/lib/callout/public_api.d.ts +2 -2
  420. package/lib/card/card-body.component.d.ts +6 -6
  421. package/lib/card/card-footer.component.d.ts +6 -6
  422. package/lib/card/card-group.component.d.ts +6 -6
  423. package/lib/card/card-header-actions.component.d.ts +6 -6
  424. package/lib/card/card-header.component.d.ts +6 -6
  425. package/lib/card/card-img-overlay/card-img-overlay.component.d.ts +6 -6
  426. package/lib/card/card-img.directive.d.ts +11 -11
  427. package/lib/card/card-link.directive.d.ts +6 -6
  428. package/lib/card/card-subtitle.directive.d.ts +6 -6
  429. package/lib/card/card-text.directive.d.ts +6 -6
  430. package/lib/card/card-title.directive.d.ts +6 -6
  431. package/lib/card/card.component.d.ts +18 -18
  432. package/lib/card/card.module.d.ts +19 -19
  433. package/lib/card/index.d.ts +1 -1
  434. package/lib/card/public_api.d.ts +13 -13
  435. package/lib/carousel/carousel/carousel.component.d.ts +92 -92
  436. package/lib/carousel/carousel-caption/carousel-caption.component.d.ts +7 -7
  437. package/lib/carousel/carousel-control/carousel-control.component.d.ts +31 -31
  438. package/lib/carousel/carousel-indicators/carousel-indicators.component.d.ts +18 -18
  439. package/lib/carousel/carousel-inner/carousel-inner.component.d.ts +21 -21
  440. package/lib/carousel/carousel-item/carousel-item.component.d.ts +30 -30
  441. package/lib/carousel/carousel-state.d.ts +16 -16
  442. package/lib/carousel/carousel-state.type.d.ts +15 -15
  443. package/lib/carousel/carousel.animation.d.ts +4 -4
  444. package/lib/carousel/carousel.config.d.ts +10 -10
  445. package/lib/carousel/carousel.module.d.ts +15 -15
  446. package/lib/carousel/carousel.service.d.ts +14 -14
  447. package/lib/carousel/index.d.ts +1 -1
  448. package/lib/carousel/public_api.d.ts +8 -8
  449. package/lib/collapse/collapse.animations.d.ts +4 -4
  450. package/lib/collapse/collapse.directive.d.ts +65 -65
  451. package/lib/collapse/collapse.module.d.ts +10 -10
  452. package/lib/collapse/index.d.ts +1 -1
  453. package/lib/collapse/public_api.d.ts +2 -2
  454. package/lib/coreui.types.d.ts +45 -45
  455. package/lib/date-picker/date-picker.component.d.ts +18 -18
  456. package/lib/date-picker/date-picker.module.d.ts +16 -16
  457. package/lib/date-picker/index.d.ts +1 -1
  458. package/lib/date-picker/public_api.d.ts +3 -3
  459. package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +240 -240
  460. package/lib/date-range-picker/date-range-picker.module.d.ts +15 -15
  461. package/lib/date-range-picker/index.d.ts +1 -1
  462. package/lib/date-range-picker/public_api.d.ts +2 -2
  463. package/lib/dropdown/dropdown/dropdown.component.d.ts +135 -135
  464. package/lib/dropdown/dropdown-close/dropdown-close.directive.d.ts +26 -26
  465. package/lib/dropdown/dropdown-divider/dropdown-divider.directive.d.ts +7 -7
  466. package/lib/dropdown/dropdown-header/dropdown-header.directive.d.ts +7 -7
  467. package/lib/dropdown/dropdown-item/dropdown-item-plain.directive.d.ts +7 -7
  468. package/lib/dropdown/dropdown-item/dropdown-item.directive.d.ts +36 -36
  469. package/lib/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +36 -36
  470. package/lib/dropdown/dropdown.module.d.ts +14 -14
  471. package/lib/dropdown/dropdown.service.d.ts +13 -13
  472. package/lib/dropdown/index.d.ts +1 -1
  473. package/lib/dropdown/public_api.d.ts +9 -9
  474. package/lib/element-cover/element-cover.component.d.ts +27 -27
  475. package/lib/element-cover/element-cover.module.d.ts +9 -9
  476. package/lib/element-cover/index.d.ts +1 -1
  477. package/lib/element-cover/public_api.d.ts +2 -2
  478. package/lib/footer/footer.component.d.ts +18 -18
  479. package/lib/footer/footer.module.d.ts +8 -8
  480. package/lib/footer/index.d.ts +1 -1
  481. package/lib/footer/public_api.d.ts +2 -2
  482. package/lib/form/form/form.directive.d.ts +17 -17
  483. package/lib/form/form-check/form-check-input.directive.d.ts +31 -31
  484. package/lib/form/form-check/form-check-label.directive.d.ts +6 -6
  485. package/lib/form/form-check/form-check.component.d.ts +36 -36
  486. package/lib/form/form-control/form-control.directive.d.ts +34 -34
  487. package/lib/form/form-feedback/form-feedback.component.d.ts +18 -18
  488. package/lib/form/form-floating/form-floating.directive.d.ts +16 -16
  489. package/lib/form/form-label/form-label.directive.d.ts +16 -16
  490. package/lib/form/form-select/form-select.directive.d.ts +16 -16
  491. package/lib/form/form-text/form-text.directive.d.ts +7 -7
  492. package/lib/form/form.module.d.ts +19 -19
  493. package/lib/form/index.d.ts +1 -1
  494. package/lib/form/input-group/input-group.component.d.ts +11 -11
  495. package/lib/form/input-group-text/input-group-text.directive.d.ts +7 -7
  496. package/lib/form/public_api.d.ts +13 -13
  497. package/lib/grid/col.component.d.ts +6 -6
  498. package/lib/grid/col.directive.d.ts +75 -75
  499. package/lib/grid/col.type.d.ts +11 -11
  500. package/lib/grid/container.component.d.ts +20 -20
  501. package/lib/grid/container.type.d.ts +5 -5
  502. package/lib/grid/grid.module.d.ts +13 -13
  503. package/lib/grid/gutter.directive.d.ts +13 -13
  504. package/lib/grid/gutter.type.d.ts +13 -13
  505. package/lib/grid/index.d.ts +1 -1
  506. package/lib/grid/public_api.d.ts +7 -7
  507. package/lib/grid/row.component.d.ts +6 -6
  508. package/lib/grid/row.directive.d.ts +37 -37
  509. package/lib/grid/row.type.d.ts +9 -9
  510. package/lib/header/header/header.component.d.ts +25 -25
  511. package/lib/header/header-brand/header-brand.component.d.ts +12 -12
  512. package/lib/header/header-divider/header-divider.component.d.ts +6 -6
  513. package/lib/header/header-nav/header-nav.component.d.ts +12 -12
  514. package/lib/header/header-text/header-text.component.d.ts +6 -6
  515. package/lib/header/header-toggler/header-toggler.directive.d.ts +25 -25
  516. package/lib/header/header.module.d.ts +13 -13
  517. package/lib/header/index.d.ts +1 -1
  518. package/lib/header/public_api.d.ts +7 -7
  519. package/lib/image/img.directive.d.ts +42 -42
  520. package/lib/image/img.module.d.ts +8 -8
  521. package/lib/image/index.d.ts +1 -1
  522. package/lib/image/public_api.d.ts +2 -2
  523. package/lib/list-group/index.d.ts +1 -1
  524. package/lib/list-group/list-group-item.directive.d.ts +33 -33
  525. package/lib/list-group/list-group.directive.d.ts +21 -21
  526. package/lib/list-group/list-group.module.d.ts +9 -9
  527. package/lib/list-group/public_api.d.ts +3 -3
  528. package/lib/loading-button/index.d.ts +1 -1
  529. package/lib/loading-button/loading-button.component.d.ts +43 -43
  530. package/lib/loading-button/loading-button.module.d.ts +9 -9
  531. package/lib/loading-button/public_api.d.ts +2 -2
  532. package/lib/modal/index.d.ts +1 -1
  533. package/lib/modal/modal/modal.component.d.ts +104 -104
  534. package/lib/modal/modal-body/modal-body.component.d.ts +6 -6
  535. package/lib/modal/modal-content/modal-content.component.d.ts +7 -7
  536. package/lib/modal/modal-dialog/modal-dialog.component.d.ts +25 -25
  537. package/lib/modal/modal-dismiss/modal-toggle.directive.d.ts +13 -13
  538. package/lib/modal/modal-footer/modal-footer.component.d.ts +6 -6
  539. package/lib/modal/modal-header/modal-header.component.d.ts +6 -6
  540. package/lib/modal/modal-title/modal-title.directive.d.ts +6 -6
  541. package/lib/modal/modal.module.d.ts +16 -16
  542. package/lib/modal/modal.service.d.ts +15 -15
  543. package/lib/modal/public_api.d.ts +10 -10
  544. package/lib/multi-select/index.d.ts +1 -1
  545. package/lib/multi-select/multi-select/multi-select.component.d.ts +150 -150
  546. package/lib/multi-select/multi-select-native-select/multi-select-native-select.component.d.ts +14 -14
  547. package/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.d.ts +9 -9
  548. package/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.d.ts +20 -20
  549. package/lib/multi-select/multi-select-option/multi-select-option.component.d.ts +49 -49
  550. package/lib/multi-select/multi-select-tag/multi-select-tag.component.d.ts +21 -21
  551. package/lib/multi-select/multi-select.module.d.ts +17 -17
  552. package/lib/multi-select/multi-select.service.d.ts +12 -12
  553. package/lib/multi-select/multi-select.type.d.ts +34 -34
  554. package/lib/multi-select/public_api.d.ts +6 -6
  555. package/lib/nav/index.d.ts +1 -1
  556. package/lib/nav/nav-item.component.d.ts +6 -6
  557. package/lib/nav/nav-link.directive.d.ts +34 -34
  558. package/lib/nav/nav.component.d.ts +16 -16
  559. package/lib/nav/nav.module.d.ts +10 -10
  560. package/lib/nav/public_api.d.ts +4 -4
  561. package/lib/navbar/index.d.ts +1 -1
  562. package/lib/navbar/navbar-brand/navbar-brand.directive.d.ts +7 -7
  563. package/lib/navbar/navbar-nav/navbar-nav.component.d.ts +15 -15
  564. package/lib/navbar/navbar-text/navbar-text.component.d.ts +6 -6
  565. package/lib/navbar/navbar-toggler/navbar-toggler.directive.d.ts +33 -33
  566. package/lib/navbar/navbar.component.d.ts +39 -39
  567. package/lib/navbar/navbar.module.d.ts +13 -13
  568. package/lib/navbar/public_api.d.ts +6 -6
  569. package/lib/offcanvas/index.d.ts +1 -1
  570. package/lib/offcanvas/offcanvas/offcanvas.component.d.ts +82 -82
  571. package/lib/offcanvas/offcanvas-body/offcanvas-body.component.d.ts +6 -6
  572. package/lib/offcanvas/offcanvas-header/offcanvas-header.component.d.ts +6 -6
  573. package/lib/offcanvas/offcanvas-title/offcanvas-title.directive.d.ts +6 -6
  574. package/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.d.ts +14 -14
  575. package/lib/offcanvas/offcanvas.module.d.ts +13 -13
  576. package/lib/offcanvas/offcanvas.service.d.ts +15 -15
  577. package/lib/offcanvas/public_api.d.ts +7 -7
  578. package/lib/pagination/index.d.ts +1 -1
  579. package/lib/pagination/page-item/page-item.component.d.ts +6 -6
  580. package/lib/pagination/page-item/page-item.directive.d.ts +24 -24
  581. package/lib/pagination/page-link/page-link.directive.d.ts +6 -6
  582. package/lib/pagination/pagination/pagination.component.d.ts +22 -22
  583. package/lib/pagination/pagination.module.d.ts +11 -11
  584. package/lib/pagination/public_api.d.ts +5 -5
  585. package/lib/placeholder/index.d.ts +1 -1
  586. package/lib/placeholder/placeholder-animation.directive.d.ts +18 -18
  587. package/lib/placeholder/placeholder.directive.d.ts +22 -22
  588. package/lib/placeholder/placeholder.module.d.ts +9 -9
  589. package/lib/placeholder/public_api.d.ts +3 -3
  590. package/lib/popover/index.d.ts +1 -1
  591. package/lib/popover/popover/popover.component.d.ts +30 -30
  592. package/lib/popover/popover.directive.d.ts +58 -58
  593. package/lib/popover/popover.module.d.ts +9 -9
  594. package/lib/popover/public_api.d.ts +3 -3
  595. package/lib/progress/index.d.ts +1 -1
  596. package/lib/progress/progress-bar.component.d.ts +52 -52
  597. package/lib/progress/progress-bar.d.ts +10 -10
  598. package/lib/progress/progress.component.d.ts +32 -32
  599. package/lib/progress/progress.module.d.ts +9 -9
  600. package/lib/progress/public_api.d.ts +4 -4
  601. package/lib/services/class-toggle.service.d.ts +11 -11
  602. package/lib/services/index.d.ts +1 -1
  603. package/lib/services/intersection.service.d.ts +22 -22
  604. package/lib/services/listeners.service.d.ts +19 -19
  605. package/lib/services/public_api.d.ts +2 -2
  606. package/lib/shared/html-attr.directive.d.ts +16 -16
  607. package/lib/shared/index.d.ts +1 -1
  608. package/lib/shared/public_api.d.ts +3 -3
  609. package/lib/shared/shared.module.d.ts +11 -11
  610. package/lib/shared/template-id.directive.d.ts +9 -9
  611. package/lib/sidebar/index.d.ts +1 -1
  612. package/lib/sidebar/public_api.d.ts +9 -9
  613. package/lib/sidebar/sidebar/sidebar.component.d.ts +85 -85
  614. package/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.d.ts +16 -16
  615. package/lib/sidebar/sidebar-brand/sidebar-brand.component.d.ts +12 -12
  616. package/lib/sidebar/sidebar-footer/sidebar-footer.component.d.ts +7 -7
  617. package/lib/sidebar/sidebar-header/sidebar-header.component.d.ts +7 -7
  618. package/lib/sidebar/sidebar-nav/index.d.ts +1 -1
  619. package/lib/sidebar/sidebar-nav/public_api.d.ts +12 -12
  620. package/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.d.ts +7 -7
  621. package/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.d.ts +7 -7
  622. package/lib/sidebar/sidebar-nav/sidebar-nav-group.service.d.ts +14 -14
  623. package/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.d.ts +7 -7
  624. package/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.d.ts +10 -10
  625. package/lib/sidebar/sidebar-nav/sidebar-nav-label.component.d.ts +18 -18
  626. package/lib/sidebar/sidebar-nav/sidebar-nav-link.component.d.ts +34 -34
  627. package/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.d.ts +7 -7
  628. package/lib/sidebar/sidebar-nav/sidebar-nav-title.component.d.ts +15 -15
  629. package/lib/sidebar/sidebar-nav/sidebar-nav.component.d.ts +59 -59
  630. package/lib/sidebar/sidebar-nav/sidebar-nav.d.ts +53 -53
  631. package/lib/sidebar/sidebar-nav/sidebar-nav.service.d.ts +20 -20
  632. package/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.d.ts +25 -25
  633. package/lib/sidebar/sidebar-toggler/sidebar-toggler.component.d.ts +7 -7
  634. package/lib/sidebar/sidebar.module.d.ts +25 -25
  635. package/lib/sidebar/sidebar.service.d.ts +19 -19
  636. package/lib/smart-pagination/index.d.ts +1 -1
  637. package/lib/smart-pagination/public_api.d.ts +2 -2
  638. package/lib/smart-pagination/smart-pagination.component.d.ts +109 -109
  639. package/lib/smart-pagination/smart-pagination.module.d.ts +9 -9
  640. package/lib/smart-pagination/smart-pagination.type.d.ts +79 -79
  641. package/lib/smart-table/index.d.ts +1 -1
  642. package/lib/smart-table/public_api.d.ts +4 -3
  643. package/lib/smart-table/smart-table/smart-table.component.d.ts +145 -144
  644. package/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.d.ts +11 -11
  645. package/lib/smart-table/smart-table-filter/filter-input.directive.d.ts +24 -24
  646. package/lib/smart-table/smart-table-filter/smart-table-filter.component.d.ts +16 -16
  647. package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +45 -45
  648. package/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.d.ts +14 -14
  649. package/lib/smart-table/smart-table.module.d.ts +22 -22
  650. package/lib/smart-table/smart-table.type.d.ts +275 -275
  651. package/lib/spinner/index.d.ts +1 -1
  652. package/lib/spinner/public_api.d.ts +2 -2
  653. package/lib/spinner/spinner.component.d.ts +31 -31
  654. package/lib/spinner/spinner.module.d.ts +9 -9
  655. package/lib/table/index.d.ts +1 -1
  656. package/lib/table/public_api.d.ts +4 -4
  657. package/lib/table/table-active.directive.d.ts +16 -16
  658. package/lib/table/table-color.directive.d.ts +12 -12
  659. package/lib/table/table.directive.d.ts +90 -90
  660. package/lib/table/table.module.d.ts +10 -10
  661. package/lib/table/table.type.d.ts +76 -76
  662. package/lib/tabs/index.d.ts +1 -1
  663. package/lib/tabs/public_api.d.ts +5 -5
  664. package/lib/tabs/tab-content/tab-content.component.d.ts +33 -33
  665. package/lib/tabs/tab-content-ref.directive.d.ts +50 -50
  666. package/lib/tabs/tab-pane/tab-pane.component.d.ts +26 -26
  667. package/lib/tabs/tab.service.d.ts +14 -14
  668. package/lib/tabs/tabs.module.d.ts +10 -10
  669. package/lib/time-picker/index.d.ts +1 -1
  670. package/lib/time-picker/public_api.d.ts +2 -2
  671. package/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.d.ts +39 -39
  672. package/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.d.ts +38 -38
  673. package/lib/time-picker/time-picker.component.d.ts +196 -196
  674. package/lib/time-picker/time-picker.module.d.ts +14 -14
  675. package/lib/time-picker/time.utils.d.ts +57 -57
  676. package/lib/toast/index.d.ts +1 -1
  677. package/lib/toast/public_api.d.ts +8 -8
  678. package/lib/toast/toast/toast.component.d.ts +84 -84
  679. package/lib/toast/toast-body/toast-body.component.d.ts +9 -9
  680. package/lib/toast/toast-close.directive.d.ts +10 -10
  681. package/lib/toast/toast-header/toast-header.component.d.ts +14 -14
  682. package/lib/toast/toast.module.d.ts +14 -14
  683. package/lib/toast/toaster/toaster-host.directive.d.ts +8 -8
  684. package/lib/toast/toaster/toaster.component.d.ts +55 -55
  685. package/lib/toast/toaster/toaster.service.d.ts +16 -16
  686. package/lib/tooltip/index.d.ts +1 -1
  687. package/lib/tooltip/public_api.d.ts +3 -3
  688. package/lib/tooltip/tooltip/tooltip.component.d.ts +30 -30
  689. package/lib/tooltip/tooltip.directive.d.ts +58 -58
  690. package/lib/tooltip/tooltip.module.d.ts +9 -9
  691. package/lib/utilities/align.directive.d.ts +12 -12
  692. package/lib/utilities/bg-color.directive.d.ts +17 -17
  693. package/lib/utilities/border.directive.d.ts +12 -12
  694. package/lib/utilities/border.type.d.ts +15 -15
  695. package/lib/utilities/index.d.ts +1 -1
  696. package/lib/utilities/public_api.d.ts +6 -6
  697. package/lib/utilities/rounded.directive.d.ts +12 -12
  698. package/lib/utilities/rounded.type.d.ts +12 -12
  699. package/lib/utilities/text-color.directive.d.ts +13 -13
  700. package/lib/utilities/utilities.module.d.ts +12 -12
  701. package/lib/widget/index.d.ts +1 -1
  702. package/lib/widget/public_api.d.ts +7 -7
  703. package/lib/widget/widget-stat-a/widget-stat-a.component.d.ts +37 -37
  704. package/lib/widget/widget-stat-b/widget-stat-b.component.d.ts +47 -47
  705. package/lib/widget/widget-stat-c/widget-stat-c.component.d.ts +58 -58
  706. package/lib/widget/widget-stat-d/widget-stat-d.component.d.ts +31 -31
  707. package/lib/widget/widget-stat-e/widget-stat-e.component.d.ts +24 -24
  708. package/lib/widget/widget-stat-f/widget-stat-f.component.d.ts +77 -77
  709. package/lib/widget/widget.module.d.ts +15 -15
  710. package/package.json +1 -1
  711. package/public-api.d.ts +46 -46
@@ -1,275 +1,275 @@
1
- import { isValid } from 'date-fns';
2
- export const convertToLocalDate = (d, locale, options = {}) => d.toLocaleDateString(locale, options);
3
- export const convertToLocalTime = (d, locale, options = {}) => d.toLocaleTimeString(locale, options);
4
- export const createGroupsInArray = (arr, numberOfGroups) => {
5
- const perGroup = Math.ceil(arr.length / numberOfGroups);
6
- return new Array(numberOfGroups)
7
- .fill('')
8
- .map((_, i) => arr.slice(i * perGroup, (i + 1) * perGroup));
9
- };
10
- export const getCurrentYear = () => new Date().getFullYear();
11
- export const getCurrentMonth = () => new Date().getMonth();
12
- export const getLocalDateFromString = (string, locale, time) => {
13
- const date = new Date(2013, 11, 31, 17, 19, 22);
14
- let regex = time ? date.toLocaleString(locale) : date.toLocaleDateString(locale);
15
- regex = regex
16
- .replace('2013', '(?<year>[0-9]{2,4})')
17
- .replace('12', '(?<month>[0-9]{1,2})')
18
- .replace('31', '(?<day>[0-9]{1,2})');
19
- if (time) {
20
- regex = regex
21
- .replace('5', '(?<hour>[0-9]{1,2})')
22
- .replace('17', '(?<hour>[0-9]{1,2})')
23
- .replace('19', '(?<minute>[0-9]{1,2})')
24
- .replace('22', '(?<second>[0-9]{1,2})')
25
- .replace('PM', '(?<ampm>[A-Z]{2})');
26
- }
27
- const rgx = RegExp(`${regex}`);
28
- const partials = string.match(rgx);
29
- if (partials === null)
30
- return;
31
- const newDate = partials.groups && (time ? new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day']), partials.groups['ampm'] ? partials.groups['ampm'] === 'PM' ? Number(partials.groups['hour']) + 12 : Number(partials.groups['hour']) : Number(partials.groups['hour']), Number(partials.groups['minute']), Number(partials.groups['second'])) : new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day'])));
32
- return newDate;
33
- };
34
- export const getMonthName = (month, locale) => {
35
- const d = new Date();
36
- d.setDate(1);
37
- d.setMonth(month);
38
- return d.toLocaleString(locale, { month: 'long' });
39
- };
40
- export const getMonthsNames = (locale) => {
41
- const months = [];
42
- const d = new Date();
43
- d.setDate(1);
44
- for (let i = 0; i < 12; i++) {
45
- d.setMonth(i);
46
- months.push(d.toLocaleDateString(locale, { month: 'short' }));
47
- }
48
- return months;
49
- };
50
- export const getYears = (year) => {
51
- const years = [];
52
- for (let _year = year - 6; _year < year + 6; _year++) {
53
- years.push(_year);
54
- }
55
- return years;
56
- };
57
- const getLeadingDays = (year, month, firstDayOfWeek) => {
58
- // 0: sunday
59
- // 1: monday
60
- const dates = [];
61
- const d = new Date(year, month);
62
- const y = d.getFullYear();
63
- const m = d.getMonth();
64
- const firstWeekday = new Date(y, m, 1).getDay();
65
- let leadingDays = 6 - (6 - firstWeekday) - firstDayOfWeek;
66
- if (firstDayOfWeek) {
67
- leadingDays = leadingDays < 0 ? 7 + leadingDays : leadingDays;
68
- }
69
- for (let i = leadingDays * -1; i < 0; i++) {
70
- dates.push({
71
- date: new Date(y, m, i + 1), month: 'previous'
72
- });
73
- }
74
- return dates;
75
- };
76
- const getMonthDays = (year, month) => {
77
- const dates = [];
78
- const lastDay = new Date(year, month + 1, 0).getDate();
79
- for (let i = 1; i <= lastDay; i++) {
80
- dates.push({
81
- date: new Date(year, month, i), month: 'current'
82
- });
83
- }
84
- return dates;
85
- };
86
- const getTrailingDays = (year, month, leadingDays, monthDays) => {
87
- const dates = [];
88
- const days = 42 - (leadingDays.length + monthDays.length);
89
- for (let i = 1; i <= days; i++) {
90
- dates.push({
91
- date: new Date(year, month + 1, i), month: 'next'
92
- });
93
- }
94
- return dates;
95
- };
96
- export const getMonthDetails = (year, month, firstDayOfWeek) => {
97
- const daysPrevMonth = getLeadingDays(year, month, firstDayOfWeek);
98
- const daysThisMonth = getMonthDays(year, month);
99
- const daysNextMonth = getTrailingDays(year, month, daysPrevMonth, daysThisMonth);
100
- const days = [...daysPrevMonth, ...daysThisMonth, ...daysNextMonth];
101
- const weeks = [];
102
- days.forEach((day, index) => {
103
- if (index % 7 === 0 || weeks.length === 0) {
104
- weeks.push([]);
105
- }
106
- weeks[weeks.length - 1].push(day);
107
- });
108
- return weeks;
109
- };
110
- export const isDateDisabled = (date, min, max, dates) => {
111
- if (!date)
112
- return;
113
- let disabled;
114
- if (dates) {
115
- dates.forEach((_date) => {
116
- if (Array.isArray(_date)) {
117
- if (isDateInRange(date, _date[0], _date[1])) {
118
- disabled = true;
119
- }
120
- }
121
- if (_date instanceof Date) {
122
- if (isSameDateAs(date, _date)) {
123
- disabled = true;
124
- }
125
- }
126
- });
127
- }
128
- if (min && date < min) {
129
- disabled = true;
130
- }
131
- if (max && date > max) {
132
- disabled = true;
133
- }
134
- return disabled;
135
- };
136
- export const isDateInRange = (date, start, end) => {
137
- return date && start && end && start <= date && date <= end;
138
- };
139
- export const isDateSelected = (date, start, end) => {
140
- return date && ((start && isSameDateAs(start, date)) || (end && isSameDateAs(end, date)));
141
- };
142
- export const isEndDate = (date, start, end) => {
143
- return date && start && end && isSameDateAs(end, date) && start < end;
144
- };
145
- export const isLastDayOfMonth = (date) => {
146
- const test = new Date(date.getTime());
147
- const month = test.getMonth();
148
- test.setDate(test.getDate() + 1);
149
- return test.getMonth() !== month;
150
- };
151
- export const isSameDateAs = (date, date2) => {
152
- return (date.getDate() == date2.getDate() && date.getMonth() == date2.getMonth() && date.getFullYear() == date2.getFullYear());
153
- };
154
- export const isStartDate = (date, start, end) => {
155
- return date && start && end && isSameDateAs(start, date) && start < end;
156
- };
157
- export const isToday = (date) => {
158
- const today = new Date();
159
- return (date.getDate() == today.getDate() && date.getMonth() == today.getMonth() && date.getFullYear() == today.getFullYear());
160
- };
161
- export const isThisMonth = (date, index) => {
162
- const today = new Date();
163
- return (index == today.getMonth() && date.getFullYear() == today.getFullYear());
164
- };
165
- export const isThisYear = (year) => {
166
- const today = new Date();
167
- return (year == today.getFullYear());
168
- };
169
- export const isValidDate = (date) => {
170
- const d = new Date(date);
171
- // console.log('isValidDate', date, d.getTime(), !!d.getTime())
172
- return !!d.getTime();
173
- };
174
- export const tryDate = (value, propName = 'date') => {
175
- let _value;
176
- try {
177
- if (!isValid(value)) {
178
- throw value;
179
- }
180
- _value = new Date(value);
181
- }
182
- catch (err) {
183
- console.warn(`Invalid ${propName}`, err);
184
- _value = new Date();
185
- _value.setHours(0, 0, 0, 0);
186
- }
187
- return _value;
188
- };
189
- export const isDateInRangeDisabled = (startDate, endDate, dates) => {
190
- if (startDate && endDate) {
191
- const date = new Date(startDate);
192
- let disabled = false;
193
- while (date < endDate) {
194
- date.setDate(date.getDate() + 1);
195
- if (isDateDisabled(date, null, null, dates)) {
196
- disabled = true;
197
- break;
198
- }
199
- }
200
- return disabled;
201
- }
202
- return false;
203
- };
204
- // type DateParts = {
205
- // [key in DateTimeFormatPartTypes]?: string;
206
- // };
207
- // type DateParts = {
208
- // year: number, month: number, day: number, literal: string
209
- // };
210
- //
211
- // export const cvtDate = (dateAsString: string, locale = 'pl-PL') => {
212
- // const dateString = dateAsString ?? new Date().toLocaleDateString(locale);
213
- // const dateSplit = dateString.split(/[.\-\/\s\D]/gi).filter(item => !!item.length);
214
- // const formatter = new Intl.DateTimeFormat(locale);
215
- // const parts = formatter.formatToParts().filter(part => ['year', 'month', 'day'].includes(part.type));
216
- // const dateShim = {
217
- // day: undefined, month: undefined, year: undefined
218
- // };
219
- // parts.forEach((part, index) => {
220
- // const { type, value } = { ...part };
221
- // // @ts-ignore
222
- // dateShim[type] = dateSplit[index];
223
- // });
224
- //
225
- // return dateShim;
226
- //
227
- // // const dateParts: DateParts = {
228
- // // year: 0,
229
- // // month: 0,
230
- // // day: 0,
231
- // // literal: '/'
232
- // // };
233
- // //
234
- // // const literal = parts.find(part => part.type === 'literal')?.value ?? '/';
235
- // // // const year = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');
236
- // // // const month = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');
237
- // // // const day = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');
238
- // //
239
- // // const dateArray = dateString.split(literal);
240
- // //
241
- // // parts.forEach(part => {
242
- // // const {type, value} = {...part};
243
- // // if (type === 'day') {
244
- // //
245
- // // }
246
- // // })
247
- // //
248
- // // parts.filter(part => part.type in dateParts).map(part => {
249
- // // const {type, value} = {...part};
250
- // // // @ts-ignore
251
- // // dateParts[type] = parseInt(part.value);
252
- // // //
253
- // // // switch (type) {
254
- // // // case 'day':
255
- // // // day = parseInt(value);
256
- // // // break;
257
- // // // case 'month':
258
- // // // month = parseInt(value);
259
- // // // break;
260
- // // // case 'year':
261
- // // // year = parseInt(value);
262
- // // // break;
263
- // // // }
264
- // // })
265
- // // // const { year, month, day } = {...dateParts}
266
- // // return new Date(year, month - 1, day);
267
- // };
268
- //
269
- // // function getDateX(dateAsString) {
270
- // // const [day, month, year] = dateAsString.split('/');
271
- // // return new Date(year, month - 1, day);
272
- // // }
273
- //
274
- // // getDate('12/07/1997');
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsTUFBYyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsTUFBYyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFVLEVBQUUsY0FBc0IsRUFBRSxFQUFFO0lBQ3hFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQztJQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQztTQUM3QixJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ1IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ3ZGLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakYsS0FBSyxHQUFHLEtBQUs7U0FDVixPQUFPLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUM7U0FDckMsT0FBTyxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRXZDLElBQUksSUFBSSxFQUFFO1FBQ1IsS0FBSyxHQUFHLEtBQUs7YUFDVixPQUFPLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO2FBQ25DLE9BQU8sQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7YUFDcEMsT0FBTyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQzthQUN0QyxPQUFPLENBQUMsSUFBSSxFQUFFLHVCQUF1QixDQUFDO2FBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztLQUN2QztJQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVuQyxJQUFJLFFBQVEsS0FBSyxJQUFJO1FBQUUsT0FBTztJQUU5QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTNmLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlB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QjtBQUNwQix5Q0FBeUM7QUFDekMsUUFBUTtBQUNSLEVBQUU7QUFDRixxQkFBcUI7QUFDckIsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxrQkFBa0I7QUFDbEIsbUJBQW1CO0FBQ25CLGlCQUFpQjtBQUNqQixzQkFBc0I7QUFDdEIsVUFBVTtBQUNWLE9BQU87QUFDUCxrRkFBa0Y7QUFDbEYseUZBQXlGO0FBQ3pGLDBGQUEwRjtBQUMxRix3RkFBd0Y7QUFDeEYsT0FBTztBQUNQLG9EQUFvRDtBQUNwRCxPQUFPO0FBQ1AsK0JBQStCO0FBQy9CLDBDQUEwQztBQUMxQywrQkFBK0I7QUFDL0IsT0FBTztBQUNQLFdBQVc7QUFDWCxVQUFVO0FBQ1YsT0FBTztBQUNQLGtFQUFrRTtBQUNsRSwwQ0FBMEM7QUFDMUMsdUJBQXVCO0FBQ3ZCLGlEQUFpRDtBQUNqRCxZQUFZO0FBQ1osNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQix1Q0FBdUM7QUFDdkMsdUJBQXVCO0FBQ3ZCLDRCQUE0QjtBQUM1Qix5Q0FBeUM7QUFDekMsdUJBQXVCO0FBQ3ZCLDJCQUEyQjtBQUMzQix3Q0FBd0M7QUFDeEMsdUJBQXVCO0FBQ3ZCLGNBQWM7QUFDZCxVQUFVO0FBQ1Ysc0RBQXNEO0FBQ3RELDhDQUE4QztBQUM5QyxLQUFLO0FBQ0wsRUFBRTtBQUNGLHVDQUF1QztBQUN2QywyREFBMkQ7QUFDM0QsOENBQThDO0FBQzlDLE9BQU87QUFDUCxFQUFFO0FBQ0YsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2RhdGUtZm5zJztcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Mb2NhbERhdGUgPSAoZDogRGF0ZSwgbG9jYWxlOiBzdHJpbmcsIG9wdGlvbnMgPSB7fSkgPT4gZC50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCBvcHRpb25zKTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Mb2NhbFRpbWUgPSAoZDogRGF0ZSwgbG9jYWxlOiBzdHJpbmcsIG9wdGlvbnMgPSB7fSkgPT4gZC50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlLCBvcHRpb25zKTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVHcm91cHNJbkFycmF5ID0gKGFycjogYW55W10sIG51bWJlck9mR3JvdXBzOiBudW1iZXIpID0+IHtcclxuICBjb25zdCBwZXJHcm91cCA9IE1hdGguY2VpbChhcnIubGVuZ3RoIC8gbnVtYmVyT2ZHcm91cHMpO1xyXG4gIHJldHVybiBuZXcgQXJyYXkobnVtYmVyT2ZHcm91cHMpXHJcbiAgICAuZmlsbCgnJylcclxuICAgIC5tYXAoKF8sIGkpID0+IGFyci5zbGljZShpICogcGVyR3JvdXAsIChpICsgMSkgKiBwZXJHcm91cCkpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRZZWFyID0gKCkgPT4gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRNb250aCA9ICgpID0+IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRMb2NhbERhdGVGcm9tU3RyaW5nID0gKHN0cmluZzogc3RyaW5nLCBsb2NhbGU6IHN0cmluZywgdGltZT86IGJvb2xlYW4pID0+IHtcclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoMjAxMywgMTEsIDMxLCAxNywgMTksIDIyKTtcclxuICBsZXQgcmVnZXggPSB0aW1lID8gZGF0ZS50b0xvY2FsZVN0cmluZyhsb2NhbGUpIDogZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlKTtcclxuICByZWdleCA9IHJlZ2V4XHJcbiAgICAucmVwbGFjZSgnMjAxMycsICcoPzx5ZWFyPlswLTldezIsNH0pJylcclxuICAgIC5yZXBsYWNlKCcxMicsICcoPzxtb250aD5bMC05XXsxLDJ9KScpXHJcbiAgICAucmVwbGFjZSgnMzEnLCAnKD88ZGF5PlswLTldezEsMn0pJyk7XHJcblxyXG4gIGlmICh0aW1lKSB7XHJcbiAgICByZWdleCA9IHJlZ2V4XHJcbiAgICAgIC5yZXBsYWNlKCc1JywgJyg/PGhvdXI+WzAtOV17MSwyfSknKVxyXG4gICAgICAucmVwbGFjZSgnMTcnLCAnKD88aG91cj5bMC05XXsxLDJ9KScpXHJcbiAgICAgIC5yZXBsYWNlKCcxOScsICcoPzxtaW51dGU+WzAtOV17MSwyfSknKVxyXG4gICAgICAucmVwbGFjZSgnMjInLCAnKD88c2Vjb25kPlswLTldezEsMn0pJylcclxuICAgICAgLnJlcGxhY2UoJ1BNJywgJyg/PGFtcG0+W0EtWl17Mn0pJyk7XHJcbiAgfVxyXG5cclxuICBjb25zdCByZ3ggPSBSZWdFeHAoYCR7cmVnZXh9YCk7XHJcbiAgY29uc3QgcGFydGlhbHMgPSBzdHJpbmcubWF0Y2gocmd4KTtcclxuXHJcbiAgaWYgKHBhcnRpYWxzID09PSBudWxsKSByZXR1cm47XHJcblxyXG4gIGNvbnN0IG5ld0RhdGUgPSBwYXJ0aWFscy5ncm91cHMgJiYgKHRpbWUgPyBuZXcgRGF0ZShOdW1iZXIocGFydGlhbHMuZ3JvdXBzWyd5ZWFyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtb250aCddKSAtIDEsIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2RheSddKSwgcGFydGlhbHMuZ3JvdXBzWydhbXBtJ10gPyBwYXJ0aWFscy5ncm91cHNbJ2FtcG0nXSA9PT0gJ1BNJyA/IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSkgKyAxMiA6IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSkgOiBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydob3VyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtaW51dGUnXSksIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ3NlY29uZCddKSkgOiBuZXcgRGF0ZShOdW1iZXIocGFydGlhbHMuZ3JvdXBzWyd5ZWFyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtb250aCddKSAtIDEsIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2RheSddKSkpO1xyXG5cclxuICByZXR1cm4gbmV3RGF0ZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRNb250aE5hbWUgPSAobW9udGg6IG51bWJlciwgbG9jYWxlOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCBkID0gbmV3IERhdGUoKTtcclxuICBkLnNldERhdGUoMSk7XHJcbiAgZC5zZXRNb250aChtb250aCk7XHJcbiAgcmV0dXJuIGQudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TW9udGhzTmFtZXMgPSAobG9jYWxlOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCBtb250aHMgPSBbXTtcclxuICBjb25zdCBkID0gbmV3IERhdGUoKTtcclxuICBkLnNldERhdGUoMSk7XHJcblxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTI7IGkrKykge1xyXG4gICAgZC5zZXRNb250aChpKTtcclxuICAgIG1vbnRocy5wdXNoKGQudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwgeyBtb250aDogJ3Nob3J0JyB9KSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbW9udGhzO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFllYXJzID0gKHllYXI6IG51bWJlcikgPT4ge1xyXG4gIGNvbnN0IHllYXJzID0gW107XHJcbiAgZm9yIChsZXQgX3llYXIgPSB5ZWFyIC0gNjsgX3llYXIgPCB5ZWFyICsgNjsgX3llYXIrKykge1xyXG4gICAgeWVhcnMucHVzaChfeWVhcik7XHJcbiAgfVxyXG5cclxuICByZXR1cm4geWVhcnM7XHJcbn07XHJcblxyXG5jb25zdCBnZXRMZWFkaW5nRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIpID0+IHtcclxuICAvLyAwOiBzdW5kYXlcclxuICAvLyAxOiBtb25kYXlcclxuICBjb25zdCBkYXRlcyA9IFtdO1xyXG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCk7XHJcbiAgY29uc3QgeSA9IGQuZ2V0RnVsbFllYXIoKTtcclxuICBjb25zdCBtID0gZC5nZXRNb250aCgpO1xyXG4gIGNvbnN0IGZpcnN0V2Vla2RheSA9IG5ldyBEYXRlKHksIG0sIDEpLmdldERheSgpO1xyXG4gIGxldCBsZWFkaW5nRGF5cyA9IDYgLSAoNiAtIGZpcnN0V2Vla2RheSkgLSBmaXJzdERheU9mV2VlaztcclxuXHJcbiAgaWYgKGZpcnN0RGF5T2ZXZWVrKSB7XHJcbiAgICBsZWFkaW5nRGF5cyA9IGxlYWRpbmdEYXlzIDwgMCA/IDcgKyBsZWFkaW5nRGF5cyA6IGxlYWRpbmdEYXlzO1xyXG4gIH1cclxuXHJcbiAgZm9yIChsZXQgaSA9IGxlYWRpbmdEYXlzICogLTE7IGkgPCAwOyBpKyspIHtcclxuICAgIGRhdGVzLnB1c2goe1xyXG4gICAgICBkYXRlOiBuZXcgRGF0ZSh5LCBtLCBpICsgMSksIG1vbnRoOiAncHJldmlvdXMnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldHVybiBkYXRlcztcclxufTtcclxuXHJcbmNvbnN0IGdldE1vbnRoRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpID0+IHtcclxuICBjb25zdCBkYXRlcyA9IFtdO1xyXG4gIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKTtcclxuICBmb3IgKGxldCBpID0gMTsgaSA8PSBsYXN0RGF5OyBpKyspIHtcclxuICAgIGRhdGVzLnB1c2goe1xyXG4gICAgICBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgaSksIG1vbnRoOiAnY3VycmVudCdcclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4gZGF0ZXM7XHJcbn07XHJcblxyXG5jb25zdCBnZXRUcmFpbGluZ0RheXMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBsZWFkaW5nRGF5czogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nIH1bXSwgbW9udGhEYXlzOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmcgfVtdKSA9PiB7XHJcbiAgY29uc3QgZGF0ZXMgPSBbXTtcclxuICBjb25zdCBkYXlzID0gNDIgLSAobGVhZGluZ0RheXMubGVuZ3RoICsgbW9udGhEYXlzLmxlbmd0aCk7XHJcbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gZGF5czsgaSsrKSB7XHJcbiAgICBkYXRlcy5wdXNoKHtcclxuICAgICAgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCBpKSwgbW9udGg6ICduZXh0J1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBkYXRlcztcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRNb250aERldGFpbHMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBmaXJzdERheU9mV2VlazogbnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgZGF5c1ByZXZNb250aCA9IGdldExlYWRpbmdEYXlzKHllYXIsIG1vbnRoLCBmaXJzdERheU9mV2Vlayk7XHJcbiAgY29uc3QgZGF5c1RoaXNNb250aCA9IGdldE1vbnRoRGF5cyh5ZWFyLCBtb250aCk7XHJcbiAgY29uc3QgZGF5c05leHRNb250aCA9IGdldFRyYWlsaW5nRGF5cyh5ZWFyLCBtb250aCwgZGF5c1ByZXZNb250aCwgZGF5c1RoaXNNb250aCk7XHJcbiAgY29uc3QgZGF5cyA9IFsuLi5kYXlzUHJldk1vbnRoLCAuLi5kYXlzVGhpc01vbnRoLCAuLi5kYXlzTmV4dE1vbnRoXTtcclxuXHJcbiAgY29uc3Qgd2Vla3M6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZyB9W11bXSA9IFtdO1xyXG5cclxuICBkYXlzLmZvckVhY2goKGRheSwgaW5kZXgpID0+IHtcclxuICAgIGlmIChpbmRleCAlIDcgPT09IDAgfHwgd2Vla3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHdlZWtzLnB1c2goW10pO1xyXG4gICAgfVxyXG4gICAgd2Vla3Nbd2Vla3MubGVuZ3RoIC0gMV0ucHVzaChkYXkpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gd2Vla3M7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNEYXRlRGlzYWJsZWQgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIG1pbj86IERhdGUgfCBudWxsLCBtYXg/OiBEYXRlIHwgbnVsbCwgZGF0ZXM/OiBEYXRlW10gfCBEYXRlW11bXSkgPT4ge1xyXG4gIGlmICghZGF0ZSkgcmV0dXJuO1xyXG4gIGxldCBkaXNhYmxlZDtcclxuICBpZiAoZGF0ZXMpIHtcclxuICAgIGRhdGVzLmZvckVhY2goKF9kYXRlOiBEYXRlIHwgRGF0ZVtdKSA9PiB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KF9kYXRlKSkge1xyXG4gICAgICAgIGlmIChpc0RhdGVJblJhbmdlKGRhdGUsIF9kYXRlWzBdLCBfZGF0ZVsxXSkpIHtcclxuICAgICAgICAgIGRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKF9kYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgIGlmIChpc1NhbWVEYXRlQXMoZGF0ZSwgX2RhdGUpKSB7XHJcbiAgICAgICAgICBkaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XHJcbiAgICBkaXNhYmxlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcclxuICAgIGRpc2FibGVkID0gdHJ1ZTtcclxuICB9XHJcbiAgcmV0dXJuIGRpc2FibGVkO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzRGF0ZUluUmFuZ2UgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBkYXRlICYmIHN0YXJ0ICYmIGVuZCAmJiBzdGFydCA8PSBkYXRlICYmIGRhdGUgPD0gZW5kO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzRGF0ZVNlbGVjdGVkID0gKGRhdGU6IERhdGUgfCBudWxsLCBzdGFydDogRGF0ZSB8IG51bGwsIGVuZDogRGF0ZSB8IG51bGwpID0+IHtcclxuICByZXR1cm4gZGF0ZSAmJiAoKHN0YXJ0ICYmIGlzU2FtZURhdGVBcyhzdGFydCwgZGF0ZSkpIHx8IChlbmQgJiYgaXNTYW1lRGF0ZUFzKGVuZCwgZGF0ZSkpKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0VuZERhdGUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBkYXRlICYmIHN0YXJ0ICYmIGVuZCAmJiBpc1NhbWVEYXRlQXMoZW5kLCBkYXRlKSAmJiBzdGFydCA8IGVuZDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0xhc3REYXlPZk1vbnRoID0gKGRhdGU6IERhdGUpID0+IHtcclxuICBjb25zdCB0ZXN0ID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xyXG4gIGNvbnN0IG1vbnRoID0gdGVzdC5nZXRNb250aCgpO1xyXG5cclxuICB0ZXN0LnNldERhdGUodGVzdC5nZXREYXRlKCkgKyAxKTtcclxuICByZXR1cm4gdGVzdC5nZXRNb250aCgpICE9PSBtb250aDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1NhbWVEYXRlQXMgPSAoZGF0ZTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IHtcclxuICByZXR1cm4gKGRhdGUuZ2V0RGF0ZSgpID09IGRhdGUyLmdldERhdGUoKSAmJiBkYXRlLmdldE1vbnRoKCkgPT0gZGF0ZTIuZ2V0TW9udGgoKSAmJiBkYXRlLmdldEZ1bGxZZWFyKCkgPT0gZGF0ZTIuZ2V0RnVsbFllYXIoKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNTdGFydERhdGUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBkYXRlICYmIHN0YXJ0ICYmIGVuZCAmJiBpc1NhbWVEYXRlQXMoc3RhcnQsIGRhdGUpICYmIHN0YXJ0IDwgZW5kO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzVG9kYXkgPSAoZGF0ZTogRGF0ZSkgPT4ge1xyXG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICByZXR1cm4gKGRhdGUuZ2V0RGF0ZSgpID09IHRvZGF5LmdldERhdGUoKSAmJiBkYXRlLmdldE1vbnRoKCkgPT0gdG9kYXkuZ2V0TW9udGgoKSAmJiBkYXRlLmdldEZ1bGxZZWFyKCkgPT0gdG9kYXkuZ2V0RnVsbFllYXIoKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNUaGlzTW9udGggPSAoZGF0ZTogRGF0ZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICByZXR1cm4gKGluZGV4ID09IHRvZGF5LmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzVGhpc1llYXIgPSAoeWVhcjogbnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gIHJldHVybiAoeWVhciA9PSB0b2RheS5nZXRGdWxsWWVhcigpKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkRGF0ZSA9IChkYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gIC8vIGNvbnNvbGUubG9nKCdpc1ZhbGlkRGF0ZScsIGRhdGUsIGQuZ2V0VGltZSgpLCAhIWQuZ2V0VGltZSgpKVxyXG4gIHJldHVybiAhIWQuZ2V0VGltZSgpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRyeURhdGUgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IERhdGUsIHByb3BOYW1lOiBzdHJpbmcgPSAnZGF0ZScpID0+IHtcclxuICBsZXQgX3ZhbHVlO1xyXG4gIHRyeSB7XHJcbiAgICBpZiAoIWlzVmFsaWQodmFsdWUpKSB7XHJcbiAgICAgIHRocm93IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgX3ZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgY29uc29sZS53YXJuKGBJbnZhbGlkICR7cHJvcE5hbWV9YCwgZXJyKTtcclxuICAgIF92YWx1ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBfdmFsdWUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcbiAgfVxyXG4gIHJldHVybiBfdmFsdWU7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNEYXRlSW5SYW5nZURpc2FibGVkID0gKHN0YXJ0RGF0ZT86IERhdGUgfCBudWxsLCBlbmREYXRlPzogRGF0ZSB8IG51bGwsIGRhdGVzPzogRGF0ZVtdIHwgRGF0ZVtdW10pID0+IHtcclxuICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG4gICAgbGV0IGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgd2hpbGUgKGRhdGUgPCBlbmREYXRlKSB7XHJcbiAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDEpO1xyXG4gICAgICBpZiAoaXNEYXRlRGlzYWJsZWQoZGF0ZSwgbnVsbCwgbnVsbCwgZGF0ZXMpKSB7XHJcbiAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGlzYWJsZWQ7XHJcbiAgfVxyXG4gIHJldHVybiBmYWxzZTtcclxufTtcclxuXHJcbi8vIGV4cG9ydCBjb25zdCBzdHJpbmdUb0RhdGVDb252ZXJ0ID0gKGRhdGU6IHN0cmluZywgbG9jYWxlczogc3RyaW5nKSA9PiB7XHJcbi8vICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2ZyLUZSJyk7XHJcbi8vICAgY29uc3QgcGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cygpO1xyXG4vLyAgIGNvbnNvbGUubG9nKGRhdGUsIHBhcnRzLCBmb3JtYXR0ZXIuZm9ybWF0KCksIGZvcm1hdHRlci5yZXNvbHZlZE9wdGlvbnMoKSwgZm9ybWF0dGVyLmZvcm1hdCgpKTtcclxuLy8gfTtcclxuXHJcbi8vIGRlY2xhcmUgbmFtZXNwYWNlIEludGwge1xyXG4vLyAgIHR5cGUgRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXMgPSBcImRheVwiIHwgXCJkYXlQZXJpb2RcIiB8IFwiZXJhXCIgfCBcImZyYWN0aW9uYWxTZWNvbmRcIiB8IFwiaG91clwiIHwgXCJsaXRlcmFsXCIgfCBcIm1pbnV0ZVwiIHwgXCJtb250aFwiIHwgXCJzZWNvbmRcIiB8IFwidGltZVpvbmVOYW1lXCIgfCBcIndlZWtkYXlcIiB8IFwieWVhclwiO1xyXG4vL1xyXG4vLyAgIGludGVyZmFjZSBEYXRlVGltZUZvcm1hdFBhcnQge1xyXG4vLyAgICAgdHlwZTogRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXM7XHJcbi8vICAgICB2YWx1ZTogc3RyaW5nO1xyXG4vLyAgIH1cclxuLy9cclxuLy8gICBpbnRlcmZhY2UgRGF0ZVRpbWVGb3JtYXQge1xyXG4vLyAgICAgZm9ybWF0VG9QYXJ0cyhkYXRlPzogRGF0ZSB8IG51bWJlcik6IERhdGVUaW1lRm9ybWF0UGFydFtdO1xyXG4vLyAgIH1cclxuLy8gfVxyXG5cclxudHlwZSBEYXRlVGltZUZvcm1hdFBhcnRUeXBlcyA9XHJcbiAgJ2RheSdcclxuICB8ICdkYXlQZXJpb2QnXHJcbiAgfCAnZXJhJ1xyXG4gIHwgJ2ZyYWN0aW9uYWxTZWNvbmQnXHJcbiAgfCAnaG91cidcclxuICB8ICdsaXRlcmFsJ1xyXG4gIHwgJ21pbnV0ZSdcclxuICB8ICdtb250aCdcclxuICB8ICdzZWNvbmQnXHJcbiAgfCAndGltZVpvbmVOYW1lJ1xyXG4gIHwgJ3dlZWtkYXknXHJcbiAgfCAneWVhcic7XHJcbnR5cGUgRGF0ZUZvcm1hdFBhcnRUeXBlcyA9ICdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJyB8ICdsaXRlcmFsJztcclxuXHJcbi8vIHR5cGUgRGF0ZVBhcnRzID0ge1xyXG4vLyAgIFtrZXkgaW4gRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXNdPzogc3RyaW5nO1xyXG4vLyB9O1xyXG5cclxuLy8gdHlwZSBEYXRlUGFydHMgPSB7XHJcbi8vICAgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlciwgbGl0ZXJhbDogc3RyaW5nXHJcbi8vIH07XHJcbi8vXHJcbi8vIGV4cG9ydCBjb25zdCBjdnREYXRlID0gKGRhdGVBc1N0cmluZzogc3RyaW5nLCBsb2NhbGUgPSAncGwtUEwnKSA9PiB7XHJcbi8vICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGVBc1N0cmluZyA/PyBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUpO1xyXG4vLyAgIGNvbnN0IGRhdGVTcGxpdCA9IGRhdGVTdHJpbmcuc3BsaXQoL1suXFwtXFwvXFxzXFxEXS9naSkuZmlsdGVyKGl0ZW0gPT4gISFpdGVtLmxlbmd0aCk7XHJcbi8vICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlKTtcclxuLy8gICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKCkuZmlsdGVyKHBhcnQgPT4gWyd5ZWFyJywgJ21vbnRoJywgJ2RheSddLmluY2x1ZGVzKHBhcnQudHlwZSkpO1xyXG4vLyAgIGNvbnN0IGRhdGVTaGltID0ge1xyXG4vLyAgICAgZGF5OiB1bmRlZmluZWQsIG1vbnRoOiB1bmRlZmluZWQsIHllYXI6IHVuZGVmaW5lZFxyXG4vLyAgIH07XHJcbi8vICAgcGFydHMuZm9yRWFjaCgocGFydCwgaW5kZXgpID0+IHtcclxuLy8gICAgIGNvbnN0IHsgdHlwZSwgdmFsdWUgfSA9IHsgLi4ucGFydCB9O1xyXG4vLyAgICAgLy8gQHRzLWlnbm9yZVxyXG4vLyAgICAgZGF0ZVNoaW1bdHlwZV0gPSBkYXRlU3BsaXRbaW5kZXhdO1xyXG4vLyAgIH0pO1xyXG4vL1xyXG4vLyAgIHJldHVybiBkYXRlU2hpbTtcclxuLy9cclxuLy8gICAvLyBjb25zdCBkYXRlUGFydHM6IERhdGVQYXJ0cyA9IHtcclxuLy8gICAvLyAgIHllYXI6IDAsXHJcbi8vICAgLy8gICBtb250aDogMCxcclxuLy8gICAvLyAgIGRheTogMCxcclxuLy8gICAvLyAgIGxpdGVyYWw6ICcvJ1xyXG4vLyAgIC8vIH07XHJcbi8vICAgLy9cclxuLy8gICAvLyBjb25zdCBsaXRlcmFsID0gcGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ2xpdGVyYWwnKT8udmFsdWUgPz8gJy8nO1xyXG4vLyAgIC8vIC8vIGNvbnN0IHllYXIgPSBwYXJzZUludChwYXJ0cy5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAneWVhcicpPy52YWx1ZSA/PyAnMCcpO1xyXG4vLyAgIC8vIC8vIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQocGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ3llYXInKT8udmFsdWUgPz8gJzAnKTtcclxuLy8gICAvLyAvLyBjb25zdCBkYXkgPSBwYXJzZUludChwYXJ0cy5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAneWVhcicpPy52YWx1ZSA/PyAnMCcpO1xyXG4vLyAgIC8vXHJcbi8vICAgLy8gY29uc3QgZGF0ZUFycmF5ID0gZGF0ZVN0cmluZy5zcGxpdChsaXRlcmFsKTtcclxuLy8gICAvL1xyXG4vLyAgIC8vIHBhcnRzLmZvckVhY2gocGFydCA9PiB7XHJcbi8vICAgLy8gICBjb25zdCB7dHlwZSwgdmFsdWV9ID0gey4uLnBhcnR9O1xyXG4vLyAgIC8vICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XHJcbi8vICAgLy9cclxuLy8gICAvLyAgIH1cclxuLy8gICAvLyB9KVxyXG4vLyAgIC8vXHJcbi8vICAgLy8gcGFydHMuZmlsdGVyKHBhcnQgPT4gcGFydC50eXBlIGluIGRhdGVQYXJ0cykubWFwKHBhcnQgPT4ge1xyXG4vLyAgIC8vICAgY29uc3Qge3R5cGUsIHZhbHVlfSA9IHsuLi5wYXJ0fTtcclxuLy8gICAvLyAgIC8vIEB0cy1pZ25vcmVcclxuLy8gICAvLyAgIGRhdGVQYXJ0c1t0eXBlXSA9IHBhcnNlSW50KHBhcnQudmFsdWUpO1xyXG4vLyAgIC8vICAgLy9cclxuLy8gICAvLyAgIC8vIHN3aXRjaCAodHlwZSkge1xyXG4vLyAgIC8vICAgLy8gICBjYXNlICdkYXknOlxyXG4vLyAgIC8vICAgLy8gICAgIGRheSA9IHBhcnNlSW50KHZhbHVlKTtcclxuLy8gICAvLyAgIC8vICAgICBicmVhaztcclxuLy8gICAvLyAgIC8vICAgY2FzZSAnbW9udGgnOlxyXG4vLyAgIC8vICAgLy8gICAgIG1vbnRoID0gcGFyc2VJbnQodmFsdWUpO1xyXG4vLyAgIC8vICAgLy8gICAgIGJyZWFrO1xyXG4vLyAgIC8vICAgLy8gICBjYXNlICd5ZWFyJzpcclxuLy8gICAvLyAgIC8vICAgICB5ZWFyID0gcGFyc2VJbnQodmFsdWUpO1xyXG4vLyAgIC8vICAgLy8gICAgIGJyZWFrO1xyXG4vLyAgIC8vICAgLy8gfVxyXG4vLyAgIC8vIH0pXHJcbi8vICAgLy8gLy8gY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSB7Li4uZGF0ZVBhcnRzfVxyXG4vLyAgIC8vIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XHJcbi8vIH07XHJcbi8vXHJcbi8vIC8vIGZ1bmN0aW9uIGdldERhdGVYKGRhdGVBc1N0cmluZykge1xyXG4vLyAvLyAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IGRhdGVBc1N0cmluZy5zcGxpdCgnLycpO1xyXG4vLyAvLyAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XHJcbi8vIC8vIH1cclxuLy9cclxuLy8gLy8gZ2V0RGF0ZSgnMTIvMDcvMTk5NycpO1xyXG4iXX0=
1
+ import { isValid } from 'date-fns';
2
+ export const convertToLocalDate = (d, locale, options = {}) => d.toLocaleDateString(locale, options);
3
+ export const convertToLocalTime = (d, locale, options = {}) => d.toLocaleTimeString(locale, options);
4
+ export const createGroupsInArray = (arr, numberOfGroups) => {
5
+ const perGroup = Math.ceil(arr.length / numberOfGroups);
6
+ return new Array(numberOfGroups)
7
+ .fill('')
8
+ .map((_, i) => arr.slice(i * perGroup, (i + 1) * perGroup));
9
+ };
10
+ export const getCurrentYear = () => new Date().getFullYear();
11
+ export const getCurrentMonth = () => new Date().getMonth();
12
+ export const getLocalDateFromString = (string, locale, time) => {
13
+ const date = new Date(2013, 11, 31, 17, 19, 22);
14
+ let regex = time ? date.toLocaleString(locale) : date.toLocaleDateString(locale);
15
+ regex = regex
16
+ .replace('2013', '(?<year>[0-9]{2,4})')
17
+ .replace('12', '(?<month>[0-9]{1,2})')
18
+ .replace('31', '(?<day>[0-9]{1,2})');
19
+ if (time) {
20
+ regex = regex
21
+ .replace('5', '(?<hour>[0-9]{1,2})')
22
+ .replace('17', '(?<hour>[0-9]{1,2})')
23
+ .replace('19', '(?<minute>[0-9]{1,2})')
24
+ .replace('22', '(?<second>[0-9]{1,2})')
25
+ .replace('PM', '(?<ampm>[A-Z]{2})');
26
+ }
27
+ const rgx = RegExp(`${regex}`);
28
+ const partials = string.match(rgx);
29
+ if (partials === null)
30
+ return;
31
+ const newDate = partials.groups && (time ? new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day']), partials.groups['ampm'] ? partials.groups['ampm'] === 'PM' ? Number(partials.groups['hour']) + 12 : Number(partials.groups['hour']) : Number(partials.groups['hour']), Number(partials.groups['minute']), Number(partials.groups['second'])) : new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day'])));
32
+ return newDate;
33
+ };
34
+ export const getMonthName = (month, locale) => {
35
+ const d = new Date();
36
+ d.setDate(1);
37
+ d.setMonth(month);
38
+ return d.toLocaleString(locale, { month: 'long' });
39
+ };
40
+ export const getMonthsNames = (locale) => {
41
+ const months = [];
42
+ const d = new Date();
43
+ d.setDate(1);
44
+ for (let i = 0; i < 12; i++) {
45
+ d.setMonth(i);
46
+ months.push(d.toLocaleDateString(locale, { month: 'short' }));
47
+ }
48
+ return months;
49
+ };
50
+ export const getYears = (year) => {
51
+ const years = [];
52
+ for (let _year = year - 6; _year < year + 6; _year++) {
53
+ years.push(_year);
54
+ }
55
+ return years;
56
+ };
57
+ const getLeadingDays = (year, month, firstDayOfWeek) => {
58
+ // 0: sunday
59
+ // 1: monday
60
+ const dates = [];
61
+ const d = new Date(year, month);
62
+ const y = d.getFullYear();
63
+ const m = d.getMonth();
64
+ const firstWeekday = new Date(y, m, 1).getDay();
65
+ let leadingDays = 6 - (6 - firstWeekday) - firstDayOfWeek;
66
+ if (firstDayOfWeek) {
67
+ leadingDays = leadingDays < 0 ? 7 + leadingDays : leadingDays;
68
+ }
69
+ for (let i = leadingDays * -1; i < 0; i++) {
70
+ dates.push({
71
+ date: new Date(y, m, i + 1), month: 'previous'
72
+ });
73
+ }
74
+ return dates;
75
+ };
76
+ const getMonthDays = (year, month) => {
77
+ const dates = [];
78
+ const lastDay = new Date(year, month + 1, 0).getDate();
79
+ for (let i = 1; i <= lastDay; i++) {
80
+ dates.push({
81
+ date: new Date(year, month, i), month: 'current'
82
+ });
83
+ }
84
+ return dates;
85
+ };
86
+ const getTrailingDays = (year, month, leadingDays, monthDays) => {
87
+ const dates = [];
88
+ const days = 42 - (leadingDays.length + monthDays.length);
89
+ for (let i = 1; i <= days; i++) {
90
+ dates.push({
91
+ date: new Date(year, month + 1, i), month: 'next'
92
+ });
93
+ }
94
+ return dates;
95
+ };
96
+ export const getMonthDetails = (year, month, firstDayOfWeek) => {
97
+ const daysPrevMonth = getLeadingDays(year, month, firstDayOfWeek);
98
+ const daysThisMonth = getMonthDays(year, month);
99
+ const daysNextMonth = getTrailingDays(year, month, daysPrevMonth, daysThisMonth);
100
+ const days = [...daysPrevMonth, ...daysThisMonth, ...daysNextMonth];
101
+ const weeks = [];
102
+ days.forEach((day, index) => {
103
+ if (index % 7 === 0 || weeks.length === 0) {
104
+ weeks.push([]);
105
+ }
106
+ weeks[weeks.length - 1].push(day);
107
+ });
108
+ return weeks;
109
+ };
110
+ export const isDateDisabled = (date, min, max, dates) => {
111
+ if (!date)
112
+ return;
113
+ let disabled;
114
+ if (dates) {
115
+ dates.forEach((_date) => {
116
+ if (Array.isArray(_date)) {
117
+ if (isDateInRange(date, _date[0], _date[1])) {
118
+ disabled = true;
119
+ }
120
+ }
121
+ if (_date instanceof Date) {
122
+ if (isSameDateAs(date, _date)) {
123
+ disabled = true;
124
+ }
125
+ }
126
+ });
127
+ }
128
+ if (min && date < min) {
129
+ disabled = true;
130
+ }
131
+ if (max && date > max) {
132
+ disabled = true;
133
+ }
134
+ return disabled;
135
+ };
136
+ export const isDateInRange = (date, start, end) => {
137
+ return date && start && end && start <= date && date <= end;
138
+ };
139
+ export const isDateSelected = (date, start, end) => {
140
+ return date && ((start && isSameDateAs(start, date)) || (end && isSameDateAs(end, date)));
141
+ };
142
+ export const isEndDate = (date, start, end) => {
143
+ return date && start && end && isSameDateAs(end, date) && start < end;
144
+ };
145
+ export const isLastDayOfMonth = (date) => {
146
+ const test = new Date(date.getTime());
147
+ const month = test.getMonth();
148
+ test.setDate(test.getDate() + 1);
149
+ return test.getMonth() !== month;
150
+ };
151
+ export const isSameDateAs = (date, date2) => {
152
+ return (date.getDate() == date2.getDate() && date.getMonth() == date2.getMonth() && date.getFullYear() == date2.getFullYear());
153
+ };
154
+ export const isStartDate = (date, start, end) => {
155
+ return date && start && end && isSameDateAs(start, date) && start < end;
156
+ };
157
+ export const isToday = (date) => {
158
+ const today = new Date();
159
+ return (date.getDate() == today.getDate() && date.getMonth() == today.getMonth() && date.getFullYear() == today.getFullYear());
160
+ };
161
+ export const isThisMonth = (date, index) => {
162
+ const today = new Date();
163
+ return (index == today.getMonth() && date.getFullYear() == today.getFullYear());
164
+ };
165
+ export const isThisYear = (year) => {
166
+ const today = new Date();
167
+ return (year == today.getFullYear());
168
+ };
169
+ export const isValidDate = (date) => {
170
+ const d = new Date(date);
171
+ // console.log('isValidDate', date, d.getTime(), !!d.getTime())
172
+ return !!d.getTime();
173
+ };
174
+ export const tryDate = (value, propName = 'date') => {
175
+ let _value;
176
+ try {
177
+ if (!isValid(value)) {
178
+ throw value;
179
+ }
180
+ _value = new Date(value);
181
+ }
182
+ catch (err) {
183
+ console.warn(`Invalid ${propName}`, err);
184
+ _value = new Date();
185
+ _value.setHours(0, 0, 0, 0);
186
+ }
187
+ return _value;
188
+ };
189
+ export const isDateInRangeDisabled = (startDate, endDate, dates) => {
190
+ if (startDate && endDate) {
191
+ const date = new Date(startDate);
192
+ let disabled = false;
193
+ while (date < endDate) {
194
+ date.setDate(date.getDate() + 1);
195
+ if (isDateDisabled(date, null, null, dates)) {
196
+ disabled = true;
197
+ break;
198
+ }
199
+ }
200
+ return disabled;
201
+ }
202
+ return false;
203
+ };
204
+ // type DateParts = {
205
+ // [key in DateTimeFormatPartTypes]?: string;
206
+ // };
207
+ // type DateParts = {
208
+ // year: number, month: number, day: number, literal: string
209
+ // };
210
+ //
211
+ // export const cvtDate = (dateAsString: string, locale = 'pl-PL') => {
212
+ // const dateString = dateAsString ?? new Date().toLocaleDateString(locale);
213
+ // const dateSplit = dateString.split(/[.\-\/\s\D]/gi).filter(item => !!item.length);
214
+ // const formatter = new Intl.DateTimeFormat(locale);
215
+ // const parts = formatter.formatToParts().filter(part => ['year', 'month', 'day'].includes(part.type));
216
+ // const dateShim = {
217
+ // day: undefined, month: undefined, year: undefined
218
+ // };
219
+ // parts.forEach((part, index) => {
220
+ // const { type, value } = { ...part };
221
+ // // @ts-ignore
222
+ // dateShim[type] = dateSplit[index];
223
+ // });
224
+ //
225
+ // return dateShim;
226
+ //
227
+ // // const dateParts: DateParts = {
228
+ // // year: 0,
229
+ // // month: 0,
230
+ // // day: 0,
231
+ // // literal: '/'
232
+ // // };
233
+ // //
234
+ // // const literal = parts.find(part => part.type === 'literal')?.value ?? '/';
235
+ // // // const year = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');
236
+ // // // const month = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');
237
+ // // // const day = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');
238
+ // //
239
+ // // const dateArray = dateString.split(literal);
240
+ // //
241
+ // // parts.forEach(part => {
242
+ // // const {type, value} = {...part};
243
+ // // if (type === 'day') {
244
+ // //
245
+ // // }
246
+ // // })
247
+ // //
248
+ // // parts.filter(part => part.type in dateParts).map(part => {
249
+ // // const {type, value} = {...part};
250
+ // // // @ts-ignore
251
+ // // dateParts[type] = parseInt(part.value);
252
+ // // //
253
+ // // // switch (type) {
254
+ // // // case 'day':
255
+ // // // day = parseInt(value);
256
+ // // // break;
257
+ // // // case 'month':
258
+ // // // month = parseInt(value);
259
+ // // // break;
260
+ // // // case 'year':
261
+ // // // year = parseInt(value);
262
+ // // // break;
263
+ // // // }
264
+ // // })
265
+ // // // const { year, month, day } = {...dateParts}
266
+ // // return new Date(year, month - 1, day);
267
+ // };
268
+ //
269
+ // // function getDateX(dateAsString) {
270
+ // // const [day, month, year] = dateAsString.split('/');
271
+ // // return new Date(year, month - 1, day);
272
+ // // }
273
+ //
274
+ // // getDate('12/07/1997');
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsTUFBYyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsTUFBYyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFVLEVBQUUsY0FBc0IsRUFBRSxFQUFFO0lBQ3hFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQztJQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQztTQUM3QixJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ1IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ3ZGLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakYsS0FBSyxHQUFHLEtBQUs7U0FDVixPQUFPLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUM7U0FDckMsT0FBTyxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRXZDLElBQUksSUFBSSxFQUFFO1FBQ1IsS0FBSyxHQUFHLEtBQUs7YUFDVixPQUFPLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO2FBQ25DLE9BQU8sQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7YUFDcEMsT0FBTyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQzthQUN0QyxPQUFPLENBQUMsSUFBSSxFQUFFLHVCQUF1QixDQUFDO2FBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztLQUN2QztJQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVuQyxJQUFJLFFBQVEsS0FBSyxJQUFJO1FBQUUsT0FBTztJQUU5QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTNmLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlB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QjtBQUNwQix5Q0FBeUM7QUFDekMsUUFBUTtBQUNSLEVBQUU7QUFDRixxQkFBcUI7QUFDckIsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxrQkFBa0I7QUFDbEIsbUJBQW1CO0FBQ25CLGlCQUFpQjtBQUNqQixzQkFBc0I7QUFDdEIsVUFBVTtBQUNWLE9BQU87QUFDUCxrRkFBa0Y7QUFDbEYseUZBQXlGO0FBQ3pGLDBGQUEwRjtBQUMxRix3RkFBd0Y7QUFDeEYsT0FBTztBQUNQLG9EQUFvRDtBQUNwRCxPQUFPO0FBQ1AsK0JBQStCO0FBQy9CLDBDQUEwQztBQUMxQywrQkFBK0I7QUFDL0IsT0FBTztBQUNQLFdBQVc7QUFDWCxVQUFVO0FBQ1YsT0FBTztBQUNQLGtFQUFrRTtBQUNsRSwwQ0FBMEM7QUFDMUMsdUJBQXVCO0FBQ3ZCLGlEQUFpRDtBQUNqRCxZQUFZO0FBQ1osNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQix1Q0FBdUM7QUFDdkMsdUJBQXVCO0FBQ3ZCLDRCQUE0QjtBQUM1Qix5Q0FBeUM7QUFDekMsdUJBQXVCO0FBQ3ZCLDJCQUEyQjtBQUMzQix3Q0FBd0M7QUFDeEMsdUJBQXVCO0FBQ3ZCLGNBQWM7QUFDZCxVQUFVO0FBQ1Ysc0RBQXNEO0FBQ3RELDhDQUE4QztBQUM5QyxLQUFLO0FBQ0wsRUFBRTtBQUNGLHVDQUF1QztBQUN2QywyREFBMkQ7QUFDM0QsOENBQThDO0FBQzlDLE9BQU87QUFDUCxFQUFFO0FBQ0YsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2RhdGUtZm5zJztcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUb0xvY2FsRGF0ZSA9IChkOiBEYXRlLCBsb2NhbGU6IHN0cmluZywgb3B0aW9ucyA9IHt9KSA9PiBkLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIG9wdGlvbnMpO1xuXG5leHBvcnQgY29uc3QgY29udmVydFRvTG9jYWxUaW1lID0gKGQ6IERhdGUsIGxvY2FsZTogc3RyaW5nLCBvcHRpb25zID0ge30pID0+IGQudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSwgb3B0aW9ucyk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVHcm91cHNJbkFycmF5ID0gKGFycjogYW55W10sIG51bWJlck9mR3JvdXBzOiBudW1iZXIpID0+IHtcbiAgY29uc3QgcGVyR3JvdXAgPSBNYXRoLmNlaWwoYXJyLmxlbmd0aCAvIG51bWJlck9mR3JvdXBzKTtcbiAgcmV0dXJuIG5ldyBBcnJheShudW1iZXJPZkdyb3VwcylcbiAgICAuZmlsbCgnJylcbiAgICAubWFwKChfLCBpKSA9PiBhcnIuc2xpY2UoaSAqIHBlckdyb3VwLCAoaSArIDEpICogcGVyR3JvdXApKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50WWVhciA9ICgpID0+IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRNb250aCA9ICgpID0+IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcblxuZXhwb3J0IGNvbnN0IGdldExvY2FsRGF0ZUZyb21TdHJpbmcgPSAoc3RyaW5nOiBzdHJpbmcsIGxvY2FsZTogc3RyaW5nLCB0aW1lPzogYm9vbGVhbikgPT4ge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoMjAxMywgMTEsIDMxLCAxNywgMTksIDIyKTtcbiAgbGV0IHJlZ2V4ID0gdGltZSA/IGRhdGUudG9Mb2NhbGVTdHJpbmcobG9jYWxlKSA6IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSk7XG4gIHJlZ2V4ID0gcmVnZXhcbiAgICAucmVwbGFjZSgnMjAxMycsICcoPzx5ZWFyPlswLTldezIsNH0pJylcbiAgICAucmVwbGFjZSgnMTInLCAnKD88bW9udGg+WzAtOV17MSwyfSknKVxuICAgIC5yZXBsYWNlKCczMScsICcoPzxkYXk+WzAtOV17MSwyfSknKTtcblxuICBpZiAodGltZSkge1xuICAgIHJlZ2V4ID0gcmVnZXhcbiAgICAgIC5yZXBsYWNlKCc1JywgJyg/PGhvdXI+WzAtOV17MSwyfSknKVxuICAgICAgLnJlcGxhY2UoJzE3JywgJyg/PGhvdXI+WzAtOV17MSwyfSknKVxuICAgICAgLnJlcGxhY2UoJzE5JywgJyg/PG1pbnV0ZT5bMC05XXsxLDJ9KScpXG4gICAgICAucmVwbGFjZSgnMjInLCAnKD88c2Vjb25kPlswLTldezEsMn0pJylcbiAgICAgIC5yZXBsYWNlKCdQTScsICcoPzxhbXBtPltBLVpdezJ9KScpO1xuICB9XG5cbiAgY29uc3Qgcmd4ID0gUmVnRXhwKGAke3JlZ2V4fWApO1xuICBjb25zdCBwYXJ0aWFscyA9IHN0cmluZy5tYXRjaChyZ3gpO1xuXG4gIGlmIChwYXJ0aWFscyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gIGNvbnN0IG5ld0RhdGUgPSBwYXJ0aWFscy5ncm91cHMgJiYgKHRpbWUgPyBuZXcgRGF0ZShOdW1iZXIocGFydGlhbHMuZ3JvdXBzWyd5ZWFyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtb250aCddKSAtIDEsIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2RheSddKSwgcGFydGlhbHMuZ3JvdXBzWydhbXBtJ10gPyBwYXJ0aWFscy5ncm91cHNbJ2FtcG0nXSA9PT0gJ1BNJyA/IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSkgKyAxMiA6IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSkgOiBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydob3VyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtaW51dGUnXSksIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ3NlY29uZCddKSkgOiBuZXcgRGF0ZShOdW1iZXIocGFydGlhbHMuZ3JvdXBzWyd5ZWFyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtb250aCddKSAtIDEsIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2RheSddKSkpO1xuXG4gIHJldHVybiBuZXdEYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1vbnRoTmFtZSA9IChtb250aDogbnVtYmVyLCBsb2NhbGU6IHN0cmluZykgPT4ge1xuICBjb25zdCBkID0gbmV3IERhdGUoKTtcbiAgZC5zZXREYXRlKDEpO1xuICBkLnNldE1vbnRoKG1vbnRoKTtcbiAgcmV0dXJuIGQudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TW9udGhzTmFtZXMgPSAobG9jYWxlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbW9udGhzID0gW107XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSgpO1xuICBkLnNldERhdGUoMSk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgZC5zZXRNb250aChpKTtcbiAgICBtb250aHMucHVzaChkLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIHsgbW9udGg6ICdzaG9ydCcgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG1vbnRocztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZZWFycyA9ICh5ZWFyOiBudW1iZXIpID0+IHtcbiAgY29uc3QgeWVhcnMgPSBbXTtcbiAgZm9yIChsZXQgX3llYXIgPSB5ZWFyIC0gNjsgX3llYXIgPCB5ZWFyICsgNjsgX3llYXIrKykge1xuICAgIHllYXJzLnB1c2goX3llYXIpO1xuICB9XG5cbiAgcmV0dXJuIHllYXJzO1xufTtcblxuY29uc3QgZ2V0TGVhZGluZ0RheXMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBmaXJzdERheU9mV2VlazogbnVtYmVyKSA9PiB7XG4gIC8vIDA6IHN1bmRheVxuICAvLyAxOiBtb25kYXlcbiAgY29uc3QgZGF0ZXMgPSBbXTtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoKTtcbiAgY29uc3QgeSA9IGQuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgbSA9IGQuZ2V0TW9udGgoKTtcbiAgY29uc3QgZmlyc3RXZWVrZGF5ID0gbmV3IERhdGUoeSwgbSwgMSkuZ2V0RGF5KCk7XG4gIGxldCBsZWFkaW5nRGF5cyA9IDYgLSAoNiAtIGZpcnN0V2Vla2RheSkgLSBmaXJzdERheU9mV2VlaztcblxuICBpZiAoZmlyc3REYXlPZldlZWspIHtcbiAgICBsZWFkaW5nRGF5cyA9IGxlYWRpbmdEYXlzIDwgMCA/IDcgKyBsZWFkaW5nRGF5cyA6IGxlYWRpbmdEYXlzO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IGxlYWRpbmdEYXlzICogLTE7IGkgPCAwOyBpKyspIHtcbiAgICBkYXRlcy5wdXNoKHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHksIG0sIGkgKyAxKSwgbW9udGg6ICdwcmV2aW91cydcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBkYXRlcztcbn07XG5cbmNvbnN0IGdldE1vbnRoRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpID0+IHtcbiAgY29uc3QgZGF0ZXMgPSBbXTtcbiAgY29uc3QgbGFzdERheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSBsYXN0RGF5OyBpKyspIHtcbiAgICBkYXRlcy5wdXNoKHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBpKSwgbW9udGg6ICdjdXJyZW50J1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBkYXRlcztcbn07XG5cbmNvbnN0IGdldFRyYWlsaW5nRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGxlYWRpbmdEYXlzOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmcgfVtdLCBtb250aERheXM6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZyB9W10pID0+IHtcbiAgY29uc3QgZGF0ZXMgPSBbXTtcbiAgY29uc3QgZGF5cyA9IDQyIC0gKGxlYWRpbmdEYXlzLmxlbmd0aCArIG1vbnRoRGF5cy5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSBkYXlzOyBpKyspIHtcbiAgICBkYXRlcy5wdXNoKHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgaSksIG1vbnRoOiAnbmV4dCdcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZGF0ZXM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TW9udGhEZXRhaWxzID0gKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZmlyc3REYXlPZldlZWs6IG51bWJlcikgPT4ge1xuICBjb25zdCBkYXlzUHJldk1vbnRoID0gZ2V0TGVhZGluZ0RheXMoeWVhciwgbW9udGgsIGZpcnN0RGF5T2ZXZWVrKTtcbiAgY29uc3QgZGF5c1RoaXNNb250aCA9IGdldE1vbnRoRGF5cyh5ZWFyLCBtb250aCk7XG4gIGNvbnN0IGRheXNOZXh0TW9udGggPSBnZXRUcmFpbGluZ0RheXMoeWVhciwgbW9udGgsIGRheXNQcmV2TW9udGgsIGRheXNUaGlzTW9udGgpO1xuICBjb25zdCBkYXlzID0gWy4uLmRheXNQcmV2TW9udGgsIC4uLmRheXNUaGlzTW9udGgsIC4uLmRheXNOZXh0TW9udGhdO1xuXG4gIGNvbnN0IHdlZWtzOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmcgfVtdW10gPSBbXTtcblxuICBkYXlzLmZvckVhY2goKGRheSwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggJSA3ID09PSAwIHx8IHdlZWtzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgd2Vla3MucHVzaChbXSk7XG4gICAgfVxuICAgIHdlZWtzW3dlZWtzLmxlbmd0aCAtIDFdLnB1c2goZGF5KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHdlZWtzO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRGF0ZURpc2FibGVkID0gKGRhdGU6IERhdGUgfCBudWxsLCBtaW4/OiBEYXRlIHwgbnVsbCwgbWF4PzogRGF0ZSB8IG51bGwsIGRhdGVzPzogRGF0ZVtdIHwgRGF0ZVtdW10pID0+IHtcbiAgaWYgKCFkYXRlKSByZXR1cm47XG4gIGxldCBkaXNhYmxlZDtcbiAgaWYgKGRhdGVzKSB7XG4gICAgZGF0ZXMuZm9yRWFjaCgoX2RhdGU6IERhdGUgfCBEYXRlW10pID0+IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KF9kYXRlKSkge1xuICAgICAgICBpZiAoaXNEYXRlSW5SYW5nZShkYXRlLCBfZGF0ZVswXSwgX2RhdGVbMV0pKSB7XG4gICAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoX2RhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIGlmIChpc1NhbWVEYXRlQXMoZGF0ZSwgX2RhdGUpKSB7XG4gICAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgZGlzYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgZGlzYWJsZWQgPSB0cnVlO1xuICB9XG4gIHJldHVybiBkaXNhYmxlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RhdGVJblJhbmdlID0gKGRhdGU6IERhdGUgfCBudWxsLCBzdGFydDogRGF0ZSB8IG51bGwsIGVuZDogRGF0ZSB8IG51bGwpID0+IHtcbiAgcmV0dXJuIGRhdGUgJiYgc3RhcnQgJiYgZW5kICYmIHN0YXJ0IDw9IGRhdGUgJiYgZGF0ZSA8PSBlbmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEYXRlU2VsZWN0ZWQgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xuICByZXR1cm4gZGF0ZSAmJiAoKHN0YXJ0ICYmIGlzU2FtZURhdGVBcyhzdGFydCwgZGF0ZSkpIHx8IChlbmQgJiYgaXNTYW1lRGF0ZUFzKGVuZCwgZGF0ZSkpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0VuZERhdGUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xuICByZXR1cm4gZGF0ZSAmJiBzdGFydCAmJiBlbmQgJiYgaXNTYW1lRGF0ZUFzKGVuZCwgZGF0ZSkgJiYgc3RhcnQgPCBlbmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNMYXN0RGF5T2ZNb250aCA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIGNvbnN0IHRlc3QgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7XG4gIGNvbnN0IG1vbnRoID0gdGVzdC5nZXRNb250aCgpO1xuXG4gIHRlc3Quc2V0RGF0ZSh0ZXN0LmdldERhdGUoKSArIDEpO1xuICByZXR1cm4gdGVzdC5nZXRNb250aCgpICE9PSBtb250aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NhbWVEYXRlQXMgPSAoZGF0ZTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IHtcbiAgcmV0dXJuIChkYXRlLmdldERhdGUoKSA9PSBkYXRlMi5nZXREYXRlKCkgJiYgZGF0ZS5nZXRNb250aCgpID09IGRhdGUyLmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IGRhdGUyLmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU3RhcnREYXRlID0gKGRhdGU6IERhdGUgfCBudWxsLCBzdGFydDogRGF0ZSB8IG51bGwsIGVuZDogRGF0ZSB8IG51bGwpID0+IHtcbiAgcmV0dXJuIGRhdGUgJiYgc3RhcnQgJiYgZW5kICYmIGlzU2FtZURhdGVBcyhzdGFydCwgZGF0ZSkgJiYgc3RhcnQgPCBlbmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUb2RheSA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgcmV0dXJuIChkYXRlLmdldERhdGUoKSA9PSB0b2RheS5nZXREYXRlKCkgJiYgZGF0ZS5nZXRNb250aCgpID09IHRvZGF5LmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGhpc01vbnRoID0gKGRhdGU6IERhdGUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICByZXR1cm4gKGluZGV4ID09IHRvZGF5LmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGhpc1llYXIgPSAoeWVhcjogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgcmV0dXJuICh5ZWFyID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWREYXRlID0gKGRhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xuICAvLyBjb25zb2xlLmxvZygnaXNWYWxpZERhdGUnLCBkYXRlLCBkLmdldFRpbWUoKSwgISFkLmdldFRpbWUoKSlcbiAgcmV0dXJuICEhZC5nZXRUaW1lKCk7XG59O1xuXG5leHBvcnQgY29uc3QgdHJ5RGF0ZSA9ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSwgcHJvcE5hbWU6IHN0cmluZyA9ICdkYXRlJykgPT4ge1xuICBsZXQgX3ZhbHVlO1xuICB0cnkge1xuICAgIGlmICghaXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IHZhbHVlO1xuICAgIH1cbiAgICBfdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUud2FybihgSW52YWxpZCAke3Byb3BOYW1lfWAsIGVycik7XG4gICAgX3ZhbHVlID0gbmV3IERhdGUoKTtcbiAgICBfdmFsdWUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH1cbiAgcmV0dXJuIF92YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RhdGVJblJhbmdlRGlzYWJsZWQgPSAoc3RhcnREYXRlPzogRGF0ZSB8IG51bGwsIGVuZERhdGU/OiBEYXRlIHwgbnVsbCwgZGF0ZXM/OiBEYXRlW10gfCBEYXRlW11bXSkgPT4ge1xuICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoc3RhcnREYXRlKTtcbiAgICBsZXQgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIHdoaWxlIChkYXRlIDwgZW5kRGF0ZSkge1xuICAgICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgICBpZiAoaXNEYXRlRGlzYWJsZWQoZGF0ZSwgbnVsbCwgbnVsbCwgZGF0ZXMpKSB7XG4gICAgICAgIGRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkaXNhYmxlZDtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBleHBvcnQgY29uc3Qgc3RyaW5nVG9EYXRlQ29udmVydCA9IChkYXRlOiBzdHJpbmcsIGxvY2FsZXM6IHN0cmluZykgPT4ge1xuLy8gICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZnItRlInKTtcbi8vICAgY29uc3QgcGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cygpO1xuLy8gICBjb25zb2xlLmxvZyhkYXRlLCBwYXJ0cywgZm9ybWF0dGVyLmZvcm1hdCgpLCBmb3JtYXR0ZXIucmVzb2x2ZWRPcHRpb25zKCksIGZvcm1hdHRlci5mb3JtYXQoKSk7XG4vLyB9O1xuXG4vLyBkZWNsYXJlIG5hbWVzcGFjZSBJbnRsIHtcbi8vICAgdHlwZSBEYXRlVGltZUZvcm1hdFBhcnRUeXBlcyA9IFwiZGF5XCIgfCBcImRheVBlcmlvZFwiIHwgXCJlcmFcIiB8IFwiZnJhY3Rpb25hbFNlY29uZFwiIHwgXCJob3VyXCIgfCBcImxpdGVyYWxcIiB8IFwibWludXRlXCIgfCBcIm1vbnRoXCIgfCBcInNlY29uZFwiIHwgXCJ0aW1lWm9uZU5hbWVcIiB8IFwid2Vla2RheVwiIHwgXCJ5ZWFyXCI7XG4vL1xuLy8gICBpbnRlcmZhY2UgRGF0ZVRpbWVGb3JtYXRQYXJ0IHtcbi8vICAgICB0eXBlOiBEYXRlVGltZUZvcm1hdFBhcnRUeXBlcztcbi8vICAgICB2YWx1ZTogc3RyaW5nO1xuLy8gICB9XG4vL1xuLy8gICBpbnRlcmZhY2UgRGF0ZVRpbWVGb3JtYXQge1xuLy8gICAgIGZvcm1hdFRvUGFydHMoZGF0ZT86IERhdGUgfCBudW1iZXIpOiBEYXRlVGltZUZvcm1hdFBhcnRbXTtcbi8vICAgfVxuLy8gfVxuXG50eXBlIERhdGVUaW1lRm9ybWF0UGFydFR5cGVzID1cbiAgJ2RheSdcbiAgfCAnZGF5UGVyaW9kJ1xuICB8ICdlcmEnXG4gIHwgJ2ZyYWN0aW9uYWxTZWNvbmQnXG4gIHwgJ2hvdXInXG4gIHwgJ2xpdGVyYWwnXG4gIHwgJ21pbnV0ZSdcbiAgfCAnbW9udGgnXG4gIHwgJ3NlY29uZCdcbiAgfCAndGltZVpvbmVOYW1lJ1xuICB8ICd3ZWVrZGF5J1xuICB8ICd5ZWFyJztcbnR5cGUgRGF0ZUZvcm1hdFBhcnRUeXBlcyA9ICdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJyB8ICdsaXRlcmFsJztcblxuLy8gdHlwZSBEYXRlUGFydHMgPSB7XG4vLyAgIFtrZXkgaW4gRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXNdPzogc3RyaW5nO1xuLy8gfTtcblxuLy8gdHlwZSBEYXRlUGFydHMgPSB7XG4vLyAgIHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5OiBudW1iZXIsIGxpdGVyYWw6IHN0cmluZ1xuLy8gfTtcbi8vXG4vLyBleHBvcnQgY29uc3QgY3Z0RGF0ZSA9IChkYXRlQXNTdHJpbmc6IHN0cmluZywgbG9jYWxlID0gJ3BsLVBMJykgPT4ge1xuLy8gICBjb25zdCBkYXRlU3RyaW5nID0gZGF0ZUFzU3RyaW5nID8/IG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSk7XG4vLyAgIGNvbnN0IGRhdGVTcGxpdCA9IGRhdGVTdHJpbmcuc3BsaXQoL1suXFwtXFwvXFxzXFxEXS9naSkuZmlsdGVyKGl0ZW0gPT4gISFpdGVtLmxlbmd0aCk7XG4vLyAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSk7XG4vLyAgIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMoKS5maWx0ZXIocGFydCA9PiBbJ3llYXInLCAnbW9udGgnLCAnZGF5J10uaW5jbHVkZXMocGFydC50eXBlKSk7XG4vLyAgIGNvbnN0IGRhdGVTaGltID0ge1xuLy8gICAgIGRheTogdW5kZWZpbmVkLCBtb250aDogdW5kZWZpbmVkLCB5ZWFyOiB1bmRlZmluZWRcbi8vICAgfTtcbi8vICAgcGFydHMuZm9yRWFjaCgocGFydCwgaW5kZXgpID0+IHtcbi8vICAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSB7IC4uLnBhcnQgfTtcbi8vICAgICAvLyBAdHMtaWdub3JlXG4vLyAgICAgZGF0ZVNoaW1bdHlwZV0gPSBkYXRlU3BsaXRbaW5kZXhdO1xuLy8gICB9KTtcbi8vXG4vLyAgIHJldHVybiBkYXRlU2hpbTtcbi8vXG4vLyAgIC8vIGNvbnN0IGRhdGVQYXJ0czogRGF0ZVBhcnRzID0ge1xuLy8gICAvLyAgIHllYXI6IDAsXG4vLyAgIC8vICAgbW9udGg6IDAsXG4vLyAgIC8vICAgZGF5OiAwLFxuLy8gICAvLyAgIGxpdGVyYWw6ICcvJ1xuLy8gICAvLyB9O1xuLy8gICAvL1xuLy8gICAvLyBjb25zdCBsaXRlcmFsID0gcGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ2xpdGVyYWwnKT8udmFsdWUgPz8gJy8nO1xuLy8gICAvLyAvLyBjb25zdCB5ZWFyID0gcGFyc2VJbnQocGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ3llYXInKT8udmFsdWUgPz8gJzAnKTtcbi8vICAgLy8gLy8gY29uc3QgbW9udGggPSBwYXJzZUludChwYXJ0cy5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAneWVhcicpPy52YWx1ZSA/PyAnMCcpO1xuLy8gICAvLyAvLyBjb25zdCBkYXkgPSBwYXJzZUludChwYXJ0cy5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAneWVhcicpPy52YWx1ZSA/PyAnMCcpO1xuLy8gICAvL1xuLy8gICAvLyBjb25zdCBkYXRlQXJyYXkgPSBkYXRlU3RyaW5nLnNwbGl0KGxpdGVyYWwpO1xuLy8gICAvL1xuLy8gICAvLyBwYXJ0cy5mb3JFYWNoKHBhcnQgPT4ge1xuLy8gICAvLyAgIGNvbnN0IHt0eXBlLCB2YWx1ZX0gPSB7Li4ucGFydH07XG4vLyAgIC8vICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XG4vLyAgIC8vXG4vLyAgIC8vICAgfVxuLy8gICAvLyB9KVxuLy8gICAvL1xuLy8gICAvLyBwYXJ0cy5maWx0ZXIocGFydCA9PiBwYXJ0LnR5cGUgaW4gZGF0ZVBhcnRzKS5tYXAocGFydCA9PiB7XG4vLyAgIC8vICAgY29uc3Qge3R5cGUsIHZhbHVlfSA9IHsuLi5wYXJ0fTtcbi8vICAgLy8gICAvLyBAdHMtaWdub3JlXG4vLyAgIC8vICAgZGF0ZVBhcnRzW3R5cGVdID0gcGFyc2VJbnQocGFydC52YWx1ZSk7XG4vLyAgIC8vICAgLy9cbi8vICAgLy8gICAvLyBzd2l0Y2ggKHR5cGUpIHtcbi8vICAgLy8gICAvLyAgIGNhc2UgJ2RheSc6XG4vLyAgIC8vICAgLy8gICAgIGRheSA9IHBhcnNlSW50KHZhbHVlKTtcbi8vICAgLy8gICAvLyAgICAgYnJlYWs7XG4vLyAgIC8vICAgLy8gICBjYXNlICdtb250aCc6XG4vLyAgIC8vICAgLy8gICAgIG1vbnRoID0gcGFyc2VJbnQodmFsdWUpO1xuLy8gICAvLyAgIC8vICAgICBicmVhaztcbi8vICAgLy8gICAvLyAgIGNhc2UgJ3llYXInOlxuLy8gICAvLyAgIC8vICAgICB5ZWFyID0gcGFyc2VJbnQodmFsdWUpO1xuLy8gICAvLyAgIC8vICAgICBicmVhaztcbi8vICAgLy8gICAvLyB9XG4vLyAgIC8vIH0pXG4vLyAgIC8vIC8vIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gey4uLmRhdGVQYXJ0c31cbi8vICAgLy8gcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcbi8vIH07XG4vL1xuLy8gLy8gZnVuY3Rpb24gZ2V0RGF0ZVgoZGF0ZUFzU3RyaW5nKSB7XG4vLyAvLyAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IGRhdGVBc1N0cmluZy5zcGxpdCgnLycpO1xuLy8gLy8gICByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpO1xuLy8gLy8gfVxuLy9cbi8vIC8vIGdldERhdGUoJzEyLzA3LzE5OTcnKTtcbiJdfQ==