@coreui/angular-pro 4.0.0 → 4.1.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/README.md +154 -152
  2. package/esm2020/lib/accordion/accordion/accordion.component.mjs +4 -4
  3. package/esm2020/lib/accordion/accordion-button/accordion-button.directive.mjs +4 -4
  4. package/esm2020/lib/accordion/accordion-item/accordion-item.component.mjs +4 -4
  5. package/esm2020/lib/accordion/accordion.module.mjs +5 -5
  6. package/esm2020/lib/accordion/accordion.service.mjs +4 -4
  7. package/esm2020/lib/alert/alert-heading.directive.mjs +4 -4
  8. package/esm2020/lib/alert/alert-link.directive.mjs +4 -4
  9. package/esm2020/lib/alert/alert.component.mjs +4 -4
  10. package/esm2020/lib/alert/alert.module.mjs +5 -5
  11. package/esm2020/lib/avatar/avatar.component.mjs +4 -4
  12. package/esm2020/lib/avatar/avatar.module.mjs +5 -5
  13. package/esm2020/lib/backdrop/backdrop.service.mjs +4 -4
  14. package/esm2020/lib/badge/badge.component.mjs +4 -4
  15. package/esm2020/lib/badge/badge.module.mjs +5 -5
  16. package/esm2020/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +4 -4
  17. package/esm2020/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +4 -4
  18. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +4 -4
  19. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +4 -4
  20. package/esm2020/lib/breadcrumb/breadcrumb.module.mjs +5 -5
  21. package/esm2020/lib/button/button-close.directive.mjs +4 -4
  22. package/esm2020/lib/button/button.directive.mjs +4 -4
  23. package/esm2020/lib/button/button.module.mjs +5 -5
  24. package/esm2020/lib/button-group/button-group/button-group.component.mjs +4 -4
  25. package/esm2020/lib/button-group/button-group.module.mjs +5 -5
  26. package/esm2020/lib/button-group/button-toolbar/button-toolbar.component.mjs +4 -4
  27. package/esm2020/lib/calendar/calendar/calendar-class-view.pipe.mjs +19 -0
  28. package/esm2020/lib/calendar/calendar/calendar.component.mjs +366 -0
  29. package/esm2020/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +28 -0
  30. package/esm2020/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +21 -0
  31. package/esm2020/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +21 -0
  32. package/esm2020/lib/calendar/calendar-month/calendar-day.directive.mjs +81 -0
  33. package/esm2020/lib/calendar/calendar-month/calendar-day.pipe.mjs +18 -0
  34. package/esm2020/lib/calendar/calendar-month/calendar-month.component.mjs +320 -0
  35. package/esm2020/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +20 -0
  36. package/esm2020/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +79 -0
  37. package/esm2020/lib/calendar/calendar.module.mjs +61 -0
  38. package/esm2020/lib/calendar/calendar.service.mjs +58 -0
  39. package/esm2020/lib/calendar/calendar.utils.mjs +270 -0
  40. package/esm2020/lib/calendar/index.mjs +2 -0
  41. package/esm2020/lib/calendar/public_api.mjs +5 -0
  42. package/esm2020/lib/callout/callout.component.mjs +4 -4
  43. package/esm2020/lib/callout/callout.module.mjs +5 -5
  44. package/esm2020/lib/card/card-body.component.mjs +4 -4
  45. package/esm2020/lib/card/card-footer.component.mjs +4 -4
  46. package/esm2020/lib/card/card-group.component.mjs +4 -4
  47. package/esm2020/lib/card/card-header-actions.component.mjs +4 -4
  48. package/esm2020/lib/card/card-header.component.mjs +4 -4
  49. package/esm2020/lib/card/card-img-overlay/card-img-overlay.component.mjs +4 -4
  50. package/esm2020/lib/card/card-img.directive.mjs +4 -4
  51. package/esm2020/lib/card/card-link.directive.mjs +4 -4
  52. package/esm2020/lib/card/card-subtitle.directive.mjs +4 -4
  53. package/esm2020/lib/card/card-text.directive.mjs +4 -4
  54. package/esm2020/lib/card/card-title.directive.mjs +4 -4
  55. package/esm2020/lib/card/card.component.mjs +4 -4
  56. package/esm2020/lib/card/card.module.mjs +5 -5
  57. package/esm2020/lib/carousel/carousel/carousel.component.mjs +4 -4
  58. package/esm2020/lib/carousel/carousel-caption/carousel-caption.component.mjs +4 -4
  59. package/esm2020/lib/carousel/carousel-control/carousel-control.component.mjs +4 -4
  60. package/esm2020/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +4 -4
  61. package/esm2020/lib/carousel/carousel-inner/carousel-inner.component.mjs +4 -4
  62. package/esm2020/lib/carousel/carousel-item/carousel-item.component.mjs +4 -4
  63. package/esm2020/lib/carousel/carousel-state.mjs +4 -4
  64. package/esm2020/lib/carousel/carousel.config.mjs +4 -4
  65. package/esm2020/lib/carousel/carousel.module.mjs +5 -5
  66. package/esm2020/lib/carousel/carousel.service.mjs +4 -4
  67. package/esm2020/lib/collapse/collapse.directive.mjs +4 -4
  68. package/esm2020/lib/collapse/collapse.module.mjs +5 -5
  69. package/esm2020/lib/coreui.types.mjs +1 -1
  70. package/esm2020/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +496 -0
  71. package/esm2020/lib/date-range-picker/date-range-picker.module.mjs +59 -0
  72. package/esm2020/lib/date-range-picker/end-date.directive.mjs +17 -0
  73. package/esm2020/lib/date-range-picker/index.mjs +2 -0
  74. package/esm2020/lib/date-range-picker/public_api.mjs +3 -0
  75. package/esm2020/lib/date-range-picker/start-date.directive.mjs +17 -0
  76. package/esm2020/lib/dropdown/dropdown/dropdown.component.mjs +29 -12
  77. package/esm2020/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +14 -6
  78. package/esm2020/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +4 -4
  79. package/esm2020/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +4 -4
  80. package/esm2020/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +4 -4
  81. package/esm2020/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +4 -4
  82. package/esm2020/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +4 -4
  83. package/esm2020/lib/dropdown/dropdown.module.mjs +5 -5
  84. package/esm2020/lib/dropdown/dropdown.service.mjs +4 -4
  85. package/esm2020/lib/element-cover/element-cover.component.mjs +4 -4
  86. package/esm2020/lib/element-cover/element-cover.module.mjs +5 -5
  87. package/esm2020/lib/footer/footer.component.mjs +4 -4
  88. package/esm2020/lib/footer/footer.module.mjs +5 -5
  89. package/esm2020/lib/form/form/form.directive.mjs +4 -4
  90. package/esm2020/lib/form/form-check/form-check-input.directive.mjs +4 -4
  91. package/esm2020/lib/form/form-check/form-check-label.directive.mjs +4 -4
  92. package/esm2020/lib/form/form-check/form-check.component.mjs +4 -4
  93. package/esm2020/lib/form/form-control/form-control.directive.mjs +4 -4
  94. package/esm2020/lib/form/form-feedback/form-feedback.component.mjs +4 -4
  95. package/esm2020/lib/form/form-floating/form-floating.directive.mjs +4 -4
  96. package/esm2020/lib/form/form-label/form-label.directive.mjs +4 -4
  97. package/esm2020/lib/form/form-select/form-select.directive.mjs +4 -4
  98. package/esm2020/lib/form/form-text/form-text.directive.mjs +4 -4
  99. package/esm2020/lib/form/form.module.mjs +5 -5
  100. package/esm2020/lib/form/input-group/input-group.component.mjs +4 -4
  101. package/esm2020/lib/form/input-group-text/input-group-text.directive.mjs +4 -4
  102. package/esm2020/lib/grid/col.component.mjs +4 -4
  103. package/esm2020/lib/grid/col.directive.mjs +4 -4
  104. package/esm2020/lib/grid/container.component.mjs +4 -4
  105. package/esm2020/lib/grid/grid.module.mjs +5 -5
  106. package/esm2020/lib/grid/gutter.directive.mjs +4 -4
  107. package/esm2020/lib/grid/row.component.mjs +4 -4
  108. package/esm2020/lib/grid/row.directive.mjs +4 -4
  109. package/esm2020/lib/header/header/header.component.mjs +4 -4
  110. package/esm2020/lib/header/header-brand/header-brand.component.mjs +4 -4
  111. package/esm2020/lib/header/header-divider/header-divider.component.mjs +4 -4
  112. package/esm2020/lib/header/header-nav/header-nav.component.mjs +4 -4
  113. package/esm2020/lib/header/header-text/header-text.component.mjs +4 -4
  114. package/esm2020/lib/header/header-toggler/header-toggler.directive.mjs +4 -4
  115. package/esm2020/lib/header/header.module.mjs +5 -5
  116. package/esm2020/lib/image/img.directive.mjs +4 -4
  117. package/esm2020/lib/image/img.module.mjs +5 -5
  118. package/esm2020/lib/list-group/list-group-item.directive.mjs +4 -4
  119. package/esm2020/lib/list-group/list-group.directive.mjs +4 -4
  120. package/esm2020/lib/list-group/list-group.module.mjs +5 -5
  121. package/esm2020/lib/loading-button/loading-button.component.mjs +4 -4
  122. package/esm2020/lib/loading-button/loading-button.module.mjs +5 -5
  123. package/esm2020/lib/modal/modal/modal.component.mjs +4 -4
  124. package/esm2020/lib/modal/modal-body/modal-body.component.mjs +4 -4
  125. package/esm2020/lib/modal/modal-content/modal-content.component.mjs +4 -4
  126. package/esm2020/lib/modal/modal-dialog/modal-dialog.component.mjs +4 -4
  127. package/esm2020/lib/modal/modal-dismiss/modal-toggle.directive.mjs +4 -4
  128. package/esm2020/lib/modal/modal-footer/modal-footer.component.mjs +4 -4
  129. package/esm2020/lib/modal/modal-header/modal-header.component.mjs +4 -4
  130. package/esm2020/lib/modal/modal-title/modal-title.directive.mjs +4 -4
  131. package/esm2020/lib/modal/modal.module.mjs +5 -5
  132. package/esm2020/lib/modal/modal.service.mjs +4 -4
  133. package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +4 -4
  134. package/esm2020/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +4 -4
  135. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +4 -4
  136. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +4 -4
  137. package/esm2020/lib/multi-select/multi-select-option/multi-select-option.component.mjs +4 -4
  138. package/esm2020/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +4 -4
  139. package/esm2020/lib/multi-select/multi-select.module.mjs +5 -5
  140. package/esm2020/lib/multi-select/multi-select.service.mjs +4 -4
  141. package/esm2020/lib/nav/nav-item.component.mjs +4 -4
  142. package/esm2020/lib/nav/nav-link.directive.mjs +4 -4
  143. package/esm2020/lib/nav/nav.component.mjs +4 -4
  144. package/esm2020/lib/nav/nav.module.mjs +5 -5
  145. package/esm2020/lib/navbar/navbar-brand/navbar-brand.directive.mjs +4 -4
  146. package/esm2020/lib/navbar/navbar-nav/navbar-nav.component.mjs +4 -4
  147. package/esm2020/lib/navbar/navbar-text/navbar-text.component.mjs +4 -4
  148. package/esm2020/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +4 -4
  149. package/esm2020/lib/navbar/navbar.component.mjs +4 -4
  150. package/esm2020/lib/navbar/navbar.module.mjs +5 -5
  151. package/esm2020/lib/offcanvas/offcanvas/offcanvas.component.mjs +4 -4
  152. package/esm2020/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +4 -4
  153. package/esm2020/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +4 -4
  154. package/esm2020/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +4 -4
  155. package/esm2020/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +4 -4
  156. package/esm2020/lib/offcanvas/offcanvas.module.mjs +5 -5
  157. package/esm2020/lib/offcanvas/offcanvas.service.mjs +4 -4
  158. package/esm2020/lib/pagination/page-item/page-item.component.mjs +4 -4
  159. package/esm2020/lib/pagination/page-item/page-item.directive.mjs +4 -4
  160. package/esm2020/lib/pagination/page-link/page-link.directive.mjs +4 -4
  161. package/esm2020/lib/pagination/pagination/pagination.component.mjs +4 -4
  162. package/esm2020/lib/pagination/pagination.module.mjs +5 -5
  163. package/esm2020/lib/placeholder/placeholder-animation.directive.mjs +4 -4
  164. package/esm2020/lib/placeholder/placeholder.directive.mjs +4 -4
  165. package/esm2020/lib/placeholder/placeholder.module.mjs +5 -5
  166. package/esm2020/lib/popover/popover/popover.component.mjs +4 -4
  167. package/esm2020/lib/popover/popover.directive.mjs +4 -4
  168. package/esm2020/lib/popover/popover.module.mjs +5 -5
  169. package/esm2020/lib/progress/progress-bar.component.mjs +4 -4
  170. package/esm2020/lib/progress/progress.component.mjs +4 -4
  171. package/esm2020/lib/progress/progress.module.mjs +5 -5
  172. package/esm2020/lib/services/class-toggle.service.mjs +4 -4
  173. package/esm2020/lib/services/intersection.service.mjs +4 -4
  174. package/esm2020/lib/services/listeners.service.mjs +4 -4
  175. package/esm2020/lib/shared/html-attr.directive.mjs +4 -4
  176. package/esm2020/lib/shared/shared.module.mjs +5 -5
  177. package/esm2020/lib/shared/template-id.directive.mjs +4 -4
  178. package/esm2020/lib/sidebar/sidebar/sidebar.component.mjs +4 -4
  179. package/esm2020/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +4 -4
  180. package/esm2020/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +4 -4
  181. package/esm2020/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +4 -4
  182. package/esm2020/lib/sidebar/sidebar-header/sidebar-header.component.mjs +4 -4
  183. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +4 -4
  184. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +4 -4
  185. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +4 -4
  186. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +4 -4
  187. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +4 -4
  188. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +8 -8
  189. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +4 -4
  190. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +4 -4
  191. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +7 -7
  192. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.mjs +1 -1
  193. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +7 -7
  194. package/esm2020/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +4 -4
  195. package/esm2020/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +4 -4
  196. package/esm2020/lib/sidebar/sidebar.module.mjs +5 -5
  197. package/esm2020/lib/sidebar/sidebar.service.mjs +4 -4
  198. package/esm2020/lib/smart-pagination/smart-pagination.component.mjs +4 -4
  199. package/esm2020/lib/smart-pagination/smart-pagination.module.mjs +5 -5
  200. package/esm2020/lib/smart-table/smart-table/smart-table.component.mjs +4 -4
  201. package/esm2020/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +4 -4
  202. package/esm2020/lib/smart-table/smart-table-head/smart-table-head.component.mjs +4 -4
  203. package/esm2020/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +4 -4
  204. package/esm2020/lib/smart-table/smart-table.module.mjs +5 -5
  205. package/esm2020/lib/spinner/spinner.component.mjs +4 -4
  206. package/esm2020/lib/spinner/spinner.module.mjs +5 -5
  207. package/esm2020/lib/table/table-active.directive.mjs +4 -4
  208. package/esm2020/lib/table/table-color.directive.mjs +4 -4
  209. package/esm2020/lib/table/table.directive.mjs +4 -4
  210. package/esm2020/lib/table/table.module.mjs +5 -5
  211. package/esm2020/lib/tabs/tab-content/tab-content.component.mjs +4 -4
  212. package/esm2020/lib/tabs/tab-content-ref.directive.mjs +4 -4
  213. package/esm2020/lib/tabs/tab-pane/tab-pane.component.mjs +4 -4
  214. package/esm2020/lib/tabs/tab.service.mjs +4 -4
  215. package/esm2020/lib/tabs/tabs.module.mjs +5 -5
  216. package/esm2020/lib/toast/toast/toast.component.mjs +4 -4
  217. package/esm2020/lib/toast/toast-body/toast-body.component.mjs +4 -4
  218. package/esm2020/lib/toast/toast-close.directive.mjs +4 -4
  219. package/esm2020/lib/toast/toast-header/toast-header.component.mjs +4 -4
  220. package/esm2020/lib/toast/toast.module.mjs +5 -5
  221. package/esm2020/lib/toast/toaster/toaster-host.directive.mjs +4 -4
  222. package/esm2020/lib/toast/toaster/toaster.component.mjs +4 -4
  223. package/esm2020/lib/toast/toaster/toaster.service.mjs +4 -4
  224. package/esm2020/lib/tooltip/tooltip/tooltip.component.mjs +4 -4
  225. package/esm2020/lib/tooltip/tooltip.directive.mjs +4 -4
  226. package/esm2020/lib/tooltip/tooltip.module.mjs +5 -5
  227. package/esm2020/lib/utilities/align.directive.mjs +4 -4
  228. package/esm2020/lib/utilities/bg-color.directive.mjs +4 -4
  229. package/esm2020/lib/utilities/border.directive.mjs +4 -4
  230. package/esm2020/lib/utilities/rounded.directive.mjs +4 -4
  231. package/esm2020/lib/utilities/text-color.directive.mjs +4 -4
  232. package/esm2020/lib/utilities/utilities.module.mjs +5 -5
  233. package/esm2020/lib/widget/widget-stat-a/widget-stat-a.component.mjs +4 -4
  234. package/esm2020/lib/widget/widget-stat-b/widget-stat-b.component.mjs +4 -4
  235. package/esm2020/lib/widget/widget-stat-c/widget-stat-c.component.mjs +4 -4
  236. package/esm2020/lib/widget/widget-stat-d/widget-stat-d.component.mjs +4 -4
  237. package/esm2020/lib/widget/widget-stat-e/widget-stat-e.component.mjs +4 -4
  238. package/esm2020/lib/widget/widget-stat-f/widget-stat-f.component.mjs +4 -4
  239. package/esm2020/lib/widget/widget.module.mjs +5 -5
  240. package/esm2020/public-api.mjs +3 -1
  241. package/fesm2015/coreui-angular-pro.mjs +4082 -2193
  242. package/fesm2015/coreui-angular-pro.mjs.map +1 -1
  243. package/fesm2020/coreui-angular-pro.mjs +3435 -1560
  244. package/fesm2020/coreui-angular-pro.mjs.map +1 -1
  245. package/lib/calendar/calendar/calendar-class-view.pipe.d.ts +7 -0
  246. package/lib/calendar/calendar/calendar.component.d.ts +155 -0
  247. package/lib/calendar/calendar-month/calendar-class-day.pipe.d.ts +15 -0
  248. package/lib/calendar/calendar-month/calendar-class-month.pipe.d.ts +7 -0
  249. package/lib/calendar/calendar-month/calendar-class-year.pipe.d.ts +7 -0
  250. package/lib/calendar/calendar-month/calendar-day.directive.d.ts +29 -0
  251. package/lib/calendar/calendar-month/calendar-day.pipe.d.ts +8 -0
  252. package/lib/calendar/calendar-month/calendar-month.component.d.ts +121 -0
  253. package/lib/calendar/calendar-month/calendar-weekday.pipe.d.ts +8 -0
  254. package/lib/calendar/calendar-navigation/calendar-navigation.component.d.ts +30 -0
  255. package/lib/calendar/calendar.module.d.ts +18 -0
  256. package/lib/calendar/calendar.service.d.ts +33 -0
  257. package/lib/calendar/calendar.utils.d.ts +26 -0
  258. package/lib/calendar/index.d.ts +1 -0
  259. package/lib/calendar/public_api.d.ts +4 -0
  260. package/lib/coreui.types.d.ts +3 -1
  261. package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +233 -0
  262. package/lib/date-range-picker/date-range-picker.module.d.ts +16 -0
  263. package/lib/date-range-picker/end-date.directive.d.ts +8 -0
  264. package/lib/date-range-picker/index.d.ts +1 -0
  265. package/lib/date-range-picker/public_api.d.ts +2 -0
  266. package/lib/date-range-picker/start-date.directive.d.ts +8 -0
  267. package/lib/dropdown/dropdown/dropdown.component.d.ts +18 -5
  268. package/lib/dropdown/dropdown-close/dropdown-close.directive.d.ts +6 -3
  269. package/lib/sidebar/sidebar-nav/sidebar-nav.d.ts +4 -2
  270. package/package.json +8 -7
  271. package/public-api.d.ts +2 -0
