@coreui/angular-pro 4.3.6 → 4.3.8

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 +629 -608
  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 +374 -366
  108. package/esm2020/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +72 -72
  109. package/esm2020/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +23 -23
  110. package/esm2020/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +23 -23
  111. package/esm2020/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +23 -23
  112. package/esm2020/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +86 -86
  113. package/esm2020/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +81 -81
  114. package/esm2020/lib/dropdown/dropdown.module.mjs +64 -64
  115. package/esm2020/lib/dropdown/dropdown.service.mjs +18 -18
  116. package/esm2020/lib/dropdown/index.mjs +2 -2
  117. package/esm2020/lib/dropdown/public_api.mjs +10 -10
  118. package/esm2020/lib/element-cover/element-cover.component.mjs +71 -71
  119. package/esm2020/lib/element-cover/element-cover.module.mjs +28 -28
  120. package/esm2020/lib/element-cover/index.mjs +2 -2
  121. package/esm2020/lib/element-cover/public_api.mjs +3 -3
  122. package/esm2020/lib/footer/footer.component.mjs +38 -38
  123. package/esm2020/lib/footer/footer.module.mjs +24 -24
  124. package/esm2020/lib/footer/index.mjs +2 -2
  125. package/esm2020/lib/footer/public_api.mjs +3 -3
  126. package/esm2020/lib/form/form/form.directive.mjs +38 -38
  127. package/esm2020/lib/form/form-check/form-check-input.directive.mjs +62 -62
  128. package/esm2020/lib/form/form-check/form-check-label.directive.mjs +21 -21
  129. package/esm2020/lib/form/form-check/form-check.component.mjs +75 -75
  130. package/esm2020/lib/form/form-control/form-control.directive.mjs +71 -71
  131. package/esm2020/lib/form/form-feedback/form-feedback.component.mjs +42 -42
  132. package/esm2020/lib/form/form-floating/form-floating.directive.mjs +38 -38
  133. package/esm2020/lib/form/form-label/form-label.directive.mjs +39 -39
  134. package/esm2020/lib/form/form-select/form-select.directive.mjs +34 -34
  135. package/esm2020/lib/form/form-text/form-text.directive.mjs +22 -22
  136. package/esm2020/lib/form/form.module.mjs +77 -77
  137. package/esm2020/lib/form/index.mjs +2 -2
  138. package/esm2020/lib/form/input-group/input-group.component.mjs +31 -31
  139. package/esm2020/lib/form/input-group-text/input-group-text.directive.mjs +22 -22
  140. package/esm2020/lib/form/public_api.mjs +14 -14
  141. package/esm2020/lib/grid/col.component.mjs +12 -12
  142. package/esm2020/lib/grid/col.directive.mjs +156 -156
  143. package/esm2020/lib/grid/col.type.mjs +2 -2
  144. package/esm2020/lib/grid/container.component.mjs +43 -43
  145. package/esm2020/lib/grid/container.type.mjs +2 -2
  146. package/esm2020/lib/grid/grid.module.mjs +48 -48
  147. package/esm2020/lib/grid/gutter.directive.mjs +56 -56
  148. package/esm2020/lib/grid/gutter.type.mjs +2 -2
  149. package/esm2020/lib/grid/index.mjs +2 -2
  150. package/esm2020/lib/grid/public_api.mjs +8 -8
  151. package/esm2020/lib/grid/row.component.mjs +12 -12
  152. package/esm2020/lib/grid/row.directive.mjs +45 -45
  153. package/esm2020/lib/grid/row.type.mjs +2 -2
  154. package/esm2020/lib/header/header/header.component.mjs +47 -47
  155. package/esm2020/lib/header/header-brand/header-brand.component.mjs +31 -31
  156. package/esm2020/lib/header/header-divider/header-divider.component.mjs +20 -20
  157. package/esm2020/lib/header/header-nav/header-nav.component.mjs +28 -28
  158. package/esm2020/lib/header/header-text/header-text.component.mjs +20 -20
  159. package/esm2020/lib/header/header-toggler/header-toggler.directive.mjs +54 -54
  160. package/esm2020/lib/header/header.module.mjs +49 -49
  161. package/esm2020/lib/header/index.mjs +2 -2
  162. package/esm2020/lib/header/public_api.mjs +8 -8
  163. package/esm2020/lib/image/img.directive.mjs +91 -91
  164. package/esm2020/lib/image/img.module.mjs +24 -24
  165. package/esm2020/lib/image/index.mjs +2 -2
  166. package/esm2020/lib/image/public_api.mjs +3 -3
  167. package/esm2020/lib/list-group/index.mjs +2 -2
  168. package/esm2020/lib/list-group/list-group-item.directive.mjs +73 -73
  169. package/esm2020/lib/list-group/list-group.directive.mjs +44 -44
  170. package/esm2020/lib/list-group/list-group.module.mjs +25 -25
  171. package/esm2020/lib/list-group/public_api.mjs +4 -4
  172. package/esm2020/lib/loading-button/index.mjs +2 -2
  173. package/esm2020/lib/loading-button/loading-button.component.mjs +84 -84
  174. package/esm2020/lib/loading-button/loading-button.module.mjs +28 -28
  175. package/esm2020/lib/loading-button/public_api.mjs +3 -3
  176. package/esm2020/lib/modal/index.mjs +2 -2
  177. package/esm2020/lib/modal/modal/modal.component.mjs +311 -311
  178. package/esm2020/lib/modal/modal-body/modal-body.component.mjs +19 -19
  179. package/esm2020/lib/modal/modal-content/modal-content.component.mjs +23 -23
  180. package/esm2020/lib/modal/modal-dialog/modal-dialog.component.mjs +32 -32
  181. package/esm2020/lib/modal/modal-dismiss/modal-toggle.directive.mjs +27 -27
  182. package/esm2020/lib/modal/modal-footer/modal-footer.component.mjs +22 -22
  183. package/esm2020/lib/modal/modal-header/modal-header.component.mjs +24 -24
  184. package/esm2020/lib/modal/modal-title/modal-title.directive.mjs +21 -21
  185. package/esm2020/lib/modal/modal.module.mjs +69 -69
  186. package/esm2020/lib/modal/modal.service.mjs +21 -21
  187. package/esm2020/lib/modal/public_api.mjs +11 -11
  188. package/esm2020/lib/multi-select/index.mjs +2 -2
  189. package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +536 -536
  190. package/esm2020/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +30 -30
  191. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +20 -20
  192. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +52 -52
  193. package/esm2020/lib/multi-select/multi-select-option/multi-select-option.component.mjs +144 -144
  194. package/esm2020/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +36 -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 +246 -246
  258. package/esm2020/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +60 -60
  259. package/esm2020/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +30 -30
  260. package/esm2020/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +20 -20
  261. package/esm2020/lib/sidebar/sidebar-header/sidebar-header.component.mjs +20 -20
  262. package/esm2020/lib/sidebar/sidebar-nav/index.mjs +2 -2
  263. package/esm2020/lib/sidebar/sidebar-nav/public_api.mjs +14 -14
  264. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +24 -24
  265. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +18 -18
  266. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +18 -18
  267. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +21 -21
  268. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +33 -33
  269. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +43 -43
  270. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +94 -94
  271. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +23 -23
  272. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +68 -68
  273. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +204 -204
  274. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.mjs +2 -2
  275. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +54 -54
  276. package/esm2020/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +40 -40
  277. package/esm2020/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +26 -26
  278. package/esm2020/lib/sidebar/sidebar.module.mjs +99 -99
  279. package/esm2020/lib/sidebar/sidebar.service.mjs +21 -21
  280. package/esm2020/lib/smart-pagination/index.mjs +2 -2
  281. package/esm2020/lib/smart-pagination/public_api.mjs +3 -3
  282. package/esm2020/lib/smart-pagination/smart-pagination.component.mjs +196 -196
  283. package/esm2020/lib/smart-pagination/smart-pagination.module.mjs +28 -28
  284. package/esm2020/lib/smart-pagination/smart-pagination.type.mjs +2 -2
  285. package/esm2020/lib/smart-table/index.mjs +2 -2
  286. package/esm2020/lib/smart-table/public_api.mjs +5 -4
  287. package/esm2020/lib/smart-table/smart-table/smart-table.component.mjs +515 -517
  288. package/esm2020/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +30 -30
  289. package/esm2020/lib/smart-table/smart-table-filter/filter-input.directive.mjs +78 -78
  290. package/esm2020/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +46 -46
  291. package/esm2020/lib/smart-table/smart-table-head/smart-table-head.component.mjs +165 -165
  292. package/esm2020/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +49 -49
  293. package/esm2020/lib/smart-table/smart-table.module.mjs +76 -76
  294. package/esm2020/lib/smart-table/smart-table.type.mjs +1 -1
  295. package/esm2020/lib/spinner/index.mjs +2 -2
  296. package/esm2020/lib/spinner/public_api.mjs +3 -3
  297. package/esm2020/lib/spinner/spinner.component.mjs +49 -49
  298. package/esm2020/lib/spinner/spinner.module.mjs +28 -28
  299. package/esm2020/lib/table/index.mjs +2 -2
  300. package/esm2020/lib/table/public_api.mjs +5 -5
  301. package/esm2020/lib/table/table-active.directive.mjs +40 -40
  302. package/esm2020/lib/table/table-color.directive.mjs +24 -24
  303. package/esm2020/lib/table/table.directive.mjs +147 -147
  304. package/esm2020/lib/table/table.module.mjs +34 -34
  305. package/esm2020/lib/table/table.type.mjs +2 -2
  306. package/esm2020/lib/tabs/index.mjs +2 -2
  307. package/esm2020/lib/tabs/public_api.mjs +6 -6
  308. package/esm2020/lib/tabs/tab-content/tab-content.component.mjs +92 -92
  309. package/esm2020/lib/tabs/tab-content-ref.directive.mjs +128 -128
  310. package/esm2020/lib/tabs/tab-pane/tab-pane.component.mjs +57 -57
  311. package/esm2020/lib/tabs/tab.service.mjs +21 -21
  312. package/esm2020/lib/tabs/tabs.module.mjs +40 -40
  313. package/esm2020/lib/time-picker/index.mjs +2 -2
  314. package/esm2020/lib/time-picker/public_api.mjs +3 -3
  315. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +103 -103
  316. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +104 -104
  317. package/esm2020/lib/time-picker/time-picker.component.mjs +490 -490
  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 +15302 -15296
  356. package/fesm2015/coreui-angular-pro.mjs.map +1 -1
  357. package/fesm2020/coreui-angular-pro.mjs +15179 -15173
  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 +249 -240
  460. package/lib/date-range-picker/date-range-picker.module.d.ts +15 -15
  461. package/lib/date-range-picker/index.d.ts +1 -1
  462. package/lib/date-range-picker/public_api.d.ts +2 -2
  463. package/lib/dropdown/dropdown/dropdown.component.d.ts +136 -135
  464. package/lib/dropdown/dropdown-close/dropdown-close.directive.d.ts +26 -26
  465. package/lib/dropdown/dropdown-divider/dropdown-divider.directive.d.ts +7 -7
  466. package/lib/dropdown/dropdown-header/dropdown-header.directive.d.ts +7 -7
  467. package/lib/dropdown/dropdown-item/dropdown-item-plain.directive.d.ts +7 -7
  468. package/lib/dropdown/dropdown-item/dropdown-item.directive.d.ts +36 -36
  469. package/lib/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +36 -36
  470. package/lib/dropdown/dropdown.module.d.ts +14 -14
  471. package/lib/dropdown/dropdown.service.d.ts +13 -13
  472. package/lib/dropdown/index.d.ts +1 -1
  473. package/lib/dropdown/public_api.d.ts +9 -9
  474. package/lib/element-cover/element-cover.component.d.ts +27 -27
  475. package/lib/element-cover/element-cover.module.d.ts +9 -9
  476. package/lib/element-cover/index.d.ts +1 -1
  477. package/lib/element-cover/public_api.d.ts +2 -2
  478. package/lib/footer/footer.component.d.ts +18 -18
  479. package/lib/footer/footer.module.d.ts +8 -8
  480. package/lib/footer/index.d.ts +1 -1
  481. package/lib/footer/public_api.d.ts +2 -2
  482. package/lib/form/form/form.directive.d.ts +17 -17
  483. package/lib/form/form-check/form-check-input.directive.d.ts +31 -31
  484. package/lib/form/form-check/form-check-label.directive.d.ts +6 -6
  485. package/lib/form/form-check/form-check.component.d.ts +36 -36
  486. package/lib/form/form-control/form-control.directive.d.ts +34 -34
  487. package/lib/form/form-feedback/form-feedback.component.d.ts +18 -18
  488. package/lib/form/form-floating/form-floating.directive.d.ts +16 -16
  489. package/lib/form/form-label/form-label.directive.d.ts +16 -16
  490. package/lib/form/form-select/form-select.directive.d.ts +16 -16
  491. package/lib/form/form-text/form-text.directive.d.ts +7 -7
  492. package/lib/form/form.module.d.ts +19 -19
  493. package/lib/form/index.d.ts +1 -1
  494. package/lib/form/input-group/input-group.component.d.ts +11 -11
  495. package/lib/form/input-group-text/input-group-text.directive.d.ts +7 -7
  496. package/lib/form/public_api.d.ts +13 -13
  497. package/lib/grid/col.component.d.ts +6 -6
  498. package/lib/grid/col.directive.d.ts +75 -75
  499. package/lib/grid/col.type.d.ts +11 -11
  500. package/lib/grid/container.component.d.ts +20 -20
  501. package/lib/grid/container.type.d.ts +5 -5
  502. package/lib/grid/grid.module.d.ts +13 -13
  503. package/lib/grid/gutter.directive.d.ts +13 -13
  504. package/lib/grid/gutter.type.d.ts +13 -13
  505. package/lib/grid/index.d.ts +1 -1
  506. package/lib/grid/public_api.d.ts +7 -7
  507. package/lib/grid/row.component.d.ts +6 -6
  508. package/lib/grid/row.directive.d.ts +37 -37
  509. package/lib/grid/row.type.d.ts +9 -9
  510. package/lib/header/header/header.component.d.ts +25 -25
  511. package/lib/header/header-brand/header-brand.component.d.ts +12 -12
  512. package/lib/header/header-divider/header-divider.component.d.ts +6 -6
  513. package/lib/header/header-nav/header-nav.component.d.ts +12 -12
  514. package/lib/header/header-text/header-text.component.d.ts +6 -6
  515. package/lib/header/header-toggler/header-toggler.directive.d.ts +25 -25
  516. package/lib/header/header.module.d.ts +13 -13
  517. package/lib/header/index.d.ts +1 -1
  518. package/lib/header/public_api.d.ts +7 -7
  519. package/lib/image/img.directive.d.ts +42 -42
  520. package/lib/image/img.module.d.ts +8 -8
  521. package/lib/image/index.d.ts +1 -1
  522. package/lib/image/public_api.d.ts +2 -2
  523. package/lib/list-group/index.d.ts +1 -1
  524. package/lib/list-group/list-group-item.directive.d.ts +33 -33
  525. package/lib/list-group/list-group.directive.d.ts +21 -21
  526. package/lib/list-group/list-group.module.d.ts +9 -9
  527. package/lib/list-group/public_api.d.ts +3 -3
  528. package/lib/loading-button/index.d.ts +1 -1
  529. package/lib/loading-button/loading-button.component.d.ts +43 -43
  530. package/lib/loading-button/loading-button.module.d.ts +9 -9
  531. package/lib/loading-button/public_api.d.ts +2 -2
  532. package/lib/modal/index.d.ts +1 -1
  533. package/lib/modal/modal/modal.component.d.ts +104 -104
  534. package/lib/modal/modal-body/modal-body.component.d.ts +6 -6
  535. package/lib/modal/modal-content/modal-content.component.d.ts +7 -7
  536. package/lib/modal/modal-dialog/modal-dialog.component.d.ts +25 -25
  537. package/lib/modal/modal-dismiss/modal-toggle.directive.d.ts +13 -13
  538. package/lib/modal/modal-footer/modal-footer.component.d.ts +6 -6
  539. package/lib/modal/modal-header/modal-header.component.d.ts +6 -6
  540. package/lib/modal/modal-title/modal-title.directive.d.ts +6 -6
  541. package/lib/modal/modal.module.d.ts +16 -16
  542. package/lib/modal/modal.service.d.ts +15 -15
  543. package/lib/modal/public_api.d.ts +10 -10
  544. package/lib/multi-select/index.d.ts +1 -1
  545. package/lib/multi-select/multi-select/multi-select.component.d.ts +150 -150
  546. package/lib/multi-select/multi-select-native-select/multi-select-native-select.component.d.ts +14 -14
  547. package/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.d.ts +9 -9
  548. package/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.d.ts +20 -20
  549. package/lib/multi-select/multi-select-option/multi-select-option.component.d.ts +49 -49
  550. package/lib/multi-select/multi-select-tag/multi-select-tag.component.d.ts +17 -21
  551. package/lib/multi-select/multi-select.module.d.ts +17 -17
  552. package/lib/multi-select/multi-select.service.d.ts +12 -12
  553. package/lib/multi-select/multi-select.type.d.ts +34 -34
  554. package/lib/multi-select/public_api.d.ts +6 -6
  555. package/lib/nav/index.d.ts +1 -1
  556. package/lib/nav/nav-item.component.d.ts +6 -6
  557. package/lib/nav/nav-link.directive.d.ts +34 -34
  558. package/lib/nav/nav.component.d.ts +16 -16
  559. package/lib/nav/nav.module.d.ts +10 -10
  560. package/lib/nav/public_api.d.ts +4 -4
  561. package/lib/navbar/index.d.ts +1 -1
  562. package/lib/navbar/navbar-brand/navbar-brand.directive.d.ts +7 -7
  563. package/lib/navbar/navbar-nav/navbar-nav.component.d.ts +15 -15
  564. package/lib/navbar/navbar-text/navbar-text.component.d.ts +6 -6
  565. package/lib/navbar/navbar-toggler/navbar-toggler.directive.d.ts +33 -33
  566. package/lib/navbar/navbar.component.d.ts +39 -39
  567. package/lib/navbar/navbar.module.d.ts +13 -13
  568. package/lib/navbar/public_api.d.ts +6 -6
  569. package/lib/offcanvas/index.d.ts +1 -1
  570. package/lib/offcanvas/offcanvas/offcanvas.component.d.ts +82 -82
  571. package/lib/offcanvas/offcanvas-body/offcanvas-body.component.d.ts +6 -6
  572. package/lib/offcanvas/offcanvas-header/offcanvas-header.component.d.ts +6 -6
  573. package/lib/offcanvas/offcanvas-title/offcanvas-title.directive.d.ts +6 -6
  574. package/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.d.ts +14 -14
  575. package/lib/offcanvas/offcanvas.module.d.ts +13 -13
  576. package/lib/offcanvas/offcanvas.service.d.ts +15 -15
  577. package/lib/offcanvas/public_api.d.ts +7 -7
  578. package/lib/pagination/index.d.ts +1 -1
  579. package/lib/pagination/page-item/page-item.component.d.ts +6 -6
  580. package/lib/pagination/page-item/page-item.directive.d.ts +24 -24
  581. package/lib/pagination/page-link/page-link.directive.d.ts +6 -6
  582. package/lib/pagination/pagination/pagination.component.d.ts +22 -22
  583. package/lib/pagination/pagination.module.d.ts +11 -11
  584. package/lib/pagination/public_api.d.ts +5 -5
  585. package/lib/placeholder/index.d.ts +1 -1
  586. package/lib/placeholder/placeholder-animation.directive.d.ts +18 -18
  587. package/lib/placeholder/placeholder.directive.d.ts +22 -22
  588. package/lib/placeholder/placeholder.module.d.ts +9 -9
  589. package/lib/placeholder/public_api.d.ts +3 -3
  590. package/lib/popover/index.d.ts +1 -1
  591. package/lib/popover/popover/popover.component.d.ts +30 -30
  592. package/lib/popover/popover.directive.d.ts +58 -58
  593. package/lib/popover/popover.module.d.ts +9 -9
  594. package/lib/popover/public_api.d.ts +3 -3
  595. package/lib/progress/index.d.ts +1 -1
  596. package/lib/progress/progress-bar.component.d.ts +52 -52
  597. package/lib/progress/progress-bar.d.ts +10 -10
  598. package/lib/progress/progress.component.d.ts +32 -32
  599. package/lib/progress/progress.module.d.ts +9 -9
  600. package/lib/progress/public_api.d.ts +4 -4
  601. package/lib/services/class-toggle.service.d.ts +11 -11
  602. package/lib/services/index.d.ts +1 -1
  603. package/lib/services/intersection.service.d.ts +22 -22
  604. package/lib/services/listeners.service.d.ts +19 -19
  605. package/lib/services/public_api.d.ts +2 -2
  606. package/lib/shared/html-attr.directive.d.ts +16 -16
  607. package/lib/shared/index.d.ts +1 -1
  608. package/lib/shared/public_api.d.ts +3 -3
  609. package/lib/shared/shared.module.d.ts +11 -11
  610. package/lib/shared/template-id.directive.d.ts +9 -9
  611. package/lib/sidebar/index.d.ts +1 -1
  612. package/lib/sidebar/public_api.d.ts +9 -9
  613. package/lib/sidebar/sidebar/sidebar.component.d.ts +85 -85
  614. package/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.d.ts +16 -16
  615. package/lib/sidebar/sidebar-brand/sidebar-brand.component.d.ts +12 -12
  616. package/lib/sidebar/sidebar-footer/sidebar-footer.component.d.ts +7 -7
  617. package/lib/sidebar/sidebar-header/sidebar-header.component.d.ts +7 -7
  618. package/lib/sidebar/sidebar-nav/index.d.ts +1 -1
  619. package/lib/sidebar/sidebar-nav/public_api.d.ts +12 -12
  620. package/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.d.ts +7 -7
  621. package/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.d.ts +7 -7
  622. package/lib/sidebar/sidebar-nav/sidebar-nav-group.service.d.ts +14 -14
  623. package/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.d.ts +7 -7
  624. package/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.d.ts +10 -10
  625. package/lib/sidebar/sidebar-nav/sidebar-nav-label.component.d.ts +18 -18
  626. package/lib/sidebar/sidebar-nav/sidebar-nav-link.component.d.ts +34 -34
  627. package/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.d.ts +7 -7
  628. package/lib/sidebar/sidebar-nav/sidebar-nav-title.component.d.ts +15 -15
  629. package/lib/sidebar/sidebar-nav/sidebar-nav.component.d.ts +59 -59
  630. package/lib/sidebar/sidebar-nav/sidebar-nav.d.ts +53 -53
  631. package/lib/sidebar/sidebar-nav/sidebar-nav.service.d.ts +20 -20
  632. package/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.d.ts +25 -25
  633. package/lib/sidebar/sidebar-toggler/sidebar-toggler.component.d.ts +7 -7
  634. package/lib/sidebar/sidebar.module.d.ts +25 -25
  635. package/lib/sidebar/sidebar.service.d.ts +19 -19
  636. package/lib/smart-pagination/index.d.ts +1 -1
  637. package/lib/smart-pagination/public_api.d.ts +2 -2
  638. package/lib/smart-pagination/smart-pagination.component.d.ts +109 -109
  639. package/lib/smart-pagination/smart-pagination.module.d.ts +9 -9
  640. package/lib/smart-pagination/smart-pagination.type.d.ts +79 -79
  641. package/lib/smart-table/index.d.ts +1 -1
  642. package/lib/smart-table/public_api.d.ts +4 -3
  643. package/lib/smart-table/smart-table/smart-table.component.d.ts +145 -144
  644. package/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.d.ts +11 -11
  645. package/lib/smart-table/smart-table-filter/filter-input.directive.d.ts +24 -24
  646. package/lib/smart-table/smart-table-filter/smart-table-filter.component.d.ts +16 -16
  647. package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +45 -45
  648. package/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.d.ts +14 -14
  649. package/lib/smart-table/smart-table.module.d.ts +22 -22
  650. package/lib/smart-table/smart-table.type.d.ts +275 -275
  651. package/lib/spinner/index.d.ts +1 -1
  652. package/lib/spinner/public_api.d.ts +2 -2
  653. package/lib/spinner/spinner.component.d.ts +31 -31
  654. package/lib/spinner/spinner.module.d.ts +9 -9
  655. package/lib/table/index.d.ts +1 -1
  656. package/lib/table/public_api.d.ts +4 -4
  657. package/lib/table/table-active.directive.d.ts +16 -16
  658. package/lib/table/table-color.directive.d.ts +12 -12
  659. package/lib/table/table.directive.d.ts +90 -90
  660. package/lib/table/table.module.d.ts +10 -10
  661. package/lib/table/table.type.d.ts +76 -76
  662. package/lib/tabs/index.d.ts +1 -1
  663. package/lib/tabs/public_api.d.ts +5 -5
  664. package/lib/tabs/tab-content/tab-content.component.d.ts +33 -33
  665. package/lib/tabs/tab-content-ref.directive.d.ts +50 -50
  666. package/lib/tabs/tab-pane/tab-pane.component.d.ts +26 -26
  667. package/lib/tabs/tab.service.d.ts +14 -14
  668. package/lib/tabs/tabs.module.d.ts +10 -10
  669. package/lib/time-picker/index.d.ts +1 -1
  670. package/lib/time-picker/public_api.d.ts +2 -2
  671. package/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.d.ts +39 -39
  672. package/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.d.ts +38 -38
  673. package/lib/time-picker/time-picker.component.d.ts +196 -196
  674. package/lib/time-picker/time-picker.module.d.ts +14 -14
  675. package/lib/time-picker/time.utils.d.ts +57 -57
  676. package/lib/toast/index.d.ts +1 -1
  677. package/lib/toast/public_api.d.ts +8 -8
  678. package/lib/toast/toast/toast.component.d.ts +84 -84
  679. package/lib/toast/toast-body/toast-body.component.d.ts +9 -9
  680. package/lib/toast/toast-close.directive.d.ts +10 -10
  681. package/lib/toast/toast-header/toast-header.component.d.ts +14 -14
  682. package/lib/toast/toast.module.d.ts +14 -14
  683. package/lib/toast/toaster/toaster-host.directive.d.ts +8 -8
  684. package/lib/toast/toaster/toaster.component.d.ts +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,376 +1,376 @@
