@coreui/angular-pro 4.3.5 → 4.3.7

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 +608 -600
  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 -527
  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 +25 -25
  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 +245 -245
  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 +77 -77
  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 +164 -164
  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 +75 -75
  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 +490 -463
  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 +131 -131
  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 +15293 -15251
  356. package/fesm2015/coreui-angular-pro.mjs.map +1 -1
  357. package/fesm2020/coreui-angular-pro.mjs +15170 -15130
  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 -230
  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 -137
  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 -183
  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 +54 -54
  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,324 +1,324 @@
1
- import { Component, Input } from '@angular/core';
2
- import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
3
- import { createGroupsInArray, getMonthDetails, getMonthsNames, getYears, isDateDisabled, isDateInRangeDisabled, tryDate } from '../calendar.utils';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../calendar.service";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "./calendar-day.directive";
8
- import * as i4 from "./calendar-class-year.pipe";
9
- import * as i5 from "./calendar-class-day.pipe";
10
- import * as i6 from "./calendar-class-month.pipe";
11
- import * as i7 from "./calendar-day.pipe";
12
- import * as i8 from "./calendar-weekday.pipe";
13
- import * as i9 from "./calendar-day-title.pipe";
14
- export class CalendarMonthComponent {
15
- constructor(calendarService) {
16
- this.calendarService = calendarService;
17
- this.addMonths = 0;
18
- this._startDate = null;
19
- this._endDate = null;
20
- this._disabledDates = [];
21
- this._firstDayOfWeek = 1;
22
- this._locale = 'default';
23
- this._range = false;
24
- /**
25
- * Set length or format of day name.
26
- * @type number | 'long' | 'narrow' | 'short'
27
- * @default 'short'
28
- */
29
- this.weekdayFormat = 'short';
30
- this._view = 'days';
31
- this._maxDate = null;
32
- this._minDate = null;
33
- this.listOfMonths = createGroupsInArray(getMonthsNames(this.locale), 4);
34
- this.listOfYears = createGroupsInArray(getYears(this.date.getFullYear()), 4);
35
- this._calendarDate = new Date();
36
- this.calendarStateSubscribe();
37
- }
38
- /**
39
- * Initial selected date.
40
- * @type (Date | null)
41
- */
42
- set startDate(value) {
43
- this._startDate = !!value ? tryDate(value, 'startDate') : null;
44
- this.calendarService.update({ startDate: this._startDate });
45
- }
46
- get startDate() {
47
- return this._startDate;
48
- }
49
- /**
50
- * Initial selected to date (range).
51
- * @type (Date | null)
52
- */
53
- set endDate(value) {
54
- this._endDate = !!value ? tryDate(value, 'endDate') : null;
55
- this.calendarService.update({ endDate: this._endDate });
56
- }
57
- get endDate() {
58
- return this._endDate;
59
- }
60
- /**
61
- * Specify the list of dates that cannot be selected.
62
- * @type (Date[] | Date[][])
63
- */
64
- set disabledDates(value) {
65
- this._disabledDates = value;
66
- }
67
- get disabledDates() {
68
- return this._disabledDates;
69
- }
70
- /**
71
- * Sets the day of start week.
72
- * - 0 - Sunday,
73
- * - 1 - Monday,
74
- * - 2 - Tuesday,
75
- * - 3 - Wednesday,
76
- * - 4 - Thursday,
77
- * - 5 - Friday,
78
- * - 6 - Saturday,
79
- */
80
- set firstDayOfWeek(value) {
81
- this._firstDayOfWeek = coerceNumberProperty(value);
82
- }
83
- get firstDayOfWeek() {
84
- return this._firstDayOfWeek;
85
- }
86
- /**
87
- * Sets the default locale for components. If not set, it is inherited from the browser.
88
- * @default 'default'
89
- */
90
- set locale(value) {
91
- this._locale = value;
92
- this.listOfMonths = createGroupsInArray(getMonthsNames(value), 4);
93
- }
94
- get locale() {
95
- return this._locale;
96
- }
97
- /**
98
- * Allow range selection.
99
- */
100
- set range(value) {
101
- this._range = coerceBooleanProperty(value);
102
- }
103
- get range() {
104
- return this._range;
105
- }
106
- /**
107
- * Set calendar view.
108
- * @type 'days' | 'months' | 'years'
109
- * @default 'days'
110
- */
111
- set view(value) {
112
- this._view = value;
113
- this.listOfYears = createGroupsInArray(getYears(this.date.getFullYear()), 4);
114
- }
115
- get view() {
116
- return this._view;
117
- }
118
- /**
119
- * Max selectable date.
120
- */
121
- set maxDate(value) {
122
- this._maxDate = value ? tryDate(value, 'maxDate') : null;
123
- }
124
- get maxDate() {
125
- return this._maxDate;
126
- }
127
- /**
128
- * Min selectable date.
129
- */
130
- set minDate(value) {
131
- this._minDate = value ? tryDate(value, 'minDate') : null;
132
- }
133
- get minDate() {
134
- return this._minDate;
135
- }
136
- /**
137
- * Default date of the component
138
- * @type Date
139
- */
140
- set calendarDate(value) {
141
- const _value = new Date(tryDate((value ?? this.startDate), 'calendarDate'));
142
- if (!!_value && this._calendarDate.getTime() !== _value.getTime()) {
143
- this.listOfYears = createGroupsInArray(getYears(_value.getFullYear()), 4);
144
- const _calendarDate = new Date(new Date(_value.setDate(1)).setHours(0, 0, 0, 0));
145
- this._calendarDate = _calendarDate;
146
- this.setMonthDetails(this.date);
147
- this.calendarService.update({ calendarDate: _calendarDate });
148
- }
149
- }
150
- get calendarDate() {
151
- return this._calendarDate;
152
- }
153
- get date() {
154
- return new Date(this.calendarDate?.getFullYear(), this.calendarDate?.getMonth() + this.addMonths);
155
- }
156
- get monthDetails() {
157
- return this._monthDetails;
158
- }
159
- get weekDays() {
160
- return this.monthDetails[0];
161
- }
162
- ngOnInit() {
163
- this.listOfMonths = createGroupsInArray(getMonthsNames(this.locale), 4);
164
- this.setMonthDetails(this.date);
165
- }
166
- setMonthDetails(date = this.date) {
167
- this._monthDetails = getMonthDetails(date.getFullYear(), date.getMonth(), this.firstDayOfWeek);
168
- }
169
- yearNumber(year) {
170
- return new Date(year, 0).toLocaleDateString(this.locale, { year: 'numeric' });
171
- }
172
- isDateDisabled(date) {
173
- // @ts-ignore
174
- return isDateDisabled(date, this.minDate, this.maxDate, this.disabledDates) || (this.dateFilter ? !this.dateFilter(date) : false);
175
- }
176
- calendarCellTitle(date) {
177
- return date.toLocaleDateString(this.locale);
178
- }
179
- handleCellMouseEnter(hoverDate) {
180
- const hoverValue = this.isDateDisabled(hoverDate) ? null : hoverDate;
181
- this.calendarService.update({ hoverDate: hoverValue });
182
- }
183
- handleYearCellClick(year) {
184
- const calendarDate = new Date(year, this.calendarDate.getMonth(), 1, 0, 0, 0, 0);
185
- this.view = 'months';
186
- this.calendarService.update({ view: this.view, calendarDate: calendarDate });
187
- }
188
- handleYearCellKeyUp($event, year) {
189
- if ($event.key === 'Enter') {
190
- this.handleYearCellClick(year);
191
- return;
192
- }
193
- }
194
- handleMonthCellKeyUp($event, i, idx) {
195
- if ($event.key === 'Enter') {
196
- this.handleMonthCellClick(i, idx);
197
- return;
198
- }
199
- }
200
- handleMonthCellClick(i, idx) {
201
- this.setCalendarPage(0, 0, i * 3 + idx - this.addMonths);
202
- this.view = 'days';
203
- this.calendarService.update({ view: this.view });
204
- }
205
- setCalendarPage(years, months = 0, setMonth) {
206
- const year = this.date.getFullYear();
207
- const month = this.date.getMonth();
208
- const d = new Date(year, month, 1, 0, 0, 0, 0);
209
- years && d.setFullYear(d.getFullYear() + years);
210
- months && d.setMonth(d.getMonth() + months);
211
- typeof setMonth === 'number' && d.setMonth(setMonth);
212
- this.calendarService.update({ calendarDate: d });
213
- }
214
- handleCellMouseLeave() {
215
- this.calendarService.update({ hoverDate: null });
216
- }
217
- handleDayCellKeyUp($event, date) {
218
- if ($event.key === 'Enter') {
219
- this.handleDayCellClick(date);
220
- return;
221
- }
222
- if ($event.key === 'Tab') {
223
- this.handleCellMouseEnter(date);
224
- return;
225
- }
226
- }
227
- handleDayCellClick(date) {
228
- if (this.isDateDisabled(date)) {
229
- return;
230
- }
231
- if (!this.range) {
232
- this.endDate = null;
233
- this.startDate = date;
234
- return;
235
- }
236
- if (this.startDate && this.endDate) {
237
- const calendarDate = new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0, 0);
238
- this.calendarDate = calendarDate;
239
- this.endDate = null;
240
- this.startDate = null;
241
- return;
242
- }
243
- if (!!this.startDate && !this.endDate) {
244
- if (this.startDate && date < this.startDate) {
245
- this.endDate = null;
246
- this.startDate = date;
247
- }
248
- else {
249
- this.endDate = date;
250
- }
251
- }
252
- else {
253
- this.endDate = null;
254
- this.startDate = date;
255
- }
256
- if (this.startDate && this.endDate) {
257
- // @ts-ignore
258
- if (isDateInRangeDisabled(this.startDate, this.endDate, this.disabledDates)) {
259
- this.startDate = null;
260
- this.endDate = null;
261
- return;
262
- }
263
- // let date = new Date(this.startDate);
264
- // while (date < this.endDate) {
265
- // date.setDate(date.getDate() + 1);
266
- // if (this.isDateDisabled(date)) {
267
- // this.startDate = null;
268
- // this.endDate = null;
269
- // break;
270
- // }
271
- // }
272
- }
273
- }
274
- calendarStateSubscribe(subscribe = true) {
275
- if (subscribe) {
276
- this.calendarStateSubscription =
277
- this.calendarService.calendarState$.subscribe(state => {
278
- const keys = Object.keys(state);
279
- for (const key of keys) {
280
- // if (key in this) {
281
- // @ts-ignore
282
- this[key] = state[key];
283
- // }
284
- }
285
- });
286
- return;
287
- }
288
- this.calendarStateSubscription?.unsubscribe();
289
- }
290
- ngOnDestroy() {
291
- this.calendarStateSubscribe(false);
292
- }
293
- }
294
- CalendarMonthComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CalendarMonthComponent, deps: [{ token: i1.CalendarService }], target: i0.ɵɵFactoryTarget.Component });
295
- CalendarMonthComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CalendarMonthComponent, selector: "c-calendar-month", inputs: { addMonths: "addMonths", startDate: "startDate", endDate: "endDate", disabledDates: "disabledDates", firstDayOfWeek: "firstDayOfWeek", locale: "locale", range: "range", weekdayFormat: "weekdayFormat", view: "view", maxDate: "maxDate", minDate: "minDate", calendarDate: "calendarDate" }, exportAs: ["cCalendarMonth"], ngImport: i0, template: "<table>\r\n <thead *ngIf=\"view === 'days'\">\r\n <tr>\r\n <th *ngFor=\"let weekDay of weekDays; index as i; count as cnt\" class=\"calendar-cell\">\r\n <div class=\"calendar-header-cell-inner\">\r\n {{ weekDay.date | calendarWeekday:weekdayFormat:locale }}\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody (mouseleave)=\"handleCellMouseLeave()\" [ngSwitch]=\"view\">\r\n <ng-container *ngSwitchCase=\"'years'\">\r\n <tr *ngFor=\"let yearsRow of listOfYears; index as rowIdx\">\r\n <td\r\n (click)=\"handleYearCellClick(year)\"\r\n (keyup)=\"handleYearCellKeyUp($event, year)\"\r\n *ngFor=\"let year of yearsRow; index as idx\"\r\n [ngClass]=\"year | calendarClassYear\"\r\n [tabindex]=\"0\"\r\n >\r\n <div class=\"calendar-cell-inner\">\r\n {{ yearNumber(year) }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'months'\">\r\n <tr *ngFor=\"let monthsRow of listOfMonths; index as rowIdx\">\r\n <td\r\n (click)=\"handleMonthCellClick(rowIdx, idx)\"\r\n (keyup)=\"handleMonthCellKeyUp($event, rowIdx, idx)\"\r\n *ngFor=\"let month of monthsRow; index as idx\"\r\n [ngClass]=\"calendarDate | calendarClassMonth:(rowIdx*3+idx)\"\r\n [tabindex]=\"0\"\r\n >\r\n <div class=\"calendar-cell-inner\">\r\n {{ month }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <tr *ngFor=\"let week of monthDetails; index as i\">\r\n <td\r\n (click)=\"dateObj.month === 'current' && handleDayCellClick(dateObj.date)\"\r\n (keyup)=\"dateObj.month === 'current' && handleDayCellKeyUp($event, dateObj.date)\"\r\n (mouseenter)=\"dateObj.month === 'current' && handleCellMouseEnter(dateObj.date)\"\r\n *ngFor=\"let dateObj of week; index as idx\"\r\n [cCalendarDay]=\"dateObj\"\r\n [ngClass]=\"dateObj | calendarClassDay:{minDate, maxDate, disabledDates, dateFilter}\"\r\n [tabindex]=\"isDateDisabled(dateObj.date) || dateObj.month !== 'current' ? -1 : 0\"\r\n [title]=\"dateObj.date | calendarDayTitle:locale\"\r\n >\r\n <div class=\"calendar-cell-inner\">\r\n {{ dateObj.date | calendarDay:dayFormat:locale }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n</table>\r\n\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.CalendarDayDirective, selector: "[cCalendarDay]", inputs: ["cCalendarDay"] }, { kind: "pipe", type: i4.CalendarClassYearPipe, name: "calendarClassYear" }, { kind: "pipe", type: i5.CalendarClassDayPipe, name: "calendarClassDay" }, { kind: "pipe", type: i6.CalendarClassMonthPipe, name: "calendarClassMonth" }, { kind: "pipe", type: i7.CalendarDayPipe, name: "calendarDay" }, { kind: "pipe", type: i8.CalendarWeekdayPipe, name: "calendarWeekday" }, { kind: "pipe", type: i9.CalendarDayTitlePipe, name: "calendarDayTitle" }] });
296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CalendarMonthComponent, decorators: [{
297
- type: Component,
298
- args: [{ selector: 'c-calendar-month', exportAs: 'cCalendarMonth', template: "<table>\r\n <thead *ngIf=\"view === 'days'\">\r\n <tr>\r\n <th *ngFor=\"let weekDay of weekDays; index as i; count as cnt\" class=\"calendar-cell\">\r\n <div class=\"calendar-header-cell-inner\">\r\n {{ weekDay.date | calendarWeekday:weekdayFormat:locale }}\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody (mouseleave)=\"handleCellMouseLeave()\" [ngSwitch]=\"view\">\r\n <ng-container *ngSwitchCase=\"'years'\">\r\n <tr *ngFor=\"let yearsRow of listOfYears; index as rowIdx\">\r\n <td\r\n (click)=\"handleYearCellClick(year)\"\r\n (keyup)=\"handleYearCellKeyUp($event, year)\"\r\n *ngFor=\"let year of yearsRow; index as idx\"\r\n [ngClass]=\"year | calendarClassYear\"\r\n [tabindex]=\"0\"\r\n >\r\n <div class=\"calendar-cell-inner\">\r\n {{ yearNumber(year) }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'months'\">\r\n <tr *ngFor=\"let monthsRow of listOfMonths; index as rowIdx\">\r\n <td\r\n (click)=\"handleMonthCellClick(rowIdx, idx)\"\r\n (keyup)=\"handleMonthCellKeyUp($event, rowIdx, idx)\"\r\n *ngFor=\"let month of monthsRow; index as idx\"\r\n [ngClass]=\"calendarDate | calendarClassMonth:(rowIdx*3+idx)\"\r\n [tabindex]=\"0\"\r\n >\r\n <div class=\"calendar-cell-inner\">\r\n {{ month }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <tr *ngFor=\"let week of monthDetails; index as i\">\r\n <td\r\n (click)=\"dateObj.month === 'current' && handleDayCellClick(dateObj.date)\"\r\n (keyup)=\"dateObj.month === 'current' && handleDayCellKeyUp($event, dateObj.date)\"\r\n (mouseenter)=\"dateObj.month === 'current' && handleCellMouseEnter(dateObj.date)\"\r\n *ngFor=\"let dateObj of week; index as idx\"\r\n [cCalendarDay]=\"dateObj\"\r\n [ngClass]=\"dateObj | calendarClassDay:{minDate, maxDate, disabledDates, dateFilter}\"\r\n [tabindex]=\"isDateDisabled(dateObj.date) || dateObj.month !== 'current' ? -1 : 0\"\r\n [title]=\"dateObj.date | calendarDayTitle:locale\"\r\n >\r\n <div class=\"calendar-cell-inner\">\r\n {{ dateObj.date | calendarDay:dayFormat:locale }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n</table>\r\n\r\n" }]
299
- }], ctorParameters: function () { return [{ type: i1.CalendarService }]; }, propDecorators: { addMonths: [{
300
- type: Input
301
- }], startDate: [{
302
- type: Input
303
- }], endDate: [{
304
- type: Input
305
- }], disabledDates: [{
306
- type: Input
307
- }], firstDayOfWeek: [{
308
- type: Input
309
- }], locale: [{
310
- type: Input
311
- }], range: [{
312
- type: Input
313
- }], weekdayFormat: [{
314
- type: Input
315
- }], view: [{
316
- type: Input
317
- }], maxDate: [{
318
- type: Input
319
- }], minDate: [{
320
- type: Input
321
- }], calendarDate: [{
322
- type: Input
323
- }] } });
324
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdwRixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixjQUFjLEVBQ2QsUUFBUSxFQUNSLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsT0FBTyxFQUNSLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7O0FBVTNCLE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsWUFDVSxlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFLakMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQWdCL0IsZUFBVSxHQUFnQixJQUFJLENBQUM7UUFnQi9CLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBZXZCLG1CQUFjLEdBQXdCLEVBQUUsQ0FBQztRQXFCekMsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFnQjVCLFlBQU8sR0FBVyxTQUFTLENBQUM7UUFjNUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUVoQzs7OztXQUlHO1FBQ00sa0JBQWEsR0FBc0IsT0FBTyxDQUFDO1FBaUI1QyxVQUFLLEdBQWdDLE1BQU0sQ0FBQztRQWM1QyxhQUFRLEdBQWdCLElBQUksQ0FBQztRQWM3Qixh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aXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBjcmVhdGVHcm91cHNJbkFycmF5LFxyXG4gIGdldE1vbnRoRGV0YWlscyxcclxuICBnZXRNb250aHNOYW1lcyxcclxuICBnZXRZZWFycyxcclxuICBpc0RhdGVEaXNhYmxlZCxcclxuICBpc0RhdGVJblJhbmdlRGlzYWJsZWQsXHJcbiAgdHJ5RGF0ZVxyXG59IGZyb20gJy4uL2NhbGVuZGFyLnV0aWxzJztcclxuXHJcbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSwgRGF0ZUZpbHRlclR5cGUsIERheUZvcm1hdFR5cGUsIFdlZWtkYXlGb3JtYXRUeXBlIH0gZnJvbSAnLi4vY2FsZW5kYXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2MtY2FsZW5kYXItbW9udGgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1tb250aC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItbW9udGguY29tcG9uZW50LnNjc3MnXSxcclxuICBleHBvcnRBczogJ2NDYWxlbmRhck1vbnRoJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJNb250aENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGFkZE1vbnRoczogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbCBzZWxlY3RlZCBkYXRlLlxyXG4gICAqIEB0eXBlICAoRGF0ZSB8IG51bGwpXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgc3RhcnREYXRlKHZhbHVlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fc3RhcnREYXRlID0gISF2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdzdGFydERhdGUnKSA6IG51bGw7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBzdGFydERhdGU6IHRoaXMuX3N0YXJ0RGF0ZSB9KTtcclxuICB9XHJcblxyXG4gIGdldCBzdGFydERhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhcnREYXRlO1xyXG4gIH1cclxuXHJcbiAgX3N0YXJ0RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsIHNlbGVjdGVkIHRvIGRhdGUgKHJhbmdlKS5cclxuICAgKiBAdHlwZSAgKERhdGUgfCBudWxsKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGVuZERhdGUodmFsdWU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9lbmREYXRlID0gISF2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdlbmREYXRlJykgOiBudWxsO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgZW5kRGF0ZTogdGhpcy5fZW5kRGF0ZSB9KTtcclxuICB9XHJcblxyXG4gIGdldCBlbmREYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuZERhdGU7XHJcbiAgfVxyXG5cclxuICBfZW5kRGF0ZTogKERhdGUgfCBudWxsKSA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNwZWNpZnkgdGhlIGxpc3Qgb2YgZGF0ZXMgdGhhdCBjYW5ub3QgYmUgc2VsZWN0ZWQuXHJcbiAgICogQHR5cGUgIChEYXRlW10gfCBEYXRlW11bXSlcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBkaXNhYmxlZERhdGVzKHZhbHVlOiBEYXRlW10gfCBEYXRlW11bXSkge1xyXG4gICAgdGhpcy5fZGlzYWJsZWREYXRlcyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVkRGF0ZXMoKTogRGF0ZVtdIHwgRGF0ZVtdW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkRGF0ZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kaXNhYmxlZERhdGVzOiAoRGF0ZVtdIHwgRGF0ZVtdW10pID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRheSBvZiBzdGFydCB3ZWVrLlxyXG4gICAqIC0gMCAtIFN1bmRheSxcclxuICAgKiAtIDEgLSBNb25kYXksXHJcbiAgICogLSAyIC0gVHVlc2RheSxcclxuICAgKiAtIDMgLSBXZWRuZXNkYXksXHJcbiAgICogLSA0IC0gVGh1cnNkYXksXHJcbiAgICogLSA1IC0gRnJpZGF5LFxyXG4gICAqIC0gNiAtIFNhdHVyZGF5LFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGZpcnN0RGF5T2ZXZWVrKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlyc3REYXlPZldlZWs7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maXJzdERheU9mV2VlazogbnVtYmVyID0gMTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBsb2NhbGUgZm9yIGNvbXBvbmVudHMuIElmIG5vdCBzZXQsIGl0IGlzIGluaGVyaXRlZCBmcm9tIHRoZSBicm93c2VyLlxyXG4gICAqIEBkZWZhdWx0ICdkZWZhdWx0J1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxvY2FsZSh2YWx1ZSkge1xyXG4gICAgdGhpcy5fbG9jYWxlID0gdmFsdWU7XHJcbiAgICB0aGlzLmxpc3RPZk1vbnRocyA9IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0TW9udGhzTmFtZXModmFsdWUpLCA0KTtcclxuICB9XHJcblxyXG4gIGdldCBsb2NhbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93IHJhbmdlIHNlbGVjdGlvbi5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCByYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGxlbmd0aCBvciBmb3JtYXQgb2YgZGF5IG5hbWUuXHJcbiAgICogQHR5cGUgbnVtYmVyIHwgJ2xvbmcnIHwgJ25hcnJvdycgfCAnc2hvcnQnXHJcbiAgICogQGRlZmF1bHQgJ3Nob3J0J1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHdlZWtkYXlGb3JtYXQ6IFdlZWtkYXlGb3JtYXRUeXBlID0gJ3Nob3J0JztcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGNhbGVuZGFyIHZpZXcuXHJcbiAgICogQHR5cGUgJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnXHJcbiAgICogQGRlZmF1bHQgJ2RheXMnXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgdmlldyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fdmlldyA9IHZhbHVlO1xyXG4gICAgdGhpcy5saXN0T2ZZZWFycyA9IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0WWVhcnModGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkpLCA0KTtcclxuICB9XHJcblxyXG4gIGdldCB2aWV3KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZpZXc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF92aWV3OiAnZGF5cycgfCAnbW9udGhzJyB8ICd5ZWFycycgPSAnZGF5cyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCBzZWxlY3RhYmxlIGRhdGUuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgbWF4RGF0ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcclxuICAgIHRoaXMuX21heERhdGUgPSB2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdtYXhEYXRlJykgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heERhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX21heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogTWluIHNlbGVjdGFibGUgZGF0ZS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBtaW5EYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fbWluRGF0ZSA9IHZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ21pbkRhdGUnKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXQgbWluRGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBsaXN0T2ZNb250aHMgPSBjcmVhdGVHcm91cHNJbkFycmF5KGdldE1vbnRoc05hbWVzKHRoaXMubG9jYWxlKSwgNCk7XHJcbiAgbGlzdE9mWWVhcnMgPSBjcmVhdGVHcm91cHNJbkFycmF5KGdldFllYXJzKHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpKSwgNCk7XHJcbiAgcHJpdmF0ZSBjYWxlbmRhclN0YXRlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBEZWZhdWx0IGRhdGUgb2YgdGhlIGNvbXBvbmVudFxyXG4gICAqIEB0eXBlIERhdGVcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBjYWxlbmRhckRhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgIGNvbnN0IF92YWx1ZSA9IG5ldyBEYXRlKHRyeURhdGUoKHZhbHVlID8/IHRoaXMuc3RhcnREYXRlKSwgJ2NhbGVuZGFyRGF0ZScpKTtcclxuICAgIGlmICghIV92YWx1ZSAmJiB0aGlzLl9jYWxlbmRhckRhdGUuZ2V0VGltZSgpICE9PSBfdmFsdWUuZ2V0VGltZSgpKSB7XHJcbiAgICAgIHRoaXMubGlzdE9mWWVhcnMgPSBjcmVhdGVHcm91cHNJbkFycmF5KGdldFllYXJzKF92YWx1ZS5nZXRGdWxsWWVhcigpKSwgNCk7XHJcbiAgICAgIGNvbnN0IF9jYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZShfdmFsdWUuc2V0RGF0ZSgxKSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xyXG4gICAgICB0aGlzLl9jYWxlbmRhckRhdGUgPSBfY2FsZW5kYXJEYXRlO1xyXG4gICAgICB0aGlzLnNldE1vbnRoRGV0YWlscyh0aGlzLmRhdGUpO1xyXG4gICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBjYWxlbmRhckRhdGU6IF9jYWxlbmRhckRhdGUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY2FsZW5kYXJEYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyRGF0ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NhbGVuZGFyRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gIGRhdGVGaWx0ZXIhOiBEYXRlRmlsdGVyVHlwZTtcclxuXHJcbiAgZ2V0IGRhdGUoKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jYWxlbmRhckRhdGU/LmdldEZ1bGxZZWFyKCksIHRoaXMuY2FsZW5kYXJEYXRlPy5nZXRNb250aCgpICsgdGhpcy5hZGRNb250aHMpO1xyXG4gIH1cclxuXHJcbiAgZGF5Rm9ybWF0ITogRGF5Rm9ybWF0VHlwZTtcclxuXHJcbiAgcHJpdmF0ZSBfbW9udGhEZXRhaWxzITogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nOyB9W11bXTtcclxuXHJcbiAgZ2V0IG1vbnRoRGV0YWlscygpOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmc7IH1bXVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9tb250aERldGFpbHM7XHJcbiAgfVxyXG5cclxuICBnZXQgd2Vla0RheXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tb250aERldGFpbHNbMF07XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGlzdE9mTW9udGhzID0gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRNb250aHNOYW1lcyh0aGlzLmxvY2FsZSksIDQpO1xyXG4gICAgdGhpcy5zZXRNb250aERldGFpbHModGhpcy5kYXRlKTtcclxuICB9XHJcblxyXG4gIHNldE1vbnRoRGV0YWlscyhkYXRlOiBEYXRlID0gdGhpcy5kYXRlKSB7XHJcbiAgICB0aGlzLl9tb250aERldGFpbHMgPSBnZXRNb250aERldGFpbHMoXHJcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICB0aGlzLmZpcnN0RGF5T2ZXZWVrXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgeWVhck51bWJlcih5ZWFyOiBhbnkpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCAwKS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xyXG4gIH1cclxuXHJcbiAgaXNEYXRlRGlzYWJsZWQoZGF0ZTogRGF0ZSkge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcmV0dXJuIGlzRGF0ZURpc2FibGVkKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpIHx8ICh0aGlzLmRhdGVGaWx0ZXIgPyAhdGhpcy5kYXRlRmlsdGVyKGRhdGUpIDogZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgY2FsZW5kYXJDZWxsVGl0bGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNlbGxNb3VzZUVudGVyKGhvdmVyRGF0ZTogRGF0ZSkge1xyXG4gICAgY29uc3QgaG92ZXJWYWx1ZSA9IHRoaXMuaXNEYXRlRGlzYWJsZWQoaG92ZXJEYXRlKSA/IG51bGwgOiBob3ZlckRhdGU7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBob3ZlckRhdGU6IGhvdmVyVmFsdWUgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVZZWFyQ2VsbENsaWNrKHllYXI6IGFueSkge1xyXG4gICAgY29uc3QgY2FsZW5kYXJEYXRlID0gbmV3IERhdGUoeWVhciwgdGhpcy5jYWxlbmRhckRhdGUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCwgMCk7XHJcbiAgICB0aGlzLnZpZXcgPSAnbW9udGhzJztcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHZpZXc6IHRoaXMudmlldywgY2FsZW5kYXJEYXRlOiBjYWxlbmRhckRhdGUgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVZZWFyQ2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgeWVhcjogYW55KSB7XHJcbiAgICBpZiAoJGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLmhhbmRsZVllYXJDZWxsQ2xpY2soeWVhcik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoQ2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgaTogbnVtYmVyLCBpZHg6IG51bWJlcikge1xyXG4gICAgaWYgKCRldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5oYW5kbGVNb250aENlbGxDbGljayhpLCBpZHgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVNb250aENlbGxDbGljayhpOiBudW1iZXIsIGlkeDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNldENhbGVuZGFyUGFnZSgwLCAwLCBpICogMyArIGlkeCAtIHRoaXMuYWRkTW9udGhzKTtcclxuICAgIHRoaXMudmlldyA9ICdkYXlzJztcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHZpZXc6IHRoaXMudmlldyB9KTtcclxuICB9XHJcblxyXG4gIHNldENhbGVuZGFyUGFnZSh5ZWFyczogbnVtYmVyLCBtb250aHMgPSAwLCBzZXRNb250aD86IG51bWJlcikge1xyXG4gICAgY29uc3QgeWVhciA9IHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbW9udGggPSB0aGlzLmRhdGUuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSwgMCwgMCwgMCwgMCk7XHJcblxyXG4gICAgeWVhcnMgJiYgZC5zZXRGdWxsWWVhcihkLmdldEZ1bGxZZWFyKCkgKyB5ZWFycyk7XHJcbiAgICBtb250aHMgJiYgZC5zZXRNb250aChkLmdldE1vbnRoKCkgKyBtb250aHMpO1xyXG4gICAgdHlwZW9mIHNldE1vbnRoID09PSAnbnVtYmVyJyAmJiBkLnNldE1vbnRoKHNldE1vbnRoKTtcclxuXHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBjYWxlbmRhckRhdGU6IGQgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDZWxsTW91c2VMZWF2ZSgpIHtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGhvdmVyRGF0ZTogbnVsbCB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZURheUNlbGxLZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUpIHtcclxuICAgIGlmICgkZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoJGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcclxuICAgICAgdGhpcy5oYW5kbGVDZWxsTW91c2VFbnRlcihkYXRlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGU6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLmlzRGF0ZURpc2FibGVkKGRhdGUpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMucmFuZ2UpIHtcclxuICAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcclxuICAgICAgdGhpcy5zdGFydERhdGUgPSBkYXRlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSkge1xyXG4gICAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCwgMCk7XHJcbiAgICAgIHRoaXMuY2FsZW5kYXJEYXRlID0gY2FsZW5kYXJEYXRlO1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISF0aGlzLnN0YXJ0RGF0ZSAmJiAhdGhpcy5lbmREYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiBkYXRlIDwgdGhpcy5zdGFydERhdGUpIHtcclxuICAgICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmVuZERhdGUgPSBkYXRlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IGRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSkge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIGlmIChpc0RhdGVJblJhbmdlRGlzYWJsZWQodGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZSwgdGhpcy5kaXNhYmxlZERhdGVzKSkge1xyXG4gICAgICAgIHRoaXMuc3RhcnREYXRlID0gbnVsbDtcclxuICAgICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gbGV0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZSk7XHJcbiAgICAgIC8vIHdoaWxlIChkYXRlIDwgdGhpcy5lbmREYXRlKSB7XHJcbiAgICAgIC8vICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XHJcbiAgICAgIC8vICAgaWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHtcclxuICAgICAgLy8gICAgIHRoaXMuc3RhcnREYXRlID0gbnVsbDtcclxuICAgICAgLy8gICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XHJcbiAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoc3Vic2NyaWJlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKHN1YnNjcmliZSkge1xyXG4gICAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpcHRpb24gPVxyXG4gICAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyU3RhdGUkLnN1YnNjcmliZShzdGF0ZSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc3RhdGUpO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICAvLyBpZiAoa2V5IGluIHRoaXMpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBzdGF0ZVtrZXldO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuY2FsZW5kYXJTdGF0ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKGZhbHNlKTtcclxuICB9XHJcbn1cclxuIiwiPHRhYmxlPlxyXG4gIDx0aGVhZCAqbmdJZj1cInZpZXcgPT09ICdkYXlzJ1wiPlxyXG4gIDx0cj5cclxuICAgIDx0aCAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5czsgaW5kZXggYXMgaTsgY291bnQgYXMgY250XCIgY2xhc3M9XCJjYWxlbmRhci1jZWxsXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXItY2VsbC1pbm5lclwiPlxyXG4gICAgICAgIHt7IHdlZWtEYXkuZGF0ZSB8IGNhbGVuZGFyV2Vla2RheTp3ZWVrZGF5Rm9ybWF0OmxvY2FsZSB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGg+XHJcbiAgPC90cj5cclxuICA8L3RoZWFkPlxyXG4gIDx0Ym9keSAobW91c2VsZWF2ZSk9XCJoYW5kbGVDZWxsTW91c2VMZWF2ZSgpXCIgW25nU3dpdGNoXT1cInZpZXdcIj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIneWVhcnMnXCI+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHllYXJzUm93IG9mIGxpc3RPZlllYXJzOyBpbmRleCBhcyByb3dJZHhcIj5cclxuICAgICAgPHRkXHJcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZVllYXJDZWxsQ2xpY2soeWVhcilcIlxyXG4gICAgICAgIChrZXl1cCk9XCJoYW5kbGVZZWFyQ2VsbEtleVVwKCRldmVudCwgeWVhcilcIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCB5ZWFyIG9mIHllYXJzUm93OyBpbmRleCBhcyBpZHhcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInllYXIgfCBjYWxlbmRhckNsYXNzWWVhclwiXHJcbiAgICAgICAgW3RhYmluZGV4XT1cIjBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cclxuICAgICAgICAgIHt7IHllYXJOdW1iZXIoeWVhcikgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvdHI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRocydcIj5cclxuICAgIDx0ciAqbmdGb3I9XCJsZXQgbW9udGhzUm93IG9mIGxpc3RPZk1vbnRoczsgaW5kZXggYXMgcm93SWR4XCI+XHJcbiAgICAgIDx0ZFxyXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVNb250aENlbGxDbGljayhyb3dJZHgsIGlkeClcIlxyXG4gICAgICAgIChrZXl1cCk9XCJoYW5kbGVNb250aENlbGxLZXlVcCgkZXZlbnQsIHJvd0lkeCwgaWR4KVwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoc1JvdzsgaW5kZXggYXMgaWR4XCJcclxuICAgICAgICBbbmdDbGFzc109XCJjYWxlbmRhckRhdGUgfCBjYWxlbmRhckNsYXNzTW9udGg6KHJvd0lkeCozK2lkeClcIlxyXG4gICAgICAgIFt0YWJpbmRleF09XCIwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsLWlubmVyXCI+XHJcbiAgICAgICAgICB7eyBtb250aCB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3RkPlxyXG4gICAgPC90cj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHdlZWsgb2YgbW9udGhEZXRhaWxzOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgIDx0ZFxyXG4gICAgICAgIChjbGljayk9XCJkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCcgJiYgaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGVPYmouZGF0ZSlcIlxyXG4gICAgICAgIChrZXl1cCk9XCJkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCcgJiYgaGFuZGxlRGF5Q2VsbEtleVVwKCRldmVudCwgZGF0ZU9iai5kYXRlKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwiZGF0ZU9iai5tb250aCA9PT0gJ2N1cnJlbnQnICYmIGhhbmRsZUNlbGxNb3VzZUVudGVyKGRhdGVPYmouZGF0ZSlcIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXRlT2JqIG9mIHdlZWs7IGluZGV4IGFzIGlkeFwiXHJcbiAgICAgICAgW2NDYWxlbmRhckRheV09XCJkYXRlT2JqXCJcclxuICAgICAgICBbbmdDbGFzc109XCJkYXRlT2JqIHwgY2FsZW5kYXJDbGFzc0RheTp7bWluRGF0ZSwgbWF4RGF0ZSwgZGlzYWJsZWREYXRlcywgZGF0ZUZpbHRlcn1cIlxyXG4gICAgICAgIFt0YWJpbmRleF09XCJpc0RhdGVEaXNhYmxlZChkYXRlT2JqLmRhdGUpIHx8IGRhdGVPYmoubW9udGggIT09ICdjdXJyZW50JyA/IC0xIDogMFwiXHJcbiAgICAgICAgW3RpdGxlXT1cImRhdGVPYmouZGF0ZSB8IGNhbGVuZGFyRGF5VGl0bGU6bG9jYWxlXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsLWlubmVyXCI+XHJcbiAgICAgICAgICB7eyBkYXRlT2JqLmRhdGUgfCBjYWxlbmRhckRheTpkYXlGb3JtYXQ6bG9jYWxlIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L3RyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDwvdGJvZHk+XHJcbjwvdGFibGU+XHJcblxyXG4iXX0=
1
+ import { Component, Input } from '@angular/core';
2
+ import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
3
+ import { createGroupsInArray, getMonthDetails, getMonthsNames, getYears, isDateDisabled, isDateInRangeDisabled, tryDate } from '../calendar.utils';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../calendar.service";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "./calendar-day.directive";
8
+ import * as i4 from "./calendar-class-year.pipe";
9
+ import * as i5 from "./calendar-class-day.pipe";
10
+ import * as i6 from "./calendar-class-month.pipe";
11
+ import * as i7 from "./calendar-day.pipe";
12
+ import * as i8 from "./calendar-weekday.pipe";
13
+ import * as i9 from "./calendar-day-title.pipe";
14
+ export class CalendarMonthComponent {
15
+ constructor(calendarService) {
16
+ this.calendarService = calendarService;
17
+ this.addMonths = 0;
18
+ this._startDate = null;
19
+ this._endDate = null;
20
+ this._disabledDates = [];
21
+ this._firstDayOfWeek = 1;
22
+ this._locale = 'default';
23
+ this._range = false;
24
+ /**
25
+ * Set length or format of day name.
26
+ * @type number | 'long' | 'narrow' | 'short'
27
+ * @default 'short'
28
+ */
29
+ this.weekdayFormat = 'short';
30
+ this._view = 'days';
31
+ this._maxDate = null;
32
+ this._minDate = null;
33
+ this.listOfMonths = createGroupsInArray(getMonthsNames(this.locale), 4);
34
+ this.listOfYears = createGroupsInArray(getYears(this.date.getFullYear()), 4);
35
+ this._calendarDate = new Date();
36
+ this.calendarStateSubscribe();
37
+ }
38
+ /**
39
+ * Initial selected date.
40
+ * @type (Date | null)
41
+ */
42
+ set startDate(value) {
43
+ this._startDate = !!value ? tryDate(value, 'startDate') : null;
44
+ this.calendarService.update({ startDate: this._startDate });
45
+ }
46
+ get startDate() {
47
+ return this._startDate;
48
+ }
49
+ /**
50
+ * Initial selected to date (range).
51
+ * @type (Date | null)
52
+ */
53
+ set endDate(value) {
54
+ this._endDate = !!value ? tryDate(value, 'endDate') : null;
55
+ this.calendarService.update({ endDate: this._endDate });
56
+ }
57
+ get endDate() {
58
+ return this._endDate;
59
+ }
60
+ /**
61
+ * Specify the list of dates that cannot be selected.
62
+ * @type (Date[] | Date[][])
63
+ */
64
+ set disabledDates(value) {
65
+ this._disabledDates = value;
66
+ }
67
+ get disabledDates() {
68
+ return this._disabledDates;
69
+ }
70
+ /**
71
+ * Sets the day of start week.
72
+ * - 0 - Sunday,
73
+ * - 1 - Monday,
74
+ * - 2 - Tuesday,
75
+ * - 3 - Wednesday,
76
+ * - 4 - Thursday,
77
+ * - 5 - Friday,
78
+ * - 6 - Saturday,
79
+ */
80
+ set firstDayOfWeek(value) {
81
+ this._firstDayOfWeek = coerceNumberProperty(value);
82
+ }
83
+ get firstDayOfWeek() {
84
+ return this._firstDayOfWeek;
85
+ }
86
+ /**
87
+ * Sets the default locale for components. If not set, it is inherited from the browser.
88
+ * @default 'default'
89
+ */
90
+ set locale(value) {
91
+ this._locale = value;
92
+ this.listOfMonths = createGroupsInArray(getMonthsNames(value), 4);
93
+ }
94
+ get locale() {
95
+ return this._locale;
96
+ }
97
+ /**
98
+ * Allow range selection.
99
+ */
100
+ set range(value) {
101
+ this._range = coerceBooleanProperty(value);
102
+ }
103
+ get range() {
104
+ return this._range;
105
+ }
106
+ /**
107
+ * Set calendar view.
108
+ * @type 'days' | 'months' | 'years'
109
+ * @default 'days'
110
+ */
111
+ set view(value) {
112
+ this._view = value;
113
+ this.listOfYears = createGroupsInArray(getYears(this.date.getFullYear()), 4);
114
+ }
115
+ get view() {
116
+ return this._view;
117
+ }
118
+ /**
119
+ * Max selectable date.
120
+ */
121
+ set maxDate(value) {
122
+ this._maxDate = value ? tryDate(value, 'maxDate') : null;
123
+ }
124
+ get maxDate() {
125
+ return this._maxDate;
126
+ }
127
+ /**
128
+ * Min selectable date.
129
+ */
130
+ set minDate(value) {
131
+ this._minDate = value ? tryDate(value, 'minDate') : null;
132
+ }
133
+ get minDate() {
134
+ return this._minDate;
135
+ }
136
+ /**
137
+ * Default date of the component
138
+ * @type Date
139
+ */
140
+ set calendarDate(value) {
141
+ const _value = new Date(tryDate((value ?? this.startDate), 'calendarDate'));
142
+ if (!!_value && this._calendarDate.getTime() !== _value.getTime()) {
143
+ this.listOfYears = createGroupsInArray(getYears(_value.getFullYear()), 4);
144
+ const _calendarDate = new Date(new Date(_value.setDate(1)).setHours(0, 0, 0, 0));
145
+ this._calendarDate = _calendarDate;
146
+ this.setMonthDetails(this.date);
147
+ this.calendarService.update({ calendarDate: _calendarDate });
148
+ }
149
+ }
150
+ get calendarDate() {
151
+ return this._calendarDate;
152
+ }
153
+ get date() {
154
+ return new Date(this.calendarDate?.getFullYear(), this.calendarDate?.getMonth() + this.addMonths);
155
+ }
156
+ get monthDetails() {
157
+ return this._monthDetails;
158
+ }
159
+ get weekDays() {
160
+ return this.monthDetails[0];
161
+ }
162
+ ngOnInit() {
163
+ this.listOfMonths = createGroupsInArray(getMonthsNames(this.locale), 4);
164
+ this.setMonthDetails(this.date);
165
+ }
166
+ setMonthDetails(date = this.date) {
167
+ this._monthDetails = getMonthDetails(date.getFullYear(), date.getMonth(), this.firstDayOfWeek);
168
+ }
169
+ yearNumber(year) {
170
+ return new Date(year, 0).toLocaleDateString(this.locale, { year: 'numeric' });
171
+ }
172
+ isDateDisabled(date) {
173
+ // @ts-ignore
174
+ return isDateDisabled(date, this.minDate, this.maxDate, this.disabledDates) || (this.dateFilter ? !this.dateFilter(date) : false);
175
+ }
176
+ calendarCellTitle(date) {
177
+ return date.toLocaleDateString(this.locale);
178
+ }
179
+ handleCellMouseEnter(hoverDate) {
180
+ const hoverValue = this.isDateDisabled(hoverDate) ? null : hoverDate;
181
+ this.calendarService.update({ hoverDate: hoverValue });
182
+ }
183
+ handleYearCellClick(year) {
184
+ const calendarDate = new Date(year, this.calendarDate.getMonth(), 1, 0, 0, 0, 0);
185
+ this.view = 'months';
186
+ this.calendarService.update({ view: this.view, calendarDate: calendarDate });
187
+ }
188
+ handleYearCellKeyUp($event, year) {
189
+ if ($event.key === 'Enter') {
190
+ this.handleYearCellClick(year);
191
+ return;
192
+ }
193
+ }
194
+ handleMonthCellKeyUp($event, i, idx) {
195
+ if ($event.key === 'Enter') {
196
+ this.handleMonthCellClick(i, idx);
197
+ return;
198
+ }
199
+ }
200
+ handleMonthCellClick(i, idx) {
201
+ this.setCalendarPage(0, 0, i * 3 + idx - this.addMonths);
202
+ this.view = 'days';
203
+ this.calendarService.update({ view: this.view });
204
+ }
205
+ setCalendarPage(years, months = 0, setMonth) {
206
+ const year = this.date.getFullYear();
207
+ const month = this.date.getMonth();
208
+ const d = new Date(year, month, 1, 0, 0, 0, 0);
209
+ years && d.setFullYear(d.getFullYear() + years);
210
+ months && d.setMonth(d.getMonth() + months);
211
+ typeof setMonth === 'number' && d.setMonth(setMonth);
212
+ this.calendarService.update({ calendarDate: d });
213
+ }
214
+ handleCellMouseLeave() {
215
+ this.calendarService.update({ hoverDate: null });
216
+ }
217
+ handleDayCellKeyUp($event, date) {
218
+ if ($event.key === 'Enter') {
219
+ this.handleDayCellClick(date);
220
+ return;
221
+ }
222
+ if ($event.key === 'Tab') {
223
+ this.handleCellMouseEnter(date);
224
+ return;
225
+ }
226
+ }
227
+ handleDayCellClick(date) {
228
+ if (this.isDateDisabled(date)) {
229
+ return;
230
+ }
231
+ if (!this.range) {
232
+ this.endDate = null;
233
+ this.startDate = date;
234
+ return;
235
+ }
236
+ if (this.startDate && this.endDate) {
237
+ const calendarDate = new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0, 0);
238
+ this.calendarDate = calendarDate;
239
+ this.endDate = null;
240
+ this.startDate = null;
241
+ return;
242
+ }
243
+ if (!!this.startDate && !this.endDate) {
244
+ if (this.startDate && date < this.startDate) {
245
+ this.endDate = null;
246
+ this.startDate = date;
247
+ }
248
+ else {
249
+ this.endDate = date;
250
+ }
251
+ }
252
+ else {
253
+ this.endDate = null;
254
+ this.startDate = date;
255
+ }
256
+ if (this.startDate && this.endDate) {
257
+ // @ts-ignore
258
+ if (isDateInRangeDisabled(this.startDate, this.endDate, this.disabledDates)) {
259
+ this.startDate = null;
260
+ this.endDate = null;
261
+ return;
262
+ }
263
+ // let date = new Date(this.startDate);
264
+ // while (date < this.endDate) {
265
+ // date.setDate(date.getDate() + 1);
266
+ // if (this.isDateDisabled(date)) {
267
+ // this.startDate = null;
268
+ // this.endDate = null;
269
+ // break;
270
+ // }
271
+ // }
272
+ }
273
+ }
274
+ calendarStateSubscribe(subscribe = true) {
275
+ if (subscribe) {
276
+ this.calendarStateSubscription =
277
+ this.calendarService.calendarState$.subscribe(state => {
278
+ const keys = Object.keys(state);
279
+ for (const key of keys) {
280
+ // if (key in this) {
281
+ // @ts-ignore
282
+ this[key] = state[key];
283
+ // }
284
+ }
285
+ });
286
+ return;
287
+ }
288
+ this.calendarStateSubscription?.unsubscribe();
289
+ }
290
+ ngOnDestroy() {
291
+ this.calendarStateSubscribe(false);
292
+ }
293
+ }
294
+ CalendarMonthComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CalendarMonthComponent, deps: [{ token: i1.CalendarService }], target: i0.ɵɵFactoryTarget.Component });
295
+ CalendarMonthComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: CalendarMonthComponent, selector: "c-calendar-month", inputs: { addMonths: "addMonths", startDate: "startDate", endDate: "endDate", disabledDates: "disabledDates", firstDayOfWeek: "firstDayOfWeek", locale: "locale", range: "range", weekdayFormat: "weekdayFormat", view: "view", maxDate: "maxDate", minDate: "minDate", calendarDate: "calendarDate" }, exportAs: ["cCalendarMonth"], ngImport: i0, template: "<table>\n <thead *ngIf=\"view === 'days'\">\n <tr>\n <th *ngFor=\"let weekDay of weekDays; index as i; count as cnt\" class=\"calendar-cell\">\n <div class=\"calendar-header-cell-inner\">\n {{ weekDay.date | calendarWeekday:weekdayFormat:locale }}\n </div>\n </th>\n </tr>\n </thead>\n <tbody (mouseleave)=\"handleCellMouseLeave()\" [ngSwitch]=\"view\">\n <ng-container *ngSwitchCase=\"'years'\">\n <tr *ngFor=\"let yearsRow of listOfYears; index as rowIdx\">\n <td\n (click)=\"handleYearCellClick(year)\"\n (keyup)=\"handleYearCellKeyUp($event, year)\"\n *ngFor=\"let year of yearsRow; index as idx\"\n [ngClass]=\"year | calendarClassYear\"\n [tabindex]=\"0\"\n >\n <div class=\"calendar-cell-inner\">\n {{ yearNumber(year) }}\n </div>\n </td>\n </tr>\n </ng-container>\n <ng-container *ngSwitchCase=\"'months'\">\n <tr *ngFor=\"let monthsRow of listOfMonths; index as rowIdx\">\n <td\n (click)=\"handleMonthCellClick(rowIdx, idx)\"\n (keyup)=\"handleMonthCellKeyUp($event, rowIdx, idx)\"\n *ngFor=\"let month of monthsRow; index as idx\"\n [ngClass]=\"calendarDate | calendarClassMonth:(rowIdx*3+idx)\"\n [tabindex]=\"0\"\n >\n <div class=\"calendar-cell-inner\">\n {{ month }}\n </div>\n </td>\n </tr>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <tr *ngFor=\"let week of monthDetails; index as i\">\n <td\n (click)=\"dateObj.month === 'current' && handleDayCellClick(dateObj.date)\"\n (keyup)=\"dateObj.month === 'current' && handleDayCellKeyUp($event, dateObj.date)\"\n (mouseenter)=\"dateObj.month === 'current' && handleCellMouseEnter(dateObj.date)\"\n *ngFor=\"let dateObj of week; index as idx\"\n [cCalendarDay]=\"dateObj\"\n [ngClass]=\"dateObj | calendarClassDay:{minDate, maxDate, disabledDates, dateFilter}\"\n [tabindex]=\"isDateDisabled(dateObj.date) || dateObj.month !== 'current' ? -1 : 0\"\n [title]=\"dateObj.date | calendarDayTitle:locale\"\n >\n <div class=\"calendar-cell-inner\">\n {{ dateObj.date | calendarDay:dayFormat:locale }}\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.CalendarDayDirective, selector: "[cCalendarDay]", inputs: ["cCalendarDay"] }, { kind: "pipe", type: i4.CalendarClassYearPipe, name: "calendarClassYear" }, { kind: "pipe", type: i5.CalendarClassDayPipe, name: "calendarClassDay" }, { kind: "pipe", type: i6.CalendarClassMonthPipe, name: "calendarClassMonth" }, { kind: "pipe", type: i7.CalendarDayPipe, name: "calendarDay" }, { kind: "pipe", type: i8.CalendarWeekdayPipe, name: "calendarWeekday" }, { kind: "pipe", type: i9.CalendarDayTitlePipe, name: "calendarDayTitle" }] });
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CalendarMonthComponent, decorators: [{
297
+ type: Component,
298
+ args: [{ selector: 'c-calendar-month', exportAs: 'cCalendarMonth', template: "<table>\n <thead *ngIf=\"view === 'days'\">\n <tr>\n <th *ngFor=\"let weekDay of weekDays; index as i; count as cnt\" class=\"calendar-cell\">\n <div class=\"calendar-header-cell-inner\">\n {{ weekDay.date | calendarWeekday:weekdayFormat:locale }}\n </div>\n </th>\n </tr>\n </thead>\n <tbody (mouseleave)=\"handleCellMouseLeave()\" [ngSwitch]=\"view\">\n <ng-container *ngSwitchCase=\"'years'\">\n <tr *ngFor=\"let yearsRow of listOfYears; index as rowIdx\">\n <td\n (click)=\"handleYearCellClick(year)\"\n (keyup)=\"handleYearCellKeyUp($event, year)\"\n *ngFor=\"let year of yearsRow; index as idx\"\n [ngClass]=\"year | calendarClassYear\"\n [tabindex]=\"0\"\n >\n <div class=\"calendar-cell-inner\">\n {{ yearNumber(year) }}\n </div>\n </td>\n </tr>\n </ng-container>\n <ng-container *ngSwitchCase=\"'months'\">\n <tr *ngFor=\"let monthsRow of listOfMonths; index as rowIdx\">\n <td\n (click)=\"handleMonthCellClick(rowIdx, idx)\"\n (keyup)=\"handleMonthCellKeyUp($event, rowIdx, idx)\"\n *ngFor=\"let month of monthsRow; index as idx\"\n [ngClass]=\"calendarDate | calendarClassMonth:(rowIdx*3+idx)\"\n [tabindex]=\"0\"\n >\n <div class=\"calendar-cell-inner\">\n {{ month }}\n </div>\n </td>\n </tr>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <tr *ngFor=\"let week of monthDetails; index as i\">\n <td\n (click)=\"dateObj.month === 'current' && handleDayCellClick(dateObj.date)\"\n (keyup)=\"dateObj.month === 'current' && handleDayCellKeyUp($event, dateObj.date)\"\n (mouseenter)=\"dateObj.month === 'current' && handleCellMouseEnter(dateObj.date)\"\n *ngFor=\"let dateObj of week; index as idx\"\n [cCalendarDay]=\"dateObj\"\n [ngClass]=\"dateObj | calendarClassDay:{minDate, maxDate, disabledDates, dateFilter}\"\n [tabindex]=\"isDateDisabled(dateObj.date) || dateObj.month !== 'current' ? -1 : 0\"\n [title]=\"dateObj.date | calendarDayTitle:locale\"\n >\n <div class=\"calendar-cell-inner\">\n {{ dateObj.date | calendarDay:dayFormat:locale }}\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>\n\n" }]
299
+ }], ctorParameters: function () { return [{ type: i1.CalendarService }]; }, propDecorators: { addMonths: [{
300
+ type: Input
301
+ }], startDate: [{
302
+ type: Input
303
+ }], endDate: [{
304
+ type: Input
305
+ }], disabledDates: [{
306
+ type: Input
307
+ }], firstDayOfWeek: [{
308
+ type: Input
309
+ }], locale: [{
310
+ type: Input
311
+ }], range: [{
312
+ type: Input
313
+ }], weekdayFormat: [{
314
+ type: Input
315
+ }], view: [{
316
+ type: Input
317
+ }], maxDate: [{
318
+ type: Input
319
+ }], minDate: [{
320
+ type: Input
321
+ }], calendarDate: [{
322
+ type: Input
323
+ }] } });
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdwRixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixjQUFjLEVBQ2QsUUFBUSxFQUNSLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsT0FBTyxFQUNSLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7O0FBVTNCLE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsWUFDVSxlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFLakMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQWdCL0IsZUFBVSxHQUFnQixJQUFJLENBQUM7UUFnQi9CLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBZXZCLG1CQUFjLEdBQXdCLEVBQUUsQ0FBQztRQXFCekMsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFnQjVCLFlBQU8sR0FBVyxTQUFTLENBQUM7UUFjNUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUVoQzs7OztXQUlHO1FBQ00sa0JBQWEsR0FBc0IsT0FBTyxDQUFDO1FBaUI1QyxVQUFLLEdBQWdDLE1BQU0sQ0FBQztRQWM1QyxhQUFRLEdBQWdCLElBQUksQ0FBQztRQWM3Qixh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aXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGNyZWF0ZUdyb3Vwc0luQXJyYXksXG4gIGdldE1vbnRoRGV0YWlscyxcbiAgZ2V0TW9udGhzTmFtZXMsXG4gIGdldFllYXJzLFxuICBpc0RhdGVEaXNhYmxlZCxcbiAgaXNEYXRlSW5SYW5nZURpc2FibGVkLFxuICB0cnlEYXRlXG59IGZyb20gJy4uL2NhbGVuZGFyLnV0aWxzJztcblxuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlLCBEYXRlRmlsdGVyVHlwZSwgRGF5Rm9ybWF0VHlwZSwgV2Vla2RheUZvcm1hdFR5cGUgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy1jYWxlbmRhci1tb250aCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1tb250aC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnY0NhbGVuZGFyTW9udGgnXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTW9udGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGFkZE1vbnRoczogbnVtYmVyID0gMDtcblxuICAvKipcbiAgICogSW5pdGlhbCBzZWxlY3RlZCBkYXRlLlxuICAgKiBAdHlwZSAgKERhdGUgfCBudWxsKVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHN0YXJ0RGF0ZSh2YWx1ZTogRGF0ZSB8IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9zdGFydERhdGUgPSAhIXZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ3N0YXJ0RGF0ZScpIDogbnVsbDtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBzdGFydERhdGU6IHRoaXMuX3N0YXJ0RGF0ZSB9KTtcbiAgfVxuXG4gIGdldCBzdGFydERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0RGF0ZTtcbiAgfVxuXG4gIF9zdGFydERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogSW5pdGlhbCBzZWxlY3RlZCB0byBkYXRlIChyYW5nZSkuXG4gICAqIEB0eXBlICAoRGF0ZSB8IG51bGwpXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgZW5kRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9lbmREYXRlID0gISF2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdlbmREYXRlJykgOiBudWxsO1xuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGVuZERhdGU6IHRoaXMuX2VuZERhdGUgfSk7XG4gIH1cblxuICBnZXQgZW5kRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kRGF0ZTtcbiAgfVxuXG4gIF9lbmREYXRlOiAoRGF0ZSB8IG51bGwpID0gbnVsbDtcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgbGlzdCBvZiBkYXRlcyB0aGF0IGNhbm5vdCBiZSBzZWxlY3RlZC5cbiAgICogQHR5cGUgIChEYXRlW10gfCBEYXRlW11bXSlcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZERhdGVzKHZhbHVlOiBEYXRlW10gfCBEYXRlW11bXSkge1xuICAgIHRoaXMuX2Rpc2FibGVkRGF0ZXMgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZERhdGVzKCk6IERhdGVbXSB8IERhdGVbXVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWREYXRlcztcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVkRGF0ZXM6IChEYXRlW10gfCBEYXRlW11bXSkgPSBbXTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgZGF5IG9mIHN0YXJ0IHdlZWsuXG4gICAqIC0gMCAtIFN1bmRheSxcbiAgICogLSAxIC0gTW9uZGF5LFxuICAgKiAtIDIgLSBUdWVzZGF5LFxuICAgKiAtIDMgLSBXZWRuZXNkYXksXG4gICAqIC0gNCAtIFRodXJzZGF5LFxuICAgKiAtIDUgLSBGcmlkYXksXG4gICAqIC0gNiAtIFNhdHVyZGF5LFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGZpcnN0RGF5T2ZXZWVrKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9maXJzdERheU9mV2VlayA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBmaXJzdERheU9mV2VlaygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9maXJzdERheU9mV2VlaztcbiAgfVxuXG4gIHByaXZhdGUgX2ZpcnN0RGF5T2ZXZWVrOiBudW1iZXIgPSAxO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkZWZhdWx0IGxvY2FsZSBmb3IgY29tcG9uZW50cy4gSWYgbm90IHNldCwgaXQgaXMgaW5oZXJpdGVkIGZyb20gdGhlIGJyb3dzZXIuXG4gICAqIEBkZWZhdWx0ICdkZWZhdWx0J1xuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGxvY2FsZSh2YWx1ZSkge1xuICAgIHRoaXMuX2xvY2FsZSA9IHZhbHVlO1xuICAgIHRoaXMubGlzdE9mTW9udGhzID0gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRNb250aHNOYW1lcyh2YWx1ZSksIDQpO1xuICB9XG5cbiAgZ2V0IGxvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XG5cbiAgLyoqXG4gICAqIEFsbG93IHJhbmdlIHNlbGVjdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCByYW5nZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JhbmdlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCByYW5nZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2U7XG4gIH1cblxuICBwcml2YXRlIF9yYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgbGVuZ3RoIG9yIGZvcm1hdCBvZiBkYXkgbmFtZS5cbiAgICogQHR5cGUgbnVtYmVyIHwgJ2xvbmcnIHwgJ25hcnJvdycgfCAnc2hvcnQnXG4gICAqIEBkZWZhdWx0ICdzaG9ydCdcbiAgICovXG4gIEBJbnB1dCgpIHdlZWtkYXlGb3JtYXQ6IFdlZWtkYXlGb3JtYXRUeXBlID0gJ3Nob3J0JztcblxuICAvKipcbiAgICogU2V0IGNhbGVuZGFyIHZpZXcuXG4gICAqIEB0eXBlICdkYXlzJyB8ICdtb250aHMnIHwgJ3llYXJzJ1xuICAgKiBAZGVmYXVsdCAnZGF5cydcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2aWV3KHZhbHVlKSB7XG4gICAgdGhpcy5fdmlldyA9IHZhbHVlO1xuICAgIHRoaXMubGlzdE9mWWVhcnMgPSBjcmVhdGVHcm91cHNJbkFycmF5KGdldFllYXJzKHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpKSwgNCk7XG4gIH1cblxuICBnZXQgdmlldygpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlldztcbiAgfVxuXG4gIHByaXZhdGUgX3ZpZXc6ICdkYXlzJyB8ICdtb250aHMnIHwgJ3llYXJzJyA9ICdkYXlzJztcblxuICAvKipcbiAgICogTWF4IHNlbGVjdGFibGUgZGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBtYXhEYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMuX21heERhdGUgPSB2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdtYXhEYXRlJykgOiBudWxsO1xuICB9XG5cbiAgZ2V0IG1heERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gIH1cblxuICBwcml2YXRlIF9tYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIE1pbiBzZWxlY3RhYmxlIGRhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgbWluRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl9taW5EYXRlID0gdmFsdWUgPyB0cnlEYXRlKHZhbHVlLCAnbWluRGF0ZScpIDogbnVsbDtcbiAgfVxuXG4gIGdldCBtaW5EYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIGxpc3RPZk1vbnRocyA9IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0TW9udGhzTmFtZXModGhpcy5sb2NhbGUpLCA0KTtcbiAgbGlzdE9mWWVhcnMgPSBjcmVhdGVHcm91cHNJbkFycmF5KGdldFllYXJzKHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpKSwgNCk7XG4gIHByaXZhdGUgY2FsZW5kYXJTdGF0ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogRGVmYXVsdCBkYXRlIG9mIHRoZSBjb21wb25lbnRcbiAgICogQHR5cGUgRGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGNhbGVuZGFyRGF0ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlcikge1xuICAgIGNvbnN0IF92YWx1ZSA9IG5ldyBEYXRlKHRyeURhdGUoKHZhbHVlID8/IHRoaXMuc3RhcnREYXRlKSwgJ2NhbGVuZGFyRGF0ZScpKTtcbiAgICBpZiAoISFfdmFsdWUgJiYgdGhpcy5fY2FsZW5kYXJEYXRlLmdldFRpbWUoKSAhPT0gX3ZhbHVlLmdldFRpbWUoKSkge1xuICAgICAgdGhpcy5saXN0T2ZZZWFycyA9IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0WWVhcnMoX3ZhbHVlLmdldEZ1bGxZZWFyKCkpLCA0KTtcbiAgICAgIGNvbnN0IF9jYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZShfdmFsdWUuc2V0RGF0ZSgxKSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xuICAgICAgdGhpcy5fY2FsZW5kYXJEYXRlID0gX2NhbGVuZGFyRGF0ZTtcbiAgICAgIHRoaXMuc2V0TW9udGhEZXRhaWxzKHRoaXMuZGF0ZSk7XG4gICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBjYWxlbmRhckRhdGU6IF9jYWxlbmRhckRhdGUgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNhbGVuZGFyRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXJEYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXJEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcblxuICBkYXRlRmlsdGVyITogRGF0ZUZpbHRlclR5cGU7XG5cbiAgZ2V0IGRhdGUoKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY2FsZW5kYXJEYXRlPy5nZXRGdWxsWWVhcigpLCB0aGlzLmNhbGVuZGFyRGF0ZT8uZ2V0TW9udGgoKSArIHRoaXMuYWRkTW9udGhzKTtcbiAgfVxuXG4gIGRheUZvcm1hdCE6IERheUZvcm1hdFR5cGU7XG5cbiAgcHJpdmF0ZSBfbW9udGhEZXRhaWxzITogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nOyB9W11bXTtcblxuICBnZXQgbW9udGhEZXRhaWxzKCk6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZzsgfVtdW10ge1xuICAgIHJldHVybiB0aGlzLl9tb250aERldGFpbHM7XG4gIH1cblxuICBnZXQgd2Vla0RheXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9udGhEZXRhaWxzWzBdO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0T2ZNb250aHMgPSBjcmVhdGVHcm91cHNJbkFycmF5KGdldE1vbnRoc05hbWVzKHRoaXMubG9jYWxlKSwgNCk7XG4gICAgdGhpcy5zZXRNb250aERldGFpbHModGhpcy5kYXRlKTtcbiAgfVxuXG4gIHNldE1vbnRoRGV0YWlscyhkYXRlOiBEYXRlID0gdGhpcy5kYXRlKSB7XG4gICAgdGhpcy5fbW9udGhEZXRhaWxzID0gZ2V0TW9udGhEZXRhaWxzKFxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgdGhpcy5maXJzdERheU9mV2Vla1xuICAgICk7XG4gIH1cblxuICB5ZWFyTnVtYmVyKHllYXI6IGFueSkge1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCAwKS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xuICB9XG5cbiAgaXNEYXRlRGlzYWJsZWQoZGF0ZTogRGF0ZSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gaXNEYXRlRGlzYWJsZWQoZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIHRoaXMuZGlzYWJsZWREYXRlcykgfHwgKHRoaXMuZGF0ZUZpbHRlciA/ICF0aGlzLmRhdGVGaWx0ZXIoZGF0ZSkgOiBmYWxzZSk7XG4gIH1cblxuICBjYWxlbmRhckNlbGxUaXRsZShkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKTtcbiAgfVxuXG4gIGhhbmRsZUNlbGxNb3VzZUVudGVyKGhvdmVyRGF0ZTogRGF0ZSkge1xuICAgIGNvbnN0IGhvdmVyVmFsdWUgPSB0aGlzLmlzRGF0ZURpc2FibGVkKGhvdmVyRGF0ZSkgPyBudWxsIDogaG92ZXJEYXRlO1xuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGhvdmVyRGF0ZTogaG92ZXJWYWx1ZSB9KTtcbiAgfVxuXG4gIGhhbmRsZVllYXJDZWxsQ2xpY2soeWVhcjogYW55KSB7XG4gICAgY29uc3QgY2FsZW5kYXJEYXRlID0gbmV3IERhdGUoeWVhciwgdGhpcy5jYWxlbmRhckRhdGUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCwgMCk7XG4gICAgdGhpcy52aWV3ID0gJ21vbnRocyc7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgdmlldzogdGhpcy52aWV3LCBjYWxlbmRhckRhdGU6IGNhbGVuZGFyRGF0ZSB9KTtcbiAgfVxuXG4gIGhhbmRsZVllYXJDZWxsS2V5VXAoJGV2ZW50OiBLZXlib2FyZEV2ZW50LCB5ZWFyOiBhbnkpIHtcbiAgICBpZiAoJGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5oYW5kbGVZZWFyQ2VsbENsaWNrKHllYXIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU1vbnRoQ2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgaTogbnVtYmVyLCBpZHg6IG51bWJlcikge1xuICAgIGlmICgkZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLmhhbmRsZU1vbnRoQ2VsbENsaWNrKGksIGlkeCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTW9udGhDZWxsQ2xpY2soaTogbnVtYmVyLCBpZHg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKDAsIDAsIGkgKiAzICsgaWR4IC0gdGhpcy5hZGRNb250aHMpO1xuICAgIHRoaXMudmlldyA9ICdkYXlzJztcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyB2aWV3OiB0aGlzLnZpZXcgfSk7XG4gIH1cblxuICBzZXRDYWxlbmRhclBhZ2UoeWVhcnM6IG51bWJlciwgbW9udGhzID0gMCwgc2V0TW9udGg/OiBudW1iZXIpIHtcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5kYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLmRhdGUuZ2V0TW9udGgoKTtcbiAgICBjb25zdCBkID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEsIDAsIDAsIDAsIDApO1xuXG4gICAgeWVhcnMgJiYgZC5zZXRGdWxsWWVhcihkLmdldEZ1bGxZZWFyKCkgKyB5ZWFycyk7XG4gICAgbW9udGhzICYmIGQuc2V0TW9udGgoZC5nZXRNb250aCgpICsgbW9udGhzKTtcbiAgICB0eXBlb2Ygc2V0TW9udGggPT09ICdudW1iZXInICYmIGQuc2V0TW9udGgoc2V0TW9udGgpO1xuXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgY2FsZW5kYXJEYXRlOiBkIH0pO1xuICB9XG5cbiAgaGFuZGxlQ2VsbE1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgaG92ZXJEYXRlOiBudWxsIH0pO1xuICB9XG5cbiAgaGFuZGxlRGF5Q2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgZGF0ZTogRGF0ZSkge1xuICAgIGlmICgkZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLmhhbmRsZURheUNlbGxDbGljayhkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCRldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICB0aGlzLmhhbmRsZUNlbGxNb3VzZUVudGVyKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZURheUNlbGxDbGljayhkYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucmFuZ2UpIHtcbiAgICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IGRhdGU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSkge1xuICAgICAgY29uc3QgY2FsZW5kYXJEYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIDEsIDAsIDAsIDAsIDApO1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPSBjYWxlbmRhckRhdGU7XG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xuICAgICAgdGhpcy5zdGFydERhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghIXRoaXMuc3RhcnREYXRlICYmICF0aGlzLmVuZERhdGUpIHtcbiAgICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiBkYXRlIDwgdGhpcy5zdGFydERhdGUpIHtcbiAgICAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdGFydERhdGUgPSBkYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbmREYXRlID0gZGF0ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdGFydERhdGUgJiYgdGhpcy5lbmREYXRlKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAoaXNEYXRlSW5SYW5nZURpc2FibGVkKHRoaXMuc3RhcnREYXRlLCB0aGlzLmVuZERhdGUsIHRoaXMuZGlzYWJsZWREYXRlcykpIHtcbiAgICAgICAgdGhpcy5zdGFydERhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5zdGFydERhdGUpO1xuICAgICAgLy8gd2hpbGUgKGRhdGUgPCB0aGlzLmVuZERhdGUpIHtcbiAgICAgIC8vICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgICAvLyAgIGlmICh0aGlzLmlzRGF0ZURpc2FibGVkKGRhdGUpKSB7XG4gICAgICAvLyAgICAgdGhpcy5zdGFydERhdGUgPSBudWxsO1xuICAgICAgLy8gICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XG4gICAgICAvLyAgICAgYnJlYWs7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICB9XG4gIH1cblxuICBjYWxlbmRhclN0YXRlU3Vic2NyaWJlKHN1YnNjcmliZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpcHRpb24gPVxuICAgICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhclN0YXRlJC5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzdGF0ZSk7XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgLy8gaWYgKGtleSBpbiB0aGlzKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBzdGF0ZVtrZXldO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2FsZW5kYXJTdGF0ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2FsZW5kYXJTdGF0ZVN1YnNjcmliZShmYWxzZSk7XG4gIH1cbn1cbiIsIjx0YWJsZT5cbiAgPHRoZWFkICpuZ0lmPVwidmlldyA9PT0gJ2RheXMnXCI+XG4gIDx0cj5cbiAgICA8dGggKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXM7IGluZGV4IGFzIGk7IGNvdW50IGFzIGNudFwiIGNsYXNzPVwiY2FsZW5kYXItY2VsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlci1jZWxsLWlubmVyXCI+XG4gICAgICAgIHt7IHdlZWtEYXkuZGF0ZSB8IGNhbGVuZGFyV2Vla2RheTp3ZWVrZGF5Rm9ybWF0OmxvY2FsZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC90aD5cbiAgPC90cj5cbiAgPC90aGVhZD5cbiAgPHRib2R5IChtb3VzZWxlYXZlKT1cImhhbmRsZUNlbGxNb3VzZUxlYXZlKClcIiBbbmdTd2l0Y2hdPVwidmlld1wiPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIneWVhcnMnXCI+XG4gICAgPHRyICpuZ0Zvcj1cImxldCB5ZWFyc1JvdyBvZiBsaXN0T2ZZZWFyczsgaW5kZXggYXMgcm93SWR4XCI+XG4gICAgICA8dGRcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZVllYXJDZWxsQ2xpY2soeWVhcilcIlxuICAgICAgICAoa2V5dXApPVwiaGFuZGxlWWVhckNlbGxLZXlVcCgkZXZlbnQsIHllYXIpXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhcnNSb3c7IGluZGV4IGFzIGlkeFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInllYXIgfCBjYWxlbmRhckNsYXNzWWVhclwiXG4gICAgICAgIFt0YWJpbmRleF09XCIwXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cbiAgICAgICAgICB7eyB5ZWFyTnVtYmVyKHllYXIpIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRocydcIj5cbiAgICA8dHIgKm5nRm9yPVwibGV0IG1vbnRoc1JvdyBvZiBsaXN0T2ZNb250aHM7IGluZGV4IGFzIHJvd0lkeFwiPlxuICAgICAgPHRkXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVNb250aENlbGxDbGljayhyb3dJZHgsIGlkeClcIlxuICAgICAgICAoa2V5dXApPVwiaGFuZGxlTW9udGhDZWxsS2V5VXAoJGV2ZW50LCByb3dJZHgsIGlkeClcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzUm93OyBpbmRleCBhcyBpZHhcIlxuICAgICAgICBbbmdDbGFzc109XCJjYWxlbmRhckRhdGUgfCBjYWxlbmRhckNsYXNzTW9udGg6KHJvd0lkeCozK2lkeClcIlxuICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsLWlubmVyXCI+XG4gICAgICAgICAge3sgbW9udGggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgPHRyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIG1vbnRoRGV0YWlsczsgaW5kZXggYXMgaVwiPlxuICAgICAgPHRkXG4gICAgICAgIChjbGljayk9XCJkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCcgJiYgaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGVPYmouZGF0ZSlcIlxuICAgICAgICAoa2V5dXApPVwiZGF0ZU9iai5tb250aCA9PT0gJ2N1cnJlbnQnICYmIGhhbmRsZURheUNlbGxLZXlVcCgkZXZlbnQsIGRhdGVPYmouZGF0ZSlcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCcgJiYgaGFuZGxlQ2VsbE1vdXNlRW50ZXIoZGF0ZU9iai5kYXRlKVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXRlT2JqIG9mIHdlZWs7IGluZGV4IGFzIGlkeFwiXG4gICAgICAgIFtjQ2FsZW5kYXJEYXldPVwiZGF0ZU9ialwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImRhdGVPYmogfCBjYWxlbmRhckNsYXNzRGF5OnttaW5EYXRlLCBtYXhEYXRlLCBkaXNhYmxlZERhdGVzLCBkYXRlRmlsdGVyfVwiXG4gICAgICAgIFt0YWJpbmRleF09XCJpc0RhdGVEaXNhYmxlZChkYXRlT2JqLmRhdGUpIHx8IGRhdGVPYmoubW9udGggIT09ICdjdXJyZW50JyA/IC0xIDogMFwiXG4gICAgICAgIFt0aXRsZV09XCJkYXRlT2JqLmRhdGUgfCBjYWxlbmRhckRheVRpdGxlOmxvY2FsZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsLWlubmVyXCI+XG4gICAgICAgICAge3sgZGF0ZU9iai5kYXRlIHwgY2FsZW5kYXJEYXk6ZGF5Rm9ybWF0OmxvY2FsZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDwvdGJvZHk+XG48L3RhYmxlPlxuXG4iXX0=