@@ -0,0 +1,28 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { isDateDisabled, isLastDayOfMonth, isToday } from '../calendar.utils';
3
+ import * as i0 from "@angular/core";
4
+ export class CalendarClassDayPipe {
5
+ transform(dateObj, datesConfig) {
6
+ const { date, month } = { ...dateObj };
7
+ const { minDate, maxDate, disabledDates, dateFilter } = { ...datesConfig };
8
+ // @ts-ignore
9
+ const disabled = isDateDisabled(date, minDate, maxDate, disabledDates) || (dateFilter ? !dateFilter(date) : false);
10
+ return {
11
+ 'calendar-cell': true,
12
+ today: isToday(date),
13
+ disabled: disabled,
14
+ next: month === 'next',
15
+ previous: month === 'previous',
16
+ last: isLastDayOfMonth(date)
17
+ };
18
+ }
19
+ }
20
+ CalendarClassDayPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarClassDayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
21
+ CalendarClassDayPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarClassDayPipe, name: "calendarClassDay" });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarClassDayPipe, decorators: [{
23
+ type: Pipe,
24
+ args: [{
25
+ name: 'calendarClassDay'
26
+ }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItY2xhc3MtZGF5LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLWNsYXNzLWRheS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBSzlFLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsU0FBUyxDQUFDLE9BQXVDLEVBQUUsV0FBa0Y7UUFDbkksTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDdkMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUMzRSxhQUFhO1FBQ2IsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkgsT0FBTztZQUNMLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRSxLQUFLLEtBQUssTUFBTTtZQUN0QixRQUFRLEVBQUUsS0FBSyxLQUFLLFVBQVU7WUFDOUIsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQztTQUM3QixDQUFDO0lBQ0osQ0FBQzs7a0hBaEJVLG9CQUFvQjtnSEFBcEIsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBSGhDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGtCQUFrQjtpQkFDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzRGF0ZURpc2FibGVkLCBpc0xhc3REYXlPZk1vbnRoLCBpc1RvZGF5IH0gZnJvbSAnLi4vY2FsZW5kYXIudXRpbHMnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdjYWxlbmRhckNsYXNzRGF5J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDbGFzc0RheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgdHJhbnNmb3JtKGRhdGVPYmo6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZzsgfSwgZGF0ZXNDb25maWc/OiB7IG1pbkRhdGU6IGFueTsgbWF4RGF0ZTogYW55OyBkaXNhYmxlZERhdGVzOiBhbnk7IGRhdGVGaWx0ZXI6IGFueTsgfSk6IGFueSB7XHJcbiAgICBjb25zdCB7IGRhdGUsIG1vbnRoIH0gPSB7IC4uLmRhdGVPYmogfTtcclxuICAgIGNvbnN0IHsgbWluRGF0ZSwgbWF4RGF0ZSwgZGlzYWJsZWREYXRlcywgZGF0ZUZpbHRlciB9ID0geyAuLi5kYXRlc0NvbmZpZyB9O1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgY29uc3QgZGlzYWJsZWQgPSBpc0RhdGVEaXNhYmxlZChkYXRlLCBtaW5EYXRlLCBtYXhEYXRlLCBkaXNhYmxlZERhdGVzKSB8fCAoZGF0ZUZpbHRlciA/ICFkYXRlRmlsdGVyKGRhdGUpIDogZmFsc2UpO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICdjYWxlbmRhci1jZWxsJzogdHJ1ZSxcclxuICAgICAgdG9kYXk6IGlzVG9kYXkoZGF0ZSksXHJcbiAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgICAgbmV4dDogbW9udGggPT09ICduZXh0JyxcclxuICAgICAgcHJldmlvdXM6IG1vbnRoID09PSAncHJldmlvdXMnLFxyXG4gICAgICBsYXN0OiBpc0xhc3REYXlPZk1vbnRoKGRhdGUpXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { isThisMonth } from '../calendar.utils';
3
+ import * as i0 from "@angular/core";
4
+ export class CalendarClassMonthPipe {
5
+ transform(calendarDate, monthIndex) {
6
+ return {
7
+ 'calendar-cell': true,
8
+ month: true,
9
+ today: isThisMonth(calendarDate, monthIndex)
10
+ };
11
+ }
12
+ }
13
+ CalendarClassMonthPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarClassMonthPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
14
+ CalendarClassMonthPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarClassMonthPipe, name: "calendarClassMonth" });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarClassMonthPipe, decorators: [{
16
+ type: Pipe,
17
+ args: [{
18
+ name: 'calendarClassMonth'
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItY2xhc3MtbW9udGgucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItbW9udGgvY2FsZW5kYXItY2xhc3MtbW9udGgucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBS2hELE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsU0FBUyxDQUFDLFlBQWtCLEVBQUUsVUFBa0I7UUFFOUMsT0FBTztZQUNMLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLEtBQUssRUFBRSxJQUFJO1lBQ1gsS0FBSyxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDO1NBQzdDLENBQUM7SUFDSixDQUFDOztvSEFUVSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQUhsQyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxvQkFBb0I7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc1RoaXNNb250aCB9IGZyb20gJy4uL2NhbGVuZGFyLnV0aWxzJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnY2FsZW5kYXJDbGFzc01vbnRoJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDbGFzc01vbnRoUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICB0cmFuc2Zvcm0oY2FsZW5kYXJEYXRlOiBEYXRlLCBtb250aEluZGV4OiBudW1iZXIpOiBhbnkge1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICdjYWxlbmRhci1jZWxsJzogdHJ1ZSxcclxuICAgICAgbW9udGg6IHRydWUsXHJcbiAgICAgIHRvZGF5OiBpc1RoaXNNb250aChjYWxlbmRhckRhdGUsIG1vbnRoSW5kZXgpXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { isThisYear } from '../calendar.utils';
3
+ import * as i0 from "@angular/core";
4
+ export class CalendarClassYearPipe {
5
+ transform(year, args) {
6
+ return {
7
+ 'calendar-cell': true,
8
+ year: true,
9
+ today: isThisYear(year)
10
+ };
11
+ }
12
+ }
13
+ CalendarClassYearPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarClassYearPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
14
+ CalendarClassYearPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarClassYearPipe, name: "calendarClassYear" });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarClassYearPipe, decorators: [{
16
+ type: Pipe,
17
+ args: [{
18
+ name: 'calendarClassYear'
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItY2xhc3MteWVhci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci1jbGFzcy15ZWFyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUsvQyxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFNBQVMsQ0FBQyxJQUFZLEVBQUUsSUFBVTtRQUNoQyxPQUFPO1lBQ0wsZUFBZSxFQUFFLElBQUk7WUFDckIsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQztTQUN4QixDQUFDO0lBQ0osQ0FBQzs7bUhBUlUscUJBQXFCO2lIQUFyQixxQkFBcUI7NEZBQXJCLHFCQUFxQjtrQkFIakMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsbUJBQW1CO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNUaGlzWWVhciB9IGZyb20gJy4uL2NhbGVuZGFyLnV0aWxzJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnY2FsZW5kYXJDbGFzc1llYXInXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNsYXNzWWVhclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgdHJhbnNmb3JtKHllYXI6IG51bWJlciwgYXJncz86IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnY2FsZW5kYXItY2VsbCc6IHRydWUsXHJcbiAgICAgIHllYXI6IHRydWUsXHJcbiAgICAgIHRvZGF5OiBpc1RoaXNZZWFyKHllYXIpXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,81 @@
1
+ import { Directive, HostBinding, Input } from '@angular/core';
2
+ import { isDateDisabled, isDateInRange, isDateInRangeDisabled, isDateSelected, isEndDate, isStartDate } from '../calendar.utils';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../calendar.service";
5
+ export class CalendarDayDirective {
6
+ constructor(calendarService) {
7
+ this.calendarService = calendarService;
8
+ this.date = null;
9
+ this.startDate = null;
10
+ this.endDate = null;
11
+ this.hoverDate = null;
12
+ this.maxDate = null;
13
+ this.minDate = null;
14
+ this.range = false;
15
+ this.calendarStateSubscribe();
16
+ }
17
+ set dateObj(value) {
18
+ this._dateObj = value;
19
+ this.date = value.date;
20
+ this.month = value.month;
21
+ }
22
+ get selectEndDate() {
23
+ return (this.range && !!this.startDate && !this.endDate);
24
+ }
25
+ get hostClasses() {
26
+ if (!this.date)
27
+ return;
28
+ const rangeHover = this.month === 'current' && this.selectEndDate && isDateInRange(this.date, this.startDate, this.hoverDate);
29
+ const inRange = this.month === 'current' && isDateInRange(this.date, this.startDate, this.endDate);
30
+ const selected = isDateSelected(this.date, this.startDate, this.endDate);
31
+ const start = isStartDate(this.date, this.startDate, this.endDate);
32
+ const end = isEndDate(this.date, this.startDate, this.endDate);
33
+ const disabledRange = isDateInRangeDisabled(this.startDate, this.date, this.disabledDates);
34
+ const disabledDate = isDateDisabled(this.date, this.minDate, this.maxDate, this.disabledDates);
35
+ const disabledByFilter = this.dateFilter ? !this.dateFilter(this.date) : false;
36
+ return {
37
+ 'range-hover': rangeHover && (!disabledRange || !disabledByFilter),
38
+ selected: !!selected,
39
+ range: !!inRange,
40
+ start: !!start,
41
+ end: !!end,
42
+ disabled: disabledDate || disabledByFilter
43
+ };
44
+ }
45
+ ngOnDestroy() {
46
+ this.calendarStateSubscribe(false);
47
+ }
48
+ calendarStateSubscribe(subscribe = true) {
49
+ if (subscribe) {
50
+ this.calendarStateSubscription =
51
+ this.calendarService.calendarState$.subscribe(state => {
52
+ const { startDate = this.startDate, endDate = this.endDate, hoverDate = this.hoverDate, range = this.range, maxDate = this.maxDate, minDate = this.minDate, disabledDates = this.disabledDates, dateFilter = this.dateFilter } = { ...state };
53
+ this.startDate = startDate;
54
+ this.endDate = endDate;
55
+ this.range = range;
56
+ this.hoverDate = hoverDate;
57
+ this.maxDate = maxDate;
58
+ this.minDate = minDate;
59
+ this.disabledDates = disabledDates;
60
+ this.dateFilter = dateFilter;
61
+ });
62
+ return;
63
+ }
64
+ this.calendarStateSubscription.unsubscribe();
65
+ }
66
+ }
67
+ CalendarDayDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarDayDirective, deps: [{ token: i1.CalendarService }], target: i0.ɵɵFactoryTarget.Directive });
68
+ CalendarDayDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: CalendarDayDirective, selector: "[cCalendarDay]", inputs: { dateObj: ["cCalendarDay", "dateObj"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 });
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarDayDirective, decorators: [{
70
+ type: Directive,
71
+ args: [{
72
+ selector: '[cCalendarDay]'
73
+ }]
74
+ }], ctorParameters: function () { return [{ type: i1.CalendarService }]; }, propDecorators: { dateObj: [{
75
+ type: Input,
76
+ args: ['cCalendarDay']
77
+ }], hostClasses: [{
78
+ type: HostBinding,
79
+ args: ['class']
80
+ }] } });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZGF5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItbW9udGgvY2FsZW5kYXItZGF5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFekUsT0FBTyxFQUNMLGNBQWMsRUFDZCxhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxTQUFTLEVBQ1QsV0FBVyxFQUNaLE1BQU0sbUJBQW1CLENBQUM7OztBQU0zQixNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQ1UsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBS2xDLFNBQUksR0FBZ0IsSUFBSSxDQUFDO1FBRXpCLGNBQVMsR0FBZ0IsSUFBSSxDQUFDO1FBQzlCLFlBQU8sR0FBZ0IsSUFBSSxDQUFDO1FBQzVCLGNBQVMsR0FBZ0IsSUFBSSxDQUFDO1FBQzlCLFlBQU8sR0FBZ0IsSUFBSSxDQUFDO1FBQzVCLFlBQU8sR0FBZ0IsSUFBSSxDQUFDO1FBQzVCLFVBQUssR0FBWSxLQUFLLENBQUM7UUFWN0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQWdCRCxJQUNJLE9BQU8sQ0FBQyxLQUFvQztRQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMs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RyxPQUFPLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO29CQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO29CQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxDQUFDO1lBQ0wsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9DLENBQUM7O2tIQXZGVSxvQkFBb0I7c0dBQXBCLG9CQUFvQjs0RkFBcEIsb0JBQW9CO2tCQUhoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzNCO3NHQXdCSyxPQUFPO3NCQURWLEtBQUs7dUJBQUMsY0FBYztnQkFZakIsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIGlzRGF0ZURpc2FibGVkLFxyXG4gIGlzRGF0ZUluUmFuZ2UsXHJcbiAgaXNEYXRlSW5SYW5nZURpc2FibGVkLFxyXG4gIGlzRGF0ZVNlbGVjdGVkLFxyXG4gIGlzRW5kRGF0ZSxcclxuICBpc1N0YXJ0RGF0ZVxyXG59IGZyb20gJy4uL2NhbGVuZGFyLnV0aWxzJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlLCBEYXRlRmlsdGVyVHlwZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbY0NhbGVuZGFyRGF5XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGVuZGFyRGF5RGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbW9udGg/OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBzdGFydERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGVuZERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGhvdmVyRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbWF4RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgcmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGRpc2FibGVkRGF0ZXMhOiBEYXRlW10gfCBEYXRlW11bXTtcclxuICBwcml2YXRlIGNhbGVuZGFyU3RhdGVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBkYXRlRmlsdGVyITogRGF0ZUZpbHRlclR5cGU7XHJcblxyXG4gIHByaXZhdGUgX2RhdGVPYmo/OiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmc7IH07XHJcblxyXG4gIEBJbnB1dCgnY0NhbGVuZGFyRGF5JylcclxuICBzZXQgZGF0ZU9iaih2YWx1ZTogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nIH0pIHtcclxuICAgIHRoaXMuX2RhdGVPYmogPSB2YWx1ZTtcclxuICAgIHRoaXMuZGF0ZSA9IHZhbHVlLmRhdGU7XHJcbiAgICB0aGlzLm1vbnRoID0gdmFsdWUubW9udGg7XHJcbiAgfVxyXG5cclxuICBnZXQgc2VsZWN0RW5kRGF0ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGhpcy5yYW5nZSAmJiAhIXRoaXMuc3RhcnREYXRlICYmICF0aGlzLmVuZERhdGUpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXHJcbiAgZ2V0IGhvc3RDbGFzc2VzKCk6IGFueSB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGUpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCByYW5nZUhvdmVyID0gdGhpcy5tb250aCA9PT0gJ2N1cnJlbnQnICYmIHRoaXMuc2VsZWN0RW5kRGF0ZSAmJiBpc0RhdGVJblJhbmdlKHRoaXMuZGF0ZSwgdGhpcy5zdGFydERhdGUsIHRoaXMuaG92ZXJEYXRlKTtcclxuICAgIGNvbnN0IGluUmFuZ2UgPSB0aGlzLm1vbnRoID09PSAnY3VycmVudCcgJiYgaXNEYXRlSW5SYW5nZSh0aGlzLmRhdGUsIHRoaXMuc3RhcnREYXRlLCB0aGlzLmVuZERhdGUpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBpc0RhdGVTZWxlY3RlZCh0aGlzLmRhdGUsIHRoaXMuc3RhcnREYXRlLCB0aGlzLmVuZERhdGUpO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBpc1N0YXJ0RGF0ZSh0aGlzLmRhdGUsIHRoaXMuc3RhcnREYXRlLCB0aGlzLmVuZERhdGUpO1xyXG4gICAgY29uc3QgZW5kID0gaXNFbmREYXRlKHRoaXMuZGF0ZSwgdGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZSk7XHJcbiAgICBjb25zdCBkaXNhYmxlZFJhbmdlID0gaXNEYXRlSW5SYW5nZURpc2FibGVkKHRoaXMuc3RhcnREYXRlLCB0aGlzLmRhdGUsIHRoaXMuZGlzYWJsZWREYXRlcyk7XHJcbiAgICBjb25zdCBkaXNhYmxlZERhdGUgPSBpc0RhdGVEaXNhYmxlZCh0aGlzLmRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpO1xyXG4gICAgY29uc3QgZGlzYWJsZWRCeUZpbHRlciA9IHRoaXMuZGF0ZUZpbHRlciA/ICF0aGlzLmRhdGVGaWx0ZXIodGhpcy5kYXRlKSA6IGZhbHNlO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICdyYW5nZS1ob3Zlcic6IHJhbmdlSG92ZXIgJiYgKCFkaXNhYmxlZFJhbmdlIHx8ICFkaXNhYmxlZEJ5RmlsdGVyKSxcclxuICAgICAgc2VsZWN0ZWQ6ICEhc2VsZWN0ZWQsXHJcbiAgICAgIHJhbmdlOiAhIWluUmFuZ2UsXHJcbiAgICAgIHN0YXJ0OiAhIXN0YXJ0LFxyXG4gICAgICBlbmQ6ICEhZW5kLFxyXG4gICAgICBkaXNhYmxlZDogZGlzYWJsZWREYXRlIHx8IGRpc2FibGVkQnlGaWx0ZXJcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FsZW5kYXJTdGF0ZVN1YnNjcmliZShmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBjYWxlbmRhclN0YXRlU3Vic2NyaWJlKHN1YnNjcmliZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgIGlmIChzdWJzY3JpYmUpIHtcclxuICAgICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaXB0aW9uID1cclxuICAgICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhclN0YXRlJC5zdWJzY3JpYmUoc3RhdGUgPT4ge1xyXG4gICAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICBzdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZSxcclxuICAgICAgICAgICAgZW5kRGF0ZSA9IHRoaXMuZW5kRGF0ZSxcclxuICAgICAgICAgICAgaG92ZXJEYXRlID0gdGhpcy5ob3ZlckRhdGUsXHJcbiAgICAgICAgICAgIHJhbmdlID0gdGhpcy5yYW5nZSxcclxuICAgICAgICAgICAgbWF4RGF0ZSA9IHRoaXMubWF4RGF0ZSxcclxuICAgICAgICAgICAgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSxcclxuICAgICAgICAgICAgZGlzYWJsZWREYXRlcyA9IHRoaXMuZGlzYWJsZWREYXRlcyxcclxuICAgICAgICAgICAgZGF0ZUZpbHRlciA9IHRoaXMuZGF0ZUZpbHRlclxyXG4gICAgICAgICAgfSA9IHsgLi4uc3RhdGUgfTtcclxuICAgICAgICAgIHRoaXMuc3RhcnREYXRlID0gc3RhcnREYXRlO1xyXG4gICAgICAgICAgdGhpcy5lbmREYXRlID0gZW5kRGF0ZTtcclxuICAgICAgICAgIHRoaXMucmFuZ2UgPSByYW5nZTtcclxuICAgICAgICAgIHRoaXMuaG92ZXJEYXRlID0gaG92ZXJEYXRlO1xyXG4gICAgICAgICAgdGhpcy5tYXhEYXRlID0gbWF4RGF0ZTtcclxuICAgICAgICAgIHRoaXMubWluRGF0ZSA9IG1pbkRhdGU7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVkRGF0ZXMgPSBkaXNhYmxlZERhdGVzO1xyXG4gICAgICAgICAgdGhpcy5kYXRlRmlsdGVyID0gZGF0ZUZpbHRlcjtcclxuICAgICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class CalendarDayPipe {
4
+ transform(date, dayFormat = 'numeric', locale = 'default') {
5
+ return typeof dayFormat === 'function' ?
6
+ dayFormat(date) :
7
+ date.toLocaleDateString(locale, { day: dayFormat });
8
+ }
9
+ }
10
+ CalendarDayPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarDayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
11
+ CalendarDayPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarDayPipe, name: "calendarDay" });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarDayPipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{
15
+ name: 'calendarDay'
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZGF5LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLWRheS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sZUFBZTtJQUUxQixTQUFTLENBQUMsSUFBVSxFQUFFLFlBQTJCLFNBQVMsRUFBRSxTQUFpQixTQUFTO1FBQ3BGLE9BQU8sT0FBTyxTQUFTLEtBQUssVUFBVSxDQUFDLENBQUM7WUFDdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OzZHQU5VLGVBQWU7MkdBQWYsZUFBZTs0RkFBZixlQUFlO2tCQUgzQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxhQUFhO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF5Rm9ybWF0VHlwZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdjYWxlbmRhckRheSdcclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGVuZGFyRGF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICB0cmFuc2Zvcm0oZGF0ZTogRGF0ZSwgZGF5Rm9ybWF0OiBEYXlGb3JtYXRUeXBlID0gJ251bWVyaWMnLCBsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0Jyk6IChzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgIHJldHVybiB0eXBlb2YgZGF5Rm9ybWF0ID09PSAnZnVuY3Rpb24nID9cclxuICAgICAgZGF5Rm9ybWF0KGRhdGUpIDpcclxuICAgICAgZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCB7IGRheTogZGF5Rm9ybWF0IH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,320 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
3
+ import { createGroupsInArray, getMonthDetails, getMonthsNames, getYears, isDateDisabled, isDateInRangeDisabled, tryDate } from '../calendar.utils';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../calendar.service";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "./calendar-day.directive";
8
+ import * as i4 from "./calendar-weekday.pipe";
9
+ import * as i5 from "./calendar-class-year.pipe";
10
+ import * as i6 from "./calendar-class-month.pipe";
11
+ import * as i7 from "./calendar-class-day.pipe";
12
+ import * as i8 from "./calendar-day.pipe";
13
+ export class CalendarMonthComponent {
14
+ constructor(calendarService) {
15
+ this.calendarService = calendarService;
16
+ this.addMonths = 0;
17
+ this._startDate = null;
18
+ this._endDate = null;
19
+ this._disabledDates = [];
20
+ this._firstDayOfWeek = 1;
21
+ this._locale = 'default';
22
+ this._range = false;
23
+ /**
24
+ * Set length or format of day name.
25
+ * @type number | 'long' | 'narrow' | 'short'
26
+ * @default 'short'
27
+ */
28
+ this.weekdayFormat = 'short';
29
+ this._view = 'days';
30
+ this._maxDate = null;
31
+ this._minDate = null;
32
+ this.listOfMonths = createGroupsInArray(getMonthsNames(this.locale), 4);
33
+ this.listOfYears = createGroupsInArray(getYears(this.date.getFullYear()), 4);
34
+ this._calendarDate = new Date();
35
+ this.calendarStateSubscribe();
36
+ }
37
+ /**
38
+ * Initial selected date.
39
+ * @type (Date | null)
40
+ */
41
+ set startDate(value) {
42
+ this._startDate = !!value ? tryDate(value, 'startDate') : null;
43
+ this.calendarService.update({ startDate: this._startDate });
44
+ }
45
+ get startDate() {
46
+ return this._startDate;
47
+ }
48
+ /**
49
+ * Initial selected to date (range).
50
+ * @type (Date | null)
51
+ */
52
+ set endDate(value) {
53
+ this._endDate = !!value ? tryDate(value, 'endDate') : null;
54
+ this.calendarService.update({ endDate: this._endDate });
55
+ }
56
+ get endDate() {
57
+ return this._endDate;
58
+ }
59
+ /**
60
+ * Specify the list of dates that cannot be selected.
61
+ * @type (Date[] | Date[][])
62
+ */
63
+ set disabledDates(value) {
64
+ this._disabledDates = value;
65
+ }
66
+ get disabledDates() {
67
+ return this._disabledDates;
68
+ }
69
+ /**
70
+ * Sets the day of start week.
71
+ * - 0 - Sunday,
72
+ * - 1 - Monday,
73
+ * - 2 - Tuesday,
74
+ * - 3 - Wednesday,
75
+ * - 4 - Thursday,
76
+ * - 5 - Friday,
77
+ * - 6 - Saturday,
78
+ */
79
+ set firstDayOfWeek(value) {
80
+ this._firstDayOfWeek = coerceNumberProperty(value);
81
+ }
82
+ get firstDayOfWeek() {
83
+ return this._firstDayOfWeek;
84
+ }
85
+ /**
86
+ * Sets the default locale for components. If not set, it is inherited from the browser.
87
+ * @default 'default'
88
+ */
89
+ set locale(value) {
90
+ this._locale = value;
91
+ this.listOfMonths = createGroupsInArray(getMonthsNames(value), 4);
92
+ }
93
+ get locale() {
94
+ return this._locale;
95
+ }
96
+ /**
97
+ * Allow range selection.
98
+ */
99
+ set range(value) {
100
+ this._range = coerceBooleanProperty(value);
101
+ }
102
+ get range() {
103
+ return this._range;
104
+ }
105
+ /**
106
+ * Set calendar view.
107
+ * @type 'days' | 'months' | 'years'
108
+ * @default 'days'
109
+ */
110
+ set view(value) {
111
+ this._view = value;
112
+ this.listOfYears = createGroupsInArray(getYears(this.date.getFullYear()), 4);
113
+ }
114
+ get view() {
115
+ return this._view;
116
+ }
117
+ /**
118
+ * Max selectable date.
119
+ */
120
+ set maxDate(value) {
121
+ this._maxDate = value ? tryDate(value, 'maxDate') : null;
122
+ }
123
+ get maxDate() {
124
+ return this._maxDate;
125
+ }
126
+ /**
127
+ * Min selectable date.
128
+ */
129
+ set minDate(value) {
130
+ this._minDate = value ? tryDate(value, 'minDate') : null;
131
+ }
132
+ get minDate() {
133
+ return this._minDate;
134
+ }
135
+ /**
136
+ * Default date of the component
137
+ * @type Date
138
+ */
139
+ set calendarDate(value) {
140
+ const _value = new Date(tryDate((value ?? this.startDate ?? new Date()), 'calendarDate'));
141
+ if (this._calendarDate.getTime() !== _value.getTime()) {
142
+ this.listOfYears = createGroupsInArray(getYears(_value.getFullYear()), 4);
143
+ this._calendarDate = new Date(_value.setDate(1));
144
+ this.setMonthDetails(this.date);
145
+ this.calendarService.update({ calendarDate: this._calendarDate });
146
+ }
147
+ }
148
+ get calendarDate() {
149
+ return this._calendarDate;
150
+ }
151
+ get date() {
152
+ return new Date(this.calendarDate?.getFullYear(), this.calendarDate?.getMonth() + this.addMonths);
153
+ }
154
+ get monthDetails() {
155
+ return this._monthDetails;
156
+ }
157
+ get weekDays() {
158
+ return this.monthDetails[0];
159
+ }
160
+ ngOnInit() {
161
+ this.listOfMonths = createGroupsInArray(getMonthsNames(this.locale), 4);
162
+ this.setMonthDetails(this.date);
163
+ }
164
+ setMonthDetails(date = this.date) {
165
+ this._monthDetails = getMonthDetails(date.getFullYear(), date.getMonth(), this.firstDayOfWeek);
166
+ }
167
+ yearNumber(year) {
168
+ return new Date(year, 0).toLocaleDateString(this.locale, { year: 'numeric' });
169
+ }
170
+ isDateDisabled(date) {
171
+ // @ts-ignore
172
+ return isDateDisabled(date, this.minDate, this.maxDate, this.disabledDates) || (this.dateFilter ? !this.dateFilter(date) : false);
173
+ }
174
+ calendarCellTitle(date) {
175
+ return date.toLocaleDateString(this.locale);
176
+ }
177
+ handleCellMouseEnter(hoverDate) {
178
+ const hoverValue = this.isDateDisabled(hoverDate) ? null : hoverDate;
179
+ this.calendarService.update({ hoverDate: hoverValue });
180
+ }
181
+ handleYearCellClick(year) {
182
+ const calendarDate = new Date(year, this.calendarDate.getMonth(), 1);
183
+ this.view = 'months';
184
+ this.calendarService.update({ view: this.view, calendarDate: calendarDate });
185
+ }
186
+ handleYearCellKeyUp($event, year) {
187
+ if ($event.key === 'Enter') {
188
+ this.handleYearCellClick(year);
189
+ return;
190
+ }
191
+ }
192
+ handleMonthCellKeyUp($event, i, idx) {
193
+ if ($event.key === 'Enter') {
194
+ this.handleMonthCellClick(i, idx);
195
+ return;
196
+ }
197
+ }
198
+ handleMonthCellClick(i, idx) {
199
+ this.setCalendarPage(0, 0, i * 3 + idx - this.addMonths);
200
+ this.view = 'days';
201
+ this.calendarService.update({ view: this.view });
202
+ }
203
+ setCalendarPage(years, months = 0, setMonth) {
204
+ const year = this.date.getFullYear();
205
+ const month = this.date.getMonth();
206
+ const d = new Date(year, month);
207
+ years && d.setFullYear(d.getFullYear() + years);
208
+ months && d.setMonth(d.getMonth() + months);
209
+ typeof setMonth === 'number' && d.setMonth(setMonth);
210
+ this.calendarService.update({ calendarDate: d });
211
+ }
212
+ handleCellMouseLeave() {
213
+ this.calendarService.update({ hoverDate: null });
214
+ }
215
+ handleDayCellKeyUp($event, date) {
216
+ if ($event.key === 'Enter') {
217
+ this.handleDayCellClick(date);
218
+ return;
219
+ }
220
+ if ($event.key === 'Tab') {
221
+ this.handleCellMouseEnter(date);
222
+ return;
223
+ }
224
+ }
225
+ handleDayCellClick(date) {
226
+ if (this.isDateDisabled(date)) {
227
+ return;
228
+ }
229
+ if (!this.range) {
230
+ this.endDate = null;
231
+ this.startDate = date;
232
+ return;
233
+ }
234
+ if (this.startDate && this.endDate) {
235
+ this.startDate = null;
236
+ this.endDate = null;
237
+ return;
238
+ }
239
+ if (!!this.startDate && !this.endDate) {
240
+ if (this.startDate && date < this.startDate) {
241
+ this.endDate = null;
242
+ this.startDate = date;
243
+ }
244
+ else {
245
+ this.endDate = date;
246
+ }
247
+ }
248
+ else {
249
+ this.endDate = null;
250
+ this.startDate = date;
251
+ }
252
+ if (this.startDate && this.endDate) {
253
+ // @ts-ignore
254
+ if (isDateInRangeDisabled(this.startDate, this.endDate, this.disabledDates)) {
255
+ this.startDate = null;
256
+ this.endDate = null;
257
+ return;
258
+ }
259
+ // let date = new Date(this.startDate);
260
+ // while (date < this.endDate) {
261
+ // date.setDate(date.getDate() + 1);
262
+ // if (this.isDateDisabled(date)) {
263
+ // this.startDate = null;
264
+ // this.endDate = null;
265
+ // break;
266
+ // }
267
+ // }
268
+ }
269
+ }
270
+ calendarStateSubscribe(subscribe = true) {
271
+ if (subscribe) {
272
+ this.calendarStateSubscription =
273
+ this.calendarService.calendarState$.subscribe(state => {
274
+ const keys = Object.keys(state);
275
+ for (const key of keys) {
276
+ // if (key in this) {
277
+ // @ts-ignore
278
+ this[key] = state[key];
279
+ // }
280
+ }
281
+ });
282
+ return;
283
+ }
284
+ this.calendarStateSubscription?.unsubscribe();
285
+ }
286
+ ngOnDestroy() {
287
+ this.calendarStateSubscribe(false);
288
+ }
289
+ }
290
+ CalendarMonthComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarMonthComponent, deps: [{ token: i1.CalendarService }], target: i0.ɵɵFactoryTarget.Component });
291
+ CalendarMonthComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CalendarMonthComponent, selector: "c-calendar-month", inputs: { addMonths: "addMonths", startDate: "startDate", endDate: "endDate", disabledDates: "disabledDates", firstDayOfWeek: "firstDayOfWeek", locale: "locale", range: "range", weekdayFormat: "weekdayFormat", view: "view", maxDate: "maxDate", minDate: "minDate", calendarDate: "calendarDate" }, exportAs: ["cCalendarMonth"], ngImport: i0, template: "<table>\r\n <thead *ngIf=\"view === 'days'\">\r\n <tr>\r\n <th *ngFor=\"let weekDay of weekDays; index as i; count as cnt\" class=\"calendar-cell\">\r\n <div class=\"calendar-header-cell-inner\">\r\n {{ weekDay.date | calendarWeekday:weekdayFormat:locale }}\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody (mouseleave)=\"handleCellMouseLeave()\" [ngSwitch]=\"view\">\r\n <ng-container *ngSwitchCase=\"'years'\">\r\n <tr *ngFor=\"let yearsRow of listOfYears; index as rowIdx\">\r\n <td\r\n (click)=\"handleYearCellClick(year)\"\r\n (keyup)=\"handleYearCellKeyUp($event, year)\"\r\n *ngFor=\"let year of yearsRow; index as idx\"\r\n [ngClass]=\"year | calendarClassYear\"\r\n [tabindex]=\"0\"\r\n >\r\n <div class=\"calendar-cell-inner\">\r\n {{ yearNumber(year) }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'months'\">\r\n <tr *ngFor=\"let monthsRow of listOfMonths; index as rowIdx\">\r\n <td\r\n (click)=\"handleMonthCellClick(rowIdx, idx)\"\r\n (keyup)=\"handleMonthCellKeyUp($event, rowIdx, idx)\"\r\n *ngFor=\"let month of monthsRow; index as idx\"\r\n [ngClass]=\"calendarDate | calendarClassMonth:(rowIdx*3+idx)\"\r\n [tabindex]=\"0\"\r\n >\r\n <div class=\"calendar-cell-inner\">\r\n {{ month }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <tr *ngFor=\"let week of monthDetails; index as i\">\r\n <td\r\n (click)=\"dateObj.month === 'current' && handleDayCellClick(dateObj.date)\"\r\n (keyup)=\"dateObj.month === 'current' && handleDayCellKeyUp($event, dateObj.date)\"\r\n (mouseenter)=\"dateObj.month === 'current' && handleCellMouseEnter(dateObj.date)\"\r\n *ngFor=\"let dateObj of week; index as idx\"\r\n [cCalendarDay]=\"dateObj\"\r\n [ngClass]=\"dateObj | calendarClassDay:{minDate, maxDate, disabledDates, dateFilter}\"\r\n [tabindex]=\"isDateDisabled(dateObj.date) || dateObj.month !== 'current' ? -1 : 0\"\r\n [title]=\"calendarCellTitle(dateObj.date)\"\r\n >\r\n <div class=\"calendar-cell-inner\">\r\n {{ dateObj.date | calendarDay:dayFormat:locale }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n</table>\r\n\r\n", styles: [""], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i3.CalendarDayDirective, selector: "[cCalendarDay]", inputs: ["cCalendarDay"] }], pipes: { "calendarWeekday": i4.CalendarWeekdayPipe, "calendarClassYear": i5.CalendarClassYearPipe, "calendarClassMonth": i6.CalendarClassMonthPipe, "calendarClassDay": i7.CalendarClassDayPipe, "calendarDay": i8.CalendarDayPipe } });
292
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarMonthComponent, decorators: [{
293
+ type: Component,
294
+ args: [{ selector: 'c-calendar-month', exportAs: 'cCalendarMonth', template: "<table>\r\n <thead *ngIf=\"view === 'days'\">\r\n <tr>\r\n <th *ngFor=\"let weekDay of weekDays; index as i; count as cnt\" class=\"calendar-cell\">\r\n <div class=\"calendar-header-cell-inner\">\r\n {{ weekDay.date | calendarWeekday:weekdayFormat:locale }}\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody (mouseleave)=\"handleCellMouseLeave()\" [ngSwitch]=\"view\">\r\n <ng-container *ngSwitchCase=\"'years'\">\r\n <tr *ngFor=\"let yearsRow of listOfYears; index as rowIdx\">\r\n <td\r\n (click)=\"handleYearCellClick(year)\"\r\n (keyup)=\"handleYearCellKeyUp($event, year)\"\r\n *ngFor=\"let year of yearsRow; index as idx\"\r\n [ngClass]=\"year | calendarClassYear\"\r\n [tabindex]=\"0\"\r\n >\r\n <div class=\"calendar-cell-inner\">\r\n {{ yearNumber(year) }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'months'\">\r\n <tr *ngFor=\"let monthsRow of listOfMonths; index as rowIdx\">\r\n <td\r\n (click)=\"handleMonthCellClick(rowIdx, idx)\"\r\n (keyup)=\"handleMonthCellKeyUp($event, rowIdx, idx)\"\r\n *ngFor=\"let month of monthsRow; index as idx\"\r\n [ngClass]=\"calendarDate | calendarClassMonth:(rowIdx*3+idx)\"\r\n [tabindex]=\"0\"\r\n >\r\n <div class=\"calendar-cell-inner\">\r\n {{ month }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <tr *ngFor=\"let week of monthDetails; index as i\">\r\n <td\r\n (click)=\"dateObj.month === 'current' && handleDayCellClick(dateObj.date)\"\r\n (keyup)=\"dateObj.month === 'current' && handleDayCellKeyUp($event, dateObj.date)\"\r\n (mouseenter)=\"dateObj.month === 'current' && handleCellMouseEnter(dateObj.date)\"\r\n *ngFor=\"let dateObj of week; index as idx\"\r\n [cCalendarDay]=\"dateObj\"\r\n [ngClass]=\"dateObj | calendarClassDay:{minDate, maxDate, disabledDates, dateFilter}\"\r\n [tabindex]=\"isDateDisabled(dateObj.date) || dateObj.month !== 'current' ? -1 : 0\"\r\n [title]=\"calendarCellTitle(dateObj.date)\"\r\n >\r\n <div class=\"calendar-cell-inner\">\r\n {{ dateObj.date | calendarDay:dayFormat:locale }}\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n</table>\r\n\r\n", styles: [""] }]
295
+ }], ctorParameters: function () { return [{ type: i1.CalendarService }]; }, propDecorators: { addMonths: [{
296
+ type: Input
297
+ }], startDate: [{
298
+ type: Input
299
+ }], endDate: [{
300
+ type: Input
301
+ }], disabledDates: [{
302
+ type: Input
303
+ }], firstDayOfWeek: [{
304
+ type: Input
305
+ }], locale: [{
306
+ type: Input
307
+ }], range: [{
308
+ type: Input
309
+ }], weekdayFormat: [{
310
+ type: Input
311
+ }], view: [{
312
+ type: Input
313
+ }], maxDate: [{
314
+ type: Input
315
+ }], minDate: [{
316
+ type: Input
317
+ }], calendarDate: [{
318
+ type: Input
319
+ }] } });
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdwRixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixjQUFjLEVBQ2QsUUFBUSxFQUNSLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsT0FBTyxFQUNSLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7QUFVM0IsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQyxZQUNVLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUtqQyxjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBYy9CLGVBQVUsR0FBZ0IsSUFBSSxDQUFDO1FBYy9CLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBYXZCLG1CQUFjLEdBQXdCLEVBQUUsQ0FBQztRQW1CekMsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFjNUIsWUFBTyxHQUFXLFNBQVMsQ0FBQztRQVk1QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBRWhDOzs7O1dBSUc7UUFDTSxrQkFBYSxHQUFzQixPQUFPLENBQUM7UUFlNUMsVUFBSyxHQUFnQyxNQUFNLENBQUM7UUFZNUMsYUFBUSxHQUFnQixJQUFJLENBQUM7UUFZN0IsYUFBUSxH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QixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7O29IQTlVVSxzQkFBc0I7d0dBQXRCLHNCQUFzQiw4WEN0Qm5DLDY0RUE4REE7NEZEeENhLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxrQkFBa0IsWUFHbEIsZ0JBQWdCO3NHQVVqQixTQUFTO3NCQUFqQixLQUFLO2dCQU9GLFNBQVM7c0JBRFosS0FBSztnQkFlRixPQUFPO3NCQURWLEtBQUs7Z0JBZUYsYUFBYTtzQkFEaEIsS0FBSztnQkFvQkYsY0FBYztzQkFEakIsS0FBSztnQkFjRixNQUFNO3NCQURULEtBQUs7Z0JBY0YsS0FBSztzQkFEUixLQUFLO2dCQWNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUYsSUFBSTtzQkFEUCxLQUFLO2dCQWNGLE9BQU87c0JBRFYsS0FBSztnQkFhRixPQUFPO3NCQURWLEtBQUs7Z0JBa0JGLFlBQVk7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgY3JlYXRlR3JvdXBzSW5BcnJheSxcclxuICBnZXRNb250aERldGFpbHMsXHJcbiAgZ2V0TW9udGhzTmFtZXMsXHJcbiAgZ2V0WWVhcnMsXHJcbiAgaXNEYXRlRGlzYWJsZWQsXHJcbiAgaXNEYXRlSW5SYW5nZURpc2FibGVkLFxyXG4gIHRyeURhdGVcclxufSBmcm9tICcuLi9jYWxlbmRhci51dGlscyc7XHJcblxyXG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UsIERhdGVGaWx0ZXJUeXBlLCBEYXlGb3JtYXRUeXBlLCBXZWVrZGF5Rm9ybWF0VHlwZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjLWNhbGVuZGFyLW1vbnRoJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItbW9udGguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZXhwb3J0QXM6ICdjQ2FsZW5kYXJNb250aCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTW9udGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBhZGRNb250aHM6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgZGF0ZS5cclxuICAgKiBAdHlwZSAgKERhdGUgfCBudWxsKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHN0YXJ0RGF0ZSh2YWx1ZTogRGF0ZSB8IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX3N0YXJ0RGF0ZSA9ICEhdmFsdWUgPyB0cnlEYXRlKHZhbHVlLCAnc3RhcnREYXRlJykgOiBudWxsO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgc3RhcnREYXRlOiB0aGlzLl9zdGFydERhdGUgfSk7XHJcbiAgfVxyXG4gIGdldCBzdGFydERhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhcnREYXRlO1xyXG4gIH1cclxuICBfc3RhcnREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgdG8gZGF0ZSAocmFuZ2UpLlxyXG4gICAqIEB0eXBlICAoRGF0ZSB8IG51bGwpXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZW5kRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2VuZERhdGUgPSAhIXZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ2VuZERhdGUnKSA6IG51bGw7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBlbmREYXRlOiB0aGlzLl9lbmREYXRlIH0pO1xyXG4gIH1cclxuICBnZXQgZW5kRGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9lbmREYXRlO1xyXG4gIH1cclxuICBfZW5kRGF0ZTogKERhdGUgfCBudWxsKSA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNwZWNpZnkgdGhlIGxpc3Qgb2YgZGF0ZXMgdGhhdCBjYW5ub3QgYmUgc2VsZWN0ZWQuXHJcbiAgICogQHR5cGUgIChEYXRlW10gfCBEYXRlW11bXSlcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBkaXNhYmxlZERhdGVzKHZhbHVlOiBEYXRlW10gfCBEYXRlW11bXSkge1xyXG4gICAgdGhpcy5fZGlzYWJsZWREYXRlcyA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgZGlzYWJsZWREYXRlcygpOiBEYXRlW10gfCBEYXRlW11bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWREYXRlcztcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWREYXRlczogKERhdGVbXSB8IERhdGVbXVtdKSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkYXkgb2Ygc3RhcnQgd2Vlay5cclxuICAgKiAtIDAgLSBTdW5kYXksXHJcbiAgICogLSAxIC0gTW9uZGF5LFxyXG4gICAqIC0gMiAtIFR1ZXNkYXksXHJcbiAgICogLSAzIC0gV2VkbmVzZGF5LFxyXG4gICAqIC0gNCAtIFRodXJzZGF5LFxyXG4gICAqIC0gNSAtIEZyaWRheSxcclxuICAgKiAtIDYgLSBTYXR1cmRheSxcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBmaXJzdERheU9mV2Vlayh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9maXJzdERheU9mV2VlayA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcbiAgZ2V0IGZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlyc3REYXlPZldlZWs7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2ZpcnN0RGF5T2ZXZWVrOiBudW1iZXIgPSAxO1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkZWZhdWx0IGxvY2FsZSBmb3IgY29tcG9uZW50cy4gSWYgbm90IHNldCwgaXQgaXMgaW5oZXJpdGVkIGZyb20gdGhlIGJyb3dzZXIuXHJcbiAgICogQGRlZmF1bHQgJ2RlZmF1bHQnXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgbG9jYWxlKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9sb2NhbGUgPSB2YWx1ZTtcclxuICAgIHRoaXMubGlzdE9mTW9udGhzID0gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRNb250aHNOYW1lcyh2YWx1ZSksIDQpO1xyXG4gIH1cclxuICBnZXQgbG9jYWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93IHJhbmdlIHNlbGVjdGlvbi5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCByYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuICBnZXQgcmFuZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2U7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3JhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBsZW5ndGggb3IgZm9ybWF0IG9mIGRheSBuYW1lLlxyXG4gICAqIEB0eXBlIG51bWJlciB8ICdsb25nJyB8ICduYXJyb3cnIHwgJ3Nob3J0J1xyXG4gICAqIEBkZWZhdWx0ICdzaG9ydCdcclxuICAgKi9cclxuICBASW5wdXQoKSB3ZWVrZGF5Rm9ybWF0OiBXZWVrZGF5Rm9ybWF0VHlwZSA9ICdzaG9ydCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBjYWxlbmRhciB2aWV3LlxyXG4gICAqIEB0eXBlICdkYXlzJyB8ICdtb250aHMnIHwgJ3llYXJzJ1xyXG4gICAqIEBkZWZhdWx0ICdkYXlzJ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZpZXcodmFsdWUpIHtcclxuICAgIHRoaXMuX3ZpZXcgPSB2YWx1ZTtcclxuICAgIHRoaXMubGlzdE9mWWVhcnMgPSBjcmVhdGVHcm91cHNJbkFycmF5KGdldFllYXJzKHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpKSwgNCk7XHJcbiAgfVxyXG4gIGdldCB2aWV3KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZpZXc7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3ZpZXc6ICdkYXlzJyB8ICdtb250aHMnIHwgJ3llYXJzJyA9ICdkYXlzJztcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4IHNlbGVjdGFibGUgZGF0ZS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBtYXhEYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fbWF4RGF0ZSA9IHZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ21heERhdGUnKSA6IG51bGw7XHJcbiAgfVxyXG4gIGdldCBtYXhEYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heERhdGU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX21heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogTWluIHNlbGVjdGFibGUgZGF0ZS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBtaW5EYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fbWluRGF0ZSA9IHZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ21pbkRhdGUnKSA6IG51bGw7XHJcbiAgfVxyXG4gIGdldCBtaW5EYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX21pbkRhdGU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX21pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgbGlzdE9mTW9udGhzID0gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRNb250aHNOYW1lcyh0aGlzLmxvY2FsZSksIDQpO1xyXG4gIGxpc3RPZlllYXJzID0gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRZZWFycyh0aGlzLmRhdGUuZ2V0RnVsbFllYXIoKSksIDQpO1xyXG4gIHByaXZhdGUgY2FsZW5kYXJTdGF0ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmYXVsdCBkYXRlIG9mIHRoZSBjb21wb25lbnRcclxuICAgKiBAdHlwZSBEYXRlXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgY2FsZW5kYXJEYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyKSB7XHJcbiAgICBjb25zdCBfdmFsdWUgPSBuZXcgRGF0ZSh0cnlEYXRlKCh2YWx1ZSA/PyB0aGlzLnN0YXJ0RGF0ZSA/PyBuZXcgRGF0ZSgpKSwgJ2NhbGVuZGFyRGF0ZScpKTtcclxuICAgIGlmICh0aGlzLl9jYWxlbmRhckRhdGUuZ2V0VGltZSgpICE9PSBfdmFsdWUuZ2V0VGltZSgpKSB7XHJcbiAgICAgIHRoaXMubGlzdE9mWWVhcnMgPSBjcmVhdGVHcm91cHNJbkFycmF5KGdldFllYXJzKF92YWx1ZS5nZXRGdWxsWWVhcigpKSwgNCk7XHJcbiAgICAgIHRoaXMuX2NhbGVuZGFyRGF0ZSA9IG5ldyBEYXRlKF92YWx1ZS5zZXREYXRlKDEpKTtcclxuICAgICAgdGhpcy5zZXRNb250aERldGFpbHModGhpcy5kYXRlKTtcclxuICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgY2FsZW5kYXJEYXRlOiB0aGlzLl9jYWxlbmRhckRhdGUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBjYWxlbmRhckRhdGUoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXJEYXRlO1xyXG4gIH1cclxuICBwcml2YXRlIF9jYWxlbmRhckRhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICBkYXRlRmlsdGVyITogRGF0ZUZpbHRlclR5cGU7XHJcblxyXG4gIGdldCBkYXRlKCkge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY2FsZW5kYXJEYXRlPy5nZXRGdWxsWWVhcigpLCB0aGlzLmNhbGVuZGFyRGF0ZT8uZ2V0TW9udGgoKSArIHRoaXMuYWRkTW9udGhzKTtcclxuICB9XHJcbiAgZGF5Rm9ybWF0ITogRGF5Rm9ybWF0VHlwZTtcclxuXHJcbiAgcHJpdmF0ZSBfbW9udGhEZXRhaWxzITogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nOyB9W11bXTtcclxuXHJcbiAgZ2V0IG1vbnRoRGV0YWlscygpOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmc7IH1bXVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9tb250aERldGFpbHM7XHJcbiAgfVxyXG5cclxuICBnZXQgd2Vla0RheXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tb250aERldGFpbHNbMF07XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGlzdE9mTW9udGhzID0gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRNb250aHNOYW1lcyh0aGlzLmxvY2FsZSksIDQpO1xyXG4gICAgdGhpcy5zZXRNb250aERldGFpbHModGhpcy5kYXRlKTtcclxuICB9XHJcblxyXG4gIHNldE1vbnRoRGV0YWlscyhkYXRlOiBEYXRlID0gdGhpcy5kYXRlKSB7XHJcbiAgICB0aGlzLl9tb250aERldGFpbHMgPSBnZXRNb250aERldGFpbHMoXHJcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICB0aGlzLmZpcnN0RGF5T2ZXZWVrXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgeWVhck51bWJlcih5ZWFyOiBhbnkpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCAwKS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xyXG4gIH1cclxuXHJcbiAgaXNEYXRlRGlzYWJsZWQoZGF0ZTogRGF0ZSkge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcmV0dXJuIGlzRGF0ZURpc2FibGVkKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpIHx8ICh0aGlzLmRhdGVGaWx0ZXIgPyAhdGhpcy5kYXRlRmlsdGVyKGRhdGUpIDogZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgY2FsZW5kYXJDZWxsVGl0bGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNlbGxNb3VzZUVudGVyKGhvdmVyRGF0ZTogRGF0ZSkge1xyXG4gICAgY29uc3QgaG92ZXJWYWx1ZSA9IHRoaXMuaXNEYXRlRGlzYWJsZWQoaG92ZXJEYXRlKSA/IG51bGwgOiBob3ZlckRhdGU7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBob3ZlckRhdGU6IGhvdmVyVmFsdWUgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVZZWFyQ2VsbENsaWNrKHllYXI6IGFueSkge1xyXG4gICAgY29uc3QgY2FsZW5kYXJEYXRlID0gbmV3IERhdGUoeWVhciwgdGhpcy5jYWxlbmRhckRhdGUuZ2V0TW9udGgoKSwgMSk7XHJcbiAgICB0aGlzLnZpZXcgPSAnbW9udGhzJztcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHZpZXc6IHRoaXMudmlldywgY2FsZW5kYXJEYXRlOiBjYWxlbmRhckRhdGUgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVZZWFyQ2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgeWVhcjogYW55KSB7XHJcbiAgICBpZiAoJGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLmhhbmRsZVllYXJDZWxsQ2xpY2soeWVhcik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoQ2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgaTogbnVtYmVyLCBpZHg6IG51bWJlcikge1xyXG4gICAgaWYgKCRldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5oYW5kbGVNb250aENlbGxDbGljayhpLCBpZHgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVNb250aENlbGxDbGljayhpOiBudW1iZXIsIGlkeDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNldENhbGVuZGFyUGFnZSgwLCAwLCBpICogMyArIGlkeCAtIHRoaXMuYWRkTW9udGhzKTtcclxuICAgIHRoaXMudmlldyA9ICdkYXlzJztcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHZpZXc6IHRoaXMudmlldyB9KTtcclxuICB9XHJcblxyXG4gIHNldENhbGVuZGFyUGFnZSh5ZWFyczogbnVtYmVyLCBtb250aHMgPSAwLCBzZXRNb250aD86IG51bWJlcikge1xyXG4gICAgY29uc3QgeWVhciA9IHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbW9udGggPSB0aGlzLmRhdGUuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCk7XHJcblxyXG4gICAgeWVhcnMgJiYgZC5zZXRGdWxsWWVhcihkLmdldEZ1bGxZZWFyKCkgKyB5ZWFycyk7XHJcbiAgICBtb250aHMgJiYgZC5zZXRNb250aChkLmdldE1vbnRoKCkgKyBtb250aHMpO1xyXG4gICAgdHlwZW9mIHNldE1vbnRoID09PSAnbnVtYmVyJyAmJiBkLnNldE1vbnRoKHNldE1vbnRoKTtcclxuXHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBjYWxlbmRhckRhdGU6IGQgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDZWxsTW91c2VMZWF2ZSgpIHtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGhvdmVyRGF0ZTogbnVsbCB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZURheUNlbGxLZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUpIHtcclxuICAgIGlmICgkZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoJGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcclxuICAgICAgdGhpcy5oYW5kbGVDZWxsTW91c2VFbnRlcihkYXRlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGU6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLmlzRGF0ZURpc2FibGVkKGRhdGUpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMucmFuZ2UpIHtcclxuICAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcclxuICAgICAgdGhpcy5zdGFydERhdGUgPSBkYXRlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISF0aGlzLnN0YXJ0RGF0ZSAmJiAhdGhpcy5lbmREYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiBkYXRlIDwgdGhpcy5zdGFydERhdGUpIHtcclxuICAgICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmVuZERhdGUgPSBkYXRlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IGRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSkge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIGlmIChpc0RhdGVJblJhbmdlRGlzYWJsZWQodGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZSwgdGhpcy5kaXNhYmxlZERhdGVzKSkge1xyXG4gICAgICAgIHRoaXMuc3RhcnREYXRlID0gbnVsbDtcclxuICAgICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gbGV0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZSk7XHJcbiAgICAgIC8vIHdoaWxlIChkYXRlIDwgdGhpcy5lbmREYXRlKSB7XHJcbiAgICAgIC8vICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XHJcbiAgICAgIC8vICAgaWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHtcclxuICAgICAgLy8gICAgIHRoaXMuc3RhcnREYXRlID0gbnVsbDtcclxuICAgICAgLy8gICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XHJcbiAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoc3Vic2NyaWJlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKHN1YnNjcmliZSkge1xyXG4gICAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpcHRpb24gPVxyXG4gICAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyU3RhdGUkLnN1YnNjcmliZShzdGF0ZSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc3RhdGUpO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICAvLyBpZiAoa2V5IGluIHRoaXMpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBzdGF0ZVtrZXldO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuY2FsZW5kYXJTdGF0ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKGZhbHNlKTtcclxuICB9XHJcbn1cclxuIiwiPHRhYmxlPlxyXG4gIDx0aGVhZCAqbmdJZj1cInZpZXcgPT09ICdkYXlzJ1wiPlxyXG4gIDx0cj5cclxuICAgIDx0aCAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5czsgaW5kZXggYXMgaTsgY291bnQgYXMgY250XCIgY2xhc3M9XCJjYWxlbmRhci1jZWxsXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXItY2VsbC1pbm5lclwiPlxyXG4gICAgICAgIHt7IHdlZWtEYXkuZGF0ZSB8IGNhbGVuZGFyV2Vla2RheTp3ZWVrZGF5Rm9ybWF0OmxvY2FsZSB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGg+XHJcbiAgPC90cj5cclxuICA8L3RoZWFkPlxyXG4gIDx0Ym9keSAobW91c2VsZWF2ZSk9XCJoYW5kbGVDZWxsTW91c2VMZWF2ZSgpXCIgW25nU3dpdGNoXT1cInZpZXdcIj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIneWVhcnMnXCI+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHllYXJzUm93IG9mIGxpc3RPZlllYXJzOyBpbmRleCBhcyByb3dJZHhcIj5cclxuICAgICAgPHRkXHJcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZVllYXJDZWxsQ2xpY2soeWVhcilcIlxyXG4gICAgICAgIChrZXl1cCk9XCJoYW5kbGVZZWFyQ2VsbEtleVVwKCRldmVudCwgeWVhcilcIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCB5ZWFyIG9mIHllYXJzUm93OyBpbmRleCBhcyBpZHhcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInllYXIgfCBjYWxlbmRhckNsYXNzWWVhclwiXHJcbiAgICAgICAgW3RhYmluZGV4XT1cIjBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cclxuICAgICAgICAgIHt7IHllYXJOdW1iZXIoeWVhcikgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvdHI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRocydcIj5cclxuICAgIDx0ciAqbmdGb3I9XCJsZXQgbW9udGhzUm93IG9mIGxpc3RPZk1vbnRoczsgaW5kZXggYXMgcm93SWR4XCI+XHJcbiAgICAgIDx0ZFxyXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVNb250aENlbGxDbGljayhyb3dJZHgsIGlkeClcIlxyXG4gICAgICAgIChrZXl1cCk9XCJoYW5kbGVNb250aENlbGxLZXlVcCgkZXZlbnQsIHJvd0lkeCwgaWR4KVwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoc1JvdzsgaW5kZXggYXMgaWR4XCJcclxuICAgICAgICBbbmdDbGFzc109XCJjYWxlbmRhckRhdGUgfCBjYWxlbmRhckNsYXNzTW9udGg6KHJvd0lkeCozK2lkeClcIlxyXG4gICAgICAgIFt0YWJpbmRleF09XCIwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsLWlubmVyXCI+XHJcbiAgICAgICAgICB7eyBtb250aCB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3RkPlxyXG4gICAgPC90cj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHdlZWsgb2YgbW9udGhEZXRhaWxzOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgIDx0ZFxyXG4gICAgICAgIChjbGljayk9XCJkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCcgJiYgaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGVPYmouZGF0ZSlcIlxyXG4gICAgICAgIChrZXl1cCk9XCJkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCcgJiYgaGFuZGxlRGF5Q2VsbEtleVVwKCRldmVudCwgZGF0ZU9iai5kYXRlKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwiZGF0ZU9iai5tb250aCA9PT0gJ2N1cnJlbnQnICYmIGhhbmRsZUNlbGxNb3VzZUVudGVyKGRhdGVPYmouZGF0ZSlcIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXRlT2JqIG9mIHdlZWs7IGluZGV4IGFzIGlkeFwiXHJcbiAgICAgICAgW2NDYWxlbmRhckRheV09XCJkYXRlT2JqXCJcclxuICAgICAgICBbbmdDbGFzc109XCJkYXRlT2JqIHwgY2FsZW5kYXJDbGFzc0RheTp7bWluRGF0ZSwgbWF4RGF0ZSwgZGlzYWJsZWREYXRlcywgZGF0ZUZpbHRlcn1cIlxyXG4gICAgICAgIFt0YWJpbmRleF09XCJpc0RhdGVEaXNhYmxlZChkYXRlT2JqLmRhdGUpIHx8IGRhdGVPYmoubW9udGggIT09ICdjdXJyZW50JyA/IC0xIDogMFwiXHJcbiAgICAgICAgW3RpdGxlXT1cImNhbGVuZGFyQ2VsbFRpdGxlKGRhdGVPYmouZGF0ZSlcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cclxuICAgICAgICAgIHt7IGRhdGVPYmouZGF0ZSB8IGNhbGVuZGFyRGF5OmRheUZvcm1hdDpsb2NhbGUgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvdHI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPC90Ym9keT5cclxuPC90YWJsZT5cclxuXHJcbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class CalendarWeekdayPipe {
4
+ transform(date, weekdayFormat = 'short', locale = 'default') {
5
+ return typeof weekdayFormat === 'function'
6
+ ? weekdayFormat(date)
7
+ : typeof weekdayFormat === 'string'
8
+ ? date.toLocaleDateString(locale, { weekday: weekdayFormat })
9
+ : date.toLocaleDateString(locale, { weekday: 'long' }).slice(0, weekdayFormat);
10
+ }
11
+ }
12
+ CalendarWeekdayPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarWeekdayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
13
+ CalendarWeekdayPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarWeekdayPipe, name: "calendarWeekday" });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CalendarWeekdayPipe, decorators: [{
15
+ type: Pipe,
16
+ args: [{
17
+ name: 'calendarWeekday'
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItd2Vla2RheS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci13ZWVrZGF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsU0FBUyxDQUFDLElBQVUsRUFBRSxnQkFBbUMsT0FBTyxFQUFFLFNBQWlCLFNBQVM7UUFDMUYsT0FBTyxPQUFPLGFBQWEsS0FBSyxVQUFVO1lBQ3hDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxPQUFPLGFBQWEsS0FBSyxRQUFRO2dCQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztnQkFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7O2lIQVJVLG1CQUFtQjsrR0FBbkIsbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBSC9CLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFdlZWtkYXlGb3JtYXRUeXBlIH0gZnJvbSAnLi4vY2FsZW5kYXIuc2VydmljZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2NhbGVuZGFyV2Vla2RheSdcclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGVuZGFyV2Vla2RheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgdHJhbnNmb3JtKGRhdGU6IERhdGUsIHdlZWtkYXlGb3JtYXQ6IFdlZWtkYXlGb3JtYXRUeXBlID0gJ3Nob3J0JywgbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcpOiAoc3RyaW5nIHwgbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHdlZWtkYXlGb3JtYXQgPT09ICdmdW5jdGlvbidcclxuICAgICAgPyB3ZWVrZGF5Rm9ybWF0KGRhdGUpXHJcbiAgICAgIDogdHlwZW9mIHdlZWtkYXlGb3JtYXQgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgPyBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIHsgd2Vla2RheTogd2Vla2RheUZvcm1hdCB9KVxyXG4gICAgICAgIDogZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCB7IHdlZWtkYXk6ICdsb25nJyB9KS5zbGljZSgwLCB3ZWVrZGF5Rm9ybWF0KTtcclxuICB9XHJcbn1cclxuIl19