1
- import { Component, EventEmitter, HostBinding, Input, Output, ViewChildren } from '@angular/core';
2
- import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
3
- import { CalendarMonthComponent } from '../calendar-month/calendar-month.component';
4
- import { CalendarService } from '../calendar.service';
5
- import { tryDate } from '../calendar.utils';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../calendar.service";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "../calendar-navigation/calendar-navigation.component";
10
- import * as i4 from "../calendar-month/calendar-month.component";
11
- import * as i5 from "./calendar-class-view.pipe";
12
- export class CalendarComponent {
13
- constructor(calendarService) {
14
- this.calendarService = calendarService;
15
- this._calendarDate = tryDate(new Date());
16
- this._calendars = 1;
17
- this._dayFormat = 'numeric';
18
- this._disabledDates = [];
19
- this._startDate = null;
20
- this._endDate = null;
21
- this._firstDayOfWeek = 1;
22
- this._locale = 'default';
23
- this._maxDate = null;
24
- this._minDate = null;
25
- this._navigation = true;
26
- this._navYearFirst = false;
27
- this._range = false;
28
- this._view = 'days';
29
- this._weekdayFormat = 'short';
30
- this.calendarCellHover = new EventEmitter();
31
- this.calendarDateChange = new EventEmitter();
32
- this.endDateChange = new EventEmitter();
33
- this.startDateChange = new EventEmitter();
34
- this.viewChange = new EventEmitter();
35
- this._hoverDate = null;
36
- this.calendarStateSubscribe();
37
- }
38
- /**
39
- * Default date of the component
40
- * @type (Date | string)
41
- */
42
- set calendarDate(value) {
43
- // const _value = new Date(tryDate((value ?? this.startDate ?? new Date()), 'calendarDate'));
44
- const _value = new Date(tryDate(value ?? this.startDate, 'calendarDate'));
45
- if (!!_value && this._calendarDate.getTime() !== _value.getTime()) {
46
- const _calendarDate = new Date(new Date(_value.setDate(1)).setHours(0, 0, 0, 0));
47
- this._calendarDate = _calendarDate;
48
- this.calendarDateChange.emit(_calendarDate);
49
- this.calendarService.update({ calendarDate: _calendarDate });
50
- }
51
- }
52
- get calendarDate() {
53
- return this._calendarDate;
54
- }
55
- /**
56
- * The number of calendars that render on desktop devices.
57
- * @type number
58
- * default 1
59
- */
60
- set calendars(value) {
61
- this._calendars = coerceNumberProperty(value);
62
- }
63
- get calendars() {
64
- return this._calendars;
65
- }
66
- get calendarsArray() {
67
- return Array.from({ length: this.calendars });
68
- }
69
- /**
70
- * Set the format of day name.
71
- * @default 'numeric'
72
- * @type DayFormatType
73
- */
74
- set dayFormat(value) {
75
- this._dayFormat = value;
76
- this.calendarService.update({ dayFormat: this._dayFormat });
77
- }
78
- get dayFormat() {
79
- return this._dayFormat;
80
- }
81
- /**
82
- * Specify the list of dates that cannot be selected.
83
- * @type (Date[] | Date[][])
84
- */
85
- set disabledDates(value) {
86
- this._disabledDates = value;
87
- this.calendarService.update({ disabledDates: this._disabledDates });
88
- }
89
- get disabledDates() {
90
- return this._disabledDates;
91
- }
92
- /**
93
- * Initial selected date.
94
- * @type (Date | null)
95
- */
96
- set startDate(value) {
97
- this._startDate = !!value ? tryDate(value, 'startDate') : null;
98
- this.calendarService.update({ startDate: this._startDate });
99
- if (!this.range || !this._startDate || (this.endDate && this._startDate > this.endDate)) {
100
- this.endDate = null;
101
- }
102
- }
103
- get startDate() {
104
- return this._startDate;
105
- }
106
- /**
107
- * Initial selected to date (range).
108
- * @type (Date | null)
109
- */
110
- set endDate(value) {
111
- this._endDate = !!value ? tryDate(value, 'endDate') : null;
112
- // this._endDate = this.range ? this._endDate : null;
113
- this.calendarService.update({ endDate: this._endDate });
114
- }
115
- get endDate() {
116
- return this.range ? this._endDate : null;
117
- }
118
- /**
119
- * Sets the day of start week.
120
- * - 0 - Sunday,
121
- * - 1 - Monday,
122
- * - 2 - Tuesday,
123
- * - 3 - Wednesday,
124
- * - 4 - Thursday,
125
- * - 5 - Friday,
126
- * - 6 - Saturday,
127
- *
128
- * @type number
129
- * @default 1
130
- */
131
- set firstDayOfWeek(value) {
132
- this._firstDayOfWeek = coerceNumberProperty(value);
133
- }
134
- get firstDayOfWeek() {
135
- return this._firstDayOfWeek;
136
- }
137
- /**
138
- * Sets the default locale for components. If not set, it is inherited from the browser.
139
- * @default 'default'
140
- */
141
- set locale(value) {
142
- this._locale = value;
143
- this.calendarService.update({ locale: value });
144
- }
145
- get locale() {
146
- return this._locale;
147
- }
148
- /**
149
- * Max selectable date.
150
- */
151
- set maxDate(value) {
152
- this._maxDate = !!value ? tryDate(value, 'maxDate') : null;
153
- this.calendarService.update({ maxDate: this._maxDate });
154
- }
155
- get maxDate() {
156
- return this._maxDate;
157
- }
158
- /**
159
- * Min selectable date.
160
- */
161
- set minDate(value) {
162
- this._minDate = value ? tryDate(value, 'minDate') : null;
163
- this.calendarService.update({ minDate: this._minDate });
164
- }
165
- get minDate() {
166
- return this._minDate;
167
- }
168
- /**
169
- * Show navigation.
170
- * @type boolean
171
- */
172
- set navigation(value) {
173
- this._navigation = coerceBooleanProperty(value);
174
- }
175
- get navigation() {
176
- return this._navigation;
177
- }
178
- /**
179
- * Reorder year-month navigation, and render year first.
180
- * @type boolean
181
- * @default false
182
- */
183
- set navYearFirst(value) {
184
- this._navYearFirst = coerceBooleanProperty(value);
185
- this.calendarService.update({ navYearFirst: this._navYearFirst });
186
- }
187
- get navYearFirst() {
188
- return this._navYearFirst;
189
- }
190
- /**
191
- * Allow range selection.
192
- * @type boolean
193
- * @default false
194
- */
195
- set range(value) {
196
- this._range = coerceBooleanProperty(value);
197
- this.calendarService.update({ range: this._range });
198
- }
199
- get range() {
200
- return this._range;
201
- }
202
- /**
203
- * Set calendar view.
204
- * @type 'days' | 'months' | 'years'
205
- * @default 'days'
206
- */
207
- set view(value) {
208
- this._view = value;
209
- this.calendarService.update({ view: value });
210
- }
211
- get view() {
212
- return this._view;
213
- }
214
- /**
215
- * Set length or format of day name.
216
- * @type number | 'long' | 'narrow' | 'short'
217
- * @default 'short'
218
- */
219
- set weekdayFormat(value) {
220
- this._weekdayFormat = value;
221
- this.calendarService.update({ weekdayFormat: this._weekdayFormat });
222
- }
223
- get weekdayFormat() {
224
- return this._weekdayFormat;
225
- }
226
- set dateFilter(value) {
227
- this.calendarService.update({ dateFilter: value });
228
- }
229
- // used with calendarService
230
- set hoverDate(value) {
231
- this._hoverDate = value;
232
- this.calendarCellHover.emit(value);
233
- }
234
- get hoverDate() {
235
- return this._hoverDate;
236
- }
237
- get hostClasses() {
238
- return {
239
- 'calendars': true
240
- };
241
- }
242
- ngOnDestroy() {
243
- this.calendarStateSubscribe(false);
244
- }
245
- ngOnInit() {
246
- this.calendarService.update({ locale: this.locale, view: this.view, range: this.range });
247
- }
248
- calendarStateSubscribe(subscribe = true) {
249
- if (subscribe) {
250
- this.calendarStateSubscription =
251
- this.calendarService.calendarState$.subscribe(state => {
252
- const keys = Object.keys(state);
253
- for (const key of keys) {
254
- if (key in this) {
255
- // @ts-ignore
256
- if (this[key] !== state[key]) {
257
- // @ts-ignore
258
- this[key] = state[key];
259
- if (key === 'startDate') {
260
- setTimeout(() => {
261
- this.startDateChange.emit(this._startDate);
262
- });
263
- continue;
264
- }
265
- if (key === 'endDate') {
266
- setTimeout(() => {
267
- this.endDateChange.emit(this._endDate);
268
- });
269
- }
270
- }
271
- }
272
- }
273
- });
274
- return;
275
- }
276
- this.calendarStateSubscription.unsubscribe();
277
- }
278
- setCalendarPage(years, months = 0, setMonth) {
279
- const year = this.calendarDate.getFullYear();
280
- const month = this.calendarDate.getMonth();
281
- const d = new Date(year, month, 1);
282
- years && d.setFullYear(d.getFullYear() + years);
283
- months && d.setMonth(d.getMonth() + months);
284
- typeof setMonth === 'number' && d.setMonth(setMonth);
285
- this.calendarDate = d;
286
- }
287
- handleNavigationClick(direction, years = false) {
288
- if (direction === 'prev') {
289
- if (years) {
290
- this.setCalendarPage(this.view === 'years' ? -10 : -1);
291
- return;
292
- }
293
- if (this.view !== 'days') {
294
- this.setCalendarPage(-1);
295
- return;
296
- }
297
- this.setCalendarPage(0, -1);
298
- return;
299
- }
300
- if (direction === 'next') {
301
- if (years) {
302
- this.setCalendarPage(this.view === 'years' ? 10 : 1);
303
- return;
304
- }
305
- if (this.view !== 'days') {
306
- this.setCalendarPage(1);
307
- return;
308
- }
309
- this.setCalendarPage(0, 1);
310
- return;
311
- }
312
- }
313
- /**
314
- * Clear startDate and endDate
315
- * @type void
316
- */
317
- clearDates() {
318
- this.calendarService.update({ endDate: null });
319
- this.calendarService.update({ startDate: null });
320
- }
321
- }
322
- CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CalendarComponent, deps: [{ token: i1.CalendarService }], target: i0.ɵɵFactoryTarget.Component });
323
- CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CalendarComponent, selector: "c-calendar", inputs: { calendarDate: "calendarDate", calendars: "calendars", dayFormat: "dayFormat", disabledDates: "disabledDates", startDate: "startDate", endDate: "endDate", firstDayOfWeek: "firstDayOfWeek", locale: "locale", maxDate: "maxDate", minDate: "minDate", navigation: "navigation", navYearFirst: "navYearFirst", range: "range", view: "view", weekdayFormat: "weekdayFormat", dateFilter: "dateFilter" }, outputs: { calendarCellHover: "calendarCellHover", calendarDateChange: "calendarDateChange", endDateChange: "endDateChange", startDateChange: "startDateChange", viewChange: "viewChange" }, host: { properties: { "class": "this.hostClasses" } }, providers: [CalendarService], viewQueries: [{ propertyName: "calendarMonths", predicate: CalendarMonthComponent, descendants: true }], exportAs: ["cCalendar"], ngImport: i0, template: "<ng-container *ngFor=\"let calendar of calendarsArray; let i=index;\">\r\n <div [ngClass]=\"view | calendarClassView\">\r\n <c-calendar-navigation\r\n [addMonths]=\"i\"\r\n [navigation]=\"navigation\"\r\n (navigationClick)=\"handleNavigationClick($event.direction, $event.years)\"\r\n ></c-calendar-navigation>\r\n\r\n <c-calendar-month\r\n [addMonths]=\"i\"\r\n [firstDayOfWeek]=\"firstDayOfWeek\"\r\n [weekdayFormat]=\"weekdayFormat\"\r\n ></c-calendar-month>\r\n </div>\r\n</ng-container>\r\n", styles: [".btn-transparent:focus-visible{outline:-webkit-focus-ring-color auto 1px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.CalendarNavigationComponent, selector: "c-calendar-navigation", inputs: ["addMonths", "calendarDate", "navigation", "navYearFirst"], outputs: ["navigationClick"] }, { kind: "component", type: i4.CalendarMonthComponent, selector: "c-calendar-month", inputs: ["addMonths", "startDate", "endDate", "disabledDates", "firstDayOfWeek", "locale", "range", "weekdayFormat", "view", "maxDate", "minDate", "calendarDate"], exportAs: ["cCalendarMonth"] }, { kind: "pipe", type: i5.CalendarClassViewPipe, name: "calendarClassView" }] });
324
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CalendarComponent, decorators: [{
325
- type: Component,
326
- args: [{ selector: 'c-calendar', exportAs: 'cCalendar', providers: [CalendarService], template: "<ng-container *ngFor=\"let calendar of calendarsArray; let i=index;\">\r\n <div [ngClass]=\"view | calendarClassView\">\r\n <c-calendar-navigation\r\n [addMonths]=\"i\"\r\n [navigation]=\"navigation\"\r\n (navigationClick)=\"handleNavigationClick($event.direction, $event.years)\"\r\n ></c-calendar-navigation>\r\n\r\n <c-calendar-month\r\n [addMonths]=\"i\"\r\n [firstDayOfWeek]=\"firstDayOfWeek\"\r\n [weekdayFormat]=\"weekdayFormat\"\r\n ></c-calendar-month>\r\n </div>\r\n</ng-container>\r\n", styles: [".btn-transparent:focus-visible{outline:-webkit-focus-ring-color auto 1px}\n"] }]
327
- }], ctorParameters: function () { return [{ type: i1.CalendarService }]; }, propDecorators: { calendarDate: [{
328
- type: Input
329
- }], calendars: [{
330
- type: Input
331
- }], dayFormat: [{
332
- type: Input
333
- }], disabledDates: [{
334
- type: Input
335
- }], startDate: [{
336
- type: Input
337
- }], endDate: [{
338
- type: Input
339
- }], firstDayOfWeek: [{
340
- type: Input
341
- }], locale: [{
342
- type: Input
343
- }], maxDate: [{
344
- type: Input
345
- }], minDate: [{
346
- type: Input
347
- }], navigation: [{
348
- type: Input
349
- }], navYearFirst: [{
350
- type: Input
351
- }], range: [{
352
- type: Input
353
- }], view: [{
354
- type: Input
355
- }], weekdayFormat: [{
356
- type: Input
357
- }], dateFilter: [{
358
- type: Input
359
- }], calendarCellHover: [{
360
- type: Output
361
- }], calendarDateChange: [{
362
- type: Output
363
- }], endDateChange: [{
364
- type: Output
365
- }], startDateChange: [{
366
- type: Output
367
- }], viewChange: [{
368
- type: Output
369
- }], hostClasses: [{
370
- type: HostBinding,
371
- args: ['class']
372
- }], calendarMonths: [{
373
- type: ViewChildren,
374
- args: [CalendarMonthComponent]
375
- }] } });
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBb0QsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7QUFVNUMsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixZQUNVLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXlCbEMsa0JBQWEsR0FBUyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBZ0IxQyxlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBcUJ2QixlQUFVLEdBQWtCLFNBQVMsQ0FBQztRQWdCdEMsbUJBQWMsR0FBd0IsRUFBRSxDQUFDO1FBbUJqRCxlQUFVLEdBQWdCLElBQUksQ0FBQztRQWlCL0IsYUFBUSxHQUFrQixJQUFJLENBQUM7UUF3QnZCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBZ0I1QixZQUFPLEdBQVcsU0FBUyxDQUFDO1FBZTVCLGFBQVEsR0FBZ0Is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QVc7dUJBQUMsT0FBTztnQkFPa0IsY0FBYztzQkFBbkQsWUFBWTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZHJlblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IENhbGVuZGFyTW9udGhDb21wb25lbnQgfSBmcm9tICcuLi9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UsIERhdGVGaWx0ZXJUeXBlLCBEYXlGb3JtYXRUeXBlLCBXZWVrZGF5Rm9ybWF0VHlwZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0cnlEYXRlIH0gZnJvbSAnLi4vY2FsZW5kYXIudXRpbHMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYy1jYWxlbmRhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGV4cG9ydEFzOiAnY0NhbGVuZGFyJyxcclxuICBwcm92aWRlcnM6IFtDYWxlbmRhclNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX25hdmlnYXRpb246IEJvb2xlYW5JbnB1dDtcclxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbmF2WWVhckZpcnN0OiBCb29sZWFuSW5wdXQ7XHJcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3JhbmdlOiBCb29sZWFuSW5wdXQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZhdWx0IGRhdGUgb2YgdGhlIGNvbXBvbmVudFxyXG4gICAqIEB0eXBlICAoRGF0ZSB8IHN0cmluZylcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBjYWxlbmRhckRhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgIC8vIGNvbnN0IF92YWx1ZSA9IG5ldyBEYXRlKHRyeURhdGUoKHZhbHVlID8/IHRoaXMuc3RhcnREYXRlID8/IG5ldyBEYXRlKCkpLCAnY2FsZW5kYXJEYXRlJykpO1xyXG4gICAgY29uc3QgX3ZhbHVlID0gbmV3IERhdGUodHJ5RGF0ZSh2YWx1ZSA/PyB0aGlzLnN0YXJ0RGF0ZSwgJ2NhbGVuZGFyRGF0ZScpKTtcclxuICAgIGlmICghIV92YWx1ZSAmJiB0aGlzLl9jYWxlbmRhckRhdGUuZ2V0VGltZSgpICE9PSBfdmFsdWUuZ2V0VGltZSgpKSB7XHJcbiAgICAgIGNvbnN0IF9jYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZShfdmFsdWUuc2V0RGF0ZSgxKSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xyXG4gICAgICB0aGlzLl9jYWxlbmRhckRhdGUgPSBfY2FsZW5kYXJEYXRlO1xyXG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZUNoYW5nZS5lbWl0KF9jYWxlbmRhckRhdGUpO1xyXG4gICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBjYWxlbmRhckRhdGU6IF9jYWxlbmRhckRhdGUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY2FsZW5kYXJEYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyRGF0ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NhbGVuZGFyRGF0ZTogRGF0ZSA9IHRyeURhdGUobmV3IERhdGUoKSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBudW1iZXIgb2YgY2FsZW5kYXJzIHRoYXQgcmVuZGVyIG9uIGRlc2t0b3AgZGV2aWNlcy5cclxuICAgKiBAdHlwZSBudW1iZXJcclxuICAgKiBkZWZhdWx0IDFcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBjYWxlbmRhcnModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fY2FsZW5kYXJzID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhbGVuZGFycygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NhbGVuZGFyczogbnVtYmVyID0gMTtcclxuXHJcbiAgZ2V0IGNhbGVuZGFyc0FycmF5KCkge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuY2FsZW5kYXJzIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBmb3JtYXQgb2YgZGF5IG5hbWUuXHJcbiAgICogQGRlZmF1bHQgJ251bWVyaWMnXHJcbiAgICogQHR5cGUgRGF5Rm9ybWF0VHlwZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRheUZvcm1hdCh2YWx1ZTogRGF5Rm9ybWF0VHlwZSkge1xyXG4gICAgdGhpcy5fZGF5Rm9ybWF0ID0gdmFsdWU7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBkYXlGb3JtYXQ6IHRoaXMuX2RheUZvcm1hdCB9KTtcclxuICB9XHJcblxyXG4gIGdldCBkYXlGb3JtYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF5Rm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGF5Rm9ybWF0OiBEYXlGb3JtYXRUeXBlID0gJ251bWVyaWMnO1xyXG5cclxuICAvKipcclxuICAgKiBTcGVjaWZ5IHRoZSBsaXN0IG9mIGRhdGVzIHRoYXQgY2Fubm90IGJlIHNlbGVjdGVkLlxyXG4gICAqIEB0eXBlICAoRGF0ZVtdIHwgRGF0ZVtdW10pXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZGlzYWJsZWREYXRlcyh2YWx1ZTogRGF0ZVtdIHwgRGF0ZVtdW10pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkRGF0ZXMgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGRpc2FibGVkRGF0ZXM6IHRoaXMuX2Rpc2FibGVkRGF0ZXMgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzYWJsZWREYXRlcygpOiBEYXRlW10gfCBEYXRlW11bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWREYXRlcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Rpc2FibGVkRGF0ZXM6IChEYXRlW10gfCBEYXRlW11bXSkgPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbCBzZWxlY3RlZCBkYXRlLlxyXG4gICAqIEB0eXBlICAoRGF0ZSB8IG51bGwpXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgc3RhcnREYXRlKHZhbHVlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fc3RhcnREYXRlID0gISF2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdzdGFydERhdGUnKSA6IG51bGw7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBzdGFydERhdGU6IHRoaXMuX3N0YXJ0RGF0ZSB9KTtcclxuICAgIGlmICghdGhpcy5yYW5nZSB8fCAhdGhpcy5fc3RhcnREYXRlIHx8ICh0aGlzLmVuZERhdGUgJiYgdGhpcy5fc3RhcnREYXRlID4gdGhpcy5lbmREYXRlKSkge1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHN0YXJ0RGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zdGFydERhdGU7XHJcbiAgfVxyXG5cclxuICBfc3RhcnREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgdG8gZGF0ZSAocmFuZ2UpLlxyXG4gICAqIEB0eXBlICAoRGF0ZSB8IG51bGwpXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZW5kRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2VuZERhdGUgPSAhIXZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ2VuZERhdGUnKSA6IG51bGw7XHJcbiAgICAvLyB0aGlzLl9lbmREYXRlID0gdGhpcy5yYW5nZSA/IHRoaXMuX2VuZERhdGUgOiBudWxsO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgZW5kRGF0ZTogdGhpcy5fZW5kRGF0ZSB9KTtcclxuICB9XHJcblxyXG4gIGdldCBlbmREYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmFuZ2UgPyB0aGlzLl9lbmREYXRlIDogbnVsbDtcclxuICB9XHJcblxyXG4gIF9lbmREYXRlOiAoRGF0ZSB8IG51bGwpID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGF5IG9mIHN0YXJ0IHdlZWsuXHJcbiAgICogLSAwIC0gU3VuZGF5LFxyXG4gICAqIC0gMSAtIE1vbmRheSxcclxuICAgKiAtIDIgLSBUdWVzZGF5LFxyXG4gICAqIC0gMyAtIFdlZG5lc2RheSxcclxuICAgKiAtIDQgLSBUaHVyc2RheSxcclxuICAgKiAtIDUgLSBGcmlkYXksXHJcbiAgICogLSA2IC0gU2F0dXJkYXksXHJcbiAgICpcclxuICAgKiBAdHlwZSBudW1iZXJcclxuICAgKiBAZGVmYXVsdCAxXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZmlyc3REYXlPZldlZWsodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fZmlyc3REYXlPZldlZWsgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9maXJzdERheU9mV2VlaztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpcnN0RGF5T2ZXZWVrOiBudW1iZXIgPSAxO1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkZWZhdWx0IGxvY2FsZSBmb3IgY29tcG9uZW50cy4gSWYgbm90IHNldCwgaXQgaXMgaW5oZXJpdGVkIGZyb20gdGhlIGJyb3dzZXIuXHJcbiAgICogQGRlZmF1bHQgJ2RlZmF1bHQnXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgbG9jYWxlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2xvY2FsZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgbG9jYWxlOiB2YWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGdldCBsb2NhbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCBzZWxlY3RhYmxlIGRhdGUuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgbWF4RGF0ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX21heERhdGUgPSAhIXZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ21heERhdGUnKSA6IG51bGw7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBtYXhEYXRlOiB0aGlzLl9tYXhEYXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heERhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX21heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogTWluIHNlbGVjdGFibGUgZGF0ZS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBtaW5EYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fbWluRGF0ZSA9IHZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ21pbkRhdGUnKSA6IG51bGw7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBtaW5EYXRlOiB0aGlzLl9taW5EYXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1pbkRhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX21pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBuYXZpZ2F0aW9uLlxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBuYXZpZ2F0aW9uKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9uYXZpZ2F0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBuYXZpZ2F0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9uYXZpZ2F0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVvcmRlciB5ZWFyLW1vbnRoIG5hdmlnYXRpb24sIGFuZCByZW5kZXIgeWVhciBmaXJzdC5cclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBuYXZZZWFyRmlyc3QodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX25hdlllYXJGaXJzdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBuYXZZZWFyRmlyc3Q6IHRoaXMuX25hdlllYXJGaXJzdCB9KTtcclxuICB9XHJcblxyXG4gIGdldCBuYXZZZWFyRmlyc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmF2WWVhckZpcnN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbmF2WWVhckZpcnN0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93IHJhbmdlIHNlbGVjdGlvbi5cclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCByYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgcmFuZ2U6IHRoaXMuX3JhbmdlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGNhbGVuZGFyIHZpZXcuXHJcbiAgICogQHR5cGUgJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnXHJcbiAgICogQGRlZmF1bHQgJ2RheXMnXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgdmlldyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fdmlldyA9IHZhbHVlO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgdmlldzogdmFsdWUgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmlldygpIHtcclxuICAgIHJldHVybiB0aGlzLl92aWV3O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmlldzogJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnID0gJ2RheXMnO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgbGVuZ3RoIG9yIGZvcm1hdCBvZiBkYXkgbmFtZS5cclxuICAgKiBAdHlwZSBudW1iZXIgfCAnbG9uZycgfCAnbmFycm93JyB8ICdzaG9ydCdcclxuICAgKiBAZGVmYXVsdCAnc2hvcnQnXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgd2Vla2RheUZvcm1hdCh2YWx1ZTogV2Vla2RheUZvcm1hdFR5cGUpIHtcclxuICAgIHRoaXMuX3dlZWtkYXlGb3JtYXQgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHdlZWtkYXlGb3JtYXQ6IHRoaXMuX3dlZWtkYXlGb3JtYXQgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgd2Vla2RheUZvcm1hdCgpIHtcclxuICAgIHJldHVybiB0aGlzLl93ZWVrZGF5Rm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfd2Vla2RheUZvcm1hdDogV2Vla2RheUZvcm1hdFR5cGUgPSAnc2hvcnQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBkYXRlRmlsdGVyKHZhbHVlOiBEYXRlRmlsdGVyVHlwZSB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgZGF0ZUZpbHRlcjogdmFsdWUgfSk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgY2FsZW5kYXJDZWxsSG92ZXI6IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xyXG4gIEBPdXRwdXQoKSBjYWxlbmRhckRhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuICBAT3V0cHV0KCkgZW5kRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XHJcbiAgQE91dHB1dCgpIHN0YXJ0RGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XHJcbiAgQE91dHB1dCgpIHZpZXdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8vIHVzZWQgd2l0aCBjYWxlbmRhclNlcnZpY2VcclxuICBzZXQgaG92ZXJEYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCkge1xyXG4gICAgdGhpcy5faG92ZXJEYXRlID0gdmFsdWU7XHJcbiAgICB0aGlzLmNhbGVuZGFyQ2VsbEhvdmVyLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhvdmVyRGF0ZSgpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5faG92ZXJEYXRlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaG92ZXJEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgY2FsZW5kYXJTdGF0ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXHJcbiAgZ2V0IGhvc3RDbGFzc2VzKCk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnY2FsZW5kYXJzJzogdHJ1ZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oQ2FsZW5kYXJNb250aENvbXBvbmVudCkgY2FsZW5kYXJNb250aHMhOiBRdWVyeUxpc3Q8Q2FsZW5kYXJNb250aENvbXBvbmVudD47XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgbG9jYWxlOiB0aGlzLmxvY2FsZSwgdmlldzogdGhpcy52aWV3LCByYW5nZTogdGhpcy5yYW5nZSB9KTtcclxuICB9XHJcblxyXG4gIGNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoc3Vic2NyaWJlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKHN1YnNjcmliZSkge1xyXG4gICAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpcHRpb24gPVxyXG4gICAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyU3RhdGUkLnN1YnNjcmliZShzdGF0ZSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc3RhdGUpO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICBpZiAoa2V5IGluIHRoaXMpIHtcclxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXNba2V5XSAhPT0gc3RhdGVba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdGhpc1trZXldID0gc3RhdGVba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICdzdGFydERhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlQ2hhbmdlLmVtaXQodGhpcy5fc3RhcnREYXRlKTtcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2VuZERhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5kRGF0ZUNoYW5nZS5lbWl0KHRoaXMuX2VuZERhdGUpO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRDYWxlbmRhclBhZ2UoeWVhcnM6IG51bWJlciwgbW9udGhzID0gMCwgc2V0TW9udGg/OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHllYXIgPSB0aGlzLmNhbGVuZGFyRGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbW9udGggPSB0aGlzLmNhbGVuZGFyRGF0ZS5nZXRNb250aCgpO1xyXG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKTtcclxuXHJcbiAgICB5ZWFycyAmJiBkLnNldEZ1bGxZZWFyKGQuZ2V0RnVsbFllYXIoKSArIHllYXJzKTtcclxuICAgIG1vbnRocyAmJiBkLnNldE1vbnRoKGQuZ2V0TW9udGgoKSArIG1vbnRocyk7XHJcbiAgICB0eXBlb2Ygc2V0TW9udGggPT09ICdudW1iZXInICYmIGQuc2V0TW9udGgoc2V0TW9udGgpO1xyXG5cclxuICAgIHRoaXMuY2FsZW5kYXJEYXRlID0gZDtcclxuICB9XHJcblxyXG4gIGhhbmRsZU5hdmlnYXRpb25DbGljayhkaXJlY3Rpb246ICdwcmV2JyB8ICduZXh0JywgeWVhcnMgPSBmYWxzZSkge1xyXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3ByZXYnKSB7XHJcbiAgICAgIGlmICh5ZWFycykge1xyXG4gICAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKHRoaXMudmlldyA9PT0gJ3llYXJzJyA/IC0xMCA6IC0xKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnZpZXcgIT09ICdkYXlzJykge1xyXG4gICAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKC0xKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKDAsIC0xKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ25leHQnKSB7XHJcbiAgICAgIGlmICh5ZWFycykge1xyXG4gICAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKHRoaXMudmlldyA9PT0gJ3llYXJzJyA/IDEwIDogMSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy52aWV3ICE9PSAnZGF5cycpIHtcclxuICAgICAgICB0aGlzLnNldENhbGVuZGFyUGFnZSgxKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKDAsIDEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBzdGFydERhdGUgYW5kIGVuZERhdGVcclxuICAgKiBAdHlwZSB2b2lkXHJcbiAgICovXHJcbiAgcHVibGljIGNsZWFyRGF0ZXMoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBlbmREYXRlOiBudWxsIH0pO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgc3RhcnREYXRlOiBudWxsIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjYWxlbmRhciBvZiBjYWxlbmRhcnNBcnJheTsgbGV0IGk9aW5kZXg7XCI+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJ2aWV3IHwgY2FsZW5kYXJDbGFzc1ZpZXdcIj5cclxuICAgIDxjLWNhbGVuZGFyLW5hdmlnYXRpb25cclxuICAgICAgW2FkZE1vbnRoc109XCJpXCJcclxuICAgICAgW25hdmlnYXRpb25dPVwibmF2aWdhdGlvblwiXHJcbiAgICAgIChuYXZpZ2F0aW9uQ2xpY2spPVwiaGFuZGxlTmF2aWdhdGlvbkNsaWNrKCRldmVudC5kaXJlY3Rpb24sICRldmVudC55ZWFycylcIlxyXG4gICAgPjwvYy1jYWxlbmRhci1uYXZpZ2F0aW9uPlxyXG5cclxuICAgIDxjLWNhbGVuZGFyLW1vbnRoXHJcbiAgICAgIFthZGRNb250aHNdPVwiaVwiXHJcbiAgICAgIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiXHJcbiAgICAgIFt3ZWVrZGF5Rm9ybWF0XT1cIndlZWtkYXlGb3JtYXRcIlxyXG4gICAgPjwvYy1jYWxlbmRhci1tb250aD5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
1
+ import { Component, EventEmitter, HostBinding, Input, Output, ViewChildren } from '@angular/core';
2
+ import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
3
+ import { CalendarMonthComponent } from '../calendar-month/calendar-month.component';
4
+ import { CalendarService } from '../calendar.service';
5
+ import { tryDate } from '../calendar.utils';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../calendar.service";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "../calendar-navigation/calendar-navigation.component";
10
+ import * as i4 from "../calendar-month/calendar-month.component";
11
+ import * as i5 from "./calendar-class-view.pipe";
12
+ export class CalendarComponent {
13
+ constructor(calendarService) {
14
+ this.calendarService = calendarService;
15
+ this._calendarDate = tryDate(new Date());
16
+ this._calendars = 1;
17
+ this._dayFormat = 'numeric';
18
+ this._disabledDates = [];
19
+ this._startDate = null;
20
+ this._endDate = null;
21
+ this._firstDayOfWeek = 1;
22
+ this._locale = 'default';
23
+ this._maxDate = null;
24
+ this._minDate = null;
25
+ this._navigation = true;
26
+ this._navYearFirst = false;
27
+ this._range = false;
28
+ this._view = 'days';
29
+ this._weekdayFormat = 'short';
30
+ this.calendarCellHover = new EventEmitter();
31
+ this.calendarDateChange = new EventEmitter();
32
+ this.endDateChange = new EventEmitter();
33
+ this.startDateChange = new EventEmitter();
34
+ this.viewChange = new EventEmitter();
35
+ this._hoverDate = null;
36
+ this.calendarStateSubscribe();
37
+ }
38
+ /**
39
+ * Default date of the component
40
+ * @type (Date | string)
41
+ */
42
+ set calendarDate(value) {
43
+ // const _value = new Date(tryDate((value ?? this.startDate ?? new Date()), 'calendarDate'));
44
+ const _value = new Date(tryDate(value ?? this.startDate, 'calendarDate'));
45
+ if (!!_value && this._calendarDate.getTime() !== _value.getTime()) {
46
+ const _calendarDate = new Date(new Date(_value.setDate(1)).setHours(0, 0, 0, 0));
47
+ this._calendarDate = _calendarDate;
48
+ this.calendarDateChange.emit(_calendarDate);
49
+ this.calendarService.update({ calendarDate: _calendarDate });
50
+ }
51
+ }
52
+ get calendarDate() {
53
+ return this._calendarDate;
54
+ }
55
+ /**
56
+ * The number of calendars that render on desktop devices.
57
+ * @type number
58
+ * default 1
59
+ */
60
+ set calendars(value) {
61
+ this._calendars = coerceNumberProperty(value);
62
+ }
63
+ get calendars() {
64
+ return this._calendars;
65
+ }
66
+ get calendarsArray() {
67
+ return Array.from({ length: this.calendars });
68
+ }
69
+ /**
70
+ * Set the format of day name.
71
+ * @default 'numeric'
72
+ * @type DayFormatType
73
+ */
74
+ set dayFormat(value) {
75
+ this._dayFormat = value;
76
+ this.calendarService.update({ dayFormat: this._dayFormat });
77
+ }
78
+ get dayFormat() {
79
+ return this._dayFormat;
80
+ }
81
+ /**
82
+ * Specify the list of dates that cannot be selected.
83
+ * @type (Date[] | Date[][])
84
+ */
85
+ set disabledDates(value) {
86
+ this._disabledDates = value;
87
+ this.calendarService.update({ disabledDates: this._disabledDates });
88
+ }
89
+ get disabledDates() {
90
+ return this._disabledDates;
91
+ }
92
+ /**
93
+ * Initial selected date.
94
+ * @type (Date | null)
95
+ */
96
+ set startDate(value) {
97
+ this._startDate = !!value ? tryDate(value, 'startDate') : null;
98
+ this.calendarService.update({ startDate: this._startDate });
99
+ if (!this.range || !this._startDate || (this.endDate && this._startDate > this.endDate)) {
100
+ this.endDate = null;
101
+ }
102
+ }
103
+ get startDate() {
104
+ return this._startDate;
105
+ }
106
+ /**
107
+ * Initial selected to date (range).
108
+ * @type (Date | null)
109
+ */
110
+ set endDate(value) {
111
+ this._endDate = !!value ? tryDate(value, 'endDate') : null;
112
+ // this._endDate = this.range ? this._endDate : null;
113
+ this.calendarService.update({ endDate: this._endDate });
114
+ }
115
+ get endDate() {
116
+ return this.range ? this._endDate : null;
117
+ }
118
+ /**
119
+ * Sets the day of start week.
120
+ * - 0 - Sunday,
121
+ * - 1 - Monday,
122
+ * - 2 - Tuesday,
123
+ * - 3 - Wednesday,
124
+ * - 4 - Thursday,
125
+ * - 5 - Friday,
126
+ * - 6 - Saturday,
127
+ *
128
+ * @type number
129
+ * @default 1
130
+ */
131
+ set firstDayOfWeek(value) {
132
+ this._firstDayOfWeek = coerceNumberProperty(value);
133
+ }
134
+ get firstDayOfWeek() {
135
+ return this._firstDayOfWeek;
136
+ }
137
+ /**
138
+ * Sets the default locale for components. If not set, it is inherited from the browser.
139
+ * @default 'default'
140
+ */
141
+ set locale(value) {
142
+ this._locale = value;
143
+ this.calendarService.update({ locale: value });
144
+ }
145
+ get locale() {
146
+ return this._locale;
147
+ }
148
+ /**
149
+ * Max selectable date.
150
+ */
151
+ set maxDate(value) {
152
+ this._maxDate = !!value ? tryDate(value, 'maxDate') : null;
153
+ this.calendarService.update({ maxDate: this._maxDate });
154
+ }
155
+ get maxDate() {
156
+ return this._maxDate;
157
+ }
158
+ /**
159
+ * Min selectable date.
160
+ */
161
+ set minDate(value) {
162
+ this._minDate = value ? tryDate(value, 'minDate') : null;
163
+ this.calendarService.update({ minDate: this._minDate });
164
+ }
165
+ get minDate() {
166
+ return this._minDate;
167
+ }
168
+ /**
169
+ * Show navigation.
170
+ * @type boolean
171
+ */
172
+ set navigation(value) {
173
+ this._navigation = coerceBooleanProperty(value);
174
+ }
175
+ get navigation() {
176
+ return this._navigation;
177
+ }
178
+ /**
179
+ * Reorder year-month navigation, and render year first.
180
+ * @type boolean
181
+ * @default false
182
+ */
183
+ set navYearFirst(value) {
184
+ this._navYearFirst = coerceBooleanProperty(value);
185
+ this.calendarService.update({ navYearFirst: this._navYearFirst });
186
+ }
187
+ get navYearFirst() {
188
+ return this._navYearFirst;
189
+ }
190
+ /**
191
+ * Allow range selection.
192
+ * @type boolean
193
+ * @default false
194
+ */
195
+ set range(value) {
196
+ this._range = coerceBooleanProperty(value);
197
+ this.calendarService.update({ range: this._range });
198
+ }
199
+ get range() {
200
+ return this._range;
201
+ }
202
+ /**
203
+ * Set calendar view.
204
+ * @type 'days' | 'months' | 'years'
205
+ * @default 'days'
206
+ */
207
+ set view(value) {
208
+ this._view = value;
209
+ this.calendarService.update({ view: value });
210
+ }
211
+ get view() {
212
+ return this._view;
213
+ }
214
+ /**
215
+ * Set length or format of day name.
216
+ * @type number | 'long' | 'narrow' | 'short'
217
+ * @default 'short'
218
+ */
219
+ set weekdayFormat(value) {
220
+ this._weekdayFormat = value;
221
+ this.calendarService.update({ weekdayFormat: this._weekdayFormat });
222
+ }
223
+ get weekdayFormat() {
224
+ return this._weekdayFormat;
225
+ }
226
+ set dateFilter(value) {
227
+ this.calendarService.update({ dateFilter: value });
228
+ }
229
+ // used with calendarService
230
+ set hoverDate(value) {
231
+ this._hoverDate = value;
232
+ this.calendarCellHover.emit(value);
233
+ }
234
+ get hoverDate() {
235
+ return this._hoverDate;
236
+ }
237
+ get hostClasses() {
238
+ return {
239
+ 'calendars': true
240
+ };
241
+ }
242
+ ngOnDestroy() {
243
+ this.calendarStateSubscribe(false);
244
+ }
245
+ ngOnInit() {
246
+ this.calendarService.update({ locale: this.locale, view: this.view, range: this.range });
247
+ }
248
+ calendarStateSubscribe(subscribe = true) {
249
+ if (subscribe) {
250
+ this.calendarStateSubscription =
251
+ this.calendarService.calendarState$.subscribe(state => {
252
+ const keys = Object.keys(state);
253
+ for (const key of keys) {
254
+ if (key in this) {
255
+ // @ts-ignore
256
+ if (this[key] !== state[key]) {
257
+ // @ts-ignore
258
+ this[key] = state[key];
259
+ if (key === 'startDate') {
260
+ setTimeout(() => {
261
+ this.startDateChange.emit(this._startDate);
262
+ });
263
+ continue;
264
+ }
265
+ if (key === 'endDate') {
266
+ setTimeout(() => {
267
+ this.endDateChange.emit(this._endDate);
268
+ });
269
+ }
270
+ }
271
+ }
272
+ }
273
+ });
274
+ return;
275
+ }
276
+ this.calendarStateSubscription.unsubscribe();
277
+ }
278
+ setCalendarPage(years, months = 0, setMonth) {
279
+ const year = this.calendarDate.getFullYear();
280
+ const month = this.calendarDate.getMonth();
281
+ const d = new Date(year, month, 1);
282
+ years && d.setFullYear(d.getFullYear() + years);
283
+ months && d.setMonth(d.getMonth() + months);
284
+ typeof setMonth === 'number' && d.setMonth(setMonth);
285
+ this.calendarDate = d;
286
+ }
287
+ handleNavigationClick(direction, years = false) {
288
+ if (direction === 'prev') {
289
+ if (years) {
290
+ this.setCalendarPage(this.view === 'years' ? -10 : -1);
291
+ return;
292
+ }
293
+ if (this.view !== 'days') {
294
+ this.setCalendarPage(-1);
295
+ return;
296
+ }
297
+ this.setCalendarPage(0, -1);
298
+ return;
299
+ }
300
+ if (direction === 'next') {
301
+ if (years) {
302
+ this.setCalendarPage(this.view === 'years' ? 10 : 1);
303
+ return;
304
+ }
305
+ if (this.view !== 'days') {
306
+ this.setCalendarPage(1);
307
+ return;
308
+ }
309
+ this.setCalendarPage(0, 1);
310
+ return;
311
+ }
312
+ }
313
+ /**
314
+ * Clear startDate and endDate
315
+ * @type void
316
+ */
317
+ clearDates() {
318
+ this.calendarService.update({ endDate: null });
319
+ this.calendarService.update({ startDate: null });
320
+ }
321
+ }
322
+ CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CalendarComponent, deps: [{ token: i1.CalendarService }], target: i0.ɵɵFactoryTarget.Component });
323
+ CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: CalendarComponent, selector: "c-calendar", inputs: { calendarDate: "calendarDate", calendars: "calendars", dayFormat: "dayFormat", disabledDates: "disabledDates", startDate: "startDate", endDate: "endDate", firstDayOfWeek: "firstDayOfWeek", locale: "locale", maxDate: "maxDate", minDate: "minDate", navigation: "navigation", navYearFirst: "navYearFirst", range: "range", view: "view", weekdayFormat: "weekdayFormat", dateFilter: "dateFilter" }, outputs: { calendarCellHover: "calendarCellHover", calendarDateChange: "calendarDateChange", endDateChange: "endDateChange", startDateChange: "startDateChange", viewChange: "viewChange" }, host: { properties: { "class": "this.hostClasses" } }, providers: [CalendarService], viewQueries: [{ propertyName: "calendarMonths", predicate: CalendarMonthComponent, descendants: true }], exportAs: ["cCalendar"], ngImport: i0, template: "<ng-container *ngFor=\"let calendar of calendarsArray; let i=index;\">\n <div [ngClass]=\"view | calendarClassView\">\n <c-calendar-navigation\n [addMonths]=\"i\"\n [navigation]=\"navigation\"\n (navigationClick)=\"handleNavigationClick($event.direction, $event.years)\"\n ></c-calendar-navigation>\n\n <c-calendar-month\n [addMonths]=\"i\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [weekdayFormat]=\"weekdayFormat\"\n ></c-calendar-month>\n </div>\n</ng-container>\n", styles: [".btn-transparent:focus-visible{outline:-webkit-focus-ring-color auto 1px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.CalendarNavigationComponent, selector: "c-calendar-navigation", inputs: ["addMonths", "calendarDate", "navigation", "navYearFirst"], outputs: ["navigationClick"] }, { kind: "component", type: i4.CalendarMonthComponent, selector: "c-calendar-month", inputs: ["addMonths", "startDate", "endDate", "disabledDates", "firstDayOfWeek", "locale", "range", "weekdayFormat", "view", "maxDate", "minDate", "calendarDate"], exportAs: ["cCalendarMonth"] }, { kind: "pipe", type: i5.CalendarClassViewPipe, name: "calendarClassView" }] });
324
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CalendarComponent, decorators: [{
325
+ type: Component,
326
+ args: [{ selector: 'c-calendar', exportAs: 'cCalendar', providers: [CalendarService], template: "<ng-container *ngFor=\"let calendar of calendarsArray; let i=index;\">\n <div [ngClass]=\"view | calendarClassView\">\n <c-calendar-navigation\n [addMonths]=\"i\"\n [navigation]=\"navigation\"\n (navigationClick)=\"handleNavigationClick($event.direction, $event.years)\"\n ></c-calendar-navigation>\n\n <c-calendar-month\n [addMonths]=\"i\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [weekdayFormat]=\"weekdayFormat\"\n ></c-calendar-month>\n </div>\n</ng-container>\n", styles: [".btn-transparent:focus-visible{outline:-webkit-focus-ring-color auto 1px}\n"] }]
327
+ }], ctorParameters: function () { return [{ type: i1.CalendarService }]; }, propDecorators: { calendarDate: [{
328
+ type: Input
329
+ }], calendars: [{
330
+ type: Input
331
+ }], dayFormat: [{
332
+ type: Input
333
+ }], disabledDates: [{
334
+ type: Input
335
+ }], startDate: [{
336
+ type: Input
337
+ }], endDate: [{
338
+ type: Input
339
+ }], firstDayOfWeek: [{
340
+ type: Input
341
+ }], locale: [{
342
+ type: Input
343
+ }], maxDate: [{
344
+ type: Input
345
+ }], minDate: [{
346
+ type: Input
347
+ }], navigation: [{
348
+ type: Input
349
+ }], navYearFirst: [{
350
+ type: Input
351
+ }], range: [{
352
+ type: Input
353
+ }], view: [{
354
+ type: Input
355
+ }], weekdayFormat: [{
356
+ type: Input
357
+ }], dateFilter: [{
358
+ type: Input
359
+ }], calendarCellHover: [{
360
+ type: Output
361
+ }], calendarDateChange: [{
362
+ type: Output
363
+ }], endDateChange: [{
364
+ type: Output
365
+ }], startDateChange: [{
366
+ type: Output
367
+ }], viewChange: [{
368
+ type: Output
369
+ }], hostClasses: [{
370
+ type: HostBinding,
371
+ args: ['class']
372
+ }], calendarMonths: [{
373
+ type: ViewChildren,
374
+ args: [CalendarMonthComponent]
375
+ }] } });
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBb0QsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7QUFVNUMsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixZQUNVLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXlCbEMsa0JBQWEsR0FBUyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBZ0IxQyxlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBcUJ2QixlQUFVLEdBQWtCLFNBQVMsQ0FBQztRQWdCdEMsbUJBQWMsR0FBd0IsRUFBRSxDQUFDO1FBbUJqRCxlQUFVLEdBQWdCLElBQUksQ0FBQztRQWlCL0IsYUFBUSxHQUFrQixJQUFJLENBQUM7UUF3QnZCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBZ0I1QixZQUFPLEdBQVcsU0FBUyxDQUFDO1FBZTVCLGFBQVEsR0FBZ0Is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Vzt1QkFBQyxPQUFPO2dCQU9rQixjQUFjO3NCQUFuRCxZQUFZO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDYWxlbmRhck1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FsZW5kYXItbW9udGgvY2FsZW5kYXItbW9udGguY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSwgRGF0ZUZpbHRlclR5cGUsIERheUZvcm1hdFR5cGUsIFdlZWtkYXlGb3JtYXRUeXBlIH0gZnJvbSAnLi4vY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyB0cnlEYXRlIH0gZnJvbSAnLi4vY2FsZW5kYXIudXRpbHMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxuICBleHBvcnRBczogJ2NDYWxlbmRhcicsXG4gIHByb3ZpZGVyczogW0NhbGVuZGFyU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX25hdmlnYXRpb246IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX25hdlllYXJGaXJzdDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmFuZ2U6IEJvb2xlYW5JbnB1dDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY2FsZW5kYXJTdGF0ZVN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgZGF0ZSBvZiB0aGUgY29tcG9uZW50XG4gICAqIEB0eXBlICAoRGF0ZSB8IHN0cmluZylcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjYWxlbmRhckRhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICAvLyBjb25zdCBfdmFsdWUgPSBuZXcgRGF0ZSh0cnlEYXRlKCh2YWx1ZSA/PyB0aGlzLnN0YXJ0RGF0ZSA/PyBuZXcgRGF0ZSgpKSwgJ2NhbGVuZGFyRGF0ZScpKTtcbiAgICBjb25zdCBfdmFsdWUgPSBuZXcgRGF0ZSh0cnlEYXRlKHZhbHVlID8/IHRoaXMuc3RhcnREYXRlLCAnY2FsZW5kYXJEYXRlJykpO1xuICAgIGlmICghIV92YWx1ZSAmJiB0aGlzLl9jYWxlbmRhckRhdGUuZ2V0VGltZSgpICE9PSBfdmFsdWUuZ2V0VGltZSgpKSB7XG4gICAgICBjb25zdCBfY2FsZW5kYXJEYXRlID0gbmV3IERhdGUobmV3IERhdGUoX3ZhbHVlLnNldERhdGUoMSkpLnNldEhvdXJzKDAsIDAsIDAsIDApKTtcbiAgICAgIHRoaXMuX2NhbGVuZGFyRGF0ZSA9IF9jYWxlbmRhckRhdGU7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZUNoYW5nZS5lbWl0KF9jYWxlbmRhckRhdGUpO1xuICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgY2FsZW5kYXJEYXRlOiBfY2FsZW5kYXJEYXRlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjYWxlbmRhckRhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyRGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGVuZGFyRGF0ZTogRGF0ZSA9IHRyeURhdGUobmV3IERhdGUoKSk7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY2FsZW5kYXJzIHRoYXQgcmVuZGVyIG9uIGRlc2t0b3AgZGV2aWNlcy5cbiAgICogQHR5cGUgbnVtYmVyXG4gICAqIGRlZmF1bHQgMVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGNhbGVuZGFycyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fY2FsZW5kYXJzID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGNhbGVuZGFycygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhcnM7XG4gIH1cblxuICBwcml2YXRlIF9jYWxlbmRhcnM6IG51bWJlciA9IDE7XG5cbiAgZ2V0IGNhbGVuZGFyc0FycmF5KCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLmNhbGVuZGFycyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZvcm1hdCBvZiBkYXkgbmFtZS5cbiAgICogQGRlZmF1bHQgJ251bWVyaWMnXG4gICAqIEB0eXBlIERheUZvcm1hdFR5cGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBkYXlGb3JtYXQodmFsdWU6IERheUZvcm1hdFR5cGUpIHtcbiAgICB0aGlzLl9kYXlGb3JtYXQgPSB2YWx1ZTtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBkYXlGb3JtYXQ6IHRoaXMuX2RheUZvcm1hdCB9KTtcbiAgfVxuXG4gIGdldCBkYXlGb3JtYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RheUZvcm1hdDtcbiAgfVxuXG4gIHByaXZhdGUgX2RheUZvcm1hdDogRGF5Rm9ybWF0VHlwZSA9ICdudW1lcmljJztcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgbGlzdCBvZiBkYXRlcyB0aGF0IGNhbm5vdCBiZSBzZWxlY3RlZC5cbiAgICogQHR5cGUgIChEYXRlW10gfCBEYXRlW11bXSlcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZERhdGVzKHZhbHVlOiBEYXRlW10gfCBEYXRlW11bXSkge1xuICAgIHRoaXMuX2Rpc2FibGVkRGF0ZXMgPSB2YWx1ZTtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBkaXNhYmxlZERhdGVzOiB0aGlzLl9kaXNhYmxlZERhdGVzIH0pO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkRGF0ZXMoKTogRGF0ZVtdIHwgRGF0ZVtdW10ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZERhdGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWREYXRlczogKERhdGVbXSB8IERhdGVbXVtdKSA9IFtdO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIHNlbGVjdGVkIGRhdGUuXG4gICAqIEB0eXBlICAoRGF0ZSB8IG51bGwpXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgc3RhcnREYXRlKHZhbHVlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3N0YXJ0RGF0ZSA9ICEhdmFsdWUgPyB0cnlEYXRlKHZhbHVlLCAnc3RhcnREYXRlJykgOiBudWxsO1xuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHN0YXJ0RGF0ZTogdGhpcy5fc3RhcnREYXRlIH0pO1xuICAgIGlmICghdGhpcy5yYW5nZSB8fCAhdGhpcy5fc3RhcnREYXRlIHx8ICh0aGlzLmVuZERhdGUgJiYgdGhpcy5fc3RhcnREYXRlID4gdGhpcy5lbmREYXRlKSkge1xuICAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXQgc3RhcnREYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGFydERhdGU7XG4gIH1cblxuICBfc3RhcnREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgdG8gZGF0ZSAocmFuZ2UpLlxuICAgKiBAdHlwZSAgKERhdGUgfCBudWxsKVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGVuZERhdGUodmFsdWU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZW5kRGF0ZSA9ICEhdmFsdWUgPyB0cnlEYXRlKHZhbHVlLCAnZW5kRGF0ZScpIDogbnVsbDtcbiAgICAvLyB0aGlzLl9lbmREYXRlID0gdGhpcy5yYW5nZSA/IHRoaXMuX2VuZERhdGUgOiBudWxsO1xuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGVuZERhdGU6IHRoaXMuX2VuZERhdGUgfSk7XG4gIH1cblxuICBnZXQgZW5kRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yYW5nZSA/IHRoaXMuX2VuZERhdGUgOiBudWxsO1xuICB9XG5cbiAgX2VuZERhdGU6IChEYXRlIHwgbnVsbCkgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkYXkgb2Ygc3RhcnQgd2Vlay5cbiAgICogLSAwIC0gU3VuZGF5LFxuICAgKiAtIDEgLSBNb25kYXksXG4gICAqIC0gMiAtIFR1ZXNkYXksXG4gICAqIC0gMyAtIFdlZG5lc2RheSxcbiAgICogLSA0IC0gVGh1cnNkYXksXG4gICAqIC0gNSAtIEZyaWRheSxcbiAgICogLSA2IC0gU2F0dXJkYXksXG4gICAqXG4gICAqIEB0eXBlIG51bWJlclxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgZmlyc3REYXlPZldlZWsodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmlyc3REYXlPZldlZWs6IG51bWJlciA9IDE7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRlZmF1bHQgbG9jYWxlIGZvciBjb21wb25lbnRzLiBJZiBub3Qgc2V0LCBpdCBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgYnJvd3Nlci5cbiAgICogQGRlZmF1bHQgJ2RlZmF1bHQnXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgbG9jYWxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sb2NhbGUgPSB2YWx1ZTtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBsb2NhbGU6IHZhbHVlIH0pO1xuICB9XG5cbiAgZ2V0IGxvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XG5cbiAgLyoqXG4gICAqIE1heCBzZWxlY3RhYmxlIGRhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgbWF4RGF0ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9tYXhEYXRlID0gISF2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdtYXhEYXRlJykgOiBudWxsO1xuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IG1heERhdGU6IHRoaXMuX21heERhdGUgfSk7XG4gIH1cblxuICBnZXQgbWF4RGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX21heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogTWluIHNlbGVjdGFibGUgZGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBtaW5EYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX21pbkRhdGUgPSB2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdtaW5EYXRlJykgOiBudWxsO1xuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IG1pbkRhdGU6IHRoaXMuX21pbkRhdGUgfSk7XG4gIH1cblxuICBnZXQgbWluRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX21pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogU2hvdyBuYXZpZ2F0aW9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgbmF2aWdhdGlvbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25hdmlnYXRpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb247XG4gIH1cblxuICBwcml2YXRlIF9uYXZpZ2F0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogUmVvcmRlciB5ZWFyLW1vbnRoIG5hdmlnYXRpb24sIGFuZCByZW5kZXIgeWVhciBmaXJzdC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IG5hdlllYXJGaXJzdCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25hdlllYXJGaXJzdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgbmF2WWVhckZpcnN0OiB0aGlzLl9uYXZZZWFyRmlyc3QgfSk7XG4gIH1cblxuICBnZXQgbmF2WWVhckZpcnN0KCkge1xuICAgIHJldHVybiB0aGlzLl9uYXZZZWFyRmlyc3Q7XG4gIH1cblxuICBwcml2YXRlIF9uYXZZZWFyRmlyc3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQWxsb3cgcmFuZ2Ugc2VsZWN0aW9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgcmFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yYW5nZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgcmFuZ2U6IHRoaXMuX3JhbmdlIH0pO1xuICB9XG5cbiAgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcbiAgfVxuXG4gIHByaXZhdGUgX3JhbmdlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldCBjYWxlbmRhciB2aWV3LlxuICAgKiBAdHlwZSAnZGF5cycgfCAnbW9udGhzJyB8ICd5ZWFycydcbiAgICogQGRlZmF1bHQgJ2RheXMnXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgdmlldyh2YWx1ZSkge1xuICAgIHRoaXMuX3ZpZXcgPSB2YWx1ZTtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyB2aWV3OiB2YWx1ZSB9KTtcbiAgfVxuXG4gIGdldCB2aWV3KCkge1xuICAgIHJldHVybiB0aGlzLl92aWV3O1xuICB9XG5cbiAgcHJpdmF0ZSBfdmlldzogJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnID0gJ2RheXMnO1xuXG4gIC8qKlxuICAgKiBTZXQgbGVuZ3RoIG9yIGZvcm1hdCBvZiBkYXkgbmFtZS5cbiAgICogQHR5cGUgbnVtYmVyIHwgJ2xvbmcnIHwgJ25hcnJvdycgfCAnc2hvcnQnXG4gICAqIEBkZWZhdWx0ICdzaG9ydCdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB3ZWVrZGF5Rm9ybWF0KHZhbHVlOiBXZWVrZGF5Rm9ybWF0VHlwZSkge1xuICAgIHRoaXMuX3dlZWtkYXlGb3JtYXQgPSB2YWx1ZTtcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyB3ZWVrZGF5Rm9ybWF0OiB0aGlzLl93ZWVrZGF5Rm9ybWF0IH0pO1xuICB9XG5cbiAgZ2V0IHdlZWtkYXlGb3JtYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlGb3JtYXQ7XG4gIH1cblxuICBwcml2YXRlIF93ZWVrZGF5Rm9ybWF0OiBXZWVrZGF5Rm9ybWF0VHlwZSA9ICdzaG9ydCc7XG5cbiAgQElucHV0KClcbiAgc2V0IGRhdGVGaWx0ZXIodmFsdWU6IERhdGVGaWx0ZXJUeXBlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgZGF0ZUZpbHRlcjogdmFsdWUgfSk7XG4gIH1cblxuICBAT3V0cHV0KCkgY2FsZW5kYXJDZWxsSG92ZXI6IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgY2FsZW5kYXJEYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBPdXRwdXQoKSBlbmREYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcbiAgQE91dHB1dCgpIHN0YXJ0RGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XG4gIEBPdXRwdXQoKSB2aWV3Q2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8vIHVzZWQgd2l0aCBjYWxlbmRhclNlcnZpY2VcbiAgc2V0IGhvdmVyRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl9ob3ZlckRhdGUgPSB2YWx1ZTtcbiAgICB0aGlzLmNhbGVuZGFyQ2VsbEhvdmVyLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGhvdmVyRGF0ZSgpOiBEYXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2hvdmVyRGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2hvdmVyRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgY2FsZW5kYXJTdGF0ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzc2VzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdjYWxlbmRhcnMnOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGRyZW4oQ2FsZW5kYXJNb250aENvbXBvbmVudCkgY2FsZW5kYXJNb250aHMhOiBRdWVyeUxpc3Q8Q2FsZW5kYXJNb250aENvbXBvbmVudD47XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKGZhbHNlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGxvY2FsZTogdGhpcy5sb2NhbGUsIHZpZXc6IHRoaXMudmlldywgcmFuZ2U6IHRoaXMucmFuZ2UgfSk7XG4gIH1cblxuICBjYWxlbmRhclN0YXRlU3Vic2NyaWJlKHN1YnNjcmliZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpcHRpb24gPVxuICAgICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhclN0YXRlJC5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzdGF0ZSk7XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgaWYgKGtleSBpbiB0aGlzKSB7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgaWYgKHRoaXNba2V5XSAhPT0gc3RhdGVba2V5XSkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICB0aGlzW2tleV0gPSBzdGF0ZVtrZXldO1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICdzdGFydERhdGUnKSB7XG4gICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGVDaGFuZ2UuZW1pdCh0aGlzLl9zdGFydERhdGUpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2VuZERhdGUnKSB7XG4gICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmREYXRlQ2hhbmdlLmVtaXQodGhpcy5fZW5kRGF0ZSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHNldENhbGVuZGFyUGFnZSh5ZWFyczogbnVtYmVyLCBtb250aHMgPSAwLCBzZXRNb250aD86IG51bWJlcikge1xuICAgIGNvbnN0IHllYXIgPSB0aGlzLmNhbGVuZGFyRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5jYWxlbmRhckRhdGUuZ2V0TW9udGgoKTtcbiAgICBjb25zdCBkID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuXG4gICAgeWVhcnMgJiYgZC5zZXRGdWxsWWVhcihkLmdldEZ1bGxZZWFyKCkgKyB5ZWFycyk7XG4gICAgbW9udGhzICYmIGQuc2V0TW9udGgoZC5nZXRNb250aCgpICsgbW9udGhzKTtcbiAgICB0eXBlb2Ygc2V0TW9udGggPT09ICdudW1iZXInICYmIGQuc2V0TW9udGgoc2V0TW9udGgpO1xuXG4gICAgdGhpcy5jYWxlbmRhckRhdGUgPSBkO1xuICB9XG5cbiAgaGFuZGxlTmF2aWdhdGlvbkNsaWNrKGRpcmVjdGlvbjogJ3ByZXYnIHwgJ25leHQnLCB5ZWFycyA9IGZhbHNlKSB7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3ByZXYnKSB7XG4gICAgICBpZiAoeWVhcnMpIHtcbiAgICAgICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UodGhpcy52aWV3ID09PSAneWVhcnMnID8gLTEwIDogLTEpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnZpZXcgIT09ICdkYXlzJykge1xuICAgICAgICB0aGlzLnNldENhbGVuZGFyUGFnZSgtMSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UoMCwgLTEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uID09PSAnbmV4dCcpIHtcbiAgICAgIGlmICh5ZWFycykge1xuICAgICAgICB0aGlzLnNldENhbGVuZGFyUGFnZSh0aGlzLnZpZXcgPT09ICd5ZWFycycgPyAxMCA6IDEpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnZpZXcgIT09ICdkYXlzJykge1xuICAgICAgICB0aGlzLnNldENhbGVuZGFyUGFnZSgxKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldENhbGVuZGFyUGFnZSgwLCAxKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgc3RhcnREYXRlIGFuZCBlbmREYXRlXG4gICAqIEB0eXBlIHZvaWRcbiAgICovXG4gIHB1YmxpYyBjbGVhckRhdGVzKCkge1xuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGVuZERhdGU6IG51bGwgfSk7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgc3RhcnREYXRlOiBudWxsIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjYWxlbmRhciBvZiBjYWxlbmRhcnNBcnJheTsgbGV0IGk9aW5kZXg7XCI+XG4gIDxkaXYgW25nQ2xhc3NdPVwidmlldyB8IGNhbGVuZGFyQ2xhc3NWaWV3XCI+XG4gICAgPGMtY2FsZW5kYXItbmF2aWdhdGlvblxuICAgICAgW2FkZE1vbnRoc109XCJpXCJcbiAgICAgIFtuYXZpZ2F0aW9uXT1cIm5hdmlnYXRpb25cIlxuICAgICAgKG5hdmlnYXRpb25DbGljayk9XCJoYW5kbGVOYXZpZ2F0aW9uQ2xpY2soJGV2ZW50LmRpcmVjdGlvbiwgJGV2ZW50LnllYXJzKVwiXG4gICAgPjwvYy1jYWxlbmRhci1uYXZpZ2F0aW9uPlxuXG4gICAgPGMtY2FsZW5kYXItbW9udGhcbiAgICAgIFthZGRNb250aHNdPVwiaVwiXG4gICAgICBbZmlyc3REYXlPZldlZWtdPVwiZmlyc3REYXlPZldlZWtcIlxuICAgICAgW3dlZWtkYXlGb3JtYXRdPVwid2Vla2RheUZvcm1hdFwiXG4gICAgPjwvYy1jYWxlbmRhci1tb250aD5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==